{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/export.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/fails.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/react.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/global.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/is-object.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/an-object.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/descriptors.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/well-known-symbol.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/array-buffer-view-core.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/to-length.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/fbjs/lib/invariant.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/object-define-property.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/to-object.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/fbjs/lib/warning.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/has.js","webpack:///./app/assets/javascripts/es6/services/localization.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/array-iteration.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/require-object-coercible.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/create-non-enumerable-property.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/redefine.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/object-assign/index.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/internal-state.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/a-function.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/define-well-known-symbol.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/classnames/index.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/to-indexed-object.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/get-built-in.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/create-html.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/string-html-forced.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactDOMComponentTree.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/is-pure.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/to-integer.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/object-get-prototype-of.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/to-primitive.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/set-to-string-tag.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/fbjs/lib/ExecutionEnvironment.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/object-create.js","webpack:///./app/assets/javascripts/es6/core/config.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/create-property-descriptor.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/classof-raw.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/array-method-is-strict.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/species-constructor.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/typed-array-constructor.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactPerf.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/to-absolute-index.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/function-bind-context.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/object-set-prototype-of.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/iterate.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/add-to-unscopables.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/an-instance.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactElement.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/aphrodite/lib/index.js","webpack:///(webpack)/buildin/global.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/object-get-own-property-names.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/engine-is-node.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/is-array.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/create-property.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/internal-metadata.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactUpdates.js","webpack:///./app/assets/javascripts/es6/core/keys.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/fbjs/lib/emptyFunction.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/EventConstants.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/SyntheticEvent.js","webpack:///./app/assets/javascripts/es6/services/logger.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/engine-v8-version.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/set-species.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/regexp-flags.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/string-trim.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/redefine-all.js","webpack:///./app/assets/javascripts/es6/services/sound-manager.js","webpack:///./app/assets/javascripts/es6/core/paths.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactCurrentOwner.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/fbjs/lib/keyOf.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/buffer/index.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/crc/lib/define_crc.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/indexed-object.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/uid.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/hidden-keys.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/path.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/array-includes.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/is-forced.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/engine-user-agent.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/object-keys.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/array-species-create.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/iterators.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/get-iterator-method.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/classof.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/array-method-has-species-support.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/freezing.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/is-regexp.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/PooledClass.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react-dom/index.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/DOMProperty.js","webpack:///./app/assets/javascripts/es6/core/api.js","webpack:///./app/assets/javascripts/es6/components/apps/navigation.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/object-property-is-enumerable.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/shared-key.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/check-correctness-of-iteration.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/array-reduce.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.array.iterator.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/object-prototype-accessors-forced.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/string-multibyte.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/regexp-exec.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/regexp-sticky-helpers.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/advance-string-index.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/regexp-exec-abstract.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/whitespaces.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/inherit-if-required.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/math-expm1.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/new-promise-capability.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/collection.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/array-buffer.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactReconciler.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/DOMLazyTree.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/EventPropagators.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/EventPluginHub.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/SyntheticUIEvent.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/iknow-mouseover-dictionary/defs.js","webpack:///./app/assets/javascripts/es6/components/common/fit-text.js","webpack:///./app/assets/javascripts/es6/models/quiz-result.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/document-create-element.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/set-global.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/inspect-source.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/shared-store.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/shared.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/own-keys.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/enum-bug-keys.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/native-symbol.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/object-define-properties.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/correct-prototype-getter.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/is-array-iterator-method.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/to-string-tag-support.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/array-fill.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/define-iterator.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/create-iterator-constructor.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/not-a-regexp.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/correct-is-regexp-logic.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.regexp.exec.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/string-pad.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/string-repeat.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/string-trim-forced.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/math-sign.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/task.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/perform.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/array-buffer-native.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/typed-array-constructors-require-wrappers.js","webpack:///./app/assets/javascripts/es6/core/sound-effects.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactInstrumentation.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/fbjs/lib/emptyObject.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactPropTypeLocations.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/fbjs/lib/keyMirror.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactPropTypeLocationNames.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/EventPluginRegistry.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/SyntheticMouseEvent.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/escapeTextContentForBrowser.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactBrowserEventEmitter.js","webpack:///./app/assets/javascripts/es6/components/common/glyph.js","webpack:///./app/assets/javascripts/es6/components/common/sound-player.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/inline-style-prefixer/lib/utils/joinPrefixedValue.js","webpack:///./app/assets/javascripts/es6/core/errors.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/process/browser.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/iknow-mouseover-dictionary/loader.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/iknow-mouseover-dictionary/dictionary.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/lodash/isArray.js","webpack:///./app/assets/javascripts/es6/core/styles/colors.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/ie8-dom-define.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/native-weak-map.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/copy-constructor-properties.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/object-keys-internal.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/use-symbol-as-uid.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/html.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/object-get-own-property-names-external.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/well-known-symbol-wrapped.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/a-possible-prototype.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/iterator-close.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/array-from.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/array-copy-within.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/flatten-into-array.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/array-for-each.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/array-last-index-of.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/iterators-core.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/function-bind.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/object-assign.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/object-to-array.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/same-value.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/string-pad-webkit-bug.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/get-substitution.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.string.iterator.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/number-parse-int.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/number-parse-float.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/is-integer.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/this-number-value.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/math-log1p.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/native-promise-constructor.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/engine-is-ios.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/microtask.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/promise-resolve.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/collection-strong.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/collection-weak.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/to-index.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/to-offset.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/typed-array-from.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/dom-iterables.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/native-url.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/web.url-search-params.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/is-function/index.js","webpack:///./app/assets/javascripts/es6/components/common/transcoded-image.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/canDefineProperty.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/traverseAllChildren.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/getIteratorFn.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/EventPluginUtils.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactErrorUtils.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/Transaction.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/getEventTarget.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/isEventSupported.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/getEventModifierState.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/DOMChildrenOperations.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/createMicrosoftUnsafeLocalFunction.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/setInnerHTML.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/DOMPropertyOperations.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/LinkedValueUtils.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactComponentEnvironment.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactInstanceMap.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/shouldUpdateReactComponent.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/validateDOMNesting.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/getEventCharCode.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/aphrodite/lib/util.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/inline-style-prefixer/lib/utils/isPrefixedValue.js","webpack:///./app/assets/javascripts/es6/services/cookies.js","webpack:///./app/assets/javascripts/es6/components/common/progress-bar.js","webpack:///./app/assets/javascripts/es6/controllers/apps/debug-overrides.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/lodash/isFunction.js","webpack:///./app/assets/javascripts/es6/services/window.js","webpack:///./app/assets/javascripts/es6/helpers/case.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/lodash/isObject.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/lodash/isObjectLike.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/iknow-mouseover-dictionary/react.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactChildren.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactComponent.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactNoopUpdateQueue.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactClass.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactElementValidator.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactPropTypes.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactVersion.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactDOMComponentFlags.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/accumulateInto.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/forEachAccumulated.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/getTextContentAccessor.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/CallbackQueue.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactFeatureFlags.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/isTextInputElement.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ViewportMetrics.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactComponentBrowserEnvironment.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/setTextContent.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/fbjs/lib/getMarkupWrap.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactMultiChildUpdateTypes.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/fbjs/lib/focusNode.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/CSSProperty.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactDOMSelect.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/instantiateReactComponent.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactNodeTypes.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactUpdateQueue.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactEmptyComponent.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactNativeComponent.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/fbjs/lib/shallowEqual.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/fbjs/lib/EventListener.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactInputSelection.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/fbjs/lib/getActiveElement.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactMount.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/getNativeComponentFromComposite.js","webpack:///./app/assets/javascripts/es6/models/memory.js","webpack:///./app/assets/javascripts/es6/controllers/apps/quizzes/item-quiz-base.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/lodash/isArrayLike.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/inline-style-prefixer/lib/static/prefixProps.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/inline-style-prefixer/lib/utils/capitalizeString.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/stable/index.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/es/index.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.symbol.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.symbol.async-iterator.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.symbol.description.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.symbol.has-instance.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.symbol.is-concat-spreadable.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.symbol.iterator.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.symbol.match.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.symbol.match-all.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.symbol.replace.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.symbol.search.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.symbol.species.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.symbol.split.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.symbol.to-primitive.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.symbol.to-string-tag.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.symbol.unscopables.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.aggregate-error.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.array.from.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.array.is-array.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.array.of.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.array.concat.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.array.copy-within.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.array.every.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.array.fill.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.array.filter.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.array.find.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.array.find-index.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.array.flat.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.array.flat-map.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.array.for-each.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.array.includes.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.array.index-of.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.array.join.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.array.last-index-of.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.array.map.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.array.reduce.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.array.reduce-right.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.array.reverse.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.array.slice.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.array.some.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.array.sort.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.array.splice.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.array.species.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.array.unscopables.flat.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.array.unscopables.flat-map.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.function.bind.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.function.name.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.function.has-instance.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.global-this.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.object.assign.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.object.create.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.object.define-property.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.object.define-properties.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.object.entries.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.object.freeze.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.object.from-entries.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.object.get-own-property-descriptor.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.object.get-own-property-descriptors.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.object.get-own-property-names.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.object.get-prototype-of.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.object.is.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.object.is-extensible.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.object.is-frozen.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.object.is-sealed.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.object.keys.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.object.prevent-extensions.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.object.seal.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.object.set-prototype-of.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.object.values.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.object.to-string.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/object-to-string.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.object.define-getter.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.object.define-setter.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.object.lookup-getter.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.object.lookup-setter.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.string.from-code-point.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.string.raw.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.string.code-point-at.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.string.ends-with.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.string.includes.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.string.match.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.string.match-all.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.string.pad-end.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.string.pad-start.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.string.repeat.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.string.replace.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.string.search.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.string.split.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.string.starts-with.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.string.trim.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.string.trim-start.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.string.trim-end.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.string.anchor.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.string.big.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.string.blink.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.string.bold.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.string.fixed.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.string.fontcolor.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.string.fontsize.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.string.italics.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.string.link.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.string.small.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.string.strike.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.string.sub.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.string.sup.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.string.replace-all.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.regexp.constructor.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.regexp.flags.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.regexp.sticky.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.regexp.test.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.regexp.to-string.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.parse-int.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.parse-float.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.number.constructor.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.number.epsilon.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.number.is-finite.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/number-is-finite.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.number.is-integer.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.number.is-nan.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.number.is-safe-integer.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.number.max-safe-integer.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.number.min-safe-integer.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.number.parse-float.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.number.parse-int.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.number.to-fixed.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.number.to-precision.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.math.acosh.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.math.asinh.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.math.atanh.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.math.cbrt.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.math.clz32.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.math.cosh.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.math.expm1.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.math.fround.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/math-fround.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.math.hypot.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.math.imul.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.math.log10.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.math.log1p.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.math.log2.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.math.sign.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.math.sinh.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.math.tanh.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.math.to-string-tag.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.math.trunc.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.date.now.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.date.to-json.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.date.to-iso-string.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/date-to-iso-string.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.date.to-string.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.date.to-primitive.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/date-to-primitive.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.json.stringify.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.json.to-string-tag.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.promise.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/engine-is-webos-webkit.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/host-report-errors.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.promise.all-settled.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.promise.any.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.promise.finally.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.map.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.set.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.weak-map.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.weak-set.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.array-buffer.constructor.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/ieee754.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.array-buffer.is-view.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.array-buffer.slice.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.data-view.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.typed-array.int8-array.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/to-positive-integer.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.typed-array.uint8-array.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.typed-array.uint8-clamped-array.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.typed-array.int16-array.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.typed-array.uint16-array.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.typed-array.int32-array.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.typed-array.uint32-array.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.typed-array.float32-array.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.typed-array.float64-array.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.typed-array.from.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.typed-array.of.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.typed-array.copy-within.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.typed-array.every.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.typed-array.fill.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.typed-array.filter.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/typed-array-from-species-and-list.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.typed-array.find.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.typed-array.find-index.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.typed-array.for-each.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.typed-array.includes.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.typed-array.index-of.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.typed-array.iterator.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.typed-array.join.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.typed-array.last-index-of.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.typed-array.map.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.typed-array.reduce.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.typed-array.reduce-right.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.typed-array.reverse.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.typed-array.set.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.typed-array.slice.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.typed-array.some.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.typed-array.sort.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.typed-array.subarray.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.typed-array.to-locale-string.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.typed-array.to-string.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.reflect.apply.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.reflect.construct.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.reflect.define-property.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.reflect.delete-property.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.reflect.get.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.reflect.get-own-property-descriptor.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.reflect.get-prototype-of.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.reflect.has.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.reflect.is-extensible.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.reflect.own-keys.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.reflect.prevent-extensions.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.reflect.set.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.reflect.set-prototype-of.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/es.reflect.to-string-tag.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/web/index.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/web.dom-collections.for-each.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/web.dom-collections.iterator.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/web.immediate.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/web.queue-microtask.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/web.timers.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/web.url.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/string-punycode-to-ascii.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/internals/get-iterator.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/core-js/modules/web.url.to-json.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/regenerator-runtime/runtime.js","webpack:///./app/assets/javascripts/es6/core/ajax.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/js-cookie/src/js.cookie.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/xhr/index.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/global/window.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/parse-headers/parse-headers.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/trim/index.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/for-each/index.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/xtend/immutable.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/rsvp/dist/rsvp.es.js","webpack:///(webpack)/node_modules/timers-browserify/main.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/setimmediate/setImmediate.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/iknow-mouseover-dictionary/format-entry.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/iknow-mouseover-dictionary/watcher.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/node-polyglot/index.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/node-polyglot/lib/polyglot.js","webpack:///./app/assets/javascripts/es6/helpers/localization.js","webpack:///./app/assets/javascripts/es6/services/image-manager.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/lodash/isLength.js","webpack:///./app/assets/javascripts/es6/models/goal.js","webpack:///./app/assets/javascripts/es6/models/transliterable.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/aphrodite/lib/inject.js","webpack:///./app/assets/javascripts/es6/helpers/prop-types.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/iknow-mouseover-dictionary/assign.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/iknow-mouseover-dictionary/create-walker.js","webpack:///./app/assets/javascripts/es6/controllers/apps/quizzes.js","webpack:///./app/assets/javascripts/es6/components/apps/screens/study.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/lodash/isString.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/lodash/keys.js","webpack:///./app/assets/javascripts/es6/components/apps/ime.js","webpack:///./app/assets/javascripts/es6/components/apps/sentence-builder/drop-zone.js","webpack:///./app/assets/javascripts/es6/components/apps/sentence-builder/word-piece.js","webpack:///./app/assets/javascripts/es6/models/item-package.js","webpack:///(webpack)/buildin/module.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/lodash/values.js","webpack:///./app/assets/javascripts/es6/components/common/modals/base.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/React.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactDebugTool.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactInvalidSetStateWarningDevTool.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactDOMFactories.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/fbjs/lib/mapObject.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/onlyChild.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactDOM.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactDefaultInjection.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/BeforeInputEventPlugin.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/FallbackCompositionState.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/SyntheticCompositionEvent.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/SyntheticInputEvent.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ChangeEventPlugin.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactRef.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactOwner.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/DefaultEventPluginOrder.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/EnterLeaveEventPlugin.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/HTMLDOMPropertyConfig.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/Danger.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/fbjs/lib/createNodesFromMarkup.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/fbjs/lib/createArrayFromMixed.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactDOMIDOperations.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactDOMComponent.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/AutoFocusUtils.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/CSSPropertyOperations.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/fbjs/lib/camelizeStyleName.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/fbjs/lib/camelize.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/dangerousStyleValue.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/fbjs/lib/hyphenateStyleName.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/fbjs/lib/hyphenate.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/fbjs/lib/memoizeStringOnly.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/DOMNamespaces.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactDOMInstrumentation.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactDOMDebugTool.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactDOMUnknownPropertyDevtool.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/quoteAttributeValueForBrowser.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactEventEmitterMixin.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/getVendorPrefixedEventName.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactDOMButton.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactDOMInput.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactDOMOption.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactDOMTextarea.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactMultiChild.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactChildReconciler.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactCompositeComponent.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/flattenChildren.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactDOMEmptyComponent.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactDOMTreeTraversal.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactDOMTextComponent.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactDefaultBatchingStrategy.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactEventListener.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/fbjs/lib/getUnboundedScrollPosition.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactInjection.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactReconcileTransaction.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactDOMSelection.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/getNodeForCharacterOffset.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/fbjs/lib/containsNode.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/fbjs/lib/isTextNode.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/fbjs/lib/isNode.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/SVGDOMPropertyConfig.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/SelectEventPlugin.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/SimpleEventPlugin.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/SyntheticAnimationEvent.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/SyntheticClipboardEvent.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/SyntheticFocusEvent.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/SyntheticKeyboardEvent.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/getEventKey.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/SyntheticDragEvent.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/SyntheticTouchEvent.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/SyntheticTransitionEvent.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/SyntheticWheelEvent.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactDOMContainerInfo.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactDOMFeatureFlags.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/ReactMarkupChecksum.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/adler32.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/findDOMNode.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react/lib/renderSubtreeIntoContainer.js","webpack:///./app/assets/javascripts/es6/core/loaders.js","webpack:///./app/assets/javascripts/es6/components/apps/settings/panel-mixin.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/iknow-mouseover-dictionary/bubble.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/iknow-mouseover-dictionary/index.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/lodash/toInteger.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/lodash/_arrayMap.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/lodash/isArguments.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/lodash/_isIndex.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/asap/browser-asap.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/asap/browser-raw.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/aphrodite/lib/generate.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/inline-style-prefixer/static.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/inline-style-prefixer/lib/static/prefixAll.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/inline-style-prefixer/lib/utils/sortPrefixedStyle.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/inline-style-prefixer/lib/utils/isPrefixedProperty.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/inline-style-prefixer/lib/static/plugins/position.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/inline-style-prefixer/lib/static/plugins/calc.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/inline-style-prefixer/lib/static/plugins/cursor.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/inline-style-prefixer/lib/static/plugins/flex.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/inline-style-prefixer/lib/static/plugins/sizing.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/inline-style-prefixer/lib/static/plugins/gradient.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/inline-style-prefixer/lib/static/plugins/transition.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/hyphenate-style-name/index.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/inline-style-prefixer/lib/static/plugins/flexboxIE.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/inline-style-prefixer/lib/static/plugins/flexboxOld.js","webpack:///./app/assets/javascripts/es6/services/asset-path.js","webpack:///./app/assets/javascripts/es6/components/common/modals/basic.js","webpack:///./app/assets/javascripts/es6/components/apps/result-glyphs.js","webpack:///./app/assets/javascripts/es6/services/server-time-manager.js","webpack:///./app/assets/javascripts/es6/models/user-settings.js","webpack:///./app/assets/javascripts/es6/models/aggregate-memory.js","webpack:///./app/assets/javascripts/es6/models/domain-aggregate-memory.js","webpack:///./app/assets/javascripts/es6/models/sentence.js","webpack:///./app/assets/javascripts/es6/controllers/apps/quizzes/quiz-base.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/lodash/_baseProperty.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/lodash/_baseHas.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/lodash/_baseKeys.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/lodash/isArrayLikeObject.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/lodash/_isPrototype.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react-task/proc.js","webpack:///./app/assets/javascripts/es6/controllers/apps/quizzes/rapid-choice-base.js","webpack:///./app/assets/javascripts/es6/controllers/apps/quizzes/sentence-study-listening-fill-in-the-blank-base.js","webpack:///./app/assets/javascripts/es6/controllers/apps/quizzes/sentence-quiz-base.js","webpack:///./app/assets/javascripts/es6/controllers/apps/quizzes/sentence-study-assembly-base.js","webpack:///./app/assets/javascripts/es6/components/apps/sentence-builder/quiz-status.js","webpack:///./app/assets/javascripts/es6/components/apps/sentence-builder/word-slots.js","webpack:///./app/assets/javascripts/es6/models/word-slot.js","webpack:///./app/assets/javascripts/es6/models/word-choice.js","webpack:///./app/assets/javascripts/es6/controllers/apps/quizzes/self-assessment-base.js","webpack:///./app/assets/javascripts/es6/models/session-config.js","webpack:///./app/assets/javascripts/es6/models/study-node.js","webpack:///./app/assets/javascripts/es6/helpers/string.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/iknow-mouseover-dictionary/audio.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/iknow-mouseover-dictionary/content.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/iknow-mouseover-dictionary/icons.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/iknow-mouseover-dictionary/collect-words.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/iknow-mouseover-dictionary/spannify.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/lodash/_getLength.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/lodash/toNumber.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/lodash/_baseValues.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/lodash/_indexKeys.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/lodash/_baseTimes.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/lodash/fp/values.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/crc/lib/index.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/crc/lib/crc1.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/base64-js/index.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/ieee754/index.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/buffer/node_modules/isarray/index.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/crc/lib/crc8.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/crc/lib/crc8_1wire.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/crc/lib/crc16.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/crc/lib/crc16_ccitt.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/crc/lib/crc16_modbus.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/crc/lib/crc16_xmodem.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/crc/lib/crc16_kermit.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/crc/lib/crc24.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/crc/lib/crc32.js","webpack:///./app/assets/javascripts/es6/helpers/time.js","webpack:///./app/assets/javascripts/es6/services/study-data-manager.js","webpack:///./app/assets/javascripts/es6/services/pause.js","webpack:///./app/assets/javascripts/es6/models/grouping.js","webpack:///./app/assets/javascripts/es6/components/apps/annotations.js","webpack:///./app/assets/javascripts/es6/components/apps/kanji-strokes.js","webpack:///./app/assets/javascripts/es6/components/apps/dmak.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/raphael/raphael.min.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/dmak/dist/dmak.min.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/lodash/includes.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/lodash/_baseIndexOf.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/lodash/_indexOfNaN.js","webpack:///./app/assets/javascripts/es6/components/apps/sentence-tab.js","webpack:///./app/assets/javascripts/es6/components/apps/spelling-practice.js","webpack:///./app/assets/javascripts/es6/components/apps/screens/answer-confirmation.js","webpack:///./app/assets/javascripts/es6/helpers/css.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/aphrodite/no-important.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/aphrodite/lib/no-important.js","webpack:///./app/assets/javascripts/es6/components/layout/align-bottom.js","webpack:///./app/assets/javascripts/es6/components/apps/screens/answer-confirmation-tasks.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react-task/index.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react-task/task.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/react-task/promises.js","webpack:///./app/assets/javascripts/es6/components/apps/fill-in-the-blank-answer.js","webpack:///./app/assets/javascripts/es6/controllers/apps/quizzes/study.js","webpack:///./app/assets/javascripts/es6/controllers/apps/quizzes/rapid-choice-pair.js","webpack:///./app/assets/javascripts/es6/components/apps/screens/rapid-choice.js","webpack:///./app/assets/javascripts/es6/components/apps/mc-quiz-choices.js","webpack:///./app/assets/javascripts/es6/controllers/apps/quizzes/reverse-rapid-choice-pair.js","webpack:///./app/assets/javascripts/es6/controllers/apps/quizzes/sentence-study-listening-fill-in-the-blank-partial.js","webpack:///./app/assets/javascripts/es6/controllers/apps/quizzes/sentence-study-listening-fill-in-the-blank.js","webpack:///./app/assets/javascripts/es6/controllers/apps/quizzes/sentence-study-listening-assembly.js","webpack:///./app/assets/javascripts/es6/components/apps/screens/sentence-builder-recall.js","webpack:///./app/assets/javascripts/es6/components/apps/screens/sentence-builder-quiz.js","webpack:///./app/assets/javascripts/es6/components/apps/hint-button.js","webpack:///./app/assets/javascripts/es6/components/apps/sentence-builder/word-choices.js","webpack:///./app/assets/javascripts/es6/components/apps/sentence-builder/shift-zone.js","webpack:///./app/assets/javascripts/es6/components/apps/screens/sentence-builder-confirmation.js","webpack:///./app/assets/javascripts/es6/controllers/apps/quizzes/sentence-study-translation-assembly.js","webpack:///./app/assets/javascripts/es6/controllers/apps/quizzes/self-assessment.js","webpack:///./app/assets/javascripts/es6/components/apps/screens/self-assessment.js","webpack:///./app/assets/javascripts/es6/components/apps/screens/self-assessment-study.js","webpack:///./app/assets/javascripts/es6/helpers/react.js","webpack:///./app/assets/javascripts/es6/controllers/apps/quizzes/reverse-self-assessment.js","webpack:///./app/assets/javascripts/es6/components/apps/screen-banner.js","webpack:///./app/assets/javascripts/es6/components/apps/stats.js","webpack:///./app/assets/javascripts/es6/components/memory-bank/config.js","webpack:///./app/assets/javascripts/es6/helpers/api.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/director/build/director.js","webpack:///./app/assets/javascripts/es6/components/apps/session-progress-bar.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/d3/d3.js","webpack:///./app/assets/javascripts/es6/controllers/apps/sequencer-base.js","webpack:///./app/assets/javascripts/es6/controllers/apps/base-item-study-app.js","webpack:///./app/assets/javascripts/es6/controllers/apps/base-app.js","webpack:///./app/assets/javascripts/es6/components/apps/screens/token-expired.js","webpack:///(webpack)/node_modules/events/events.js","webpack:///./app/assets/javascripts/es6/components/apps/course-teaser.js","webpack:///./app/assets/javascripts/es6/controllers/apps/iknow-sequencer.js","webpack:///./app/assets/javascripts/es6/components/apps/study-all-ribbon.js","webpack:///./app/assets/javascripts/es6/controllers/apps/iknow-app.js","webpack:///./app/assets/javascripts/es6/controllers/apps/base-study-app.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/d3-array/build/d3-array.js","webpack:///./app/assets/javascripts/es6/components/memory-bank/visuals/base-visual.js","webpack:///./app/assets/javascripts/es6/components/memory-bank/layouts/base-layout.js","webpack:///./app/assets/javascripts/es6/components/apps/item-summary.js","webpack:///./app/assets/javascripts/es6/components/apps/mixins/sentence-trainer-summary.js","webpack:///./app/assets/javascripts/es6/components/apps/choices.js","webpack:///./app/assets/javascripts/es6/components/apps/mixins/welcome-sentence-trainer.js","webpack:///./app/javascript/packs/bundle-apps.js","webpack:///./app/assets/javascripts/es6/controllers/apps/app-launcher.js","webpack:///./app/assets/javascripts/es6/components/apps/screens/app-selection.js","webpack:///./app/assets/javascripts/es6/components/apps/settings/audio-panel.js","webpack:///./app/assets/javascripts/es6/components/common/slider.js","webpack:///./app/assets/javascripts/es6/components/apps/settings/kana-panel.js","webpack:///./app/assets/javascripts/es6/components/apps/settings/settings-modal.js","webpack:///./app/assets/javascripts/es6/components/apps/screens/course-recommendation.js","webpack:///./app/assets/javascripts/es6/components/apps/settings/help-panel.js","webpack:///./app/assets/javascripts/es6/models/memory-bank-node.js","webpack:///./app/assets/javascripts/es6/components/memory-bank/memory-bank-plot.js","webpack:///./app/assets/javascripts/es6/components/memory-bank/visuals/progress.js","webpack:////nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-iknow-npm-modules-0.0.1/node_modules/d3-hexbin/build/d3-hexbin.js","webpack:///./app/assets/javascripts/es6/components/memory-bank/tooltip.js","webpack:///./app/assets/javascripts/es6/components/memory-bank/layouts/progress.js","webpack:///./app/assets/javascripts/es6/components/memory-bank/visuals/difficulty.js","webpack:///./app/assets/javascripts/es6/components/memory-bank/layouts/difficulty.js","webpack:///./app/assets/javascripts/es6/components/apps/screens/memory-bank-summary.js","webpack:///./app/assets/javascripts/es6/components/apps/session-config-dropdown.js","webpack:///./app/assets/javascripts/es6/components/apps/item-preview.js","webpack:///./app/assets/javascripts/es6/components/apps/memory-bank.js","webpack:///./app/assets/javascripts/es6/components/apps/premium-link.js","webpack:///./app/assets/javascripts/es6/components/apps/settings/iknow-quiz-settings-panel.js","webpack:///./app/assets/javascripts/es6/controllers/apps/rapid-choice-app.js","webpack:///./app/assets/javascripts/es6/components/apps/settings/rapid-choice-quiz-direction-panel.js","webpack:///./app/assets/javascripts/es6/controllers/apps/rapid-choice-sequencer.js","webpack:///./app/assets/javascripts/es6/controllers/apps/self-assessment-app.js","webpack:///./app/assets/javascripts/es6/components/apps/settings/self-assessment-quiz-direction-panel.js","webpack:///./app/assets/javascripts/es6/controllers/apps/self-assessment-sequencer.js","webpack:///./app/assets/javascripts/es6/controllers/apps/sentence-trainer-app.js","webpack:///./app/assets/javascripts/es6/components/apps/settings/sentence-trainer-help-panel.js","webpack:///./app/assets/javascripts/es6/components/apps/settings/sentence-trainer-quiz-settings-panel.js","webpack:///./app/assets/javascripts/es6/components/apps/settings/sentence-trainer-quiz-types-panel.js","webpack:///./app/assets/javascripts/es6/controllers/apps/sentence-trainer-sequencer.js","webpack:///./app/assets/javascripts/es6/components/apps/screens/sentence-trainer-summary.js","webpack:///./app/assets/javascripts/es6/components/apps/screens/sentence-trainer-summary-breakdown.js","webpack:///./app/assets/javascripts/es6/components/apps/screens/welcome-sentence-trainer-course.js","webpack:///./app/assets/javascripts/es6/components/common/choices.js","webpack:///./app/assets/javascripts/es6/components/apps/screens/welcome-sentence-trainer-study-all.js","webpack:///./app/assets/javascripts/es6/components/apps/session-progress-steps.js","webpack:///./app/assets/javascripts/es6/controllers/apps/specific-content-app.js","webpack:///./app/assets/javascripts/es6/components/apps/screens/item-summary.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","global","getOwnPropertyDescriptor","f","createNonEnumerableProperty","redefine","setGlobal","copyConstructorProperties","isForced","options","source","target","targetProperty","sourceProperty","descriptor","TARGET","GLOBAL","STATIC","stat","noTargetGet","forced","undefined","sham","exec","error","it","Math","check","globalThis","window","self","this","Function","isObject","TypeError","String","fails","shared","has","uid","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","NAME","NATIVE_ARRAY_BUFFER","DESCRIPTORS","classof","getPrototypeOf","setPrototypeOf","wellKnownSymbol","Int8Array","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","ObjectPrototype","isPrototypeOf","TO_STRING_TAG","TYPED_ARRAY_TAG","NATIVE_ARRAY_BUFFER_VIEWS","opera","TYPED_ARRAY_TAG_REQIRED","TypedArrayConstructorsList","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigIntArrayConstructorsList","BigInt64Array","BigUint64Array","isTypedArray","klass","aTypedArray","aTypedArrayConstructor","C","ARRAY","TypedArrayConstructor","exportTypedArrayMethod","KEY","exportTypedArrayStaticMethod","isView","toInteger","min","argument","condition","format","a","b","e","Error","args","argIndex","replace","framesToPop","IE8_DOM_DEFINE","anObject","toPrimitive","nativeDefineProperty","O","P","Attributes","requireObjectCoercible","warning","polyglot","Polyglot","phrases","Config","strings","locale","extend","IndexedObject","toObject","toLength","arraySpeciesCreate","push","createMethod","TYPE","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_OUT","NO_HOLES","$this","callbackfn","that","specificCreate","result","boundFunction","length","index","forEach","map","filter","some","every","find","findIndex","filterOut","propertyIsEnumerableModule","createPropertyDescriptor","toIndexedObject","nativeGetOwnPropertyDescriptor","definePropertyModule","inspectSource","InternalStateModule","getInternalState","enforceInternalState","enforce","TEMPLATE","split","state","unsafe","simple","join","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","val","assign","test1","getOwnPropertyNames","test2","fromCharCode","test3","letter","keys","err","shouldUseNative","from","symbols","to","arguments","set","NATIVE_WEAK_MAP","objectHas","sharedKey","hiddenKeys","WeakMap","store","wmget","wmhas","wmset","metadata","facade","STATE","getterFor","type","path","wrappedWellKnownSymbolModule","_typeof","obj","iterator","constructor","classes","arg","aFunction","variable","namespace","method","quot","string","tag","attribute","S","p1","METHOD_NAME","test","toLowerCase","DOMProperty","ReactDOMComponentFlags","invariant","ATTR_NAME","ID_ATTRIBUTE_NAME","Flags","internalInstanceKey","random","toString","slice","getRenderedNativeOrTextFromComponent","component","rendered","_renderedComponent","precacheNode","inst","node","nativeInst","_nativeNode","precacheChildNodes","_flags","hasCachedChildNodes","children","_renderedChildren","childNode","firstChild","outer","childInst","childID","_domID","nextSibling","nodeType","getAttribute","nodeValue","getClosestInstanceFromNode","closest","parents","parentNode","pop","ReactDOMComponentTree","getInstanceFromNode","getNodeFromInstance","_nativeParent","uncacheNode","ceil","floor","isNaN","CORRECT_PROTOTYPE_GETTER","IE_PROTO","input","PREFERRED_STRING","fn","valueOf","TAG","configurable","canUseDOM","document","createElement","ExecutionEnvironment","canUseWorkers","Worker","canUseEventListeners","addEventListener","attachEvent","canUseViewport","screen","isInWorker","activeXDocument","defineProperties","enumBugKeys","html","documentCreateElement","EmptyConstructor","scriptTag","content","LT","NullProtoObject","domain","ActiveXObject","iframeDocument","iframe","write","close","temp","parentWindow","NullProtoObjectViaActiveX","style","display","appendChild","src","contentWindow","open","F","Properties","oauthToken","Authorization","transcodingSettings","smallImage","width","height","mediumImage","largeImage","appItemImage","appSentenceImage","isDevelopment","isTesting","logLevel","langSettings","kanaMode","romajiMode","showTranscriptions","user","admin","isPremium","justRegistered","username","groupRestrictions","canResetItemProgress","isLoggedIn","refreshSettings","App","Environment","API","User","token","updateSettings","userSettings","setKana","isRomajiMode","isKanaMode","apps","showTranscription","getAssetHost","environment","assetHost","getAssetPath","assetPath","getAssetCdns","assetCdns","getTranscoderHost","transcoderHost","getTranscoderCdns","transcoderCdns","getReferrerURL","cookies","documentElement","lang","querySelector","JSON","parse","bitmap","writable","SPECIES","defaultConstructor","$","TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS","ArrayBufferViewCore","ArrayBufferModule","anInstance","toIndex","toOffset","typedArrayFrom","setSpecies","getOwnPropertyDescriptorModule","inheritIfRequired","setInternalState","round","RangeError","ArrayBuffer","DataView","BYTES_PER_ELEMENT","WRONG_LENGTH","fromList","list","addGetter","isArrayBuffer","isTypedArrayIndex","wrappedGetOwnPropertyDescriptor","wrappedDefineProperty","wrapper","CLAMPED","BYTES","match","CONSTRUCTOR_NAME","GETTER","SETTER","NativeTypedArrayConstructor","TypedArrayConstructorPrototype","exported","addElement","data","view","byteOffset","setter","dummy","typedArrayOffset","$length","offset","buffer","byteLength","$len","ReactPerf","enableMeasure","storedMeasure","objName","fnName","func","measureMethods","objectName","methodNames","measure","injection","injectMeasure","max","integer","apply","aPossiblePrototype","CORRECT_SETTER","Array","proto","__proto__","isArrayIteratorMethod","getIteratorMethod","iteratorClose","Result","stopped","iterable","unboundFunction","iterFn","next","step","AS_ENTRIES","IS_ITERATOR","INTERRUPTED","stop","callFn","done","UNSCOPABLES","ArrayPrototype","Constructor","_assign","ReactCurrentOwner","REACT_ELEMENT_TYPE","RESERVED_PROPS","ref","__self","__source","ReactElement","owner","props","$$typeof","_owner","config","propName","childrenLength","childArray","defaultProps","current","createFactory","factory","cloneAndReplaceKey","oldElement","newKey","_self","_source","cloneElement","element","isValidElement","_slicedToArray","arr","isArray","_arr","_n","_d","_e","_s","_i","sliceIterator","_util","_inject","StyleSheet","sheetDefinition","mapObj","_ref","_ref2","_name","hashObject","_definition","rehydrate","renderedClassNames","addRenderedClassNames","StyleSheetServer","renderStatic","renderFunc","reset","startBuffering","css","flushToString","getRenderedClassNames","StyleSheetTestUtils","suppressStyleInjection","clearBufferAndResumeStyleInjection","_len","styleDefinitions","_key","useImportant","injectAndGetClassName","g","internalObjectKeys","concat","process","propertyKey","FREEZING","METADATA","id","isExtensible","setMetadata","objectID","weakData","meta","REQUIRED","fastKey","getWeakData","onFreeze","CallbackQueue","PooledClass","ReactFeatureFlags","ReactReconciler","Transaction","dirtyComponents","asapCallbackQueue","getPooled","asapEnqueued","batchingStrategy","ensureInjected","ReactUpdates","ReactReconcileTransaction","TRANSACTION_WRAPPERS","initialize","dirtyComponentsLength","splice","flushBatchedUpdates","callbackQueue","notifyAll","ReactUpdatesFlushTransaction","reinitializeTransaction","reconcileTransaction","mountOrderComparator","c1","c2","_mountOrder","runBatchedUpdates","transaction","len","sort","markerName","callbacks","_pendingCallbacks","logTopLevelRenders","namedComponent","_currentElement","getName","console","time","performUpdateIfNecessary","timeEnd","j","enqueue","getPublicInstance","Mixin","getTransactionWrappers","destructor","release","perform","scope","addPoolingTo","queue","batchedUpdates","callback","enqueueUpdate","isBatchingUpdates","injectReconcileTransaction","ReconcileTransaction","injectBatchingStrategy","_batchingStrategy","asap","context","Keys","freeze","ENTER","SPACE","TAB","LEFT","UP","RIGHT","DOWN","BACKSPACE","BACKSLASH","DELETE","ESC","PERIOD","COMMA","APOSTROPHE","HYPHEN","PGUP","PGDOWN","H","J","K","L","I","R","N","0","1","2","3","4","5","6","7","8","9","NUM_0","NUM_1","NUM_2","NUM_3","NUM_4","NUM_5","NUM_6","NUM_7","NUM_8","NUM_9","isLeft","keyCode","isRight","isUp","isDown","KeyHelpers","isDirectional","makeEmptyFunction","emptyFunction","thatReturns","thatReturnsFalse","thatReturnsTrue","thatReturnsNull","thatReturnsThis","thatReturnsArgument","keyMirror","PropagationPhases","bubbled","captured","EventConstants","topLevelTypes","topAbort","topAnimationEnd","topAnimationIteration","topAnimationStart","topBlur","topCanPlay","topCanPlayThrough","topChange","topClick","topCompositionEnd","topCompositionStart","topCompositionUpdate","topContextMenu","topCopy","topCut","topDoubleClick","topDrag","topDragEnd","topDragEnter","topDragExit","topDragLeave","topDragOver","topDragStart","topDrop","topDurationChange","topEmptied","topEncrypted","topEnded","topError","topFocus","topInput","topInvalid","topKeyDown","topKeyPress","topKeyUp","topLoad","topLoadedData","topLoadedMetadata","topLoadStart","topMouseDown","topMouseMove","topMouseOut","topMouseOver","topMouseUp","topPaste","topPause","topPlay","topPlaying","topProgress","topRateChange","topReset","topScroll","topSeeked","topSeeking","topSelectionChange","topStalled","topSubmit","topSuspend","topTextInput","topTimeUpdate","topTouchCancel","topTouchEnd","topTouchMove","topTouchStart","topTransitionEnd","topVolumeChange","topWaiting","topWheel","shouldBeReleasedProperties","EventInterface","currentTarget","eventPhase","bubbles","cancelable","timeStamp","event","Date","now","defaultPrevented","isTrusted","SyntheticEvent","dispatchConfig","targetInst","nativeEvent","nativeEventTarget","_targetInst","Interface","normalize","returnValue","isDefaultPrevented","isPropagationStopped","preventDefault","stopPropagation","cancelBubble","persist","isPersistent","augmentClass","Class","Super","E","fourArgumentPooler","LOG_LEVELS","debug","info","warn","PRINT_LOG_LEVEL","LEVEL_COLORS","TIMESTAMP_COLOR","NAMESPACE_COLOR","logMessages","log","date","timestamp","getHours","getMinutes","getMilliseconds","logMessage","printLogMessage","dumpLogs","Logger","version","userAgent","versions","v8","getBuiltIn","ignoreCase","multiline","dotAll","unicode","sticky","whitespace","ltrim","RegExp","rtrim","start","end","trim","callLegacy","url","preventStopSounds","mix","volume","Smartfm","Apps","Settings","EffectVolume","sound","goalId","slug","languageCode","origin","seriesId","language","appPath","sharableIdentifier","achievementId","resetId","AppPaths","IKNOW","RAPID_CHOICE","SELF_ASSESSMENT","SENTENCE_TRAINER","oneKeyObj","base64","ieee754","kMaxLength","Buffer","TYPED_ARRAY_SUPPORT","createBuffer","encodingOrOffset","allocUnsafe","array","fromArrayLike","fromArrayBuffer","encoding","isEncoding","actual","fromString","isBuffer","checked","copy","fromObject","assertSize","size","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","arrayIndexOf","indexOf","lastIndexOf","indexSize","arrLength","valLength","read","buf","readUInt16BE","foundIndex","found","hexWrite","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","str","byteArray","charCodeAt","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","fromByteArray","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","subarray","typedArraySupport","poolSize","_augment","species","fill","allocUnsafeSlow","_isBuffer","compare","x","y","pos","swap16","swap32","swap64","equals","inspect","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","ret","out","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","code","INVALID_BASE64_RE","Infinity","leadSurrogate","toByteArray","stringtrim","base64clean","dst","model","calc","previous","signed","unsigned","postfix","toAbsoluteIndex","IS_INCLUDES","el","fromIndex","replacement","feature","detection","POLYFILL","NATIVE","originalArray","Iterators","ITERATOR","TO_STRING_TAG_SUPPORT","classofRaw","CORRECT_ARGUMENTS","tryGet","callee","V8_VERSION","Boolean","preventExtensions","MATCH","isRegExp","oneArgumentPooler","copyFieldsFrom","Klass","instancePool","instance","standardReleaser","DEFAULT_POOLER","CopyConstructor","pooler","NewKlass","twoArgumentPooler","a1","a2","threeArgumentPooler","a3","a4","fiveArgumentPooler","a5","checkMask","bitmask","DOMPropertyInjection","MUST_USE_PROPERTY","HAS_SIDE_EFFECTS","HAS_BOOLEAN_VALUE","HAS_NUMERIC_VALUE","HAS_POSITIVE_NUMERIC_VALUE","HAS_OVERLOADED_BOOLEAN_VALUE","injectDOMPropertyConfig","domPropertyConfig","Injection","DOMAttributeNamespaces","DOMAttributeNames","DOMPropertyNames","DOMMutationMethods","isCustomAttribute","_isCustomAttributeFunctions","properties","lowerCased","propConfig","propertyInfo","attributeName","attributeNamespace","propertyName","mutationMethod","mustUseProperty","hasSideEffects","hasBooleanValue","hasNumericValue","hasPositiveNumericValue","hasOverloadedBooleanValue","ATTRIBUTE_NAME_START_CHAR","ROOT_ATTRIBUTE_NAME","ATTRIBUTE_NAME_CHAR","getPossibleStandardName","isCustomAttributeFn","params","buildAjaxObject","applicationDomains","itemId","diagId","userId","defaultPostOptions","toGoalId","items","itemIds","settings","timeout","apiBase","headers","withCredentials","encodeURIComponent","Ajax","ALIGN_STATES","NavContainer","React","createClass","propTypes","align","PropTypes","oneOf","className","getDefaultProps","render","NavButton","displayName","_","values","focusable","bool","focused","onClick","title","componentDidMount","_handleKeydown","_handleKeyup","componentDidUpdate","prevProps","prevState","ReactDOM","findDOMNode","blur","componentWillUnmount","removeEventListener","_canUseEnter","activeElement","tagName","focus","_onClick","disabled","SoundManager","playEffect","CLICK","Navigation","disableEnterKey","disableArrowKeys","focusDefaultButton","_getFocusedButton","_getFocusableButtons","querySelectorAll","dataset","navButton","focusableButtons","focusedButton","focusedIndex","leftChildren","child","rightChildren","centerChildren","forceDefault","defaultButton","nativePropertyIsEnumerable","NASHORN_BUG","V","SAFE_CLOSING","called","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","IS_RIGHT","argumentsLength","memo","left","right","addToUnscopables","defineIterator","ARRAY_ITERATOR","iterated","kind","Arguments","IS_PURE","__defineSetter__","CONVERT_TO_STRING","first","second","position","charAt","codeAt","regexpExec","REPLACE_SUPPORTS_NAMED_GROUPS","re","groups","REPLACE_KEEPS_$0","REPLACE","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","flags","nativeRegExpMethod","methods","nativeMethod","regexp","arg2","forceStringMethod","stringMethod","regexMethod","re1","re2","regexpFlags","stickyHelpers","nativeExec","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","lastIndex","UNSUPPORTED_Y","BROKEN_CARET","NPCG_INCLUDED","reCopy","charsAdded","strCopy","RE","Wrapper","NewTarget","NewTargetPrototype","nativeExpm1","expm1","exp","PromiseCapability","resolve","reject","promise","$$resolve","$$reject","InternalMetadataModule","iterate","checkCorrectnessOfIteration","setToStringTag","common","IS_WEAK","ADDER","NativeConstructor","NativePrototype","fixMethod","entries","getConstructor","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","clear","setStrong","redefineAll","IEEE754","arrayFill","ARRAY_BUFFER","DATA_VIEW","WRONG_INDEX","NativeArrayBuffer","$ArrayBuffer","$DataView","$DataViewPrototype","packIEEE754","pack","unpackIEEE754","unpack","packInt8","number","packInt16","packInt32","unpackInt32","packFloat32","packFloat64","count","isLittleEndian","intIndex","reverse","conversion","NaN","ArrayBufferPrototype","testView","nativeSetInt8","setInt8","getInt8","setUint8","bufferLength","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","ReactRef","attachRefs","mountComponent","internalInstance","nativeParent","nativeContainerInfo","markup","getReactMountReady","getNativeNode","unmountComponent","safely","detachRefs","receiveComponent","nextElement","prevElement","_context","refsChanged","shouldUpdateRefs","createMicrosoftUnsafeLocalFunction","setTextContent","enableLazy","documentMode","navigator","insertTreeChildren","tree","insertTreeBefore","innerHTML","text","referenceNode","insertBefore","DOMLazyTree","replaceChildWithTree","oldNode","newTree","replaceChild","queueChild","parentTree","childTree","queueHTML","queueText","EventPluginHub","EventPluginUtils","accumulateInto","forEachAccumulated","getListener","accumulateDirectionalDispatches","upwards","listener","propagationPhase","registrationName","phasedRegistrationNames","listenerAtPhase","_dispatchListeners","_dispatchInstances","accumulateTwoPhaseDispatchesSingle","traverseTwoPhase","accumulateTwoPhaseDispatchesSingleSkipTarget","parentInst","getParentInstance","accumulateDispatches","ignoredDirection","accumulateDirectDispatchesSingle","EventPropagators","accumulateTwoPhaseDispatches","events","accumulateTwoPhaseDispatchesSkipTarget","accumulateDirectDispatches","accumulateEnterLeaveDispatches","leave","enter","traverseEnterLeave","EventPluginRegistry","ReactErrorUtils","listenerBank","eventQueue","executeDispatchesAndRelease","simulated","executeDispatchesInOrder","executeDispatchesAndReleaseSimulated","executeDispatchesAndReleaseTopLevel","injectEventPluginOrder","injectEventPluginsByName","putListener","_rootNodeID","PluginModule","registrationNameModules","didPutListener","bankForRegistrationName","deleteListener","willDeleteListener","deleteAllListeners","extractEvents","topLevelType","plugins","possiblePlugin","extractedEvents","enqueueEvents","processEventQueue","processingEventQueue","rethrowCaughtError","__purge","__getListenerBank","getEventTarget","UIEventInterface","doc","ownerDocument","defaultView","detail","SyntheticUIEvent","dispatchMarker","DOWNLOAD_DELAY","SHOW_DELAY","HIDE_DELAY","FEEDBACK_URL","AUTOSCAN_CLASS","POPUP_CLASS","BUTTON_CLASS","BUTTON_RESTING_OPACITY","ARROW_SAFETY_MARGIN","FitText","saveContainerNode","container","resize","resetFontSizes","flattenAllElements","originalFontSize","ORIGINAL_FONT_SIZE","fontSize","maxHeight","getMaxHeight","initialFontSize","getComputedStyle","getBoundingClientRect","minFontSize","parentElement","computedStyle","Component","walkChildren","fitText","componentName","Children","ResultTypes","SEEN","CORRECT","EASY","OK","HARD","ALMOST_CORRECT","CORRECT_WITH_HINT","INCORRECT","YIELD_ON_RECALL","YIELD_ON_QUIZ","TIMEOUT","CorrectTypes","QuizResult","contentDomain","contentId","leQuizType","_currentPhase","_phaseStart","_timingInfo","_pauseStarted","_pauseDurationInPhase","quizData","contains","leQuizResult","phaseName","occurredAt","ServerTimeManager","currentTimestamp","endCurrentPhase","_nowTime","duration","ReferenceError","omit","studyTimeMillis","reduce","getTime","EXISTS","functionToString","SHARED","copyright","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","IS_NODE","objectKeys","endPos","createIteratorConstructor","IteratorsCore","IteratorPrototype","BUGGY_SAFARI_ITERATORS","KEYS","VALUES","ENTRIES","returnThis","Iterable","IteratorConstructor","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","error1","error2","repeat","IS_END","maxLength","fillString","fillLen","stringFiller","stringLength","fillStr","intMaxLength","whitespaces","sign","defer","channel","port","IS_IOS","location","setImmediate","clearImmediate","MessageChannel","Dispatch","counter","ONREADYSTATECHANGE","run","runner","post","postMessage","protocol","host","nextTick","port2","port1","onmessage","importScripts","removeChild","setTimeout","buildPath","COURSE_COMPLETION","RECALL","DONE","WELCOME","TYPING","RAPID_CHOICE_CORRECT","RAPID_CHOICE_INCORRECT","SPELL_CORRECT","SPELL_INCORRECT","ACHIEVEMENT","CHECKPOINT","ReactDebugTool","debugTool","ReactPropTypeLocations","prop","childContext","EventPluginOrder","namesToPlugins","recomputePluginOrdering","pluginName","pluginIndex","publishedEvents","eventTypes","eventName","publishEventForPlugin","eventNameDispatchConfigs","publishRegistrationName","registrationNameDependencies","dependencies","possibleRegistrationNames","InjectedEventPluginOrder","injectedNamesToPlugins","isOrderingDirty","getPluginModuleForEvent","phase","_resetEventPlugins","ViewportMetrics","MouseEventInterface","screenX","screenY","clientX","clientY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","button","buttons","relatedTarget","fromElement","srcElement","toElement","pageX","currentScrollLeft","pageY","currentScrollTop","SyntheticMouseEvent","ESCAPE_LOOKUP","'","ESCAPE_REGEX","escaper","hasEventPageXY","ReactEventEmitterMixin","getVendorPrefixedEventName","isEventSupported","alreadyListeningTo","isMonitoringScrollValue","reactTopListenersCounter","topEventMapping","topListenersIDKey","ReactBrowserEventEmitter","ReactEventListener","injectReactEventListener","setHandleTopLevel","handleTopLevel","setEnabled","enabled","isEnabled","listenTo","contentDocumentHandle","mountAt","isListening","getListeningForDocument","dependency","trapBubbledEvent","trapCapturedEvent","WINDOW_HANDLE","handlerBaseName","handle","ensureScrollValueMonitoring","createEvent","refresh","refreshScrollValues","monitorScrollValue","Glyph","isRequired","SOUND_PLAYER_SENTENCE","SOUND_PLAYER_UNSTYLED","playSound","setState","playing","play","finished","onFinish","SoundPlayer","styles","variant","VOLUME_MEDIUM","optionalOneOf","sentence","cursor","color","SOUND_PLAYER_SENTENCE_COLOR","border","padding","margin","background","SOUND_PLAYER_SENTENCE_HOVER_COLOR","_defineProperty","replacer","prefix","constructError","message","stack","NREUM","noticeError","AjaxAbortedError","AjaxError","exception","request","serverSideException","PaywallError","NetworkError","TokenExpiredError","AjaxTimeoutError","HaltFetchDataError","LoaderError","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","clearTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","noop","browser","env","argv","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","umask","watchError","watch","setAPI","resetAPI","schedule","_xhr2","_interopRequireDefault","_rsvp","_defs","_dictionary","_formatEntry2","_watcher2","pubsub","errorPubsub","notify","notifyError","coursesLoaded","api","prepareNext","words","courses","newApi","newHeaders","_ref$words","_ref$courses","pour","actuallyDownload","Promise","unwatch","unwatchError","collection","item","newCourses","action","course","response","body","isBadResponse","then","addWords","newWords","word","hasWord","json","setWord","statusCode","dictionary","getWord","ORANGE_DARKER","BLACK_BASE","BLACK_LIGHTER","GRAY_DARKER","GRAY_BASE","ownKeys","names","nativeGetOwnPropertyNames","windowNames","getWindowNames","returnMethod","callWithSafeIterationClosing","createProperty","arrayLike","mapfn","mapping","iteratorMethod","copyWithin","inc","flattenIntoArray","original","sourceLen","depth","mapper","thisArg","targetIndex","sourceIndex","mapFn","$forEach","STRICT_METHOD","arrayMethodIsStrict","nativeLastIndexOf","NEGATIVE_ZERO","searchElement","PrototypeOfArrayIteratorPrototype","arrayIterator","NEW_ITERATOR_PROTOTYPE","factories","construct","argsLength","partArgs","nativeAssign","A","B","symbol","alphabet","chr","T","TO_ENTRIES","is","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","matched","captures","namedCaptures","tailPos","ch","capture","STRING_ITERATOR","point","$parseInt","hex","radix","$parseFloat","parseFloat","trimmedString","log1p","flush","head","last","toggle","macrotask","IS_WEBOS_WEBKIT","MutationObserver","WebKitMutationObserver","queueMicrotaskDescriptor","queueMicrotask","parent","exit","createTextNode","observe","characterData","task","newPromiseCapability","promiseCapability","internalStateGetterFor","define","entry","getEntry","removed","prev","add","ITERATOR_NAME","getInternalCollectionState","getInternalIteratorState","ArrayIterationModule","$has","uncaughtFrozenStore","frozen","UncaughtFrozenStore","findUncaughtFrozen","toPositiveInteger","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","URL","searchParams","pathname","href","URLSearchParams","hash","USE_NATIVE_URL","hasOwn","getIterator","$fetch","Headers","URL_SEARCH_PARAMS","URL_SEARCH_PARAMS_ITERATOR","getInternalParamsState","plus","sequences","percentSequence","percentDecode","sequence","decodeURIComponent","deserialize","serialize","parseSearchParams","query","attributes","shift","updateSearchParams","validateArgumentsLength","passed","required","URLSearchParamsIterator","URLSearchParamsConstructor","entryIterator","entryNext","init","updateURL","URLSearchParamsPrototype","append","getAll","entriesIndex","sliceIndex","fetch","getState","alert","confirm","prompt","TranscodedImageSizes","SMALL","MEDIUM","LARGE","APP_ITEM","APP_SENTENCE","APP_SENTENCE_SMALL","TranscodedImagePlaceholders","NONE","APP","transcodingDimensions","small","medium","large","appItem","appSentence","appSentenceSmall","TranscodedImage","placeholder","image","getTranscodedUrl","backgroundImage","transcodedImageStyle","borderRadius","backgroundSize","backgroundPosition","halfSizeInPixes","defaultPlaceholder","bluePlaceholder","backgroundColor","APP_IMAGE_PLACEHOLDER","getIteratorFn","userProvidedKeyEscaperLookup","userProvidedKeyEscapeRegex","userProvidedKeyEscaper","getComponentKey","wrapUserProvidedKey","traverseAllChildrenImpl","nameSoFar","traverseContext","subtreeCount","nextNamePrefix","iteratorFn","ii","ITERATOR_SYMBOL","maybeIterable","ComponentTree","TreeTraversal","injectComponentTree","Injected","injectTreeTraversal","executeDispatch","invokeGuardedCallbackWithCatch","invokeGuardedCallback","isEndish","isMoveish","isStartish","executeDirectDispatch","dispatchListener","dispatchInstance","dispatchListeners","dispatchInstances","executeDispatchesInOrderStopAtTrue","executeDispatchesInOrderStopAtTrueImpl","hasDispatches","isAncestor","getLowestCommonAncestor","argFrom","argTo","caughtError","transactionWrappers","wrapperInitData","_isInTransaction","isInTransaction","errorThrown","initializeAll","closeAll","startIndex","OBSERVED_ERROR","initData","correspondingUseElement","useHasFeature","implementation","hasFeature","eventNameSuffix","isSupported","setAttribute","modifierKeyToProp","modifierStateGetter","keyArg","keyProp","Danger","ReactMultiChildUpdateTypes","setInnerHTML","getNodeAfter","insertChildAt","insertLazyTreeChildAt","moveChild","openingComment","closingComment","nextNode","moveDelimitedText","removeDelimitedText","startNode","DOMChildrenOperations","dangerouslyReplaceNodeWithMarkup","replaceDelimitedText","stringText","nodeAfterComment","processUpdates","updates","k","update","INSERT_MARKUP","afterNode","MOVE_EXISTING","fromNode","SET_MARKUP","TEXT_CONTENT","REMOVE_NODE","MSApp","execUnsafeLocalFunction","arg0","arg1","arg3","WHITESPACE_TEST","NONVISIBLE_TEST","testElement","textNode","deleteData","quoteAttributeValueForBrowser","VALID_ATTRIBUTE_NAME_REGEX","illegalAttributeNameCache","validatedAttributeNameCache","isAttributeNameSafe","shouldIgnoreValue","DOMPropertyOperations","createMarkupForID","setAttributeForID","createMarkupForRoot","setAttributeForRoot","createMarkupForProperty","createMarkupForCustomAttribute","setValueForProperty","deleteValueForProperty","setAttributeNS","setValueForAttribute","removeAttribute","ReactPropTypes","hasReadOnlyValue","_assertSingleLink","inputProps","checkedLink","valueLink","_assertValueLink","onChange","_assertCheckedLink","readOnly","loggedTypeFailures","getDeclarationErrorAddendum","LinkedValueUtils","checkPropTypes","getValue","getChecked","executeOnChange","requestChange","injected","ReactComponentEnvironment","unmountIDFromEnvironment","replaceNodeWithMarkup","processChildrenUpdates","injectEnvironment","ReactInstanceMap","remove","_reactInternalInstance","prevEmpty","nextEmpty","prevType","nextType","validateDOMNesting","charCode","_extends","objectToPairs","pairs","flatten","UPPERCASE_RE","MS_RE","kebabifyStyleName","kebabify","recursiveMerge","isUnitlessNumber","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridColumn","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","prefixes","toUpperCase","substring","prefixKey","stringifyValue","h","murmurhash2_32_gc","stringify","IMPORTANT_RE","importantify","base","important","Cookies","withConverter","ProgressBarBase","animateInterval","displayProgress","doAnimation","prevProgress","_unmounted","progress","nextProps","stopAnimation","_animate","animateObj","refs","meter","animate","animationDurationMillis","newProgress","onAnimationIteration","ProgressBar","data-primary","_renderDifference","_renderProgressTag","showProgressTag","showDifferenceTag","difference","abs","ProgressBarSentenceTrainer","getSettingsVariable","forcedAchievement","achievementFixtures","retVal","forcedCompletion","setting","checkAllOverrides","sessionData","checkForcedContent","checkForcedQuizType","checkSingleItemSession","forcedItem","StudyNodeAttributes","studySession","contentPool","itemPackages","sentences","memory","memories","getId","StudyNode","ForcedQuiz","quizName","Quizzes","each","studyNode","quizSequence","SingleItemSession","take","objectToString","getProtocol","isConnectionSecure","sanitizeKeys","sanitizeHandler","_createClass","protoProps","staticProps","_react","_react2","_index2","MouseoverDictionary","_React$Component","_classCallCheck","_this","_possibleConstructorReturn","rebind","subClass","superClass","_inherits","unbind","dom","scan","dangerouslySetInnerHTML","__html","any","traverseAllChildren","escapeUserProvidedKey","ForEachBookKeeping","forEachFunction","forEachContext","forEachSingleChild","bookKeeping","MapBookKeeping","mapResult","keyPrefix","mapFunction","mapContext","mapSingleChildIntoContext","childKey","mappedChild","mapIntoWithKeyPrefixInternal","escapedPrefix","forEachSingleChildDummy","ReactChildren","forEachFunc","toArray","ReactNoopUpdateQueue","emptyObject","ReactComponent","updater","isReactComponent","partialState","enqueueSetState","enqueueCallback","forceUpdate","enqueueForceUpdate","warnTDZ","publicInstance","callerName","isMounted","enqueueReplaceState","completeState","keyOf","MIXINS_KEY","mixins","SpecPolicy","DEFINE_ONCE","DEFINE_MANY","OVERRIDE_BASE","DEFINE_MANY_MERGED","injectedMixins","ReactClassInterface","statics","contextTypes","childContextTypes","getInitialState","getChildContext","componentWillMount","componentWillReceiveProps","shouldComponentUpdate","componentWillUpdate","updateComponent","RESERVED_SPEC_KEYS","_displayName","_mixins","mixSpecIntoComponent","_childContextTypes","_contextTypes","_getDefaultProps","createMergedResultFunction","_propTypes","_statics","mixStaticSpecIntoComponent","autobind","validateMethodOverride","isAlreadyDefined","specPolicy","ReactClassMixin","spec","autoBindPairs","__reactAutoBindPairs","isReactClassMethod","createChainedFunction","mergeIntoWithNoDuplicateKeys","one","two","bindAutoBindMethod","replaceState","newState","ReactClassComponent","ReactClass","autoBindKey","bindAutoBindMethods","initialState","methodName","injectMixin","mixin","ownerHasKeyUseWarning","validateExplicitKey","parentType","_store","validated","messageType","addendum","parentName","memoizer","addenda","parentOrOwner","childOwner","getAddendaForKeyUse","validateChildKeys","validatePropTypes","componentClass","ex","ReactElementValidator","validType","validatedFactory","newElement","ReactPropTypeLocationNames","ANONYMOUS","createPrimitiveTypeChecker","createChainableTypeChecker","arrayOf","typeChecker","propFullName","propValue","locationName","propType","getPropType","instanceOf","expectedClass","expectedClassName","actualClassName","isNode","objectOf","expectedValues","valuesString","oneOfType","arrayOfTypeCheckers","checker","shape","shapeTypes","validate","checkType","chainedCheckType","expectedType","preciseType","getPreciseType","currentIsArray","nextIsArray","cb","contentKey","_callbacks","_contexts","contexts","checkpoint","rollback","supportedInputTypes","elem","nodeName","scrollPosition","ReactDOMIDOperations","ReactComponentBrowserEnvironment","dangerouslyProcessChildrenUpdates","rootNodeID","escapeTextContentForBrowser","textContent","dummyNode","shouldWrap","selectWrap","tableWrap","trWrap","svgWrap","markupWrap","CSSProperty","shorthandPropertyExpansions","backgroundAttachment","backgroundPositionX","backgroundPositionY","backgroundRepeat","borderWidth","borderStyle","borderColor","borderBottom","borderBottomWidth","borderBottomStyle","borderBottomColor","borderLeft","borderLeftWidth","borderLeftStyle","borderLeftColor","borderRight","borderRightWidth","borderRightStyle","borderRightColor","borderTop","borderTopWidth","borderTopStyle","borderTopColor","font","fontStyle","fontVariant","fontFamily","outline","outlineWidth","outlineStyle","outlineColor","didWarnValueDefaultValue","updateOptionsIfPendingUpdateAndMounted","_wrapperState","pendingUpdate","updateOptions","multiple","selectedValue","selected","ReactDOMSelect","getNativeProps","mountWrapper","initialValue","defaultValue","_handleChange","wasMultiple","getSelectValueContext","postUpdateWrapper","ReactCompositeComponent","ReactEmptyComponent","ReactNativeComponent","ReactCompositeComponentWrapper","instantiateReactComponent","createInternalComponent","createInstanceForText","_mountIndex","_mountImage","_instantiateReactComponent","ReactNodeTypes","COMPOSITE","EMPTY","getType","getInternalInstanceReadyForUpdate","ReactUpdateQueue","validateCallback","enqueueCallbackInternal","_pendingForceUpdate","_pendingStateQueue","_pendingReplaceState","enqueueElementInternal","_pendingElement","emptyComponentFactory","ReactEmptyComponentInjection","injectEmptyComponentFactory","instantiate","genericComponentClass","tagToComponentClass","textComponentClass","getComponentClassForElement","isTextComponent","injectGenericComponentClass","injectTextComponentClass","injectComponentClasses","componentClasses","objA","objB","keysA","keysB","EventListener","listen","eventType","detachEvent","registerDefault","ReactDOMSelection","containsNode","focusNode","getActiveElement","ReactInputSelection","hasSelectionCapabilities","contentEditable","getSelectionInformation","focusedElem","selectionRange","getSelection","restoreSelection","priorSelectionInformation","curFocusedElem","priorFocusedElem","priorSelectionRange","setSelection","selection","selectionStart","selectionEnd","range","createRange","moveStart","moveEnd","getOffsets","offsets","createTextRange","collapse","select","setOffsets","ReactDOMContainerInfo","ReactDOMFeatureFlags","ReactMarkupChecksum","shouldUpdateReactComponent","ROOT_ATTR_NAME","instancesByReactRootID","getReactRootElementInContainer","mountComponentIntoNode","wrapperInstance","shouldReuseMarkup","_topLevelWrapper","ReactMount","_mountImageIntoNode","batchedMountComponentIntoNode","componentInstance","useCreateElement","unmountComponentFromNode","lastChild","hasNonRootReactChild","rootEl","getTopLevelWrapperInContainer","root","prevNativeInstance","getNativeRootInstanceInContainer","_nativeContainerInfo","topLevelRootCounter","TopLevelWrapper","rootID","_instancesByReactRootID","scrollMonitor","renderCallback","_updateRootComponent","prevComponent","_renderNewRootComponent","wrapperID","_instance","renderSubtreeIntoContainer","parentComponent","_renderSubtreeIntoContainer","nextWrappedElement","publicInst","updatedCallback","unmountComponentAtNode","reactRootElement","containerHasReactMarkup","containerHasNonRootReactChild","_processChildContext","hasAttribute","rootElement","canReuseMarkup","checksum","CHECKSUM_ATTR_NAME","rootMarkup","outerHTML","normalizedMarkup","diffIndex","string1","string2","minLen","firstDifferenceIndex","_renderedNodeType","IntervalMin","IntervalCheckpoint2","IntervalCheckpoint3","LogProgressMin","LogProgressMax","LogScaledMax","RangeMax","reviewIntervalToProgress","reviewInterval","logMin","logMax","progressScale","Memory","attrs","defaults","skipped","currentRetention","easinessModifier","lastStudyTime","seeNextAt","shortTermMemory","difficultyBucket","_setDates","showStudyScreen","_screenManager","onRemove","fireEvent","beginPhase","renderComponent","StudyScreen","itemPackage","onNext","finishQuiz","showStudyIfAppropriate","_isDiagnosticQuiz","ItemQuizBase","paused","timeLimit","_initSentence","quizType","cue","_prepopulateScreens","_showAndTimePhase","known","_quizTimer","setResult","resultObject","imeHtml","updateQuizData","disable","isCorrect","_showAnswerConfirmationScreen","_imeHtml","chosen","Modals","markAsCorrectDialogue","show","Sounds","incorrect","answerType","FILL_IN_THE_BLANK_ANSWER","MULTIPLE_CHOICE_ANSWER","answerText","quizContent","quizObject","getTransliteration","getText","answerLanguage","imageUrl","getImage","soundUrl","getSound","transliteration","translation","getTranslation","AnswerConfirmationScreen","onReview","returnedFromQuiz","onIncorrect","onStudyLessMore","lessOrMore","STUDY_LESS","STUDY_MORE","populate","shuffle","requiresSentenceAudio","requiresSentenceTranslation","requiresSentence","QuizBase","getLength","isFunction","isLength","nativeObjectCreate","getOwnPropertyNamesExternal","defineWellKnownSymbol","HIDDEN","TO_PRIMITIVE","$Symbol","$stringify","AllSymbols","ObjectPrototypeSymbols","StringToSymbolRegistry","SymbolToStringRegistry","QObject","USE_SETTER","findChild","setSymbolDescriptor","ObjectPrototypeDescriptor","wrap","description","isSymbol","$defineProperty","$defineProperties","$getOwnPropertySymbols","$propertyIsEnumerable","$getOwnPropertyDescriptor","$getOwnPropertyNames","IS_OBJECT_PROTOTYPE","keyFor","sym","useSetter","useSimple","space","$replacer","NativeSymbol","EmptyStringDescriptionStore","SymbolWrapper","symbolPrototype","symbolToString","native","desc","$AggregateError","errors","errorsArray","AggregateError","of","arrayMethodHasSpeciesSupport","IS_CONCAT_SPREADABLE","MAX_SAFE_INTEGER","MAXIMUM_ALLOWED_INDEX_EXCEEDED","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","isConcatSpreadable","spreadable","$every","$filter","$find","FIND","SKIPS_HOLES","$findIndex","FIND_INDEX","flat","depthArg","flatMap","$includes","$indexOf","nativeIndexOf","nativeJoin","ES3_STRINGS","separator","$map","$reduce","CHROME_VERSION","$reduceRight","reduceRight","nativeReverse","HAS_SPECIES_SUPPORT","nativeSlice","fin","$some","nativeSort","FAILS_ON_UNDEFINED","FAILS_ON_NULL","comparefn","MAXIMUM_ALLOWED_LENGTH_EXCEEDED","deleteCount","insertCount","actualDeleteCount","actualStart","FunctionPrototype","FunctionPrototypeToString","nameRE","HAS_INSTANCE","$entries","nativeFreeze","fromEntries","v","FAILS_ON_PRIMITIVES","getOwnPropertyDescriptors","nativeGetPrototypeOf","nativeIsExtensible","nativeIsFrozen","isFrozen","nativeIsSealed","isSealed","nativeKeys","nativePreventExtensions","nativeSeal","seal","$values","__defineGetter__","__lookupGetter__","__lookupSetter__","nativeFromCodePoint","fromCodePoint","elements","raw","template","rawTemplate","literalSegments","codePointAt","notARegExp","correctIsRegExpLogic","nativeEndsWith","endsWith","CORRECT_IS_REGEXP_LOGIC","searchString","endPosition","search","fixRegExpWellKnownSymbolLogic","advanceStringIndex","regExpExec","nativeMatch","maybeCallNative","matcher","rx","fullUnicode","matchStr","getRegExpFlags","speciesConstructor","MATCH_ALL","REGEXP_STRING","REGEXP_STRING_ITERATOR","RegExpPrototype","regExpBuiltinExec","nativeMatchAll","matchAll","WORKS_WITH_NON_GLOBAL_REGEX","$RegExpStringIterator","$matchAll","flagsValue","$padEnd","padEnd","$padStart","padStart","getSubstitution","reason","UNSAFE_SUBSTITUTE","searchValue","replaceValue","functionalReplace","results","accumulatedResult","nextSourcePosition","replacerArgs","sameValue","SEARCH","nativeSearch","searcher","previousLastIndex","callRegExpExec","arrayPush","MAX_UINT32","SUPPORTS_Y","SPLIT","nativeSplit","internalSplit","lim","lastLength","output","lastLastIndex","separatorCopy","splitter","unicodeMatching","q","z","nativeStartsWith","startsWith","$trim","forcedStringTrimMethod","$trimStart","trimStart","trimLeft","$trimEnd","trimEnd","trimRight","createHTML","forcedStringHTMLMethod","anchor","big","blink","bold","fixed","fontcolor","fontsize","italics","link","strike","sup","stringIndexOf","replaceAll","IS_REG_EXP","searchLength","advanceBy","endOfLastMatch","getFlags","NativeRegExp","CORRECT_NEW","RegExpWrapper","pattern","thisIsRegExp","patternIsRegExp","flagsAreUndefined","proxy","objectDefinePropertyModule","regExpFlags","nativeTest","TO_STRING","nativeToString","NOT_GENERIC","INCORRECT_NAME","rf","parseIntImplementation","parseFloatImplementation","NUMBER","NativeNumber","NumberPrototype","BROKEN_CLASSOF","toNumber","third","maxCode","digits","NumberWrapper","EPSILON","globalIsFinite","isInteger","isSafeInteger","MIN_SAFE_INTEGER","thisNumberValue","nativeToFixed","toFixed","acc","multiply","divide","dataToString","fractionDigits","fractDigits","x2","nativeToPrecision","toPrecision","precision","nativeAcosh","acosh","sqrt","LN2","MAX_VALUE","nativeAsinh","asinh","nativeAtanh","atanh","cbrt","LOG2E","clz32","nativeCosh","cosh","fround","EPSILON32","MAX32","MIN32","$abs","$sign","$hypot","hypot","value1","value2","div","sum","aLen","larg","nativeImul","imul","UINT16","xn","yn","xl","yl","LOG10E","log10","log2","sinh","tanh","trunc","toISOString","pv","DatePrototype","nativeDateToISOString","year","getUTCFullYear","milliseconds","getUTCMilliseconds","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","INVALID_DATE","nativeDateToString","dateToPrimitive","hint","low","fix","Internal","OwnPromiseCapability","PromiseWrapper","nativeThen","NativePromise","microtask","promiseResolve","hostReportErrors","newPromiseCapabilityModule","PROMISE","getInternalPromiseState","PromiseConstructor","newGenericPromiseCapability","DISPATCH_EVENT","dispatchEvent","NATIVE_REJECTION_EVENT","PromiseRejectionEvent","UNHANDLED_REJECTION","FakePromise","INCORRECT_ITERATION","all","isThenable","isReject","notified","chain","reactions","ok","exited","reaction","handler","fail","rejection","onHandleUnhandled","onUnhandled","initEvent","isUnhandled","unwrap","internalReject","internalResolve","executor","onFulfilled","onRejected","capability","$promiseResolve","alreadyCalled","race","allSettled","status","PROMISE_ANY_ERROR","alreadyResolved","alreadyRejected","real","onFinally","collectionStrong","InternalWeakMap","collectionWeak","enforceIternalState","IS_IE11","$WeakMap","WeakMapPrototype","nativeDelete","nativeHas","nativeGet","nativeSet","arrayBufferModule","mantissaLength","exponent","mantissa","exponentLength","eMax","eBias","rt","nBits","nativeArrayBufferSlice","viewSource","viewTarget","createTypedArrayConstructor","$copyWithin","$fill","fromSpeciesAndList","predicate","ArrayIterators","arrayValues","arrayKeys","arrayEntries","nativeTypedArrayIterator","CORRECT_ITER_NAME","typedArrayValues","$join","$lastIndexOf","middle","$slice","$sort","begin","beginIndex","$toLocaleString","toLocaleString","TO_LOCALE_STRING_BUG","Uint8ArrayPrototype","arrayToString","arrayJoin","IS_NOT_ARRAY_METHOD","nativeApply","functionApply","thisArgument","argumentsList","nativeConstruct","NEW_TARGET_BUG","ARGS_BUG","Target","newTarget","$args","Reflect","deleteProperty","receiver","objectGetPrototypeOf","objectIsExtensible","objectPreventExtensions","existingDescriptor","ownDescriptor","objectSetPrototypeOf","DOMIterables","COLLECTION_NAME","Collection","CollectionPrototype","ArrayIteratorMethods","ArrayValues","scheduler","boundArgs","setInterval","EOF","arrayFrom","toASCII","URLSearchParamsModule","NativeURL","getInternalSearchParamsState","getInternalURLState","INVALID_SCHEME","INVALID_HOST","INVALID_PORT","ALPHA","ALPHANUMERIC","DIGIT","HEX_START","OCT","DEC","HEX","FORBIDDEN_HOST_CODE_POINT","FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT","LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE","TAB_AND_NEW_LINE","parseHost","parseIPv6","isSpecial","parseIPv4","percentEncode","C0ControlPercentEncodeSet","partsLength","numbers","part","ipv4","parts","numbersSeen","ipv4Piece","swaps","address","pieceIndex","compress","pointer","char","serializeHost","ignore0","unshift","ipv6","maxIndex","currStart","currLength","findLongestZeroSequence","fragmentPercentEncodeSet","pathPercentEncodeSet","userinfoPercentEncodeSet","specialSchemes","ftp","file","http","https","ws","wss","scheme","includesCredentials","password","cannotHaveUsernamePasswordPort","cannotBeABaseURL","isWindowsDriveLetter","normalized","startsWithWindowsDriveLetter","shortenURLsPath","pathSize","isSingleDot","segment","SCHEME_START","SCHEME","NO_SCHEME","SPECIAL_RELATIVE_OR_AUTHORITY","PATH_OR_AUTHORITY","RELATIVE","RELATIVE_SLASH","SPECIAL_AUTHORITY_SLASHES","SPECIAL_AUTHORITY_IGNORE_SLASHES","AUTHORITY","HOST","HOSTNAME","PORT","FILE","FILE_SLASH","FILE_HOST","PATH_START","PATH","CANNOT_BE_A_BASE_URL_PATH","QUERY","FRAGMENT","parseURL","stateOverride","bufferCodePoints","failure","seenAt","seenBracket","seenPasswordToken","fragment","encodedCodePoints","URLConstructor","baseState","urlString","searchParamsState","serializeURL","getOrigin","getUsername","getPassword","getHost","hostname","getHostname","getPort","getPathname","getSearch","getSearchParams","getHash","URLPrototype","accessorDescriptor","nativeCreateObjectURL","createObjectURL","nativeRevokeObjectURL","revokeObjectURL","blob","maxInt","regexNonASCII","regexSeparators","OVERFLOW_ERROR","stringFromCharCode","digitToBasic","digit","adapt","delta","numPoints","firstTime","baseMinusTMin","encode","currentValue","inputLength","extra","ucs2decode","bias","basicLength","handledCPCount","handledCPCountPlusOne","qMinusT","baseMinusT","label","encoded","labels","runtime","Op","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","isGeneratorFunction","genFun","ctor","mark","awrap","async","iter","skipTempReset","rootRecord","rval","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","pathBase","xhr","XMLHttpRequest","_promise","onload","responseText","sanitizeResponse","statusText","backtrace","errorDescription","onabort","onerror","ontimeout","preparePayload","setOptions","send","setRequestHeader","abort","parameters","buildParams","underscoredData","underscoreKeys","camelCaseKeys","header","converter","expires","setMilliseconds","escape","cookie","toUTCString","secure","rdecode","getJSON","parseHeaders","xtend","initParams","uri","createXHR","_createXHR","getBody","responseType","responseXML","firefoxBugTakenEffect","getXml","isJson","errorFunc","evt","timeoutTimer","failureResponse","loadFunc","aborted","useXDR","rawRequest","getAllResponseHeaders","cors","XDomainRequest","sync","onreadystatechange","readyState","onprogress","isEmpty","beforeSend","forEachArray","win","row","forEachString","forEachObject","callbacksFor","_promiseCallbacks","EventTarget","allCallbacks","trigger","instrument","configure","payload","_guidKey","_id","_result","childId","_label","guid","childGuid","resolve$1","PENDING","GET_THEN_ERROR","ErrorObject","getThen","handleMaybeThenable","maybeThenable","then$$1","thenable","_state","fulfill","_onError","subscribe","handleOwnThenable","sealed","fulfillmentHandler","rejectionHandler","tryThen","handleForeignThenable","publishRejection","publish","_subscribers","onFulfillment","onRejection","subscribers","settled","invokeCallback","TRY_CATCH_ERROR","hasCallback","Enumerator","abortOnReject","_instanceConstructor","_abortOnReject","_init","_remaining","_enumerate","_eachEntry","_settleMaybeThenable","resolve$$1","_settledAt","_makeResult","_willSettleAt","enumerator","makeSettledResult","guidKey","resolver","needsResolver","resolved","initializePromise","needsNew","after","cast","ERROR","GET_THEN_ERROR$1","tryApply","makeObject","argumentNames","arrayResult","wrapThenable","_then","onFulFillment","denodeify","nodeFunc","promiseInput","needsPromiseInput","handlePromiseInput","handleValueInput","getThen$1","all$1","AllSettled","_Enumerator","race$1","_possibleConstructorReturn$1","PromiseHash","_inherits$1","HashSettled","_PromiseHash","_possibleConstructorReturn$2","_inherits$2","hashSettled","rethrow","deferred","promises","resolve$2","reject$2","resolveAll","filterFn","resolveSingle","filtered","newLength","vertxNext","queue$1","scheduleFlush$1","browserWindow","browserGlobal","BrowserMutationObserver","isWorker","useSetTimeout","iterations","observer","vertx","runOnLoop","runOnContext","attemptVertex","_asap$cast$Promise$Ev","rsvp","Timeout","clearFn","_clearFn","clearInterval","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","registerImmediate","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","attachTo","runIfPresent","postMessageIsAsynchronous","oldOnMessage","canUsePostMessage","script","partOfSpeech","partOfSpeechMap","ja","en","observers","someFn","currentLocale","allowMissing","VERSION","newLocale","morePhrases","phrase","unset","newPhrases","smart_count","clone","interpolate","choosePluralForm","delimeter","pluralTypes","chinese","german","french","russian","czech","polish","icelandic","pluralTypeToLanguages","langToTypeMap","langs","trimRe","texts","pluralTypeIndex","pluralTypeName","langToPluralType","dollarRegex","dollarBillsYall","langCode","emptyOnNone","loadedImages","Map","getTranscodeSubDomain","encodedUrl","base64Encode","subDomain","Image","Goal","createdAt","updatedAt","publishedAt","isCommunity","difficultyLevel","cueLanguage","responseLanguage","icon","itemsCount","sentencesCount","usersCount","author","rights","goalItems","goalItem","ItemPackage","aggregateMemory","skippedItemsCount","studiedItemsCount","getNewItemsCount","eligibleItemsCount","Transliterable","getLanguageShortCode","transliterations","Hira","Latn","Hrkt","_asap","_asap2","_generate","styleTag","stringHandlers","injectStyleOnce","animationName","finalVal","generateCSS","injectGeneratedCSSOnce","alreadyInjected","injectionBuffer","isBuffering","generatedCSS","flushToStyleTag","selector","definitions","generated","cssContent","cssContents","getElementsByTagName","styleSheet","cssText","injectStyleTag","classNames","validDefinitions","def","defined","correct","sources","createTreeWalker","NodeFilter","SHOW_TEXT","IGNORED_NODES","FILTER_SKIP","FILTER_ACCEPT","SCRIPT","STYLE","MultipleChoiceLimited","_setQuizType","recall","ReverseMultipleChoiceLimited","showHint","SentenceMultipleChoiceLimited","TransliterationMultipleChoiceLimited","ReverseTransliterationMultipleChoiceLimited","ListeningMultipleChoiceLimited","ReverseFillInTheBlank","TransliterationFillInTheBlank","SentenceFillInTheBlank","DictationFillInTheBlank","RapidChoicePair","ReverseRapidChoicePair","ReverseSelfAssessment","ReverseSelfAssessmentBinary","SelfAssessment","SelfAssessmentBinary","SentenceStudyListeningFillInTheBlankPartial","SentenceStudyListeningFillInTheBlank","SentenceStudyListeningAssembly","SentenceStudyTranslationAssembly","Study","kanjiStrokesEnabled","getLanguage","containsDisplayableCharacters","showKanjiStrokes","annotationsEnabled","getAnnotation","spellingModeEnabled","isKanaCourseItem","animationPhase","animationRequestId","animateOnMount","toggleFillInTheBlank","handleKeydown","isAnimationOrDefault","showAnnotations","setDefaultMode","handleKeypress","handleNext","handleTransitionEnd","StudyScreenNavigation","saveNavigationRef","startAnimation","showSentences","navigationRef","playAudioOnMount","requestAnimationFrame","cancelAnimationFrame","customNavigation","isNew","navigationProps","transcription","getPartOfSpeech","isAnimationMode","screenContentClassName","isCueAnimation","isResponseAnimation","isShadowAnimation","onTransitionEnd","KEYBOARD","JAPANESE_CHARACTER","PAPERCLIP","getSentences","disableVimKeys","onOpen","onClose","characters","onEscape","annotations","requiredNavigationFunction","isObjectLike","baseHas","baseKeys","indexKeys","isArrayLike","isIndex","isPrototype","isProto","indexes","skipIndexes","childNodes","classList","IME_SPACE","IME_PUNCTUATION","parseItem","IME_WORD","parseDOM","onKeyDown","keyInput","keydown","keypress","handleKeyInputKeyPress","cursorIndex","letterCount","autoConfirm","handleTextWasConfirmed","onTextWasConfirmed","setText","IME","textWasConfirmed","Behavior","KeyInput","ime","correctLettersTypeable","enable","actualHtml","correctRepresentationHtml","rebuild","IME_ITEM","letters","isTypeable","isIncorrect","hasCursor","INITIAL_STATE","draggedOver","DropZone","_getInitialState","expectedValue","onDragEnter","_handleDragEnter","onDragOver","_handleDragOver","onDragLeave","_handleDragLeave","onDrop","_handleDrop","wordChoice","WordPiece","getWordChoice","domNode","draggedElement","getDraggedElement","_setPointerEvents","_executeHandler","_resetState","_getContainerProps","pointerEvents","enableDragEvents","onDrag","onDragEnd","wordPiece","_handleSelectStart","dragDrop","_handleDragStart","dataTransfer","setData","_handleDrag","_handleDragEnd","draggable","onDragStart","annotation","distractors","Sentence","webpackPolyfill","deprecate","paths","baseValues","CONTAINER_STYLE","top","OVERLAY_STYLE","CONTENT_STYLE","transform","WebkitTransform","ModalContainer","onOverlayClick","stopKeyEvents","BaseModal","_node","captureKeyEvents","isOpen","renderModal","tabIndex","newProps","ReactDOMFactories","ReactVersion","onlyChild","__spread","only","createMixin","DOM","ReactInvalidSetStateWarningDevTool","eventHandlers","emitEvent","handlerFunctionName","arg4","arg5","addDevtool","devtool","removeDevtool","onBeginProcessingChildContext","onEndProcessingChildContext","onSetState","onMountRootComponent","onMountComponent","onUpdateComponent","onUnmountComponent","mapObject","abbr","area","article","aside","audio","bdi","bdo","blockquote","br","canvas","caption","cite","col","colgroup","datalist","dd","del","details","dfn","dialog","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","hgroup","hr","img","ins","kbd","keygen","legend","li","main","menu","menuitem","nav","noscript","ol","optgroup","option","param","picture","pre","rp","ruby","samp","section","span","strong","summary","table","tbody","td","textarea","tfoot","th","thead","tr","track","u","ul","video","wbr","circle","clipPath","defs","ellipse","line","linearGradient","mask","polygon","polyline","radialGradient","rect","svg","tspan","ReactDefaultInjection","getNativeComponentFromComposite","inject","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","__REACT_DEVTOOLS_GLOBAL_HOOK__","Mount","Reconciler","BeforeInputEventPlugin","ChangeEventPlugin","DefaultEventPluginOrder","EnterLeaveEventPlugin","HTMLDOMPropertyConfig","ReactDOMComponent","ReactDOMEmptyComponent","ReactDOMTreeTraversal","ReactDOMTextComponent","ReactDefaultBatchingStrategy","ReactInjection","SVGDOMPropertyConfig","SelectEventPlugin","SimpleEventPlugin","EventEmitter","NativeComponent","EmptyComponent","Updates","FallbackCompositionState","SyntheticCompositionEvent","SyntheticInputEvent","END_KEYCODES","canUseCompositionEvent","canUseTextInputEvent","useFallbackCompositionData","SPACEBAR_CHAR","beforeInput","onBeforeInput","onBeforeInputCapture","compositionEnd","onCompositionEnd","onCompositionEndCapture","compositionStart","onCompositionStart","onCompositionStartCapture","compositionUpdate","onCompositionUpdate","onCompositionUpdateCapture","hasSpaceKeypress","isFallbackCompositionEnd","getDataFromCustomEvent","currentComposition","extractCompositionEvent","fallbackData","getCompositionEventType","isFallbackCompositionStart","getData","customData","extractBeforeInputEvent","chars","which","getNativeBeforeInputChars","isKeypressCommand","getFallbackBeforeInputChars","getTextContentAccessor","_root","_startText","_fallbackText","startValue","startLength","endValue","endLength","minEnd","sliceTail","isTextInputElement","change","onChangeCapture","activeElementInst","activeElementValue","activeElementValueProp","doesChangeEventBubble","manualDispatchChangeEvent","runEventInBatch","stopWatchingForChangeEventIE8","getTargetInstForChangeEvent","handleEventsForChangeEventIE8","startWatchingForChangeEventIE8","isInputEventSupported","newValueProp","stopWatchingForValueChange","handlePropertyChange","getTargetInstForInputEvent","handleEventsForInputEventIE","startWatchingForValueChange","getTargetInstForInputEventIE","getTargetInstForClickEvent","getTargetInstFunc","handleEventFunc","targetNode","shouldUseClickEvent","ReactOwner","addComponentAsRefTo","attachRef","removeComponentAsRefFrom","detachRef","isValidOwner","ownerPublicInstance","ResponderEventPlugin","TapEventPlugin","mouseEnter","onMouseEnter","mouseLeave","onMouseLeave","related","toNode","accept","acceptCharset","accessKey","allowFullScreen","allowTransparency","alt","autoComplete","autoPlay","cellPadding","cellSpacing","charSet","challenge","classID","cols","colSpan","contextMenu","controls","coords","crossOrigin","dateTime","download","encType","formAction","formEncType","formMethod","formNoValidate","formTarget","frameBorder","hidden","high","hrefLang","htmlFor","httpEquiv","inputMode","integrity","keyParams","keyType","loop","manifest","marginHeight","marginWidth","media","mediaGroup","minLength","muted","nonce","noValidate","optimum","poster","preload","profile","radioGroup","rel","reversed","role","rows","rowSpan","sandbox","scoped","scrolling","seamless","sizes","spellCheck","srcDoc","srcLang","srcSet","useMap","wmode","about","datatype","inlist","resource","vocab","autoCapitalize","autoCorrect","autoSave","itemProp","itemScope","itemType","itemID","itemRef","security","unselectable","createNodesFromMarkup","getMarkupWrap","OPEN_TAG_NAME_EXP","RESULT_INDEX_ATTR","getNodeName","dangerouslyRenderMarkup","markupList","markupByNodeName","resultList","resultListAssignmentCount","resultIndex","markupListByNodeName","renderNodes","renderNode","oldChild","newChild","createArrayFromMixed","nodeNamePattern","handleScript","nodeNameMatch","wrapDepth","scripts","nodes","hasArrayNature","AutoFocusUtils","CSSPropertyOperations","DOMNamespaces","ReactDOMButton","ReactDOMInput","ReactDOMOption","ReactDOMTextarea","ReactMultiChild","getNode","CONTENT_TYPES","HTML","suppressContentEditableWarning","assertValidProps","voidElementTags","_tag","enqueuePutListener","_ownerDocument","listenerToPut","optionPostMount","postMountWrapper","mediaEvents","trapBubbledEventsLocal","postUpdateSelectWrapper","omittedCloseTags","newlineEatingTags","VALID_TAG_REGEX","validatedTagCache","isCustomComponent","globalIdCounter","validateDangerousTag","_namespaceURI","_previousStyle","_previousStyleCopy","_idCounter","namespaceURI","parentTag","mountImage","mathml","createElementNS","_updateDOMProperties","lazyTree","_createInitialChildren","tagOpen","_createOpenTagMarkupAndPutListeners","tagContent","_createContentMarkup","autoFocus","focusDOMComponent","propKey","createMarkupForStyles","renderToStaticMarkup","contentToUse","childrenToUse","mountChildren","mountImages","lastProps","updateWrapper","_updateDOMChildren","styleName","styleUpdates","lastStyle","nextProp","lastProp","setValueForStyles","lastContent","nextContent","lastHtml","nextHtml","lastChildren","nextChildren","lastHasContentOrHtml","nextHasContentOrHtml","updateChildren","updateTextContent","updateMarkup","unmountChildren","dangerousStyleValue","hyphenateStyleName","memoizeStringOnly","processStyleName","hasShorthandPropertyBug","styleFloatAccessor","tempStyle","cssFloat","serialized","styleValue","expansion","individualStyleName","camelize","msPattern","_hyphenPattern","character","hyphenate","_uppercasePattern","cache","ReactDOMDebugTool","ReactDOMUnknownPropertyDevtool","onCreateMarkupForProperty","onSetValueForProperty","onDeleteValueForProperty","warnUnknownProperty","runEventQueueInBatch","makePrefixMap","styleProp","vendorPrefixes","animationend","animationiteration","animationstart","transitionend","prefixedEventNames","animation","transition","prefixMap","mouseListenerNames","onDoubleClick","onMouseDown","onMouseMove","onMouseUp","onClickCapture","onDoubleClickCapture","onMouseDownCapture","onMouseMoveCapture","onMouseUpCapture","nativeProps","forceUpdateIfMounted","defaultChecked","initialChecked","rootNode","queryRoot","group","otherNode","otherInstance","selectValue","ReactChildReconciler","flattenChildren","processQueue","updateQueue","_reconcilerInstantiateChildren","nestedChildren","instantiateChildren","_reconcilerUpdateChildren","prevChildren","nextNestedChildrenElements","removedNodes","nextMarkup","_updateChildren","nextIndex","lastPlacedNode","prevChild","nextChild","_mountChildAtIndex","_unmountChild","renderedChildren","makeMove","createChild","makeInsertMarkup","makeRemove","instantiateChild","childInstances","keyUnique","nestedChildNodes","nextChildInstance","renderedChild","StatelessComponent","warnIfInvalidElement","nextMountID","ReactCompositeComponentMixin","renderedElement","publicProps","_processProps","publicContext","_processContext","unstable_handleError","performInitialMountWithErrorHandling","performInitialMount","_processPendingState","_renderValidatedComponent","_maskContext","maskedContext","contextName","currentContext","_checkPropTypes","nextContext","prevContext","prevParentElement","nextParentElement","prevUnmaskedContext","nextUnmaskedContext","willReceive","nextState","_performComponentUpdate","partial","unmaskedContext","hasComponentDidUpdate","_updateRenderedComponent","prevComponentInstance","prevRenderedElement","nextRenderedElement","oldNativeNode","_replaceNodeWithMarkup","_renderValidatedComponentWithoutOwnerOrContext","renderedComponent","publicComponentInstance","flattenSingleChildIntoContext","domID","createComment","instA","instB","depthA","tempA","depthB","tempB","pathFrom","pathTo","_stringText","_closingComment","_commentNodes","openingValue","closingValue","createDocumentFragment","escapedText","nextText","nextStringText","commentNodes","nativeNode","RESET_BATCHED_UPDATES","ReactDefaultBatchingStrategyTransaction","alreadyBatchingUpdates","getUnboundedScrollPosition","findParent","TopLevelCallbackBookKeeping","ancestors","handleTopLevelImpl","ancestor","_handleTopLevel","scrollValueMonitor","_enabled","scrollable","Window","pageXOffset","scrollLeft","pageYOffset","scrollTop","Perf","currentlyEnabled","previouslyEnabled","reactMountReady","getNodeForCharacterOffset","isCollapsed","anchorNode","anchorOffset","focusOffset","useIEOffsets","selectedRange","selectedLength","fromStart","duplicate","moveToElementText","setEndPoint","startOffset","rangeCount","currentRange","getRangeAt","startContainer","endContainer","rangeLength","tempRange","cloneRange","selectNodeContents","setEnd","endOffset","detectionRange","setStart","isBackward","collapsed","startMarker","endMarker","removeAllRanges","addRange","getLeafNode","getSiblingNode","nodeStart","nodeEnd","isTextNode","outerNode","innerNode","compareDocumentPosition","Node","NS","ATTRS","accentHeight","accumulate","additive","alignmentBaseline","allowReorder","alphabetic","amplitude","arabicForm","ascent","attributeType","autoReverse","azimuth","baseFrequency","baseProfile","baselineShift","bbox","by","calcMode","capHeight","clip","clipRule","clipPathUnits","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","contentScriptType","contentStyleType","cx","cy","decelerate","descent","diffuseConstant","direction","divisor","dominantBaseline","dur","dx","dy","edgeMode","elevation","enableBackground","externalResourcesRequired","fillRule","filterRes","filterUnits","floodColor","fontSizeAdjust","fontStretch","fx","fy","g1","g2","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","glyphRef","gradientTransform","gradientUnits","hanging","horizAdvX","horizOriginX","ideographic","imageRendering","in2","intercept","k1","k2","k3","k4","kernelMatrix","kernelUnitLength","kerning","keyPoints","keySplines","keyTimes","lengthAdjust","letterSpacing","lightingColor","limitingConeAngle","local","markerEnd","markerMid","markerStart","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","mathematical","numOctaves","operator","orient","orientation","overflow","overlinePosition","overlineThickness","paintOrder","panose1","pathLength","patternContentUnits","patternTransform","patternUnits","points","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","radius","refX","refY","renderingIntent","repeatCount","repeatDur","requiredExtensions","requiredFeatures","restart","rotate","ry","scale","seed","shapeRendering","slope","spacing","specularConstant","specularExponent","speed","spreadMethod","stdDeviation","stemh","stemv","stitchTiles","stopColor","strikethroughPosition","strikethroughThickness","stroke","strokeLinecap","strokeLinejoin","surfaceScale","systemLanguage","tableValues","targetX","targetY","textAnchor","textDecoration","textRendering","textLength","u1","u2","underlinePosition","underlineThickness","unicodeBidi","unicodeRange","unitsPerEm","vAlphabetic","vHanging","vIdeographic","vMathematical","vectorEffect","vertAdvY","vertOriginX","vertOriginY","viewBox","visibility","widths","wordSpacing","writingMode","xHeight","x1","xChannelSelector","xlinkActuate","xlinkArcrole","xlinkHref","xlinkRole","xlinkShow","xlinkTitle","xlinkType","xmlBase","xmlLang","xmlSpace","y1","y2","yChannelSelector","zoomAndPan","shallowEqual","skipSelectionChangeEvent","onSelect","onSelectCapture","lastSelection","mouseDown","hasListener","ON_SELECT_KEY","constructSelectEvent","currentSelection","boundingTop","boundingLeft","syntheticEvent","SyntheticAnimationEvent","SyntheticClipboardEvent","SyntheticFocusEvent","SyntheticKeyboardEvent","SyntheticDragEvent","SyntheticTouchEvent","SyntheticTransitionEvent","SyntheticWheelEvent","getEventCharCode","onAbort","onAbortCapture","animationEnd","onAnimationEnd","onAnimationEndCapture","animationIteration","onAnimationIterationCapture","animationStart","onAnimationStart","onAnimationStartCapture","onBlur","onBlurCapture","canPlay","onCanPlay","onCanPlayCapture","canPlayThrough","onCanPlayThrough","onCanPlayThroughCapture","click","onContextMenu","onContextMenuCapture","onCopy","onCopyCapture","cut","onCut","onCutCapture","doubleClick","drag","onDragCapture","dragEnd","onDragEndCapture","dragEnter","onDragEnterCapture","dragExit","onDragExit","onDragExitCapture","dragLeave","onDragLeaveCapture","dragOver","onDragOverCapture","dragStart","onDragStartCapture","drop","onDropCapture","durationChange","onDurationChange","onDurationChangeCapture","emptied","onEmptied","onEmptiedCapture","encrypted","onEncrypted","onEncryptedCapture","ended","onEnded","onEndedCapture","onError","onErrorCapture","onFocus","onFocusCapture","onInput","onInputCapture","invalid","onInvalid","onInvalidCapture","keyDown","onKeyDownCapture","keyPress","onKeyPress","onKeyPressCapture","keyUp","onKeyUp","onKeyUpCapture","load","onLoad","onLoadCapture","loadedData","onLoadedData","onLoadedDataCapture","loadedMetadata","onLoadedMetadata","onLoadedMetadataCapture","loadStart","onLoadStart","onLoadStartCapture","mouseMove","mouseOut","onMouseOut","onMouseOutCapture","mouseOver","onMouseOver","onMouseOverCapture","mouseUp","paste","onPaste","onPasteCapture","pause","onPause","onPauseCapture","onPlay","onPlayCapture","onPlaying","onPlayingCapture","onProgress","onProgressCapture","rateChange","onRateChange","onRateChangeCapture","onReset","onResetCapture","scroll","onScroll","onScrollCapture","seeked","onSeeked","onSeekedCapture","seeking","onSeeking","onSeekingCapture","stalled","onStalled","onStalledCapture","submit","onSubmit","onSubmitCapture","suspend","onSuspend","onSuspendCapture","timeUpdate","onTimeUpdate","onTimeUpdateCapture","touchCancel","onTouchCancel","onTouchCancelCapture","touchEnd","onTouchEnd","onTouchEndCapture","touchMove","onTouchMove","onTouchMoveCapture","touchStart","onTouchStart","onTouchStartCapture","transitionEnd","onTransitionEndCapture","volumeChange","onVolumeChange","onVolumeChangeCapture","waiting","onWaiting","onWaitingCapture","wheel","onWheel","onWheelCapture","topLevelEventsToDispatchConfig","ON_CLICK_KEY","onClickListeners","EventConstructor","elapsedTime","pseudoElement","ClipboardEventInterface","clipboardData","KeyboardEventInterface","normalizeKey","translateToKey","12","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","TouchEventInterface","touches","targetTouches","changedTouches","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","topLevelWrapper","adler32","TAG_END","COMMENT_START","addChecksumToMarkup","existingChecksum","MOD","componentOrElement","Loader","requests","_requests","getImageAndSoundAssets","assets","entity","transcodeOptions","sounds","ImageManager","images","Assets","unique","imagesLoading","soundsLoading","hasResolved","success","_setPromise","GoalAssets","goal","ItemPackageAssets","includeSentenceAssets","SentenceAssets","APILoader","goalResponses","GoalsLoader","goalIds","getGoal","responses","goals","castToObject","GoalMemoriesLoader","invalidate","AggregateMemoryLoader","invalidateAll","goalMemoriesResponses","getGoalMemories","aggregateMemoryResponses","getAggregateMemories","AggregateMemory","focusedAggregateMemoriesResponse","FocusedAggregateMemoriesLoader","getFocusedAggregateMemories","groupings","Grouping","goalSuggestionResponse","GoalSuggestionLoader","getGoalSuggestion","memoryAggregate","StudySpecificContent","studyParameters","goal_id","apiParams","postSpecificContent","convertDataToModels","StudyGoal","combined","goalMemories","includeStrong","newExcluded","sessionItemSource","ItemSource","REVIEW","weakExcluded","NEW","newItemsCount","weakItemsCount","studyResponse","getStudyData","StudyAll","initialStudyRequest","getStudyAllData","studyDataRequest","studyData","isReady","studyStrongRequest","pluck","compact","goalLoader","focusedMemoriesLoader","focusedMemories","loadedModels","grouping","cueLanguageCode","aggregateMemories","hasGoal","castTo","Diagnostic","diagData","getDiagnosticData","diagStudy","getDiagnosticStudyData","items_per_band","studyBand","bands","PanelMixin","inSession","onDataChange","_handleTypingSpecialCharactersChange","typingSpecialCharacters","_renderToggle","isDisabled","onId","offId","_renderTypingSpecialCharactersToggle","_renderQuizDirectionOptions","_renderQuizDirectionColumn","QuizDirection","All","Forward","Reverse","isChecked","bubbleElement","_content","bubbleStyle","arrowStyle","hover","bubbleHover","cleanup","hideImmediately","posX","posY","_audio2","_content2","_assign2","hideTimeout","showTimeout","showing","removeAfterHide","bubbleTransitionOpacity","cancelHide","cancelShow","showImmediately","downlight","highlight","slide","offsetParent","isFixed","scrollX","scrollY","wholeText","bubbleTransitionSliding","sourceBounds","bubbleBounds","_posX","innerWidth","arrowX","_posY","arrowUp","arrowChanges","bottom","constrain","windowWidth","middleOfSource","maxArrowOffset","despannify","unbubble","_bubble2","_loader","_spannify2","_collectWords2","leaveGarbage","INFINITY","remainder","iteratee","isArrayLikeObject","objectProto","reIsUint","rawAsap","freeTasks","pendingErrors","requestErrorThrow","makeRequestCallFromTimer","rawTask","RawTask","requestFlush","currentIndex","timeoutHandle","handleTimer","intervalHandle","_inlineStylePrefixerStatic","_inlineStylePrefixerStatic2","styleTypes","merged","declarations","mediaQueries","pseudoStyles","generateCSSRuleset","pseudoSelector","mediaQuery","handledDeclarations","runStringHandlers","prefixedDeclarations","rules","prefixedValues","unprefixedValues","_ret","_ref3","_ref32","stringValue","prefixAll","_prefixProps2","_capitalizeString2","plugin","baseValue","valueIndex","assignStyles","_sortPrefixedStyle2","_position2","_calc2","_cursor2","_flex2","_sizing2","_gradient2","_transition2","_flexboxIE2","_flexboxOld2","_isPrefixedProperty2","sortedStyle","_isPrefixedProperty","_isPrefixedValue2","_joinPrefixedValue2","_joinPrefixedValue","grab","grabbing","maxWidth","columnWidth","minWidth","minHeight","outputValue","multipleValues","dashCasePrefix","dashCaseProperty","_hyphenateStyleName2","prefixValue","webkitOutput","transitionProperty","WebkitTransition","WebkitTransitionProperty","uppercasePattern","alternativeProps","alternativeValues","alignContent","alignSelf","alignItems","justifyContent","flexBasis","WebkitBoxOrient","WebkitBoxDirection","flexWrap","randomizedHost","crc32","cleanSlashes","hostPart","filePart","CloseButton","BasicModal","CORRECT_WITH_MISTAKES","getServerTime","_setServerOffset","setTime","_serverOffset","server","JAStudyModes","KANA","ROMAJI","deepMerge","diff","UserSettings","contentVolume","effectVolume","jaStudyMode","itemStudy","quizOptions","sessionConfig","studyAll","rapidChoice","selfAssessment","sentenceStudy","typingSound","studyAllLanguage","completed","enrolled","startedAt","completedAt","ItemsAggregateMemory","SentencesAggregateMemory","DomainAggregateMemory","totalStudyTimeMillis","itemsAtCheckpoint0","itemsAtCheckpoint1","itemsAtCheckpoint2","itemsAtCheckpoint3","averageReviewInterval","averageEasinessModifier","averageCurrentRetention","isCompleteGoal","DISTRACTOR_BLACKLIST","HTML_TAG_PATTERN","PUNCTUATION_PATTERN","languageBlacklist","sanitizedText","firstCharacter","blacklisted","_wordEntities","getBuilderText","isCurrentLetterPunctuation","isPreviousLetterPunctuation","isPunctuation","constructWordEntities","distractorPool","wordEntities","w","uniq","isValidDistractor","Jpan","VALID_QUIZ_DATA_FIELDS","isDiagnosticQuiz","quizFinishedCallback","quizTimer","_contentDomain","_contentId","_quizFinishedCallback","screenManager","finalize","resume","validFields","pick","Ctor","generatorFn","runProc","stepProc","stepProcSynchronous","stopProc","STOP_STEP_RESULT","stopProcSynchronous","_len2","_key2","createCall","callSync","_len3","_key3","callMethod","_len4","_key4","callMethodSync","_len5","_key5","applySync","isCall","executeCall","isPromise","isGenerator","RESULT_TYPE_NORMAL","RESULT_TYPE_ERROR","RESULT_TYPE_RETURN","RESULT_TYPE_WAIT","RESULT_TYPE_DONE","CALL","INITIAL_STEP_RESULT","onStep","onCancel","currentStep","callSyncPromises","loopStep","stepResult","cancel","previousResult","stepPromise","generatorResult","stepProcWrapPromise","_call","callInfo","callResult","isSync","wasCancelled","wrappedPromise","handleAnswer","choiceMade","handleTimeout","onLoaded","answer","choices","recallPrompt","correctChoiceIndex","onAnswer","onQuizFinished","recallPromptSound","timedOut","isTimeout","RapidChoiceComponent","_pausedAndFinished","distractor","isDebugModeEnabled","choice","distractorSource","SentenceStudyListeningFillInTheBlankBase","_mode","enteredText","hints","mistakes","fillInTheBlankHTML","_isCorrect","_hints","_mistakes","_fillInTheBlankHTML","_setQuizResult","hintsUsed","_getMaxMistakes","_showConfirmationScreen","_pushQuizResult","maxMistakes","_sentence","populateAndShow","debugMode","maxHints","_getMaxHints","onDontKnow","_handleDontKnow","_handleSubmit","_handleRecallNext","SentenceQuizBase","_showQuizScreen","resultType","_showRecallScreen","SentenceStudyAssemblyBase","_wordChoices","_wordSlots","wordEntity","WordChoice","wordSlot","WordSlot","expected","insert","slot","free","isFilled","wc","used","findWordSlotByWordChoice","isIncorrectAndGraded","dropEffect","toWordSlot","fromWordSlot","swapChoice","isIncorrectAndUnhinted","hinted","_fillFieldsWithCorrectAnswers","slotIndex","shiftWordSlots","graded","endQuiz","wordSlots","SentenceBuilderConfirmation","_handleClick","onHint","_handleHint","onShift","_handleShift","wordChoices","SentenceBuilderQuiz","SentenceBuilderRecall","_renderMistakes","mistakeComponents","hideWordSlotIndex","shiftLeftSide","shiftEventTarget","WordSlots","_positionWordSlots","paddingLeft","paddingRight","isCorrectAndGraded","getShiftEndIndex","totalWidth","clientWidth","hiddenWordSlot","rowHeight","clientHeight","leftOffset","topOffset","isShifting","shiftingBelow","_storedValues","offsetTop","canFit","offsetLeft","styleAttr","existingPadding","adjustedOffset","newPadding","dropZones","renderedSlot","_renderSlot","dropZoneProps","filled","corrected","wordPieceProps","shiftEndIndex","isShiftable","_isDraggable","shiftsRight","_handleShiftEnd","onDragLeft","_handleShiftStart","onDragRight","onDropLeft","onDropRight","_renderWordPiece","_renderShiftZone","_renderDropZone","cantShift","nextWordChoice","endIndex","isShiftRight","cond","_throwFrozenError","isGraded","freedChoice","use","handleReveal","SelfAssessmentStudyScreen","_playAudioOnRecall","onVeryWell","onWell","onNotWell","isRepeatQuiz","_isRepeat","handleSkip","cueSound","_recallCue","isRepeat","onReveal","onSkip","_prompt","_recallResponse","SelfAssessmentScreen","GoalSource","UNCOMPLETED","COMPLETED","ALL","SessionConfig","_disabledValues","itemSource","Set","goalSource","_setToDefault","disabledValues","updatedSuccessfully","applicationType","extraQuizzes","decodedUrl","btoa","Audio","cdn","feedbackStyle","playButtonStyle","buttonsStyle","wordStyle","firstEntry","withSound","entryStyle","bubbleWrapStyle","sourceWord","anySound","agg","arr2","_toConsumableArray","playButton","feedbackUrl","_icons","_ref4","_ref5","_ref6","attr","boxShadow","paddingTop","paddingBottom","appearance","webkitAppearance","speakerDataUrl","flagDataUrl","speakerSvg","flagSvg","dataUrl","walker","_createWalker2","currentNode","strip","_createWalker","FULL_NUMBERS","SPECIAL_CHARS","splitText","getElementsByClassName","lastTextNode","nodeToReplace","baseProperty","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","other","isBinary","arrayMap","baseTimes","isArguments","isString","crc1","crc8","crc81wire","crc16","crc16ccitt","crc16modbus","crc16xmodem","crc16kermit","crc24","_buffer","_define_crc","_define_crc2","crc","accum","b64","placeHoldersCount","tmp","placeHolders","Arr","revLookup","uint8","extraBytes","maxChunkLength","len2","encodeChunk","lookup","num","isLE","mLen","nBytes","eLen","TABLE","_byte","seconds","humanized_time","HUMAN_TIMES","SECONDS_IN_YEAR","stashedPresentationData","localStorage","getItem","LOCAL_STORE_NAME","uploadPresentationData","presentations","removeItem","storePresentationData","presentationData","stringifiedPresentationData","setItem","checkDiscardData","saver","postStudyData","_isPaused","pauseEvents","resetAutoPauseTimeout","delayMilliseconds","autoPauseEnabled","autoPauseDelayMilliseconds","autoPauseTimeoutKey","autoPause","uncompleted","unfocused","_goalSet","getAvailableKanji","KANJI_STROKE_REGEXP","isSWFAvailable","getUniqueKanji","characterIndex","setCharacterIndex","KanjiStrokes","available","availableIndex","uniqueCharacters","Raphael","ReactDmak","dmak","setDrawDivRef","draw","Dmak","grid","_engine","eve","et","was","ca","customAttributes","TouchEvent","DocumentTouch","mousedown","mousemove","mouseup","_2","PI","M","_ISURL","_availableAttrs","gradient","_availableAnimAttrs","D","hs","rg","W","Y","G","_radial_gradient","X","U","_rectPath","Z","_getPath","_getBBox","Q","mapPath","Tt","_g","SVGAngle","behavior","adj","tt","vml","_Paper","angle","atan2","rad","deg","snapTo","createUUID","setWindow","initWin","_it","createPopup","ht","queryCommandValue","getPropertyValue","nt","at","st","ot","getRGB","lt","rgb","ut","ct","hsb2rgb","hsl2rgb","rgb2hsl","rgb2hsb","_path2string","_preload","hsb","hsl","getColor","parsePathString","ft","mt","parseTransformString","ps","sleep","pt","gt","xt","bezierBBox","isBBoxIntersect","findDotsAtSegment","t1","t2","vt","_path2curve","segment1","segment2","bez1","bez2","alpha","St","isPointInsideBBox","pathIntersection","pathIntersectionNumber","isPointInsidePath","pathBBox","_removedFactory","yt","bt","_pathToRelative","_t","_pathToAbsolute","wt","kt","Bt","cos","sin","asin","tan","Ct","curve","bx","qx","qy","At","_parseDots","_tear","Mt","_tofront","_toback","_insertafter","_insertbefore","toMatrix","getBBox","Et","matrix","transformPath","_extractTransform","Pt","invert","translate","dirtyT","sx","sy","Nt","Lt","_equaliseTransform","_getContainer","getElementById","pixelWidth","offsetWidth","pixelHeight","offsetHeight","pathToRelative","path2curve","toFilter","scalex","shear","scaley","acos","isSimple","isSuperSimple","noRotation","toTransformString","zt","Ft","originalEvent","Rt","jt","It","Dt","qt","Ot","identifier","_drag","paper","getElementByPoint","move_scope","Vt","unmousemove","unmouseup","end_scope","start_scope","Wt","Yt","removeData","mouseover","mouseout","unhover","unmouseover","unmouseout","Gt","Ht","undrag","unmousedown","__set__","ce","setFinish","getSize","setSize","setViewBox","raphael","elementFromPoint","clientTop","clientLeft","createSVGRect","getIntersectionList","getById","raphaelid","getElementsByBBox","getElementsByPoint","isPointInside","realPath","dirty","bboxwt","glow","offsetx","offsety","Xt","Ut","$t","Zt","Qt","getTotalLength","getPointAtLength","getSubpath","getPath","Jt","easing_formulas","linear","backIn","backOut","elastic","bounce","easeIn","easeOut","easeInOut","Kt","te","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","ee","ms","easing","initstatus","anim","percent","totalOrigin","ae","percents","ie","ne","times","se","animateWith","onAnimation","delay","100","oe","le","he","_ue","fe","pe","exclude","insertAfter","registerFont","face","fonts","glyphs","getFont","normal","lighter","bolder","print","fullfill","ninja","_x","firstDefined","lastDefined","_events","nts","block","classic","diamond","oval","webkitTapHighlightColor","arrows","endPath","startPath","startdx","enddx","square","butt","startString","endString","hide","toFront","toBack","_blur","_viewBox","xmlns","_left","_top","renderfix","_vbSize","getScreenCTM","createSVGMatrix","fillpos","coordsize","rotation","flip","coordorigin","fillsize","clipRect","textpath","weight","joinstyle","miterlimit","endcap","dashstyle","bbx","color2","colors","focussize","focusposition","_oid","_viewBoxShift","skew","auxGetBBox","runtimeStyle","Path","textpathok","styleSheets","createStyleSheet","addRule","namespaces","rvml","animated","erasing","strokes","papers","timeouts","drawing","skipLoad","DmakLoader","prepare","loaded","autoplay","visible","erased","drew","erase","eraseLastStrokes","renderNextStrokes","DOMParser","parseFromString","baseIndexOf","nativeMax","guard","indexOfNaN","fromRight","adjustSentenceIndex","shiftBy","sentenceIndex","newIndex","stopSound","toggleSentenceTab","data-fit-text","SentenceTab","CHEVRON_LEFT","CHEVRON_RIGHT","enableInputTimeout","hideIconTimeout","inputDisabled","SpellingPractice","handleKeyDown","cancelTimeouts","CORRECT_RESULT","reveal","INCORRECT_RESULT","STUDY_LESS_MORE_MODAL_SKIP_COOKIE","animationState","ANIMATION_START","isStudyLessMoreModalOpen","setAnimationState","onSentenceTransitionEnd","ANIMATION_FADE_IN_SENTENCE","ANIMATION_FADE_IN_SENTENCE_END","onSentenceTranslationTransitionEnd","ANIMATION_FADE_IN_SENTENCE_TRANSLATION","ANIMATION_FADE_IN_SENTENCE_TRANSLATION_END","playSentenceIfNeeded","ANIMATION_PLAY_SENTENCE","playSentence","ANIMATION_END","openStudyLessModal","openStudyLessMoreModal","openStudyMoreModal","closeStudyLessMoreModal","onStudyLessMoreModalConfirm","animationTaskProps","answerClassName","answerMultipleChoice","answerFillInTheBlank","answerContentClassName","answerMultipleChoiceContent","answerFillInTheBlankContent","answerCorrectIconClassName","answerCorrectIcon","answerMultipleChoiceCorrectIcon","answerFillInTheBlankCorrectIcon","sentenceContainerClassName","sentenceContainer","fadeIn","sentenceClassName","sentenceWithImage","sentenceTranslationClassName","sentenceTranslation","imeState","parseIMEHtml","sentenceImage","sentenceContent","sentenceSoundPlayer","sentenceText","sentenceTransliteration","bottomMessage","REMOVE","navStudyLessMore","modal","modalContent","modalButtonContainer","ANSWER_HEIGHT_PX","createAndInjectStyleSheet","textAlign","ANSWER_CONFIRMATION_ANSWER_TEXT_COLOR","ANSWER_CONFIRMATION_ANSWER_BACKGROUND_COLOR","verticalAlign","marginLeft","marginRight","float","marginTop","_indexJs","pullBottom","fadeInSentence","getProps","playEffectPromise","playSoundPromise","FadeInSentenceTask","_task","_proc","Task","generatorFunction","proc","onPropsReceived","boundGetProps","boundOnStep","wasUnmounted","_this2","timeoutMilliseconds","timeoutId","FillInTheBlankAnswer","letterIndex","answerFillInTheBlankLetter","answerLetterSpace","handleRemove","screenProperties","_setDistractor","RapidChoiceBase","answered","chosenIndex","fadeOut","animateAndFadeOut","renderChoice","choiceIndex","isChosenIndex","isDone","MCQuizChoice","RapidChoice","recallPromptClasses","Localization","MCQuizChoices","enableArrowKeys","handleClick","choicesHandleKeyDown","enableArrowEvents","numOfChildren","mcQuizChoices","_playSound","SoundEffects","downKey","spaceKey","_renderReadingMode","_renderListeningMode","_renderSentenceImage","calculatedDisplaySize","focusNavigation","isLargeDisplay","allSlotsFilled","_allSlotsFilled","_handleKeyDown","navigation","calculuatedSize","enableKeyEvents","quizContentClassName","_renderReading","_renderListening","_renderWordSlots","keyPositionIndex","_setKeyboardSelection","wordChoicesLength","wordPieceNodes","candidateNodes","closestNode","onVerticalMove","highlighted","freed","ShiftZone","dragEvent","offsetX","leftPadding","rightPadding","soundEffect","scrollHeight","resultIconClassName","ResultGlyphs","quizContentStyle","_renderSoundPlayer","_renderTranslation","_renderImage","followUpQuiz","SelfAssessmentBase","getPrompt","renderBadge","removeTooltip","DefaultNavigation","RepeatNavigation","bindProps","isDefaultValidation","ScreenBanner","isSettingsModalOpen","_openSettingsModal","_closeSettingsModal","showPauseButton","showSettingsButton","renderSettingsModalContents","onQuit","isPaused","pauseProps","settingsProps","PauseButton","SettingsButton","QuitButton","_update","PAUSE","GEAR","CROSS","Stat","StatData","StatLabel","Stats","ViewBox","HEIGHT","WIDTH","Circle","RADIUS","RADIUS_HOVER","RADIUS_BULGE","HiddenCoords","OFFSET","SLOWEST","SLOW","FAST","postParams","getGoalIdResponse","getGoalIdResponses","getUserCreatedGoals","goalParams","postGoal","postCopyItemsToCustomGoal","dloc","dlocHashEmpty","history","onHashChanged","fire","onpopstate","onhashchange","onchange","onChangeEvent","Router","frame","writeFrame","destroy","setHash","pushState","contentDocument","syncHash","_hash","routes","_methods","_insert","insertEx","historySupport","mount","_every","_flatten","_asyncEverySeries","paramifyString","mod","terminator","delimiter","chunk","routeTo","newURL","dispatch","convert_hash_in_init","run_in_init","explode","setRoute","route","getRoute","QUERY_SEPARATOR","recurse","strict","notfound","html5history","run_handler_in_init","before","compiled","routesFn","fns","traverse","invoked","_invoked","updateAndInvoke","runlist","_apply2","exact","filterRoutes","newRoutes","deepCopy","applyFilter","nested","matches","regifyString","insertOrMount","rename","routeType","isRoute","SessionProgressBar","animatedProgress","_handleAnimationIteration","d3","d3_arraySlice","d3_array","d3_document","d3_documentElement","d3_window","setProperty","d3_element_prototype","Element","d3_element_setAttribute","d3_element_setAttributeNS","d3_style_prototype","d3_style_setProperty","priority","d3_ascending","d3_number","d3_numeric","d3_bisector","mid","ascending","descending","extent","mean","quantile","median","variance","deviation","d3_bisect","d3_transposeLength","bisectLeft","bisect","bisectRight","bisector","i0","i1","permute","permutes","transpose","zip","merge","arrays","d3_range_integerScale","d3_class","d3_Map","d3_map_escape","d3_map_unescape","d3_map_has","d3_map_remove","d3_map_keys","d3_map_size","d3_map_empty","d3_Set","d3_identity","d3_rebind","d3_vendorSymbol","d3_vendorPrefixes","prefixName","empty","nest","sortValues","rollup","sortKeys","mapType","keyValue","valuesByKey","sortKey","keyMap","d3_noop","d3_dispatch","d3_dispatch_event","listenerByName","d3_eventPreventDefault","d3_eventSource","sourceEvent","d3_eventDispatch","thiz","argumentz","e1","e0","requote","d3_requote_re","d3_subclass","d3_selection","d3_selectionPrototype","d3_select","d3_selectAll","_d3_selectMatches","d3_selectMatcher","Sizzle","matchesSelector","d3_selection_selector","d3_selection_selectorAll","subgroup","subnode","subgroups","__data__","selectAll","d3_nsPrefix","xhtml","xlink","xml","d3_selection_attr","qualify","removeAttributeNS","d3_collapse","d3_selection_classedRe","d3_selection_classes","d3_selection_classed","d3_selection_classedName","d3_selection_style","removeProperty","d3_selection_property","d3_selection_creator","d3_selectionRemove","d3_selection_dataNode","d3_selection_filter","d3_selection_sortComparator","comparator","d3_selection_each","d3_selection_enter","d3_selection_enterPrototype","getAttributeNS","classed","groupData","nodeData","n0","updateNodes","enterNodes","exitNodes","nodeByKeyValue","keyValues","datum","d3_selection_enterInsertBefore","j0","d3_selection_on","d3_selection_onListener","d3_selection_onFilters","d3_selection_onFilter","upgroup","mouseenter","mouseleave","d3_event_dragSelect","d3_event_dragId","d3_event_dragSuppress","suppressClick","mouse","d3_mousePoint","d3_mouse_bug44083","ownerSVGElement","createSVGPoint","ctm","matrixTransform","inverse","d3_behavior_dragTouchId","touch","dragstart","touchstart","subject","move","dragOffset","correspondingElement","dragged","dragId","dragName","dragSubject","moved","dragRestore","position0","position1","ε","ε2","π","τ","τε","halfπ","d3_radians","d3_degrees","d3_sgn","d3_cross2d","d3_acos","d3_asin","d3_cosh","d3_haversin","ρ","SQRT2","interpolateZoom","p0","ux0","uy0","w0","ux1","uy1","w1","d2","d1","b0","b1","r0","r1","coshr0","d3_sinh","translate0","center0","center","mousewheelTimer","touchtime","x0","y0","scaleExtent","d3_behavior_zoomInfinity","zooming","mousedowned","d3_behavior_zoomWheel","mousewheeled","dblclicked","touchstarted","scaleTo","translateTo","zoomTo","__chart__","rescale","zoomstarted","zoomed","zoomended","location0","d3_selection_interrupt","scale0","locations0","distance0","zoomName","touchmove","touchend","targets","relocate","started","changed","l0","l1","distance1","scale1","d3_behavior_zoomDelta","view1","d3_transitionInheritId","tween","d3_color","d3_hsl","d3_rgb_parse","d3_rgb_hsl","d3_hslPrototype","d3_hsl_rgb","m1","m2","vv","d3_rgb","d3_hcl","d3_lab_hcl","d3_lab","d3_rgb_lab","brighter","darker","hcl","d3_hclPrototype","d3_hcl_lab","d3_lab_K","lab","d3_lab_X","d3_lab_Z","d3_labPrototype","d3_lab_rgb","d3_xyz_rgb","d3_lab_xyz","d3_xyz_lab","d3_rgbNumber","d3_rgbString","d3_rgbPrototype","d3_rgb_hex","d3_rgb_parseNumber","d3_rgb_names","d3_rgb_xyz","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","d3_functor","d3_xhrType","mimeType","d3_xhr","respond","d3_xhrHasResponse","overrideMimeType","beforesend","d3_xhr_fixCallback","functor","dsv","reFormat","delimiterCode","typedResponse","formatRow","formatValue","parseRows","eol","EOL","formatRows","fieldSet","fields","field","csv","tsv","d3_timer_queueHead","d3_timer_queueTail","d3_timer_interval","d3_timer_timeout","d3_timer_frame","d3_timer","timer","d3_timer_step","d3_timer_mark","d3_timer_sweep","t0","d3_format_precision","LN10","d3_formatPrefixes","d3_locale_numberFormat","locale_decimal","decimal","locale_thousands","thousands","locale_grouping","locale_currency","currency","formatGroup","specifier","d3_format_re","zfill","comma","suffix","d3_format_types","d3_format_typeDefault","zcomma","fullSuffix","negative","unit","formatPrefix","toExponential","d3_time","d3_date","d3_date_utc","UTC","getDate","getDay","getUTCDay","getFullYear","getMonth","getSeconds","getTimezoneOffset","setDate","d3_time_prototype","setUTCDate","setDay","setUTCDay","setFullYear","setUTCFullYear","setHours","setUTCHours","setUTCMilliseconds","setMinutes","setUTCMinutes","setMonth","setUTCMonth","setSeconds","setUTCSeconds","d3_time_interval","d0","utc","d3_time_interval_utc","d3_locale_timeFormat","locale_dateTime","locale_date","locale_time","locale_periods","periods","locale_days","days","locale_shortDays","shortDays","locale_months","months","locale_shortMonths","shortMonths","d3_time_format","d3_time_formatPads","d3_time_formats","d3_time_parse","localZ","d3_time_parsers","multi","d3_time_formatMulti","d3_time_periodLookup","d3_time_dayRe","d3_time_formatRe","d3_time_dayLookup","d3_time_formatLookup","d3_time_dayAbbrevRe","d3_time_dayAbbrevLookup","d3_time_monthRe","d3_time_monthLookup","d3_time_monthAbbrevRe","d3_time_monthAbbrevLookup","d3_time_formatPad","dayOfYear","sundayOfYear","mondayOfYear","d3_time_zone","d3_time_parseDay","d3_time_parseHour24","d3_time_parseDayOfYear","d3_time_parseMilliseconds","d3_time_parseMonthNumber","d3_time_parseMinutes","d3_time_parseSeconds","d3_time_parseWeekNumberSunday","d3_time_parseWeekdayNumber","d3_time_parseWeekNumberMonday","d3_time_parseYear","d3_time_parseFullYear","d3_time_parseZone","d3_time_parseLiteralPercent","day","years","interval","week","sunday","weeks","weekOfYear","d3_time_numberRe","d3_time_percentRe","zs","zh","zm","formats","numberFormat","timeFormat","d3_locale_enUS","d3_adder","geo","d3_adderSum","d3_adderTemp","bv","av","d3_geo_streamGeometry","geometry","d3_geo_streamGeometryType","stream","d3_geo_streamObjectType","Feature","FeatureCollection","features","Sphere","sphere","Point","coordinates","MultiPoint","LineString","d3_geo_streamLine","MultiLineString","Polygon","d3_geo_streamPolygon","MultiPolygon","GeometryCollection","geometries","closed","coordinate","lineStart","lineEnd","polygonStart","polygonEnd","d3_geo_areaSum","d3_geo_area","d3_geo_centroidW0","d3_geo_centroidW1","d3_geo_centroidX0","d3_geo_centroidY0","d3_geo_centroidZ0","d3_geo_centroidX1","d3_geo_centroidY1","d3_geo_centroidZ1","d3_geo_centroidX2","d3_geo_centroidY2","d3_geo_centroidZ2","d3_geo_areaRingSum","d3_geo_areaRingStart","λ00","φ00","λ0","cosφ0","sinφ0","nextPoint","λ","φ","dλ","sdλ","adλ","cosφ","sinφ","d3_geo_cartesian","spherical","d3_geo_cartesianDot","d3_geo_cartesianCross","d3_geo_cartesianAdd","d3_geo_cartesianScale","vector","d3_geo_cartesianNormalize","d3_geo_spherical","cartesian","d3_geo_sphericalEqual","bounds","φ0","λ1","φ1","λ_","λ__","φ__","dλSum","ranges","bound","ringPoint","ringStart","ringEnd","linePoint","inflection","λi","antimeridian","φi","compareRanges","withinRange","best","centroid","d3_geo_centroid","d3_geo_centroidPoint","d3_geo_centroidLineStart","d3_geo_centroidLineEnd","d3_geo_centroidRingStart","d3_geo_centroidPointXYZ","z0","cz","d3_geo_compose","compose","d3_true","d3_geo_clipPolygon","segments","clipStartInside","d3_geo_clipPolygonIntersection","d3_geo_clipPolygonLinkCircular","isSubject","d3_geo_clip","pointVisible","clipLine","clipStart","rotatedClipStart","pointRing","meridian","parallel","meridianNormal","polarAngle","winding","ring","point0","arc","intersection","φarc","d3_geo_pointInPolygon","polygonStarted","d3_geo_clipSort","pointLine","d3_geo_clipBufferListener","ringListener","clean","ringSegments","d3_geo_clipSegmentLength1","lines","rejoin","d3_geo_clipAntimeridian","_clean","sλ0","sλ1","cosφ1","sinλ0_λ1","atan","d3_geo_clipAntimeridianIntersect","d3_geo_clipCircle","cr","smallRadius","notHemisphere","c0","v0","v00","_clean2","point2","point1","intersect","d3_geo_circleInterpolate","n1","n2","n2n2","n1n2","determinant","n1xn2","uu","δλ","polar","q1","d3_geom_clipLine","ax","ay","d3_geo_clipExtentMAX","d3_geo_clipExtent","x__","y__","v__","x_","y_","v_","listener_","bufferListener","wn","insidePolygon","inside","corner","comparePoints","d3_geo_conic","projectAt","d3_geo_projectionMutator","parallels","d3_geo_conicEqualArea","ρ0","forward","ρ0_y","clipExtent","_stream","valid","conicEqualArea","albers","albersUsa","_point","lower48Point","alaskaPoint","hawaiiPoint","lower48","alaska","hawaii","pointStream","lower48Stream","alaskaStream","hawaiiStream","d3_geo_pathAreaSum","d3_geo_pathAreaPolygon","d3_geo_pathBoundsX0","d3_geo_pathBoundsY0","d3_geo_pathBoundsX1","d3_geo_pathBoundsY1","d3_geo_pathArea","d3_geo_pathAreaRingStart","x00","y00","d3_geo_pathBounds","d3_geo_pathBuffer","pointCircle","d3_geo_pathBufferCircle","pointLineStart","lineEndPolygon","pointRadius","d3_geo_lengthSum","d3_geo_pathCentroid","d3_geo_pathCentroidPoint","d3_geo_pathCentroidLineStart","d3_geo_pathCentroidLineEnd","d3_geo_pathCentroidRingStart","d3_geo_pathContext","_pointRadius","moveTo","lineTo","closePath","d3_geo_resample","project","δ2","cosMinDistance","maxDepth","resample","resampleRecursive","resampleNone","d3_geo_transformPoint","a00","b00","c00","a0","resampleLineTo","φ2","λ2","dx2","dy2","dz","d3_geo_pathProjectStream","d3_geo_projectionRadians","d3_geo_transform","d3_geo_projection","projectRotate","δx","δy","projectResample","δφ","δγ","preclip","postclip","clipAngle","projection","d3_geo_rotation","d3_geo_equirectangular","d3_geo_identityRotation","d3_geo_rotationλ","d3_geo_rotationφγ","d3_geo_forwardRotationλ","cosδφ","sinδφ","cosδγ","sinδγ","sr","d3_geo_circleAngle","d3_geo_graticuleX","d3_geo_graticuleY","d3_source","d3_target","projectStream","contextStream","cacheStream","_stream2","projectionMutator","equirectangular","distance","Δλ","sinΔλ","cosΔλ","sinφ1","graticule","X1","X0","Y1","Y0","DX","DY","majorExtent","minorExtent","majorStep","minorStep","greatArc","source_","target_","cy0","sy0","cy1","sy1","kx0","ky0","kx1","ky1","d3_geo_length","d3_geo_azimuthal","azimuthal","cosλ","sinc","cosc","d3_geo_azimuthalEqualArea","cosλcosφ","azimuthalEqualArea","d3_geo_azimuthalEquidistant","d3_geo_conicConformal","d3_geo_mercator","d3_geo_conicEquidistant","azimuthalEquidistant","conicConformal","conicEquidistant","d3_geo_gnomonic","d3_geo_mercatorProjection","clipAuto","gnomonic","mercator","d3_geo_orthographic","orthographic","d3_geo_stereographic","d3_geo_transverseMercator","d3_geom_pointX","d3_geom_pointY","d3_geom_hullUpper","hull","d3_geom_hullOrder","stereographic","transverseMercator","geom","vertices","flippedPoints","upper","lower","skipLeft","skipRight","d3_geom_polygonPrototype","d3_geom_polygonInside","d3_geom_polygonIntersect","x3","x21","x43","y3","y21","y43","ua","d3_geom_polygonClosed","d3_geom_voronoiEdges","d3_geom_voronoiCells","d3_geom_voronoiBeaches","d3_geom_voronoiFirstCircle","d3_geom_voronoiCircles","d3_geom_voronoiBeachPool","d3_geom_voronoiCirclePool","d3_geom_voronoiBeach","d3_geom_voronoiRedBlackNode","edge","site","d3_geom_voronoiCreateBeach","beach","d3_geom_voronoiDetachBeach","d3_geom_voronoiDetachCircle","d3_geom_voronoiRemoveBeach","vertex","disappearing","lArc","rArc","iArc","nArcs","d3_geom_voronoiSetEdgeEnd","d3_geom_voronoiCreateEdge","d3_geom_voronoiAttachCircle","d3_geom_voronoiAddBeach","dxl","dxr","directrix","d3_geom_voronoiLeftBreakPoint","d3_geom_voronoiRightBreakPoint","newArc","lSite","rSite","hb","hc","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","d3_geom_voronoiCell","edges","d3_geom_voronoiHalfEdgeOrder","d3_geom_voronoiCircle","cSite","ha","d3_geom_voronoiConnectEdge","vb","fm","fb","va","lx","ly","d3_geom_voronoiEdge","d3_geom_voronoiHalfEdge","d3_geom_voronoiCreateBorderEdge","d3_geom_voronoiRedBlackTree","d3_geom_voronoiRedBlackRotateLeft","d3_geom_voronoiRedBlackRotateRight","d3_geom_voronoiRedBlackFirst","d3_geom_voronoi","sites","d3_geom_voronoiVertexOrder","d3_geom_voronoiClipEdges","cell","iHalfEdge","halfEdges","nHalfEdges","cells","iCell","d3_geom_voronoiCloseCells","diagram","grandpa","uncle","sibling","voronoi","d3_geom_voronoiClipExtent","polygons","links","triangles","s0","s1","d3_geom_quadtreeCompatX","d3_geom_quadtreeCompatY","d3_geom_quadtreeVisit","d3_geom_quadtreeFind","closestPoint","minDistance2","distance2","xm","ym","d3_interpolateRgb","ar","ag","ab","bg","bb","d3_interpolateObject","d3_interpolate","d3_interpolateNumber","d3_interpolateString","am","bm","bs","bi","d3_interpolate_numberA","d3_interpolate_numberB","delaunay","quadtree","compat","xs","ys","x1_","y1_","x2_","y2_","leaf","nx","ny","insertChild","nPoint","below","interpolateRgb","interpolateObject","interpolateNumber","interpolateString","interpolators","d3_interpolateArray","na","nb","interpolateArray","d3_ease_default","d3_ease","poly","quad","d3_ease_quad","cubic","d3_ease_cubic","d3_ease_sin","d3_ease_exp","d3_ease_circle","back","d3_ease_bounce","d3_ease_mode","d3_ease_reverse","d3_ease_reflect","d3_ease_clamp","d3_ease_cubicInOut","t3","d3_interpolateRound","d3_transform","kx","d3_transformNormalize","kz","d3_transformDot","ky","ease","interpolateHcl","ah","ac","al","bh","bc","bl","interpolateHsl","as","interpolateLab","aa","ba","interpolateRound","baseVal","consolidate","d3_transformIdentity","d3_interpolateTransformPop","d3_interpolateTransform","ta","tb","d3_interpolateTranslate","ra","rb","d3_interpolateRotate","wa","wb","d3_interpolateSkew","ka","kb","d3_interpolateScale","d3_uninterpolateNumber","d3_uninterpolateClamp","d3_layout_bundlePath","lca","aNodes","d3_layout_bundleAncestors","bNodes","aNode","bNode","sharedNode","d3_layout_bundleLeastCommonAncestor","d3_layout_forceDragstart","d3_layout_forceDragend","d3_layout_forceMouseover","px","py","d3_layout_forceMouseout","d3_layout_forceAccumulate","charges","charge","pointCharge","interpolateTransform","layout","bundle","chord","chords","sortGroups","sortSubgroups","sortChords","relayout","groupSums","groupIndex","subgroupIndex","di","dj","subindex","startAngle","endAngle","resort","force","distances","strengths","friction","linkDistance","d3_layout_forceLinkDistance","linkStrength","d3_layout_forceLinkStrength","chargeDistance2","d3_layout_forceChargeDistance2","gravity","theta2","repulse","dw","dn","dragmove","tick","visit","chargeDistance","theta","neighbors","dimension","candidates","d3_layout_hierarchyRebind","hierarchy","d3_layout_hierarchyLinks","d3_layout_hierarchyVisitBefore","d3_layout_hierarchyVisitAfter","nodes2","d3_layout_hierarchyChildren","d3_layout_hierarchyValue","d3_layout_hierarchySort","childs","revalue","partition","pie","d3_layout_pieSortByValue","padAngle","da","pa","arcs","d3_layout_stackX","d3_layout_stackY","d3_layout_stackOut","d3_layout_stackOrderDefault","d3_layout_stackOffsetZero","series","orders","d3_layout_stackOrders","d3_layout_stackOffsets","d3_layout_stackMaxIndex","sums","d3_layout_stackReduceSum","tops","bottoms","silhouette","wiggle","s2","s3","o0","expand","zero","d3_layout_stackSum","d3_layout_histogramBinSturges","d3_layout_histogramBinFixed","d3_layout_histogramRange","d3_layout_packSort","d3_layout_packInsert","_pack_next","_pack_prev","d3_layout_packSplice","d3_layout_packIntersects","dr","d3_layout_packSiblings","xMin","xMax","yMin","yMax","d3_layout_packLink","d3_layout_packPlace","isect","d3_layout_packUnlink","d3_layout_packTransform","db","dc","d3_layout_treeSeparation","d3_layout_treeLeft","d3_layout_treeRight","d3_layout_treeMove","wm","wp","d3_layout_treeAncestor","vim","d3_layout_clusterLeft","d3_layout_clusterRight","d3_layout_treemapPadNull","d3_layout_treemapPad","d3_scaleExtent","d3_scaleRange","rangeExtent","d3_scale_bilinear","uninterpolate","d3_scale_nice","nice","d3_scale_niceStep","d3_scale_niceIdentity","histogram","frequency","valuer","ranger","binner","bin","bins","thresholds","separation","nodeSize","root0","root1","node1","wrapTree","firstWalk","secondWalk","sizeNode","tx","siblings","d3_layout_treeShift","midpoint","vip","vop","vom","sip","sop","sim","som","apportion","cluster","previousNode","d3_layout_clusterX","d3_layout_clusterY","treemap","stickies","pad","ratio","squarify","score","worst","stickify","rmax","rmin","padFunction","padConstant","µ","σ","logNormal","bates","irwinHall","d3_scale_polylinear","d3_scale_linear","clamp","rangeRound","ticks","d3_scale_linearTicks","tickFormat","d3_scale_linearTickFormat","d3_scale_linearNice","d3_scale_linearRebind","d3_scale_linearTickRange","d3_scale_linearPrecision","d3_scale_linearFormatSignificant","d3_scale_linearFormatPrecision","d3_scale_log","positive","niced","d3_scale_logNiceNegative","d3_scale_logFormat","d3_scale_pow","powp","d3_scale_powPow","powb","d3_scale_ordinal","rangeBand","steps","xi","rangePoints","rangeRoundPoints","rangeBands","outerPadding","rangeRoundBands","ordinal","category10","d3_category10","category20","d3_category20","category20b","d3_category20b","category20c","d3_category20c","d3_scale_quantile","quantiles","invertExtent","d3_scale_quantize","d3_scale_threshold","d3_scale_identity","identity","d3_zero","quantize","threshold","innerRadius","d3_svg_arcInnerRadius","outerRadius","d3_svg_arcOuterRadius","cornerRadius","padRadius","d3_svg_arcAuto","d3_svg_arcStartAngle","d3_svg_arcEndAngle","d3_svg_arcPadAngle","cw","rc","circleSegment","ap","d3_svg_arcSweep","h0","rc1","rc0","oc","kc","lc","t30","d3_svg_arcCornerTangents","t12","t03","t21","x01","y01","ox","oy","cx0","cx1","dx0","dy0","dx1","dy1","d3_svg_line","d3_svg_lineLinear","interpolateKey","tension","d3_svg_lineInterpolators","d3_svg_lineLinearClosed","d3_svg_lineStepBefore","d3_svg_lineStepAfter","basis","d3_svg_lineBasis","pi","d3_svg_lineDot4","d3_svg_lineBasisBezier3","d3_svg_lineBasisBezier","cardinal","d3_svg_lineHermite","d3_svg_lineCardinalTangents","monotone","tangents","d3_svg_lineSlope","d3_svg_lineFiniteDifferences","d3_svg_lineMonotoneTangents","lp","p2","d3_svg_lineBasisBezier1","d3_svg_lineBasisBezier2","d3_svg_lineRadial","d3_svg_area","interpolateReverse","points0","points1","fx0","fy0","fx1","fy1","d3_svg_chordRadius","d3_svg_diagonalProjection","d3_svg_diagonalRadialProjection","d3_svg_symbolSize","d3_svg_symbolType","d3_svg_symbolCircle","radial","diagonal","p3","projection_","d3_svg_symbols","cross","d3_svg_symbolTan30","d3_svg_symbolSqrt3","symbolTypes","d3_transitionId","d3_transitionNamespace","d3_transitionInherit","d3_transitionNode","d3_transition","interrupt","d3_selection_interruptNS","lock","activeId","d3_transitionPrototype","d3_transition_tween","d3_transition_text","inherit","tweens","elapsed","cancelId","subnodes","nameNS","attrNull","attrNullNS","attrTween","attrTweenNS","styleNull","styleString","styleTween","inheritId","id0","id1","axis","tickFormat_","d3_svg_axisDefaultOrient","innerTickSize","outerTickSize","tickPadding","tickArguments_","tickValues","tickTransform","tickEnter","tickExit","tickUpdate","tickSpacing","pathUpdate","lineEnter","lineUpdate","textEnter","textUpdate","d3_svg_axisX","d3_svg_axisY","d3_svg_axisOrients","tickSize","tickSubdivide","brush","xExtentDomain","yExtentDomain","xExtent","yExtent","xClamp","yClamp","resizes","d3_svg_brushResizes","brushstart","d3_svg_brushCursor","gUpdate","backgroundUpdate","redrawX","redrawY","redraw","eventTarget","event_","resizing","resizingX","resizingY","dragging","keyup","brushmove","brushend","ey","move1","extent1","extent0","yi","nw","sw","d3_time_formatUtc","d3_time_formatIso","d3_time_formatIsoNative","d3_time_scale","tickMethod","d3_time_scaleSteps","d3_time_scaleMilliseconds","d3_time_scaleDate","skip","iso","minute","minutes","hour","timezone","hours","month","d3_time_scaleLocalMethods","d3_time_scaleLocalFormat","d3_time_scaleUtcMethods","d3_time_scaleUtcFormat","d3_json","d3_html","selectNode","createContextualFragment","SequencerBase","studyItems","activeQuiz","_initializeStudyItems","totalItems","_itemsWithQuizzesRemaining","sessionFinishedCallback","sessionProgressUpdatedCallback","_sessionFinishedCallback","_sessionProgressUpdatedCallback","showNextQuiz","_collectPresentationResults","finishedCallback","skippedItem","_studyItemFromQuiz","sequencing","remainingQuizzes","postSkipItem","_incrementProgress","isNull","_studyItems","studyItem","initiallyScheduledQuizzes","_buildQuiz","presentedQuizzes","possibleQuizTypes","union","lastSeenAt","extraQuizzesInserted","quizConstructor","quizFinished","currentPresentationIndex","quiz","expectedRemaining","_expectedRemainingQuizCount","visibleProgress","_updateProgress","getContentId","getContentDomain","quizResult","getFinalResult","courseRecommended","SkipCheckpointPrompt","BaseItemStudyApp","_courseRecommendation","_includeSentenceAssets","_isCourseCompleted","_isCheckpoint","_isCourseRecommendation","_memoryBankPlot","sessionResults","_studyAll","_sessionData","checkForcedCheckpoint","checkpointGoals","cp","_goalId","checkForcedCompletion","completedGoals","_setupCourseRecommendation","panels","HelpPanel","_sessionConfig","_handleBeforeUnload","_quitApplication","Paths","_showWelcomeScreen","_loading","postFocusGoal","_fetchData","studyGoal","_errorHandler","presentationResults","_courseCompleted","_checkpointTriggered","_isLoading","skippedItemCalls","_reloadMemories","Loaders","getReadyItemsCount","_cueLanguage","_forceFinishSession","_skipItemDialogue","removeEvent","_completeItemDialogue","CourseRecommendationScreen","onMenu","onStart","_handleCourseRecommendationStart","_handleCourseRecommendationSkip","_renderBanner","updateMemoryBankPlot","inSessionNodes","memoryBankNodes","ip","MemoryBankNode","createFromItemPackage","MemoryBankPlot","isCheckpoint","_applicationType","courseRecommendation","isCourseCompleted","isCourseRecommendation","isPremiumUser","isStudyAll","hasFinishedSession","_finishedSessionsCount","memoryBankPlot","onCheckpointSkip","_handleCheckpointSkip","onCheckpointRedirect","_handleCheckpointRedirect","onCourseRecommendationShow","_showCourseRecommendation","onCourseRecommendationSkip","onMasterItem","_completeItemPrompt","onGoalSourceChange","_handleSessionChange","onItemSourceChange","onSessionSizeChange","onSkipItems","_handleSkipItems","_startSession","sessionSizes","_getSessionSizes","startLabel","_getStartButtonLabel","updatedMemories","_updatedMemories","MemoryBankSummaryScreen","MemoryBankSummaryBanner","hasNewItems","hasReviewItems","hasCompleted","hasUncompleted","toggleDisabled","BaseStudyApp","staticAssetLoader","preventDefaultBackspace","BaseApp","_setupElements","_setupUtilities","_setupHelpers","_setupQuizTimer","_setupScreenManager","_setupScreens","_setupStaticAssets","_setupEvents","_activeLoaders","bindMouseoverDictionary","unbinds","_elements","homeButton","appContainer","Utilities","VariableType","DisallowKeys","ModalWindow","Common","Windows","SkipItem","_trigger","Helpers","Base","_click","addClickEvent","QuizTimer","fireScreenCallback","ScreenManager","addNavigation","addPanel","showPanels","addScreen","Screens","Loading","iKnow","addEvent","_showSkipDialog","handleHomeButton","_handleHomeButton","_eventHandlers","hideMouseoverDictionary","_pauseApplication","_resumeApplication","reloadPrompt","reload","packedData","indexBy","loader","removeLoader","SoundSet","urls","onSent","StudyDataManager","checkForStoredPresentationData","completeCallback","TokenExpiredScreen","onReload","_sessionInProgress","_sequencer","pauseSequence","resumeSequence","inProgress","removeId","skipCurrentItem","_quitSession","_assetLoader","_createSequencer","startSequence","_handleSequencerEnded","_handleSequencerProgress","_handleSequencerStarted","enableAutoPause","getPauseDelay","disableAutoPause","_renderSettingsModalContents","_handleQuitButton","renderBannerComponent","closeModal","isLoadingToggle","postUnskipItem","_completeItem","postMemoryCheckpoint","setToComplete","ReflectOwnKeys","ReflectApply","NumberIsNaN","emitter","errorListener","eventTargetAgnosticAddListener","addErrorHandlerIfEventEmitter","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","_getMaxListeners","_addListener","prepend","existing","newListener","warned","onceWrapper","fired","wrapFn","_onceWrap","wrapped","_listeners","evlistener","unwrapListeners","arrayClone","listenerCount","wrapListener","setMaxListeners","getMaxListeners","doError","er","originalListener","spliceOne","rawListeners","eventNames","enableRibbon","enableStudyStats","_hasStartedCourse","progressBar","_renderStudyStats","_renderDetails","getDifficultyLevel","ribbon","aggregate","getTotalItemsCount","getItemsAtCheckpoint1","IKnowSequencer","nextItem","itemsWithQuizzesRemaining","previousQuizId","unpresentedQuizzes","_showNextQuizForItem","selectSubstituteQuiz","totalScore","insertableUnseenItem","sortBy","pool","scoreItem","targetPosition","sequenceFinished","baseScore","lastSeenInterval","scoreItemIntervalMultiplier","intervalMultipliers","_onHardAnswer","_onEasyAnswer","_onIncorrectAnswer","_attemptInsertingExtraQuiz","repeatQuiz","_getReplacementForIncorrectQuiz","presentedQuizTypes","remainingQuizTypes","insertable","sample","IKnowApp","appSettings","MarkAsCorrect","_itemMarkedAsCorrect","Recall","MultipleChoice","ImageMultipleChoice","FillInTheBlank","_skipItem","spelling","IKnowQuizSettingsPanel","_userSettings","sequenceOptions","quizMarkedAsCorrect","_onAppQuit","onAppQuit","_setupUserSettings","_siteConfiguration","siteConfiguration","_sessionStarted","_createSessionConfig","_updateGlobalSettings","_checkUnsentSaveData","ErrorHandling","Achievements","Premium","appKey","_getApplicationTypeKey","defaultSessionConfig","_getDefaultSessionConfig","_getDefaultQuizOptions","_abortActiveLoaders","studyLoader","_getStudyLoader","_addActiveLoader","loaderResponse","_unpackData","_fetchSessionBasedData","studyModeKey","_getStudyModeKey","_setupMouseoverDictionary","sessionSize","_getStudyParameters","includeMemories","supportedQuizTypes","sessionGoalSource","_persistSessionConfig","updatedMemory","memoryOwner","goalMemoryAggregates","showSummaryScreen","_showSummaryScreen","achievements","checkForcedAchievement","isSocialSharingEnabled","socialSharing","changes","postSettings","AudioPanel","KanaPanel","_savePresentationResults","_handlePresentationResultsUploaded","panel","_getSettingsPanels","onSave","_handleSettingsSave","_buildSessionData","_updateSessionConfig","_haltFetchData","_loadSessionAssets","storeLocally","forceFinishSequence","removeAll","_unbindEvents","setVolume","SpecialCharacters","TypingSound","ascendingBisect","number$1","constant","uniform","uniform$1","sturges","createObject","setObject","createMap","setMap","xz","tz","thresholdFreedmanDiaconis","thresholdScott","thresholdSturges","_sortValues","_rollup","_sortKeys","createResult","_entries","xj","BaseVisual","_handleEnterNodes","_setDefaultAttributes","_handleExitNodes","nodesContainer","_isNodeVisible","enteredGroupNodes","_hiddenCoords","Animation","_translate","entered","wasNew","isAtCheckpoint1","isAtCheckpoint2","isAtCheckpoint3","locked","new","ready","unstarted","Tooltip","_beforeShowOrUpdate","BaseLayout","layoutsContainer","_layoutContainer","ITEM_CLASSNAME","playAudio","ItemSummary","onComplete","eligibleItemPackages","groupBy","Row","emptyCells","isComplete","masterTitle","onCueClick","onMasterClick","SentenceTrainerSummaryMixin","_getSentenceTrainerResults","groupedByContentId","pr","resultGlyph","ChoicesSessionSize","Choice","Choices","ChoicesItemSource","ChoicesGoalSource","WelcomeSentenceTrainerMixin","_renderNavigation","_renderEmptyStudyNavigation","_renderSessionDetails","newCount","reviewCount","getSettings","getSiteConfiguration","AppLauncher","_isStudyAll","router","Director","_handleGoalRoute","_handleStudyAllRoute","SpecificContentApp","_loadApp","_loadAppData","_handleAppSelection","_onLoaderError","_loadAppSelection","AppSelectionScreen","onAppSelection","AppSelectionBanner","_handleAppQuit","RapidChoiceApp","SelfAssessmentApp","SentenceTrainerApp","_replaceState","newPath","APP_CHOICE_SELECTOR","ItemProgress","AppChoice","appName","glyphClass","glyphClassName","SentenceProgress","levelLabel","level","AppSelection","appChoices","applicationGroups","sentencesDisabled","isSentenceStudyEnabled","bannerMessage","getTabName","_getVolume","_handleContentClick","_handleEffectClick","_handleTypingSoundChange","_handleVolumeChange","Slider","slider","_updateValue","addClass","barStyle","ui","_renderColumn","SettingsModal","_getSelectedPanel","_handleTabClick","_handleDataChange","_renderTabs","_renderPanels","selectedPanel","Panel","headerMessage","IntervalCheckpoint1","ReadyToStudyCap","_svg","_visual","_visuals","difficulty","DifficultyVisual","ProgressVisual","visual","nextVisual","_setupSelection","MaxExpansionOffset","HexRadius","Padding","CheckpointAdjusters","ActivationAdjuster","HiddenClass","Progress","_layout","ProgressLayout","sections","readySection","notReadySection","notReady","checkpoint1Section","checkpoint1","checkpoint2Section","checkpoint2","sessionItemsCountSection","sessionItemsCount","_hexbin","hexbin","getScaledProgress","_sessionItemsCountCoords","_nodesAtPosition","handleMouseover","_handleMouseover","handleMouseout","_handleMouseout","_removeBadgeCount","lookupKey","inSessionNodesCount","_getSelection","Text","_setTooltips","_cleanup","_getVisible","_setNodePosition","_sort","getPositionKey","inSessionNewNodesCount","setSessionItemsCountLabel","topNode","isHovered","numberOfNodes","totalSpace","_moveToBack","nodeOffset","_expandNodeGroup","_collapseNodeGroup","hexbinCoordinates","_beforeTransition","_afterTransition","_moveHiddenNodes","nodeA","nodeB","moveSelection","untransitionedNodesCount","delayIncrement","easeInSine","easeOutSine","moveToX","moveToY","d3Array","hexbinAngles","hexbinX","hexbinY","binsById","pj","py1","px1","pi2","pj2","px2","py2","hexagon","centers","odd","mesh","studyDateRelative","relativeTime","JST","debugInformation","progressDifference","getProgressDifference","studyDate","studyTimeTranslation","Tipped","StealthMode","debugVars","current_retention","difficulty_bucket","easiness_modifier","interval_hours","last_study_time","see_next_at","review_interval","previous_retention","previous_interval","debugItems","DEBUG_ITEM_TEMPLATE","DEBUG_TEMPLATE","LABELS","class","SECTIONS","ForceMultiplier","DIFFICULTY_LOOKUP","Difficulty","DifficultyLayout","visibleSelection","sectionName","originY","originX","nx1","nx2","ny1","ny2","collide","OriginY","easy","moderate","hard","bannerContent","getAggregateData","getCurrentGoal","Panels","SessionPreview","SessionSummary","bannerOverlay","enableSessionSummary","hasMounted","memoryBankVisual","skippedItemIds","_getOverlayMessage","_canRenderItemSummary","_isCourseRecommendationNew","_handlePanelSwitch","memoryBankTransitionType","_handleSkipped","_renderOverlay","_renderPanelTab","data-modal-link","_renderReadyStatisticsTab","_renderMainStatisticsTab","_renderMemoryBankPanel","_renderItemPreviewPanel","_renderItemSummaryPanel","_renderCourseRecommendationNavigation","showButtonText","aggregateData","totalCount","allStarted","primary","_renderCheckpointNavigation","itemPreviewProps","onSkipped","_renderCourseCompletedNavigation","_renderNoItemsNavigation","_renderSkippedNavigation","_renderDefaultNavigation","_renderSessionConfiguration","_renderGoalSourceConfig","DropdownItemSource","DropdownSessionSize","DropdownGoalSource","handleOpen","_handleClose","handleClose","renderOption","getDisplayLabel","DropdownBase","renderOptions","getSelectedValue","actionMessage","_renderItemRow","rowNum","emptyItemSlot","_renderItem","isSkipped","itemClass","onSkipClick","_renderNewOrProgressBar","_renderTransliteration","_renderResponse","_insertSVG","showVisual","memoryBankLayer","getSVG","data-visual","payment","_handleQuizOptionsChange","quizOption","_handleShowTranscriptionChange","spellingAndAudioClassName","audioHandler","spellingHandler","RapidChoiceSequencer","quizDirection","RapidChoiceQuizDirectionPanel","timeoutsRemaining","onResume","SelfAssessmentSequencer","SelfAssessmentQuizDirectionPanel","getWordDistractors","SentenceTrainerSequencer","totalSteps","listeningFillInTheBlankPartial","listeningFillInTheBlank","listeningAssembly","translationAssembly","QuizTypesPanel","QuizSettingsPanel","SentenceTrainerHelpPanel","_redirectToIKnow","Dictation","DictationRecall","DictationQuiz","DictationConfirmation","_handleSummaryNext","SentenceTrainerSummary","WelcomeSentenceTrainerStudyAll","WelcomeSentenceTrainerCourse","SentenceTrainerQuizSettingsPanel","SentenceTrainerQuizTypesPanel","_getEnabledQuizOptionsCount","_renderQuizOptionToggle","isViewingSentenceBreakdown","_toggleScreenContent","_renderSentenceBreakdown","sentenceTrainerResults","_renderCourseDetails","totalTime","humanizedTime","onBack","_renderSentences","_renderSentence","_renderCourseImage","totalStudyTime","_renderCourseImages","components","SessionProgressSteps","_renderStep","_specificContent","SpecificContent","CueLanguage","ResponseLanguage","TargetGoal","Content","goalTitle","getTargetGoal","getCueLanguage","getResponseLanguage","getSpecificContent","gip","addToBucket","opener","onCompleted","ItemSummaryScreen","DEFAULT_PROPS"],"mappings":"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AQ,IAEnBnO,EAAOD,QAAUoO,G,gBCJjB,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KA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eACf,IAAK,KACH,OAAO,IAAApO,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,uBACX,IAAK,KACH,OAAO,IAAAA,GAAE,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Q,MAAQ,KAAQ,KAAQ,MAAQ,KAAQ,MAAQ,MAAQ,KAAQ,MAAQ,KAAQ,KAAQ,MAAQ,KAAQ,MAAQ,MAAQ,KAAQ,KAAQ,MAAQ,MAAQ,KAAQ,MAAQ,KAAQ,KAAQ,MAAQ,MAAQ,KAAQ,KAAQ,MAAQ,KAAQ,MAAQ,MAAQ,KAAQ,KAAQ,MAAQ,MAAQ,IAAQ,MAAQ,KAAQ,KAAQ,MAAQ,KAAQ,MAAQ,MAAQ,KAAQ,MAAQ,KAAQ,KAAQ,MAAQ,MAAQ,KAAQ,KAAQ,MAAQ,KAAQ,MAAQ,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,KAAQ,MAAQ,KAAQ,MAAQ,MAAQ,KAAQ,KAAQ,MAAQ,MAAQ,KAAQ,MAAQ,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAA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KAAQ,MAAQ,MAAQ,KAAQ,KAAQ,MAAQ,MAAQ,KAAQ,MAAQ,KAAQ,KAAQ,MAAQ,MAAQ,KAAQ,KAAQ,MAAQ,KAAQ,MAAQ,MAAQ,KAAQ,KAAQ,MAAQ,MAAQ,IAAQ,MAAQ,KAAQ,KAAQ,MAAQ,KAAQ,MAAQ,MAAQ,KAAQ,MAAQ,KAAQ,KAAQ,MAAQ,MAAQ,KAAQ,KAAQ,MAAQ,KAAQ,MAAQ,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,KAAQ,MAAQ,KAAQ,MAAQ,MAAQ,KAAQ,KAAQ,MAAQ,MAAQ,KAAQ,MAAQ,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAC3+D,qBAAfh4K,aAA4Bg4K,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","file":"js/bundle-apps-a9cdb8f95f03f137ec5f.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/_assets/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 954);\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\n\nmodule.exports = require('./lib/React');","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n /* global globalThis -- safe */\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n if (NATIVE_SYMBOL && has(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n }\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\n\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar isPrototypeOf = ObjectPrototype.isPrototypeOf;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQIRED = false;\nvar NAME;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n BigInt64Array: 8,\n BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return klass === 'DataView'\n || has(TypedArrayConstructorsList, klass)\n || has(BigIntArrayConstructorsList, klass);\n};\n\nvar isTypedArray = function (it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return has(TypedArrayConstructorsList, klass)\n || has(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (setPrototypeOf) {\n if (isPrototypeOf.call(TypedArray, C)) return C;\n } else for (var ARRAY in TypedArrayConstructorsList) if (has(TypedArrayConstructorsList, NAME)) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (C === TypedArrayConstructor || isPrototypeOf.call(TypedArrayConstructor, C))) {\n return C;\n }\n } throw TypeError('Target is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor.prototype, KEY)) {\n delete TypedArrayConstructor.prototype[KEY];\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n redefine(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property);\n }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor, KEY)) {\n delete TypedArrayConstructor[KEY];\n }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8Array[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n redefine(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n if (!global[NAME]) NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || typeof TypedArray != 'function' || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow -- safe\n TypedArray = function TypedArray() {\n throw TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !has(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQIRED = true;\n defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n } });\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n'use strict';\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n\n throw error;\n }\n}\n\nmodule.exports = invariant;","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n'use strict';\n\nvar emptyFunction = require('./emptyFunction');\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\n\nvar warning = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;","var hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","import Config from 'es6/core/config';\nimport Polyglot from 'node-polyglot';\n\nconst polyglot = new Polyglot({ phrases: Config.strings, locale: Config.locale });\n\nexport const extend = polyglot.extend.bind(polyglot);\n\nexport const locale = polyglot.locale.bind(polyglot);\n\nexport const t = polyglot.t.bind(polyglot);\n\nexport default polyglot;\n","var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterOut }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_OUT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_OUT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push.call(target, value); // filterOut\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterOut` method\n // https://github.com/tc39/proposal-array-filtering\n filterOut: createMethod(7)\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var state;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) {\n createNonEnumerableProperty(value, 'name', key);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n'use strict';\n/* eslint-disable no-unused-vars */\n\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n if (val === null || val === undefined) {\n throw new TypeError('Object.assign cannot be called with null or undefined');\n }\n\n return Object(val);\n}\n\nfunction shouldUseNative() {\n try {\n if (!Object.assign) {\n return false;\n } // Detect buggy property enumeration order in older V8 versions.\n // https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\n\n var test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\n test1[5] = 'de';\n\n if (Object.getOwnPropertyNames(test1)[0] === '5') {\n return false;\n } // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\n\n var test2 = {};\n\n for (var i = 0; i < 10; i++) {\n test2['_' + String.fromCharCode(i)] = i;\n }\n\n var order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n return test2[n];\n });\n\n if (order2.join('') !== '0123456789') {\n return false;\n } // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\n\n var test3 = {};\n 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n test3[letter] = letter;\n });\n\n if (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') {\n return false;\n }\n\n return true;\n } catch (err) {\n // We don't expect any of the above to throw, but better to be safe.\n return false;\n }\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n var from;\n var to = toObject(target);\n var symbols;\n\n for (var s = 1; s < arguments.length; s++) {\n from = Object(arguments[s]);\n\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n\n if (getOwnPropertySymbols) {\n symbols = getOwnPropertySymbols(from);\n\n for (var i = 0; i < symbols.length; i++) {\n if (propIsEnumerable.call(from, symbols[i])) {\n to[symbols[i]] = from[symbols[i]];\n }\n }\n }\n }\n\n return to;\n};","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n metadata.facade = it;\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var path = require('../internals/path');\nvar has = require('../internals/has');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction classNames() {\n var args = arguments;\n var classes = [];\n\n for (var i = 0; i < args.length; i++) {\n var arg = args[i];\n\n if (!arg) {\n continue;\n }\n\n if ('string' === typeof arg || 'number' === typeof arg) {\n classes.push(arg);\n } else if ('object' === _typeof(arg)) {\n for (var key in arg) {\n if (!arg.hasOwnProperty(key) || !arg[key]) {\n continue;\n }\n\n classes.push(key);\n }\n }\n }\n\n return classes.join(' ');\n} // safely export classNames in case the script is included directly on a page\n\n\nif (typeof module !== 'undefined' && module.exports) {\n module.exports = classNames;\n}","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar quot = /\"/g;\n\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\n// https://tc39.es/ecma262/#sec-createhtml\nmodule.exports = function (string, tag, attribute, value) {\n var S = String(requireObjectCoercible(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '"') + '\"';\n return p1 + '>' + S + '';\n};\n","var fails = require('../internals/fails');\n\n// check the existence of a method, lowercase\n// of a tag and escaping quotes in arguments\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n var test = ''[METHOD_NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n });\n};\n","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDOMComponentTree\n */\n'use strict';\n\nvar DOMProperty = require('./DOMProperty');\n\nvar ReactDOMComponentFlags = require('./ReactDOMComponentFlags');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;\nvar Flags = ReactDOMComponentFlags;\nvar internalInstanceKey = '__reactInternalInstance$' + Math.random().toString(36).slice(2);\n/**\n * Drill down (through composites and empty components) until we get a native or\n * native text component.\n *\n * This is pretty polymorphic but unavoidable with the current structure we have\n * for `_renderedChildren`.\n */\n\nfunction getRenderedNativeOrTextFromComponent(component) {\n var rendered;\n\n while (rendered = component._renderedComponent) {\n component = rendered;\n }\n\n return component;\n}\n/**\n * Populate `_nativeNode` on the rendered native/text component with the given\n * DOM node. The passed `inst` can be a composite.\n */\n\n\nfunction precacheNode(inst, node) {\n var nativeInst = getRenderedNativeOrTextFromComponent(inst);\n nativeInst._nativeNode = node;\n node[internalInstanceKey] = nativeInst;\n}\n\nfunction uncacheNode(inst) {\n var node = inst._nativeNode;\n\n if (node) {\n delete node[internalInstanceKey];\n inst._nativeNode = null;\n }\n}\n/**\n * Populate `_nativeNode` on each child of `inst`, assuming that the children\n * match up with the DOM (element) children of `node`.\n *\n * We cache entire levels at once to avoid an n^2 problem where we access the\n * children of a node sequentially and have to walk from the start to our target\n * node every time.\n *\n * Since we update `_renderedChildren` and the actual DOM at (slightly)\n * different times, we could race here and see a newer `_renderedChildren` than\n * the DOM nodes we see. To avoid this, ReactMultiChild calls\n * `prepareToManageChildren` before we change `_renderedChildren`, at which\n * time the container's child nodes are always cached (until it unmounts).\n */\n\n\nfunction precacheChildNodes(inst, node) {\n if (inst._flags & Flags.hasCachedChildNodes) {\n return;\n }\n\n var children = inst._renderedChildren;\n var childNode = node.firstChild;\n\n outer: for (var name in children) {\n if (!children.hasOwnProperty(name)) {\n continue;\n }\n\n var childInst = children[name];\n\n var childID = getRenderedNativeOrTextFromComponent(childInst)._domID;\n\n if (childID == null) {\n // We're currently unmounting this child in ReactMultiChild; skip it.\n continue;\n } // We assume the child nodes are in the same order as the child instances.\n\n\n for (; childNode !== null; childNode = childNode.nextSibling) {\n if (childNode.nodeType === 1 && childNode.getAttribute(ATTR_NAME) === String(childID) || childNode.nodeType === 8 && childNode.nodeValue === ' react-text: ' + childID + ' ' || childNode.nodeType === 8 && childNode.nodeValue === ' react-empty: ' + childID + ' ') {\n precacheNode(childInst, childNode);\n continue outer;\n }\n } // We reached the end of the DOM children without finding an ID match.\n\n\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Unable to find element with ID %s.', childID) : invariant(false) : void 0;\n }\n\n inst._flags |= Flags.hasCachedChildNodes;\n}\n/**\n * Given a DOM node, return the closest ReactDOMComponent or\n * ReactDOMTextComponent instance ancestor.\n */\n\n\nfunction getClosestInstanceFromNode(node) {\n if (node[internalInstanceKey]) {\n return node[internalInstanceKey];\n } // Walk up the tree until we find an ancestor whose instance we have cached.\n\n\n var parents = [];\n\n while (!node[internalInstanceKey]) {\n parents.push(node);\n\n if (node.parentNode) {\n node = node.parentNode;\n } else {\n // Top of the tree. This node must not be part of a React tree (or is\n // unmounted, potentially).\n return null;\n }\n }\n\n var closest;\n var inst;\n\n for (; node && (inst = node[internalInstanceKey]); node = parents.pop()) {\n closest = inst;\n\n if (parents.length) {\n precacheChildNodes(inst, node);\n }\n }\n\n return closest;\n}\n/**\n * Given a DOM node, return the ReactDOMComponent or ReactDOMTextComponent\n * instance, or null if the node was not rendered by this React.\n */\n\n\nfunction getInstanceFromNode(node) {\n var inst = getClosestInstanceFromNode(node);\n\n if (inst != null && inst._nativeNode === node) {\n return inst;\n } else {\n return null;\n }\n}\n/**\n * Given a ReactDOMComponent or ReactDOMTextComponent, return the corresponding\n * DOM node.\n */\n\n\nfunction getNodeFromInstance(inst) {\n // Without this first invariant, passing a non-DOM-component triggers the next\n // invariant for a missing parent, which is super confusing.\n !(inst._nativeNode !== undefined) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : invariant(false) : void 0;\n\n if (inst._nativeNode) {\n return inst._nativeNode;\n } // Walk up the tree until we find an ancestor whose DOM node we have cached.\n\n\n var parents = [];\n\n while (!inst._nativeNode) {\n parents.push(inst);\n !inst._nativeParent ? process.env.NODE_ENV !== 'production' ? invariant(false, 'React DOM tree root should always have a node reference.') : invariant(false) : void 0;\n inst = inst._nativeParent;\n } // Now parents contains each ancestor that does *not* have a cached native\n // node, and `inst` is the deepest ancestor that does.\n\n\n for (; parents.length; inst = parents.pop()) {\n precacheChildNodes(inst, inst._nativeNode);\n }\n\n return inst._nativeNode;\n}\n\nvar ReactDOMComponentTree = {\n getClosestInstanceFromNode: getClosestInstanceFromNode,\n getInstanceFromNode: getInstanceFromNode,\n getNodeFromInstance: getNodeFromInstance,\n precacheChildNodes: precacheChildNodes,\n precacheNode: precacheNode,\n uncacheNode: uncacheNode\n};\nmodule.exports = ReactDOMComponentTree;","module.exports = false;\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.es/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n'use strict';\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n/**\n * Simple, lightweight module assisting with the detection and context of\n * Worker. Helps avoid circular dependencies and allows code to reason about\n * whether or not they are in a Worker, even if they never include the main\n * `ReactWorker` dependency.\n */\n\nvar ExecutionEnvironment = {\n canUseDOM: canUseDOM,\n canUseWorkers: typeof Worker !== 'undefined',\n canUseEventListeners: canUseDOM && !!(window.addEventListener || window.attachEvent),\n canUseViewport: canUseDOM && !!window.screen,\n isInWorker: !canUseDOM // For now, this is true - might change in the future.\n\n};\nmodule.exports = ExecutionEnvironment;","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n /* global ActiveXObject -- old IE */\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","/* global App */\n\nimport { environment, oauthToken } from 'es6/services/window';\nimport cookies from 'es6/services/cookies';\nimport { setAPI as setMouseoverDictionaryAPI } from 'iknow-mouseover-dictionary/loader';\n\nsetMouseoverDictionaryAPI(\n '/api/sentence_dictionary',\n oauthToken() && { Authorization: `Bearer ${oauthToken()}` }\n);\n\nconst Config = {\n transcodingSettings: {\n smallImage: { width: 140, height: 140 },\n mediumImage: { width: 200, height: 200 },\n largeImage: { width: 260, height: 260 },\n appItemImage: { width: 350, height: 350 },\n appSentenceImage: { width: 360, height: 330 },\n },\n\n isDevelopment: false,\n isTesting: false,\n\n logLevel: 'error',\n\n langSettings: {\n kanaMode: false,\n romajiMode: false,\n },\n\n oauthToken: null,\n\n showTranscriptions: false,\n\n user: {\n admin: false,\n isPremium: false,\n justRegistered: false,\n username: null,\n groupRestrictions: {\n canResetItemProgress: false,\n },\n },\n\n isLoggedIn() {\n return !!this.oauthToken;\n },\n\n /**\n * Checks the global namespace for variables passed in by\n * Rails templates.\n */\n refreshSettings() {\n // Update the user and API settings.\n if (typeof App === 'object' && App !== null) {\n const { Environment } = App;\n\n if (Environment) {\n const {\n API,\n isDevelopment,\n isTesting,\n User,\n } = Environment;\n\n this.isDevelopment = isDevelopment;\n this.isTesting = isTesting;\n\n if (API) {\n this.oauthToken = API.token;\n }\n\n if (User) {\n Object.assign(this.user, User);\n }\n }\n }\n },\n\n /**\n * Updates global config based on user settings.\n *\n * @param {UserSettings} userSettings\n * @param {Object} options\n * @param {Boolean} options.setKana will update kana settings if set to true\n */\n updateSettings(userSettings, { setKana = false }) {\n const romajiMode = setKana && userSettings.isRomajiMode();\n const kanaMode = setKana && userSettings.isKanaMode();\n\n this.langSettings = { kanaMode, romajiMode };\n this.showTranscriptions = userSettings.apps.showTranscription;\n },\n\n getAssetHost: () => environment().assetHost || '',\n getAssetPath: () => environment().assetPath || '',\n getAssetCdns: () => environment().assetCdns || 1,\n\n getTranscoderHost: () => environment().transcoderHost || '',\n getTranscoderCdns: () => environment().transcoderCdns || 4,\n\n getReferrerURL: () => cookies.get('app_referer') || '/home',\n};\n\nObject.defineProperty(Config, 'locale', {\n get: () => document.documentElement.lang || 'en',\n set: () => {},\n});\n\nObject.defineProperty(Config, 'strings', {\n get: () => {\n try {\n const content = document.querySelector('#iknow-strings').content;\n return JSON.parse(content);\n } catch (e) {\n return {};\n }\n },\n set: () => {},\n});\n\nConfig.refreshSettings();\n\nexport default Config;\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","var anObject = require('../internals/an-object');\nvar aFunction = require('../internals/a-function');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anInstance = require('../internals/an-instance');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar toOffset = require('../internals/to-offset');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar typedArrayFrom = require('../internals/typed-array-from');\nvar forEach = require('../internals/array-iteration').forEach;\nvar setSpecies = require('../internals/set-species');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar InternalStateModule = require('../internals/internal-state');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar round = Math.round;\nvar RangeError = global.RangeError;\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\nvar TypedArray = ArrayBufferViewCore.TypedArray;\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\nvar WRONG_LENGTH = 'Wrong length';\n\nvar fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n\nvar addGetter = function (it, key) {\n nativeDefineProperty(it, key, { get: function () {\n return getInternalState(this)[key];\n } });\n};\n\nvar isArrayBuffer = function (it) {\n var klass;\n return it instanceof ArrayBuffer || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';\n};\n\nvar isTypedArrayIndex = function (target, key) {\n return isTypedArray(target)\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n return isTypedArrayIndex(target, key = toPrimitive(key, true))\n ? createPropertyDescriptor(2, target[key])\n : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n if (isTypedArrayIndex(target, key = toPrimitive(key, true))\n && isObject(descriptor)\n && has(descriptor, 'value')\n && !has(descriptor, 'get')\n && !has(descriptor, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !descriptor.configurable\n && (!has(descriptor, 'writable') || descriptor.writable)\n && (!has(descriptor, 'enumerable') || descriptor.enumerable)\n ) {\n target[key] = descriptor.value;\n return target;\n } return nativeDefineProperty(target, key, descriptor);\n};\n\nif (DESCRIPTORS) {\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n definePropertyModule.f = wrappedDefineProperty;\n addGetter(TypedArrayPrototype, 'buffer');\n addGetter(TypedArrayPrototype, 'byteOffset');\n addGetter(TypedArrayPrototype, 'byteLength');\n addGetter(TypedArrayPrototype, 'length');\n }\n\n $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n defineProperty: wrappedDefineProperty\n });\n\n module.exports = function (TYPE, wrapper, CLAMPED) {\n var BYTES = TYPE.match(/\\d+$/)[0] / 8;\n var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + TYPE;\n var SETTER = 'set' + TYPE;\n var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];\n var TypedArrayConstructor = NativeTypedArrayConstructor;\n var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n var exported = {};\n\n var getter = function (that, index) {\n var data = getInternalState(that);\n return data.view[GETTER](index * BYTES + data.byteOffset, true);\n };\n\n var setter = function (that, index, value) {\n var data = getInternalState(that);\n if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n data.view[SETTER](index * BYTES + data.byteOffset, value, true);\n };\n\n var addElement = function (that, index) {\n nativeDefineProperty(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n anInstance(that, TypedArrayConstructor, CONSTRUCTOR_NAME);\n var index = 0;\n var byteOffset = 0;\n var buffer, byteLength, length;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new ArrayBuffer(byteLength);\n } else if (isArrayBuffer(data)) {\n buffer = data;\n byteOffset = toOffset(offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - byteOffset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (isTypedArray(data)) {\n return fromList(TypedArrayConstructor, data);\n } else {\n return typedArrayFrom.call(TypedArrayConstructor, data);\n }\n setInternalState(that, {\n buffer: buffer,\n byteOffset: byteOffset,\n byteLength: byteLength,\n length: length,\n view: new DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n anInstance(dummy, TypedArrayConstructor, CONSTRUCTOR_NAME);\n return inheritIfRequired(function () {\n if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n if (isArrayBuffer(data)) return $length !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n : typedArrayOffset !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n : new NativeTypedArrayConstructor(data);\n if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\n return typedArrayFrom.call(TypedArrayConstructor, data);\n }(), dummy, TypedArrayConstructor);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n if (!(key in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n }\n });\n TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n }\n\n if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n }\n\n if (TYPED_ARRAY_TAG) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n }\n\n exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n $({\n global: true, forced: TypedArrayConstructor != NativeTypedArrayConstructor, sham: !NATIVE_ARRAY_BUFFER_VIEWS\n }, exported);\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n }\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n }\n\n setSpecies(CONSTRUCTOR_NAME);\n };\n} else module.exports = function () { /* empty */ };\n","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactPerf\n */\n'use strict';\n/**\n * ReactPerf is a general AOP system designed to measure performance. This\n * module only has the hooks: see ReactDefaultPerf for the analysis tool.\n */\n\nvar ReactPerf = {\n /**\n * Boolean to enable/disable measurement. Set to false by default to prevent\n * accidental logging and perf loss.\n */\n enableMeasure: false,\n\n /**\n * Holds onto the measure function in use. By default, don't measure\n * anything, but we'll override this if we inject a measure function.\n */\n storedMeasure: _noMeasure,\n\n /**\n * @param {object} object\n * @param {string} objectName\n * @param {object} methodNames\n */\n measureMethods: function measureMethods(object, objectName, methodNames) {\n if (process.env.NODE_ENV !== 'production') {\n for (var key in methodNames) {\n if (!methodNames.hasOwnProperty(key)) {\n continue;\n }\n\n object[key] = ReactPerf.measure(objectName, methodNames[key], object[key]);\n }\n }\n },\n\n /**\n * Use this to wrap methods you want to measure. Zero overhead in production.\n *\n * @param {string} objName\n * @param {string} fnName\n * @param {function} func\n * @return {function}\n */\n measure: function measure(objName, fnName, func) {\n if (process.env.NODE_ENV !== 'production') {\n var measuredFunc = null;\n\n var wrapper = function wrapper() {\n if (ReactPerf.enableMeasure) {\n if (!measuredFunc) {\n measuredFunc = ReactPerf.storedMeasure(objName, fnName, func);\n }\n\n return measuredFunc.apply(this, arguments);\n }\n\n return func.apply(this, arguments);\n };\n\n wrapper.displayName = objName + '_' + fnName;\n return wrapper;\n }\n\n return func;\n },\n injection: {\n /**\n * @param {function} measure\n */\n injectMeasure: function injectMeasure(measure) {\n ReactPerf.storedMeasure = measure;\n }\n }\n};\n/**\n * Simply passes through the measured function, without measuring it.\n *\n * @param {string} objName\n * @param {string} fnName\n * @param {function} func\n * @return {function}\n */\n\nfunction _noMeasure(objName, fnName, func) {\n return func;\n}\n\nmodule.exports = ReactPerf;","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","/* eslint-disable no-proto -- safe */\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that, 1 + AS_ENTRIES + INTERRUPTED);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && result instanceof Result) return result;\n } return new Result(false);\n }\n iterator = iterFn.call(iterable);\n }\n\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator);\n throw error;\n }\n if (typeof result == 'object' && result && result instanceof Result) return result;\n } return new Result(false);\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactElement\n */\n'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar _assign = require('object-assign');\n\nvar ReactCurrentOwner = require('./ReactCurrentOwner');\n\nvar warning = require('fbjs/lib/warning');\n\nvar canDefineProperty = require('./canDefineProperty'); // The Symbol used to tag the ReactElement type. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\n\n\nvar REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\nvar specialPropKeyWarningShown, specialPropRefWarningShown;\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, no instanceof check\n * will work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} key\n * @param {string|object} ref\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @param {*} owner\n * @param {*} props\n * @internal\n */\n\nvar ReactElement = function ReactElement(type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allow us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n if (process.env.NODE_ENV !== 'production') {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n\n if (canDefineProperty) {\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n }); // self and source are DEV only properties.\n\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n }); // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n } else {\n element._store.validated = false;\n element._self = self;\n element._source = source;\n }\n\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n\nReactElement.createElement = function (type, config, children) {\n var propName; // Reserved names are extracted\n\n var props = {};\n var key = null;\n var ref = null;\n var self = null;\n var source = null;\n\n if (config != null) {\n if (process.env.NODE_ENV !== 'production') {\n ref = !config.hasOwnProperty('ref') || Object.getOwnPropertyDescriptor(config, 'ref').get ? null : config.ref;\n key = !config.hasOwnProperty('key') || Object.getOwnPropertyDescriptor(config, 'key').get ? null : '' + config.key;\n } else {\n ref = config.ref === undefined ? null : config.ref;\n key = config.key === undefined ? null : '' + config.key;\n }\n\n self = config.__self === undefined ? null : config.__self;\n source = config.__source === undefined ? null : config.__source; // Remaining properties are added to a new props object\n\n for (propName in config) {\n if (config.hasOwnProperty(propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n } // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n\n\n var childrenLength = arguments.length - 2;\n\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n\n props.children = childArray;\n } // Resolve default props\n\n\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // Create dummy `key` and `ref` property to `props` to warn users\n // against its use\n if (typeof props.$$typeof === 'undefined' || props.$$typeof !== REACT_ELEMENT_TYPE) {\n if (!props.hasOwnProperty('key')) {\n Object.defineProperty(props, 'key', {\n get: function get() {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', typeof type === 'function' && 'displayName' in type ? type.displayName : 'Element') : void 0;\n }\n\n return undefined;\n },\n configurable: true\n });\n }\n\n if (!props.hasOwnProperty('ref')) {\n Object.defineProperty(props, 'ref', {\n get: function get() {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', typeof type === 'function' && 'displayName' in type ? type.displayName : 'Element') : void 0;\n }\n\n return undefined;\n },\n configurable: true\n });\n }\n }\n }\n\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n};\n\nReactElement.createFactory = function (type) {\n var factory = ReactElement.createElement.bind(null, type); // Expose the type on the factory and the prototype so that it can be\n // easily accessed on elements. E.g. `.type === Foo`.\n // This should not be named `constructor` since this may not be the function\n // that created the element, and it may not even be a constructor.\n // Legacy hook TODO: Warn if this is accessed\n\n factory.type = type;\n return factory;\n};\n\nReactElement.cloneAndReplaceKey = function (oldElement, newKey) {\n var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\n return newElement;\n};\n\nReactElement.cloneElement = function (element, config, children) {\n var propName; // Original props are copied\n\n var props = _assign({}, element.props); // Reserved names are extracted\n\n\n var key = element.key;\n var ref = element.ref; // Self is preserved since the owner is preserved.\n\n var self = element._self; // Source is preserved since cloneElement is unlikely to be targeted by a\n // transpiler, and the original source is probably a better indicator of the\n // true owner.\n\n var source = element._source; // Owner will be preserved, unless ref is overridden\n\n var owner = element._owner;\n\n if (config != null) {\n if (config.ref !== undefined) {\n // Silently steal the ref from the parent.\n ref = config.ref;\n owner = ReactCurrentOwner.current;\n }\n\n if (config.key !== undefined) {\n key = '' + config.key;\n } // Remaining properties override existing props\n\n\n var defaultProps;\n\n if (element.type && element.type.defaultProps) {\n defaultProps = element.type.defaultProps;\n }\n\n for (propName in config) {\n if (config.hasOwnProperty(propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n if (config[propName] === undefined && defaultProps !== undefined) {\n // Resolve default props\n props[propName] = defaultProps[propName];\n } else {\n props[propName] = config[propName];\n }\n }\n }\n } // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n\n\n var childrenLength = arguments.length - 2;\n\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n\n props.children = childArray;\n }\n\n return ReactElement(element.type, key, ref, self, source, owner, props);\n};\n/**\n * @param {?object} object\n * @return {boolean} True if `object` is a valid component.\n * @final\n */\n\n\nReactElement.isValidElement = function (object) {\n return _typeof(object) === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n};\n\nmodule.exports = ReactElement;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nvar _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i['return']) _i['return']();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError('Invalid attempt to destructure non-iterable instance');\n }\n };\n}();\n\nvar _util = require('./util');\n\nvar _inject = require('./inject');\n\nvar StyleSheet = {\n create: function create(sheetDefinition) {\n return (0, _util.mapObj)(sheetDefinition, function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2);\n\n var key = _ref2[0];\n var val = _ref2[1];\n return [key, {\n // TODO(emily): Make a 'production' mode which doesn't prepend\n // the class name here, to make the generated CSS smaller.\n _name: key + '_' + (0, _util.hashObject)(val),\n _definition: val\n }];\n });\n },\n rehydrate: function rehydrate() {\n var renderedClassNames = arguments.length <= 0 || arguments[0] === undefined ? [] : arguments[0];\n (0, _inject.addRenderedClassNames)(renderedClassNames);\n }\n};\n/**\n * Utilities for using Aphrodite server-side.\n */\n\nvar StyleSheetServer = {\n renderStatic: function renderStatic(renderFunc) {\n (0, _inject.reset)();\n (0, _inject.startBuffering)();\n var html = renderFunc();\n var cssContent = (0, _inject.flushToString)();\n return {\n html: html,\n css: {\n content: cssContent,\n renderedClassNames: (0, _inject.getRenderedClassNames)()\n }\n };\n }\n};\n/**\n * Utilities for using Aphrodite in tests.\n *\n * Not meant to be used in production.\n */\n\nvar StyleSheetTestUtils = {\n /**\n * Prevent styles from being injected into the DOM.\n *\n * This is useful in situations where you'd like to test rendering UI\n * components which use Aphrodite without any of the side-effects of\n * Aphrodite happening. Particularly useful for testing the output of\n * components when you have no DOM, e.g. testing in Node without a fake DOM.\n *\n * Should be paired with a subsequent call to\n * clearBufferAndResumeStyleInjection.\n */\n suppressStyleInjection: function suppressStyleInjection() {\n (0, _inject.reset)();\n (0, _inject.startBuffering)();\n },\n\n /**\n * Opposite method of preventStyleInject.\n */\n clearBufferAndResumeStyleInjection: function clearBufferAndResumeStyleInjection() {\n (0, _inject.reset)();\n }\n};\n\nvar css = function css() {\n for (var _len = arguments.length, styleDefinitions = Array(_len), _key = 0; _key < _len; _key++) {\n styleDefinitions[_key] = arguments[_key];\n }\n\n var useImportant = true; // Append !important to all style definitions\n\n return (0, _inject.injectAndGetClassName)(useImportant, styleDefinitions);\n};\n\nexports['default'] = {\n StyleSheet: StyleSheet,\n StyleSheetServer: StyleSheetServer,\n StyleSheetTestUtils: StyleSheetTestUtils,\n css: css\n};\nmodule.exports = exports['default'];","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar g; // This works in non-strict mode\n\ng = function () {\n return this;\n}();\n\ntry {\n // This works if eval is allowed (see CSP)\n g = g || new Function(\"return this\")();\n} catch (e) {\n // This works if the window reference is available\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\") g = window;\n} // g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\n\nmodule.exports = g;","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","var hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar defineProperty = require('../internals/object-define-property').f;\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar METADATA = uid('meta');\nvar id = 0;\n\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\n\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, { value: {\n objectID: 'O' + ++id, // object ID\n weakData: {} // weak collections IDs\n } });\n};\n\nvar fastKey = function (it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMetadata(it);\n // return object ID\n } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMetadata(it);\n // return the store of weak collections IDs\n } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZING && meta.REQUIRED && isExtensible(it) && !has(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar meta = module.exports = {\n REQUIRED: false,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactUpdates\n */\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar CallbackQueue = require('./CallbackQueue');\n\nvar PooledClass = require('./PooledClass');\n\nvar ReactFeatureFlags = require('./ReactFeatureFlags');\n\nvar ReactPerf = require('./ReactPerf');\n\nvar ReactReconciler = require('./ReactReconciler');\n\nvar Transaction = require('./Transaction');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar dirtyComponents = [];\nvar asapCallbackQueue = CallbackQueue.getPooled();\nvar asapEnqueued = false;\nvar batchingStrategy = null;\n\nfunction ensureInjected() {\n !(ReactUpdates.ReactReconcileTransaction && batchingStrategy) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must inject a reconcile transaction class and batching ' + 'strategy') : invariant(false) : void 0;\n}\n\nvar NESTED_UPDATES = {\n initialize: function initialize() {\n this.dirtyComponentsLength = dirtyComponents.length;\n },\n close: function close() {\n if (this.dirtyComponentsLength !== dirtyComponents.length) {\n // Additional updates were enqueued by componentDidUpdate handlers or\n // similar; before our own UPDATE_QUEUEING wrapper closes, we want to run\n // these new updates so that if A's componentDidUpdate calls setState on\n // B, B will update before the callback A's updater provided when calling\n // setState.\n dirtyComponents.splice(0, this.dirtyComponentsLength);\n flushBatchedUpdates();\n } else {\n dirtyComponents.length = 0;\n }\n }\n};\nvar UPDATE_QUEUEING = {\n initialize: function initialize() {\n this.callbackQueue.reset();\n },\n close: function close() {\n this.callbackQueue.notifyAll();\n }\n};\nvar TRANSACTION_WRAPPERS = [NESTED_UPDATES, UPDATE_QUEUEING];\n\nfunction ReactUpdatesFlushTransaction() {\n this.reinitializeTransaction();\n this.dirtyComponentsLength = null;\n this.callbackQueue = CallbackQueue.getPooled();\n this.reconcileTransaction = ReactUpdates.ReactReconcileTransaction.getPooled(\n /* useCreateElement */\n true);\n}\n\n_assign(ReactUpdatesFlushTransaction.prototype, Transaction.Mixin, {\n getTransactionWrappers: function getTransactionWrappers() {\n return TRANSACTION_WRAPPERS;\n },\n destructor: function destructor() {\n this.dirtyComponentsLength = null;\n CallbackQueue.release(this.callbackQueue);\n this.callbackQueue = null;\n ReactUpdates.ReactReconcileTransaction.release(this.reconcileTransaction);\n this.reconcileTransaction = null;\n },\n perform: function perform(method, scope, a) {\n // Essentially calls `this.reconcileTransaction.perform(method, scope, a)`\n // with this transaction's wrappers around it.\n return Transaction.Mixin.perform.call(this, this.reconcileTransaction.perform, this.reconcileTransaction, method, scope, a);\n }\n});\n\nPooledClass.addPoolingTo(ReactUpdatesFlushTransaction);\n\nfunction batchedUpdates(callback, a, b, c, d, e) {\n ensureInjected();\n batchingStrategy.batchedUpdates(callback, a, b, c, d, e);\n}\n/**\n * Array comparator for ReactComponents by mount ordering.\n *\n * @param {ReactComponent} c1 first component you're comparing\n * @param {ReactComponent} c2 second component you're comparing\n * @return {number} Return value usable by Array.prototype.sort().\n */\n\n\nfunction mountOrderComparator(c1, c2) {\n return c1._mountOrder - c2._mountOrder;\n}\n\nfunction runBatchedUpdates(transaction) {\n var len = transaction.dirtyComponentsLength;\n !(len === dirtyComponents.length) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected flush transaction\\'s stored dirty-components length (%s) to ' + 'match dirty-components array length (%s).', len, dirtyComponents.length) : invariant(false) : void 0; // Since reconciling a component higher in the owner hierarchy usually (not\n // always -- see shouldComponentUpdate()) will reconcile children, reconcile\n // them before their children by sorting the array.\n\n dirtyComponents.sort(mountOrderComparator);\n\n for (var i = 0; i < len; i++) {\n // If a component is unmounted before pending changes apply, it will still\n // be here, but we assume that it has cleared its _pendingCallbacks and\n // that performUpdateIfNecessary is a noop.\n var component = dirtyComponents[i]; // If performUpdateIfNecessary happens to enqueue any new updates, we\n // shouldn't execute the callbacks until the next render happens, so\n // stash the callbacks first\n\n var callbacks = component._pendingCallbacks;\n component._pendingCallbacks = null;\n var markerName;\n\n if (ReactFeatureFlags.logTopLevelRenders) {\n var namedComponent = component; // Duck type TopLevelWrapper. This is probably always true.\n\n if (component._currentElement.props === component._renderedComponent._currentElement) {\n namedComponent = component._renderedComponent;\n }\n\n markerName = 'React update: ' + namedComponent.getName();\n console.time(markerName);\n }\n\n ReactReconciler.performUpdateIfNecessary(component, transaction.reconcileTransaction);\n\n if (markerName) {\n console.timeEnd(markerName);\n }\n\n if (callbacks) {\n for (var j = 0; j < callbacks.length; j++) {\n transaction.callbackQueue.enqueue(callbacks[j], component.getPublicInstance());\n }\n }\n }\n}\n\nvar flushBatchedUpdates = function flushBatchedUpdates() {\n // ReactUpdatesFlushTransaction's wrappers will clear the dirtyComponents\n // array and perform any updates enqueued by mount-ready handlers (i.e.,\n // componentDidUpdate) but we need to check here too in order to catch\n // updates enqueued by setState callbacks and asap calls.\n while (dirtyComponents.length || asapEnqueued) {\n if (dirtyComponents.length) {\n var transaction = ReactUpdatesFlushTransaction.getPooled();\n transaction.perform(runBatchedUpdates, null, transaction);\n ReactUpdatesFlushTransaction.release(transaction);\n }\n\n if (asapEnqueued) {\n asapEnqueued = false;\n var queue = asapCallbackQueue;\n asapCallbackQueue = CallbackQueue.getPooled();\n queue.notifyAll();\n CallbackQueue.release(queue);\n }\n }\n};\n\nflushBatchedUpdates = ReactPerf.measure('ReactUpdates', 'flushBatchedUpdates', flushBatchedUpdates);\n/**\n * Mark a component as needing a rerender, adding an optional callback to a\n * list of functions which will be executed once the rerender occurs.\n */\n\nfunction enqueueUpdate(component) {\n ensureInjected(); // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case. (This is called by each top-level update\n // function, like setProps, setState, forceUpdate, etc.; creation and\n // destruction of top-level components is guarded in ReactMount.)\n\n if (!batchingStrategy.isBatchingUpdates) {\n batchingStrategy.batchedUpdates(enqueueUpdate, component);\n return;\n }\n\n dirtyComponents.push(component);\n}\n/**\n * Enqueue a callback to be run at the end of the current batching cycle. Throws\n * if no updates are currently being performed.\n */\n\n\nfunction asap(callback, context) {\n !batchingStrategy.isBatchingUpdates ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates.asap: Can\\'t enqueue an asap callback in a context where' + 'updates are not being batched.') : invariant(false) : void 0;\n asapCallbackQueue.enqueue(callback, context);\n asapEnqueued = true;\n}\n\nvar ReactUpdatesInjection = {\n injectReconcileTransaction: function injectReconcileTransaction(ReconcileTransaction) {\n !ReconcileTransaction ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a reconcile transaction class') : invariant(false) : void 0;\n ReactUpdates.ReactReconcileTransaction = ReconcileTransaction;\n },\n injectBatchingStrategy: function injectBatchingStrategy(_batchingStrategy) {\n !_batchingStrategy ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a batching strategy') : invariant(false) : void 0;\n !(typeof _batchingStrategy.batchedUpdates === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a batchedUpdates() function') : invariant(false) : void 0;\n !(typeof _batchingStrategy.isBatchingUpdates === 'boolean') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide an isBatchingUpdates boolean attribute') : invariant(false) : void 0;\n batchingStrategy = _batchingStrategy;\n }\n};\nvar ReactUpdates = {\n /**\n * React references `ReactReconcileTransaction` using this property in order\n * to allow dependency injection.\n *\n * @internal\n */\n ReactReconcileTransaction: null,\n batchedUpdates: batchedUpdates,\n enqueueUpdate: enqueueUpdate,\n flushBatchedUpdates: flushBatchedUpdates,\n injection: ReactUpdatesInjection,\n asap: asap\n};\nmodule.exports = ReactUpdates;","export const Keys = Object.freeze({\n ENTER: 13,\n SPACE: 32,\n TAB: 9,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n BACKSPACE: 8,\n BACKSLASH: 220,\n DELETE: 46,\n ESC: 27,\n PERIOD: 190,\n COMMA: 188,\n APOSTROPHE: 222,\n HYPHEN: 45,\n PGUP: 33,\n PGDOWN: 34,\n S: 83,\n H: 72,\n J: 74,\n K: 75,\n L: 76,\n I: 73,\n R: 82,\n C: 67,\n N: 78,\n 0: 48,\n 1: 49,\n 2: 50,\n 3: 51,\n 4: 52,\n 5: 53,\n 6: 54,\n 7: 55,\n 8: 56,\n 9: 57,\n NUM_0: 96,\n NUM_1: 97,\n NUM_2: 98,\n NUM_3: 99,\n NUM_4: 100,\n NUM_5: 101,\n NUM_6: 102,\n NUM_7: 103,\n NUM_8: 104,\n NUM_9: 105,\n});\n\n// Helper functions to more easily support VIM keys.\nconst isLeft = keyCode => keyCode === Keys.LEFT || keyCode === Keys.H;\nconst isRight = keyCode => keyCode === Keys.RIGHT || keyCode === Keys.L;\nconst isUp = keyCode => keyCode === Keys.UP || keyCode === Keys.K;\nconst isDown = keyCode => keyCode === Keys.DOWN || keyCode === Keys.J;\nconst isDirectional = keyCode => isLeft(keyCode) || isRight(keyCode) || isUp(keyCode) || isDown(keyCode);\n\nexport const KeyHelpers = { isLeft, isRight, isUp, isDown, isDirectional };\n\nexport default Keys;\n","\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\n\n\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\n\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\n\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule EventConstants\n */\n'use strict';\n\nvar keyMirror = require('fbjs/lib/keyMirror');\n\nvar PropagationPhases = keyMirror({\n bubbled: null,\n captured: null\n});\n/**\n * Types of raw signals from the browser caught at the top level.\n */\n\nvar topLevelTypes = keyMirror({\n topAbort: null,\n topAnimationEnd: null,\n topAnimationIteration: null,\n topAnimationStart: null,\n topBlur: null,\n topCanPlay: null,\n topCanPlayThrough: null,\n topChange: null,\n topClick: null,\n topCompositionEnd: null,\n topCompositionStart: null,\n topCompositionUpdate: null,\n topContextMenu: null,\n topCopy: null,\n topCut: null,\n topDoubleClick: null,\n topDrag: null,\n topDragEnd: null,\n topDragEnter: null,\n topDragExit: null,\n topDragLeave: null,\n topDragOver: null,\n topDragStart: null,\n topDrop: null,\n topDurationChange: null,\n topEmptied: null,\n topEncrypted: null,\n topEnded: null,\n topError: null,\n topFocus: null,\n topInput: null,\n topInvalid: null,\n topKeyDown: null,\n topKeyPress: null,\n topKeyUp: null,\n topLoad: null,\n topLoadedData: null,\n topLoadedMetadata: null,\n topLoadStart: null,\n topMouseDown: null,\n topMouseMove: null,\n topMouseOut: null,\n topMouseOver: null,\n topMouseUp: null,\n topPaste: null,\n topPause: null,\n topPlay: null,\n topPlaying: null,\n topProgress: null,\n topRateChange: null,\n topReset: null,\n topScroll: null,\n topSeeked: null,\n topSeeking: null,\n topSelectionChange: null,\n topStalled: null,\n topSubmit: null,\n topSuspend: null,\n topTextInput: null,\n topTimeUpdate: null,\n topTouchCancel: null,\n topTouchEnd: null,\n topTouchMove: null,\n topTouchStart: null,\n topTransitionEnd: null,\n topVolumeChange: null,\n topWaiting: null,\n topWheel: null\n});\nvar EventConstants = {\n topLevelTypes: topLevelTypes,\n PropagationPhases: PropagationPhases\n};\nmodule.exports = EventConstants;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SyntheticEvent\n */\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar PooledClass = require('./PooledClass');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\n\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnForAddedNewProperty = false;\nvar isProxySupported = typeof Proxy === 'function';\nvar shouldBeReleasedProperties = ['dispatchConfig', '_targetInst', 'nativeEvent', 'isDefaultPrevented', 'isPropagationStopped', '_dispatchListeners', '_dispatchInstances'];\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\n\nvar EventInterface = {\n type: null,\n target: null,\n // currentTarget is set when dispatching; no use in copying it here\n currentTarget: emptyFunction.thatReturnsNull,\n eventPhase: null,\n bubbles: null,\n cancelable: null,\n timeStamp: function timeStamp(event) {\n return event.timeStamp || Date.now();\n },\n defaultPrevented: null,\n isTrusted: null\n};\n/**\n * Synthetic events are dispatched by event plugins, typically in response to a\n * top-level event delegation handler.\n *\n * These systems should generally use pooling to reduce the frequency of garbage\n * collection. The system should check `isPersistent` to determine whether the\n * event should be released into the pool after being dispatched. Users that\n * need a persisted event should invoke `persist`.\n *\n * Synthetic events (and subclasses) implement the DOM Level 3 Events API by\n * normalizing browser quirks. Subclasses do not necessarily have to implement a\n * DOM interface; custom application-specific events can also subclass this.\n *\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {*} targetInst Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @param {DOMEventTarget} nativeEventTarget Target node.\n */\n\nfunction SyntheticEvent(dispatchConfig, targetInst, nativeEvent, nativeEventTarget) {\n if (process.env.NODE_ENV !== 'production') {\n // these have a getter/setter for warnings\n delete this.nativeEvent;\n delete this.preventDefault;\n delete this.stopPropagation;\n }\n\n this.dispatchConfig = dispatchConfig;\n this._targetInst = targetInst;\n this.nativeEvent = nativeEvent;\n var Interface = this.constructor.Interface;\n\n for (var propName in Interface) {\n if (!Interface.hasOwnProperty(propName)) {\n continue;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n delete this[propName]; // this has a getter/setter for warnings\n }\n\n var normalize = Interface[propName];\n\n if (normalize) {\n this[propName] = normalize(nativeEvent);\n } else {\n if (propName === 'target') {\n this.target = nativeEventTarget;\n } else {\n this[propName] = nativeEvent[propName];\n }\n }\n }\n\n var defaultPrevented = nativeEvent.defaultPrevented != null ? nativeEvent.defaultPrevented : nativeEvent.returnValue === false;\n\n if (defaultPrevented) {\n this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n } else {\n this.isDefaultPrevented = emptyFunction.thatReturnsFalse;\n }\n\n this.isPropagationStopped = emptyFunction.thatReturnsFalse;\n return this;\n}\n\n_assign(SyntheticEvent.prototype, {\n preventDefault: function preventDefault() {\n this.defaultPrevented = true;\n var event = this.nativeEvent;\n\n if (!event) {\n return;\n }\n\n if (event.preventDefault) {\n event.preventDefault();\n } else {\n event.returnValue = false;\n }\n\n this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n },\n stopPropagation: function stopPropagation() {\n var event = this.nativeEvent;\n\n if (!event) {\n return;\n }\n\n if (event.stopPropagation) {\n event.stopPropagation();\n } else {\n event.cancelBubble = true;\n }\n\n this.isPropagationStopped = emptyFunction.thatReturnsTrue;\n },\n\n /**\n * We release all dispatched `SyntheticEvent`s after each event loop, adding\n * them back into the pool. This allows a way to hold onto a reference that\n * won't be added back into the pool.\n */\n persist: function persist() {\n this.isPersistent = emptyFunction.thatReturnsTrue;\n },\n\n /**\n * Checks if this event should be released back into the pool.\n *\n * @return {boolean} True if this should not be released, false otherwise.\n */\n isPersistent: emptyFunction.thatReturnsFalse,\n\n /**\n * `PooledClass` looks for `destructor` on each instance it releases.\n */\n destructor: function destructor() {\n var Interface = this.constructor.Interface;\n\n for (var propName in Interface) {\n if (process.env.NODE_ENV !== 'production') {\n Object.defineProperty(this, propName, getPooledWarningPropertyDefinition(propName, Interface[propName]));\n } else {\n this[propName] = null;\n }\n }\n\n for (var i = 0; i < shouldBeReleasedProperties.length; i++) {\n this[shouldBeReleasedProperties[i]] = null;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var noop = require('fbjs/lib/emptyFunction');\n\n Object.defineProperty(this, 'nativeEvent', getPooledWarningPropertyDefinition('nativeEvent', null));\n Object.defineProperty(this, 'preventDefault', getPooledWarningPropertyDefinition('preventDefault', noop));\n Object.defineProperty(this, 'stopPropagation', getPooledWarningPropertyDefinition('stopPropagation', noop));\n }\n }\n});\n\nSyntheticEvent.Interface = EventInterface;\n\nif (process.env.NODE_ENV !== 'production') {\n if (isProxySupported) {\n /*eslint-disable no-func-assign */\n SyntheticEvent = new Proxy(SyntheticEvent, {\n construct: function construct(target, args) {\n return this.apply(target, Object.create(target.prototype), args);\n },\n apply: function apply(constructor, that, args) {\n return new Proxy(constructor.apply(that, args), {\n set: function set(target, prop, value) {\n if (prop !== 'isPersistent' && !target.constructor.Interface.hasOwnProperty(prop) && shouldBeReleasedProperties.indexOf(prop) === -1) {\n process.env.NODE_ENV !== 'production' ? warning(didWarnForAddedNewProperty || target.isPersistent(), 'This synthetic event is reused for performance reasons. If you\\'re ' + 'seeing this, you\\'re adding a new property in the synthetic event object. ' + 'The property is never released. See ' + 'https://fb.me/react-event-pooling for more information.') : void 0;\n didWarnForAddedNewProperty = true;\n }\n\n target[prop] = value;\n return true;\n }\n });\n }\n });\n /*eslint-enable no-func-assign */\n }\n}\n/**\n * Helper to reduce boilerplate when creating subclasses.\n *\n * @param {function} Class\n * @param {?object} Interface\n */\n\n\nSyntheticEvent.augmentClass = function (Class, Interface) {\n var Super = this;\n\n var E = function E() {};\n\n E.prototype = Super.prototype;\n var prototype = new E();\n\n _assign(prototype, Class.prototype);\n\n Class.prototype = prototype;\n Class.prototype.constructor = Class;\n Class.Interface = _assign({}, Super.Interface, Interface);\n Class.augmentClass = Super.augmentClass;\n PooledClass.addPoolingTo(Class, PooledClass.fourArgumentPooler);\n};\n\nPooledClass.addPoolingTo(SyntheticEvent, PooledClass.fourArgumentPooler);\nmodule.exports = SyntheticEvent;\n/**\n * Helper to nullify syntheticEvent instance properties when destructing\n *\n * @param {object} SyntheticEvent\n * @param {String} propName\n * @return {object} defineProperty object\n */\n\nfunction getPooledWarningPropertyDefinition(propName, getVal) {\n var isFunction = typeof getVal === 'function';\n return {\n configurable: true,\n set: set,\n get: get\n };\n\n function set(val) {\n var action = isFunction ? 'setting the method' : 'setting the property';\n warn(action, 'This is effectively a no-op');\n return val;\n }\n\n function get() {\n var action = isFunction ? 'accessing the method' : 'accessing the property';\n var result = isFunction ? 'This is a no-op function' : 'This is set to null';\n warn(action, result);\n return getVal;\n }\n\n function warn(action, result) {\n var warningCondition = false;\n process.env.NODE_ENV !== 'production' ? warning(warningCondition, 'This synthetic event is reused for performance reasons. If you\\'re seeing this, ' + 'you\\'re %s `%s` on a released/nullified synthetic event. %s. ' + 'If you must keep the original synthetic event around, use event.persist(). ' + 'See https://fb.me/react-event-pooling for more information.', action, propName, result) : void 0;\n }\n}","/* eslint-disable no-console */\n\nconst LOG_LEVELS = { debug: 0, info: 1, warn: 2, error: 3 };\n\n// Will always print logs that are this level or less.\nconst PRINT_LOG_LEVEL = LOG_LEVELS.warn;\n\n// Colors for printing the logs.\nconst LEVEL_COLORS = { debug: '#ff1493', info: '#00008b', warn: '#ff8c00', error: '#ff0000' };\nconst TIMESTAMP_COLOR = '#000';\nconst NAMESPACE_COLOR = '#0000ff';\n\n// Storage for the logs.\nconst logMessages = [];\n\n/**\n * Creates and stores a log message (which can be dumped later).\n *\n * @param {String} logLevel should reflect one of the keys in LOG_LEVELS\n * @param {String} namespace describes what is being logged\n */\nfunction log(logLevel, namespace, ...args) {\n const date = new Date();\n const timestamp = `${date.getHours()}:${date.getMinutes()}:${date.getMilliseconds()}`;\n const logMessage = { logLevel, namespace, args, timestamp };\n\n // Store the log message in case it needs to be dumped.\n logMessages.push(logMessage);\n\n // Print the log if it is above the designated print log level.\n if (LOG_LEVELS[logLevel] >= PRINT_LOG_LEVEL) {\n printLogMessage(logMessage);\n }\n}\n\n/**\n * [Log Level] [Date] [Namespace] arguments*\n * E.g. Logger.info(\"Learning App\", \"Fetching data.\", self, foo, bar)\n * [info] [12:25:458] [Learning App] Fetching data. {Window...} \"foo\" \"bar\"\n */\nfunction printLogMessage({ args, logLevel, namespace, timestamp }) {\n if (!(logLevel in console)) {\n console.log(...args);\n } else {\n console[logLevel](\n '%c[%s] %c[%s] %c[%s]',\n LEVEL_COLORS[logLevel],\n logLevel,\n TIMESTAMP_COLOR,\n timestamp,\n NAMESPACE_COLOR,\n namespace,\n ...args\n );\n }\n}\n\n/**\n * Prints all stored log messages.\n *\n * @param {String} logLevel\n */\nexport function dumpLogs(logLevel = 'warn') {\n if (!LOG_LEVELS.hasOwnProperty(logLevel)) {\n throw new TypeError('Invalid logger level');\n }\n\n logMessages.filter(logMessage => LOG_LEVELS[logMessage.logLevel] >= LOG_LEVELS[logLevel])\n .forEach(printLogMessage);\n}\n\nexport const debug = log.bind(null, 'debug');\nexport const error = log.bind(null, 'error');\nexport const info = log.bind(null, 'info');\nexport const warn = log.bind(null, 'warn');\n\nconst Logger = Object.freeze({ dumpLogs, debug, info, error, warn });\n\n// Expose to the window so users can dump data and for legacy support.\nif (typeof window !== 'undefined') {\n window.Logger = Logger;\n}\n\nexport default Logger;\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = String(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","/* eslint-disable no-useless-constructor, no-empty-function, no-param-reassign */\nfunction callLegacy(method, ...args) {\n if (typeof $ !== 'undefined' && typeof $[method] === 'function') {\n $[method](...args);\n }\n}\n\n/**\n * TODO:\n *\n * Wrapper for the current sound manager. Should be rewritten\n * at some point.\n */\nclass SoundManager {\n constructor() {}\n\n load(...args) {\n callLegacy('loadSounds', ...args);\n }\n\n play(...args) {\n callLegacy('playSound', ...args);\n }\n\n playEffect(url, options, preventStopSounds) {\n options = Object.assign({\n mix: true,\n volume: Smartfm.Apps.Settings.EffectVolume,\n }, options);\n\n callLegacy('playSound', url, options, preventStopSounds);\n }\n\n stop(sound) {\n if (sound) {\n callLegacy('pauseSound', sound);\n } else {\n callLegacy('stopSounds');\n }\n }\n}\n\nexport default new SoundManager();\n","/* eslint-disable prefer-template */\nexport const AppPaths = Object.freeze({\n IKNOW: 'iknow',\n RAPID_CHOICE: 'rapid_choice',\n SELF_ASSESSMENT: 'self_check',\n SENTENCE_TRAINER: 'sentence_trainer',\n});\n\nexport function course(goalId) {\n return `/courses/${goalId}`;\n}\n\nexport function item(id, slug) {\n return `/items/${id}/${slug}`;\n}\n\nexport function courseDirectory() {\n return '/content';\n}\n\nexport function createCustomCourse() {\n return '/custom/courses/new';\n}\n\nexport function customCourse(goalId) {\n return `/custom/courses/${goalId}`;\n}\n\nexport function dmmOauthConnect() {\n return '/dmm_oauth2/connect';\n}\n\nexport function dmmOauthRegister() {\n return '/dmm_oauth2/register';\n}\n\nexport function dmmRedirect() {\n return '/dmm_oauth2/redirect';\n}\n\nexport function locale(languageCode = '') {\n return `/locale?language_code=${languageCode}`;\n}\n\nexport function forgotPassword() {\n return '/passwords/forgot';\n}\n\nexport function forgotPasswordPhone() {\n return '/user_phone/forgot_password';\n}\n\nexport function groupInviteSignup() {\n return '/groups/invite/signup';\n}\n\nexport function login() {\n return '/login';\n}\n\nexport const policy = () => '/policy';\n\nexport function payment(origin = '') {\n return `/payment?origin=${origin}`;\n}\n\nexport function session() {\n return '/session';\n}\n\nexport function series(seriesId) {\n return `/series/${seriesId}`;\n}\n\nexport function signup() {\n return '/signup';\n}\n\nexport function studySpecificContent() {\n return '/apps/specific_content';\n}\n\nexport function studyAll(language, appPath = null) {\n return `/apps/study_all/${language}` + (appPath ? `/${appPath}` : '');\n}\n\nexport function studyGoal(goalId, appPath = null) {\n return `/apps/courses/${goalId}` + (appPath ? `/${appPath}` : '');\n}\n\nexport function widgetsAddToGoalButton() {\n return '/widgets/add_to_goal_button';\n}\n\nexport function userAchievement(sharableIdentifier, achievementId) {\n return `/users/${sharableIdentifier}/achievements/${achievementId}`;\n}\n\nexport function widgetsProxyFrame() {\n return '/widgets/proxy_frame';\n}\n\nexport function confirmPhone() {\n return '/user_phone/confirm';\n}\n\nexport function generatePhoneConfirmCode() {\n return '/user_phone/generate_confirm_code';\n}\n\nexport function requestPhonePasswordReset() {\n return '/user_phone/request_password_reset';\n}\n\nexport function resetPhonePassword(resetId) {\n return `/user_phone/reset_password/${resetId}`;\n}\n\nexport function generatePhoneResetCode(resetId) {\n return `/user_phone/generate_reset_code/${resetId}`;\n}\n\nexport function privacy() {\n return '/privacy';\n}\n","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactCurrentOwner\n */\n'use strict';\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n */\n\nvar ReactCurrentOwner = {\n /**\n * @internal\n * @type {ReactComponent}\n */\n current: null\n};\nmodule.exports = ReactCurrentOwner;","\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/**\n * Allows extraction of a minified key. Let's the build system minify keys\n * without losing the ability to dynamically use key strings as values\n * themselves. Pass in an object with a single key/val pair and it will return\n * you the string key of that single record. Suppose you want to grab the\n * value for a key 'className' inside of an object. Key/val minification may\n * have aliased that key to be 'xa12'. keyOf({className: null}) will return\n * 'xa12' in that case. Resolve keys you want to use once at startup time, then\n * reuse those resolutions.\n */\n\nvar keyOf = function keyOf(oneKeyObj) {\n var key;\n\n for (key in oneKeyObj) {\n if (!oneKeyObj.hasOwnProperty(key)) {\n continue;\n }\n\n return key;\n }\n\n return null;\n};\n\nmodule.exports = keyOf;","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n/* eslint-disable no-proto */\n'use strict';\n\nvar base64 = require('base64-js');\n\nvar ieee754 = require('ieee754');\n\nvar isArray = require('isarray');\n\nexports.Buffer = Buffer;\nexports.SlowBuffer = SlowBuffer;\nexports.INSPECT_MAX_BYTES = 50;\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\n\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined ? global.TYPED_ARRAY_SUPPORT : typedArraySupport();\n/*\n * Export kMaxLength after typed array support is determined.\n */\n\nexports.kMaxLength = kMaxLength();\n\nfunction typedArraySupport() {\n try {\n var arr = new Uint8Array(1);\n arr.__proto__ = {\n __proto__: Uint8Array.prototype,\n foo: function foo() {\n return 42;\n }\n };\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0; // ie10 has broken `subarray`\n } catch (e) {\n return false;\n }\n}\n\nfunction kMaxLength() {\n return Buffer.TYPED_ARRAY_SUPPORT ? 0x7fffffff : 0x3fffffff;\n}\n\nfunction createBuffer(that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length');\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length);\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length);\n }\n\n that.length = length;\n }\n\n return that;\n}\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\n\nfunction Buffer(arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length);\n } // Common case.\n\n\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error('If encoding is specified then the first argument must be a string');\n }\n\n return allocUnsafe(this, arg);\n }\n\n return from(this, arg, encodingOrOffset, length);\n}\n\nBuffer.poolSize = 8192; // not used by this implementation\n// TODO: Legacy, not needed anymore. Remove in next major version.\n\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype;\n return arr;\n};\n\nfunction from(that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number');\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length);\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset);\n }\n\n return fromObject(that, value);\n}\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\n\n\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length);\n};\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype;\n Buffer.__proto__ = Uint8Array;\n\n if (typeof Symbol !== 'undefined' && Symbol.species && Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n });\n }\n}\n\nfunction assertSize(size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number');\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative');\n }\n}\n\nfunction alloc(that, size, fill, encoding) {\n assertSize(size);\n\n if (size <= 0) {\n return createBuffer(that, size);\n }\n\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string' ? createBuffer(that, size).fill(fill, encoding) : createBuffer(that, size).fill(fill);\n }\n\n return createBuffer(that, size);\n}\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\n\n\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding);\n};\n\nfunction allocUnsafe(that, size) {\n assertSize(size);\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);\n\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0;\n }\n }\n\n return that;\n}\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\n\n\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size);\n};\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\n\n\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size);\n};\n\nfunction fromString(that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8';\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding');\n }\n\n var length = byteLength(string, encoding) | 0;\n that = createBuffer(that, length);\n var actual = that.write(string, encoding);\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual);\n }\n\n return that;\n}\n\nfunction fromArrayLike(that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0;\n that = createBuffer(that, length);\n\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255;\n }\n\n return that;\n}\n\nfunction fromArrayBuffer(that, array, byteOffset, length) {\n array.byteLength; // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds');\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds');\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array);\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset);\n } else {\n array = new Uint8Array(array, byteOffset, length);\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array;\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array);\n }\n\n return that;\n}\n\nfunction fromObject(that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0;\n that = createBuffer(that, len);\n\n if (that.length === 0) {\n return that;\n }\n\n obj.copy(that, 0, 0, len);\n return that;\n }\n\n if (obj) {\n if (typeof ArrayBuffer !== 'undefined' && obj.buffer instanceof ArrayBuffer || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0);\n }\n\n return fromArrayLike(that, obj);\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data);\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.');\n}\n\nfunction checked(length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' + 'size: 0x' + kMaxLength().toString(16) + ' bytes');\n }\n\n return length | 0;\n}\n\nfunction SlowBuffer(length) {\n if (+length != length) {\n // eslint-disable-line eqeqeq\n length = 0;\n }\n\n return Buffer.alloc(+length);\n}\n\nBuffer.isBuffer = function isBuffer(b) {\n return !!(b != null && b._isBuffer);\n};\n\nBuffer.compare = function compare(a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers');\n }\n\n if (a === b) return 0;\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n};\n\nBuffer.isEncoding = function isEncoding(encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true;\n\n default:\n return false;\n }\n};\n\nBuffer.concat = function concat(list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers');\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0);\n }\n\n var i;\n\n if (length === undefined) {\n length = 0;\n\n for (i = 0; i < list.length; ++i) {\n length += list[i].length;\n }\n }\n\n var buffer = Buffer.allocUnsafe(length);\n var pos = 0;\n\n for (i = 0; i < list.length; ++i) {\n var buf = list[i];\n\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers');\n }\n\n buf.copy(buffer, pos);\n pos += buf.length;\n }\n\n return buffer;\n};\n\nfunction byteLength(string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length;\n }\n\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength;\n }\n\n if (typeof string !== 'string') {\n string = '' + string;\n }\n\n var len = string.length;\n if (len === 0) return 0; // Use a for loop to avoid recursion\n\n var loweredCase = false;\n\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len;\n\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length;\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2;\n\n case 'hex':\n return len >>> 1;\n\n case 'base64':\n return base64ToBytes(string).length;\n\n default:\n if (loweredCase) return utf8ToBytes(string).length; // assume utf8\n\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n}\n\nBuffer.byteLength = byteLength;\n\nfunction slowToString(encoding, start, end) {\n var loweredCase = false; // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n\n if (start === undefined || start < 0) {\n start = 0;\n } // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n\n\n if (start > this.length) {\n return '';\n }\n\n if (end === undefined || end > this.length) {\n end = this.length;\n }\n\n if (end <= 0) {\n return '';\n } // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n\n\n end >>>= 0;\n start >>>= 0;\n\n if (end <= start) {\n return '';\n }\n\n if (!encoding) encoding = 'utf8';\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end);\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end);\n\n case 'ascii':\n return asciiSlice(this, start, end);\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end);\n\n case 'base64':\n return base64Slice(this, start, end);\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end);\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);\n encoding = (encoding + '').toLowerCase();\n loweredCase = true;\n }\n }\n} // The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\n\n\nBuffer.prototype._isBuffer = true;\n\nfunction swap(b, n, m) {\n var i = b[n];\n b[n] = b[m];\n b[m] = i;\n}\n\nBuffer.prototype.swap16 = function swap16() {\n var len = this.length;\n\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits');\n }\n\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1);\n }\n\n return this;\n};\n\nBuffer.prototype.swap32 = function swap32() {\n var len = this.length;\n\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits');\n }\n\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3);\n swap(this, i + 1, i + 2);\n }\n\n return this;\n};\n\nBuffer.prototype.swap64 = function swap64() {\n var len = this.length;\n\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits');\n }\n\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7);\n swap(this, i + 1, i + 6);\n swap(this, i + 2, i + 5);\n swap(this, i + 3, i + 4);\n }\n\n return this;\n};\n\nBuffer.prototype.toString = function toString() {\n var length = this.length | 0;\n if (length === 0) return '';\n if (arguments.length === 0) return utf8Slice(this, 0, length);\n return slowToString.apply(this, arguments);\n};\n\nBuffer.prototype.equals = function equals(b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer');\n if (this === b) return true;\n return Buffer.compare(this, b) === 0;\n};\n\nBuffer.prototype.inspect = function inspect() {\n var str = '';\n var max = exports.INSPECT_MAX_BYTES;\n\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ');\n if (this.length > max) str += ' ... ';\n }\n\n return '';\n};\n\nBuffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer');\n }\n\n if (start === undefined) {\n start = 0;\n }\n\n if (end === undefined) {\n end = target ? target.length : 0;\n }\n\n if (thisStart === undefined) {\n thisStart = 0;\n }\n\n if (thisEnd === undefined) {\n thisEnd = this.length;\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index');\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0;\n }\n\n if (thisStart >= thisEnd) {\n return -1;\n }\n\n if (start >= end) {\n return 1;\n }\n\n start >>>= 0;\n end >>>= 0;\n thisStart >>>= 0;\n thisEnd >>>= 0;\n if (this === target) return 0;\n var x = thisEnd - thisStart;\n var y = end - start;\n var len = Math.min(x, y);\n var thisCopy = this.slice(thisStart, thisEnd);\n var targetCopy = target.slice(start, end);\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i];\n y = targetCopy[i];\n break;\n }\n }\n\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n}; // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\n\n\nfunction bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1; // Normalize byteOffset\n\n if (typeof byteOffset === 'string') {\n encoding = byteOffset;\n byteOffset = 0;\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff;\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000;\n }\n\n byteOffset = +byteOffset; // Coerce to Number.\n\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : buffer.length - 1;\n } // Normalize byteOffset: negative offsets start from the end of the buffer\n\n\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n\n if (byteOffset >= buffer.length) {\n if (dir) return -1;else byteOffset = buffer.length - 1;\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0;else return -1;\n } // Normalize val\n\n\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding);\n } // Finally, search either indexOf (if dir is true) or lastIndexOf\n\n\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1;\n }\n\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir);\n } else if (typeof val === 'number') {\n val = val & 0xFF; // Search for a byte value [0-255]\n\n if (Buffer.TYPED_ARRAY_SUPPORT && typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);\n }\n }\n\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);\n }\n\n throw new TypeError('val must be string, number or Buffer');\n}\n\nfunction arrayIndexOf(arr, val, byteOffset, encoding, dir) {\n var indexSize = 1;\n var arrLength = arr.length;\n var valLength = val.length;\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase();\n\n if (encoding === 'ucs2' || encoding === 'ucs-2' || encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1;\n }\n\n indexSize = 2;\n arrLength /= 2;\n valLength /= 2;\n byteOffset /= 2;\n }\n }\n\n function read(buf, i) {\n if (indexSize === 1) {\n return buf[i];\n } else {\n return buf.readUInt16BE(i * indexSize);\n }\n }\n\n var i;\n\n if (dir) {\n var foundIndex = -1;\n\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i;\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize;\n } else {\n if (foundIndex !== -1) i -= i - foundIndex;\n foundIndex = -1;\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n\n for (i = byteOffset; i >= 0; i--) {\n var found = true;\n\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false;\n break;\n }\n }\n\n if (found) return i;\n }\n }\n\n return -1;\n}\n\nBuffer.prototype.includes = function includes(val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1;\n};\n\nBuffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true);\n};\n\nBuffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false);\n};\n\nfunction hexWrite(buf, string, offset, length) {\n offset = Number(offset) || 0;\n var remaining = buf.length - offset;\n\n if (!length) {\n length = remaining;\n } else {\n length = Number(length);\n\n if (length > remaining) {\n length = remaining;\n }\n } // must be an even number of digits\n\n\n var strLen = string.length;\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string');\n\n if (length > strLen / 2) {\n length = strLen / 2;\n }\n\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16);\n if (isNaN(parsed)) return i;\n buf[offset + i] = parsed;\n }\n\n return i;\n}\n\nfunction utf8Write(buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);\n}\n\nfunction asciiWrite(buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length);\n}\n\nfunction latin1Write(buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length);\n}\n\nfunction base64Write(buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length);\n}\n\nfunction ucs2Write(buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);\n}\n\nBuffer.prototype.write = function write(string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8';\n length = this.length;\n offset = 0; // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset;\n length = this.length;\n offset = 0; // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0;\n\n if (isFinite(length)) {\n length = length | 0;\n if (encoding === undefined) encoding = 'utf8';\n } else {\n encoding = length;\n length = undefined;\n } // legacy write(string, encoding, offset, length) - remove in v0.13\n\n } else {\n throw new Error('Buffer.write(string, encoding, offset[, length]) is no longer supported');\n }\n\n var remaining = this.length - offset;\n if (length === undefined || length > remaining) length = remaining;\n\n if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds');\n }\n\n if (!encoding) encoding = 'utf8';\n var loweredCase = false;\n\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length);\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length);\n\n case 'ascii':\n return asciiWrite(this, string, offset, length);\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length);\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length);\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length);\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n};\n\nBuffer.prototype.toJSON = function toJSON() {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n };\n};\n\nfunction base64Slice(buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf);\n } else {\n return base64.fromByteArray(buf.slice(start, end));\n }\n}\n\nfunction utf8Slice(buf, start, end) {\n end = Math.min(buf.length, end);\n var res = [];\n var i = start;\n\n while (i < end) {\n var firstByte = buf[i];\n var codePoint = null;\n var bytesPerSequence = firstByte > 0xEF ? 4 : firstByte > 0xDF ? 3 : firstByte > 0xBF ? 2 : 1;\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint;\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte;\n }\n\n break;\n\n case 2:\n secondByte = buf[i + 1];\n\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | secondByte & 0x3F;\n\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint;\n }\n }\n\n break;\n\n case 3:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | thirdByte & 0x3F;\n\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint;\n }\n }\n\n break;\n\n case 4:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n fourthByte = buf[i + 3];\n\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | fourthByte & 0x3F;\n\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint;\n }\n }\n\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD;\n bytesPerSequence = 1;\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000;\n res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n codePoint = 0xDC00 | codePoint & 0x3FF;\n }\n\n res.push(codePoint);\n i += bytesPerSequence;\n }\n\n return decodeCodePointsArray(res);\n} // Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\n\n\nvar MAX_ARGUMENTS_LENGTH = 0x1000;\n\nfunction decodeCodePointsArray(codePoints) {\n var len = codePoints.length;\n\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints); // avoid extra slice()\n } // Decode in chunks to avoid \"call stack size exceeded\".\n\n\n var res = '';\n var i = 0;\n\n while (i < len) {\n res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));\n }\n\n return res;\n}\n\nfunction asciiSlice(buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F);\n }\n\n return ret;\n}\n\nfunction latin1Slice(buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i]);\n }\n\n return ret;\n}\n\nfunction hexSlice(buf, start, end) {\n var len = buf.length;\n if (!start || start < 0) start = 0;\n if (!end || end < 0 || end > len) end = len;\n var out = '';\n\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i]);\n }\n\n return out;\n}\n\nfunction utf16leSlice(buf, start, end) {\n var bytes = buf.slice(start, end);\n var res = '';\n\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n }\n\n return res;\n}\n\nBuffer.prototype.slice = function slice(start, end) {\n var len = this.length;\n start = ~~start;\n end = end === undefined ? len : ~~end;\n\n if (start < 0) {\n start += len;\n if (start < 0) start = 0;\n } else if (start > len) {\n start = len;\n }\n\n if (end < 0) {\n end += len;\n if (end < 0) end = 0;\n } else if (end > len) {\n end = len;\n }\n\n if (end < start) end = start;\n var newBuf;\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end);\n newBuf.__proto__ = Buffer.prototype;\n } else {\n var sliceLen = end - start;\n newBuf = new Buffer(sliceLen, undefined);\n\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start];\n }\n }\n\n return newBuf;\n};\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\n\n\nfunction checkOffset(offset, ext, length) {\n if (offset % 1 !== 0 || offset < 0) throw new RangeError('offset is not uint');\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length');\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var val = this[offset];\n var mul = 1;\n var i = 0;\n\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n\n return val;\n};\n\nBuffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length);\n }\n\n var val = this[offset + --byteLength];\n var mul = 1;\n\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul;\n }\n\n return val;\n};\n\nBuffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n return this[offset];\n};\n\nBuffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] | this[offset + 1] << 8;\n};\n\nBuffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] << 8 | this[offset + 1];\n};\n\nBuffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 0x1000000;\n};\n\nBuffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] * 0x1000000 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);\n};\n\nBuffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var val = this[offset];\n var mul = 1;\n var i = 0;\n\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n\n mul *= 0x80;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\n};\n\nBuffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var i = byteLength;\n var mul = 1;\n var val = this[offset + --i];\n\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul;\n }\n\n mul *= 0x80;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\n};\n\nBuffer.prototype.readInt8 = function readInt8(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n if (!(this[offset] & 0x80)) return this[offset];\n return (0xff - this[offset] + 1) * -1;\n};\n\nBuffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset] | this[offset + 1] << 8;\n return val & 0x8000 ? val | 0xFFFF0000 : val;\n};\n\nBuffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset + 1] | this[offset] << 8;\n return val & 0x8000 ? val | 0xFFFF0000 : val;\n};\n\nBuffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;\n};\n\nBuffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];\n};\n\nBuffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754.read(this, offset, true, 23, 4);\n};\n\nBuffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754.read(this, offset, false, 23, 4);\n};\n\nBuffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754.read(this, offset, true, 52, 8);\n};\n\nBuffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754.read(this, offset, false, 52, 8);\n};\n\nfunction checkInt(buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance');\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds');\n if (offset + ext > buf.length) throw new RangeError('Index out of range');\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var mul = 1;\n var i = 0;\n this[offset] = value & 0xFF;\n\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = value / mul & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n this[offset + i] = value & 0xFF;\n\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = value / mul & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n this[offset] = value & 0xff;\n return offset + 1;\n};\n\nfunction objectWriteUInt16(buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1;\n\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & 0xff << 8 * (littleEndian ? i : 1 - i)) >>> (littleEndian ? i : 1 - i) * 8;\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n\n return offset + 2;\n};\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 8;\n this[offset + 1] = value & 0xff;\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n\n return offset + 2;\n};\n\nfunction objectWriteUInt32(buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1;\n\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = value >>> (littleEndian ? i : 3 - i) * 8 & 0xff;\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = value >>> 24;\n this[offset + 2] = value >>> 16;\n this[offset + 1] = value >>> 8;\n this[offset] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n\n return offset + 4;\n};\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n\n return offset + 4;\n};\n\nBuffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = 0;\n var mul = 1;\n var sub = 0;\n this[offset] = value & 0xFF;\n\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1;\n }\n\n this[offset + i] = (value / mul >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n var sub = 0;\n this[offset + i] = value & 0xFF;\n\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1;\n }\n\n this[offset + i] = (value / mul >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n if (value < 0) value = 0xff + value + 1;\n this[offset] = value & 0xff;\n return offset + 1;\n};\n\nBuffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n\n return offset + 2;\n};\n\nBuffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 8;\n this[offset + 1] = value & 0xff;\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n\n return offset + 2;\n};\n\nBuffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n this[offset + 2] = value >>> 16;\n this[offset + 3] = value >>> 24;\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n\n return offset + 4;\n};\n\nBuffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (value < 0) value = 0xffffffff + value + 1;\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n\n return offset + 4;\n};\n\nfunction checkIEEE754(buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range');\n if (offset < 0) throw new RangeError('Index out of range');\n}\n\nfunction writeFloat(buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38);\n }\n\n ieee754.write(buf, value, offset, littleEndian, 23, 4);\n return offset + 4;\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert);\n};\n\nBuffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert);\n};\n\nfunction writeDouble(buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308);\n }\n\n ieee754.write(buf, value, offset, littleEndian, 52, 8);\n return offset + 8;\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert);\n};\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert);\n}; // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n\n\nBuffer.prototype.copy = function copy(target, targetStart, start, end) {\n if (!start) start = 0;\n if (!end && end !== 0) end = this.length;\n if (targetStart >= target.length) targetStart = target.length;\n if (!targetStart) targetStart = 0;\n if (end > 0 && end < start) end = start; // Copy 0 bytes; we're done\n\n if (end === start) return 0;\n if (target.length === 0 || this.length === 0) return 0; // Fatal error conditions\n\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds');\n }\n\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds');\n if (end < 0) throw new RangeError('sourceEnd out of bounds'); // Are we oob?\n\n if (end > this.length) end = this.length;\n\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start;\n }\n\n var len = end - start;\n var i;\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start];\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start];\n }\n } else {\n Uint8Array.prototype.set.call(target, this.subarray(start, start + len), targetStart);\n }\n\n return len;\n}; // Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\n\n\nBuffer.prototype.fill = function fill(val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start;\n start = 0;\n end = this.length;\n } else if (typeof end === 'string') {\n encoding = end;\n end = this.length;\n }\n\n if (val.length === 1) {\n var code = val.charCodeAt(0);\n\n if (code < 256) {\n val = code;\n }\n }\n\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string');\n }\n\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding);\n }\n } else if (typeof val === 'number') {\n val = val & 255;\n } // Invalid ranges are not set to a default, so can range check early.\n\n\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index');\n }\n\n if (end <= start) {\n return this;\n }\n\n start = start >>> 0;\n end = end === undefined ? this.length : end >>> 0;\n if (!val) val = 0;\n var i;\n\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val;\n }\n } else {\n var bytes = Buffer.isBuffer(val) ? val : utf8ToBytes(new Buffer(val, encoding).toString());\n var len = bytes.length;\n\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len];\n }\n }\n\n return this;\n}; // HELPER FUNCTIONS\n// ================\n\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g;\n\nfunction base64clean(str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, ''); // Node converts strings with length < 2 to ''\n\n if (str.length < 2) return ''; // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n\n while (str.length % 4 !== 0) {\n str = str + '=';\n }\n\n return str;\n}\n\nfunction stringtrim(str) {\n if (str.trim) return str.trim();\n return str.replace(/^\\s+|\\s+$/g, '');\n}\n\nfunction toHex(n) {\n if (n < 16) return '0' + n.toString(16);\n return n.toString(16);\n}\n\nfunction utf8ToBytes(string, units) {\n units = units || Infinity;\n var codePoint;\n var length = string.length;\n var leadSurrogate = null;\n var bytes = [];\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i); // is surrogate component\n\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue;\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue;\n } // valid lead\n\n\n leadSurrogate = codePoint;\n continue;\n } // 2 leads in a row\n\n\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n leadSurrogate = codePoint;\n continue;\n } // valid surrogate pair\n\n\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n }\n\n leadSurrogate = null; // encode utf8\n\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break;\n bytes.push(codePoint);\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break;\n bytes.push(codePoint >> 0x6 | 0xC0, codePoint & 0x3F | 0x80);\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break;\n bytes.push(codePoint >> 0xC | 0xE0, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break;\n bytes.push(codePoint >> 0x12 | 0xF0, codePoint >> 0xC & 0x3F | 0x80, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);\n } else {\n throw new Error('Invalid code point');\n }\n }\n\n return bytes;\n}\n\nfunction asciiToBytes(str) {\n var byteArray = [];\n\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF);\n }\n\n return byteArray;\n}\n\nfunction utf16leToBytes(str, units) {\n var c, hi, lo;\n var byteArray = [];\n\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break;\n c = str.charCodeAt(i);\n hi = c >> 8;\n lo = c % 256;\n byteArray.push(lo);\n byteArray.push(hi);\n }\n\n return byteArray;\n}\n\nfunction base64ToBytes(str) {\n return base64.toByteArray(base64clean(str));\n}\n\nfunction blitBuffer(src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if (i + offset >= dst.length || i >= src.length) break;\n dst[i + offset] = src[i];\n }\n\n return i;\n}\n\nfunction isnan(val) {\n return val !== val; // eslint-disable-line no-self-compare\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports[\"default\"] = function (model, calc) {\n var fn = function fn(buf, previous) {\n return calc(buf, previous) >>> 0;\n };\n\n fn.signed = calc;\n fn.unsigned = fn;\n fn.model = model;\n return fn;\n};","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","module.exports = {};\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","module.exports = {};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n return Object.isExtensible(Object.preventExtensions({}));\n});\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule PooledClass\n */\n'use strict';\n\nvar invariant = require('fbjs/lib/invariant');\n/**\n * Static poolers. Several custom versions for each potential number of\n * arguments. A completely generic pooler is easy to implement, but would\n * require accessing the `arguments` object. In each of these, `this` refers to\n * the Class itself, not an instance. If any others are needed, simply add them\n * here, or in their own files.\n */\n\n\nvar oneArgumentPooler = function oneArgumentPooler(copyFieldsFrom) {\n var Klass = this;\n\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, copyFieldsFrom);\n return instance;\n } else {\n return new Klass(copyFieldsFrom);\n }\n};\n\nvar twoArgumentPooler = function twoArgumentPooler(a1, a2) {\n var Klass = this;\n\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2);\n return instance;\n } else {\n return new Klass(a1, a2);\n }\n};\n\nvar threeArgumentPooler = function threeArgumentPooler(a1, a2, a3) {\n var Klass = this;\n\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3);\n return instance;\n } else {\n return new Klass(a1, a2, a3);\n }\n};\n\nvar fourArgumentPooler = function fourArgumentPooler(a1, a2, a3, a4) {\n var Klass = this;\n\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3, a4);\n return instance;\n } else {\n return new Klass(a1, a2, a3, a4);\n }\n};\n\nvar fiveArgumentPooler = function fiveArgumentPooler(a1, a2, a3, a4, a5) {\n var Klass = this;\n\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3, a4, a5);\n return instance;\n } else {\n return new Klass(a1, a2, a3, a4, a5);\n }\n};\n\nvar standardReleaser = function standardReleaser(instance) {\n var Klass = this;\n !(instance instanceof Klass) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Trying to release an instance into a pool of a different type.') : invariant(false) : void 0;\n instance.destructor();\n\n if (Klass.instancePool.length < Klass.poolSize) {\n Klass.instancePool.push(instance);\n }\n};\n\nvar DEFAULT_POOL_SIZE = 10;\nvar DEFAULT_POOLER = oneArgumentPooler;\n/**\n * Augments `CopyConstructor` to be a poolable class, augmenting only the class\n * itself (statically) not adding any prototypical fields. Any CopyConstructor\n * you give this may have a `poolSize` property, and will look for a\n * prototypical `destructor` on instances (optional).\n *\n * @param {Function} CopyConstructor Constructor that can be used to reset.\n * @param {Function} pooler Customizable pooler.\n */\n\nvar addPoolingTo = function addPoolingTo(CopyConstructor, pooler) {\n var NewKlass = CopyConstructor;\n NewKlass.instancePool = [];\n NewKlass.getPooled = pooler || DEFAULT_POOLER;\n\n if (!NewKlass.poolSize) {\n NewKlass.poolSize = DEFAULT_POOL_SIZE;\n }\n\n NewKlass.release = standardReleaser;\n return NewKlass;\n};\n\nvar PooledClass = {\n addPoolingTo: addPoolingTo,\n oneArgumentPooler: oneArgumentPooler,\n twoArgumentPooler: twoArgumentPooler,\n threeArgumentPooler: threeArgumentPooler,\n fourArgumentPooler: fourArgumentPooler,\n fiveArgumentPooler: fiveArgumentPooler\n};\nmodule.exports = PooledClass;","'use strict';\n\nmodule.exports = require('react/lib/ReactDOM');","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule DOMProperty\n */\n'use strict';\n\nvar invariant = require('fbjs/lib/invariant');\n\nfunction checkMask(value, bitmask) {\n return (value & bitmask) === bitmask;\n}\n\nvar DOMPropertyInjection = {\n /**\n * Mapping from normalized, camelcased property names to a configuration that\n * specifies how the associated DOM property should be accessed or rendered.\n */\n MUST_USE_PROPERTY: 0x1,\n HAS_SIDE_EFFECTS: 0x2,\n HAS_BOOLEAN_VALUE: 0x4,\n HAS_NUMERIC_VALUE: 0x8,\n HAS_POSITIVE_NUMERIC_VALUE: 0x10 | 0x8,\n HAS_OVERLOADED_BOOLEAN_VALUE: 0x20,\n\n /**\n * Inject some specialized knowledge about the DOM. This takes a config object\n * with the following properties:\n *\n * isCustomAttribute: function that given an attribute name will return true\n * if it can be inserted into the DOM verbatim. Useful for data-* or aria-*\n * attributes where it's impossible to enumerate all of the possible\n * attribute names,\n *\n * Properties: object mapping DOM property name to one of the\n * DOMPropertyInjection constants or null. If your attribute isn't in here,\n * it won't get written to the DOM.\n *\n * DOMAttributeNames: object mapping React attribute name to the DOM\n * attribute name. Attribute names not specified use the **lowercase**\n * normalized name.\n *\n * DOMAttributeNamespaces: object mapping React attribute name to the DOM\n * attribute namespace URL. (Attribute names not specified use no namespace.)\n *\n * DOMPropertyNames: similar to DOMAttributeNames but for DOM properties.\n * Property names not specified use the normalized name.\n *\n * DOMMutationMethods: Properties that require special mutation methods. If\n * `value` is undefined, the mutation method should unset the property.\n *\n * @param {object} domPropertyConfig the config as described above.\n */\n injectDOMPropertyConfig: function injectDOMPropertyConfig(domPropertyConfig) {\n var Injection = DOMPropertyInjection;\n var Properties = domPropertyConfig.Properties || {};\n var DOMAttributeNamespaces = domPropertyConfig.DOMAttributeNamespaces || {};\n var DOMAttributeNames = domPropertyConfig.DOMAttributeNames || {};\n var DOMPropertyNames = domPropertyConfig.DOMPropertyNames || {};\n var DOMMutationMethods = domPropertyConfig.DOMMutationMethods || {};\n\n if (domPropertyConfig.isCustomAttribute) {\n DOMProperty._isCustomAttributeFunctions.push(domPropertyConfig.isCustomAttribute);\n }\n\n for (var propName in Properties) {\n !!DOMProperty.properties.hasOwnProperty(propName) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'injectDOMPropertyConfig(...): You\\'re trying to inject DOM property ' + '\\'%s\\' which has already been injected. You may be accidentally ' + 'injecting the same DOM property config twice, or you may be ' + 'injecting two configs that have conflicting property names.', propName) : invariant(false) : void 0;\n var lowerCased = propName.toLowerCase();\n var propConfig = Properties[propName];\n var propertyInfo = {\n attributeName: lowerCased,\n attributeNamespace: null,\n propertyName: propName,\n mutationMethod: null,\n mustUseProperty: checkMask(propConfig, Injection.MUST_USE_PROPERTY),\n hasSideEffects: checkMask(propConfig, Injection.HAS_SIDE_EFFECTS),\n hasBooleanValue: checkMask(propConfig, Injection.HAS_BOOLEAN_VALUE),\n hasNumericValue: checkMask(propConfig, Injection.HAS_NUMERIC_VALUE),\n hasPositiveNumericValue: checkMask(propConfig, Injection.HAS_POSITIVE_NUMERIC_VALUE),\n hasOverloadedBooleanValue: checkMask(propConfig, Injection.HAS_OVERLOADED_BOOLEAN_VALUE)\n };\n !(propertyInfo.mustUseProperty || !propertyInfo.hasSideEffects) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'DOMProperty: Properties that have side effects must use property: %s', propName) : invariant(false) : void 0;\n !(propertyInfo.hasBooleanValue + propertyInfo.hasNumericValue + propertyInfo.hasOverloadedBooleanValue <= 1) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'DOMProperty: Value can be one of boolean, overloaded boolean, or ' + 'numeric value, but not a combination: %s', propName) : invariant(false) : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n DOMProperty.getPossibleStandardName[lowerCased] = propName;\n }\n\n if (DOMAttributeNames.hasOwnProperty(propName)) {\n var attributeName = DOMAttributeNames[propName];\n propertyInfo.attributeName = attributeName;\n\n if (process.env.NODE_ENV !== 'production') {\n DOMProperty.getPossibleStandardName[attributeName] = propName;\n }\n }\n\n if (DOMAttributeNamespaces.hasOwnProperty(propName)) {\n propertyInfo.attributeNamespace = DOMAttributeNamespaces[propName];\n }\n\n if (DOMPropertyNames.hasOwnProperty(propName)) {\n propertyInfo.propertyName = DOMPropertyNames[propName];\n }\n\n if (DOMMutationMethods.hasOwnProperty(propName)) {\n propertyInfo.mutationMethod = DOMMutationMethods[propName];\n }\n\n DOMProperty.properties[propName] = propertyInfo;\n }\n }\n};\n/* eslint-disable max-len */\n\nvar ATTRIBUTE_NAME_START_CHAR = \":A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\";\n/* eslint-enable max-len */\n\n/**\n * DOMProperty exports lookup objects that can be used like functions:\n *\n * > DOMProperty.isValid['id']\n * true\n * > DOMProperty.isValid['foobar']\n * undefined\n *\n * Although this may be confusing, it performs better in general.\n *\n * @see http://jsperf.com/key-exists\n * @see http://jsperf.com/key-missing\n */\n\nvar DOMProperty = {\n ID_ATTRIBUTE_NAME: 'data-reactid',\n ROOT_ATTRIBUTE_NAME: 'data-reactroot',\n ATTRIBUTE_NAME_START_CHAR: ATTRIBUTE_NAME_START_CHAR,\n ATTRIBUTE_NAME_CHAR: ATTRIBUTE_NAME_START_CHAR + \"\\\\-.0-9\\\\uB7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\",\n\n /**\n * Map from property \"standard name\" to an object with info about how to set\n * the property in the DOM. Each object contains:\n *\n * attributeName:\n * Used when rendering markup or with `*Attribute()`.\n * attributeNamespace\n * propertyName:\n * Used on DOM node instances. (This includes properties that mutate due to\n * external factors.)\n * mutationMethod:\n * If non-null, used instead of the property or `setAttribute()` after\n * initial render.\n * mustUseProperty:\n * Whether the property must be accessed and mutated as an object property.\n * hasSideEffects:\n * Whether or not setting a value causes side effects such as triggering\n * resources to be loaded or text selection changes. If true, we read from\n * the DOM before updating to ensure that the value is only set if it has\n * changed.\n * hasBooleanValue:\n * Whether the property should be removed when set to a falsey value.\n * hasNumericValue:\n * Whether the property must be numeric or parse as a numeric and should be\n * removed when set to a falsey value.\n * hasPositiveNumericValue:\n * Whether the property must be positive numeric or parse as a positive\n * numeric and should be removed when set to a falsey value.\n * hasOverloadedBooleanValue:\n * Whether the property can be used as a flag as well as with a value.\n * Removed when strictly equal to false; present without a value when\n * strictly equal to true; present with a value otherwise.\n */\n properties: {},\n\n /**\n * Mapping from lowercase property names to the properly cased version, used\n * to warn in the case of missing properties. Available only in __DEV__.\n * @type {Object}\n */\n getPossibleStandardName: process.env.NODE_ENV !== 'production' ? {} : null,\n\n /**\n * All of the isCustomAttribute() functions that have been injected.\n */\n _isCustomAttributeFunctions: [],\n\n /**\n * Checks whether a property name is a custom attribute.\n * @method\n */\n isCustomAttribute: function isCustomAttribute(attributeName) {\n for (var i = 0; i < DOMProperty._isCustomAttributeFunctions.length; i++) {\n var isCustomAttributeFn = DOMProperty._isCustomAttributeFunctions[i];\n\n if (isCustomAttributeFn(attributeName)) {\n return true;\n }\n }\n\n return false;\n },\n injection: DOMPropertyInjection\n};\nmodule.exports = DOMProperty;","/* eslint-disable no-param-reassign, prefer-template */\nimport Ajax from 'es6/core/ajax';\nimport Config from 'es6/core/config';\n\nfunction buildAjaxObject(path, params = {}, options = {}) {\n // Append oauth options if they are available.\n if (!params.oauthToken && Config.isLoggedIn()) {\n params.oauthToken = Config.oauthToken;\n }\n\n options = Object.assign({\n apiBase: '',\n headers: {},\n method: 'GET',\n withCredentials: false,\n }, options);\n\n if (options.headers['Content-Type'] === 'application/json' && params.oauthToken) {\n path += '?oauth_token=' + encodeURIComponent(params.oauthToken);\n delete params.oauthToken;\n }\n\n return new Ajax(options.apiBase + path, params, options);\n}\n\n/**\n * @params {Object} options\n * @returns {Object}\n */\nfunction defaultPostOptions(options = {}) {\n return Object.assign({}, options, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n });\n}\n\nexport function getGoal(goalId, params = {}, options = {}) {\n return buildAjaxObject('/api/v2/goals/' + goalId, params, options);\n}\n\nexport function getGoalSuggestion(languageCode, params = {}, options = {}) {\n params = Object.assign({ languageCode }, params);\n return buildAjaxObject('/api/v2/goals/suggest', params, options);\n}\n\nexport function getUserAuthenticated(params = {}, options = {}) {\n return buildAjaxObject('/users/authenticated', params, options);\n}\n\nexport function getUserCreatedGoals(params = {}, options = {}) {\n return buildAjaxObject('/api/v2/goals/created', params, options);\n}\n\nexport function getAggregateMemories(goalId, params = {}, options = {}) {\n return buildAjaxObject('/api/v2/goals/' + goalId + '/memories/aggregate', params, options);\n}\n\nexport function getIKnowCumulatives(params = {}, options = {}) {\n params = Object.assign({ applicationDomains: ['items', 'sentences'] }, params);\n return buildAjaxObject('/api/v2/statistics/iknow/cumulative', params, options);\n}\n\nexport function getLearningEngineCumulatives(params = {}, options = {}) {\n params = Object.assign({ applicationDomains: ['items', 'sentences'] }, params);\n return buildAjaxObject('/api/v2/statistics/learning_engine/cumulative', params, options);\n}\n\nexport function getGoalMemories(goalId, params = {}, options = {}) {\n return buildAjaxObject('/api/v2/goals/' + goalId + '/memories', params, options);\n}\n\nexport function getFocusedAggregateMemories(params = {}, options = {}) {\n return buildAjaxObject('/api/v2/goals/focused/memories/aggregate', params, options);\n}\n\nexport function getEnrolledAggregateMemories(params = {}, options = {}) {\n return buildAjaxObject('/api/v2/goals/enrolled/memories/aggregate', params, options);\n}\n\nexport function getGoalItemsBySeries(seriesId, params = {}, options = {}) {\n return buildAjaxObject(`/api/v2/series/${seriesId}/goal_items`, params, options);\n}\n\nexport function getServerTime(params = {}, options = {}) {\n return buildAjaxObject('/api/v2/time', params, options);\n}\n\nexport function getSettings(params = {}, options = {}) {\n return buildAjaxObject('/api/v2/settings', params, options);\n}\n\nexport function getStudyAllData(language, params = {}, options = {}) {\n return buildAjaxObject('/api/v2/languages/' + language + '/study', params, options);\n}\n\nexport function getStudyData(goalId, params = {}, options = {}) {\n return buildAjaxObject('/api/v2/goals/' + goalId + '/study', params, options);\n}\n\nexport function getItem(itemId, params = {}, options = {}) {\n return buildAjaxObject(`/api/v2/items/${itemId}`, params, options);\n}\n\nexport function getItemMemory(itemId, params = {}, options = {}) {\n return buildAjaxObject(`/api/v2/items/${itemId}/memory`, params, options);\n}\n\nexport function getSiteConfiguration(params = {}, options = {}) {\n return buildAjaxObject('/api/v2/site_configuration', params, options);\n}\n\nexport function getDiagnosticStudyData(diagId, params, options) {\n return buildAjaxObject('/api/v2/diagnostics/' + diagId + '/study', params, options);\n}\n\nexport function getDiagnosticData(diagId, params = {}, options = {}) {\n return buildAjaxObject('/api/v2/diagnostics/' + diagId, params, options);\n}\n\n/**\n * Date should be specified as a parameter of format 'YYYY-MM-DD'.\n */\nexport function postAdminUserStreak(userId, params = {}, options = {}) {\n params = Object.assign({ date: 'YYYY-MM-DD' }, params);\n options = defaultPostOptions(options);\n\n return buildAjaxObject('/api/v2/admin/users/' + userId + '/streaks', params, options);\n}\n\nexport function postFocusGoal(goalId, params = {}, options = {}) {\n options = defaultPostOptions(options);\n return buildAjaxObject('/api/v2/goals/' + goalId + '/focus', params, options);\n}\n\nexport function postUnfocusGoal(goalId, params = {}, options = {}) {\n options = defaultPostOptions(options);\n return buildAjaxObject('/api/v2/goals/' + goalId + '/unfocus', params, options);\n}\n\nexport function postEnrollGoal(goalId, params = {}, options = {}) {\n options = defaultPostOptions(options);\n return buildAjaxObject('/api/v2/goals/' + goalId + '/enroll', params, options);\n}\n\nexport function postUnenrollGoal(goalId, params = {}, options = {}) {\n options = defaultPostOptions(options);\n return buildAjaxObject('/api/v2/goals/' + goalId + '/unenroll', params, options);\n}\n\nexport function postGoal(params = {}, options = {}) {\n options = defaultPostOptions(options);\n return buildAjaxObject('/api/v2/goals', params, options);\n}\n\n/**\n * Copys items from course to another.\n *\n * @param {Number} toGoalId\n */\nexport function postCopyItemsToCustomGoal(toGoalId, params = {}, options = {}) {\n params = Object.assign({ items: [] }, params);\n options = defaultPostOptions(options);\n return buildAjaxObject(`/api/v2/goals/${toGoalId}/items`, params, options);\n}\n\n/**\n * Masters multiple items.\n *\n * @param {Number[]} itemIds\n */\nexport function postMemoryCheckpoint(itemIds = [], params = {}, options = {}) {\n params = Object.assign({ itemIds }, params);\n options = defaultPostOptions(options);\n return buildAjaxObject('/api/v2/memories/checkpoint', params, options);\n}\n\nexport function postSettings(settings = {}, params = {}, options = {}) {\n params = Object.assign({ settings }, params);\n options = defaultPostOptions(options);\n return buildAjaxObject('/api/v2/settings', params, options);\n}\n\n/**\n * Resets multiple items.\n *\n * @param {Number[]} itemIds\n */\nexport function postResetItems(itemIds = [], params = {}, options = {}) {\n params = Object.assign({ itemIds }, params);\n options = defaultPostOptions(options);\n return buildAjaxObject('/api/v2/memories/destroy', params, options);\n}\n\n\n/**\n * Defers study of multiple items.\n *\n * @param {Number[]} itemIds\n */\nexport function postDeferItems(itemIds = [], params = {}, options = {}) {\n params = Object.assign({ itemIds }, params);\n options = defaultPostOptions(options);\n return buildAjaxObject('/api/v2/memories/defer', params, options);\n}\n\n/**\n * Skips multiple items.\n *\n * @param {Number[]} itemIds\n */\nexport function postSkipItems(itemIds = [], params = {}, options = {}) {\n params = Object.assign({ itemIds }, params);\n options = defaultPostOptions(options);\n return buildAjaxObject('/api/v2/memories/skip', params, options);\n}\n\nexport function postSkipItem(itemId, params = {}, options = {}) {\n options = defaultPostOptions(options);\n return buildAjaxObject('/api/v2/items/' + itemId + '/memory/skip', params, options);\n}\n\n/**\n * Unskips multiple items.\n *\n * @param {Number[]} itemIds\n */\nexport function postUnskipItems(itemIds = [], params = {}, options = {}) {\n params = Object.assign({ itemIds }, params);\n options = defaultPostOptions(options);\n return buildAjaxObject('/api/v2/memories/unskip', params, options);\n}\n\nexport function postUnskipItem(itemId, params = {}, options = {}) {\n options = defaultPostOptions(options);\n return buildAjaxObject('/api/v2/items/' + itemId + '/memory/unskip', params, options);\n}\n\nexport function postSpecificContent(params = {}, options = {}) {\n options = defaultPostOptions(options);\n return buildAjaxObject('/api/v2/study/specific_content', params, options);\n}\n\nexport function postStudyData(params = {}, options = {}) {\n const timeout = Config.isDevelopment ? 0 : 30000;\n options = Object.assign(defaultPostOptions(options), { timeout });\n return buildAjaxObject('/api/v2/study', params, options);\n}\n\nexport function postRefreshDmmAccount(params = {}, options = {}) {\n options = defaultPostOptions(options);\n return buildAjaxObject('/api/v2/dmm_accounts/refresh', params, options);\n}\n","/* eslint-disable react/prefer-es6-class, react/sort-comp, react/prop-types, react/no-multi-comp, no-unused-vars */\nimport classnames from 'classnames';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport includes from 'lodash/includes';\nimport Keys, { KeyHelpers } from 'es6/core/keys';\nimport SoundManager from 'es6/services/sound-manager';\nimport { CLICK } from 'es6/core/sound-effects';\n\nconst ALIGN_STATES = ['left', 'center', 'right'];\n\n/**\n * Detects if an element is a navigation button\n *\n * @param {HTMLElement} el\n */\nfunction isNavButton(el) {\n return el && el.dataset && el.dataset.navButton;\n}\n\nexport const NavContainer = React.createClass({\n display: 'NavContainer',\n\n propTypes: {\n align: React.PropTypes.oneOf(ALIGN_STATES),\n className: React.PropTypes.string,\n },\n\n getDefaultProps() {\n return {\n align: 'left',\n className: '',\n };\n },\n\n render() {\n const className = classnames('nav-container', this.props.className);\n return (\n
{this.props.children}
\n );\n },\n});\n\nexport const NavButton = React.createClass({\n displayName: 'NavButton',\n\n propTypes: {\n align: React.PropTypes.oneOf(ALIGN_STATES),\n className: React.PropTypes.string,\n keyCode: React.PropTypes.oneOf(_.values(Keys)),\n focusable: React.PropTypes.bool,\n focused: React.PropTypes.bool,\n onClick: React.PropTypes.func,\n title: React.PropTypes.string,\n },\n\n getDefaultProps() {\n return {\n align: 'left',\n className: '',\n focusable: true,\n focused: false,\n title: '',\n };\n },\n\n componentDidMount() {\n window.addEventListener('keydown', this._handleKeydown);\n window.addEventListener('keyup', this._handleKeyup);\n },\n\n componentDidUpdate(prevProps, prevState) {\n // Make sure the button doesn't have focus if it becomes unfocusable.\n if (!this.props.focusable) {\n ReactDOM.findDOMNode(this).blur();\n }\n },\n\n componentWillUnmount() {\n window.removeEventListener('keydown', this._handleKeydown);\n window.removeEventListener('keyup', this._handleKeyup);\n },\n\n /**\n * Helper method for _handleKeydown and _handlKeyup. If the keyCode\n * is set to the enter key, then check to make sure that nothing else\n * that has an enter event is focused.\n *\n * Keep in mind that if the user hits enter, we can still return false\n * here and let the browsers natural enter event bubble up.\n */\n _canUseEnter() {\n if (this.props.keyCode !== Keys.ENTER) {\n return true;\n }\n\n const focusableElements = ['A', 'BUTTON', 'INPUT', 'SELECT', 'TEXTAREA'];\n return !document.activeElement || focusableElements.indexOf(document.activeElement.tagName) === -1;\n },\n\n _handleKeydown(e) {\n const keyCode = this.props.keyCode;\n\n // Don't trigger button on space.\n if (e.keyCode === Keys.SPACE && keyCode !== Keys.SPACE) {\n e.preventDefault();\n }\n\n // Focus button on key down.\n if (keyCode && e.keyCode === keyCode && this._canUseEnter()) {\n ReactDOM.findDOMNode(this).focus();\n }\n },\n\n _handleKeyup(e) {\n const keyCode = this.props.keyCode;\n\n // Don't trigger button on space.\n if (e.keyCode === Keys.SPACE && keyCode !== Keys.SPACE) {\n e.preventDefault();\n }\n\n // Trigger action on key up.\n if (keyCode && e.keyCode === keyCode && this._canUseEnter()) {\n this._onClick(e);\n }\n },\n\n _onClick(e) {\n if (this.props.disabled) {\n return;\n }\n\n // The last argument enableds preventStopSounds so that the click sound effect does not stop\n // other playing sounds.\n SoundManager.playEffect(CLICK, {}, true);\n\n if (this.props.onClick) {\n this.props.onClick(e);\n }\n },\n\n render() {\n const { children, disabled, focusable, focused, onClick, title } = this.props;\n const className = classnames(\n `btn btn-bar btn-nav btn-${this.props.align}`,\n { disabled },\n this.props.className\n );\n\n const props = {\n className,\n 'data-nav-button': true,\n 'data-focusable': focusable ? 'data-focusable' : null,\n 'data-default-focused': focused ? 'data-default-focused' : null,\n onClick: this._onClick,\n title,\n };\n\n return (\n \n );\n },\n});\n\nexport const Navigation = React.createClass({\n displayName: 'Navigation',\n\n propTypes: {\n disableEnterKey: React.PropTypes.bool,\n disableArrowKeys: React.PropTypes.bool,\n },\n\n getDefaultProps() {\n return {\n disableEnterKey: false,\n disableArrowKeys: false,\n };\n },\n\n componentDidMount() {\n window.addEventListener('keydown', this._handleKeydown);\n\n this.focusDefaultButton();\n },\n\n componentWillUnmount() {\n window.removeEventListener('keydown', this._handleKeydown);\n },\n\n _getFocusedButton() {\n return ReactDOM.findDOMNode(this).querySelector('.btn[data-focusable]:focus');\n },\n\n _getFocusableButtons() {\n return ReactDOM.findDOMNode(this).querySelectorAll('.btn[data-focusable]');\n },\n\n _handleKeydown(e) {\n const { keyCode } = e;\n const { disableEnterKey, disableArrowKeys } = this.props;\n\n if (disableEnterKey) {\n // Prevent default behavior on the enter key so the user can't click the button using enter.\n if (keyCode === Keys.ENTER && isNavButton(document.activeElement)) {\n e.preventDefault();\n }\n }\n\n if (!disableArrowKeys && (KeyHelpers.isLeft(keyCode) || KeyHelpers.isRight(keyCode))) {\n const focusableButtons = this._getFocusableButtons();\n\n if (focusableButtons.length === 0) {\n return;\n }\n\n // Get focused button.\n const focusedButton = this._getFocusedButton();\n\n // querySelectorAll returns NodeList instead of Array.\n let focusedIndex = Array.prototype.indexOf.call(focusableButtons, focusedButton);\n\n if (focusedIndex === -1) {\n focusedIndex = focusableButtons.length - 1;\n } else if (KeyHelpers.isLeft(keyCode) && focusedIndex > 0) {\n focusedIndex -= 1;\n } else if (KeyHelpers.isRight(keyCode) && focusedIndex < focusableButtons.length - 1) {\n focusedIndex += 1;\n }\n\n focusableButtons[focusedIndex].focus();\n }\n },\n\n render() {\n const children = this.props.children instanceof Array ? this.props.children : [this.props.children];\n\n // Reorder children to go from left to right.\n const leftChildren = children.filter(child => child.props.align === 'left');\n const rightChildren = children.filter(child => child.props.align === 'right');\n\n // Default everything else to the center.\n const centerChildren = children.filter(child => !includes(['left', 'right'], child.props.align));\n\n return (\n
\n
{leftChildren}
\n
{centerChildren}
\n
{rightChildren}
\n
\n );\n },\n\n /**\n * Focus the default NavButton (the NavButton with the focused prop set to true) if another\n * NavButton isn't already focused.\n *\n * @param {boolean} forceDefault if true, refocuses the default button even if another button is\n * currently focused.\n */\n focusDefaultButton(forceDefault) {\n // Don't focus the default button if another nav button is already focused.\n if (forceDefault !== true && this._getFocusedButton()) {\n return;\n }\n\n const defaultButton = ReactDOM.findDOMNode(this).querySelector('.btn[data-default-focused]');\n if (defaultButton) {\n defaultButton.focus();\n }\n },\n});\n","'use strict';\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = toLength(O.length);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\n\n// Forced replacement object prototype accessors methods\nmodule.exports = IS_PURE || !fails(function () {\n var key = Math.random();\n // In FF throws only define methods\n // eslint-disable-next-line no-undef, no-useless-call -- required for testing\n __defineSetter__.call(null, key, function () { /* empty */ });\n delete global[key];\n});\n","var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar regexpExec = require('../internals/regexp-exec');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\nvar REPLACE = wellKnownSymbol('replace');\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !(\n REPLACE_SUPPORTS_NAMED_GROUPS &&\n REPLACE_KEEPS_$0 &&\n !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n )) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }, {\n REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,\n REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n });\n var stringMethod = methods[0];\n var regexMethod = methods[1];\n\n redefine(String.prototype, KEY, stringMethod);\n redefine(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return regexMethod.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return regexMethod.call(string, this); }\n );\n }\n\n if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n};\n","'use strict';\nvar regexpFlags = require('./regexp-flags');\nvar stickyHelpers = require('./regexp-sticky-helpers');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\n// eslint-disable-next-line regexp/no-assertion-capturing-group, regexp/no-empty-group -- required for testing\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = regexpFlags.call(re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = flags.replace('y', '');\n if (flags.indexOf('g') === -1) {\n flags += 'g';\n }\n\n strCopy = String(str).slice(re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = match.input.slice(charsAdded);\n match[0] = match[0].slice(charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\n\nvar fails = require('./fails');\n\n// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError,\n// so we use an intermediate function.\nfunction RE(s, f) {\n return RegExp(s, f);\n}\n\nexports.UNSUPPORTED_Y = fails(function () {\n // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\n var re = RE('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = RE('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n\n if (classof(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\n","// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n typeof (NewTarget = dummy.constructor) == 'function' &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","var nativeExpm1 = Math.expm1;\nvar exp = Math.exp;\n\n// `Math.expm1` method implementation\n// https://tc39.es/ecma262/#sec-math.expm1\nmodule.exports = (!nativeExpm1\n // Old FF bug\n || nativeExpm1(10) > 22025.465794806719 || nativeExpm1(10) < 22025.4657948067165168\n // Tor Browser bug\n || nativeExpm1(-2e-17) != -2e-17\n) ? function expm1(x) {\n return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : exp(x) - 1;\n} : nativeExpm1;\n","'use strict';\nvar aFunction = require('../internals/a-function');\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n};\n\n// 25.4.1.5 NewPromiseCapability(C)\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var Constructor = NativeConstructor;\n var exported = {};\n\n var fixMethod = function (KEY) {\n var nativeMethod = NativePrototype[KEY];\n redefine(NativePrototype, KEY,\n KEY == 'add' ? function add(value) {\n nativeMethod.call(this, value === 0 ? 0 : value);\n return this;\n } : KEY == 'delete' ? function (key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'get' ? function get(key) {\n return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'has' ? function has(key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : function set(key, value) {\n nativeMethod.call(this, key === 0 ? 0 : key, value);\n return this;\n }\n );\n };\n\n var REPLACE = isForced(\n CONSTRUCTOR_NAME,\n typeof NativeConstructor != 'function' || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n new NativeConstructor().entries().next();\n }))\n );\n\n if (REPLACE) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.REQUIRED = true;\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\n var instance = new Constructor();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n // eslint-disable-next-line no-new -- required for testing\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new NativeConstructor();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n\n if (!ACCEPT_ITERABLES) {\n Constructor = wrapper(function (dummy, iterable) {\n anInstance(dummy, Constructor, CONSTRUCTOR_NAME);\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n return that;\n });\n Constructor.prototype = NativePrototype;\n NativePrototype.constructor = Constructor;\n }\n\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n // weak collections should not contains .clear method\n if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n }\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, forced: Constructor != NativeConstructor }, exported);\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n","'use strict';\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefineAll = require('../internals/redefine-all');\nvar fails = require('../internals/fails');\nvar anInstance = require('../internals/an-instance');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar IEEE754 = require('../internals/ieee754');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar arrayFill = require('../internals/array-fill');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar $DataView = global[DATA_VIEW];\nvar $DataViewPrototype = $DataView && $DataView[PROTOTYPE];\nvar ObjectPrototype = Object.prototype;\nvar RangeError = global.RangeError;\n\nvar packIEEE754 = IEEE754.pack;\nvar unpackIEEE754 = IEEE754.unpack;\n\nvar packInt8 = function (number) {\n return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar unpackInt32 = function (buffer) {\n return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packFloat32 = function (number) {\n return packIEEE754(number, 23, 4);\n};\n\nvar packFloat64 = function (number) {\n return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key) {\n defineProperty(Constructor[PROTOTYPE], key, { get: function () { return getInternalState(this)[key]; } });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n var intIndex = toIndex(index);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = bytes.slice(start, start + count);\n return isLittleEndian ? pack : pack.reverse();\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n var intIndex = toIndex(index);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = conversion(+value);\n for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n setInternalState(this, {\n bytes: arrayFill.call(new Array(byteLength), 0),\n byteLength: byteLength\n });\n if (!DESCRIPTORS) this.byteLength = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = getInternalState(buffer).byteLength;\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n setInternalState(this, {\n buffer: buffer,\n byteLength: byteLength,\n byteOffset: offset\n });\n if (!DESCRIPTORS) {\n this.buffer = buffer;\n this.byteLength = byteLength;\n this.byteOffset = offset;\n }\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, 'byteLength');\n addGetter($DataView, 'buffer');\n addGetter($DataView, 'byteLength');\n addGetter($DataView, 'byteOffset');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);\n }\n });\n} else {\n /* eslint-disable no-new -- required for testing */\n if (!fails(function () {\n NativeArrayBuffer(1);\n }) || !fails(function () {\n new NativeArrayBuffer(-1);\n }) || fails(function () {\n new NativeArrayBuffer();\n new NativeArrayBuffer(1.5);\n new NativeArrayBuffer(NaN);\n return NativeArrayBuffer.name != ARRAY_BUFFER;\n })) {\n /* eslint-enable no-new -- required for testing */\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new NativeArrayBuffer(toIndex(length));\n };\n var ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE] = NativeArrayBuffer[PROTOTYPE];\n for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) {\n createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n }\n }\n ArrayBufferPrototype.constructor = $ArrayBuffer;\n }\n\n // WebKit bug - the same parent prototype for typed arrays and data view\n if (setPrototypeOf && getPrototypeOf($DataViewPrototype) !== ObjectPrototype) {\n setPrototypeOf($DataViewPrototype, ObjectPrototype);\n }\n\n // iOS Safari 7.x bug\n var testView = new $DataView(new $ArrayBuffer(2));\n var nativeSetInt8 = $DataViewPrototype.setInt8;\n testView.setInt8(0, 2147483648);\n testView.setInt8(1, 2147483649);\n if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll($DataViewPrototype, {\n setInt8: function setInt8(byteOffset, value) {\n nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n ArrayBuffer: $ArrayBuffer,\n DataView: $DataView\n};\n","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactReconciler\n */\n'use strict';\n\nvar ReactRef = require('./ReactRef');\n\nvar ReactInstrumentation = require('./ReactInstrumentation');\n/**\n * Helper to call ReactRef.attachRefs with this composite component, split out\n * to avoid allocations in the transaction mount-ready queue.\n */\n\n\nfunction attachRefs() {\n ReactRef.attachRefs(this, this._currentElement);\n}\n\nvar ReactReconciler = {\n /**\n * Initializes the component, renders markup, and registers event listeners.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?object} the containing native component instance\n * @param {?object} info about the native container\n * @return {?string} Rendered markup to be inserted into the DOM.\n * @final\n * @internal\n */\n mountComponent: function mountComponent(internalInstance, transaction, nativeParent, nativeContainerInfo, context) {\n var markup = internalInstance.mountComponent(transaction, nativeParent, nativeContainerInfo, context);\n\n if (internalInstance._currentElement && internalInstance._currentElement.ref != null) {\n transaction.getReactMountReady().enqueue(attachRefs, internalInstance);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onMountComponent(internalInstance);\n }\n\n return markup;\n },\n\n /**\n * Returns a value that can be passed to\n * ReactComponentEnvironment.replaceNodeWithMarkup.\n */\n getNativeNode: function getNativeNode(internalInstance) {\n return internalInstance.getNativeNode();\n },\n\n /**\n * Releases any resources allocated by `mountComponent`.\n *\n * @final\n * @internal\n */\n unmountComponent: function unmountComponent(internalInstance, safely) {\n ReactRef.detachRefs(internalInstance, internalInstance._currentElement);\n internalInstance.unmountComponent(safely);\n\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onUnmountComponent(internalInstance);\n }\n },\n\n /**\n * Update a component using a new element.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactElement} nextElement\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n * @internal\n */\n receiveComponent: function receiveComponent(internalInstance, nextElement, transaction, context) {\n var prevElement = internalInstance._currentElement;\n\n if (nextElement === prevElement && context === internalInstance._context) {\n // Since elements are immutable after the owner is rendered,\n // we can do a cheap identity compare here to determine if this is a\n // superfluous reconcile. It's possible for state to be mutable but such\n // change should trigger an update of the owner which would recreate\n // the element. We explicitly check for the existence of an owner since\n // it's possible for an element created outside a composite to be\n // deeply mutated and reused.\n // TODO: Bailing out early is just a perf optimization right?\n // TODO: Removing the return statement should affect correctness?\n return;\n }\n\n var refsChanged = ReactRef.shouldUpdateRefs(prevElement, nextElement);\n\n if (refsChanged) {\n ReactRef.detachRefs(internalInstance, prevElement);\n }\n\n internalInstance.receiveComponent(nextElement, transaction, context);\n\n if (refsChanged && internalInstance._currentElement && internalInstance._currentElement.ref != null) {\n transaction.getReactMountReady().enqueue(attachRefs, internalInstance);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onUpdateComponent(internalInstance);\n }\n },\n\n /**\n * Flush any dirty changes in a component.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n performUpdateIfNecessary: function performUpdateIfNecessary(internalInstance, transaction) {\n internalInstance.performUpdateIfNecessary(transaction);\n\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onUpdateComponent(internalInstance);\n }\n }\n};\nmodule.exports = ReactReconciler;","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule DOMLazyTree\n */\n'use strict';\n\nvar createMicrosoftUnsafeLocalFunction = require('./createMicrosoftUnsafeLocalFunction');\n\nvar setTextContent = require('./setTextContent');\n/**\n * In IE (8-11) and Edge, appending nodes with no children is dramatically\n * faster than appending a full subtree, so we essentially queue up the\n * .appendChild calls here and apply them so each node is added to its parent\n * before any children are added.\n *\n * In other browsers, doing so is slower or neutral compared to the other order\n * (in Firefox, twice as slow) so we only do this inversion in IE.\n *\n * See https://github.com/spicyj/innerhtml-vs-createelement-vs-clonenode.\n */\n\n\nvar enableLazy = typeof document !== 'undefined' && typeof document.documentMode === 'number' || typeof navigator !== 'undefined' && typeof navigator.userAgent === 'string' && /\\bEdge\\/\\d/.test(navigator.userAgent);\n\nfunction insertTreeChildren(tree) {\n if (!enableLazy) {\n return;\n }\n\n var node = tree.node;\n var children = tree.children;\n\n if (children.length) {\n for (var i = 0; i < children.length; i++) {\n insertTreeBefore(node, children[i], null);\n }\n } else if (tree.html != null) {\n node.innerHTML = tree.html;\n } else if (tree.text != null) {\n setTextContent(node, tree.text);\n }\n}\n\nvar insertTreeBefore = createMicrosoftUnsafeLocalFunction(function (parentNode, tree, referenceNode) {\n // DocumentFragments aren't actually part of the DOM after insertion so\n // appending children won't update the DOM. We need to ensure the fragment\n // is properly populated first, breaking out of our lazy approach for just\n // this level.\n if (tree.node.nodeType === 11) {\n insertTreeChildren(tree);\n parentNode.insertBefore(tree.node, referenceNode);\n } else {\n parentNode.insertBefore(tree.node, referenceNode);\n insertTreeChildren(tree);\n }\n});\n\nfunction replaceChildWithTree(oldNode, newTree) {\n oldNode.parentNode.replaceChild(newTree.node, oldNode);\n insertTreeChildren(newTree);\n}\n\nfunction queueChild(parentTree, childTree) {\n if (enableLazy) {\n parentTree.children.push(childTree);\n } else {\n parentTree.node.appendChild(childTree.node);\n }\n}\n\nfunction queueHTML(tree, html) {\n if (enableLazy) {\n tree.html = html;\n } else {\n tree.node.innerHTML = html;\n }\n}\n\nfunction queueText(tree, text) {\n if (enableLazy) {\n tree.text = text;\n } else {\n setTextContent(tree.node, text);\n }\n}\n\nfunction DOMLazyTree(node) {\n return {\n node: node,\n children: [],\n html: null,\n text: null\n };\n}\n\nDOMLazyTree.insertTreeBefore = insertTreeBefore;\nDOMLazyTree.replaceChildWithTree = replaceChildWithTree;\nDOMLazyTree.queueChild = queueChild;\nDOMLazyTree.queueHTML = queueHTML;\nDOMLazyTree.queueText = queueText;\nmodule.exports = DOMLazyTree;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule EventPropagators\n */\n'use strict';\n\nvar EventConstants = require('./EventConstants');\n\nvar EventPluginHub = require('./EventPluginHub');\n\nvar EventPluginUtils = require('./EventPluginUtils');\n\nvar accumulateInto = require('./accumulateInto');\n\nvar forEachAccumulated = require('./forEachAccumulated');\n\nvar warning = require('fbjs/lib/warning');\n\nvar PropagationPhases = EventConstants.PropagationPhases;\nvar getListener = EventPluginHub.getListener;\n/**\n * Some event types have a notion of different registration names for different\n * \"phases\" of propagation. This finds listeners by a given phase.\n */\n\nfunction listenerAtPhase(inst, event, propagationPhase) {\n var registrationName = event.dispatchConfig.phasedRegistrationNames[propagationPhase];\n return getListener(inst, registrationName);\n}\n/**\n * Tags a `SyntheticEvent` with dispatched listeners. Creating this function\n * here, allows us to not have to bind or create functions for each event.\n * Mutating the event's members allows us to not have to create a wrapping\n * \"dispatch\" object that pairs the event with the listener.\n */\n\n\nfunction accumulateDirectionalDispatches(inst, upwards, event) {\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(inst, 'Dispatching inst must not be null') : void 0;\n }\n\n var phase = upwards ? PropagationPhases.bubbled : PropagationPhases.captured;\n var listener = listenerAtPhase(inst, event, phase);\n\n if (listener) {\n event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);\n event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);\n }\n}\n/**\n * Collect dispatches (must be entirely collected before dispatching - see unit\n * tests). Lazily allocate the array to conserve memory. We must loop through\n * each event and perform the traversal for each one. We cannot perform a\n * single traversal for the entire collection of events because each event may\n * have a different target.\n */\n\n\nfunction accumulateTwoPhaseDispatchesSingle(event) {\n if (event && event.dispatchConfig.phasedRegistrationNames) {\n EventPluginUtils.traverseTwoPhase(event._targetInst, accumulateDirectionalDispatches, event);\n }\n}\n/**\n * Same as `accumulateTwoPhaseDispatchesSingle`, but skips over the targetID.\n */\n\n\nfunction accumulateTwoPhaseDispatchesSingleSkipTarget(event) {\n if (event && event.dispatchConfig.phasedRegistrationNames) {\n var targetInst = event._targetInst;\n var parentInst = targetInst ? EventPluginUtils.getParentInstance(targetInst) : null;\n EventPluginUtils.traverseTwoPhase(parentInst, accumulateDirectionalDispatches, event);\n }\n}\n/**\n * Accumulates without regard to direction, does not look for phased\n * registration names. Same as `accumulateDirectDispatchesSingle` but without\n * requiring that the `dispatchMarker` be the same as the dispatched ID.\n */\n\n\nfunction accumulateDispatches(inst, ignoredDirection, event) {\n if (event && event.dispatchConfig.registrationName) {\n var registrationName = event.dispatchConfig.registrationName;\n var listener = getListener(inst, registrationName);\n\n if (listener) {\n event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);\n event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);\n }\n }\n}\n/**\n * Accumulates dispatches on an `SyntheticEvent`, but only for the\n * `dispatchMarker`.\n * @param {SyntheticEvent} event\n */\n\n\nfunction accumulateDirectDispatchesSingle(event) {\n if (event && event.dispatchConfig.registrationName) {\n accumulateDispatches(event._targetInst, null, event);\n }\n}\n\nfunction accumulateTwoPhaseDispatches(events) {\n forEachAccumulated(events, accumulateTwoPhaseDispatchesSingle);\n}\n\nfunction accumulateTwoPhaseDispatchesSkipTarget(events) {\n forEachAccumulated(events, accumulateTwoPhaseDispatchesSingleSkipTarget);\n}\n\nfunction accumulateEnterLeaveDispatches(leave, enter, from, to) {\n EventPluginUtils.traverseEnterLeave(from, to, accumulateDispatches, leave, enter);\n}\n\nfunction accumulateDirectDispatches(events) {\n forEachAccumulated(events, accumulateDirectDispatchesSingle);\n}\n/**\n * A small set of propagation patterns, each of which will accept a small amount\n * of information, and generate a set of \"dispatch ready event objects\" - which\n * are sets of events that have already been annotated with a set of dispatched\n * listener functions/ids. The API is designed this way to discourage these\n * propagation strategies from actually executing the dispatches, since we\n * always want to collect the entire set of dispatches before executing event a\n * single one.\n *\n * @constructor EventPropagators\n */\n\n\nvar EventPropagators = {\n accumulateTwoPhaseDispatches: accumulateTwoPhaseDispatches,\n accumulateTwoPhaseDispatchesSkipTarget: accumulateTwoPhaseDispatchesSkipTarget,\n accumulateDirectDispatches: accumulateDirectDispatches,\n accumulateEnterLeaveDispatches: accumulateEnterLeaveDispatches\n};\nmodule.exports = EventPropagators;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule EventPluginHub\n */\n'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar EventPluginRegistry = require('./EventPluginRegistry');\n\nvar EventPluginUtils = require('./EventPluginUtils');\n\nvar ReactErrorUtils = require('./ReactErrorUtils');\n\nvar accumulateInto = require('./accumulateInto');\n\nvar forEachAccumulated = require('./forEachAccumulated');\n\nvar invariant = require('fbjs/lib/invariant');\n/**\n * Internal store for event listeners\n */\n\n\nvar listenerBank = {};\n/**\n * Internal queue of events that have accumulated their dispatches and are\n * waiting to have their dispatches executed.\n */\n\nvar eventQueue = null;\n/**\n * Dispatches an event and releases it back into the pool, unless persistent.\n *\n * @param {?object} event Synthetic event to be dispatched.\n * @param {boolean} simulated If the event is simulated (changes exn behavior)\n * @private\n */\n\nvar executeDispatchesAndRelease = function executeDispatchesAndRelease(event, simulated) {\n if (event) {\n EventPluginUtils.executeDispatchesInOrder(event, simulated);\n\n if (!event.isPersistent()) {\n event.constructor.release(event);\n }\n }\n};\n\nvar executeDispatchesAndReleaseSimulated = function executeDispatchesAndReleaseSimulated(e) {\n return executeDispatchesAndRelease(e, true);\n};\n\nvar executeDispatchesAndReleaseTopLevel = function executeDispatchesAndReleaseTopLevel(e) {\n return executeDispatchesAndRelease(e, false);\n};\n/**\n * This is a unified interface for event plugins to be installed and configured.\n *\n * Event plugins can implement the following properties:\n *\n * `extractEvents` {function(string, DOMEventTarget, string, object): *}\n * Required. When a top-level event is fired, this method is expected to\n * extract synthetic events that will in turn be queued and dispatched.\n *\n * `eventTypes` {object}\n * Optional, plugins that fire events must publish a mapping of registration\n * names that are used to register listeners. Values of this mapping must\n * be objects that contain `registrationName` or `phasedRegistrationNames`.\n *\n * `executeDispatch` {function(object, function, string)}\n * Optional, allows plugins to override how an event gets dispatched. By\n * default, the listener is simply invoked.\n *\n * Each plugin that is injected into `EventsPluginHub` is immediately operable.\n *\n * @public\n */\n\n\nvar EventPluginHub = {\n /**\n * Methods for injecting dependencies.\n */\n injection: {\n /**\n * @param {array} InjectedEventPluginOrder\n * @public\n */\n injectEventPluginOrder: EventPluginRegistry.injectEventPluginOrder,\n\n /**\n * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n */\n injectEventPluginsByName: EventPluginRegistry.injectEventPluginsByName\n },\n\n /**\n * Stores `listener` at `listenerBank[registrationName][id]`. Is idempotent.\n *\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @param {function} listener The callback to store.\n */\n putListener: function putListener(inst, registrationName, listener) {\n !(typeof listener === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected %s listener to be a function, instead got type %s', registrationName, _typeof(listener)) : invariant(false) : void 0;\n var bankForRegistrationName = listenerBank[registrationName] || (listenerBank[registrationName] = {});\n bankForRegistrationName[inst._rootNodeID] = listener;\n var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n\n if (PluginModule && PluginModule.didPutListener) {\n PluginModule.didPutListener(inst, registrationName, listener);\n }\n },\n\n /**\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @return {?function} The stored callback.\n */\n getListener: function getListener(inst, registrationName) {\n var bankForRegistrationName = listenerBank[registrationName];\n return bankForRegistrationName && bankForRegistrationName[inst._rootNodeID];\n },\n\n /**\n * Deletes a listener from the registration bank.\n *\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n */\n deleteListener: function deleteListener(inst, registrationName) {\n var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n\n if (PluginModule && PluginModule.willDeleteListener) {\n PluginModule.willDeleteListener(inst, registrationName);\n }\n\n var bankForRegistrationName = listenerBank[registrationName]; // TODO: This should never be null -- when is it?\n\n if (bankForRegistrationName) {\n delete bankForRegistrationName[inst._rootNodeID];\n }\n },\n\n /**\n * Deletes all listeners for the DOM element with the supplied ID.\n *\n * @param {object} inst The instance, which is the source of events.\n */\n deleteAllListeners: function deleteAllListeners(inst) {\n for (var registrationName in listenerBank) {\n if (!listenerBank[registrationName][inst._rootNodeID]) {\n continue;\n }\n\n var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n\n if (PluginModule && PluginModule.willDeleteListener) {\n PluginModule.willDeleteListener(inst, registrationName);\n }\n\n delete listenerBank[registrationName][inst._rootNodeID];\n }\n },\n\n /**\n * Allows registered plugins an opportunity to extract events from top-level\n * native browser events.\n *\n * @return {*} An accumulation of synthetic events.\n * @internal\n */\n extractEvents: function extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var events;\n var plugins = EventPluginRegistry.plugins;\n\n for (var i = 0; i < plugins.length; i++) {\n // Not every plugin in the ordering may be loaded at runtime.\n var possiblePlugin = plugins[i];\n\n if (possiblePlugin) {\n var extractedEvents = possiblePlugin.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);\n\n if (extractedEvents) {\n events = accumulateInto(events, extractedEvents);\n }\n }\n }\n\n return events;\n },\n\n /**\n * Enqueues a synthetic event that should be dispatched when\n * `processEventQueue` is invoked.\n *\n * @param {*} events An accumulation of synthetic events.\n * @internal\n */\n enqueueEvents: function enqueueEvents(events) {\n if (events) {\n eventQueue = accumulateInto(eventQueue, events);\n }\n },\n\n /**\n * Dispatches all synthetic events on the event queue.\n *\n * @internal\n */\n processEventQueue: function processEventQueue(simulated) {\n // Set `eventQueue` to null before processing it so that we can tell if more\n // events get enqueued while processing.\n var processingEventQueue = eventQueue;\n eventQueue = null;\n\n if (simulated) {\n forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseSimulated);\n } else {\n forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseTopLevel);\n }\n\n !!eventQueue ? process.env.NODE_ENV !== 'production' ? invariant(false, 'processEventQueue(): Additional events were enqueued while processing ' + 'an event queue. Support for this has not yet been implemented.') : invariant(false) : void 0; // This would be a good time to rethrow if any of the event handlers threw.\n\n ReactErrorUtils.rethrowCaughtError();\n },\n\n /**\n * These are needed for tests only. Do not use!\n */\n __purge: function __purge() {\n listenerBank = {};\n },\n __getListenerBank: function __getListenerBank() {\n return listenerBank;\n }\n};\nmodule.exports = EventPluginHub;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SyntheticUIEvent\n */\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\nvar getEventTarget = require('./getEventTarget');\n/**\n * @interface UIEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\n\n\nvar UIEventInterface = {\n view: function view(event) {\n if (event.view) {\n return event.view;\n }\n\n var target = getEventTarget(event);\n\n if (target != null && target.window === target) {\n // target is a window object\n return target;\n }\n\n var doc = target.ownerDocument; // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n\n if (doc) {\n return doc.defaultView || doc.parentWindow;\n } else {\n return window;\n }\n },\n detail: function detail(event) {\n return event.detail || 0;\n }\n};\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\n\nfunction SyntheticUIEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticUIEvent, UIEventInterface);\nmodule.exports = SyntheticUIEvent;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar DOWNLOAD_DELAY = exports.DOWNLOAD_DELAY = 200;\nvar SHOW_DELAY = exports.SHOW_DELAY = 300;\nvar HIDE_DELAY = exports.HIDE_DELAY = 150;\nvar API = exports.API = '//iknow.jp/api/sentence_dictionary';\nvar FEEDBACK_URL = exports.FEEDBACK_URL = 'http://iknow.jp/dictionary_entry_feedbacks/new';\nvar AUTOSCAN_CLASS = exports.AUTOSCAN_CLASS = 'iknow-dictionary-here';\nvar POPUP_CLASS = exports.POPUP_CLASS = 'iknow-dictionary-target';\nvar BUTTON_CLASS = exports.BUTTON_CLASS = 'iknow-dictionary-button';\nvar BUTTON_RESTING_OPACITY = exports.BUTTON_RESTING_OPACITY = '0.4'; // Accommodates for rounded corners on the box\n\nvar ARROW_SAFETY_MARGIN = exports.ARROW_SAFETY_MARGIN = 12;","/* eslint-disable no-return-assign, react/sort-comp, no-param-reassign, no-console, radix, array-callback-return, consistent-return */\nimport React, { Component, PropTypes } from 'react';\nimport ReactDOM from 'react-dom';\n\n/**\n * Usage:\n *\n * `text`\n *\n * ```\n *
\n *

\n * text\n *

\n *
\n * ```\n *\n * FitText shrinks (but does not grow) the font size of all nested children inside of it until the\n * height of the FitText component is <= the maxHeight. You can specify a maxHeight (in pixels)\n * explicitly via the `maxHeight` prop, or by setting the `max-height` CSS property of any of its\n * parent elements (but not the FitText element itself). It is intended to replace the legacy\n * variable_type class.\n *\n * NOTE: You should never give the FitText component a fixed height, or else its height will not\n * shrink no matter how much the font sizes are reduced, and FitText will have no way of knowing\n * when it should stop reducing the font size.\n *\n * NOTE: The children inside of a FitText component should only be basic HTML elements and not React\n * components. If a React component inside of a FitText updates itself via setState/forceUpdate,\n * then componentWillUpdate/componentDidUpdate will not be called on the containing FitText, and\n * resizing of the font sizes will not be triggered.\n *\n * If FitText needs to wrap React components in the future, or if the ability to resize some pieces\n * of text but not others in the same container is needed, it might be a good idea to implement a\n * Context/Child pattern to explicity specify which components should have their text resized. This\n * might look something like:\n *\n * \n *

Don't resize this.

\n *

Resize this.

\n *
\n *\n * FitTextChild components would tell their context to do font resizing when they update, and the\n * FitTextContext would resize all of the FitTextChild components inside of it together.\n */\nexport default class FitText extends Component {\n constructor() {\n super();\n\n // Save a reference to the container's DOM node so we can walk through its children and modify\n // their styles directly.\n this.saveContainerNode = ref => this.container = ReactDOM.findDOMNode(ref);\n }\n\n componentDidMount() {\n this.resize();\n }\n\n componentWillUpdate() {\n this.resetFontSizes();\n }\n\n componentDidUpdate() {\n this.resize();\n }\n\n /**\n * Before the child elements update, reset all of ther fontSize inline styles to whatever they\n * were before we started messing with the styles.\n *\n * NOTE: By the time resize() gets called by componentDidUpdate, the fontSize inline style will\n * not necessarily be the same value as it was set to here, because one of the child components\n * might have an updated style attribute.\n */\n resetFontSizes() {\n const elements = flattenAllElements(this.container);\n elements.forEach(element => {\n const originalFontSize = element.dataset[FitText.ORIGINAL_FONT_SIZE];\n if (originalFontSize) {\n element.style.fontSize = `${originalFontSize}px`;\n }\n });\n }\n\n /**\n * Shrink the font-size of the container and all of its nested children 1px at a time until\n * either:\n *\n * 1. The size of the container is less then its maxHeight.\n * 2. All of the elements have been shrunken to the minimumFontSize.\n */\n resize() {\n const maxHeight = this.getMaxHeight();\n\n // We can't fit the text if we don't know what dimensions it needs to fit inside of.\n if (process.env.NODE_ENV !== 'production' && !Number.isFinite(maxHeight)) {\n console.error('FitText aborting resizing because there was no maxHeight prop or ' +\n 'max-height style on container element.');\n return;\n }\n\n // Get all nested elements as a flat array.\n const elements = flattenAllElements(this.container);\n\n // Package each element with its font size converted to a number so we can easily change it.\n //\n // Also, save what the font size was before we started messing with the styles.\n const children = elements.map(element => {\n const initialFontSize = parseInt(window.getComputedStyle(element).fontSize.replace(/px/));\n\n element.dataset[FitText.ORIGINAL_FONT_SIZE] = initialFontSize;\n\n return { element, fontSize: initialFontSize };\n });\n\n // Returns false if all of the elements are already at the minimum font size.\n const canShrink = () =>\n children.some(({ fontSize }) => fontSize > this.props.minFontSize);\n\n // Loop until the container fits the maxHeight.\n while (this.container.getBoundingClientRect().height > maxHeight && canShrink()) {\n children.map(child => {\n // For each child, reduce its font size if it's not already at the minimum size.\n if (child.fontSize > this.props.minFontSize) {\n child.fontSize -= 1;\n child.element.style.fontSize = `${child.fontSize}px`;\n }\n });\n }\n }\n\n /**\n * If the maxHeight prop is set, returns it.\n *\n * Otherwise, searches through all parent elements until it finds the first element with a\n * fixed max-height CSS property and returns it as an integer.\n */\n getMaxHeight() {\n // Return the maxHeight prop if set.\n if (this.props.maxHeight) {\n return this.props.maxHeight;\n }\n\n // Make sure that the container itself doesn't have a max-height, because that will cause\n // getBoundingClientRect() to be bound by that max-height, making it impossible to check if we\n // need to resize the text to fit inside the container.\n if (process.env.NODE_ENV !== 'production' &&\n Number.isFinite(parseInt(window.getComputedStyle(this.container).maxHeight.replace(/px/)))) {\n console.error('FitText aborting resizing because the container had a max-height set.');\n return undefined;\n }\n\n // Otherwise, search the chain of parent elements and return the first one with a fixed\n // max-height CSS property set.\n let element = this.container.parentElement;\n\n while (element) {\n // Get the max-height property.\n const computedStyle = window.getComputedStyle(element);\n const maxHeight = parseInt(computedStyle.maxHeight.replace(/px/));\n\n // Return the max-height if it is set.\n if (Number.isFinite(maxHeight)) {\n return maxHeight;\n }\n\n // Otherwise, try the parent element.\n element = element.parentElement;\n }\n\n // Just return undefined if we couldn't find any max-height property.\n return undefined;\n }\n\n render() {\n return (\n \n {this.props.children}\n \n );\n }\n}\n\nFitText.propTypes = {\n // The maximum container height in pixels.\n maxHeight: PropTypes.number,\n // TODO: Add support for setting maxWidth?\n // The minimum font size in pixels.\n minFontSize: PropTypes.number,\n // Only allow basic HTML elements in the entire tree of children, because if a child React\n // component updates itself via setState then the FitText component won't receive the\n // componentDidUpdate event and won't resize the fonts.\n children: (props, propName, componentName) => {\n const walkChildren = (children, callback) => {\n React.Children.forEach(children, child => {\n callback(child);\n\n if (child && child.props && child.props.children) {\n walkChildren(child.props.children, callback);\n }\n });\n };\n\n const throwIfNotBasicElement = (element) => {\n if (element && element.type && typeof element.type !== 'string') {\n throw new Error('FitText components should only contain basic HTML elements. If you must have ' +\n 'React components as children, you should set an key property on the FitText component ' +\n 'based on the text to force it to re-shrink the text when it changes.');\n }\n };\n\n try {\n walkChildren(props.children, throwIfNotBasicElement);\n } catch (error) {\n // Custom validators are supposed to return errors instead of throwing them, so catch the\n // error and then return it.\n return error;\n }\n },\n};\n\nFitText.defaultProps = {\n minFontSize: 11,\n};\n\n// Name of the data attribute used to save the original font size of each child element.\nFitText.ORIGINAL_FONT_SIZE = '__fitTextOriginalFontSize';\n\n/**\n * Given a DOM element returns a flattened array of all of it and its nested children.\n */\nfunction flattenAllElements(parentElement) {\n const result = [parentElement];\n\n const walkChildren = children => {\n if (!children) {\n return;\n }\n\n for (let i = 0; i < children.length; i++) {\n // Don't add elements with the data-fit-text=\"no-resize\".\n if (children[i].dataset.fitText !== 'no-resize') {\n result.push(children[i]);\n\n // Depth-first search through sub-children.\n walkChildren(children[i].children);\n }\n }\n };\n\n walkChildren(parentElement.children);\n\n return result;\n}\n","/* eslint-disable prefer-template */\nimport Logger from 'es6/services/logger';\nimport ServerTimeManager from 'es6/services/server-time-manager';\n\nexport const ResultTypes = Object.freeze({\n SEEN: 'Seen',\n CORRECT: 'Correct',\n EASY: 'Easy',\n OK: 'Ok',\n HARD: 'Hard',\n ALMOST_CORRECT: 'AlmostCorrect',\n CORRECT_WITH_HINT: 'CorrectWithHint',\n INCORRECT: 'Incorrect',\n YIELD_ON_RECALL: 'YieldOnRecall',\n YIELD_ON_QUIZ: 'YieldOnQuiz',\n TIMEOUT: 'TimeOutFailure',\n});\n\nexport const CorrectTypes = [\n ResultTypes.SEEN,\n ResultTypes.CORRECT,\n ResultTypes.CORRECT_WITH_HINT,\n ResultTypes.OK,\n ResultTypes.EASY,\n ResultTypes.HARD,\n];\n\nexport class QuizResult {\n constructor(contentDomain, contentId, goalId, leQuizType = null) {\n this._currentPhase = null;\n this._phaseStart = null;\n this._timingInfo = {};\n this._pauseStarted = null;\n this._pauseDurationInPhase = 0;\n\n // Quiz data to return to the learning engine.\n this.contentDomain = contentDomain;\n this.contentId = contentId;\n this.goalId = goalId;\n this.leQuizType = leQuizType;\n this.quizData = {};\n }\n\n setResult(result) {\n if (!_.contains(_.values(ResultTypes), result)) {\n throw new Error('Unrecognized result type: ' + result);\n }\n this.leQuizResult = result;\n }\n\n isCorrect() {\n return _.contains(CorrectTypes, this.leQuizResult);\n }\n\n isTimeout() {\n return this.leQuizResult === ResultTypes.TIMEOUT;\n }\n\n beginPhase(phaseName) {\n // Set the occurredAt value if this is the first phase.\n if (!this.occurredAt) {\n this.occurredAt = ServerTimeManager.currentTimestamp();\n }\n\n this.endCurrentPhase();\n this._pauseDurationInPhase = 0;\n\n this._currentPhase = phaseName;\n this._phaseStart = this._nowTime();\n }\n\n isPhase(phaseName) {\n return this._currentPhase === phaseName;\n }\n\n endCurrentPhase() {\n if (!this._currentPhase) { return; }\n\n // Calculate duration of phase.\n const now = this._nowTime();\n let duration = now - this._phaseStart - this._pauseDurationInPhase;\n // Ensure phase has non-negative duration.\n if (duration < 0) {\n Logger.error('QuizResult', 'Negative duration logged in Quiz Result.', duration, now, this._phaseStart, this._pauseDurationInPhase);\n duration = 0;\n }\n this._timingInfo[this._currentPhase + 'TimeMillis'] = duration;\n\n this._currentPhase = null;\n this._phaseStart = null;\n }\n\n /**\n * Finalizes the quiz result and prepares the object to be sent\n * to the server.\n *\n * @returns {QuizResult}\n */\n finalize() {\n if (!this.leQuizType) {\n throw new ReferenceError('QuizType must be defined.');\n }\n\n // End the current phase in case the quiz is being force finished.\n this.endCurrentPhase();\n\n // Finalize timing data (ignore studyTimeMillis as that is only time\n // spent on the relearn screen, not total time that the server wants).\n _.extend(this, _.omit(this._timingInfo, 'studyTimeMillis'));\n\n // Calculate total study time.\n this.studyTimeMillis = _.values(this._timingInfo).reduce((a, b) => a + b, 0);\n\n // Finally remove private properties.\n delete this._currentPhase;\n delete this._phaseStart;\n delete this._timingInfo;\n delete this._pauseStarted;\n delete this._pauseDurationInPhase;\n\n return this;\n }\n\n pause() {\n this._pauseStarted = this._nowTime();\n }\n\n resume() {\n // Item may have been started during a pause. We will ignore the resume\n // event in this case. Note this could cause timing to be off by a few ms.\n if (!this._pauseStarted) {\n return;\n }\n\n this._pauseDurationInPhase += this._nowTime() - this._pauseStarted;\n this._pauseStarted = null;\n }\n\n _nowTime() {\n return new Date().getTime();\n }\n}\n\nexport default QuizResult;\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.9.1',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n});\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","exports.f = Object.getOwnPropertySymbols;\n","var IS_NODE = require('../internals/engine-is-node');\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n /* global Symbol -- required for testing */\n return !Symbol.sham &&\n // Chrome 38 Symbol has incorrect toString conversion\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n (IS_NODE ? V8_VERSION === 38 : V8_VERSION > 37 && V8_VERSION < 41);\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","var isRegExp = require('../internals/is-regexp');\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (error1) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (error2) { /* empty */ }\n } return false;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","// https://github.com/tc39/proposal-string-pad-start-end\nvar toLength = require('../internals/to-length');\nvar repeat = require('../internals/string-repeat');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar ceil = Math.ceil;\n\n// `String.prototype.{ padStart, padEnd }` methods implementation\nvar createMethod = function (IS_END) {\n return function ($this, maxLength, fillString) {\n var S = String(requireObjectCoercible($this));\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : String(fillString);\n var intMaxLength = toLength(maxLength);\n var fillLen, stringFiller;\n if (intMaxLength <= stringLength || fillStr == '') return S;\n fillLen = intMaxLength - stringLength;\n stringFiller = repeat.call(fillStr, ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);\n return IS_END ? S + stringFiller : stringFiller + S;\n };\n};\n\nmodule.exports = {\n // `String.prototype.padStart` method\n // https://tc39.es/ecma262/#sec-string.prototype.padstart\n start: createMethod(false),\n // `String.prototype.padEnd` method\n // https://tc39.es/ecma262/#sec-string.prototype.padend\n end: createMethod(true)\n};\n","'use strict';\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.repeat` method implementation\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\nmodule.exports = ''.repeat || function repeat(count) {\n var str = String(requireObjectCoercible(this));\n var result = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n","var fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n });\n};\n","// `Math.sign` method implementation\n// https://tc39.es/ecma262/#sec-math.sign\nmodule.exports = Math.sign || function sign(x) {\n // eslint-disable-next-line no-self-compare -- NaN check\n return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar bind = require('../internals/function-bind-context');\nvar html = require('../internals/html');\nvar createElement = require('../internals/document-create-element');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar location = global.location;\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\n\nvar run = function (id) {\n // eslint-disable-next-line no-prototype-builtins -- safe\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(id + '', location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func -- spec requirement\n (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n typeof postMessage == 'function' &&\n !global.importScripts &&\n location && location.protocol !== 'file:' &&\n !fails(post)\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","module.exports = typeof ArrayBuffer !== 'undefined' && typeof DataView !== 'undefined';\n","/* eslint-disable no-new -- required for testing */\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar NATIVE_ARRAY_BUFFER_VIEWS = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER_VIEWS;\n\nvar ArrayBuffer = global.ArrayBuffer;\nvar Int8Array = global.Int8Array;\n\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n Int8Array(1);\n}) || !fails(function () {\n new Int8Array(-1);\n}) || !checkCorrectnessOfIteration(function (iterable) {\n new Int8Array();\n new Int8Array(null);\n new Int8Array(1.5);\n new Int8Array(iterable);\n}, true) || fails(function () {\n // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill\n return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n});\n","function buildPath(name) {\n return `/_assets/apps/common/${name}.mp3`;\n}\n\nexport const CLICK = buildPath('click');\n\nexport const CORRECT = buildPath('correct');\n\nexport const COURSE_COMPLETION = buildPath('course-completion');\n\nexport const INCORRECT = buildPath('incorrect');\n\nexport const RECALL = buildPath('recall');\n\nexport const DONE = buildPath('done');\n\nexport const WELCOME = buildPath('welcome');\n\nexport const TIMEOUT = buildPath('timeout');\n\nexport const TYPING = buildPath('typing');\n\nexport const RAPID_CHOICE_CORRECT = buildPath('rapid_choice_correct');\n\nexport const RAPID_CHOICE_INCORRECT = buildPath('rapid_choice_incorrect');\n\nexport const SPELL_CORRECT = buildPath('spell_correct');\n\nexport const SPELL_INCORRECT = buildPath('spell_incorrect');\n\nexport const ACHIEVEMENT = buildPath('achievement');\n\nexport const CHECKPOINT = buildPath('checkpoint');\n","/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactInstrumentation\n */\n'use strict';\n\nvar ReactDebugTool = require('./ReactDebugTool');\n\nmodule.exports = {\n debugTool: ReactDebugTool\n};","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n'use strict';\n\nvar emptyObject = {};\n\nif (process.env.NODE_ENV !== 'production') {\n Object.freeze(emptyObject);\n}\n\nmodule.exports = emptyObject;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactPropTypeLocations\n */\n'use strict';\n\nvar keyMirror = require('fbjs/lib/keyMirror');\n\nvar ReactPropTypeLocations = keyMirror({\n prop: null,\n context: null,\n childContext: null\n});\nmodule.exports = ReactPropTypeLocations;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks static-only\n */\n'use strict';\n\nvar invariant = require('./invariant');\n/**\n * Constructs an enumeration with keys equal to their value.\n *\n * For example:\n *\n * var COLORS = keyMirror({blue: null, red: null});\n * var myColor = COLORS.blue;\n * var isColorValid = !!COLORS[myColor];\n *\n * The last line could not be performed if the values of the generated enum were\n * not equal to their keys.\n *\n * Input: {key1: val1, key2: val2}\n * Output: {key1: key1, key2: key2}\n *\n * @param {object} obj\n * @return {object}\n */\n\n\nvar keyMirror = function keyMirror(obj) {\n var ret = {};\n var key;\n !(obj instanceof Object && !Array.isArray(obj)) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'keyMirror(...): Argument must be an object.') : invariant(false) : void 0;\n\n for (key in obj) {\n if (!obj.hasOwnProperty(key)) {\n continue;\n }\n\n ret[key] = key;\n }\n\n return ret;\n};\n\nmodule.exports = keyMirror;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactPropTypeLocationNames\n */\n'use strict';\n\nvar ReactPropTypeLocationNames = {};\n\nif (process.env.NODE_ENV !== 'production') {\n ReactPropTypeLocationNames = {\n prop: 'prop',\n context: 'context',\n childContext: 'child context'\n };\n}\n\nmodule.exports = ReactPropTypeLocationNames;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule EventPluginRegistry\n */\n'use strict';\n\nvar invariant = require('fbjs/lib/invariant');\n/**\n * Injectable ordering of event plugins.\n */\n\n\nvar EventPluginOrder = null;\n/**\n * Injectable mapping from names to event plugin modules.\n */\n\nvar namesToPlugins = {};\n/**\n * Recomputes the plugin list using the injected plugins and plugin ordering.\n *\n * @private\n */\n\nfunction recomputePluginOrdering() {\n if (!EventPluginOrder) {\n // Wait until an `EventPluginOrder` is injected.\n return;\n }\n\n for (var pluginName in namesToPlugins) {\n var PluginModule = namesToPlugins[pluginName];\n var pluginIndex = EventPluginOrder.indexOf(pluginName);\n !(pluginIndex > -1) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject event plugins that do not exist in ' + 'the plugin ordering, `%s`.', pluginName) : invariant(false) : void 0;\n\n if (EventPluginRegistry.plugins[pluginIndex]) {\n continue;\n }\n\n !PluginModule.extractEvents ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Event plugins must implement an `extractEvents` ' + 'method, but `%s` does not.', pluginName) : invariant(false) : void 0;\n EventPluginRegistry.plugins[pluginIndex] = PluginModule;\n var publishedEvents = PluginModule.eventTypes;\n\n for (var eventName in publishedEvents) {\n !publishEventForPlugin(publishedEvents[eventName], PluginModule, eventName) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.', eventName, pluginName) : invariant(false) : void 0;\n }\n }\n}\n/**\n * Publishes an event so that it can be dispatched by the supplied plugin.\n *\n * @param {object} dispatchConfig Dispatch configuration for the event.\n * @param {object} PluginModule Plugin publishing the event.\n * @return {boolean} True if the event was successfully published.\n * @private\n */\n\n\nfunction publishEventForPlugin(dispatchConfig, PluginModule, eventName) {\n !!EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same ' + 'event name, `%s`.', eventName) : invariant(false) : void 0;\n EventPluginRegistry.eventNameDispatchConfigs[eventName] = dispatchConfig;\n var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n\n if (phasedRegistrationNames) {\n for (var phaseName in phasedRegistrationNames) {\n if (phasedRegistrationNames.hasOwnProperty(phaseName)) {\n var phasedRegistrationName = phasedRegistrationNames[phaseName];\n publishRegistrationName(phasedRegistrationName, PluginModule, eventName);\n }\n }\n\n return true;\n } else if (dispatchConfig.registrationName) {\n publishRegistrationName(dispatchConfig.registrationName, PluginModule, eventName);\n return true;\n }\n\n return false;\n}\n/**\n * Publishes a registration name that is used to identify dispatched events and\n * can be used with `EventPluginHub.putListener` to register listeners.\n *\n * @param {string} registrationName Registration name to add.\n * @param {object} PluginModule Plugin publishing the event.\n * @private\n */\n\n\nfunction publishRegistrationName(registrationName, PluginModule, eventName) {\n !!EventPluginRegistry.registrationNameModules[registrationName] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same ' + 'registration name, `%s`.', registrationName) : invariant(false) : void 0;\n EventPluginRegistry.registrationNameModules[registrationName] = PluginModule;\n EventPluginRegistry.registrationNameDependencies[registrationName] = PluginModule.eventTypes[eventName].dependencies;\n\n if (process.env.NODE_ENV !== 'production') {\n var lowerCasedName = registrationName.toLowerCase();\n EventPluginRegistry.possibleRegistrationNames[lowerCasedName] = registrationName;\n }\n}\n/**\n * Registers plugins so that they can extract and dispatch events.\n *\n * @see {EventPluginHub}\n */\n\n\nvar EventPluginRegistry = {\n /**\n * Ordered list of injected plugins.\n */\n plugins: [],\n\n /**\n * Mapping from event name to dispatch config\n */\n eventNameDispatchConfigs: {},\n\n /**\n * Mapping from registration name to plugin module\n */\n registrationNameModules: {},\n\n /**\n * Mapping from registration name to event name\n */\n registrationNameDependencies: {},\n\n /**\n * Mapping from lowercase registration names to the properly cased version,\n * used to warn in the case of missing event handlers. Available\n * only in __DEV__.\n * @type {Object}\n */\n possibleRegistrationNames: process.env.NODE_ENV !== 'production' ? {} : null,\n\n /**\n * Injects an ordering of plugins (by plugin name). This allows the ordering\n * to be decoupled from injection of the actual plugins so that ordering is\n * always deterministic regardless of packaging, on-the-fly injection, etc.\n *\n * @param {array} InjectedEventPluginOrder\n * @internal\n * @see {EventPluginHub.injection.injectEventPluginOrder}\n */\n injectEventPluginOrder: function injectEventPluginOrder(InjectedEventPluginOrder) {\n !!EventPluginOrder ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject event plugin ordering more than ' + 'once. You are likely trying to load more than one copy of React.') : invariant(false) : void 0; // Clone the ordering so it cannot be dynamically mutated.\n\n EventPluginOrder = Array.prototype.slice.call(InjectedEventPluginOrder);\n recomputePluginOrdering();\n },\n\n /**\n * Injects plugins to be used by `EventPluginHub`. The plugin names must be\n * in the ordering injected by `injectEventPluginOrder`.\n *\n * Plugins can be injected as part of page initialization or on-the-fly.\n *\n * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n * @internal\n * @see {EventPluginHub.injection.injectEventPluginsByName}\n */\n injectEventPluginsByName: function injectEventPluginsByName(injectedNamesToPlugins) {\n var isOrderingDirty = false;\n\n for (var pluginName in injectedNamesToPlugins) {\n if (!injectedNamesToPlugins.hasOwnProperty(pluginName)) {\n continue;\n }\n\n var PluginModule = injectedNamesToPlugins[pluginName];\n\n if (!namesToPlugins.hasOwnProperty(pluginName) || namesToPlugins[pluginName] !== PluginModule) {\n !!namesToPlugins[pluginName] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject two different event plugins ' + 'using the same name, `%s`.', pluginName) : invariant(false) : void 0;\n namesToPlugins[pluginName] = PluginModule;\n isOrderingDirty = true;\n }\n }\n\n if (isOrderingDirty) {\n recomputePluginOrdering();\n }\n },\n\n /**\n * Looks up the plugin for the supplied event.\n *\n * @param {object} event A synthetic event.\n * @return {?object} The plugin that created the supplied event.\n * @internal\n */\n getPluginModuleForEvent: function getPluginModuleForEvent(event) {\n var dispatchConfig = event.dispatchConfig;\n\n if (dispatchConfig.registrationName) {\n return EventPluginRegistry.registrationNameModules[dispatchConfig.registrationName] || null;\n }\n\n for (var phase in dispatchConfig.phasedRegistrationNames) {\n if (!dispatchConfig.phasedRegistrationNames.hasOwnProperty(phase)) {\n continue;\n }\n\n var PluginModule = EventPluginRegistry.registrationNameModules[dispatchConfig.phasedRegistrationNames[phase]];\n\n if (PluginModule) {\n return PluginModule;\n }\n }\n\n return null;\n },\n\n /**\n * Exposed for unit testing.\n * @private\n */\n _resetEventPlugins: function _resetEventPlugins() {\n EventPluginOrder = null;\n\n for (var pluginName in namesToPlugins) {\n if (namesToPlugins.hasOwnProperty(pluginName)) {\n delete namesToPlugins[pluginName];\n }\n }\n\n EventPluginRegistry.plugins.length = 0;\n var eventNameDispatchConfigs = EventPluginRegistry.eventNameDispatchConfigs;\n\n for (var eventName in eventNameDispatchConfigs) {\n if (eventNameDispatchConfigs.hasOwnProperty(eventName)) {\n delete eventNameDispatchConfigs[eventName];\n }\n }\n\n var registrationNameModules = EventPluginRegistry.registrationNameModules;\n\n for (var registrationName in registrationNameModules) {\n if (registrationNameModules.hasOwnProperty(registrationName)) {\n delete registrationNameModules[registrationName];\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var possibleRegistrationNames = EventPluginRegistry.possibleRegistrationNames;\n\n for (var lowerCasedName in possibleRegistrationNames) {\n if (possibleRegistrationNames.hasOwnProperty(lowerCasedName)) {\n delete possibleRegistrationNames[lowerCasedName];\n }\n }\n }\n }\n};\nmodule.exports = EventPluginRegistry;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SyntheticMouseEvent\n */\n'use strict';\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\n\nvar ViewportMetrics = require('./ViewportMetrics');\n\nvar getEventModifierState = require('./getEventModifierState');\n/**\n * @interface MouseEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\n\n\nvar MouseEventInterface = {\n screenX: null,\n screenY: null,\n clientX: null,\n clientY: null,\n ctrlKey: null,\n shiftKey: null,\n altKey: null,\n metaKey: null,\n getModifierState: getEventModifierState,\n button: function button(event) {\n // Webkit, Firefox, IE9+\n // which: 1 2 3\n // button: 0 1 2 (standard)\n var button = event.button;\n\n if ('which' in event) {\n return button;\n } // IE<9\n // which: undefined\n // button: 0 0 0\n // button: 1 4 2 (onmouseup)\n\n\n return button === 2 ? 2 : button === 4 ? 1 : 0;\n },\n buttons: null,\n relatedTarget: function relatedTarget(event) {\n return event.relatedTarget || (event.fromElement === event.srcElement ? event.toElement : event.fromElement);\n },\n // \"Proprietary\" Interface.\n pageX: function pageX(event) {\n return 'pageX' in event ? event.pageX : event.clientX + ViewportMetrics.currentScrollLeft;\n },\n pageY: function pageY(event) {\n return 'pageY' in event ? event.pageY : event.clientY + ViewportMetrics.currentScrollTop;\n }\n};\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\n\nfunction SyntheticMouseEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticMouseEvent, MouseEventInterface);\nmodule.exports = SyntheticMouseEvent;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule escapeTextContentForBrowser\n */\n'use strict';\n\nvar ESCAPE_LOOKUP = {\n '&': '&',\n '>': '>',\n '<': '<',\n '\"': '"',\n '\\'': '''\n};\nvar ESCAPE_REGEX = /[&><\"']/g;\n\nfunction escaper(match) {\n return ESCAPE_LOOKUP[match];\n}\n/**\n * Escapes text to prevent scripting attacks.\n *\n * @param {*} text Text value to escape.\n * @return {string} An escaped string.\n */\n\n\nfunction escapeTextContentForBrowser(text) {\n return ('' + text).replace(ESCAPE_REGEX, escaper);\n}\n\nmodule.exports = escapeTextContentForBrowser;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactBrowserEventEmitter\n */\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar EventConstants = require('./EventConstants');\n\nvar EventPluginRegistry = require('./EventPluginRegistry');\n\nvar ReactEventEmitterMixin = require('./ReactEventEmitterMixin');\n\nvar ViewportMetrics = require('./ViewportMetrics');\n\nvar getVendorPrefixedEventName = require('./getVendorPrefixedEventName');\n\nvar isEventSupported = require('./isEventSupported');\n/**\n * Summary of `ReactBrowserEventEmitter` event handling:\n *\n * - Top-level delegation is used to trap most native browser events. This\n * may only occur in the main thread and is the responsibility of\n * ReactEventListener, which is injected and can therefore support pluggable\n * event sources. This is the only work that occurs in the main thread.\n *\n * - We normalize and de-duplicate events to account for browser quirks. This\n * may be done in the worker thread.\n *\n * - Forward these native events (with the associated top-level type used to\n * trap it) to `EventPluginHub`, which in turn will ask plugins if they want\n * to extract any synthetic events.\n *\n * - The `EventPluginHub` will then process each event by annotating them with\n * \"dispatches\", a sequence of listeners and IDs that care about that event.\n *\n * - The `EventPluginHub` then dispatches the events.\n *\n * Overview of React and the event system:\n *\n * +------------+ .\n * | DOM | .\n * +------------+ .\n * | .\n * v .\n * +------------+ .\n * | ReactEvent | .\n * | Listener | .\n * +------------+ . +-----------+\n * | . +--------+|SimpleEvent|\n * | . | |Plugin |\n * +-----|------+ . v +-----------+\n * | | | . +--------------+ +------------+\n * | +-----------.--->|EventPluginHub| | Event |\n * | | . | | +-----------+ | Propagators|\n * | ReactEvent | . | | |TapEvent | |------------|\n * | Emitter | . | |<---+|Plugin | |other plugin|\n * | | . | | +-----------+ | utilities |\n * | +-----------.--->| | +------------+\n * | | | . +--------------+\n * +-----|------+ . ^ +-----------+\n * | . | |Enter/Leave|\n * + . +-------+|Plugin |\n * +-------------+ . +-----------+\n * | application | .\n * |-------------| .\n * | | .\n * | | .\n * +-------------+ .\n * .\n * React Core . General Purpose Event Plugin System\n */\n\n\nvar hasEventPageXY;\nvar alreadyListeningTo = {};\nvar isMonitoringScrollValue = false;\nvar reactTopListenersCounter = 0; // For events like 'submit' which don't consistently bubble (which we trap at a\n// lower node than `document`), binding at `document` would cause duplicate\n// events so we don't include them here\n\nvar topEventMapping = {\n topAbort: 'abort',\n topAnimationEnd: getVendorPrefixedEventName('animationend') || 'animationend',\n topAnimationIteration: getVendorPrefixedEventName('animationiteration') || 'animationiteration',\n topAnimationStart: getVendorPrefixedEventName('animationstart') || 'animationstart',\n topBlur: 'blur',\n topCanPlay: 'canplay',\n topCanPlayThrough: 'canplaythrough',\n topChange: 'change',\n topClick: 'click',\n topCompositionEnd: 'compositionend',\n topCompositionStart: 'compositionstart',\n topCompositionUpdate: 'compositionupdate',\n topContextMenu: 'contextmenu',\n topCopy: 'copy',\n topCut: 'cut',\n topDoubleClick: 'dblclick',\n topDrag: 'drag',\n topDragEnd: 'dragend',\n topDragEnter: 'dragenter',\n topDragExit: 'dragexit',\n topDragLeave: 'dragleave',\n topDragOver: 'dragover',\n topDragStart: 'dragstart',\n topDrop: 'drop',\n topDurationChange: 'durationchange',\n topEmptied: 'emptied',\n topEncrypted: 'encrypted',\n topEnded: 'ended',\n topError: 'error',\n topFocus: 'focus',\n topInput: 'input',\n topKeyDown: 'keydown',\n topKeyPress: 'keypress',\n topKeyUp: 'keyup',\n topLoadedData: 'loadeddata',\n topLoadedMetadata: 'loadedmetadata',\n topLoadStart: 'loadstart',\n topMouseDown: 'mousedown',\n topMouseMove: 'mousemove',\n topMouseOut: 'mouseout',\n topMouseOver: 'mouseover',\n topMouseUp: 'mouseup',\n topPaste: 'paste',\n topPause: 'pause',\n topPlay: 'play',\n topPlaying: 'playing',\n topProgress: 'progress',\n topRateChange: 'ratechange',\n topScroll: 'scroll',\n topSeeked: 'seeked',\n topSeeking: 'seeking',\n topSelectionChange: 'selectionchange',\n topStalled: 'stalled',\n topSuspend: 'suspend',\n topTextInput: 'textInput',\n topTimeUpdate: 'timeupdate',\n topTouchCancel: 'touchcancel',\n topTouchEnd: 'touchend',\n topTouchMove: 'touchmove',\n topTouchStart: 'touchstart',\n topTransitionEnd: getVendorPrefixedEventName('transitionend') || 'transitionend',\n topVolumeChange: 'volumechange',\n topWaiting: 'waiting',\n topWheel: 'wheel'\n};\n/**\n * To ensure no conflicts with other potential React instances on the page\n */\n\nvar topListenersIDKey = '_reactListenersID' + String(Math.random()).slice(2);\n\nfunction getListeningForDocument(mountAt) {\n // In IE8, `mountAt` is a host object and doesn't have `hasOwnProperty`\n // directly.\n if (!Object.prototype.hasOwnProperty.call(mountAt, topListenersIDKey)) {\n mountAt[topListenersIDKey] = reactTopListenersCounter++;\n alreadyListeningTo[mountAt[topListenersIDKey]] = {};\n }\n\n return alreadyListeningTo[mountAt[topListenersIDKey]];\n}\n/**\n * `ReactBrowserEventEmitter` is used to attach top-level event listeners. For\n * example:\n *\n * EventPluginHub.putListener('myID', 'onClick', myFunction);\n *\n * This would allocate a \"registration\" of `('onClick', myFunction)` on 'myID'.\n *\n * @internal\n */\n\n\nvar ReactBrowserEventEmitter = _assign({}, ReactEventEmitterMixin, {\n /**\n * Injectable event backend\n */\n ReactEventListener: null,\n injection: {\n /**\n * @param {object} ReactEventListener\n */\n injectReactEventListener: function injectReactEventListener(ReactEventListener) {\n ReactEventListener.setHandleTopLevel(ReactBrowserEventEmitter.handleTopLevel);\n ReactBrowserEventEmitter.ReactEventListener = ReactEventListener;\n }\n },\n\n /**\n * Sets whether or not any created callbacks should be enabled.\n *\n * @param {boolean} enabled True if callbacks should be enabled.\n */\n setEnabled: function setEnabled(enabled) {\n if (ReactBrowserEventEmitter.ReactEventListener) {\n ReactBrowserEventEmitter.ReactEventListener.setEnabled(enabled);\n }\n },\n\n /**\n * @return {boolean} True if callbacks are enabled.\n */\n isEnabled: function isEnabled() {\n return !!(ReactBrowserEventEmitter.ReactEventListener && ReactBrowserEventEmitter.ReactEventListener.isEnabled());\n },\n\n /**\n * We listen for bubbled touch events on the document object.\n *\n * Firefox v8.01 (and possibly others) exhibited strange behavior when\n * mounting `onmousemove` events at some node that was not the document\n * element. The symptoms were that if your mouse is not moving over something\n * contained within that mount point (for example on the background) the\n * top-level listeners for `onmousemove` won't be called. However, if you\n * register the `mousemove` on the document object, then it will of course\n * catch all `mousemove`s. This along with iOS quirks, justifies restricting\n * top-level listeners to the document object only, at least for these\n * movement types of events and possibly all events.\n *\n * @see http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n *\n * Also, `keyup`/`keypress`/`keydown` do not bubble to the window on IE, but\n * they bubble to document.\n *\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @param {object} contentDocumentHandle Document which owns the container\n */\n listenTo: function listenTo(registrationName, contentDocumentHandle) {\n var mountAt = contentDocumentHandle;\n var isListening = getListeningForDocument(mountAt);\n var dependencies = EventPluginRegistry.registrationNameDependencies[registrationName];\n var topLevelTypes = EventConstants.topLevelTypes;\n\n for (var i = 0; i < dependencies.length; i++) {\n var dependency = dependencies[i];\n\n if (!(isListening.hasOwnProperty(dependency) && isListening[dependency])) {\n if (dependency === topLevelTypes.topWheel) {\n if (isEventSupported('wheel')) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelTypes.topWheel, 'wheel', mountAt);\n } else if (isEventSupported('mousewheel')) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelTypes.topWheel, 'mousewheel', mountAt);\n } else {\n // Firefox needs to capture a different mouse scroll event.\n // @see http://www.quirksmode.org/dom/events/tests/scroll.html\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelTypes.topWheel, 'DOMMouseScroll', mountAt);\n }\n } else if (dependency === topLevelTypes.topScroll) {\n if (isEventSupported('scroll', true)) {\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(topLevelTypes.topScroll, 'scroll', mountAt);\n } else {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelTypes.topScroll, 'scroll', ReactBrowserEventEmitter.ReactEventListener.WINDOW_HANDLE);\n }\n } else if (dependency === topLevelTypes.topFocus || dependency === topLevelTypes.topBlur) {\n if (isEventSupported('focus', true)) {\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(topLevelTypes.topFocus, 'focus', mountAt);\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(topLevelTypes.topBlur, 'blur', mountAt);\n } else if (isEventSupported('focusin')) {\n // IE has `focusin` and `focusout` events which bubble.\n // @see http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelTypes.topFocus, 'focusin', mountAt);\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelTypes.topBlur, 'focusout', mountAt);\n } // to make sure blur and focus event listeners are only attached once\n\n\n isListening[topLevelTypes.topBlur] = true;\n isListening[topLevelTypes.topFocus] = true;\n } else if (topEventMapping.hasOwnProperty(dependency)) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(dependency, topEventMapping[dependency], mountAt);\n }\n\n isListening[dependency] = true;\n }\n }\n },\n trapBubbledEvent: function trapBubbledEvent(topLevelType, handlerBaseName, handle) {\n return ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelType, handlerBaseName, handle);\n },\n trapCapturedEvent: function trapCapturedEvent(topLevelType, handlerBaseName, handle) {\n return ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(topLevelType, handlerBaseName, handle);\n },\n\n /**\n * Listens to window scroll and resize events. We cache scroll values so that\n * application code can access them without triggering reflows.\n *\n * ViewportMetrics is only used by SyntheticMouse/TouchEvent and only when\n * pageX/pageY isn't supported (legacy browsers).\n *\n * NOTE: Scroll events do not bubble.\n *\n * @see http://www.quirksmode.org/dom/events/scroll.html\n */\n ensureScrollValueMonitoring: function ensureScrollValueMonitoring() {\n if (hasEventPageXY === undefined) {\n hasEventPageXY = document.createEvent && 'pageX' in document.createEvent('MouseEvent');\n }\n\n if (!hasEventPageXY && !isMonitoringScrollValue) {\n var refresh = ViewportMetrics.refreshScrollValues;\n ReactBrowserEventEmitter.ReactEventListener.monitorScrollValue(refresh);\n isMonitoringScrollValue = true;\n }\n }\n});\n\nmodule.exports = ReactBrowserEventEmitter;","/* eslint-disable react/prop-types */\nimport classnames from 'classnames';\nimport React, { PropTypes } from 'react';\n\nexport const CHEVRON_LEFT = 'glyph-chevron-left';\n\nexport const CHEVRON_RIGHT = 'glyph-chevron-right';\n\nexport const CORRECT_RESULT = 'glyph-correct-result';\n\nexport const INCORRECT_RESULT = 'glyph-incorrect-result';\n\nexport const JAPANESE_CHARACTER = 'glyph-japanese-character';\n\nexport const KEYBOARD = 'glyph-keyboard';\n\nexport const PAPERCLIP = 'glyph-paperclip';\n\nexport const VOLUME_MEDIUM = 'glyph-volume-medium';\n\nexport const PAUSE = 'glyph-pause';\n\nexport const GEAR = 'glyph-gear';\n\nexport const CROSS = 'glyph-cross-soft';\n\nexport const REMOVE = 'glyph-remove';\n\nexport const REVIEW = 'glyph-reload-alternate';\n\nexport const TRIANGLE_DOWN = 'glyph-triangle-down';\n\nexport default function Glyph(props) {\n const className = classnames('glyph', props.type, props.className);\n return ();\n}\n\nGlyph.propTypes = {\n type: PropTypes.string.isRequired,\n};\n","/* eslint-disable react/jsx-no-bind */\nimport React, { Component, PropTypes } from 'react';\nimport Glyph, { VOLUME_MEDIUM } from 'es6/components/common/glyph';\nimport SoundManager from 'es6/services/sound-manager';\nimport classnames from 'classnames';\nimport { StyleSheet, css } from 'aphrodite';\nimport { optionalOneOf } from 'es6/helpers/prop-types';\n\nimport {\n SOUND_PLAYER_SENTENCE_COLOR,\n SOUND_PLAYER_SENTENCE_HOVER_COLOR,\n} from 'es6/core/styles/colors';\n\n// variants\nexport const SOUND_PLAYER_SENTENCE = 'sentence';\nexport const SOUND_PLAYER_UNSTYLED = 'unstyled';\n\n/**\n * @this SoundPlayer\n */\nfunction playSound() {\n this.setState({ playing: true });\n\n SoundManager.play(this.props.source, {\n finished: () => {\n this.setState({ playing: false }, this.props.onFinish);\n },\n });\n}\n\nexport default class SoundPlayer extends Component {\n constructor(props) {\n super(props);\n this.state = { playing: false };\n }\n\n render() {\n const { playing } = this.state;\n const className = classnames(\n 'sound-player',\n this.props.className,\n css(styles[this.props.variant]),\n {\n playing,\n sound: this.props.variant !== SOUND_PLAYER_UNSTYLED,\n }\n );\n\n return (\n \n );\n }\n}\n\nSoundPlayer.propTypes = {\n className: PropTypes.string,\n variant: optionalOneOf([SOUND_PLAYER_SENTENCE, SOUND_PLAYER_UNSTYLED]),\n source: PropTypes.string.isRequired,\n onFinish: PropTypes.func,\n};\n\nconst styles = StyleSheet.create({\n sentence: {\n fontSize: '16px',\n cursor: 'pointer',\n color: SOUND_PLAYER_SENTENCE_COLOR,\n display: 'inline-block',\n border: 0,\n padding: 0,\n margin: 0,\n background: 'transparent',\n ':hover': { color: SOUND_PLAYER_SENTENCE_HOVER_COLOR },\n ':active': { color: SOUND_PLAYER_SENTENCE_HOVER_COLOR },\n },\n});\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n} // returns a style object with a single concated prefixed value string\n\n\nexports[\"default\"] = function (property, value) {\n var replacer = arguments.length <= 2 || arguments[2] === undefined ? function (prefix, value) {\n return prefix + value;\n } : arguments[2];\n return _defineProperty({}, property, ['-webkit-', '-moz-', ''].map(function (prefix) {\n return replacer(prefix, value);\n }));\n};\n\nmodule.exports = exports['default'];","// NREUM is a New Relic variable set by their third party script.\n\n/* global NREUM */\n\n/**\n * babel doesn't handle calls to the superclass constructor of\n * built in types, so do the same actions manually. Call this from\n * the constructor.\n *\n * TODO: Look into using https://github.com/loganfsmyth/babel-plugin-transform-builtin-extend\n *\n * constructor(...args) {\n * super();\n * constructorError.call(this, 'CustomError', ...args);\n * }\n *\n * @param {String} name name of the exception\n * @param {String} message message that gets passed into the exception\n */\nexport function constructError(name, message = '') {\n this.name = name;\n this.message = message;\n this.stack = (new Error()).stack;\n}\n\nexport class AjaxAbortedError extends Error {\n constructor(...args) {\n super();\n constructError.call(this, 'AjaxAbortedError', ...args);\n }\n}\n\nexport class AjaxError extends Error {\n constructor(message, code = null, exception = null, request = null) {\n super();\n constructError.call(this, 'AjaxError', message);\n\n this.code = code;\n this.request = request;\n\n // Also store any data related to server side errors.\n this.serverSideException = exception;\n }\n}\n\nexport class PaywallError extends Error {\n constructor(...args) {\n super();\n constructError.call(this, 'PaywallError', ...args);\n }\n}\n\nexport class NetworkError extends Error {\n constructor(...args) {\n super();\n constructError.call(this, 'NetworkError', ...args);\n }\n}\n\nexport class TokenExpiredError extends Error {\n constructor(message = '', code = null) {\n super();\n constructError.call(this, 'TokenExpiredError', message);\n\n this.code = code;\n }\n}\n\nexport class AjaxTimeoutError extends Error {\n constructor(...args) {\n super();\n constructError.call(this, 'AjaxTimeoutError', ...args);\n }\n}\n\nexport class HaltFetchDataError extends Error {\n constructor(...args) {\n super();\n constructError.call(this, 'HaltFetchDataError', ...args);\n }\n}\n\nexport class LoaderError extends Error {\n constructor(...args) {\n super();\n constructError.call(this, 'LoaderError', ...args);\n }\n}\n\n/**\n * Essentially a wrapper for the noticeError method. Will\n * send it to new relic (if available).\n *\n * @param {Error} error\n */\nexport function noticeError(error) {\n if (typeof NREUM !== 'undefined' && NREUM.noticeError) {\n NREUM.noticeError(error);\n }\n}\n","// shim for using process in browser\nvar process = module.exports = {}; // cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\n\nfunction defaultClearTimeout() {\n throw new Error('clearTimeout has not been defined');\n}\n\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n})();\n\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n } // if setTimeout wasn't available but was latter defined\n\n\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n}\n\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n } // if clearTimeout wasn't available but was latter defined\n\n\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n}\n\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n\n draining = false;\n\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n var len = queue.length;\n\n while (len) {\n currentQueue = queue;\n queue = [];\n\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n\n queueIndex = -1;\n len = queue.length;\n }\n\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n\n queue.push(new Item(fun, args));\n\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n}; // v8 likes predictible objects\n\n\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\n\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\n\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\n\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) {\n return [];\n};\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () {\n return '/';\n};\n\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\n\nprocess.umask = function () {\n return 0;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.watchError = exports.watch = undefined;\nexports.reset = reset;\nexports.setAPI = setAPI;\nexports.resetAPI = resetAPI;\nexports.schedule = schedule;\n\nvar _xhr = require('xhr');\n\nvar _xhr2 = _interopRequireDefault(_xhr);\n\nvar _rsvp = require('rsvp');\n\nvar _defs = require('./defs');\n\nvar _dictionary = require('./dictionary');\n\nvar _formatEntry = require('./format-entry');\n\nvar _formatEntry2 = _interopRequireDefault(_formatEntry);\n\nvar _watcher = require('./watcher');\n\nvar _watcher2 = _interopRequireDefault(_watcher);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n} // Needed for IE11\n\n\nvar pubsub = (0, _watcher2[\"default\"])();\nvar errorPubsub = (0, _watcher2[\"default\"])();\nvar watch = pubsub.watch;\nexports.watch = watch;\nvar watchError = errorPubsub.watch;\nexports.watchError = watchError;\nvar notify = pubsub.notify;\nvar notifyError = errorPubsub.notify;\nvar coursesLoaded = {};\nvar timeout = void 0;\nvar next = void 0;\nvar api = void 0;\nvar headers = void 0;\nresetAPI();\nprepareNext();\nexports[\"default\"] = {\n watch: watch,\n watchError: watchError,\n schedule: schedule,\n reset: reset,\n setAPI: setAPI,\n resetAPI: resetAPI\n};\n\nfunction prepareNext() {\n next = {\n words: {},\n courses: {}\n };\n}\n\nfunction reset() {\n coursesLoaded = {};\n resetAPI();\n}\n\nfunction setAPI(newApi) {\n var newHeaders = arguments.length <= 1 || arguments[1] === undefined ? headers : arguments[1];\n api = newApi;\n headers = newHeaders;\n}\n\nfunction resetAPI() {\n api = _defs.API;\n headers = {};\n}\n\nfunction schedule(_ref) {\n var _ref$words = _ref.words;\n var words = _ref$words === undefined ? [] : _ref$words;\n var _ref$courses = _ref.courses;\n var courses = _ref$courses === undefined ? [] : _ref$courses;\n clearTimeout(timeout);\n pour(next.words, words);\n pour(next.courses, courses);\n timeout = setTimeout(actuallyDownload, _defs.DOWNLOAD_DELAY);\n return new _rsvp.Promise(function (resolve, reject) {\n var unwatch = watch(function () {\n unwatch();\n unwatchError();\n resolve();\n });\n var unwatchError = watchError(function (error) {\n unwatch();\n unwatchError();\n reject(error);\n });\n });\n}\n\nfunction pour(collection, items) {\n // This rule is necessary for this function to work\n\n /* eslint no-param-reassign: 0 */\n var values = items instanceof Array ? items : Object.keys(items);\n values.forEach(function (item) {\n collection[item] = true;\n });\n}\n\nfunction actuallyDownload() {\n /* eslint no-console: 0 */\n var action = next;\n prepareNext();\n downloadCourses(Object.keys(action.courses)).then(addWords).then(function () {\n return downloadWords(Object.keys(action.words));\n }).then(addWords).then(notify)[\"catch\"](function (error) {\n console.error(error);\n notifyError(error);\n });\n}\n\nfunction addWords(words) {\n if (!words) {\n return;\n }\n\n if (typeof words === 'string') {\n addWords(JSON.parse(words));\n return;\n }\n\n Object.keys(words).forEach(function (key) {\n (0, _dictionary.setWord)(key, words[key].map(_formatEntry2[\"default\"]));\n });\n}\n\nfunction downloadCourses(newCourses) {\n var courses = newCourses.filter(function (course) {\n return !(course in coursesLoaded);\n });\n return new _rsvp.Promise(function (resolve, reject) {\n if (courses.length) {\n _xhr2[\"default\"].get({\n url: api + '?goal_ids=' + encodeURIComponent(courses.join(',')),\n headers: headers\n }, function (error, response, body) {\n if (error) {\n reject(error);\n } else if (isBadResponse(response)) {\n reject(response);\n } else {\n // So they're not scheduled next time\n pour(coursesLoaded, newCourses);\n resolve(body);\n }\n });\n } else {\n resolve({});\n }\n });\n}\n\nfunction downloadWords(newWords) {\n var words = newWords.filter(function (word) {\n return !(0, _dictionary.hasWord)(word);\n });\n return new _rsvp.Promise(function (resolve, reject) {\n if (words.length) {\n _xhr2[\"default\"].post({\n url: api,\n headers: headers,\n json: {\n text: words.join(' ')\n }\n }, function (error, response, body) {\n if (error) {\n reject(error);\n } else if (isBadResponse(response)) {\n reject(response);\n } else {\n resolve(body);\n }\n });\n } else {\n resolve({});\n }\n });\n}\n\nfunction isBadResponse(response) {\n return !response || response.statusCode > 399;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.setWord = setWord;\nexports.hasWord = hasWord;\nexports.getWord = getWord;\nvar dictionary = {};\n\nfunction setWord(key, value) {\n dictionary[key.toLowerCase()] = value;\n return value;\n}\n\nfunction hasWord(key) {\n return key.toLowerCase() in dictionary;\n}\n\nfunction getWord(key) {\n return dictionary[key.toLowerCase()];\n}","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @type {Function}\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\nmodule.exports = isArray;","// We shouldn't export colour constants, only use them in the\n// semantically-named constants we export\n\n/* eslint no-unused-vars: \"off\" */\n\nconst BLACK_LIGHTEST = '#525252';\nconst BLACK_LIGHTER = '#333';\nconst BLACK_BASE = '#000';\n\nconst WHITE_BASE = '#fff';\nconst WHITE_DARKER = '#fefefe';\nconst WHITE_DARKEST = '#fafafa';\n\nconst GRAY_LIGHTEST = '#f1f1f1';\nconst GRAY_LIGHTER = '#eaeaea';\nconst GRAY_BASE = '#ccc';\nconst GRAY_DARKER = '#999';\nconst GRAY_DARKEST = '#666';\n\nconst ORANGE_LIGHTEST = '#fff2cb';\nconst ORANGE_LIGHTER = '#ffdd7c';\nconst ORANGE_BASE = '#ffbc00';\nconst ORANGE_DARKER = '#ff8b00';\nconst ORANGE_DARKEST = '#ff5800';\n\nconst RED_LIGHTEST = '#FF6835';\nconst RED_LIGHTER = '#e94d19';\nconst RED_BASE = '#cc3300';\nconst RED_DARKER = '#c23000';\nconst RED_DARKEST = '#900';\n\nconst BLUE_LIGHTEST = '#dff6ff';\nconst BLUE_LIGHTER = '#9fdaed';\nconst BLUE_BASE = '#1ea6f8';\nconst BLUE_DARKER = '#0081bd';\nconst BLUE_DARKEST = '#1779b1';\n\nconst GREEN_LIGHTEST = '#dcf2a0';\nconst GREEN_LIGHTER = '#c2e65d';\nconst GREEN_BASE = '#a3d856';\nconst GREEN_DARKER = '#7cbd00';\nconst GREEN_DARKEST = '#6ba300';\n\nconst YELLOW_LIGHTEST = '#fffacd';\nconst YELLOW_LIGHTER = '#fff5ca';\nconst YELLOW_BASE = '#ebdf78';\nconst YELLOW_DARKER = '#c0ae13';\nconst YELLOW_DARKEST = '#5a520f';\n\n//\n// Semantical names\n//\n\n// TranscodedImage, this color was hard-coded in CSS before so and it\n// doesn't belong to the palette above\nexport const APP_IMAGE_PLACEHOLDER = '#4397e6';\n\n// ItemsContainer\nexport const ITEM_TRANSCRIPTION_COLOR = ORANGE_DARKER;\nexport const ITEM_TRANSLATION_COLOR = BLACK_BASE;\nexport const ITEM_PART_OF_SPEACH_COLOR = BLACK_LIGHTER;\nexport const ITEM_IN_COURSE_COLOR = GRAY_DARKER;\nexport const ITEM_IN_COURSE_LINE_COLOR = GRAY_BASE;\nexport const ITEM_COURSE_COLOR = BLACK_BASE;\nexport const ITEM_COURSE_HOVER_COLOR = BLUE_BASE;\nexport const ITEM_CUE_WORD_COLOR = ORANGE_DARKER;\nexport const ITEM_PROGRESS_LABEL_COLOR = BLACK_LIGHTER;\nexport const ITEM_PROGRESS_PERCENTAGE_COLOR = BLACK_BASE;\n\n// DifficultyLevel\nexport const DIFFICULTY_LEVEL_BEGINNER_COLOR = '#4c994c';\nexport const DIFFICULTY_LEVEL_LOWER_INTERMEDIATE_COLOR = '#2e9975';\nexport const DIFFICULTY_LEVEL_INTERMEDIATE_COLOR = '#608fbf';\nexport const DIFFICULTY_LEVEL_UPPER_INTERMEDIATE_COLOR = '#967acc';\nexport const DIFFICULTY_LEVEL_ADVANCED_COLOR = '#cc5cb9';\n\n// SoundPlayer\nexport const SOUND_PLAYER_SENTENCE_COLOR = GRAY_DARKER;\nexport const SOUND_PLAYER_SENTENCE_HOVER_COLOR = '#808080';\n\n// RoundBox\nexport const ROUNDBOX_BACKGROUND_COLOR = WHITE_BASE;\nexport const ROUNDBOX_BORDER_COLOR = GRAY_BASE;\n\n// ErrorDecorator\nexport const ERROR_DECORATOR_TITLE_COLOR = '#517588';\n\n// AnswerConfirmationScreen\nexport const ANSWER_CONFIRMATION_ANSWER_TEXT_COLOR = '#2255aa';\nexport const ANSWER_CONFIRMATION_ANSWER_BACKGROUND_COLOR = '#bbddff';\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n /* global Symbol -- safe */\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return nativeGetOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]'\n ? getWindowNames(it)\n : nativeGetOwnPropertyNames(toIndexedObject(it));\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","var anObject = require('../internals/an-object');\n\nmodule.exports = function (iterator) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) {\n return anObject(returnMethod.call(iterator)).value;\n }\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n result = new C();\n for (;!(step = next.call(iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\nvar min = Math.min;\n\n// `Array.prototype.copyWithin` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.copywithin\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","'use strict';\nvar isArray = require('../internals/is-array');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\n\n// `FlattenIntoArray` abstract operation\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? bind(mapper, thisArg, 3) : false;\n var element;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n if (depth > 0 && isArray(element)) {\n targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;\n } else {\n if (targetIndex >= 0x1FFFFFFFFFFFFF) throw TypeError('Exceed the acceptable array length');\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n};\n\nmodule.exports = flattenIntoArray;\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n} : [].forEach;\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar min = Math.min;\nvar nativeLastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!nativeLastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('lastIndexOf');\nvar FORCED = NEGATIVE_ZERO || !STRICT_METHOD;\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.lastindexof\nmodule.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return nativeLastIndexOf.apply(this, arguments) || 0;\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n return -1;\n} : nativeLastIndexOf;\n","'use strict';\nvar fails = require('../internals/fails');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif ((!IS_PURE || NEW_ITERATOR_PROTOTYPE) && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","'use strict';\nvar aFunction = require('../internals/a-function');\nvar isObject = require('../internals/is-object');\n\nvar slice = [].slice;\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n if (!(argsLength in factories)) {\n for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func -- we have no proper alternatives, IE8- only\n factories[argsLength] = Function('C,a', 'return new C(' + list.join(',') + ')');\n } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.es/ecma262/#sec-function.prototype.bind\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = slice.call(arguments, 1);\n var boundFunction = function bound(/* args... */) {\n var args = partArgs.concat(slice.call(arguments));\n return this instanceof boundFunction ? construct(fn, args.length, args) : fn.apply(that, args);\n };\n if (isObject(fn.prototype)) boundFunction.prototype = fn.prototype;\n return boundFunction;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\nvar nativeAssign = Object.assign;\nvar defineProperty = Object.defineProperty;\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !nativeAssign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && nativeAssign({ b: 1 }, nativeAssign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n /* global Symbol -- required for testing */\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : nativeAssign;\n","var DESCRIPTORS = require('../internals/descriptors');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) {\n result.push(TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nmodule.exports = {\n // `Object.entries` method\n // https://tc39.es/ecma262/#sec-object.entries\n entries: createMethod(true),\n // `Object.values` method\n // https://tc39.es/ecma262/#sec-object.values\n values: createMethod(false)\n};\n","// `SameValue` abstract operation\n// https://tc39.es/ecma262/#sec-samevalue\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare -- NaN check\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","// https://github.com/zloirock/core-js/issues/280\nvar userAgent = require('../internals/engine-user-agent');\n\n// eslint-disable-next-line unicorn/no-unsafe-regex -- safe\nmodule.exports = /Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(userAgent);\n","var toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar replace = ''.replace;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseInt = global.parseInt;\nvar hex = /^[+-]?0[Xx]/;\nvar FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22;\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n var S = trim(String(string));\n return $parseInt(S, (radix >>> 0) || (hex.test(S) ? 16 : 10));\n} : $parseInt;\n","var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseFloat = global.parseFloat;\nvar FORCED = 1 / $parseFloat(whitespaces + '-0') !== -Infinity;\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\nmodule.exports = FORCED ? function parseFloat(string) {\n var trimmedString = trim(String(string));\n var result = $parseFloat(trimmedString);\n return result === 0 && trimmedString.charAt(0) == '-' ? -0 : result;\n} : $parseFloat;\n","var isObject = require('../internals/is-object');\n\nvar floor = Math.floor;\n\n// `Number.isInteger` method implementation\n// https://tc39.es/ecma262/#sec-number.isinteger\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","var classof = require('../internals/classof-raw');\n\n// `thisNumberValue` abstract operation\n// https://tc39.es/ecma262/#sec-thisnumbervalue\nmodule.exports = function (value) {\n if (typeof value != 'number' && classof(value) != 'Number') {\n throw TypeError('Incorrect invocation');\n }\n return +value;\n};\n","var log = Math.log;\n\n// `Math.log1p` method implementation\n// https://tc39.es/ecma262/#sec-math.log1p\nmodule.exports = Math.log1p || function log1p(x) {\n return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : log(1 + x);\n};\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(iphone|ipod|ipad).*applewebkit/i.test(userAgent);\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_WEBOS_WEBKIT = require('../internals/engine-is-webos-webkit');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n then = promise.then;\n notify = function () {\n then.call(promise, flush);\n };\n // Node.js without promises\n } else if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n};\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar create = require('../internals/object-create');\nvar redefineAll = require('../internals/redefine-all');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/define-iterator');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, CONSTRUCTOR_NAME);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n index: create(null),\n first: undefined,\n last: undefined,\n size: 0\n });\n if (!DESCRIPTORS) that.size = 0;\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n });\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n var previous, index;\n // change existing entry\n if (entry) {\n entry.value = value;\n // create new entry\n } else {\n state.last = entry = {\n index: index = fastKey(key, true),\n key: key,\n value: value,\n previous: previous = state.last,\n next: undefined,\n removed: false\n };\n if (!state.first) state.first = entry;\n if (previous) previous.next = entry;\n if (DESCRIPTORS) state.size++;\n else that.size++;\n // add to index\n if (index !== 'F') state.index[index] = entry;\n } return that;\n };\n\n var getEntry = function (that, key) {\n var state = getInternalState(that);\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return state.index[index];\n // frozen object case\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key == key) return entry;\n }\n };\n\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n var that = this;\n var state = getInternalState(that);\n var data = state.index;\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous) entry.previous = entry.previous.next = undefined;\n delete data[entry.index];\n entry = entry.next;\n }\n state.first = state.last = undefined;\n if (DESCRIPTORS) state.size = 0;\n else that.size = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = this;\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev) prev.next = next;\n if (next) next.previous = prev;\n if (state.first == entry) state.first = next;\n if (state.last == entry) state.last = prev;\n if (DESCRIPTORS) state.size--;\n else that.size--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n var state = getInternalState(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n\n redefineAll(C.prototype, IS_MAP ? {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (DESCRIPTORS) defineProperty(C.prototype, 'size', {\n get: function () {\n return getInternalState(this).size;\n }\n });\n return C;\n },\n setStrong: function (C, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n defineIterator(C, CONSTRUCTOR_NAME, function (iterated, kind) {\n setInternalState(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind: kind,\n last: undefined\n });\n }, function () {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n // get next entry\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n // or finish the iteration\n state.target = undefined;\n return { value: undefined, done: true };\n }\n // return step by kind\n if (kind == 'keys') return { value: entry.key, done: false };\n if (kind == 'values') return { value: entry.value, done: false };\n return { value: [entry.key, entry.value], done: false };\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\n","'use strict';\nvar redefineAll = require('../internals/redefine-all');\nvar getWeakData = require('../internals/internal-metadata').getWeakData;\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar ArrayIterationModule = require('../internals/array-iteration');\nvar $has = require('../internals/has');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\nvar find = ArrayIterationModule.find;\nvar findIndex = ArrayIterationModule.findIndex;\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (store) {\n return store.frozen || (store.frozen = new UncaughtFrozenStore());\n};\n\nvar UncaughtFrozenStore = function () {\n this.entries = [];\n};\n\nvar findUncaughtFrozen = function (store, key) {\n return find(store.entries, function (it) {\n return it[0] === key;\n });\n};\n\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.entries.push([key, value]);\n },\n 'delete': function (key) {\n var index = findIndex(this.entries, function (it) {\n return it[0] === key;\n });\n if (~index) this.entries.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, CONSTRUCTOR_NAME);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n id: id++,\n frozen: undefined\n });\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n });\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var data = getWeakData(anObject(key), true);\n if (data === true) uncaughtFrozenStore(state).set(key, value);\n else data[state.id] = value;\n return that;\n };\n\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n var state = getInternalState(this);\n if (!isObject(key)) return false;\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state)['delete'](key);\n return data && $has(data, state.id) && delete data[state.id];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n var state = getInternalState(this);\n if (!isObject(key)) return false;\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state).has(key);\n return data && $has(data, state.id);\n }\n });\n\n redefineAll(C.prototype, IS_MAP ? {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n var state = getInternalState(this);\n if (isObject(key)) {\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state).get(key);\n return data ? data[state.id] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return define(this, key, value);\n }\n } : {\n // 23.4.3.1 WeakSet.prototype.add(value)\n add: function add(value) {\n return define(this, value, true);\n }\n });\n\n return C;\n }\n};\n","var toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length or index');\n return length;\n};\n","var toPositiveInteger = require('../internals/to-positive-integer');\n\nmodule.exports = function (it, BYTES) {\n var offset = toPositiveInteger(it);\n if (offset % BYTES) throw RangeError('Wrong offset');\n return offset;\n};\n","var toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar bind = require('../internals/function-bind-context');\nvar aTypedArrayConstructor = require('../internals/array-buffer-view-core').aTypedArrayConstructor;\n\nmodule.exports = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var i, length, result, step, iterator, next;\n if (iteratorMethod != undefined && !isArrayIteratorMethod(iteratorMethod)) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n O = [];\n while (!(step = next.call(iterator)).done) {\n O.push(step.value);\n }\n }\n if (mapping && argumentsLength > 2) {\n mapfn = bind(mapfn, arguments[2], 2);\n }\n length = toLength(O.length);\n result = new (aTypedArrayConstructor(this))(length);\n for (i = 0; length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n};\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n var url = new URL('b?a=1&b=2&c=3', 'http://a');\n var searchParams = url.searchParams;\n var result = '';\n url.pathname = 'c%20d';\n searchParams.forEach(function (value, key) {\n searchParams['delete']('b');\n result += key + value;\n });\n return (IS_PURE && !url.toJSON)\n || !searchParams.sort\n || url.href !== 'http://a/c%20d?a=1&c=3'\n || searchParams.get('c') !== '3'\n || String(new URLSearchParams('?a=1')) !== 'a=1'\n || !searchParams[ITERATOR]\n // throws in Edge\n || new URL('https://a@b').username !== 'a'\n || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n // not punycoded in Edge\n || new URL('http://тест').host !== 'xn--e1aybc'\n // not escaped in Chrome 62-\n || new URL('http://a#б').hash !== '#%D0%B1'\n // fails in Chrome 66-\n || result !== 'a1c3'\n // throws in Safari\n || new URL('http://x', undefined).host !== 'x';\n});\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.array.iterator');\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar InternalStateModule = require('../internals/internal-state');\nvar anInstance = require('../internals/an-instance');\nvar hasOwn = require('../internals/has');\nvar bind = require('../internals/function-bind-context');\nvar classof = require('../internals/classof');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $fetch = getBuiltIn('fetch');\nvar Headers = getBuiltIn('Headers');\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n try {\n return decodeURIComponent(sequence);\n } catch (error) {\n return sequence;\n }\n};\n\nvar deserialize = function (it) {\n var result = it.replace(plus, ' ');\n var bytes = 4;\n try {\n return decodeURIComponent(result);\n } catch (error) {\n while (bytes) {\n result = result.replace(percentSequence(bytes--), percentDecode);\n }\n return result;\n }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replace = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+'\n};\n\nvar replacer = function (match) {\n return replace[match];\n};\n\nvar serialize = function (it) {\n return encodeURIComponent(it).replace(find, replacer);\n};\n\nvar parseSearchParams = function (result, query) {\n if (query) {\n var attributes = query.split('&');\n var index = 0;\n var attribute, entry;\n while (index < attributes.length) {\n attribute = attributes[index++];\n if (attribute.length) {\n entry = attribute.split('=');\n result.push({\n key: deserialize(entry.shift()),\n value: deserialize(entry.join('='))\n });\n }\n }\n }\n};\n\nvar updateSearchParams = function (query) {\n this.entries.length = 0;\n parseSearchParams(this.entries, query);\n};\n\nvar validateArgumentsLength = function (passed, required) {\n if (passed < required) throw TypeError('Not enough arguments');\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n setInternalState(this, {\n type: URL_SEARCH_PARAMS_ITERATOR,\n iterator: getIterator(getInternalParamsState(params).entries),\n kind: kind\n });\n}, 'Iterator', function next() {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var step = state.iterator.next();\n var entry = step.value;\n if (!step.done) {\n step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n } return step;\n});\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n anInstance(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n var init = arguments.length > 0 ? arguments[0] : undefined;\n var that = this;\n var entries = [];\n var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key;\n\n setInternalState(that, {\n type: URL_SEARCH_PARAMS,\n entries: entries,\n updateURL: function () { /* empty */ },\n updateSearchParams: updateSearchParams\n });\n\n if (init !== undefined) {\n if (isObject(init)) {\n iteratorMethod = getIteratorMethod(init);\n if (typeof iteratorMethod === 'function') {\n iterator = iteratorMethod.call(init);\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n entryIterator = getIterator(anObject(step.value));\n entryNext = entryIterator.next;\n if (\n (first = entryNext.call(entryIterator)).done ||\n (second = entryNext.call(entryIterator)).done ||\n !entryNext.call(entryIterator).done\n ) throw TypeError('Expected sequence with length 2');\n entries.push({ key: first.value + '', value: second.value + '' });\n }\n } else for (key in init) if (hasOwn(init, key)) entries.push({ key: key, value: init[key] + '' });\n } else {\n parseSearchParams(entries, typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : init + '');\n }\n }\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\nredefineAll(URLSearchParamsPrototype, {\n // `URLSearchParams.prototype.append` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n append: function append(name, value) {\n validateArgumentsLength(arguments.length, 2);\n var state = getInternalParamsState(this);\n state.entries.push({ key: name + '', value: value + '' });\n state.updateURL();\n },\n // `URLSearchParams.prototype.delete` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n 'delete': function (name) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index].key === key) entries.splice(index, 1);\n else index++;\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.get` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n get: function get(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) return entries[index].value;\n }\n return null;\n },\n // `URLSearchParams.prototype.getAll` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n getAll: function getAll(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var result = [];\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) result.push(entries[index].value);\n }\n return result;\n },\n // `URLSearchParams.prototype.has` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n has: function has(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index++].key === key) return true;\n }\n return false;\n },\n // `URLSearchParams.prototype.set` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n set: function set(name, value) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var found = false;\n var key = name + '';\n var val = value + '';\n var index = 0;\n var entry;\n for (; index < entries.length; index++) {\n entry = entries[index];\n if (entry.key === key) {\n if (found) entries.splice(index--, 1);\n else {\n found = true;\n entry.value = val;\n }\n }\n }\n if (!found) entries.push({ key: key, value: val });\n state.updateURL();\n },\n // `URLSearchParams.prototype.sort` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n sort: function sort() {\n var state = getInternalParamsState(this);\n var entries = state.entries;\n // Array#sort is not stable in some engines\n var slice = entries.slice();\n var entry, entriesIndex, sliceIndex;\n entries.length = 0;\n for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) {\n entry = slice[sliceIndex];\n for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) {\n if (entries[entriesIndex].key > entry.key) {\n entries.splice(entriesIndex, 0, entry);\n break;\n }\n }\n if (entriesIndex === sliceIndex) entries.push(entry);\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.forEach` method\n forEach: function forEach(callback /* , thisArg */) {\n var entries = getInternalParamsState(this).entries;\n var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined, 3);\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n boundFunction(entry.value, entry.key, this);\n }\n },\n // `URLSearchParams.prototype.keys` method\n keys: function keys() {\n return new URLSearchParamsIterator(this, 'keys');\n },\n // `URLSearchParams.prototype.values` method\n values: function values() {\n return new URLSearchParamsIterator(this, 'values');\n },\n // `URLSearchParams.prototype.entries` method\n entries: function entries() {\n return new URLSearchParamsIterator(this, 'entries');\n }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\nredefine(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries);\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\nredefine(URLSearchParamsPrototype, 'toString', function toString() {\n var entries = getInternalParamsState(this).entries;\n var result = [];\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n result.push(serialize(entry.key) + '=' + serialize(entry.value));\n } return result.join('&');\n}, { enumerable: true });\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, forced: !USE_NATIVE_URL }, {\n URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` for correct work with polyfilled `URLSearchParams`\n// https://github.com/zloirock/core-js/issues/674\nif (!USE_NATIVE_URL && typeof $fetch == 'function' && typeof Headers == 'function') {\n $({ global: true, enumerable: true, forced: true }, {\n fetch: function fetch(input /* , init */) {\n var args = [input];\n var init, body, headers;\n if (arguments.length > 1) {\n init = arguments[1];\n if (isObject(init)) {\n body = init.body;\n if (classof(body) === URL_SEARCH_PARAMS) {\n headers = init.headers ? new Headers(init.headers) : new Headers();\n if (!headers.has('content-type')) {\n headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n init = create(init, {\n body: createPropertyDescriptor(0, String(body)),\n headers: createPropertyDescriptor(0, headers)\n });\n }\n }\n args.push(init);\n } return $fetch.apply(this, args);\n }\n });\n}\n\nmodule.exports = {\n URLSearchParams: URLSearchParamsConstructor,\n getState: getInternalParamsState\n};\n","module.exports = isFunction;\nvar toString = Object.prototype.toString;\n\nfunction isFunction(fn) {\n var string = toString.call(fn);\n return string === '[object Function]' || typeof fn === 'function' && string !== '[object RegExp]' || typeof window !== 'undefined' && ( // IE8 and below\n fn === window.setTimeout || fn === window.alert || fn === window.confirm || fn === window.prompt);\n}\n\n;","import classnames from 'classnames';\nimport values from 'lodash/fp/values';\nimport Config from 'es6/core/config';\nimport { APP_IMAGE_PLACEHOLDER } from 'es6/core/styles/colors';\nimport React from 'react';\nimport { getTranscodedUrl } from 'es6/services/image-manager';\nimport { StyleSheet, css } from 'aphrodite';\nimport assetPath from 'es6/services/asset-path';\nimport { optionalOneOf } from 'es6/helpers/prop-types';\n\nexport const TranscodedImageSizes = Object.freeze({\n SMALL: 'small',\n MEDIUM: 'medium',\n LARGE: 'large',\n APP_ITEM: 'appItem',\n APP_SENTENCE: 'appSentence',\n APP_SENTENCE_SMALL: 'appSentenceSmall',\n});\n\nexport const TranscodedImagePlaceholders = Object.freeze({\n NONE: 'noPlaceholder',\n APP: 'bluePlaceholder',\n DEFAULT: 'defaultPlaceholder',\n});\n\n/**\n * These are the retina sizes. Use CSS to adjust the actual sizes displayed.\n */\nconst transcodingDimensions = Object.freeze({\n small: Config.transcodingSettings.smallImage,\n medium: Config.transcodingSettings.mediumImage,\n large: Config.transcodingSettings.largeImage,\n appItem: Config.transcodingSettings.appItemImage,\n appSentence: Config.transcodingSettings.appSentenceImage,\n // Weird case where the trancoded image is same size but the\n // displayed (CSS) size is smaller, keeping only for backwards\n // compatibility\n appSentenceSmall: Config.transcodingSettings.appSentenceImage,\n});\n\n/**\n * Passing in no src will show a placeholder.\n *\n * Placeholders can be picked from TranscodedImagePlaceholders enum.\n */\nexport function TranscodedImage({\n className = '',\n placeholder = TranscodedImagePlaceholders.DEFAULT,\n size = TranscodedImageSizes.SMALL,\n src = null,\n}) {\n const classes = classnames(\n css(styles.image),\n css(styles[size]),\n // Insert a placeholder if source is not defined\n { [css(styles[placeholder])]: !src },\n // Abitrary className addition, kept for backward-compat with some\n // components that add class names for layouting\n className\n );\n\n const style = src ? transcodedImageStyle(src, size) : null;\n\n return
;\n}\n\n// Add a default export so this component can also be imported directly\nexport default TranscodedImage;\n\nTranscodedImage.propTypes = {\n className: React.PropTypes.string,\n src: React.PropTypes.string,\n size: React.PropTypes.oneOf(values(TranscodedImageSizes)).isRequired,\n placeholder: optionalOneOf(values(TranscodedImagePlaceholders)),\n};\n\nfunction transcodedImageStyle(src, size) {\n const url = getTranscodedUrl(src, transcodingDimensions[size]);\n return { backgroundImage: `url('${url}')` };\n}\n\nconst styles = StyleSheet.create({\n image: {\n display: 'inline-block',\n borderRadius: '5px',\n backgroundSize: 'cover',\n backgroundPosition: '50% 50%',\n },\n small: halfSizeInPixes(transcodingDimensions.small),\n medium: halfSizeInPixes(transcodingDimensions.medium),\n large: halfSizeInPixes(transcodingDimensions.large),\n appItem: halfSizeInPixes(transcodingDimensions.appItem),\n appSentence: halfSizeInPixes(transcodingDimensions.appSentence),\n appSentenceSmall: {\n width: '150px',\n height: '138px',\n },\n defaultPlaceholder: {\n backgroundImage: `url(${assetPath('default/big/goal.jpg')})`,\n },\n bluePlaceholder: {\n backgroundColor: APP_IMAGE_PLACEHOLDER,\n },\n});\n\nfunction halfSizeInPixes(size) {\n return {\n width: `${size.width / 2}px`,\n height: `${size.height / 2}px`,\n };\n}\n","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule canDefineProperty\n */\n'use strict';\n\nvar canDefineProperty = false;\n\nif (process.env.NODE_ENV !== 'production') {\n try {\n Object.defineProperty({}, 'x', {\n get: function get() {}\n });\n canDefineProperty = true;\n } catch (x) {// IE will fail on defineProperty\n }\n}\n\nmodule.exports = canDefineProperty;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule traverseAllChildren\n */\n'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar ReactCurrentOwner = require('./ReactCurrentOwner');\n\nvar ReactElement = require('./ReactElement');\n\nvar getIteratorFn = require('./getIteratorFn');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar warning = require('fbjs/lib/warning');\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\nvar userProvidedKeyEscaperLookup = {\n '=': '=0',\n ':': '=2'\n};\nvar userProvidedKeyEscapeRegex = /[=:]/g;\nvar didWarnAboutMaps = false;\n\nfunction userProvidedKeyEscaper(match) {\n return userProvidedKeyEscaperLookup[match];\n}\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\n\n\nfunction getComponentKey(component, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (component && _typeof(component) === 'object' && component.key != null) {\n // Explicit key\n return wrapUserProvidedKey(component.key);\n } // Implicit key determined by the index in the set\n\n\n return index.toString(36);\n}\n/**\n * Escape a component key so that it is safe to use in a reactid.\n *\n * @param {*} text Component key to be escaped.\n * @return {string} An escaped string.\n */\n\n\nfunction escapeUserProvidedKey(text) {\n return ('' + text).replace(userProvidedKeyEscapeRegex, userProvidedKeyEscaper);\n}\n/**\n * Wrap a `key` value explicitly provided by the user to distinguish it from\n * implicitly-generated keys generated by a component's index in its parent.\n *\n * @param {string} key Value of a user-provided `key` attribute\n * @return {string}\n */\n\n\nfunction wrapUserProvidedKey(key) {\n return '$' + escapeUserProvidedKey(key);\n}\n/**\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\n\n\nfunction traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {\n var type = _typeof(children);\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n if (children === null || type === 'string' || type === 'number' || ReactElement.isValidElement(children)) {\n callback(traverseContext, children, // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows.\n nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getComponentKey(child, i);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n\n if (iteratorFn) {\n var iterator = iteratorFn.call(children);\n var step;\n\n if (iteratorFn !== children.entries) {\n var ii = 0;\n\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getComponentKey(child, ii++);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.') : void 0;\n didWarnAboutMaps = true;\n } // Iterator will provide entry [k,v] tuples rather than values.\n\n\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n\n if (entry) {\n child = entry[1];\n nextName = nextNamePrefix + wrapUserProvidedKey(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n }\n }\n } else if (type === 'object') {\n var addendum = '';\n\n if (process.env.NODE_ENV !== 'production') {\n addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.';\n\n if (children._isReactElement) {\n addendum = ' It looks like you\\'re using an element created by a different ' + 'version of React. Make sure to use only one copy of React.';\n }\n\n if (ReactCurrentOwner.current) {\n var name = ReactCurrentOwner.current.getName();\n\n if (name) {\n addendum += ' Check the render method of `' + name + '`.';\n }\n }\n }\n\n var childrenString = String(children);\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : invariant(false) : void 0;\n }\n }\n\n return subtreeCount;\n}\n/**\n * Traverses children that are typically specified as `props.children`, but\n * might also be specified through attributes:\n *\n * - `traverseAllChildren(this.props.children, ...)`\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n *\n * The `traverseContext` is an optional argument that is passed through the\n * entire traversal. It can be used to store accumulations or anything else that\n * the callback might find relevant.\n *\n * @param {?*} children Children tree object.\n * @param {!function} callback To invoke upon traversing each child.\n * @param {?*} traverseContext Context for traversal.\n * @return {!number} The number of children in this subtree.\n */\n\n\nfunction traverseAllChildren(children, callback, traverseContext) {\n if (children == null) {\n return 0;\n }\n\n return traverseAllChildrenImpl(children, '', callback, traverseContext);\n}\n\nmodule.exports = traverseAllChildren;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule getIteratorFn\n */\n'use strict';\n/* global Symbol */\n\nvar ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n/**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n\nfunction getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nmodule.exports = getIteratorFn;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule EventPluginUtils\n */\n'use strict';\n\nvar EventConstants = require('./EventConstants');\n\nvar ReactErrorUtils = require('./ReactErrorUtils');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar warning = require('fbjs/lib/warning');\n/**\n * Injected dependencies:\n */\n\n/**\n * - `ComponentTree`: [required] Module that can convert between React instances\n * and actual node references.\n */\n\n\nvar ComponentTree;\nvar TreeTraversal;\nvar injection = {\n injectComponentTree: function injectComponentTree(Injected) {\n ComponentTree = Injected;\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.getNodeFromInstance && Injected.getInstanceFromNode, 'EventPluginUtils.injection.injectComponentTree(...): Injected ' + 'module is missing getNodeFromInstance or getInstanceFromNode.') : void 0;\n }\n },\n injectTreeTraversal: function injectTreeTraversal(Injected) {\n TreeTraversal = Injected;\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.isAncestor && Injected.getLowestCommonAncestor, 'EventPluginUtils.injection.injectTreeTraversal(...): Injected ' + 'module is missing isAncestor or getLowestCommonAncestor.') : void 0;\n }\n }\n};\nvar topLevelTypes = EventConstants.topLevelTypes;\n\nfunction isEndish(topLevelType) {\n return topLevelType === topLevelTypes.topMouseUp || topLevelType === topLevelTypes.topTouchEnd || topLevelType === topLevelTypes.topTouchCancel;\n}\n\nfunction isMoveish(topLevelType) {\n return topLevelType === topLevelTypes.topMouseMove || topLevelType === topLevelTypes.topTouchMove;\n}\n\nfunction isStartish(topLevelType) {\n return topLevelType === topLevelTypes.topMouseDown || topLevelType === topLevelTypes.topTouchStart;\n}\n\nvar validateEventDispatches;\n\nif (process.env.NODE_ENV !== 'production') {\n validateEventDispatches = function validateEventDispatches(event) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n var listenersIsArr = Array.isArray(dispatchListeners);\n var listenersLen = listenersIsArr ? dispatchListeners.length : dispatchListeners ? 1 : 0;\n var instancesIsArr = Array.isArray(dispatchInstances);\n var instancesLen = instancesIsArr ? dispatchInstances.length : dispatchInstances ? 1 : 0;\n process.env.NODE_ENV !== 'production' ? warning(instancesIsArr === listenersIsArr && instancesLen === listenersLen, 'EventPluginUtils: Invalid `event`.') : void 0;\n };\n}\n/**\n * Dispatch the event to the listener.\n * @param {SyntheticEvent} event SyntheticEvent to handle\n * @param {boolean} simulated If the event is simulated (changes exn behavior)\n * @param {function} listener Application-level callback\n * @param {*} inst Internal component instance\n */\n\n\nfunction executeDispatch(event, simulated, listener, inst) {\n var type = event.type || 'unknown-event';\n event.currentTarget = EventPluginUtils.getNodeFromInstance(inst);\n\n if (simulated) {\n ReactErrorUtils.invokeGuardedCallbackWithCatch(type, listener, event);\n } else {\n ReactErrorUtils.invokeGuardedCallback(type, listener, event);\n }\n\n event.currentTarget = null;\n}\n/**\n * Standard/simple iteration through an event's collected dispatches.\n */\n\n\nfunction executeDispatchesInOrder(event, simulated) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n\n if (process.env.NODE_ENV !== 'production') {\n validateEventDispatches(event);\n }\n\n if (Array.isArray(dispatchListeners)) {\n for (var i = 0; i < dispatchListeners.length; i++) {\n if (event.isPropagationStopped()) {\n break;\n } // Listeners and Instances are two parallel arrays that are always in sync.\n\n\n executeDispatch(event, simulated, dispatchListeners[i], dispatchInstances[i]);\n }\n } else if (dispatchListeners) {\n executeDispatch(event, simulated, dispatchListeners, dispatchInstances);\n }\n\n event._dispatchListeners = null;\n event._dispatchInstances = null;\n}\n/**\n * Standard/simple iteration through an event's collected dispatches, but stops\n * at the first dispatch execution returning true, and returns that id.\n *\n * @return {?string} id of the first dispatch execution who's listener returns\n * true, or null if no listener returned true.\n */\n\n\nfunction executeDispatchesInOrderStopAtTrueImpl(event) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n\n if (process.env.NODE_ENV !== 'production') {\n validateEventDispatches(event);\n }\n\n if (Array.isArray(dispatchListeners)) {\n for (var i = 0; i < dispatchListeners.length; i++) {\n if (event.isPropagationStopped()) {\n break;\n } // Listeners and Instances are two parallel arrays that are always in sync.\n\n\n if (dispatchListeners[i](event, dispatchInstances[i])) {\n return dispatchInstances[i];\n }\n }\n } else if (dispatchListeners) {\n if (dispatchListeners(event, dispatchInstances)) {\n return dispatchInstances;\n }\n }\n\n return null;\n}\n/**\n * @see executeDispatchesInOrderStopAtTrueImpl\n */\n\n\nfunction executeDispatchesInOrderStopAtTrue(event) {\n var ret = executeDispatchesInOrderStopAtTrueImpl(event);\n event._dispatchInstances = null;\n event._dispatchListeners = null;\n return ret;\n}\n/**\n * Execution of a \"direct\" dispatch - there must be at most one dispatch\n * accumulated on the event or it is considered an error. It doesn't really make\n * sense for an event with multiple dispatches (bubbled) to keep track of the\n * return values at each dispatch execution, but it does tend to make sense when\n * dealing with \"direct\" dispatches.\n *\n * @return {*} The return value of executing the single dispatch.\n */\n\n\nfunction executeDirectDispatch(event) {\n if (process.env.NODE_ENV !== 'production') {\n validateEventDispatches(event);\n }\n\n var dispatchListener = event._dispatchListeners;\n var dispatchInstance = event._dispatchInstances;\n !!Array.isArray(dispatchListener) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'executeDirectDispatch(...): Invalid `event`.') : invariant(false) : void 0;\n event.currentTarget = EventPluginUtils.getNodeFromInstance(dispatchInstance);\n var res = dispatchListener ? dispatchListener(event) : null;\n event.currentTarget = null;\n event._dispatchListeners = null;\n event._dispatchInstances = null;\n return res;\n}\n/**\n * @param {SyntheticEvent} event\n * @return {boolean} True iff number of dispatches accumulated is greater than 0.\n */\n\n\nfunction hasDispatches(event) {\n return !!event._dispatchListeners;\n}\n/**\n * General utilities that are useful in creating custom Event Plugins.\n */\n\n\nvar EventPluginUtils = {\n isEndish: isEndish,\n isMoveish: isMoveish,\n isStartish: isStartish,\n executeDirectDispatch: executeDirectDispatch,\n executeDispatchesInOrder: executeDispatchesInOrder,\n executeDispatchesInOrderStopAtTrue: executeDispatchesInOrderStopAtTrue,\n hasDispatches: hasDispatches,\n getInstanceFromNode: function getInstanceFromNode(node) {\n return ComponentTree.getInstanceFromNode(node);\n },\n getNodeFromInstance: function getNodeFromInstance(node) {\n return ComponentTree.getNodeFromInstance(node);\n },\n isAncestor: function isAncestor(a, b) {\n return TreeTraversal.isAncestor(a, b);\n },\n getLowestCommonAncestor: function getLowestCommonAncestor(a, b) {\n return TreeTraversal.getLowestCommonAncestor(a, b);\n },\n getParentInstance: function getParentInstance(inst) {\n return TreeTraversal.getParentInstance(inst);\n },\n traverseTwoPhase: function traverseTwoPhase(target, fn, arg) {\n return TreeTraversal.traverseTwoPhase(target, fn, arg);\n },\n traverseEnterLeave: function traverseEnterLeave(from, to, fn, argFrom, argTo) {\n return TreeTraversal.traverseEnterLeave(from, to, fn, argFrom, argTo);\n },\n injection: injection\n};\nmodule.exports = EventPluginUtils;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactErrorUtils\n */\n'use strict';\n\nvar caughtError = null;\n/**\n * Call a function while guarding against errors that happens within it.\n *\n * @param {?String} name of the guard to use for logging or debugging\n * @param {Function} func The function to invoke\n * @param {*} a First argument\n * @param {*} b Second argument\n */\n\nfunction invokeGuardedCallback(name, func, a, b) {\n try {\n return func(a, b);\n } catch (x) {\n if (caughtError === null) {\n caughtError = x;\n }\n\n return undefined;\n }\n}\n\nvar ReactErrorUtils = {\n invokeGuardedCallback: invokeGuardedCallback,\n\n /**\n * Invoked by ReactTestUtils.Simulate so that any errors thrown by the event\n * handler are sure to be rethrown by rethrowCaughtError.\n */\n invokeGuardedCallbackWithCatch: invokeGuardedCallback,\n\n /**\n * During execution of guarded functions we will capture the first error which\n * we will rethrow to be handled by the top level error handler.\n */\n rethrowCaughtError: function rethrowCaughtError() {\n if (caughtError) {\n var error = caughtError;\n caughtError = null;\n throw error;\n }\n }\n};\n\nif (process.env.NODE_ENV !== 'production') {\n /**\n * To help development we can get better devtools integration by simulating a\n * real browser event.\n */\n if (typeof window !== 'undefined' && typeof window.dispatchEvent === 'function' && typeof document !== 'undefined' && typeof document.createEvent === 'function') {\n var fakeNode = document.createElement('react');\n\n ReactErrorUtils.invokeGuardedCallback = function (name, func, a, b) {\n var boundFunc = func.bind(null, a, b);\n var evtType = 'react-' + name;\n fakeNode.addEventListener(evtType, boundFunc, false);\n var evt = document.createEvent('Event');\n evt.initEvent(evtType, false, false);\n fakeNode.dispatchEvent(evt);\n fakeNode.removeEventListener(evtType, boundFunc, false);\n };\n }\n}\n\nmodule.exports = ReactErrorUtils;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Transaction\n */\n'use strict';\n\nvar invariant = require('fbjs/lib/invariant');\n/**\n * `Transaction` creates a black box that is able to wrap any method such that\n * certain invariants are maintained before and after the method is invoked\n * (Even if an exception is thrown while invoking the wrapped method). Whoever\n * instantiates a transaction can provide enforcers of the invariants at\n * creation time. The `Transaction` class itself will supply one additional\n * automatic invariant for you - the invariant that any transaction instance\n * should not be run while it is already being run. You would typically create a\n * single instance of a `Transaction` for reuse multiple times, that potentially\n * is used to wrap several different methods. Wrappers are extremely simple -\n * they only require implementing two methods.\n *\n *
\n *                       wrappers (injected at creation time)\n *                                      +        +\n *                                      |        |\n *                    +-----------------|--------|--------------+\n *                    |                 v        |              |\n *                    |      +---------------+   |              |\n *                    |   +--|    wrapper1   |---|----+         |\n *                    |   |  +---------------+   v    |         |\n *                    |   |          +-------------+  |         |\n *                    |   |     +----|   wrapper2  |--------+   |\n *                    |   |     |    +-------------+  |     |   |\n *                    |   |     |                     |     |   |\n *                    |   v     v                     v     v   | wrapper\n *                    | +---+ +---+   +---------+   +---+ +---+ | invariants\n * perform(anyMethod) | |   | |   |   |         |   |   | |   | | maintained\n * +----------------->|-|---|-|---|-->|anyMethod|---|---|-|---|-|-------->\n *                    | |   | |   |   |         |   |   | |   | |\n *                    | |   | |   |   |         |   |   | |   | |\n *                    | |   | |   |   |         |   |   | |   | |\n *                    | +---+ +---+   +---------+   +---+ +---+ |\n *                    |  initialize                    close    |\n *                    +-----------------------------------------+\n * 
\n *\n * Use cases:\n * - Preserving the input selection ranges before/after reconciliation.\n * Restoring selection even in the event of an unexpected error.\n * - Deactivating events while rearranging the DOM, preventing blurs/focuses,\n * while guaranteeing that afterwards, the event system is reactivated.\n * - Flushing a queue of collected DOM mutations to the main UI thread after a\n * reconciliation takes place in a worker thread.\n * - Invoking any collected `componentDidUpdate` callbacks after rendering new\n * content.\n * - (Future use case): Wrapping particular flushes of the `ReactWorker` queue\n * to preserve the `scrollTop` (an automatic scroll aware DOM).\n * - (Future use case): Layout calculations before and after DOM updates.\n *\n * Transactional plugin API:\n * - A module that has an `initialize` method that returns any precomputation.\n * - and a `close` method that accepts the precomputation. `close` is invoked\n * when the wrapped process is completed, or has failed.\n *\n * @param {Array} transactionWrapper Wrapper modules\n * that implement `initialize` and `close`.\n * @return {Transaction} Single transaction for reuse in thread.\n *\n * @class Transaction\n */\n\n\nvar Mixin = {\n /**\n * Sets up this instance so that it is prepared for collecting metrics. Does\n * so such that this setup method may be used on an instance that is already\n * initialized, in a way that does not consume additional memory upon reuse.\n * That can be useful if you decide to make your subclass of this mixin a\n * \"PooledClass\".\n */\n reinitializeTransaction: function reinitializeTransaction() {\n this.transactionWrappers = this.getTransactionWrappers();\n\n if (this.wrapperInitData) {\n this.wrapperInitData.length = 0;\n } else {\n this.wrapperInitData = [];\n }\n\n this._isInTransaction = false;\n },\n _isInTransaction: false,\n\n /**\n * @abstract\n * @return {Array} Array of transaction wrappers.\n */\n getTransactionWrappers: null,\n isInTransaction: function isInTransaction() {\n return !!this._isInTransaction;\n },\n\n /**\n * Executes the function within a safety window. Use this for the top level\n * methods that result in large amounts of computation/mutations that would\n * need to be safety checked. The optional arguments helps prevent the need\n * to bind in many cases.\n *\n * @param {function} method Member of scope to call.\n * @param {Object} scope Scope to invoke from.\n * @param {Object?=} a Argument to pass to the method.\n * @param {Object?=} b Argument to pass to the method.\n * @param {Object?=} c Argument to pass to the method.\n * @param {Object?=} d Argument to pass to the method.\n * @param {Object?=} e Argument to pass to the method.\n * @param {Object?=} f Argument to pass to the method.\n *\n * @return {*} Return value from `method`.\n */\n perform: function perform(method, scope, a, b, c, d, e, f) {\n !!this.isInTransaction() ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Transaction.perform(...): Cannot initialize a transaction when there ' + 'is already an outstanding transaction.') : invariant(false) : void 0;\n var errorThrown;\n var ret;\n\n try {\n this._isInTransaction = true; // Catching errors makes debugging more difficult, so we start with\n // errorThrown set to true before setting it to false after calling\n // close -- if it's still set to true in the finally block, it means\n // one of these calls threw.\n\n errorThrown = true;\n this.initializeAll(0);\n ret = method.call(scope, a, b, c, d, e, f);\n errorThrown = false;\n } finally {\n try {\n if (errorThrown) {\n // If `method` throws, prefer to show that stack trace over any thrown\n // by invoking `closeAll`.\n try {\n this.closeAll(0);\n } catch (err) {}\n } else {\n // Since `method` didn't throw, we don't want to silence the exception\n // here.\n this.closeAll(0);\n }\n } finally {\n this._isInTransaction = false;\n }\n }\n\n return ret;\n },\n initializeAll: function initializeAll(startIndex) {\n var transactionWrappers = this.transactionWrappers;\n\n for (var i = startIndex; i < transactionWrappers.length; i++) {\n var wrapper = transactionWrappers[i];\n\n try {\n // Catching errors makes debugging more difficult, so we start with the\n // OBSERVED_ERROR state before overwriting it with the real return value\n // of initialize -- if it's still set to OBSERVED_ERROR in the finally\n // block, it means wrapper.initialize threw.\n this.wrapperInitData[i] = Transaction.OBSERVED_ERROR;\n this.wrapperInitData[i] = wrapper.initialize ? wrapper.initialize.call(this) : null;\n } finally {\n if (this.wrapperInitData[i] === Transaction.OBSERVED_ERROR) {\n // The initializer for wrapper i threw an error; initialize the\n // remaining wrappers but silence any exceptions from them to ensure\n // that the first error is the one to bubble up.\n try {\n this.initializeAll(i + 1);\n } catch (err) {}\n }\n }\n }\n },\n\n /**\n * Invokes each of `this.transactionWrappers.close[i]` functions, passing into\n * them the respective return values of `this.transactionWrappers.init[i]`\n * (`close`rs that correspond to initializers that failed will not be\n * invoked).\n */\n closeAll: function closeAll(startIndex) {\n !this.isInTransaction() ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Transaction.closeAll(): Cannot close transaction when none are open.') : invariant(false) : void 0;\n var transactionWrappers = this.transactionWrappers;\n\n for (var i = startIndex; i < transactionWrappers.length; i++) {\n var wrapper = transactionWrappers[i];\n var initData = this.wrapperInitData[i];\n var errorThrown;\n\n try {\n // Catching errors makes debugging more difficult, so we start with\n // errorThrown set to true before setting it to false after calling\n // close -- if it's still set to true in the finally block, it means\n // wrapper.close threw.\n errorThrown = true;\n\n if (initData !== Transaction.OBSERVED_ERROR && wrapper.close) {\n wrapper.close.call(this, initData);\n }\n\n errorThrown = false;\n } finally {\n if (errorThrown) {\n // The closer for wrapper i threw an error; close the remaining\n // wrappers but silence any exceptions from them to ensure that the\n // first error is the one to bubble up.\n try {\n this.closeAll(i + 1);\n } catch (e) {}\n }\n }\n }\n\n this.wrapperInitData.length = 0;\n }\n};\nvar Transaction = {\n Mixin: Mixin,\n\n /**\n * Token to look for to determine if an error occurred.\n */\n OBSERVED_ERROR: {}\n};\nmodule.exports = Transaction;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule getEventTarget\n */\n'use strict';\n/**\n * Gets the target node from a native browser event by accounting for\n * inconsistencies in browser DOM APIs.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {DOMEventTarget} Target node.\n */\n\nfunction getEventTarget(nativeEvent) {\n var target = nativeEvent.target || nativeEvent.srcElement || window; // Normalize SVG element events #4963\n\n if (target.correspondingUseElement) {\n target = target.correspondingUseElement;\n } // Safari may fire events on text nodes (Node.TEXT_NODE is 3).\n // @see http://www.quirksmode.org/js/events_properties.html\n\n\n return target.nodeType === 3 ? target.parentNode : target;\n}\n\nmodule.exports = getEventTarget;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule isEventSupported\n */\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar useHasFeature;\n\nif (ExecutionEnvironment.canUseDOM) {\n useHasFeature = document.implementation && document.implementation.hasFeature && // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n document.implementation.hasFeature('', '') !== true;\n}\n/**\n * Checks if an event is supported in the current execution environment.\n *\n * NOTE: This will not work correctly for non-generic events such as `change`,\n * `reset`, `load`, `error`, and `select`.\n *\n * Borrows from Modernizr.\n *\n * @param {string} eventNameSuffix Event name, e.g. \"click\".\n * @param {?boolean} capture Check if the capture phase is supported.\n * @return {boolean} True if the event is supported.\n * @internal\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\n\n\nfunction isEventSupported(eventNameSuffix, capture) {\n if (!ExecutionEnvironment.canUseDOM || capture && !('addEventListener' in document)) {\n return false;\n }\n\n var eventName = 'on' + eventNameSuffix;\n var isSupported = (eventName in document);\n\n if (!isSupported) {\n var element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported && useHasFeature && eventNameSuffix === 'wheel') {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\n\nmodule.exports = isEventSupported;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule getEventModifierState\n */\n'use strict';\n/**\n * Translation from modifier key to the associated property in the event.\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers\n */\n\nvar modifierKeyToProp = {\n 'Alt': 'altKey',\n 'Control': 'ctrlKey',\n 'Meta': 'metaKey',\n 'Shift': 'shiftKey'\n}; // IE8 does not implement getModifierState so we simply map it to the only\n// modifier keys exposed by the event itself, does not support Lock-keys.\n// Currently, all major browsers except Chrome seems to support Lock-keys.\n\nfunction modifierStateGetter(keyArg) {\n var syntheticEvent = this;\n var nativeEvent = syntheticEvent.nativeEvent;\n\n if (nativeEvent.getModifierState) {\n return nativeEvent.getModifierState(keyArg);\n }\n\n var keyProp = modifierKeyToProp[keyArg];\n return keyProp ? !!nativeEvent[keyProp] : false;\n}\n\nfunction getEventModifierState(nativeEvent) {\n return modifierStateGetter;\n}\n\nmodule.exports = getEventModifierState;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule DOMChildrenOperations\n */\n'use strict';\n\nvar DOMLazyTree = require('./DOMLazyTree');\n\nvar Danger = require('./Danger');\n\nvar ReactMultiChildUpdateTypes = require('./ReactMultiChildUpdateTypes');\n\nvar ReactPerf = require('./ReactPerf');\n\nvar createMicrosoftUnsafeLocalFunction = require('./createMicrosoftUnsafeLocalFunction');\n\nvar setInnerHTML = require('./setInnerHTML');\n\nvar setTextContent = require('./setTextContent');\n\nfunction getNodeAfter(parentNode, node) {\n // Special case for text components, which return [open, close] comments\n // from getNativeNode.\n if (Array.isArray(node)) {\n node = node[1];\n }\n\n return node ? node.nextSibling : parentNode.firstChild;\n}\n/**\n * Inserts `childNode` as a child of `parentNode` at the `index`.\n *\n * @param {DOMElement} parentNode Parent node in which to insert.\n * @param {DOMElement} childNode Child node to insert.\n * @param {number} index Index at which to insert the child.\n * @internal\n */\n\n\nvar insertChildAt = createMicrosoftUnsafeLocalFunction(function (parentNode, childNode, referenceNode) {\n // We rely exclusively on `insertBefore(node, null)` instead of also using\n // `appendChild(node)`. (Using `undefined` is not allowed by all browsers so\n // we are careful to use `null`.)\n parentNode.insertBefore(childNode, referenceNode);\n});\n\nfunction insertLazyTreeChildAt(parentNode, childTree, referenceNode) {\n DOMLazyTree.insertTreeBefore(parentNode, childTree, referenceNode);\n}\n\nfunction moveChild(parentNode, childNode, referenceNode) {\n if (Array.isArray(childNode)) {\n moveDelimitedText(parentNode, childNode[0], childNode[1], referenceNode);\n } else {\n insertChildAt(parentNode, childNode, referenceNode);\n }\n}\n\nfunction removeChild(parentNode, childNode) {\n if (Array.isArray(childNode)) {\n var closingComment = childNode[1];\n childNode = childNode[0];\n removeDelimitedText(parentNode, childNode, closingComment);\n parentNode.removeChild(closingComment);\n }\n\n parentNode.removeChild(childNode);\n}\n\nfunction moveDelimitedText(parentNode, openingComment, closingComment, referenceNode) {\n var node = openingComment;\n\n while (true) {\n var nextNode = node.nextSibling;\n insertChildAt(parentNode, node, referenceNode);\n\n if (node === closingComment) {\n break;\n }\n\n node = nextNode;\n }\n}\n\nfunction removeDelimitedText(parentNode, startNode, closingComment) {\n while (true) {\n var node = startNode.nextSibling;\n\n if (node === closingComment) {\n // The closing comment is removed by ReactMultiChild.\n break;\n } else {\n parentNode.removeChild(node);\n }\n }\n}\n\nfunction replaceDelimitedText(openingComment, closingComment, stringText) {\n var parentNode = openingComment.parentNode;\n var nodeAfterComment = openingComment.nextSibling;\n\n if (nodeAfterComment === closingComment) {\n // There are no text nodes between the opening and closing comments; insert\n // a new one if stringText isn't empty.\n if (stringText) {\n insertChildAt(parentNode, document.createTextNode(stringText), nodeAfterComment);\n }\n } else {\n if (stringText) {\n // Set the text content of the first node after the opening comment, and\n // remove all following nodes up until the closing comment.\n setTextContent(nodeAfterComment, stringText);\n removeDelimitedText(parentNode, nodeAfterComment, closingComment);\n } else {\n removeDelimitedText(parentNode, openingComment, closingComment);\n }\n }\n}\n/**\n * Operations for updating with DOM children.\n */\n\n\nvar DOMChildrenOperations = {\n dangerouslyReplaceNodeWithMarkup: Danger.dangerouslyReplaceNodeWithMarkup,\n replaceDelimitedText: replaceDelimitedText,\n\n /**\n * Updates a component's children by processing a series of updates. The\n * update configurations are each expected to have a `parentNode` property.\n *\n * @param {array} updates List of update configurations.\n * @internal\n */\n processUpdates: function processUpdates(parentNode, updates) {\n for (var k = 0; k < updates.length; k++) {\n var update = updates[k];\n\n switch (update.type) {\n case ReactMultiChildUpdateTypes.INSERT_MARKUP:\n insertLazyTreeChildAt(parentNode, update.content, getNodeAfter(parentNode, update.afterNode));\n break;\n\n case ReactMultiChildUpdateTypes.MOVE_EXISTING:\n moveChild(parentNode, update.fromNode, getNodeAfter(parentNode, update.afterNode));\n break;\n\n case ReactMultiChildUpdateTypes.SET_MARKUP:\n setInnerHTML(parentNode, update.content);\n break;\n\n case ReactMultiChildUpdateTypes.TEXT_CONTENT:\n setTextContent(parentNode, update.content);\n break;\n\n case ReactMultiChildUpdateTypes.REMOVE_NODE:\n removeChild(parentNode, update.fromNode);\n break;\n }\n }\n }\n};\nReactPerf.measureMethods(DOMChildrenOperations, 'DOMChildrenOperations', {\n replaceDelimitedText: 'replaceDelimitedText'\n});\nmodule.exports = DOMChildrenOperations;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule createMicrosoftUnsafeLocalFunction\n */\n\n/* globals MSApp */\n'use strict';\n/**\n * Create a function which has 'unsafe' privileges (required by windows8 apps)\n */\n\nvar createMicrosoftUnsafeLocalFunction = function createMicrosoftUnsafeLocalFunction(func) {\n if (typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction) {\n return function (arg0, arg1, arg2, arg3) {\n MSApp.execUnsafeLocalFunction(function () {\n return func(arg0, arg1, arg2, arg3);\n });\n };\n } else {\n return func;\n }\n};\n\nmodule.exports = createMicrosoftUnsafeLocalFunction;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule setInnerHTML\n */\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar WHITESPACE_TEST = /^[ \\r\\n\\t\\f]/;\nvar NONVISIBLE_TEST = /<(!--|link|noscript|meta|script|style)[ \\r\\n\\t\\f\\/>]/;\n\nvar createMicrosoftUnsafeLocalFunction = require('./createMicrosoftUnsafeLocalFunction');\n/**\n * Set the innerHTML property of a node, ensuring that whitespace is preserved\n * even in IE8.\n *\n * @param {DOMElement} node\n * @param {string} html\n * @internal\n */\n\n\nvar setInnerHTML = createMicrosoftUnsafeLocalFunction(function (node, html) {\n node.innerHTML = html;\n});\n\nif (ExecutionEnvironment.canUseDOM) {\n // IE8: When updating a just created node with innerHTML only leading\n // whitespace is removed. When updating an existing node with innerHTML\n // whitespace in root TextNodes is also collapsed.\n // @see quirksmode.org/bugreports/archives/2004/11/innerhtml_and_t.html\n // Feature detection; only IE8 is known to behave improperly like this.\n var testElement = document.createElement('div');\n testElement.innerHTML = ' ';\n\n if (testElement.innerHTML === '') {\n setInnerHTML = function setInnerHTML(node, html) {\n // Magic theory: IE8 supposedly differentiates between added and updated\n // nodes when processing innerHTML, innerHTML on updated nodes suffers\n // from worse whitespace behavior. Re-adding a node like this triggers\n // the initial and more favorable whitespace behavior.\n // TODO: What to do on a detached node?\n if (node.parentNode) {\n node.parentNode.replaceChild(node, node);\n } // We also implement a workaround for non-visible tags disappearing into\n // thin air on IE8, this only happens if there is no visible text\n // in-front of the non-visible tags. Piggyback on the whitespace fix\n // and simply check if any non-visible tags appear in the source.\n\n\n if (WHITESPACE_TEST.test(html) || html[0] === '<' && NONVISIBLE_TEST.test(html)) {\n // Recover leading whitespace by temporarily prepending any character.\n // \\uFEFF has the potential advantage of being zero-width/invisible.\n // UglifyJS drops U+FEFF chars when parsing, so use String.fromCharCode\n // in hopes that this is preserved even if \"\\uFEFF\" is transformed to\n // the actual Unicode character (by Babel, for example).\n // https://github.com/mishoo/UglifyJS2/blob/v2.4.20/lib/parse.js#L216\n node.innerHTML = String.fromCharCode(0xFEFF) + html; // deleteData leaves an empty `TextNode` which offsets the index of all\n // children. Definitely want to avoid this.\n\n var textNode = node.firstChild;\n\n if (textNode.data.length === 1) {\n node.removeChild(textNode);\n } else {\n textNode.deleteData(0, 1);\n }\n } else {\n node.innerHTML = html;\n }\n };\n }\n\n testElement = null;\n}\n\nmodule.exports = setInnerHTML;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule DOMPropertyOperations\n */\n'use strict';\n\nvar DOMProperty = require('./DOMProperty');\n\nvar ReactDOMInstrumentation = require('./ReactDOMInstrumentation');\n\nvar ReactPerf = require('./ReactPerf');\n\nvar quoteAttributeValueForBrowser = require('./quoteAttributeValueForBrowser');\n\nvar warning = require('fbjs/lib/warning');\n\nvar VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + DOMProperty.ATTRIBUTE_NAME_START_CHAR + '][' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$');\nvar illegalAttributeNameCache = {};\nvar validatedAttributeNameCache = {};\n\nfunction isAttributeNameSafe(attributeName) {\n if (validatedAttributeNameCache.hasOwnProperty(attributeName)) {\n return true;\n }\n\n if (illegalAttributeNameCache.hasOwnProperty(attributeName)) {\n return false;\n }\n\n if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {\n validatedAttributeNameCache[attributeName] = true;\n return true;\n }\n\n illegalAttributeNameCache[attributeName] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid attribute name: `%s`', attributeName) : void 0;\n return false;\n}\n\nfunction shouldIgnoreValue(propertyInfo, value) {\n return value == null || propertyInfo.hasBooleanValue && !value || propertyInfo.hasNumericValue && isNaN(value) || propertyInfo.hasPositiveNumericValue && value < 1 || propertyInfo.hasOverloadedBooleanValue && value === false;\n}\n/**\n * Operations for dealing with DOM properties.\n */\n\n\nvar DOMPropertyOperations = {\n /**\n * Creates markup for the ID property.\n *\n * @param {string} id Unescaped ID.\n * @return {string} Markup string.\n */\n createMarkupForID: function createMarkupForID(id) {\n return DOMProperty.ID_ATTRIBUTE_NAME + '=' + quoteAttributeValueForBrowser(id);\n },\n setAttributeForID: function setAttributeForID(node, id) {\n node.setAttribute(DOMProperty.ID_ATTRIBUTE_NAME, id);\n },\n createMarkupForRoot: function createMarkupForRoot() {\n return DOMProperty.ROOT_ATTRIBUTE_NAME + '=\"\"';\n },\n setAttributeForRoot: function setAttributeForRoot(node) {\n node.setAttribute(DOMProperty.ROOT_ATTRIBUTE_NAME, '');\n },\n\n /**\n * Creates markup for a property.\n *\n * @param {string} name\n * @param {*} value\n * @return {?string} Markup string, or null if the property was invalid.\n */\n createMarkupForProperty: function createMarkupForProperty(name, value) {\n if (process.env.NODE_ENV !== 'production') {\n ReactDOMInstrumentation.debugTool.onCreateMarkupForProperty(name, value);\n }\n\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n\n if (propertyInfo) {\n if (shouldIgnoreValue(propertyInfo, value)) {\n return '';\n }\n\n var attributeName = propertyInfo.attributeName;\n\n if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {\n return attributeName + '=\"\"';\n }\n\n return attributeName + '=' + quoteAttributeValueForBrowser(value);\n } else if (DOMProperty.isCustomAttribute(name)) {\n if (value == null) {\n return '';\n }\n\n return name + '=' + quoteAttributeValueForBrowser(value);\n }\n\n return null;\n },\n\n /**\n * Creates markup for a custom property.\n *\n * @param {string} name\n * @param {*} value\n * @return {string} Markup string, or empty string if the property was invalid.\n */\n createMarkupForCustomAttribute: function createMarkupForCustomAttribute(name, value) {\n if (!isAttributeNameSafe(name) || value == null) {\n return '';\n }\n\n return name + '=' + quoteAttributeValueForBrowser(value);\n },\n\n /**\n * Sets the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n * @param {*} value\n */\n setValueForProperty: function setValueForProperty(node, name, value) {\n if (process.env.NODE_ENV !== 'production') {\n ReactDOMInstrumentation.debugTool.onSetValueForProperty(node, name, value);\n }\n\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n\n if (propertyInfo) {\n var mutationMethod = propertyInfo.mutationMethod;\n\n if (mutationMethod) {\n mutationMethod(node, value);\n } else if (shouldIgnoreValue(propertyInfo, value)) {\n this.deleteValueForProperty(node, name);\n } else if (propertyInfo.mustUseProperty) {\n var propName = propertyInfo.propertyName; // Must explicitly cast values for HAS_SIDE_EFFECTS-properties to the\n // property type before comparing; only `value` does and is string.\n\n if (!propertyInfo.hasSideEffects || '' + node[propName] !== '' + value) {\n // Contrary to `setAttribute`, object properties are properly\n // `toString`ed by IE8/9.\n node[propName] = value;\n }\n } else {\n var attributeName = propertyInfo.attributeName;\n var namespace = propertyInfo.attributeNamespace; // `setAttribute` with objects becomes only `[object]` in IE8/9,\n // ('' + value) makes it output the correct toString()-value.\n\n if (namespace) {\n node.setAttributeNS(namespace, attributeName, '' + value);\n } else if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {\n node.setAttribute(attributeName, '');\n } else {\n node.setAttribute(attributeName, '' + value);\n }\n }\n } else if (DOMProperty.isCustomAttribute(name)) {\n DOMPropertyOperations.setValueForAttribute(node, name, value);\n }\n },\n setValueForAttribute: function setValueForAttribute(node, name, value) {\n if (!isAttributeNameSafe(name)) {\n return;\n }\n\n if (value == null) {\n node.removeAttribute(name);\n } else {\n node.setAttribute(name, '' + value);\n }\n },\n\n /**\n * Deletes the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n */\n deleteValueForProperty: function deleteValueForProperty(node, name) {\n if (process.env.NODE_ENV !== 'production') {\n ReactDOMInstrumentation.debugTool.onDeleteValueForProperty(node, name);\n }\n\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n\n if (propertyInfo) {\n var mutationMethod = propertyInfo.mutationMethod;\n\n if (mutationMethod) {\n mutationMethod(node, undefined);\n } else if (propertyInfo.mustUseProperty) {\n var propName = propertyInfo.propertyName;\n\n if (propertyInfo.hasBooleanValue) {\n // No HAS_SIDE_EFFECTS logic here, only `value` has it and is string.\n node[propName] = false;\n } else {\n if (!propertyInfo.hasSideEffects || '' + node[propName] !== '') {\n node[propName] = '';\n }\n }\n } else {\n node.removeAttribute(propertyInfo.attributeName);\n }\n } else if (DOMProperty.isCustomAttribute(name)) {\n node.removeAttribute(name);\n }\n }\n};\nReactPerf.measureMethods(DOMPropertyOperations, 'DOMPropertyOperations', {\n setValueForProperty: 'setValueForProperty',\n setValueForAttribute: 'setValueForAttribute',\n deleteValueForProperty: 'deleteValueForProperty'\n});\nmodule.exports = DOMPropertyOperations;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule LinkedValueUtils\n */\n'use strict';\n\nvar ReactPropTypes = require('./ReactPropTypes');\n\nvar ReactPropTypeLocations = require('./ReactPropTypeLocations');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar warning = require('fbjs/lib/warning');\n\nvar hasReadOnlyValue = {\n 'button': true,\n 'checkbox': true,\n 'image': true,\n 'hidden': true,\n 'radio': true,\n 'reset': true,\n 'submit': true\n};\n\nfunction _assertSingleLink(inputProps) {\n !(inputProps.checkedLink == null || inputProps.valueLink == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Cannot provide a checkedLink and a valueLink. If you want to use ' + 'checkedLink, you probably don\\'t want to use valueLink and vice versa.') : invariant(false) : void 0;\n}\n\nfunction _assertValueLink(inputProps) {\n _assertSingleLink(inputProps);\n\n !(inputProps.value == null && inputProps.onChange == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Cannot provide a valueLink and a value or onChange event. If you want ' + 'to use value or onChange, you probably don\\'t want to use valueLink.') : invariant(false) : void 0;\n}\n\nfunction _assertCheckedLink(inputProps) {\n _assertSingleLink(inputProps);\n\n !(inputProps.checked == null && inputProps.onChange == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Cannot provide a checkedLink and a checked property or onChange event. ' + 'If you want to use checked or onChange, you probably don\\'t want to ' + 'use checkedLink') : invariant(false) : void 0;\n}\n\nvar propTypes = {\n value: function value(props, propName, componentName) {\n if (!props[propName] || hasReadOnlyValue[props.type] || props.onChange || props.readOnly || props.disabled) {\n return null;\n }\n\n return new Error('You provided a `value` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultValue`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n },\n checked: function checked(props, propName, componentName) {\n if (!props[propName] || props.onChange || props.readOnly || props.disabled) {\n return null;\n }\n\n return new Error('You provided a `checked` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultChecked`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n },\n onChange: ReactPropTypes.func\n};\nvar loggedTypeFailures = {};\n\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n\n return '';\n}\n/**\n * Provide a linked `value` attribute for controlled forms. You should not use\n * this outside of the ReactDOM controlled form components.\n */\n\n\nvar LinkedValueUtils = {\n checkPropTypes: function checkPropTypes(tagName, props, owner) {\n for (var propName in propTypes) {\n if (propTypes.hasOwnProperty(propName)) {\n var error = propTypes[propName](props, propName, tagName, ReactPropTypeLocations.prop);\n }\n\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n var addendum = getDeclarationErrorAddendum(owner);\n process.env.NODE_ENV !== 'production' ? warning(false, 'Failed form propType: %s%s', error.message, addendum) : void 0;\n }\n }\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @return {*} current value of the input either from value prop or link.\n */\n getValue: function getValue(inputProps) {\n if (inputProps.valueLink) {\n _assertValueLink(inputProps);\n\n return inputProps.valueLink.value;\n }\n\n return inputProps.value;\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @return {*} current checked status of the input either from checked prop\n * or link.\n */\n getChecked: function getChecked(inputProps) {\n if (inputProps.checkedLink) {\n _assertCheckedLink(inputProps);\n\n return inputProps.checkedLink.value;\n }\n\n return inputProps.checked;\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @param {SyntheticEvent} event change event to handle\n */\n executeOnChange: function executeOnChange(inputProps, event) {\n if (inputProps.valueLink) {\n _assertValueLink(inputProps);\n\n return inputProps.valueLink.requestChange(event.target.value);\n } else if (inputProps.checkedLink) {\n _assertCheckedLink(inputProps);\n\n return inputProps.checkedLink.requestChange(event.target.checked);\n } else if (inputProps.onChange) {\n return inputProps.onChange.call(undefined, event);\n }\n }\n};\nmodule.exports = LinkedValueUtils;","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactComponentEnvironment\n */\n'use strict';\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar injected = false;\nvar ReactComponentEnvironment = {\n /**\n * Optionally injectable environment dependent cleanup hook. (server vs.\n * browser etc). Example: A browser system caches DOM nodes based on component\n * ID and must remove that cache entry when this instance is unmounted.\n */\n unmountIDFromEnvironment: null,\n\n /**\n * Optionally injectable hook for swapping out mount images in the middle of\n * the tree.\n */\n replaceNodeWithMarkup: null,\n\n /**\n * Optionally injectable hook for processing a queue of child updates. Will\n * later move into MultiChildComponents.\n */\n processChildrenUpdates: null,\n injection: {\n injectEnvironment: function injectEnvironment(environment) {\n !!injected ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactCompositeComponent: injectEnvironment() can only be called once.') : invariant(false) : void 0;\n ReactComponentEnvironment.unmountIDFromEnvironment = environment.unmountIDFromEnvironment;\n ReactComponentEnvironment.replaceNodeWithMarkup = environment.replaceNodeWithMarkup;\n ReactComponentEnvironment.processChildrenUpdates = environment.processChildrenUpdates;\n injected = true;\n }\n }\n};\nmodule.exports = ReactComponentEnvironment;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactInstanceMap\n */\n'use strict';\n/**\n * `ReactInstanceMap` maintains a mapping from a public facing stateful\n * instance (key) and the internal representation (value). This allows public\n * methods to accept the user facing instance as an argument and map them back\n * to internal methods.\n */\n// TODO: Replace this with ES6: var ReactInstanceMap = new Map();\n\nvar ReactInstanceMap = {\n /**\n * This API should be called `delete` but we'd have to make sure to always\n * transform these to strings for IE support. When this transform is fully\n * supported we can rename it.\n */\n remove: function remove(key) {\n key._reactInternalInstance = undefined;\n },\n get: function get(key) {\n return key._reactInternalInstance;\n },\n has: function has(key) {\n return key._reactInternalInstance !== undefined;\n },\n set: function set(key, value) {\n key._reactInternalInstance = value;\n }\n};\nmodule.exports = ReactInstanceMap;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule shouldUpdateReactComponent\n */\n'use strict';\n/**\n * Given a `prevElement` and `nextElement`, determines if the existing\n * instance should be updated as opposed to being destroyed or replaced by a new\n * instance. Both arguments are elements. This ensures that this logic can\n * operate on stateless trees without any backing instance.\n *\n * @param {?object} prevElement\n * @param {?object} nextElement\n * @return {boolean} True if the existing instance should be updated.\n * @protected\n */\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction shouldUpdateReactComponent(prevElement, nextElement) {\n var prevEmpty = prevElement === null || prevElement === false;\n var nextEmpty = nextElement === null || nextElement === false;\n\n if (prevEmpty || nextEmpty) {\n return prevEmpty === nextEmpty;\n }\n\n var prevType = _typeof(prevElement);\n\n var nextType = _typeof(nextElement);\n\n if (prevType === 'string' || prevType === 'number') {\n return nextType === 'string' || nextType === 'number';\n } else {\n return nextType === 'object' && prevElement.type === nextElement.type && prevElement.key === nextElement.key;\n }\n}\n\nmodule.exports = shouldUpdateReactComponent;","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule validateDOMNesting\n */\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\n\nvar warning = require('fbjs/lib/warning');\n\nvar validateDOMNesting = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n // This validation code was written based on the HTML5 parsing spec:\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n //\n // Note: this does not catch all invalid nesting, nor does it try to (as it's\n // not clear what practical benefit doing so provides); instead, we warn only\n // for cases where the parser will give a parse tree differing from what React\n // intended. For example,
is invalid but we don't warn\n // because it still parses correctly; we do warn for other cases like nested\n //

tags where the beginning of the second element implicitly closes the\n // first, causing a confusing mess.\n // https://html.spec.whatwg.org/multipage/syntax.html#special\n var specialTags = ['address', 'applet', 'area', 'article', 'aside', 'base', 'basefont', 'bgsound', 'blockquote', 'body', 'br', 'button', 'caption', 'center', 'col', 'colgroup', 'dd', 'details', 'dir', 'div', 'dl', 'dt', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'frame', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'iframe', 'img', 'input', 'isindex', 'li', 'link', 'listing', 'main', 'marquee', 'menu', 'menuitem', 'meta', 'nav', 'noembed', 'noframes', 'noscript', 'object', 'ol', 'p', 'param', 'plaintext', 'pre', 'script', 'section', 'select', 'source', 'style', 'summary', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'title', 'tr', 'track', 'ul', 'wbr', 'xmp']; // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n\n var inScopeTags = ['applet', 'caption', 'html', 'table', 'td', 'th', 'marquee', 'object', 'template', // https://html.spec.whatwg.org/multipage/syntax.html#html-integration-point\n // TODO: Distinguish by namespace here -- for , including it here\n // errs on the side of fewer warnings\n 'foreignObject', 'desc', 'title']; // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-button-scope\n\n var buttonScopeTags = inScopeTags.concat(['button']); // https://html.spec.whatwg.org/multipage/syntax.html#generate-implied-end-tags\n\n var impliedEndTags = ['dd', 'dt', 'li', 'option', 'optgroup', 'p', 'rp', 'rt'];\n var emptyAncestorInfo = {\n current: null,\n formTag: null,\n aTagInScope: null,\n buttonTagInScope: null,\n nobrTagInScope: null,\n pTagInButtonScope: null,\n listItemTagAutoclosing: null,\n dlItemTagAutoclosing: null\n };\n\n var updatedAncestorInfo = function updatedAncestorInfo(oldInfo, tag, instance) {\n var ancestorInfo = _assign({}, oldInfo || emptyAncestorInfo);\n\n var info = {\n tag: tag,\n instance: instance\n };\n\n if (inScopeTags.indexOf(tag) !== -1) {\n ancestorInfo.aTagInScope = null;\n ancestorInfo.buttonTagInScope = null;\n ancestorInfo.nobrTagInScope = null;\n }\n\n if (buttonScopeTags.indexOf(tag) !== -1) {\n ancestorInfo.pTagInButtonScope = null;\n } // See rules for 'li', 'dd', 'dt' start tags in\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n\n\n if (specialTags.indexOf(tag) !== -1 && tag !== 'address' && tag !== 'div' && tag !== 'p') {\n ancestorInfo.listItemTagAutoclosing = null;\n ancestorInfo.dlItemTagAutoclosing = null;\n }\n\n ancestorInfo.current = info;\n\n if (tag === 'form') {\n ancestorInfo.formTag = info;\n }\n\n if (tag === 'a') {\n ancestorInfo.aTagInScope = info;\n }\n\n if (tag === 'button') {\n ancestorInfo.buttonTagInScope = info;\n }\n\n if (tag === 'nobr') {\n ancestorInfo.nobrTagInScope = info;\n }\n\n if (tag === 'p') {\n ancestorInfo.pTagInButtonScope = info;\n }\n\n if (tag === 'li') {\n ancestorInfo.listItemTagAutoclosing = info;\n }\n\n if (tag === 'dd' || tag === 'dt') {\n ancestorInfo.dlItemTagAutoclosing = info;\n }\n\n return ancestorInfo;\n };\n /**\n * Returns whether\n */\n\n\n var isTagValidWithParent = function isTagValidWithParent(tag, parentTag) {\n // First, let's check if we're in an unusual parsing mode...\n switch (parentTag) {\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inselect\n case 'select':\n return tag === 'option' || tag === 'optgroup' || tag === '#text';\n\n case 'optgroup':\n return tag === 'option' || tag === '#text';\n // Strictly speaking, seeing an <option> doesn't mean we're in a <select>\n // but\n\n case 'option':\n return tag === '#text';\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intd\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incaption\n // No special behavior since these rules fall back to \"in body\" mode for\n // all except special table nodes which cause bad parsing behavior anyway.\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intr\n\n case 'tr':\n return tag === 'th' || tag === 'td' || tag === 'style' || tag === 'script' || tag === 'template';\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intbody\n\n case 'tbody':\n case 'thead':\n case 'tfoot':\n return tag === 'tr' || tag === 'style' || tag === 'script' || tag === 'template';\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incolgroup\n\n case 'colgroup':\n return tag === 'col' || tag === 'template';\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intable\n\n case 'table':\n return tag === 'caption' || tag === 'colgroup' || tag === 'tbody' || tag === 'tfoot' || tag === 'thead' || tag === 'style' || tag === 'script' || tag === 'template';\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inhead\n\n case 'head':\n return tag === 'base' || tag === 'basefont' || tag === 'bgsound' || tag === 'link' || tag === 'meta' || tag === 'title' || tag === 'noscript' || tag === 'noframes' || tag === 'style' || tag === 'script' || tag === 'template';\n // https://html.spec.whatwg.org/multipage/semantics.html#the-html-element\n\n case 'html':\n return tag === 'head' || tag === 'body';\n\n case '#document':\n return tag === 'html';\n } // Probably in the \"in body\" parsing mode, so we outlaw only tag combos\n // where the parsing rules cause implicit opens or closes to be added.\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n\n\n switch (tag) {\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6':\n return parentTag !== 'h1' && parentTag !== 'h2' && parentTag !== 'h3' && parentTag !== 'h4' && parentTag !== 'h5' && parentTag !== 'h6';\n\n case 'rp':\n case 'rt':\n return impliedEndTags.indexOf(parentTag) === -1;\n\n case 'caption':\n case 'col':\n case 'colgroup':\n case 'frame':\n case 'head':\n case 'html':\n case 'tbody':\n case 'td':\n case 'tfoot':\n case 'th':\n case 'thead':\n case 'tr':\n // These tags are only valid with a few parents that have special child\n // parsing rules -- if we're down here, then none of those matched and\n // so we allow it only if we don't know what the parent is, as all other\n // cases are invalid.\n return parentTag == null;\n }\n\n return true;\n };\n /**\n * Returns whether\n */\n\n\n var findInvalidAncestorForTag = function findInvalidAncestorForTag(tag, ancestorInfo) {\n switch (tag) {\n case 'address':\n case 'article':\n case 'aside':\n case 'blockquote':\n case 'center':\n case 'details':\n case 'dialog':\n case 'dir':\n case 'div':\n case 'dl':\n case 'fieldset':\n case 'figcaption':\n case 'figure':\n case 'footer':\n case 'header':\n case 'hgroup':\n case 'main':\n case 'menu':\n case 'nav':\n case 'ol':\n case 'p':\n case 'section':\n case 'summary':\n case 'ul':\n case 'pre':\n case 'listing':\n case 'table':\n case 'hr':\n case 'xmp':\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6':\n return ancestorInfo.pTagInButtonScope;\n\n case 'form':\n return ancestorInfo.formTag || ancestorInfo.pTagInButtonScope;\n\n case 'li':\n return ancestorInfo.listItemTagAutoclosing;\n\n case 'dd':\n case 'dt':\n return ancestorInfo.dlItemTagAutoclosing;\n\n case 'button':\n return ancestorInfo.buttonTagInScope;\n\n case 'a':\n // Spec says something about storing a list of markers, but it sounds\n // equivalent to this check.\n return ancestorInfo.aTagInScope;\n\n case 'nobr':\n return ancestorInfo.nobrTagInScope;\n }\n\n return null;\n };\n /**\n * Given a ReactCompositeComponent instance, return a list of its recursive\n * owners, starting at the root and ending with the instance itself.\n */\n\n\n var findOwnerStack = function findOwnerStack(instance) {\n if (!instance) {\n return [];\n }\n\n var stack = [];\n\n do {\n stack.push(instance);\n } while (instance = instance._currentElement._owner);\n\n stack.reverse();\n return stack;\n };\n\n var didWarn = {};\n\n validateDOMNesting = function validateDOMNesting(childTag, childInstance, ancestorInfo) {\n ancestorInfo = ancestorInfo || emptyAncestorInfo;\n var parentInfo = ancestorInfo.current;\n var parentTag = parentInfo && parentInfo.tag;\n var invalidParent = isTagValidWithParent(childTag, parentTag) ? null : parentInfo;\n var invalidAncestor = invalidParent ? null : findInvalidAncestorForTag(childTag, ancestorInfo);\n var problematic = invalidParent || invalidAncestor;\n\n if (problematic) {\n var ancestorTag = problematic.tag;\n var ancestorInstance = problematic.instance;\n var childOwner = childInstance && childInstance._currentElement._owner;\n var ancestorOwner = ancestorInstance && ancestorInstance._currentElement._owner;\n var childOwners = findOwnerStack(childOwner);\n var ancestorOwners = findOwnerStack(ancestorOwner);\n var minStackLen = Math.min(childOwners.length, ancestorOwners.length);\n var i;\n var deepestCommon = -1;\n\n for (i = 0; i < minStackLen; i++) {\n if (childOwners[i] === ancestorOwners[i]) {\n deepestCommon = i;\n } else {\n break;\n }\n }\n\n var UNKNOWN = '(unknown)';\n var childOwnerNames = childOwners.slice(deepestCommon + 1).map(function (inst) {\n return inst.getName() || UNKNOWN;\n });\n var ancestorOwnerNames = ancestorOwners.slice(deepestCommon + 1).map(function (inst) {\n return inst.getName() || UNKNOWN;\n });\n var ownerInfo = [].concat( // If the parent and child instances have a common owner ancestor, start\n // with that -- otherwise we just start with the parent's owners.\n deepestCommon !== -1 ? childOwners[deepestCommon].getName() || UNKNOWN : [], ancestorOwnerNames, ancestorTag, // If we're warning about an invalid (non-parent) ancestry, add '...'\n invalidAncestor ? ['...'] : [], childOwnerNames, childTag).join(' > ');\n var warnKey = !!invalidParent + '|' + childTag + '|' + ancestorTag + '|' + ownerInfo;\n\n if (didWarn[warnKey]) {\n return;\n }\n\n didWarn[warnKey] = true;\n var tagDisplayName = childTag;\n\n if (childTag !== '#text') {\n tagDisplayName = '<' + childTag + '>';\n }\n\n if (invalidParent) {\n var info = '';\n\n if (ancestorTag === 'table' && childTag === 'tr') {\n info += ' Add a <tbody> to your code to match the DOM tree generated by ' + 'the browser.';\n }\n\n process.env.NODE_ENV !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a child of <%s>. ' + 'See %s.%s', tagDisplayName, ancestorTag, ownerInfo, info) : void 0;\n } else {\n process.env.NODE_ENV !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a descendant of ' + '<%s>. See %s.', tagDisplayName, ancestorTag, ownerInfo) : void 0;\n }\n }\n };\n\n validateDOMNesting.updatedAncestorInfo = updatedAncestorInfo; // For testing\n\n validateDOMNesting.isTagValidInContext = function (tag, ancestorInfo) {\n ancestorInfo = ancestorInfo || emptyAncestorInfo;\n var parentInfo = ancestorInfo.current;\n var parentTag = parentInfo && parentInfo.tag;\n return isTagValidWithParent(tag, parentTag) && !findInvalidAncestorForTag(tag, ancestorInfo);\n };\n}\n\nmodule.exports = validateDOMNesting;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule getEventCharCode\n */\n'use strict';\n/**\n * `charCode` represents the actual \"character code\" and is safe to use with\n * `String.fromCharCode`. As such, only keys that correspond to printable\n * characters produce a valid `charCode`, the only exception to this is Enter.\n * The Tab-key is considered non-printable and does not have a `charCode`,\n * presumably because it does not produce a tab-character in browsers.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {number} Normalized `charCode` property.\n */\n\nfunction getEventCharCode(nativeEvent) {\n var charCode;\n var keyCode = nativeEvent.keyCode;\n\n if ('charCode' in nativeEvent) {\n charCode = nativeEvent.charCode; // FF does not set `charCode` for the Enter-key, check against `keyCode`.\n\n if (charCode === 0 && keyCode === 13) {\n charCode = 13;\n }\n } else {\n // IE8 does not implement `charCode`, but `keyCode` has the correct value.\n charCode = keyCode;\n } // Some non-printable keys are reported in `charCode`/`keyCode`, discard them.\n // Must not discard the (non-)printable Enter-key.\n\n\n if (charCode >= 32 || charCode === 13) {\n return charCode;\n }\n\n return 0;\n}\n\nmodule.exports = getEventCharCode;","// {K1: V1, K2: V2, ...} -> [[K1, V1], [K2, V2]]\n'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nvar _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i['return']) _i['return']();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError('Invalid attempt to destructure non-iterable instance');\n }\n };\n}();\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar objectToPairs = function objectToPairs(obj) {\n return Object.keys(obj).map(function (key) {\n return [key, obj[key]];\n });\n};\n\nexports.objectToPairs = objectToPairs; // [[K1, V1], [K2, V2]] -> {K1: V1, K2: V2, ...}\n\nvar pairsToObject = function pairsToObject(pairs) {\n var result = {};\n pairs.forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2);\n\n var key = _ref2[0];\n var val = _ref2[1];\n result[key] = val;\n });\n return result;\n};\n\nvar mapObj = function mapObj(obj, fn) {\n return pairsToObject(objectToPairs(obj).map(fn));\n};\n\nexports.mapObj = mapObj; // Flattens an array one level\n// [[A], [B, C, [D]]] -> [A, B, C, [D]]\n\nvar flatten = function flatten(list) {\n return list.reduce(function (memo, x) {\n return memo.concat(x);\n }, []);\n};\n\nexports.flatten = flatten;\nvar UPPERCASE_RE = /([A-Z])/g;\nvar MS_RE = /^ms-/;\n\nvar kebabify = function kebabify(string) {\n return string.replace(UPPERCASE_RE, '-$1').toLowerCase();\n};\n\nvar kebabifyStyleName = function kebabifyStyleName(string) {\n return kebabify(string).replace(MS_RE, '-ms-');\n};\n\nexports.kebabifyStyleName = kebabifyStyleName;\n\nvar recursiveMerge = function recursiveMerge(a, b) {\n // TODO(jlfwong): Handle malformed input where a and b are not the same\n // type.\n if (_typeof(a) !== 'object') {\n return b;\n }\n\n var ret = _extends({}, a);\n\n Object.keys(b).forEach(function (key) {\n if (ret.hasOwnProperty(key)) {\n ret[key] = recursiveMerge(a[key], b[key]);\n } else {\n ret[key] = b[key];\n }\n });\n return ret;\n};\n\nexports.recursiveMerge = recursiveMerge;\n/**\n * CSS properties which accept numbers but are not in units of \"px\".\n * Taken from React's CSSProperty.js\n */\n\nvar isUnitlessNumber = {\n animationIterationCount: true,\n borderImageOutset: true,\n borderImageSlice: true,\n borderImageWidth: true,\n boxFlex: true,\n boxFlexGroup: true,\n boxOrdinalGroup: true,\n columnCount: true,\n flex: true,\n flexGrow: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n flexOrder: true,\n gridRow: true,\n gridColumn: true,\n fontWeight: true,\n lineClamp: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n tabSize: true,\n widows: true,\n zIndex: true,\n zoom: true,\n // SVG-related properties\n fillOpacity: true,\n floodOpacity: true,\n stopOpacity: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n strokeMiterlimit: true,\n strokeOpacity: true,\n strokeWidth: true\n};\n/**\n * Taken from React's CSSProperty.js\n *\n * @param {string} prefix vendor-specific prefix, eg: Webkit\n * @param {string} key style name, eg: transitionDuration\n * @return {string} style name prefixed with `prefix`, properly camelCased, eg:\n * WebkitTransitionDuration\n */\n\nfunction prefixKey(prefix, key) {\n return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\n/**\n * Support style names that may come passed in prefixed by adding permutations\n * of vendor prefixes.\n * Taken from React's CSSProperty.js\n */\n\n\nvar prefixes = ['Webkit', 'ms', 'Moz', 'O']; // Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an\n// infinite loop, because it iterates over the newly added props too.\n// Taken from React's CSSProperty.js\n\nObject.keys(isUnitlessNumber).forEach(function (prop) {\n prefixes.forEach(function (prefix) {\n isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];\n });\n});\n\nvar stringifyValue = function stringifyValue(key, prop) {\n if (typeof prop === \"number\") {\n if (isUnitlessNumber[key]) {\n return \"\" + prop;\n } else {\n return prop + \"px\";\n }\n } else {\n return prop;\n }\n};\n\nexports.stringifyValue = stringifyValue;\n/**\n * JS Implementation of MurmurHash2\n *\n * @author <a href=\"mailto:gary.court@gmail.com\">Gary Court</a>\n * @see http://github.com/garycourt/murmurhash-js\n * @author <a href=\"mailto:aappleby@gmail.com\">Austin Appleby</a>\n * @see http://sites.google.com/site/murmurhash/\n *\n * @param {string} str ASCII only\n * @return {string} Base 36 encoded hash result\n */\n\nfunction murmurhash2_32_gc(str) {\n var l = str.length;\n var h = l;\n var i = 0;\n var k = undefined;\n\n while (l >= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n k ^= k >>> 24;\n k = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16) ^ k;\n l -= 4;\n ++i;\n }\n\n switch (l) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n }\n\n h ^= h >>> 13;\n h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n h ^= h >>> 15;\n return (h >>> 0).toString(36);\n} // Hash a javascript object using JSON.stringify. This is very fast, about 3\n// microseconds on my computer for a sample object:\n// http://jsperf.com/test-hashfnv32a-hash/5\n//\n// Note that this uses JSON.stringify to stringify the objects so in order for\n// this to produce consistent hashes browsers need to have a consistent\n// ordering of objects. Ben Alpert says that Facebook depends on this, so we\n// can probably depend on this too.\n\n\nvar hashObject = function hashObject(object) {\n return murmurhash2_32_gc(JSON.stringify(object));\n};\n\nexports.hashObject = hashObject;\nvar IMPORTANT_RE = /^([^:]+:.*?)( !important)?;$/; // Given a single style rule string like \"a: b;\", adds !important to generate\n// \"a: b !important;\".\n\nvar importantify = function importantify(string) {\n return string.replace(IMPORTANT_RE, function (_, base, important) {\n return base + \" !important;\";\n });\n};\n\nexports.importantify = importantify;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports[\"default\"] = function (value) {\n if (Array.isArray(value)) value = value.join(',');\n return value.match(/-webkit-|-moz-|-ms-/) !== null;\n};\n\nmodule.exports = exports['default'];","/**\n * Uses js-cookie library. Reference for more details:\n * https://github.com/js-cookie/js-cookie\n *\n * Creates a special decoder to work with how rails encodes cookies.\n */\nimport Cookies from 'js-cookie';\n\nconst cookies = Cookies.withConverter((value, name) =>\n decodeURIComponent(value.replace(/\\+/g, ' ')));\n\nexport default cookies;\n","/* eslint-disable react/sort-comp, brace-style, prefer-template */\nimport classnames from 'classnames';\nimport React from 'react';\n\n/**\n * Classes that inherit ProgressBar should provide a reference to\n * meter (this.refs.meter).\n */\nclass ProgressBarBase extends React.Component {\n constructor(...args) {\n super(...args);\n\n this.state = {\n animateInterval: null,\n displayProgress: null,\n doAnimation: false,\n prevProgress: this.props.prevProgress,\n };\n\n // Needed to make sure jQuery progress bar stops animating.\n this._unmounted = false;\n }\n\n componentWillMount() {\n if (this.props.prevProgress !== null) {\n this.setState({\n doAnimation: true,\n displayProgress: this.state.prevProgress,\n });\n } else {\n this.setState({ displayProgress: this.props.progress });\n }\n }\n\n componentWillReceiveProps(nextProps) {\n // If the previous progress changes, modify the display progress\n // and start an animation.\n if (nextProps.prevProgress !== this.props.prevProgress) {\n this.setState({\n doAnimation: true,\n displayProgress: nextProps.prevProgress,\n prevProgress: nextProps.prevProgress,\n });\n\n this.stopAnimation();\n }\n\n // If the progress changes, but not the previous progress, then\n // continue animating from the original value.\n else if (nextProps.progress !== this.props.progress) {\n const prevProgress = this.state.prevProgress;\n\n this.setState({\n doAnimation: true,\n prevProgress: prevProgress !== null ? prevProgress : this.props.progress,\n });\n }\n }\n\n componentDidMount() {\n this._animate();\n }\n\n componentDidUpdate() {\n this._animate();\n }\n\n componentWillUnmount() {\n this._unmounted = true;\n this.stopAnimation();\n }\n\n _animate() {\n if (!this.state.doAnimation) {\n return;\n }\n\n this.stopAnimation();\n\n // Don't actually animate anything, just use a step function\n // to perform the animation by setting the state.\n const animateObj = $(this.refs.meter).animate({\n width: this.props.progress + '%',\n }, {\n duration: this.props.animationDurationMillis,\n\n // Make sure that new progress isn't less than or greater than\n // progress\n step: (newProgress) => {\n if (!this._unmounted) {\n const max = Math.max(this.props.progress, this.state.prevProgress);\n const min = Math.min(this.props.progress, this.state.prevProgress);\n const displayProgress = Math.max(Math.min(Math.round(newProgress), max), min);\n this.setState({ displayProgress });\n\n if (this.props.onAnimationIteration) {\n this.props.onAnimationIteration(displayProgress);\n }\n }\n },\n });\n\n this.setState({\n animateInterval: animateObj,\n doAnimation: false,\n });\n }\n\n stopAnimation() {\n if (this.state.animateInterval) {\n this.state.animateInterval.stop();\n }\n }\n}\n\nProgressBarBase.propTypes = {\n animationDurationMillis: React.PropTypes.number,\n className: React.PropTypes.string,\n progress: React.PropTypes.number,\n prevProgress: React.PropTypes.number,\n onAnimationIteration: React.PropTypes.func,\n};\n\nProgressBarBase.defaultProps = {\n animationDurationMillis: 1500,\n className: '',\n progress: 0,\n prevProgress: null,\n};\n\n/**\n * Default progress bar used for item results.\n */\nexport class ProgressBar extends ProgressBarBase {\n render() {\n const className = `progress-bar ${this.props.className}`;\n\n return (\n <div className=\"progress-bar-container\">\n <div className={className} data-primary={this.state.displayProgress}>\n <span ref=\"meter\" className=\"meter primary\" style={{ width: this.state.displayProgress + '%' }}></span>\n </div>\n\n {this._renderDifference()}\n {this._renderProgressTag()}\n </div>\n );\n }\n\n // Renders progress made.\n _renderProgressTag() {\n if (!this.props.showProgressTag) {\n return '';\n }\n\n return (\n <span className=\"progress-tag\">{this.state.displayProgress}%</span>\n );\n }\n\n // Renders the difference gained from the new progress.\n _renderDifference() {\n if (!this.props.showDifferenceTag || this.state.prevProgress === null) {\n return '';\n }\n\n const difference = this.state.displayProgress - this.state.prevProgress;\n const className = classnames('progress-difference', {\n 'progress-loss': difference < 0,\n 'progress-gain': difference > 0,\n });\n\n if (difference === 0) {\n return '';\n }\n\n // Negative sign will print, so don't need to check for that.\n return (\n <span className={className}>{difference > 0 ? '+' : '-'}{Math.abs(difference)}%</span>\n );\n }\n}\n\nProgressBar.propTypes = Object.assign({\n showDifferenceTag: React.PropTypes.bool,\n showProgressTag: React.PropTypes.bool,\n}, ProgressBarBase.propTypes);\n\nProgressBar.defaultProps = Object.assign({\n showProgressTag: false,\n showDifferenceTag: false,\n}, ProgressBarBase.defaultProps);\n\nexport class ProgressBarSentenceTrainer extends ProgressBarBase {\n render() {\n const className = `progress-bar progress-bar-gradient ${this.props.className}`;\n\n // The background is the gradient and we want to treat it as though it\n // extends to the end. To eliminate the need to keep adding different\n // background sizes in CSS where ever this is used, we set the background-size\n // to be a percentage that would extend so it would be the full width of the\n // meter if it were at 100%.\n const style = {\n backgroundSize: (10000 / this.state.displayProgress) + '%',\n width: this.state.displayProgress + '%',\n };\n\n return (\n <div className=\"progress-bar-container\">\n <div className={className} data-primary={this.state.displayProgress}>\n <span ref=\"meter\" className=\"meter primary\" style={style}></span>\n </div>\n </div>\n );\n }\n}\n\n// Send out the default ProgressBar\nexport default ProgressBar;\n","/* eslint-disable radix, default-case, arrow-body-style, no-param-reassign, prefer-template */\nimport Quizzes from 'es6/controllers/apps/quizzes';\nimport StudyNode from 'es6/models/study-node';\n\nfunction getSettingsVariable(setting) {\n return typeof Smartfm !== 'undefined'\n && Smartfm.Apps\n && Smartfm.Apps.Settings\n && Smartfm.Apps.Settings[setting];\n}\n\n/**\n * @returns {Boolean}\n */\nexport function isDebugModeEnabled() {\n return getSettingsVariable('StealthMode');\n}\n\n/**\n * @returns {Boolean}\n */\nexport function checkDiscardData() {\n return !!getSettingsVariable('DiscardData');\n}\n\nexport function checkAllOverrides(sessionData) {\n checkForcedContent(sessionData);\n checkForcedQuizType(sessionData);\n checkSingleItemSession(sessionData);\n}\n\nexport function checkForcedContent(sessionData) {\n const forcedItem = parseInt(getSettingsVariable('ForcedItem'));\n\n if (!forcedItem) {\n return;\n }\n\n // Just replicate the first study node and use that data to produce\n // the forced item.\n const StudyNodeAttributes = Object.assign({}, sessionData.studySession[0]);\n const contentDomain = StudyNodeAttributes.contentDomain;\n\n let contentPool = {};\n switch (contentDomain) {\n case 'items':\n contentPool = sessionData.itemPackages;\n break;\n case 'sentences':\n contentPool = sessionData.sentences;\n break;\n }\n\n // Grab the appropriate content from the content pool.\n const content = contentPool[forcedItem];\n if (!content) {\n throw new Error(`Content with ID: ${forcedItem} does not exist in this course!`);\n }\n\n // Grab the appropriate memory.\n const memory = sessionData.memories.find(d => {\n return d.contentDomain === contentDomain && d.contentId === content.getId();\n });\n\n // Update the attributes for the study node.\n Object.assign(StudyNodeAttributes, {\n contentId: content.getId(),\n content,\n memory,\n });\n\n sessionData.studySession[0] = new StudyNode(StudyNodeAttributes);\n}\n\nexport function checkForcedQuizType(sessionData) {\n if (Smartfm && Smartfm.Apps.Settings.ForcedQuiz) {\n const quizName = Smartfm.Apps.Settings.ForcedQuiz;\n const forced = Quizzes[quizName];\n if (forced) {\n _.each(sessionData.studySession, function (studyNode) {\n studyNode.quizSequence = [quizName];\n });\n } else {\n throw new Error('Unknown QuizType ' + quizName + ' specified as override.');\n }\n }\n}\n\n// Checks to see if the forced achievements flag is set and if it is, returns\n// the appropriate achievements fixture.\nexport function checkForcedAchievement() {\n const forcedAchievement = getSettingsVariable('ForcedAchievement');\n const achievementFixtures = getSettingsVariable('AchievementFixtures');\n\n return forcedAchievement && achievementFixtures && achievementFixtures[forcedAchievement - 1];\n}\n\nexport function checkSingleItemSession(sessionData) {\n if (Smartfm && Smartfm.Apps.Settings.SingleItemSession) {\n sessionData.studySession = _.take(sessionData.studySession, 1);\n }\n}\n\n// Forced completion can only happen once, set a flag.\nlet forcedCompletion = false;\nexport function checkForcedCompletion() {\n const retVal = !forcedCompletion && getSettingsVariable('ForcedCompletion');\n\n // Make sure this doesn't get checked again.\n forcedCompletion = true;\n\n return retVal;\n}\n\nexport function checkForcedCheckpoint() {\n return getSettingsVariable('ForcedCheckpoint');\n}\n\n// TODO: Remove this if we expose debugging options in some other way on only\n// non-production builds using envify.\n// Returns the pause delay setting in milliseconds.\nexport function getPauseDelay() {\n return getSettingsVariable('PauseDelay') * 1000;\n}\n\nexport default checkAllOverrides;\n","var isObject = require('./isObject');\n/** `Object#toString` result references. */\n\n\nvar funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n/** Used for built-in method references. */\n\nvar objectProto = Object.prototype;\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar objectToString = objectProto.toString;\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8 which returns 'object' for typed array constructors, and\n // PhantomJS 1.9 which returns 'function' for `NodeList` instances.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\nmodule.exports = isFunction;","/* global window */\n\n// This module exists that we can avoid referring global state in other places.\n\nexport function environment() {\n return window.App && window.App.Environment || {};\n}\n\nexport function oauthToken() {\n const api = environment().API;\n return api ? api.token : null;\n}\n\nexport const location = {\n getProtocol: () => window.location.protocol.replace(/:$/, ''),\n isConnectionSecure: () => location.getProtocol() === 'https',\n};\n","/* eslint-disable no-restricted-syntax, prefer-template */\n/**\n * Helper method for camel casing keys and underscore keys in\n * an object.\n *\n * @param {Object|Array} obj\n * @param {Function} sanitizeHandler\n * @returns {Object}\n */\nfunction sanitizeKeys(obj, sanitizeHandler) {\n // typeof null returns 'object'\n if (typeof obj !== 'object' || obj === null) {\n return obj;\n }\n\n const isArray = Array.isArray(obj);\n const copy = isArray ? [] : {};\n\n for (const key in obj) {\n if (isArray && obj.hasOwnProperty(key)) {\n copy.push(sanitizeKeys(obj[key], sanitizeHandler));\n } else if (obj.hasOwnProperty(key)) {\n const newKey = sanitizeHandler(key);\n copy[newKey] = sanitizeKeys(obj[key], sanitizeHandler);\n }\n }\n\n return copy;\n}\n\n/**\n * Deep clones an object, transforming keys to be camcelcase.\n *\n * @param {Object} obj\n * @returns {Object}\n */\nexport function camelCaseKeys(obj) {\n return sanitizeKeys(obj, function (key) {\n return key.replace(/(_[a-zA-Z1-9])/g, function (match) {\n return match.toUpperCase().replace('_', '');\n });\n });\n}\n\n/**\n * Deep clones an object, transforming keys to be underscore.\n *\n * @param {Object} obj\n * @returns {Object}\n */\nexport function underscoreKeys(obj) {\n return sanitizeKeys(obj, function (key) {\n return key.replace(/([A-Z1-9])/g, function (match) {\n return '_' + match.toLowerCase();\n });\n });\n}\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = _typeof(value);\n\n return !!value && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && _typeof(value) == 'object';\n}\n\nmodule.exports = isObjectLike;","'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof(call) === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar MouseoverDictionary = function (_React$Component) {\n _inherits(MouseoverDictionary, _React$Component);\n\n function MouseoverDictionary(props) {\n _classCallCheck(this, MouseoverDictionary);\n\n var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(MouseoverDictionary).call(this, props));\n\n _this.rebind = _this.rebind.bind(_this);\n return _this;\n }\n\n _createClass(MouseoverDictionary, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (this.unbind) {\n this.unbind();\n this.unbind = null;\n }\n }\n }, {\n key: 'rebind',\n value: function rebind(dom) {\n if (this.unbind) {\n this.unbind();\n this.unbind = null;\n }\n\n if (dom) {\n this.unbind = (0, _index2[\"default\"])(dom, {\n scan: this.props.scan\n });\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var html = this.props.html;\n return html ? _react2[\"default\"].createElement('span', {\n ref: this.rebind,\n dangerouslySetInnerHTML: {\n __html: html\n }\n }) : _react2[\"default\"].createElement('span', {\n ref: this.rebind\n }, this.props.children);\n }\n }]);\n\n return MouseoverDictionary;\n}(_react2[\"default\"].Component);\n\nexports[\"default\"] = MouseoverDictionary;\nMouseoverDictionary.propTypes = {\n scan: _react.PropTypes.bool,\n html: _react.PropTypes.string,\n children: _react.PropTypes.any\n};","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactChildren\n */\n'use strict';\n\nvar PooledClass = require('./PooledClass');\n\nvar ReactElement = require('./ReactElement');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\n\nvar traverseAllChildren = require('./traverseAllChildren');\n\nvar twoArgumentPooler = PooledClass.twoArgumentPooler;\nvar fourArgumentPooler = PooledClass.fourArgumentPooler;\nvar userProvidedKeyEscapeRegex = /\\/+/g;\n\nfunction escapeUserProvidedKey(text) {\n return ('' + text).replace(userProvidedKeyEscapeRegex, '$&/');\n}\n/**\n * PooledClass representing the bookkeeping associated with performing a child\n * traversal. Allows avoiding binding callbacks.\n *\n * @constructor ForEachBookKeeping\n * @param {!function} forEachFunction Function to perform traversal with.\n * @param {?*} forEachContext Context to perform context with.\n */\n\n\nfunction ForEachBookKeeping(forEachFunction, forEachContext) {\n this.func = forEachFunction;\n this.context = forEachContext;\n this.count = 0;\n}\n\nForEachBookKeeping.prototype.destructor = function () {\n this.func = null;\n this.context = null;\n this.count = 0;\n};\n\nPooledClass.addPoolingTo(ForEachBookKeeping, twoArgumentPooler);\n\nfunction forEachSingleChild(bookKeeping, child, name) {\n var func = bookKeeping.func;\n var context = bookKeeping.context;\n func.call(context, child, bookKeeping.count++);\n}\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */\n\n\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n if (children == null) {\n return children;\n }\n\n var traverseContext = ForEachBookKeeping.getPooled(forEachFunc, forEachContext);\n traverseAllChildren(children, forEachSingleChild, traverseContext);\n ForEachBookKeeping.release(traverseContext);\n}\n/**\n * PooledClass representing the bookkeeping associated with performing a child\n * mapping. Allows avoiding binding callbacks.\n *\n * @constructor MapBookKeeping\n * @param {!*} mapResult Object containing the ordered map of results.\n * @param {!function} mapFunction Function to perform mapping with.\n * @param {?*} mapContext Context to perform mapping with.\n */\n\n\nfunction MapBookKeeping(mapResult, keyPrefix, mapFunction, mapContext) {\n this.result = mapResult;\n this.keyPrefix = keyPrefix;\n this.func = mapFunction;\n this.context = mapContext;\n this.count = 0;\n}\n\nMapBookKeeping.prototype.destructor = function () {\n this.result = null;\n this.keyPrefix = null;\n this.func = null;\n this.context = null;\n this.count = 0;\n};\n\nPooledClass.addPoolingTo(MapBookKeeping, fourArgumentPooler);\n\nfunction mapSingleChildIntoContext(bookKeeping, child, childKey) {\n var result = bookKeeping.result;\n var keyPrefix = bookKeeping.keyPrefix;\n var func = bookKeeping.func;\n var context = bookKeeping.context;\n var mappedChild = func.call(context, child, bookKeeping.count++);\n\n if (Array.isArray(mappedChild)) {\n mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, emptyFunction.thatReturnsArgument);\n } else if (mappedChild != null) {\n if (ReactElement.isValidElement(mappedChild)) {\n mappedChild = ReactElement.cloneAndReplaceKey(mappedChild, // Keep both the (mapped) and old keys if they differ, just as\n // traverseAllChildren used to do for objects as children\n keyPrefix + (mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + '/' : '') + childKey);\n }\n\n result.push(mappedChild);\n }\n}\n\nfunction mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) {\n var escapedPrefix = '';\n\n if (prefix != null) {\n escapedPrefix = escapeUserProvidedKey(prefix) + '/';\n }\n\n var traverseContext = MapBookKeeping.getPooled(array, escapedPrefix, func, context);\n traverseAllChildren(children, mapSingleChildIntoContext, traverseContext);\n MapBookKeeping.release(traverseContext);\n}\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * The provided mapFunction(child, key, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\n\n\nfunction mapChildren(children, func, context) {\n if (children == null) {\n return children;\n }\n\n var result = [];\n mapIntoWithKeyPrefixInternal(children, result, null, func, context);\n return result;\n}\n\nfunction forEachSingleChildDummy(traverseContext, child, name) {\n return null;\n}\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\n\n\nfunction countChildren(children, context) {\n return traverseAllChildren(children, forEachSingleChildDummy, null);\n}\n/**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n */\n\n\nfunction toArray(children) {\n var result = [];\n mapIntoWithKeyPrefixInternal(children, result, null, emptyFunction.thatReturnsArgument);\n return result;\n}\n\nvar ReactChildren = {\n forEach: forEachChildren,\n map: mapChildren,\n mapIntoWithKeyPrefixInternal: mapIntoWithKeyPrefixInternal,\n count: countChildren,\n toArray: toArray\n};\nmodule.exports = ReactChildren;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactComponent\n */\n'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar ReactNoopUpdateQueue = require('./ReactNoopUpdateQueue');\n\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar canDefineProperty = require('./canDefineProperty');\n\nvar emptyObject = require('fbjs/lib/emptyObject');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar warning = require('fbjs/lib/warning');\n/**\n * Base class helpers for the updating state of a component.\n */\n\n\nfunction ReactComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject; // We initialize the default updater but the real one gets injected by the\n // renderer.\n\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nReactComponent.prototype.isReactComponent = {};\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together. You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n * produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\n\nReactComponent.prototype.setState = function (partialState, callback) {\n !(_typeof(partialState) === 'object' || typeof partialState === 'function' || partialState == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'setState(...): takes an object of state variables to update or a ' + 'function which returns an object of state variables.') : invariant(false) : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onSetState();\n process.env.NODE_ENV !== 'production' ? warning(partialState != null, 'setState(...): You passed an undefined or null state object; ' + 'instead, use forceUpdate().') : void 0;\n }\n\n this.updater.enqueueSetState(this, partialState);\n\n if (callback) {\n this.updater.enqueueCallback(this, callback, 'setState');\n }\n};\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\n\n\nReactComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this);\n\n if (callback) {\n this.updater.enqueueCallback(this, callback, 'forceUpdate');\n }\n};\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\n\n\nif (process.env.NODE_ENV !== 'production') {\n var deprecatedAPIs = {\n isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],\n replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']\n };\n\n var defineDeprecationWarning = function defineDeprecationWarning(methodName, info) {\n if (canDefineProperty) {\n Object.defineProperty(ReactComponent.prototype, methodName, {\n get: function get() {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]) : void 0;\n return undefined;\n }\n });\n }\n };\n\n for (var fnName in deprecatedAPIs) {\n if (deprecatedAPIs.hasOwnProperty(fnName)) {\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n }\n }\n}\n\nmodule.exports = ReactComponent;","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNoopUpdateQueue\n */\n'use strict';\n\nvar warning = require('fbjs/lib/warning');\n\nfunction warnTDZ(publicInstance, callerName) {\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, publicInstance.constructor && publicInstance.constructor.displayName || '') : void 0;\n }\n}\n/**\n * This is the abstract API for an update queue.\n */\n\n\nvar ReactNoopUpdateQueue = {\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function isMounted(publicInstance) {\n return false;\n },\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @internal\n */\n enqueueCallback: function enqueueCallback(publicInstance, callback) {},\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n enqueueForceUpdate: function enqueueForceUpdate(publicInstance) {\n warnTDZ(publicInstance, 'forceUpdate');\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @internal\n */\n enqueueReplaceState: function enqueueReplaceState(publicInstance, completeState) {\n warnTDZ(publicInstance, 'replaceState');\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @internal\n */\n enqueueSetState: function enqueueSetState(publicInstance, partialState) {\n warnTDZ(publicInstance, 'setState');\n }\n};\nmodule.exports = ReactNoopUpdateQueue;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactClass\n */\n'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar _assign = require('object-assign');\n\nvar ReactComponent = require('./ReactComponent');\n\nvar ReactElement = require('./ReactElement');\n\nvar ReactPropTypeLocations = require('./ReactPropTypeLocations');\n\nvar ReactPropTypeLocationNames = require('./ReactPropTypeLocationNames');\n\nvar ReactNoopUpdateQueue = require('./ReactNoopUpdateQueue');\n\nvar emptyObject = require('fbjs/lib/emptyObject');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar keyMirror = require('fbjs/lib/keyMirror');\n\nvar keyOf = require('fbjs/lib/keyOf');\n\nvar warning = require('fbjs/lib/warning');\n\nvar MIXINS_KEY = keyOf({\n mixins: null\n});\n/**\n * Policies that describe methods in `ReactClassInterface`.\n */\n\nvar SpecPolicy = keyMirror({\n /**\n * These methods may be defined only once by the class specification or mixin.\n */\n DEFINE_ONCE: null,\n\n /**\n * These methods may be defined by both the class specification and mixins.\n * Subsequent definitions will be chained. These methods must return void.\n */\n DEFINE_MANY: null,\n\n /**\n * These methods are overriding the base class.\n */\n OVERRIDE_BASE: null,\n\n /**\n * These methods are similar to DEFINE_MANY, except we assume they return\n * objects. We try to merge the keys of the return values of all the mixed in\n * functions. If there is a key conflict we throw.\n */\n DEFINE_MANY_MERGED: null\n});\nvar injectedMixins = [];\n/**\n * Composite components are higher-level components that compose other composite\n * or native components.\n *\n * To create a new type of `ReactClass`, pass a specification of\n * your new class to `React.createClass`. The only requirement of your class\n * specification is that you implement a `render` method.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return <div>Hello World</div>;\n * }\n * });\n *\n * The class specification supports a specific protocol of methods that have\n * special meaning (e.g. `render`). See `ReactClassInterface` for\n * more the comprehensive protocol. Any other properties and methods in the\n * class specification will be available on the prototype.\n *\n * @interface ReactClassInterface\n * @internal\n */\n\nvar ReactClassInterface = {\n /**\n * An array of Mixin objects to include when defining your component.\n *\n * @type {array}\n * @optional\n */\n mixins: SpecPolicy.DEFINE_MANY,\n\n /**\n * An object containing properties and methods that should be defined on\n * the component's constructor instead of its prototype (static methods).\n *\n * @type {object}\n * @optional\n */\n statics: SpecPolicy.DEFINE_MANY,\n\n /**\n * Definition of prop types for this component.\n *\n * @type {object}\n * @optional\n */\n propTypes: SpecPolicy.DEFINE_MANY,\n\n /**\n * Definition of context types for this component.\n *\n * @type {object}\n * @optional\n */\n contextTypes: SpecPolicy.DEFINE_MANY,\n\n /**\n * Definition of context types this component sets for its children.\n *\n * @type {object}\n * @optional\n */\n childContextTypes: SpecPolicy.DEFINE_MANY,\n // ==== Definition methods ====\n\n /**\n * Invoked when the component is mounted. Values in the mapping will be set on\n * `this.props` if that prop is not specified (i.e. using an `in` check).\n *\n * This method is invoked before `getInitialState` and therefore cannot rely\n * on `this.state` or use `this.setState`.\n *\n * @return {object}\n * @optional\n */\n getDefaultProps: SpecPolicy.DEFINE_MANY_MERGED,\n\n /**\n * Invoked once before the component is mounted. The return value will be used\n * as the initial value of `this.state`.\n *\n * getInitialState: function() {\n * return {\n * isOn: false,\n * fooBaz: new BazFoo()\n * }\n * }\n *\n * @return {object}\n * @optional\n */\n getInitialState: SpecPolicy.DEFINE_MANY_MERGED,\n\n /**\n * @return {object}\n * @optional\n */\n getChildContext: SpecPolicy.DEFINE_MANY_MERGED,\n\n /**\n * Uses props from `this.props` and state from `this.state` to render the\n * structure of the component.\n *\n * No guarantees are made about when or how often this method is invoked, so\n * it must not have side effects.\n *\n * render: function() {\n * var name = this.props.name;\n * return <div>Hello, {name}!</div>;\n * }\n *\n * @return {ReactComponent}\n * @nosideeffects\n * @required\n */\n render: SpecPolicy.DEFINE_ONCE,\n // ==== Delegate methods ====\n\n /**\n * Invoked when the component is initially created and about to be mounted.\n * This may have side effects, but any external subscriptions or data created\n * by this method must be cleaned up in `componentWillUnmount`.\n *\n * @optional\n */\n componentWillMount: SpecPolicy.DEFINE_MANY,\n\n /**\n * Invoked when the component has been mounted and has a DOM representation.\n * However, there is no guarantee that the DOM node is in the document.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been mounted (initialized and rendered) for the first time.\n *\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidMount: SpecPolicy.DEFINE_MANY,\n\n /**\n * Invoked before the component receives new props.\n *\n * Use this as an opportunity to react to a prop transition by updating the\n * state using `this.setState`. Current props are accessed via `this.props`.\n *\n * componentWillReceiveProps: function(nextProps, nextContext) {\n * this.setState({\n * likesIncreasing: nextProps.likeCount > this.props.likeCount\n * });\n * }\n *\n * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n * transition may cause a state change, but the opposite is not true. If you\n * need it, you are probably looking for `componentWillUpdate`.\n *\n * @param {object} nextProps\n * @optional\n */\n componentWillReceiveProps: SpecPolicy.DEFINE_MANY,\n\n /**\n * Invoked while deciding if the component should be updated as a result of\n * receiving new props, state and/or context.\n *\n * Use this as an opportunity to `return false` when you're certain that the\n * transition to the new props/state/context will not require a component\n * update.\n *\n * shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n * return !equal(nextProps, this.props) ||\n * !equal(nextState, this.state) ||\n * !equal(nextContext, this.context);\n * }\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @return {boolean} True if the component should update.\n * @optional\n */\n shouldComponentUpdate: SpecPolicy.DEFINE_ONCE,\n\n /**\n * Invoked when the component is about to update due to a transition from\n * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n * and `nextContext`.\n *\n * Use this as an opportunity to perform preparation before an update occurs.\n *\n * NOTE: You **cannot** use `this.setState()` in this method.\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @param {ReactReconcileTransaction} transaction\n * @optional\n */\n componentWillUpdate: SpecPolicy.DEFINE_MANY,\n\n /**\n * Invoked when the component's DOM representation has been updated.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been updated.\n *\n * @param {object} prevProps\n * @param {?object} prevState\n * @param {?object} prevContext\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidUpdate: SpecPolicy.DEFINE_MANY,\n\n /**\n * Invoked when the component is about to be removed from its parent and have\n * its DOM representation destroyed.\n *\n * Use this as an opportunity to deallocate any external resources.\n *\n * NOTE: There is no `componentDidUnmount` since your component will have been\n * destroyed by that point.\n *\n * @optional\n */\n componentWillUnmount: SpecPolicy.DEFINE_MANY,\n // ==== Advanced methods ====\n\n /**\n * Updates the component's currently mounted DOM representation.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n * @overridable\n */\n updateComponent: SpecPolicy.OVERRIDE_BASE\n};\n/**\n * Mapping from class specification keys to special processing functions.\n *\n * Although these are declared like instance properties in the specification\n * when defining classes using `React.createClass`, they are actually static\n * and are accessible on the constructor instead of the prototype. Despite\n * being static, they must be defined outside of the \"statics\" key under\n * which all other static methods are defined.\n */\n\nvar RESERVED_SPEC_KEYS = {\n displayName: function displayName(Constructor, _displayName) {\n Constructor.displayName = _displayName;\n },\n mixins: function mixins(Constructor, _mixins) {\n if (_mixins) {\n for (var i = 0; i < _mixins.length; i++) {\n mixSpecIntoComponent(Constructor, _mixins[i]);\n }\n }\n },\n childContextTypes: function childContextTypes(Constructor, _childContextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, _childContextTypes, ReactPropTypeLocations.childContext);\n }\n\n Constructor.childContextTypes = _assign({}, Constructor.childContextTypes, _childContextTypes);\n },\n contextTypes: function contextTypes(Constructor, _contextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, _contextTypes, ReactPropTypeLocations.context);\n }\n\n Constructor.contextTypes = _assign({}, Constructor.contextTypes, _contextTypes);\n },\n\n /**\n * Special case getDefaultProps which should move into statics but requires\n * automatic merging.\n */\n getDefaultProps: function getDefaultProps(Constructor, _getDefaultProps) {\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps = createMergedResultFunction(Constructor.getDefaultProps, _getDefaultProps);\n } else {\n Constructor.getDefaultProps = _getDefaultProps;\n }\n },\n propTypes: function propTypes(Constructor, _propTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, _propTypes, ReactPropTypeLocations.prop);\n }\n\n Constructor.propTypes = _assign({}, Constructor.propTypes, _propTypes);\n },\n statics: function statics(Constructor, _statics) {\n mixStaticSpecIntoComponent(Constructor, _statics);\n },\n autobind: function autobind() {}\n}; // noop\n\nfunction validateTypeDef(Constructor, typeDef, location) {\n for (var propName in typeDef) {\n if (typeDef.hasOwnProperty(propName)) {\n // use a warning instead of an invariant so components\n // don't show up in prod but only in __DEV__\n process.env.NODE_ENV !== 'production' ? warning(typeof typeDef[propName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', Constructor.displayName || 'ReactClass', ReactPropTypeLocationNames[location], propName) : void 0;\n }\n }\n}\n\nfunction validateMethodOverride(isAlreadyDefined, name) {\n var specPolicy = ReactClassInterface.hasOwnProperty(name) ? ReactClassInterface[name] : null; // Disallow overriding of base class methods unless explicitly allowed.\n\n if (ReactClassMixin.hasOwnProperty(name)) {\n !(specPolicy === SpecPolicy.OVERRIDE_BASE) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClassInterface: You are attempting to override ' + '`%s` from your class specification. Ensure that your method names ' + 'do not overlap with React methods.', name) : invariant(false) : void 0;\n } // Disallow defining methods more than once unless explicitly allowed.\n\n\n if (isAlreadyDefined) {\n !(specPolicy === SpecPolicy.DEFINE_MANY || specPolicy === SpecPolicy.DEFINE_MANY_MERGED) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClassInterface: You are attempting to define ' + '`%s` on your component more than once. This conflict may be due ' + 'to a mixin.', name) : invariant(false) : void 0;\n }\n}\n/**\n * Mixin helper which handles policy validation and reserved\n * specification keys when building React classes.\n */\n\n\nfunction mixSpecIntoComponent(Constructor, spec) {\n if (!spec) {\n return;\n }\n\n !(typeof spec !== 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: You\\'re attempting to ' + 'use a component class or function as a mixin. Instead, just use a ' + 'regular object.') : invariant(false) : void 0;\n !!ReactElement.isValidElement(spec) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: You\\'re attempting to ' + 'use a component as a mixin. Instead, just use a regular object.') : invariant(false) : void 0;\n var proto = Constructor.prototype;\n var autoBindPairs = proto.__reactAutoBindPairs; // By handling mixins before any other properties, we ensure the same\n // chaining order is applied to methods with DEFINE_MANY policy, whether\n // mixins are listed before or after these methods in the spec.\n\n if (spec.hasOwnProperty(MIXINS_KEY)) {\n RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n }\n\n for (var name in spec) {\n if (!spec.hasOwnProperty(name)) {\n continue;\n }\n\n if (name === MIXINS_KEY) {\n // We have already handled mixins in a special case above.\n continue;\n }\n\n var property = spec[name];\n var isAlreadyDefined = proto.hasOwnProperty(name);\n validateMethodOverride(isAlreadyDefined, name);\n\n if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n RESERVED_SPEC_KEYS[name](Constructor, property);\n } else {\n // Setup methods on prototype:\n // The following member methods should not be automatically bound:\n // 1. Expected ReactClass methods (in the \"interface\").\n // 2. Overridden methods (that were mixed in).\n var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);\n var isFunction = typeof property === 'function';\n var shouldAutoBind = isFunction && !isReactClassMethod && !isAlreadyDefined && spec.autobind !== false;\n\n if (shouldAutoBind) {\n autoBindPairs.push(name, property);\n proto[name] = property;\n } else {\n if (isAlreadyDefined) {\n var specPolicy = ReactClassInterface[name]; // These cases should already be caught by validateMethodOverride.\n\n !(isReactClassMethod && (specPolicy === SpecPolicy.DEFINE_MANY_MERGED || specPolicy === SpecPolicy.DEFINE_MANY)) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: Unexpected spec policy %s for key %s ' + 'when mixing in component specs.', specPolicy, name) : invariant(false) : void 0; // For methods which are defined more than once, call the existing\n // methods before calling the new property, merging if appropriate.\n\n if (specPolicy === SpecPolicy.DEFINE_MANY_MERGED) {\n proto[name] = createMergedResultFunction(proto[name], property);\n } else if (specPolicy === SpecPolicy.DEFINE_MANY) {\n proto[name] = createChainedFunction(proto[name], property);\n }\n } else {\n proto[name] = property;\n\n if (process.env.NODE_ENV !== 'production') {\n // Add verbose displayName to the function, which helps when looking\n // at profiling tools.\n if (typeof property === 'function' && spec.displayName) {\n proto[name].displayName = spec.displayName + '_' + name;\n }\n }\n }\n }\n }\n }\n}\n\nfunction mixStaticSpecIntoComponent(Constructor, statics) {\n if (!statics) {\n return;\n }\n\n for (var name in statics) {\n var property = statics[name];\n\n if (!statics.hasOwnProperty(name)) {\n continue;\n }\n\n var isReserved = (name in RESERVED_SPEC_KEYS);\n !!isReserved ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: You are attempting to define a reserved ' + 'property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it ' + 'as an instance property instead; it will still be accessible on the ' + 'constructor.', name) : invariant(false) : void 0;\n var isInherited = (name in Constructor);\n !!isInherited ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: You are attempting to define ' + '`%s` on your component more than once. This conflict may be ' + 'due to a mixin.', name) : invariant(false) : void 0;\n Constructor[name] = property;\n }\n}\n/**\n * Merge two objects, but throw if both contain the same key.\n *\n * @param {object} one The first object, which is mutated.\n * @param {object} two The second object\n * @return {object} one after it has been mutated to contain everything in two.\n */\n\n\nfunction mergeIntoWithNoDuplicateKeys(one, two) {\n !(one && two && _typeof(one) === 'object' && _typeof(two) === 'object') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.') : invariant(false) : void 0;\n\n for (var key in two) {\n if (two.hasOwnProperty(key)) {\n !(one[key] === undefined) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): ' + 'Tried to merge two objects with the same key: `%s`. This conflict ' + 'may be due to a mixin; in particular, this may be caused by two ' + 'getInitialState() or getDefaultProps() methods returning objects ' + 'with clashing keys.', key) : invariant(false) : void 0;\n one[key] = two[key];\n }\n }\n\n return one;\n}\n/**\n * Creates a function that invokes two functions and merges their return values.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\n\n\nfunction createMergedResultFunction(one, two) {\n return function mergedResult() {\n var a = one.apply(this, arguments);\n var b = two.apply(this, arguments);\n\n if (a == null) {\n return b;\n } else if (b == null) {\n return a;\n }\n\n var c = {};\n mergeIntoWithNoDuplicateKeys(c, a);\n mergeIntoWithNoDuplicateKeys(c, b);\n return c;\n };\n}\n/**\n * Creates a function that invokes two functions and ignores their return vales.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\n\n\nfunction createChainedFunction(one, two) {\n return function chainedFunction() {\n one.apply(this, arguments);\n two.apply(this, arguments);\n };\n}\n/**\n * Binds a method to the component.\n *\n * @param {object} component Component whose method is going to be bound.\n * @param {function} method Method to be bound.\n * @return {function} The bound method.\n */\n\n\nfunction bindAutoBindMethod(component, method) {\n var boundMethod = method.bind(component);\n\n if (process.env.NODE_ENV !== 'production') {\n boundMethod.__reactBoundContext = component;\n boundMethod.__reactBoundMethod = method;\n boundMethod.__reactBoundArguments = null;\n var componentName = component.constructor.displayName;\n var _bind = boundMethod.bind;\n\n boundMethod.bind = function (newThis) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n } // User is trying to bind() an autobound method; we effectively will\n // ignore the value of \"this\" that the user is trying to use, so\n // let's warn.\n\n\n if (newThis !== component && newThis !== null) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'bind(): React component methods may only be bound to the ' + 'component instance. See %s', componentName) : void 0;\n } else if (!args.length) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'bind(): You are binding a component method to the component. ' + 'React does this for you automatically in a high-performance ' + 'way, so you can safely remove this call. See %s', componentName) : void 0;\n return boundMethod;\n }\n\n var reboundMethod = _bind.apply(boundMethod, arguments);\n\n reboundMethod.__reactBoundContext = component;\n reboundMethod.__reactBoundMethod = method;\n reboundMethod.__reactBoundArguments = args;\n return reboundMethod;\n };\n }\n\n return boundMethod;\n}\n/**\n * Binds all auto-bound methods in a component.\n *\n * @param {object} component Component whose method is going to be bound.\n */\n\n\nfunction bindAutoBindMethods(component) {\n var pairs = component.__reactAutoBindPairs;\n\n for (var i = 0; i < pairs.length; i += 2) {\n var autoBindKey = pairs[i];\n var method = pairs[i + 1];\n component[autoBindKey] = bindAutoBindMethod(component, method);\n }\n}\n/**\n * Add more to the ReactClass base class. These are all legacy features and\n * therefore not already part of the modern ReactComponent.\n */\n\n\nvar ReactClassMixin = {\n /**\n * TODO: This will be deprecated because state should always keep a consistent\n * type signature and the only use case for this, is to avoid that.\n */\n replaceState: function replaceState(newState, callback) {\n this.updater.enqueueReplaceState(this, newState);\n\n if (callback) {\n this.updater.enqueueCallback(this, callback, 'replaceState');\n }\n },\n\n /**\n * Checks whether or not this composite component is mounted.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function isMounted() {\n return this.updater.isMounted(this);\n }\n};\n\nvar ReactClassComponent = function ReactClassComponent() {};\n\n_assign(ReactClassComponent.prototype, ReactComponent.prototype, ReactClassMixin);\n/**\n * Module for creating composite components.\n *\n * @class ReactClass\n */\n\n\nvar ReactClass = {\n /**\n * Creates a composite component class given a class specification.\n *\n * @param {object} spec Class specification (which must define `render`).\n * @return {function} Component constructor function.\n * @public\n */\n createClass: function createClass(spec) {\n var Constructor = function Constructor(props, context, updater) {\n // This constructor gets overridden by mocks. The argument is used\n // by mocks to assert on what gets mounted.\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(this instanceof Constructor, 'Something is calling a React component directly. Use a factory or ' + 'JSX instead. See: https://fb.me/react-legacyfactory') : void 0;\n } // Wire up auto-binding\n\n\n if (this.__reactAutoBindPairs.length) {\n bindAutoBindMethods(this);\n }\n\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n this.state = null; // ReactClasses doesn't have constructors. Instead, they use the\n // getInitialState and componentWillMount methods for initialization.\n\n var initialState = this.getInitialState ? this.getInitialState() : null;\n\n if (process.env.NODE_ENV !== 'production') {\n // We allow auto-mocks to proceed as if they're returning null.\n if (initialState === undefined && this.getInitialState._isMockFunction) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n initialState = null;\n }\n }\n\n !(_typeof(initialState) === 'object' && !Array.isArray(initialState)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.getInitialState(): must return an object or null', Constructor.displayName || 'ReactCompositeComponent') : invariant(false) : void 0;\n this.state = initialState;\n };\n\n Constructor.prototype = new ReactClassComponent();\n Constructor.prototype.constructor = Constructor;\n Constructor.prototype.__reactAutoBindPairs = [];\n injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));\n mixSpecIntoComponent(Constructor, spec); // Initialize the defaultProps property after all mixins have been merged.\n\n if (Constructor.getDefaultProps) {\n Constructor.defaultProps = Constructor.getDefaultProps();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // This is a tag to indicate that the use of these method names is ok,\n // since it's used with createClass. If it's not, then it's likely a\n // mistake so we'll warn you to use the static property, property\n // initializer or constructor respectively.\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps.isReactClassApproved = {};\n }\n\n if (Constructor.prototype.getInitialState) {\n Constructor.prototype.getInitialState.isReactClassApproved = {};\n }\n }\n\n !Constructor.prototype.render ? process.env.NODE_ENV !== 'production' ? invariant(false, 'createClass(...): Class specification must implement a `render` method.') : invariant(false) : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(!Constructor.prototype.componentShouldUpdate, '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', spec.displayName || 'A component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!Constructor.prototype.componentWillRecieveProps, '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', spec.displayName || 'A component') : void 0;\n } // Reduce time spent doing lookups by setting these on the prototype.\n\n\n for (var methodName in ReactClassInterface) {\n if (!Constructor.prototype[methodName]) {\n Constructor.prototype[methodName] = null;\n }\n }\n\n return Constructor;\n },\n injection: {\n injectMixin: function injectMixin(mixin) {\n injectedMixins.push(mixin);\n }\n }\n};\nmodule.exports = ReactClass;","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactElementValidator\n */\n\n/**\n * ReactElementValidator provides a wrapper around a element factory\n * which validates the props passed to the element. This is intended to be\n * used only in DEV and could be replaced by a static type checker for languages\n * that support it.\n */\n'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar ReactElement = require('./ReactElement');\n\nvar ReactPropTypeLocations = require('./ReactPropTypeLocations');\n\nvar ReactPropTypeLocationNames = require('./ReactPropTypeLocationNames');\n\nvar ReactCurrentOwner = require('./ReactCurrentOwner');\n\nvar canDefineProperty = require('./canDefineProperty');\n\nvar getIteratorFn = require('./getIteratorFn');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar warning = require('fbjs/lib/warning');\n\nfunction getDeclarationErrorAddendum() {\n if (ReactCurrentOwner.current) {\n var name = ReactCurrentOwner.current.getName();\n\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n\n return '';\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\nvar loggedTypeFailures = {};\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\nfunction validateExplicitKey(element, parentType) {\n if (!element._store || element._store.validated || element.key != null) {\n return;\n }\n\n element._store.validated = true;\n var addenda = getAddendaForKeyUse('uniqueKey', element, parentType);\n\n if (addenda === null) {\n // we already showed the warning\n return;\n }\n\n process.env.NODE_ENV !== 'production' ? warning(false, 'Each child in an array or iterator should have a unique \"key\" prop.' + '%s%s%s', addenda.parentOrOwner || '', addenda.childOwner || '', addenda.url || '') : void 0;\n}\n/**\n * Shared warning and monitoring code for the key warnings.\n *\n * @internal\n * @param {string} messageType A key used for de-duping warnings.\n * @param {ReactElement} element Component that requires a key.\n * @param {*} parentType element's parent's type.\n * @returns {?object} A set of addenda to use in the warning message, or null\n * if the warning has already been shown before (and shouldn't be shown again).\n */\n\n\nfunction getAddendaForKeyUse(messageType, element, parentType) {\n var addendum = getDeclarationErrorAddendum();\n\n if (!addendum) {\n var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n if (parentName) {\n addendum = ' Check the top-level render call using <' + parentName + '>.';\n }\n }\n\n var memoizer = ownerHasKeyUseWarning[messageType] || (ownerHasKeyUseWarning[messageType] = {});\n\n if (memoizer[addendum]) {\n return null;\n }\n\n memoizer[addendum] = true;\n var addenda = {\n parentOrOwner: addendum,\n url: ' See https://fb.me/react-warning-keys for more information.',\n childOwner: null\n }; // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n\n if (element && element._owner && element._owner !== ReactCurrentOwner.current) {\n // Give the component that originally created this child.\n addenda.childOwner = ' It was passed a child from ' + element._owner.getName() + '.';\n }\n\n return addenda;\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n if (_typeof(node) !== 'object') {\n return;\n }\n\n if (Array.isArray(node)) {\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n\n if (ReactElement.isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (ReactElement.isValidElement(node)) {\n // This element was passed in a valid location.\n if (node._store) {\n node._store.validated = true;\n }\n } else if (node) {\n var iteratorFn = getIteratorFn(node); // Entry iterators provide implicit keys.\n\n if (iteratorFn) {\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step;\n\n while (!(step = iterator.next()).done) {\n if (ReactElement.isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n }\n }\n}\n/**\n * Assert that the props are valid\n *\n * @param {string} componentName Name of the component for error messages.\n * @param {object} propTypes Map of prop name to a ReactPropType\n * @param {object} props\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @private\n */\n\n\nfunction checkPropTypes(componentName, propTypes, props, location) {\n for (var propName in propTypes) {\n if (propTypes.hasOwnProperty(propName)) {\n var error; // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n !(typeof propTypes[propName] === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', componentName || 'React class', ReactPropTypeLocationNames[location], propName) : invariant(false) : void 0;\n error = propTypes[propName](props, propName, componentName, location);\n } catch (ex) {\n error = ex;\n }\n\n process.env.NODE_ENV !== 'production' ? warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', ReactPropTypeLocationNames[location], propName, _typeof(error)) : void 0;\n\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n var addendum = getDeclarationErrorAddendum();\n process.env.NODE_ENV !== 'production' ? warning(false, 'Failed propType: %s%s', error.message, addendum) : void 0;\n }\n }\n }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n var componentClass = element.type;\n\n if (typeof componentClass !== 'function') {\n return;\n }\n\n var name = componentClass.displayName || componentClass.name;\n\n if (componentClass.propTypes) {\n checkPropTypes(name, componentClass.propTypes, element.props, ReactPropTypeLocations.prop);\n }\n\n if (typeof componentClass.getDefaultProps === 'function') {\n process.env.NODE_ENV !== 'production' ? warning(componentClass.getDefaultProps.isReactClassApproved, 'getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.') : void 0;\n }\n}\n\nvar ReactElementValidator = {\n createElement: function createElement(type, props, children) {\n var validType = typeof type === 'string' || typeof type === 'function'; // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n\n process.env.NODE_ENV !== 'production' ? warning(validType, 'React.createElement: type should not be null, undefined, boolean, or ' + 'number. It should be a string (for DOM elements) or a ReactClass ' + '(for composite components).%s', getDeclarationErrorAddendum()) : void 0;\n var element = ReactElement.createElement.apply(this, arguments); // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n\n if (element == null) {\n return element;\n } // Skip key warning if the type isn't valid since our key validation logic\n // doesn't expect a non-string/function type and can throw confusing errors.\n // We don't want exception behavior to differ between dev and prod.\n // (Rendering will throw with a helpful message and as soon as the type is\n // fixed, the key warnings will appear.)\n\n\n if (validType) {\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], type);\n }\n }\n\n validatePropTypes(element);\n return element;\n },\n createFactory: function createFactory(type) {\n var validatedFactory = ReactElementValidator.createElement.bind(null, type); // Legacy hook TODO: Warn if this is accessed\n\n validatedFactory.type = type;\n\n if (process.env.NODE_ENV !== 'production') {\n if (canDefineProperty) {\n Object.defineProperty(validatedFactory, 'type', {\n enumerable: false,\n get: function get() {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.') : void 0;\n Object.defineProperty(this, 'type', {\n value: type\n });\n return type;\n }\n });\n }\n }\n\n return validatedFactory;\n },\n cloneElement: function cloneElement(element, props, children) {\n var newElement = ReactElement.cloneElement.apply(this, arguments);\n\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], newElement.type);\n }\n\n validatePropTypes(newElement);\n return newElement;\n }\n};\nmodule.exports = ReactElementValidator;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactPropTypes\n */\n'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar ReactElement = require('./ReactElement');\n\nvar ReactPropTypeLocationNames = require('./ReactPropTypeLocationNames');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\n\nvar getIteratorFn = require('./getIteratorFn');\n/**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n\nvar ANONYMOUS = '<<anonymous>>';\nvar ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker\n};\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n\n/*eslint-disable no-self-compare*/\n\nfunction is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n}\n/*eslint-enable no-self-compare*/\n\n\nfunction createChainableTypeChecker(validate) {\n function checkType(isRequired, props, propName, componentName, location, propFullName) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (props[propName] == null) {\n var locationName = ReactPropTypeLocationNames[location];\n\n if (isRequired) {\n return new Error('Required ' + locationName + ' `' + propFullName + '` was not specified in ' + ('`' + componentName + '`.'));\n }\n\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n return chainedCheckType;\n}\n\nfunction createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n\n if (propType !== expectedType) {\n var locationName = ReactPropTypeLocationNames[location]; // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n\n var preciseType = getPreciseType(propValue);\n return new Error('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n\n return null;\n }\n\n return createChainableTypeChecker(validate);\n}\n\nfunction createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunction.thatReturns(null));\n}\n\nfunction createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new Error('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n\n var propValue = props[propName];\n\n if (!Array.isArray(propValue)) {\n var locationName = ReactPropTypeLocationNames[location];\n var propType = getPropType(propValue);\n return new Error('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']');\n\n if (error instanceof Error) {\n return error;\n }\n }\n\n return null;\n }\n\n return createChainableTypeChecker(validate);\n}\n\nfunction createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!ReactElement.isValidElement(props[propName])) {\n var locationName = ReactPropTypeLocationNames[location];\n return new Error('Invalid ' + locationName + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a single ReactElement.'));\n }\n\n return null;\n }\n\n return createChainableTypeChecker(validate);\n}\n\nfunction createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var locationName = ReactPropTypeLocationNames[location];\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new Error('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n\n return null;\n }\n\n return createChainableTypeChecker(validate);\n}\n\nfunction createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n return createChainableTypeChecker(function () {\n return new Error('Invalid argument supplied to oneOf, expected an instance of array.');\n });\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var locationName = ReactPropTypeLocationNames[location];\n var valuesString = JSON.stringify(expectedValues);\n return new Error('Invalid ' + locationName + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n\n return createChainableTypeChecker(validate);\n}\n\nfunction createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new Error('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n\n var propValue = props[propName];\n var propType = getPropType(propValue);\n\n if (propType !== 'object') {\n var locationName = ReactPropTypeLocationNames[location];\n return new Error('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key);\n\n if (error instanceof Error) {\n return error;\n }\n }\n }\n\n return null;\n }\n\n return createChainableTypeChecker(validate);\n}\n\nfunction createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n return createChainableTypeChecker(function () {\n return new Error('Invalid argument supplied to oneOfType, expected an instance of array.');\n });\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n\n if (checker(props, propName, componentName, location, propFullName) == null) {\n return null;\n }\n }\n\n var locationName = ReactPropTypeLocationNames[location];\n return new Error('Invalid ' + locationName + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n\n return createChainableTypeChecker(validate);\n}\n\nfunction createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n var locationName = ReactPropTypeLocationNames[location];\n return new Error('Invalid ' + locationName + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n\n return null;\n }\n\n return createChainableTypeChecker(validate);\n}\n\nfunction createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n\n if (propType !== 'object') {\n var locationName = ReactPropTypeLocationNames[location];\n return new Error('Invalid ' + locationName + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n\n if (!checker) {\n continue;\n }\n\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key);\n\n if (error) {\n return error;\n }\n }\n\n return null;\n }\n\n return createChainableTypeChecker(validate);\n}\n\nfunction isNode(propValue) {\n switch (_typeof(propValue)) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n\n case 'boolean':\n return !propValue;\n\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n\n if (propValue === null || ReactElement.isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n\n default:\n return false;\n }\n} // Equivalent of `typeof` but with special handling for array and regexp.\n\n\nfunction getPropType(propValue) {\n var propType = _typeof(propValue);\n\n if (Array.isArray(propValue)) {\n return 'array';\n }\n\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n\n return propType;\n} // This handles more types than `getPropType`. Only used for error messages.\n// See `createPrimitiveTypeChecker`.\n\n\nfunction getPreciseType(propValue) {\n var propType = getPropType(propValue);\n\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n\n return propType;\n} // Returns class name of the object, if any.\n\n\nfunction getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n\n return propValue.constructor.name;\n}\n\nmodule.exports = ReactPropTypes;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactVersion\n */\n'use strict';\n\nmodule.exports = '15.0.1';","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDOMComponentFlags\n */\n'use strict';\n\nvar ReactDOMComponentFlags = {\n hasCachedChildNodes: 1 << 0\n};\nmodule.exports = ReactDOMComponentFlags;","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule accumulateInto\n */\n'use strict';\n\nvar invariant = require('fbjs/lib/invariant');\n/**\n *\n * Accumulates items that must not be null or undefined into the first one. This\n * is used to conserve memory by avoiding array allocations, and thus sacrifices\n * API cleanness. Since `current` can be null before being passed in and not\n * null after this function, make sure to assign it back to `current`:\n *\n * `a = accumulateInto(a, b);`\n *\n * This API should be sparingly used. Try `accumulate` for something cleaner.\n *\n * @return {*|array<*>} An accumulation of items.\n */\n\n\nfunction accumulateInto(current, next) {\n !(next != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'accumulateInto(...): Accumulated items must not be null or undefined.') : invariant(false) : void 0;\n\n if (current == null) {\n return next;\n } // Both are not empty. Warning: Never call x.concat(y) when you are not\n // certain that x is an Array (x could be a string with concat method).\n\n\n var currentIsArray = Array.isArray(current);\n var nextIsArray = Array.isArray(next);\n\n if (currentIsArray && nextIsArray) {\n current.push.apply(current, next);\n return current;\n }\n\n if (currentIsArray) {\n current.push(next);\n return current;\n }\n\n if (nextIsArray) {\n // A bit too dangerous to mutate `next`.\n return [current].concat(next);\n }\n\n return [current, next];\n}\n\nmodule.exports = accumulateInto;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule forEachAccumulated\n */\n'use strict';\n/**\n * @param {array} arr an \"accumulation\" of items which is either an Array or\n * a single item. Useful when paired with the `accumulate` module. This is a\n * simple utility that allows us to reason about a collection of items, but\n * handling the case when there is exactly one item (and we do not need to\n * allocate an array).\n */\n\nvar forEachAccumulated = function forEachAccumulated(arr, cb, scope) {\n if (Array.isArray(arr)) {\n arr.forEach(cb, scope);\n } else if (arr) {\n cb.call(scope, arr);\n }\n};\n\nmodule.exports = forEachAccumulated;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule getTextContentAccessor\n */\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar contentKey = null;\n/**\n * Gets the key used to access text content on a DOM node.\n *\n * @return {?string} Key used to access text content.\n * @internal\n */\n\nfunction getTextContentAccessor() {\n if (!contentKey && ExecutionEnvironment.canUseDOM) {\n // Prefer textContent to innerText because many browsers support both but\n // SVG <text> elements don't support innerText even when <div> does.\n contentKey = 'textContent' in document.documentElement ? 'textContent' : 'innerText';\n }\n\n return contentKey;\n}\n\nmodule.exports = getTextContentAccessor;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule CallbackQueue\n */\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar PooledClass = require('./PooledClass');\n\nvar invariant = require('fbjs/lib/invariant');\n/**\n * A specialized pseudo-event module to help keep track of components waiting to\n * be notified when their DOM representations are available for use.\n *\n * This implements `PooledClass`, so you should never need to instantiate this.\n * Instead, use `CallbackQueue.getPooled()`.\n *\n * @class ReactMountReady\n * @implements PooledClass\n * @internal\n */\n\n\nfunction CallbackQueue() {\n this._callbacks = null;\n this._contexts = null;\n}\n\n_assign(CallbackQueue.prototype, {\n /**\n * Enqueues a callback to be invoked when `notifyAll` is invoked.\n *\n * @param {function} callback Invoked when `notifyAll` is invoked.\n * @param {?object} context Context to call `callback` with.\n * @internal\n */\n enqueue: function enqueue(callback, context) {\n this._callbacks = this._callbacks || [];\n this._contexts = this._contexts || [];\n\n this._callbacks.push(callback);\n\n this._contexts.push(context);\n },\n\n /**\n * Invokes all enqueued callbacks and clears the queue. This is invoked after\n * the DOM representation of a component has been created or updated.\n *\n * @internal\n */\n notifyAll: function notifyAll() {\n var callbacks = this._callbacks;\n var contexts = this._contexts;\n\n if (callbacks) {\n !(callbacks.length === contexts.length) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Mismatched list of contexts in callback queue') : invariant(false) : void 0;\n this._callbacks = null;\n this._contexts = null;\n\n for (var i = 0; i < callbacks.length; i++) {\n callbacks[i].call(contexts[i]);\n }\n\n callbacks.length = 0;\n contexts.length = 0;\n }\n },\n checkpoint: function checkpoint() {\n return this._callbacks ? this._callbacks.length : 0;\n },\n rollback: function rollback(len) {\n if (this._callbacks) {\n this._callbacks.length = len;\n this._contexts.length = len;\n }\n },\n\n /**\n * Resets the internal queue.\n *\n * @internal\n */\n reset: function reset() {\n this._callbacks = null;\n this._contexts = null;\n },\n\n /**\n * `PooledClass` looks for this.\n */\n destructor: function destructor() {\n this.reset();\n }\n});\n\nPooledClass.addPoolingTo(CallbackQueue);\nmodule.exports = CallbackQueue;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactFeatureFlags\n */\n'use strict';\n\nvar ReactFeatureFlags = {\n // When true, call console.time() before and .timeEnd() after each top-level\n // render (both initial renders and updates). Useful when looking at prod-mode\n // timeline profiles in Chrome, for example.\n logTopLevelRenders: false\n};\nmodule.exports = ReactFeatureFlags;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule isTextInputElement\n */\n'use strict';\n/**\n * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary\n */\n\nvar supportedInputTypes = {\n 'color': true,\n 'date': true,\n 'datetime': true,\n 'datetime-local': true,\n 'email': true,\n 'month': true,\n 'number': true,\n 'password': true,\n 'range': true,\n 'search': true,\n 'tel': true,\n 'text': true,\n 'time': true,\n 'url': true,\n 'week': true\n};\n\nfunction isTextInputElement(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return nodeName && (nodeName === 'input' && supportedInputTypes[elem.type] || nodeName === 'textarea');\n}\n\nmodule.exports = isTextInputElement;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ViewportMetrics\n */\n'use strict';\n\nvar ViewportMetrics = {\n currentScrollLeft: 0,\n currentScrollTop: 0,\n refreshScrollValues: function refreshScrollValues(scrollPosition) {\n ViewportMetrics.currentScrollLeft = scrollPosition.x;\n ViewportMetrics.currentScrollTop = scrollPosition.y;\n }\n};\nmodule.exports = ViewportMetrics;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactComponentBrowserEnvironment\n */\n'use strict';\n\nvar DOMChildrenOperations = require('./DOMChildrenOperations');\n\nvar ReactDOMIDOperations = require('./ReactDOMIDOperations');\n\nvar ReactPerf = require('./ReactPerf');\n/**\n * Abstracts away all functionality of the reconciler that requires knowledge of\n * the browser context. TODO: These callers should be refactored to avoid the\n * need for this injection.\n */\n\n\nvar ReactComponentBrowserEnvironment = {\n processChildrenUpdates: ReactDOMIDOperations.dangerouslyProcessChildrenUpdates,\n replaceNodeWithMarkup: DOMChildrenOperations.dangerouslyReplaceNodeWithMarkup,\n\n /**\n * If a particular environment requires that some resources be cleaned up,\n * specify this in the injected Mixin. In the DOM, we would likely want to\n * purge any cached node ID lookups.\n *\n * @private\n */\n unmountIDFromEnvironment: function unmountIDFromEnvironment(rootNodeID) {}\n};\nReactPerf.measureMethods(ReactComponentBrowserEnvironment, 'ReactComponentBrowserEnvironment', {\n replaceNodeWithMarkup: 'replaceNodeWithMarkup'\n});\nmodule.exports = ReactComponentBrowserEnvironment;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule setTextContent\n */\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\n\nvar setInnerHTML = require('./setInnerHTML');\n/**\n * Set the textContent property of a node, ensuring that whitespace is preserved\n * even in IE8. innerText is a poor substitute for textContent and, among many\n * issues, inserts <br> instead of the literal newline chars. innerHTML behaves\n * as it should.\n *\n * @param {DOMElement} node\n * @param {string} text\n * @internal\n */\n\n\nvar setTextContent = function setTextContent(node, text) {\n node.textContent = text;\n};\n\nif (ExecutionEnvironment.canUseDOM) {\n if (!('textContent' in document.documentElement)) {\n setTextContent = function setTextContent(node, text) {\n setInnerHTML(node, escapeTextContentForBrowser(text));\n };\n }\n}\n\nmodule.exports = setTextContent;","'use strict';\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/*eslint-disable fb-www/unsafe-html */\n\nvar ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar invariant = require('./invariant');\n/**\n * Dummy container used to detect which wraps are necessary.\n */\n\n\nvar dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;\n/**\n * Some browsers cannot use `innerHTML` to render certain elements standalone,\n * so we wrap them, render the wrapped nodes, then extract the desired node.\n *\n * In IE8, certain elements cannot render alone, so wrap all elements ('*').\n */\n\nvar shouldWrap = {};\nvar selectWrap = [1, '<select multiple=\"true\">', '</select>'];\nvar tableWrap = [1, '<table>', '</table>'];\nvar trWrap = [3, '<table><tbody><tr>', '</tr></tbody></table>'];\nvar svgWrap = [1, '<svg xmlns=\"http://www.w3.org/2000/svg\">', '</svg>'];\nvar markupWrap = {\n '*': [1, '?<div>', '</div>'],\n 'area': [1, '<map>', '</map>'],\n 'col': [2, '<table><tbody></tbody><colgroup>', '</colgroup></table>'],\n 'legend': [1, '<fieldset>', '</fieldset>'],\n 'param': [1, '<object>', '</object>'],\n 'tr': [2, '<table><tbody>', '</tbody></table>'],\n 'optgroup': selectWrap,\n 'option': selectWrap,\n 'caption': tableWrap,\n 'colgroup': tableWrap,\n 'tbody': tableWrap,\n 'tfoot': tableWrap,\n 'thead': tableWrap,\n 'td': trWrap,\n 'th': trWrap\n}; // Initialize the SVG elements since we know they'll always need to be wrapped\n// consistently. If they are created inside a <div> they will be initialized in\n// the wrong namespace (and will not display).\n\nvar svgElements = ['circle', 'clipPath', 'defs', 'ellipse', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'text', 'tspan'];\nsvgElements.forEach(function (nodeName) {\n markupWrap[nodeName] = svgWrap;\n shouldWrap[nodeName] = true;\n});\n/**\n * Gets the markup wrap configuration for the supplied `nodeName`.\n *\n * NOTE: This lazily detects which wraps are necessary for the current browser.\n *\n * @param {string} nodeName Lowercase `nodeName`.\n * @return {?array} Markup wrap configuration, if applicable.\n */\n\nfunction getMarkupWrap(nodeName) {\n !!!dummyNode ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Markup wrapping node not initialized') : invariant(false) : void 0;\n\n if (!markupWrap.hasOwnProperty(nodeName)) {\n nodeName = '*';\n }\n\n if (!shouldWrap.hasOwnProperty(nodeName)) {\n if (nodeName === '*') {\n dummyNode.innerHTML = '<link />';\n } else {\n dummyNode.innerHTML = '<' + nodeName + '></' + nodeName + '>';\n }\n\n shouldWrap[nodeName] = !dummyNode.firstChild;\n }\n\n return shouldWrap[nodeName] ? markupWrap[nodeName] : null;\n}\n\nmodule.exports = getMarkupWrap;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactMultiChildUpdateTypes\n */\n'use strict';\n\nvar keyMirror = require('fbjs/lib/keyMirror');\n/**\n * When a component's children are updated, a series of update configuration\n * objects are created in order to batch and serialize the required changes.\n *\n * Enumerates all the possible types of update configurations.\n *\n * @internal\n */\n\n\nvar ReactMultiChildUpdateTypes = keyMirror({\n INSERT_MARKUP: null,\n MOVE_EXISTING: null,\n REMOVE_NODE: null,\n SET_MARKUP: null,\n TEXT_CONTENT: null\n});\nmodule.exports = ReactMultiChildUpdateTypes;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n'use strict';\n/**\n * @param {DOMElement} node input/textarea to focus\n */\n\nfunction focusNode(node) {\n // IE8 can throw \"Can't move focus to the control because it is invisible,\n // not enabled, or of a type that does not accept the focus.\" for all kinds of\n // reasons that are too expensive and fragile to test.\n try {\n node.focus();\n } catch (e) {}\n}\n\nmodule.exports = focusNode;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule CSSProperty\n */\n'use strict';\n/**\n * CSS properties which accept numbers but are not in units of \"px\".\n */\n\nvar isUnitlessNumber = {\n animationIterationCount: true,\n borderImageOutset: true,\n borderImageSlice: true,\n borderImageWidth: true,\n boxFlex: true,\n boxFlexGroup: true,\n boxOrdinalGroup: true,\n columnCount: true,\n flex: true,\n flexGrow: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n flexOrder: true,\n gridRow: true,\n gridColumn: true,\n fontWeight: true,\n lineClamp: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n tabSize: true,\n widows: true,\n zIndex: true,\n zoom: true,\n // SVG-related properties\n fillOpacity: true,\n floodOpacity: true,\n stopOpacity: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n strokeMiterlimit: true,\n strokeOpacity: true,\n strokeWidth: true\n};\n/**\n * @param {string} prefix vendor-specific prefix, eg: Webkit\n * @param {string} key style name, eg: transitionDuration\n * @return {string} style name prefixed with `prefix`, properly camelCased, eg:\n * WebkitTransitionDuration\n */\n\nfunction prefixKey(prefix, key) {\n return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\n/**\n * Support style names that may come passed in prefixed by adding permutations\n * of vendor prefixes.\n */\n\n\nvar prefixes = ['Webkit', 'ms', 'Moz', 'O']; // Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an\n// infinite loop, because it iterates over the newly added props too.\n\nObject.keys(isUnitlessNumber).forEach(function (prop) {\n prefixes.forEach(function (prefix) {\n isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];\n });\n});\n/**\n * Most style properties can be unset by doing .style[prop] = '' but IE8\n * doesn't like doing that with shorthand properties so for the properties that\n * IE8 breaks on, which are listed here, we instead unset each of the\n * individual properties. See http://bugs.jquery.com/ticket/12385.\n * The 4-value 'clock' properties like margin, padding, border-width seem to\n * behave without any problems. Curiously, list-style works too without any\n * special prodding.\n */\n\nvar shorthandPropertyExpansions = {\n background: {\n backgroundAttachment: true,\n backgroundColor: true,\n backgroundImage: true,\n backgroundPositionX: true,\n backgroundPositionY: true,\n backgroundRepeat: true\n },\n backgroundPosition: {\n backgroundPositionX: true,\n backgroundPositionY: true\n },\n border: {\n borderWidth: true,\n borderStyle: true,\n borderColor: true\n },\n borderBottom: {\n borderBottomWidth: true,\n borderBottomStyle: true,\n borderBottomColor: true\n },\n borderLeft: {\n borderLeftWidth: true,\n borderLeftStyle: true,\n borderLeftColor: true\n },\n borderRight: {\n borderRightWidth: true,\n borderRightStyle: true,\n borderRightColor: true\n },\n borderTop: {\n borderTopWidth: true,\n borderTopStyle: true,\n borderTopColor: true\n },\n font: {\n fontStyle: true,\n fontVariant: true,\n fontWeight: true,\n fontSize: true,\n lineHeight: true,\n fontFamily: true\n },\n outline: {\n outlineWidth: true,\n outlineStyle: true,\n outlineColor: true\n }\n};\nvar CSSProperty = {\n isUnitlessNumber: isUnitlessNumber,\n shorthandPropertyExpansions: shorthandPropertyExpansions\n};\nmodule.exports = CSSProperty;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDOMSelect\n */\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar LinkedValueUtils = require('./LinkedValueUtils');\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar ReactUpdates = require('./ReactUpdates');\n\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnValueLink = false;\nvar didWarnValueNull = false;\nvar didWarnValueDefaultValue = false;\n\nfunction updateOptionsIfPendingUpdateAndMounted() {\n if (this._rootNodeID && this._wrapperState.pendingUpdate) {\n this._wrapperState.pendingUpdate = false;\n var props = this._currentElement.props;\n var value = LinkedValueUtils.getValue(props);\n\n if (value != null) {\n updateOptions(this, Boolean(props.multiple), value);\n }\n }\n}\n\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n\n return '';\n}\n\nfunction warnIfValueIsNull(props) {\n if (props != null && props.value === null && !didWarnValueNull) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`value` prop on `select` should not be null. ' + 'Consider using the empty string to clear the component or `undefined` ' + 'for uncontrolled components.') : void 0;\n didWarnValueNull = true;\n }\n}\n\nvar valuePropNames = ['value', 'defaultValue'];\n/**\n * Validation function for `value` and `defaultValue`.\n * @private\n */\n\nfunction checkSelectPropTypes(inst, props) {\n var owner = inst._currentElement._owner;\n LinkedValueUtils.checkPropTypes('select', props, owner);\n\n if (props.valueLink !== undefined && !didWarnValueLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `select` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n\n for (var i = 0; i < valuePropNames.length; i++) {\n var propName = valuePropNames[i];\n\n if (props[propName] == null) {\n continue;\n }\n\n if (props.multiple) {\n process.env.NODE_ENV !== 'production' ? warning(Array.isArray(props[propName]), 'The `%s` prop supplied to <select> must be an array if ' + '`multiple` is true.%s', propName, getDeclarationErrorAddendum(owner)) : void 0;\n } else {\n process.env.NODE_ENV !== 'production' ? warning(!Array.isArray(props[propName]), 'The `%s` prop supplied to <select> must be a scalar ' + 'value if `multiple` is false.%s', propName, getDeclarationErrorAddendum(owner)) : void 0;\n }\n }\n}\n/**\n * @param {ReactDOMComponent} inst\n * @param {boolean} multiple\n * @param {*} propValue A stringable (with `multiple`, a list of stringables).\n * @private\n */\n\n\nfunction updateOptions(inst, multiple, propValue) {\n var selectedValue, i;\n var options = ReactDOMComponentTree.getNodeFromInstance(inst).options;\n\n if (multiple) {\n selectedValue = {};\n\n for (i = 0; i < propValue.length; i++) {\n selectedValue['' + propValue[i]] = true;\n }\n\n for (i = 0; i < options.length; i++) {\n var selected = selectedValue.hasOwnProperty(options[i].value);\n\n if (options[i].selected !== selected) {\n options[i].selected = selected;\n }\n }\n } else {\n // Do not set `select.value` as exact behavior isn't consistent across all\n // browsers for all cases.\n selectedValue = '' + propValue;\n\n for (i = 0; i < options.length; i++) {\n if (options[i].value === selectedValue) {\n options[i].selected = true;\n return;\n }\n }\n\n if (options.length) {\n options[0].selected = true;\n }\n }\n}\n/**\n * Implements a <select> native component that allows optionally setting the\n * props `value` and `defaultValue`. If `multiple` is false, the prop must be a\n * stringable. If `multiple` is true, the prop must be an array of stringables.\n *\n * If `value` is not supplied (or null/undefined), user actions that change the\n * selected option will trigger updates to the rendered options.\n *\n * If it is supplied (and not null/undefined), the rendered options will not\n * update in response to user actions. Instead, the `value` prop must change in\n * order for the rendered options to update.\n *\n * If `defaultValue` is provided, any options with the supplied values will be\n * selected.\n */\n\n\nvar ReactDOMSelect = {\n getNativeProps: function getNativeProps(inst, props) {\n return _assign({}, props, {\n onChange: inst._wrapperState.onChange,\n value: undefined\n });\n },\n mountWrapper: function mountWrapper(inst, props) {\n if (process.env.NODE_ENV !== 'production') {\n checkSelectPropTypes(inst, props);\n warnIfValueIsNull(props);\n }\n\n var value = LinkedValueUtils.getValue(props);\n inst._wrapperState = {\n pendingUpdate: false,\n initialValue: value != null ? value : props.defaultValue,\n listeners: null,\n onChange: _handleChange.bind(inst),\n wasMultiple: Boolean(props.multiple)\n };\n\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Select elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled select ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0;\n didWarnValueDefaultValue = true;\n }\n },\n getSelectValueContext: function getSelectValueContext(inst) {\n // ReactDOMOption looks at this initial value so the initial generated\n // markup has correct `selected` attributes\n return inst._wrapperState.initialValue;\n },\n postUpdateWrapper: function postUpdateWrapper(inst) {\n var props = inst._currentElement.props;\n\n if (process.env.NODE_ENV !== 'production') {\n warnIfValueIsNull(props);\n } // After the initial mount, we control selected-ness manually so don't pass\n // this value down\n\n\n inst._wrapperState.initialValue = undefined;\n var wasMultiple = inst._wrapperState.wasMultiple;\n inst._wrapperState.wasMultiple = Boolean(props.multiple);\n var value = LinkedValueUtils.getValue(props);\n\n if (value != null) {\n inst._wrapperState.pendingUpdate = false;\n updateOptions(inst, Boolean(props.multiple), value);\n } else if (wasMultiple !== Boolean(props.multiple)) {\n // For simplicity, reapply `defaultValue` if `multiple` is toggled.\n if (props.defaultValue != null) {\n updateOptions(inst, Boolean(props.multiple), props.defaultValue);\n } else {\n // Revert the select back to its default unselected state.\n updateOptions(inst, Boolean(props.multiple), props.multiple ? [] : '');\n }\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n\n if (this._rootNodeID) {\n this._wrapperState.pendingUpdate = true;\n }\n\n ReactUpdates.asap(updateOptionsIfPendingUpdateAndMounted, this);\n return returnValue;\n}\n\nmodule.exports = ReactDOMSelect;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule instantiateReactComponent\n */\n'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar _assign = require('object-assign');\n\nvar ReactCompositeComponent = require('./ReactCompositeComponent');\n\nvar ReactEmptyComponent = require('./ReactEmptyComponent');\n\nvar ReactNativeComponent = require('./ReactNativeComponent');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar warning = require('fbjs/lib/warning'); // To avoid a cyclic dependency, we create the final class in this module\n\n\nvar ReactCompositeComponentWrapper = function ReactCompositeComponentWrapper(element) {\n this.construct(element);\n};\n\n_assign(ReactCompositeComponentWrapper.prototype, ReactCompositeComponent.Mixin, {\n _instantiateReactComponent: instantiateReactComponent\n});\n\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n\n return '';\n}\n/**\n * Check if the type reference is a known internal type. I.e. not a user\n * provided composite type.\n *\n * @param {function} type\n * @return {boolean} Returns true if this is a valid internal type.\n */\n\n\nfunction isInternalComponentType(type) {\n return typeof type === 'function' && typeof type.prototype !== 'undefined' && typeof type.prototype.mountComponent === 'function' && typeof type.prototype.receiveComponent === 'function';\n}\n/**\n * Given a ReactNode, create an instance that will actually be mounted.\n *\n * @param {ReactNode} node\n * @return {object} A new instance of the element's constructor.\n * @protected\n */\n\n\nfunction instantiateReactComponent(node) {\n var instance;\n\n if (node === null || node === false) {\n instance = ReactEmptyComponent.create(instantiateReactComponent);\n } else if (_typeof(node) === 'object') {\n var element = node;\n !(element && (typeof element.type === 'function' || typeof element.type === 'string')) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Element type is invalid: expected a string (for built-in components) ' + 'or a class/function (for composite components) but got: %s.%s', element.type == null ? element.type : _typeof(element.type), getDeclarationErrorAddendum(element._owner)) : invariant(false) : void 0; // Special case string values\n\n if (typeof element.type === 'string') {\n instance = ReactNativeComponent.createInternalComponent(element);\n } else if (isInternalComponentType(element.type)) {\n // This is temporarily available for custom components that are not string\n // representations. I.e. ART. Once those are updated to use the string\n // representation, we can drop this code path.\n instance = new element.type(element);\n } else {\n instance = new ReactCompositeComponentWrapper(element);\n }\n } else if (typeof node === 'string' || typeof node === 'number') {\n instance = ReactNativeComponent.createInstanceForText(node);\n } else {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Encountered invalid React node of type %s', _typeof(node)) : invariant(false) : void 0;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(typeof instance.mountComponent === 'function' && typeof instance.receiveComponent === 'function' && typeof instance.getNativeNode === 'function' && typeof instance.unmountComponent === 'function', 'Only React Components can be mounted.') : void 0;\n } // These two fields are used by the DOM and ART diffing algorithms\n // respectively. Instead of using expandos on components, we should be\n // storing the state needed by the diffing algorithms elsewhere.\n\n\n instance._mountIndex = 0;\n instance._mountImage = null;\n\n if (process.env.NODE_ENV !== 'production') {\n instance._isOwnerNecessary = false;\n instance._warnedAboutRefsInRender = false;\n } // Internal instances should fully constructed at this point, so they should\n // not get any new fields added to them at this point.\n\n\n if (process.env.NODE_ENV !== 'production') {\n if (Object.preventExtensions) {\n Object.preventExtensions(instance);\n }\n }\n\n return instance;\n}\n\nmodule.exports = instantiateReactComponent;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNodeTypes\n */\n'use strict';\n\nvar ReactElement = require('./ReactElement');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar ReactNodeTypes = {\n NATIVE: 0,\n COMPOSITE: 1,\n EMPTY: 2,\n getType: function getType(node) {\n if (node === null || node === false) {\n return ReactNodeTypes.EMPTY;\n } else if (ReactElement.isValidElement(node)) {\n if (typeof node.type === 'function') {\n return ReactNodeTypes.COMPOSITE;\n } else {\n return ReactNodeTypes.NATIVE;\n }\n }\n\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Unexpected node: %s', node) : invariant(false) : void 0;\n }\n};\nmodule.exports = ReactNodeTypes;","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactUpdateQueue\n */\n'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar ReactCurrentOwner = require('./ReactCurrentOwner');\n\nvar ReactInstanceMap = require('./ReactInstanceMap');\n\nvar ReactUpdates = require('./ReactUpdates');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar warning = require('fbjs/lib/warning');\n\nfunction enqueueUpdate(internalInstance) {\n ReactUpdates.enqueueUpdate(internalInstance);\n}\n\nfunction formatUnexpectedArgument(arg) {\n var type = _typeof(arg);\n\n if (type !== 'object') {\n return type;\n }\n\n var displayName = arg.constructor && arg.constructor.name || type;\n var keys = Object.keys(arg);\n\n if (keys.length > 0 && keys.length < 20) {\n return displayName + ' (keys: ' + keys.join(', ') + ')';\n }\n\n return displayName;\n}\n\nfunction getInternalInstanceReadyForUpdate(publicInstance, callerName) {\n var internalInstance = ReactInstanceMap.get(publicInstance);\n\n if (!internalInstance) {\n if (process.env.NODE_ENV !== 'production') {\n // Only warn when we have a callerName. Otherwise we should be silent.\n // We're probably calling from enqueueCallback. We don't want to warn\n // there because we already warned for the corresponding lifecycle method.\n process.env.NODE_ENV !== 'production' ? warning(!callerName, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, publicInstance.constructor.displayName) : void 0;\n }\n\n return null;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, '%s(...): Cannot update during an existing state transition (such as ' + 'within `render` or another component\\'s constructor). Render methods ' + 'should be a pure function of props and state; constructor ' + 'side-effects are an anti-pattern, but can be moved to ' + '`componentWillMount`.', callerName) : void 0;\n }\n\n return internalInstance;\n}\n/**\n * ReactUpdateQueue allows for state updates to be scheduled into a later\n * reconciliation step.\n */\n\n\nvar ReactUpdateQueue = {\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function isMounted(publicInstance) {\n if (process.env.NODE_ENV !== 'production') {\n var owner = ReactCurrentOwner.current;\n\n if (owner !== null) {\n process.env.NODE_ENV !== 'production' ? warning(owner._warnedAboutRefsInRender, '%s is accessing isMounted inside its render() function. ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', owner.getName() || 'A component') : void 0;\n owner._warnedAboutRefsInRender = true;\n }\n }\n\n var internalInstance = ReactInstanceMap.get(publicInstance);\n\n if (internalInstance) {\n // During componentWillMount and render this will still be null but after\n // that will always render to something. At least for now. So we can use\n // this hack.\n return !!internalInstance._renderedComponent;\n } else {\n return false;\n }\n },\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @param {string} callerName Name of the calling function in the public API.\n * @internal\n */\n enqueueCallback: function enqueueCallback(publicInstance, callback, callerName) {\n ReactUpdateQueue.validateCallback(callback, callerName);\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance); // Previously we would throw an error if we didn't have an internal\n // instance. Since we want to make it a no-op instead, we mirror the same\n // behavior we have in other enqueue* methods.\n // We also need to ignore callbacks in componentWillMount. See\n // enqueueUpdates.\n\n if (!internalInstance) {\n return null;\n }\n\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n } // TODO: The callback here is ignored when setState is called from\n // componentWillMount. Either fix it or disallow doing so completely in\n // favor of getInitialState. Alternatively, we can disallow\n // componentWillMount during server-side rendering.\n\n\n enqueueUpdate(internalInstance);\n },\n enqueueCallbackInternal: function enqueueCallbackInternal(internalInstance, callback) {\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n enqueueForceUpdate: function enqueueForceUpdate(publicInstance) {\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'forceUpdate');\n\n if (!internalInstance) {\n return;\n }\n\n internalInstance._pendingForceUpdate = true;\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @internal\n */\n enqueueReplaceState: function enqueueReplaceState(publicInstance, completeState) {\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'replaceState');\n\n if (!internalInstance) {\n return;\n }\n\n internalInstance._pendingStateQueue = [completeState];\n internalInstance._pendingReplaceState = true;\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @internal\n */\n enqueueSetState: function enqueueSetState(publicInstance, partialState) {\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'setState');\n\n if (!internalInstance) {\n return;\n }\n\n var queue = internalInstance._pendingStateQueue || (internalInstance._pendingStateQueue = []);\n queue.push(partialState);\n enqueueUpdate(internalInstance);\n },\n enqueueElementInternal: function enqueueElementInternal(internalInstance, newElement) {\n internalInstance._pendingElement = newElement;\n enqueueUpdate(internalInstance);\n },\n validateCallback: function validateCallback(callback, callerName) {\n !(!callback || typeof callback === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s(...): Expected the last optional `callback` argument to be a ' + 'function. Instead received: %s.', callerName, formatUnexpectedArgument(callback)) : invariant(false) : void 0;\n }\n};\nmodule.exports = ReactUpdateQueue;","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactEmptyComponent\n */\n'use strict';\n\nvar emptyComponentFactory;\nvar ReactEmptyComponentInjection = {\n injectEmptyComponentFactory: function injectEmptyComponentFactory(factory) {\n emptyComponentFactory = factory;\n }\n};\nvar ReactEmptyComponent = {\n create: function create(instantiate) {\n return emptyComponentFactory(instantiate);\n }\n};\nReactEmptyComponent.injection = ReactEmptyComponentInjection;\nmodule.exports = ReactEmptyComponent;","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNativeComponent\n */\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar autoGenerateWrapperClass = null;\nvar genericComponentClass = null; // This registry keeps track of wrapper classes around native tags.\n\nvar tagToComponentClass = {};\nvar textComponentClass = null;\nvar ReactNativeComponentInjection = {\n // This accepts a class that receives the tag string. This is a catch all\n // that can render any kind of tag.\n injectGenericComponentClass: function injectGenericComponentClass(componentClass) {\n genericComponentClass = componentClass;\n },\n // This accepts a text component class that takes the text string to be\n // rendered as props.\n injectTextComponentClass: function injectTextComponentClass(componentClass) {\n textComponentClass = componentClass;\n },\n // This accepts a keyed object with classes as values. Each key represents a\n // tag. That particular tag will use this class instead of the generic one.\n injectComponentClasses: function injectComponentClasses(componentClasses) {\n _assign(tagToComponentClass, componentClasses);\n }\n};\n/**\n * Get a composite component wrapper class for a specific tag.\n *\n * @param {ReactElement} element The tag for which to get the class.\n * @return {function} The React class constructor function.\n */\n\nfunction getComponentClassForElement(element) {\n if (typeof element.type === 'function') {\n return element.type;\n }\n\n var tag = element.type;\n var componentClass = tagToComponentClass[tag];\n\n if (componentClass == null) {\n tagToComponentClass[tag] = componentClass = autoGenerateWrapperClass(tag);\n }\n\n return componentClass;\n}\n/**\n * Get a native internal component class for a specific tag.\n *\n * @param {ReactElement} element The element to create.\n * @return {function} The internal class constructor function.\n */\n\n\nfunction createInternalComponent(element) {\n !genericComponentClass ? process.env.NODE_ENV !== 'production' ? invariant(false, 'There is no registered component for the tag %s', element.type) : invariant(false) : void 0;\n return new genericComponentClass(element);\n}\n/**\n * @param {ReactText} text\n * @return {ReactComponent}\n */\n\n\nfunction createInstanceForText(text) {\n return new textComponentClass(text);\n}\n/**\n * @param {ReactComponent} component\n * @return {boolean}\n */\n\n\nfunction isTextComponent(component) {\n return component instanceof textComponentClass;\n}\n\nvar ReactNativeComponent = {\n getComponentClassForElement: getComponentClassForElement,\n createInternalComponent: createInternalComponent,\n createInstanceForText: createInstanceForText,\n isTextComponent: isTextComponent,\n injection: ReactNativeComponentInjection\n};\nmodule.exports = ReactNativeComponent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n * \n */\n\n/*eslint-disable no-self-compare */\n'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n\nfunction is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n // Added the nonzero y check to make Flow happy, but it is redundant\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n}\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\n\n\nfunction shallowEqual(objA, objB) {\n if (is(objA, objB)) {\n return true;\n }\n\n if (_typeof(objA) !== 'object' || objA === null || _typeof(objB) !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n } // Test for A's keys different from B.\n\n\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = shallowEqual;","'use strict';\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\nvar emptyFunction = require('./emptyFunction');\n/**\n * Upstream version of event listener. Does not take into account specific\n * nature of platform.\n */\n\n\nvar EventListener = {\n /**\n * Listen to DOM events during the bubble phase.\n *\n * @param {DOMEventTarget} target DOM element to register listener on.\n * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.\n * @param {function} callback Callback function.\n * @return {object} Object with a `remove` method.\n */\n listen: function listen(target, eventType, callback) {\n if (target.addEventListener) {\n target.addEventListener(eventType, callback, false);\n return {\n remove: function remove() {\n target.removeEventListener(eventType, callback, false);\n }\n };\n } else if (target.attachEvent) {\n target.attachEvent('on' + eventType, callback);\n return {\n remove: function remove() {\n target.detachEvent('on' + eventType, callback);\n }\n };\n }\n },\n\n /**\n * Listen to DOM events during the capture phase.\n *\n * @param {DOMEventTarget} target DOM element to register listener on.\n * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.\n * @param {function} callback Callback function.\n * @return {object} Object with a `remove` method.\n */\n capture: function capture(target, eventType, callback) {\n if (target.addEventListener) {\n target.addEventListener(eventType, callback, true);\n return {\n remove: function remove() {\n target.removeEventListener(eventType, callback, true);\n }\n };\n } else {\n if (process.env.NODE_ENV !== 'production') {\n console.error('Attempted to listen to events during the capture phase on a ' + 'browser that does not support the capture phase. Your application ' + 'will not receive some events.');\n }\n\n return {\n remove: emptyFunction\n };\n }\n },\n registerDefault: function registerDefault() {}\n};\nmodule.exports = EventListener;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactInputSelection\n */\n'use strict';\n\nvar ReactDOMSelection = require('./ReactDOMSelection');\n\nvar containsNode = require('fbjs/lib/containsNode');\n\nvar focusNode = require('fbjs/lib/focusNode');\n\nvar getActiveElement = require('fbjs/lib/getActiveElement');\n\nfunction isInDocument(node) {\n return containsNode(document.documentElement, node);\n}\n/**\n * @ReactInputSelection: React input selection module. Based on Selection.js,\n * but modified to be suitable for react and has a couple of bug fixes (doesn't\n * assume buttons have range selections allowed).\n * Input selection module for React.\n */\n\n\nvar ReactInputSelection = {\n hasSelectionCapabilities: function hasSelectionCapabilities(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return nodeName && (nodeName === 'input' && elem.type === 'text' || nodeName === 'textarea' || elem.contentEditable === 'true');\n },\n getSelectionInformation: function getSelectionInformation() {\n var focusedElem = getActiveElement();\n return {\n focusedElem: focusedElem,\n selectionRange: ReactInputSelection.hasSelectionCapabilities(focusedElem) ? ReactInputSelection.getSelection(focusedElem) : null\n };\n },\n\n /**\n * @restoreSelection: If any selection information was potentially lost,\n * restore it. This is useful when performing operations that could remove dom\n * nodes and place them back in, resulting in focus being lost.\n */\n restoreSelection: function restoreSelection(priorSelectionInformation) {\n var curFocusedElem = getActiveElement();\n var priorFocusedElem = priorSelectionInformation.focusedElem;\n var priorSelectionRange = priorSelectionInformation.selectionRange;\n\n if (curFocusedElem !== priorFocusedElem && isInDocument(priorFocusedElem)) {\n if (ReactInputSelection.hasSelectionCapabilities(priorFocusedElem)) {\n ReactInputSelection.setSelection(priorFocusedElem, priorSelectionRange);\n }\n\n focusNode(priorFocusedElem);\n }\n },\n\n /**\n * @getSelection: Gets the selection bounds of a focused textarea, input or\n * contentEditable node.\n * -@input: Look up selection bounds of this input\n * -@return {start: selectionStart, end: selectionEnd}\n */\n getSelection: function getSelection(input) {\n var selection;\n\n if ('selectionStart' in input) {\n // Modern browser with input or textarea.\n selection = {\n start: input.selectionStart,\n end: input.selectionEnd\n };\n } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') {\n // IE8 input.\n var range = document.selection.createRange(); // There can only be one selection per document in IE, so it must\n // be in our element.\n\n if (range.parentElement() === input) {\n selection = {\n start: -range.moveStart('character', -input.value.length),\n end: -range.moveEnd('character', -input.value.length)\n };\n }\n } else {\n // Content editable or old IE textarea.\n selection = ReactDOMSelection.getOffsets(input);\n }\n\n return selection || {\n start: 0,\n end: 0\n };\n },\n\n /**\n * @setSelection: Sets the selection bounds of a textarea or input and focuses\n * the input.\n * -@input Set selection bounds of this input or textarea\n * -@offsets Object of same form that is returned from get*\n */\n setSelection: function setSelection(input, offsets) {\n var start = offsets.start;\n var end = offsets.end;\n\n if (end === undefined) {\n end = start;\n }\n\n if ('selectionStart' in input) {\n input.selectionStart = start;\n input.selectionEnd = Math.min(end, input.value.length);\n } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') {\n var range = input.createTextRange();\n range.collapse(true);\n range.moveStart('character', start);\n range.moveEnd('character', end - start);\n range.select();\n } else {\n ReactDOMSelection.setOffsets(input, offsets);\n }\n }\n};\nmodule.exports = ReactInputSelection;","'use strict';\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n/* eslint-disable fb-www/typeof-undefined */\n\n/**\n * Same as document.activeElement but wraps in a try-catch block. In IE it is\n * not safe to call document.activeElement if there is nothing focused.\n *\n * The activeElement will be null only if the document or document body is not\n * yet defined.\n *\n * @param {?DOMDocument} doc Defaults to current document.\n * @return {?DOMElement}\n */\n\nfunction getActiveElement(doc)\n/*?DOMElement*/\n{\n doc = doc || (typeof document !== 'undefined' ? document : undefined);\n\n if (typeof doc === 'undefined') {\n return null;\n }\n\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n}\n\nmodule.exports = getActiveElement;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactMount\n */\n'use strict';\n\nvar DOMLazyTree = require('./DOMLazyTree');\n\nvar DOMProperty = require('./DOMProperty');\n\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\n\nvar ReactCurrentOwner = require('./ReactCurrentOwner');\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar ReactDOMContainerInfo = require('./ReactDOMContainerInfo');\n\nvar ReactDOMFeatureFlags = require('./ReactDOMFeatureFlags');\n\nvar ReactElement = require('./ReactElement');\n\nvar ReactFeatureFlags = require('./ReactFeatureFlags');\n\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar ReactMarkupChecksum = require('./ReactMarkupChecksum');\n\nvar ReactPerf = require('./ReactPerf');\n\nvar ReactReconciler = require('./ReactReconciler');\n\nvar ReactUpdateQueue = require('./ReactUpdateQueue');\n\nvar ReactUpdates = require('./ReactUpdates');\n\nvar emptyObject = require('fbjs/lib/emptyObject');\n\nvar instantiateReactComponent = require('./instantiateReactComponent');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar setInnerHTML = require('./setInnerHTML');\n\nvar shouldUpdateReactComponent = require('./shouldUpdateReactComponent');\n\nvar warning = require('fbjs/lib/warning');\n\nvar ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;\nvar ROOT_ATTR_NAME = DOMProperty.ROOT_ATTRIBUTE_NAME;\nvar ELEMENT_NODE_TYPE = 1;\nvar DOC_NODE_TYPE = 9;\nvar DOCUMENT_FRAGMENT_NODE_TYPE = 11;\nvar instancesByReactRootID = {};\n/**\n * Finds the index of the first character\n * that's not common between the two given strings.\n *\n * @return {number} the index of the character where the strings diverge\n */\n\nfunction firstDifferenceIndex(string1, string2) {\n var minLen = Math.min(string1.length, string2.length);\n\n for (var i = 0; i < minLen; i++) {\n if (string1.charAt(i) !== string2.charAt(i)) {\n return i;\n }\n }\n\n return string1.length === string2.length ? -1 : minLen;\n}\n/**\n * @param {DOMElement|DOMDocument} container DOM element that may contain\n * a React component\n * @return {?*} DOM element that may have the reactRoot ID, or null.\n */\n\n\nfunction getReactRootElementInContainer(container) {\n if (!container) {\n return null;\n }\n\n if (container.nodeType === DOC_NODE_TYPE) {\n return container.documentElement;\n } else {\n return container.firstChild;\n }\n}\n\nfunction internalGetID(node) {\n // If node is something like a window, document, or text node, none of\n // which support attributes or a .getAttribute method, gracefully return\n // the empty string, as if the attribute were missing.\n return node.getAttribute && node.getAttribute(ATTR_NAME) || '';\n}\n/**\n * Mounts this component and inserts it into the DOM.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {DOMElement} container DOM element to mount into.\n * @param {ReactReconcileTransaction} transaction\n * @param {boolean} shouldReuseMarkup If true, do not insert markup\n */\n\n\nfunction mountComponentIntoNode(wrapperInstance, container, transaction, shouldReuseMarkup, context) {\n var markerName;\n\n if (ReactFeatureFlags.logTopLevelRenders) {\n var wrappedElement = wrapperInstance._currentElement.props;\n var type = wrappedElement.type;\n markerName = 'React mount: ' + (typeof type === 'string' ? type : type.displayName || type.name);\n console.time(markerName);\n }\n\n var markup = ReactReconciler.mountComponent(wrapperInstance, transaction, null, ReactDOMContainerInfo(wrapperInstance, container), context);\n\n if (markerName) {\n console.timeEnd(markerName);\n }\n\n wrapperInstance._renderedComponent._topLevelWrapper = wrapperInstance;\n\n ReactMount._mountImageIntoNode(markup, container, wrapperInstance, shouldReuseMarkup, transaction);\n}\n/**\n * Batched mount.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {DOMElement} container DOM element to mount into.\n * @param {boolean} shouldReuseMarkup If true, do not insert markup\n */\n\n\nfunction batchedMountComponentIntoNode(componentInstance, container, shouldReuseMarkup, context) {\n var transaction = ReactUpdates.ReactReconcileTransaction.getPooled(\n /* useCreateElement */\n !shouldReuseMarkup && ReactDOMFeatureFlags.useCreateElement);\n transaction.perform(mountComponentIntoNode, null, componentInstance, container, transaction, shouldReuseMarkup, context);\n ReactUpdates.ReactReconcileTransaction.release(transaction);\n}\n/**\n * Unmounts a component and removes it from the DOM.\n *\n * @param {ReactComponent} instance React component instance.\n * @param {DOMElement} container DOM element to unmount from.\n * @final\n * @internal\n * @see {ReactMount.unmountComponentAtNode}\n */\n\n\nfunction unmountComponentFromNode(instance, container, safely) {\n ReactReconciler.unmountComponent(instance, safely);\n\n if (container.nodeType === DOC_NODE_TYPE) {\n container = container.documentElement;\n } // http://jsperf.com/emptying-a-node\n\n\n while (container.lastChild) {\n container.removeChild(container.lastChild);\n }\n}\n/**\n * True if the supplied DOM node has a direct React-rendered child that is\n * not a React root element. Useful for warning in `render`,\n * `unmountComponentAtNode`, etc.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM element contains a direct child that was\n * rendered by React but is not a root element.\n * @internal\n */\n\n\nfunction hasNonRootReactChild(container) {\n var rootEl = getReactRootElementInContainer(container);\n\n if (rootEl) {\n var inst = ReactDOMComponentTree.getInstanceFromNode(rootEl);\n return !!(inst && inst._nativeParent);\n }\n}\n\nfunction getNativeRootInstanceInContainer(container) {\n var rootEl = getReactRootElementInContainer(container);\n var prevNativeInstance = rootEl && ReactDOMComponentTree.getInstanceFromNode(rootEl);\n return prevNativeInstance && !prevNativeInstance._nativeParent ? prevNativeInstance : null;\n}\n\nfunction getTopLevelWrapperInContainer(container) {\n var root = getNativeRootInstanceInContainer(container);\n return root ? root._nativeContainerInfo._topLevelWrapper : null;\n}\n/**\n * Temporary (?) hack so that we can store all top-level pending updates on\n * composites instead of having to worry about different types of components\n * here.\n */\n\n\nvar topLevelRootCounter = 1;\n\nvar TopLevelWrapper = function TopLevelWrapper() {\n this.rootID = topLevelRootCounter++;\n};\n\nTopLevelWrapper.prototype.isReactComponent = {};\n\nif (process.env.NODE_ENV !== 'production') {\n TopLevelWrapper.displayName = 'TopLevelWrapper';\n}\n\nTopLevelWrapper.prototype.render = function () {\n // this.props is actually a ReactElement\n return this.props;\n};\n/**\n * Mounting is the process of initializing a React component by creating its\n * representative DOM elements and inserting them into a supplied `container`.\n * Any prior content inside `container` is destroyed in the process.\n *\n * ReactMount.render(\n * component,\n * document.getElementById('container')\n * );\n *\n * <div id=\"container\"> <-- Supplied `container`.\n * <div data-reactid=\".3\"> <-- Rendered reactRoot of React\n * // ... component.\n * </div>\n * </div>\n *\n * Inside of `container`, the first element rendered is the \"reactRoot\".\n */\n\n\nvar ReactMount = {\n TopLevelWrapper: TopLevelWrapper,\n\n /**\n * Used by devtools. The keys are not important.\n */\n _instancesByReactRootID: instancesByReactRootID,\n\n /**\n * This is a hook provided to support rendering React components while\n * ensuring that the apparent scroll position of its `container` does not\n * change.\n *\n * @param {DOMElement} container The `container` being rendered into.\n * @param {function} renderCallback This must be called once to do the render.\n */\n scrollMonitor: function scrollMonitor(container, renderCallback) {\n renderCallback();\n },\n\n /**\n * Take a component that's already mounted into the DOM and replace its props\n * @param {ReactComponent} prevComponent component instance already in the DOM\n * @param {ReactElement} nextElement component instance to render\n * @param {DOMElement} container container to render into\n * @param {?function} callback function triggered on completion\n */\n _updateRootComponent: function _updateRootComponent(prevComponent, nextElement, container, callback) {\n ReactMount.scrollMonitor(container, function () {\n ReactUpdateQueue.enqueueElementInternal(prevComponent, nextElement);\n\n if (callback) {\n ReactUpdateQueue.enqueueCallbackInternal(prevComponent, callback);\n }\n });\n return prevComponent;\n },\n\n /**\n * Render a new component into the DOM. Hooked by devtools!\n *\n * @param {ReactElement} nextElement element to render\n * @param {DOMElement} container container to render into\n * @param {boolean} shouldReuseMarkup if we should skip the markup insertion\n * @return {ReactComponent} nextComponent\n */\n _renderNewRootComponent: function _renderNewRootComponent(nextElement, container, shouldReuseMarkup, context) {\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case.\n process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, '_renderNewRootComponent(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from ' + 'render is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0;\n !(container && (container.nodeType === ELEMENT_NODE_TYPE || container.nodeType === DOC_NODE_TYPE || container.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '_registerComponent(...): Target container is not a DOM element.') : invariant(false) : void 0;\n ReactBrowserEventEmitter.ensureScrollValueMonitoring();\n var componentInstance = instantiateReactComponent(nextElement); // The initial render is synchronous but any updates that happen during\n // rendering, in componentWillMount or componentDidMount, will be batched\n // according to the current batching strategy.\n\n ReactUpdates.batchedUpdates(batchedMountComponentIntoNode, componentInstance, container, shouldReuseMarkup, context);\n var wrapperID = componentInstance._instance.rootID;\n instancesByReactRootID[wrapperID] = componentInstance;\n\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onMountRootComponent(componentInstance);\n }\n\n return componentInstance;\n },\n\n /**\n * Renders a React component into the DOM in the supplied `container`.\n *\n * If the React component was previously rendered into `container`, this will\n * perform an update on it and only mutate the DOM as necessary to reflect the\n * latest React component.\n *\n * @param {ReactComponent} parentComponent The conceptual parent of this render tree.\n * @param {ReactElement} nextElement Component element to render.\n * @param {DOMElement} container DOM element to render into.\n * @param {?function} callback function triggered on completion\n * @return {ReactComponent} Component instance rendered in `container`.\n */\n renderSubtreeIntoContainer: function renderSubtreeIntoContainer(parentComponent, nextElement, container, callback) {\n !(parentComponent != null && parentComponent._reactInternalInstance != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'parentComponent must be a valid React Component') : invariant(false) : void 0;\n return ReactMount._renderSubtreeIntoContainer(parentComponent, nextElement, container, callback);\n },\n _renderSubtreeIntoContainer: function _renderSubtreeIntoContainer(parentComponent, nextElement, container, callback) {\n ReactUpdateQueue.validateCallback(callback, 'ReactDOM.render');\n !ReactElement.isValidElement(nextElement) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactDOM.render(): Invalid component element.%s', typeof nextElement === 'string' ? ' Instead of passing a string like \\'div\\', pass ' + 'React.createElement(\\'div\\') or <div />.' : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' : // Check if it quacks like an element\n nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : invariant(false) : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!container || !container.tagName || container.tagName.toUpperCase() !== 'BODY', 'render(): Rendering components directly into document.body is ' + 'discouraged, since its children are often manipulated by third-party ' + 'scripts and browser extensions. This may lead to subtle ' + 'reconciliation issues. Try rendering into a container element created ' + 'for your app.') : void 0;\n var nextWrappedElement = ReactElement(TopLevelWrapper, null, null, null, null, null, nextElement);\n var prevComponent = getTopLevelWrapperInContainer(container);\n\n if (prevComponent) {\n var prevWrappedElement = prevComponent._currentElement;\n var prevElement = prevWrappedElement.props;\n\n if (shouldUpdateReactComponent(prevElement, nextElement)) {\n var publicInst = prevComponent._renderedComponent.getPublicInstance();\n\n var updatedCallback = callback && function () {\n callback.call(publicInst);\n };\n\n ReactMount._updateRootComponent(prevComponent, nextWrappedElement, container, updatedCallback);\n\n return publicInst;\n } else {\n ReactMount.unmountComponentAtNode(container);\n }\n }\n\n var reactRootElement = getReactRootElementInContainer(container);\n var containerHasReactMarkup = reactRootElement && !!internalGetID(reactRootElement);\n var containerHasNonRootReactChild = hasNonRootReactChild(container);\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(!containerHasNonRootReactChild, 'render(...): Replacing React-rendered children with a new root ' + 'component. If you intended to update the children of this node, ' + 'you should instead have the existing children update their state ' + 'and render the new components instead of calling ReactDOM.render.') : void 0;\n\n if (!containerHasReactMarkup || reactRootElement.nextSibling) {\n var rootElementSibling = reactRootElement;\n\n while (rootElementSibling) {\n if (internalGetID(rootElementSibling)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'render(): Target node has markup rendered by React, but there ' + 'are unrelated nodes as well. This is most commonly caused by ' + 'white-space inserted around server-rendered markup.') : void 0;\n break;\n }\n\n rootElementSibling = rootElementSibling.nextSibling;\n }\n }\n }\n\n var shouldReuseMarkup = containerHasReactMarkup && !prevComponent && !containerHasNonRootReactChild;\n\n var component = ReactMount._renderNewRootComponent(nextWrappedElement, container, shouldReuseMarkup, parentComponent != null ? parentComponent._reactInternalInstance._processChildContext(parentComponent._reactInternalInstance._context) : emptyObject)._renderedComponent.getPublicInstance();\n\n if (callback) {\n callback.call(component);\n }\n\n return component;\n },\n\n /**\n * Renders a React component into the DOM in the supplied `container`.\n *\n * If the React component was previously rendered into `container`, this will\n * perform an update on it and only mutate the DOM as necessary to reflect the\n * latest React component.\n *\n * @param {ReactElement} nextElement Component element to render.\n * @param {DOMElement} container DOM element to render into.\n * @param {?function} callback function triggered on completion\n * @return {ReactComponent} Component instance rendered in `container`.\n */\n render: function render(nextElement, container, callback) {\n return ReactMount._renderSubtreeIntoContainer(null, nextElement, container, callback);\n },\n\n /**\n * Unmounts and destroys the React component rendered in the `container`.\n *\n * @param {DOMElement} container DOM element containing a React component.\n * @return {boolean} True if a component was found in and unmounted from\n * `container`\n */\n unmountComponentAtNode: function unmountComponentAtNode(container) {\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case. (Strictly speaking, unmounting won't cause a\n // render but we still don't expect to be in a render call here.)\n process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, 'unmountComponentAtNode(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from render ' + 'is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0;\n !(container && (container.nodeType === ELEMENT_NODE_TYPE || container.nodeType === DOC_NODE_TYPE || container.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE)) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'unmountComponentAtNode(...): Target container is not a DOM element.') : invariant(false) : void 0;\n var prevComponent = getTopLevelWrapperInContainer(container);\n\n if (!prevComponent) {\n // Check if the node being unmounted was rendered by React, but isn't a\n // root node.\n var containerHasNonRootReactChild = hasNonRootReactChild(container); // Check if the container itself is a React root node.\n\n var isContainerReactRoot = container.nodeType === 1 && container.hasAttribute(ROOT_ATTR_NAME);\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(!containerHasNonRootReactChild, 'unmountComponentAtNode(): The node you\\'re attempting to unmount ' + 'was rendered by React and is not a top-level container. %s', isContainerReactRoot ? 'You may have accidentally passed in a React root node instead ' + 'of its container.' : 'Instead, have the parent component update its state and ' + 'rerender in order to remove this component.') : void 0;\n }\n\n return false;\n }\n\n delete instancesByReactRootID[prevComponent._instance.rootID];\n ReactUpdates.batchedUpdates(unmountComponentFromNode, prevComponent, container, false);\n return true;\n },\n _mountImageIntoNode: function _mountImageIntoNode(markup, container, instance, shouldReuseMarkup, transaction) {\n !(container && (container.nodeType === ELEMENT_NODE_TYPE || container.nodeType === DOC_NODE_TYPE || container.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE)) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'mountComponentIntoNode(...): Target container is not valid.') : invariant(false) : void 0;\n\n if (shouldReuseMarkup) {\n var rootElement = getReactRootElementInContainer(container);\n\n if (ReactMarkupChecksum.canReuseMarkup(markup, rootElement)) {\n ReactDOMComponentTree.precacheNode(instance, rootElement);\n return;\n } else {\n var checksum = rootElement.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n rootElement.removeAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n var rootMarkup = rootElement.outerHTML;\n rootElement.setAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME, checksum);\n var normalizedMarkup = markup;\n\n if (process.env.NODE_ENV !== 'production') {\n // because rootMarkup is retrieved from the DOM, various normalizations\n // will have occurred which will not be present in `markup`. Here,\n // insert markup into a <div> or <iframe> depending on the container\n // type to perform the same normalizations before comparing.\n var normalizer;\n\n if (container.nodeType === ELEMENT_NODE_TYPE) {\n normalizer = document.createElement('div');\n normalizer.innerHTML = markup;\n normalizedMarkup = normalizer.innerHTML;\n } else {\n normalizer = document.createElement('iframe');\n document.body.appendChild(normalizer);\n normalizer.contentDocument.write(markup);\n normalizedMarkup = normalizer.contentDocument.documentElement.outerHTML;\n document.body.removeChild(normalizer);\n }\n }\n\n var diffIndex = firstDifferenceIndex(normalizedMarkup, rootMarkup);\n var difference = ' (client) ' + normalizedMarkup.substring(diffIndex - 20, diffIndex + 20) + '\\n (server) ' + rootMarkup.substring(diffIndex - 20, diffIndex + 20);\n !(container.nodeType !== DOC_NODE_TYPE) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'You\\'re trying to render a component to the document using ' + 'server rendering but the checksum was invalid. This usually ' + 'means you rendered a different component type or props on ' + 'the client from the one on the server, or your render() ' + 'methods are impure. React cannot handle this case due to ' + 'cross-browser quirks by rendering at the document root. You ' + 'should look for environment dependent code in your components ' + 'and ensure the props are the same client and server side:\\n%s', difference) : invariant(false) : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(false, 'React attempted to reuse markup in a container but the ' + 'checksum was invalid. This generally means that you are ' + 'using server rendering and the markup generated on the ' + 'server was not what the client was expecting. React injected ' + 'new markup to compensate which works but you have lost many ' + 'of the benefits of server rendering. Instead, figure out ' + 'why the markup being generated is different on the client ' + 'or server:\\n%s', difference) : void 0;\n }\n }\n }\n\n !(container.nodeType !== DOC_NODE_TYPE) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'You\\'re trying to render a component to the document but ' + 'you didn\\'t use server rendering. We can\\'t do this ' + 'without using server rendering due to cross-browser quirks. ' + 'See ReactDOMServer.renderToString() for server rendering.') : invariant(false) : void 0;\n\n if (transaction.useCreateElement) {\n while (container.lastChild) {\n container.removeChild(container.lastChild);\n }\n\n DOMLazyTree.insertTreeBefore(container, markup, null);\n } else {\n setInnerHTML(container, markup);\n ReactDOMComponentTree.precacheNode(instance, container.firstChild);\n }\n }\n};\nReactPerf.measureMethods(ReactMount, 'ReactMount', {\n _renderNewRootComponent: '_renderNewRootComponent',\n _mountImageIntoNode: '_mountImageIntoNode'\n});\nmodule.exports = ReactMount;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule getNativeComponentFromComposite\n */\n'use strict';\n\nvar ReactNodeTypes = require('./ReactNodeTypes');\n\nfunction getNativeComponentFromComposite(inst) {\n var type;\n\n while ((type = inst._renderedNodeType) === ReactNodeTypes.COMPOSITE) {\n inst = inst._renderedComponent;\n }\n\n if (type === ReactNodeTypes.NATIVE) {\n return inst._renderedComponent;\n } else if (type === ReactNodeTypes.EMPTY) {\n return null;\n }\n}\n\nmodule.exports = getNativeComponentFromComposite;","/* eslint-disable no-param-reassign */\nexport const IntervalMin = 7920000; // 2.2 hours\nexport const IntervalCheckpoint1 = 1900800000; // 22 days\nexport const IntervalCheckpoint2 = 7776000000; // 3 months\nexport const IntervalCheckpoint3 = 31104000000; // Over a year.\n\nconst LogProgressMin = Math.log(IntervalMin);\nconst LogProgressMax = Math.log(IntervalCheckpoint2);\nconst LogScaledMax = Math.log(IntervalCheckpoint3);\nconst RangeMin = 0;\nconst RangeMax = 100;\n\n// Activation for determining whether or not an item is ready to study.\nexport const ReadyToStudyCap = 0.85;\n\n/**\n * Helps calculate progress on a logarithmic scale.\n *\n * @param {Number} reviewInterval\n * @param {Number} logMin\n * @param {Number} logMax\n * @returns {Number}\n */\nfunction reviewIntervalToProgress(reviewInterval, logMin = LogProgressMin, logMax = LogProgressMax) {\n // If review interval is negative or 0, the log method will return NaN or -Infinity.\n reviewInterval = reviewInterval && reviewInterval >= IntervalMin ? reviewInterval : IntervalMin;\n\n // Linear scale from 0 to 1.\n const progressScale = (Math.log(reviewInterval) - logMin) / (logMax - logMin);\n\n // Scale it to the specified range.\n let progress = progressScale * (RangeMax - RangeMin) + RangeMin;\n\n // Bound or round.\n if (progress >= RangeMax) {\n progress = RangeMax;\n } else if (progress >= RangeMax - 1) {\n progress = RangeMax - 1;\n } else if (progress <= 0) {\n progress = 0;\n } else if (progress <= 1) {\n progress = 1;\n }\n\n return Math.round(progress);\n}\n\nexport class Memory {\n constructor(attrs = {}) {\n // Don't want to override our getter method.\n attrs = _.omit(attrs, 'progress');\n\n _.defaults(this, attrs, {\n contentDomain: null,\n contentId: null,\n skipped: false,\n reviewInterval: null,\n currentRetention: null,\n easinessModifier: null,\n lastStudyTime: null,\n seeNextAt: null,\n shortTermMemory: false,\n difficultyBucket: null,\n\n // Not returned by the API, used for help with memory changes.\n previous: null,\n });\n\n this._setDates();\n }\n\n get progress() {\n return reviewIntervalToProgress(this.reviewInterval);\n }\n\n /**\n * Returns the progress on a scale of 1 - 120, where 100% is the maximum of\n * the normal progress.\n */\n getScaledProgress() {\n // Because being exactly on interval checkpoint 2\n return this.progress + reviewIntervalToProgress(this.reviewInterval, LogProgressMax, LogScaledMax) / 5;\n }\n\n /**\n * If a previous memory is specified, use that to compare a difference in\n * progress.\n */\n getProgressDifference() {\n return this.previous ? this.progress - this.previous.progress : 0;\n }\n\n /**\n * Returns whether or not the memory is ready to study.\n *\n * @returns {Boolean}\n */\n isReady() {\n return !this.shortTermMemory && this.currentRetention < ReadyToStudyCap;\n }\n\n /**\n * @returns {Boolean}\n */\n isComplete() {\n return this.progress === 100;\n }\n\n /**\n * Converts properties that are strings to Date objects.\n */\n _setDates() {\n if (this.seeNextAt && !(this.seeNextAt instanceof Date)) {\n this.seeNextAt = new Date(this.seeNextAt);\n }\n\n if (this.lastStudyTime && !(this.lastStudyTime instanceof Date)) {\n this.lastStudyTime = new Date(this.lastStudyTime);\n }\n }\n\n /**\n * Changes the review interval to be the maximum interval.\n */\n setToComplete() {\n this.reviewInterval = IntervalCheckpoint3;\n }\n\n /**\n * Used to update memory for any memory changes that come back.\n * Will make a copy of the previous memory.\n */\n update(memories = {}) {\n this.previous = new Memory(this);\n\n // Swap out changes.\n Object.keys(memories).forEach(key => {\n // Prevent overriding the getter methods.\n if (this.hasOwnProperty(key)) {\n this[key] = memories[key];\n }\n });\n\n this._setDates();\n }\n}\n\nexport default Memory;\n","/* eslint-disable prefer-template, no-param-reassign */\nimport Config from 'es6/core/config';\nimport Logger from 'es6/services/logger';\nimport QuizBase from 'es6/controllers/apps/quizzes/quiz-base';\nimport { ResultTypes } from 'es6/models/quiz-result';\nimport StudyScreen from 'es6/components/apps/screens/study';\nimport AnswerConfirmationScreen, {\n MULTIPLE_CHOICE_ANSWER,\n FILL_IN_THE_BLANK_ANSWER,\n STUDY_LESS,\n STUDY_MORE,\n} from 'es6/components/apps/screens/answer-confirmation';\n\n/**\n * Renders and starts the phase for the study screen.\n *\n * @this ItemQuizBase\n */\nfunction showStudyScreen() {\n const { _screenManager } = this;\n const onRemove = _screenManager.fireEvent.bind(_screenManager, 'skip_item_initiated');\n\n this.result.beginPhase('study');\n _screenManager.renderComponent(StudyScreen, {\n itemPackage: this.itemPackage,\n onNext: this.finishQuiz.bind(this),\n onRemove,\n showTranscription: Config.showTranscriptions,\n });\n}\n\n/**\n * Renders the study screen if not a diagnostic quiz. Otherwise,\n * finishes the quiz.\n *\n * @this ItemQuizBase\n */\nfunction showStudyIfAppropriate() {\n if (!this._isDiagnosticQuiz) {\n showStudyScreen.call(this);\n } else {\n this.finishQuiz();\n }\n}\n\nexport class ItemQuizBase extends QuizBase {\n constructor(itemPackage, ...args) {\n super('items', itemPackage.getId(), ...args);\n\n this.itemPackage = itemPackage;\n this.paused = false;\n this.timeLimit = 8;\n\n this._initSentence();\n }\n\n show() {\n Logger.info('Quiz', 'Showing ' + this.quizType + ' quiz for ' + this.itemPackage.item.cue.text, this);\n\n this._prepopulateScreens();\n this._showAndTimePhase('recall');\n }\n\n recallWasAnswered(known) {\n if (known) {\n if (this._quizTimer) {\n this._quizTimer.start(this.timeLimit);\n }\n this._showAndTimePhase(this.screen, 'quiz');\n } else {\n this.result.setResult(ResultTypes.YIELD_ON_RECALL);\n showStudyIfAppropriate.call(this);\n }\n }\n\n quizWasAnswered(resultObject, imeHtml) {\n this.result.setResult(resultObject.result);\n\n // In some cases, the result object contains the quizData on top of it.\n this.updateQuizData(resultObject);\n\n this.result.beginPhase('confirmation');\n\n if (this._quizTimer) {\n this._quizTimer.disable();\n }\n\n // Show the confirmation screen (incorrect confirmation is handled by the\n // quiz screen itself).\n if (this.result.isCorrect()) {\n this._showAnswerConfirmationScreen(imeHtml);\n } else {\n this._imeHtml = imeHtml;\n }\n }\n\n returnedFromQuiz(chosen) {\n switch (chosen) {\n // Mark as correct from the incorrect confirmation screen.\n case 'correct':\n // Show dialogue, which may result in quizMarkedAsCorrect being called.\n Smartfm.Apps.Modals.markAsCorrectDialogue.show();\n break;\n\n // Review from the correct confirmation screen.\n case 'review':\n // Redirect to study screen.\n showStudyScreen.call(this);\n break;\n\n // Yield from the quiz screen.\n case 'dont_know':\n this.result.setResult(ResultTypes.YIELD_ON_QUIZ);\n if (this._quizTimer) {\n this._quizTimer.disable();\n }\n showStudyIfAppropriate.call(this);\n break;\n\n // Yield from quiz result screen.\n case 'incorrect':\n this.result.setResult(ResultTypes.YIELD_ON_QUIZ);\n Smartfm.Apps.Sounds.incorrect.play();\n showStudyScreen.call(this);\n break;\n\n // Learning engine hints on correct confirmation screen.\n case 'easy':\n this.result.setResult(ResultTypes.EASY);\n this.finishQuiz();\n break;\n\n case 'hard':\n this.result.setResult(ResultTypes.HARD);\n this.finishQuiz();\n break;\n\n case 'next':\n // This quiz is finished.\n this.finishQuiz();\n break;\n\n default:\n throw new Error('Unknown user choice');\n }\n }\n\n quizMarkedAsCorrect() {\n this.result.setResult(ResultTypes.CORRECT);\n this.result.beginPhase('confirmation');\n if (this._quizTimer) {\n this._quizTimer.disable();\n }\n this._showAnswerConfirmationScreen(this._imeHtml);\n }\n\n _showAnswerConfirmationScreen(imeHtml) {\n const answerType = this.screen === 'fill_in_the_blank' ?\n FILL_IN_THE_BLANK_ANSWER :\n MULTIPLE_CHOICE_ANSWER;\n\n const answerText =\n // Quizzes that show the item's transliteration should also show the transliteration on the\n // answer confirmation screen.\n this.quizContent === 'transliteration' ? this.quizObject.getTransliteration() || this.quizObject.getText() :\n this.quizObject.getText();\n\n const answerLanguage = this.quizObject.language;\n\n const sentence = this.sentence ? {\n imageUrl: this.sentence.getImage(),\n soundUrl: this.sentence.getSound(),\n text: this.sentence.getText(),\n transliteration: this.sentence.getTransliteration(),\n translation: this.sentence.getTranslation(),\n language: this.sentence.cue.language,\n } : null;\n\n this._screenManager.renderComponent(\n AnswerConfirmationScreen,\n {\n answerType,\n answerText,\n answerLanguage,\n imeHtml, // Used to reconstruct styles of FIB answers.\n sentence,\n onRemove: () => this._screenManager.fireEvent('skip_item_initiated'),\n onReview: () => this.returnedFromQuiz('review'),\n onNext: () => this.returnedFromQuiz('next'),\n onIncorrect: () => this.returnedFromQuiz('incorrect'),\n onStudyLessMore: (lessOrMore) => {\n this.returnedFromQuiz({\n [STUDY_LESS]: 'easy',\n [STUDY_MORE]: 'hard',\n }[lessOrMore]);\n },\n }\n );\n }\n\n _prepopulateScreens() {\n this._screenManager.populate('recall', this, this._isDiagnosticQuiz);\n this._screenManager.populate(this.screen, this, this._isDiagnosticQuiz);\n }\n\n _showAndTimePhase(screen, phase) {\n phase = phase || screen;\n this.result.beginPhase(phase);\n this._screenManager.show(screen, this._isDiagnosticQuiz);\n }\n\n _initSentence() {\n const sentences = _.shuffle(this.itemPackage.sentences);\n // Find the first sentence meeting the quiz criteria.\n this.sentence = _.find(sentences, (sentence) => {\n if (this.requiresSentenceAudio && !sentence.sound) {\n return false;\n } else if (this.requiresSentenceTranslation && (!sentence.response || sentence.response.text.length === 0)) {\n return false;\n } else {\n return true;\n }\n });\n\n if (this.requiresSentence && !this.sentence) {\n // No eligible sentence found.\n Logger.error('Quiz', 'No eligible sentence found for item where a sentence is required.', this);\n }\n }\n}\n\nexport default ItemQuizBase;\n","var getLength = require('./_getLength'),\n isFunction = require('./isFunction'),\n isLength = require('./isLength');\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n\n\nfunction isArrayLike(value) {\n return value != null && !(typeof value == 'function' && isFunction(value)) && isLength(getLength(value));\n}\n\nmodule.exports = isArrayLike;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = {\n \"Webkit\": {\n \"transform\": true,\n \"transformOrigin\": true,\n \"transformOriginX\": true,\n \"transformOriginY\": true,\n \"backfaceVisibility\": true,\n \"perspective\": true,\n \"perspectiveOrigin\": true,\n \"transformStyle\": true,\n \"transformOriginZ\": true,\n \"animation\": true,\n \"animationDelay\": true,\n \"animationDirection\": true,\n \"animationFillMode\": true,\n \"animationDuration\": true,\n \"animationIterationCount\": true,\n \"animationName\": true,\n \"animationPlayState\": true,\n \"animationTimingFunction\": true,\n \"appearance\": true,\n \"userSelect\": true,\n \"fontKerning\": true,\n \"textEmphasisPosition\": true,\n \"textEmphasis\": true,\n \"textEmphasisStyle\": true,\n \"textEmphasisColor\": true,\n \"boxDecorationBreak\": true,\n \"clipPath\": true,\n \"maskImage\": true,\n \"maskMode\": true,\n \"maskRepeat\": true,\n \"maskPosition\": true,\n \"maskClip\": true,\n \"maskOrigin\": true,\n \"maskSize\": true,\n \"maskComposite\": true,\n \"mask\": true,\n \"maskBorderSource\": true,\n \"maskBorderMode\": true,\n \"maskBorderSlice\": true,\n \"maskBorderWidth\": true,\n \"maskBorderOutset\": true,\n \"maskBorderRepeat\": true,\n \"maskBorder\": true,\n \"maskType\": true,\n \"textDecorationStyle\": true,\n \"textDecorationSkip\": true,\n \"textDecorationLine\": true,\n \"textDecorationColor\": true,\n \"filter\": true,\n \"fontFeatureSettings\": true,\n \"breakAfter\": true,\n \"breakBefore\": true,\n \"breakInside\": true,\n \"columnCount\": true,\n \"columnFill\": true,\n \"columnGap\": true,\n \"columnRule\": true,\n \"columnRuleColor\": true,\n \"columnRuleStyle\": true,\n \"columnRuleWidth\": true,\n \"columns\": true,\n \"columnSpan\": true,\n \"columnWidth\": true,\n \"flex\": true,\n \"flexBasis\": true,\n \"flexDirection\": true,\n \"flexGrow\": true,\n \"flexFlow\": true,\n \"flexShrink\": true,\n \"flexWrap\": true,\n \"alignContent\": true,\n \"alignItems\": true,\n \"alignSelf\": true,\n \"justifyContent\": true,\n \"order\": true,\n \"transition\": true,\n \"transitionDelay\": true,\n \"transitionDuration\": true,\n \"transitionProperty\": true,\n \"transitionTimingFunction\": true,\n \"backdropFilter\": true,\n \"scrollSnapType\": true,\n \"scrollSnapPointsX\": true,\n \"scrollSnapPointsY\": true,\n \"scrollSnapDestination\": true,\n \"scrollSnapCoordinate\": true,\n \"shapeImageThreshold\": true,\n \"shapeImageMargin\": true,\n \"shapeImageOutside\": true,\n \"hyphens\": true,\n \"flowInto\": true,\n \"flowFrom\": true,\n \"regionFragment\": true,\n \"textSizeAdjust\": true\n },\n \"Moz\": {\n \"appearance\": true,\n \"userSelect\": true,\n \"boxSizing\": true,\n \"textAlignLast\": true,\n \"textDecorationStyle\": true,\n \"textDecorationSkip\": true,\n \"textDecorationLine\": true,\n \"textDecorationColor\": true,\n \"tabSize\": true,\n \"hyphens\": true,\n \"fontFeatureSettings\": true,\n \"breakAfter\": true,\n \"breakBefore\": true,\n \"breakInside\": true,\n \"columnCount\": true,\n \"columnFill\": true,\n \"columnGap\": true,\n \"columnRule\": true,\n \"columnRuleColor\": true,\n \"columnRuleStyle\": true,\n \"columnRuleWidth\": true,\n \"columns\": true,\n \"columnSpan\": true,\n \"columnWidth\": true\n },\n \"ms\": {\n \"flex\": true,\n \"flexBasis\": false,\n \"flexDirection\": true,\n \"flexGrow\": false,\n \"flexFlow\": true,\n \"flexShrink\": false,\n \"flexWrap\": true,\n \"alignContent\": false,\n \"alignItems\": false,\n \"alignSelf\": false,\n \"justifyContent\": false,\n \"order\": false,\n \"transform\": true,\n \"transformOrigin\": true,\n \"transformOriginX\": true,\n \"transformOriginY\": true,\n \"userSelect\": true,\n \"wrapFlow\": true,\n \"wrapThrough\": true,\n \"wrapMargin\": true,\n \"scrollSnapType\": true,\n \"scrollSnapPointsX\": true,\n \"scrollSnapPointsY\": true,\n \"scrollSnapDestination\": true,\n \"scrollSnapCoordinate\": true,\n \"touchAction\": true,\n \"hyphens\": true,\n \"flowInto\": true,\n \"flowFrom\": true,\n \"breakBefore\": true,\n \"breakAfter\": true,\n \"breakInside\": true,\n \"regionFragment\": true,\n \"gridTemplateColumns\": true,\n \"gridTemplateRows\": true,\n \"gridTemplateAreas\": true,\n \"gridTemplate\": true,\n \"gridAutoColumns\": true,\n \"gridAutoRows\": true,\n \"gridAutoFlow\": true,\n \"grid\": true,\n \"gridRowStart\": true,\n \"gridColumnStart\": true,\n \"gridRowEnd\": true,\n \"gridRow\": true,\n \"gridColumn\": true,\n \"gridColumnEnd\": true,\n \"gridColumnGap\": true,\n \"gridRowGap\": true,\n \"gridArea\": true,\n \"gridGap\": true,\n \"textSizeAdjust\": true\n }\n};\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n}); // helper to capitalize strings\n\nexports[\"default\"] = function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n};\n\nmodule.exports = exports[\"default\"];","require('../es');\nrequire('../web');\nvar path = require('../internals/path');\n\nmodule.exports = path;\n","require('../modules/es.symbol');\nrequire('../modules/es.symbol.async-iterator');\nrequire('../modules/es.symbol.description');\nrequire('../modules/es.symbol.has-instance');\nrequire('../modules/es.symbol.is-concat-spreadable');\nrequire('../modules/es.symbol.iterator');\nrequire('../modules/es.symbol.match');\nrequire('../modules/es.symbol.match-all');\nrequire('../modules/es.symbol.replace');\nrequire('../modules/es.symbol.search');\nrequire('../modules/es.symbol.species');\nrequire('../modules/es.symbol.split');\nrequire('../modules/es.symbol.to-primitive');\nrequire('../modules/es.symbol.to-string-tag');\nrequire('../modules/es.symbol.unscopables');\nrequire('../modules/es.aggregate-error');\nrequire('../modules/es.array.from');\nrequire('../modules/es.array.is-array');\nrequire('../modules/es.array.of');\nrequire('../modules/es.array.concat');\nrequire('../modules/es.array.copy-within');\nrequire('../modules/es.array.every');\nrequire('../modules/es.array.fill');\nrequire('../modules/es.array.filter');\nrequire('../modules/es.array.find');\nrequire('../modules/es.array.find-index');\nrequire('../modules/es.array.flat');\nrequire('../modules/es.array.flat-map');\nrequire('../modules/es.array.for-each');\nrequire('../modules/es.array.includes');\nrequire('../modules/es.array.index-of');\nrequire('../modules/es.array.join');\nrequire('../modules/es.array.last-index-of');\nrequire('../modules/es.array.map');\nrequire('../modules/es.array.reduce');\nrequire('../modules/es.array.reduce-right');\nrequire('../modules/es.array.reverse');\nrequire('../modules/es.array.slice');\nrequire('../modules/es.array.some');\nrequire('../modules/es.array.sort');\nrequire('../modules/es.array.splice');\nrequire('../modules/es.array.species');\nrequire('../modules/es.array.unscopables.flat');\nrequire('../modules/es.array.unscopables.flat-map');\nrequire('../modules/es.array.iterator');\nrequire('../modules/es.function.bind');\nrequire('../modules/es.function.name');\nrequire('../modules/es.function.has-instance');\nrequire('../modules/es.global-this');\nrequire('../modules/es.object.assign');\nrequire('../modules/es.object.create');\nrequire('../modules/es.object.define-property');\nrequire('../modules/es.object.define-properties');\nrequire('../modules/es.object.entries');\nrequire('../modules/es.object.freeze');\nrequire('../modules/es.object.from-entries');\nrequire('../modules/es.object.get-own-property-descriptor');\nrequire('../modules/es.object.get-own-property-descriptors');\nrequire('../modules/es.object.get-own-property-names');\nrequire('../modules/es.object.get-prototype-of');\nrequire('../modules/es.object.is');\nrequire('../modules/es.object.is-extensible');\nrequire('../modules/es.object.is-frozen');\nrequire('../modules/es.object.is-sealed');\nrequire('../modules/es.object.keys');\nrequire('../modules/es.object.prevent-extensions');\nrequire('../modules/es.object.seal');\nrequire('../modules/es.object.set-prototype-of');\nrequire('../modules/es.object.values');\nrequire('../modules/es.object.to-string');\nrequire('../modules/es.object.define-getter');\nrequire('../modules/es.object.define-setter');\nrequire('../modules/es.object.lookup-getter');\nrequire('../modules/es.object.lookup-setter');\nrequire('../modules/es.string.from-code-point');\nrequire('../modules/es.string.raw');\nrequire('../modules/es.string.code-point-at');\nrequire('../modules/es.string.ends-with');\nrequire('../modules/es.string.includes');\nrequire('../modules/es.string.match');\nrequire('../modules/es.string.match-all');\nrequire('../modules/es.string.pad-end');\nrequire('../modules/es.string.pad-start');\nrequire('../modules/es.string.repeat');\nrequire('../modules/es.string.replace');\nrequire('../modules/es.string.search');\nrequire('../modules/es.string.split');\nrequire('../modules/es.string.starts-with');\nrequire('../modules/es.string.trim');\nrequire('../modules/es.string.trim-start');\nrequire('../modules/es.string.trim-end');\nrequire('../modules/es.string.iterator');\nrequire('../modules/es.string.anchor');\nrequire('../modules/es.string.big');\nrequire('../modules/es.string.blink');\nrequire('../modules/es.string.bold');\nrequire('../modules/es.string.fixed');\nrequire('../modules/es.string.fontcolor');\nrequire('../modules/es.string.fontsize');\nrequire('../modules/es.string.italics');\nrequire('../modules/es.string.link');\nrequire('../modules/es.string.small');\nrequire('../modules/es.string.strike');\nrequire('../modules/es.string.sub');\nrequire('../modules/es.string.sup');\nrequire('../modules/es.string.replace-all');\nrequire('../modules/es.regexp.constructor');\nrequire('../modules/es.regexp.exec');\nrequire('../modules/es.regexp.flags');\nrequire('../modules/es.regexp.sticky');\nrequire('../modules/es.regexp.test');\nrequire('../modules/es.regexp.to-string');\nrequire('../modules/es.parse-int');\nrequire('../modules/es.parse-float');\nrequire('../modules/es.number.constructor');\nrequire('../modules/es.number.epsilon');\nrequire('../modules/es.number.is-finite');\nrequire('../modules/es.number.is-integer');\nrequire('../modules/es.number.is-nan');\nrequire('../modules/es.number.is-safe-integer');\nrequire('../modules/es.number.max-safe-integer');\nrequire('../modules/es.number.min-safe-integer');\nrequire('../modules/es.number.parse-float');\nrequire('../modules/es.number.parse-int');\nrequire('../modules/es.number.to-fixed');\nrequire('../modules/es.number.to-precision');\nrequire('../modules/es.math.acosh');\nrequire('../modules/es.math.asinh');\nrequire('../modules/es.math.atanh');\nrequire('../modules/es.math.cbrt');\nrequire('../modules/es.math.clz32');\nrequire('../modules/es.math.cosh');\nrequire('../modules/es.math.expm1');\nrequire('../modules/es.math.fround');\nrequire('../modules/es.math.hypot');\nrequire('../modules/es.math.imul');\nrequire('../modules/es.math.log10');\nrequire('../modules/es.math.log1p');\nrequire('../modules/es.math.log2');\nrequire('../modules/es.math.sign');\nrequire('../modules/es.math.sinh');\nrequire('../modules/es.math.tanh');\nrequire('../modules/es.math.to-string-tag');\nrequire('../modules/es.math.trunc');\nrequire('../modules/es.date.now');\nrequire('../modules/es.date.to-json');\nrequire('../modules/es.date.to-iso-string');\nrequire('../modules/es.date.to-string');\nrequire('../modules/es.date.to-primitive');\nrequire('../modules/es.json.stringify');\nrequire('../modules/es.json.to-string-tag');\nrequire('../modules/es.promise');\nrequire('../modules/es.promise.all-settled');\nrequire('../modules/es.promise.any');\nrequire('../modules/es.promise.finally');\nrequire('../modules/es.map');\nrequire('../modules/es.set');\nrequire('../modules/es.weak-map');\nrequire('../modules/es.weak-set');\nrequire('../modules/es.array-buffer.constructor');\nrequire('../modules/es.array-buffer.is-view');\nrequire('../modules/es.array-buffer.slice');\nrequire('../modules/es.data-view');\nrequire('../modules/es.typed-array.int8-array');\nrequire('../modules/es.typed-array.uint8-array');\nrequire('../modules/es.typed-array.uint8-clamped-array');\nrequire('../modules/es.typed-array.int16-array');\nrequire('../modules/es.typed-array.uint16-array');\nrequire('../modules/es.typed-array.int32-array');\nrequire('../modules/es.typed-array.uint32-array');\nrequire('../modules/es.typed-array.float32-array');\nrequire('../modules/es.typed-array.float64-array');\nrequire('../modules/es.typed-array.from');\nrequire('../modules/es.typed-array.of');\nrequire('../modules/es.typed-array.copy-within');\nrequire('../modules/es.typed-array.every');\nrequire('../modules/es.typed-array.fill');\nrequire('../modules/es.typed-array.filter');\nrequire('../modules/es.typed-array.find');\nrequire('../modules/es.typed-array.find-index');\nrequire('../modules/es.typed-array.for-each');\nrequire('../modules/es.typed-array.includes');\nrequire('../modules/es.typed-array.index-of');\nrequire('../modules/es.typed-array.iterator');\nrequire('../modules/es.typed-array.join');\nrequire('../modules/es.typed-array.last-index-of');\nrequire('../modules/es.typed-array.map');\nrequire('../modules/es.typed-array.reduce');\nrequire('../modules/es.typed-array.reduce-right');\nrequire('../modules/es.typed-array.reverse');\nrequire('../modules/es.typed-array.set');\nrequire('../modules/es.typed-array.slice');\nrequire('../modules/es.typed-array.some');\nrequire('../modules/es.typed-array.sort');\nrequire('../modules/es.typed-array.subarray');\nrequire('../modules/es.typed-array.to-locale-string');\nrequire('../modules/es.typed-array.to-string');\nrequire('../modules/es.reflect.apply');\nrequire('../modules/es.reflect.construct');\nrequire('../modules/es.reflect.define-property');\nrequire('../modules/es.reflect.delete-property');\nrequire('../modules/es.reflect.get');\nrequire('../modules/es.reflect.get-own-property-descriptor');\nrequire('../modules/es.reflect.get-prototype-of');\nrequire('../modules/es.reflect.has');\nrequire('../modules/es.reflect.is-extensible');\nrequire('../modules/es.reflect.own-keys');\nrequire('../modules/es.reflect.prevent-extensions');\nrequire('../modules/es.reflect.set');\nrequire('../modules/es.reflect.set-prototype-of');\nrequire('../modules/es.reflect.to-string-tag');\nvar path = require('../internals/path');\n\nmodule.exports = path;\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar isSymbol = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return Object(it) instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPrimitive(P, true);\n anObject(Attributes);\n if (has(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPrimitive(V, true);\n var enumerable = nativePropertyIsEnumerable.call(this, P);\n if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPrimitive(P, true);\n if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n result.push(AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n redefine($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n // `Symbol.for` method\n // https://tc39.es/ecma262/#sec-symbol.for\n 'for': function (key) {\n var string = String(key);\n if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = $Symbol(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n },\n // `Symbol.keyFor` method\n // https://tc39.es/ecma262/#sec-symbol.keyfor\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n },\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.es/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.es/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.es/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.es/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return getOwnPropertySymbolsModule.f(toObject(it));\n }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.es/ecma262/#sec-json.stringify\nif ($stringify) {\n var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) != '{}';\n });\n\n $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n var args = [it];\n var index = 1;\n var $replacer;\n while (arguments.length > index) args.push(arguments[index++]);\n $replacer = replacer;\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return $stringify.apply(null, args);\n }\n });\n}\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.asyncIterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.asynciterator\ndefineWellKnownSymbol('asyncIterator');\n","// `Symbol.prototype.description` getter\n// https://tc39.es/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar has = require('../internals/has');\nvar isObject = require('../internals/is-object');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\n\nif (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n var result = this instanceof SymbolWrapper\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n symbolPrototype.constructor = SymbolWrapper;\n\n var symbolToString = symbolPrototype.toString;\n var native = String(NativeSymbol('test')) == 'Symbol(test)';\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n defineProperty(symbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = isObject(this) ? this.valueOf() : this;\n var string = symbolToString.call(symbol);\n if (has(EmptyStringDescriptionStore, symbol)) return '';\n var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.hasInstance` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.hasinstance\ndefineWellKnownSymbol('hasInstance');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.isConcatSpreadable` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.isconcatspreadable\ndefineWellKnownSymbol('isConcatSpreadable');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.match` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.match\ndefineWellKnownSymbol('match');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.matchAll` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.matchall\ndefineWellKnownSymbol('matchAll');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.replace` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.replace\ndefineWellKnownSymbol('replace');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.search` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.search\ndefineWellKnownSymbol('search');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.species` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.species\ndefineWellKnownSymbol('species');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.split` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.split\ndefineWellKnownSymbol('split');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.toPrimitive` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.toprimitive\ndefineWellKnownSymbol('toPrimitive');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.toStringTag` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.tostringtag\ndefineWellKnownSymbol('toStringTag');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.unscopables` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.unscopables\ndefineWellKnownSymbol('unscopables');\n","'use strict';\nvar $ = require('../internals/export');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar iterate = require('../internals/iterate');\n\nvar $AggregateError = function AggregateError(errors, message) {\n var that = this;\n if (!(that instanceof $AggregateError)) return new $AggregateError(errors, message);\n if (setPrototypeOf) {\n // eslint-disable-next-line unicorn/error-message -- expected\n that = setPrototypeOf(new Error(undefined), getPrototypeOf(that));\n }\n if (message !== undefined) createNonEnumerableProperty(that, 'message', String(message));\n var errorsArray = [];\n iterate(errors, errorsArray.push, { that: errorsArray });\n createNonEnumerableProperty(that, 'errors', errorsArray);\n return that;\n};\n\n$AggregateError.prototype = create(Error.prototype, {\n constructor: createPropertyDescriptor(5, $AggregateError),\n message: createPropertyDescriptor(5, ''),\n name: createPropertyDescriptor(5, 'AggregateError')\n});\n\n// `AggregateError` constructor\n// https://tc39.es/ecma262/#sec-aggregate-error-constructor\n$({ global: true }, {\n AggregateError: $AggregateError\n});\n","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (error) {\n iteratorClose(iterator);\n throw error;\n }\n};\n","var $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\n// `Array.isArray` method\n// https://tc39.es/ecma262/#sec-array.isarray\n$({ target: 'Array', stat: true }, {\n isArray: isArray\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar createProperty = require('../internals/create-property');\n\nvar ISNT_GENERIC = fails(function () {\n function F() { /* empty */ }\n return !(Array.of.call(F) instanceof F);\n});\n\n// `Array.of` method\n// https://tc39.es/ecma262/#sec-array.of\n// WebKit Array.of isn't generic\n$({ target: 'Array', stat: true, forced: ISNT_GENERIC }, {\n of: function of(/* ...args */) {\n var index = 0;\n var argumentsLength = arguments.length;\n var result = new (typeof this == 'function' ? this : Array)(argumentsLength);\n while (argumentsLength > index) createProperty(result, index, arguments[index++]);\n result.length = argumentsLength;\n return result;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","var $ = require('../internals/export');\nvar copyWithin = require('../internals/array-copy-within');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.copyWithin` method\n// https://tc39.es/ecma262/#sec-array.prototype.copywithin\n$({ target: 'Array', proto: true }, {\n copyWithin: copyWithin\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('copyWithin');\n","'use strict';\nvar $ = require('../internals/export');\nvar $every = require('../internals/array-iteration').every;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('every');\n\n// `Array.prototype.every` method\n// https://tc39.es/ecma262/#sec-array.prototype.every\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, {\n every: function every(callbackfn /* , thisArg */) {\n return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var $ = require('../internals/export');\nvar fill = require('../internals/array-fill');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.fill` method\n// https://tc39.es/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, {\n fill: fill\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.es/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","'use strict';\nvar $ = require('../internals/export');\nvar $findIndex = require('../internals/array-iteration').findIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n","'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flat` method\n// https://tc39.es/ecma262/#sec-array.prototype.flat\n$({ target: 'Array', proto: true }, {\n flat: function flat(/* depthArg = 1 */) {\n var depthArg = arguments.length ? arguments[0] : undefined;\n var O = toObject(this);\n var sourceLen = toLength(O.length);\n var A = arraySpeciesCreate(O, 0);\n A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toInteger(depthArg));\n return A;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar aFunction = require('../internals/a-function');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flatMap` method\n// https://tc39.es/ecma262/#sec-array.prototype.flatmap\n$({ target: 'Array', proto: true }, {\n flatMap: function flatMap(callbackfn /* , thisArg */) {\n var O = toObject(this);\n var sourceLen = toLength(O.length);\n var A;\n aFunction(callbackfn);\n A = arraySpeciesCreate(O, 0);\n A.length = flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n return A;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n forEach: forEach\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","'use strict';\nvar $ = require('../internals/export');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? nativeIndexOf.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.es/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n join: function join(separator) {\n return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","var $ = require('../internals/export');\nvar lastIndexOf = require('../internals/array-last-index-of');\n\n// `Array.prototype.lastIndexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.lastindexof\n$({ target: 'Array', proto: true, forced: lastIndexOf !== [].lastIndexOf }, {\n lastIndexOf: lastIndexOf\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar CHROME_VERSION = require('../internals/engine-v8-version');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduce');\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\n\n// `Array.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || CHROME_BUG }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduceRight = require('../internals/array-reduce').right;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar CHROME_VERSION = require('../internals/engine-v8-version');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduceRight');\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\n\n// `Array.prototype.reduceRight` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduceright\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || CHROME_BUG }, {\n reduceRight: function reduceRight(callbackfn /* , initialValue */) {\n return $reduceRight(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\nvar nativeReverse = [].reverse;\nvar test = [1, 2];\n\n// `Array.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-array.prototype.reverse\n// fix for Safari 12.0 bug\n// https://bugs.webkit.org/show_bug.cgi?id=188794\n$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {\n reverse: function reverse() {\n // eslint-disable-next-line no-self-assign -- dirty hack\n if (isArray(this)) this.length = this.length;\n return nativeReverse.call(this);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $some = require('../internals/array-iteration').some;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('some');\n\n// `Array.prototype.some` method\n// https://tc39.es/ecma262/#sec-array.prototype.some\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, {\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar test = [];\nvar nativeSort = test.sort;\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD;\n\n// `Array.prototype.sort` method\n// https://tc39.es/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? nativeSort.call(toObject(this))\n : nativeSort.call(toObject(this), aFunction(comparefn));\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.es/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","var setSpecies = require('../internals/set-species');\n\n// `Array[@@species]` getter\n// https://tc39.es/ecma262/#sec-get-array-@@species\nsetSpecies('Array');\n","// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flat');\n","// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flatMap');\n","var $ = require('../internals/export');\nvar bind = require('../internals/function-bind');\n\n// `Function.prototype.bind` method\n// https://tc39.es/ecma262/#sec-function.prototype.bind\n$({ target: 'Function', proto: true }, {\n bind: bind\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.es/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return FunctionPrototypeToString.call(this).match(nameRE)[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","'use strict';\nvar isObject = require('../internals/is-object');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar HAS_INSTANCE = wellKnownSymbol('hasInstance');\nvar FunctionPrototype = Function.prototype;\n\n// `Function.prototype[@@hasInstance]` method\n// https://tc39.es/ecma262/#sec-function.prototype-@@hasinstance\nif (!(HAS_INSTANCE in FunctionPrototype)) {\n definePropertyModule.f(FunctionPrototype, HAS_INSTANCE, { value: function (O) {\n if (typeof this != 'function' || !isObject(O)) return false;\n if (!isObject(this.prototype)) return O instanceof this;\n // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:\n while (O = getPrototypeOf(O)) if (this.prototype === O) return true;\n return false;\n } });\n}\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\n\n// `globalThis` object\n// https://tc39.es/ecma262/#sec-globalthis\n$({ global: true }, {\n globalThis: global\n});\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n assign: assign\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar create = require('../internals/object-create');\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n create: create\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar objectDefinePropertyModile = require('../internals/object-define-property');\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\n$({ target: 'Object', stat: true, forced: !DESCRIPTORS, sham: !DESCRIPTORS }, {\n defineProperty: objectDefinePropertyModile.f\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineProperties = require('../internals/object-define-properties');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n$({ target: 'Object', stat: true, forced: !DESCRIPTORS, sham: !DESCRIPTORS }, {\n defineProperties: defineProperties\n});\n","var $ = require('../internals/export');\nvar $entries = require('../internals/object-to-array').entries;\n\n// `Object.entries` method\n// https://tc39.es/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n entries: function entries(O) {\n return $entries(O);\n }\n});\n","var $ = require('../internals/export');\nvar FREEZING = require('../internals/freezing');\nvar fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\nvar onFreeze = require('../internals/internal-metadata').onFreeze;\n\nvar nativeFreeze = Object.freeze;\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeFreeze(1); });\n\n// `Object.freeze` method\n// https://tc39.es/ecma262/#sec-object.freeze\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {\n freeze: function freeze(it) {\n return nativeFreeze && isObject(it) ? nativeFreeze(onFreeze(it)) : it;\n }\n});\n","var $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar createProperty = require('../internals/create-property');\n\n// `Object.fromEntries` method\n// https://github.com/tc39/proposal-object-from-entries\n$({ target: 'Object', stat: true }, {\n fromEntries: function fromEntries(iterable) {\n var obj = {};\n iterate(iterable, function (k, v) {\n createProperty(obj, k, v);\n }, { AS_ENTRIES: true });\n return obj;\n }\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n }\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIndexedObject(object);\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n var keys = ownKeys(O);\n var result = {};\n var index = 0;\n var key, descriptor;\n while (keys.length > index) {\n descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n if (descriptor !== undefined) createProperty(result, key, descriptor);\n }\n return result;\n }\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names-external').f;\n\nvar FAILS_ON_PRIMITIVES = fails(function () { return !Object.getOwnPropertyNames(1); });\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n getOwnPropertyNames: nativeGetOwnPropertyNames\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toObject = require('../internals/to-object');\nvar nativeGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {\n getPrototypeOf: function getPrototypeOf(it) {\n return nativeGetPrototypeOf(toObject(it));\n }\n});\n\n","var $ = require('../internals/export');\nvar is = require('../internals/same-value');\n\n// `Object.is` method\n// https://tc39.es/ecma262/#sec-object.is\n$({ target: 'Object', stat: true }, {\n is: is\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\n\nvar nativeIsExtensible = Object.isExtensible;\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeIsExtensible(1); });\n\n// `Object.isExtensible` method\n// https://tc39.es/ecma262/#sec-object.isextensible\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n isExtensible: function isExtensible(it) {\n return isObject(it) ? nativeIsExtensible ? nativeIsExtensible(it) : true : false;\n }\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\n\nvar nativeIsFrozen = Object.isFrozen;\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeIsFrozen(1); });\n\n// `Object.isFrozen` method\n// https://tc39.es/ecma262/#sec-object.isfrozen\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n isFrozen: function isFrozen(it) {\n return isObject(it) ? nativeIsFrozen ? nativeIsFrozen(it) : false : true;\n }\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\n\nvar nativeIsSealed = Object.isSealed;\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeIsSealed(1); });\n\n// `Object.isSealed` method\n// https://tc39.es/ecma262/#sec-object.issealed\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n isSealed: function isSealed(it) {\n return isObject(it) ? nativeIsSealed ? nativeIsSealed(it) : false : true;\n }\n});\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","var $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar onFreeze = require('../internals/internal-metadata').onFreeze;\nvar FREEZING = require('../internals/freezing');\nvar fails = require('../internals/fails');\n\nvar nativePreventExtensions = Object.preventExtensions;\nvar FAILS_ON_PRIMITIVES = fails(function () { nativePreventExtensions(1); });\n\n// `Object.preventExtensions` method\n// https://tc39.es/ecma262/#sec-object.preventextensions\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {\n preventExtensions: function preventExtensions(it) {\n return nativePreventExtensions && isObject(it) ? nativePreventExtensions(onFreeze(it)) : it;\n }\n});\n","var $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar onFreeze = require('../internals/internal-metadata').onFreeze;\nvar FREEZING = require('../internals/freezing');\nvar fails = require('../internals/fails');\n\nvar nativeSeal = Object.seal;\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeSeal(1); });\n\n// `Object.seal` method\n// https://tc39.es/ecma262/#sec-object.seal\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {\n seal: function seal(it) {\n return nativeSeal && isObject(it) ? nativeSeal(onFreeze(it)) : it;\n }\n});\n","var $ = require('../internals/export');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n$({ target: 'Object', stat: true }, {\n setPrototypeOf: setPrototypeOf\n});\n","var $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.es/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n values: function values(O) {\n return $values(O);\n }\n});\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar FORCED = require('../internals/object-prototype-accessors-forced');\nvar toObject = require('../internals/to-object');\nvar aFunction = require('../internals/a-function');\nvar definePropertyModule = require('../internals/object-define-property');\n\n// `Object.prototype.__defineGetter__` method\n// https://tc39.es/ecma262/#sec-object.prototype.__defineGetter__\nif (DESCRIPTORS) {\n $({ target: 'Object', proto: true, forced: FORCED }, {\n __defineGetter__: function __defineGetter__(P, getter) {\n definePropertyModule.f(toObject(this), P, { get: aFunction(getter), enumerable: true, configurable: true });\n }\n });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar FORCED = require('../internals/object-prototype-accessors-forced');\nvar toObject = require('../internals/to-object');\nvar aFunction = require('../internals/a-function');\nvar definePropertyModule = require('../internals/object-define-property');\n\n// `Object.prototype.__defineSetter__` method\n// https://tc39.es/ecma262/#sec-object.prototype.__defineSetter__\nif (DESCRIPTORS) {\n $({ target: 'Object', proto: true, forced: FORCED }, {\n __defineSetter__: function __defineSetter__(P, setter) {\n definePropertyModule.f(toObject(this), P, { set: aFunction(setter), enumerable: true, configurable: true });\n }\n });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar FORCED = require('../internals/object-prototype-accessors-forced');\nvar toObject = require('../internals/to-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\n\n// `Object.prototype.__lookupGetter__` method\n// https://tc39.es/ecma262/#sec-object.prototype.__lookupGetter__\nif (DESCRIPTORS) {\n $({ target: 'Object', proto: true, forced: FORCED }, {\n __lookupGetter__: function __lookupGetter__(P) {\n var O = toObject(this);\n var key = toPrimitive(P, true);\n var desc;\n do {\n if (desc = getOwnPropertyDescriptor(O, key)) return desc.get;\n } while (O = getPrototypeOf(O));\n }\n });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar FORCED = require('../internals/object-prototype-accessors-forced');\nvar toObject = require('../internals/to-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\n\n// `Object.prototype.__lookupSetter__` method\n// https://tc39.es/ecma262/#sec-object.prototype.__lookupSetter__\nif (DESCRIPTORS) {\n $({ target: 'Object', proto: true, forced: FORCED }, {\n __lookupSetter__: function __lookupSetter__(P) {\n var O = toObject(this);\n var key = toPrimitive(P, true);\n var desc;\n do {\n if (desc = getOwnPropertyDescriptor(O, key)) return desc.set;\n } while (O = getPrototypeOf(O));\n }\n });\n}\n","var $ = require('../internals/export');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\nvar fromCharCode = String.fromCharCode;\nvar nativeFromCodePoint = String.fromCodePoint;\n\n// length should be 1, old FF problem\nvar INCORRECT_LENGTH = !!nativeFromCodePoint && nativeFromCodePoint.length != 1;\n\n// `String.fromCodePoint` method\n// https://tc39.es/ecma262/#sec-string.fromcodepoint\n$({ target: 'String', stat: true, forced: INCORRECT_LENGTH }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n fromCodePoint: function fromCodePoint(x) {\n var elements = [];\n var length = arguments.length;\n var i = 0;\n var code;\n while (length > i) {\n code = +arguments[i++];\n if (toAbsoluteIndex(code, 0x10FFFF) !== code) throw RangeError(code + ' is not a valid code point');\n elements.push(code < 0x10000\n ? fromCharCode(code)\n : fromCharCode(((code -= 0x10000) >> 10) + 0xD800, code % 0x400 + 0xDC00)\n );\n } return elements.join('');\n }\n});\n","var $ = require('../internals/export');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\n\n// `String.raw` method\n// https://tc39.es/ecma262/#sec-string.raw\n$({ target: 'String', stat: true }, {\n raw: function raw(template) {\n var rawTemplate = toIndexedObject(template.raw);\n var literalSegments = toLength(rawTemplate.length);\n var argumentsLength = arguments.length;\n var elements = [];\n var i = 0;\n while (literalSegments > i) {\n elements.push(String(rawTemplate[i++]));\n if (i < argumentsLength) elements.push(String(arguments[i]));\n } return elements.join('');\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar codeAt = require('../internals/string-multibyte').codeAt;\n\n// `String.prototype.codePointAt` method\n// https://tc39.es/ecma262/#sec-string.prototype.codepointat\n$({ target: 'String', proto: true }, {\n codePointAt: function codePointAt(pos) {\n return codeAt(this, pos);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\nvar nativeEndsWith = ''.endsWith;\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.endsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.endswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = String(requireObjectCoercible(this));\n notARegExp(searchString);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : min(toLength(endPosition), len);\n var search = String(searchString);\n return nativeEndsWith\n ? nativeEndsWith.call(that, search, end)\n : that.slice(end - search.length, end) === search;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~String(requireObjectCoercible(this))\n .indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.es/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = regexp == undefined ? undefined : regexp[MATCH];\n return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative(nativeMatch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toLength = require('../internals/to-length');\nvar aFunction = require('../internals/a-function');\nvar anObject = require('../internals/an-object');\nvar classof = require('../internals/classof-raw');\nvar isRegExp = require('../internals/is-regexp');\nvar getRegExpFlags = require('../internals/regexp-flags');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar InternalStateModule = require('../internals/internal-state');\nvar IS_PURE = require('../internals/is-pure');\n\nvar MATCH_ALL = wellKnownSymbol('matchAll');\nvar REGEXP_STRING = 'RegExp String';\nvar REGEXP_STRING_ITERATOR = REGEXP_STRING + ' Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(REGEXP_STRING_ITERATOR);\nvar RegExpPrototype = RegExp.prototype;\nvar regExpBuiltinExec = RegExpPrototype.exec;\nvar nativeMatchAll = ''.matchAll;\n\nvar WORKS_WITH_NON_GLOBAL_REGEX = !!nativeMatchAll && !fails(function () {\n 'a'.matchAll(/./);\n});\n\nvar regExpExec = function (R, S) {\n var exec = R.exec;\n var result;\n if (typeof exec == 'function') {\n result = exec.call(R, S);\n if (typeof result != 'object') throw TypeError('Incorrect exec result');\n return result;\n } return regExpBuiltinExec.call(R, S);\n};\n\n// eslint-disable-next-line max-len -- ignore\nvar $RegExpStringIterator = createIteratorConstructor(function RegExpStringIterator(regexp, string, global, fullUnicode) {\n setInternalState(this, {\n type: REGEXP_STRING_ITERATOR,\n regexp: regexp,\n string: string,\n global: global,\n unicode: fullUnicode,\n done: false\n });\n}, REGEXP_STRING, function next() {\n var state = getInternalState(this);\n if (state.done) return { value: undefined, done: true };\n var R = state.regexp;\n var S = state.string;\n var match = regExpExec(R, S);\n if (match === null) return { value: undefined, done: state.done = true };\n if (state.global) {\n if (String(match[0]) == '') R.lastIndex = advanceStringIndex(S, toLength(R.lastIndex), state.unicode);\n return { value: match, done: false };\n }\n state.done = true;\n return { value: match, done: false };\n});\n\nvar $matchAll = function (string) {\n var R = anObject(this);\n var S = String(string);\n var C, flagsValue, flags, matcher, global, fullUnicode;\n C = speciesConstructor(R, RegExp);\n flagsValue = R.flags;\n if (flagsValue === undefined && R instanceof RegExp && !('flags' in RegExpPrototype)) {\n flagsValue = getRegExpFlags.call(R);\n }\n flags = flagsValue === undefined ? '' : String(flagsValue);\n matcher = new C(C === RegExp ? R.source : R, flags);\n global = !!~flags.indexOf('g');\n fullUnicode = !!~flags.indexOf('u');\n matcher.lastIndex = toLength(R.lastIndex);\n return new $RegExpStringIterator(matcher, S, global, fullUnicode);\n};\n\n// `String.prototype.matchAll` method\n// https://tc39.es/ecma262/#sec-string.prototype.matchall\n$({ target: 'String', proto: true, forced: WORKS_WITH_NON_GLOBAL_REGEX }, {\n matchAll: function matchAll(regexp) {\n var O = requireObjectCoercible(this);\n var flags, S, matcher, rx;\n if (regexp != null) {\n if (isRegExp(regexp)) {\n flags = String(requireObjectCoercible('flags' in RegExpPrototype\n ? regexp.flags\n : getRegExpFlags.call(regexp)\n ));\n if (!~flags.indexOf('g')) throw TypeError('`.matchAll` does not allow non-global regexes');\n }\n if (WORKS_WITH_NON_GLOBAL_REGEX) return nativeMatchAll.apply(O, arguments);\n matcher = regexp[MATCH_ALL];\n if (matcher === undefined && IS_PURE && classof(regexp) == 'RegExp') matcher = $matchAll;\n if (matcher != null) return aFunction(matcher).call(regexp, O);\n } else if (WORKS_WITH_NON_GLOBAL_REGEX) return nativeMatchAll.apply(O, arguments);\n S = String(O);\n rx = new RegExp(regexp, 'g');\n return IS_PURE ? $matchAll.call(rx, S) : rx[MATCH_ALL](S);\n }\n});\n\nIS_PURE || MATCH_ALL in RegExpPrototype || createNonEnumerableProperty(RegExpPrototype, MATCH_ALL, $matchAll);\n","'use strict';\nvar $ = require('../internals/export');\nvar $padEnd = require('../internals/string-pad').end;\nvar WEBKIT_BUG = require('../internals/string-pad-webkit-bug');\n\n// `String.prototype.padEnd` method\n// https://tc39.es/ecma262/#sec-string.prototype.padend\n$({ target: 'String', proto: true, forced: WEBKIT_BUG }, {\n padEnd: function padEnd(maxLength /* , fillString = ' ' */) {\n return $padEnd(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $padStart = require('../internals/string-pad').start;\nvar WEBKIT_BUG = require('../internals/string-pad-webkit-bug');\n\n// `String.prototype.padStart` method\n// https://tc39.es/ecma262/#sec-string.prototype.padstart\n$({ target: 'String', proto: true, forced: WEBKIT_BUG }, {\n padStart: function padStart(maxLength /* , fillString = ' ' */) {\n return $padStart(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var $ = require('../internals/export');\nvar repeat = require('../internals/string-repeat');\n\n// `String.prototype.repeat` method\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\n$({ target: 'String', proto: true }, {\n repeat: repeat\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar max = Math.max;\nvar min = Math.min;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {\n var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;\n var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.es/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n if (\n (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||\n (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)\n ) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n }\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', 1, function (SEARCH, nativeSearch, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.es/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = requireObjectCoercible(this);\n var searcher = regexp == undefined ? undefined : regexp[SEARCH];\n return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@search\n function (regexp) {\n var res = maybeCallNative(nativeSearch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\n\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n // eslint-disable-next-line regexp/no-assertion-capturing-group, regexp/no-empty-group -- required for testing\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output.length > lim ? output.slice(0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.es/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n}, !SUPPORTS_Y);\n","'use strict';\nvar $ = require('../internals/export');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\nvar nativeStartsWith = ''.startsWith;\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = String(requireObjectCoercible(this));\n notARegExp(searchString);\n var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return nativeStartsWith\n ? nativeStartsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $trimStart = require('../internals/string-trim').start;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\nvar FORCED = forcedStringTrimMethod('trimStart');\n\nvar trimStart = FORCED ? function trimStart() {\n return $trimStart(this);\n} : ''.trimStart;\n\n// `String.prototype.{ trimStart, trimLeft }` methods\n// https://tc39.es/ecma262/#sec-string.prototype.trimstart\n// https://tc39.es/ecma262/#String.prototype.trimleft\n$({ target: 'String', proto: true, forced: FORCED }, {\n trimStart: trimStart,\n trimLeft: trimStart\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $trimEnd = require('../internals/string-trim').end;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\nvar FORCED = forcedStringTrimMethod('trimEnd');\n\nvar trimEnd = FORCED ? function trimEnd() {\n return $trimEnd(this);\n} : ''.trimEnd;\n\n// `String.prototype.{ trimEnd, trimRight }` methods\n// https://tc39.es/ecma262/#sec-string.prototype.trimend\n// https://tc39.es/ecma262/#String.prototype.trimright\n$({ target: 'String', proto: true, forced: FORCED }, {\n trimEnd: trimEnd,\n trimRight: trimEnd\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.anchor` method\n// https://tc39.es/ecma262/#sec-string.prototype.anchor\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('anchor') }, {\n anchor: function anchor(name) {\n return createHTML(this, 'a', 'name', name);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.big` method\n// https://tc39.es/ecma262/#sec-string.prototype.big\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('big') }, {\n big: function big() {\n return createHTML(this, 'big', '', '');\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.blink` method\n// https://tc39.es/ecma262/#sec-string.prototype.blink\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('blink') }, {\n blink: function blink() {\n return createHTML(this, 'blink', '', '');\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.bold` method\n// https://tc39.es/ecma262/#sec-string.prototype.bold\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('bold') }, {\n bold: function bold() {\n return createHTML(this, 'b', '', '');\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.fixed` method\n// https://tc39.es/ecma262/#sec-string.prototype.fixed\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fixed') }, {\n fixed: function fixed() {\n return createHTML(this, 'tt', '', '');\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.fontcolor` method\n// https://tc39.es/ecma262/#sec-string.prototype.fontcolor\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fontcolor') }, {\n fontcolor: function fontcolor(color) {\n return createHTML(this, 'font', 'color', color);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.fontsize` method\n// https://tc39.es/ecma262/#sec-string.prototype.fontsize\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fontsize') }, {\n fontsize: function fontsize(size) {\n return createHTML(this, 'font', 'size', size);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.italics` method\n// https://tc39.es/ecma262/#sec-string.prototype.italics\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('italics') }, {\n italics: function italics() {\n return createHTML(this, 'i', '', '');\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.link` method\n// https://tc39.es/ecma262/#sec-string.prototype.link\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('link') }, {\n link: function link(url) {\n return createHTML(this, 'a', 'href', url);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.small` method\n// https://tc39.es/ecma262/#sec-string.prototype.small\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('small') }, {\n small: function small() {\n return createHTML(this, 'small', '', '');\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.strike` method\n// https://tc39.es/ecma262/#sec-string.prototype.strike\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('strike') }, {\n strike: function strike() {\n return createHTML(this, 'strike', '', '');\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.sub` method\n// https://tc39.es/ecma262/#sec-string.prototype.sub\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('sub') }, {\n sub: function sub() {\n return createHTML(this, 'sub', '', '');\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.sup` method\n// https://tc39.es/ecma262/#sec-string.prototype.sup\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('sup') }, {\n sup: function sup() {\n return createHTML(this, 'sup', '', '');\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar isRegExp = require('../internals/is-regexp');\nvar getRegExpFlags = require('../internals/regexp-flags');\nvar getSubstitution = require('../internals/get-substitution');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar RegExpPrototype = RegExp.prototype;\nvar max = Math.max;\n\nvar stringIndexOf = function (string, searchValue, fromIndex) {\n if (fromIndex > string.length) return -1;\n if (searchValue === '') return fromIndex;\n return string.indexOf(searchValue, fromIndex);\n};\n\n// `String.prototype.replaceAll` method\n// https://tc39.es/ecma262/#sec-string.prototype.replaceall\n$({ target: 'String', proto: true }, {\n replaceAll: function replaceAll(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var IS_REG_EXP, flags, replacer, string, searchString, functionalReplace, searchLength, advanceBy, replacement;\n var position = 0;\n var endOfLastMatch = 0;\n var result = '';\n if (searchValue != null) {\n IS_REG_EXP = isRegExp(searchValue);\n if (IS_REG_EXP) {\n flags = String(requireObjectCoercible('flags' in RegExpPrototype\n ? searchValue.flags\n : getRegExpFlags.call(searchValue)\n ));\n if (!~flags.indexOf('g')) throw TypeError('`.replaceAll` does not allow non-global regexes');\n }\n replacer = searchValue[REPLACE];\n if (replacer !== undefined) {\n return replacer.call(searchValue, O, replaceValue);\n } else if (IS_PURE && IS_REG_EXP) {\n return String(O).replace(searchValue, replaceValue);\n }\n }\n string = String(O);\n searchString = String(searchValue);\n functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n searchLength = searchString.length;\n advanceBy = max(1, searchLength);\n position = stringIndexOf(string, searchString, 0);\n while (position !== -1) {\n if (functionalReplace) {\n replacement = String(replaceValue(searchString, position, string));\n } else {\n replacement = getSubstitution(searchString, string, position, [], undefined, replaceValue);\n }\n result += string.slice(endOfLastMatch, position) + replacement;\n endOfLastMatch = position + searchLength;\n position = stringIndexOf(string, searchString, position + advanceBy);\n }\n if (endOfLastMatch < string.length) {\n result += string.slice(endOfLastMatch);\n }\n return result;\n }\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar isRegExp = require('../internals/is-regexp');\nvar getFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar setInternalState = require('../internals/internal-state').set;\nvar setSpecies = require('../internals/set-species');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = global.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\n\nvar FORCED = DESCRIPTORS && isForced('RegExp', (!CORRECT_NEW || UNSUPPORTED_Y || fails(function () {\n re2[MATCH] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\n})));\n\n// `RegExp` constructor\n// https://tc39.es/ecma262/#sec-regexp-constructor\nif (FORCED) {\n var RegExpWrapper = function RegExp(pattern, flags) {\n var thisIsRegExp = this instanceof RegExpWrapper;\n var patternIsRegExp = isRegExp(pattern);\n var flagsAreUndefined = flags === undefined;\n var sticky;\n\n if (!thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper && flagsAreUndefined) {\n return pattern;\n }\n\n if (CORRECT_NEW) {\n if (patternIsRegExp && !flagsAreUndefined) pattern = pattern.source;\n } else if (pattern instanceof RegExpWrapper) {\n if (flagsAreUndefined) flags = getFlags.call(pattern);\n pattern = pattern.source;\n }\n\n if (UNSUPPORTED_Y) {\n sticky = !!flags && flags.indexOf('y') > -1;\n if (sticky) flags = flags.replace(/y/g, '');\n }\n\n var result = inheritIfRequired(\n CORRECT_NEW ? new NativeRegExp(pattern, flags) : NativeRegExp(pattern, flags),\n thisIsRegExp ? this : RegExpPrototype,\n RegExpWrapper\n );\n\n if (UNSUPPORTED_Y && sticky) setInternalState(result, { sticky: sticky });\n\n return result;\n };\n var proxy = function (key) {\n key in RegExpWrapper || defineProperty(RegExpWrapper, key, {\n configurable: true,\n get: function () { return NativeRegExp[key]; },\n set: function (it) { NativeRegExp[key] = it; }\n });\n };\n var keys = getOwnPropertyNames(NativeRegExp);\n var index = 0;\n while (keys.length > index) proxy(keys[index++]);\n RegExpPrototype.constructor = RegExpWrapper;\n RegExpWrapper.prototype = RegExpPrototype;\n redefine(global, 'RegExp', RegExpWrapper);\n}\n\n// https://tc39.es/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar objectDefinePropertyModule = require('../internals/object-define-property');\nvar regExpFlags = require('../internals/regexp-flags');\nvar UNSUPPORTED_Y = require('../internals/regexp-sticky-helpers').UNSUPPORTED_Y;\n\n// `RegExp.prototype.flags` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nif (DESCRIPTORS && (/./g.flags != 'g' || UNSUPPORTED_Y)) {\n objectDefinePropertyModule.f(RegExp.prototype, 'flags', {\n configurable: true,\n get: regExpFlags\n });\n}\n","var DESCRIPTORS = require('../internals/descriptors');\nvar UNSUPPORTED_Y = require('../internals/regexp-sticky-helpers').UNSUPPORTED_Y;\nvar defineProperty = require('../internals/object-define-property').f;\nvar getInternalState = require('../internals/internal-state').get;\nvar RegExpPrototype = RegExp.prototype;\n\n// `RegExp.prototype.sticky` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.sticky\nif (DESCRIPTORS && UNSUPPORTED_Y) {\n defineProperty(RegExp.prototype, 'sticky', {\n configurable: true,\n get: function () {\n if (this === RegExpPrototype) return undefined;\n // We can't use InternalStateModule.getterFor because\n // we don't add metadata for regexps created by a literal.\n if (this instanceof RegExp) {\n return !!getInternalState(this).sticky;\n }\n throw TypeError('Incompatible receiver, RegExp required');\n }\n });\n}\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\n\nvar DELEGATES_TO_EXEC = function () {\n var execCalled = false;\n var re = /[ac]/;\n re.exec = function () {\n execCalled = true;\n return /./.exec.apply(this, arguments);\n };\n return re.test('abc') === true && execCalled;\n}();\n\nvar nativeTest = /./.test;\n\n// `RegExp.prototype.test` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.test\n$({ target: 'RegExp', proto: true, forced: !DELEGATES_TO_EXEC }, {\n test: function (str) {\n if (typeof this.exec !== 'function') {\n return nativeTest.call(this, str);\n }\n var result = this.exec(str);\n if (result !== null && !isObject(result)) {\n throw new Error('RegExp exec method returned something other than an Object or null');\n }\n return !!result;\n }\n});\n","'use strict';\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\nvar flags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = String(R.source);\n var rf = R.flags;\n var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n","var $ = require('../internals/export');\nvar parseIntImplementation = require('../internals/number-parse-int');\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt != parseIntImplementation }, {\n parseInt: parseIntImplementation\n});\n","var $ = require('../internals/export');\nvar parseFloatImplementation = require('../internals/number-parse-float');\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\n$({ global: true, forced: parseFloat != parseFloatImplementation }, {\n parseFloat: parseFloatImplementation\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof-raw');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar create = require('../internals/object-create');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\n\n// Opera ~12 has broken Object#toString\nvar BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER;\n\n// `ToNumber` abstract operation\n// https://tc39.es/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n var first, third, radix, maxCode, digits, length, index, code;\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = it.charCodeAt(0);\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = it.slice(2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = digits.charCodeAt(index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.es/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var dummy = this;\n return dummy instanceof NumberWrapper\n // check on 1..constructor(foo) case\n && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER)\n ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger,' +\n // ESNext\n 'fromString,range'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n redefine(global, NUMBER, NumberWrapper);\n}\n","var $ = require('../internals/export');\n\n// `Number.EPSILON` constant\n// https://tc39.es/ecma262/#sec-number.epsilon\n$({ target: 'Number', stat: true }, {\n EPSILON: Math.pow(2, -52)\n});\n","var $ = require('../internals/export');\nvar numberIsFinite = require('../internals/number-is-finite');\n\n// `Number.isFinite` method\n// https://tc39.es/ecma262/#sec-number.isfinite\n$({ target: 'Number', stat: true }, { isFinite: numberIsFinite });\n","var global = require('../internals/global');\n\nvar globalIsFinite = global.isFinite;\n\n// `Number.isFinite` method\n// https://tc39.es/ecma262/#sec-number.isfinite\nmodule.exports = Number.isFinite || function isFinite(it) {\n return typeof it == 'number' && globalIsFinite(it);\n};\n","var $ = require('../internals/export');\nvar isInteger = require('../internals/is-integer');\n\n// `Number.isInteger` method\n// https://tc39.es/ecma262/#sec-number.isinteger\n$({ target: 'Number', stat: true }, {\n isInteger: isInteger\n});\n","var $ = require('../internals/export');\n\n// `Number.isNaN` method\n// https://tc39.es/ecma262/#sec-number.isnan\n$({ target: 'Number', stat: true }, {\n isNaN: function isNaN(number) {\n // eslint-disable-next-line no-self-compare -- NaN check\n return number != number;\n }\n});\n","var $ = require('../internals/export');\nvar isInteger = require('../internals/is-integer');\n\nvar abs = Math.abs;\n\n// `Number.isSafeInteger` method\n// https://tc39.es/ecma262/#sec-number.issafeinteger\n$({ target: 'Number', stat: true }, {\n isSafeInteger: function isSafeInteger(number) {\n return isInteger(number) && abs(number) <= 0x1FFFFFFFFFFFFF;\n }\n});\n","var $ = require('../internals/export');\n\n// `Number.MAX_SAFE_INTEGER` constant\n// https://tc39.es/ecma262/#sec-number.max_safe_integer\n$({ target: 'Number', stat: true }, {\n MAX_SAFE_INTEGER: 0x1FFFFFFFFFFFFF\n});\n","var $ = require('../internals/export');\n\n// `Number.MIN_SAFE_INTEGER` constant\n// https://tc39.es/ecma262/#sec-number.min_safe_integer\n$({ target: 'Number', stat: true }, {\n MIN_SAFE_INTEGER: -0x1FFFFFFFFFFFFF\n});\n","var $ = require('../internals/export');\nvar parseFloat = require('../internals/number-parse-float');\n\n// `Number.parseFloat` method\n// https://tc39.es/ecma262/#sec-number.parseFloat\n$({ target: 'Number', stat: true, forced: Number.parseFloat != parseFloat }, {\n parseFloat: parseFloat\n});\n","var $ = require('../internals/export');\nvar parseInt = require('../internals/number-parse-int');\n\n// `Number.parseInt` method\n// https://tc39.es/ecma262/#sec-number.parseint\n$({ target: 'Number', stat: true, forced: Number.parseInt != parseInt }, {\n parseInt: parseInt\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar toInteger = require('../internals/to-integer');\nvar thisNumberValue = require('../internals/this-number-value');\nvar repeat = require('../internals/string-repeat');\nvar fails = require('../internals/fails');\n\nvar nativeToFixed = 1.0.toFixed;\nvar floor = Math.floor;\n\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\nvar multiply = function (data, n, c) {\n var index = -1;\n var c2 = c;\n while (++index < 6) {\n c2 += n * data[index];\n data[index] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n};\n\nvar divide = function (data, n) {\n var index = 6;\n var c = 0;\n while (--index >= 0) {\n c += data[index];\n data[index] = floor(c / n);\n c = (c % n) * 1e7;\n }\n};\n\nvar dataToString = function (data) {\n var index = 6;\n var s = '';\n while (--index >= 0) {\n if (s !== '' || index === 0 || data[index] !== 0) {\n var t = String(data[index]);\n s = s === '' ? t : s + repeat.call('0', 7 - t.length) + t;\n }\n } return s;\n};\n\nvar FORCED = nativeToFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !fails(function () {\n // V8 ~ Android 4.3-\n nativeToFixed.call({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.es/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n toFixed: function toFixed(fractionDigits) {\n var number = thisNumberValue(this);\n var fractDigits = toInteger(fractionDigits);\n var data = [0, 0, 0, 0, 0, 0];\n var sign = '';\n var result = '0';\n var e, z, j, k;\n\n if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits');\n // eslint-disable-next-line no-self-compare -- NaN check\n if (number != number) return 'NaN';\n if (number <= -1e21 || number >= 1e21) return String(number);\n if (number < 0) {\n sign = '-';\n number = -number;\n }\n if (number > 1e-21) {\n e = log(number * pow(2, 69, 1)) - 69;\n z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(data, 0, z);\n j = fractDigits;\n while (j >= 7) {\n multiply(data, 1e7, 0);\n j -= 7;\n }\n multiply(data, pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(data, 1 << 23);\n j -= 23;\n }\n divide(data, 1 << j);\n multiply(data, 1, 1);\n divide(data, 2);\n result = dataToString(data);\n } else {\n multiply(data, 0, z);\n multiply(data, 1 << -e, 0);\n result = dataToString(data) + repeat.call('0', fractDigits);\n }\n }\n if (fractDigits > 0) {\n k = result.length;\n result = sign + (k <= fractDigits\n ? '0.' + repeat.call('0', fractDigits - k) + result\n : result.slice(0, k - fractDigits) + '.' + result.slice(k - fractDigits));\n } else {\n result = sign + result;\n } return result;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar thisNumberValue = require('../internals/this-number-value');\n\nvar nativeToPrecision = 1.0.toPrecision;\n\nvar FORCED = fails(function () {\n // IE7-\n return nativeToPrecision.call(1, undefined) !== '1';\n}) || !fails(function () {\n // V8 ~ Android 4.3-\n nativeToPrecision.call({});\n});\n\n// `Number.prototype.toPrecision` method\n// https://tc39.es/ecma262/#sec-number.prototype.toprecision\n$({ target: 'Number', proto: true, forced: FORCED }, {\n toPrecision: function toPrecision(precision) {\n return precision === undefined\n ? nativeToPrecision.call(thisNumberValue(this))\n : nativeToPrecision.call(thisNumberValue(this), precision);\n }\n});\n","var $ = require('../internals/export');\nvar log1p = require('../internals/math-log1p');\n\nvar nativeAcosh = Math.acosh;\nvar log = Math.log;\nvar sqrt = Math.sqrt;\nvar LN2 = Math.LN2;\n\nvar FORCED = !nativeAcosh\n // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509\n || Math.floor(nativeAcosh(Number.MAX_VALUE)) != 710\n // Tor Browser bug: Math.acosh(Infinity) -> NaN\n || nativeAcosh(Infinity) != Infinity;\n\n// `Math.acosh` method\n// https://tc39.es/ecma262/#sec-math.acosh\n$({ target: 'Math', stat: true, forced: FORCED }, {\n acosh: function acosh(x) {\n return (x = +x) < 1 ? NaN : x > 94906265.62425156\n ? log(x) + LN2\n : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));\n }\n});\n","var $ = require('../internals/export');\n\nvar nativeAsinh = Math.asinh;\nvar log = Math.log;\nvar sqrt = Math.sqrt;\n\nfunction asinh(x) {\n return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : log(x + sqrt(x * x + 1));\n}\n\n// `Math.asinh` method\n// https://tc39.es/ecma262/#sec-math.asinh\n// Tor Browser bug: Math.asinh(0) -> -0\n$({ target: 'Math', stat: true, forced: !(nativeAsinh && 1 / nativeAsinh(0) > 0) }, {\n asinh: asinh\n});\n","var $ = require('../internals/export');\n\nvar nativeAtanh = Math.atanh;\nvar log = Math.log;\n\n// `Math.atanh` method\n// https://tc39.es/ecma262/#sec-math.atanh\n// Tor Browser bug: Math.atanh(-0) -> 0\n$({ target: 'Math', stat: true, forced: !(nativeAtanh && 1 / nativeAtanh(-0) < 0) }, {\n atanh: function atanh(x) {\n return (x = +x) == 0 ? x : log((1 + x) / (1 - x)) / 2;\n }\n});\n","var $ = require('../internals/export');\nvar sign = require('../internals/math-sign');\n\nvar abs = Math.abs;\nvar pow = Math.pow;\n\n// `Math.cbrt` method\n// https://tc39.es/ecma262/#sec-math.cbrt\n$({ target: 'Math', stat: true }, {\n cbrt: function cbrt(x) {\n return sign(x = +x) * pow(abs(x), 1 / 3);\n }\n});\n","var $ = require('../internals/export');\n\nvar floor = Math.floor;\nvar log = Math.log;\nvar LOG2E = Math.LOG2E;\n\n// `Math.clz32` method\n// https://tc39.es/ecma262/#sec-math.clz32\n$({ target: 'Math', stat: true }, {\n clz32: function clz32(x) {\n return (x >>>= 0) ? 31 - floor(log(x + 0.5) * LOG2E) : 32;\n }\n});\n","var $ = require('../internals/export');\nvar expm1 = require('../internals/math-expm1');\n\nvar nativeCosh = Math.cosh;\nvar abs = Math.abs;\nvar E = Math.E;\n\n// `Math.cosh` method\n// https://tc39.es/ecma262/#sec-math.cosh\n$({ target: 'Math', stat: true, forced: !nativeCosh || nativeCosh(710) === Infinity }, {\n cosh: function cosh(x) {\n var t = expm1(abs(x) - 1) + 1;\n return (t + 1 / (t * E * E)) * (E / 2);\n }\n});\n","var $ = require('../internals/export');\nvar expm1 = require('../internals/math-expm1');\n\n// `Math.expm1` method\n// https://tc39.es/ecma262/#sec-math.expm1\n$({ target: 'Math', stat: true, forced: expm1 != Math.expm1 }, { expm1: expm1 });\n","var $ = require('../internals/export');\nvar fround = require('../internals/math-fround');\n\n// `Math.fround` method\n// https://tc39.es/ecma262/#sec-math.fround\n$({ target: 'Math', stat: true }, { fround: fround });\n","var sign = require('../internals/math-sign');\n\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar EPSILON = pow(2, -52);\nvar EPSILON32 = pow(2, -23);\nvar MAX32 = pow(2, 127) * (2 - EPSILON32);\nvar MIN32 = pow(2, -126);\n\nvar roundTiesToEven = function (n) {\n return n + 1 / EPSILON - 1 / EPSILON;\n};\n\n// `Math.fround` method implementation\n// https://tc39.es/ecma262/#sec-math.fround\nmodule.exports = Math.fround || function fround(x) {\n var $abs = abs(x);\n var $sign = sign(x);\n var a, result;\n if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;\n a = (1 + EPSILON32 / EPSILON) * $abs;\n result = a - (a - $abs);\n // eslint-disable-next-line no-self-compare -- NaN check\n if (result > MAX32 || result != result) return $sign * Infinity;\n return $sign * result;\n};\n","var $ = require('../internals/export');\n\nvar $hypot = Math.hypot;\nvar abs = Math.abs;\nvar sqrt = Math.sqrt;\n\n// Chrome 77 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=9546\nvar BUGGY = !!$hypot && $hypot(Infinity, NaN) !== Infinity;\n\n// `Math.hypot` method\n// https://tc39.es/ecma262/#sec-math.hypot\n$({ target: 'Math', stat: true, forced: BUGGY }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n hypot: function hypot(value1, value2) {\n var sum = 0;\n var i = 0;\n var aLen = arguments.length;\n var larg = 0;\n var arg, div;\n while (i < aLen) {\n arg = abs(arguments[i++]);\n if (larg < arg) {\n div = larg / arg;\n sum = sum * div * div + 1;\n larg = arg;\n } else if (arg > 0) {\n div = arg / larg;\n sum += div * div;\n } else sum += arg;\n }\n return larg === Infinity ? Infinity : larg * sqrt(sum);\n }\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\n\nvar nativeImul = Math.imul;\n\nvar FORCED = fails(function () {\n return nativeImul(0xFFFFFFFF, 5) != -5 || nativeImul.length != 2;\n});\n\n// `Math.imul` method\n// https://tc39.es/ecma262/#sec-math.imul\n// some WebKit versions fails with big numbers, some has wrong arity\n$({ target: 'Math', stat: true, forced: FORCED }, {\n imul: function imul(x, y) {\n var UINT16 = 0xFFFF;\n var xn = +x;\n var yn = +y;\n var xl = UINT16 & xn;\n var yl = UINT16 & yn;\n return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);\n }\n});\n","var $ = require('../internals/export');\n\nvar log = Math.log;\nvar LOG10E = Math.LOG10E;\n\n// `Math.log10` method\n// https://tc39.es/ecma262/#sec-math.log10\n$({ target: 'Math', stat: true }, {\n log10: function log10(x) {\n return log(x) * LOG10E;\n }\n});\n","var $ = require('../internals/export');\nvar log1p = require('../internals/math-log1p');\n\n// `Math.log1p` method\n// https://tc39.es/ecma262/#sec-math.log1p\n$({ target: 'Math', stat: true }, { log1p: log1p });\n","var $ = require('../internals/export');\n\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\n// `Math.log2` method\n// https://tc39.es/ecma262/#sec-math.log2\n$({ target: 'Math', stat: true }, {\n log2: function log2(x) {\n return log(x) / LN2;\n }\n});\n","var $ = require('../internals/export');\nvar sign = require('../internals/math-sign');\n\n// `Math.sign` method\n// https://tc39.es/ecma262/#sec-math.sign\n$({ target: 'Math', stat: true }, {\n sign: sign\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar expm1 = require('../internals/math-expm1');\n\nvar abs = Math.abs;\nvar exp = Math.exp;\nvar E = Math.E;\n\nvar FORCED = fails(function () {\n return Math.sinh(-2e-17) != -2e-17;\n});\n\n// `Math.sinh` method\n// https://tc39.es/ecma262/#sec-math.sinh\n// V8 near Chromium 38 has a problem with very small numbers\n$({ target: 'Math', stat: true, forced: FORCED }, {\n sinh: function sinh(x) {\n return abs(x = +x) < 1 ? (expm1(x) - expm1(-x)) / 2 : (exp(x - 1) - exp(-x - 1)) * (E / 2);\n }\n});\n","var $ = require('../internals/export');\nvar expm1 = require('../internals/math-expm1');\n\nvar exp = Math.exp;\n\n// `Math.tanh` method\n// https://tc39.es/ecma262/#sec-math.tanh\n$({ target: 'Math', stat: true }, {\n tanh: function tanh(x) {\n var a = expm1(x = +x);\n var b = expm1(-x);\n return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));\n }\n});\n","var setToStringTag = require('../internals/set-to-string-tag');\n\n// Math[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-math-@@tostringtag\nsetToStringTag(Math, 'Math', true);\n","var $ = require('../internals/export');\n\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n$({ target: 'Math', stat: true }, {\n trunc: function trunc(it) {\n return (it > 0 ? floor : ceil)(it);\n }\n});\n","var $ = require('../internals/export');\n\n// `Date.now` method\n// https://tc39.es/ecma262/#sec-date.now\n$({ target: 'Date', stat: true }, {\n now: function now() {\n return new Date().getTime();\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toObject = require('../internals/to-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar FORCED = fails(function () {\n return new Date(NaN).toJSON() !== null\n || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1;\n});\n\n// `Date.prototype.toJSON` method\n// https://tc39.es/ecma262/#sec-date.prototype.tojson\n$({ target: 'Date', proto: true, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n toJSON: function toJSON(key) {\n var O = toObject(this);\n var pv = toPrimitive(O);\n return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();\n }\n});\n","var $ = require('../internals/export');\nvar toISOString = require('../internals/date-to-iso-string');\n\n// `Date.prototype.toISOString` method\n// https://tc39.es/ecma262/#sec-date.prototype.toisostring\n// PhantomJS / old WebKit has a broken implementations\n$({ target: 'Date', proto: true, forced: Date.prototype.toISOString !== toISOString }, {\n toISOString: toISOString\n});\n","'use strict';\nvar fails = require('../internals/fails');\nvar padStart = require('../internals/string-pad').start;\n\nvar abs = Math.abs;\nvar DatePrototype = Date.prototype;\nvar getTime = DatePrototype.getTime;\nvar nativeDateToISOString = DatePrototype.toISOString;\n\n// `Date.prototype.toISOString` method implementation\n// https://tc39.es/ecma262/#sec-date.prototype.toisostring\n// PhantomJS / old WebKit fails here:\nmodule.exports = (fails(function () {\n return nativeDateToISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';\n}) || !fails(function () {\n nativeDateToISOString.call(new Date(NaN));\n})) ? function toISOString() {\n if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value');\n var date = this;\n var year = date.getUTCFullYear();\n var milliseconds = date.getUTCMilliseconds();\n var sign = year < 0 ? '-' : year > 9999 ? '+' : '';\n return sign + padStart(abs(year), sign ? 6 : 4, 0) +\n '-' + padStart(date.getUTCMonth() + 1, 2, 0) +\n '-' + padStart(date.getUTCDate(), 2, 0) +\n 'T' + padStart(date.getUTCHours(), 2, 0) +\n ':' + padStart(date.getUTCMinutes(), 2, 0) +\n ':' + padStart(date.getUTCSeconds(), 2, 0) +\n '.' + padStart(milliseconds, 3, 0) +\n 'Z';\n} : nativeDateToISOString;\n","var redefine = require('../internals/redefine');\n\nvar DatePrototype = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar nativeDateToString = DatePrototype[TO_STRING];\nvar getTime = DatePrototype.getTime;\n\n// `Date.prototype.toString` method\n// https://tc39.es/ecma262/#sec-date.prototype.tostring\nif (new Date(NaN) + '' != INVALID_DATE) {\n redefine(DatePrototype, TO_STRING, function toString() {\n var value = getTime.call(this);\n // eslint-disable-next-line no-self-compare -- NaN check\n return value === value ? nativeDateToString.call(this) : INVALID_DATE;\n });\n}\n","var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar dateToPrimitive = require('../internals/date-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar DatePrototype = Date.prototype;\n\n// `Date.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-date.prototype-@@toprimitive\nif (!(TO_PRIMITIVE in DatePrototype)) {\n createNonEnumerableProperty(DatePrototype, TO_PRIMITIVE, dateToPrimitive);\n}\n","'use strict';\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nmodule.exports = function (hint) {\n if (hint !== 'string' && hint !== 'number' && hint !== 'default') {\n throw TypeError('Incorrect hint');\n } return toPrimitive(anObject(this), hint !== 'number');\n};\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar fails = require('../internals/fails');\n\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar re = /[\\uD800-\\uDFFF]/g;\nvar low = /^[\\uD800-\\uDBFF]$/;\nvar hi = /^[\\uDC00-\\uDFFF]$/;\n\nvar fix = function (match, offset, string) {\n var prev = string.charAt(offset - 1);\n var next = string.charAt(offset + 1);\n if ((low.test(match) && !hi.test(next)) || (hi.test(match) && !low.test(prev))) {\n return '\\\\u' + match.charCodeAt(0).toString(16);\n } return match;\n};\n\nvar FORCED = fails(function () {\n return $stringify('\\uDF06\\uD834') !== '\"\\\\udf06\\\\ud834\"'\n || $stringify('\\uDEAD') !== '\"\\\\udead\"';\n});\n\nif ($stringify) {\n // `JSON.stringify` method\n // https://tc39.es/ecma262/#sec-json.stringify\n // https://github.com/tc39/proposal-well-formed-stringify\n $({ target: 'JSON', stat: true, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n var result = $stringify.apply(null, arguments);\n return typeof result == 'string' ? result.replace(re, fix) : result;\n }\n });\n}\n","var global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// JSON[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-json-@@tostringtag\nsetToStringTag(global.JSON, 'JSON', true);\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar isObject = require('../internals/is-object');\nvar aFunction = require('../internals/a-function');\nvar anInstance = require('../internals/an-instance');\nvar inspectSource = require('../internals/inspect-source');\nvar iterate = require('../internals/iterate');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar promiseResolve = require('../internals/promise-resolve');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar InternalStateModule = require('../internals/internal-state');\nvar isForced = require('../internals/is-forced');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_NODE = require('../internals/engine-is-node');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar PromiseConstructor = NativePromise;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar $fetch = getBuiltIn('fetch');\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar NATIVE_REJECTION_EVENT = typeof PromiseRejectionEvent == 'function';\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor);\n if (!GLOBAL_CORE_JS_PROMISE) {\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (V8_VERSION === 66) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n if (!IS_NODE && !NATIVE_REJECTION_EVENT) return true;\n }\n // We need Promise#finally in the pure version for preventing prototype pollution\n if (IS_PURE && !PromiseConstructor.prototype['finally']) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PromiseConstructor)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = PromiseConstructor.resolve(1);\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n return !(promise.then(function () { /* empty */ }) instanceof FakePromise);\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\n\nvar notify = function (state, isReject) {\n if (state.notified) return;\n state.notified = true;\n var chain = state.reactions;\n microtask(function () {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var index = 0;\n // variable length - can't use forEach\n while (chain.length > index) {\n var reaction = chain[index++];\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n }\n state.reactions = [];\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (!NATIVE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n task.call(global, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n task.call(global, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\n\nvar internalReject = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n then.call(value,\n bind(internalResolve, wrapper, state),\n bind(internalReject, wrapper, state)\n );\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromiseConstructor, PROMISE);\n aFunction(executor);\n Internal.call(this);\n var state = getInternalState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: [],\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n Internal.prototype = redefineAll(PromiseConstructor.prototype, {\n // `Promise.prototype.then` method\n // https://tc39.es/ecma262/#sec-promise.prototype.then\n then: function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n state.parent = true;\n state.reactions.push(reaction);\n if (state.state != PENDING) notify(state, false);\n return reaction.promise;\n },\n // `Promise.prototype.catch` method\n // https://tc39.es/ecma262/#sec-promise.prototype.catch\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && typeof NativePromise == 'function') {\n nativeThen = NativePromise.prototype.then;\n\n // wrap native Promise#then for native async functions\n redefine(NativePromise.prototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n nativeThen.call(that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n\n // wrap fetch result\n if (typeof $fetch == 'function') $({ global: true, enumerable: true, forced: true }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n fetch: function fetch(input /* , init */) {\n return promiseResolve(PromiseConstructor, $fetch.apply(global, arguments));\n }\n });\n }\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = getBuiltIn(PROMISE);\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n // `Promise.reject` method\n // https://tc39.es/ecma262/#sec-promise.reject\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n capability.reject.call(undefined, r);\n return capability.promise;\n }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n // `Promise.resolve` method\n // https://tc39.es/ecma262/#sec-promise.resolve\n resolve: function resolve(x) {\n return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n // `Promise.all` method\n // https://tc39.es/ecma262/#sec-promise.all\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n $promiseResolve.call(C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n },\n // `Promise.race` method\n // https://tc39.es/ecma262/#sec-promise.race\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n iterate(iterable, function (promise) {\n $promiseResolve.call(C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length === 1 ? console.error(a) : console.error(a, b);\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar aFunction = require('../internals/a-function');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\n\n// `Promise.allSettled` method\n// https://tc39.es/ecma262/#sec-promise.allsettled\n$({ target: 'Promise', stat: true }, {\n allSettled: function allSettled(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var promiseResolve = aFunction(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n promiseResolve.call(C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = { status: 'fulfilled', value: value };\n --remaining || resolve(values);\n }, function (error) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = { status: 'rejected', reason: error };\n --remaining || resolve(values);\n });\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar aFunction = require('../internals/a-function');\nvar getBuiltIn = require('../internals/get-built-in');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\n\nvar PROMISE_ANY_ERROR = 'No one promise resolved';\n\n// `Promise.any` method\n// https://tc39.es/ecma262/#sec-promise.any\n$({ target: 'Promise', stat: true }, {\n any: function any(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var promiseResolve = aFunction(C.resolve);\n var errors = [];\n var counter = 0;\n var remaining = 1;\n var alreadyResolved = false;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyRejected = false;\n errors.push(undefined);\n remaining++;\n promiseResolve.call(C, promise).then(function (value) {\n if (alreadyRejected || alreadyResolved) return;\n alreadyResolved = true;\n resolve(value);\n }, function (error) {\n if (alreadyRejected || alreadyResolved) return;\n alreadyRejected = true;\n errors[index] = error;\n --remaining || reject(new (getBuiltIn('AggregateError'))(errors, PROMISE_ANY_ERROR));\n });\n });\n --remaining || reject(new (getBuiltIn('AggregateError'))(errors, PROMISE_ANY_ERROR));\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar fails = require('../internals/fails');\nvar getBuiltIn = require('../internals/get-built-in');\nvar speciesConstructor = require('../internals/species-constructor');\nvar promiseResolve = require('../internals/promise-resolve');\nvar redefine = require('../internals/redefine');\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromise && fails(function () {\n NativePromise.prototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.es/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n 'finally': function (onFinally) {\n var C = speciesConstructor(this, getBuiltIn('Promise'));\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n }\n});\n\n// patch native Promise.prototype for native async functions\nif (!IS_PURE && typeof NativePromise == 'function' && !NativePromise.prototype['finally']) {\n redefine(NativePromise.prototype, 'finally', getBuiltIn('Promise').prototype['finally']);\n}\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Map` constructor\n// https://tc39.es/ecma262/#sec-map-objects\nmodule.exports = collection('Map', function (init) {\n return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Set` constructor\n// https://tc39.es/ecma262/#sec-set-objects\nmodule.exports = collection('Set', function (init) {\n return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","'use strict';\nvar global = require('../internals/global');\nvar redefineAll = require('../internals/redefine-all');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar collection = require('../internals/collection');\nvar collectionWeak = require('../internals/collection-weak');\nvar isObject = require('../internals/is-object');\nvar enforceIternalState = require('../internals/internal-state').enforce;\nvar NATIVE_WEAK_MAP = require('../internals/native-weak-map');\n\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\nvar isExtensible = Object.isExtensible;\nvar InternalWeakMap;\n\nvar wrapper = function (init) {\n return function WeakMap() {\n return init(this, arguments.length ? arguments[0] : undefined);\n };\n};\n\n// `WeakMap` constructor\n// https://tc39.es/ecma262/#sec-weakmap-constructor\nvar $WeakMap = module.exports = collection('WeakMap', wrapper, collectionWeak);\n\n// IE11 WeakMap frozen keys fix\n// We can't use feature detection because it crash some old IE builds\n// https://github.com/zloirock/core-js/issues/485\nif (NATIVE_WEAK_MAP && IS_IE11) {\n InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true);\n InternalMetadataModule.REQUIRED = true;\n var WeakMapPrototype = $WeakMap.prototype;\n var nativeDelete = WeakMapPrototype['delete'];\n var nativeHas = WeakMapPrototype.has;\n var nativeGet = WeakMapPrototype.get;\n var nativeSet = WeakMapPrototype.set;\n redefineAll(WeakMapPrototype, {\n 'delete': function (key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n return nativeDelete.call(this, key) || state.frozen['delete'](key);\n } return nativeDelete.call(this, key);\n },\n has: function has(key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n return nativeHas.call(this, key) || state.frozen.has(key);\n } return nativeHas.call(this, key);\n },\n get: function get(key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n return nativeHas.call(this, key) ? nativeGet.call(this, key) : state.frozen.get(key);\n } return nativeGet.call(this, key);\n },\n set: function set(key, value) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n nativeHas.call(this, key) ? nativeSet.call(this, key, value) : state.frozen.set(key, value);\n } else nativeSet.call(this, key, value);\n return this;\n }\n });\n}\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionWeak = require('../internals/collection-weak');\n\n// `WeakSet` constructor\n// https://tc39.es/ecma262/#sec-weakset-constructor\ncollection('WeakSet', function (init) {\n return function WeakSet() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionWeak);\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar arrayBufferModule = require('../internals/array-buffer');\nvar setSpecies = require('../internals/set-species');\n\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar ArrayBuffer = arrayBufferModule[ARRAY_BUFFER];\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\n\n// `ArrayBuffer` constructor\n// https://tc39.es/ecma262/#sec-arraybuffer-constructor\n$({ global: true, forced: NativeArrayBuffer !== ArrayBuffer }, {\n ArrayBuffer: ArrayBuffer\n});\n\nsetSpecies(ARRAY_BUFFER);\n","// IEEE754 conversions based on https://github.com/feross/ieee754\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nvar pack = function (number, mantissaLength, bytes) {\n var buffer = new Array(bytes);\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n var index = 0;\n var exponent, mantissa, c;\n number = abs(number);\n // eslint-disable-next-line no-self-compare -- NaN check\n if (number != number || number === Infinity) {\n // eslint-disable-next-line no-self-compare -- NaN check\n mantissa = number != number ? 1 : 0;\n exponent = eMax;\n } else {\n exponent = floor(log(number) / LN2);\n if (number * (c = pow(2, -exponent)) < 1) {\n exponent--;\n c *= 2;\n }\n if (exponent + eBias >= 1) {\n number += rt / c;\n } else {\n number += rt * pow(2, 1 - eBias);\n }\n if (number * c >= 2) {\n exponent++;\n c /= 2;\n }\n if (exponent + eBias >= eMax) {\n mantissa = 0;\n exponent = eMax;\n } else if (exponent + eBias >= 1) {\n mantissa = (number * c - 1) * pow(2, mantissaLength);\n exponent = exponent + eBias;\n } else {\n mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n exponent = 0;\n }\n }\n for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8);\n exponent = exponent << mantissaLength | mantissa;\n exponentLength += mantissaLength;\n for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8);\n buffer[--index] |= sign * 128;\n return buffer;\n};\n\nvar unpack = function (buffer, mantissaLength) {\n var bytes = buffer.length;\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var nBits = exponentLength - 7;\n var index = bytes - 1;\n var sign = buffer[index--];\n var exponent = sign & 127;\n var mantissa;\n sign >>= 7;\n for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8);\n mantissa = exponent & (1 << -nBits) - 1;\n exponent >>= -nBits;\n nBits += mantissaLength;\n for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8);\n if (exponent === 0) {\n exponent = 1 - eBias;\n } else if (exponent === eMax) {\n return mantissa ? NaN : sign ? -Infinity : Infinity;\n } else {\n mantissa = mantissa + pow(2, mantissaLength);\n exponent = exponent - eBias;\n } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nmodule.exports = {\n pack: pack,\n unpack: unpack\n};\n","var $ = require('../internals/export');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\n\n// `ArrayBuffer.isView` method\n// https://tc39.es/ecma262/#sec-arraybuffer.isview\n$({ target: 'ArrayBuffer', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n isView: ArrayBufferViewCore.isView\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anObject = require('../internals/an-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar nativeArrayBufferSlice = ArrayBuffer.prototype.slice;\n\nvar INCORRECT_SLICE = fails(function () {\n return !new ArrayBuffer(2).slice(1, undefined).byteLength;\n});\n\n// `ArrayBuffer.prototype.slice` method\n// https://tc39.es/ecma262/#sec-arraybuffer.prototype.slice\n$({ target: 'ArrayBuffer', proto: true, unsafe: true, forced: INCORRECT_SLICE }, {\n slice: function slice(start, end) {\n if (nativeArrayBufferSlice !== undefined && end === undefined) {\n return nativeArrayBufferSlice.call(anObject(this), start); // FF fix\n }\n var length = anObject(this).byteLength;\n var first = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n var result = new (speciesConstructor(this, ArrayBuffer))(toLength(fin - first));\n var viewSource = new DataView(this);\n var viewTarget = new DataView(result);\n var index = 0;\n while (first < fin) {\n viewTarget.setUint8(index++, viewSource.getUint8(first++));\n } return result;\n }\n});\n","var $ = require('../internals/export');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\n\n// `DataView` constructor\n// https://tc39.es/ecma262/#sec-dataview-constructor\n$({ global: true, forced: !NATIVE_ARRAY_BUFFER }, {\n DataView: ArrayBufferModule.DataView\n});\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Int8Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Int8', function (init) {\n return function Int8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","var toInteger = require('../internals/to-integer');\n\nmodule.exports = function (it) {\n var result = toInteger(it);\n if (result < 0) throw RangeError(\"The argument can't be less than 0\");\n return result;\n};\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint8Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint8ClampedArray` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n return function Uint8ClampedArray(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n}, true);\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Int16Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Int16', function (init) {\n return function Int16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint16Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint16', function (init) {\n return function Uint16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Int32Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Int32', function (init) {\n return function Int32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint32Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint32', function (init) {\n return function Uint32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Float32Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Float32', function (init) {\n return function Float32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Float64Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Float64', function (init) {\n return function Float64Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","'use strict';\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');\nvar exportTypedArrayStaticMethod = require('../internals/array-buffer-view-core').exportTypedArrayStaticMethod;\nvar typedArrayFrom = require('../internals/typed-array-from');\n\n// `%TypedArray%.from` method\n// https://tc39.es/ecma262/#sec-%typedarray%.from\nexportTypedArrayStaticMethod('from', typedArrayFrom, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');\n\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar exportTypedArrayStaticMethod = ArrayBufferViewCore.exportTypedArrayStaticMethod;\n\n// `%TypedArray%.of` method\n// https://tc39.es/ecma262/#sec-%typedarray%.of\nexportTypedArrayStaticMethod('of', function of(/* ...items */) {\n var index = 0;\n var length = arguments.length;\n var result = new (aTypedArrayConstructor(this))(length);\n while (length > index) result[index] = arguments[index++];\n return result;\n}, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $copyWithin = require('../internals/array-copy-within');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.copyWithin` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.copywithin\nexportTypedArrayMethod('copyWithin', function copyWithin(target, start /* , end */) {\n return $copyWithin.call(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $every = require('../internals/array-iteration').every;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.every` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.every\nexportTypedArrayMethod('every', function every(callbackfn /* , thisArg */) {\n return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $fill = require('../internals/array-fill');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill\n// eslint-disable-next-line no-unused-vars -- required for `.length`\nexportTypedArrayMethod('fill', function fill(value /* , start, end */) {\n return $fill.apply(aTypedArray(this), arguments);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $filter = require('../internals/array-iteration').filter;\nvar fromSpeciesAndList = require('../internals/typed-array-from-species-and-list');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.filter` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.filter\nexportTypedArrayMethod('filter', function filter(callbackfn /* , thisArg */) {\n var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n return fromSpeciesAndList(this, list);\n});\n","var aTypedArrayConstructor = require('../internals/array-buffer-view-core').aTypedArrayConstructor;\nvar speciesConstructor = require('../internals/species-constructor');\n\nmodule.exports = function (instance, list) {\n var C = speciesConstructor(instance, instance.constructor);\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $find = require('../internals/array-iteration').find;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.find` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.find\nexportTypedArrayMethod('find', function find(predicate /* , thisArg */) {\n return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findIndex = require('../internals/array-iteration').findIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findindex\nexportTypedArrayMethod('findIndex', function findIndex(predicate /* , thisArg */) {\n return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.foreach\nexportTypedArrayMethod('forEach', function forEach(callbackfn /* , thisArg */) {\n $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $includes = require('../internals/array-includes').includes;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.includes` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.includes\nexportTypedArrayMethod('includes', function includes(searchElement /* , fromIndex */) {\n return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $indexOf = require('../internals/array-includes').indexOf;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.indexof\nexportTypedArrayMethod('indexOf', function indexOf(searchElement /* , fromIndex */) {\n return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar global = require('../internals/global');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayIterators = require('../modules/es.array.iterator');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar Uint8Array = global.Uint8Array;\nvar arrayValues = ArrayIterators.values;\nvar arrayKeys = ArrayIterators.keys;\nvar arrayEntries = ArrayIterators.entries;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar nativeTypedArrayIterator = Uint8Array && Uint8Array.prototype[ITERATOR];\n\nvar CORRECT_ITER_NAME = !!nativeTypedArrayIterator\n && (nativeTypedArrayIterator.name == 'values' || nativeTypedArrayIterator.name == undefined);\n\nvar typedArrayValues = function values() {\n return arrayValues.call(aTypedArray(this));\n};\n\n// `%TypedArray%.prototype.entries` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.entries\nexportTypedArrayMethod('entries', function entries() {\n return arrayEntries.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.keys` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.keys\nexportTypedArrayMethod('keys', function keys() {\n return arrayKeys.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.values` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.values\nexportTypedArrayMethod('values', typedArrayValues, !CORRECT_ITER_NAME);\n// `%TypedArray%.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype-@@iterator\nexportTypedArrayMethod(ITERATOR, typedArrayValues, !CORRECT_ITER_NAME);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $join = [].join;\n\n// `%TypedArray%.prototype.join` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.join\n// eslint-disable-next-line no-unused-vars -- required for `.length`\nexportTypedArrayMethod('join', function join(separator) {\n return $join.apply(aTypedArray(this), arguments);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $lastIndexOf = require('../internals/array-last-index-of');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.lastIndexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.lastindexof\n// eslint-disable-next-line no-unused-vars -- required for `.length`\nexportTypedArrayMethod('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {\n return $lastIndexOf.apply(aTypedArray(this), arguments);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $map = require('../internals/array-iteration').map;\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.map` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.map\nexportTypedArrayMethod('map', function map(mapfn /* , thisArg */) {\n return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {\n return new (aTypedArrayConstructor(speciesConstructor(O, O.constructor)))(length);\n });\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduce = require('../internals/array-reduce').left;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduce\nexportTypedArrayMethod('reduce', function reduce(callbackfn /* , initialValue */) {\n return $reduce(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduceRight = require('../internals/array-reduce').right;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduceRicht` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduceright\nexportTypedArrayMethod('reduceRight', function reduceRight(callbackfn /* , initialValue */) {\n return $reduceRight(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar floor = Math.floor;\n\n// `%TypedArray%.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reverse\nexportTypedArrayMethod('reverse', function reverse() {\n var that = this;\n var length = aTypedArray(that).length;\n var middle = floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toOffset = require('../internals/to-offset');\nvar toObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar FORCED = fails(function () {\n /* global Int8Array -- safe */\n new Int8Array(1).set({});\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n aTypedArray(this);\n var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError('Wrong length');\n while (index < len) this[offset + index] = src[index++];\n}, FORCED);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar speciesConstructor = require('../internals/species-constructor');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $slice = [].slice;\n\nvar FORCED = fails(function () {\n /* global Int8Array -- safe */\n new Int8Array(1).slice();\n});\n\n// `%TypedArray%.prototype.slice` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.slice\nexportTypedArrayMethod('slice', function slice(start, end) {\n var list = $slice.call(aTypedArray(this), start, end);\n var C = speciesConstructor(this, this.constructor);\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n}, FORCED);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $some = require('../internals/array-iteration').some;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.some` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.some\nexportTypedArrayMethod('some', function some(callbackfn /* , thisArg */) {\n return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $sort = [].sort;\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort\nexportTypedArrayMethod('sort', function sort(comparefn) {\n return $sort.call(aTypedArray(this), comparefn);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.subarray` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.subarray\nexportTypedArrayMethod('subarray', function subarray(begin, end) {\n var O = aTypedArray(this);\n var length = O.length;\n var beginIndex = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O.constructor))(\n O.buffer,\n O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)\n );\n});\n","'use strict';\nvar global = require('../internals/global');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\n\nvar Int8Array = global.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $toLocaleString = [].toLocaleString;\nvar $slice = [].slice;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n $toLocaleString.call(new Int8Array(1));\n});\n\nvar FORCED = fails(function () {\n return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring\nexportTypedArrayMethod('toLocaleString', function toLocaleString() {\n return $toLocaleString.apply(TO_LOCALE_STRING_BUG ? $slice.call(aTypedArray(this)) : aTypedArray(this), arguments);\n}, FORCED);\n","'use strict';\nvar exportTypedArrayMethod = require('../internals/array-buffer-view-core').exportTypedArrayMethod;\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\nvar Uint8Array = global.Uint8Array;\nvar Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype || {};\nvar arrayToString = [].toString;\nvar arrayJoin = [].join;\n\nif (fails(function () { arrayToString.call({}); })) {\n arrayToString = function toString() {\n return arrayJoin.call(this);\n };\n}\n\nvar IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString != arrayToString;\n\n// `%TypedArray%.prototype.toString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tostring\nexportTypedArrayMethod('toString', arrayToString, IS_NOT_ARRAY_METHOD);\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar aFunction = require('../internals/a-function');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\n\nvar nativeApply = getBuiltIn('Reflect', 'apply');\nvar functionApply = Function.apply;\n\n// MS Edge argumentsList argument is optional\nvar OPTIONAL_ARGUMENTS_LIST = !fails(function () {\n nativeApply(function () { /* empty */ });\n});\n\n// `Reflect.apply` method\n// https://tc39.es/ecma262/#sec-reflect.apply\n$({ target: 'Reflect', stat: true, forced: OPTIONAL_ARGUMENTS_LIST }, {\n apply: function apply(target, thisArgument, argumentsList) {\n aFunction(target);\n anObject(argumentsList);\n return nativeApply\n ? nativeApply(target, thisArgument, argumentsList)\n : functionApply.call(target, thisArgument, argumentsList);\n }\n});\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar aFunction = require('../internals/a-function');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar bind = require('../internals/function-bind');\nvar fails = require('../internals/fails');\n\nvar nativeConstruct = getBuiltIn('Reflect', 'construct');\n\n// `Reflect.construct` method\n// https://tc39.es/ecma262/#sec-reflect.construct\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n nativeConstruct(function () { /* empty */ });\n});\nvar FORCED = NEW_TARGET_BUG || ARGS_BUG;\n\n$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar fails = require('../internals/fails');\n\n// MS Edge has broken Reflect.defineProperty - throwing instead of returning false\nvar ERROR_INSTEAD_OF_FALSE = fails(function () {\n /* global Reflect -- required for testing */\n Reflect.defineProperty(definePropertyModule.f({}, 1, { value: 1 }), 1, { value: 2 });\n});\n\n// `Reflect.defineProperty` method\n// https://tc39.es/ecma262/#sec-reflect.defineproperty\n$({ target: 'Reflect', stat: true, forced: ERROR_INSTEAD_OF_FALSE, sham: !DESCRIPTORS }, {\n defineProperty: function defineProperty(target, propertyKey, attributes) {\n anObject(target);\n var key = toPrimitive(propertyKey, true);\n anObject(attributes);\n try {\n definePropertyModule.f(target, key, attributes);\n return true;\n } catch (error) {\n return false;\n }\n }\n});\n","var $ = require('../internals/export');\nvar anObject = require('../internals/an-object');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\n\n// `Reflect.deleteProperty` method\n// https://tc39.es/ecma262/#sec-reflect.deleteproperty\n$({ target: 'Reflect', stat: true }, {\n deleteProperty: function deleteProperty(target, propertyKey) {\n var descriptor = getOwnPropertyDescriptor(anObject(target), propertyKey);\n return descriptor && !descriptor.configurable ? false : delete target[propertyKey];\n }\n});\n","var $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar has = require('../internals/has');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\n\n// `Reflect.get` method\n// https://tc39.es/ecma262/#sec-reflect.get\nfunction get(target, propertyKey /* , receiver */) {\n var receiver = arguments.length < 3 ? target : arguments[2];\n var descriptor, prototype;\n if (anObject(target) === receiver) return target[propertyKey];\n if (descriptor = getOwnPropertyDescriptorModule.f(target, propertyKey)) return has(descriptor, 'value')\n ? descriptor.value\n : descriptor.get === undefined\n ? undefined\n : descriptor.get.call(receiver);\n if (isObject(prototype = getPrototypeOf(target))) return get(prototype, propertyKey, receiver);\n}\n\n$({ target: 'Reflect', stat: true }, {\n get: get\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar anObject = require('../internals/an-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\n\n// `Reflect.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-reflect.getownpropertydescriptor\n$({ target: 'Reflect', stat: true, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {\n return getOwnPropertyDescriptorModule.f(anObject(target), propertyKey);\n }\n});\n","var $ = require('../internals/export');\nvar anObject = require('../internals/an-object');\nvar objectGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\n// `Reflect.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-reflect.getprototypeof\n$({ target: 'Reflect', stat: true, sham: !CORRECT_PROTOTYPE_GETTER }, {\n getPrototypeOf: function getPrototypeOf(target) {\n return objectGetPrototypeOf(anObject(target));\n }\n});\n","var $ = require('../internals/export');\n\n// `Reflect.has` method\n// https://tc39.es/ecma262/#sec-reflect.has\n$({ target: 'Reflect', stat: true }, {\n has: function has(target, propertyKey) {\n return propertyKey in target;\n }\n});\n","var $ = require('../internals/export');\nvar anObject = require('../internals/an-object');\n\nvar objectIsExtensible = Object.isExtensible;\n\n// `Reflect.isExtensible` method\n// https://tc39.es/ecma262/#sec-reflect.isextensible\n$({ target: 'Reflect', stat: true }, {\n isExtensible: function isExtensible(target) {\n anObject(target);\n return objectIsExtensible ? objectIsExtensible(target) : true;\n }\n});\n","var $ = require('../internals/export');\nvar ownKeys = require('../internals/own-keys');\n\n// `Reflect.ownKeys` method\n// https://tc39.es/ecma262/#sec-reflect.ownkeys\n$({ target: 'Reflect', stat: true }, {\n ownKeys: ownKeys\n});\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar anObject = require('../internals/an-object');\nvar FREEZING = require('../internals/freezing');\n\n// `Reflect.preventExtensions` method\n// https://tc39.es/ecma262/#sec-reflect.preventextensions\n$({ target: 'Reflect', stat: true, sham: !FREEZING }, {\n preventExtensions: function preventExtensions(target) {\n anObject(target);\n try {\n var objectPreventExtensions = getBuiltIn('Object', 'preventExtensions');\n if (objectPreventExtensions) objectPreventExtensions(target);\n return true;\n } catch (error) {\n return false;\n }\n }\n});\n","var $ = require('../internals/export');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar fails = require('../internals/fails');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\n// `Reflect.set` method\n// https://tc39.es/ecma262/#sec-reflect.set\nfunction set(target, propertyKey, V /* , receiver */) {\n var receiver = arguments.length < 4 ? target : arguments[3];\n var ownDescriptor = getOwnPropertyDescriptorModule.f(anObject(target), propertyKey);\n var existingDescriptor, prototype;\n if (!ownDescriptor) {\n if (isObject(prototype = getPrototypeOf(target))) {\n return set(prototype, propertyKey, V, receiver);\n }\n ownDescriptor = createPropertyDescriptor(0);\n }\n if (has(ownDescriptor, 'value')) {\n if (ownDescriptor.writable === false || !isObject(receiver)) return false;\n if (existingDescriptor = getOwnPropertyDescriptorModule.f(receiver, propertyKey)) {\n if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false;\n existingDescriptor.value = V;\n definePropertyModule.f(receiver, propertyKey, existingDescriptor);\n } else definePropertyModule.f(receiver, propertyKey, createPropertyDescriptor(0, V));\n return true;\n }\n return ownDescriptor.set === undefined ? false : (ownDescriptor.set.call(receiver, V), true);\n}\n\n// MS Edge 17-18 Reflect.set allows setting the property to object\n// with non-writable property on the prototype\nvar MS_EDGE_BUG = fails(function () {\n var Constructor = function () { /* empty */ };\n var object = definePropertyModule.f(new Constructor(), 'a', { configurable: true });\n /* global Reflect -- required for testing */\n return Reflect.set(Constructor.prototype, 'a', 1, object) !== false;\n});\n\n$({ target: 'Reflect', stat: true, forced: MS_EDGE_BUG }, {\n set: set\n});\n","var $ = require('../internals/export');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\nvar objectSetPrototypeOf = require('../internals/object-set-prototype-of');\n\n// `Reflect.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-reflect.setprototypeof\nif (objectSetPrototypeOf) $({ target: 'Reflect', stat: true }, {\n setPrototypeOf: function setPrototypeOf(target, proto) {\n anObject(target);\n aPossiblePrototype(proto);\n try {\n objectSetPrototypeOf(target, proto);\n return true;\n } catch (error) {\n return false;\n }\n }\n});\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n$({ global: true }, { Reflect: {} });\n\n// Reflect[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-reflect-@@tostringtag\nsetToStringTag(global.Reflect, 'Reflect', true);\n","require('../modules/web.dom-collections.for-each');\nrequire('../modules/web.dom-collections.iterator');\nrequire('../modules/web.immediate');\nrequire('../modules/web.queue-microtask');\nrequire('../modules/web.timers');\nrequire('../modules/web.url');\nrequire('../modules/web.url.to-json');\nrequire('../modules/web.url-search-params');\nvar path = require('../internals/path');\n\nmodule.exports = path;\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n}\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n}\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar task = require('../internals/task');\n\nvar FORCED = !global.setImmediate || !global.clearImmediate;\n\n// http://w3c.github.io/setImmediate/\n$({ global: true, bind: true, enumerable: true, forced: FORCED }, {\n // `setImmediate` method\n // http://w3c.github.io/setImmediate/#si-setImmediate\n setImmediate: task.set,\n // `clearImmediate` method\n // http://w3c.github.io/setImmediate/#si-clearImmediate\n clearImmediate: task.clear\n});\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar microtask = require('../internals/microtask');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar process = global.process;\n\n// `queueMicrotask` method\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-queuemicrotask\n$({ global: true, enumerable: true, noTargetGet: true }, {\n queueMicrotask: function queueMicrotask(fn) {\n var domain = IS_NODE && process.domain;\n microtask(domain ? domain.bind(fn) : fn);\n }\n});\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar slice = [].slice;\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\n\nvar wrap = function (scheduler) {\n return function (handler, timeout /* , ...arguments */) {\n var boundArgs = arguments.length > 2;\n var args = boundArgs ? slice.call(arguments, 2) : undefined;\n return scheduler(boundArgs ? function () {\n // eslint-disable-next-line no-new-func -- spec requirement\n (typeof handler == 'function' ? handler : Function(handler)).apply(this, args);\n } : handler, timeout);\n };\n};\n\n// ie9- setTimeout & setInterval additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers\n$({ global: true, bind: true, forced: MSIE }, {\n // `setTimeout` method\n // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout\n setTimeout: wrap(global.setTimeout),\n // `setInterval` method\n // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval\n setInterval: wrap(global.setInterval)\n});\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.string.iterator');\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar global = require('../internals/global');\nvar defineProperties = require('../internals/object-define-properties');\nvar redefine = require('../internals/redefine');\nvar anInstance = require('../internals/an-instance');\nvar has = require('../internals/has');\nvar assign = require('../internals/object-assign');\nvar arrayFrom = require('../internals/array-from');\nvar codeAt = require('../internals/string-multibyte').codeAt;\nvar toASCII = require('../internals/string-punycode-to-ascii');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar URLSearchParamsModule = require('../modules/web.url-search-params');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar NativeURL = global.URL;\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar floor = Math.floor;\nvar pow = Math.pow;\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[A-Za-z]/;\nvar ALPHANUMERIC = /[\\d+-.A-Za-z]/;\nvar DIGIT = /\\d/;\nvar HEX_START = /^(0x|0X)/;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\dA-Fa-f]+$/;\n/* eslint-disable no-control-regex -- safe */\nvar FORBIDDEN_HOST_CODE_POINT = /[\\u0000\\t\\u000A\\u000D #%/:?@[\\\\]]/;\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\u0000\\t\\u000A\\u000D #/:?@[\\\\]]/;\nvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u001F ]+|[\\u0000-\\u001F ]+$/g;\nvar TAB_AND_NEW_LINE = /[\\t\\u000A\\u000D]/g;\n/* eslint-enable no-control-regex -- safe */\nvar EOF;\n\nvar parseHost = function (url, input) {\n var result, codePoints, index;\n if (input.charAt(0) == '[') {\n if (input.charAt(input.length - 1) != ']') return INVALID_HOST;\n result = parseIPv6(input.slice(1, -1));\n if (!result) return INVALID_HOST;\n url.host = result;\n // opaque host\n } else if (!isSpecial(url)) {\n if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input)) return INVALID_HOST;\n result = '';\n codePoints = arrayFrom(input);\n for (index = 0; index < codePoints.length; index++) {\n result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n }\n url.host = result;\n } else {\n input = toASCII(input);\n if (FORBIDDEN_HOST_CODE_POINT.test(input)) return INVALID_HOST;\n result = parseIPv4(input);\n if (result === null) return INVALID_HOST;\n url.host = result;\n }\n};\n\nvar parseIPv4 = function (input) {\n var parts = input.split('.');\n var partsLength, numbers, index, part, radix, number, ipv4;\n if (parts.length && parts[parts.length - 1] == '') {\n parts.pop();\n }\n partsLength = parts.length;\n if (partsLength > 4) return input;\n numbers = [];\n for (index = 0; index < partsLength; index++) {\n part = parts[index];\n if (part == '') return input;\n radix = 10;\n if (part.length > 1 && part.charAt(0) == '0') {\n radix = HEX_START.test(part) ? 16 : 8;\n part = part.slice(radix == 8 ? 1 : 2);\n }\n if (part === '') {\n number = 0;\n } else {\n if (!(radix == 10 ? DEC : radix == 8 ? OCT : HEX).test(part)) return input;\n number = parseInt(part, radix);\n }\n numbers.push(number);\n }\n for (index = 0; index < partsLength; index++) {\n number = numbers[index];\n if (index == partsLength - 1) {\n if (number >= pow(256, 5 - partsLength)) return null;\n } else if (number > 255) return null;\n }\n ipv4 = numbers.pop();\n for (index = 0; index < numbers.length; index++) {\n ipv4 += numbers[index] * pow(256, 3 - index);\n }\n return ipv4;\n};\n\n// eslint-disable-next-line max-statements -- TODO\nvar parseIPv6 = function (input) {\n var address = [0, 0, 0, 0, 0, 0, 0, 0];\n var pieceIndex = 0;\n var compress = null;\n var pointer = 0;\n var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n var char = function () {\n return input.charAt(pointer);\n };\n\n if (char() == ':') {\n if (input.charAt(1) != ':') return;\n pointer += 2;\n pieceIndex++;\n compress = pieceIndex;\n }\n while (char()) {\n if (pieceIndex == 8) return;\n if (char() == ':') {\n if (compress !== null) return;\n pointer++;\n pieceIndex++;\n compress = pieceIndex;\n continue;\n }\n value = length = 0;\n while (length < 4 && HEX.test(char())) {\n value = value * 16 + parseInt(char(), 16);\n pointer++;\n length++;\n }\n if (char() == '.') {\n if (length == 0) return;\n pointer -= length;\n if (pieceIndex > 6) return;\n numbersSeen = 0;\n while (char()) {\n ipv4Piece = null;\n if (numbersSeen > 0) {\n if (char() == '.' && numbersSeen < 4) pointer++;\n else return;\n }\n if (!DIGIT.test(char())) return;\n while (DIGIT.test(char())) {\n number = parseInt(char(), 10);\n if (ipv4Piece === null) ipv4Piece = number;\n else if (ipv4Piece == 0) return;\n else ipv4Piece = ipv4Piece * 10 + number;\n if (ipv4Piece > 255) return;\n pointer++;\n }\n address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n numbersSeen++;\n if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n }\n if (numbersSeen != 4) return;\n break;\n } else if (char() == ':') {\n pointer++;\n if (!char()) return;\n } else if (char()) return;\n address[pieceIndex++] = value;\n }\n if (compress !== null) {\n swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex != 0 && swaps > 0) {\n swap = address[pieceIndex];\n address[pieceIndex--] = address[compress + swaps - 1];\n address[compress + --swaps] = swap;\n }\n } else if (pieceIndex != 8) return;\n return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n var maxIndex = null;\n var maxLength = 1;\n var currStart = null;\n var currLength = 0;\n var index = 0;\n for (; index < 8; index++) {\n if (ipv6[index] !== 0) {\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n currStart = null;\n currLength = 0;\n } else {\n if (currStart === null) currStart = index;\n ++currLength;\n }\n }\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n return maxIndex;\n};\n\nvar serializeHost = function (host) {\n var result, index, compress, ignore0;\n // ipv4\n if (typeof host == 'number') {\n result = [];\n for (index = 0; index < 4; index++) {\n result.unshift(host % 256);\n host = floor(host / 256);\n } return result.join('.');\n // ipv6\n } else if (typeof host == 'object') {\n result = '';\n compress = findLongestZeroSequence(host);\n for (index = 0; index < 8; index++) {\n if (ignore0 && host[index] === 0) continue;\n if (ignore0) ignore0 = false;\n if (compress === index) {\n result += index ? ':' : '::';\n ignore0 = true;\n } else {\n result += host[index].toString(16);\n if (index < 7) result += ':';\n }\n }\n return '[' + result + ']';\n } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (char, set) {\n var code = codeAt(char, 0);\n return code > 0x20 && code < 0x7F && !has(set, char) ? char : encodeURIComponent(char);\n};\n\nvar specialSchemes = {\n ftp: 21,\n file: null,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\n\nvar isSpecial = function (url) {\n return has(specialSchemes, url.scheme);\n};\n\nvar includesCredentials = function (url) {\n return url.username != '' || url.password != '';\n};\n\nvar cannotHaveUsernamePasswordPort = function (url) {\n return !url.host || url.cannotBeABaseURL || url.scheme == 'file';\n};\n\nvar isWindowsDriveLetter = function (string, normalized) {\n var second;\n return string.length == 2 && ALPHA.test(string.charAt(0))\n && ((second = string.charAt(1)) == ':' || (!normalized && second == '|'));\n};\n\nvar startsWithWindowsDriveLetter = function (string) {\n var third;\n return string.length > 1 && isWindowsDriveLetter(string.slice(0, 2)) && (\n string.length == 2 ||\n ((third = string.charAt(2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n );\n};\n\nvar shortenURLsPath = function (url) {\n var path = url.path;\n var pathSize = path.length;\n if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n path.pop();\n }\n};\n\nvar isSingleDot = function (segment) {\n return segment === '.' || segment.toLowerCase() === '%2e';\n};\n\nvar isDoubleDot = function (segment) {\n segment = segment.toLowerCase();\n return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\n// eslint-disable-next-line max-statements -- TODO\nvar parseURL = function (url, input, stateOverride, base) {\n var state = stateOverride || SCHEME_START;\n var pointer = 0;\n var buffer = '';\n var seenAt = false;\n var seenBracket = false;\n var seenPasswordToken = false;\n var codePoints, char, bufferCodePoints, failure;\n\n if (!stateOverride) {\n url.scheme = '';\n url.username = '';\n url.password = '';\n url.host = null;\n url.port = null;\n url.path = [];\n url.query = null;\n url.fragment = null;\n url.cannotBeABaseURL = false;\n input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n }\n\n input = input.replace(TAB_AND_NEW_LINE, '');\n\n codePoints = arrayFrom(input);\n\n while (pointer <= codePoints.length) {\n char = codePoints[pointer];\n switch (state) {\n case SCHEME_START:\n if (char && ALPHA.test(char)) {\n buffer += char.toLowerCase();\n state = SCHEME;\n } else if (!stateOverride) {\n state = NO_SCHEME;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case SCHEME:\n if (char && (ALPHANUMERIC.test(char) || char == '+' || char == '-' || char == '.')) {\n buffer += char.toLowerCase();\n } else if (char == ':') {\n if (stateOverride && (\n (isSpecial(url) != has(specialSchemes, buffer)) ||\n (buffer == 'file' && (includesCredentials(url) || url.port !== null)) ||\n (url.scheme == 'file' && !url.host)\n )) return;\n url.scheme = buffer;\n if (stateOverride) {\n if (isSpecial(url) && specialSchemes[url.scheme] == url.port) url.port = null;\n return;\n }\n buffer = '';\n if (url.scheme == 'file') {\n state = FILE;\n } else if (isSpecial(url) && base && base.scheme == url.scheme) {\n state = SPECIAL_RELATIVE_OR_AUTHORITY;\n } else if (isSpecial(url)) {\n state = SPECIAL_AUTHORITY_SLASHES;\n } else if (codePoints[pointer + 1] == '/') {\n state = PATH_OR_AUTHORITY;\n pointer++;\n } else {\n url.cannotBeABaseURL = true;\n url.path.push('');\n state = CANNOT_BE_A_BASE_URL_PATH;\n }\n } else if (!stateOverride) {\n buffer = '';\n state = NO_SCHEME;\n pointer = 0;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case NO_SCHEME:\n if (!base || (base.cannotBeABaseURL && char != '#')) return INVALID_SCHEME;\n if (base.cannotBeABaseURL && char == '#') {\n url.scheme = base.scheme;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n url.cannotBeABaseURL = true;\n state = FRAGMENT;\n break;\n }\n state = base.scheme == 'file' ? FILE : RELATIVE;\n continue;\n\n case SPECIAL_RELATIVE_OR_AUTHORITY:\n if (char == '/' && codePoints[pointer + 1] == '/') {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n pointer++;\n } else {\n state = RELATIVE;\n continue;\n } break;\n\n case PATH_OR_AUTHORITY:\n if (char == '/') {\n state = AUTHORITY;\n break;\n } else {\n state = PATH;\n continue;\n }\n\n case RELATIVE:\n url.scheme = base.scheme;\n if (char == EOF) {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '/' || (char == '\\\\' && isSpecial(url))) {\n state = RELATIVE_SLASH;\n } else if (char == '?') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.path.pop();\n state = PATH;\n continue;\n } break;\n\n case RELATIVE_SLASH:\n if (isSpecial(url) && (char == '/' || char == '\\\\')) {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n } else if (char == '/') {\n state = AUTHORITY;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n state = PATH;\n continue;\n } break;\n\n case SPECIAL_AUTHORITY_SLASHES:\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n if (char != '/' || buffer.charAt(pointer + 1) != '/') continue;\n pointer++;\n break;\n\n case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n if (char != '/' && char != '\\\\') {\n state = AUTHORITY;\n continue;\n } break;\n\n case AUTHORITY:\n if (char == '@') {\n if (seenAt) buffer = '%40' + buffer;\n seenAt = true;\n bufferCodePoints = arrayFrom(buffer);\n for (var i = 0; i < bufferCodePoints.length; i++) {\n var codePoint = bufferCodePoints[i];\n if (codePoint == ':' && !seenPasswordToken) {\n seenPasswordToken = true;\n continue;\n }\n var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n if (seenPasswordToken) url.password += encodedCodePoints;\n else url.username += encodedCodePoints;\n }\n buffer = '';\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (seenAt && buffer == '') return INVALID_AUTHORITY;\n pointer -= arrayFrom(buffer).length + 1;\n buffer = '';\n state = HOST;\n } else buffer += char;\n break;\n\n case HOST:\n case HOSTNAME:\n if (stateOverride && url.scheme == 'file') {\n state = FILE_HOST;\n continue;\n } else if (char == ':' && !seenBracket) {\n if (buffer == '') return INVALID_HOST;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PORT;\n if (stateOverride == HOSTNAME) return;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (isSpecial(url) && buffer == '') return INVALID_HOST;\n if (stateOverride && buffer == '' && (includesCredentials(url) || url.port !== null)) return;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PATH_START;\n if (stateOverride) return;\n continue;\n } else {\n if (char == '[') seenBracket = true;\n else if (char == ']') seenBracket = false;\n buffer += char;\n } break;\n\n case PORT:\n if (DIGIT.test(char)) {\n buffer += char;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url)) ||\n stateOverride\n ) {\n if (buffer != '') {\n var port = parseInt(buffer, 10);\n if (port > 0xFFFF) return INVALID_PORT;\n url.port = (isSpecial(url) && port === specialSchemes[url.scheme]) ? null : port;\n buffer = '';\n }\n if (stateOverride) return;\n state = PATH_START;\n continue;\n } else return INVALID_PORT;\n break;\n\n case FILE:\n url.scheme = 'file';\n if (char == '/' || char == '\\\\') state = FILE_SLASH;\n else if (base && base.scheme == 'file') {\n if (char == EOF) {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '?') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n if (!startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n url.host = base.host;\n url.path = base.path.slice();\n shortenURLsPath(url);\n }\n state = PATH;\n continue;\n }\n } else {\n state = PATH;\n continue;\n } break;\n\n case FILE_SLASH:\n if (char == '/' || char == '\\\\') {\n state = FILE_HOST;\n break;\n }\n if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n if (isWindowsDriveLetter(base.path[0], true)) url.path.push(base.path[0]);\n else url.host = base.host;\n }\n state = PATH;\n continue;\n\n case FILE_HOST:\n if (char == EOF || char == '/' || char == '\\\\' || char == '?' || char == '#') {\n if (!stateOverride && isWindowsDriveLetter(buffer)) {\n state = PATH;\n } else if (buffer == '') {\n url.host = '';\n if (stateOverride) return;\n state = PATH_START;\n } else {\n failure = parseHost(url, buffer);\n if (failure) return failure;\n if (url.host == 'localhost') url.host = '';\n if (stateOverride) return;\n buffer = '';\n state = PATH_START;\n } continue;\n } else buffer += char;\n break;\n\n case PATH_START:\n if (isSpecial(url)) {\n state = PATH;\n if (char != '/' && char != '\\\\') continue;\n } else if (!stateOverride && char == '?') {\n url.query = '';\n state = QUERY;\n } else if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n state = PATH;\n if (char != '/') continue;\n } break;\n\n case PATH:\n if (\n char == EOF || char == '/' ||\n (char == '\\\\' && isSpecial(url)) ||\n (!stateOverride && (char == '?' || char == '#'))\n ) {\n if (isDoubleDot(buffer)) {\n shortenURLsPath(url);\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else if (isSingleDot(buffer)) {\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else {\n if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n if (url.host) url.host = '';\n buffer = buffer.charAt(0) + ':'; // normalize windows drive letter\n }\n url.path.push(buffer);\n }\n buffer = '';\n if (url.scheme == 'file' && (char == EOF || char == '?' || char == '#')) {\n while (url.path.length > 1 && url.path[0] === '') {\n url.path.shift();\n }\n }\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n }\n } else {\n buffer += percentEncode(char, pathPercentEncodeSet);\n } break;\n\n case CANNOT_BE_A_BASE_URL_PATH:\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n url.path[0] += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case QUERY:\n if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n if (char == \"'\" && isSpecial(url)) url.query += '%27';\n else if (char == '#') url.query += '%23';\n else url.query += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case FRAGMENT:\n if (char != EOF) url.fragment += percentEncode(char, fragmentPercentEncodeSet);\n break;\n }\n\n pointer++;\n }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n var that = anInstance(this, URLConstructor, 'URL');\n var base = arguments.length > 1 ? arguments[1] : undefined;\n var urlString = String(url);\n var state = setInternalState(that, { type: 'URL' });\n var baseState, failure;\n if (base !== undefined) {\n if (base instanceof URLConstructor) baseState = getInternalURLState(base);\n else {\n failure = parseURL(baseState = {}, String(base));\n if (failure) throw TypeError(failure);\n }\n }\n failure = parseURL(state, urlString, null, baseState);\n if (failure) throw TypeError(failure);\n var searchParams = state.searchParams = new URLSearchParams();\n var searchParamsState = getInternalSearchParamsState(searchParams);\n searchParamsState.updateSearchParams(state.query);\n searchParamsState.updateURL = function () {\n state.query = String(searchParams) || null;\n };\n if (!DESCRIPTORS) {\n that.href = serializeURL.call(that);\n that.origin = getOrigin.call(that);\n that.protocol = getProtocol.call(that);\n that.username = getUsername.call(that);\n that.password = getPassword.call(that);\n that.host = getHost.call(that);\n that.hostname = getHostname.call(that);\n that.port = getPort.call(that);\n that.pathname = getPathname.call(that);\n that.search = getSearch.call(that);\n that.searchParams = getSearchParams.call(that);\n that.hash = getHash.call(that);\n }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar serializeURL = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var username = url.username;\n var password = url.password;\n var host = url.host;\n var port = url.port;\n var path = url.path;\n var query = url.query;\n var fragment = url.fragment;\n var output = scheme + ':';\n if (host !== null) {\n output += '//';\n if (includesCredentials(url)) {\n output += username + (password ? ':' + password : '') + '@';\n }\n output += serializeHost(host);\n if (port !== null) output += ':' + port;\n } else if (scheme == 'file') output += '//';\n output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n if (query !== null) output += '?' + query;\n if (fragment !== null) output += '#' + fragment;\n return output;\n};\n\nvar getOrigin = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var port = url.port;\n if (scheme == 'blob') try {\n return new URL(scheme.path[0]).origin;\n } catch (error) {\n return 'null';\n }\n if (scheme == 'file' || !isSpecial(url)) return 'null';\n return scheme + '://' + serializeHost(url.host) + (port !== null ? ':' + port : '');\n};\n\nvar getProtocol = function () {\n return getInternalURLState(this).scheme + ':';\n};\n\nvar getUsername = function () {\n return getInternalURLState(this).username;\n};\n\nvar getPassword = function () {\n return getInternalURLState(this).password;\n};\n\nvar getHost = function () {\n var url = getInternalURLState(this);\n var host = url.host;\n var port = url.port;\n return host === null ? ''\n : port === null ? serializeHost(host)\n : serializeHost(host) + ':' + port;\n};\n\nvar getHostname = function () {\n var host = getInternalURLState(this).host;\n return host === null ? '' : serializeHost(host);\n};\n\nvar getPort = function () {\n var port = getInternalURLState(this).port;\n return port === null ? '' : String(port);\n};\n\nvar getPathname = function () {\n var url = getInternalURLState(this);\n var path = url.path;\n return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n};\n\nvar getSearch = function () {\n var query = getInternalURLState(this).query;\n return query ? '?' + query : '';\n};\n\nvar getSearchParams = function () {\n return getInternalURLState(this).searchParams;\n};\n\nvar getHash = function () {\n var fragment = getInternalURLState(this).fragment;\n return fragment ? '#' + fragment : '';\n};\n\nvar accessorDescriptor = function (getter, setter) {\n return { get: getter, set: setter, configurable: true, enumerable: true };\n};\n\nif (DESCRIPTORS) {\n defineProperties(URLPrototype, {\n // `URL.prototype.href` accessors pair\n // https://url.spec.whatwg.org/#dom-url-href\n href: accessorDescriptor(serializeURL, function (href) {\n var url = getInternalURLState(this);\n var urlString = String(href);\n var failure = parseURL(url, urlString);\n if (failure) throw TypeError(failure);\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.origin` getter\n // https://url.spec.whatwg.org/#dom-url-origin\n origin: accessorDescriptor(getOrigin),\n // `URL.prototype.protocol` accessors pair\n // https://url.spec.whatwg.org/#dom-url-protocol\n protocol: accessorDescriptor(getProtocol, function (protocol) {\n var url = getInternalURLState(this);\n parseURL(url, String(protocol) + ':', SCHEME_START);\n }),\n // `URL.prototype.username` accessors pair\n // https://url.spec.whatwg.org/#dom-url-username\n username: accessorDescriptor(getUsername, function (username) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(username));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.username = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.password` accessors pair\n // https://url.spec.whatwg.org/#dom-url-password\n password: accessorDescriptor(getPassword, function (password) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(password));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.password = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.host` accessors pair\n // https://url.spec.whatwg.org/#dom-url-host\n host: accessorDescriptor(getHost, function (host) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(host), HOST);\n }),\n // `URL.prototype.hostname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hostname\n hostname: accessorDescriptor(getHostname, function (hostname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(hostname), HOSTNAME);\n }),\n // `URL.prototype.port` accessors pair\n // https://url.spec.whatwg.org/#dom-url-port\n port: accessorDescriptor(getPort, function (port) {\n var url = getInternalURLState(this);\n if (cannotHaveUsernamePasswordPort(url)) return;\n port = String(port);\n if (port == '') url.port = null;\n else parseURL(url, port, PORT);\n }),\n // `URL.prototype.pathname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-pathname\n pathname: accessorDescriptor(getPathname, function (pathname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n url.path = [];\n parseURL(url, pathname + '', PATH_START);\n }),\n // `URL.prototype.search` accessors pair\n // https://url.spec.whatwg.org/#dom-url-search\n search: accessorDescriptor(getSearch, function (search) {\n var url = getInternalURLState(this);\n search = String(search);\n if (search == '') {\n url.query = null;\n } else {\n if ('?' == search.charAt(0)) search = search.slice(1);\n url.query = '';\n parseURL(url, search, QUERY);\n }\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.searchParams` getter\n // https://url.spec.whatwg.org/#dom-url-searchparams\n searchParams: accessorDescriptor(getSearchParams),\n // `URL.prototype.hash` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hash\n hash: accessorDescriptor(getHash, function (hash) {\n var url = getInternalURLState(this);\n hash = String(hash);\n if (hash == '') {\n url.fragment = null;\n return;\n }\n if ('#' == hash.charAt(0)) hash = hash.slice(1);\n url.fragment = '';\n parseURL(url, hash, FRAGMENT);\n })\n });\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\nredefine(URLPrototype, 'toJSON', function toJSON() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\nredefine(URLPrototype, 'toString', function toString() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\nif (NativeURL) {\n var nativeCreateObjectURL = NativeURL.createObjectURL;\n var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n // `URL.createObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n if (nativeCreateObjectURL) redefine(URLConstructor, 'createObjectURL', function createObjectURL(blob) {\n return nativeCreateObjectURL.apply(NativeURL, arguments);\n });\n // `URL.revokeObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n if (nativeRevokeObjectURL) redefine(URLConstructor, 'revokeObjectURL', function revokeObjectURL(url) {\n return nativeRevokeObjectURL.apply(NativeURL, arguments);\n });\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n URL: URLConstructor\n});\n","'use strict';\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\nvar floor = Math.floor;\nvar stringFromCharCode = String.fromCharCode;\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // It's a high surrogate, and there is a next character.\n var extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // It's an unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair.\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n for (; delta > baseMinusTMin * tMax >> 1; k += base) {\n delta = floor(delta / baseMinusTMin);\n }\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\n// eslint-disable-next-line max-statements -- TODO\nvar encode = function (input) {\n var output = [];\n\n // Convert the input in UCS-2 to an array of Unicode code points.\n input = ucs2decode(input);\n\n // Cache the length.\n var inputLength = input.length;\n\n // Initialize the state.\n var n = initialN;\n var delta = 0;\n var bias = initialBias;\n var i, currentValue;\n\n // Handle the basic code points.\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < 0x80) {\n output.push(stringFromCharCode(currentValue));\n }\n }\n\n var basicLength = output.length; // number of basic code points.\n var handledCPCount = basicLength; // number of code points that have been handled;\n\n // Finish the basic string with a delimiter unless it's empty.\n if (basicLength) {\n output.push(delimiter);\n }\n\n // Main encoding loop:\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next larger one:\n var m = maxInt;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n }\n\n // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, but guard against overflow.\n var handledCPCountPlusOne = handledCPCount + 1;\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n throw RangeError(OVERFLOW_ERROR);\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < n && ++delta > maxInt) {\n throw RangeError(OVERFLOW_ERROR);\n }\n if (currentValue == n) {\n // Represent delta as a generalized variable-length integer.\n var q = delta;\n for (var k = base; /* no condition */; k += base) {\n var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n if (q < t) break;\n var qMinusT = q - t;\n var baseMinusT = base - t;\n output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n q = floor(qMinusT / baseMinusT);\n }\n\n output.push(stringFromCharCode(digitToBasic(q)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n ++handledCPCount;\n }\n }\n\n ++delta;\n ++n;\n }\n return output.join('');\n};\n\nmodule.exports = function (input) {\n var encoded = [];\n var labels = input.toLowerCase().replace(regexSeparators, '\\u002E').split('.');\n var i, label;\n for (i = 0; i < labels.length; i++) {\n label = labels[i];\n encoded.push(regexNonASCII.test(label) ? 'xn--' + encode(label) : label);\n }\n return encoded.join('.');\n};\n","var anObject = require('../internals/an-object');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = function (it) {\n var iteratorMethod = getIteratorMethod(it);\n if (typeof iteratorMethod != 'function') {\n throw TypeError(String(it) + ' is not iterable');\n } return anObject(iteratorMethod.call(it));\n};\n","'use strict';\nvar $ = require('../internals/export');\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\n$({ target: 'URL', proto: true, enumerable: true }, {\n toJSON: function toJSON() {\n return URL.prototype.toString.call(this);\n }\n});\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","/* eslint-disable no-shadow, no-param-reassign, prefer-template, brace-style, guard-for-in, no-restricted-syntax */\nimport { AjaxAbortedError, AjaxError, AjaxTimeoutError, NetworkError, TokenExpiredError, PaywallError } from 'es6/core/errors';\nimport { camelCaseKeys, underscoreKeys } from 'es6/helpers/case';\n\nconst CACHE_GENERATION_TIMEOUT = 2000;\n\n/**\n * This class handles API calls to iKnow APIs and returns the appropriate response\n * based on what the APIs are expected to return.\n *\n * IMPORTANT NOTE: Some of these methods are used by the widgets and therefore\n * this class does not use any global variables (such as jQuery or underscore).\n */\nexport default class Ajax {\n constructor(pathBase, params = {}, options = {}) {\n options = Object.assign({\n headers: {},\n method: 'GET',\n withCredentials: false,\n }, options);\n\n this.xhr = new XMLHttpRequest();\n this._promise = new Promise((resolve, reject) => {\n this.xhr.onload = () => {\n // If there is no content, IE8 and IE9 will return a\n // 1223 status message instead of a 204.\n if (this.xhr.status === 1223) {\n resolve(null);\n return;\n }\n\n let response = this.xhr.responseText;\n try {\n // Parse JSON and CamelCase hash keys.\n response = sanitizeResponse(response);\n } catch (err) {\n // Response is not JSON, but a Raw ruby error.\n // Build out the response as best we can.\n response = {\n error: {\n message: this.xhr.statusText,\n code: this.xhr.status,\n exception: {\n // Use the response as it includes a backtrace (fyi, it also includes\n // some other stuff which we don't need, but is harmless).\n backtrace: response,\n },\n },\n };\n }\n\n if (this.xhr.status === 202) {\n // 'Cache Generation Started' on the server, so repeat the request.\n setTimeout(() => {\n new Ajax(pathBase, params, options)\n .then(resolve, reject);\n }, CACHE_GENERATION_TIMEOUT);\n } else if (this.xhr.status >= 200 && this.xhr.status < 300) {\n // Handle some form of success.\n resolve(response);\n } else if (this.xhr.status === 402) {\n reject(new PaywallError());\n } else {\n // Handle an error.\n let error;\n if (response.errorDescription) {\n // Old API style error. Format is {error:\"invalid_token\",error_description:\"Given access token is invalid.\"}\n if (response.error === 'invalid_token') {\n error = new TokenExpiredError(\n response.errorDescription,\n this.xhr.status\n );\n } else {\n // Return a generic error.\n error = new Error(response.errorDescription);\n }\n } else {\n // APIv2 error (or raw ruby error formatted the same way).\n error = new AjaxError(\n response.error.message,\n response.error.code,\n response.error.exception,\n {\n pathBase,\n params,\n options,\n }\n );\n }\n reject(error);\n }\n };\n\n this.xhr.onabort = () => {\n reject(new AjaxAbortedError());\n };\n\n this.xhr.onerror = () => {\n // Status means the request was aborted. Modern browsers will just use\n // the onabort callback.\n if (this.xhr.status === 0) {\n reject(new AjaxAbortedError());\n } else {\n reject(new AjaxError(this.statusText));\n }\n };\n\n this.xhr.ontimeout = () => {\n reject(new AjaxTimeoutError());\n };\n\n // Certain network problems will throw an error when calling\n // send().\n try {\n if (options.method === 'GET') {\n const path = pathBase + '?' + preparePayload(params);\n\n this.xhr.open('GET', path, true);\n setOptions(this.xhr, options);\n this.xhr.send();\n } else {\n this.xhr.open(options.method, pathBase, true);\n setOptions(this.xhr, options);\n\n if (options.headers['Content-Type'] === 'application/json') {\n this.xhr.send(preparePayload(params, true));\n } else {\n this.xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n this.xhr.send(preparePayload(params, false));\n }\n }\n } catch (e) {\n reject(new NetworkError(e.message));\n }\n });\n }\n\n abort() {\n this.xhr.abort();\n }\n\n then(...args) {\n return this._promise.then(...args);\n }\n\n catch(...args) {\n return this._promise.catch(...args);\n }\n}\n\n/**\n * Converts an object to URL params. Should adhere to the same standards\n * and API that jQuery does: http://api.jquery.com/jquery.param/\n *\n * A lot of the code was structured after:\n * https://github.com/jquery/jquery/blob/2e10af143b7eafb7142524f6534a62aee1910bd1/src/ajax.js#L507\n *\n * @param {Object} obj\n * @returns {String}\n */\nfunction params(obj) {\n const parameters = [];\n\n const add = (key, value) => {\n parameters.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));\n };\n\n const buildParams = (prefix, obj) => {\n // Handle the case for the array.\n if (Array.isArray(obj)) {\n obj.forEach((v, i) => {\n if (/\\[\\]$/.test(prefix)) {\n add(prefix, v);\n } else {\n const key = typeof v === 'object' || Array.isArray(v) ? i : '';\n buildParams(`${prefix}[${key}]`, v);\n }\n });\n }\n\n // Handle the case for an object.\n else if (obj !== null && typeof obj === 'object') {\n Object.keys(obj).forEach(key => buildParams(`${prefix}[${key}]`, obj[key]));\n }\n\n // Not an object, just encode as is.\n else {\n add(prefix, obj);\n }\n };\n\n Object.keys(obj).forEach(key => buildParams(key, obj[key]));\n\n return parameters.join('&');\n}\n\n/**\n * Prepares a payload to be sent to the server.\n *\n * @param {Object} data\n * @param {Boolean} stringify true if the API isn't using application/json\n * @returns {String}\n */\nfunction preparePayload(data, stringify = false) {\n const underscoredData = underscoreKeys(data);\n return stringify ? JSON.stringify(underscoredData) : params(underscoredData);\n}\n\n/**\n * Takes the response from the API and converts it to JSON with\n * camelCased keys.\n *\n * @param {String} responseText\n * @returns {Object}\n */\nfunction sanitizeResponse(responseText) {\n return camelCaseKeys(JSON.parse(responseText));\n}\n\n/**\n * Sets options on the XHR object that were passed into the Ajax\n * instance.\n *\n * @param {XMLHttpRequest} xhr\n * @param {Object} options\n */\nfunction setOptions(xhr, options) {\n if (options.timeout) {\n xhr.timeout = options.timeout;\n }\n\n if (options.withCredentials) {\n xhr.withCredentials = true;\n }\n\n for (const header in options.headers) {\n xhr.setRequestHeader(header, options.headers[header]);\n }\n}\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*!\n * JavaScript Cookie v2.1.2\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;\n\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n define(factory);\n } else if ((typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object') {\n module.exports = factory();\n } else {\n var OldCookies = window.Cookies;\n var api = window.Cookies = factory();\n\n api.noConflict = function () {\n window.Cookies = OldCookies;\n return api;\n };\n }\n})(function () {\n function extend() {\n var i = 0;\n var result = {};\n\n for (; i < arguments.length; i++) {\n var attributes = arguments[i];\n\n for (var key in attributes) {\n result[key] = attributes[key];\n }\n }\n\n return result;\n }\n\n function init(converter) {\n function api(key, value, attributes) {\n var result;\n\n if (typeof document === 'undefined') {\n return;\n } // Write\n\n\n if (arguments.length > 1) {\n attributes = extend({\n path: '/'\n }, api.defaults, attributes);\n\n if (typeof attributes.expires === 'number') {\n var expires = new Date();\n expires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5);\n attributes.expires = expires;\n }\n\n try {\n result = JSON.stringify(value);\n\n if (/^[\\{\\[]/.test(result)) {\n value = result;\n }\n } catch (e) {}\n\n if (!converter.write) {\n value = encodeURIComponent(String(value)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n } else {\n value = converter.write(value, key);\n }\n\n key = encodeURIComponent(String(key));\n key = key.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent);\n key = key.replace(/[\\(\\)]/g, escape);\n return document.cookie = [key, '=', value, attributes.expires && '; expires=' + attributes.expires.toUTCString(), // use expires attribute, max-age is not supported by IE\n attributes.path && '; path=' + attributes.path, attributes.domain && '; domain=' + attributes.domain, attributes.secure ? '; secure' : ''].join('');\n } // Read\n\n\n if (!key) {\n result = {};\n } // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all. Also prevents odd result when\n // calling \"get()\"\n\n\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var rdecode = /(%[0-9A-Z]{2})+/g;\n var i = 0;\n\n for (; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var cookie = parts.slice(1).join('=');\n\n if (cookie.charAt(0) === '\"') {\n cookie = cookie.slice(1, -1);\n }\n\n try {\n var name = parts[0].replace(rdecode, decodeURIComponent);\n cookie = converter.read ? converter.read(cookie, name) : converter(cookie, name) || cookie.replace(rdecode, decodeURIComponent);\n\n if (this.json) {\n try {\n cookie = JSON.parse(cookie);\n } catch (e) {}\n }\n\n if (key === name) {\n result = cookie;\n break;\n }\n\n if (!key) {\n result[name] = cookie;\n }\n } catch (e) {}\n }\n\n return result;\n }\n\n api.set = api;\n\n api.get = function (key) {\n return api(key);\n };\n\n api.getJSON = function () {\n return api.apply({\n json: true\n }, [].slice.call(arguments));\n };\n\n api.defaults = {};\n\n api.remove = function (key, attributes) {\n api(key, '', extend(attributes, {\n expires: -1\n }));\n };\n\n api.withConverter = init;\n return api;\n }\n\n return init(function () {});\n});","\"use strict\";\n\nvar window = require(\"global/window\");\n\nvar isFunction = require(\"is-function\");\n\nvar parseHeaders = require(\"parse-headers\");\n\nvar xtend = require(\"xtend\");\n\nmodule.exports = createXHR;\ncreateXHR.XMLHttpRequest = window.XMLHttpRequest || noop;\ncreateXHR.XDomainRequest = \"withCredentials\" in new createXHR.XMLHttpRequest() ? createXHR.XMLHttpRequest : window.XDomainRequest;\nforEachArray([\"get\", \"put\", \"post\", \"patch\", \"head\", \"delete\"], function (method) {\n createXHR[method === \"delete\" ? \"del\" : method] = function (uri, options, callback) {\n options = initParams(uri, options, callback);\n options.method = method.toUpperCase();\n return _createXHR(options);\n };\n});\n\nfunction forEachArray(array, iterator) {\n for (var i = 0; i < array.length; i++) {\n iterator(array[i]);\n }\n}\n\nfunction isEmpty(obj) {\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) return false;\n }\n\n return true;\n}\n\nfunction initParams(uri, options, callback) {\n var params = uri;\n\n if (isFunction(options)) {\n callback = options;\n\n if (typeof uri === \"string\") {\n params = {\n uri: uri\n };\n }\n } else {\n params = xtend(options, {\n uri: uri\n });\n }\n\n params.callback = callback;\n return params;\n}\n\nfunction createXHR(uri, options, callback) {\n options = initParams(uri, options, callback);\n return _createXHR(options);\n}\n\nfunction _createXHR(options) {\n if (typeof options.callback === \"undefined\") {\n throw new Error(\"callback argument missing\");\n }\n\n var called = false;\n\n var callback = function cbOnce(err, response, body) {\n if (!called) {\n called = true;\n options.callback(err, response, body);\n }\n };\n\n function readystatechange() {\n if (xhr.readyState === 4) {\n setTimeout(loadFunc, 0);\n }\n }\n\n function getBody() {\n // Chrome with requestType=blob throws errors arround when even testing access to responseText\n var body = undefined;\n\n if (xhr.response) {\n body = xhr.response;\n } else {\n body = xhr.responseText || getXml(xhr);\n }\n\n if (isJson) {\n try {\n body = JSON.parse(body);\n } catch (e) {}\n }\n\n return body;\n }\n\n function errorFunc(evt) {\n clearTimeout(timeoutTimer);\n\n if (!(evt instanceof Error)) {\n evt = new Error(\"\" + (evt || \"Unknown XMLHttpRequest Error\"));\n }\n\n evt.statusCode = 0;\n return callback(evt, failureResponse);\n } // will load the data & process the response in a special response object\n\n\n function loadFunc() {\n if (aborted) return;\n var status;\n clearTimeout(timeoutTimer);\n\n if (options.useXDR && xhr.status === undefined) {\n //IE8 CORS GET successful response doesn't have a status field, but body is fine\n status = 200;\n } else {\n status = xhr.status === 1223 ? 204 : xhr.status;\n }\n\n var response = failureResponse;\n var err = null;\n\n if (status !== 0) {\n response = {\n body: getBody(),\n statusCode: status,\n method: method,\n headers: {},\n url: uri,\n rawRequest: xhr\n };\n\n if (xhr.getAllResponseHeaders) {\n //remember xhr can in fact be XDR for CORS in IE\n response.headers = parseHeaders(xhr.getAllResponseHeaders());\n }\n } else {\n err = new Error(\"Internal XMLHttpRequest Error\");\n }\n\n return callback(err, response, response.body);\n }\n\n var xhr = options.xhr || null;\n\n if (!xhr) {\n if (options.cors || options.useXDR) {\n xhr = new createXHR.XDomainRequest();\n } else {\n xhr = new createXHR.XMLHttpRequest();\n }\n }\n\n var key;\n var aborted;\n var uri = xhr.url = options.uri || options.url;\n var method = xhr.method = options.method || \"GET\";\n var body = options.body || options.data;\n var headers = xhr.headers = options.headers || {};\n var sync = !!options.sync;\n var isJson = false;\n var timeoutTimer;\n var failureResponse = {\n body: undefined,\n headers: {},\n statusCode: 0,\n method: method,\n url: uri,\n rawRequest: xhr\n };\n\n if (\"json\" in options && options.json !== false) {\n isJson = true;\n headers[\"accept\"] || headers[\"Accept\"] || (headers[\"Accept\"] = \"application/json\"); //Don't override existing accept header declared by user\n\n if (method !== \"GET\" && method !== \"HEAD\") {\n headers[\"content-type\"] || headers[\"Content-Type\"] || (headers[\"Content-Type\"] = \"application/json\"); //Don't override existing accept header declared by user\n\n body = JSON.stringify(options.json === true ? body : options.json);\n }\n }\n\n xhr.onreadystatechange = readystatechange;\n xhr.onload = loadFunc;\n xhr.onerror = errorFunc; // IE9 must have onprogress be set to a unique function.\n\n xhr.onprogress = function () {// IE must die\n };\n\n xhr.onabort = function () {\n aborted = true;\n };\n\n xhr.ontimeout = errorFunc;\n xhr.open(method, uri, !sync, options.username, options.password); //has to be after open\n\n if (!sync) {\n xhr.withCredentials = !!options.withCredentials;\n } // Cannot set timeout with sync request\n // not setting timeout on the xhr object, because of old webkits etc. not handling that correctly\n // both npm's request and jquery 1.x use this kind of timeout, so this is being consistent\n\n\n if (!sync && options.timeout > 0) {\n timeoutTimer = setTimeout(function () {\n if (aborted) return;\n aborted = true; //IE9 may still call readystatechange\n\n xhr.abort(\"timeout\");\n var e = new Error(\"XMLHttpRequest timeout\");\n e.code = \"ETIMEDOUT\";\n errorFunc(e);\n }, options.timeout);\n }\n\n if (xhr.setRequestHeader) {\n for (key in headers) {\n if (headers.hasOwnProperty(key)) {\n xhr.setRequestHeader(key, headers[key]);\n }\n }\n } else if (options.headers && !isEmpty(options.headers)) {\n throw new Error(\"Headers cannot be set on an XDomainRequest object\");\n }\n\n if (\"responseType\" in options) {\n xhr.responseType = options.responseType;\n }\n\n if (\"beforeSend\" in options && typeof options.beforeSend === \"function\") {\n options.beforeSend(xhr);\n } // Microsoft Edge browser sends \"undefined\" when send is called with undefined value.\n // XMLHttpRequest spec says to pass null as body to indicate no body\n // See https://github.com/naugtur/xhr/issues/100.\n\n\n xhr.send(body || null);\n return xhr;\n}\n\nfunction getXml(xhr) {\n if (xhr.responseType === \"document\") {\n return xhr.responseXML;\n }\n\n var firefoxBugTakenEffect = xhr.responseXML && xhr.responseXML.documentElement.nodeName === \"parsererror\";\n\n if (xhr.responseType === \"\" && !firefoxBugTakenEffect) {\n return xhr.responseXML;\n }\n\n return null;\n}\n\nfunction noop() {}","var win;\n\nif (typeof window !== \"undefined\") {\n win = window;\n} else if (typeof global !== \"undefined\") {\n win = global;\n} else if (typeof self !== \"undefined\") {\n win = self;\n} else {\n win = {};\n}\n\nmodule.exports = win;","var trim = require('trim'),\n forEach = require('for-each'),\n isArray = function isArray(arg) {\n return Object.prototype.toString.call(arg) === '[object Array]';\n};\n\nmodule.exports = function (headers) {\n if (!headers) return {};\n var result = {};\n forEach(trim(headers).split('\\n'), function (row) {\n var index = row.indexOf(':'),\n key = trim(row.slice(0, index)).toLowerCase(),\n value = trim(row.slice(index + 1));\n\n if (typeof result[key] === 'undefined') {\n result[key] = value;\n } else if (isArray(result[key])) {\n result[key].push(value);\n } else {\n result[key] = [result[key], value];\n }\n });\n return result;\n};","exports = module.exports = trim;\n\nfunction trim(str) {\n return str.replace(/^\\s*|\\s*$/g, '');\n}\n\nexports.left = function (str) {\n return str.replace(/^\\s*/, '');\n};\n\nexports.right = function (str) {\n return str.replace(/\\s*$/, '');\n};","var isFunction = require('is-function');\n\nmodule.exports = forEach;\nvar toString = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction forEach(list, iterator, context) {\n if (!isFunction(iterator)) {\n throw new TypeError('iterator must be a function');\n }\n\n if (arguments.length < 3) {\n context = this;\n }\n\n if (toString.call(list) === '[object Array]') forEachArray(list, iterator, context);else if (typeof list === 'string') forEachString(list, iterator, context);else forEachObject(list, iterator, context);\n}\n\nfunction forEachArray(array, iterator, context) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n iterator.call(context, array[i], i, array);\n }\n }\n}\n\nfunction forEachString(string, iterator, context) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n iterator.call(context, string.charAt(i), i, string);\n }\n}\n\nfunction forEachObject(object, iterator, context) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n iterator.call(context, object[k], k, object);\n }\n }\n}","module.exports = extend;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {};\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*!\n * @overview RSVP - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2016 Yehuda Katz, Tom Dale, Stefan Penner and contributors\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/tildeio/rsvp.js/master/LICENSE\n * @version 3.6.2\n */\nfunction indexOf(callbacks, callback) {\n for (var i = 0, l = callbacks.length; i < l; i++) {\n if (callbacks[i] === callback) {\n return i;\n }\n }\n\n return -1;\n}\n\nfunction callbacksFor(object) {\n var callbacks = object._promiseCallbacks;\n\n if (!callbacks) {\n callbacks = object._promiseCallbacks = {};\n }\n\n return callbacks;\n}\n/**\n @class RSVP.EventTarget\n*/\n\n\nvar EventTarget = {\n /**\n `RSVP.EventTarget.mixin` extends an object with EventTarget methods. For\n Example:\n ```javascript\n let object = {};\n RSVP.EventTarget.mixin(object);\n object.on('finished', function(event) {\n // handle event\n });\n object.trigger('finished', { detail: value });\n ```\n `EventTarget.mixin` also works with prototypes:\n ```javascript\n let Person = function() {};\n RSVP.EventTarget.mixin(Person.prototype);\n let yehuda = new Person();\n let tom = new Person();\n yehuda.on('poke', function(event) {\n console.log('Yehuda says OW');\n });\n tom.on('poke', function(event) {\n console.log('Tom says OW');\n });\n yehuda.trigger('poke');\n tom.trigger('poke');\n ```\n @method mixin\n @for RSVP.EventTarget\n @private\n @param {Object} object object to extend with EventTarget methods\n */\n mixin: function mixin(object) {\n object['on'] = this['on'];\n object['off'] = this['off'];\n object['trigger'] = this['trigger'];\n object._promiseCallbacks = undefined;\n return object;\n },\n\n /**\n Registers a callback to be executed when `eventName` is triggered\n ```javascript\n object.on('event', function(eventInfo){\n // handle the event\n });\n object.trigger('event');\n ```\n @method on\n @for RSVP.EventTarget\n @private\n @param {String} eventName name of the event to listen for\n @param {Function} callback function to be called when the event is triggered.\n */\n on: function on(eventName, callback) {\n if (typeof callback !== 'function') {\n throw new TypeError('Callback must be a function');\n }\n\n var allCallbacks = callbacksFor(this),\n callbacks = void 0;\n callbacks = allCallbacks[eventName];\n\n if (!callbacks) {\n callbacks = allCallbacks[eventName] = [];\n }\n\n if (indexOf(callbacks, callback) === -1) {\n callbacks.push(callback);\n }\n },\n\n /**\n You can use `off` to stop firing a particular callback for an event:\n ```javascript\n function doStuff() { // do stuff! }\n object.on('stuff', doStuff);\n object.trigger('stuff'); // doStuff will be called\n // Unregister ONLY the doStuff callback\n object.off('stuff', doStuff);\n object.trigger('stuff'); // doStuff will NOT be called\n ```\n If you don't pass a `callback` argument to `off`, ALL callbacks for the\n event will not be executed when the event fires. For example:\n ```javascript\n let callback1 = function(){};\n let callback2 = function(){};\n object.on('stuff', callback1);\n object.on('stuff', callback2);\n object.trigger('stuff'); // callback1 and callback2 will be executed.\n object.off('stuff');\n object.trigger('stuff'); // callback1 and callback2 will not be executed!\n ```\n @method off\n @for RSVP.EventTarget\n @private\n @param {String} eventName event to stop listening to\n @param {Function} callback optional argument. If given, only the function\n given will be removed from the event's callback queue. If no `callback`\n argument is given, all callbacks will be removed from the event's callback\n queue.\n */\n off: function off(eventName, callback) {\n var allCallbacks = callbacksFor(this),\n callbacks = void 0,\n index = void 0;\n\n if (!callback) {\n allCallbacks[eventName] = [];\n return;\n }\n\n callbacks = allCallbacks[eventName];\n index = indexOf(callbacks, callback);\n\n if (index !== -1) {\n callbacks.splice(index, 1);\n }\n },\n\n /**\n Use `trigger` to fire custom events. For example:\n ```javascript\n object.on('foo', function(){\n console.log('foo event happened!');\n });\n object.trigger('foo');\n // 'foo event happened!' logged to the console\n ```\n You can also pass a value as a second argument to `trigger` that will be\n passed as an argument to all event listeners for the event:\n ```javascript\n object.on('foo', function(value){\n console.log(value.name);\n });\n object.trigger('foo', { name: 'bar' });\n // 'bar' logged to the console\n ```\n @method trigger\n @for RSVP.EventTarget\n @private\n @param {String} eventName name of the event to be triggered\n @param {*} options optional value to be passed to any event handlers for\n the given `eventName`\n */\n trigger: function trigger(eventName, options, label) {\n var allCallbacks = callbacksFor(this),\n callbacks = void 0,\n callback = void 0;\n\n if (callbacks = allCallbacks[eventName]) {\n // Don't cache the callbacks.length since it may grow\n for (var i = 0; i < callbacks.length; i++) {\n callback = callbacks[i];\n callback(options, label);\n }\n }\n }\n};\nvar config = {\n instrument: false\n};\nEventTarget['mixin'](config);\n\nfunction configure(name, value) {\n if (arguments.length === 2) {\n config[name] = value;\n } else {\n return config[name];\n }\n}\n\nfunction objectOrFunction(x) {\n var type = _typeof(x);\n\n return x !== null && (type === 'object' || type === 'function');\n}\n\nfunction isFunction(x) {\n return typeof x === 'function';\n}\n\nfunction isObject(x) {\n return x !== null && _typeof(x) === 'object';\n}\n\nfunction isMaybeThenable(x) {\n return x !== null && _typeof(x) === 'object';\n}\n\nvar _isArray = void 0;\n\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function _isArray(x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nvar isArray = _isArray; // Date.now is not available in browsers < IE9\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now#Compatibility\n\nvar now = Date.now || function () {\n return new Date().getTime();\n};\n\nvar queue = [];\n\nfunction scheduleFlush() {\n setTimeout(function () {\n for (var i = 0; i < queue.length; i++) {\n var entry = queue[i];\n var payload = entry.payload;\n payload.guid = payload.key + payload.id;\n payload.childGuid = payload.key + payload.childId;\n\n if (payload.error) {\n payload.stack = payload.error.stack;\n }\n\n config['trigger'](entry.name, entry.payload);\n }\n\n queue.length = 0;\n }, 50);\n}\n\nfunction instrument(eventName, promise, child) {\n if (1 === queue.push({\n name: eventName,\n payload: {\n key: promise._guidKey,\n id: promise._id,\n eventName: eventName,\n detail: promise._result,\n childId: child && child._id,\n label: promise._label,\n timeStamp: now(),\n error: config[\"instrument-with-stack\"] ? new Error(promise._label) : null\n }\n })) {\n scheduleFlush();\n }\n}\n/**\n `RSVP.Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new RSVP.Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = RSVP.Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {*} object value that the returned promise will be resolved with\n @param {String} label optional string for identifying the returned promise.\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\n\n\nfunction resolve$1(object, label) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && _typeof(object) === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop, label);\n resolve(promise, object);\n return promise;\n}\n\nfunction withOwnPromise() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar GET_THEN_ERROR = new ErrorObject();\n\nfunction getThen(promise) {\n try {\n return promise.then;\n } catch (error) {\n GET_THEN_ERROR.error = error;\n return GET_THEN_ERROR;\n }\n}\n\nfunction tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n try {\n then$$1.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then$$1) {\n config.async(function (promise) {\n var sealed = false;\n var error = tryThen(then$$1, thenable, function (value) {\n if (sealed) {\n return;\n }\n\n sealed = true;\n\n if (thenable !== value) {\n resolve(promise, value, undefined);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n\n sealed = true;\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n thenable._onError = null;\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n if (thenable !== value) {\n resolve(promise, value, undefined);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then$$1) {\n var isOwnThenable = maybeThenable.constructor === promise.constructor && then$$1 === then && promise.constructor.resolve === resolve$1;\n\n if (isOwnThenable) {\n handleOwnThenable(promise, maybeThenable);\n } else if (then$$1 === GET_THEN_ERROR) {\n reject(promise, GET_THEN_ERROR.error);\n GET_THEN_ERROR.error = null;\n } else if (isFunction(then$$1)) {\n handleForeignThenable(promise, maybeThenable, then$$1);\n } else {\n fulfill(promise, maybeThenable);\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n fulfill(promise, value);\n } else if (objectOrFunction(value)) {\n handleMaybeThenable(promise, value, getThen(value));\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onError) {\n promise._onError(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length === 0) {\n if (config.instrument) {\n instrument('fulfilled', promise);\n }\n } else {\n config.async(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._state = REJECTED;\n promise._result = reason;\n config.async(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var subscribers = parent._subscribers;\n var length = subscribers.length;\n parent._onError = null;\n subscribers[length] = child;\n subscribers[length + FULFILLED] = onFulfillment;\n subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n config.async(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (config.instrument) {\n instrument(settled === FULFILLED ? 'fulfilled' : 'rejected', promise);\n }\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = void 0,\n callback = void 0,\n result = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, result);\n } else {\n callback(result);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction ErrorObject() {\n this.error = null;\n}\n\nvar TRY_CATCH_ERROR = new ErrorObject();\n\nfunction tryCatch(callback, result) {\n try {\n return callback(result);\n } catch (e) {\n TRY_CATCH_ERROR.error = e;\n return TRY_CATCH_ERROR;\n }\n}\n\nfunction invokeCallback(state, promise, callback, result) {\n var hasCallback = isFunction(callback);\n var value = void 0,\n error = void 0;\n\n if (hasCallback) {\n value = tryCatch(callback, result);\n\n if (value === TRY_CATCH_ERROR) {\n error = value.error;\n value.error = null; // release\n } else if (value === promise) {\n reject(promise, withOwnPromise());\n return;\n }\n } else {\n value = result;\n }\n\n if (promise._state !== PENDING) {// noop\n } else if (hasCallback && error === undefined) {\n resolve(promise, value);\n } else if (error !== undefined) {\n reject(promise, error);\n } else if (state === FULFILLED) {\n fulfill(promise, value);\n } else if (state === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n var resolved = false;\n\n try {\n resolver(function (value) {\n if (resolved) {\n return;\n }\n\n resolved = true;\n resolve(promise, value);\n }, function (reason) {\n if (resolved) {\n return;\n }\n\n resolved = true;\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nfunction then(onFulfillment, onRejection, label) {\n var parent = this;\n var state = parent._state;\n\n if (state === FULFILLED && !onFulfillment || state === REJECTED && !onRejection) {\n config.instrument && instrument('chained', parent, parent);\n return parent;\n }\n\n parent._onError = null;\n var child = new parent.constructor(noop, label);\n var result = parent._result;\n config.instrument && instrument('chained', parent, child);\n\n if (state === PENDING) {\n subscribe(parent, child, onFulfillment, onRejection);\n } else {\n var callback = state === FULFILLED ? onFulfillment : onRejection;\n config.async(function () {\n return invokeCallback(state, child, callback, result);\n });\n }\n\n return child;\n}\n\nvar Enumerator = function () {\n function Enumerator(Constructor, input, abortOnReject, label) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop, label);\n this._abortOnReject = abortOnReject;\n\n this._init.apply(this, arguments);\n }\n\n Enumerator.prototype._init = function _init(Constructor, input) {\n var len = input.length || 0;\n this.length = len;\n this._remaining = len;\n this._result = new Array(len);\n\n this._enumerate(input);\n\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n };\n\n Enumerator.prototype._enumerate = function _enumerate(input) {\n var length = this.length;\n var promise = this.promise;\n\n for (var i = 0; promise._state === PENDING && i < length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n Enumerator.prototype._settleMaybeThenable = function _settleMaybeThenable(entry, i) {\n var c = this._instanceConstructor;\n var resolve$$1 = c.resolve;\n\n if (resolve$$1 === resolve$1) {\n var then$$1 = getThen(entry);\n\n if (then$$1 === then && entry._state !== PENDING) {\n entry._onError = null;\n\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof then$$1 !== 'function') {\n this._remaining--;\n this._result[i] = this._makeResult(FULFILLED, i, entry);\n } else if (c === Promise) {\n var promise = new c(noop);\n handleMaybeThenable(promise, entry, then$$1);\n\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve$$1) {\n return resolve$$1(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve$$1(entry), i);\n }\n };\n\n Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n if (isMaybeThenable(entry)) {\n this._settleMaybeThenable(entry, i);\n } else {\n this._remaining--;\n this._result[i] = this._makeResult(FULFILLED, i, entry);\n }\n };\n\n Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n var promise = this.promise;\n\n if (promise._state === PENDING) {\n if (this._abortOnReject && state === REJECTED) {\n reject(promise, value);\n } else {\n this._remaining--;\n this._result[i] = this._makeResult(state, i, value);\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n }\n }\n };\n\n Enumerator.prototype._makeResult = function _makeResult(state, i, value) {\n return value;\n };\n\n Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n var enumerator = this;\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n };\n\n return Enumerator;\n}();\n\nfunction makeSettledResult(state, position, value) {\n if (state === FULFILLED) {\n return {\n state: 'fulfilled',\n value: value\n };\n } else {\n return {\n state: 'rejected',\n reason: value\n };\n }\n}\n/**\n `RSVP.Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = RSVP.resolve(1);\n let promise2 = RSVP.resolve(2);\n let promise3 = RSVP.resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n RSVP.Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `RSVP.all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = RSVP.resolve(1);\n let promise2 = RSVP.reject(new Error(\"2\"));\n let promise3 = RSVP.reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n RSVP.Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\n\n\nfunction all(entries, label) {\n if (!isArray(entries)) {\n return this.reject(new TypeError(\"Promise.all must be called with an array\"), label);\n }\n\n return new Enumerator(this, entries, true\n /* abort on reject */\n , label).promise;\n}\n/**\n `RSVP.Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new RSVP.Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new RSVP.Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n RSVP.Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `RSVP.Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new RSVP.Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new RSVP.Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n RSVP.Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n RSVP.Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} entries array of promises to observe\n @param {String} label optional string for describing the promise returned.\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\n\n\nfunction race(entries, label) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop, label);\n\n if (!isArray(entries)) {\n reject(promise, new TypeError('Promise.race must be called with an array'));\n return promise;\n }\n\n for (var i = 0; promise._state === PENDING && i < entries.length; i++) {\n subscribe(Constructor.resolve(entries[i]), undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n\n return promise;\n}\n/**\n `RSVP.Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new RSVP.Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = RSVP.Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {*} reason value that the returned promise will be rejected with.\n @param {String} label optional string for identifying the returned promise.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\n\n\nfunction reject$1(reason, label) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop, label);\n reject(promise, reason);\n return promise;\n}\n\nvar guidKey = 'rsvp_' + now() + '-';\nvar counter = 0;\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise’s eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class RSVP.Promise\n @param {function} resolver\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @constructor\n*/\n\n\nvar Promise = function () {\n function Promise(resolver, label) {\n this._id = counter++;\n this._label = label;\n this._state = undefined;\n this._result = undefined;\n this._subscribers = [];\n config.instrument && instrument('created', this);\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n }\n }\n\n Promise.prototype._onError = function _onError(reason) {\n var _this = this;\n\n config.after(function () {\n if (_this._onError) {\n config.trigger('error', reason, _this._label);\n }\n });\n };\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n \n ```js\n function findAuthor(){\n throw new Error('couldn\\'t find that author');\n }\n \n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n \n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n \n @method catch\n @param {Function} onRejection\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise}\n */\n\n\n Promise.prototype[\"catch\"] = function _catch(onRejection, label) {\n return this.then(undefined, onRejection, label);\n };\n /**\n `finally` will be invoked regardless of the promise's fate just as native\n try/catch/finally behaves\n \n Synchronous example:\n \n ```js\n findAuthor() {\n if (Math.random() > 0.5) {\n throw new Error();\n }\n return new Author();\n }\n \n try {\n return findAuthor(); // succeed or fail\n } catch(error) {\n return findOtherAuthor();\n } finally {\n // always runs\n // doesn't affect the return value\n }\n ```\n \n Asynchronous example:\n \n ```js\n findAuthor().catch(function(reason){\n return findOtherAuthor();\n }).finally(function(){\n // author was either found, or not\n });\n ```\n \n @method finally\n @param {Function} callback\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise}\n */\n\n\n Promise.prototype[\"finally\"] = function _finally(callback, label) {\n var promise = this;\n var constructor = promise.constructor;\n return promise.then(function (value) {\n return constructor.resolve(callback()).then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback()).then(function () {\n throw reason;\n });\n }, label);\n };\n\n return Promise;\n}();\n\nPromise.cast = resolve$1; // deprecated\n\nPromise.all = all;\nPromise.race = race;\nPromise.resolve = resolve$1;\nPromise.reject = reject$1;\nPromise.prototype._guidKey = guidKey;\n/**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n\n Chaining\n --------\n\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we\\'re unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we\\'re unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n\n Assimilation\n ------------\n\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n\n If the assimliated promise rejects, then the downstream promise will also reject.\n\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n\n Simple Example\n --------------\n\n Synchronous Example\n\n ```javascript\n let result;\n\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n\n Errback Example\n\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n\n Promise Example;\n\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n\n Advanced Example\n --------------\n\n Synchronous Example\n\n ```javascript\n let author, books;\n\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n\n Errback Example\n\n ```js\n\n function foundBooks(books) {\n\n }\n\n function failure(reason) {\n\n }\n\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n\n Promise Example;\n\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n\n @method then\n @param {Function} onFulfillment\n @param {Function} onRejection\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise}\n*/\n\nPromise.prototype.then = then;\n\nfunction Result() {\n this.value = undefined;\n}\n\nvar ERROR = new Result();\nvar GET_THEN_ERROR$1 = new Result();\n\nfunction getThen$1(obj) {\n try {\n return obj.then;\n } catch (error) {\n ERROR.value = error;\n return ERROR;\n }\n}\n\nfunction tryApply(f, s, a) {\n try {\n f.apply(s, a);\n } catch (error) {\n ERROR.value = error;\n return ERROR;\n }\n}\n\nfunction makeObject(_, argumentNames) {\n var obj = {};\n var length = _.length;\n var args = new Array(length);\n\n for (var x = 0; x < length; x++) {\n args[x] = _[x];\n }\n\n for (var i = 0; i < argumentNames.length; i++) {\n var name = argumentNames[i];\n obj[name] = args[i + 1];\n }\n\n return obj;\n}\n\nfunction arrayResult(_) {\n var length = _.length;\n var args = new Array(length - 1);\n\n for (var i = 1; i < length; i++) {\n args[i - 1] = _[i];\n }\n\n return args;\n}\n\nfunction wrapThenable(_then, promise) {\n return {\n then: function then(onFulFillment, onRejection) {\n return _then.call(promise, onFulFillment, onRejection);\n }\n };\n}\n/**\n `RSVP.denodeify` takes a 'node-style' function and returns a function that\n will return an `RSVP.Promise`. You can use `denodeify` in Node.js or the\n browser when you'd prefer to use promises over using callbacks. For example,\n `denodeify` transforms the following:\n\n ```javascript\n let fs = require('fs');\n\n fs.readFile('myfile.txt', function(err, data){\n if (err) return handleError(err);\n handleData(data);\n });\n ```\n\n into:\n\n ```javascript\n let fs = require('fs');\n let readFile = RSVP.denodeify(fs.readFile);\n\n readFile('myfile.txt').then(handleData, handleError);\n ```\n\n If the node function has multiple success parameters, then `denodeify`\n just returns the first one:\n\n ```javascript\n let request = RSVP.denodeify(require('request'));\n\n request('http://example.com').then(function(res) {\n // ...\n });\n ```\n\n However, if you need all success parameters, setting `denodeify`'s\n second parameter to `true` causes it to return all success parameters\n as an array:\n\n ```javascript\n let request = RSVP.denodeify(require('request'), true);\n\n request('http://example.com').then(function(result) {\n // result[0] -> res\n // result[1] -> body\n });\n ```\n\n Or if you pass it an array with names it returns the parameters as a hash:\n\n ```javascript\n let request = RSVP.denodeify(require('request'), ['res', 'body']);\n\n request('http://example.com').then(function(result) {\n // result.res\n // result.body\n });\n ```\n\n Sometimes you need to retain the `this`:\n\n ```javascript\n let app = require('express')();\n let render = RSVP.denodeify(app.render.bind(app));\n ```\n\n The denodified function inherits from the original function. It works in all\n environments, except IE 10 and below. Consequently all properties of the original\n function are available to you. However, any properties you change on the\n denodeified function won't be changed on the original function. Example:\n\n ```javascript\n let request = RSVP.denodeify(require('request')),\n cookieJar = request.jar(); // <- Inheritance is used here\n\n request('http://example.com', {jar: cookieJar}).then(function(res) {\n // cookieJar.cookies holds now the cookies returned by example.com\n });\n ```\n\n Using `denodeify` makes it easier to compose asynchronous operations instead\n of using callbacks. For example, instead of:\n\n ```javascript\n let fs = require('fs');\n\n fs.readFile('myfile.txt', function(err, data){\n if (err) { ... } // Handle error\n fs.writeFile('myfile2.txt', data, function(err){\n if (err) { ... } // Handle error\n console.log('done')\n });\n });\n ```\n\n you can chain the operations together using `then` from the returned promise:\n\n ```javascript\n let fs = require('fs');\n let readFile = RSVP.denodeify(fs.readFile);\n let writeFile = RSVP.denodeify(fs.writeFile);\n\n readFile('myfile.txt').then(function(data){\n return writeFile('myfile2.txt', data);\n }).then(function(){\n console.log('done')\n }).catch(function(error){\n // Handle error\n });\n ```\n\n @method denodeify\n @static\n @for RSVP\n @param {Function} nodeFunc a 'node-style' function that takes a callback as\n its last argument. The callback expects an error to be passed as its first\n argument (if an error occurred, otherwise null), and the value from the\n operation as its second argument ('function(err, value){ }').\n @param {Boolean|Array} [options] An optional paramter that if set\n to `true` causes the promise to fulfill with the callback's success arguments\n as an array. This is useful if the node function has multiple success\n paramters. If you set this paramter to an array with names, the promise will\n fulfill with a hash with these names as keys and the success parameters as\n values.\n @return {Function} a function that wraps `nodeFunc` to return an\n `RSVP.Promise`\n @static\n*/\n\n\nfunction denodeify(nodeFunc, options) {\n var fn = function fn() {\n var self = this;\n var l = arguments.length;\n var args = new Array(l + 1);\n var promiseInput = false;\n\n for (var i = 0; i < l; ++i) {\n var arg = arguments[i];\n\n if (!promiseInput) {\n // TODO: clean this up\n promiseInput = needsPromiseInput(arg);\n\n if (promiseInput === GET_THEN_ERROR$1) {\n var p = new Promise(noop);\n reject(p, GET_THEN_ERROR$1.value);\n return p;\n } else if (promiseInput && promiseInput !== true) {\n arg = wrapThenable(promiseInput, arg);\n }\n }\n\n args[i] = arg;\n }\n\n var promise = new Promise(noop);\n\n args[l] = function (err, val) {\n if (err) reject(promise, err);else if (options === undefined) resolve(promise, val);else if (options === true) resolve(promise, arrayResult(arguments));else if (isArray(options)) resolve(promise, makeObject(arguments, options));else resolve(promise, val);\n };\n\n if (promiseInput) {\n return handlePromiseInput(promise, args, nodeFunc, self);\n } else {\n return handleValueInput(promise, args, nodeFunc, self);\n }\n };\n\n fn.__proto__ = nodeFunc;\n return fn;\n}\n\nfunction handleValueInput(promise, args, nodeFunc, self) {\n var result = tryApply(nodeFunc, self, args);\n\n if (result === ERROR) {\n reject(promise, result.value);\n }\n\n return promise;\n}\n\nfunction handlePromiseInput(promise, args, nodeFunc, self) {\n return Promise.all(args).then(function (args) {\n var result = tryApply(nodeFunc, self, args);\n\n if (result === ERROR) {\n reject(promise, result.value);\n }\n\n return promise;\n });\n}\n\nfunction needsPromiseInput(arg) {\n if (arg && _typeof(arg) === 'object') {\n if (arg.constructor === Promise) {\n return true;\n } else {\n return getThen$1(arg);\n }\n } else {\n return false;\n }\n}\n/**\n This is a convenient alias for `RSVP.Promise.all`.\n\n @method all\n @static\n @for RSVP\n @param {Array} array Array of promises.\n @param {String} label An optional label. This is useful\n for tooling.\n*/\n\n\nfunction all$1(array, label) {\n return Promise.all(array, label);\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof(call) === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar AllSettled = function (_Enumerator) {\n _inherits(AllSettled, _Enumerator);\n\n function AllSettled(Constructor, entries, label) {\n return _possibleConstructorReturn(this, _Enumerator.call(this, Constructor, entries, false\n /* don't abort on reject */\n , label));\n }\n\n return AllSettled;\n}(Enumerator);\n\nAllSettled.prototype._makeResult = makeSettledResult;\n/**\n`RSVP.allSettled` is similar to `RSVP.all`, but instead of implementing\na fail-fast method, it waits until all the promises have returned and\nshows you all the results. This is useful if you want to handle multiple\npromises' failure states together as a set.\n Returns a promise that is fulfilled when all the given promises have been\nsettled. The return promise is fulfilled with an array of the states of\nthe promises passed into the `promises` array argument.\n Each state object will either indicate fulfillment or rejection, and\nprovide the corresponding value or reason. The states will take one of\nthe following formats:\n ```javascript\n{ state: 'fulfilled', value: value }\n or\n{ state: 'rejected', reason: reason }\n```\n Example:\n ```javascript\nlet promise1 = RSVP.Promise.resolve(1);\nlet promise2 = RSVP.Promise.reject(new Error('2'));\nlet promise3 = RSVP.Promise.reject(new Error('3'));\nlet promises = [ promise1, promise2, promise3 ];\n RSVP.allSettled(promises).then(function(array){\n // array == [\n // { state: 'fulfilled', value: 1 },\n // { state: 'rejected', reason: Error },\n // { state: 'rejected', reason: Error }\n // ]\n // Note that for the second item, reason.message will be '2', and for the\n // third item, reason.message will be '3'.\n}, function(error) {\n // Not run. (This block would only be called if allSettled had failed,\n // for instance if passed an incorrect argument type.)\n});\n```\n @method allSettled\n@static\n@for RSVP\n@param {Array} entries\n@param {String} label - optional string that describes the promise.\nUseful for tooling.\n@return {Promise} promise that is fulfilled with an array of the settled\nstates of the constituent promises.\n*/\n\nfunction allSettled(entries, label) {\n if (!isArray(entries)) {\n return Promise.reject(new TypeError(\"Promise.allSettled must be called with an array\"), label);\n }\n\n return new AllSettled(Promise, entries, label).promise;\n}\n/**\n This is a convenient alias for `RSVP.Promise.race`.\n\n @method race\n @static\n @for RSVP\n @param {Array} array Array of promises.\n @param {String} label An optional label. This is useful\n for tooling.\n */\n\n\nfunction race$1(array, label) {\n return Promise.race(array, label);\n}\n\nfunction _possibleConstructorReturn$1(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof(call) === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits$1(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar PromiseHash = function (_Enumerator) {\n _inherits$1(PromiseHash, _Enumerator);\n\n function PromiseHash(Constructor, object) {\n var abortOnReject = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var label = arguments[3];\n return _possibleConstructorReturn$1(this, _Enumerator.call(this, Constructor, object, abortOnReject, label));\n }\n\n PromiseHash.prototype._init = function _init(Constructor, object) {\n this._result = {};\n\n this._enumerate(object);\n\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n };\n\n PromiseHash.prototype._enumerate = function _enumerate(input) {\n var promise = this.promise;\n var results = [];\n\n for (var key in input) {\n if (hasOwnProperty.call(input, key)) {\n results.push({\n position: key,\n entry: input[key]\n });\n }\n }\n\n var length = results.length;\n this._remaining = length;\n var result = void 0;\n\n for (var i = 0; promise._state === PENDING && i < length; i++) {\n result = results[i];\n\n this._eachEntry(result.entry, result.position);\n }\n };\n\n return PromiseHash;\n}(Enumerator);\n/**\n `RSVP.hash` is similar to `RSVP.all`, but takes an object instead of an array\n for its `promises` argument.\n\n Returns a promise that is fulfilled when all the given promises have been\n fulfilled, or rejected if any of them become rejected. The returned promise\n is fulfilled with a hash that has the same key names as the `promises` object\n argument. If any of the values in the object are not promises, they will\n simply be copied over to the fulfilled object.\n\n Example:\n\n ```javascript\n let promises = {\n myPromise: RSVP.resolve(1),\n yourPromise: RSVP.resolve(2),\n theirPromise: RSVP.resolve(3),\n notAPromise: 4\n };\n\n RSVP.hash(promises).then(function(hash){\n // hash here is an object that looks like:\n // {\n // myPromise: 1,\n // yourPromise: 2,\n // theirPromise: 3,\n // notAPromise: 4\n // }\n });\n ````\n\n If any of the `promises` given to `RSVP.hash` are rejected, the first promise\n that is rejected will be given as the reason to the rejection handler.\n\n Example:\n\n ```javascript\n let promises = {\n myPromise: RSVP.resolve(1),\n rejectedPromise: RSVP.reject(new Error('rejectedPromise')),\n anotherRejectedPromise: RSVP.reject(new Error('anotherRejectedPromise')),\n };\n\n RSVP.hash(promises).then(function(hash){\n // Code here never runs because there are rejected promises!\n }, function(reason) {\n // reason.message === 'rejectedPromise'\n });\n ```\n\n An important note: `RSVP.hash` is intended for plain JavaScript objects that\n are just a set of keys and values. `RSVP.hash` will NOT preserve prototype\n chains.\n\n Example:\n\n ```javascript\n function MyConstructor(){\n this.example = RSVP.resolve('Example');\n }\n\n MyConstructor.prototype = {\n protoProperty: RSVP.resolve('Proto Property')\n };\n\n let myObject = new MyConstructor();\n\n RSVP.hash(myObject).then(function(hash){\n // protoProperty will not be present, instead you will just have an\n // object that looks like:\n // {\n // example: 'Example'\n // }\n //\n // hash.hasOwnProperty('protoProperty'); // false\n // 'undefined' === typeof hash.protoProperty\n });\n ```\n\n @method hash\n @static\n @for RSVP\n @param {Object} object\n @param {String} label optional string that describes the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all properties of `promises`\n have been fulfilled, or rejected if any of them become rejected.\n*/\n\n\nfunction hash(object, label) {\n if (!isObject(object)) {\n return Promise.reject(new TypeError(\"Promise.hash must be called with an object\"), label);\n }\n\n return new PromiseHash(Promise, object, label).promise;\n}\n\nfunction _possibleConstructorReturn$2(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof(call) === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits$2(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar HashSettled = function (_PromiseHash) {\n _inherits$2(HashSettled, _PromiseHash);\n\n function HashSettled(Constructor, object, label) {\n return _possibleConstructorReturn$2(this, _PromiseHash.call(this, Constructor, object, false, label));\n }\n\n return HashSettled;\n}(PromiseHash);\n\nHashSettled.prototype._makeResult = makeSettledResult;\n/**\n `RSVP.hashSettled` is similar to `RSVP.allSettled`, but takes an object\n instead of an array for its `promises` argument.\n\n Unlike `RSVP.all` or `RSVP.hash`, which implement a fail-fast method,\n but like `RSVP.allSettled`, `hashSettled` waits until all the\n constituent promises have returned and then shows you all the results\n with their states and values/reasons. This is useful if you want to\n handle multiple promises' failure states together as a set.\n\n Returns a promise that is fulfilled when all the given promises have been\n settled, or rejected if the passed parameters are invalid.\n\n The returned promise is fulfilled with a hash that has the same key names as\n the `promises` object argument. If any of the values in the object are not\n promises, they will be copied over to the fulfilled object and marked with state\n 'fulfilled'.\n\n Example:\n\n ```javascript\n let promises = {\n myPromise: RSVP.Promise.resolve(1),\n yourPromise: RSVP.Promise.resolve(2),\n theirPromise: RSVP.Promise.resolve(3),\n notAPromise: 4\n };\n\n RSVP.hashSettled(promises).then(function(hash){\n // hash here is an object that looks like:\n // {\n // myPromise: { state: 'fulfilled', value: 1 },\n // yourPromise: { state: 'fulfilled', value: 2 },\n // theirPromise: { state: 'fulfilled', value: 3 },\n // notAPromise: { state: 'fulfilled', value: 4 }\n // }\n });\n ```\n\n If any of the `promises` given to `RSVP.hash` are rejected, the state will\n be set to 'rejected' and the reason for rejection provided.\n\n Example:\n\n ```javascript\n let promises = {\n myPromise: RSVP.Promise.resolve(1),\n rejectedPromise: RSVP.Promise.reject(new Error('rejection')),\n anotherRejectedPromise: RSVP.Promise.reject(new Error('more rejection')),\n };\n\n RSVP.hashSettled(promises).then(function(hash){\n // hash here is an object that looks like:\n // {\n // myPromise: { state: 'fulfilled', value: 1 },\n // rejectedPromise: { state: 'rejected', reason: Error },\n // anotherRejectedPromise: { state: 'rejected', reason: Error },\n // }\n // Note that for rejectedPromise, reason.message == 'rejection',\n // and for anotherRejectedPromise, reason.message == 'more rejection'.\n });\n ```\n\n An important note: `RSVP.hashSettled` is intended for plain JavaScript objects that\n are just a set of keys and values. `RSVP.hashSettled` will NOT preserve prototype\n chains.\n\n Example:\n\n ```javascript\n function MyConstructor(){\n this.example = RSVP.Promise.resolve('Example');\n }\n\n MyConstructor.prototype = {\n protoProperty: RSVP.Promise.resolve('Proto Property')\n };\n\n let myObject = new MyConstructor();\n\n RSVP.hashSettled(myObject).then(function(hash){\n // protoProperty will not be present, instead you will just have an\n // object that looks like:\n // {\n // example: { state: 'fulfilled', value: 'Example' }\n // }\n //\n // hash.hasOwnProperty('protoProperty'); // false\n // 'undefined' === typeof hash.protoProperty\n });\n ```\n\n @method hashSettled\n @for RSVP\n @param {Object} object\n @param {String} label optional string that describes the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when when all properties of `promises`\n have been settled.\n @static\n*/\n\nfunction hashSettled(object, label) {\n if (!isObject(object)) {\n return Promise.reject(new TypeError(\"RSVP.hashSettled must be called with an object\"), label);\n }\n\n return new HashSettled(Promise, object, false, label).promise;\n}\n/**\n `RSVP.rethrow` will rethrow an error on the next turn of the JavaScript event\n loop in order to aid debugging.\n\n Promises A+ specifies that any exceptions that occur with a promise must be\n caught by the promises implementation and bubbled to the last handler. For\n this reason, it is recommended that you always specify a second rejection\n handler function to `then`. However, `RSVP.rethrow` will throw the exception\n outside of the promise, so it bubbles up to your console if in the browser,\n or domain/cause uncaught exception in Node. `rethrow` will also throw the\n error again so the error can be handled by the promise per the spec.\n\n ```javascript\n function throws(){\n throw new Error('Whoops!');\n }\n\n let promise = new RSVP.Promise(function(resolve, reject){\n throws();\n });\n\n promise.catch(RSVP.rethrow).then(function(){\n // Code here doesn't run because the promise became rejected due to an\n // error!\n }, function (err){\n // handle the error here\n });\n ```\n\n The 'Whoops' error will be thrown on the next turn of the event loop\n and you can watch for it in your console. You can also handle it using a\n rejection handler given to `.then` or `.catch` on the returned promise.\n\n @method rethrow\n @static\n @for RSVP\n @param {Error} reason reason the promise became rejected.\n @throws Error\n @static\n*/\n\n\nfunction rethrow(reason) {\n setTimeout(function () {\n throw reason;\n });\n throw reason;\n}\n/**\n `RSVP.defer` returns an object similar to jQuery's `$.Deferred`.\n `RSVP.defer` should be used when porting over code reliant on `$.Deferred`'s\n interface. New code should use the `RSVP.Promise` constructor instead.\n\n The object returned from `RSVP.defer` is a plain object with three properties:\n\n * promise - an `RSVP.Promise`.\n * reject - a function that causes the `promise` property on this object to\n become rejected\n * resolve - a function that causes the `promise` property on this object to\n become fulfilled.\n\n Example:\n\n ```javascript\n let deferred = RSVP.defer();\n\n deferred.resolve(\"Success!\");\n\n deferred.promise.then(function(value){\n // value here is \"Success!\"\n });\n ```\n\n @method defer\n @static\n @for RSVP\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Object}\n */\n\n\nfunction defer(label) {\n var deferred = {\n resolve: undefined,\n reject: undefined\n };\n deferred.promise = new Promise(function (resolve, reject) {\n deferred.resolve = resolve;\n deferred.reject = reject;\n }, label);\n return deferred;\n}\n/**\n `RSVP.map` is similar to JavaScript's native `map` method, except that it\n waits for all promises to become fulfilled before running the `mapFn` on\n each item in given to `promises`. `RSVP.map` returns a promise that will\n become fulfilled with the result of running `mapFn` on the values the promises\n become fulfilled with.\n\n For example:\n\n ```javascript\n\n let promise1 = RSVP.resolve(1);\n let promise2 = RSVP.resolve(2);\n let promise3 = RSVP.resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n let mapFn = function(item){\n return item + 1;\n };\n\n RSVP.map(promises, mapFn).then(function(result){\n // result is [ 2, 3, 4 ]\n });\n ```\n\n If any of the `promises` given to `RSVP.map` are rejected, the first promise\n that is rejected will be given as an argument to the returned promise's\n rejection handler. For example:\n\n ```javascript\n let promise1 = RSVP.resolve(1);\n let promise2 = RSVP.reject(new Error('2'));\n let promise3 = RSVP.reject(new Error('3'));\n let promises = [ promise1, promise2, promise3 ];\n\n let mapFn = function(item){\n return item + 1;\n };\n\n RSVP.map(promises, mapFn).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(reason) {\n // reason.message === '2'\n });\n ```\n\n `RSVP.map` will also wait if a promise is returned from `mapFn`. For example,\n say you want to get all comments from a set of blog posts, but you need\n the blog posts first because they contain a url to those comments.\n\n ```javscript\n\n let mapFn = function(blogPost){\n // getComments does some ajax and returns an RSVP.Promise that is fulfilled\n // with some comments data\n return getComments(blogPost.comments_url);\n };\n\n // getBlogPosts does some ajax and returns an RSVP.Promise that is fulfilled\n // with some blog post data\n RSVP.map(getBlogPosts(), mapFn).then(function(comments){\n // comments is the result of asking the server for the comments\n // of all blog posts returned from getBlogPosts()\n });\n ```\n\n @method map\n @static\n @for RSVP\n @param {Array} promises\n @param {Function} mapFn function to be called on each fulfilled promise.\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled with the result of calling\n `mapFn` on each fulfilled promise or value when they become fulfilled.\n The promise will be rejected if any of the given `promises` become rejected.\n @static\n*/\n\n\nfunction map(promises, mapFn, label) {\n if (!isArray(promises)) {\n return Promise.reject(new TypeError(\"RSVP.map must be called with an array\"), label);\n }\n\n if (!isFunction(mapFn)) {\n return Promise.reject(new TypeError(\"RSVP.map expects a function as a second argument\"), label);\n }\n\n return Promise.all(promises, label).then(function (values) {\n var length = values.length;\n var results = new Array(length);\n\n for (var i = 0; i < length; i++) {\n results[i] = mapFn(values[i]);\n }\n\n return Promise.all(results, label);\n });\n}\n/**\n This is a convenient alias for `RSVP.Promise.resolve`.\n\n @method resolve\n @static\n @for RSVP\n @param {*} value value that the returned promise will be resolved with\n @param {String} label optional string for identifying the returned promise.\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\n\n\nfunction resolve$2(value, label) {\n return Promise.resolve(value, label);\n}\n/**\n This is a convenient alias for `RSVP.Promise.reject`.\n\n @method reject\n @static\n @for RSVP\n @param {*} reason value that the returned promise will be rejected with.\n @param {String} label optional string for identifying the returned promise.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\n\n\nfunction reject$2(reason, label) {\n return Promise.reject(reason, label);\n}\n/**\n `RSVP.filter` is similar to JavaScript's native `filter` method, except that it\n waits for all promises to become fulfilled before running the `filterFn` on\n each item in given to `promises`. `RSVP.filter` returns a promise that will\n become fulfilled with the result of running `filterFn` on the values the\n promises become fulfilled with.\n\n For example:\n\n ```javascript\n\n let promise1 = RSVP.resolve(1);\n let promise2 = RSVP.resolve(2);\n let promise3 = RSVP.resolve(3);\n\n let promises = [promise1, promise2, promise3];\n\n let filterFn = function(item){\n return item > 1;\n };\n\n RSVP.filter(promises, filterFn).then(function(result){\n // result is [ 2, 3 ]\n });\n ```\n\n If any of the `promises` given to `RSVP.filter` are rejected, the first promise\n that is rejected will be given as an argument to the returned promise's\n rejection handler. For example:\n\n ```javascript\n let promise1 = RSVP.resolve(1);\n let promise2 = RSVP.reject(new Error('2'));\n let promise3 = RSVP.reject(new Error('3'));\n let promises = [ promise1, promise2, promise3 ];\n\n let filterFn = function(item){\n return item > 1;\n };\n\n RSVP.filter(promises, filterFn).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(reason) {\n // reason.message === '2'\n });\n ```\n\n `RSVP.filter` will also wait for any promises returned from `filterFn`.\n For instance, you may want to fetch a list of users then return a subset\n of those users based on some asynchronous operation:\n\n ```javascript\n\n let alice = { name: 'alice' };\n let bob = { name: 'bob' };\n let users = [ alice, bob ];\n\n let promises = users.map(function(user){\n return RSVP.resolve(user);\n });\n\n let filterFn = function(user){\n // Here, Alice has permissions to create a blog post, but Bob does not.\n return getPrivilegesForUser(user).then(function(privs){\n return privs.can_create_blog_post === true;\n });\n };\n RSVP.filter(promises, filterFn).then(function(users){\n // true, because the server told us only Alice can create a blog post.\n users.length === 1;\n // false, because Alice is the only user present in `users`\n users[0] === bob;\n });\n ```\n\n @method filter\n @static\n @for RSVP\n @param {Array} promises\n @param {Function} filterFn - function to be called on each resolved value to\n filter the final results.\n @param {String} label optional string describing the promise. Useful for\n tooling.\n @return {Promise}\n*/\n\n\nfunction resolveAll(promises, label) {\n return Promise.all(promises, label);\n}\n\nfunction resolveSingle(promise, label) {\n return Promise.resolve(promise, label).then(function (promises) {\n return resolveAll(promises, label);\n });\n}\n\nfunction filter(promises, filterFn, label) {\n if (!isArray(promises) && !(isObject(promises) && promises.then !== undefined)) {\n return Promise.reject(new TypeError(\"RSVP.filter must be called with an array or promise\"), label);\n }\n\n if (!isFunction(filterFn)) {\n return Promise.reject(new TypeError(\"RSVP.filter expects function as a second argument\"), label);\n }\n\n var promise = isArray(promises) ? resolveAll(promises, label) : resolveSingle(promises, label);\n return promise.then(function (values) {\n var length = values.length;\n var filtered = new Array(length);\n\n for (var i = 0; i < length; i++) {\n filtered[i] = filterFn(values[i]);\n }\n\n return resolveAll(filtered, label).then(function (filtered) {\n var results = new Array(length);\n var newLength = 0;\n\n for (var _i = 0; _i < length; _i++) {\n if (filtered[_i]) {\n results[newLength] = values[_i];\n newLength++;\n }\n }\n\n results.length = newLength;\n return results;\n });\n });\n}\n\nvar len = 0;\nvar vertxNext = void 0;\n\nfunction asap(callback, arg) {\n queue$1[len] = callback;\n queue$1[len + 1] = arg;\n len += 2;\n\n if (len === 2) {\n // If len is 1, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n scheduleFlush$1();\n }\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]'; // test for web worker but not in IE10\n\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined'; // node\n\nfunction useNextTick() {\n var nextTick = process.nextTick; // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // setImmediate should be used instead instead\n\n var version = process.versions.node.match(/^(?:(\\d+)\\.)?(?:(\\d+)\\.)?(\\*|\\d+)$/);\n\n if (Array.isArray(version) && version[1] === '0' && version[2] === '10') {\n nextTick = setImmediate;\n }\n\n return function () {\n return nextTick(flush);\n };\n} // vertx\n\n\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, {\n characterData: true\n });\n return function () {\n return node.data = iterations = ++iterations % 2;\n };\n} // web worker\n\n\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n return function () {\n return setTimeout(flush, 1);\n };\n}\n\nvar queue$1 = new Array(1000);\n\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue$1[i];\n var arg = queue$1[i + 1];\n callback(arg);\n queue$1[i] = undefined;\n queue$1[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertex() {\n try {\n var r = require;\n var vertx = r('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush$1 = void 0; // Decide what async method to use to triggering processing of queued callbacks:\n\nif (isNode) {\n scheduleFlush$1 = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush$1 = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush$1 = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n scheduleFlush$1 = attemptVertex();\n} else {\n scheduleFlush$1 = useSetTimeout();\n}\n\nvar platform = void 0;\n/* global self */\n\nif ((typeof self === \"undefined\" ? \"undefined\" : _typeof(self)) === 'object') {\n platform = self;\n /* global global */\n} else if ((typeof global === \"undefined\" ? \"undefined\" : _typeof(global)) === 'object') {\n platform = global;\n} else {\n throw new Error('no global: `self` or `global` found');\n}\n\nvar _asap$cast$Promise$Ev;\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n} // defaults\n\n\nconfig.async = asap;\n\nconfig.after = function (cb) {\n return setTimeout(cb, 0);\n};\n\nvar cast = resolve$2;\n\nvar async = function async(callback, arg) {\n return config.async(callback, arg);\n};\n\nfunction on() {\n config['on'].apply(config, arguments);\n}\n\nfunction off() {\n config['off'].apply(config, arguments);\n} // Set up instrumentation through `window.__PROMISE_INTRUMENTATION__`\n\n\nif (typeof window !== 'undefined' && _typeof(window['__PROMISE_INSTRUMENTATION__']) === 'object') {\n var callbacks = window['__PROMISE_INSTRUMENTATION__'];\n configure('instrument', true);\n\n for (var eventName in callbacks) {\n if (callbacks.hasOwnProperty(eventName)) {\n on(eventName, callbacks[eventName]);\n }\n }\n} // the default export here is for backwards compat:\n// https://github.com/tildeio/rsvp.js/issues/434\n\n\nvar rsvp = (_asap$cast$Promise$Ev = {\n asap: asap,\n cast: cast,\n Promise: Promise,\n EventTarget: EventTarget,\n all: all$1,\n allSettled: allSettled,\n race: race$1,\n hash: hash,\n hashSettled: hashSettled,\n rethrow: rethrow,\n defer: defer,\n denodeify: denodeify,\n configure: configure,\n on: on,\n off: off,\n resolve: resolve$2,\n reject: reject$2,\n map: map\n}, _defineProperty(_asap$cast$Promise$Ev, 'async', async), _defineProperty(_asap$cast$Promise$Ev, 'filter', filter), _asap$cast$Promise$Ev);\nexport { asap, cast, Promise, EventTarget, all$1 as all, allSettled, race$1 as race, hash, hashSettled, rethrow, defer, denodeify, configure, on, off, resolve$2 as resolve, reject$2 as reject, map, async, filter };\nexport default rsvp;","var scope = typeof global !== \"undefined\" && global || typeof self !== \"undefined\" && self || window;\nvar apply = Function.prototype.apply; // DOM APIs, for completeness\n\nexports.setTimeout = function () {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\n\nexports.setInterval = function () {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\n\nexports.clearTimeout = exports.clearInterval = function (timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\n\nTimeout.prototype.unref = Timeout.prototype.ref = function () {};\n\nTimeout.prototype.close = function () {\n this._clearFn.call(scope, this._id);\n}; // Does not start the time, just sets up the members needed.\n\n\nexports.enroll = function (item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function (item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function (item) {\n clearTimeout(item._idleTimeoutId);\n var msecs = item._idleTimeout;\n\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout) item._onTimeout();\n }, msecs);\n }\n}; // setimmediate attaches itself to the global object\n\n\nrequire(\"setimmediate\"); // On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\n\n\nexports.setImmediate = typeof self !== \"undefined\" && self.setImmediate || typeof global !== \"undefined\" && global.setImmediate || this && this.setImmediate;\nexports.clearImmediate = typeof self !== \"undefined\" && self.clearImmediate || typeof global !== \"undefined\" && global.clearImmediate || this && this.clearImmediate;","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n } // Copy function arguments\n\n\n var args = new Array(arguments.length - 1);\n\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n } // Store and register the task\n\n\n var task = {\n callback: callback,\n args: args\n };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n\n switch (args.length) {\n case 0:\n callback();\n break;\n\n case 1:\n callback(args[0]);\n break;\n\n case 2:\n callback(args[0], args[1]);\n break;\n\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n\n if (task) {\n currentlyRunningATask = true;\n\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function registerImmediate(handle) {\n process.nextTick(function () {\n runIfPresent(handle);\n });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n\n global.onmessage = function () {\n postMessageIsAsynchronous = false;\n };\n\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n\n var onGlobalMessage = function onGlobalMessage(event) {\n if (event.source === global && typeof event.data === \"string\" && event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function registerImmediate(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n\n channel.port1.onmessage = function (event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function registerImmediate(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n\n registerImmediate = function registerImmediate(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function registerImmediate(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n } // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n\n\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global; // Don't get fooled by e.g. browserify environments.\n\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n})(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();\n\nexports[\"default\"] = formatEntry;\n\nfunction formatEntry(_ref) {\n var _ref2 = _slicedToArray(_ref, 4);\n\n var word = _ref2[0];\n var partOfSpeech = _ref2[1];\n var translation = _ref2[2];\n var sound = _ref2[3];\n return {\n partOfSpeech: partOfSpeechMap[partOfSpeech],\n word: word,\n translation: translation,\n sound: sound\n };\n}\n\nvar partOfSpeechMap = {\n v: {\n color: '#1779b1',\n ja: '動',\n en: 'verb'\n },\n n: {\n color: '#ff8b00',\n ja: '名',\n en: 'noun'\n },\n a: {\n color: '#6ba300',\n ja: '形',\n en: 'adjective'\n },\n r: {\n color: '#c0ae13',\n ja: '副',\n en: 'adverb'\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = watcher;\n\nfunction watcher() {\n var observers = [];\n return {\n watch: watch,\n notify: notify\n };\n\n function watch(fn) {\n if (typeof fn === 'function') {\n observers.push(fn);\n }\n\n return function () {\n observers = observers.filter(function (someFn) {\n return someFn !== fn;\n });\n };\n }\n\n function notify(value) {\n observers.forEach(function (fn) {\n return fn(value);\n });\n }\n}","// Added for convenience in the Node environment.\n// The meat and potatoes exist in ./lib/polyglot.js.\nmodule.exports = require('./lib/polyglot');","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n// (c) 2012 Airbnb, Inc.\n//\n// polyglot.js may be freely distributed under the terms of the BSD\n// license. For all licensing information, details, and documention:\n// http://airbnb.github.com/polyglot.js\n//\n//\n// Polyglot.js is an I18n helper library written in JavaScript, made to\n// work both in the browser and in Node. It provides a simple solution for\n// interpolation and pluralization, based off of Airbnb's\n// experience adding I18n functionality to its Backbone.js and Node apps.\n//\n// Polylglot is agnostic to your translation backend. It doesn't perform any\n// translation; it simply gives you a way to manage translated phrases from\n// your client- or server-side JavaScript application.\n//\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n define([], function () {\n return factory(root);\n });\n } else if ((typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object') {\n module.exports = factory(root);\n } else {\n root.Polyglot = factory(root);\n }\n})(this, function (root) {\n 'use strict';\n\n var replace = String.prototype.replace; // ### Polyglot class constructor\n\n function Polyglot(options) {\n options = options || {};\n this.phrases = {};\n this.extend(options.phrases || {});\n this.currentLocale = options.locale || 'en';\n this.allowMissing = !!options.allowMissing;\n this.warn = options.warn || warn;\n } // ### Version\n\n\n Polyglot.VERSION = '1.0.0'; // ### polyglot.locale([locale])\n //\n // Get or set locale. Internally, Polyglot only uses locale for pluralization.\n\n Polyglot.prototype.locale = function (newLocale) {\n if (newLocale) this.currentLocale = newLocale;\n return this.currentLocale;\n }; // ### polyglot.extend(phrases)\n //\n // Use `extend` to tell Polyglot how to translate a given key.\n //\n // polyglot.extend({\n // \"hello\": \"Hello\",\n // \"hello_name\": \"Hello, %{name}\"\n // });\n //\n // The key can be any string. Feel free to call `extend` multiple times;\n // it will override any phrases with the same key, but leave existing phrases\n // untouched.\n //\n // It is also possible to pass nested phrase objects, which get flattened\n // into an object with the nested keys concatenated using dot notation.\n //\n // polyglot.extend({\n // \"nav\": {\n // \"hello\": \"Hello\",\n // \"hello_name\": \"Hello, %{name}\",\n // \"sidebar\": {\n // \"welcome\": \"Welcome\"\n // }\n // }\n // });\n //\n // console.log(polyglot.phrases);\n // // {\n // // 'nav.hello': 'Hello',\n // // 'nav.hello_name': 'Hello, %{name}',\n // // 'nav.sidebar.welcome': 'Welcome'\n // // }\n //\n // `extend` accepts an optional second argument, `prefix`, which can be used\n // to prefix every key in the phrases object with some string, using dot\n // notation.\n //\n // polyglot.extend({\n // \"hello\": \"Hello\",\n // \"hello_name\": \"Hello, %{name}\"\n // }, \"nav\");\n //\n // console.log(polyglot.phrases);\n // // {\n // // 'nav.hello': 'Hello',\n // // 'nav.hello_name': 'Hello, %{name}'\n // // }\n //\n // This feature is used internally to support nested phrase objects.\n\n\n Polyglot.prototype.extend = function (morePhrases, prefix) {\n var phrase;\n\n for (var key in morePhrases) {\n if (morePhrases.hasOwnProperty(key)) {\n phrase = morePhrases[key];\n if (prefix) key = prefix + '.' + key;\n\n if (_typeof(phrase) === 'object') {\n this.extend(phrase, key);\n } else {\n this.phrases[key] = phrase;\n }\n }\n }\n }; // ### polyglot.unset(phrases)\n // Use `unset` to selectively remove keys from a polyglot instance.\n //\n // polyglot.unset(\"some_key\");\n // polyglot.unset({\n // \"hello\": \"Hello\",\n // \"hello_name\": \"Hello, %{name}\"\n // });\n //\n // The unset method can take either a string (for the key), or an object hash with\n // the keys that you would like to unset.\n\n\n Polyglot.prototype.unset = function (morePhrases, prefix) {\n var phrase;\n\n if (typeof morePhrases === 'string') {\n delete this.phrases[morePhrases];\n } else {\n for (var key in morePhrases) {\n if (morePhrases.hasOwnProperty(key)) {\n phrase = morePhrases[key];\n if (prefix) key = prefix + '.' + key;\n\n if (_typeof(phrase) === 'object') {\n this.unset(phrase, key);\n } else {\n delete this.phrases[key];\n }\n }\n }\n }\n }; // ### polyglot.clear()\n //\n // Clears all phrases. Useful for special cases, such as freeing\n // up memory if you have lots of phrases but no longer need to\n // perform any translation. Also used internally by `replace`.\n\n\n Polyglot.prototype.clear = function () {\n this.phrases = {};\n }; // ### polyglot.replace(phrases)\n //\n // Completely replace the existing phrases with a new set of phrases.\n // Normally, just use `extend` to add more phrases, but under certain\n // circumstances, you may want to make sure no old phrases are lying around.\n\n\n Polyglot.prototype.replace = function (newPhrases) {\n this.clear();\n this.extend(newPhrases);\n }; // ### polyglot.t(key, options)\n //\n // The most-used method. Provide a key, and `t` will return the\n // phrase.\n //\n // polyglot.t(\"hello\");\n // => \"Hello\"\n //\n // The phrase value is provided first by a call to `polyglot.extend()` or\n // `polyglot.replace()`.\n //\n // Pass in an object as the second argument to perform interpolation.\n //\n // polyglot.t(\"hello_name\", {name: \"Spike\"});\n // => \"Hello, Spike\"\n //\n // If you like, you can provide a default value in case the phrase is missing.\n // Use the special option key \"_\" to specify a default.\n //\n // polyglot.t(\"i_like_to_write_in_language\", {\n // _: \"I like to write in %{language}.\",\n // language: \"JavaScript\"\n // });\n // => \"I like to write in JavaScript.\"\n //\n\n\n Polyglot.prototype.t = function (key, options) {\n var phrase, result;\n options = options == null ? {} : options; // allow number as a pluralization shortcut\n\n if (typeof options === 'number') {\n options = {\n smart_count: options\n };\n }\n\n if (typeof this.phrases[key] === 'string') {\n phrase = this.phrases[key];\n } else if (typeof options._ === 'string') {\n phrase = options._;\n } else if (this.allowMissing) {\n phrase = key;\n } else {\n this.warn('Missing translation for key: \"' + key + '\"');\n result = key;\n }\n\n if (typeof phrase === 'string') {\n options = clone(options);\n result = choosePluralForm(phrase, this.currentLocale, options.smart_count);\n result = interpolate(result, options);\n }\n\n return result;\n }; // ### polyglot.has(key)\n //\n // Check if polyglot has a translation for given key\n\n\n Polyglot.prototype.has = function (key) {\n return key in this.phrases;\n }; // #### Pluralization methods\n // The string that separates the different phrase possibilities.\n\n\n var delimeter = '||||'; // Mapping from pluralization group plural logic.\n\n var pluralTypes = {\n chinese: function chinese(n) {\n return 0;\n },\n german: function german(n) {\n return n !== 1 ? 1 : 0;\n },\n french: function french(n) {\n return n > 1 ? 1 : 0;\n },\n russian: function russian(n) {\n return n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2;\n },\n czech: function czech(n) {\n return n === 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2;\n },\n polish: function polish(n) {\n return n === 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2;\n },\n icelandic: function icelandic(n) {\n return n % 10 !== 1 || n % 100 === 11 ? 1 : 0;\n }\n }; // Mapping from pluralization group to individual locales.\n\n var pluralTypeToLanguages = {\n chinese: ['fa', 'id', 'ja', 'ko', 'lo', 'ms', 'th', 'tr', 'zh'],\n german: ['da', 'de', 'en', 'es', 'fi', 'el', 'he', 'hu', 'it', 'nl', 'no', 'pt', 'sv'],\n french: ['fr', 'tl', 'pt-br'],\n russian: ['hr', 'ru'],\n czech: ['cs'],\n polish: ['pl'],\n icelandic: ['is']\n };\n\n function langToTypeMap(mapping) {\n var type,\n langs,\n l,\n ret = {};\n\n for (type in mapping) {\n if (mapping.hasOwnProperty(type)) {\n langs = mapping[type];\n\n for (l in langs) {\n ret[langs[l]] = type;\n }\n }\n }\n\n return ret;\n } // Trim a string.\n\n\n var trimRe = /^\\s+|\\s+$/g;\n\n function trim(str) {\n return replace.call(str, trimRe, '');\n } // Based on a phrase text that contains `n` plural forms separated\n // by `delimeter`, a `locale`, and a `count`, choose the correct\n // plural form, or none if `count` is `null`.\n\n\n function choosePluralForm(text, locale, count) {\n var ret, texts, chosenText;\n\n if (count != null && text) {\n texts = text.split(delimeter);\n chosenText = texts[pluralTypeIndex(locale, count)] || texts[0];\n ret = trim(chosenText);\n } else {\n ret = text;\n }\n\n return ret;\n }\n\n function pluralTypeName(locale) {\n var langToPluralType = langToTypeMap(pluralTypeToLanguages);\n return langToPluralType[locale] || langToPluralType.en;\n }\n\n function pluralTypeIndex(locale, count) {\n return pluralTypes[pluralTypeName(locale)](count);\n } // ### interpolate\n //\n // Does the dirty work. Creates a `RegExp` object for each\n // interpolation placeholder.\n\n\n var dollarRegex = /\\$/g;\n var dollarBillsYall = '$$$$';\n\n function interpolate(phrase, options) {\n for (var arg in options) {\n if (arg !== '_' && options.hasOwnProperty(arg)) {\n // Ensure replacement value is escaped to prevent special $-prefixed\n // regex replace tokens. the \"$$$$\" is needed because each \"$\" needs to\n // be escaped with \"$\" itself, and we need two in the resulting output.\n var replacement = options[arg];\n\n if (typeof replacement === 'string') {\n replacement = replace.call(options[arg], dollarRegex, dollarBillsYall);\n } // We create a new `RegExp` each time instead of using a more-efficient\n // string replace so that the same argument can be replaced multiple times\n // in the same phrase.\n\n\n phrase = replace.call(phrase, new RegExp('%\\\\{' + arg + '\\\\}', 'g'), replacement);\n }\n }\n\n return phrase;\n } // ### warn\n //\n // Provides a warning in the console if a phrase key is missing.\n\n\n function warn(message) {\n root.console && root.console.warn && root.console.warn('WARNING: ' + message);\n } // ### clone\n //\n // Clone an object.\n\n\n function clone(source) {\n var ret = {};\n\n for (var prop in source) {\n ret[prop] = source[prop];\n }\n\n return ret;\n }\n\n return Polyglot;\n});","import { t } from 'es6/services/localization';\n\n/**\n * @param {String} langCode short hand language code\n */\nexport function language(langCode) {\n switch (langCode.toLowerCase()) {\n case 'aa':\n return t('language-display-aa');\n case 'ab':\n return t('language-display-ab');\n case 'af':\n return t('language-display-af');\n case 'ak':\n return t('language-display-ak');\n case 'am':\n return t('language-display-am');\n case 'ar':\n return t('language-display-ar');\n case 'an':\n return t('language-display-an');\n case 'as':\n return t('language-display-as');\n case 'av':\n return t('language-display-av');\n case 'ae':\n return t('language-display-ae');\n case 'ay':\n return t('language-display-ay');\n case 'az':\n return t('language-display-az');\n case 'ba':\n return t('language-display-ba');\n case 'bm':\n return t('language-display-bm');\n case 'be':\n return t('language-display-be');\n case 'bn':\n return t('language-display-bn');\n case 'bi':\n return t('language-display-bi');\n case 'bo':\n return t('language-display-bo');\n case 'bs':\n return t('language-display-bs');\n case 'br':\n return t('language-display-br');\n case 'bg':\n return t('language-display-bg');\n case 'ca':\n return t('language-display-ca');\n case 'cs':\n return t('language-display-cs');\n case 'ch':\n return t('language-display-ch');\n case 'ce':\n return t('language-display-ce');\n case 'cu':\n return t('language-display-cu');\n case 'cv':\n return t('language-display-cv');\n case 'kw':\n return t('language-display-kw');\n case 'co':\n return t('language-display-co');\n case 'cr':\n return t('language-display-cr');\n case 'cy':\n return t('language-display-cy');\n case 'da':\n return t('language-display-da');\n case 'de':\n return t('language-display-de');\n case 'dv':\n return t('language-display-dv');\n case 'dz':\n return t('language-display-dz');\n case 'el':\n return t('language-display-el');\n case 'en':\n return t('language-display-en');\n case 'eo':\n return t('language-display-eo');\n case 'et':\n return t('language-display-et');\n case 'eu':\n return t('language-display-eu');\n case 'ee':\n return t('language-display-ee');\n case 'fo':\n return t('language-display-fo');\n case 'fa':\n return t('language-display-fa');\n case 'fj':\n return t('language-display-fj');\n case 'fi':\n return t('language-display-fi');\n case 'fr':\n return t('language-display-fr');\n case 'fy':\n return t('language-display-fy');\n case 'ff':\n return t('language-display-ff');\n case 'gd':\n return t('language-display-gd');\n case 'ga':\n return t('language-display-ga');\n case 'gl':\n return t('language-display-gl');\n case 'gv':\n return t('language-display-gv');\n case 'gn':\n return t('language-display-gn');\n case 'gu':\n return t('language-display-gu');\n case 'ht':\n return t('language-display-ht');\n case 'ha':\n return t('language-display-ha');\n case 'he':\n return t('language-display-he');\n case 'hz':\n return t('language-display-hz');\n case 'hi':\n return t('language-display-hi');\n case 'ho':\n return t('language-display-ho');\n case 'hr':\n return t('language-display-hr');\n case 'hu':\n return t('language-display-hu');\n case 'hy':\n return t('language-display-hy');\n case 'ig':\n return t('language-display-ig');\n case 'io':\n return t('language-display-io');\n case 'ii':\n return t('language-display-ii');\n case 'iu':\n return t('language-display-iu');\n case 'ia':\n return t('language-display-ia');\n case 'id':\n return t('language-display-id');\n case 'ik':\n return t('language-display-ik');\n case 'is':\n return t('language-display-is');\n case 'it':\n return t('language-display-it');\n case 'jv':\n return t('language-display-jv');\n case 'ja':\n return t('language-display-ja');\n case 'kl':\n return t('language-display-kl');\n case 'kn':\n return t('language-display-kn');\n case 'ks':\n return t('language-display-ks');\n case 'ka':\n return t('language-display-ka');\n case 'kr':\n return t('language-display-kr');\n case 'kk':\n return t('language-display-kk');\n case 'km':\n return t('language-display-km');\n case 'ki':\n return t('language-display-ki');\n case 'rw':\n return t('language-display-rw');\n case 'ky':\n return t('language-display-ky');\n case 'kv':\n return t('language-display-kv');\n case 'kg':\n return t('language-display-kg');\n case 'ko':\n return t('language-display-ko');\n case 'kj':\n return t('language-display-kj');\n case 'ku':\n return t('language-display-ku');\n case 'lo':\n return t('language-display-lo');\n case 'la':\n return t('language-display-la');\n case 'lv':\n return t('language-display-lv');\n case 'li':\n return t('language-display-li');\n case 'ln':\n return t('language-display-ln');\n case 'lt':\n return t('language-display-lt');\n case 'lb':\n return t('language-display-lb');\n case 'lu':\n return t('language-display-lu');\n case 'lg':\n return t('language-display-lg');\n case 'mh':\n return t('language-display-mh');\n case 'ml':\n return t('language-display-ml');\n case 'mr':\n return t('language-display-mr');\n case 'mk':\n return t('language-display-mk');\n case 'mg':\n return t('language-display-mg');\n case 'mt':\n return t('language-display-mt');\n case 'mo':\n return t('language-display-mo');\n case 'mn':\n return t('language-display-mn');\n case 'mi':\n return t('language-display-mi');\n case 'ms':\n return t('language-display-ms');\n case 'my':\n return t('language-display-my');\n case 'na':\n return t('language-display-na');\n case 'nv':\n return t('language-display-nv');\n case 'nr':\n return t('language-display-nr');\n case 'nd':\n return t('language-display-nd');\n case 'ng':\n return t('language-display-ng');\n case 'ne':\n return t('language-display-ne');\n case 'nl':\n return t('language-display-nl');\n case 'no':\n return t('language-display-no');\n case 'ny':\n return t('language-display-ny');\n case 'oc':\n return t('language-display-oc');\n case 'oj':\n return t('language-display-oj');\n case 'or':\n return t('language-display-or');\n case 'om':\n return t('language-display-om');\n case 'os':\n return t('language-display-os');\n case 'pa':\n return t('language-display-pa');\n case 'pl':\n return t('language-display-pl');\n case 'pt':\n return t('language-display-pt');\n case 'ps':\n return t('language-display-ps');\n case 'qu':\n return t('language-display-qu');\n case 'rm':\n return t('language-display-rm');\n case 'ro':\n return t('language-display-ro');\n case 'rn':\n return t('language-display-rn');\n case 'ru':\n return t('language-display-ru');\n case 'sg':\n return t('language-display-sg');\n case 'sa':\n return t('language-display-sa');\n case 'si':\n return t('language-display-si');\n case 'sk':\n return t('language-display-sk');\n case 'sl':\n return t('language-display-sl');\n case 'se':\n return t('language-display-se');\n case 'sm':\n return t('language-display-sm');\n case 'sn':\n return t('language-display-sn');\n case 'sd':\n return t('language-display-sd');\n case 'so':\n return t('language-display-so');\n case 'st':\n return t('language-display-st');\n case 'es':\n return t('language-display-es');\n case 'sq':\n return t('language-display-sq');\n case 'sc':\n return t('language-display-sc');\n case 'sr':\n return t('language-display-sr');\n case 'ss':\n return t('language-display-ss');\n case 'su':\n return t('language-display-su');\n case 'sw':\n return t('language-display-sw');\n case 'sv':\n return t('language-display-sv');\n case 'ty':\n return t('language-display-ty');\n case 'ta':\n return t('language-display-ta');\n case 'tt':\n return t('language-display-tt');\n case 'te':\n return t('language-display-te');\n case 'tg':\n return t('language-display-tg');\n case 'tl':\n return t('language-display-tl');\n case 'th':\n return t('language-display-th');\n case 'ti':\n return t('language-display-ti');\n case 'to':\n return t('language-display-to');\n case 'tn':\n return t('language-display-tn');\n case 'ts':\n return t('language-display-ts');\n case 'tk':\n return t('language-display-tk');\n case 'tr':\n return t('language-display-tr');\n case 'tw':\n return t('language-display-tw');\n case 'ug':\n return t('language-display-ug');\n case 'uk':\n return t('language-display-uk');\n case 'ur':\n return t('language-display-ur');\n case 'uz':\n return t('language-display-uz');\n case 've':\n return t('language-display-ve');\n case 'vi':\n return t('language-display-vi');\n case 'vo':\n return t('language-display-vo');\n case 'wa':\n return t('language-display-wa');\n case 'wo':\n return t('language-display-wo');\n case 'xh':\n return t('language-display-xh');\n case 'yi':\n return t('language-display-yi');\n case 'za':\n return t('language-display-za');\n case 'zu':\n return t('language-display-zu');\n case 'zh-hans':\n return t('language-display-zh-hans');\n case 'zh-hant':\n return t('language-display-zh-hant');\n case 'zh-hk':\n return t('language-display-zh-hk');\n case 'zh-tw':\n return t('language-display-zh-tw');\n case 'tlh':\n return t('language-display-tlh');\n case 'qya':\n return t('language-display-qya');\n case 'sjn':\n return t('language-display-sjn');\n case 'ang':\n return t('language-display-ang');\n case 'och':\n return t('language-display-och');\n case 'ojp':\n return t('language-display-ojp');\n case 'grc':\n return t('language-display-grc');\n case 'arc':\n return t('language-display-arc');\n case 'ain':\n return t('language-display-ain');\n case 'haw':\n return t('language-display-haw');\n case 'jbo':\n return t('language-display-jbo');\n case 'xto':\n return t('language-display-xto');\n case 'txb':\n return t('language-display-txb');\n case 'vec':\n return t('language-display-vec');\n case 'hit':\n return t('language-display-hit');\n case 'enm':\n return t('language-display-enm');\n case 'egy':\n return t('language-display-egy');\n case 'ast':\n return t('language-display-ast');\n default:\n return '';\n }\n}\n\n/**\n * @param {String} pos the part of speech (presumably from the server)\n * @param {Boolean} emptyOnNone returns empty string on none\n * @returns {String}\n */\nexport function partOfSpeech(pos, emptyOnNone = true) {\n if (emptyOnNone && !pos || pos === 'None') {\n return '';\n } else {\n switch (pos.toLowerCase()) {\n case 'none':\n return t('pos.none');\n case 'proper noun':\n return t('pos.proper noun');\n case 'noun':\n return t('pos.noun');\n case 'phrase':\n return t('pos.phrase');\n case 'verb':\n return t('pos.verb');\n case 'noun abbreviation':\n return t('pos.noun abbreviation');\n case 'adjective':\n return t('pos.adjective');\n case 'conjunction':\n return t('pos.conjunction');\n case 'adverb':\n return t('pos.adverb');\n case 'interrogative':\n return t('pos.interrogative');\n case 'preposition':\n return t('pos.preposition');\n case 'auxiliary verb':\n return t('pos.auxiliary verb');\n case 'pronoun':\n return t('pos.pronoun');\n case 'phrasal verb':\n return t('pos.phrasal verb');\n case 'interjection':\n return t('pos.interjection');\n case 'particle':\n return t('pos.particle');\n case 'verbal noun':\n return t('pos.verbal noun');\n case 'adjectival noun':\n return t('pos.adjectival noun');\n case 'kana':\n return t('pos.kana');\n case 'prefix':\n return t('pos.prefix');\n case 'suffix':\n return t('pos.suffix');\n case 'determiner':\n return t('pos.determiner');\n default:\n return '';\n }\n }\n}\n","import Config from 'es6/core/config';\nimport { base64Encode } from 'es6/helpers/string';\n\nconst loadedImages = new Map();\n\nfunction getTranscodeSubDomain(url) {\n let hash = 0;\n\n for (let i = 0; i < url.length; i++) {\n hash += url.charCodeAt(i) * (i + 1);\n }\n\n return Math.abs(hash) % Config.getTranscoderCdns();\n}\n\nexport const clear = () => loadedImages.clear();\n\n/**\n * Given a URL and some options, generate a transcoded URL.\n *\n * @param {String} url path to original image\n * @param {Number} options.width\n * @param {Number} options.height\n *\n * Returns a string of the transcoded URL.\n */\nexport const getTranscodedUrl = (url, { width, height } = {}) => {\n let params = '';\n const match = url.match(/\\/([^?/.]+)(\\.[^?/.]+)*(?:\\??[^/]*)$/);\n\n if (!match) {\n return url;\n }\n\n if (width && height) {\n params = `_${width}x${height}`;\n }\n\n const file = match[1];\n const ext = match[2] || '.jpg';\n const encodedUrl = base64Encode(url);\n const subDomain = getTranscodeSubDomain(url);\n const domain = Config.getTranscoderHost().replace(/%d/, subDomain);\n\n return `//${domain}/t/${encodedUrl}/${file}${params}${ext}`;\n};\n\nexport const get = (src) => loadedImages.get(src);\n\n/**\n * Preloads an image. Returns a promise that on success, gives\n * the image back.\n *\n * @param {String} src URL of image to load\n * @returns {Promise}\n */\nexport const load = (src) => new Promise((resolve, reject) => {\n if (loadedImages.has(src)) {\n resolve(loadedImages.get(src));\n } else {\n const image = new Image();\n\n image.addEventListener('load', () => {\n loadedImages.set(src, image);\n resolve(image);\n });\n\n image.addEventListener('error', () => reject(new Error(`Error loading image ${src}`)));\n\n image.src = src;\n }\n});\n\nexport const remove = (src) => loadedImages.delete(src);\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is loosely based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;","/* eslint-disable no-param-reassign, default-case */\nimport ItemPackage from 'es6/models/item-package';\nimport { t } from 'es6/services/localization';\n\nexport const ItemsRequiredForStudy = 2;\n\nexport const DIFFICULTY_LEVEL_BEGINNER = 1;\nexport const DIFFICULTY_LEVEL_LOWER_INTERMEDIATE = 2;\nexport const DIFFICULTY_LEVEL_INTERMEDIATE = 3;\nexport const DIFFICULTY_LEVEL_UPPER_INTERMEDIATE = 4;\nexport const DIFFICULTY_LEVEL_ADVANCED = 5;\n\n\nexport class Goal {\n constructor(attrs = {}) {\n // Don't want to override our getter method.\n attrs = _.omit(attrs, 'progress');\n\n _.defaults(this, attrs, {\n id: null,\n createdAt: null,\n updatedAt: null,\n publishedAt: null,\n isCommunity: null,\n title: null,\n description: null,\n difficultyLevel: null,\n cueLanguage: null,\n responseLanguage: null,\n icon: null,\n itemsCount: null,\n sentencesCount: null,\n usersCount: null,\n author: null,\n rights: null,\n goalItems: null,\n });\n\n if (this.createdAt && !(this.createdAt instanceof Date)) {\n this.createdAt = new Date(this.createdAt);\n }\n\n if (this.updatedAt && !(this.updatedAt instanceof Date)) {\n this.updatedAt = new Date(this.updatedAt);\n }\n\n if (this.publishedAt && !(this.publishedAt instanceof Date)) {\n this.publishedAt = new Date(this.publishedAt);\n }\n\n // Cast goal items to ItemPackage\n if (this.goalItems instanceof Array) {\n this.goalItems = this.goalItems.map((goalItem) => {\n goalItem.goalId = this.id;\n return !(goalItem instanceof ItemPackage) ? new ItemPackage(goalItem) : goalItem;\n });\n }\n }\n\n /**\n * Retrieves the new items count. Will use provided aggregate memory\n * to calculate number if provided. Otherwise it will use the\n * aggregateMemory set to this goal.\n *\n * aggregateMemory: AggregateMemory\n */\n getNewItemsCount(aggregateMemory = null) {\n return this.itemsCount - aggregateMemory.items.skippedItemsCount - aggregateMemory.items.studiedItemsCount;\n }\n\n /**\n * Retrieves the total items count (removes skipped). Will use provided\n * aggregate memory to calculate number if provided. Otherwise it will use the\n * aggregateMemory set to this goal.\n *\n * aggregateMemory: AggregateMemory\n */\n getTotalItemsCount(aggregateMemory = null) {\n return this.itemsCount - aggregateMemory.items.skippedItemsCount;\n }\n\n /**\n * Retrieves the total items that are ready to be studied.\n *\n * aggregateMemory: AggregateMemory\n */\n getReadyItemsCount(aggregateMemory = null) {\n return this.getNewItemsCount(aggregateMemory) + aggregateMemory.items.eligibleItemsCount;\n }\n\n /**\n * Returns the string for difficulty level.\n */\n getDifficultyLevel() {\n let difficultyLevel = null;\n\n switch (this.difficultyLevel) {\n case DIFFICULTY_LEVEL_BEGINNER:\n difficultyLevel = t('beginner');\n break;\n case DIFFICULTY_LEVEL_LOWER_INTERMEDIATE:\n difficultyLevel = t('lower intermediate');\n break;\n case DIFFICULTY_LEVEL_INTERMEDIATE:\n difficultyLevel = t('intermediate');\n break;\n case DIFFICULTY_LEVEL_UPPER_INTERMEDIATE:\n difficultyLevel = t('upper intermediate');\n break;\n case DIFFICULTY_LEVEL_ADVANCED:\n difficultyLevel = t('advanced');\n break;\n }\n\n return difficultyLevel;\n }\n\n /**\n * Can this goal do any sentence study quizzes.\n *\n * @returns {Boolean}\n */\n isSentenceStudyEnabled() {\n return this.sentencesCount > 0;\n }\n\n /**\n * Determines if a goal is studiable. If an aggregate memory is provided,\n * will include skippedItems to decide. If not, will use the default item\n * count.\n */\n isStudiable() {\n return this.itemsCount >= ItemsRequiredForStudy;\n }\n}\n\nexport default Goal;\n","/* eslint-disable brace-style */\nimport Config from 'es6/core/config';\n\n/**\n * Something important to note about this class is that it does check\n * the config settings for language dependencies.\n */\nexport default class Transliterable {\n /**\n * Expects the following attributes:\n * - language\n * - text\n * - transliterations\n */\n constructor(attrs = {}) {\n _.defaults(this, attrs);\n }\n\n /**\n * Returns a two character code for the language\n *\n * @param {Transliterable} transliterable\n * @returns {String}\n */\n getLanguageShortCode() {\n return this.language && this.language.substr(0, 2);\n }\n\n /**\n * Returns the appropriate transliteration for sorting Transliterables.\n *\n * @returns {String}\n */\n getSortableText() {\n const language = this.getLanguageShortCode();\n\n if (language === 'ja' && this.transliterations.Hira) {\n return this.transliterations.Hira;\n } else if (language === 'zh' && this.transliterations.Latn) {\n return this.transliterations.Latn;\n } else {\n return this.text;\n }\n }\n\n /**\n * Gets the appropriate text for a word based on the app configuration.\n *\n * @returns {String}\n */\n getText() {\n const transliterations = this.transliterations;\n\n if (this.getLanguageShortCode() === 'ja') {\n if (Config.langSettings.romajiMode) {\n return transliterations.Latn;\n } else if (Config.langSettings.kanaMode) {\n return transliterations.Hrkt;\n }\n }\n\n return this.text;\n }\n\n /**\n * Gets the appropriate transliteration for a word based on the app\n * configuration.\n *\n * @returns {String}\n */\n getTransliteration() {\n const lang = this.getLanguageShortCode();\n const transliterations = this.transliterations;\n\n if (lang === 'zh') {\n return transliterations.Latn;\n } else if (lang === 'ja') {\n if (Config.langSettings.kanaMode) {\n return transliterations.Latn;\n }\n\n // If it is not romaji mode, default to hiragana/katakana.\n // If this is a hiragana or katakana word, only return it if\n // it does not match the text.\n else if (!Config.langSettings.romajiMode && transliterations.Hrkt !== this.text) {\n return transliterations.Hrkt;\n }\n }\n\n return null;\n }\n}\n","'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\n\nvar _asap = require('asap');\n\nvar _asap2 = _interopRequireDefault(_asap);\n\nvar _generate = require('./generate');\n\nvar _util = require('./util'); // The current <style> tag we are inserting into, or null if we haven't\n// inserted anything yet. We could find this each time using\n// `document.querySelector(\"style[data-aphrodite\"])`, but holding onto it is\n// faster.\n\n\nvar styleTag = null; // Inject a string of styles into a <style> tag in the head of the document. This\n// will automatically create a style tag and then continue to use it for\n// multiple injections. It will also use a style tag with the `data-aphrodite`\n// tag on it if that exists in the DOM. This could be used for e.g. reusing the\n// same style tag that server-side rendering inserts.\n\nvar injectStyleTag = function injectStyleTag(cssContents) {\n if (styleTag == null) {\n // Try to find a style tag with the `data-aphrodite` attribute first.\n styleTag = document.querySelector(\"style[data-aphrodite]\"); // If that doesn't work, generate a new style tag.\n\n if (styleTag == null) {\n // Taken from\n // http://stackoverflow.com/questions/524696/how-to-create-a-style-tag-with-javascript\n var head = document.head || document.getElementsByTagName('head')[0];\n styleTag = document.createElement('style');\n styleTag.type = 'text/css';\n styleTag.setAttribute(\"data-aphrodite\", \"\");\n head.appendChild(styleTag);\n }\n }\n\n if (styleTag.styleSheet) {\n styleTag.styleSheet.cssText += cssContents;\n } else {\n styleTag.appendChild(document.createTextNode(cssContents));\n }\n}; // Custom handlers for stringifying CSS values that have side effects\n// (such as fontFamily, which can cause @font-face rules to be injected)\n\n\nvar stringHandlers = {\n // With fontFamily we look for objects that are passed in and interpret\n // them as @font-face rules that we need to inject. The value of fontFamily\n // can either be a string (as normal), an object (a single font face), or\n // an array of objects and strings.\n fontFamily: function fontFamily(val) {\n if (Array.isArray(val)) {\n return val.map(fontFamily).join(\",\");\n } else if (_typeof(val) === \"object\") {\n injectStyleOnce(val.fontFamily, \"@font-face\", [val], false);\n return '\"' + val.fontFamily + '\"';\n } else {\n return val;\n }\n },\n // With animationName we look for an object that contains keyframes and\n // inject them as an `@keyframes` block, returning a uniquely generated\n // name. The keyframes object should look like\n // animationName: {\n // from: {\n // left: 0,\n // top: 0,\n // },\n // '50%': {\n // left: 15,\n // top: 5,\n // },\n // to: {\n // left: 20,\n // top: 20,\n // }\n // }\n // TODO(emily): `stringHandlers` doesn't let us rename the key, so I have\n // to use `animationName` here. Improve that so we can call this\n // `animation` instead of `animationName`.\n animationName: function animationName(val) {\n if (_typeof(val) !== \"object\") {\n return val;\n } // Generate a unique name based on the hash of the object. We can't\n // just use the hash because the name can't start with a number.\n // TODO(emily): this probably makes debugging hard, allow a custom\n // name?\n\n\n var name = 'keyframe_' + (0, _util.hashObject)(val); // Since keyframes need 3 layers of nesting, we use `generateCSS` to\n // build the inner layers and wrap it in `@keyframes` ourselves.\n\n var finalVal = '@keyframes ' + name + '{';\n Object.keys(val).forEach(function (key) {\n finalVal += (0, _generate.generateCSS)(key, [val[key]], stringHandlers, false);\n });\n finalVal += '}';\n injectGeneratedCSSOnce(name, finalVal);\n return name;\n }\n}; // This is a map from Aphrodite's generated class names to `true` (acting as a\n// set of class names)\n\nvar alreadyInjected = {}; // This is the buffer of styles which have not yet been flushed.\n\nvar injectionBuffer = \"\"; // A flag to tell if we are already buffering styles. This could happen either\n// because we scheduled a flush call already, so newly added styles will\n// already be flushed, or because we are statically buffering on the server.\n\nvar isBuffering = false;\n\nvar injectGeneratedCSSOnce = function injectGeneratedCSSOnce(key, generatedCSS) {\n if (!alreadyInjected[key]) {\n if (!isBuffering) {\n // We should never be automatically buffering on the server (or any\n // place without a document), so guard against that.\n if (typeof document === \"undefined\") {\n throw new Error(\"Cannot automatically buffer without a document\");\n } // If we're not already buffering, schedule a call to flush the\n // current styles.\n\n\n isBuffering = true;\n (0, _asap2['default'])(flushToStyleTag);\n }\n\n injectionBuffer += generatedCSS;\n alreadyInjected[key] = true;\n }\n};\n\nvar injectStyleOnce = function injectStyleOnce(key, selector, definitions, useImportant) {\n if (!alreadyInjected[key]) {\n var generated = (0, _generate.generateCSS)(selector, definitions, stringHandlers, useImportant);\n injectGeneratedCSSOnce(key, generated);\n }\n};\n\nexports.injectStyleOnce = injectStyleOnce;\n\nvar reset = function reset() {\n injectionBuffer = \"\";\n alreadyInjected = {};\n isBuffering = false;\n styleTag = null;\n};\n\nexports.reset = reset;\n\nvar startBuffering = function startBuffering() {\n if (isBuffering) {\n throw new Error(\"Cannot buffer while already buffering\");\n }\n\n isBuffering = true;\n};\n\nexports.startBuffering = startBuffering;\n\nvar flushToString = function flushToString() {\n isBuffering = false;\n var ret = injectionBuffer;\n injectionBuffer = \"\";\n return ret;\n};\n\nexports.flushToString = flushToString;\n\nvar flushToStyleTag = function flushToStyleTag() {\n var cssContent = flushToString();\n\n if (cssContent.length > 0) {\n injectStyleTag(cssContent);\n }\n};\n\nexports.flushToStyleTag = flushToStyleTag;\n\nvar getRenderedClassNames = function getRenderedClassNames() {\n return Object.keys(alreadyInjected);\n};\n\nexports.getRenderedClassNames = getRenderedClassNames;\n\nvar addRenderedClassNames = function addRenderedClassNames(classNames) {\n classNames.forEach(function (className) {\n alreadyInjected[className] = true;\n });\n};\n\nexports.addRenderedClassNames = addRenderedClassNames;\n/**\n * Inject styles associated with the passed style definition objects, and return\n * an associated CSS class name.\n *\n * @param {boolean} useImportant If true, will append !important to generated\n * CSS output. e.g. {color: red} -> \"color: red !important\".\n * @param {Object[]} styleDefinitions style definition objects as returned as\n * properties of the return value of StyleSheet.create().\n */\n\nvar injectAndGetClassName = function injectAndGetClassName(useImportant, styleDefinitions) {\n // Filter out falsy values from the input, to allow for\n // `css(a, test && c)`\n var validDefinitions = styleDefinitions.filter(function (def) {\n return def;\n }); // Break if there aren't any valid styles.\n\n if (validDefinitions.length === 0) {\n return \"\";\n }\n\n var className = validDefinitions.map(function (s) {\n return s._name;\n }).join(\"-o_O-\");\n injectStyleOnce(className, '.' + className, validDefinitions.map(function (d) {\n return d._definition;\n }), useImportant);\n return className;\n};\n\nexports.injectAndGetClassName = injectAndGetClassName;","/**\n * Allows the prop to be optional (not present in props object\n * in other words) but doesn't allow it to have value undefined\n */\nexport function optionalOneOf(values = []) {\n return (props, name) => {\n const defined = name in props;\n const correct = values.includes(props[name]);\n\n return (!defined || (defined && correct)\n ? null\n : new Error(`Property ${name} must be one of ${JSON.stringify(values)} but is: ${props[name]}.`));\n };\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = assign;\n\nfunction assign(obj, source) {\n // This rule is necessary for this function to work\n\n /* eslint no-param-reassign: 0 */\n if (source) {\n Object.keys(source).forEach(function (name) {\n obj[name] = source[name];\n });\n }\n\n for (var _len = arguments.length, sources = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n sources[_key - 2] = arguments[_key];\n }\n\n return sources.length === 0 ? obj : assign.apply(undefined, [obj].concat(sources));\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = createWalker;\n\nvar _defs = require('./defs');\n\nvar IGNORED_NODES = {\n SCRIPT: true,\n STYLE: true\n};\n\nfunction createWalker(root) {\n return document.createTreeWalker(root, NodeFilter.SHOW_TEXT, function (node) {\n return node.parentNode.className === _defs.POPUP_CLASS ? NodeFilter.FILTER_SKIP : node.parentNode.nodeName in IGNORED_NODES ? NodeFilter.FILTER_SKIP : NodeFilter.FILTER_ACCEPT;\n }, false);\n}","import ItemQuizBase from 'es6/controllers/apps/quizzes/item-quiz-base';\nimport Study from 'es6/controllers/apps/quizzes/study';\nimport RapidChoicePair from 'es6/controllers/apps/quizzes/rapid-choice-pair';\nimport ReverseRapidChoicePair from 'es6/controllers/apps/quizzes/reverse-rapid-choice-pair';\nimport SentenceStudyListeningFillInTheBlankPartial from 'es6/controllers/apps/quizzes/sentence-study-listening-fill-in-the-blank-partial';\nimport SentenceStudyListeningFillInTheBlank from 'es6/controllers/apps/quizzes/sentence-study-listening-fill-in-the-blank';\nimport SentenceStudyListeningAssembly from 'es6/controllers/apps/quizzes/sentence-study-listening-assembly';\nimport SentenceStudyTranslationAssembly from 'es6/controllers/apps/quizzes/sentence-study-translation-assembly';\nimport SelfAssessment, { SelfAssessmentBinary } from 'es6/controllers/apps/quizzes/self-assessment';\nimport ReverseSelfAssessment, { ReverseSelfAssessmentBinary } from 'es6/controllers/apps/quizzes/reverse-self-assessment';\n\nexport class MultipleChoiceLimited extends ItemQuizBase {\n constructor(...args) {\n super(...args);\n this._setQuizType('MultipleChoiceLimited');\n this.recall = 'cue';\n this.quizContent = 'response';\n this.screen = 'multiple_choice_five';\n }\n}\n\nexport class ReverseMultipleChoiceLimited extends ItemQuizBase {\n constructor(...args) {\n super(...args);\n this._setQuizType('ReverseMultipleChoiceLimited');\n this.recall = 'response';\n this.quizContent = 'cue';\n this.screen = 'multiple_choice_five';\n this.showHint = true;\n }\n}\n\nexport class SentenceMultipleChoiceLimited extends ItemQuizBase {\n constructor(...args) {\n super(...args);\n this._setQuizType('SentenceMultipleChoiceLimited');\n this.recall = 'blank_sentence_and_translation';\n this.quizContent = 'cue';\n this.screen = 'multiple_choice_five';\n this.requiresSentence = true;\n this.requiresSentenceTranslation = true;\n }\n}\n\nexport class TransliterationMultipleChoiceLimited extends ItemQuizBase {\n constructor(...args) {\n super(...args);\n this._setQuizType('TransliterationMultipleChoiceLimited');\n this.recall = 'cue_with_no_reading';\n this.quizContent = 'transliteration';\n this.screen = 'multiple_choice_five';\n }\n}\n\nexport class ReverseTransliterationMultipleChoiceLimited extends ItemQuizBase {\n constructor(...args) {\n super(...args);\n this._setQuizType('ReverseTransliterationMultipleChoiceLimited');\n this.recall = 'transliteration';\n this.quizContent = 'cue';\n this.screen = 'multiple_choice_five';\n }\n}\n\nexport class ListeningMultipleChoiceLimited extends ItemQuizBase {\n constructor(...args) {\n super(...args);\n this._setQuizType('ListeningMultipleChoiceLimited');\n this.recall = 'sound';\n this.quizContent = 'response';\n this.screen = 'multiple_choice_five';\n }\n}\n\nexport class ReverseFillInTheBlank extends ItemQuizBase {\n constructor(...args) {\n super(...args);\n this._setQuizType('ReverseFillInTheBlank');\n this.recall = 'response';\n this.quizContent = 'cue';\n this.screen = 'fill_in_the_blank';\n this.showHint = true;\n }\n}\n\nexport class TransliterationFillInTheBlank extends ItemQuizBase {\n constructor(...args) {\n super(...args);\n this._setQuizType('TransliterationFillInTheBlank');\n this.recall = 'cue_with_no_reading';\n this.quizContent = 'transliteration';\n this.screen = 'fill_in_the_blank';\n }\n}\n\nexport class SentenceFillInTheBlank extends ItemQuizBase {\n constructor(...args) {\n super(...args);\n this._setQuizType('SentenceFillInTheBlank');\n this.recall = 'blank_sentence_and_translation';\n this.quizContent = 'recall';\n this.screen = 'fill_in_the_blank';\n this.requiresSentence = true;\n this.requiresSentenceTranslation = true;\n }\n}\n\nexport class DictationFillInTheBlank extends ItemQuizBase {\n constructor(...args) {\n super(...args);\n this._setQuizType('DictationFillInTheBlank');\n this.recall = 'blank_sentence';\n this.quizContent = 'recall';\n this.screen = 'fill_in_the_blank';\n this.requiresSentence = true;\n this.requiresSentenceAudio = true;\n }\n}\n\nexport default Object.freeze({\n DictationFillInTheBlank,\n ListeningMultipleChoiceLimited,\n MultipleChoiceLimited,\n RapidChoicePair,\n ReverseFillInTheBlank,\n ReverseMultipleChoiceLimited,\n ReverseRapidChoicePair,\n ReverseSelfAssessment,\n ReverseSelfAssessmentBinary,\n ReverseTransliterationMultipleChoiceLimited,\n SelfAssessment,\n SelfAssessmentBinary,\n SentenceFillInTheBlank,\n SentenceMultipleChoiceLimited,\n SentenceStudyListeningFillInTheBlankPartial,\n SentenceStudyListeningFillInTheBlank,\n SentenceStudyListeningAssembly,\n SentenceStudyTranslationAssembly,\n Study,\n TransliterationFillInTheBlank,\n TransliterationMultipleChoiceLimited,\n});\n","/* eslint-disable default-case, react/prop-types, no-return-assign, react/sort-comp, no-shadow, react/no-did-update-set-state, react/jsx-no-bind, quote-props, react/jsx-closing-bracket-location, consistent-return */\nimport classnames from 'classnames';\nimport React, { Component, PropTypes } from 'react';\nimport Keys from 'es6/core/keys';\nimport Annotations from 'es6/components/apps/annotations';\nimport FitText from 'es6/components/common/fit-text';\nimport { partOfSpeech } from 'es6/helpers/localization';\nimport Glyph, { JAPANESE_CHARACTER, KEYBOARD, PAPERCLIP } from 'es6/components/common/glyph';\nimport KanjiStrokes, { containsDisplayableCharacters } from 'es6/components/apps/kanji-strokes';\nimport { NavButton, Navigation } from 'es6/components/apps/navigation';\nimport SentenceTab from 'es6/components/apps/sentence-tab';\nimport SpellingPractice from 'es6/components/apps/spelling-practice';\nimport SoundPlayer from 'es6/components/common/sound-player';\nimport SoundManager from 'es6/services/sound-manager';\nimport { t } from 'es6/services/localization';\n\n// Have a subset of modes for the screen.\nexport const DEFAULT_MODE = 0;\nexport const ANIMATION_MODE = 1;\nexport const ANNOTATION_MODE = 2;\nexport const KANJI_STROKE_MODE = 3;\nexport const SENTENCE_MODE = 4;\nexport const SPELLING_MODE = 5;\n\n// Animation/Sound phases.\nconst ANIMATION_INITIAL = 0;\nconst ANIMATION_CUE_INITIAL = 1;\nconst ANIMATION_PLAY_SOUND_INITIAL = 2;\nconst ANIMATION_CUE_FADE = 3;\nconst ANIMATION_SOUND_RESPONSE = 4;\nconst ANIMATION_RESPONSE_FADE = 5;\nconst ANIMATION_REVEAL_ALL = 6;\nconst ANIMATION_PLAY_SOUND = 7;\nconst ANIMATION_SHADOWING = 8;\nconst ANIMATION_SHADOWING_FADE = 9;\n\n/**\n * This returns whether or not kanji strokes will be rendered.\n *\n * @this StudyScreen\n * @returns {Boolean}\n */\nfunction kanjiStrokesEnabled() {\n const { itemPackage } = this.props;\n return itemPackage.getLanguage() === 'ja' && containsDisplayableCharacters(itemPackage.getText());\n}\n\n/**\n * @this StudyScreen\n */\nfunction showKanjiStrokes() {\n this.setState({ mode: KANJI_STROKE_MODE });\n}\n\n/**\n * This returns whether or not annotations will be rendered.\n *\n * @this StudyScreen\n * @returns {Boolean}\n */\nfunction annotationsEnabled() {\n return !!this.props.itemPackage.getAnnotation();\n}\n\n/**\n * This returns whether or not fill in the blank will be rendered.\n *\n * @this StudyScreen\n * @returns {Boolean}\n */\nfunction spellingModeEnabled() {\n const { itemPackage } = this.props;\n return !itemPackage.isKanaCourseItem();\n}\n\n/**\n * @this StudyScreen\n * @returns {Object}\n */\nfunction getInitialState() {\n return {\n animationPhase: ANIMATION_INITIAL,\n animationRequestId: null,\n mode: this.props.animateOnMount ? ANIMATION_MODE : DEFAULT_MODE,\n };\n}\n\n/**\n * @this StudyScreen\n */\nfunction toggleFillInTheBlank() {\n const mode = this.state.mode === SPELLING_MODE ? DEFAULT_MODE : SPELLING_MODE;\n this.setState({ mode });\n}\n\n/**\n * @this StudyScreen\n * @param {Event} e\n */\nfunction handleKeydown(e) {\n const { ctrlKey, keyCode, metaKey } = e;\n const { mode } = this.state;\n const { itemPackage } = this.props;\n const isAnimationOrDefault = mode === DEFAULT_MODE || mode === ANIMATION_MODE;\n\n if (keyCode === Keys.SPACE && (mode === DEFAULT_MODE || mode === SPELLING_MODE) && itemPackage.sound) {\n SoundManager.play(itemPackage.sound);\n }\n\n if (keyCode === Keys.DELETE && mode !== SPELLING_MODE) {\n this.props.onRemove();\n }\n\n // Try to switch to stroke mode. Since it is the C key, allow for copying\n // by making sure the user is not holding down on control.\n if (keyCode === Keys.C && !ctrlKey && !metaKey && isAnimationOrDefault && kanjiStrokesEnabled.call(this)) {\n showKanjiStrokes.call(this);\n }\n\n if (keyCode === Keys.N && isAnimationOrDefault && annotationsEnabled.call(this)) {\n showAnnotations.call(this);\n }\n\n // Hitting enter stops animation mode.\n // If in spelling mode, hitting enter will not trigger the navigation.\n if (keyCode === Keys.ENTER) {\n if (mode === ANIMATION_MODE) {\n e.preventDefault();\n setDefaultMode.call(this);\n } else if (mode === SPELLING_MODE) {\n e.preventDefault();\n }\n }\n\n // Hitting escape key will reset the state back to the default if in\n // stroke order or annotation mode.\n if (keyCode === Keys.ESC && (mode === SPELLING_MODE || mode === ANNOTATION_MODE || mode === KANJI_STROKE_MODE)) {\n setDefaultMode.call(this);\n }\n}\n\n/**\n * This event needs to be kept separately for opening up the IME.\n * If the IME is enabled with a keydown event, then the keypress event\n * will trigger after and display the character pressed.\n *\n * If the IME is changed to only depend on keydown events, this can also\n * be moved to the keydown handler.\n *\n * @this StudyScreen\n * @param {Event} e\n */\nfunction handleKeypress(e) {\n const { charCode } = e;\n const { mode } = this.state;\n const isAnimationOrDefault = mode === DEFAULT_MODE || mode === ANIMATION_MODE;\n\n if (String.fromCharCode(charCode) === 's' && isAnimationOrDefault && spellingModeEnabled.call(this)) {\n this.setState({ mode: SPELLING_MODE });\n }\n}\n\n/**\n * Callback for clicking the next button.\n *\n * @this StudyScreen\n */\nfunction handleNext() {\n const { mode } = this.state;\n const { onNext } = this.props;\n\n if (mode === ANIMATION_MODE) {\n setDefaultMode.call(this);\n } else {\n onNext();\n }\n}\n\n/**\n * Handles the end of all animations. Most of the callbacks are done\n * through CSS3 animations. However, some are handled by sound player,\n * which will not give an event object. Use the state of the instance\n * to determine what needs to happen next.\n *\n * If you need to change how the transitions behave, make sure this\n * callback is bound to an individual element that takes the longest\n * to transition.\n */\nfunction handleTransitionEnd(e) {\n const { animationPhase, mode } = this.state;\n\n // All of these events are done through CSS animations and the sound player.\n if (mode === ANIMATION_MODE) {\n const { sound } = this.props.itemPackage;\n\n switch (animationPhase) {\n // Set the transition to be PLAY_SOUND_INITIAL and play the sound.\n // Otherwise, skip to the ANIMATION_CUE_FADE part of the animation.\n case ANIMATION_CUE_INITIAL:\n if (sound) {\n this.setState({ animationPhase: ANIMATION_PLAY_SOUND_INITIAL });\n SoundManager.play(sound, { finished: handleTransitionEnd.bind(this) });\n } else {\n this.setState({ animationPhase: ANIMATION_CUE_FADE });\n }\n break;\n\n case ANIMATION_PLAY_SOUND_INITIAL:\n this.setState({ animationPhase: ANIMATION_CUE_FADE });\n break;\n\n case ANIMATION_CUE_FADE:\n this.setState({ animationPhase: ANIMATION_SOUND_RESPONSE });\n break;\n\n case ANIMATION_SOUND_RESPONSE:\n this.setState({ animationPhase: ANIMATION_RESPONSE_FADE });\n break;\n\n case ANIMATION_RESPONSE_FADE:\n this.setState({ animationPhase: ANIMATION_REVEAL_ALL });\n break;\n\n // Similar to animation ANIMATION_CUE_INITIAL. Try to play the sound\n case ANIMATION_REVEAL_ALL:\n if (sound) {\n this.setState({ animationPhase: ANIMATION_PLAY_SOUND });\n SoundManager.play(sound, { finished: handleTransitionEnd.bind(this) });\n } else {\n this.setState({ animationPhase: ANIMATION_SHADOWING });\n }\n break;\n\n case ANIMATION_PLAY_SOUND:\n this.setState({ animationPhase: ANIMATION_SHADOWING });\n break;\n\n case ANIMATION_SHADOWING:\n this.setState({ animationPhase: ANIMATION_SHADOWING_FADE });\n break;\n\n // The animation is finished, set it back to default.\n case ANIMATION_SHADOWING_FADE:\n this.setState({ mode: DEFAULT_MODE });\n break;\n }\n }\n}\n\n/**\n * Navigation component for study screen.\n */\nfunction StudyScreenNavigation({ disableEnterKey, disableArrowKeys, saveNavigationRef, onNext, onRemove }) {\n return (\n <Navigation disableEnterKey={disableEnterKey} disableArrowKeys={disableArrowKeys} ref={saveNavigationRef}>\n <NavButton align=\"left\" onClick={onRemove} title={t('js_iknow.remove')} className=\"btn-danger btn-nav-icon glyph glyph-remove\" />\n <NavButton align=\"right\" focused onClick={onNext}>{t('js_iknow.next')}</NavButton>\n </Navigation>\n );\n}\n\n/**\n * Starts the animation if the phase and mode are initialed.\n *\n * @this StudyScreen\n */\nfunction startAnimation() {\n const { animationPhase, mode } = this.state;\n\n if (mode === ANIMATION_MODE && animationPhase === ANIMATION_INITIAL) {\n this.setState({ animationRequestId: null, animationPhase: ANIMATION_CUE_INITIAL });\n }\n}\n\n/**\n * @this StudyScreen\n */\nfunction showAnnotations() {\n this.setState({ mode: ANNOTATION_MODE });\n}\n\n/**\n * @this StudyScreen\n */\nfunction showSentences() {\n this.setState({ mode: SENTENCE_MODE });\n}\n\n/**\n * This sets the screen to its default mode.\n *\n * @this StudyScreen\n */\nfunction setDefaultMode() {\n this.setState({ mode: DEFAULT_MODE });\n}\n\nclass StudyScreen extends Component {\n constructor(props) {\n super(props);\n this.state = getInitialState.call(this);\n\n // Keep a reference to the bound function so it can be unbound when unmounted.\n this.handleKeypress = handleKeypress.bind(this);\n this.handleKeydown = handleKeydown.bind(this);\n\n this.saveNavigationRef = ref => this.navigationRef = ref;\n }\n\n componentDidMount() {\n const { itemPackage, playAudioOnMount } = this.props;\n\n window.addEventListener('keypress', this.handleKeypress);\n window.addEventListener('keydown', this.handleKeydown);\n startAnimation.call(this);\n\n if (playAudioOnMount) {\n SoundManager.play(itemPackage.sound);\n }\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { animationRequestId, animationPhase, mode } = this.state;\n\n // Start the animation in the next animation frame if the animation phase\n // has been reset. This is done because some browsers will only execute CSS3\n // animations if the properties change between frames.\n if (!animationRequestId && mode === ANIMATION_MODE && animationPhase === ANIMATION_INITIAL) {\n const animationRequestId = requestAnimationFrame(startAnimation.bind(this));\n this.setState({ animationRequestId });\n }\n\n // Refocus the Next button when a new item is shown.\n if (this.props.itemPackage.getId() !== prevProps.itemPackage.getId()) {\n this.navigationRef && this.navigationRef.focusDefaultButton(true);\n }\n\n // Refocus the Next whenever the screen returns to the default mode (e.g. after exiting spelling\n // practice, after closing the sentence tab, after the animation ends, etc.)\n if (this.state.mode === DEFAULT_MODE && prevState.mode !== DEFAULT_MODE) {\n this.navigationRef && this.navigationRef.focusDefaultButton();\n }\n }\n\n /**\n * If the item package changes, reset the state.\n */\n componentWillReceiveProps(nextProps) {\n const { animationRequestId } = this.state;\n\n if (this.props.itemPackage !== nextProps.itemPackage) {\n SoundManager.stop();\n cancelAnimationFrame(animationRequestId);\n this.setState(getInitialState.call(this));\n }\n }\n\n componentWillUnmount() {\n const { animationRequestId } = this.state;\n\n // Stop all sounds.\n SoundManager.stop();\n\n // Stop any animation/timeout that is happening.\n cancelAnimationFrame(animationRequestId);\n\n // Remove events from the window that were for the purpose of this instance.\n window.removeEventListener('keypress', this.handleKeypress);\n window.removeEventListener('keydown', this.handleKeydown);\n }\n\n render() {\n const { animationPhase, mode } = this.state;\n const {\n customNavigation,\n isNew,\n itemPackage,\n onRemove,\n showTranscription } = this.props;\n\n const navigationProps = {\n isNew,\n disableEnterKey: mode !== ANIMATION_MODE && mode !== DEFAULT_MODE && mode !== SENTENCE_MODE,\n // Don't allow switching the focus of the navigation buttons using the arrow keys while the\n // sentence tab is open, because the left/right arrow keys are used to switch between sentences\n // inside the sentence tab.\n disableArrowKeys: mode === SENTENCE_MODE || mode === SPELLING_MODE || mode === KANJI_STROKE_MODE,\n saveNavigationRef: this.saveNavigationRef,\n };\n const { transcription } = itemPackage.item.cue;\n const pos = itemPackage.getPartOfSpeech();\n\n // Classes to perform animations.\n const isAnimationMode = mode === ANIMATION_MODE;\n const screenContentClassName = classnames('screen-content', {\n animate: isAnimationMode,\n 'animate-cue-initial': isAnimationMode && animationPhase === ANIMATION_CUE_INITIAL,\n 'animate-play-sound-initial': isAnimationMode && animationPhase === ANIMATION_PLAY_SOUND_INITIAL,\n 'animate-cue-fade': isAnimationMode && animationPhase === ANIMATION_CUE_FADE,\n 'animate-sound-response': isAnimationMode && animationPhase === ANIMATION_SOUND_RESPONSE,\n 'animate-response-fade': isAnimationMode && animationPhase === ANIMATION_RESPONSE_FADE,\n 'animate-reveal-all': isAnimationMode && animationPhase === ANIMATION_REVEAL_ALL,\n 'animate-play-sound': isAnimationMode && animationPhase === ANIMATION_PLAY_SOUND,\n 'animate-shadowing': isAnimationMode && animationPhase === ANIMATION_SHADOWING,\n 'animate-shadowing-fade': isAnimationMode && animationPhase === ANIMATION_SHADOWING_FADE,\n });\n\n // Determine what element the handleTransitionEnd callback should be placed on.\n const isCueAnimation = animationPhase === ANIMATION_CUE_INITIAL ||\n animationPhase === ANIMATION_CUE_FADE ||\n animationPhase === ANIMATION_REVEAL_ALL;\n\n const isResponseAnimation = animationPhase === ANIMATION_SOUND_RESPONSE ||\n animationPhase === ANIMATION_RESPONSE_FADE;\n\n const isShadowAnimation = animationPhase === ANIMATION_SHADOWING ||\n animationPhase === ANIMATION_SHADOWING_FADE;\n\n const onTransitionEnd = handleTransitionEnd.bind(this);\n\n return (\n <div className=\"screen screen-study-item\">\n <div className={screenContentClassName}>\n <div className={classnames('clipped', { 'spelling-mode': mode === SPELLING_MODE })}>\n <div className={classnames('main', { 'hidden': mode === ANNOTATION_MODE || mode === KANJI_STROKE_MODE })}>\n {isNew && <span className=\"new-item-mark\">{t('js_iknow.new item')}</span>}\n <p className=\"shadowing\" onTransitionEnd={isShadowAnimation && onTransitionEnd}>{t('now you say it')}</p>\n\n <div className=\"cue-response\">\n {showTranscription && transcription && <div className=\"transcription\">{transcription}</div>}\n\n <div className=\"cue\">\n <div className=\"bottom\">\n <p className=\"content\">\n <span className=\"cue-container\">\n {itemPackage.sound &&\n <span className=\"cue-sound\">\n <SoundPlayer source={itemPackage.sound} />\n {' '}\n </span>}\n\n <FitText>\n <span className=\"text-and-transliteration\">\n <span className=\"text\" lang={itemPackage.item.cue.language} onTransitionEnd={isCueAnimation && onTransitionEnd} dangerouslySetInnerHTML={{ __html: itemPackage.getText() }} />\n <span className=\"transliteration\" dangerouslySetInnerHTML={{ __html: itemPackage.getTransliteration() }} />\n </span>\n </FitText>\n </span>\n </p>\n\n {mode === SPELLING_MODE &&\n <SpellingPractice\n language={itemPackage.getLanguage()}\n text={itemPackage.getTransliteration() || itemPackage.getText()}\n sound={itemPackage.sound} />}\n </div>\n </div>\n\n <div className=\"cue-response-separator\"></div>\n\n {pos && <div className=\"part-of-speech\">{partOfSpeech(pos)}</div>}\n\n <div className=\"response\" onTransitionEnd={isResponseAnimation && onTransitionEnd}>\n <p className=\"text\">\n <FitText><span dangerouslySetInnerHTML={{ __html: itemPackage.getTranslation() }} /></FitText>\n </p>\n </div>\n\n <div className=\"actions\">\n {spellingModeEnabled.call(this) && <Glyph type={KEYBOARD} onClick={toggleFillInTheBlank.bind(this)} className=\"btn btn-icon btn-bar\" title={t('spelling')} />}\n {' '}\n {kanjiStrokesEnabled.call(this) && <Glyph type={JAPANESE_CHARACTER} onClick={showKanjiStrokes.bind(this)} className=\"btn btn-icon btn-bar\" title={t('stroke order')} />}\n {' '}\n {annotationsEnabled.call(this) && <Glyph type={PAPERCLIP} onClick={showAnnotations.bind(this)} className=\"btn btn-icon btn-bar\" title={t('js_iknow.annotations')} />}\n </div>\n </div>\n\n {mode !== ANNOTATION_MODE && mode !== KANJI_STROKE_MODE && itemPackage.getSentences().length > 0 &&\n <SentenceTab\n disableVimKeys={mode === SPELLING_MODE}\n onOpen={showSentences.bind(this)}\n onClose={setDefaultMode.bind(this)}\n sentences={itemPackage.getSentences()} />}\n </div>\n\n {mode === KANJI_STROKE_MODE && <KanjiStrokes characters={itemPackage.getText()} onEscape={setDefaultMode.bind(this)} />}\n {mode === ANNOTATION_MODE && <Annotations annotations={itemPackage.getAnnotation()} onEscape={setDefaultMode.bind(this)} />}\n </div>\n </div>\n\n {customNavigation ?\n customNavigation(navigationProps) :\n <StudyScreenNavigation {...navigationProps} onNext={handleNext.bind(this)} onRemove={onRemove} />}\n </div>\n );\n }\n}\n\n/**\n * Used to determine if onNext and onRemove need to be set.\n */\nfunction requiredNavigationFunction(props, propName) {\n if (!props.customNavigation && typeof props[propName] !== 'function') {\n return Error(`${propName} must be a function.`);\n }\n}\n\nStudyScreen.propTypes = {\n animateOnMount: PropTypes.bool,\n customNavigation: PropTypes.func,\n isNew: PropTypes.bool,\n itemPackage: PropTypes.object.isRequired,\n onNext: requiredNavigationFunction,\n onRemove: requiredNavigationFunction,\n playAudioOnMount: PropTypes.bool,\n showTranscription: PropTypes.bool,\n};\n\nStudyScreen.defaultProps = {\n animateOnMount: true,\n isNew: false,\n showTranscription: true,\n};\n\nexport default StudyScreen;\n","var isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n/** `Object#toString` result references. */\n\n\nvar stringTag = '[object String]';\n/** Used for built-in method references. */\n\nvar objectProto = Object.prototype;\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar objectToString = objectProto.toString;\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n\nfunction isString(value) {\n return typeof value == 'string' || !isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag;\n}\n\nmodule.exports = isString;","var baseHas = require('./_baseHas'),\n baseKeys = require('./_baseKeys'),\n indexKeys = require('./_indexKeys'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isPrototype = require('./_isPrototype');\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n\n\nfunction keys(object) {\n var isProto = isPrototype(object);\n\n if (!(isProto || isArrayLike(object))) {\n return baseKeys(object);\n }\n\n var indexes = indexKeys(object),\n skipIndexes = !!indexes,\n result = indexes || [],\n length = result.length;\n\n for (var key in object) {\n if (baseHas(object, key) && !(skipIndexes && (key == 'length' || isIndex(key, length))) && !(isProto && key == 'constructor')) {\n result.push(key);\n }\n }\n\n return result;\n}\n\nmodule.exports = keys;","import React, { Component, PropTypes } from 'react';\nimport Keys from 'es6/core/keys';\n\n/**\n * Passes keydown events to the keyInput.\n *\n * @this IME\n */\nfunction handleKeydown(e) {\n // Prevent default key behavior if the IME is active.\n if (!this.props.disabled && e.keyCode === Keys.ENTER) {\n e.preventDefault();\n }\n\n if (!this.props.disabled && this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n\n this.keyInput.keydown(e);\n}\n\n/**\n * Passes keypress events to the keyInput\n *\n * @this IME\n */\nfunction handleKeypress(e) {\n this.keyInput.keypress(e);\n}\n\n/**\n * Handles responses from the key input.\n *\n * @this IME\n * @param {String} input\n * @param {Number} cursorIndex\n * @param {Number} letterCount\n */\nfunction handleKeyInputKeyPress(input, cursorIndex, letterCount) {\n const { autoConfirm, language } = this.props;\n\n // Allow spelling practice to auto commit for English only. Other\n // languages will change input in place, so it is hard to detect\n // when it should be committed.\n if (autoConfirm && input.length === letterCount && language === 'en') {\n this.keyInput.confirm();\n }\n}\n\n/**\n * Pass this up if an event was specified.\n *\n * @this IME\n */\nfunction handleTextWasConfirmed(...args) {\n const { onTextWasConfirmed } = this.props;\n\n if (onTextWasConfirmed) {\n onTextWasConfirmed(...args);\n }\n}\n\n/**\n * @this IME\n */\nfunction setText() {\n const { language, text } = this.props;\n this.keyInput.setText({ text, language });\n}\n\n/**\n * Wrapper for the legacy IME.\n *\n * Smartfm.Apps.Behavior.KeyInput needs to be available on the global namespace.\n */\nclass IME extends Component {\n constructor(props) {\n super(props);\n\n this.handleKeydown = handleKeydown.bind(this);\n this.handleKeypress = handleKeypress.bind(this);\n\n this.keyInput = null;\n }\n\n componentDidMount() {\n const keypress = handleKeyInputKeyPress.bind(this);\n const textWasConfirmed = handleTextWasConfirmed.bind(this);\n\n // Set up the key input, after setting the state, the other properties will be initialized\n // in the componentDidUpdate() method.\n this.keyInput = new Smartfm.Apps.Behavior.KeyInput(\n this.refs.ime,\n { keypress, textWasConfirmed, correctLettersTypeable: this.props.correctLettersTypeable }\n );\n\n // For some reason, focusing the input element before *and* after (but not one or the other)\n // fixes this bug when using a native IME on Chrome: https://iknowjp.atlassian.net/browse/NUF-9\n // TODO: Figure out why this fixes it...\n this.refs.input.focus();\n setText.call(this);\n\n if (this.props.disabled) {\n this.keyInput.disable();\n } else {\n this.keyInput.enable();\n }\n\n // Add events to pass input to the key input.\n window.addEventListener('keypress', this.handleKeypress);\n window.addEventListener('keydown', this.handleKeydown);\n }\n\n /**\n * Only update when the text or disabled status have changed.\n */\n shouldComponentUpdate(nextProps) {\n const { disabled, text } = this.props;\n return nextProps.text !== text || nextProps.disabled !== disabled;\n }\n\n componentDidUpdate(prevProps) {\n const { disabled, text } = this.props;\n\n if (prevProps.text !== text) {\n setText.call(this);\n }\n\n if (prevProps.disabled !== disabled) {\n if (disabled) {\n this.keyInput.disable();\n } else {\n this.keyInput.enable();\n }\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener('keypress', this.handleKeypress);\n window.removeEventListener('keydown', this.handleKeydown);\n }\n\n getActualHtml() {\n this.keyInput.actualHtml();\n }\n\n getCorrectHtml() {\n this.keyInput.correctRepresentationHtml();\n }\n\n rebuild() {\n this.keyInput.rebuild();\n }\n\n render() {\n return (\n <div ref=\"ime\" style={{ display: 'inline-block' }}>\n <input ref=\"input\" type=\"text\" />\n <div className=\"text\" />\n </div>\n );\n }\n}\n\nIME.propTypes = {\n autoConfirm: PropTypes.bool,\n disabled: PropTypes.bool,\n language: PropTypes.string.isRequired,\n onTextWasConfirmed: PropTypes.func,\n onKeyDown: PropTypes.func,\n text: PropTypes.string.isRequired,\n correctLettersTypeable: PropTypes.bool,\n};\n\nIME.defaultProps = {\n autoConfirm: false,\n disabled: false,\n correctLettersTypeable: false,\n};\n\nexport default IME;\n\n/**\n * Takes the HTML string returned by the legacy KeyInput's actualHtml()/correctRepresentationHtml()\n * methods, and returns an array of plain objects representing the visual state of the IME\n * represented in the HTML.\n *\n * The returned array contains objects with a 'type' property, which can be one of: IME_WORD,\n * IME_SPACE, IME_PUNCTUATION, IME_ITEM. IME_ITEM objects contain a 'letters' property, which is an\n * array of objects of the form:\n *\n * `{ isTypeable: boolean, isIncorrect: boolean, hasCursor: boolean, text: string }`.\n *\n * All other types contain a 'text' property containing the text of the word/punctuation/space.\n *\n * If the function encounters any unexpected markup or classnames in the given string, it wil throw\n * an error in development environments, and ignore the unexpected markup, dropping it from the\n * output, on production environments.\n */\nexport function parseIMEHtml(html) {\n // Instead of parsing the HTML string, just create an element and traverse its children using the\n // browser's DOM traversal methods.\n const container = document.createElement('div');\n container.innerHTML = html;\n\n return parseDOM(container);\n}\n\nexport const IME_WORD = 'word';\nexport const IME_SPACE = 'space';\nexport const IME_PUNCTUATION = 'punctuation';\nexport const IME_ITEM = 'item';\n\nfunction parseDOM(node) {\n const result = [];\n\n for (let i = 0; i < node.childNodes.length; i++) {\n const child = node.childNodes[i];\n\n if (child.nodeName === 'SPAN') {\n if (child.classList.contains('space')) {\n result.push({ type: IME_SPACE, text: child.textContent });\n } else if (child.classList.contains('punctuation')) {\n result.push({ type: IME_PUNCTUATION, text: child.textContent });\n } else if (child.classList.contains('item')) {\n result.push(parseItem(child));\n } else {\n result.push({ type: IME_WORD, text: child.textContent });\n }\n } else {\n result.push({ type: IME_WORD, text: child.textContent });\n }\n }\n\n return result;\n}\n\nfunction parseItem(node) {\n const letters = [];\n\n for (let i = 0; i < node.childNodes.length; i++) {\n const child = node.childNodes[i];\n\n if (child.nodeName === 'SPAN' && child.classList.contains('letter') && !child.classList.contains('excluded')) {\n letters.push({\n isTypeable: child.classList.contains('typeable'),\n isIncorrect: child.classList.contains('incorrect'),\n hasCursor: child.classList.contains('cursor'),\n text: child.textContent,\n });\n } else {\n letters.push({\n isTypeable: false,\n isIncorrect: false,\n hasCursor: false,\n text: child.textContent,\n });\n }\n }\n\n return { type: IME_ITEM, letters };\n}\n","/* eslint-disable react/sort-comp, no-return-assign, no-param-reassign */\nimport classnames from 'classnames';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport WordPiece from 'es6/components/apps/sentence-builder/word-piece';\n\nconst INITIAL_STATE = {\n draggedOver: false,\n};\n\nexport class DropZone extends React.Component {\n constructor(props) {\n super(props);\n this.state = this._getInitialState();\n }\n\n _getInitialState() {\n return INITIAL_STATE;\n }\n\n /**\n * Gets the properties for the DropZone container.\n *\n * @returns {Object}\n */\n _getContainerProps() {\n const { draggedOver } = this.state;\n\n const className = classnames('drop-zone', {\n 'dragged-over': draggedOver,\n }, this.props.className);\n\n const { disabled, expectedValue } = this.props;\n\n return {\n className,\n 'data-expected': expectedValue,\n onDragEnter: !disabled ? this._handleDragEnter.bind(this) : null,\n onDragOver: !disabled ? this._handleDragOver.bind(this) : null,\n onDragLeave: this._handleDragLeave.bind(this),\n onDrop: !disabled ? this._handleDrop.bind(this) : null,\n };\n }\n\n /**\n * Helper to send the word choice back to\n *\n * @param {Function} handler\n * @param {Event} e the original event\n */\n _executeHandler(handler, e) {\n const wordChoice = WordPiece.getWordChoice();\n\n if (handler) {\n handler.call(this, wordChoice, e);\n }\n }\n\n /**\n * When entering the DropZone, set the pointer events on the children to be\n * null, so they do not interfere with the DragLeave event.\n *\n * @param {Event} e\n */\n _handleDragEnter(e) {\n e.preventDefault();\n\n const domNode = ReactDOM.findDOMNode(this);\n const draggedElement = WordPiece.getDraggedElement();\n\n // Don't disable pointer events on children if the children are\n // inside the DOM container.\n if (!domNode.contains(draggedElement)) {\n this._setPointerEvents('none');\n }\n }\n\n /**\n * DOMNode is only accessible within the context of the component.\n * Allow the drag and drop methods to be extended after local methods have run.\n *\n * @param {Event} e\n */\n _handleDragOver(e) {\n e.preventDefault();\n\n this.setState({ draggedOver: true });\n this._executeHandler(this.props.onDragOver, e);\n }\n\n /**\n * Callback for when leaving the drop zone.\n *\n * @param {Event} e\n */\n _handleDragLeave(e) {\n e.preventDefault();\n\n // When removing pointer events on the children, there may\n // be an dragleave event triggered on the children. For this\n // reason, make sure the target is on the parent.\n if (e.target !== ReactDOM.findDOMNode(this)) {\n return;\n }\n\n this._resetState();\n this._executeHandler(this.props.onDragLeave, e);\n }\n\n /**\n * Callback for when something is dropped on the drop zone.\n *\n * @param {Event} e\n */\n _handleDrop(e) {\n e.preventDefault();\n this._resetState();\n this._executeHandler(this.props.onDrop, e);\n }\n\n render() {\n const props = this._getContainerProps();\n return (<div {...props}>{this.props.children}</div>);\n }\n\n _resetState() {\n this.setState(this._getInitialState());\n this._setPointerEvents('');\n }\n\n /**\n * Sets pointer events on the children of the drop zone.\n *\n * Drag leave is pretty hacky and does not even work consistently across\n * browsers: https://bugs.webkit.org/show_bug.cgi?id=66547\n *\n * The best solution to preventing dragleave from triggering on children\n * is to disable the pointer events.\n *\n * @param {String} value\n */\n _setPointerEvents(value) {\n const childNodes = [...ReactDOM.findDOMNode(this).childNodes];\n childNodes.forEach(childNode => childNode.style.pointerEvents = value);\n }\n}\n\nDropZone.propTypes = Object.freeze({\n className: React.PropTypes.string,\n disabled: React.PropTypes.bool,\n expectedValue: React.PropTypes.string,\n onDragEnter: React.PropTypes.func,\n onDragLeave: React.PropTypes.func,\n onDragOver: React.PropTypes.func,\n onDrop: React.PropTypes.func,\n});\n\nDropZone.defaultProps = Object.freeze({\n className: '',\n disabled: false,\n});\n\nexport default DropZone;\n","/* eslint-disable react/prefer-es6-class, react/sort-comp, no-shadow, react/jsx-no-bind, react/prop-types */\nimport classnames from 'classnames';\nimport React from 'react';\n\n/**\n * Keep a reference to the DOM element and word choice being dragged.\n */\nlet draggedElement = null;\nlet wordChoice = null;\n\nexport const WordPiece = React.createClass({\n displayName: 'WordPiece',\n\n propTypes: {\n className: React.PropTypes.string,\n enableDragEvents: React.PropTypes.bool,\n onClick: React.PropTypes.func,\n onDrag: React.PropTypes.func,\n onDragEnd: React.PropTypes.func,\n wordChoice: React.PropTypes.object,\n },\n\n getDefaultProps() {\n return {\n className: '',\n enableDragEvents: false,\n wordChoice: null,\n };\n },\n\n statics: {\n /**\n * Returns the current dragged element.\n *\n * @returns {HTMLElement}\n */\n getDraggedElement() {\n return draggedElement;\n },\n\n /**\n * Retu\n *\n * @returns {WordChoice}\n */\n getWordChoice() {\n return wordChoice;\n },\n },\n\n // This is to prevent selection in IE9, trigger the drag event instead.\n componentDidMount() {\n this.refs.wordPiece.addEventListener('selectstart', this._handleSelectStart);\n },\n\n componentWillUnmount() {\n this.refs.wordPiece.removeEventListener('selectstart', this._handleSelectStart);\n },\n\n _handleSelectStart(e) {\n e.preventDefault();\n e.stopPropagation();\n\n if (e.target.dragDrop) {\n e.target.dragDrop();\n }\n },\n\n /**\n * Set the global drag variables (since the event only allows for meta data).\n *\n * @param {DragEvent} e\n */\n _handleDragStart(e) {\n draggedElement = this.refs.wordPiece;\n wordChoice = this.props.wordChoice;\n\n // NOTE: Without specifying data to transfer, Firefox will not\n // perform the drag event. Use the static variables to get the\n // word choice or dragged element, instead.\n e.dataTransfer.setData('text', JSON.stringify(wordChoice));\n },\n\n _handleDrag(e) {\n if (this.props.onDrag) {\n this.props.onDrag.call(this, this.props.wordChoice, e);\n }\n },\n\n /**\n * Erase the global variables.\n *\n * @param {DragEvent} e\n */\n _handleDragEnd(e) {\n draggedElement = null;\n wordChoice = null;\n\n if (this.props.onDragEnd) {\n this.props.onDragEnd.call(this, this.props.wordChoice, e);\n }\n },\n\n render() {\n const className = classnames('word-piece', this.props.className);\n const wordChoice = this.props.wordChoice;\n const onClick = this.props.onClick && wordChoice ? this.props.onClick.bind(null, wordChoice) : null;\n\n const attributes = { className, onClick };\n\n if (this.props.enableDragEvents) {\n Object.assign(attributes, {\n draggable: true,\n onDragStart: this._handleDragStart,\n onDrag: this._handleDrag,\n onDragEnd: this._handleDragEnd,\n });\n }\n\n return (\n <span ref=\"wordPiece\" {...attributes}>{this.props.children}</span>\n );\n },\n});\n\nexport default WordPiece;\n","/* eslint-disable no-param-reassign, eqeqeq */\nimport Sentence from 'es6/models/sentence';\nimport Transliterable from 'es6/models/transliterable';\n\nexport default class ItemPackage {\n constructor(attrs = {}) {\n _.defaults(this, attrs, {\n annotation: null,\n\n distractors: {\n cue: [],\n response: [],\n },\n\n goalId: null,\n\n item: {\n id: null,\n\n cue: {\n image: null,\n language: null,\n partOfSpeech: null,\n text: null,\n transcription: null,\n transliterations: {},\n },\n\n response: {\n language: null,\n text: null,\n transcription: null,\n transliterations: {},\n },\n\n type: null,\n },\n\n position: null,\n\n sentences: [],\n\n sound: null,\n });\n\n // Cast sentences as sentence object.\n this.sentences = this.sentences.map((sentence) => {\n sentence.goalId = this.goalId;\n sentence.itemId = this.getId();\n return !(sentence instanceof Sentence) ? new Sentence(sentence) : sentence;\n });\n\n // Convert all transliterable objects.\n this.item.cue = new Transliterable(this.item.cue);\n this.item.response = new Transliterable(this.item.response);\n\n // Override the language for the distractors, as they are not a reliable\n // source of information.\n const distractors = this.distractors;\n\n distractors.cue = distractors.cue.map(cue => {\n cue.language = this.item.cue.language;\n return new Transliterable(cue);\n });\n\n distractors.response = distractors.response.map(response => {\n response.language = this.item.response.language;\n return new Transliterable(response);\n });\n }\n\n /**\n * @returns {Boolean}\n */\n isKanaCourseItem() {\n const goalId = this.goalId;\n return goalId == 24666 || goalId == 24667;\n }\n\n getId() {\n return this.item.id;\n }\n\n /**\n * @returns {String}\n */\n getAnnotation() {\n return this.annotation;\n }\n\n getImage() {\n return this.item.cue.image;\n }\n\n getPartOfSpeech() {\n if (this.item.cue.partOfSpeech === 'None') {\n return null;\n }\n\n return this.item.cue.partOfSpeech;\n }\n\n /**\n * Gets the language.\n *\n * @returns {String}\n */\n getLanguage() {\n return this.item.cue.language;\n }\n\n /**\n * @returns {Sentence[]}\n */\n getSentences() {\n return this.sentences;\n }\n\n /**\n * Gets the primary text for the cue.\n *\n * @returns {String}\n */\n getText() {\n return this.item.cue.getText();\n }\n\n /**\n * Gets the best transliteration for the cue.\n *\n * @returns {String}\n */\n getTransliteration() {\n return this.item.cue.getTransliteration();\n }\n\n /**\n * Returns the translation for the item package.\n *\n * @returns {String}\n */\n getTranslation() {\n return this.item.response.text;\n }\n}\n","module.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n\n module.paths = []; // module.parent = undefined by default\n\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function get() {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function get() {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n\n return module;\n};","var baseValues = require('./_baseValues'),\n keys = require('./keys');\n/**\n * Creates an array of the own enumerable property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n\n\nfunction values(object) {\n return object ? baseValues(object, keys(object)) : [];\n}\n\nmodule.exports = values;","import React, { Component, PropTypes } from 'react';\nimport ReactDOM from 'react-dom';\nimport Keys from 'es6/core/keys';\n\nconst CONTAINER_STYLE = {\n position: 'fixed',\n top: 0,\n left: 0,\n height: '100%',\n width: '100%',\n zIndex: 100,\n};\n\nconst OVERLAY_STYLE = {\n backgroundColor: 'rgba(85, 85, 85, 0.7)',\n cursor: 'pointer',\n position: 'fixed',\n left: 0,\n top: 0,\n height: '100%',\n width: '100%',\n};\n\nconst CONTENT_STYLE = {\n position: 'absolute',\n left: '50%',\n top: '50%',\n transform: 'translate(-50%, -50%)',\n WebkitTransform: 'translate(-50%, -50%)',\n};\n\n/**\n * Renders the overlay and body for the modal.\n */\nfunction ModalContainer({ children, onOverlayClick }) {\n return (\n <div style={CONTAINER_STYLE}>\n <div style={OVERLAY_STYLE} onClick={onOverlayClick} />\n <div style={CONTENT_STYLE}>{children}</div>\n </div>\n );\n}\n\nModalContainer.propTypes = {\n children: PropTypes.node,\n onOverlayClick: PropTypes.func,\n};\n\n/**\n * Event handler to stop keyboard events from reaching the page underneath the\n * modal.\n */\nfunction stopKeyEvents(event) {\n // Stop propagation of keyboard events to the app.\n event.stopPropagation();\n\n // Prevent the default tab key action so that the user can't use the tab key\n // to refocus the app and send key events to it.\n if (event.keyCode === Keys.TAB) {\n event.preventDefault();\n }\n}\n\n/**\n * Usage Example:\n *\n * <BaseModal isOpen={this.isOpenProperty} onOverlayClick={() => this.isOpenProperty = false}>\n * <h1>Some text</h1>\n * <div className=\"description\">Some description</div>\n * </BaseModal>\n */\nclass BaseModal extends Component {\n constructor(props) {\n super(props);\n this._node = null;\n }\n\n componentDidMount() {\n const { props } = this;\n const { captureKeyEvents, isOpen } = props;\n\n this._node = document.createElement('div');\n document.body.appendChild(this._node);\n this.renderModal(props);\n\n if (captureKeyEvents) {\n // Give the container a tabIndex, so that it is focusable, so that it can\n // receive keyboard events.\n this._node.tabIndex = 0;\n\n // Capture keyboard events on the modal and stop propagation of the\n // events to the page underneath, so that the user can't use keyboard\n // keys to interact with the app while a modal is open.\n ['keydown', 'keyup', 'keypress'].forEach((event) => {\n this._node.addEventListener(event, stopKeyEvents);\n });\n\n // Focus the modal so it receives keyboard events.\n if (isOpen) {\n this._node.focus();\n }\n }\n }\n\n componentWillReceiveProps(newProps) {\n this.renderModal(newProps);\n\n if (newProps.isOpen && newProps.captureKeyEvents) {\n // Focus the modal so it receives keyboard events.\n this._node.focus();\n }\n }\n\n componentWillUnmount() {\n ['keydown', 'keyup', 'keypress'].forEach((event) => {\n this._node.removeEventListener(event, stopKeyEvents);\n });\n\n ReactDOM.unmountComponentAtNode(this._node);\n document.body.removeChild(this._node);\n }\n\n renderModal(props) {\n const { _node } = this;\n _node.style.display = props.isOpen ? 'block' : 'none';\n ReactDOM.render(<ModalContainer {...props} />, _node);\n }\n\n render() {\n return null;\n }\n}\n\nBaseModal.propTypes = {\n isOpen: PropTypes.bool,\n onOverlayClick: PropTypes.func,\n // If true, stop propagation of key events (keydown, keyup, keypress) to the\n // page below the modal.\n captureKeyEvents: PropTypes.bool,\n};\n\nBaseModal.defaultProps = {\n isOpen: false,\n captureKeyEvents: true,\n};\n\nexport default BaseModal;\n","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule React\n */\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar ReactChildren = require('./ReactChildren');\n\nvar ReactComponent = require('./ReactComponent');\n\nvar ReactClass = require('./ReactClass');\n\nvar ReactDOMFactories = require('./ReactDOMFactories');\n\nvar ReactElement = require('./ReactElement');\n\nvar ReactElementValidator = require('./ReactElementValidator');\n\nvar ReactPropTypes = require('./ReactPropTypes');\n\nvar ReactVersion = require('./ReactVersion');\n\nvar onlyChild = require('./onlyChild');\n\nvar warning = require('fbjs/lib/warning');\n\nvar createElement = ReactElement.createElement;\nvar createFactory = ReactElement.createFactory;\nvar cloneElement = ReactElement.cloneElement;\n\nif (process.env.NODE_ENV !== 'production') {\n createElement = ReactElementValidator.createElement;\n createFactory = ReactElementValidator.createFactory;\n cloneElement = ReactElementValidator.cloneElement;\n}\n\nvar __spread = _assign;\n\nif (process.env.NODE_ENV !== 'production') {\n var warned = false;\n\n __spread = function __spread() {\n process.env.NODE_ENV !== 'production' ? warning(warned, 'React.__spread is deprecated and should not be used. Use ' + 'Object.assign directly or another helper function with similar ' + 'semantics. You may be seeing this warning due to your compiler. ' + 'See https://fb.me/react-spread-deprecation for more details.') : void 0;\n warned = true;\n return _assign.apply(null, arguments);\n };\n}\n\nvar React = {\n // Modern\n Children: {\n map: ReactChildren.map,\n forEach: ReactChildren.forEach,\n count: ReactChildren.count,\n toArray: ReactChildren.toArray,\n only: onlyChild\n },\n Component: ReactComponent,\n createElement: createElement,\n cloneElement: cloneElement,\n isValidElement: ReactElement.isValidElement,\n // Classic\n PropTypes: ReactPropTypes,\n createClass: ReactClass.createClass,\n createFactory: createFactory,\n createMixin: function createMixin(mixin) {\n // Currently a noop. Will be used to validate and trace mixins.\n return mixin;\n },\n // This looks DOM specific but these are actually isomorphic helpers\n // since they are just generating DOM strings.\n DOM: ReactDOMFactories,\n version: ReactVersion,\n // Deprecated hook for JSX spread, don't use this for anything.\n __spread: __spread\n};\nmodule.exports = React;","/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDebugTool\n */\n'use strict';\n\nvar ReactInvalidSetStateWarningDevTool = require('./ReactInvalidSetStateWarningDevTool');\n\nvar warning = require('fbjs/lib/warning');\n\nvar eventHandlers = [];\nvar handlerDoesThrowForEvent = {};\n\nfunction emitEvent(handlerFunctionName, arg1, arg2, arg3, arg4, arg5) {\n if (process.env.NODE_ENV !== 'production') {\n eventHandlers.forEach(function (handler) {\n try {\n if (handler[handlerFunctionName]) {\n handler[handlerFunctionName](arg1, arg2, arg3, arg4, arg5);\n }\n } catch (e) {\n process.env.NODE_ENV !== 'production' ? warning(!handlerDoesThrowForEvent[handlerFunctionName], 'exception thrown by devtool while handling %s: %s', handlerFunctionName, e.message) : void 0;\n handlerDoesThrowForEvent[handlerFunctionName] = true;\n }\n });\n }\n}\n\nvar ReactDebugTool = {\n addDevtool: function addDevtool(devtool) {\n eventHandlers.push(devtool);\n },\n removeDevtool: function removeDevtool(devtool) {\n for (var i = 0; i < eventHandlers.length; i++) {\n if (eventHandlers[i] === devtool) {\n eventHandlers.splice(i, 1);\n i--;\n }\n }\n },\n onBeginProcessingChildContext: function onBeginProcessingChildContext() {\n emitEvent('onBeginProcessingChildContext');\n },\n onEndProcessingChildContext: function onEndProcessingChildContext() {\n emitEvent('onEndProcessingChildContext');\n },\n onSetState: function onSetState() {\n emitEvent('onSetState');\n },\n onMountRootComponent: function onMountRootComponent(internalInstance) {\n emitEvent('onMountRootComponent', internalInstance);\n },\n onMountComponent: function onMountComponent(internalInstance) {\n emitEvent('onMountComponent', internalInstance);\n },\n onUpdateComponent: function onUpdateComponent(internalInstance) {\n emitEvent('onUpdateComponent', internalInstance);\n },\n onUnmountComponent: function onUnmountComponent(internalInstance) {\n emitEvent('onUnmountComponent', internalInstance);\n }\n};\nReactDebugTool.addDevtool(ReactInvalidSetStateWarningDevTool);\nmodule.exports = ReactDebugTool;","/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactInvalidSetStateWarningDevTool\n */\n'use strict';\n\nvar warning = require('fbjs/lib/warning');\n\nif (process.env.NODE_ENV !== 'production') {\n var processingChildContext = false;\n\n var warnInvalidSetState = function warnInvalidSetState() {\n process.env.NODE_ENV !== 'production' ? warning(!processingChildContext, 'setState(...): Cannot call setState() inside getChildContext()') : void 0;\n };\n}\n\nvar ReactInvalidSetStateWarningDevTool = {\n onBeginProcessingChildContext: function onBeginProcessingChildContext() {\n processingChildContext = true;\n },\n onEndProcessingChildContext: function onEndProcessingChildContext() {\n processingChildContext = false;\n },\n onSetState: function onSetState() {\n warnInvalidSetState();\n }\n};\nmodule.exports = ReactInvalidSetStateWarningDevTool;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDOMFactories\n */\n'use strict';\n\nvar ReactElement = require('./ReactElement');\n\nvar ReactElementValidator = require('./ReactElementValidator');\n\nvar mapObject = require('fbjs/lib/mapObject');\n/**\n * Create a factory that creates HTML tag elements.\n *\n * @param {string} tag Tag name (e.g. `div`).\n * @private\n */\n\n\nfunction createDOMFactory(tag) {\n if (process.env.NODE_ENV !== 'production') {\n return ReactElementValidator.createFactory(tag);\n }\n\n return ReactElement.createFactory(tag);\n}\n/**\n * Creates a mapping from supported HTML tags to `ReactDOMComponent` classes.\n * This is also accessible via `React.DOM`.\n *\n * @public\n */\n\n\nvar ReactDOMFactories = mapObject({\n a: 'a',\n abbr: 'abbr',\n address: 'address',\n area: 'area',\n article: 'article',\n aside: 'aside',\n audio: 'audio',\n b: 'b',\n base: 'base',\n bdi: 'bdi',\n bdo: 'bdo',\n big: 'big',\n blockquote: 'blockquote',\n body: 'body',\n br: 'br',\n button: 'button',\n canvas: 'canvas',\n caption: 'caption',\n cite: 'cite',\n code: 'code',\n col: 'col',\n colgroup: 'colgroup',\n data: 'data',\n datalist: 'datalist',\n dd: 'dd',\n del: 'del',\n details: 'details',\n dfn: 'dfn',\n dialog: 'dialog',\n div: 'div',\n dl: 'dl',\n dt: 'dt',\n em: 'em',\n embed: 'embed',\n fieldset: 'fieldset',\n figcaption: 'figcaption',\n figure: 'figure',\n footer: 'footer',\n form: 'form',\n h1: 'h1',\n h2: 'h2',\n h3: 'h3',\n h4: 'h4',\n h5: 'h5',\n h6: 'h6',\n head: 'head',\n header: 'header',\n hgroup: 'hgroup',\n hr: 'hr',\n html: 'html',\n i: 'i',\n iframe: 'iframe',\n img: 'img',\n input: 'input',\n ins: 'ins',\n kbd: 'kbd',\n keygen: 'keygen',\n label: 'label',\n legend: 'legend',\n li: 'li',\n link: 'link',\n main: 'main',\n map: 'map',\n mark: 'mark',\n menu: 'menu',\n menuitem: 'menuitem',\n meta: 'meta',\n meter: 'meter',\n nav: 'nav',\n noscript: 'noscript',\n object: 'object',\n ol: 'ol',\n optgroup: 'optgroup',\n option: 'option',\n output: 'output',\n p: 'p',\n param: 'param',\n picture: 'picture',\n pre: 'pre',\n progress: 'progress',\n q: 'q',\n rp: 'rp',\n rt: 'rt',\n ruby: 'ruby',\n s: 's',\n samp: 'samp',\n script: 'script',\n section: 'section',\n select: 'select',\n small: 'small',\n source: 'source',\n span: 'span',\n strong: 'strong',\n style: 'style',\n sub: 'sub',\n summary: 'summary',\n sup: 'sup',\n table: 'table',\n tbody: 'tbody',\n td: 'td',\n textarea: 'textarea',\n tfoot: 'tfoot',\n th: 'th',\n thead: 'thead',\n time: 'time',\n title: 'title',\n tr: 'tr',\n track: 'track',\n u: 'u',\n ul: 'ul',\n 'var': 'var',\n video: 'video',\n wbr: 'wbr',\n // SVG\n circle: 'circle',\n clipPath: 'clipPath',\n defs: 'defs',\n ellipse: 'ellipse',\n g: 'g',\n image: 'image',\n line: 'line',\n linearGradient: 'linearGradient',\n mask: 'mask',\n path: 'path',\n pattern: 'pattern',\n polygon: 'polygon',\n polyline: 'polyline',\n radialGradient: 'radialGradient',\n rect: 'rect',\n stop: 'stop',\n svg: 'svg',\n text: 'text',\n tspan: 'tspan'\n}, createDOMFactory);\nmodule.exports = ReactDOMFactories;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n'use strict';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n/**\n * Executes the provided `callback` once for each enumerable own property in the\n * object and constructs a new object from the results. The `callback` is\n * invoked with three arguments:\n *\n * - the property value\n * - the property name\n * - the object being traversed\n *\n * Properties that are added after the call to `mapObject` will not be visited\n * by `callback`. If the values of existing properties are changed, the value\n * passed to `callback` will be the value at the time `mapObject` visits them.\n * Properties that are deleted before being visited are not visited.\n *\n * @grep function objectMap()\n * @grep function objMap()\n *\n * @param {?object} object\n * @param {function} callback\n * @param {*} context\n * @return {?object}\n */\n\nfunction mapObject(object, callback, context) {\n if (!object) {\n return null;\n }\n\n var result = {};\n\n for (var name in object) {\n if (hasOwnProperty.call(object, name)) {\n result[name] = callback.call(context, object[name], name, object);\n }\n }\n\n return result;\n}\n\nmodule.exports = mapObject;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule onlyChild\n */\n'use strict';\n\nvar ReactElement = require('./ReactElement');\n\nvar invariant = require('fbjs/lib/invariant');\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection. The current implementation of this\n * function assumes that a single child gets passed without a wrapper, but the\n * purpose of this helper function is to abstract away the particular structure\n * of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactComponent} The first and only `ReactComponent` contained in the\n * structure.\n */\n\n\nfunction onlyChild(children) {\n !ReactElement.isValidElement(children) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'onlyChild must be passed a children with exactly one child.') : invariant(false) : void 0;\n return children;\n}\n\nmodule.exports = onlyChild;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDOM\n */\n\n/* globals __REACT_DEVTOOLS_GLOBAL_HOOK__*/\n'use strict';\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar ReactDefaultInjection = require('./ReactDefaultInjection');\n\nvar ReactMount = require('./ReactMount');\n\nvar ReactPerf = require('./ReactPerf');\n\nvar ReactReconciler = require('./ReactReconciler');\n\nvar ReactUpdates = require('./ReactUpdates');\n\nvar ReactVersion = require('./ReactVersion');\n\nvar findDOMNode = require('./findDOMNode');\n\nvar getNativeComponentFromComposite = require('./getNativeComponentFromComposite');\n\nvar renderSubtreeIntoContainer = require('./renderSubtreeIntoContainer');\n\nvar warning = require('fbjs/lib/warning');\n\nReactDefaultInjection.inject();\nvar render = ReactPerf.measure('React', 'render', ReactMount.render);\nvar React = {\n findDOMNode: findDOMNode,\n render: render,\n unmountComponentAtNode: ReactMount.unmountComponentAtNode,\n version: ReactVersion,\n\n /* eslint-disable camelcase */\n unstable_batchedUpdates: ReactUpdates.batchedUpdates,\n unstable_renderSubtreeIntoContainer: renderSubtreeIntoContainer\n}; // Inject the runtime into a devtools global hook regardless of browser.\n// Allows for debugging when the hook is injected on the page.\n\n/* eslint-enable camelcase */\n\nif (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function') {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.inject({\n ComponentTree: {\n getClosestInstanceFromNode: ReactDOMComponentTree.getClosestInstanceFromNode,\n getNodeFromInstance: function getNodeFromInstance(inst) {\n // inst is an internal instance (but could be a composite)\n if (inst._renderedComponent) {\n inst = getNativeComponentFromComposite(inst);\n }\n\n if (inst) {\n return ReactDOMComponentTree.getNodeFromInstance(inst);\n } else {\n return null;\n }\n }\n },\n Mount: ReactMount,\n Reconciler: ReactReconciler\n });\n}\n\nif (process.env.NODE_ENV !== 'production') {\n var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\n if (ExecutionEnvironment.canUseDOM && window.top === window.self) {\n // First check if devtools is not installed\n if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {\n // If we're in Chrome or Firefox, provide a download link if not installed.\n if (navigator.userAgent.indexOf('Chrome') > -1 && navigator.userAgent.indexOf('Edge') === -1 || navigator.userAgent.indexOf('Firefox') > -1) {\n // Firefox does not have the issue with devtools loaded over file://\n var showFileUrlMessage = window.location.protocol.indexOf('http') === -1 && navigator.userAgent.indexOf('Firefox') === -1;\n console.debug('Download the React DevTools ' + (showFileUrlMessage ? 'and use an HTTP server (instead of a file: URL) ' : '') + 'for a better development experience: ' + 'https://fb.me/react-devtools');\n }\n }\n\n var testFunc = function testFn() {};\n\n process.env.NODE_ENV !== 'production' ? warning((testFunc.name || testFunc.toString()).indexOf('testFn') !== -1, 'It looks like you\\'re using a minified copy of the development build ' + 'of React. When deploying React apps to production, make sure to use ' + 'the production build which skips development warnings and is faster. ' + 'See https://fb.me/react-minification for more details.') : void 0; // If we're in IE8, check to see if we are in compatibility mode and provide\n // information on preventing compatibility mode\n\n var ieCompatibilityMode = document.documentMode && document.documentMode < 8;\n process.env.NODE_ENV !== 'production' ? warning(!ieCompatibilityMode, 'Internet Explorer is running in compatibility mode; please add the ' + 'following tag to your HTML to prevent this from happening: ' + '<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />') : void 0;\n var expectedFeatures = [// shims\n Array.isArray, Array.prototype.every, Array.prototype.forEach, Array.prototype.indexOf, Array.prototype.map, Date.now, Function.prototype.bind, Object.keys, String.prototype.split, String.prototype.trim];\n\n for (var i = 0; i < expectedFeatures.length; i++) {\n if (!expectedFeatures[i]) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'One or more ES5 shims expected by React are not available: ' + 'https://fb.me/react-warning-polyfills') : void 0;\n break;\n }\n }\n }\n}\n\nmodule.exports = React;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDefaultInjection\n */\n'use strict';\n\nvar BeforeInputEventPlugin = require('./BeforeInputEventPlugin');\n\nvar ChangeEventPlugin = require('./ChangeEventPlugin');\n\nvar DefaultEventPluginOrder = require('./DefaultEventPluginOrder');\n\nvar EnterLeaveEventPlugin = require('./EnterLeaveEventPlugin');\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar HTMLDOMPropertyConfig = require('./HTMLDOMPropertyConfig');\n\nvar ReactComponentBrowserEnvironment = require('./ReactComponentBrowserEnvironment');\n\nvar ReactDOMComponent = require('./ReactDOMComponent');\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar ReactDOMEmptyComponent = require('./ReactDOMEmptyComponent');\n\nvar ReactDOMTreeTraversal = require('./ReactDOMTreeTraversal');\n\nvar ReactDOMTextComponent = require('./ReactDOMTextComponent');\n\nvar ReactDefaultBatchingStrategy = require('./ReactDefaultBatchingStrategy');\n\nvar ReactEventListener = require('./ReactEventListener');\n\nvar ReactInjection = require('./ReactInjection');\n\nvar ReactReconcileTransaction = require('./ReactReconcileTransaction');\n\nvar SVGDOMPropertyConfig = require('./SVGDOMPropertyConfig');\n\nvar SelectEventPlugin = require('./SelectEventPlugin');\n\nvar SimpleEventPlugin = require('./SimpleEventPlugin');\n\nvar alreadyInjected = false;\n\nfunction inject() {\n if (alreadyInjected) {\n // TODO: This is currently true because these injections are shared between\n // the client and the server package. They should be built independently\n // and not share any injection state. Then this problem will be solved.\n return;\n }\n\n alreadyInjected = true;\n ReactInjection.EventEmitter.injectReactEventListener(ReactEventListener);\n /**\n * Inject modules for resolving DOM hierarchy and plugin ordering.\n */\n\n ReactInjection.EventPluginHub.injectEventPluginOrder(DefaultEventPluginOrder);\n ReactInjection.EventPluginUtils.injectComponentTree(ReactDOMComponentTree);\n ReactInjection.EventPluginUtils.injectTreeTraversal(ReactDOMTreeTraversal);\n /**\n * Some important event plugins included by default (without having to require\n * them).\n */\n\n ReactInjection.EventPluginHub.injectEventPluginsByName({\n SimpleEventPlugin: SimpleEventPlugin,\n EnterLeaveEventPlugin: EnterLeaveEventPlugin,\n ChangeEventPlugin: ChangeEventPlugin,\n SelectEventPlugin: SelectEventPlugin,\n BeforeInputEventPlugin: BeforeInputEventPlugin\n });\n ReactInjection.NativeComponent.injectGenericComponentClass(ReactDOMComponent);\n ReactInjection.NativeComponent.injectTextComponentClass(ReactDOMTextComponent);\n ReactInjection.DOMProperty.injectDOMPropertyConfig(HTMLDOMPropertyConfig);\n ReactInjection.DOMProperty.injectDOMPropertyConfig(SVGDOMPropertyConfig);\n ReactInjection.EmptyComponent.injectEmptyComponentFactory(function (instantiate) {\n return new ReactDOMEmptyComponent(instantiate);\n });\n ReactInjection.Updates.injectReconcileTransaction(ReactReconcileTransaction);\n ReactInjection.Updates.injectBatchingStrategy(ReactDefaultBatchingStrategy);\n ReactInjection.Component.injectEnvironment(ReactComponentBrowserEnvironment);\n\n if (process.env.NODE_ENV !== 'production') {\n var url = ExecutionEnvironment.canUseDOM && window.location.href || '';\n\n if (/[?&]react_perf\\b/.test(url)) {\n var ReactDefaultPerf = require('./ReactDefaultPerf');\n\n ReactDefaultPerf.start();\n }\n }\n}\n\nmodule.exports = {\n inject: inject\n};","/**\n * Copyright 2013-present Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule BeforeInputEventPlugin\n */\n'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar EventConstants = require('./EventConstants');\n\nvar EventPropagators = require('./EventPropagators');\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar FallbackCompositionState = require('./FallbackCompositionState');\n\nvar SyntheticCompositionEvent = require('./SyntheticCompositionEvent');\n\nvar SyntheticInputEvent = require('./SyntheticInputEvent');\n\nvar keyOf = require('fbjs/lib/keyOf');\n\nvar END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space\n\nvar START_KEYCODE = 229;\nvar canUseCompositionEvent = ExecutionEnvironment.canUseDOM && 'CompositionEvent' in window;\nvar documentMode = null;\n\nif (ExecutionEnvironment.canUseDOM && 'documentMode' in document) {\n documentMode = document.documentMode;\n} // Webkit offers a very useful `textInput` event that can be used to\n// directly represent `beforeInput`. The IE `textinput` event is not as\n// useful, so we don't use it.\n\n\nvar canUseTextInputEvent = ExecutionEnvironment.canUseDOM && 'TextEvent' in window && !documentMode && !isPresto(); // In IE9+, we have access to composition events, but the data supplied\n// by the native compositionend event may be incorrect. Japanese ideographic\n// spaces, for instance (\\u3000) are not recorded correctly.\n\nvar useFallbackCompositionData = ExecutionEnvironment.canUseDOM && (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11);\n/**\n * Opera <= 12 includes TextEvent in window, but does not fire\n * text input events. Rely on keypress instead.\n */\n\nfunction isPresto() {\n var opera = window.opera;\n return _typeof(opera) === 'object' && typeof opera.version === 'function' && parseInt(opera.version(), 10) <= 12;\n}\n\nvar SPACEBAR_CODE = 32;\nvar SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE);\nvar topLevelTypes = EventConstants.topLevelTypes; // Events and their corresponding property names.\n\nvar eventTypes = {\n beforeInput: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onBeforeInput: null\n }),\n captured: keyOf({\n onBeforeInputCapture: null\n })\n },\n dependencies: [topLevelTypes.topCompositionEnd, topLevelTypes.topKeyPress, topLevelTypes.topTextInput, topLevelTypes.topPaste]\n },\n compositionEnd: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onCompositionEnd: null\n }),\n captured: keyOf({\n onCompositionEndCapture: null\n })\n },\n dependencies: [topLevelTypes.topBlur, topLevelTypes.topCompositionEnd, topLevelTypes.topKeyDown, topLevelTypes.topKeyPress, topLevelTypes.topKeyUp, topLevelTypes.topMouseDown]\n },\n compositionStart: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onCompositionStart: null\n }),\n captured: keyOf({\n onCompositionStartCapture: null\n })\n },\n dependencies: [topLevelTypes.topBlur, topLevelTypes.topCompositionStart, topLevelTypes.topKeyDown, topLevelTypes.topKeyPress, topLevelTypes.topKeyUp, topLevelTypes.topMouseDown]\n },\n compositionUpdate: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onCompositionUpdate: null\n }),\n captured: keyOf({\n onCompositionUpdateCapture: null\n })\n },\n dependencies: [topLevelTypes.topBlur, topLevelTypes.topCompositionUpdate, topLevelTypes.topKeyDown, topLevelTypes.topKeyPress, topLevelTypes.topKeyUp, topLevelTypes.topMouseDown]\n }\n}; // Track whether we've ever handled a keypress on the space key.\n\nvar hasSpaceKeypress = false;\n/**\n * Return whether a native keypress event is assumed to be a command.\n * This is required because Firefox fires `keypress` events for key commands\n * (cut, copy, select-all, etc.) even though no character is inserted.\n */\n\nfunction isKeypressCommand(nativeEvent) {\n return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) && // ctrlKey && altKey is equivalent to AltGr, and is not a command.\n !(nativeEvent.ctrlKey && nativeEvent.altKey);\n}\n/**\n * Translate native top level events into event types.\n *\n * @param {string} topLevelType\n * @return {object}\n */\n\n\nfunction getCompositionEventType(topLevelType) {\n switch (topLevelType) {\n case topLevelTypes.topCompositionStart:\n return eventTypes.compositionStart;\n\n case topLevelTypes.topCompositionEnd:\n return eventTypes.compositionEnd;\n\n case topLevelTypes.topCompositionUpdate:\n return eventTypes.compositionUpdate;\n }\n}\n/**\n * Does our fallback best-guess model think this event signifies that\n * composition has begun?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\n\n\nfunction isFallbackCompositionStart(topLevelType, nativeEvent) {\n return topLevelType === topLevelTypes.topKeyDown && nativeEvent.keyCode === START_KEYCODE;\n}\n/**\n * Does our fallback mode think that this event is the end of composition?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\n\n\nfunction isFallbackCompositionEnd(topLevelType, nativeEvent) {\n switch (topLevelType) {\n case topLevelTypes.topKeyUp:\n // Command keys insert or clear IME input.\n return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1;\n\n case topLevelTypes.topKeyDown:\n // Expect IME keyCode on each keydown. If we get any other\n // code we must have exited earlier.\n return nativeEvent.keyCode !== START_KEYCODE;\n\n case topLevelTypes.topKeyPress:\n case topLevelTypes.topMouseDown:\n case topLevelTypes.topBlur:\n // Events are not possible without cancelling IME.\n return true;\n\n default:\n return false;\n }\n}\n/**\n * Google Input Tools provides composition data via a CustomEvent,\n * with the `data` property populated in the `detail` object. If this\n * is available on the event object, use it. If not, this is a plain\n * composition event and we have nothing special to extract.\n *\n * @param {object} nativeEvent\n * @return {?string}\n */\n\n\nfunction getDataFromCustomEvent(nativeEvent) {\n var detail = nativeEvent.detail;\n\n if (_typeof(detail) === 'object' && 'data' in detail) {\n return detail.data;\n }\n\n return null;\n} // Track the current IME composition fallback object, if any.\n\n\nvar currentComposition = null;\n/**\n * @return {?object} A SyntheticCompositionEvent.\n */\n\nfunction extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var eventType;\n var fallbackData;\n\n if (canUseCompositionEvent) {\n eventType = getCompositionEventType(topLevelType);\n } else if (!currentComposition) {\n if (isFallbackCompositionStart(topLevelType, nativeEvent)) {\n eventType = eventTypes.compositionStart;\n }\n } else if (isFallbackCompositionEnd(topLevelType, nativeEvent)) {\n eventType = eventTypes.compositionEnd;\n }\n\n if (!eventType) {\n return null;\n }\n\n if (useFallbackCompositionData) {\n // The current composition is stored statically and must not be\n // overwritten while composition continues.\n if (!currentComposition && eventType === eventTypes.compositionStart) {\n currentComposition = FallbackCompositionState.getPooled(nativeEventTarget);\n } else if (eventType === eventTypes.compositionEnd) {\n if (currentComposition) {\n fallbackData = currentComposition.getData();\n }\n }\n }\n\n var event = SyntheticCompositionEvent.getPooled(eventType, targetInst, nativeEvent, nativeEventTarget);\n\n if (fallbackData) {\n // Inject data generated from fallback path into the synthetic event.\n // This matches the property of native CompositionEventInterface.\n event.data = fallbackData;\n } else {\n var customData = getDataFromCustomEvent(nativeEvent);\n\n if (customData !== null) {\n event.data = customData;\n }\n }\n\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n}\n/**\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {object} nativeEvent Native browser event.\n * @return {?string} The string corresponding to this `beforeInput` event.\n */\n\n\nfunction getNativeBeforeInputChars(topLevelType, nativeEvent) {\n switch (topLevelType) {\n case topLevelTypes.topCompositionEnd:\n return getDataFromCustomEvent(nativeEvent);\n\n case topLevelTypes.topKeyPress:\n /**\n * If native `textInput` events are available, our goal is to make\n * use of them. However, there is a special case: the spacebar key.\n * In Webkit, preventing default on a spacebar `textInput` event\n * cancels character insertion, but it *also* causes the browser\n * to fall back to its default spacebar behavior of scrolling the\n * page.\n *\n * Tracking at:\n * https://code.google.com/p/chromium/issues/detail?id=355103\n *\n * To avoid this issue, use the keypress event as if no `textInput`\n * event is available.\n */\n var which = nativeEvent.which;\n\n if (which !== SPACEBAR_CODE) {\n return null;\n }\n\n hasSpaceKeypress = true;\n return SPACEBAR_CHAR;\n\n case topLevelTypes.topTextInput:\n // Record the characters to be added to the DOM.\n var chars = nativeEvent.data; // If it's a spacebar character, assume that we have already handled\n // it at the keypress level and bail immediately. Android Chrome\n // doesn't give us keycodes, so we need to blacklist it.\n\n if (chars === SPACEBAR_CHAR && hasSpaceKeypress) {\n return null;\n }\n\n return chars;\n\n default:\n // For other native event types, do nothing.\n return null;\n }\n}\n/**\n * For browsers that do not provide the `textInput` event, extract the\n * appropriate string to use for SyntheticInputEvent.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {object} nativeEvent Native browser event.\n * @return {?string} The fallback string for this `beforeInput` event.\n */\n\n\nfunction getFallbackBeforeInputChars(topLevelType, nativeEvent) {\n // If we are currently composing (IME) and using a fallback to do so,\n // try to extract the composed characters from the fallback object.\n if (currentComposition) {\n if (topLevelType === topLevelTypes.topCompositionEnd || isFallbackCompositionEnd(topLevelType, nativeEvent)) {\n var chars = currentComposition.getData();\n FallbackCompositionState.release(currentComposition);\n currentComposition = null;\n return chars;\n }\n\n return null;\n }\n\n switch (topLevelType) {\n case topLevelTypes.topPaste:\n // If a paste event occurs after a keypress, throw out the input\n // chars. Paste events should not lead to BeforeInput events.\n return null;\n\n case topLevelTypes.topKeyPress:\n /**\n * As of v27, Firefox may fire keypress events even when no character\n * will be inserted. A few possibilities:\n *\n * - `which` is `0`. Arrow keys, Esc key, etc.\n *\n * - `which` is the pressed key code, but no char is available.\n * Ex: 'AltGr + d` in Polish. There is no modified character for\n * this key combination and no character is inserted into the\n * document, but FF fires the keypress for char code `100` anyway.\n * No `input` event will occur.\n *\n * - `which` is the pressed key code, but a command combination is\n * being used. Ex: `Cmd+C`. No character is inserted, and no\n * `input` event will occur.\n */\n if (nativeEvent.which && !isKeypressCommand(nativeEvent)) {\n return String.fromCharCode(nativeEvent.which);\n }\n\n return null;\n\n case topLevelTypes.topCompositionEnd:\n return useFallbackCompositionData ? null : nativeEvent.data;\n\n default:\n return null;\n }\n}\n/**\n * Extract a SyntheticInputEvent for `beforeInput`, based on either native\n * `textInput` or fallback behavior.\n *\n * @return {?object} A SyntheticInputEvent.\n */\n\n\nfunction extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var chars;\n\n if (canUseTextInputEvent) {\n chars = getNativeBeforeInputChars(topLevelType, nativeEvent);\n } else {\n chars = getFallbackBeforeInputChars(topLevelType, nativeEvent);\n } // If no characters are being inserted, no BeforeInput event should\n // be fired.\n\n\n if (!chars) {\n return null;\n }\n\n var event = SyntheticInputEvent.getPooled(eventTypes.beforeInput, targetInst, nativeEvent, nativeEventTarget);\n event.data = chars;\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n}\n/**\n * Create an `onBeforeInput` event to match\n * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents.\n *\n * This event plugin is based on the native `textInput` event\n * available in Chrome, Safari, Opera, and IE. This event fires after\n * `onKeyPress` and `onCompositionEnd`, but before `onInput`.\n *\n * `beforeInput` is spec'd but not implemented in any browsers, and\n * the `input` event does not provide any useful information about what has\n * actually been added, contrary to the spec. Thus, `textInput` is the best\n * available event to identify the characters that have actually been inserted\n * into the target node.\n *\n * This plugin is also responsible for emitting `composition` events, thus\n * allowing us to share composition fallback code for both `beforeInput` and\n * `composition` event types.\n */\n\n\nvar BeforeInputEventPlugin = {\n eventTypes: eventTypes,\n extractEvents: function extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n return [extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget), extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget)];\n }\n};\nmodule.exports = BeforeInputEventPlugin;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule FallbackCompositionState\n */\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar PooledClass = require('./PooledClass');\n\nvar getTextContentAccessor = require('./getTextContentAccessor');\n/**\n * This helper class stores information about text content of a target node,\n * allowing comparison of content before and after a given event.\n *\n * Identify the node where selection currently begins, then observe\n * both its text content and its current position in the DOM. Since the\n * browser may natively replace the target node during composition, we can\n * use its position to find its replacement.\n *\n * @param {DOMEventTarget} root\n */\n\n\nfunction FallbackCompositionState(root) {\n this._root = root;\n this._startText = this.getText();\n this._fallbackText = null;\n}\n\n_assign(FallbackCompositionState.prototype, {\n destructor: function destructor() {\n this._root = null;\n this._startText = null;\n this._fallbackText = null;\n },\n\n /**\n * Get current text of input.\n *\n * @return {string}\n */\n getText: function getText() {\n if ('value' in this._root) {\n return this._root.value;\n }\n\n return this._root[getTextContentAccessor()];\n },\n\n /**\n * Determine the differing substring between the initially stored\n * text content and the current content.\n *\n * @return {string}\n */\n getData: function getData() {\n if (this._fallbackText) {\n return this._fallbackText;\n }\n\n var start;\n var startValue = this._startText;\n var startLength = startValue.length;\n var end;\n var endValue = this.getText();\n var endLength = endValue.length;\n\n for (start = 0; start < startLength; start++) {\n if (startValue[start] !== endValue[start]) {\n break;\n }\n }\n\n var minEnd = startLength - start;\n\n for (end = 1; end <= minEnd; end++) {\n if (startValue[startLength - end] !== endValue[endLength - end]) {\n break;\n }\n }\n\n var sliceTail = end > 1 ? 1 - end : undefined;\n this._fallbackText = endValue.slice(start, sliceTail);\n return this._fallbackText;\n }\n});\n\nPooledClass.addPoolingTo(FallbackCompositionState);\nmodule.exports = FallbackCompositionState;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SyntheticCompositionEvent\n */\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents\n */\n\n\nvar CompositionEventInterface = {\n data: null\n};\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\n\nfunction SyntheticCompositionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticCompositionEvent, CompositionEventInterface);\nmodule.exports = SyntheticCompositionEvent;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SyntheticInputEvent\n */\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105\n * /#events-inputevents\n */\n\n\nvar InputEventInterface = {\n data: null\n};\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\n\nfunction SyntheticInputEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticInputEvent, InputEventInterface);\nmodule.exports = SyntheticInputEvent;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ChangeEventPlugin\n */\n'use strict';\n\nvar EventConstants = require('./EventConstants');\n\nvar EventPluginHub = require('./EventPluginHub');\n\nvar EventPropagators = require('./EventPropagators');\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar ReactUpdates = require('./ReactUpdates');\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\nvar getEventTarget = require('./getEventTarget');\n\nvar isEventSupported = require('./isEventSupported');\n\nvar isTextInputElement = require('./isTextInputElement');\n\nvar keyOf = require('fbjs/lib/keyOf');\n\nvar topLevelTypes = EventConstants.topLevelTypes;\nvar eventTypes = {\n change: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onChange: null\n }),\n captured: keyOf({\n onChangeCapture: null\n })\n },\n dependencies: [topLevelTypes.topBlur, topLevelTypes.topChange, topLevelTypes.topClick, topLevelTypes.topFocus, topLevelTypes.topInput, topLevelTypes.topKeyDown, topLevelTypes.topKeyUp, topLevelTypes.topSelectionChange]\n }\n};\n/**\n * For IE shims\n */\n\nvar activeElement = null;\nvar activeElementInst = null;\nvar activeElementValue = null;\nvar activeElementValueProp = null;\n/**\n * SECTION: handle `change` event\n */\n\nfunction shouldUseChangeEvent(elem) {\n var nodeName = elem.nodeName && elem.nodeName.toLowerCase();\n return nodeName === 'select' || nodeName === 'input' && elem.type === 'file';\n}\n\nvar doesChangeEventBubble = false;\n\nif (ExecutionEnvironment.canUseDOM) {\n // See `handleChange` comment below\n doesChangeEventBubble = isEventSupported('change') && (!('documentMode' in document) || document.documentMode > 8);\n}\n\nfunction manualDispatchChangeEvent(nativeEvent) {\n var event = SyntheticEvent.getPooled(eventTypes.change, activeElementInst, nativeEvent, getEventTarget(nativeEvent));\n EventPropagators.accumulateTwoPhaseDispatches(event); // If change and propertychange bubbled, we'd just bind to it like all the\n // other events and have it go through ReactBrowserEventEmitter. Since it\n // doesn't, we manually listen for the events and so we have to enqueue and\n // process the abstract event manually.\n //\n // Batching is necessary here in order to ensure that all event handlers run\n // before the next rerender (including event handlers attached to ancestor\n // elements instead of directly on the input). Without this, controlled\n // components don't work properly in conjunction with event bubbling because\n // the component is rerendered and the value reverted before all the event\n // handlers can run. See https://github.com/facebook/react/issues/708.\n\n ReactUpdates.batchedUpdates(runEventInBatch, event);\n}\n\nfunction runEventInBatch(event) {\n EventPluginHub.enqueueEvents(event);\n EventPluginHub.processEventQueue(false);\n}\n\nfunction startWatchingForChangeEventIE8(target, targetInst) {\n activeElement = target;\n activeElementInst = targetInst;\n activeElement.attachEvent('onchange', manualDispatchChangeEvent);\n}\n\nfunction stopWatchingForChangeEventIE8() {\n if (!activeElement) {\n return;\n }\n\n activeElement.detachEvent('onchange', manualDispatchChangeEvent);\n activeElement = null;\n activeElementInst = null;\n}\n\nfunction getTargetInstForChangeEvent(topLevelType, targetInst) {\n if (topLevelType === topLevelTypes.topChange) {\n return targetInst;\n }\n}\n\nfunction handleEventsForChangeEventIE8(topLevelType, target, targetInst) {\n if (topLevelType === topLevelTypes.topFocus) {\n // stopWatching() should be a noop here but we call it just in case we\n // missed a blur event somehow.\n stopWatchingForChangeEventIE8();\n startWatchingForChangeEventIE8(target, targetInst);\n } else if (topLevelType === topLevelTypes.topBlur) {\n stopWatchingForChangeEventIE8();\n }\n}\n/**\n * SECTION: handle `input` event\n */\n\n\nvar isInputEventSupported = false;\n\nif (ExecutionEnvironment.canUseDOM) {\n // IE9 claims to support the input event but fails to trigger it when\n // deleting text, so we ignore its input events.\n // IE10+ fire input events to often, such when a placeholder\n // changes or when an input with a placeholder is focused.\n isInputEventSupported = isEventSupported('input') && (!('documentMode' in document) || document.documentMode > 11);\n}\n/**\n * (For IE <=11) Replacement getter/setter for the `value` property that gets\n * set on the active element.\n */\n\n\nvar newValueProp = {\n get: function get() {\n return activeElementValueProp.get.call(this);\n },\n set: function set(val) {\n // Cast to a string so we can do equality checks.\n activeElementValue = '' + val;\n activeElementValueProp.set.call(this, val);\n }\n};\n/**\n * (For IE <=11) Starts tracking propertychange events on the passed-in element\n * and override the value property so that we can distinguish user events from\n * value changes in JS.\n */\n\nfunction startWatchingForValueChange(target, targetInst) {\n activeElement = target;\n activeElementInst = targetInst;\n activeElementValue = target.value;\n activeElementValueProp = Object.getOwnPropertyDescriptor(target.constructor.prototype, 'value'); // Not guarded in a canDefineProperty check: IE8 supports defineProperty only\n // on DOM elements\n\n Object.defineProperty(activeElement, 'value', newValueProp);\n\n if (activeElement.attachEvent) {\n activeElement.attachEvent('onpropertychange', handlePropertyChange);\n } else {\n activeElement.addEventListener('propertychange', handlePropertyChange, false);\n }\n}\n/**\n * (For IE <=11) Removes the event listeners from the currently-tracked element,\n * if any exists.\n */\n\n\nfunction stopWatchingForValueChange() {\n if (!activeElement) {\n return;\n } // delete restores the original property definition\n\n\n delete activeElement.value;\n\n if (activeElement.detachEvent) {\n activeElement.detachEvent('onpropertychange', handlePropertyChange);\n } else {\n activeElement.removeEventListener('propertychange', handlePropertyChange, false);\n }\n\n activeElement = null;\n activeElementInst = null;\n activeElementValue = null;\n activeElementValueProp = null;\n}\n/**\n * (For IE <=11) Handles a propertychange event, sending a `change` event if\n * the value of the active element has changed.\n */\n\n\nfunction handlePropertyChange(nativeEvent) {\n if (nativeEvent.propertyName !== 'value') {\n return;\n }\n\n var value = nativeEvent.srcElement.value;\n\n if (value === activeElementValue) {\n return;\n }\n\n activeElementValue = value;\n manualDispatchChangeEvent(nativeEvent);\n}\n/**\n * If a `change` event should be fired, returns the target's ID.\n */\n\n\nfunction getTargetInstForInputEvent(topLevelType, targetInst) {\n if (topLevelType === topLevelTypes.topInput) {\n // In modern browsers (i.e., not IE8 or IE9), the input event is exactly\n // what we want so fall through here and trigger an abstract event\n return targetInst;\n }\n}\n\nfunction handleEventsForInputEventIE(topLevelType, target, targetInst) {\n if (topLevelType === topLevelTypes.topFocus) {\n // In IE8, we can capture almost all .value changes by adding a\n // propertychange handler and looking for events with propertyName\n // equal to 'value'\n // In IE9-11, propertychange fires for most input events but is buggy and\n // doesn't fire when text is deleted, but conveniently, selectionchange\n // appears to fire in all of the remaining cases so we catch those and\n // forward the event if the value has changed\n // In either case, we don't want to call the event handler if the value\n // is changed from JS so we redefine a setter for `.value` that updates\n // our activeElementValue variable, allowing us to ignore those changes\n //\n // stopWatching() should be a noop here but we call it just in case we\n // missed a blur event somehow.\n stopWatchingForValueChange();\n startWatchingForValueChange(target, targetInst);\n } else if (topLevelType === topLevelTypes.topBlur) {\n stopWatchingForValueChange();\n }\n} // For IE8 and IE9.\n\n\nfunction getTargetInstForInputEventIE(topLevelType, targetInst) {\n if (topLevelType === topLevelTypes.topSelectionChange || topLevelType === topLevelTypes.topKeyUp || topLevelType === topLevelTypes.topKeyDown) {\n // On the selectionchange event, the target is just document which isn't\n // helpful for us so just check activeElement instead.\n //\n // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire\n // propertychange on the first input event after setting `value` from a\n // script and fires only keydown, keypress, keyup. Catching keyup usually\n // gets it and catching keydown lets us fire an event for the first\n // keystroke if user does a key repeat (it'll be a little delayed: right\n // before the second keystroke). Other input methods (e.g., paste) seem to\n // fire selectionchange normally.\n if (activeElement && activeElement.value !== activeElementValue) {\n activeElementValue = activeElement.value;\n return activeElementInst;\n }\n }\n}\n/**\n * SECTION: handle `click` event\n */\n\n\nfunction shouldUseClickEvent(elem) {\n // Use the `click` event to detect changes to checkbox and radio inputs.\n // This approach works across all browsers, whereas `change` does not fire\n // until `blur` in IE8.\n return elem.nodeName && elem.nodeName.toLowerCase() === 'input' && (elem.type === 'checkbox' || elem.type === 'radio');\n}\n\nfunction getTargetInstForClickEvent(topLevelType, targetInst) {\n if (topLevelType === topLevelTypes.topClick) {\n return targetInst;\n }\n}\n/**\n * This plugin creates an `onChange` event that normalizes change events\n * across form elements. This event fires at a time when it's possible to\n * change the element's value without seeing a flicker.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - select\n */\n\n\nvar ChangeEventPlugin = {\n eventTypes: eventTypes,\n extractEvents: function extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;\n var getTargetInstFunc, handleEventFunc;\n\n if (shouldUseChangeEvent(targetNode)) {\n if (doesChangeEventBubble) {\n getTargetInstFunc = getTargetInstForChangeEvent;\n } else {\n handleEventFunc = handleEventsForChangeEventIE8;\n }\n } else if (isTextInputElement(targetNode)) {\n if (isInputEventSupported) {\n getTargetInstFunc = getTargetInstForInputEvent;\n } else {\n getTargetInstFunc = getTargetInstForInputEventIE;\n handleEventFunc = handleEventsForInputEventIE;\n }\n } else if (shouldUseClickEvent(targetNode)) {\n getTargetInstFunc = getTargetInstForClickEvent;\n }\n\n if (getTargetInstFunc) {\n var inst = getTargetInstFunc(topLevelType, targetInst);\n\n if (inst) {\n var event = SyntheticEvent.getPooled(eventTypes.change, inst, nativeEvent, nativeEventTarget);\n event.type = 'change';\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n }\n }\n\n if (handleEventFunc) {\n handleEventFunc(topLevelType, targetNode, targetInst);\n }\n }\n};\nmodule.exports = ChangeEventPlugin;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactRef\n */\n'use strict';\n\nvar ReactOwner = require('./ReactOwner');\n\nvar ReactRef = {};\n\nfunction attachRef(ref, component, owner) {\n if (typeof ref === 'function') {\n ref(component.getPublicInstance());\n } else {\n // Legacy ref\n ReactOwner.addComponentAsRefTo(component, ref, owner);\n }\n}\n\nfunction detachRef(ref, component, owner) {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n // Legacy ref\n ReactOwner.removeComponentAsRefFrom(component, ref, owner);\n }\n}\n\nReactRef.attachRefs = function (instance, element) {\n if (element === null || element === false) {\n return;\n }\n\n var ref = element.ref;\n\n if (ref != null) {\n attachRef(ref, instance, element._owner);\n }\n};\n\nReactRef.shouldUpdateRefs = function (prevElement, nextElement) {\n // If either the owner or a `ref` has changed, make sure the newest owner\n // has stored a reference to `this`, and the previous owner (if different)\n // has forgotten the reference to `this`. We use the element instead\n // of the public this.props because the post processing cannot determine\n // a ref. The ref conceptually lives on the element.\n // TODO: Should this even be possible? The owner cannot change because\n // it's forbidden by shouldUpdateReactComponent. The ref can change\n // if you swap the keys of but not the refs. Reconsider where this check\n // is made. It probably belongs where the key checking and\n // instantiateReactComponent is done.\n var prevEmpty = prevElement === null || prevElement === false;\n var nextEmpty = nextElement === null || nextElement === false;\n return (// This has a few false positives w/r/t empty components.\n prevEmpty || nextEmpty || nextElement._owner !== prevElement._owner || nextElement.ref !== prevElement.ref\n );\n};\n\nReactRef.detachRefs = function (instance, element) {\n if (element === null || element === false) {\n return;\n }\n\n var ref = element.ref;\n\n if (ref != null) {\n detachRef(ref, instance, element._owner);\n }\n};\n\nmodule.exports = ReactRef;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactOwner\n */\n'use strict';\n\nvar invariant = require('fbjs/lib/invariant');\n/**\n * ReactOwners are capable of storing references to owned components.\n *\n * All components are capable of //being// referenced by owner components, but\n * only ReactOwner components are capable of //referencing// owned components.\n * The named reference is known as a \"ref\".\n *\n * Refs are available when mounted and updated during reconciliation.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return (\n * <div onClick={this.handleClick}>\n * <CustomComponent ref=\"custom\" />\n * </div>\n * );\n * },\n * handleClick: function() {\n * this.refs.custom.handleClick();\n * },\n * componentDidMount: function() {\n * this.refs.custom.initialize();\n * }\n * });\n *\n * Refs should rarely be used. When refs are used, they should only be done to\n * control data that is not handled by React's data flow.\n *\n * @class ReactOwner\n */\n\n\nvar ReactOwner = {\n /**\n * @param {?object} object\n * @return {boolean} True if `object` is a valid owner.\n * @final\n */\n isValidOwner: function isValidOwner(object) {\n return !!(object && typeof object.attachRef === 'function' && typeof object.detachRef === 'function');\n },\n\n /**\n * Adds a component by ref to an owner component.\n *\n * @param {ReactComponent} component Component to reference.\n * @param {string} ref Name by which to refer to the component.\n * @param {ReactOwner} owner Component on which to record the ref.\n * @final\n * @internal\n */\n addComponentAsRefTo: function addComponentAsRefTo(component, ref, owner) {\n !ReactOwner.isValidOwner(owner) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'addComponentAsRefTo(...): Only a ReactOwner can have refs. You might ' + 'be adding a ref to a component that was not created inside a component\\'s ' + '`render` method, or you have multiple copies of React loaded ' + '(details: https://fb.me/react-refs-must-have-owner).') : invariant(false) : void 0;\n owner.attachRef(ref, component);\n },\n\n /**\n * Removes a component by ref from an owner component.\n *\n * @param {ReactComponent} component Component to dereference.\n * @param {string} ref Name of the ref to remove.\n * @param {ReactOwner} owner Component on which the ref is recorded.\n * @final\n * @internal\n */\n removeComponentAsRefFrom: function removeComponentAsRefFrom(component, ref, owner) {\n !ReactOwner.isValidOwner(owner) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'removeComponentAsRefFrom(...): Only a ReactOwner can have refs. You might ' + 'be removing a ref to a component that was not created inside a component\\'s ' + '`render` method, or you have multiple copies of React loaded ' + '(details: https://fb.me/react-refs-must-have-owner).') : invariant(false) : void 0;\n var ownerPublicInstance = owner.getPublicInstance(); // Check that `component`'s owner is still alive and that `component` is still the current ref\n // because we do not want to detach the ref if another component stole it.\n\n if (ownerPublicInstance && ownerPublicInstance.refs[ref] === component.getPublicInstance()) {\n owner.detachRef(ref);\n }\n }\n};\nmodule.exports = ReactOwner;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule DefaultEventPluginOrder\n */\n'use strict';\n\nvar keyOf = require('fbjs/lib/keyOf');\n/**\n * Module that is injectable into `EventPluginHub`, that specifies a\n * deterministic ordering of `EventPlugin`s. A convenient way to reason about\n * plugins, without having to package every one of them. This is better than\n * having plugins be ordered in the same order that they are injected because\n * that ordering would be influenced by the packaging order.\n * `ResponderEventPlugin` must occur before `SimpleEventPlugin` so that\n * preventing default on events is convenient in `SimpleEventPlugin` handlers.\n */\n\n\nvar DefaultEventPluginOrder = [keyOf({\n ResponderEventPlugin: null\n}), keyOf({\n SimpleEventPlugin: null\n}), keyOf({\n TapEventPlugin: null\n}), keyOf({\n EnterLeaveEventPlugin: null\n}), keyOf({\n ChangeEventPlugin: null\n}), keyOf({\n SelectEventPlugin: null\n}), keyOf({\n BeforeInputEventPlugin: null\n})];\nmodule.exports = DefaultEventPluginOrder;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule EnterLeaveEventPlugin\n */\n'use strict';\n\nvar EventConstants = require('./EventConstants');\n\nvar EventPropagators = require('./EventPropagators');\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\n\nvar keyOf = require('fbjs/lib/keyOf');\n\nvar topLevelTypes = EventConstants.topLevelTypes;\nvar eventTypes = {\n mouseEnter: {\n registrationName: keyOf({\n onMouseEnter: null\n }),\n dependencies: [topLevelTypes.topMouseOut, topLevelTypes.topMouseOver]\n },\n mouseLeave: {\n registrationName: keyOf({\n onMouseLeave: null\n }),\n dependencies: [topLevelTypes.topMouseOut, topLevelTypes.topMouseOver]\n }\n};\nvar EnterLeaveEventPlugin = {\n eventTypes: eventTypes,\n\n /**\n * For almost every interaction we care about, there will be both a top-level\n * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that\n * we do not extract duplicate events. However, moving the mouse into the\n * browser from outside will not fire a `mouseout` event. In this case, we use\n * the `mouseover` top-level event.\n */\n extractEvents: function extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n if (topLevelType === topLevelTypes.topMouseOver && (nativeEvent.relatedTarget || nativeEvent.fromElement)) {\n return null;\n }\n\n if (topLevelType !== topLevelTypes.topMouseOut && topLevelType !== topLevelTypes.topMouseOver) {\n // Must not be a mouse in or mouse out - ignoring.\n return null;\n }\n\n var win;\n\n if (nativeEventTarget.window === nativeEventTarget) {\n // `nativeEventTarget` is probably a window object.\n win = nativeEventTarget;\n } else {\n // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n var doc = nativeEventTarget.ownerDocument;\n\n if (doc) {\n win = doc.defaultView || doc.parentWindow;\n } else {\n win = window;\n }\n }\n\n var from;\n var to;\n\n if (topLevelType === topLevelTypes.topMouseOut) {\n from = targetInst;\n var related = nativeEvent.relatedTarget || nativeEvent.toElement;\n to = related ? ReactDOMComponentTree.getClosestInstanceFromNode(related) : null;\n } else {\n // Moving to a node from outside the window.\n from = null;\n to = targetInst;\n }\n\n if (from === to) {\n // Nothing pertains to our managed components.\n return null;\n }\n\n var fromNode = from == null ? win : ReactDOMComponentTree.getNodeFromInstance(from);\n var toNode = to == null ? win : ReactDOMComponentTree.getNodeFromInstance(to);\n var leave = SyntheticMouseEvent.getPooled(eventTypes.mouseLeave, from, nativeEvent, nativeEventTarget);\n leave.type = 'mouseleave';\n leave.target = fromNode;\n leave.relatedTarget = toNode;\n var enter = SyntheticMouseEvent.getPooled(eventTypes.mouseEnter, to, nativeEvent, nativeEventTarget);\n enter.type = 'mouseenter';\n enter.target = toNode;\n enter.relatedTarget = fromNode;\n EventPropagators.accumulateEnterLeaveDispatches(leave, enter, from, to);\n return [leave, enter];\n }\n};\nmodule.exports = EnterLeaveEventPlugin;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule HTMLDOMPropertyConfig\n */\n'use strict';\n\nvar DOMProperty = require('./DOMProperty');\n\nvar MUST_USE_PROPERTY = DOMProperty.injection.MUST_USE_PROPERTY;\nvar HAS_BOOLEAN_VALUE = DOMProperty.injection.HAS_BOOLEAN_VALUE;\nvar HAS_SIDE_EFFECTS = DOMProperty.injection.HAS_SIDE_EFFECTS;\nvar HAS_NUMERIC_VALUE = DOMProperty.injection.HAS_NUMERIC_VALUE;\nvar HAS_POSITIVE_NUMERIC_VALUE = DOMProperty.injection.HAS_POSITIVE_NUMERIC_VALUE;\nvar HAS_OVERLOADED_BOOLEAN_VALUE = DOMProperty.injection.HAS_OVERLOADED_BOOLEAN_VALUE;\nvar HTMLDOMPropertyConfig = {\n isCustomAttribute: RegExp.prototype.test.bind(new RegExp('^(data|aria)-[' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$')),\n Properties: {\n /**\n * Standard Properties\n */\n accept: 0,\n acceptCharset: 0,\n accessKey: 0,\n action: 0,\n allowFullScreen: HAS_BOOLEAN_VALUE,\n allowTransparency: 0,\n alt: 0,\n async: HAS_BOOLEAN_VALUE,\n autoComplete: 0,\n // autoFocus is polyfilled/normalized by AutoFocusUtils\n // autoFocus: HAS_BOOLEAN_VALUE,\n autoPlay: HAS_BOOLEAN_VALUE,\n capture: HAS_BOOLEAN_VALUE,\n cellPadding: 0,\n cellSpacing: 0,\n charSet: 0,\n challenge: 0,\n checked: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n cite: 0,\n classID: 0,\n className: 0,\n cols: HAS_POSITIVE_NUMERIC_VALUE,\n colSpan: 0,\n content: 0,\n contentEditable: 0,\n contextMenu: 0,\n controls: HAS_BOOLEAN_VALUE,\n coords: 0,\n crossOrigin: 0,\n data: 0,\n // For `<object />` acts as `src`.\n dateTime: 0,\n 'default': HAS_BOOLEAN_VALUE,\n defer: HAS_BOOLEAN_VALUE,\n dir: 0,\n disabled: HAS_BOOLEAN_VALUE,\n download: HAS_OVERLOADED_BOOLEAN_VALUE,\n draggable: 0,\n encType: 0,\n form: 0,\n formAction: 0,\n formEncType: 0,\n formMethod: 0,\n formNoValidate: HAS_BOOLEAN_VALUE,\n formTarget: 0,\n frameBorder: 0,\n headers: 0,\n height: 0,\n hidden: HAS_BOOLEAN_VALUE,\n high: 0,\n href: 0,\n hrefLang: 0,\n htmlFor: 0,\n httpEquiv: 0,\n icon: 0,\n id: 0,\n inputMode: 0,\n integrity: 0,\n is: 0,\n keyParams: 0,\n keyType: 0,\n kind: 0,\n label: 0,\n lang: 0,\n list: 0,\n loop: HAS_BOOLEAN_VALUE,\n low: 0,\n manifest: 0,\n marginHeight: 0,\n marginWidth: 0,\n max: 0,\n maxLength: 0,\n media: 0,\n mediaGroup: 0,\n method: 0,\n min: 0,\n minLength: 0,\n // Caution; `option.selected` is not updated if `select.multiple` is\n // disabled with `removeAttribute`.\n multiple: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n muted: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n name: 0,\n nonce: 0,\n noValidate: HAS_BOOLEAN_VALUE,\n open: HAS_BOOLEAN_VALUE,\n optimum: 0,\n pattern: 0,\n placeholder: 0,\n poster: 0,\n preload: 0,\n profile: 0,\n radioGroup: 0,\n readOnly: HAS_BOOLEAN_VALUE,\n rel: 0,\n required: HAS_BOOLEAN_VALUE,\n reversed: HAS_BOOLEAN_VALUE,\n role: 0,\n rows: HAS_POSITIVE_NUMERIC_VALUE,\n rowSpan: HAS_NUMERIC_VALUE,\n sandbox: 0,\n scope: 0,\n scoped: HAS_BOOLEAN_VALUE,\n scrolling: 0,\n seamless: HAS_BOOLEAN_VALUE,\n selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n shape: 0,\n size: HAS_POSITIVE_NUMERIC_VALUE,\n sizes: 0,\n span: HAS_POSITIVE_NUMERIC_VALUE,\n spellCheck: 0,\n src: 0,\n srcDoc: 0,\n srcLang: 0,\n srcSet: 0,\n start: HAS_NUMERIC_VALUE,\n step: 0,\n style: 0,\n summary: 0,\n tabIndex: 0,\n target: 0,\n title: 0,\n // Setting .type throws on non-<input> tags\n type: 0,\n useMap: 0,\n value: MUST_USE_PROPERTY | HAS_SIDE_EFFECTS,\n width: 0,\n wmode: 0,\n wrap: 0,\n\n /**\n * RDFa Properties\n */\n about: 0,\n datatype: 0,\n inlist: 0,\n prefix: 0,\n // property is also supported for OpenGraph in meta tags.\n property: 0,\n resource: 0,\n 'typeof': 0,\n vocab: 0,\n\n /**\n * Non-standard Properties\n */\n // autoCapitalize and autoCorrect are supported in Mobile Safari for\n // keyboard hints.\n autoCapitalize: 0,\n autoCorrect: 0,\n // autoSave allows WebKit/Blink to persist values of input fields on page reloads\n autoSave: 0,\n // color is for Safari mask-icon link\n color: 0,\n // itemProp, itemScope, itemType are for\n // Microdata support. See http://schema.org/docs/gs.html\n itemProp: 0,\n itemScope: HAS_BOOLEAN_VALUE,\n itemType: 0,\n // itemID and itemRef are for Microdata support as well but\n // only specified in the WHATWG spec document. See\n // https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api\n itemID: 0,\n itemRef: 0,\n // results show looking glass icon and recent searches on input\n // search fields in WebKit/Blink\n results: 0,\n // IE-only attribute that specifies security restrictions on an iframe\n // as an alternative to the sandbox attribute on IE<10\n security: 0,\n // IE-only attribute that controls focus behavior\n unselectable: 0\n },\n DOMAttributeNames: {\n acceptCharset: 'accept-charset',\n className: 'class',\n htmlFor: 'for',\n httpEquiv: 'http-equiv'\n },\n DOMPropertyNames: {}\n};\nmodule.exports = HTMLDOMPropertyConfig;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Danger\n */\n'use strict';\n\nvar DOMLazyTree = require('./DOMLazyTree');\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar createNodesFromMarkup = require('fbjs/lib/createNodesFromMarkup');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\n\nvar getMarkupWrap = require('fbjs/lib/getMarkupWrap');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar OPEN_TAG_NAME_EXP = /^(<[^ \\/>]+)/;\nvar RESULT_INDEX_ATTR = 'data-danger-index';\n/**\n * Extracts the `nodeName` from a string of markup.\n *\n * NOTE: Extracting the `nodeName` does not require a regular expression match\n * because we make assumptions about React-generated markup (i.e. there are no\n * spaces surrounding the opening tag and there is at least one attribute).\n *\n * @param {string} markup String of markup.\n * @return {string} Node name of the supplied markup.\n * @see http://jsperf.com/extract-nodename\n */\n\nfunction getNodeName(markup) {\n return markup.substring(1, markup.indexOf(' '));\n}\n\nvar Danger = {\n /**\n * Renders markup into an array of nodes. The markup is expected to render\n * into a list of root nodes. Also, the length of `resultList` and\n * `markupList` should be the same.\n *\n * @param {array<string>} markupList List of markup strings to render.\n * @return {array<DOMElement>} List of rendered nodes.\n * @internal\n */\n dangerouslyRenderMarkup: function dangerouslyRenderMarkup(markupList) {\n !ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyRenderMarkup(...): Cannot render markup in a worker ' + 'thread. Make sure `window` and `document` are available globally ' + 'before requiring React when unit testing or use ' + 'ReactDOMServer.renderToString for server rendering.') : invariant(false) : void 0;\n var nodeName;\n var markupByNodeName = {}; // Group markup by `nodeName` if a wrap is necessary, else by '*'.\n\n for (var i = 0; i < markupList.length; i++) {\n !markupList[i] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyRenderMarkup(...): Missing markup.') : invariant(false) : void 0;\n nodeName = getNodeName(markupList[i]);\n nodeName = getMarkupWrap(nodeName) ? nodeName : '*';\n markupByNodeName[nodeName] = markupByNodeName[nodeName] || [];\n markupByNodeName[nodeName][i] = markupList[i];\n }\n\n var resultList = [];\n var resultListAssignmentCount = 0;\n\n for (nodeName in markupByNodeName) {\n if (!markupByNodeName.hasOwnProperty(nodeName)) {\n continue;\n }\n\n var markupListByNodeName = markupByNodeName[nodeName]; // This for-in loop skips the holes of the sparse array. The order of\n // iteration should follow the order of assignment, which happens to match\n // numerical index order, but we don't rely on that.\n\n var resultIndex;\n\n for (resultIndex in markupListByNodeName) {\n if (markupListByNodeName.hasOwnProperty(resultIndex)) {\n var markup = markupListByNodeName[resultIndex]; // Push the requested markup with an additional RESULT_INDEX_ATTR\n // attribute. If the markup does not start with a < character, it\n // will be discarded below (with an appropriate console.error).\n\n markupListByNodeName[resultIndex] = markup.replace(OPEN_TAG_NAME_EXP, // This index will be parsed back out below.\n '$1 ' + RESULT_INDEX_ATTR + '=\"' + resultIndex + '\" ');\n }\n } // Render each group of markup with similar wrapping `nodeName`.\n\n\n var renderNodes = createNodesFromMarkup(markupListByNodeName.join(''), emptyFunction // Do nothing special with <script> tags.\n );\n\n for (var j = 0; j < renderNodes.length; ++j) {\n var renderNode = renderNodes[j];\n\n if (renderNode.hasAttribute && renderNode.hasAttribute(RESULT_INDEX_ATTR)) {\n resultIndex = +renderNode.getAttribute(RESULT_INDEX_ATTR);\n renderNode.removeAttribute(RESULT_INDEX_ATTR);\n !!resultList.hasOwnProperty(resultIndex) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Danger: Assigning to an already-occupied result index.') : invariant(false) : void 0;\n resultList[resultIndex] = renderNode; // This should match resultList.length and markupList.length when\n // we're done.\n\n resultListAssignmentCount += 1;\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('Danger: Discarding unexpected node:', renderNode);\n }\n }\n } // Although resultList was populated out of order, it should now be a dense\n // array.\n\n\n !(resultListAssignmentCount === resultList.length) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Danger: Did not assign to every index of resultList.') : invariant(false) : void 0;\n !(resultList.length === markupList.length) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Danger: Expected markup to render %s nodes, but rendered %s.', markupList.length, resultList.length) : invariant(false) : void 0;\n return resultList;\n },\n\n /**\n * Replaces a node with a string of markup at its current position within its\n * parent. The markup must render into a single root node.\n *\n * @param {DOMElement} oldChild Child node to replace.\n * @param {string} markup Markup to render in place of the child node.\n * @internal\n */\n dangerouslyReplaceNodeWithMarkup: function dangerouslyReplaceNodeWithMarkup(oldChild, markup) {\n !ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot render markup in a ' + 'worker thread. Make sure `window` and `document` are available ' + 'globally before requiring React when unit testing or use ' + 'ReactDOMServer.renderToString() for server rendering.') : invariant(false) : void 0;\n !markup ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Missing markup.') : invariant(false) : void 0;\n !(oldChild.nodeName !== 'HTML') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot replace markup of the ' + '<html> node. This is because browser quirks make this unreliable ' + 'and/or slow. If you want to render to the root you must use ' + 'server rendering. See ReactDOMServer.renderToString().') : invariant(false) : void 0;\n\n if (typeof markup === 'string') {\n var newChild = createNodesFromMarkup(markup, emptyFunction)[0];\n oldChild.parentNode.replaceChild(newChild, oldChild);\n } else {\n DOMLazyTree.replaceChildWithTree(oldChild, markup);\n }\n }\n};\nmodule.exports = Danger;","'use strict';\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n/*eslint-disable fb-www/unsafe-html*/\n\nvar ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar createArrayFromMixed = require('./createArrayFromMixed');\n\nvar getMarkupWrap = require('./getMarkupWrap');\n\nvar invariant = require('./invariant');\n/**\n * Dummy container used to render all markup.\n */\n\n\nvar dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;\n/**\n * Pattern used by `getNodeName`.\n */\n\nvar nodeNamePattern = /^\\s*<(\\w+)/;\n/**\n * Extracts the `nodeName` of the first element in a string of markup.\n *\n * @param {string} markup String of markup.\n * @return {?string} Node name of the supplied markup.\n */\n\nfunction getNodeName(markup) {\n var nodeNameMatch = markup.match(nodeNamePattern);\n return nodeNameMatch && nodeNameMatch[1].toLowerCase();\n}\n/**\n * Creates an array containing the nodes rendered from the supplied markup. The\n * optionally supplied `handleScript` function will be invoked once for each\n * <script> element that is rendered. If no `handleScript` function is supplied,\n * an exception is thrown if any <script> elements are rendered.\n *\n * @param {string} markup A string of valid HTML markup.\n * @param {?function} handleScript Invoked once for each rendered <script>.\n * @return {array<DOMElement|DOMTextNode>} An array of rendered nodes.\n */\n\n\nfunction createNodesFromMarkup(markup, handleScript) {\n var node = dummyNode;\n !!!dummyNode ? process.env.NODE_ENV !== 'production' ? invariant(false, 'createNodesFromMarkup dummy not initialized') : invariant(false) : void 0;\n var nodeName = getNodeName(markup);\n var wrap = nodeName && getMarkupWrap(nodeName);\n\n if (wrap) {\n node.innerHTML = wrap[1] + markup + wrap[2];\n var wrapDepth = wrap[0];\n\n while (wrapDepth--) {\n node = node.lastChild;\n }\n } else {\n node.innerHTML = markup;\n }\n\n var scripts = node.getElementsByTagName('script');\n\n if (scripts.length) {\n !handleScript ? process.env.NODE_ENV !== 'production' ? invariant(false, 'createNodesFromMarkup(...): Unexpected <script> element rendered.') : invariant(false) : void 0;\n createArrayFromMixed(scripts).forEach(handleScript);\n }\n\n var nodes = Array.from(node.childNodes);\n\n while (node.lastChild) {\n node.removeChild(node.lastChild);\n }\n\n return nodes;\n}\n\nmodule.exports = createNodesFromMarkup;","'use strict';\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar invariant = require('./invariant');\n/**\n * Convert array-like objects to arrays.\n *\n * This API assumes the caller knows the contents of the data type. For less\n * well defined inputs use createArrayFromMixed.\n *\n * @param {object|function|filelist} obj\n * @return {array}\n */\n\n\nfunction toArray(obj) {\n var length = obj.length; // Some browsers builtin objects can report typeof 'function' (e.g. NodeList\n // in old versions of Safari).\n\n !(!Array.isArray(obj) && (_typeof(obj) === 'object' || typeof obj === 'function')) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Array-like object expected') : invariant(false) : void 0;\n !(typeof length === 'number') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object needs a length property') : invariant(false) : void 0;\n !(length === 0 || length - 1 in obj) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object should have keys for indices') : invariant(false) : void 0;\n !(typeof obj.callee !== 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object can\\'t be `arguments`. Use rest params ' + '(function(...args) {}) or Array.from() instead.') : invariant(false) : void 0; // Old IE doesn't give collections access to hasOwnProperty. Assume inputs\n // without method will throw during the slice call and skip straight to the\n // fallback.\n\n if (obj.hasOwnProperty) {\n try {\n return Array.prototype.slice.call(obj);\n } catch (e) {// IE < 9 does not support Array#slice on collections objects\n }\n } // Fall back to copying key by key. This assumes all keys have a value,\n // so will not preserve sparsely populated inputs.\n\n\n var ret = Array(length);\n\n for (var ii = 0; ii < length; ii++) {\n ret[ii] = obj[ii];\n }\n\n return ret;\n}\n/**\n * Perform a heuristic test to determine if an object is \"array-like\".\n *\n * A monk asked Joshu, a Zen master, \"Has a dog Buddha nature?\"\n * Joshu replied: \"Mu.\"\n *\n * This function determines if its argument has \"array nature\": it returns\n * true if the argument is an actual array, an `arguments' object, or an\n * HTMLCollection (e.g. node.childNodes or node.getElementsByTagName()).\n *\n * It will return false for other array-like objects like Filelist.\n *\n * @param {*} obj\n * @return {boolean}\n */\n\n\nfunction hasArrayNature(obj) {\n return (// not null/false\n !!obj && ( // arrays are objects, NodeLists are functions in Safari\n _typeof(obj) == 'object' || typeof obj == 'function') && // quacks like an array\n 'length' in obj && // not window\n !('setInterval' in obj) && // no DOM node should be considered an array-like\n // a 'select' element has 'length' and 'item' properties on IE8\n typeof obj.nodeType != 'number' && ( // a real array\n Array.isArray(obj) || // arguments\n 'callee' in obj || // HTMLCollection/NodeList\n 'item' in obj)\n );\n}\n/**\n * Ensure that the argument is an array by wrapping it in an array if it is not.\n * Creates a copy of the argument if it is already an array.\n *\n * This is mostly useful idiomatically:\n *\n * var createArrayFromMixed = require('createArrayFromMixed');\n *\n * function takesOneOrMoreThings(things) {\n * things = createArrayFromMixed(things);\n * ...\n * }\n *\n * This allows you to treat `things' as an array, but accept scalars in the API.\n *\n * If you need to convert an array-like object, like `arguments`, into an array\n * use toArray instead.\n *\n * @param {*} obj\n * @return {array}\n */\n\n\nfunction createArrayFromMixed(obj) {\n if (!hasArrayNature(obj)) {\n return [obj];\n } else if (Array.isArray(obj)) {\n return obj.slice();\n } else {\n return toArray(obj);\n }\n}\n\nmodule.exports = createArrayFromMixed;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDOMIDOperations\n */\n'use strict';\n\nvar DOMChildrenOperations = require('./DOMChildrenOperations');\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar ReactPerf = require('./ReactPerf');\n/**\n * Operations used to process updates to DOM nodes.\n */\n\n\nvar ReactDOMIDOperations = {\n /**\n * Updates a component's children by processing a series of updates.\n *\n * @param {array<object>} updates List of update configurations.\n * @internal\n */\n dangerouslyProcessChildrenUpdates: function dangerouslyProcessChildrenUpdates(parentInst, updates) {\n var node = ReactDOMComponentTree.getNodeFromInstance(parentInst);\n DOMChildrenOperations.processUpdates(node, updates);\n }\n};\nReactPerf.measureMethods(ReactDOMIDOperations, 'ReactDOMIDOperations', {\n dangerouslyProcessChildrenUpdates: 'dangerouslyProcessChildrenUpdates'\n});\nmodule.exports = ReactDOMIDOperations;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDOMComponent\n */\n\n/* global hasOwnProperty:true */\n'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar _assign = require('object-assign');\n\nvar AutoFocusUtils = require('./AutoFocusUtils');\n\nvar CSSPropertyOperations = require('./CSSPropertyOperations');\n\nvar DOMLazyTree = require('./DOMLazyTree');\n\nvar DOMNamespaces = require('./DOMNamespaces');\n\nvar DOMProperty = require('./DOMProperty');\n\nvar DOMPropertyOperations = require('./DOMPropertyOperations');\n\nvar EventConstants = require('./EventConstants');\n\nvar EventPluginHub = require('./EventPluginHub');\n\nvar EventPluginRegistry = require('./EventPluginRegistry');\n\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\n\nvar ReactComponentBrowserEnvironment = require('./ReactComponentBrowserEnvironment');\n\nvar ReactDOMButton = require('./ReactDOMButton');\n\nvar ReactDOMComponentFlags = require('./ReactDOMComponentFlags');\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar ReactDOMInput = require('./ReactDOMInput');\n\nvar ReactDOMOption = require('./ReactDOMOption');\n\nvar ReactDOMSelect = require('./ReactDOMSelect');\n\nvar ReactDOMTextarea = require('./ReactDOMTextarea');\n\nvar ReactMultiChild = require('./ReactMultiChild');\n\nvar ReactPerf = require('./ReactPerf');\n\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar isEventSupported = require('./isEventSupported');\n\nvar keyOf = require('fbjs/lib/keyOf');\n\nvar shallowEqual = require('fbjs/lib/shallowEqual');\n\nvar validateDOMNesting = require('./validateDOMNesting');\n\nvar warning = require('fbjs/lib/warning');\n\nvar Flags = ReactDOMComponentFlags;\nvar deleteListener = EventPluginHub.deleteListener;\nvar getNode = ReactDOMComponentTree.getNodeFromInstance;\nvar listenTo = ReactBrowserEventEmitter.listenTo;\nvar registrationNameModules = EventPluginRegistry.registrationNameModules; // For quickly matching children type, to test if can be treated as content.\n\nvar CONTENT_TYPES = {\n 'string': true,\n 'number': true\n};\nvar STYLE = keyOf({\n style: null\n});\nvar HTML = keyOf({\n __html: null\n});\nvar RESERVED_PROPS = {\n children: null,\n dangerouslySetInnerHTML: null,\n suppressContentEditableWarning: null\n};\n\nfunction getDeclarationErrorAddendum(internalInstance) {\n if (internalInstance) {\n var owner = internalInstance._currentElement._owner || null;\n\n if (owner) {\n var name = owner.getName();\n\n if (name) {\n return ' This DOM node was rendered by `' + name + '`.';\n }\n }\n }\n\n return '';\n}\n\nfunction friendlyStringify(obj) {\n if (_typeof(obj) === 'object') {\n if (Array.isArray(obj)) {\n return '[' + obj.map(friendlyStringify).join(', ') + ']';\n } else {\n var pairs = [];\n\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var keyEscaped = /^[a-z$_][\\w$_]*$/i.test(key) ? key : JSON.stringify(key);\n pairs.push(keyEscaped + ': ' + friendlyStringify(obj[key]));\n }\n }\n\n return '{' + pairs.join(', ') + '}';\n }\n } else if (typeof obj === 'string') {\n return JSON.stringify(obj);\n } else if (typeof obj === 'function') {\n return '[function object]';\n } // Differs from JSON.stringify in that undefined because undefined and that\n // inf and nan don't become null\n\n\n return String(obj);\n}\n\nvar styleMutationWarning = {};\n\nfunction checkAndWarnForMutatedStyle(style1, style2, component) {\n if (style1 == null || style2 == null) {\n return;\n }\n\n if (shallowEqual(style1, style2)) {\n return;\n }\n\n var componentName = component._tag;\n var owner = component._currentElement._owner;\n var ownerName;\n\n if (owner) {\n ownerName = owner.getName();\n }\n\n var hash = ownerName + '|' + componentName;\n\n if (styleMutationWarning.hasOwnProperty(hash)) {\n return;\n }\n\n styleMutationWarning[hash] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, '`%s` was passed a style object that has previously been mutated. ' + 'Mutating `style` is deprecated. Consider cloning it beforehand. Check ' + 'the `render` %s. Previous style: %s. Mutated style: %s.', componentName, owner ? 'of `' + ownerName + '`' : 'using <' + componentName + '>', friendlyStringify(style1), friendlyStringify(style2)) : void 0;\n}\n/**\n * @param {object} component\n * @param {?object} props\n */\n\n\nfunction assertValidProps(component, props) {\n if (!props) {\n return;\n } // Note the use of `==` which checks for null or undefined.\n\n\n if (voidElementTags[component._tag]) {\n !(props.children == null && props.dangerouslySetInnerHTML == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s is a void element tag and must not have `children` or ' + 'use `props.dangerouslySetInnerHTML`.%s', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : invariant(false) : void 0;\n }\n\n if (props.dangerouslySetInnerHTML != null) {\n !(props.children == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Can only set one of `children` or `props.dangerouslySetInnerHTML`.') : invariant(false) : void 0;\n !(_typeof(props.dangerouslySetInnerHTML) === 'object' && HTML in props.dangerouslySetInnerHTML) ? process.env.NODE_ENV !== 'production' ? invariant(false, '`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. ' + 'Please visit https://fb.me/react-invariant-dangerously-set-inner-html ' + 'for more information.') : invariant(false) : void 0;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(props.innerHTML == null, 'Directly setting property `innerHTML` is not permitted. ' + 'For more information, lookup documentation on `dangerouslySetInnerHTML`.') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(props.suppressContentEditableWarning || !props.contentEditable || props.children == null, 'A component is `contentEditable` and contains `children` managed by ' + 'React. It is now your responsibility to guarantee that none of ' + 'those nodes are unexpectedly modified or duplicated. This is ' + 'probably not intentional.') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(props.onFocusIn == null && props.onFocusOut == null, 'React uses onFocus and onBlur instead of onFocusIn and onFocusOut. ' + 'All React events are normalized to bubble, so onFocusIn and onFocusOut ' + 'are not needed/supported by React.') : void 0;\n }\n\n !(props.style == null || _typeof(props.style) === 'object') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'The `style` prop expects a mapping from style properties to values, ' + 'not a string. For example, style={{marginRight: spacing + \\'em\\'}} when ' + 'using JSX.%s', getDeclarationErrorAddendum(component)) : invariant(false) : void 0;\n}\n\nfunction enqueuePutListener(inst, registrationName, listener, transaction) {\n if (process.env.NODE_ENV !== 'production') {\n // IE8 has no API for event capturing and the `onScroll` event doesn't\n // bubble.\n process.env.NODE_ENV !== 'production' ? warning(registrationName !== 'onScroll' || isEventSupported('scroll', true), 'This browser doesn\\'t support the `onScroll` event') : void 0;\n }\n\n var containerInfo = inst._nativeContainerInfo;\n var doc = containerInfo._ownerDocument;\n\n if (!doc) {\n // Server rendering.\n return;\n }\n\n listenTo(registrationName, doc);\n transaction.getReactMountReady().enqueue(putListener, {\n inst: inst,\n registrationName: registrationName,\n listener: listener\n });\n}\n\nfunction putListener() {\n var listenerToPut = this;\n EventPluginHub.putListener(listenerToPut.inst, listenerToPut.registrationName, listenerToPut.listener);\n}\n\nfunction optionPostMount() {\n var inst = this;\n ReactDOMOption.postMountWrapper(inst);\n} // There are so many media events, it makes sense to just\n// maintain a list rather than create a `trapBubbledEvent` for each\n\n\nvar mediaEvents = {\n topAbort: 'abort',\n topCanPlay: 'canplay',\n topCanPlayThrough: 'canplaythrough',\n topDurationChange: 'durationchange',\n topEmptied: 'emptied',\n topEncrypted: 'encrypted',\n topEnded: 'ended',\n topError: 'error',\n topLoadedData: 'loadeddata',\n topLoadedMetadata: 'loadedmetadata',\n topLoadStart: 'loadstart',\n topPause: 'pause',\n topPlay: 'play',\n topPlaying: 'playing',\n topProgress: 'progress',\n topRateChange: 'ratechange',\n topSeeked: 'seeked',\n topSeeking: 'seeking',\n topStalled: 'stalled',\n topSuspend: 'suspend',\n topTimeUpdate: 'timeupdate',\n topVolumeChange: 'volumechange',\n topWaiting: 'waiting'\n};\n\nfunction trapBubbledEventsLocal() {\n var inst = this; // If a component renders to null or if another component fatals and causes\n // the state of the tree to be corrupted, `node` here can be null.\n\n !inst._rootNodeID ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Must be mounted to trap events') : invariant(false) : void 0;\n var node = getNode(inst);\n !node ? process.env.NODE_ENV !== 'production' ? invariant(false, 'trapBubbledEvent(...): Requires node to be rendered.') : invariant(false) : void 0;\n\n switch (inst._tag) {\n case 'iframe':\n case 'object':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent(EventConstants.topLevelTypes.topLoad, 'load', node)];\n break;\n\n case 'video':\n case 'audio':\n inst._wrapperState.listeners = []; // Create listener for each media event\n\n for (var event in mediaEvents) {\n if (mediaEvents.hasOwnProperty(event)) {\n inst._wrapperState.listeners.push(ReactBrowserEventEmitter.trapBubbledEvent(EventConstants.topLevelTypes[event], mediaEvents[event], node));\n }\n }\n\n break;\n\n case 'img':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent(EventConstants.topLevelTypes.topError, 'error', node), ReactBrowserEventEmitter.trapBubbledEvent(EventConstants.topLevelTypes.topLoad, 'load', node)];\n break;\n\n case 'form':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent(EventConstants.topLevelTypes.topReset, 'reset', node), ReactBrowserEventEmitter.trapBubbledEvent(EventConstants.topLevelTypes.topSubmit, 'submit', node)];\n break;\n\n case 'input':\n case 'select':\n case 'textarea':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent(EventConstants.topLevelTypes.topInvalid, 'invalid', node)];\n break;\n }\n}\n\nfunction postUpdateSelectWrapper() {\n ReactDOMSelect.postUpdateWrapper(this);\n} // For HTML, certain tags should omit their close tag. We keep a whitelist for\n// those special-case tags.\n\n\nvar omittedCloseTags = {\n 'area': true,\n 'base': true,\n 'br': true,\n 'col': true,\n 'embed': true,\n 'hr': true,\n 'img': true,\n 'input': true,\n 'keygen': true,\n 'link': true,\n 'meta': true,\n 'param': true,\n 'source': true,\n 'track': true,\n 'wbr': true\n}; // NOTE: menuitem's close tag should be omitted, but that causes problems.\n\nvar newlineEatingTags = {\n 'listing': true,\n 'pre': true,\n 'textarea': true\n}; // For HTML, certain tags cannot have children. This has the same purpose as\n// `omittedCloseTags` except that `menuitem` should still have its closing tag.\n\nvar voidElementTags = _assign({\n 'menuitem': true\n}, omittedCloseTags); // We accept any tag to be rendered but since this gets injected into arbitrary\n// HTML, we want to make sure that it's a safe tag.\n// http://www.w3.org/TR/REC-xml/#NT-Name\n\n\nvar VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/; // Simplified subset\n\nvar validatedTagCache = {};\nvar hasOwnProperty = {}.hasOwnProperty;\n\nfunction validateDangerousTag(tag) {\n if (!hasOwnProperty.call(validatedTagCache, tag)) {\n !VALID_TAG_REGEX.test(tag) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Invalid tag: %s', tag) : invariant(false) : void 0;\n validatedTagCache[tag] = true;\n }\n}\n\nfunction isCustomComponent(tagName, props) {\n return tagName.indexOf('-') >= 0 || props.is != null;\n}\n\nvar globalIdCounter = 1;\n/**\n * Creates a new React class that is idempotent and capable of containing other\n * React components. It accepts event listeners and DOM properties that are\n * valid according to `DOMProperty`.\n *\n * - Event listeners: `onClick`, `onMouseDown`, etc.\n * - DOM properties: `className`, `name`, `title`, etc.\n *\n * The `style` property functions differently from the DOM API. It accepts an\n * object mapping of style properties to values.\n *\n * @constructor ReactDOMComponent\n * @extends ReactMultiChild\n */\n\nfunction ReactDOMComponent(element) {\n var tag = element.type;\n validateDangerousTag(tag);\n this._currentElement = element;\n this._tag = tag.toLowerCase();\n this._namespaceURI = null;\n this._renderedChildren = null;\n this._previousStyle = null;\n this._previousStyleCopy = null;\n this._nativeNode = null;\n this._nativeParent = null;\n this._rootNodeID = null;\n this._domID = null;\n this._nativeContainerInfo = null;\n this._wrapperState = null;\n this._topLevelWrapper = null;\n this._flags = 0;\n\n if (process.env.NODE_ENV !== 'production') {\n this._ancestorInfo = null;\n }\n}\n\nReactDOMComponent.displayName = 'ReactDOMComponent';\nReactDOMComponent.Mixin = {\n /**\n * Generates root tag markup then recurses. This method has side effects and\n * is not idempotent.\n *\n * @internal\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?ReactDOMComponent} the containing DOM component instance\n * @param {?object} info about the native container\n * @param {object} context\n * @return {string} The computed markup.\n */\n mountComponent: function mountComponent(transaction, nativeParent, nativeContainerInfo, context) {\n this._rootNodeID = globalIdCounter++;\n this._domID = nativeContainerInfo._idCounter++;\n this._nativeParent = nativeParent;\n this._nativeContainerInfo = nativeContainerInfo;\n var props = this._currentElement.props;\n\n switch (this._tag) {\n case 'iframe':\n case 'object':\n case 'img':\n case 'form':\n case 'video':\n case 'audio':\n this._wrapperState = {\n listeners: null\n };\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n\n case 'button':\n props = ReactDOMButton.getNativeProps(this, props, nativeParent);\n break;\n\n case 'input':\n ReactDOMInput.mountWrapper(this, props, nativeParent);\n props = ReactDOMInput.getNativeProps(this, props);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n\n case 'option':\n ReactDOMOption.mountWrapper(this, props, nativeParent);\n props = ReactDOMOption.getNativeProps(this, props);\n break;\n\n case 'select':\n ReactDOMSelect.mountWrapper(this, props, nativeParent);\n props = ReactDOMSelect.getNativeProps(this, props);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n\n case 'textarea':\n ReactDOMTextarea.mountWrapper(this, props, nativeParent);\n props = ReactDOMTextarea.getNativeProps(this, props);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n }\n\n assertValidProps(this, props); // We create tags in the namespace of their parent container, except HTML\n // tags get no namespace.\n\n var namespaceURI;\n var parentTag;\n\n if (nativeParent != null) {\n namespaceURI = nativeParent._namespaceURI;\n parentTag = nativeParent._tag;\n } else if (nativeContainerInfo._tag) {\n namespaceURI = nativeContainerInfo._namespaceURI;\n parentTag = nativeContainerInfo._tag;\n }\n\n if (namespaceURI == null || namespaceURI === DOMNamespaces.svg && parentTag === 'foreignobject') {\n namespaceURI = DOMNamespaces.html;\n }\n\n if (namespaceURI === DOMNamespaces.html) {\n if (this._tag === 'svg') {\n namespaceURI = DOMNamespaces.svg;\n } else if (this._tag === 'math') {\n namespaceURI = DOMNamespaces.mathml;\n }\n }\n\n this._namespaceURI = namespaceURI;\n\n if (process.env.NODE_ENV !== 'production') {\n var parentInfo;\n\n if (nativeParent != null) {\n parentInfo = nativeParent._ancestorInfo;\n } else if (nativeContainerInfo._tag) {\n parentInfo = nativeContainerInfo._ancestorInfo;\n }\n\n if (parentInfo) {\n // parentInfo should always be present except for the top-level\n // component when server rendering\n validateDOMNesting(this._tag, this, parentInfo);\n }\n\n this._ancestorInfo = validateDOMNesting.updatedAncestorInfo(parentInfo, this._tag, this);\n }\n\n var mountImage;\n\n if (transaction.useCreateElement) {\n var ownerDocument = nativeContainerInfo._ownerDocument;\n var el;\n\n if (namespaceURI === DOMNamespaces.html) {\n if (this._tag === 'script') {\n // Create the script via .innerHTML so its \"parser-inserted\" flag is\n // set to true and it does not execute\n var div = ownerDocument.createElement('div');\n var type = this._currentElement.type;\n div.innerHTML = '<' + type + '></' + type + '>';\n el = div.removeChild(div.firstChild);\n } else {\n el = ownerDocument.createElement(this._currentElement.type);\n }\n } else {\n el = ownerDocument.createElementNS(namespaceURI, this._currentElement.type);\n }\n\n ReactDOMComponentTree.precacheNode(this, el);\n this._flags |= Flags.hasCachedChildNodes;\n\n if (!this._nativeParent) {\n DOMPropertyOperations.setAttributeForRoot(el);\n }\n\n this._updateDOMProperties(null, props, transaction);\n\n var lazyTree = DOMLazyTree(el);\n\n this._createInitialChildren(transaction, props, context, lazyTree);\n\n mountImage = lazyTree;\n } else {\n var tagOpen = this._createOpenTagMarkupAndPutListeners(transaction, props);\n\n var tagContent = this._createContentMarkup(transaction, props, context);\n\n if (!tagContent && omittedCloseTags[this._tag]) {\n mountImage = tagOpen + '/>';\n } else {\n mountImage = tagOpen + '>' + tagContent + '</' + this._currentElement.type + '>';\n }\n }\n\n switch (this._tag) {\n case 'button':\n case 'input':\n case 'select':\n case 'textarea':\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n\n break;\n\n case 'option':\n transaction.getReactMountReady().enqueue(optionPostMount, this);\n }\n\n return mountImage;\n },\n\n /**\n * Creates markup for the open tag and all attributes.\n *\n * This method has side effects because events get registered.\n *\n * Iterating over object properties is faster than iterating over arrays.\n * @see http://jsperf.com/obj-vs-arr-iteration\n *\n * @private\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} props\n * @return {string} Markup of opening tag.\n */\n _createOpenTagMarkupAndPutListeners: function _createOpenTagMarkupAndPutListeners(transaction, props) {\n var ret = '<' + this._currentElement.type;\n\n for (var propKey in props) {\n if (!props.hasOwnProperty(propKey)) {\n continue;\n }\n\n var propValue = props[propKey];\n\n if (propValue == null) {\n continue;\n }\n\n if (registrationNameModules.hasOwnProperty(propKey)) {\n if (propValue) {\n enqueuePutListener(this, propKey, propValue, transaction);\n }\n } else {\n if (propKey === STYLE) {\n if (propValue) {\n if (process.env.NODE_ENV !== 'production') {\n // See `_updateDOMProperties`. style block\n this._previousStyle = propValue;\n }\n\n propValue = this._previousStyleCopy = _assign({}, props.style);\n }\n\n propValue = CSSPropertyOperations.createMarkupForStyles(propValue, this);\n }\n\n var markup = null;\n\n if (this._tag != null && isCustomComponent(this._tag, props)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n markup = DOMPropertyOperations.createMarkupForCustomAttribute(propKey, propValue);\n }\n } else {\n markup = DOMPropertyOperations.createMarkupForProperty(propKey, propValue);\n }\n\n if (markup) {\n ret += ' ' + markup;\n }\n }\n } // For static pages, no need to put React ID and checksum. Saves lots of\n // bytes.\n\n\n if (transaction.renderToStaticMarkup) {\n return ret;\n }\n\n if (!this._nativeParent) {\n ret += ' ' + DOMPropertyOperations.createMarkupForRoot();\n }\n\n ret += ' ' + DOMPropertyOperations.createMarkupForID(this._domID);\n return ret;\n },\n\n /**\n * Creates markup for the content between the tags.\n *\n * @private\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} props\n * @param {object} context\n * @return {string} Content markup.\n */\n _createContentMarkup: function _createContentMarkup(transaction, props, context) {\n var ret = ''; // Intentional use of != to avoid catching zero/false.\n\n var innerHTML = props.dangerouslySetInnerHTML;\n\n if (innerHTML != null) {\n if (innerHTML.__html != null) {\n ret = innerHTML.__html;\n }\n } else {\n var contentToUse = CONTENT_TYPES[_typeof(props.children)] ? props.children : null;\n var childrenToUse = contentToUse != null ? null : props.children;\n\n if (contentToUse != null) {\n // TODO: Validate that text is allowed as a child of this node\n ret = escapeTextContentForBrowser(contentToUse);\n } else if (childrenToUse != null) {\n var mountImages = this.mountChildren(childrenToUse, transaction, context);\n ret = mountImages.join('');\n }\n }\n\n if (newlineEatingTags[this._tag] && ret.charAt(0) === '\\n') {\n // text/html ignores the first character in these tags if it's a newline\n // Prefer to break application/xml over text/html (for now) by adding\n // a newline specifically to get eaten by the parser. (Alternately for\n // textareas, replacing \"^\\n\" with \"\\r\\n\" doesn't get eaten, and the first\n // \\r is normalized out by HTMLTextAreaElement#value.)\n // See: <http://www.w3.org/TR/html-polyglot/#newlines-in-textarea-and-pre>\n // See: <http://www.w3.org/TR/html5/syntax.html#element-restrictions>\n // See: <http://www.w3.org/TR/html5/syntax.html#newlines>\n // See: Parsing of \"textarea\" \"listing\" and \"pre\" elements\n // from <http://www.w3.org/TR/html5/syntax.html#parsing-main-inbody>\n return '\\n' + ret;\n } else {\n return ret;\n }\n },\n _createInitialChildren: function _createInitialChildren(transaction, props, context, lazyTree) {\n // Intentional use of != to avoid catching zero/false.\n var innerHTML = props.dangerouslySetInnerHTML;\n\n if (innerHTML != null) {\n if (innerHTML.__html != null) {\n DOMLazyTree.queueHTML(lazyTree, innerHTML.__html);\n }\n } else {\n var contentToUse = CONTENT_TYPES[_typeof(props.children)] ? props.children : null;\n var childrenToUse = contentToUse != null ? null : props.children;\n\n if (contentToUse != null) {\n // TODO: Validate that text is allowed as a child of this node\n DOMLazyTree.queueText(lazyTree, contentToUse);\n } else if (childrenToUse != null) {\n var mountImages = this.mountChildren(childrenToUse, transaction, context);\n\n for (var i = 0; i < mountImages.length; i++) {\n DOMLazyTree.queueChild(lazyTree, mountImages[i]);\n }\n }\n }\n },\n\n /**\n * Receives a next element and updates the component.\n *\n * @internal\n * @param {ReactElement} nextElement\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} context\n */\n receiveComponent: function receiveComponent(nextElement, transaction, context) {\n var prevElement = this._currentElement;\n this._currentElement = nextElement;\n this.updateComponent(transaction, prevElement, nextElement, context);\n },\n\n /**\n * Updates a native DOM component after it has already been allocated and\n * attached to the DOM. Reconciles the root DOM node, then recurses.\n *\n * @param {ReactReconcileTransaction} transaction\n * @param {ReactElement} prevElement\n * @param {ReactElement} nextElement\n * @internal\n * @overridable\n */\n updateComponent: function updateComponent(transaction, prevElement, nextElement, context) {\n var lastProps = prevElement.props;\n var nextProps = this._currentElement.props;\n\n switch (this._tag) {\n case 'button':\n lastProps = ReactDOMButton.getNativeProps(this, lastProps);\n nextProps = ReactDOMButton.getNativeProps(this, nextProps);\n break;\n\n case 'input':\n ReactDOMInput.updateWrapper(this);\n lastProps = ReactDOMInput.getNativeProps(this, lastProps);\n nextProps = ReactDOMInput.getNativeProps(this, nextProps);\n break;\n\n case 'option':\n lastProps = ReactDOMOption.getNativeProps(this, lastProps);\n nextProps = ReactDOMOption.getNativeProps(this, nextProps);\n break;\n\n case 'select':\n lastProps = ReactDOMSelect.getNativeProps(this, lastProps);\n nextProps = ReactDOMSelect.getNativeProps(this, nextProps);\n break;\n\n case 'textarea':\n ReactDOMTextarea.updateWrapper(this);\n lastProps = ReactDOMTextarea.getNativeProps(this, lastProps);\n nextProps = ReactDOMTextarea.getNativeProps(this, nextProps);\n break;\n }\n\n assertValidProps(this, nextProps);\n\n this._updateDOMProperties(lastProps, nextProps, transaction);\n\n this._updateDOMChildren(lastProps, nextProps, transaction, context);\n\n if (this._tag === 'select') {\n // <select> value update needs to occur after <option> children\n // reconciliation\n transaction.getReactMountReady().enqueue(postUpdateSelectWrapper, this);\n }\n },\n\n /**\n * Reconciles the properties by detecting differences in property values and\n * updating the DOM as necessary. This function is probably the single most\n * critical path for performance optimization.\n *\n * TODO: Benchmark whether checking for changed values in memory actually\n * improves performance (especially statically positioned elements).\n * TODO: Benchmark the effects of putting this at the top since 99% of props\n * do not change for a given reconciliation.\n * TODO: Benchmark areas that can be improved with caching.\n *\n * @private\n * @param {object} lastProps\n * @param {object} nextProps\n * @param {?DOMElement} node\n */\n _updateDOMProperties: function _updateDOMProperties(lastProps, nextProps, transaction) {\n var propKey;\n var styleName;\n var styleUpdates;\n\n for (propKey in lastProps) {\n if (nextProps.hasOwnProperty(propKey) || !lastProps.hasOwnProperty(propKey) || lastProps[propKey] == null) {\n continue;\n }\n\n if (propKey === STYLE) {\n var lastStyle = this._previousStyleCopy;\n\n for (styleName in lastStyle) {\n if (lastStyle.hasOwnProperty(styleName)) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = '';\n }\n }\n\n this._previousStyleCopy = null;\n } else if (registrationNameModules.hasOwnProperty(propKey)) {\n if (lastProps[propKey]) {\n // Only call deleteListener if there was a listener previously or\n // else willDeleteListener gets called when there wasn't actually a\n // listener (e.g., onClick={null})\n deleteListener(this, propKey);\n }\n } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {\n DOMPropertyOperations.deleteValueForProperty(getNode(this), propKey);\n }\n }\n\n for (propKey in nextProps) {\n var nextProp = nextProps[propKey];\n var lastProp = propKey === STYLE ? this._previousStyleCopy : lastProps != null ? lastProps[propKey] : undefined;\n\n if (!nextProps.hasOwnProperty(propKey) || nextProp === lastProp || nextProp == null && lastProp == null) {\n continue;\n }\n\n if (propKey === STYLE) {\n if (nextProp) {\n if (process.env.NODE_ENV !== 'production') {\n checkAndWarnForMutatedStyle(this._previousStyleCopy, this._previousStyle, this);\n this._previousStyle = nextProp;\n }\n\n nextProp = this._previousStyleCopy = _assign({}, nextProp);\n } else {\n this._previousStyleCopy = null;\n }\n\n if (lastProp) {\n // Unset styles on `lastProp` but not on `nextProp`.\n for (styleName in lastProp) {\n if (lastProp.hasOwnProperty(styleName) && (!nextProp || !nextProp.hasOwnProperty(styleName))) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = '';\n }\n } // Update styles that changed since `lastProp`.\n\n\n for (styleName in nextProp) {\n if (nextProp.hasOwnProperty(styleName) && lastProp[styleName] !== nextProp[styleName]) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = nextProp[styleName];\n }\n }\n } else {\n // Relies on `updateStylesByID` not mutating `styleUpdates`.\n styleUpdates = nextProp;\n }\n } else if (registrationNameModules.hasOwnProperty(propKey)) {\n if (nextProp) {\n enqueuePutListener(this, propKey, nextProp, transaction);\n } else if (lastProp) {\n deleteListener(this, propKey);\n }\n } else if (isCustomComponent(this._tag, nextProps)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n DOMPropertyOperations.setValueForAttribute(getNode(this), propKey, nextProp);\n }\n } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {\n var node = getNode(this); // If we're updating to null or undefined, we should remove the property\n // from the DOM node instead of inadvertently setting to a string. This\n // brings us in line with the same behavior we have on initial render.\n\n if (nextProp != null) {\n DOMPropertyOperations.setValueForProperty(node, propKey, nextProp);\n } else {\n DOMPropertyOperations.deleteValueForProperty(node, propKey);\n }\n }\n }\n\n if (styleUpdates) {\n CSSPropertyOperations.setValueForStyles(getNode(this), styleUpdates, this);\n }\n },\n\n /**\n * Reconciles the children with the various properties that affect the\n * children content.\n *\n * @param {object} lastProps\n * @param {object} nextProps\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n */\n _updateDOMChildren: function _updateDOMChildren(lastProps, nextProps, transaction, context) {\n var lastContent = CONTENT_TYPES[_typeof(lastProps.children)] ? lastProps.children : null;\n var nextContent = CONTENT_TYPES[_typeof(nextProps.children)] ? nextProps.children : null;\n var lastHtml = lastProps.dangerouslySetInnerHTML && lastProps.dangerouslySetInnerHTML.__html;\n var nextHtml = nextProps.dangerouslySetInnerHTML && nextProps.dangerouslySetInnerHTML.__html; // Note the use of `!=` which checks for null or undefined.\n\n var lastChildren = lastContent != null ? null : lastProps.children;\n var nextChildren = nextContent != null ? null : nextProps.children; // If we're switching from children to content/html or vice versa, remove\n // the old content\n\n var lastHasContentOrHtml = lastContent != null || lastHtml != null;\n var nextHasContentOrHtml = nextContent != null || nextHtml != null;\n\n if (lastChildren != null && nextChildren == null) {\n this.updateChildren(null, transaction, context);\n } else if (lastHasContentOrHtml && !nextHasContentOrHtml) {\n this.updateTextContent('');\n }\n\n if (nextContent != null) {\n if (lastContent !== nextContent) {\n this.updateTextContent('' + nextContent);\n }\n } else if (nextHtml != null) {\n if (lastHtml !== nextHtml) {\n this.updateMarkup('' + nextHtml);\n }\n } else if (nextChildren != null) {\n this.updateChildren(nextChildren, transaction, context);\n }\n },\n getNativeNode: function getNativeNode() {\n return getNode(this);\n },\n\n /**\n * Destroys all event registrations for this instance. Does not remove from\n * the DOM. That must be done by the parent.\n *\n * @internal\n */\n unmountComponent: function unmountComponent(safely) {\n switch (this._tag) {\n case 'iframe':\n case 'object':\n case 'img':\n case 'form':\n case 'video':\n case 'audio':\n var listeners = this._wrapperState.listeners;\n\n if (listeners) {\n for (var i = 0; i < listeners.length; i++) {\n listeners[i].remove();\n }\n }\n\n break;\n\n case 'html':\n case 'head':\n case 'body':\n /**\n * Components like <html> <head> and <body> can't be removed or added\n * easily in a cross-browser way, however it's valuable to be able to\n * take advantage of React's reconciliation for styling and <title>\n * management. So we just document it and throw in dangerous cases.\n */\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, '<%s> tried to unmount. Because of cross-browser quirks it is ' + 'impossible to unmount some top-level components (eg <html>, ' + '<head>, and <body>) reliably and efficiently. To fix this, have a ' + 'single top-level component that never unmounts render these ' + 'elements.', this._tag) : invariant(false) : void 0;\n break;\n }\n\n this.unmountChildren(safely);\n ReactDOMComponentTree.uncacheNode(this);\n EventPluginHub.deleteAllListeners(this);\n ReactComponentBrowserEnvironment.unmountIDFromEnvironment(this._rootNodeID);\n this._rootNodeID = null;\n this._domID = null;\n this._wrapperState = null;\n },\n getPublicInstance: function getPublicInstance() {\n return getNode(this);\n }\n};\nReactPerf.measureMethods(ReactDOMComponent.Mixin, 'ReactDOMComponent', {\n mountComponent: 'mountComponent',\n receiveComponent: 'receiveComponent'\n});\n\n_assign(ReactDOMComponent.prototype, ReactDOMComponent.Mixin, ReactMultiChild.Mixin);\n\nmodule.exports = ReactDOMComponent;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule AutoFocusUtils\n */\n'use strict';\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar focusNode = require('fbjs/lib/focusNode');\n\nvar AutoFocusUtils = {\n focusDOMComponent: function focusDOMComponent() {\n focusNode(ReactDOMComponentTree.getNodeFromInstance(this));\n }\n};\nmodule.exports = AutoFocusUtils;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule CSSPropertyOperations\n */\n'use strict';\n\nvar CSSProperty = require('./CSSProperty');\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar ReactPerf = require('./ReactPerf');\n\nvar camelizeStyleName = require('fbjs/lib/camelizeStyleName');\n\nvar dangerousStyleValue = require('./dangerousStyleValue');\n\nvar hyphenateStyleName = require('fbjs/lib/hyphenateStyleName');\n\nvar memoizeStringOnly = require('fbjs/lib/memoizeStringOnly');\n\nvar warning = require('fbjs/lib/warning');\n\nvar processStyleName = memoizeStringOnly(function (styleName) {\n return hyphenateStyleName(styleName);\n});\nvar hasShorthandPropertyBug = false;\nvar styleFloatAccessor = 'cssFloat';\n\nif (ExecutionEnvironment.canUseDOM) {\n var tempStyle = document.createElement('div').style;\n\n try {\n // IE8 throws \"Invalid argument.\" if resetting shorthand style properties.\n tempStyle.font = '';\n } catch (e) {\n hasShorthandPropertyBug = true;\n } // IE8 only supports accessing cssFloat (standard) as styleFloat\n\n\n if (document.documentElement.style.cssFloat === undefined) {\n styleFloatAccessor = 'styleFloat';\n }\n}\n\nif (process.env.NODE_ENV !== 'production') {\n // 'msTransform' is correct, but the other prefixes should be capitalized\n var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/; // style values shouldn't contain a semicolon\n\n var badStyleValueWithSemicolonPattern = /;\\s*$/;\n var warnedStyleNames = {};\n var warnedStyleValues = {};\n var warnedForNaNValue = false;\n\n var warnHyphenatedStyleName = function warnHyphenatedStyleName(name, owner) {\n if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n return;\n }\n\n warnedStyleNames[name] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Unsupported style property %s. Did you mean %s?%s', name, camelizeStyleName(name), checkRenderMessage(owner)) : void 0;\n };\n\n var warnBadVendoredStyleName = function warnBadVendoredStyleName(name, owner) {\n if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n return;\n }\n\n warnedStyleNames[name] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Unsupported vendor-prefixed style property %s. Did you mean %s?%s', name, name.charAt(0).toUpperCase() + name.slice(1), checkRenderMessage(owner)) : void 0;\n };\n\n var warnStyleValueWithSemicolon = function warnStyleValueWithSemicolon(name, value, owner) {\n if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {\n return;\n }\n\n warnedStyleValues[value] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Style property values shouldn\\'t contain a semicolon.%s ' + 'Try \"%s: %s\" instead.', checkRenderMessage(owner), name, value.replace(badStyleValueWithSemicolonPattern, '')) : void 0;\n };\n\n var warnStyleValueIsNaN = function warnStyleValueIsNaN(name, value, owner) {\n if (warnedForNaNValue) {\n return;\n }\n\n warnedForNaNValue = true;\n process.env.NODE_ENV !== 'production' ? warning(false, '`NaN` is an invalid value for the `%s` css style property.%s', name, checkRenderMessage(owner)) : void 0;\n };\n\n var checkRenderMessage = function checkRenderMessage(owner) {\n if (owner) {\n var name = owner.getName();\n\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n\n return '';\n };\n /**\n * @param {string} name\n * @param {*} value\n * @param {ReactDOMComponent} component\n */\n\n\n var warnValidStyle = function warnValidStyle(name, value, component) {\n var owner;\n\n if (component) {\n owner = component._currentElement._owner;\n }\n\n if (name.indexOf('-') > -1) {\n warnHyphenatedStyleName(name, owner);\n } else if (badVendoredStyleNamePattern.test(name)) {\n warnBadVendoredStyleName(name, owner);\n } else if (badStyleValueWithSemicolonPattern.test(value)) {\n warnStyleValueWithSemicolon(name, value, owner);\n }\n\n if (typeof value === 'number' && isNaN(value)) {\n warnStyleValueIsNaN(name, value, owner);\n }\n };\n}\n/**\n * Operations for dealing with CSS properties.\n */\n\n\nvar CSSPropertyOperations = {\n /**\n * Serializes a mapping of style properties for use as inline styles:\n *\n * > createMarkupForStyles({width: '200px', height: 0})\n * \"width:200px;height:0;\"\n *\n * Undefined values are ignored so that declarative programming is easier.\n * The result should be HTML-escaped before insertion into the DOM.\n *\n * @param {object} styles\n * @param {ReactDOMComponent} component\n * @return {?string}\n */\n createMarkupForStyles: function createMarkupForStyles(styles, component) {\n var serialized = '';\n\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n\n var styleValue = styles[styleName];\n\n if (process.env.NODE_ENV !== 'production') {\n warnValidStyle(styleName, styleValue, component);\n }\n\n if (styleValue != null) {\n serialized += processStyleName(styleName) + ':';\n serialized += dangerousStyleValue(styleName, styleValue, component) + ';';\n }\n }\n\n return serialized || null;\n },\n\n /**\n * Sets the value for multiple styles on a node. If a value is specified as\n * '' (empty string), the corresponding style property will be unset.\n *\n * @param {DOMElement} node\n * @param {object} styles\n * @param {ReactDOMComponent} component\n */\n setValueForStyles: function setValueForStyles(node, styles, component) {\n var style = node.style;\n\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n warnValidStyle(styleName, styles[styleName], component);\n }\n\n var styleValue = dangerousStyleValue(styleName, styles[styleName], component);\n\n if (styleName === 'float' || styleName === 'cssFloat') {\n styleName = styleFloatAccessor;\n }\n\n if (styleValue) {\n style[styleName] = styleValue;\n } else {\n var expansion = hasShorthandPropertyBug && CSSProperty.shorthandPropertyExpansions[styleName];\n\n if (expansion) {\n // Shorthand property that IE8 won't like unsetting, so unset each\n // component to placate it\n for (var individualStyleName in expansion) {\n style[individualStyleName] = '';\n }\n } else {\n style[styleName] = '';\n }\n }\n }\n }\n};\nReactPerf.measureMethods(CSSPropertyOperations, 'CSSPropertyOperations', {\n setValueForStyles: 'setValueForStyles'\n});\nmodule.exports = CSSPropertyOperations;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n'use strict';\n\nvar camelize = require('./camelize');\n\nvar msPattern = /^-ms-/;\n/**\n * Camelcases a hyphenated CSS property name, for example:\n *\n * > camelizeStyleName('background-color')\n * < \"backgroundColor\"\n * > camelizeStyleName('-moz-transition')\n * < \"MozTransition\"\n * > camelizeStyleName('-ms-transition')\n * < \"msTransition\"\n *\n * As Andi Smith suggests\n * (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix\n * is converted to lowercase `ms`.\n *\n * @param {string} string\n * @return {string}\n */\n\nfunction camelizeStyleName(string) {\n return camelize(string.replace(msPattern, 'ms-'));\n}\n\nmodule.exports = camelizeStyleName;","\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\nvar _hyphenPattern = /-(.)/g;\n/**\n * Camelcases a hyphenated string, for example:\n *\n * > camelize('background-color')\n * < \"backgroundColor\"\n *\n * @param {string} string\n * @return {string}\n */\n\nfunction camelize(string) {\n return string.replace(_hyphenPattern, function (_, character) {\n return character.toUpperCase();\n });\n}\n\nmodule.exports = camelize;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule dangerousStyleValue\n */\n'use strict';\n\nvar CSSProperty = require('./CSSProperty');\n\nvar warning = require('fbjs/lib/warning');\n\nvar isUnitlessNumber = CSSProperty.isUnitlessNumber;\nvar styleWarnings = {};\n/**\n * Convert a value into the proper css writable value. The style name `name`\n * should be logical (no hyphens), as specified\n * in `CSSProperty.isUnitlessNumber`.\n *\n * @param {string} name CSS property name such as `topMargin`.\n * @param {*} value CSS property value such as `10px`.\n * @param {ReactDOMComponent} component\n * @return {string} Normalized style value with dimensions applied.\n */\n\nfunction dangerousStyleValue(name, value, component) {\n // Note that we've removed escapeTextForBrowser() calls here since the\n // whole string will be escaped when the attribute is injected into\n // the markup. If you provide unsafe user data here they can inject\n // arbitrary CSS which may be problematic (I couldn't repro this):\n // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet\n // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/\n // This is not an XSS hole but instead a potential CSS injection issue\n // which has lead to a greater discussion about how we're going to\n // trust URLs moving forward. See #2115901\n var isEmpty = value == null || typeof value === 'boolean' || value === '';\n\n if (isEmpty) {\n return '';\n }\n\n var isNonNumeric = isNaN(value);\n\n if (isNonNumeric || value === 0 || isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name]) {\n return '' + value; // cast to string\n }\n\n if (typeof value === 'string') {\n if (process.env.NODE_ENV !== 'production') {\n if (component) {\n var owner = component._currentElement._owner;\n var ownerName = owner ? owner.getName() : null;\n\n if (ownerName && !styleWarnings[ownerName]) {\n styleWarnings[ownerName] = {};\n }\n\n var warned = false;\n\n if (ownerName) {\n var warnings = styleWarnings[ownerName];\n warned = warnings[name];\n\n if (!warned) {\n warnings[name] = true;\n }\n }\n\n if (!warned) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'a `%s` tag (owner: `%s`) was passed a numeric string value ' + 'for CSS property `%s` (value: `%s`) which will be treated ' + 'as a unitless number in a future version of React.', component._currentElement.type, ownerName || 'unknown', name, value) : void 0;\n }\n }\n }\n\n value = value.trim();\n }\n\n return value + 'px';\n}\n\nmodule.exports = dangerousStyleValue;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n'use strict';\n\nvar hyphenate = require('./hyphenate');\n\nvar msPattern = /^ms-/;\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n * > hyphenateStyleName('backgroundColor')\n * < \"background-color\"\n * > hyphenateStyleName('MozTransition')\n * < \"-moz-transition\"\n * > hyphenateStyleName('msTransition')\n * < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n *\n * @param {string} string\n * @return {string}\n */\n\nfunction hyphenateStyleName(string) {\n return hyphenate(string).replace(msPattern, '-ms-');\n}\n\nmodule.exports = hyphenateStyleName;","'use strict';\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\nvar _uppercasePattern = /([A-Z])/g;\n/**\n * Hyphenates a camelcased string, for example:\n *\n * > hyphenate('backgroundColor')\n * < \"background-color\"\n *\n * For CSS style names, use `hyphenateStyleName` instead which works properly\n * with all vendor prefixes, including `ms`.\n *\n * @param {string} string\n * @return {string}\n */\n\nfunction hyphenate(string) {\n return string.replace(_uppercasePattern, '-$1').toLowerCase();\n}\n\nmodule.exports = hyphenate;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n * @typechecks static-only\n */\n'use strict';\n/**\n * Memoizes the return value of a function that accepts one string argument.\n */\n\nfunction memoizeStringOnly(callback) {\n var cache = {};\n return function (string) {\n if (!cache.hasOwnProperty(string)) {\n cache[string] = callback.call(this, string);\n }\n\n return cache[string];\n };\n}\n\nmodule.exports = memoizeStringOnly;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule DOMNamespaces\n */\n'use strict';\n\nvar DOMNamespaces = {\n html: 'http://www.w3.org/1999/xhtml',\n mathml: 'http://www.w3.org/1998/Math/MathML',\n svg: 'http://www.w3.org/2000/svg'\n};\nmodule.exports = DOMNamespaces;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDOMInstrumentation\n */\n'use strict';\n\nvar ReactDOMDebugTool = require('./ReactDOMDebugTool');\n\nmodule.exports = {\n debugTool: ReactDOMDebugTool\n};","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDOMDebugTool\n */\n'use strict';\n\nvar ReactDOMUnknownPropertyDevtool = require('./ReactDOMUnknownPropertyDevtool');\n\nvar warning = require('fbjs/lib/warning');\n\nvar eventHandlers = [];\nvar handlerDoesThrowForEvent = {};\n\nfunction emitEvent(handlerFunctionName, arg1, arg2, arg3, arg4, arg5) {\n if (process.env.NODE_ENV !== 'production') {\n eventHandlers.forEach(function (handler) {\n try {\n if (handler[handlerFunctionName]) {\n handler[handlerFunctionName](arg1, arg2, arg3, arg4, arg5);\n }\n } catch (e) {\n process.env.NODE_ENV !== 'production' ? warning(!handlerDoesThrowForEvent[handlerFunctionName], 'exception thrown by devtool while handling %s: %s', handlerFunctionName, e.message) : void 0;\n handlerDoesThrowForEvent[handlerFunctionName] = true;\n }\n });\n }\n}\n\nvar ReactDOMDebugTool = {\n addDevtool: function addDevtool(devtool) {\n eventHandlers.push(devtool);\n },\n removeDevtool: function removeDevtool(devtool) {\n for (var i = 0; i < eventHandlers.length; i++) {\n if (eventHandlers[i] === devtool) {\n eventHandlers.splice(i, 1);\n i--;\n }\n }\n },\n onCreateMarkupForProperty: function onCreateMarkupForProperty(name, value) {\n emitEvent('onCreateMarkupForProperty', name, value);\n },\n onSetValueForProperty: function onSetValueForProperty(node, name, value) {\n emitEvent('onSetValueForProperty', node, name, value);\n },\n onDeleteValueForProperty: function onDeleteValueForProperty(node, name) {\n emitEvent('onDeleteValueForProperty', node, name);\n }\n};\nReactDOMDebugTool.addDevtool(ReactDOMUnknownPropertyDevtool);\nmodule.exports = ReactDOMDebugTool;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDOMUnknownPropertyDevtool\n */\n'use strict';\n\nvar DOMProperty = require('./DOMProperty');\n\nvar EventPluginRegistry = require('./EventPluginRegistry');\n\nvar warning = require('fbjs/lib/warning');\n\nif (process.env.NODE_ENV !== 'production') {\n var reactProps = {\n children: true,\n dangerouslySetInnerHTML: true,\n key: true,\n ref: true\n };\n var warnedProperties = {};\n\n var warnUnknownProperty = function warnUnknownProperty(name) {\n if (DOMProperty.properties.hasOwnProperty(name) || DOMProperty.isCustomAttribute(name)) {\n return;\n }\n\n if (reactProps.hasOwnProperty(name) && reactProps[name] || warnedProperties.hasOwnProperty(name) && warnedProperties[name]) {\n return;\n }\n\n warnedProperties[name] = true;\n var lowerCasedName = name.toLowerCase(); // data-* attributes should be lowercase; suggest the lowercase version\n\n var standardName = DOMProperty.isCustomAttribute(lowerCasedName) ? lowerCasedName : DOMProperty.getPossibleStandardName.hasOwnProperty(lowerCasedName) ? DOMProperty.getPossibleStandardName[lowerCasedName] : null; // For now, only warn when we have a suggested correction. This prevents\n // logging too much when using transferPropsTo.\n\n process.env.NODE_ENV !== 'production' ? warning(standardName == null, 'Unknown DOM property %s. Did you mean %s?', name, standardName) : void 0;\n var registrationName = EventPluginRegistry.possibleRegistrationNames.hasOwnProperty(lowerCasedName) ? EventPluginRegistry.possibleRegistrationNames[lowerCasedName] : null;\n process.env.NODE_ENV !== 'production' ? warning(registrationName == null, 'Unknown event handler property %s. Did you mean `%s`?', name, registrationName) : void 0;\n };\n}\n\nvar ReactDOMUnknownPropertyDevtool = {\n onCreateMarkupForProperty: function onCreateMarkupForProperty(name, value) {\n warnUnknownProperty(name);\n },\n onSetValueForProperty: function onSetValueForProperty(node, name, value) {\n warnUnknownProperty(name);\n },\n onDeleteValueForProperty: function onDeleteValueForProperty(node, name) {\n warnUnknownProperty(name);\n }\n};\nmodule.exports = ReactDOMUnknownPropertyDevtool;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule quoteAttributeValueForBrowser\n */\n'use strict';\n\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\n/**\n * Escapes attribute value to prevent scripting attacks.\n *\n * @param {*} value Value to escape.\n * @return {string} An escaped string.\n */\n\n\nfunction quoteAttributeValueForBrowser(value) {\n return '\"' + escapeTextContentForBrowser(value) + '\"';\n}\n\nmodule.exports = quoteAttributeValueForBrowser;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactEventEmitterMixin\n */\n'use strict';\n\nvar EventPluginHub = require('./EventPluginHub');\n\nfunction runEventQueueInBatch(events) {\n EventPluginHub.enqueueEvents(events);\n EventPluginHub.processEventQueue(false);\n}\n\nvar ReactEventEmitterMixin = {\n /**\n * Streams a fired top-level event to `EventPluginHub` where plugins have the\n * opportunity to create `ReactEvent`s to be dispatched.\n */\n handleTopLevel: function handleTopLevel(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var events = EventPluginHub.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);\n runEventQueueInBatch(events);\n }\n};\nmodule.exports = ReactEventEmitterMixin;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule getVendorPrefixedEventName\n */\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n/**\n * Generate a mapping of standard vendor prefixes using the defined style property and event name.\n *\n * @param {string} styleProp\n * @param {string} eventName\n * @returns {object}\n */\n\n\nfunction makePrefixMap(styleProp, eventName) {\n var prefixes = {};\n prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n prefixes['Webkit' + styleProp] = 'webkit' + eventName;\n prefixes['Moz' + styleProp] = 'moz' + eventName;\n prefixes['ms' + styleProp] = 'MS' + eventName;\n prefixes['O' + styleProp] = 'o' + eventName.toLowerCase();\n return prefixes;\n}\n/**\n * A list of event names to a configurable list of vendor prefixes.\n */\n\n\nvar vendorPrefixes = {\n animationend: makePrefixMap('Animation', 'AnimationEnd'),\n animationiteration: makePrefixMap('Animation', 'AnimationIteration'),\n animationstart: makePrefixMap('Animation', 'AnimationStart'),\n transitionend: makePrefixMap('Transition', 'TransitionEnd')\n};\n/**\n * Event names that have already been detected and prefixed (if applicable).\n */\n\nvar prefixedEventNames = {};\n/**\n * Element to check for prefixes on.\n */\n\nvar style = {};\n/**\n * Bootstrap if a DOM exists.\n */\n\nif (ExecutionEnvironment.canUseDOM) {\n style = document.createElement('div').style; // On some platforms, in particular some releases of Android 4.x,\n // the un-prefixed \"animation\" and \"transition\" properties are defined on the\n // style object but the events that fire will still be prefixed, so we need\n // to check if the un-prefixed events are usable, and if not remove them from the map.\n\n if (!('AnimationEvent' in window)) {\n delete vendorPrefixes.animationend.animation;\n delete vendorPrefixes.animationiteration.animation;\n delete vendorPrefixes.animationstart.animation;\n } // Same as above\n\n\n if (!('TransitionEvent' in window)) {\n delete vendorPrefixes.transitionend.transition;\n }\n}\n/**\n * Attempts to determine the correct vendor prefixed event name.\n *\n * @param {string} eventName\n * @returns {string}\n */\n\n\nfunction getVendorPrefixedEventName(eventName) {\n if (prefixedEventNames[eventName]) {\n return prefixedEventNames[eventName];\n } else if (!vendorPrefixes[eventName]) {\n return eventName;\n }\n\n var prefixMap = vendorPrefixes[eventName];\n\n for (var styleProp in prefixMap) {\n if (prefixMap.hasOwnProperty(styleProp) && styleProp in style) {\n return prefixedEventNames[eventName] = prefixMap[styleProp];\n }\n }\n\n return '';\n}\n\nmodule.exports = getVendorPrefixedEventName;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDOMButton\n */\n'use strict';\n\nvar mouseListenerNames = {\n onClick: true,\n onDoubleClick: true,\n onMouseDown: true,\n onMouseMove: true,\n onMouseUp: true,\n onClickCapture: true,\n onDoubleClickCapture: true,\n onMouseDownCapture: true,\n onMouseMoveCapture: true,\n onMouseUpCapture: true\n};\n/**\n * Implements a <button> native component that does not receive mouse events\n * when `disabled` is set.\n */\n\nvar ReactDOMButton = {\n getNativeProps: function getNativeProps(inst, props) {\n if (!props.disabled) {\n return props;\n } // Copy the props, except the mouse listeners\n\n\n var nativeProps = {};\n\n for (var key in props) {\n if (props.hasOwnProperty(key) && !mouseListenerNames[key]) {\n nativeProps[key] = props[key];\n }\n }\n\n return nativeProps;\n }\n};\nmodule.exports = ReactDOMButton;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDOMInput\n */\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar DOMPropertyOperations = require('./DOMPropertyOperations');\n\nvar LinkedValueUtils = require('./LinkedValueUtils');\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar ReactUpdates = require('./ReactUpdates');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnValueLink = false;\nvar didWarnCheckedLink = false;\nvar didWarnValueNull = false;\nvar didWarnValueDefaultValue = false;\nvar didWarnCheckedDefaultChecked = false;\nvar didWarnControlledToUncontrolled = false;\nvar didWarnUncontrolledToControlled = false;\n\nfunction forceUpdateIfMounted() {\n if (this._rootNodeID) {\n // DOM component is still mounted; update\n ReactDOMInput.updateWrapper(this);\n }\n}\n\nfunction warnIfValueIsNull(props) {\n if (props != null && props.value === null && !didWarnValueNull) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`value` prop on `input` should not be null. ' + 'Consider using the empty string to clear the component or `undefined` ' + 'for uncontrolled components.') : void 0;\n didWarnValueNull = true;\n }\n}\n/**\n * Implements an <input> native component that allows setting these optional\n * props: `checked`, `value`, `defaultChecked`, and `defaultValue`.\n *\n * If `checked` or `value` are not supplied (or null/undefined), user actions\n * that affect the checked state or value will trigger updates to the element.\n *\n * If they are supplied (and not null/undefined), the rendered element will not\n * trigger updates to the element. Instead, the props must change in order for\n * the rendered element to be updated.\n *\n * The rendered element will be initialized as unchecked (or `defaultChecked`)\n * with an empty value (or `defaultValue`).\n *\n * @see http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html\n */\n\n\nvar ReactDOMInput = {\n getNativeProps: function getNativeProps(inst, props) {\n var value = LinkedValueUtils.getValue(props);\n var checked = LinkedValueUtils.getChecked(props);\n\n var nativeProps = _assign({\n // Make sure we set .type before any other properties (setting .value\n // before .type means .value is lost in IE11 and below)\n type: undefined\n }, props, {\n defaultChecked: undefined,\n defaultValue: undefined,\n value: value != null ? value : inst._wrapperState.initialValue,\n checked: checked != null ? checked : inst._wrapperState.initialChecked,\n onChange: inst._wrapperState.onChange\n });\n\n return nativeProps;\n },\n mountWrapper: function mountWrapper(inst, props) {\n if (process.env.NODE_ENV !== 'production') {\n LinkedValueUtils.checkPropTypes('input', props, inst._currentElement._owner);\n\n if (props.valueLink !== undefined && !didWarnValueLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n\n if (props.checkedLink !== undefined && !didWarnCheckedLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`checkedLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnCheckedLink = true;\n }\n\n if (props.checked !== undefined && props.defaultChecked !== undefined && !didWarnCheckedDefaultChecked) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Input elements must be either controlled or uncontrolled ' + '(specify either the checked prop, or the defaultChecked prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0;\n didWarnCheckedDefaultChecked = true;\n }\n\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Input elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0;\n didWarnValueDefaultValue = true;\n }\n\n warnIfValueIsNull(props);\n }\n\n var defaultValue = props.defaultValue;\n inst._wrapperState = {\n initialChecked: props.defaultChecked || false,\n initialValue: defaultValue != null ? defaultValue : null,\n listeners: null,\n onChange: _handleChange.bind(inst)\n };\n\n if (process.env.NODE_ENV !== 'production') {\n inst._wrapperState.controlled = props.checked !== undefined || props.value !== undefined;\n }\n },\n updateWrapper: function updateWrapper(inst) {\n var props = inst._currentElement.props;\n\n if (process.env.NODE_ENV !== 'production') {\n warnIfValueIsNull(props);\n var initialValue = inst._wrapperState.initialChecked || inst._wrapperState.initialValue;\n var defaultValue = props.defaultChecked || props.defaultValue;\n var controlled = props.checked !== undefined || props.value !== undefined;\n var owner = inst._currentElement._owner;\n\n if ((initialValue || !inst._wrapperState.controlled) && controlled && !didWarnUncontrolledToControlled) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s is changing a uncontrolled input of type %s to be controlled. ' + 'Input elements should not switch from uncontrolled to controlled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnUncontrolledToControlled = true;\n }\n\n if (inst._wrapperState.controlled && (defaultValue || !controlled) && !didWarnControlledToUncontrolled) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s is changing a controlled input of type %s to be uncontrolled. ' + 'Input elements should not switch from controlled to uncontrolled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnControlledToUncontrolled = true;\n }\n } // TODO: Shouldn't this be getChecked(props)?\n\n\n var checked = props.checked;\n\n if (checked != null) {\n DOMPropertyOperations.setValueForProperty(ReactDOMComponentTree.getNodeFromInstance(inst), 'checked', checked || false);\n }\n\n var value = LinkedValueUtils.getValue(props);\n\n if (value != null) {\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n DOMPropertyOperations.setValueForProperty(ReactDOMComponentTree.getNodeFromInstance(inst), 'value', '' + value);\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n var returnValue = LinkedValueUtils.executeOnChange(props, event); // Here we use asap to wait until all updates have propagated, which\n // is important when using controlled components within layers:\n // https://github.com/facebook/react/issues/1698\n\n ReactUpdates.asap(forceUpdateIfMounted, this);\n var name = props.name;\n\n if (props.type === 'radio' && name != null) {\n var rootNode = ReactDOMComponentTree.getNodeFromInstance(this);\n var queryRoot = rootNode;\n\n while (queryRoot.parentNode) {\n queryRoot = queryRoot.parentNode;\n } // If `rootNode.form` was non-null, then we could try `form.elements`,\n // but that sometimes behaves strangely in IE8. We could also try using\n // `form.getElementsByName`, but that will only return direct children\n // and won't include inputs that use the HTML5 `form=` attribute. Since\n // the input might not even be in a form, let's just use the global\n // `querySelectorAll` to ensure we don't miss anything.\n\n\n var group = queryRoot.querySelectorAll('input[name=' + JSON.stringify('' + name) + '][type=\"radio\"]');\n\n for (var i = 0; i < group.length; i++) {\n var otherNode = group[i];\n\n if (otherNode === rootNode || otherNode.form !== rootNode.form) {\n continue;\n } // This will throw if radio buttons rendered by different copies of React\n // and the same name are rendered into the same form (same as #1939).\n // That's probably okay; we don't support it just as we don't support\n // mixing React radio buttons with non-React ones.\n\n\n var otherInstance = ReactDOMComponentTree.getInstanceFromNode(otherNode);\n !otherInstance ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactDOMInput: Mixing React and non-React radio inputs with the ' + 'same `name` is not supported.') : invariant(false) : void 0; // If this is a controlled radio button group, forcing the input that\n // was previously checked to update will cause it to be come re-checked\n // as appropriate.\n\n ReactUpdates.asap(forceUpdateIfMounted, otherInstance);\n }\n }\n\n return returnValue;\n}\n\nmodule.exports = ReactDOMInput;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDOMOption\n */\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar ReactChildren = require('./ReactChildren');\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar ReactDOMSelect = require('./ReactDOMSelect');\n\nvar warning = require('fbjs/lib/warning');\n/**\n * Implements an <option> native component that warns when `selected` is set.\n */\n\n\nvar ReactDOMOption = {\n mountWrapper: function mountWrapper(inst, props, nativeParent) {\n // TODO (yungsters): Remove support for `selected` in <option>.\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(props.selected == null, 'Use the `defaultValue` or `value` props on <select> instead of ' + 'setting `selected` on <option>.') : void 0;\n } // Look up whether this option is 'selected'\n\n\n var selectValue = null;\n\n if (nativeParent != null && nativeParent._tag === 'select') {\n selectValue = ReactDOMSelect.getSelectValueContext(nativeParent);\n } // If the value is null (e.g., no specified value or after initial mount)\n // or missing (e.g., for <datalist>), we don't change props.selected\n\n\n var selected = null;\n\n if (selectValue != null) {\n selected = false;\n\n if (Array.isArray(selectValue)) {\n // multiple\n for (var i = 0; i < selectValue.length; i++) {\n if ('' + selectValue[i] === '' + props.value) {\n selected = true;\n break;\n }\n }\n } else {\n selected = '' + selectValue === '' + props.value;\n }\n }\n\n inst._wrapperState = {\n selected: selected\n };\n },\n postMountWrapper: function postMountWrapper(inst) {\n // value=\"\" should make a value attribute (#6219)\n var props = inst._currentElement.props;\n\n if (props.value != null) {\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n node.setAttribute('value', props.value);\n }\n },\n getNativeProps: function getNativeProps(inst, props) {\n var nativeProps = _assign({\n selected: undefined,\n children: undefined\n }, props); // Read state only from initial mount because <select> updates value\n // manually; we need the initial state only for server rendering\n\n\n if (inst._wrapperState.selected != null) {\n nativeProps.selected = inst._wrapperState.selected;\n }\n\n var content = ''; // Flatten children and warn if they aren't strings or numbers;\n // invalid types are ignored.\n\n ReactChildren.forEach(props.children, function (child) {\n if (child == null) {\n return;\n }\n\n if (typeof child === 'string' || typeof child === 'number') {\n content += child;\n } else {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Only strings and numbers are supported as <option> children.') : void 0;\n }\n });\n\n if (content) {\n nativeProps.children = content;\n }\n\n return nativeProps;\n }\n};\nmodule.exports = ReactDOMOption;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDOMTextarea\n */\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar DOMPropertyOperations = require('./DOMPropertyOperations');\n\nvar LinkedValueUtils = require('./LinkedValueUtils');\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar ReactUpdates = require('./ReactUpdates');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnValueLink = false;\nvar didWarnValueNull = false;\nvar didWarnValDefaultVal = false;\n\nfunction forceUpdateIfMounted() {\n if (this._rootNodeID) {\n // DOM component is still mounted; update\n ReactDOMTextarea.updateWrapper(this);\n }\n}\n\nfunction warnIfValueIsNull(props) {\n if (props != null && props.value === null && !didWarnValueNull) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`value` prop on `textarea` should not be null. ' + 'Consider using the empty string to clear the component or `undefined` ' + 'for uncontrolled components.') : void 0;\n didWarnValueNull = true;\n }\n}\n/**\n * Implements a <textarea> native component that allows setting `value`, and\n * `defaultValue`. This differs from the traditional DOM API because value is\n * usually set as PCDATA children.\n *\n * If `value` is not supplied (or null/undefined), user actions that affect the\n * value will trigger updates to the element.\n *\n * If `value` is supplied (and not null/undefined), the rendered element will\n * not trigger updates to the element. Instead, the `value` prop must change in\n * order for the rendered element to be updated.\n *\n * The rendered element will be initialized with an empty value, the prop\n * `defaultValue` if specified, or the children content (deprecated).\n */\n\n\nvar ReactDOMTextarea = {\n getNativeProps: function getNativeProps(inst, props) {\n !(props.dangerouslySetInnerHTML == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, '`dangerouslySetInnerHTML` does not make sense on <textarea>.') : invariant(false) : void 0; // Always set children to the same thing. In IE9, the selection range will\n // get reset if `textContent` is mutated.\n\n var nativeProps = _assign({}, props, {\n defaultValue: undefined,\n value: undefined,\n children: inst._wrapperState.initialValue,\n onChange: inst._wrapperState.onChange\n });\n\n return nativeProps;\n },\n mountWrapper: function mountWrapper(inst, props) {\n if (process.env.NODE_ENV !== 'production') {\n LinkedValueUtils.checkPropTypes('textarea', props, inst._currentElement._owner);\n\n if (props.valueLink !== undefined && !didWarnValueLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `textarea` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValDefaultVal) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Textarea elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled textarea ' + 'and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0;\n didWarnValDefaultVal = true;\n }\n\n warnIfValueIsNull(props);\n }\n\n var defaultValue = props.defaultValue; // TODO (yungsters): Remove support for children content in <textarea>.\n\n var children = props.children;\n\n if (children != null) {\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.') : void 0;\n }\n\n !(defaultValue == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'If you supply `defaultValue` on a <textarea>, do not pass children.') : invariant(false) : void 0;\n\n if (Array.isArray(children)) {\n !(children.length <= 1) ? process.env.NODE_ENV !== 'production' ? invariant(false, '<textarea> can only have at most one child.') : invariant(false) : void 0;\n children = children[0];\n }\n\n defaultValue = '' + children;\n }\n\n if (defaultValue == null) {\n defaultValue = '';\n }\n\n var value = LinkedValueUtils.getValue(props);\n inst._wrapperState = {\n // We save the initial value so that `ReactDOMComponent` doesn't update\n // `textContent` (unnecessary since we update value).\n // The initial value can be a boolean or object so that's why it's\n // forced to be a string.\n initialValue: '' + (value != null ? value : defaultValue),\n listeners: null,\n onChange: _handleChange.bind(inst)\n };\n },\n updateWrapper: function updateWrapper(inst) {\n var props = inst._currentElement.props;\n\n if (process.env.NODE_ENV !== 'production') {\n warnIfValueIsNull(props);\n }\n\n var value = LinkedValueUtils.getValue(props);\n\n if (value != null) {\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n DOMPropertyOperations.setValueForProperty(ReactDOMComponentTree.getNodeFromInstance(inst), 'value', '' + value);\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n ReactUpdates.asap(forceUpdateIfMounted, this);\n return returnValue;\n}\n\nmodule.exports = ReactDOMTextarea;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactMultiChild\n */\n'use strict';\n\nvar ReactComponentEnvironment = require('./ReactComponentEnvironment');\n\nvar ReactMultiChildUpdateTypes = require('./ReactMultiChildUpdateTypes');\n\nvar ReactCurrentOwner = require('./ReactCurrentOwner');\n\nvar ReactReconciler = require('./ReactReconciler');\n\nvar ReactChildReconciler = require('./ReactChildReconciler');\n\nvar flattenChildren = require('./flattenChildren');\n\nvar invariant = require('fbjs/lib/invariant');\n/**\n * Make an update for markup to be rendered and inserted at a supplied index.\n *\n * @param {string} markup Markup that renders into an element.\n * @param {number} toIndex Destination index.\n * @private\n */\n\n\nfunction makeInsertMarkup(markup, afterNode, toIndex) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: ReactMultiChildUpdateTypes.INSERT_MARKUP,\n content: markup,\n fromIndex: null,\n fromNode: null,\n toIndex: toIndex,\n afterNode: afterNode\n };\n}\n/**\n * Make an update for moving an existing element to another index.\n *\n * @param {number} fromIndex Source index of the existing element.\n * @param {number} toIndex Destination index of the element.\n * @private\n */\n\n\nfunction makeMove(child, afterNode, toIndex) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: ReactMultiChildUpdateTypes.MOVE_EXISTING,\n content: null,\n fromIndex: child._mountIndex,\n fromNode: ReactReconciler.getNativeNode(child),\n toIndex: toIndex,\n afterNode: afterNode\n };\n}\n/**\n * Make an update for removing an element at an index.\n *\n * @param {number} fromIndex Index of the element to remove.\n * @private\n */\n\n\nfunction makeRemove(child, node) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: ReactMultiChildUpdateTypes.REMOVE_NODE,\n content: null,\n fromIndex: child._mountIndex,\n fromNode: node,\n toIndex: null,\n afterNode: null\n };\n}\n/**\n * Make an update for setting the markup of a node.\n *\n * @param {string} markup Markup that renders into an element.\n * @private\n */\n\n\nfunction makeSetMarkup(markup) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: ReactMultiChildUpdateTypes.SET_MARKUP,\n content: markup,\n fromIndex: null,\n fromNode: null,\n toIndex: null,\n afterNode: null\n };\n}\n/**\n * Make an update for setting the text content.\n *\n * @param {string} textContent Text content to set.\n * @private\n */\n\n\nfunction makeTextContent(textContent) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: ReactMultiChildUpdateTypes.TEXT_CONTENT,\n content: textContent,\n fromIndex: null,\n fromNode: null,\n toIndex: null,\n afterNode: null\n };\n}\n/**\n * Push an update, if any, onto the queue. Creates a new queue if none is\n * passed and always returns the queue. Mutative.\n */\n\n\nfunction enqueue(queue, update) {\n if (update) {\n queue = queue || [];\n queue.push(update);\n }\n\n return queue;\n}\n/**\n * Processes any enqueued updates.\n *\n * @private\n */\n\n\nfunction processQueue(inst, updateQueue) {\n ReactComponentEnvironment.processChildrenUpdates(inst, updateQueue);\n}\n/**\n * ReactMultiChild are capable of reconciling multiple children.\n *\n * @class ReactMultiChild\n * @internal\n */\n\n\nvar ReactMultiChild = {\n /**\n * Provides common functionality for components that must reconcile multiple\n * children. This is used by `ReactDOMComponent` to mount, update, and\n * unmount child components.\n *\n * @lends {ReactMultiChild.prototype}\n */\n Mixin: {\n _reconcilerInstantiateChildren: function _reconcilerInstantiateChildren(nestedChildren, transaction, context) {\n if (process.env.NODE_ENV !== 'production') {\n if (this._currentElement) {\n try {\n ReactCurrentOwner.current = this._currentElement._owner;\n return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context);\n } finally {\n ReactCurrentOwner.current = null;\n }\n }\n }\n\n return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context);\n },\n _reconcilerUpdateChildren: function _reconcilerUpdateChildren(prevChildren, nextNestedChildrenElements, removedNodes, transaction, context) {\n var nextChildren;\n\n if (process.env.NODE_ENV !== 'production') {\n if (this._currentElement) {\n try {\n ReactCurrentOwner.current = this._currentElement._owner;\n nextChildren = flattenChildren(nextNestedChildrenElements);\n } finally {\n ReactCurrentOwner.current = null;\n }\n\n ReactChildReconciler.updateChildren(prevChildren, nextChildren, removedNodes, transaction, context);\n return nextChildren;\n }\n }\n\n nextChildren = flattenChildren(nextNestedChildrenElements);\n ReactChildReconciler.updateChildren(prevChildren, nextChildren, removedNodes, transaction, context);\n return nextChildren;\n },\n\n /**\n * Generates a \"mount image\" for each of the supplied children. In the case\n * of `ReactDOMComponent`, a mount image is a string of markup.\n *\n * @param {?object} nestedChildren Nested child maps.\n * @return {array} An array of mounted representations.\n * @internal\n */\n mountChildren: function mountChildren(nestedChildren, transaction, context) {\n var children = this._reconcilerInstantiateChildren(nestedChildren, transaction, context);\n\n this._renderedChildren = children;\n var mountImages = [];\n var index = 0;\n\n for (var name in children) {\n if (children.hasOwnProperty(name)) {\n var child = children[name];\n var mountImage = ReactReconciler.mountComponent(child, transaction, this, this._nativeContainerInfo, context);\n child._mountIndex = index++;\n mountImages.push(mountImage);\n }\n }\n\n return mountImages;\n },\n\n /**\n * Replaces any rendered children with a text content string.\n *\n * @param {string} nextContent String of content.\n * @internal\n */\n updateTextContent: function updateTextContent(nextContent) {\n var prevChildren = this._renderedChildren; // Remove any rendered children.\n\n ReactChildReconciler.unmountChildren(prevChildren, false);\n\n for (var name in prevChildren) {\n if (prevChildren.hasOwnProperty(name)) {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'updateTextContent called on non-empty component.') : invariant(false) : void 0;\n }\n } // Set new text content.\n\n\n var updates = [makeTextContent(nextContent)];\n processQueue(this, updates);\n },\n\n /**\n * Replaces any rendered children with a markup string.\n *\n * @param {string} nextMarkup String of markup.\n * @internal\n */\n updateMarkup: function updateMarkup(nextMarkup) {\n var prevChildren = this._renderedChildren; // Remove any rendered children.\n\n ReactChildReconciler.unmountChildren(prevChildren, false);\n\n for (var name in prevChildren) {\n if (prevChildren.hasOwnProperty(name)) {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'updateTextContent called on non-empty component.') : invariant(false) : void 0;\n }\n }\n\n var updates = [makeSetMarkup(nextMarkup)];\n processQueue(this, updates);\n },\n\n /**\n * Updates the rendered children with new children.\n *\n * @param {?object} nextNestedChildrenElements Nested child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n updateChildren: function updateChildren(nextNestedChildrenElements, transaction, context) {\n // Hook used by React ART\n this._updateChildren(nextNestedChildrenElements, transaction, context);\n },\n\n /**\n * @param {?object} nextNestedChildrenElements Nested child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @final\n * @protected\n */\n _updateChildren: function _updateChildren(nextNestedChildrenElements, transaction, context) {\n var prevChildren = this._renderedChildren;\n var removedNodes = {};\n\n var nextChildren = this._reconcilerUpdateChildren(prevChildren, nextNestedChildrenElements, removedNodes, transaction, context);\n\n if (!nextChildren && !prevChildren) {\n return;\n }\n\n var updates = null;\n var name; // `nextIndex` will increment for each child in `nextChildren`, but\n // `lastIndex` will be the last index visited in `prevChildren`.\n\n var lastIndex = 0;\n var nextIndex = 0;\n var lastPlacedNode = null;\n\n for (name in nextChildren) {\n if (!nextChildren.hasOwnProperty(name)) {\n continue;\n }\n\n var prevChild = prevChildren && prevChildren[name];\n var nextChild = nextChildren[name];\n\n if (prevChild === nextChild) {\n updates = enqueue(updates, this.moveChild(prevChild, lastPlacedNode, nextIndex, lastIndex));\n lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n prevChild._mountIndex = nextIndex;\n } else {\n if (prevChild) {\n // Update `lastIndex` before `_mountIndex` gets unset by unmounting.\n lastIndex = Math.max(prevChild._mountIndex, lastIndex); // The `removedNodes` loop below will actually remove the child.\n } // The child must be instantiated before it's mounted.\n\n\n updates = enqueue(updates, this._mountChildAtIndex(nextChild, lastPlacedNode, nextIndex, transaction, context));\n }\n\n nextIndex++;\n lastPlacedNode = ReactReconciler.getNativeNode(nextChild);\n } // Remove children that are no longer present.\n\n\n for (name in removedNodes) {\n if (removedNodes.hasOwnProperty(name)) {\n updates = enqueue(updates, this._unmountChild(prevChildren[name], removedNodes[name]));\n }\n }\n\n if (updates) {\n processQueue(this, updates);\n }\n\n this._renderedChildren = nextChildren;\n },\n\n /**\n * Unmounts all rendered children. This should be used to clean up children\n * when this component is unmounted. It does not actually perform any\n * backend operations.\n *\n * @internal\n */\n unmountChildren: function unmountChildren(safely) {\n var renderedChildren = this._renderedChildren;\n ReactChildReconciler.unmountChildren(renderedChildren, safely);\n this._renderedChildren = null;\n },\n\n /**\n * Moves a child component to the supplied index.\n *\n * @param {ReactComponent} child Component to move.\n * @param {number} toIndex Destination index of the element.\n * @param {number} lastIndex Last index visited of the siblings of `child`.\n * @protected\n */\n moveChild: function moveChild(child, afterNode, toIndex, lastIndex) {\n // If the index of `child` is less than `lastIndex`, then it needs to\n // be moved. Otherwise, we do not need to move it because a child will be\n // inserted or moved before `child`.\n if (child._mountIndex < lastIndex) {\n return makeMove(child, afterNode, toIndex);\n }\n },\n\n /**\n * Creates a child component.\n *\n * @param {ReactComponent} child Component to create.\n * @param {string} mountImage Markup to insert.\n * @protected\n */\n createChild: function createChild(child, afterNode, mountImage) {\n return makeInsertMarkup(mountImage, afterNode, child._mountIndex);\n },\n\n /**\n * Removes a child component.\n *\n * @param {ReactComponent} child Child to remove.\n * @protected\n */\n removeChild: function removeChild(child, node) {\n return makeRemove(child, node);\n },\n\n /**\n * Mounts a child with the supplied name.\n *\n * NOTE: This is part of `updateChildren` and is here for readability.\n *\n * @param {ReactComponent} child Component to mount.\n * @param {string} name Name of the child.\n * @param {number} index Index at which to insert the child.\n * @param {ReactReconcileTransaction} transaction\n * @private\n */\n _mountChildAtIndex: function _mountChildAtIndex(child, afterNode, index, transaction, context) {\n var mountImage = ReactReconciler.mountComponent(child, transaction, this, this._nativeContainerInfo, context);\n child._mountIndex = index;\n return this.createChild(child, afterNode, mountImage);\n },\n\n /**\n * Unmounts a rendered child.\n *\n * NOTE: This is part of `updateChildren` and is here for readability.\n *\n * @param {ReactComponent} child Component to unmount.\n * @private\n */\n _unmountChild: function _unmountChild(child, node) {\n var update = this.removeChild(child, node);\n child._mountIndex = null;\n return update;\n }\n }\n};\nmodule.exports = ReactMultiChild;","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactChildReconciler\n */\n'use strict';\n\nvar ReactReconciler = require('./ReactReconciler');\n\nvar instantiateReactComponent = require('./instantiateReactComponent');\n\nvar shouldUpdateReactComponent = require('./shouldUpdateReactComponent');\n\nvar traverseAllChildren = require('./traverseAllChildren');\n\nvar warning = require('fbjs/lib/warning');\n\nfunction instantiateChild(childInstances, child, name) {\n // We found a component instance.\n var keyUnique = childInstances[name] === undefined;\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(keyUnique, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.', name) : void 0;\n }\n\n if (child != null && keyUnique) {\n childInstances[name] = instantiateReactComponent(child);\n }\n}\n/**\n * ReactChildReconciler provides helpers for initializing or updating a set of\n * children. Its output is suitable for passing it onto ReactMultiChild which\n * does diffed reordering and insertion.\n */\n\n\nvar ReactChildReconciler = {\n /**\n * Generates a \"mount image\" for each of the supplied children. In the case\n * of `ReactDOMComponent`, a mount image is a string of markup.\n *\n * @param {?object} nestedChildNodes Nested child maps.\n * @return {?object} A set of child instances.\n * @internal\n */\n instantiateChildren: function instantiateChildren(nestedChildNodes, transaction, context) {\n if (nestedChildNodes == null) {\n return null;\n }\n\n var childInstances = {};\n traverseAllChildren(nestedChildNodes, instantiateChild, childInstances);\n return childInstances;\n },\n\n /**\n * Updates the rendered children and returns a new set of children.\n *\n * @param {?object} prevChildren Previously initialized set of children.\n * @param {?object} nextChildren Flat child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n * @return {?object} A new set of child instances.\n * @internal\n */\n updateChildren: function updateChildren(prevChildren, nextChildren, removedNodes, transaction, context) {\n // We currently don't have a way to track moves here but if we use iterators\n // instead of for..in we can zip the iterators and check if an item has\n // moved.\n // TODO: If nothing has changed, return the prevChildren object so that we\n // can quickly bailout if nothing has changed.\n if (!nextChildren && !prevChildren) {\n return;\n }\n\n var name;\n var prevChild;\n\n for (name in nextChildren) {\n if (!nextChildren.hasOwnProperty(name)) {\n continue;\n }\n\n prevChild = prevChildren && prevChildren[name];\n var prevElement = prevChild && prevChild._currentElement;\n var nextElement = nextChildren[name];\n\n if (prevChild != null && shouldUpdateReactComponent(prevElement, nextElement)) {\n ReactReconciler.receiveComponent(prevChild, nextElement, transaction, context);\n nextChildren[name] = prevChild;\n } else {\n if (prevChild) {\n removedNodes[name] = ReactReconciler.getNativeNode(prevChild);\n ReactReconciler.unmountComponent(prevChild, false);\n } // The child must be instantiated before it's mounted.\n\n\n var nextChildInstance = instantiateReactComponent(nextElement);\n nextChildren[name] = nextChildInstance;\n }\n } // Unmount children that are no longer present.\n\n\n for (name in prevChildren) {\n if (prevChildren.hasOwnProperty(name) && !(nextChildren && nextChildren.hasOwnProperty(name))) {\n prevChild = prevChildren[name];\n removedNodes[name] = ReactReconciler.getNativeNode(prevChild);\n ReactReconciler.unmountComponent(prevChild, false);\n }\n }\n },\n\n /**\n * Unmounts all rendered children. This should be used to clean up children\n * when this component is unmounted.\n *\n * @param {?object} renderedChildren Previously initialized set of children.\n * @internal\n */\n unmountChildren: function unmountChildren(renderedChildren, safely) {\n for (var name in renderedChildren) {\n if (renderedChildren.hasOwnProperty(name)) {\n var renderedChild = renderedChildren[name];\n ReactReconciler.unmountComponent(renderedChild, safely);\n }\n }\n }\n};\nmodule.exports = ReactChildReconciler;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactCompositeComponent\n */\n'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar _assign = require('object-assign');\n\nvar ReactComponentEnvironment = require('./ReactComponentEnvironment');\n\nvar ReactCurrentOwner = require('./ReactCurrentOwner');\n\nvar ReactElement = require('./ReactElement');\n\nvar ReactErrorUtils = require('./ReactErrorUtils');\n\nvar ReactInstanceMap = require('./ReactInstanceMap');\n\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar ReactNodeTypes = require('./ReactNodeTypes');\n\nvar ReactPerf = require('./ReactPerf');\n\nvar ReactPropTypeLocations = require('./ReactPropTypeLocations');\n\nvar ReactPropTypeLocationNames = require('./ReactPropTypeLocationNames');\n\nvar ReactReconciler = require('./ReactReconciler');\n\nvar ReactUpdateQueue = require('./ReactUpdateQueue');\n\nvar emptyObject = require('fbjs/lib/emptyObject');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar shouldUpdateReactComponent = require('./shouldUpdateReactComponent');\n\nvar warning = require('fbjs/lib/warning');\n\nfunction getDeclarationErrorAddendum(component) {\n var owner = component._currentElement._owner || null;\n\n if (owner) {\n var name = owner.getName();\n\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n\n return '';\n}\n\nfunction StatelessComponent(Component) {}\n\nStatelessComponent.prototype.render = function () {\n var Component = ReactInstanceMap.get(this)._currentElement.type;\n\n var element = Component(this.props, this.context, this.updater);\n warnIfInvalidElement(Component, element);\n return element;\n};\n\nfunction warnIfInvalidElement(Component, element) {\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(element === null || element === false || ReactElement.isValidElement(element), '%s(...): A valid React element (or null) must be returned. You may have ' + 'returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : void 0;\n }\n}\n/**\n * ------------------ The Life-Cycle of a Composite Component ------------------\n *\n * - constructor: Initialization of state. The instance is now retained.\n * - componentWillMount\n * - render\n * - [children's constructors]\n * - [children's componentWillMount and render]\n * - [children's componentDidMount]\n * - componentDidMount\n *\n * Update Phases:\n * - componentWillReceiveProps (only called if parent updated)\n * - shouldComponentUpdate\n * - componentWillUpdate\n * - render\n * - [children's constructors or receive props phases]\n * - componentDidUpdate\n *\n * - componentWillUnmount\n * - [children's componentWillUnmount]\n * - [children destroyed]\n * - (destroyed): The instance is now blank, released by React and ready for GC.\n *\n * -----------------------------------------------------------------------------\n */\n\n/**\n * An incrementing ID assigned to each component when it is mounted. This is\n * used to enforce the order in which `ReactUpdates` updates dirty components.\n *\n * @private\n */\n\n\nvar nextMountID = 1;\n/**\n * @lends {ReactCompositeComponent.prototype}\n */\n\nvar ReactCompositeComponentMixin = {\n /**\n * Base constructor for all composite component.\n *\n * @param {ReactElement} element\n * @final\n * @internal\n */\n construct: function construct(element) {\n this._currentElement = element;\n this._rootNodeID = null;\n this._instance = null;\n this._nativeParent = null;\n this._nativeContainerInfo = null; // See ReactUpdateQueue\n\n this._pendingElement = null;\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n this._renderedNodeType = null;\n this._renderedComponent = null;\n this._context = null;\n this._mountOrder = 0;\n this._topLevelWrapper = null; // See ReactUpdates and ReactUpdateQueue.\n\n this._pendingCallbacks = null;\n },\n\n /**\n * Initializes the component, renders markup, and registers event listeners.\n *\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?object} nativeParent\n * @param {?object} nativeContainerInfo\n * @param {?object} context\n * @return {?string} Rendered markup to be inserted into the DOM.\n * @final\n * @internal\n */\n mountComponent: function mountComponent(transaction, nativeParent, nativeContainerInfo, context) {\n this._context = context;\n this._mountOrder = nextMountID++;\n this._nativeParent = nativeParent;\n this._nativeContainerInfo = nativeContainerInfo;\n\n var publicProps = this._processProps(this._currentElement.props);\n\n var publicContext = this._processContext(context);\n\n var Component = this._currentElement.type; // Initialize the public class\n\n var inst;\n var renderedElement;\n\n if (Component.prototype && Component.prototype.isReactComponent) {\n if (process.env.NODE_ENV !== 'production') {\n ReactCurrentOwner.current = this;\n\n try {\n inst = new Component(publicProps, publicContext, ReactUpdateQueue);\n } finally {\n ReactCurrentOwner.current = null;\n }\n } else {\n inst = new Component(publicProps, publicContext, ReactUpdateQueue);\n }\n } else {\n if (process.env.NODE_ENV !== 'production') {\n ReactCurrentOwner.current = this;\n\n try {\n inst = Component(publicProps, publicContext, ReactUpdateQueue);\n } finally {\n ReactCurrentOwner.current = null;\n }\n } else {\n inst = Component(publicProps, publicContext, ReactUpdateQueue);\n }\n\n if (inst == null || inst.render == null) {\n renderedElement = inst;\n warnIfInvalidElement(Component, renderedElement);\n !(inst === null || inst === false || ReactElement.isValidElement(inst)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s(...): A valid React element (or null) must be returned. You may have ' + 'returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : invariant(false) : void 0;\n inst = new StatelessComponent(Component);\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // This will throw later in _renderValidatedComponent, but add an early\n // warning now to help debugging\n if (inst.render == null) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): No `render` method found on the returned component ' + 'instance: you may have forgotten to define `render`.', Component.displayName || Component.name || 'Component') : void 0;\n }\n\n var propsMutated = inst.props !== publicProps;\n var componentName = Component.displayName || Component.name || 'Component';\n process.env.NODE_ENV !== 'production' ? warning(inst.props === undefined || !propsMutated, '%s(...): When calling super() in `%s`, make sure to pass ' + 'up the same props that your component\\'s constructor was passed.', componentName, componentName) : void 0;\n } // These should be set up in the constructor, but as a convenience for\n // simpler class abstractions, we set them up after the fact.\n\n\n inst.props = publicProps;\n inst.context = publicContext;\n inst.refs = emptyObject;\n inst.updater = ReactUpdateQueue;\n this._instance = inst; // Store a reference from the instance back to the internal representation\n\n ReactInstanceMap.set(inst, this);\n\n if (process.env.NODE_ENV !== 'production') {\n // Since plain JS classes are defined without any special initialization\n // logic, we can not catch common errors early. Therefore, we have to\n // catch them here, at initialization time, instead.\n process.env.NODE_ENV !== 'production' ? warning(!inst.getInitialState || inst.getInitialState.isReactClassApproved, 'getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.getDefaultProps || inst.getDefaultProps.isReactClassApproved, 'getDefaultProps was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Use a static property to define defaultProps instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.propTypes, 'propTypes was defined as an instance property on %s. Use a static ' + 'property to define propTypes instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.contextTypes, 'contextTypes was defined as an instance property on %s. Use a ' + 'static property to define contextTypes instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentShouldUpdate !== 'function', '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', this.getName() || 'A component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentDidUnmount !== 'function', '%s has a method called ' + 'componentDidUnmount(). But there is no such lifecycle method. ' + 'Did you mean componentWillUnmount()?', this.getName() || 'A component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentWillRecieveProps !== 'function', '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', this.getName() || 'A component') : void 0;\n }\n\n var initialState = inst.state;\n\n if (initialState === undefined) {\n inst.state = initialState = null;\n }\n\n !(_typeof(initialState) === 'object' && !Array.isArray(initialState)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.state: must be set to an object or null', this.getName() || 'ReactCompositeComponent') : invariant(false) : void 0;\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n var markup;\n\n if (inst.unstable_handleError) {\n markup = this.performInitialMountWithErrorHandling(renderedElement, nativeParent, nativeContainerInfo, transaction, context);\n } else {\n markup = this.performInitialMount(renderedElement, nativeParent, nativeContainerInfo, transaction, context);\n }\n\n if (inst.componentDidMount) {\n transaction.getReactMountReady().enqueue(inst.componentDidMount, inst);\n }\n\n return markup;\n },\n performInitialMountWithErrorHandling: function performInitialMountWithErrorHandling(renderedElement, nativeParent, nativeContainerInfo, transaction, context) {\n var markup;\n var checkpoint = transaction.checkpoint();\n\n try {\n markup = this.performInitialMount(renderedElement, nativeParent, nativeContainerInfo, transaction, context);\n } catch (e) {\n // Roll back to checkpoint, handle error (which may add items to the transaction), and take a new checkpoint\n transaction.rollback(checkpoint);\n\n this._instance.unstable_handleError(e);\n\n if (this._pendingStateQueue) {\n this._instance.state = this._processPendingState(this._instance.props, this._instance.context);\n }\n\n checkpoint = transaction.checkpoint();\n\n this._renderedComponent.unmountComponent(true);\n\n transaction.rollback(checkpoint); // Try again - we've informed the component about the error, so they can render an error message this time.\n // If this throws again, the error will bubble up (and can be caught by a higher error boundary).\n\n markup = this.performInitialMount(renderedElement, nativeParent, nativeContainerInfo, transaction, context);\n }\n\n return markup;\n },\n performInitialMount: function performInitialMount(renderedElement, nativeParent, nativeContainerInfo, transaction, context) {\n var inst = this._instance;\n\n if (inst.componentWillMount) {\n inst.componentWillMount(); // When mounting, calls to `setState` by `componentWillMount` will set\n // `this._pendingStateQueue` without triggering a re-render.\n\n if (this._pendingStateQueue) {\n inst.state = this._processPendingState(inst.props, inst.context);\n }\n } // If not a stateless component, we now render\n\n\n if (renderedElement === undefined) {\n renderedElement = this._renderValidatedComponent();\n }\n\n this._renderedNodeType = ReactNodeTypes.getType(renderedElement);\n this._renderedComponent = this._instantiateReactComponent(renderedElement);\n var markup = ReactReconciler.mountComponent(this._renderedComponent, transaction, nativeParent, nativeContainerInfo, this._processChildContext(context));\n return markup;\n },\n getNativeNode: function getNativeNode() {\n return ReactReconciler.getNativeNode(this._renderedComponent);\n },\n\n /**\n * Releases any resources allocated by `mountComponent`.\n *\n * @final\n * @internal\n */\n unmountComponent: function unmountComponent(safely) {\n if (!this._renderedComponent) {\n return;\n }\n\n var inst = this._instance;\n\n if (inst.componentWillUnmount) {\n if (safely) {\n var name = this.getName() + '.componentWillUnmount()';\n ReactErrorUtils.invokeGuardedCallback(name, inst.componentWillUnmount.bind(inst));\n } else {\n inst.componentWillUnmount();\n }\n }\n\n if (this._renderedComponent) {\n ReactReconciler.unmountComponent(this._renderedComponent, safely);\n this._renderedNodeType = null;\n this._renderedComponent = null;\n this._instance = null;\n } // Reset pending fields\n // Even if this component is scheduled for another update in ReactUpdates,\n // it would still be ignored because these fields are reset.\n\n\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n this._pendingCallbacks = null;\n this._pendingElement = null; // These fields do not really need to be reset since this object is no\n // longer accessible.\n\n this._context = null;\n this._rootNodeID = null;\n this._topLevelWrapper = null; // Delete the reference from the instance to this internal representation\n // which allow the internals to be properly cleaned up even if the user\n // leaks a reference to the public instance.\n\n ReactInstanceMap.remove(inst); // Some existing components rely on inst.props even after they've been\n // destroyed (in event handlers).\n // TODO: inst.props = null;\n // TODO: inst.state = null;\n // TODO: inst.context = null;\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _maskContext: function _maskContext(context) {\n var Component = this._currentElement.type;\n var contextTypes = Component.contextTypes;\n\n if (!contextTypes) {\n return emptyObject;\n }\n\n var maskedContext = {};\n\n for (var contextName in contextTypes) {\n maskedContext[contextName] = context[contextName];\n }\n\n return maskedContext;\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`, and asserts that they are valid.\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _processContext: function _processContext(context) {\n var maskedContext = this._maskContext(context);\n\n if (process.env.NODE_ENV !== 'production') {\n var Component = this._currentElement.type;\n\n if (Component.contextTypes) {\n this._checkPropTypes(Component.contextTypes, maskedContext, ReactPropTypeLocations.context);\n }\n }\n\n return maskedContext;\n },\n\n /**\n * @param {object} currentContext\n * @return {object}\n * @private\n */\n _processChildContext: function _processChildContext(currentContext) {\n var Component = this._currentElement.type;\n var inst = this._instance;\n\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onBeginProcessingChildContext();\n }\n\n var childContext = inst.getChildContext && inst.getChildContext();\n\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onEndProcessingChildContext();\n }\n\n if (childContext) {\n !(_typeof(Component.childContextTypes) === 'object') ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.getChildContext(): childContextTypes must be defined in order to ' + 'use getChildContext().', this.getName() || 'ReactCompositeComponent') : invariant(false) : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n this._checkPropTypes(Component.childContextTypes, childContext, ReactPropTypeLocations.childContext);\n }\n\n for (var name in childContext) {\n !(name in Component.childContextTypes) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.getChildContext(): key \"%s\" is not defined in childContextTypes.', this.getName() || 'ReactCompositeComponent', name) : invariant(false) : void 0;\n }\n\n return _assign({}, currentContext, childContext);\n }\n\n return currentContext;\n },\n\n /**\n * Processes props by setting default values for unspecified props and\n * asserting that the props are valid. Does not mutate its argument; returns\n * a new props object with defaults merged in.\n *\n * @param {object} newProps\n * @return {object}\n * @private\n */\n _processProps: function _processProps(newProps) {\n if (process.env.NODE_ENV !== 'production') {\n var Component = this._currentElement.type;\n\n if (Component.propTypes) {\n this._checkPropTypes(Component.propTypes, newProps, ReactPropTypeLocations.prop);\n }\n }\n\n return newProps;\n },\n\n /**\n * Assert that the props are valid\n *\n * @param {object} propTypes Map of prop name to a ReactPropType\n * @param {object} props\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @private\n */\n _checkPropTypes: function _checkPropTypes(propTypes, props, location) {\n // TODO: Stop validating prop types here and only use the element\n // validation.\n var componentName = this.getName();\n\n for (var propName in propTypes) {\n if (propTypes.hasOwnProperty(propName)) {\n var error;\n\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n !(typeof propTypes[propName] === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s: %s type `%s` is invalid; it must be a function, usually ' + 'from React.PropTypes.', componentName || 'React class', ReactPropTypeLocationNames[location], propName) : invariant(false) : void 0;\n error = propTypes[propName](props, propName, componentName, location);\n } catch (ex) {\n error = ex;\n }\n\n if (error instanceof Error) {\n // We may want to extend this logic for similar errors in\n // top-level render calls, so I'm abstracting it away into\n // a function to minimize refactoring in the future\n var addendum = getDeclarationErrorAddendum(this);\n\n if (location === ReactPropTypeLocations.prop) {\n // Preface gives us something to blacklist in warning module\n process.env.NODE_ENV !== 'production' ? warning(false, 'Failed Composite propType: %s%s', error.message, addendum) : void 0;\n } else {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Failed Context Types: %s%s', error.message, addendum) : void 0;\n }\n }\n }\n }\n },\n receiveComponent: function receiveComponent(nextElement, transaction, nextContext) {\n var prevElement = this._currentElement;\n var prevContext = this._context;\n this._pendingElement = null;\n this.updateComponent(transaction, prevElement, nextElement, prevContext, nextContext);\n },\n\n /**\n * If any of `_pendingElement`, `_pendingStateQueue`, or `_pendingForceUpdate`\n * is set, update the component.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n performUpdateIfNecessary: function performUpdateIfNecessary(transaction) {\n if (this._pendingElement != null) {\n ReactReconciler.receiveComponent(this, this._pendingElement, transaction, this._context);\n }\n\n if (this._pendingStateQueue !== null || this._pendingForceUpdate) {\n this.updateComponent(transaction, this._currentElement, this._currentElement, this._context, this._context);\n }\n },\n\n /**\n * Perform an update to a mounted component. The componentWillReceiveProps and\n * shouldComponentUpdate methods are called, then (assuming the update isn't\n * skipped) the remaining update lifecycle methods are called and the DOM\n * representation is updated.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @param {ReactElement} prevParentElement\n * @param {ReactElement} nextParentElement\n * @internal\n * @overridable\n */\n updateComponent: function updateComponent(transaction, prevParentElement, nextParentElement, prevUnmaskedContext, nextUnmaskedContext) {\n var inst = this._instance;\n var willReceive = false;\n var nextContext;\n var nextProps; // Determine if the context has changed or not\n\n if (this._context === nextUnmaskedContext) {\n nextContext = inst.context;\n } else {\n nextContext = this._processContext(nextUnmaskedContext);\n willReceive = true;\n } // Distinguish between a props update versus a simple state update\n\n\n if (prevParentElement === nextParentElement) {\n // Skip checking prop types again -- we don't read inst.props to avoid\n // warning for DOM component props in this upgrade\n nextProps = nextParentElement.props;\n } else {\n nextProps = this._processProps(nextParentElement.props);\n willReceive = true;\n } // An update here will schedule an update but immediately set\n // _pendingStateQueue which will ensure that any state updates gets\n // immediately reconciled instead of waiting for the next batch.\n\n\n if (willReceive && inst.componentWillReceiveProps) {\n inst.componentWillReceiveProps(nextProps, nextContext);\n }\n\n var nextState = this._processPendingState(nextProps, nextContext);\n\n var shouldUpdate = this._pendingForceUpdate || !inst.shouldComponentUpdate || inst.shouldComponentUpdate(nextProps, nextState, nextContext);\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(shouldUpdate !== undefined, '%s.shouldComponentUpdate(): Returned undefined instead of a ' + 'boolean value. Make sure to return true or false.', this.getName() || 'ReactCompositeComponent') : void 0;\n }\n\n if (shouldUpdate) {\n this._pendingForceUpdate = false; // Will set `this.props`, `this.state` and `this.context`.\n\n this._performComponentUpdate(nextParentElement, nextProps, nextState, nextContext, transaction, nextUnmaskedContext);\n } else {\n // If it's determined that a component should not update, we still want\n // to set props and state but we shortcut the rest of the update.\n this._currentElement = nextParentElement;\n this._context = nextUnmaskedContext;\n inst.props = nextProps;\n inst.state = nextState;\n inst.context = nextContext;\n }\n },\n _processPendingState: function _processPendingState(props, context) {\n var inst = this._instance;\n var queue = this._pendingStateQueue;\n var replace = this._pendingReplaceState;\n this._pendingReplaceState = false;\n this._pendingStateQueue = null;\n\n if (!queue) {\n return inst.state;\n }\n\n if (replace && queue.length === 1) {\n return queue[0];\n }\n\n var nextState = _assign({}, replace ? queue[0] : inst.state);\n\n for (var i = replace ? 1 : 0; i < queue.length; i++) {\n var partial = queue[i];\n\n _assign(nextState, typeof partial === 'function' ? partial.call(inst, nextState, props, context) : partial);\n }\n\n return nextState;\n },\n\n /**\n * Merges new props and state, notifies delegate methods of update and\n * performs update.\n *\n * @param {ReactElement} nextElement Next element\n * @param {object} nextProps Next public object to set as properties.\n * @param {?object} nextState Next object to set as state.\n * @param {?object} nextContext Next public object to set as context.\n * @param {ReactReconcileTransaction} transaction\n * @param {?object} unmaskedContext\n * @private\n */\n _performComponentUpdate: function _performComponentUpdate(nextElement, nextProps, nextState, nextContext, transaction, unmaskedContext) {\n var inst = this._instance;\n var hasComponentDidUpdate = Boolean(inst.componentDidUpdate);\n var prevProps;\n var prevState;\n var prevContext;\n\n if (hasComponentDidUpdate) {\n prevProps = inst.props;\n prevState = inst.state;\n prevContext = inst.context;\n }\n\n if (inst.componentWillUpdate) {\n inst.componentWillUpdate(nextProps, nextState, nextContext);\n }\n\n this._currentElement = nextElement;\n this._context = unmaskedContext;\n inst.props = nextProps;\n inst.state = nextState;\n inst.context = nextContext;\n\n this._updateRenderedComponent(transaction, unmaskedContext);\n\n if (hasComponentDidUpdate) {\n transaction.getReactMountReady().enqueue(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), inst);\n }\n },\n\n /**\n * Call the component's `render` method and update the DOM accordingly.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n _updateRenderedComponent: function _updateRenderedComponent(transaction, context) {\n var prevComponentInstance = this._renderedComponent;\n var prevRenderedElement = prevComponentInstance._currentElement;\n\n var nextRenderedElement = this._renderValidatedComponent();\n\n if (shouldUpdateReactComponent(prevRenderedElement, nextRenderedElement)) {\n ReactReconciler.receiveComponent(prevComponentInstance, nextRenderedElement, transaction, this._processChildContext(context));\n } else {\n var oldNativeNode = ReactReconciler.getNativeNode(prevComponentInstance);\n ReactReconciler.unmountComponent(prevComponentInstance, false);\n this._renderedNodeType = ReactNodeTypes.getType(nextRenderedElement);\n this._renderedComponent = this._instantiateReactComponent(nextRenderedElement);\n var nextMarkup = ReactReconciler.mountComponent(this._renderedComponent, transaction, this._nativeParent, this._nativeContainerInfo, this._processChildContext(context));\n\n this._replaceNodeWithMarkup(oldNativeNode, nextMarkup);\n }\n },\n\n /**\n * Overridden in shallow rendering.\n *\n * @protected\n */\n _replaceNodeWithMarkup: function _replaceNodeWithMarkup(oldNativeNode, nextMarkup) {\n ReactComponentEnvironment.replaceNodeWithMarkup(oldNativeNode, nextMarkup);\n },\n\n /**\n * @protected\n */\n _renderValidatedComponentWithoutOwnerOrContext: function _renderValidatedComponentWithoutOwnerOrContext() {\n var inst = this._instance;\n var renderedComponent = inst.render();\n\n if (process.env.NODE_ENV !== 'production') {\n // We allow auto-mocks to proceed as if they're returning null.\n if (renderedComponent === undefined && inst.render._isMockFunction) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n renderedComponent = null;\n }\n }\n\n return renderedComponent;\n },\n\n /**\n * @private\n */\n _renderValidatedComponent: function _renderValidatedComponent() {\n var renderedComponent;\n ReactCurrentOwner.current = this;\n\n try {\n renderedComponent = this._renderValidatedComponentWithoutOwnerOrContext();\n } finally {\n ReactCurrentOwner.current = null;\n }\n\n !( // TODO: An `isValidNode` function would probably be more appropriate\n renderedComponent === null || renderedComponent === false || ReactElement.isValidElement(renderedComponent)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.render(): A valid React element (or null) must be returned. You may have ' + 'returned undefined, an array or some other invalid object.', this.getName() || 'ReactCompositeComponent') : invariant(false) : void 0;\n return renderedComponent;\n },\n\n /**\n * Lazily allocates the refs object and stores `component` as `ref`.\n *\n * @param {string} ref Reference name.\n * @param {component} component Component to store as `ref`.\n * @final\n * @private\n */\n attachRef: function attachRef(ref, component) {\n var inst = this.getPublicInstance();\n !(inst != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Stateless function components cannot have refs.') : invariant(false) : void 0;\n var publicComponentInstance = component.getPublicInstance();\n\n if (process.env.NODE_ENV !== 'production') {\n var componentName = component && component.getName ? component.getName() : 'a component';\n process.env.NODE_ENV !== 'production' ? warning(publicComponentInstance != null, 'Stateless function components cannot be given refs ' + '(See ref \"%s\" in %s created by %s). ' + 'Attempts to access this ref will fail.', ref, componentName, this.getName()) : void 0;\n }\n\n var refs = inst.refs === emptyObject ? inst.refs = {} : inst.refs;\n refs[ref] = publicComponentInstance;\n },\n\n /**\n * Detaches a reference name.\n *\n * @param {string} ref Name to dereference.\n * @final\n * @private\n */\n detachRef: function detachRef(ref) {\n var refs = this.getPublicInstance().refs;\n delete refs[ref];\n },\n\n /**\n * Get a text description of the component that can be used to identify it\n * in error messages.\n * @return {string} The name or null.\n * @internal\n */\n getName: function getName() {\n var type = this._currentElement.type;\n var constructor = this._instance && this._instance.constructor;\n return type.displayName || constructor && constructor.displayName || type.name || constructor && constructor.name || null;\n },\n\n /**\n * Get the publicly accessible representation of this component - i.e. what\n * is exposed by refs and returned by render. Can be null for stateless\n * components.\n *\n * @return {ReactComponent} the public component instance.\n * @internal\n */\n getPublicInstance: function getPublicInstance() {\n var inst = this._instance;\n\n if (inst instanceof StatelessComponent) {\n return null;\n }\n\n return inst;\n },\n // Stub\n _instantiateReactComponent: null\n};\nReactPerf.measureMethods(ReactCompositeComponentMixin, 'ReactCompositeComponent', {\n mountComponent: 'mountComponent',\n updateComponent: 'updateComponent',\n _renderValidatedComponent: '_renderValidatedComponent'\n});\nvar ReactCompositeComponent = {\n Mixin: ReactCompositeComponentMixin\n};\nmodule.exports = ReactCompositeComponent;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule flattenChildren\n */\n'use strict';\n\nvar traverseAllChildren = require('./traverseAllChildren');\n\nvar warning = require('fbjs/lib/warning');\n/**\n * @param {function} traverseContext Context passed through traversal.\n * @param {?ReactComponent} child React child component.\n * @param {!string} name String name of key path to child.\n */\n\n\nfunction flattenSingleChildIntoContext(traverseContext, child, name) {\n // We found a component instance.\n var result = traverseContext;\n var keyUnique = result[name] === undefined;\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(keyUnique, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.', name) : void 0;\n }\n\n if (keyUnique && child != null) {\n result[name] = child;\n }\n}\n/**\n * Flattens children that are typically specified as `props.children`. Any null\n * children will not be included in the resulting object.\n * @return {!object} flattened children keyed by name.\n */\n\n\nfunction flattenChildren(children) {\n if (children == null) {\n return children;\n }\n\n var result = {};\n traverseAllChildren(children, flattenSingleChildIntoContext, result);\n return result;\n}\n\nmodule.exports = flattenChildren;","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDOMEmptyComponent\n */\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar DOMLazyTree = require('./DOMLazyTree');\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar ReactDOMEmptyComponent = function ReactDOMEmptyComponent(instantiate) {\n // ReactCompositeComponent uses this:\n this._currentElement = null; // ReactDOMComponentTree uses these:\n\n this._nativeNode = null;\n this._nativeParent = null;\n this._nativeContainerInfo = null;\n this._domID = null;\n};\n\n_assign(ReactDOMEmptyComponent.prototype, {\n mountComponent: function mountComponent(transaction, nativeParent, nativeContainerInfo, context) {\n var domID = nativeContainerInfo._idCounter++;\n this._domID = domID;\n this._nativeParent = nativeParent;\n this._nativeContainerInfo = nativeContainerInfo;\n var nodeValue = ' react-empty: ' + this._domID + ' ';\n\n if (transaction.useCreateElement) {\n var ownerDocument = nativeContainerInfo._ownerDocument;\n var node = ownerDocument.createComment(nodeValue);\n ReactDOMComponentTree.precacheNode(this, node);\n return DOMLazyTree(node);\n } else {\n if (transaction.renderToStaticMarkup) {\n // Normally we'd insert a comment node, but since this is a situation\n // where React won't take over (static pages), we can simply return\n // nothing.\n return '';\n }\n\n return '<!--' + nodeValue + '-->';\n }\n },\n receiveComponent: function receiveComponent() {},\n getNativeNode: function getNativeNode() {\n return ReactDOMComponentTree.getNodeFromInstance(this);\n },\n unmountComponent: function unmountComponent() {\n ReactDOMComponentTree.uncacheNode(this);\n }\n});\n\nmodule.exports = ReactDOMEmptyComponent;","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDOMTreeTraversal\n */\n'use strict';\n\nvar invariant = require('fbjs/lib/invariant');\n/**\n * Return the lowest common ancestor of A and B, or null if they are in\n * different trees.\n */\n\n\nfunction getLowestCommonAncestor(instA, instB) {\n !('_nativeNode' in instA) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : invariant(false) : void 0;\n !('_nativeNode' in instB) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : invariant(false) : void 0;\n var depthA = 0;\n\n for (var tempA = instA; tempA; tempA = tempA._nativeParent) {\n depthA++;\n }\n\n var depthB = 0;\n\n for (var tempB = instB; tempB; tempB = tempB._nativeParent) {\n depthB++;\n } // If A is deeper, crawl up.\n\n\n while (depthA - depthB > 0) {\n instA = instA._nativeParent;\n depthA--;\n } // If B is deeper, crawl up.\n\n\n while (depthB - depthA > 0) {\n instB = instB._nativeParent;\n depthB--;\n } // Walk in lockstep until we find a match.\n\n\n var depth = depthA;\n\n while (depth--) {\n if (instA === instB) {\n return instA;\n }\n\n instA = instA._nativeParent;\n instB = instB._nativeParent;\n }\n\n return null;\n}\n/**\n * Return if A is an ancestor of B.\n */\n\n\nfunction isAncestor(instA, instB) {\n !('_nativeNode' in instA) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'isAncestor: Invalid argument.') : invariant(false) : void 0;\n !('_nativeNode' in instB) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'isAncestor: Invalid argument.') : invariant(false) : void 0;\n\n while (instB) {\n if (instB === instA) {\n return true;\n }\n\n instB = instB._nativeParent;\n }\n\n return false;\n}\n/**\n * Return the parent instance of the passed-in instance.\n */\n\n\nfunction getParentInstance(inst) {\n !('_nativeNode' in inst) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getParentInstance: Invalid argument.') : invariant(false) : void 0;\n return inst._nativeParent;\n}\n/**\n * Simulates the traversal of a two-phase, capture/bubble event dispatch.\n */\n\n\nfunction traverseTwoPhase(inst, fn, arg) {\n var path = [];\n\n while (inst) {\n path.push(inst);\n inst = inst._nativeParent;\n }\n\n var i;\n\n for (i = path.length; i-- > 0;) {\n fn(path[i], false, arg);\n }\n\n for (i = 0; i < path.length; i++) {\n fn(path[i], true, arg);\n }\n}\n/**\n * Traverses the ID hierarchy and invokes the supplied `cb` on any IDs that\n * should would receive a `mouseEnter` or `mouseLeave` event.\n *\n * Does not invoke the callback on the nearest common ancestor because nothing\n * \"entered\" or \"left\" that element.\n */\n\n\nfunction traverseEnterLeave(from, to, fn, argFrom, argTo) {\n var common = from && to ? getLowestCommonAncestor(from, to) : null;\n var pathFrom = [];\n\n while (from && from !== common) {\n pathFrom.push(from);\n from = from._nativeParent;\n }\n\n var pathTo = [];\n\n while (to && to !== common) {\n pathTo.push(to);\n to = to._nativeParent;\n }\n\n var i;\n\n for (i = 0; i < pathFrom.length; i++) {\n fn(pathFrom[i], true, argFrom);\n }\n\n for (i = pathTo.length; i-- > 0;) {\n fn(pathTo[i], false, argTo);\n }\n}\n\nmodule.exports = {\n isAncestor: isAncestor,\n getLowestCommonAncestor: getLowestCommonAncestor,\n getParentInstance: getParentInstance,\n traverseTwoPhase: traverseTwoPhase,\n traverseEnterLeave: traverseEnterLeave\n};","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDOMTextComponent\n */\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar DOMChildrenOperations = require('./DOMChildrenOperations');\n\nvar DOMLazyTree = require('./DOMLazyTree');\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar ReactPerf = require('./ReactPerf');\n\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar validateDOMNesting = require('./validateDOMNesting');\n/**\n * Text nodes violate a couple assumptions that React makes about components:\n *\n * - When mounting text into the DOM, adjacent text nodes are merged.\n * - Text nodes cannot be assigned a React root ID.\n *\n * This component is used to wrap strings between comment nodes so that they\n * can undergo the same reconciliation that is applied to elements.\n *\n * TODO: Investigate representing React components in the DOM with text nodes.\n *\n * @class ReactDOMTextComponent\n * @extends ReactComponent\n * @internal\n */\n\n\nvar ReactDOMTextComponent = function ReactDOMTextComponent(text) {\n // TODO: This is really a ReactText (ReactNode), not a ReactElement\n this._currentElement = text;\n this._stringText = '' + text; // ReactDOMComponentTree uses these:\n\n this._nativeNode = null;\n this._nativeParent = null; // Properties\n\n this._domID = null;\n this._mountIndex = 0;\n this._closingComment = null;\n this._commentNodes = null;\n};\n\n_assign(ReactDOMTextComponent.prototype, {\n /**\n * Creates the markup for this text node. This node is not intended to have\n * any features besides containing text content.\n *\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @return {string} Markup for this text node.\n * @internal\n */\n mountComponent: function mountComponent(transaction, nativeParent, nativeContainerInfo, context) {\n if (process.env.NODE_ENV !== 'production') {\n var parentInfo;\n\n if (nativeParent != null) {\n parentInfo = nativeParent._ancestorInfo;\n } else if (nativeContainerInfo != null) {\n parentInfo = nativeContainerInfo._ancestorInfo;\n }\n\n if (parentInfo) {\n // parentInfo should always be present except for the top-level\n // component when server rendering\n validateDOMNesting('#text', this, parentInfo);\n }\n }\n\n var domID = nativeContainerInfo._idCounter++;\n var openingValue = ' react-text: ' + domID + ' ';\n var closingValue = ' /react-text ';\n this._domID = domID;\n this._nativeParent = nativeParent;\n\n if (transaction.useCreateElement) {\n var ownerDocument = nativeContainerInfo._ownerDocument;\n var openingComment = ownerDocument.createComment(openingValue);\n var closingComment = ownerDocument.createComment(closingValue);\n var lazyTree = DOMLazyTree(ownerDocument.createDocumentFragment());\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(openingComment));\n\n if (this._stringText) {\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(ownerDocument.createTextNode(this._stringText)));\n }\n\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(closingComment));\n ReactDOMComponentTree.precacheNode(this, openingComment);\n this._closingComment = closingComment;\n return lazyTree;\n } else {\n var escapedText = escapeTextContentForBrowser(this._stringText);\n\n if (transaction.renderToStaticMarkup) {\n // Normally we'd wrap this between comment nodes for the reasons stated\n // above, but since this is a situation where React won't take over\n // (static pages), we can simply return the text as it is.\n return escapedText;\n }\n\n return '<!--' + openingValue + '-->' + escapedText + '<!--' + closingValue + '-->';\n }\n },\n\n /**\n * Updates this component by updating the text content.\n *\n * @param {ReactText} nextText The next text content\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n receiveComponent: function receiveComponent(nextText, transaction) {\n if (nextText !== this._currentElement) {\n this._currentElement = nextText;\n var nextStringText = '' + nextText;\n\n if (nextStringText !== this._stringText) {\n // TODO: Save this as pending props and use performUpdateIfNecessary\n // and/or updateComponent to do the actual update for consistency with\n // other component types?\n this._stringText = nextStringText;\n var commentNodes = this.getNativeNode();\n DOMChildrenOperations.replaceDelimitedText(commentNodes[0], commentNodes[1], nextStringText);\n }\n }\n },\n getNativeNode: function getNativeNode() {\n var nativeNode = this._commentNodes;\n\n if (nativeNode) {\n return nativeNode;\n }\n\n if (!this._closingComment) {\n var openingComment = ReactDOMComponentTree.getNodeFromInstance(this);\n var node = openingComment.nextSibling;\n\n while (true) {\n !(node != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Missing closing comment for text component %s', this._domID) : invariant(false) : void 0;\n\n if (node.nodeType === 8 && node.nodeValue === ' /react-text ') {\n this._closingComment = node;\n break;\n }\n\n node = node.nextSibling;\n }\n }\n\n nativeNode = [this._nativeNode, this._closingComment];\n this._commentNodes = nativeNode;\n return nativeNode;\n },\n unmountComponent: function unmountComponent() {\n this._closingComment = null;\n this._commentNodes = null;\n ReactDOMComponentTree.uncacheNode(this);\n }\n});\n\nReactPerf.measureMethods(ReactDOMTextComponent.prototype, 'ReactDOMTextComponent', {\n mountComponent: 'mountComponent',\n receiveComponent: 'receiveComponent'\n});\nmodule.exports = ReactDOMTextComponent;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDefaultBatchingStrategy\n */\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar ReactUpdates = require('./ReactUpdates');\n\nvar Transaction = require('./Transaction');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\n\nvar RESET_BATCHED_UPDATES = {\n initialize: emptyFunction,\n close: function close() {\n ReactDefaultBatchingStrategy.isBatchingUpdates = false;\n }\n};\nvar FLUSH_BATCHED_UPDATES = {\n initialize: emptyFunction,\n close: ReactUpdates.flushBatchedUpdates.bind(ReactUpdates)\n};\nvar TRANSACTION_WRAPPERS = [FLUSH_BATCHED_UPDATES, RESET_BATCHED_UPDATES];\n\nfunction ReactDefaultBatchingStrategyTransaction() {\n this.reinitializeTransaction();\n}\n\n_assign(ReactDefaultBatchingStrategyTransaction.prototype, Transaction.Mixin, {\n getTransactionWrappers: function getTransactionWrappers() {\n return TRANSACTION_WRAPPERS;\n }\n});\n\nvar transaction = new ReactDefaultBatchingStrategyTransaction();\nvar ReactDefaultBatchingStrategy = {\n isBatchingUpdates: false,\n\n /**\n * Call the provided function in a context within which calls to `setState`\n * and friends are batched such that components aren't updated unnecessarily.\n */\n batchedUpdates: function batchedUpdates(callback, a, b, c, d, e) {\n var alreadyBatchingUpdates = ReactDefaultBatchingStrategy.isBatchingUpdates;\n ReactDefaultBatchingStrategy.isBatchingUpdates = true; // The code is written this way to avoid extra allocations\n\n if (alreadyBatchingUpdates) {\n callback(a, b, c, d, e);\n } else {\n transaction.perform(callback, null, a, b, c, d, e);\n }\n }\n};\nmodule.exports = ReactDefaultBatchingStrategy;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactEventListener\n */\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar EventListener = require('fbjs/lib/EventListener');\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar PooledClass = require('./PooledClass');\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar ReactUpdates = require('./ReactUpdates');\n\nvar getEventTarget = require('./getEventTarget');\n\nvar getUnboundedScrollPosition = require('fbjs/lib/getUnboundedScrollPosition');\n/**\n * Find the deepest React component completely containing the root of the\n * passed-in instance (for use when entire React trees are nested within each\n * other). If React trees are not nested, returns null.\n */\n\n\nfunction findParent(inst) {\n // TODO: It may be a good idea to cache this to prevent unnecessary DOM\n // traversal, but caching is difficult to do correctly without using a\n // mutation observer to listen for all DOM changes.\n while (inst._nativeParent) {\n inst = inst._nativeParent;\n }\n\n var rootNode = ReactDOMComponentTree.getNodeFromInstance(inst);\n var container = rootNode.parentNode;\n return ReactDOMComponentTree.getClosestInstanceFromNode(container);\n} // Used to store ancestor hierarchy in top level callback\n\n\nfunction TopLevelCallbackBookKeeping(topLevelType, nativeEvent) {\n this.topLevelType = topLevelType;\n this.nativeEvent = nativeEvent;\n this.ancestors = [];\n}\n\n_assign(TopLevelCallbackBookKeeping.prototype, {\n destructor: function destructor() {\n this.topLevelType = null;\n this.nativeEvent = null;\n this.ancestors.length = 0;\n }\n});\n\nPooledClass.addPoolingTo(TopLevelCallbackBookKeeping, PooledClass.twoArgumentPooler);\n\nfunction handleTopLevelImpl(bookKeeping) {\n var nativeEventTarget = getEventTarget(bookKeeping.nativeEvent);\n var targetInst = ReactDOMComponentTree.getClosestInstanceFromNode(nativeEventTarget); // Loop through the hierarchy, in case there's any nested components.\n // It's important that we build the array of ancestors before calling any\n // event handlers, because event handlers can modify the DOM, leading to\n // inconsistencies with ReactMount's node cache. See #1105.\n\n var ancestor = targetInst;\n\n do {\n bookKeeping.ancestors.push(ancestor);\n ancestor = ancestor && findParent(ancestor);\n } while (ancestor);\n\n for (var i = 0; i < bookKeeping.ancestors.length; i++) {\n targetInst = bookKeeping.ancestors[i];\n\n ReactEventListener._handleTopLevel(bookKeeping.topLevelType, targetInst, bookKeeping.nativeEvent, getEventTarget(bookKeeping.nativeEvent));\n }\n}\n\nfunction scrollValueMonitor(cb) {\n var scrollPosition = getUnboundedScrollPosition(window);\n cb(scrollPosition);\n}\n\nvar ReactEventListener = {\n _enabled: true,\n _handleTopLevel: null,\n WINDOW_HANDLE: ExecutionEnvironment.canUseDOM ? window : null,\n setHandleTopLevel: function setHandleTopLevel(handleTopLevel) {\n ReactEventListener._handleTopLevel = handleTopLevel;\n },\n setEnabled: function setEnabled(enabled) {\n ReactEventListener._enabled = !!enabled;\n },\n isEnabled: function isEnabled() {\n return ReactEventListener._enabled;\n },\n\n /**\n * Traps top-level events by using event bubbling.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {string} handlerBaseName Event name (e.g. \"click\").\n * @param {object} handle Element on which to attach listener.\n * @return {?object} An object with a remove function which will forcefully\n * remove the listener.\n * @internal\n */\n trapBubbledEvent: function trapBubbledEvent(topLevelType, handlerBaseName, handle) {\n var element = handle;\n\n if (!element) {\n return null;\n }\n\n return EventListener.listen(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));\n },\n\n /**\n * Traps a top-level event by using event capturing.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {string} handlerBaseName Event name (e.g. \"click\").\n * @param {object} handle Element on which to attach listener.\n * @return {?object} An object with a remove function which will forcefully\n * remove the listener.\n * @internal\n */\n trapCapturedEvent: function trapCapturedEvent(topLevelType, handlerBaseName, handle) {\n var element = handle;\n\n if (!element) {\n return null;\n }\n\n return EventListener.capture(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));\n },\n monitorScrollValue: function monitorScrollValue(refresh) {\n var callback = scrollValueMonitor.bind(null, refresh);\n EventListener.listen(window, 'scroll', callback);\n },\n dispatchEvent: function dispatchEvent(topLevelType, nativeEvent) {\n if (!ReactEventListener._enabled) {\n return;\n }\n\n var bookKeeping = TopLevelCallbackBookKeeping.getPooled(topLevelType, nativeEvent);\n\n try {\n // Event queue being processed in the same cycle allows\n // `preventDefault`.\n ReactUpdates.batchedUpdates(handleTopLevelImpl, bookKeeping);\n } finally {\n TopLevelCallbackBookKeeping.release(bookKeeping);\n }\n }\n};\nmodule.exports = ReactEventListener;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n'use strict';\n/**\n * Gets the scroll position of the supplied element or window.\n *\n * The return values are unbounded, unlike `getScrollPosition`. This means they\n * may be negative or exceed the element boundaries (which is possible using\n * inertial scrolling).\n *\n * @param {DOMWindow|DOMElement} scrollable\n * @return {object} Map with `x` and `y` keys.\n */\n\nfunction getUnboundedScrollPosition(scrollable) {\n if (scrollable.Window && scrollable instanceof scrollable.Window) {\n return {\n x: scrollable.pageXOffset || scrollable.document.documentElement.scrollLeft,\n y: scrollable.pageYOffset || scrollable.document.documentElement.scrollTop\n };\n }\n\n return {\n x: scrollable.scrollLeft,\n y: scrollable.scrollTop\n };\n}\n\nmodule.exports = getUnboundedScrollPosition;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactInjection\n */\n'use strict';\n\nvar DOMProperty = require('./DOMProperty');\n\nvar EventPluginHub = require('./EventPluginHub');\n\nvar EventPluginUtils = require('./EventPluginUtils');\n\nvar ReactComponentEnvironment = require('./ReactComponentEnvironment');\n\nvar ReactClass = require('./ReactClass');\n\nvar ReactEmptyComponent = require('./ReactEmptyComponent');\n\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\n\nvar ReactNativeComponent = require('./ReactNativeComponent');\n\nvar ReactPerf = require('./ReactPerf');\n\nvar ReactUpdates = require('./ReactUpdates');\n\nvar ReactInjection = {\n Component: ReactComponentEnvironment.injection,\n Class: ReactClass.injection,\n DOMProperty: DOMProperty.injection,\n EmptyComponent: ReactEmptyComponent.injection,\n EventPluginHub: EventPluginHub.injection,\n EventPluginUtils: EventPluginUtils.injection,\n EventEmitter: ReactBrowserEventEmitter.injection,\n NativeComponent: ReactNativeComponent.injection,\n Perf: ReactPerf.injection,\n Updates: ReactUpdates.injection\n};\nmodule.exports = ReactInjection;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactReconcileTransaction\n */\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar CallbackQueue = require('./CallbackQueue');\n\nvar PooledClass = require('./PooledClass');\n\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\n\nvar ReactInputSelection = require('./ReactInputSelection');\n\nvar Transaction = require('./Transaction');\n/**\n * Ensures that, when possible, the selection range (currently selected text\n * input) is not disturbed by performing the transaction.\n */\n\n\nvar SELECTION_RESTORATION = {\n /**\n * @return {Selection} Selection information.\n */\n initialize: ReactInputSelection.getSelectionInformation,\n\n /**\n * @param {Selection} sel Selection information returned from `initialize`.\n */\n close: ReactInputSelection.restoreSelection\n};\n/**\n * Suppresses events (blur/focus) that could be inadvertently dispatched due to\n * high level DOM manipulations (like temporarily removing a text input from the\n * DOM).\n */\n\nvar EVENT_SUPPRESSION = {\n /**\n * @return {boolean} The enabled status of `ReactBrowserEventEmitter` before\n * the reconciliation.\n */\n initialize: function initialize() {\n var currentlyEnabled = ReactBrowserEventEmitter.isEnabled();\n ReactBrowserEventEmitter.setEnabled(false);\n return currentlyEnabled;\n },\n\n /**\n * @param {boolean} previouslyEnabled Enabled status of\n * `ReactBrowserEventEmitter` before the reconciliation occurred. `close`\n * restores the previous value.\n */\n close: function close(previouslyEnabled) {\n ReactBrowserEventEmitter.setEnabled(previouslyEnabled);\n }\n};\n/**\n * Provides a queue for collecting `componentDidMount` and\n * `componentDidUpdate` callbacks during the transaction.\n */\n\nvar ON_DOM_READY_QUEUEING = {\n /**\n * Initializes the internal `onDOMReady` queue.\n */\n initialize: function initialize() {\n this.reactMountReady.reset();\n },\n\n /**\n * After DOM is flushed, invoke all registered `onDOMReady` callbacks.\n */\n close: function close() {\n this.reactMountReady.notifyAll();\n }\n};\n/**\n * Executed within the scope of the `Transaction` instance. Consider these as\n * being member methods, but with an implied ordering while being isolated from\n * each other.\n */\n\nvar TRANSACTION_WRAPPERS = [SELECTION_RESTORATION, EVENT_SUPPRESSION, ON_DOM_READY_QUEUEING];\n/**\n * Currently:\n * - The order that these are listed in the transaction is critical:\n * - Suppresses events.\n * - Restores selection range.\n *\n * Future:\n * - Restore document/overflow scroll positions that were unintentionally\n * modified via DOM insertions above the top viewport boundary.\n * - Implement/integrate with customized constraint based layout system and keep\n * track of which dimensions must be remeasured.\n *\n * @class ReactReconcileTransaction\n */\n\nfunction ReactReconcileTransaction(useCreateElement) {\n this.reinitializeTransaction(); // Only server-side rendering really needs this option (see\n // `ReactServerRendering`), but server-side uses\n // `ReactServerRenderingTransaction` instead. This option is here so that it's\n // accessible and defaults to false when `ReactDOMComponent` and\n // `ReactTextComponent` checks it in `mountComponent`.`\n\n this.renderToStaticMarkup = false;\n this.reactMountReady = CallbackQueue.getPooled(null);\n this.useCreateElement = useCreateElement;\n}\n\nvar Mixin = {\n /**\n * @see Transaction\n * @abstract\n * @final\n * @return {array<object>} List of operation wrap procedures.\n * TODO: convert to array<TransactionWrapper>\n */\n getTransactionWrappers: function getTransactionWrappers() {\n return TRANSACTION_WRAPPERS;\n },\n\n /**\n * @return {object} The queue to collect `onDOMReady` callbacks with.\n */\n getReactMountReady: function getReactMountReady() {\n return this.reactMountReady;\n },\n\n /**\n * Save current transaction state -- if the return value from this method is\n * passed to `rollback`, the transaction will be reset to that state.\n */\n checkpoint: function checkpoint() {\n // reactMountReady is the our only stateful wrapper\n return this.reactMountReady.checkpoint();\n },\n rollback: function rollback(checkpoint) {\n this.reactMountReady.rollback(checkpoint);\n },\n\n /**\n * `PooledClass` looks for this, and will invoke this before allowing this\n * instance to be reused.\n */\n destructor: function destructor() {\n CallbackQueue.release(this.reactMountReady);\n this.reactMountReady = null;\n }\n};\n\n_assign(ReactReconcileTransaction.prototype, Transaction.Mixin, Mixin);\n\nPooledClass.addPoolingTo(ReactReconcileTransaction);\nmodule.exports = ReactReconcileTransaction;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDOMSelection\n */\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar getNodeForCharacterOffset = require('./getNodeForCharacterOffset');\n\nvar getTextContentAccessor = require('./getTextContentAccessor');\n/**\n * While `isCollapsed` is available on the Selection object and `collapsed`\n * is available on the Range object, IE11 sometimes gets them wrong.\n * If the anchor/focus nodes and offsets are the same, the range is collapsed.\n */\n\n\nfunction isCollapsed(anchorNode, anchorOffset, focusNode, focusOffset) {\n return anchorNode === focusNode && anchorOffset === focusOffset;\n}\n/**\n * Get the appropriate anchor and focus node/offset pairs for IE.\n *\n * The catch here is that IE's selection API doesn't provide information\n * about whether the selection is forward or backward, so we have to\n * behave as though it's always forward.\n *\n * IE text differs from modern selection in that it behaves as though\n * block elements end with a new line. This means character offsets will\n * differ between the two APIs.\n *\n * @param {DOMElement} node\n * @return {object}\n */\n\n\nfunction getIEOffsets(node) {\n var selection = document.selection;\n var selectedRange = selection.createRange();\n var selectedLength = selectedRange.text.length; // Duplicate selection so we can move range without breaking user selection.\n\n var fromStart = selectedRange.duplicate();\n fromStart.moveToElementText(node);\n fromStart.setEndPoint('EndToStart', selectedRange);\n var startOffset = fromStart.text.length;\n var endOffset = startOffset + selectedLength;\n return {\n start: startOffset,\n end: endOffset\n };\n}\n/**\n * @param {DOMElement} node\n * @return {?object}\n */\n\n\nfunction getModernOffsets(node) {\n var selection = window.getSelection && window.getSelection();\n\n if (!selection || selection.rangeCount === 0) {\n return null;\n }\n\n var anchorNode = selection.anchorNode;\n var anchorOffset = selection.anchorOffset;\n var focusNode = selection.focusNode;\n var focusOffset = selection.focusOffset;\n var currentRange = selection.getRangeAt(0); // In Firefox, range.startContainer and range.endContainer can be \"anonymous\n // divs\", e.g. the up/down buttons on an <input type=\"number\">. Anonymous\n // divs do not seem to expose properties, triggering a \"Permission denied\n // error\" if any of its properties are accessed. The only seemingly possible\n // way to avoid erroring is to access a property that typically works for\n // non-anonymous divs and catch any error that may otherwise arise. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=208427\n\n try {\n /* eslint-disable no-unused-expressions */\n currentRange.startContainer.nodeType;\n currentRange.endContainer.nodeType;\n /* eslint-enable no-unused-expressions */\n } catch (e) {\n return null;\n } // If the node and offset values are the same, the selection is collapsed.\n // `Selection.isCollapsed` is available natively, but IE sometimes gets\n // this value wrong.\n\n\n var isSelectionCollapsed = isCollapsed(selection.anchorNode, selection.anchorOffset, selection.focusNode, selection.focusOffset);\n var rangeLength = isSelectionCollapsed ? 0 : currentRange.toString().length;\n var tempRange = currentRange.cloneRange();\n tempRange.selectNodeContents(node);\n tempRange.setEnd(currentRange.startContainer, currentRange.startOffset);\n var isTempRangeCollapsed = isCollapsed(tempRange.startContainer, tempRange.startOffset, tempRange.endContainer, tempRange.endOffset);\n var start = isTempRangeCollapsed ? 0 : tempRange.toString().length;\n var end = start + rangeLength; // Detect whether the selection is backward.\n\n var detectionRange = document.createRange();\n detectionRange.setStart(anchorNode, anchorOffset);\n detectionRange.setEnd(focusNode, focusOffset);\n var isBackward = detectionRange.collapsed;\n return {\n start: isBackward ? end : start,\n end: isBackward ? start : end\n };\n}\n/**\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\n\n\nfunction setIEOffsets(node, offsets) {\n var range = document.selection.createRange().duplicate();\n var start, end;\n\n if (offsets.end === undefined) {\n start = offsets.start;\n end = start;\n } else if (offsets.start > offsets.end) {\n start = offsets.end;\n end = offsets.start;\n } else {\n start = offsets.start;\n end = offsets.end;\n }\n\n range.moveToElementText(node);\n range.moveStart('character', start);\n range.setEndPoint('EndToStart', range);\n range.moveEnd('character', end - start);\n range.select();\n}\n/**\n * In modern non-IE browsers, we can support both forward and backward\n * selections.\n *\n * Note: IE10+ supports the Selection object, but it does not support\n * the `extend` method, which means that even in modern IE, it's not possible\n * to programmatically create a backward selection. Thus, for all IE\n * versions, we use the old IE API to create our selections.\n *\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\n\n\nfunction setModernOffsets(node, offsets) {\n if (!window.getSelection) {\n return;\n }\n\n var selection = window.getSelection();\n var length = node[getTextContentAccessor()].length;\n var start = Math.min(offsets.start, length);\n var end = offsets.end === undefined ? start : Math.min(offsets.end, length); // IE 11 uses modern selection, but doesn't support the extend method.\n // Flip backward selections, so we can set with a single range.\n\n if (!selection.extend && start > end) {\n var temp = end;\n end = start;\n start = temp;\n }\n\n var startMarker = getNodeForCharacterOffset(node, start);\n var endMarker = getNodeForCharacterOffset(node, end);\n\n if (startMarker && endMarker) {\n var range = document.createRange();\n range.setStart(startMarker.node, startMarker.offset);\n selection.removeAllRanges();\n\n if (start > end) {\n selection.addRange(range);\n selection.extend(endMarker.node, endMarker.offset);\n } else {\n range.setEnd(endMarker.node, endMarker.offset);\n selection.addRange(range);\n }\n }\n}\n\nvar useIEOffsets = ExecutionEnvironment.canUseDOM && 'selection' in document && !('getSelection' in window);\nvar ReactDOMSelection = {\n /**\n * @param {DOMElement} node\n */\n getOffsets: useIEOffsets ? getIEOffsets : getModernOffsets,\n\n /**\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\n setOffsets: useIEOffsets ? setIEOffsets : setModernOffsets\n};\nmodule.exports = ReactDOMSelection;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule getNodeForCharacterOffset\n */\n'use strict';\n/**\n * Given any node return the first leaf node without children.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {DOMElement|DOMTextNode}\n */\n\nfunction getLeafNode(node) {\n while (node && node.firstChild) {\n node = node.firstChild;\n }\n\n return node;\n}\n/**\n * Get the next sibling within a container. This will walk up the\n * DOM if a node's siblings have been exhausted.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {?DOMElement|DOMTextNode}\n */\n\n\nfunction getSiblingNode(node) {\n while (node) {\n if (node.nextSibling) {\n return node.nextSibling;\n }\n\n node = node.parentNode;\n }\n}\n/**\n * Get object describing the nodes which contain characters at offset.\n *\n * @param {DOMElement|DOMTextNode} root\n * @param {number} offset\n * @return {?object}\n */\n\n\nfunction getNodeForCharacterOffset(root, offset) {\n var node = getLeafNode(root);\n var nodeStart = 0;\n var nodeEnd = 0;\n\n while (node) {\n if (node.nodeType === 3) {\n nodeEnd = nodeStart + node.textContent.length;\n\n if (nodeStart <= offset && nodeEnd >= offset) {\n return {\n node: node,\n offset: offset - nodeStart\n };\n }\n\n nodeStart = nodeEnd;\n }\n\n node = getLeafNode(getSiblingNode(node));\n }\n}\n\nmodule.exports = getNodeForCharacterOffset;","'use strict';\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\nvar isTextNode = require('./isTextNode');\n/*eslint-disable no-bitwise */\n\n/**\n * Checks if a given DOM node contains or is another DOM node.\n */\n\n\nfunction containsNode(outerNode, innerNode) {\n if (!outerNode || !innerNode) {\n return false;\n } else if (outerNode === innerNode) {\n return true;\n } else if (isTextNode(outerNode)) {\n return false;\n } else if (isTextNode(innerNode)) {\n return containsNode(outerNode, innerNode.parentNode);\n } else if ('contains' in outerNode) {\n return outerNode.contains(innerNode);\n } else if (outerNode.compareDocumentPosition) {\n return !!(outerNode.compareDocumentPosition(innerNode) & 16);\n } else {\n return false;\n }\n}\n\nmodule.exports = containsNode;","'use strict';\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\nvar isNode = require('./isNode');\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM text node.\n */\n\n\nfunction isTextNode(object) {\n return isNode(object) && object.nodeType == 3;\n}\n\nmodule.exports = isTextNode;","'use strict';\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM node.\n */\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction isNode(object) {\n var doc = object ? object.ownerDocument || object : document;\n var defaultView = doc.defaultView || window;\n return !!(object && (typeof defaultView.Node === 'function' ? object instanceof defaultView.Node : _typeof(object) === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string'));\n}\n\nmodule.exports = isNode;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SVGDOMPropertyConfig\n */\n'use strict';\n\nvar NS = {\n xlink: 'http://www.w3.org/1999/xlink',\n xml: 'http://www.w3.org/XML/1998/namespace'\n}; // We use attributes for everything SVG so let's avoid some duplication and run\n// code instead.\n// The following are all specified in the HTML config already so we exclude here.\n// - class (as className)\n// - color\n// - height\n// - id\n// - lang\n// - max\n// - media\n// - method\n// - min\n// - name\n// - style\n// - target\n// - type\n// - width\n\nvar ATTRS = {\n accentHeight: 'accent-height',\n accumulate: 0,\n additive: 0,\n alignmentBaseline: 'alignment-baseline',\n allowReorder: 'allowReorder',\n alphabetic: 0,\n amplitude: 0,\n arabicForm: 'arabic-form',\n ascent: 0,\n attributeName: 'attributeName',\n attributeType: 'attributeType',\n autoReverse: 'autoReverse',\n azimuth: 0,\n baseFrequency: 'baseFrequency',\n baseProfile: 'baseProfile',\n baselineShift: 'baseline-shift',\n bbox: 0,\n begin: 0,\n bias: 0,\n by: 0,\n calcMode: 'calcMode',\n capHeight: 'cap-height',\n clip: 0,\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n clipPathUnits: 'clipPathUnits',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n contentScriptType: 'contentScriptType',\n contentStyleType: 'contentStyleType',\n cursor: 0,\n cx: 0,\n cy: 0,\n d: 0,\n decelerate: 0,\n descent: 0,\n diffuseConstant: 'diffuseConstant',\n direction: 0,\n display: 0,\n divisor: 0,\n dominantBaseline: 'dominant-baseline',\n dur: 0,\n dx: 0,\n dy: 0,\n edgeMode: 'edgeMode',\n elevation: 0,\n enableBackground: 'enable-background',\n end: 0,\n exponent: 0,\n externalResourcesRequired: 'externalResourcesRequired',\n fill: 0,\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n filter: 0,\n filterRes: 'filterRes',\n filterUnits: 'filterUnits',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n focusable: 0,\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n format: 0,\n from: 0,\n fx: 0,\n fy: 0,\n g1: 0,\n g2: 0,\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n glyphRef: 'glyphRef',\n gradientTransform: 'gradientTransform',\n gradientUnits: 'gradientUnits',\n hanging: 0,\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n ideographic: 0,\n imageRendering: 'image-rendering',\n 'in': 0,\n in2: 0,\n intercept: 0,\n k: 0,\n k1: 0,\n k2: 0,\n k3: 0,\n k4: 0,\n kernelMatrix: 'kernelMatrix',\n kernelUnitLength: 'kernelUnitLength',\n kerning: 0,\n keyPoints: 'keyPoints',\n keySplines: 'keySplines',\n keyTimes: 'keyTimes',\n lengthAdjust: 'lengthAdjust',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n limitingConeAngle: 'limitingConeAngle',\n local: 0,\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n markerHeight: 'markerHeight',\n markerUnits: 'markerUnits',\n markerWidth: 'markerWidth',\n mask: 0,\n maskContentUnits: 'maskContentUnits',\n maskUnits: 'maskUnits',\n mathematical: 0,\n mode: 0,\n numOctaves: 'numOctaves',\n offset: 0,\n opacity: 0,\n operator: 0,\n order: 0,\n orient: 0,\n orientation: 0,\n origin: 0,\n overflow: 0,\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pathLength: 'pathLength',\n patternContentUnits: 'patternContentUnits',\n patternTransform: 'patternTransform',\n patternUnits: 'patternUnits',\n pointerEvents: 'pointer-events',\n points: 0,\n pointsAtX: 'pointsAtX',\n pointsAtY: 'pointsAtY',\n pointsAtZ: 'pointsAtZ',\n preserveAlpha: 'preserveAlpha',\n preserveAspectRatio: 'preserveAspectRatio',\n primitiveUnits: 'primitiveUnits',\n r: 0,\n radius: 0,\n refX: 'refX',\n refY: 'refY',\n renderingIntent: 'rendering-intent',\n repeatCount: 'repeatCount',\n repeatDur: 'repeatDur',\n requiredExtensions: 'requiredExtensions',\n requiredFeatures: 'requiredFeatures',\n restart: 0,\n result: 0,\n rotate: 0,\n rx: 0,\n ry: 0,\n scale: 0,\n seed: 0,\n shapeRendering: 'shape-rendering',\n slope: 0,\n spacing: 0,\n specularConstant: 'specularConstant',\n specularExponent: 'specularExponent',\n speed: 0,\n spreadMethod: 'spreadMethod',\n startOffset: 'startOffset',\n stdDeviation: 'stdDeviation',\n stemh: 0,\n stemv: 0,\n stitchTiles: 'stitchTiles',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n string: 0,\n stroke: 0,\n strokeDasharray: 'stroke-dasharray',\n strokeDashoffset: 'stroke-dashoffset',\n strokeLinecap: 'stroke-linecap',\n strokeLinejoin: 'stroke-linejoin',\n strokeMiterlimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n surfaceScale: 'surfaceScale',\n systemLanguage: 'systemLanguage',\n tableValues: 'tableValues',\n targetX: 'targetX',\n targetY: 'targetY',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n textLength: 'textLength',\n to: 0,\n transform: 0,\n u1: 0,\n u2: 0,\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicode: 0,\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n values: 0,\n vectorEffect: 'vector-effect',\n version: 0,\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n viewBox: 'viewBox',\n viewTarget: 'viewTarget',\n visibility: 0,\n widths: 0,\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n x: 0,\n xHeight: 'x-height',\n x1: 0,\n x2: 0,\n xChannelSelector: 'xChannelSelector',\n xlinkActuate: 'xlink:actuate',\n xlinkArcrole: 'xlink:arcrole',\n xlinkHref: 'xlink:href',\n xlinkRole: 'xlink:role',\n xlinkShow: 'xlink:show',\n xlinkTitle: 'xlink:title',\n xlinkType: 'xlink:type',\n xmlBase: 'xml:base',\n xmlLang: 'xml:lang',\n xmlSpace: 'xml:space',\n y: 0,\n y1: 0,\n y2: 0,\n yChannelSelector: 'yChannelSelector',\n z: 0,\n zoomAndPan: 'zoomAndPan'\n};\nvar SVGDOMPropertyConfig = {\n Properties: {},\n DOMAttributeNamespaces: {\n xlinkActuate: NS.xlink,\n xlinkArcrole: NS.xlink,\n xlinkHref: NS.xlink,\n xlinkRole: NS.xlink,\n xlinkShow: NS.xlink,\n xlinkTitle: NS.xlink,\n xlinkType: NS.xlink,\n xmlBase: NS.xml,\n xmlLang: NS.xml,\n xmlSpace: NS.xml\n },\n DOMAttributeNames: {}\n};\nObject.keys(ATTRS).map(function (key) {\n SVGDOMPropertyConfig.Properties[key] = 0;\n\n if (ATTRS[key]) {\n SVGDOMPropertyConfig.DOMAttributeNames[key] = ATTRS[key];\n }\n});\nmodule.exports = SVGDOMPropertyConfig;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SelectEventPlugin\n */\n'use strict';\n\nvar EventConstants = require('./EventConstants');\n\nvar EventPropagators = require('./EventPropagators');\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar ReactInputSelection = require('./ReactInputSelection');\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\nvar getActiveElement = require('fbjs/lib/getActiveElement');\n\nvar isTextInputElement = require('./isTextInputElement');\n\nvar keyOf = require('fbjs/lib/keyOf');\n\nvar shallowEqual = require('fbjs/lib/shallowEqual');\n\nvar topLevelTypes = EventConstants.topLevelTypes;\nvar skipSelectionChangeEvent = ExecutionEnvironment.canUseDOM && 'documentMode' in document && document.documentMode <= 11;\nvar eventTypes = {\n select: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onSelect: null\n }),\n captured: keyOf({\n onSelectCapture: null\n })\n },\n dependencies: [topLevelTypes.topBlur, topLevelTypes.topContextMenu, topLevelTypes.topFocus, topLevelTypes.topKeyDown, topLevelTypes.topMouseDown, topLevelTypes.topMouseUp, topLevelTypes.topSelectionChange]\n }\n};\nvar activeElement = null;\nvar activeElementInst = null;\nvar lastSelection = null;\nvar mouseDown = false; // Track whether a listener exists for this plugin. If none exist, we do\n// not extract events. See #3639.\n\nvar hasListener = false;\nvar ON_SELECT_KEY = keyOf({\n onSelect: null\n});\n/**\n * Get an object which is a unique representation of the current selection.\n *\n * The return value will not be consistent across nodes or browsers, but\n * two identical selections on the same node will return identical objects.\n *\n * @param {DOMElement} node\n * @return {object}\n */\n\nfunction getSelection(node) {\n if ('selectionStart' in node && ReactInputSelection.hasSelectionCapabilities(node)) {\n return {\n start: node.selectionStart,\n end: node.selectionEnd\n };\n } else if (window.getSelection) {\n var selection = window.getSelection();\n return {\n anchorNode: selection.anchorNode,\n anchorOffset: selection.anchorOffset,\n focusNode: selection.focusNode,\n focusOffset: selection.focusOffset\n };\n } else if (document.selection) {\n var range = document.selection.createRange();\n return {\n parentElement: range.parentElement(),\n text: range.text,\n top: range.boundingTop,\n left: range.boundingLeft\n };\n }\n}\n/**\n * Poll selection to see whether it's changed.\n *\n * @param {object} nativeEvent\n * @return {?SyntheticEvent}\n */\n\n\nfunction constructSelectEvent(nativeEvent, nativeEventTarget) {\n // Ensure we have the right element, and that the user is not dragging a\n // selection (this matches native `select` event behavior). In HTML5, select\n // fires only on input and textarea thus if there's no focused element we\n // won't dispatch.\n if (mouseDown || activeElement == null || activeElement !== getActiveElement()) {\n return null;\n } // Only fire when selection has actually changed.\n\n\n var currentSelection = getSelection(activeElement);\n\n if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) {\n lastSelection = currentSelection;\n var syntheticEvent = SyntheticEvent.getPooled(eventTypes.select, activeElementInst, nativeEvent, nativeEventTarget);\n syntheticEvent.type = 'select';\n syntheticEvent.target = activeElement;\n EventPropagators.accumulateTwoPhaseDispatches(syntheticEvent);\n return syntheticEvent;\n }\n\n return null;\n}\n/**\n * This plugin creates an `onSelect` event that normalizes select events\n * across form elements.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - contentEditable\n *\n * This differs from native browser implementations in the following ways:\n * - Fires on contentEditable fields as well as inputs.\n * - Fires for collapsed selection.\n * - Fires after user input.\n */\n\n\nvar SelectEventPlugin = {\n eventTypes: eventTypes,\n extractEvents: function extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n if (!hasListener) {\n return null;\n }\n\n var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;\n\n switch (topLevelType) {\n // Track the input node that has focus.\n case topLevelTypes.topFocus:\n if (isTextInputElement(targetNode) || targetNode.contentEditable === 'true') {\n activeElement = targetNode;\n activeElementInst = targetInst;\n lastSelection = null;\n }\n\n break;\n\n case topLevelTypes.topBlur:\n activeElement = null;\n activeElementInst = null;\n lastSelection = null;\n break;\n // Don't fire the event while the user is dragging. This matches the\n // semantics of the native select event.\n\n case topLevelTypes.topMouseDown:\n mouseDown = true;\n break;\n\n case topLevelTypes.topContextMenu:\n case topLevelTypes.topMouseUp:\n mouseDown = false;\n return constructSelectEvent(nativeEvent, nativeEventTarget);\n // Chrome and IE fire non-standard event when selection is changed (and\n // sometimes when it hasn't). IE's event fires out of order with respect\n // to key and input events on deletion, so we discard it.\n //\n // Firefox doesn't support selectionchange, so check selection status\n // after each key entry. The selection changes after keydown and before\n // keyup, but we check on keydown as well in the case of holding down a\n // key, when multiple keydown events are fired but only one keyup is.\n // This is also our approach for IE handling, for the reason above.\n\n case topLevelTypes.topSelectionChange:\n if (skipSelectionChangeEvent) {\n break;\n }\n\n // falls through\n\n case topLevelTypes.topKeyDown:\n case topLevelTypes.topKeyUp:\n return constructSelectEvent(nativeEvent, nativeEventTarget);\n }\n\n return null;\n },\n didPutListener: function didPutListener(inst, registrationName, listener) {\n if (registrationName === ON_SELECT_KEY) {\n hasListener = true;\n }\n }\n};\nmodule.exports = SelectEventPlugin;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SimpleEventPlugin\n */\n'use strict';\n\nvar EventConstants = require('./EventConstants');\n\nvar EventListener = require('fbjs/lib/EventListener');\n\nvar EventPropagators = require('./EventPropagators');\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar SyntheticAnimationEvent = require('./SyntheticAnimationEvent');\n\nvar SyntheticClipboardEvent = require('./SyntheticClipboardEvent');\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\nvar SyntheticFocusEvent = require('./SyntheticFocusEvent');\n\nvar SyntheticKeyboardEvent = require('./SyntheticKeyboardEvent');\n\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\n\nvar SyntheticDragEvent = require('./SyntheticDragEvent');\n\nvar SyntheticTouchEvent = require('./SyntheticTouchEvent');\n\nvar SyntheticTransitionEvent = require('./SyntheticTransitionEvent');\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\n\nvar SyntheticWheelEvent = require('./SyntheticWheelEvent');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\n\nvar getEventCharCode = require('./getEventCharCode');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar keyOf = require('fbjs/lib/keyOf');\n\nvar topLevelTypes = EventConstants.topLevelTypes;\nvar eventTypes = {\n abort: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onAbort: true\n }),\n captured: keyOf({\n onAbortCapture: true\n })\n }\n },\n animationEnd: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onAnimationEnd: true\n }),\n captured: keyOf({\n onAnimationEndCapture: true\n })\n }\n },\n animationIteration: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onAnimationIteration: true\n }),\n captured: keyOf({\n onAnimationIterationCapture: true\n })\n }\n },\n animationStart: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onAnimationStart: true\n }),\n captured: keyOf({\n onAnimationStartCapture: true\n })\n }\n },\n blur: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onBlur: true\n }),\n captured: keyOf({\n onBlurCapture: true\n })\n }\n },\n canPlay: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onCanPlay: true\n }),\n captured: keyOf({\n onCanPlayCapture: true\n })\n }\n },\n canPlayThrough: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onCanPlayThrough: true\n }),\n captured: keyOf({\n onCanPlayThroughCapture: true\n })\n }\n },\n click: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onClick: true\n }),\n captured: keyOf({\n onClickCapture: true\n })\n }\n },\n contextMenu: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onContextMenu: true\n }),\n captured: keyOf({\n onContextMenuCapture: true\n })\n }\n },\n copy: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onCopy: true\n }),\n captured: keyOf({\n onCopyCapture: true\n })\n }\n },\n cut: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onCut: true\n }),\n captured: keyOf({\n onCutCapture: true\n })\n }\n },\n doubleClick: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onDoubleClick: true\n }),\n captured: keyOf({\n onDoubleClickCapture: true\n })\n }\n },\n drag: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onDrag: true\n }),\n captured: keyOf({\n onDragCapture: true\n })\n }\n },\n dragEnd: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onDragEnd: true\n }),\n captured: keyOf({\n onDragEndCapture: true\n })\n }\n },\n dragEnter: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onDragEnter: true\n }),\n captured: keyOf({\n onDragEnterCapture: true\n })\n }\n },\n dragExit: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onDragExit: true\n }),\n captured: keyOf({\n onDragExitCapture: true\n })\n }\n },\n dragLeave: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onDragLeave: true\n }),\n captured: keyOf({\n onDragLeaveCapture: true\n })\n }\n },\n dragOver: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onDragOver: true\n }),\n captured: keyOf({\n onDragOverCapture: true\n })\n }\n },\n dragStart: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onDragStart: true\n }),\n captured: keyOf({\n onDragStartCapture: true\n })\n }\n },\n drop: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onDrop: true\n }),\n captured: keyOf({\n onDropCapture: true\n })\n }\n },\n durationChange: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onDurationChange: true\n }),\n captured: keyOf({\n onDurationChangeCapture: true\n })\n }\n },\n emptied: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onEmptied: true\n }),\n captured: keyOf({\n onEmptiedCapture: true\n })\n }\n },\n encrypted: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onEncrypted: true\n }),\n captured: keyOf({\n onEncryptedCapture: true\n })\n }\n },\n ended: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onEnded: true\n }),\n captured: keyOf({\n onEndedCapture: true\n })\n }\n },\n error: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onError: true\n }),\n captured: keyOf({\n onErrorCapture: true\n })\n }\n },\n focus: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onFocus: true\n }),\n captured: keyOf({\n onFocusCapture: true\n })\n }\n },\n input: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onInput: true\n }),\n captured: keyOf({\n onInputCapture: true\n })\n }\n },\n invalid: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onInvalid: true\n }),\n captured: keyOf({\n onInvalidCapture: true\n })\n }\n },\n keyDown: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onKeyDown: true\n }),\n captured: keyOf({\n onKeyDownCapture: true\n })\n }\n },\n keyPress: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onKeyPress: true\n }),\n captured: keyOf({\n onKeyPressCapture: true\n })\n }\n },\n keyUp: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onKeyUp: true\n }),\n captured: keyOf({\n onKeyUpCapture: true\n })\n }\n },\n load: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onLoad: true\n }),\n captured: keyOf({\n onLoadCapture: true\n })\n }\n },\n loadedData: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onLoadedData: true\n }),\n captured: keyOf({\n onLoadedDataCapture: true\n })\n }\n },\n loadedMetadata: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onLoadedMetadata: true\n }),\n captured: keyOf({\n onLoadedMetadataCapture: true\n })\n }\n },\n loadStart: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onLoadStart: true\n }),\n captured: keyOf({\n onLoadStartCapture: true\n })\n }\n },\n // Note: We do not allow listening to mouseOver events. Instead, use the\n // onMouseEnter/onMouseLeave created by `EnterLeaveEventPlugin`.\n mouseDown: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onMouseDown: true\n }),\n captured: keyOf({\n onMouseDownCapture: true\n })\n }\n },\n mouseMove: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onMouseMove: true\n }),\n captured: keyOf({\n onMouseMoveCapture: true\n })\n }\n },\n mouseOut: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onMouseOut: true\n }),\n captured: keyOf({\n onMouseOutCapture: true\n })\n }\n },\n mouseOver: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onMouseOver: true\n }),\n captured: keyOf({\n onMouseOverCapture: true\n })\n }\n },\n mouseUp: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onMouseUp: true\n }),\n captured: keyOf({\n onMouseUpCapture: true\n })\n }\n },\n paste: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onPaste: true\n }),\n captured: keyOf({\n onPasteCapture: true\n })\n }\n },\n pause: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onPause: true\n }),\n captured: keyOf({\n onPauseCapture: true\n })\n }\n },\n play: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onPlay: true\n }),\n captured: keyOf({\n onPlayCapture: true\n })\n }\n },\n playing: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onPlaying: true\n }),\n captured: keyOf({\n onPlayingCapture: true\n })\n }\n },\n progress: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onProgress: true\n }),\n captured: keyOf({\n onProgressCapture: true\n })\n }\n },\n rateChange: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onRateChange: true\n }),\n captured: keyOf({\n onRateChangeCapture: true\n })\n }\n },\n reset: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onReset: true\n }),\n captured: keyOf({\n onResetCapture: true\n })\n }\n },\n scroll: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onScroll: true\n }),\n captured: keyOf({\n onScrollCapture: true\n })\n }\n },\n seeked: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onSeeked: true\n }),\n captured: keyOf({\n onSeekedCapture: true\n })\n }\n },\n seeking: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onSeeking: true\n }),\n captured: keyOf({\n onSeekingCapture: true\n })\n }\n },\n stalled: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onStalled: true\n }),\n captured: keyOf({\n onStalledCapture: true\n })\n }\n },\n submit: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onSubmit: true\n }),\n captured: keyOf({\n onSubmitCapture: true\n })\n }\n },\n suspend: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onSuspend: true\n }),\n captured: keyOf({\n onSuspendCapture: true\n })\n }\n },\n timeUpdate: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onTimeUpdate: true\n }),\n captured: keyOf({\n onTimeUpdateCapture: true\n })\n }\n },\n touchCancel: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onTouchCancel: true\n }),\n captured: keyOf({\n onTouchCancelCapture: true\n })\n }\n },\n touchEnd: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onTouchEnd: true\n }),\n captured: keyOf({\n onTouchEndCapture: true\n })\n }\n },\n touchMove: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onTouchMove: true\n }),\n captured: keyOf({\n onTouchMoveCapture: true\n })\n }\n },\n touchStart: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onTouchStart: true\n }),\n captured: keyOf({\n onTouchStartCapture: true\n })\n }\n },\n transitionEnd: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onTransitionEnd: true\n }),\n captured: keyOf({\n onTransitionEndCapture: true\n })\n }\n },\n volumeChange: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onVolumeChange: true\n }),\n captured: keyOf({\n onVolumeChangeCapture: true\n })\n }\n },\n waiting: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onWaiting: true\n }),\n captured: keyOf({\n onWaitingCapture: true\n })\n }\n },\n wheel: {\n phasedRegistrationNames: {\n bubbled: keyOf({\n onWheel: true\n }),\n captured: keyOf({\n onWheelCapture: true\n })\n }\n }\n};\nvar topLevelEventsToDispatchConfig = {\n topAbort: eventTypes.abort,\n topAnimationEnd: eventTypes.animationEnd,\n topAnimationIteration: eventTypes.animationIteration,\n topAnimationStart: eventTypes.animationStart,\n topBlur: eventTypes.blur,\n topCanPlay: eventTypes.canPlay,\n topCanPlayThrough: eventTypes.canPlayThrough,\n topClick: eventTypes.click,\n topContextMenu: eventTypes.contextMenu,\n topCopy: eventTypes.copy,\n topCut: eventTypes.cut,\n topDoubleClick: eventTypes.doubleClick,\n topDrag: eventTypes.drag,\n topDragEnd: eventTypes.dragEnd,\n topDragEnter: eventTypes.dragEnter,\n topDragExit: eventTypes.dragExit,\n topDragLeave: eventTypes.dragLeave,\n topDragOver: eventTypes.dragOver,\n topDragStart: eventTypes.dragStart,\n topDrop: eventTypes.drop,\n topDurationChange: eventTypes.durationChange,\n topEmptied: eventTypes.emptied,\n topEncrypted: eventTypes.encrypted,\n topEnded: eventTypes.ended,\n topError: eventTypes.error,\n topFocus: eventTypes.focus,\n topInput: eventTypes.input,\n topInvalid: eventTypes.invalid,\n topKeyDown: eventTypes.keyDown,\n topKeyPress: eventTypes.keyPress,\n topKeyUp: eventTypes.keyUp,\n topLoad: eventTypes.load,\n topLoadedData: eventTypes.loadedData,\n topLoadedMetadata: eventTypes.loadedMetadata,\n topLoadStart: eventTypes.loadStart,\n topMouseDown: eventTypes.mouseDown,\n topMouseMove: eventTypes.mouseMove,\n topMouseOut: eventTypes.mouseOut,\n topMouseOver: eventTypes.mouseOver,\n topMouseUp: eventTypes.mouseUp,\n topPaste: eventTypes.paste,\n topPause: eventTypes.pause,\n topPlay: eventTypes.play,\n topPlaying: eventTypes.playing,\n topProgress: eventTypes.progress,\n topRateChange: eventTypes.rateChange,\n topReset: eventTypes.reset,\n topScroll: eventTypes.scroll,\n topSeeked: eventTypes.seeked,\n topSeeking: eventTypes.seeking,\n topStalled: eventTypes.stalled,\n topSubmit: eventTypes.submit,\n topSuspend: eventTypes.suspend,\n topTimeUpdate: eventTypes.timeUpdate,\n topTouchCancel: eventTypes.touchCancel,\n topTouchEnd: eventTypes.touchEnd,\n topTouchMove: eventTypes.touchMove,\n topTouchStart: eventTypes.touchStart,\n topTransitionEnd: eventTypes.transitionEnd,\n topVolumeChange: eventTypes.volumeChange,\n topWaiting: eventTypes.waiting,\n topWheel: eventTypes.wheel\n};\n\nfor (var type in topLevelEventsToDispatchConfig) {\n topLevelEventsToDispatchConfig[type].dependencies = [type];\n}\n\nvar ON_CLICK_KEY = keyOf({\n onClick: null\n});\nvar onClickListeners = {};\nvar SimpleEventPlugin = {\n eventTypes: eventTypes,\n extractEvents: function extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var dispatchConfig = topLevelEventsToDispatchConfig[topLevelType];\n\n if (!dispatchConfig) {\n return null;\n }\n\n var EventConstructor;\n\n switch (topLevelType) {\n case topLevelTypes.topAbort:\n case topLevelTypes.topCanPlay:\n case topLevelTypes.topCanPlayThrough:\n case topLevelTypes.topDurationChange:\n case topLevelTypes.topEmptied:\n case topLevelTypes.topEncrypted:\n case topLevelTypes.topEnded:\n case topLevelTypes.topError:\n case topLevelTypes.topInput:\n case topLevelTypes.topInvalid:\n case topLevelTypes.topLoad:\n case topLevelTypes.topLoadedData:\n case topLevelTypes.topLoadedMetadata:\n case topLevelTypes.topLoadStart:\n case topLevelTypes.topPause:\n case topLevelTypes.topPlay:\n case topLevelTypes.topPlaying:\n case topLevelTypes.topProgress:\n case topLevelTypes.topRateChange:\n case topLevelTypes.topReset:\n case topLevelTypes.topSeeked:\n case topLevelTypes.topSeeking:\n case topLevelTypes.topStalled:\n case topLevelTypes.topSubmit:\n case topLevelTypes.topSuspend:\n case topLevelTypes.topTimeUpdate:\n case topLevelTypes.topVolumeChange:\n case topLevelTypes.topWaiting:\n // HTML Events\n // @see http://www.w3.org/TR/html5/index.html#events-0\n EventConstructor = SyntheticEvent;\n break;\n\n case topLevelTypes.topKeyPress:\n // Firefox creates a keypress event for function keys too. This removes\n // the unwanted keypress events. Enter is however both printable and\n // non-printable. One would expect Tab to be as well (but it isn't).\n if (getEventCharCode(nativeEvent) === 0) {\n return null;\n }\n\n /* falls through */\n\n case topLevelTypes.topKeyDown:\n case topLevelTypes.topKeyUp:\n EventConstructor = SyntheticKeyboardEvent;\n break;\n\n case topLevelTypes.topBlur:\n case topLevelTypes.topFocus:\n EventConstructor = SyntheticFocusEvent;\n break;\n\n case topLevelTypes.topClick:\n // Firefox creates a click event on right mouse clicks. This removes the\n // unwanted click events.\n if (nativeEvent.button === 2) {\n return null;\n }\n\n /* falls through */\n\n case topLevelTypes.topContextMenu:\n case topLevelTypes.topDoubleClick:\n case topLevelTypes.topMouseDown:\n case topLevelTypes.topMouseMove:\n case topLevelTypes.topMouseOut:\n case topLevelTypes.topMouseOver:\n case topLevelTypes.topMouseUp:\n EventConstructor = SyntheticMouseEvent;\n break;\n\n case topLevelTypes.topDrag:\n case topLevelTypes.topDragEnd:\n case topLevelTypes.topDragEnter:\n case topLevelTypes.topDragExit:\n case topLevelTypes.topDragLeave:\n case topLevelTypes.topDragOver:\n case topLevelTypes.topDragStart:\n case topLevelTypes.topDrop:\n EventConstructor = SyntheticDragEvent;\n break;\n\n case topLevelTypes.topTouchCancel:\n case topLevelTypes.topTouchEnd:\n case topLevelTypes.topTouchMove:\n case topLevelTypes.topTouchStart:\n EventConstructor = SyntheticTouchEvent;\n break;\n\n case topLevelTypes.topAnimationEnd:\n case topLevelTypes.topAnimationIteration:\n case topLevelTypes.topAnimationStart:\n EventConstructor = SyntheticAnimationEvent;\n break;\n\n case topLevelTypes.topTransitionEnd:\n EventConstructor = SyntheticTransitionEvent;\n break;\n\n case topLevelTypes.topScroll:\n EventConstructor = SyntheticUIEvent;\n break;\n\n case topLevelTypes.topWheel:\n EventConstructor = SyntheticWheelEvent;\n break;\n\n case topLevelTypes.topCopy:\n case topLevelTypes.topCut:\n case topLevelTypes.topPaste:\n EventConstructor = SyntheticClipboardEvent;\n break;\n }\n\n !EventConstructor ? process.env.NODE_ENV !== 'production' ? invariant(false, 'SimpleEventPlugin: Unhandled event type, `%s`.', topLevelType) : invariant(false) : void 0;\n var event = EventConstructor.getPooled(dispatchConfig, targetInst, nativeEvent, nativeEventTarget);\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n },\n didPutListener: function didPutListener(inst, registrationName, listener) {\n // Mobile Safari does not fire properly bubble click events on\n // non-interactive elements, which means delegated click listeners do not\n // fire. The workaround for this bug involves attaching an empty click\n // listener on the target node.\n if (registrationName === ON_CLICK_KEY) {\n var id = inst._rootNodeID;\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n\n if (!onClickListeners[id]) {\n onClickListeners[id] = EventListener.listen(node, 'click', emptyFunction);\n }\n }\n },\n willDeleteListener: function willDeleteListener(inst, registrationName) {\n if (registrationName === ON_CLICK_KEY) {\n var id = inst._rootNodeID;\n onClickListeners[id].remove();\n delete onClickListeners[id];\n }\n }\n};\nmodule.exports = SimpleEventPlugin;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SyntheticAnimationEvent\n */\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n/**\n * @interface Event\n * @see http://www.w3.org/TR/css3-animations/#AnimationEvent-interface\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent\n */\n\n\nvar AnimationEventInterface = {\n animationName: null,\n elapsedTime: null,\n pseudoElement: null\n};\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\n\nfunction SyntheticAnimationEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticAnimationEvent, AnimationEventInterface);\nmodule.exports = SyntheticAnimationEvent;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SyntheticClipboardEvent\n */\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n/**\n * @interface Event\n * @see http://www.w3.org/TR/clipboard-apis/\n */\n\n\nvar ClipboardEventInterface = {\n clipboardData: function clipboardData(event) {\n return 'clipboardData' in event ? event.clipboardData : window.clipboardData;\n }\n};\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\n\nfunction SyntheticClipboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticClipboardEvent, ClipboardEventInterface);\nmodule.exports = SyntheticClipboardEvent;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SyntheticFocusEvent\n */\n'use strict';\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\n/**\n * @interface FocusEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\n\n\nvar FocusEventInterface = {\n relatedTarget: null\n};\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\n\nfunction SyntheticFocusEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticFocusEvent, FocusEventInterface);\nmodule.exports = SyntheticFocusEvent;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SyntheticKeyboardEvent\n */\n'use strict';\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\n\nvar getEventCharCode = require('./getEventCharCode');\n\nvar getEventKey = require('./getEventKey');\n\nvar getEventModifierState = require('./getEventModifierState');\n/**\n * @interface KeyboardEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\n\n\nvar KeyboardEventInterface = {\n key: getEventKey,\n location: null,\n ctrlKey: null,\n shiftKey: null,\n altKey: null,\n metaKey: null,\n repeat: null,\n locale: null,\n getModifierState: getEventModifierState,\n // Legacy Interface\n charCode: function charCode(event) {\n // `charCode` is the result of a KeyPress event and represents the value of\n // the actual printable character.\n // KeyPress is deprecated, but its replacement is not yet final and not\n // implemented in any major browser. Only KeyPress has charCode.\n if (event.type === 'keypress') {\n return getEventCharCode(event);\n }\n\n return 0;\n },\n keyCode: function keyCode(event) {\n // `keyCode` is the result of a KeyDown/Up event and represents the value of\n // physical keyboard key.\n // The actual meaning of the value depends on the users' keyboard layout\n // which cannot be detected. Assuming that it is a US keyboard layout\n // provides a surprisingly accurate mapping for US and European users.\n // Due to this, it is left to the user to implement at this time.\n if (event.type === 'keydown' || event.type === 'keyup') {\n return event.keyCode;\n }\n\n return 0;\n },\n which: function which(event) {\n // `which` is an alias for either `keyCode` or `charCode` depending on the\n // type of the event.\n if (event.type === 'keypress') {\n return getEventCharCode(event);\n }\n\n if (event.type === 'keydown' || event.type === 'keyup') {\n return event.keyCode;\n }\n\n return 0;\n }\n};\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\n\nfunction SyntheticKeyboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticKeyboardEvent, KeyboardEventInterface);\nmodule.exports = SyntheticKeyboardEvent;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule getEventKey\n */\n'use strict';\n\nvar getEventCharCode = require('./getEventCharCode');\n/**\n * Normalization of deprecated HTML5 `key` values\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\n\n\nvar normalizeKey = {\n 'Esc': 'Escape',\n 'Spacebar': ' ',\n 'Left': 'ArrowLeft',\n 'Up': 'ArrowUp',\n 'Right': 'ArrowRight',\n 'Down': 'ArrowDown',\n 'Del': 'Delete',\n 'Win': 'OS',\n 'Menu': 'ContextMenu',\n 'Apps': 'ContextMenu',\n 'Scroll': 'ScrollLock',\n 'MozPrintableKey': 'Unidentified'\n};\n/**\n * Translation from legacy `keyCode` to HTML5 `key`\n * Only special keys supported, all others depend on keyboard layout or browser\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\n\nvar translateToKey = {\n 8: 'Backspace',\n 9: 'Tab',\n 12: 'Clear',\n 13: 'Enter',\n 16: 'Shift',\n 17: 'Control',\n 18: 'Alt',\n 19: 'Pause',\n 20: 'CapsLock',\n 27: 'Escape',\n 32: ' ',\n 33: 'PageUp',\n 34: 'PageDown',\n 35: 'End',\n 36: 'Home',\n 37: 'ArrowLeft',\n 38: 'ArrowUp',\n 39: 'ArrowRight',\n 40: 'ArrowDown',\n 45: 'Insert',\n 46: 'Delete',\n 112: 'F1',\n 113: 'F2',\n 114: 'F3',\n 115: 'F4',\n 116: 'F5',\n 117: 'F6',\n 118: 'F7',\n 119: 'F8',\n 120: 'F9',\n 121: 'F10',\n 122: 'F11',\n 123: 'F12',\n 144: 'NumLock',\n 145: 'ScrollLock',\n 224: 'Meta'\n};\n/**\n * @param {object} nativeEvent Native browser event.\n * @return {string} Normalized `key` property.\n */\n\nfunction getEventKey(nativeEvent) {\n if (nativeEvent.key) {\n // Normalize inconsistent values reported by browsers due to\n // implementations of a working draft specification.\n // FireFox implements `key` but returns `MozPrintableKey` for all\n // printable characters (normalized to `Unidentified`), ignore it.\n var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n\n if (key !== 'Unidentified') {\n return key;\n }\n } // Browser does not implement `key`, polyfill as much of it as we can.\n\n\n if (nativeEvent.type === 'keypress') {\n var charCode = getEventCharCode(nativeEvent); // The enter-key is technically both printable and non-printable and can\n // thus be captured by `keypress`, no other non-printable key should.\n\n return charCode === 13 ? 'Enter' : String.fromCharCode(charCode);\n }\n\n if (nativeEvent.type === 'keydown' || nativeEvent.type === 'keyup') {\n // While user keyboard layout determines the actual meaning of each\n // `keyCode` value, almost all function keys have a universal value.\n return translateToKey[nativeEvent.keyCode] || 'Unidentified';\n }\n\n return '';\n}\n\nmodule.exports = getEventKey;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SyntheticDragEvent\n */\n'use strict';\n\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\n/**\n * @interface DragEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\n\n\nvar DragEventInterface = {\n dataTransfer: null\n};\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\n\nfunction SyntheticDragEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticMouseEvent.augmentClass(SyntheticDragEvent, DragEventInterface);\nmodule.exports = SyntheticDragEvent;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SyntheticTouchEvent\n */\n'use strict';\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\n\nvar getEventModifierState = require('./getEventModifierState');\n/**\n * @interface TouchEvent\n * @see http://www.w3.org/TR/touch-events/\n */\n\n\nvar TouchEventInterface = {\n touches: null,\n targetTouches: null,\n changedTouches: null,\n altKey: null,\n metaKey: null,\n ctrlKey: null,\n shiftKey: null,\n getModifierState: getEventModifierState\n};\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\n\nfunction SyntheticTouchEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticTouchEvent, TouchEventInterface);\nmodule.exports = SyntheticTouchEvent;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SyntheticTransitionEvent\n */\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2009/WD-css3-transitions-20090320/#transition-events-\n * @see https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent\n */\n\n\nvar TransitionEventInterface = {\n propertyName: null,\n elapsedTime: null,\n pseudoElement: null\n};\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\n\nfunction SyntheticTransitionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticTransitionEvent, TransitionEventInterface);\nmodule.exports = SyntheticTransitionEvent;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SyntheticWheelEvent\n */\n'use strict';\n\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\n/**\n * @interface WheelEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\n\n\nvar WheelEventInterface = {\n deltaX: function deltaX(event) {\n return 'deltaX' in event ? event.deltaX : // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive).\n 'wheelDeltaX' in event ? -event.wheelDeltaX : 0;\n },\n deltaY: function deltaY(event) {\n return 'deltaY' in event ? event.deltaY : // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive).\n 'wheelDeltaY' in event ? -event.wheelDeltaY : // Fallback to `wheelDelta` for IE<9 and normalize (down is positive).\n 'wheelDelta' in event ? -event.wheelDelta : 0;\n },\n deltaZ: null,\n // Browsers without \"deltaMode\" is reporting in raw wheel delta where one\n // notch on the scroll is always +/- 120, roughly equivalent to pixels.\n // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or\n // ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size.\n deltaMode: null\n};\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticMouseEvent}\n */\n\nfunction SyntheticWheelEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticMouseEvent.augmentClass(SyntheticWheelEvent, WheelEventInterface);\nmodule.exports = SyntheticWheelEvent;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDOMContainerInfo\n */\n'use strict';\n\nvar validateDOMNesting = require('./validateDOMNesting');\n\nvar DOC_NODE_TYPE = 9;\n\nfunction ReactDOMContainerInfo(topLevelWrapper, node) {\n var info = {\n _topLevelWrapper: topLevelWrapper,\n _idCounter: 1,\n _ownerDocument: node ? node.nodeType === DOC_NODE_TYPE ? node : node.ownerDocument : null,\n _tag: node ? node.nodeName.toLowerCase() : null,\n _namespaceURI: node ? node.namespaceURI : null\n };\n\n if (process.env.NODE_ENV !== 'production') {\n info._ancestorInfo = node ? validateDOMNesting.updatedAncestorInfo(null, info._tag, null) : null;\n }\n\n return info;\n}\n\nmodule.exports = ReactDOMContainerInfo;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDOMFeatureFlags\n */\n'use strict';\n\nvar ReactDOMFeatureFlags = {\n useCreateElement: true\n};\nmodule.exports = ReactDOMFeatureFlags;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactMarkupChecksum\n */\n'use strict';\n\nvar adler32 = require('./adler32');\n\nvar TAG_END = /\\/?>/;\nvar COMMENT_START = /^<\\!\\-\\-/;\nvar ReactMarkupChecksum = {\n CHECKSUM_ATTR_NAME: 'data-react-checksum',\n\n /**\n * @param {string} markup Markup string\n * @return {string} Markup string with checksum attribute attached\n */\n addChecksumToMarkup: function addChecksumToMarkup(markup) {\n var checksum = adler32(markup); // Add checksum (handle both parent tags, comments and self-closing tags)\n\n if (COMMENT_START.test(markup)) {\n return markup;\n } else {\n return markup.replace(TAG_END, ' ' + ReactMarkupChecksum.CHECKSUM_ATTR_NAME + '=\"' + checksum + '\"$&');\n }\n },\n\n /**\n * @param {string} markup to use\n * @param {DOMElement} element root React element\n * @returns {boolean} whether or not the markup is the same\n */\n canReuseMarkup: function canReuseMarkup(markup, element) {\n var existingChecksum = element.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n existingChecksum = existingChecksum && parseInt(existingChecksum, 10);\n var markupChecksum = adler32(markup);\n return markupChecksum === existingChecksum;\n }\n};\nmodule.exports = ReactMarkupChecksum;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule adler32\n */\n'use strict';\n\nvar MOD = 65521; // adler32 is not cryptographically strong, and is only used to sanity check that\n// markup generated on the server matches the markup generated on the client.\n// This implementation (a modified version of the SheetJS version) has been optimized\n// for our use case, at the expense of conforming to the adler32 specification\n// for non-ascii inputs.\n\nfunction adler32(data) {\n var a = 1;\n var b = 0;\n var i = 0;\n var l = data.length;\n var m = l & ~0x3;\n\n while (i < m) {\n var n = Math.min(i + 4096, m);\n\n for (; i < n; i += 4) {\n b += (a += data.charCodeAt(i)) + (a += data.charCodeAt(i + 1)) + (a += data.charCodeAt(i + 2)) + (a += data.charCodeAt(i + 3));\n }\n\n a %= MOD;\n b %= MOD;\n }\n\n for (; i < l; i++) {\n b += a += data.charCodeAt(i);\n }\n\n a %= MOD;\n b %= MOD;\n return a | b << 16;\n}\n\nmodule.exports = adler32;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule findDOMNode\n */\n'use strict';\n\nvar ReactCurrentOwner = require('./ReactCurrentOwner');\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar ReactInstanceMap = require('./ReactInstanceMap');\n\nvar getNativeComponentFromComposite = require('./getNativeComponentFromComposite');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar warning = require('fbjs/lib/warning');\n/**\n * Returns the DOM node rendered by this element.\n *\n * @param {ReactComponent|DOMElement} componentOrElement\n * @return {?DOMElement} The root node of this element.\n */\n\n\nfunction findDOMNode(componentOrElement) {\n if (process.env.NODE_ENV !== 'production') {\n var owner = ReactCurrentOwner.current;\n\n if (owner !== null) {\n process.env.NODE_ENV !== 'production' ? warning(owner._warnedAboutRefsInRender, '%s is accessing findDOMNode inside its render(). ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', owner.getName() || 'A component') : void 0;\n owner._warnedAboutRefsInRender = true;\n }\n }\n\n if (componentOrElement == null) {\n return null;\n }\n\n if (componentOrElement.nodeType === 1) {\n return componentOrElement;\n }\n\n var inst = ReactInstanceMap.get(componentOrElement);\n\n if (inst) {\n inst = getNativeComponentFromComposite(inst);\n return inst ? ReactDOMComponentTree.getNodeFromInstance(inst) : null;\n }\n\n if (typeof componentOrElement.render === 'function') {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'findDOMNode was called on an unmounted component.') : invariant(false) : void 0;\n } else {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Element appears to be neither ReactComponent nor DOMNode (keys: %s)', Object.keys(componentOrElement)) : invariant(false) : void 0;\n }\n}\n\nmodule.exports = findDOMNode;","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n* @providesModule renderSubtreeIntoContainer\n*/\n'use strict';\n\nvar ReactMount = require('./ReactMount');\n\nmodule.exports = ReactMount.renderSubtreeIntoContainer;","/* eslint-disable no-param-reassign, arrow-body-style, no-shadow */\nimport * as API from 'es6/core/api';\nimport { LoaderError } from 'es6/core/errors';\nimport AggregateMemory from 'es6/models/aggregate-memory';\nimport Goal from 'es6/models/goal';\nimport Grouping from 'es6/models/grouping';\nimport { ItemSource } from 'es6/models/session-config';\nimport StudyNode from 'es6/models/study-node';\nimport ItemPackage from 'es6/models/item-package';\nimport Memory from 'es6/models/memory';\nimport Logger from 'es6/services/logger';\nimport * as ImageManager from 'es6/services/image-manager';\nimport SoundManager from 'es6/services/sound-manager';\nimport Config from 'es6/core/config';\n\n/**\n * These are the loader classes. They are used for making\n * asynchronous calls and can be resolved into promises. They also\n * have a consistent API that should be defined when creating\n * new loaders (easily done by extending the Loader class).\n *\n * abort() - Aborts any pending promise.\n * then(resolve, reject) - Implementation of the then object for the promise.\n */\nclass Loader {\n abort() {\n this.requests.forEach(request => request.abort());\n }\n\n get requests() {\n if (!this._requests) {\n this._requests = [];\n }\n\n return this._requests;\n }\n\n then(...args) {\n return this._promise.then(...args);\n }\n\n _setPromise(promise) {\n if (!(promise instanceof Promise)) {\n throw new LoaderError('Promise undefined');\n }\n\n this._promise = promise.catch((reason) => {\n if (reason.name === 'AjaxAbortedError') {\n Logger.info('Loader Aborted', reason);\n } else if (reason.name === 'AjaxError') {\n Logger.error('Loader Error', reason, reason.stack);\n } else if (reason.name === 'LoaderError') {\n Logger.error('Loader Error', reason, reason.stack);\n } else {\n Logger.error('Unexpected Loading Error', reason, reason.stack);\n }\n\n throw reason;\n });\n }\n}\n\n/*\n * Helper method for the asset loaders.\n */\nfunction getImageAndSoundAssets(assets, entity, transcodeOptions) {\n if (entity.sound) {\n assets.sounds.push(entity.sound);\n }\n\n if (entity.getImage()) {\n let img = entity.getImage();\n\n if (transcodeOptions) {\n img = ImageManager.getTranscodedUrl(img, transcodeOptions);\n }\n assets.images.push(img);\n }\n\n return assets;\n}\n\n/**\n * Loads image and sound assets.\n *\n * assets:\n * images: Array of image URLs.\n * sounds: Array of sound URLs.\n */\nexport class Assets extends Loader {\n constructor(assets = {}) {\n super();\n\n assets = _.defaults(assets, {\n images: [],\n sounds: [],\n });\n\n /**\n * Flash player breaks when the files are not unique.\n */\n assets.images = _.unique(assets.images);\n assets.sounds = _.unique(assets.sounds);\n\n const promise = new Promise((resolve, reject) => {\n let imagesLoading = assets.images.length;\n let soundsLoading = assets.sounds.length;\n\n const hasResolved = () => {\n return imagesLoading === 0 && soundsLoading === 0;\n };\n\n if (hasResolved()) {\n resolve(true);\n }\n\n // Loop through images, if the images are done loading\n // resolve the promise. If they fail, reject the promise.\n _.each(assets.images, (img) => {\n ImageManager.load(img).then(() => {\n imagesLoading--;\n\n if (hasResolved()) {\n resolve(true);\n }\n }).catch((reason) => {\n imagesLoading--;\n\n if (hasResolved()) {\n resolve(true);\n }\n\n Logger.error('Error loading image asset', img, reason);\n });\n });\n\n // Use sound manager to load sounds.\n SoundManager.load(assets.sounds, (sound, success) => {\n if (!success) {\n Logger.error('Error loading sound asset', sound);\n }\n\n soundsLoading--;\n if (hasResolved()) {\n resolve(true);\n }\n }, () => {});\n });\n\n this._setPromise(promise);\n }\n}\n\n/**\n * Loads none item package and sentence related data.\n */\nexport class GoalAssets extends Assets {\n constructor(goal = {}) {\n const assets = {\n images: [],\n sounds: [],\n };\n\n if (goal.icon) {\n assets.images.push(goal.icon);\n }\n\n super(assets);\n }\n}\n\n/**\n * Helper loader for loading item package assets.\n */\nexport class ItemPackageAssets extends Assets {\n /**\n * @param {ItemPackage[]} itemPackages\n * @param {Boolean} includeSentenceAssets\n */\n constructor(itemPackages, includeSentenceAssets = true) {\n const assets = {\n images: [],\n sounds: [],\n };\n\n // Iterate through the item packages.\n _.each(itemPackages, (itemPackage) => {\n // Get assets directly on the itemPackage.\n getImageAndSoundAssets(\n assets,\n itemPackage,\n Config.transcodingSettings.appItemImage\n );\n\n // Get assets on its sentences.\n if (includeSentenceAssets) {\n itemPackage.sentences.forEach((sentence) => {\n getImageAndSoundAssets(\n assets,\n sentence,\n Config.transcodingSettings.appSentenceImage\n );\n });\n }\n });\n\n super(assets);\n }\n}\n\n/**\n * Helper function for creating an Asset Promise for sentence packages.\n *\n * sentences: [Sentence, Sentence, ...]\n */\nexport class SentenceAssets extends Assets {\n constructor(sentences) {\n const assets = {\n images: [],\n sounds: [],\n };\n\n sentences.forEach((sentence) => {\n getImageAndSoundAssets(\n assets,\n sentence,\n Config.transcodingSettings.appSentenceImage\n );\n });\n\n super(assets);\n }\n}\n\n/**\n * Used to primarily cache and load data from an API.\n */\nclass APILoader extends Loader {\n /**\n * Override the default abort behavior. Cached data doesn't\n * have an abort method.\n */\n abort() {\n this.requests.forEach(request => {\n if (request.abort) {\n request.abort();\n }\n });\n }\n}\n\n/**\n * GoalsLoader.\n */\nlet goalResponses = new Map();\nexport class GoalsLoader extends APILoader {\n /**\n * Constructor for GoalsLoader.\n *\n * @param {Array} goalIds\n */\n constructor(goalIds = []) {\n super();\n\n this._requests = goalIds.map((id) => {\n return goalResponses.get(id) || API.getGoal(id);\n });\n\n const promise = Promise.all(this._requests)\n .then(responses => {\n const goals = castToObject(responses, Goal);\n goals.forEach(goal => goalResponses.set(goal.id, goal));\n return goals;\n });\n\n this._setPromise(promise);\n }\n\n /**\n * Eliminates the cache for specified goal IDs, goal memories\n * and aggregate memories.\n *\n * @param {Number[]} goalIds\n */\n static invalidate(goalIds = []) {\n goalIds.forEach((id) => goalResponses.delete(id));\n\n GoalMemoriesLoader.invalidate(goalIds);\n AggregateMemoryLoader.invalidate(goalIds);\n }\n\n /**\n * Invalidates the whole goal cache.\n */\n static invalidateAll() {\n goalResponses = new Map();\n\n GoalMemoriesLoader.invalidateAll();\n AggregateMemoryLoader.invalidateAll();\n }\n}\n\n/**\n * GoalMemoriesLoader\n */\nlet goalMemoriesResponses = new Map();\nexport class GoalMemoriesLoader extends APILoader {\n /**\n * Constructor for GoalMemoriesLoader.\n *\n * @param {Number} goalId\n */\n constructor(goalId) {\n super();\n\n let promise;\n\n if (goalMemoriesResponses.has(goalId)) {\n promise = Promise.resolve(goalMemoriesResponses.get(goalId));\n } else {\n const request = API.getGoalMemories(goalId);\n\n promise = request.then(response => {\n const memories = castToObject(response, Memory);\n goalMemoriesResponses.set(goalId, memories);\n return memories;\n });\n }\n\n this._setPromise(promise);\n }\n\n /**\n * Invalidates goal memories for specified goals.\n *\n * @param {Number} goalId\n */\n static invalidate(goalId) {\n goalMemoriesResponses.delete(goalId);\n }\n\n /**\n * Invalidates all the goal memories.\n */\n static invalidateAll() {\n goalMemoriesResponses = new Map();\n }\n}\n\n/**\n * AggregateMemoriesLoader\n */\nlet aggregateMemoryResponses = new Map();\nexport class AggregateMemoryLoader extends APILoader {\n /**\n * Constructor for AggregateMemoriesLoader.\n *\n * @param {Number} goalId\n */\n constructor(goalId) {\n super();\n\n let promise;\n\n if (aggregateMemoryResponses.has(goalId)) {\n promise = Promise.resolve(aggregateMemoryResponses.get(goalId));\n } else {\n const request = API.getAggregateMemories(goalId);\n\n promise = request.then(response => {\n const aggregateMemory = new AggregateMemory(response);\n aggregateMemoryResponses.set(goalId, aggregateMemory);\n return aggregateMemory;\n });\n }\n\n this._setPromise(promise);\n }\n\n /**\n * Invalidates aggregate memories for specified goals.\n *\n * @param {Number} goalId\n */\n static invalidate(goalId) {\n aggregateMemoryResponses.delete(goalId);\n }\n\n /**\n * Invalidates all the aggregate memories.\n */\n static invalidateAll() {\n aggregateMemoryResponses = new Map();\n }\n}\n\n/**\n * FocusedAggregateMemoriesLoader\n *\n * Only need to maintain a single variable for this. Since it is not\n * mapped across different objects.\n */\nlet focusedAggregateMemoriesResponse = null;\nexport class FocusedAggregateMemoriesLoader extends APILoader {\n /**\n * Constructor for FocusedMemoriesLoader.\n */\n constructor() {\n super();\n\n // If focusedAggregateMemoriesResponse is not null, use that. Otherwise,\n // retrieve the data from the API.\n this._requests = [focusedAggregateMemoriesResponse || API.getFocusedAggregateMemories()];\n\n const promise = Promise.all(this._requests)\n .then(responses => {\n const response = responses[0];\n\n response.goals = castToObject(response.goals, AggregateMemory);\n response.groupings = castToObject(response.groupings, Grouping);\n\n focusedAggregateMemoriesResponse = response;\n\n return response;\n });\n\n this._setPromise(promise);\n }\n\n /**\n * Invalidates the cache for focused memories.\n */\n static invalidate() {\n focusedAggregateMemoriesResponse = null;\n }\n}\n\n/**\n * GoalSuggestionLoader\n *\n * Only need to maintain a single variable for this. Since it is not\n * mapped across different objects.\n */\nlet goalSuggestionResponse = null;\nexport class GoalSuggestionLoader extends APILoader {\n /**\n * Constructor for GoalSuggestionLoader.\n *\n * @param {String} languageCode\n */\n constructor(languageCode) {\n super();\n\n // If goalSuggestionResponse is not null, use that. Otherwise,\n // retrieve the data from the API.\n if (goalSuggestionResponse) {\n this._setPromise(Promise.resolve(goalSuggestionResponse));\n } else {\n const request = API.getGoalSuggestion(languageCode);\n\n this.requests.push(request);\n\n const promise = request.then(response => {\n response.goal = new Goal(response.goal);\n response.aggregateMemory = new AggregateMemory(response.memoryAggregate);\n\n goalSuggestionResponse = response;\n\n return response;\n })\n\n // If there is a 404, this means that there is no recommendation\n // course because either the user has not studied anything or\n // has studied everything. Either way, this is not an error\n // in the traditional sense.\n .catch(reason => {\n if (reason.name === 'AjaxError' && reason.code === 404) {\n return null;\n } else {\n throw reason;\n }\n });\n\n this._setPromise(promise);\n }\n }\n\n /**\n * Invalidates the cache.\n */\n static invalidate() {\n goalSuggestionResponse = null;\n }\n}\n\n/**\n * Creates a thenable for the specific content study mode.\n *\n * @param {Object[]} content\n * @param {Number} content[].contentId\n * @param {Number} content[].goalId\n * @param {Object} studyParameters\n */\nexport class StudySpecificContent extends Loader {\n constructor(content = [], studyParameters = {}) {\n super();\n\n // Get unique goal IDs.\n const goalIds = content.map(c => c.goal_id || c.goalId)\n .filter((goalId, i, arr) => arr.indexOf(goalId) === i);\n\n const apiParams = Object.assign({ content }, studyParameters);\n\n this.requests.push(\n new GoalsLoader(goalIds),\n API.postSpecificContent(apiParams)\n );\n\n const promise = Promise.all(this.requests).then(responses => {\n const goals = responses[0];\n const studySession = responses[1];\n\n return convertDataToModels(goals, studySession, [], [], []);\n });\n\n this._setPromise(promise);\n }\n}\n\n/**\n * Creates a thenable for the single study goal of iKnow.\n *\n * @param {Number} goalId\n * @param {Object} studyParameters parameters sent to the study API\n */\nexport class StudyGoal extends Loader {\n constructor(goalId, studyParameters = {}) {\n super();\n\n this.requests.push(\n new GoalsLoader([goalId]),\n new GoalMemoriesLoader(goalId),\n new AggregateMemoryLoader(goalId)\n );\n\n // Start by retrieving goal and memory data, this will help assess\n // whether or not the user should study strong items.\n const combined = Promise.all(this.requests).then(responses => {\n const goal = responses[0][0];\n const goalMemories = responses[1];\n const aggregateMemory = responses[2];\n\n /**\n * If the include strong field is set, ignore this step.\n * NOTE: By default, sentence trainer always sends includeStrong.\n * If this changes, there will need to be new logic to handle\n * retrieving the sentence count.\n */\n if (studyParameters && !studyParameters.includeStrong) {\n const newExcluded = studyParameters.sessionItemSource === ItemSource.REVIEW;\n const weakExcluded = studyParameters.sessionItemSource === ItemSource.NEW;\n const newItemsCount = goal.getNewItemsCount(aggregateMemory);\n const weakItemsCount = aggregateMemory.items.eligibleItemsCount;\n\n if ((weakExcluded || weakItemsCount === 0) && (newExcluded || newItemsCount === 0)) {\n studyParameters.includeStrong = true;\n }\n }\n\n const studyResponse = API.getStudyData(goalId, studyParameters);\n this.requests.push(studyResponse);\n\n return Promise.all([\n goal,\n studyResponse,\n goalMemories,\n aggregateMemory,\n ]);\n }).then(data => {\n // Cast data to the appropriate types and store the responses.\n return convertDataToModels(\n [data[0]],\n data[1],\n data[2],\n [data[3]],\n []\n );\n });\n\n // Set this as the thenable.\n this._setPromise(combined);\n }\n}\n\n/**\n * Creates a thenable for the single study goal of iKnow.\n *\n * @param {Number} goalId\n * @param {Object} studyParameters parameters sent to the study API\n */\nexport class StudyAll extends Loader {\n constructor(language, studyParameters = {}) {\n super();\n\n // Create an initial study request based on default parameters.\n const initialStudyRequest = API.getStudyAllData(language, studyParameters);\n this.requests.push(initialStudyRequest);\n\n // Check to see if there are any weak study items. If not,\n // add the includeStrong flag and redo the request. This will\n // make sure the user always has something to study.\n const studyDataRequest = initialStudyRequest.then(studyData => {\n // Don't do anything if strong is already included.\n if (studyParameters && !studyParameters.includeStrong) {\n const readyStudyNodes = studyData.filter(studyNode => {\n return (new StudyNode(studyNode)).isReady();\n });\n\n // There are no ready items, include strong and return the next request.\n if (readyStudyNodes.length === 0) {\n studyParameters.includeStrong = true;\n\n const studyStrongRequest = API.getStudyAllData(language, studyParameters);\n this.requests.push(studyStrongRequest);\n\n return studyStrongRequest;\n }\n }\n\n // Default to the initial response.\n return studyData;\n });\n\n // Because getting goals is dependent on the study data,\n // chain it in a separate promise.\n const goals = studyDataRequest.then(studyData => {\n const goalIds = _.chain(studyData)\n .pluck('goalId')\n .compact()\n .unique()\n .value();\n\n const goalLoader = new GoalsLoader(goalIds);\n this.requests.push(goalLoader);\n\n return goalLoader;\n });\n\n // Add focused memory loader as a request that can be cancelled.\n const focusedMemoriesLoader = new FocusedAggregateMemoriesLoader();\n this.requests.push(focusedMemoriesLoader);\n\n const combined = Promise.all([\n goals,\n studyDataRequest,\n focusedMemoriesLoader,\n ]).then(responses => {\n const focusedMemories = responses[2];\n const loadedModels = convertDataToModels(\n responses[0],\n responses[1],\n [],\n focusedMemories.goals,\n focusedMemories.groupings\n );\n\n // Get the language grouping for this goal.\n loadedModels.grouping = loadedModels.groupings.find(grouping => {\n return language === grouping.grouping.cueLanguageCode;\n });\n\n // Just pull the relevant aggregate memories.\n loadedModels.aggregateMemories = loadedModels.aggregateMemories.filter(memory => {\n return loadedModels.grouping.hasGoal(memory.goalId);\n });\n\n return loadedModels;\n });\n\n this._setPromise(combined);\n }\n}\n\nconst convertDataToModels = (goals, studySession, memories, aggregateMemories, groupings) => {\n return {\n goals: castToObject(goals, Goal),\n studySession: castToObject(studySession, StudyNode),\n memories: castToObject(memories, Memory),\n aggregateMemories: castToObject(aggregateMemories, AggregateMemory),\n groupings: castToObject(groupings, Grouping),\n grouping: null,\n };\n};\n\n/*\n * Helper function to cast array of object literals to a particular object\n * instance. This method will not update/override any objects that have\n * already been instantiated.\n */\nconst castToObject = (array, castTo) => {\n return array.map((x) => {\n return x instanceof castTo ? x : new castTo(x);\n });\n};\n\nexport class Diagnostic extends Loader {\n constructor(diagId, params = {}) {\n super();\n\n const diagData = API.getDiagnosticData(diagId, params);\n const diagStudy = API.getDiagnosticStudyData(diagId, _.defaults(params, { items_per_band: 10 }))\n .then(diagStudy => {\n // Cast the study Items to StudyNodes.\n _.each(diagStudy, studyBand => {\n studyBand.content = castToObject(studyBand.content, StudyNode);\n });\n return diagStudy;\n });\n this.requests.push(diagData, diagStudy);\n\n const goals = diagData.then((diagData) => {\n const goals = _.chain(diagData.bands)\n .pluck('diagnosticGoalId')\n .compact()\n .map((goalId) => {\n return API.getGoal(goalId, params);\n })\n .each((request) => {\n this.requests.push(request);\n })\n .value();\n\n return Promise.all(goals);\n }).then(goals => {\n // Cast the goalItems to ItemPackages.\n _.each(goals, goal => {\n goal.goalItems = castToObject(goal.goalItems, ItemPackage);\n });\n return goals;\n });\n\n const combined = Promise.all([\n diagData,\n diagStudy,\n goals,\n ]).then(data => {\n return {\n diagData: data[0],\n diagStudy: data[1],\n goals: data[2],\n };\n });\n\n this._setPromise(combined);\n }\n}\n","/* eslint-disable prefer-template, react/jsx-no-bind */\nimport classnames from 'classnames';\nimport React from 'react';\nimport { t } from 'es6/services/localization';\nimport { QuizDirection } from 'es6/models/user-settings';\n\n/**\n * Mixin for the other panels.\n */\nexport const PanelMixin = {\n /**\n * onDataChange is used to update the state of the setting window\n */\n propTypes: {\n inSession: React.PropTypes.bool.isRequired,\n onDataChange: React.PropTypes.func.isRequired,\n userSettings: React.PropTypes.object.isRequired,\n },\n\n /**\n * Panels using this mixin should define a tab name.\n *\n * statics: {\n * getTabName: function() {\n * return 'Tabname goes here';\n * };\n * }\n */\n\n _handleTypingSpecialCharactersChange(typingSpecialCharacters) {\n const attrs = {\n apps: {\n typingSpecialCharacters,\n },\n };\n\n this.props.onDataChange.call(this, attrs);\n },\n\n /**\n * Helper method to render a On/Off setting. Will bind the boolean value\n * to the onChange method.\n *\n * @param {String} key key to distinguish radio button groups\n * @param {Boolean} value whether toggle is on or off\n * @param {Boolean} isDisabled disables the toggle\n * @param {Function} onChange callback method when toggle is changed\n */\n _renderToggle(key, value, isDisabled = false, onChange) {\n const onId = key + '-on';\n const offId = key + '-off';\n\n return (\n <div className=\"input radio-input\">\n <input className=\"primary\" id={onId} name={key} disabled={isDisabled} type=\"radio\" value checked={value} onChange={onChange.bind(null, true)} />\n <label htmlFor={onId}>{t('on')}</label>\n <input className=\"secondary\" id={offId} name={key} disabled={isDisabled} type=\"radio\" value={false} checked={!value} onChange={onChange.bind(null, false)} />\n <label htmlFor={offId}>{t('off')}</label>\n </div>\n );\n },\n\n /**\n * Helper for rendering typing special characters, as it is used in\n * several settings windows.\n */\n _renderTypingSpecialCharactersToggle() {\n const typingSpecialCharacters = this.props.userSettings.apps.typingSpecialCharacters;\n\n return (\n <div className=\"setting\">\n <h4>{t('type special characters')}</h4>\n {this._renderToggle('typingSpecialCharacters', typingSpecialCharacters, false, this._handleTypingSpecialCharactersChange)}\n </div>\n );\n },\n\n /**\n * Helper method for rendering quiz direction options.\n *\n * @param {String} value the current value\n * @param {Function} onChange callback for when toggle is changed\n */\n _renderQuizDirectionOptions(value, onChange) {\n // These settings must be disabled while in session.\n const className = classnames('content-columns', { disabled: this.props.inSession });\n\n return (\n <div className=\"quiz-settings quiz-settings-quick-review\">\n <div className={className}>\n {this._renderQuizDirectionColumn(\n QuizDirection.All,\n t('js_iknow.both'),\n t('quiz-direction-description-both'),\n value === QuizDirection.All, onChange\n )}\n {this._renderQuizDirectionColumn(\n QuizDirection.Forward,\n t('forward'),\n t('quiz-direction-description-forward'),\n value === QuizDirection.Forward, onChange\n )}\n {this._renderQuizDirectionColumn(\n QuizDirection.Reverse,\n t('reverse'),\n t('quiz-direction-description-reverse'),\n value === QuizDirection.Reverse, onChange\n )}\n </div>\n </div>\n );\n },\n\n /**\n * Renders a column.\n *\n * @param {Number} value the actual value of the radio box.\n * @param {String} title\n * @param {String} description\n * @param {Function} onChange\n */\n _renderQuizDirectionColumn(value, title, description, isChecked = false, onChange) {\n const id = `quiz-direction-${name}`;\n\n return (\n <p className=\"content-column\">\n <input type=\"radio\" id={id} disabled={this.props.inSession} name=\"quiz-direction\" checked={isChecked} value={value} onChange={onChange.bind(null, value)} />\n <label htmlFor={id}>\n <span className=\"title\">{title}</span>\n <span className=\"description\">{description}</span>\n </label>\n </p>\n );\n },\n};\n\nexport default PanelMixin;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = bubble;\nexports.hideImmediately = hideImmediately;\nexports.cleanup = cleanup;\nexports.posX = posX;\nexports.posY = posY;\n\nvar _defs = require('./defs');\n\nvar _audio = require('./audio');\n\nvar _audio2 = _interopRequireDefault(_audio);\n\nvar _content = require('./content');\n\nvar _content2 = _interopRequireDefault(_content);\n\nvar _assign = require('./assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nvar bubbleElement = void 0;\nvar hideTimeout = void 0;\nvar showTimeout = void 0;\nvar showing = false;\nvar bubbles = 0;\n\nfunction bubble() {\n ++bubbles;\n\n if (!bubbleElement) {\n bubbleElement = (0, _content.div)({\n style: _content.bubbleStyle\n }, (0, _content.div)(), // placeholder for content\n (0, _content.div)({\n style: _content.arrowStyle\n }));\n document.body.appendChild(bubbleElement);\n document.body.addEventListener('mouseover', hover, false);\n bubbleElement.addEventListener('click', click, false);\n bubbleElement.addEventListener('mouseover', bubbleHover, false);\n }\n\n return function () {\n --bubbles;\n\n if (bubbles <= 0) {\n cleanup();\n }\n };\n}\n\nfunction hideImmediately() {\n showing = false;\n\n if (bubbleElement) {\n bubbleElement.addEventListener('transitionend', removeAfterHide, false);\n (0, _assign2[\"default\"])(bubbleElement.style, {\n opacity: '0'\n }, _content.bubbleTransitionOpacity);\n }\n}\n\nfunction removeAfterHide() {\n if (bubbleElement) {\n bubbleElement.removeEventListener('transitionend', removeAfterHide, false);\n (0, _assign2[\"default\"])(bubbleElement.style, {\n display: 'none',\n left: '',\n top: ''\n });\n }\n}\n\nfunction cleanup() {\n cancelHide();\n document.body.removeEventListener('mouseover', hover, false);\n bubbleElement.removeEventListener('click', click, false);\n bubbleElement.removeEventListener('mouseover', bubbleHover, false);\n document.body.removeChild(bubbleElement);\n bubbleElement = undefined;\n bubbles = 0;\n}\n\nfunction hover(_ref) {\n var target = _ref.target;\n\n if (detectBrowserExtension()) {\n cancelHide();\n cancelShow();\n hideImmediately();\n } else if (target.className === _defs.POPUP_CLASS) {\n cancelHide();\n\n if (showing) {\n showImmediately(target);\n } else {\n show(target);\n }\n } else if (target === bubbleElement) {\n cancelShow();\n cancelHide();\n } else {\n hide();\n }\n}\n\nfunction detectBrowserExtension() {\n return !!document.querySelector('.iknow-qtip');\n}\n\nfunction click(_ref2) {\n var target = _ref2.target;\n var sound = target.getAttribute('data-sound');\n\n if (!sound) {\n return;\n }\n\n (0, _audio2[\"default\"])(sound);\n}\n\nfunction bubbleHover(event) {\n // This, when called directly on the bubble element mouseover\n // listener will stop mouseover event propagating to parents so that\n // hide will not be called\n event.stopPropagation();\n cancelHide();\n var target = event.target;\n\n if (target.className === _defs.BUTTON_CLASS) {\n highlight(target);\n }\n}\n\nfunction cancelHide() {\n clearTimeout(hideTimeout);\n}\n\nfunction cancelShow() {\n clearTimeout(showTimeout);\n}\n\nfunction hide() {\n cancelHide();\n cancelShow();\n\n if (showing) {\n hideTimeout = setTimeout(hideImmediately, _defs.HIDE_DELAY);\n }\n}\n\nfunction show(source) {\n cancelShow();\n showTimeout = setTimeout(showImmediately.bind(null, source), _defs.SHOW_DELAY);\n}\n\nfunction showImmediately(source) {\n var slide = showing;\n showing = true;\n var fixed = isFixed(source);\n var scrollX = fixed ? 0 : window.scrollX || window.pageXOffset;\n var scrollY = fixed ? 0 : window.scrollY || window.pageYOffset;\n var word = source.childNodes[0].wholeText; // To allow sizing calculations the bubble needs to have content in\n // and be displayed\n\n bubbleElement.replaceChild((0, _content2[\"default\"])(word), bubbleElement.children[0]);\n (0, _assign2[\"default\"])(bubbleElement.style, {\n display: 'block',\n position: 'fixed',\n visibility: 'hidden',\n opacity: '0'\n }, slide ? _content.bubbleTransitionSliding : _content.bubbleTransitionOpacity);\n var sourceBounds = source.getBoundingClientRect();\n var bubbleBounds = bubbleElement.getBoundingClientRect();\n\n var _posX = posX(sourceBounds, bubbleBounds, scrollX, window.innerWidth);\n\n var x = _posX.x;\n var arrowX = _posX.arrowX;\n\n var _posY = posY(sourceBounds, bubbleBounds, scrollY);\n\n var y = _posY.y;\n var arrowUp = _posY.arrowUp;\n var arrowChanges = (0, _assign2[\"default\"])({\n left: bubbleBounds.width / 2 + arrowX + 'px'\n }, arrowUp ? {\n borderWidth: '1px 0 0 1px',\n top: '-10px',\n bottom: ''\n } : {\n borderWidth: '0 1px 1px 0',\n top: '',\n bottom: '0'\n });\n (0, _assign2[\"default\"])(bubbleElement.children[1].style, arrowChanges);\n (0, _assign2[\"default\"])(bubbleElement.style, {\n visibility: 'visible',\n opacity: '1',\n position: fixed ? 'fixed' : 'absolute',\n left: x + 'px',\n top: y + 'px'\n });\n}\n\nfunction constrain(min, max, value) {\n return Math.min(max, Math.max(value, min));\n}\n\nfunction posX(sourceBounds, bubbleBounds, scrollX, windowWidth) {\n // Absolute middle point of the word we're displayig the bubble for\n var middleOfSource = scrollX + sourceBounds.left + sourceBounds.width / 2; // Minimum value where bubble doesn't dissapear behind left edge\n\n var minX = scrollX; // Maximum value where bubble will be visible on right edge\n\n var maxX = scrollX + windowWidth - bubbleBounds.width; // Position bubble in the center relative to the middleOfSource\n // maxX >= middle point >= minX\n\n var x = constrain(minX, maxX, middleOfSource - bubbleBounds.width / 2); // arrowX is a value relative to middle of the bubble so it'll be 0\n // in the middle and +/- if adjustment is needed (bubble is on left\n // or right edge)\n\n var maxArrowOffset = bubbleBounds.width / 2 - _defs.ARROW_SAFETY_MARGIN;\n var arrowX = constrain(-maxArrowOffset, maxArrowOffset, middleOfSource - x - bubbleBounds.width / 2);\n return {\n x: x,\n arrowX: arrowX\n };\n}\n\nfunction posY(sourceBounds, bubbleBounds, scrollY) {\n // Adds 6px space for the arrow\n var y = scrollY + sourceBounds.top - bubbleBounds.height - 6;\n var arrowUp = false; // If y falls above top screen edge put the bubble under the source\n // element and face the arrow up\n\n if (y < scrollY) {\n y = scrollY + sourceBounds.top + sourceBounds.height + 6;\n arrowUp = true;\n }\n\n return {\n y: y,\n arrowUp: arrowUp\n };\n}\n\nfunction isFixed(element) {\n // For non-fixed elements, top-most offsetParent is the body because\n // they're positioned relatively to body. For fixed elements it's\n // the fixed element itself.\n var node = element;\n\n while (node.offsetParent) {\n node = node.offsetParent;\n\n if (node === document.body) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction highlight(target) {\n // This rule is necessary for this function to work\n\n /* eslint no-param-reassign: 0 */\n target.addEventListener('mouseout', downlight, false);\n target.style.opacity = '1';\n\n function downlight() {\n target.removeEventListener('mouseout', downlight, false);\n target.style.opacity = _defs.BUTTON_RESTING_OPACITY;\n }\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = bindDictionary;\n\nvar _collectWords = require('./collect-words');\n\nvar _collectWords2 = _interopRequireDefault(_collectWords);\n\nvar _spannify = require('./spannify');\n\nvar _spannify2 = _interopRequireDefault(_spannify);\n\nvar _loader = require('./loader');\n\nvar _bubble = require('./bubble');\n\nvar _bubble2 = _interopRequireDefault(_bubble);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction bindDictionary(node) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n var despannify = void 0;\n var unbubble = (0, _bubble2[\"default\"])();\n var unwatch = (0, _loader.watch)(function () {\n despannify = (0, _spannify2[\"default\"])(node);\n });\n\n if (options.scan) {\n var words = (0, _collectWords2[\"default\"])(node);\n (0, _loader.schedule)({\n words: words\n });\n } else {\n despannify = (0, _spannify2[\"default\"])(node);\n }\n\n return function () {\n unbubble();\n unwatch();\n\n if (!options.leaveGarbage && despannify) {\n despannify();\n }\n };\n}","var toNumber = require('./toNumber');\n/** Used as references for various `Number` constants. */\n\n\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This function is loosely based on [`ToInteger`](http://www.ecma-international.org/ecma-262/6.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3');\n * // => 3\n */\n\nfunction toInteger(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n\n value = toNumber(value);\n\n if (value === INFINITY || value === -INFINITY) {\n var sign = value < 0 ? -1 : 1;\n return sign * MAX_INTEGER;\n }\n\n var remainder = value % 1;\n return value === value ? remainder ? value - remainder : value : 0;\n}\n\nmodule.exports = toInteger;","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n\n return result;\n}\n\nmodule.exports = arrayMap;","var isArrayLikeObject = require('./isArrayLikeObject');\n/** `Object#toString` result references. */\n\n\nvar argsTag = '[object Arguments]';\n/** Used for built-in method references. */\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar objectToString = objectProto.toString;\n/** Built-in value references. */\n\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n\nfunction isArguments(value) {\n // Safari 8.1 incorrectly makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\nmodule.exports = isArguments;","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/** Used to detect unsigned integer values. */\n\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n\nfunction isIndex(value, length) {\n value = typeof value == 'number' || reIsUint.test(value) ? +value : -1;\n length = length == null ? MAX_SAFE_INTEGER : length;\n return value > -1 && value % 1 == 0 && value < length;\n}\n\nmodule.exports = isIndex;","\"use strict\"; // rawAsap provides everything we need except exception management.\n\nvar rawAsap = require(\"./raw\"); // RawTasks are recycled to reduce GC churn.\n\n\nvar freeTasks = []; // We queue errors to ensure they are thrown in right order (FIFO).\n// Array-as-queue is good enough here, since we are just dealing with exceptions.\n\nvar pendingErrors = [];\nvar requestErrorThrow = rawAsap.makeRequestCallFromTimer(throwFirstError);\n\nfunction throwFirstError() {\n if (pendingErrors.length) {\n throw pendingErrors.shift();\n }\n}\n/**\n * Calls a task as soon as possible after returning, in its own event, with priority\n * over other events like animation, reflow, and repaint. An error thrown from an\n * event will not interrupt, nor even substantially slow down the processing of\n * other events, but will be rather postponed to a lower priority event.\n * @param {{call}} task A callable object, typically a function that takes no\n * arguments.\n */\n\n\nmodule.exports = asap;\n\nfunction asap(task) {\n var rawTask;\n\n if (freeTasks.length) {\n rawTask = freeTasks.pop();\n } else {\n rawTask = new RawTask();\n }\n\n rawTask.task = task;\n rawAsap(rawTask);\n} // We wrap tasks with recyclable task objects. A task object implements\n// `call`, just like a function.\n\n\nfunction RawTask() {\n this.task = null;\n} // The sole purpose of wrapping the task is to catch the exception and recycle\n// the task object after its single use.\n\n\nRawTask.prototype.call = function () {\n try {\n this.task.call();\n } catch (error) {\n if (asap.onerror) {\n // This hook exists purely for testing purposes.\n // Its name will be periodically randomized to break any code that\n // depends on its existence.\n asap.onerror(error);\n } else {\n // In a web browser, exceptions are not fatal. However, to avoid\n // slowing down the queue of pending tasks, we rethrow the error in a\n // lower priority turn.\n pendingErrors.push(error);\n requestErrorThrow();\n }\n } finally {\n this.task = null;\n freeTasks[freeTasks.length] = this;\n }\n};","\"use strict\"; // Use the fastest means possible to execute a task in its own turn, with\n// priority over other events including IO, animation, reflow, and redraw\n// events in browsers.\n//\n// An exception thrown by a task will permanently interrupt the processing of\n// subsequent tasks. The higher level `asap` function ensures that if an\n// exception is thrown by a task, that the task queue will continue flushing as\n// soon as possible, but if you use `rawAsap` directly, you are responsible to\n// either ensure that no exceptions are thrown from your task, or to manually\n// call `rawAsap.requestFlush` if an exception is thrown.\n\nmodule.exports = rawAsap;\n\nfunction rawAsap(task) {\n if (!queue.length) {\n requestFlush();\n flushing = true;\n } // Equivalent to push, but avoids a function call.\n\n\n queue[queue.length] = task;\n}\n\nvar queue = []; // Once a flush has been requested, no further calls to `requestFlush` are\n// necessary until the next `flush` completes.\n\nvar flushing = false; // `requestFlush` is an implementation-specific method that attempts to kick\n// off a `flush` event as quickly as possible. `flush` will attempt to exhaust\n// the event queue before yielding to the browser's own event loop.\n\nvar requestFlush; // The position of the next task to execute in the task queue. This is\n// preserved between calls to `flush` so that it can be resumed if\n// a task throws an exception.\n\nvar index = 0; // If a task schedules additional tasks recursively, the task queue can grow\n// unbounded. To prevent memory exhaustion, the task queue will periodically\n// truncate already-completed tasks.\n\nvar capacity = 1024; // The flush function processes all tasks that have been scheduled with\n// `rawAsap` unless and until one of those tasks throws an exception.\n// If a task throws an exception, `flush` ensures that its state will remain\n// consistent and will resume where it left off when called again.\n// However, `flush` does not make any arrangements to be called again if an\n// exception is thrown.\n\nfunction flush() {\n while (index < queue.length) {\n var currentIndex = index; // Advance the index before calling the task. This ensures that we will\n // begin flushing on the next task the task throws an error.\n\n index = index + 1;\n queue[currentIndex].call(); // Prevent leaking memory for long chains of recursive calls to `asap`.\n // If we call `asap` within tasks scheduled by `asap`, the queue will\n // grow, but to avoid an O(n) walk for every task we execute, we don't\n // shift tasks off the queue after they have been executed.\n // Instead, we periodically shift 1024 tasks off the queue.\n\n if (index > capacity) {\n // Manually shift all values starting at the index back to the\n // beginning of the queue.\n for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) {\n queue[scan] = queue[scan + index];\n }\n\n queue.length -= index;\n index = 0;\n }\n }\n\n queue.length = 0;\n index = 0;\n flushing = false;\n} // `requestFlush` is implemented using a strategy based on data collected from\n// every available SauceLabs Selenium web driver worker at time of writing.\n// https://docs.google.com/spreadsheets/d/1mG-5UYGup5qxGdEMWkhP6BWCz053NUb2E1QoUTU16uA/edit#gid=783724593\n// Safari 6 and 6.1 for desktop, iPad, and iPhone are the only browsers that\n// have WebKitMutationObserver but not un-prefixed MutationObserver.\n// Must use `global` or `self` instead of `window` to work in both frames and web\n// workers. `global` is a provision of Browserify, Mr, Mrs, or Mop.\n\n/* globals self */\n\n\nvar scope = typeof global !== \"undefined\" ? global : self;\nvar BrowserMutationObserver = scope.MutationObserver || scope.WebKitMutationObserver; // MutationObservers are desirable because they have high priority and work\n// reliably everywhere they are implemented.\n// They are implemented in all modern browsers.\n//\n// - Android 4-4.3\n// - Chrome 26-34\n// - Firefox 14-29\n// - Internet Explorer 11\n// - iPad Safari 6-7.1\n// - iPhone Safari 7-7.1\n// - Safari 6-7\n\nif (typeof BrowserMutationObserver === \"function\") {\n requestFlush = makeRequestCallFromMutationObserver(flush); // MessageChannels are desirable because they give direct access to the HTML\n // task queue, are implemented in Internet Explorer 10, Safari 5.0-1, and Opera\n // 11-12, and in web workers in many engines.\n // Although message channels yield to any queued rendering and IO tasks, they\n // would be better than imposing the 4ms delay of timers.\n // However, they do not work reliably in Internet Explorer or Safari.\n // Internet Explorer 10 is the only browser that has setImmediate but does\n // not have MutationObservers.\n // Although setImmediate yields to the browser's renderer, it would be\n // preferrable to falling back to setTimeout since it does not have\n // the minimum 4ms penalty.\n // Unfortunately there appears to be a bug in Internet Explorer 10 Mobile (and\n // Desktop to a lesser extent) that renders both setImmediate and\n // MessageChannel useless for the purposes of ASAP.\n // https://github.com/kriskowal/q/issues/396\n // Timers are implemented universally.\n // We fall back to timers in workers in most engines, and in foreground\n // contexts in the following browsers.\n // However, note that even this simple case requires nuances to operate in a\n // broad spectrum of browsers.\n //\n // - Firefox 3-13\n // - Internet Explorer 6-9\n // - iPad Safari 4.3\n // - Lynx 2.8.7\n} else {\n requestFlush = makeRequestCallFromTimer(flush);\n} // `requestFlush` requests that the high priority event queue be flushed as\n// soon as possible.\n// This is useful to prevent an error thrown in a task from stalling the event\n// queue if the exception handled by Node.js’s\n// `process.on(\"uncaughtException\")` or by a domain.\n\n\nrawAsap.requestFlush = requestFlush; // To request a high priority event, we induce a mutation observer by toggling\n// the text of a text node between \"1\" and \"-1\".\n\nfunction makeRequestCallFromMutationObserver(callback) {\n var toggle = 1;\n var observer = new BrowserMutationObserver(callback);\n var node = document.createTextNode(\"\");\n observer.observe(node, {\n characterData: true\n });\n return function requestCall() {\n toggle = -toggle;\n node.data = toggle;\n };\n} // The message channel technique was discovered by Malte Ubl and was the\n// original foundation for this library.\n// http://www.nonblocking.io/2011/06/windownexttick.html\n// Safari 6.0.5 (at least) intermittently fails to create message ports on a\n// page's first load. Thankfully, this version of Safari supports\n// MutationObservers, so we don't need to fall back in that case.\n// function makeRequestCallFromMessageChannel(callback) {\n// var channel = new MessageChannel();\n// channel.port1.onmessage = callback;\n// return function requestCall() {\n// channel.port2.postMessage(0);\n// };\n// }\n// For reasons explained above, we are also unable to use `setImmediate`\n// under any circumstances.\n// Even if we were, there is another bug in Internet Explorer 10.\n// It is not sufficient to assign `setImmediate` to `requestFlush` because\n// `setImmediate` must be called *by name* and therefore must be wrapped in a\n// closure.\n// Never forget.\n// function makeRequestCallFromSetImmediate(callback) {\n// return function requestCall() {\n// setImmediate(callback);\n// };\n// }\n// Safari 6.0 has a problem where timers will get lost while the user is\n// scrolling. This problem does not impact ASAP because Safari 6.0 supports\n// mutation observers, so that implementation is used instead.\n// However, if we ever elect to use timers in Safari, the prevalent work-around\n// is to add a scroll event listener that calls for a flush.\n// `setTimeout` does not call the passed callback if the delay is less than\n// approximately 7 in web workers in Firefox 8 through 18, and sometimes not\n// even then.\n\n\nfunction makeRequestCallFromTimer(callback) {\n return function requestCall() {\n // We dispatch a timeout with a specified delay of 0 for engines that\n // can reliably accommodate that request. This will usually be snapped\n // to a 4 milisecond delay, but once we're flushing, there's no delay\n // between events.\n var timeoutHandle = setTimeout(handleTimer, 0); // However, since this timer gets frequently dropped in Firefox\n // workers, we enlist an interval handle that will try to fire\n // an event 20 times per second until it succeeds.\n\n var intervalHandle = setInterval(handleTimer, 50);\n\n function handleTimer() {\n // Whichever timer succeeds will cancel both timers and\n // execute the callback.\n clearTimeout(timeoutHandle);\n clearInterval(intervalHandle);\n callback();\n }\n };\n} // This is for `asap.js` only.\n// Its name will be periodically randomized to break any code that depends on\n// its existence.\n\n\nrawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer; // ASAP was originally a nextTick shim included in Q. This was factored out\n// into this ASAP package. It was later adapted to RSVP which made further\n// amendments. These decisions, particularly to marginalize MessageChannel and\n// to capture the MutationObserver implementation in a closure, were integrated\n// back into ASAP proper.\n// https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js","'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nvar _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i['return']) _i['return']();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError('Invalid attempt to destructure non-iterable instance');\n }\n };\n}();\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\n\nvar _inlineStylePrefixerStatic = require('inline-style-prefixer/static');\n\nvar _inlineStylePrefixerStatic2 = _interopRequireDefault(_inlineStylePrefixerStatic);\n\nvar _util = require('./util');\n/**\n * Generate CSS for a selector and some styles.\n *\n * This function handles the media queries, pseudo selectors, and descendant\n * styles that can be used in aphrodite styles.\n *\n * @param {string} selector: A base CSS selector for the styles to be generated\n * with.\n * @param {Object} styleTypes: A list of properties of the return type of\n * StyleSheet.create, e.g. [styles.red, styles.blue].\n * @param stringHandlers: See `generateCSSRuleset`\n * @param useImportant: See `generateCSSRuleset`\n *\n * To actually generate the CSS special-construct-less styles are passed to\n * `generateCSSRuleset`.\n *\n * For instance, a call to\n *\n * generateCSSInner(\".foo\", {\n * color: \"red\",\n * \"@media screen\": {\n * height: 20,\n * \":hover\": {\n * backgroundColor: \"black\"\n * }\n * },\n * \":active\": {\n * fontWeight: \"bold\",\n * \">>bar\": {\n * _names: { \"foo_bar\": true },\n * height: 10,\n * }\n * }\n * });\n *\n * will make 5 calls to `generateCSSRuleset`:\n *\n * generateCSSRuleset(\".foo\", { color: \"red\" }, ...)\n * generateCSSRuleset(\".foo:active\", { fontWeight: \"bold\" }, ...)\n * generateCSSRuleset(\".foo:active .foo_bar\", { height: 10 }, ...)\n * // These 2 will be wrapped in @media screen {}\n * generateCSSRuleset(\".foo\", { height: 20 }, ...)\n * generateCSSRuleset(\".foo:hover\", { backgroundColor: \"black\" }, ...)\n */\n\n\nvar generateCSS = function generateCSS(selector, styleTypes, stringHandlers, useImportant) {\n var merged = styleTypes.reduce(_util.recursiveMerge);\n var declarations = {};\n var mediaQueries = {};\n var pseudoStyles = {};\n Object.keys(merged).forEach(function (key) {\n if (key[0] === ':') {\n pseudoStyles[key] = merged[key];\n } else if (key[0] === '@') {\n mediaQueries[key] = merged[key];\n } else {\n declarations[key] = merged[key];\n }\n });\n return generateCSSRuleset(selector, declarations, stringHandlers, useImportant) + Object.keys(pseudoStyles).map(function (pseudoSelector) {\n return generateCSSRuleset(selector + pseudoSelector, pseudoStyles[pseudoSelector], stringHandlers, useImportant);\n }).join(\"\") + Object.keys(mediaQueries).map(function (mediaQuery) {\n var ruleset = generateCSS(selector, [mediaQueries[mediaQuery]], stringHandlers, useImportant);\n return mediaQuery + '{' + ruleset + '}';\n }).join(\"\");\n};\n\nexports.generateCSS = generateCSS;\n/**\n * Helper method of generateCSSRuleset to facilitate custom handling of certain\n * CSS properties. Used for e.g. font families.\n *\n * See generateCSSRuleset for usage and documentation of paramater types.\n */\n\nvar runStringHandlers = function runStringHandlers(declarations, stringHandlers) {\n var result = {};\n Object.keys(declarations).forEach(function (key) {\n // If a handler exists for this particular key, let it interpret\n // that value first before continuing\n if (stringHandlers && stringHandlers.hasOwnProperty(key)) {\n result[key] = stringHandlers[key](declarations[key]);\n } else {\n result[key] = declarations[key];\n }\n });\n return result;\n};\n/**\n * Generate a CSS ruleset with the selector and containing the declarations.\n *\n * This function assumes that the given declarations don't contain any special\n * children (such as media queries, pseudo-selectors, or descendant styles).\n *\n * Note that this method does not deal with nesting used for e.g.\n * psuedo-selectors or media queries. That responsibility is left to the\n * `generateCSS` function.\n *\n * @param {string} selector: the selector associated with the ruleset\n * @param {Object} declarations: a map from camelCased CSS property name to CSS\n * property value.\n * @param {Object.<string, function>} stringHandlers: a map from camelCased CSS\n * property name to a function which will map the given value to the value\n * that is output.\n * @param {bool} useImportant: A boolean saying whether to append \"!important\"\n * to each of the CSS declarations.\n * @returns {string} A string of raw CSS.\n *\n * Examples:\n *\n * generateCSSRuleset(\".blah\", { color: \"red\" })\n * -> \".blah{color: red !important;}\"\n * generateCSSRuleset(\".blah\", { color: \"red\" }, {}, false)\n * -> \".blah{color: red}\"\n * generateCSSRuleset(\".blah\", { color: \"red\" }, {color: c => c.toUpperCase})\n * -> \".blah{color: RED}\"\n * generateCSSRuleset(\".blah:hover\", { color: \"red\" })\n * -> \".blah:hover{color: red}\"\n */\n\n\nvar generateCSSRuleset = function generateCSSRuleset(selector, declarations, stringHandlers, useImportant) {\n var handledDeclarations = runStringHandlers(declarations, stringHandlers);\n var prefixedDeclarations = (0, _inlineStylePrefixerStatic2['default'])(handledDeclarations);\n var prefixedRules = (0, _util.flatten)((0, _util.objectToPairs)(prefixedDeclarations).map(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2);\n\n var key = _ref2[0];\n var value = _ref2[1];\n\n if (Array.isArray(value)) {\n var _ret = function () {\n // inline-style-prefix-all returns an array when there should be\n // multiple rules, we will flatten to single rules\n var prefixedValues = [];\n var unprefixedValues = [];\n value.forEach(function (v) {\n if (v.indexOf('-') === 0) {\n prefixedValues.push(v);\n } else {\n unprefixedValues.push(v);\n }\n });\n prefixedValues.sort();\n unprefixedValues.sort();\n return {\n v: prefixedValues.concat(unprefixedValues).map(function (v) {\n return [key, v];\n })\n };\n }();\n\n if (_typeof(_ret) === 'object') return _ret.v;\n }\n\n return [[key, value]];\n }));\n var rules = prefixedRules.map(function (_ref3) {\n var _ref32 = _slicedToArray(_ref3, 2);\n\n var key = _ref32[0];\n var value = _ref32[1];\n var stringValue = (0, _util.stringifyValue)(key, value);\n var ret = (0, _util.kebabifyStyleName)(key) + ':' + stringValue + ';';\n return useImportant === false ? ret : (0, _util.importantify)(ret);\n }).join(\"\");\n\n if (rules) {\n return selector + '{' + rules + '}';\n } else {\n return \"\";\n }\n};\n\nexports.generateCSSRuleset = generateCSSRuleset;","module.exports = require('./lib/static/prefixAll');","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = prefixAll;\n\nvar _prefixProps = require('./prefixProps');\n\nvar _prefixProps2 = _interopRequireDefault(_prefixProps);\n\nvar _capitalizeString = require('../utils/capitalizeString');\n\nvar _capitalizeString2 = _interopRequireDefault(_capitalizeString);\n\nvar _sortPrefixedStyle = require('../utils/sortPrefixedStyle');\n\nvar _sortPrefixedStyle2 = _interopRequireDefault(_sortPrefixedStyle);\n\nvar _position = require('./plugins/position');\n\nvar _position2 = _interopRequireDefault(_position);\n\nvar _calc = require('./plugins/calc');\n\nvar _calc2 = _interopRequireDefault(_calc);\n\nvar _cursor = require('./plugins/cursor');\n\nvar _cursor2 = _interopRequireDefault(_cursor);\n\nvar _flex = require('./plugins/flex');\n\nvar _flex2 = _interopRequireDefault(_flex);\n\nvar _sizing = require('./plugins/sizing');\n\nvar _sizing2 = _interopRequireDefault(_sizing);\n\nvar _gradient = require('./plugins/gradient');\n\nvar _gradient2 = _interopRequireDefault(_gradient);\n\nvar _transition = require('./plugins/transition');\n\nvar _transition2 = _interopRequireDefault(_transition);\n\nvar _flexboxIE = require('./plugins/flexboxIE');\n\nvar _flexboxIE2 = _interopRequireDefault(_flexboxIE);\n\nvar _flexboxOld = require('./plugins/flexboxOld');\n\nvar _flexboxOld2 = _interopRequireDefault(_flexboxOld);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n} // special flexbox specifications\n\n\nvar plugins = [_position2[\"default\"], _calc2[\"default\"], _cursor2[\"default\"], _sizing2[\"default\"], _gradient2[\"default\"], _transition2[\"default\"], _flexboxIE2[\"default\"], _flexboxOld2[\"default\"], _flex2[\"default\"]];\n/**\n * Returns a prefixed version of the style object using all vendor prefixes\n * @param {Object} styles - Style object that gets prefixed properties added\n * @returns {Object} - Style object with prefixed properties and values\n */\n\nfunction prefixAll(styles) {\n Object.keys(styles).forEach(function (property) {\n var value = styles[property];\n\n if (value instanceof Object && !Array.isArray(value)) {\n // recurse through nested style objects\n styles[property] = prefixAll(value);\n } else {\n Object.keys(_prefixProps2[\"default\"]).forEach(function (prefix) {\n var properties = _prefixProps2[\"default\"][prefix]; // add prefixes if needed\n\n if (properties[property]) {\n styles[prefix + (0, _capitalizeString2[\"default\"])(property)] = value;\n }\n });\n }\n });\n Object.keys(styles).forEach(function (property) {\n [].concat(styles[property]).forEach(function (value, index) {\n // resolve every special plugins\n plugins.forEach(function (plugin) {\n return assignStyles(styles, plugin(property, value));\n });\n });\n });\n return (0, _sortPrefixedStyle2[\"default\"])(styles);\n}\n\nfunction assignStyles(base) {\n var extend = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n Object.keys(extend).forEach(function (property) {\n var baseValue = base[property];\n\n if (Array.isArray(baseValue)) {\n [].concat(extend[property]).forEach(function (value) {\n var valueIndex = baseValue.indexOf(value);\n\n if (valueIndex > -1) {\n base[property].splice(valueIndex, 1);\n }\n\n base[property].push(value);\n });\n } else {\n base[property] = extend[property];\n }\n });\n}\n\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = sortPrefixedStyle;\n\nvar _isPrefixedProperty = require('./isPrefixedProperty');\n\nvar _isPrefixedProperty2 = _interopRequireDefault(_isPrefixedProperty);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction sortPrefixedStyle(style) {\n return Object.keys(style).sort(function (left, right) {\n if ((0, _isPrefixedProperty2[\"default\"])(left) && !(0, _isPrefixedProperty2[\"default\"])(right)) {\n return -1;\n } else if (!(0, _isPrefixedProperty2[\"default\"])(left) && (0, _isPrefixedProperty2[\"default\"])(right)) {\n return 1;\n }\n\n return 0;\n }).reduce(function (sortedStyle, prop) {\n sortedStyle[prop] = style[prop];\n return sortedStyle;\n }, {});\n}\n\nmodule.exports = exports['default'];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports[\"default\"] = function (property) {\n return property.match(/^(Webkit|Moz|O|ms)/) !== null;\n};\n\nmodule.exports = exports[\"default\"];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = position;\n\nfunction position(property, value) {\n if (property === 'position' && value === 'sticky') {\n return {\n position: ['-webkit-sticky', 'sticky']\n };\n }\n}\n\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = calc;\n\nvar _joinPrefixedValue = require('../../utils/joinPrefixedValue');\n\nvar _joinPrefixedValue2 = _interopRequireDefault(_joinPrefixedValue);\n\nvar _isPrefixedValue = require('../../utils/isPrefixedValue');\n\nvar _isPrefixedValue2 = _interopRequireDefault(_isPrefixedValue);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction calc(property, value) {\n if (typeof value === 'string' && !(0, _isPrefixedValue2[\"default\"])(value) && value.indexOf('calc(') > -1) {\n return (0, _joinPrefixedValue2[\"default\"])(property, value, function (prefix, value) {\n return value.replace(/calc\\(/g, prefix + 'calc(');\n });\n }\n}\n\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = cursor;\n\nvar _joinPrefixedValue = require('../../utils/joinPrefixedValue');\n\nvar _joinPrefixedValue2 = _interopRequireDefault(_joinPrefixedValue);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nvar values = {\n 'zoom-in': true,\n 'zoom-out': true,\n grab: true,\n grabbing: true\n};\n\nfunction cursor(property, value) {\n if (property === 'cursor' && values[value]) {\n return (0, _joinPrefixedValue2[\"default\"])(property, value);\n }\n}\n\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = flex;\nvar values = {\n flex: true,\n 'inline-flex': true\n};\n\nfunction flex(property, value) {\n if (property === 'display' && values[value]) {\n return {\n display: ['-webkit-box', '-moz-box', '-ms-' + value + 'box', '-webkit-' + value, value]\n };\n }\n}\n\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = sizing;\n\nvar _joinPrefixedValue = require('../../utils/joinPrefixedValue');\n\nvar _joinPrefixedValue2 = _interopRequireDefault(_joinPrefixedValue);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nvar properties = {\n maxHeight: true,\n maxWidth: true,\n width: true,\n height: true,\n columnWidth: true,\n minWidth: true,\n minHeight: true\n};\nvar values = {\n 'min-content': true,\n 'max-content': true,\n 'fill-available': true,\n 'fit-content': true,\n 'contain-floats': true\n};\n\nfunction sizing(property, value) {\n if (properties[property] && values[value]) {\n return (0, _joinPrefixedValue2[\"default\"])(property, value);\n }\n}\n\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = gradient;\n\nvar _joinPrefixedValue = require('../../utils/joinPrefixedValue');\n\nvar _joinPrefixedValue2 = _interopRequireDefault(_joinPrefixedValue);\n\nvar _isPrefixedValue = require('../../utils/isPrefixedValue');\n\nvar _isPrefixedValue2 = _interopRequireDefault(_isPrefixedValue);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nvar values = /linear-gradient|radial-gradient|repeating-linear-gradient|repeating-radial-gradient/;\n\nfunction gradient(property, value) {\n if (typeof value === 'string' && !(0, _isPrefixedValue2[\"default\"])(value) && value.match(values) !== null) {\n return (0, _joinPrefixedValue2[\"default\"])(property, value);\n }\n}\n\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = transition;\n\nvar _hyphenateStyleName = require('hyphenate-style-name');\n\nvar _hyphenateStyleName2 = _interopRequireDefault(_hyphenateStyleName);\n\nvar _capitalizeString = require('../../utils/capitalizeString');\n\nvar _capitalizeString2 = _interopRequireDefault(_capitalizeString);\n\nvar _isPrefixedValue = require('../../utils/isPrefixedValue');\n\nvar _isPrefixedValue2 = _interopRequireDefault(_isPrefixedValue);\n\nvar _prefixProps = require('../prefixProps');\n\nvar _prefixProps2 = _interopRequireDefault(_prefixProps);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nvar properties = {\n transition: true,\n transitionProperty: true,\n WebkitTransition: true,\n WebkitTransitionProperty: true\n};\n\nfunction transition(property, value) {\n // also check for already prefixed transitions\n if (typeof value === 'string' && properties[property]) {\n var _ref2;\n\n var outputValue = prefixValue(value);\n var webkitOutput = outputValue.split(/,(?![^()]*(?:\\([^()]*\\))?\\))/g).filter(function (value) {\n return value.match(/-moz-|-ms-/) === null;\n }).join(','); // if the property is already prefixed\n\n if (property.indexOf('Webkit') > -1) {\n return _defineProperty({}, property, webkitOutput);\n }\n\n return _ref2 = {}, _defineProperty(_ref2, 'Webkit' + (0, _capitalizeString2[\"default\"])(property), webkitOutput), _defineProperty(_ref2, property, outputValue), _ref2;\n }\n}\n\nfunction prefixValue(value) {\n if ((0, _isPrefixedValue2[\"default\"])(value)) {\n return value;\n } // only split multi values, not cubic beziers\n\n\n var multipleValues = value.split(/,(?![^()]*(?:\\([^()]*\\))?\\))/g); // iterate each single value and check for transitioned properties\n // that need to be prefixed as well\n\n multipleValues.forEach(function (val, index) {\n multipleValues[index] = Object.keys(_prefixProps2[\"default\"]).reduce(function (out, prefix) {\n var dashCasePrefix = '-' + prefix.toLowerCase() + '-';\n Object.keys(_prefixProps2[\"default\"][prefix]).forEach(function (prop) {\n var dashCaseProperty = (0, _hyphenateStyleName2[\"default\"])(prop);\n\n if (val.indexOf(dashCaseProperty) > -1 && dashCaseProperty !== 'order') {\n // join all prefixes and create a new value\n out = val.replace(dashCaseProperty, dashCasePrefix + dashCaseProperty) + ',' + out;\n }\n });\n return out;\n }, val);\n });\n return multipleValues.join(',');\n}\n\nmodule.exports = exports['default'];","'use strict';\n\nvar uppercasePattern = /[A-Z]/g;\nvar msPattern = /^ms-/;\nvar cache = {};\n\nfunction hyphenateStyleName(string) {\n return string in cache ? cache[string] : cache[string] = string.replace(uppercasePattern, '-$&').toLowerCase().replace(msPattern, '-ms-');\n}\n\nmodule.exports = hyphenateStyleName;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = flexboxIE;\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nvar alternativeValues = {\n 'space-around': 'distribute',\n 'space-between': 'justify',\n 'flex-start': 'start',\n 'flex-end': 'end'\n};\nvar alternativeProps = {\n alignContent: 'msFlexLinePack',\n alignSelf: 'msFlexItemAlign',\n alignItems: 'msFlexAlign',\n justifyContent: 'msFlexPack',\n order: 'msFlexOrder',\n flexGrow: 'msFlexPositive',\n flexShrink: 'msFlexNegative',\n flexBasis: 'msPreferredSize'\n};\n\nfunction flexboxIE(property, value) {\n if (alternativeProps[property]) {\n return _defineProperty({}, alternativeProps[property], alternativeValues[value] || value);\n }\n}\n\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = flexboxOld;\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nvar alternativeValues = {\n 'space-around': 'justify',\n 'space-between': 'justify',\n 'flex-start': 'start',\n 'flex-end': 'end',\n 'wrap-reverse': 'multiple',\n wrap: 'multiple'\n};\nvar alternativeProps = {\n alignItems: 'WebkitBoxAlign',\n justifyContent: 'WebkitBoxPack',\n flexWrap: 'WebkitBoxLines'\n};\n\nfunction flexboxOld(property, value) {\n if (property === 'flexDirection' && typeof value === 'string') {\n return {\n WebkitBoxOrient: value.indexOf('column') > -1 ? 'vertical' : 'horizontal',\n WebkitBoxDirection: value.indexOf('reverse') > -1 ? 'reverse' : 'normal'\n };\n }\n\n if (alternativeProps[property]) {\n return _defineProperty({}, alternativeProps[property], alternativeValues[value] || value);\n }\n}\n\nmodule.exports = exports['default'];","import Config from 'es6/core/config';\nimport { location } from 'es6/services/window';\nimport { crc32 } from 'crc';\n\nexport default function assetPath(file) {\n return hostPart(file) + pathPart() + filePart(file);\n}\n\nfunction hostPart(file) {\n const host = Config.getAssetHost();\n\n if (host && !location.isConnectionSecure()) {\n const randomizedHost = host.replace(/%d/g, function () {\n return crc32(file) % Config.getAssetCdns();\n });\n\n return `//${cleanSlashes(randomizedHost)}`;\n } else {\n return '';\n }\n}\n\nfunction pathPart() {\n const path = Config.getAssetPath() || '';\n return `/${cleanSlashes(path)}`;\n}\n\nfunction filePart(file) {\n return `/${cleanSlashes(file)}`;\n}\n\nfunction cleanSlashes(path) {\n return (path.replace(/\\/+/g, '/')\n .replace(/^\\//, '')\n .replace(/\\/$/, ''));\n}\n","import React, { PropTypes } from 'react';\nimport BaseModal from 'es6/components/common/modals/base';\n\nfunction CloseButton({ onClose }) {\n return (<i className=\"glyph glyph-cross-soft\" onClick={onClose} />);\n}\n\nCloseButton.propTypes = {\n onClose: PropTypes.func,\n};\n\n/**\n * BaseModal with a title and a close button. If the title prop is not specified, will just add a\n * close button.\n *\n * The onClose prop will be called when either the close button is pressed or the modal overlay is\n * clicked.\n */\nfunction BasicModal({ children, isOpen = false, captureKeyEvents = true, onClose, title }) {\n return (\n <BaseModal onOverlayClick={onClose} isOpen={isOpen} captureKeyEvents={captureKeyEvents} >\n <div className=\"basic-modal\">\n <div className=\"close-btn\">\n <CloseButton onClose={onClose} />\n </div>\n\n {title && <header><div className=\"title\">{title}</div></header>}\n\n <section>\n {children}\n </section>\n </div>\n </BaseModal>\n );\n}\n\nBasicModal.propTypes = {\n children: PropTypes.node,\n isOpen: PropTypes.bool,\n captureKeyEvents: PropTypes.bool,\n onClose: PropTypes.func,\n title: PropTypes.string,\n};\n\nexport default BasicModal;\n","// Class names for the correct/with mistakes/incorrect glyphs.\nexport default Object.freeze({\n CORRECT: 'glyph glyph-correct-result',\n CORRECT_WITH_MISTAKES: 'glyph glyph-correct-with-mistakes-result',\n INCORRECT: 'glyph glyph-incorrect-result',\n});\n","import * as API from 'es6/core/api';\n\n/*\n* Keeps track of any difference between a machine's\n* local time and the server's time so that time stamps\n* can be kept consistent.\n*/\nclass ServerTimeManager {\n constructor() {\n this._loader = API.getServerTime();\n this._loader.then(this._setServerOffset.bind(this));\n }\n\n currentTimestamp() {\n const now = new Date();\n now.setTime(now.getTime() + this._serverOffset);\n return now.toISOString();\n }\n\n then(...args) {\n return this._loader.then(...args);\n }\n\n _setServerOffset(response) {\n if (!response) { return; }\n const server = new Date(response.timestamp);\n const local = new Date();\n local.setMilliseconds(0);\n this._serverOffset = server - local;\n }\n}\n\nexport default new ServerTimeManager();\n","/* eslint-disable no-param-reassign */\n// Japanese study mode settings.\nexport const JAStudyModes = Object.freeze({\n DEFAULT: 0,\n KANA: 1,\n ROMAJI: 2,\n});\n\n// QuizDirection settings.\nexport const QuizDirection = Object.freeze({\n All: 'All',\n Forward: 'Forward',\n Reverse: 'Reverse',\n});\n\n/**\n * Creates a unique object for each app.\n *\n * @returns {Object}\n */\nfunction getDefaultAppOptions() {\n return {\n quizOptions: {},\n sessionConfig: {\n course: {},\n studyAll: {},\n },\n };\n}\n\n/**\n * NOTE: When underscore and lodash merge together, this can be replaced\n * with the merge() method.\n *\n * @param {Object} target\n * @param {Object} src\n * @returns {Object} a diff of what was updated\n */\nfunction deepMerge(target, src) {\n const diff = {};\n\n Object.keys(src).forEach(key => {\n if (target[key] && src[key] && typeof target[key] === 'object' && typeof src[key] === 'object') {\n diff[key] = deepMerge(target[key], src[key]);\n } else if (typeof src[key] !== 'undefined' && src[key] !== target[key]) {\n diff[key] = target[key] = src[key];\n }\n });\n\n return diff;\n}\n\nexport class UserSettings {\n constructor(attrs = {}) {\n Object.assign(this, {\n apps: {\n contentVolume: 1,\n effectVolume: 0.4,\n jaStudyMode: JAStudyModes.DEFAULT,\n itemStudy: getDefaultAppOptions(),\n rapidChoice: getDefaultAppOptions(),\n selfAssessment: getDefaultAppOptions(),\n sentenceStudy: getDefaultAppOptions(),\n showTranscription: false,\n typingSound: false,\n typingSpecialCharacters: true,\n },\n\n global: {\n studyAllLanguage: null,\n },\n });\n\n deepMerge(this, attrs);\n }\n\n /**\n * @returns {Boolean}\n */\n isKanaMode() {\n return this.apps.jaStudyMode === JAStudyModes.KANA;\n }\n\n /**\n * @returns {Boolean}\n */\n isRomajiMode() {\n return this.apps.jaStudyMode === JAStudyModes.ROMAJI;\n }\n\n /**\n * Does a deep merge of properties passed in.\n *\n * @param {Object} attrs\n * @returns {Object} a diff on what was updated (useful for sending to server)\n */\n update(attrs = {}) {\n return deepMerge(this, attrs);\n }\n}\n\nexport default UserSettings;\n","import { ItemsAggregateMemory, SentencesAggregateMemory } from 'es6/models/domain-aggregate-memory';\n\nexport default class AggregateMemory {\n constructor(attrs = {}) {\n _.defaults(this, attrs, {\n goalId: null,\n completed: false,\n focused: false,\n enrolled: null,\n startedAt: null,\n completedAt: null,\n items: null,\n sentences: null,\n });\n\n if (this.items && !(this.items instanceof ItemsAggregateMemory)) {\n this.items = new ItemsAggregateMemory(this.items, this.completed);\n }\n\n if (this.sentences && !(this.sentences instanceof SentencesAggregateMemory)) {\n this.sentences = new SentencesAggregateMemory(this.sentences);\n }\n }\n\n /**\n * Sets the enrolled flag (and other consequential flags).\n *\n * @param {Boolean} toggle\n */\n setEnrolled(toggle) {\n if (!toggle) {\n this.focused = false;\n }\n\n this.enrolled = toggle;\n }\n\n /**\n * Sets the focused flag (and other consequential flags).\n *\n * @param {Boolean} toggle\n */\n setFocused(toggle) {\n if (toggle) {\n this.enrolled = true;\n }\n\n this.focused = toggle;\n }\n}\n","/**\n * Base class for ItemsAggregateMemory and SentencesAggregateMemory.\n */\nexport class DomainAggregateMemory {\n constructor(attrs = {}) {\n _.defaults(this, attrs, {\n progress: 0,\n skippedItemsCount: 0,\n studiedItemsCount: 0,\n eligibleItemsCount: 0,\n lastStudyTime: null,\n seeNextAt: null,\n totalStudyTimeMillis: 0,\n itemsAtCheckpoint0: 0,\n itemsAtCheckpoint1: 0,\n itemsAtCheckpoint2: 0,\n itemsAtCheckpoint3: 0,\n averageReviewInterval: null,\n averageEasinessModifier: null,\n averageCurrentRetention: null,\n difficultyBucket: null,\n });\n\n if (this.lastStudyTime && !(this.lastStudyTime instanceof Date)) {\n this.lastStudyTime = new Date(this.lastStudyTime);\n }\n\n if (this.seeNextAt && !(this.seeNextAt instanceof Date)) {\n this.seeNextAt = new Date(this.seeNextAt);\n }\n }\n\n /**\n * Returns the items that are exclusively at checkpoint1.\n *\n * @returns {Number}\n */\n getItemsAtCheckpoint1() {\n return this.itemsAtCheckpoint1 - this.itemsAtCheckpoint2;\n }\n\n getItemsAtCheckpoint0() {\n return this.studiedItemsCount - this.itemsAtCheckpoint1;\n }\n\n isReadyToStudy() {\n const now = new Date();\n\n return this.seeNextAt && this.seeNextAt < now;\n }\n\n get totalStudyTime() {\n return Math.round(this.totalStudyTimeMillis / 1000);\n }\n}\n\nexport class ItemsAggregateMemory extends DomainAggregateMemory {\n constructor(attrs = {}, isCompleteGoal = false) {\n super(attrs);\n\n if (isCompleteGoal) {\n this.progress = 100;\n }\n }\n}\n\nexport class SentencesAggregateMemory extends DomainAggregateMemory {\n constructor(attrs = {}) {\n super(attrs);\n }\n\n get level() {\n if (this.progress >= 67) {\n return 3;\n } else if (this.progress >= 34) {\n return 2;\n } else if (this.progress >= 1) {\n return 1;\n }\n\n return 0;\n }\n}\n","import Config from 'es6/core/config';\nimport Transliterable from 'es6/models/transliterable';\n\nconst DISTRACTOR_COUNT = 3;\n\nconst DISTRACTOR_BLACKLIST = Object.freeze({\n ja: ['よ', 'ね', 'の', 'だ', 'です', 'が'],\n});\n\nconst HTML_TAG_PATTERN = /<\\/?[^>]+(>|$)/g;\n\nconst PUNCTUATION_PATTERN = /[\\s~`!\\/\\/@#$%^&*_+=(){}\\[\\]<>|:;\",.?\\\\「」『』〈〉【】《》~〜。、・./…?!@#$%^&*()=+01234567890-9]/g;\n\nexport default class Sentence {\n constructor(attrs = {}) {\n _.defaults(this, attrs, {\n goalId: null,\n\n itemId: null,\n\n position: null,\n\n distractors: [],\n\n cue: {\n id: null,\n text: null,\n transliterations: {},\n language: null,\n },\n\n response: {\n text: null,\n language: null,\n transliterations: {},\n },\n });\n\n this.cue = new Transliterable(this.cue);\n this.response = new Transliterable(this.response);\n }\n\n getId() {\n return this.cue.id;\n }\n\n getImage() {\n return this.image;\n }\n\n getSound() {\n return this.sound;\n }\n\n /**\n * Retrieves word entities for a sentence.\n *\n * @returns {Object[]} objects containing value field and isPunctuation\n */\n constructWordEntities() {\n this._wordEntities = [];\n const text = this.getBuilderText(true);\n\n if (text.length === 0) {\n return this._wordEntities;\n }\n\n // Remove markup that is included in content.\n const textWithoutHTML = text.replace(HTML_TAG_PATTERN, '');\n const words = textWithoutHTML.split(/\\s/g);\n\n let isPreviousLetterPunctuation = false;\n let isCurrentLetterPunctuation;\n\n for (const word of words) {\n let result = '';\n\n for (const letter of word) {\n isCurrentLetterPunctuation = letter.match(PUNCTUATION_PATTERN) !== null;\n\n // Group clusters of punctuation together.\n if (isPreviousLetterPunctuation !== isCurrentLetterPunctuation) {\n if (result.length > 0) {\n this._wordEntities.push({ value: result, isPunctuation: isPreviousLetterPunctuation });\n }\n\n result = '';\n isPreviousLetterPunctuation = isCurrentLetterPunctuation;\n }\n\n result += letter;\n }\n\n if (result.length > 0) {\n this._wordEntities.push({ value: result, isPunctuation: isCurrentLetterPunctuation });\n }\n }\n\n return this._wordEntities;\n }\n\n get wordEntities() {\n if (!this._wordEntities) {\n this.constructWordEntities();\n }\n\n return this._wordEntities;\n }\n\n /**\n * Given a set of distractors, return appropriate distractors for\n * the sentence.\n *\n * @param {String[]} distractorPool list of possible distractors\n * @returns {String[]}\n */\n getWordDistractors(distractorPool = []) {\n const wordEntities = this.wordEntities\n .filter(w => !w.isPunctuation)\n .map(w => w.value);\n\n return _.chain(distractorPool)\n .difference(wordEntities)\n .uniq()\n .shuffle()\n .filter(d => Sentence.isValidDistractor(d, this.getLanguage()))\n .value()\n .slice(0, DISTRACTOR_COUNT);\n }\n\n /**\n * Gets the language.\n *\n * @returns {String}\n */\n getLanguage() {\n return this.cue.language;\n }\n\n /**\n * Custom functionality to return the appropriate transliteration\n * for builder quizzes.\n *\n * @returns {String}\n */\n getBuilderText() {\n const lang = this.cue.getLanguageShortCode();\n const transliterations = this.cue.transliterations;\n\n // If the user is not in romaji or kana mode, return the special\n // Jpn transliteration which inserts spaces in the full text.\n if (lang === 'ja' && !Config.langSettings.romajiMode && !Config.langSettings.kanaMode) {\n return transliterations.Jpan;\n }\n\n if (lang === 'zh') {\n return transliterations.Latn;\n }\n\n return this.cue.getText();\n }\n\n /**\n * Custom functionality to return the appropriate text for fill\n * in the blank quizzes. Japanese should return the kana transliteration\n * for normal mode or kana mode.\n *\n * Chinese should use transliteration if available.\n *\n * @returns {String}\n */\n getFillInBlankText() {\n if (this.cue.language === 'ja' && !Config.langSettings.romajiMode) {\n return this.cue.transliterations.Hrkt;\n }\n\n return this.cue.getTransliteration() || this.cue.getText();\n }\n\n /**\n * Returns the appropriate text from the cue\n *\n * @returns {String}\n */\n getText() {\n return this.cue.getText();\n }\n\n /**\n * Returns the appropriate transliteration from the cue.\n *\n * @returns {String}\n */\n getTransliteration() {\n return this.cue.getTransliteration();\n }\n\n getTranslation() {\n return this.response && this.response.text || null;\n }\n\n /**\n * Determines if the transliterable is generally okay to be\n * used for sentences.\n *\n * Things that can make a distractor invalid:\n * 1) If it only contains punctuation.\n * 2) Is not capitalized.\n * 3) If the word is blacklisted.\n *\n * @param {String} text\n * @param {String} language\n * @returns {Boolean}\n */\n static isValidDistractor(text, language) {\n const languageBlacklist = DISTRACTOR_BLACKLIST[language] || [];\n const sanitizedText = text.replace(PUNCTUATION_PATTERN, '');\n const firstCharacter = sanitizedText.substr(0, 1);\n\n return sanitizedText.length !== 0 &&\n firstCharacter.toLowerCase() === firstCharacter &&\n !languageBlacklist.find(blacklisted => blacklisted === sanitizedText);\n }\n}\n","import QuizResult from 'es6/models/quiz-result';\n\n/**\n * These are the valid fields for extra QuizData.\n */\nconst VALID_QUIZ_DATA_FIELDS = [\n 'choiceMade', 'choices', 'hintUsed', 'hintsUsed', 'enteredText', 'targetText',\n\n // Legacy purposes from behavior.js\n 'entered_text', 'target_text',\n];\n\n/**\n * Base class for quizzes.\n */\nexport class QuizBase {\n constructor(contentDomain, contentId, goalId, isDiagnosticQuiz, quizFinishedCallback, quizTimer) {\n this._contentDomain = contentDomain;\n this._contentId = contentId;\n this._isDiagnosticQuiz = isDiagnosticQuiz;\n this._quizTimer = quizTimer;\n this._quizFinishedCallback = quizFinishedCallback;\n this._screenManager = Smartfm.screenManager;\n\n this.paused = false;\n this.result = new QuizResult(contentDomain, contentId, goalId);\n }\n\n /**\n * Returns the content ID being studied.\n *\n * @returns {Number}\n */\n getContentId() {\n return this._contentId;\n }\n\n /**\n * Returns the content domain for the quiz specializes in.\n *\n * @returns {String}\n */\n getContentDomain() {\n return this._contentDomain;\n }\n\n /**\n * Finalizes the quiz result and returns the presentation data.\n *\n * @returns {Object}\n */\n getFinalResult() {\n return this.result.finalize();\n }\n\n /**\n * Ends the quiz and triggers the end of quiz callback.\n */\n finishQuiz() {\n this.result.resume();\n this.result.endCurrentPhase();\n this._quizFinishedCallback(this);\n }\n\n /**\n * Pauses the quiz.\n */\n pause() {\n this.paused = true;\n\n if (this._quizTimer) {\n this._quizTimer.pause();\n }\n\n this.result.pause();\n }\n\n /**\n * Resumes the quiz.\n */\n resume() {\n this.paused = false;\n\n if (this._quizTimer) {\n this._quizTimer.resume();\n }\n\n this.result.resume();\n }\n\n /**\n * The show method needs to be defined and overriden.\n *\n * @override\n */\n show() {\n throw new Error('show() needs to be defined');\n }\n\n /**\n * Sets the quiz type for each result. Should be called by all\n * inheriting classes.\n *\n * @param {String} quizType\n */\n _setQuizType(quizType) {\n this.quizType = quizType;\n this.result.leQuizType = quizType;\n }\n\n /**\n * This will set the quiz data for the QuizResult. This function\n * will not completely replace all the data, but merely override\n * the fields provided.\n *\n * Reference the VALID_QUIZ_DATA_FIELDS constant above to see\n * which fields are acceptable to pass in.\n *\n * @param {Object} quizData\n */\n updateQuizData(quizData = {}) {\n const validFields = _.pick(quizData, ...VALID_QUIZ_DATA_FIELDS);\n Object.assign(this.result.quizData, validFields);\n }\n}\n\nexport default QuizBase;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new function.\n */\nfunction baseProperty(key) {\n return function (object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/** Built-in value references. */\n\nvar getPrototypeOf = Object.getPrototypeOf;\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n\nfunction baseHas(object, key) {\n // Avoid a bug in IE 10-11 where objects with a [[Prototype]] of `null`,\n // that are composed entirely of index properties, return `false` for\n // `hasOwnProperty` checks of them.\n return hasOwnProperty.call(object, key) || _typeof(object) == 'object' && key in object && getPrototypeOf(object) === null;\n}\n\nmodule.exports = baseHas;","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = Object.keys;\n/**\n * The base implementation of `_.keys` which doesn't skip the constructor\n * property of prototypes or treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n\nfunction baseKeys(object) {\n return nativeKeys(Object(object));\n}\n\nmodule.exports = baseKeys;","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object, else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n\n\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;","var isFunction = require('./isFunction');\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = isFunction(Ctor) && Ctor.prototype || objectProto;\n return value === proto;\n}\n\nmodule.exports = isPrototype;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.run = run;\nexports.runProc = runProc;\nexports.stepProc = stepProc;\nexports.stepProcSynchronous = stepProcSynchronous;\nexports.stopProc = stopProc;\nexports.stopProcSynchronous = stopProcSynchronous;\nexports.call = call;\nexports.callSync = callSync;\nexports.callMethod = callMethod;\nexports.callMethodSync = callMethodSync;\nexports.apply = apply;\nexports.applySync = applySync;\nexports.isCall = isCall;\nexports.executeCall = executeCall;\nexports.isPromise = isPromise;\nexports.isGenerator = isGenerator;\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nvar RESULT_TYPE_NORMAL = exports.RESULT_TYPE_NORMAL = 0,\n RESULT_TYPE_ERROR = exports.RESULT_TYPE_ERROR = 1,\n RESULT_TYPE_RETURN = exports.RESULT_TYPE_RETURN = 2,\n RESULT_TYPE_WAIT = exports.RESULT_TYPE_WAIT = 3,\n RESULT_TYPE_DONE = exports.RESULT_TYPE_DONE = 4;\nvar CALL = '@@react-task/proc.call';\nvar INITIAL_STEP_RESULT = {\n value: undefined,\n type: RESULT_TYPE_NORMAL\n};\nvar STOP_STEP_RESULT = {\n value: undefined,\n type: RESULT_TYPE_RETURN\n};\n\nfunction run(generatorFn) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return runProc(generatorFn.apply(undefined, args));\n}\n\nfunction runProc(generator, onStep) {\n var onCancel = void 0;\n var promise = new Promise(function (resolve, reject) {\n var currentStep = null;\n var callSyncPromises = [];\n\n var cancelCallSyncPromises = function cancelCallSyncPromises() {\n callSyncPromises.forEach(function (promise) {\n if (typeof promise.cancel === 'function') {\n promise.cancel();\n }\n });\n };\n\n var loopStep = function loopStep(stepResult) {\n if (isPromise(stepResult.value)) {\n // Normally, stepProc waits on the promise if a `call()` returns a\n // promise. However, stepProc can return a promise if the proc yields a\n // call to callSync with a function that returns a promise.\n //\n // Save all promises returned by either of these methods so that we can\n // call their `cancel` method (if they have one) when the proc ends.\n //\n // For example, this means that if you spawn other procs from one proc:\n //\n // ```\n // function* parentProc() {\n // const childPromise1 = yield callSync(run, childProc1);\n // const childPromise2 = yield callSync(run, childProc2);\n // const first = yield Promise.race([childPromise1, childPromise2]);\n // yield callMethod(console, 'log', 'First result: ', first);\n // }\n // ```\n //\n // Then childPromise1.cancel() and childPromise2.cancel() will be called\n // when parentProc gets cancelled or ends normally.\n //\n // If you want to account for the fact that promises can have multiple\n // consumers, then you may want to consider using a promise library that\n // has support for cancellation, such as Bluebird:\n //\n // http://bluebirdjs.com/docs/api/cancellation.html#what-about-promises-that-have-multiple-consumers\n callSyncPromises.push(stepResult.value);\n } // Call stepProc with the previous step's result until the generator is done.\n\n\n if (stepResult.type === RESULT_TYPE_DONE) {\n currentStep = null;\n cancelCallSyncPromises();\n resolve(stepResult.value);\n } else {\n currentStep = stepProcSynchronous(generator, stepResult);\n\n if (currentStep.type === RESULT_TYPE_WAIT) {\n currentStep.value.then(loopStep, reject);\n } else {\n Promise.resolve(currentStep).then(loopStep);\n }\n\n if (onStep) {\n onStep(currentStep);\n }\n }\n };\n\n onCancel = function onCancel() {\n // Cancel the promise if we're currently waiting on a promise.\n if (currentStep && currentStep.type === RESULT_TYPE_WAIT) {\n currentStep.value.cancel();\n }\n\n loopStep(STOP_STEP_RESULT);\n };\n\n loopStep(INITIAL_STEP_RESULT);\n });\n\n promise.cancel = function () {\n onCancel();\n };\n\n return promise;\n}\n\nfunction stepProc(generator) {\n var previousResult = arguments.length <= 1 || arguments[1] === undefined ? INITIAL_STEP_RESULT : arguments[1];\n var stepPromise = null;\n var promise = new Promise(function (resolve, reject) {\n var stepResult = stepProcSynchronous(generator, previousResult);\n\n if (stepResult.type === RESULT_TYPE_WAIT) {\n stepPromise = stepResult.value;\n stepPromise.then(resolve, reject);\n } else {\n Promise.resolve(stepResult).then(resolve);\n }\n });\n\n promise.cancel = function () {\n if (stepPromise) {\n stepPromise.cancel();\n }\n };\n\n return promise;\n}\n\nfunction stepProcSynchronous(generator) {\n var previousResult = arguments.length <= 1 || arguments[1] === undefined ? INITIAL_STEP_RESULT : arguments[1];\n\n if (!isGenerator(generator)) {\n throw new TypeError('First argument to stepProc must be a generator ' + '(not a generator function).');\n }\n\n if (!(previousResult.hasOwnProperty('value') && previousResult.type >= RESULT_TYPE_NORMAL && previousResult.type <= RESULT_TYPE_DONE)) {\n throw new TypeError('stepProc got bad previousResult.');\n }\n\n var generatorResult = void 0;\n\n switch (previousResult.type) {\n case RESULT_TYPE_ERROR:\n generatorResult = generator[\"throw\"](previousResult.value);\n break;\n\n case RESULT_TYPE_RETURN:\n generatorResult = generator[\"return\"](previousResult.value);\n break;\n\n default:\n generatorResult = generator.next(previousResult.value);\n break;\n }\n\n if (generatorResult.done) {\n // If the generator is done, finish the step with the final result.\n return {\n value: generatorResult.value,\n type: RESULT_TYPE_DONE\n };\n } else if (isPromise(generatorResult.value)) {\n // If the generator yielded a promise, finish the step when the promise resolves.\n return {\n value: stepProcWrapPromise(generatorResult.value),\n type: RESULT_TYPE_WAIT\n };\n } else if (isCall(generatorResult.value)) {\n // If the generator yielded a call object, call the function contained in\n // the call object and resolve the result.\n var _call = generatorResult.value;\n var callInfo = _call[CALL];\n var callResult = void 0;\n\n try {\n callResult = executeCall(_call);\n } catch (error) {\n // If there was an error while executing the call, send the error to the\n // next step so the generator can handle it.\n return {\n value: error,\n call: callInfo,\n type: RESULT_TYPE_ERROR\n };\n }\n\n if (isPromise(callResult) && !callInfo.isSync) {\n // If the call returned a promise and it wasn't a synchronous call,\n // finish the step when the promise resolves.\n return {\n value: stepProcWrapPromise(callResult),\n call: callInfo,\n type: RESULT_TYPE_WAIT\n };\n } else {\n // Otherwise, just finish the step immediately with the result of the call.\n return {\n value: callResult,\n call: callInfo,\n type: RESULT_TYPE_NORMAL\n };\n }\n } else {\n // Throw an error if the generator yields anything else.\n throw new Error('Procs should only yield promises or call objects ' + '(returned by call/callSync/apply/applySync).');\n }\n}\n\nfunction stopProc(generator) {\n // Tells stepProc to call .return() on the given generator and continue\n // execution from there. A proc might need to continue execution in order to\n // do clean up inside of a finally {} block, so you should continue execution\n // of a proc even aftering calling stopProc() on it.\n return stepProc(generator, STOP_STEP_RESULT);\n}\n\nfunction stopProcSynchronous(generator) {\n return stepProcSynchronous(generator, STOP_STEP_RESULT);\n}\n/**\n * Helper function to resolve/reject with a result object when the given\n * promise resolves/rejects.\n *\n * If the step gets cancelled before the waiting promise resolves or\n * rejects, then the step will never resolve/reject even if its waiting\n * promise does.\n */\n\n\nfunction stepProcWrapPromise(promise) {\n var wasCancelled = false;\n var wrappedPromise = new Promise(function (resolve, reject) {\n promise.then(function (result) {\n if (!wasCancelled) {\n promise = null;\n resolve({\n value: result,\n type: RESULT_TYPE_NORMAL\n });\n }\n }, function (error) {\n if (!wasCancelled) {\n promise = null;\n reject({\n value: error,\n type: RESULT_TYPE_ERROR\n });\n }\n });\n });\n\n wrappedPromise.cancel = function () {\n if (!wasCancelled) {\n wasCancelled = true;\n\n if (promise && typeof promise.cancel === 'function') {\n promise.cancel();\n }\n }\n };\n\n return wrappedPromise;\n} // Helper functions for creating/working with call objects.\n\n\nfunction createCall(context, fn, args, isSync) {\n return _defineProperty({}, CALL, {\n context: context,\n fn: fn,\n args: args,\n isSync: isSync\n });\n}\n\nfunction call(fn) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return createCall(undefined, fn, args, false);\n}\n\nfunction callSync(fn) {\n for (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n return createCall(undefined, fn, args, true);\n}\n\nfunction callMethod(object, methodName) {\n for (var _len4 = arguments.length, args = Array(_len4 > 2 ? _len4 - 2 : 0), _key4 = 2; _key4 < _len4; _key4++) {\n args[_key4 - 2] = arguments[_key4];\n }\n\n return createCall(object, object[methodName], args, false);\n}\n\nfunction callMethodSync(object, methodName) {\n for (var _len5 = arguments.length, args = Array(_len5 > 2 ? _len5 - 2 : 0), _key5 = 2; _key5 < _len5; _key5++) {\n args[_key5 - 2] = arguments[_key5];\n }\n\n return createCall(object, object[methodName], args, true);\n}\n\nfunction apply(context, fn, args) {\n // TODO: Throw an error in non-production environments if you pass any more\n // than three arguments (just to make sure someone doesn't accidentally use\n // apply like call.\n return createCall(context, fn, args, false);\n}\n\nfunction applySync(context, fn, args) {\n return createCall(context, fn, args, true);\n}\n\nfunction isCall(object) {\n return !!(object && object[CALL]);\n}\n\nfunction executeCall(object) {\n var call = object[CALL]; // Same as doing call.fn.apply(call.context, call.args), but will still work\n // even if someone mucks with the properties/prototype of call.fn.\n\n return Function.prototype.apply.call(call.fn, call.context, call.args);\n} // Checks if an object is a Promise, using the loosest definition of promise\n// possible so that the library will work with non-standard Promises.\n\n\nfunction isPromise(object) {\n return !!(object && typeof object.then === 'function');\n}\n\nfunction isGenerator(object) {\n return !!(object && typeof object.next === 'function' && typeof object[\"throw\"] === 'function' && typeof object[\"return\"] === 'function');\n}","/* eslint-disable prefer-template, arrow-body-style, quote-props */\nimport { isDebugModeEnabled } from 'es6/controllers/apps/debug-overrides';\nimport ItemQuizBase from 'es6/controllers/apps/quizzes/item-quiz-base';\nimport Logger from 'es6/services/logger';\nimport RapidChoiceComponent from 'es6/components/apps/screens/rapid-choice';\nimport { ResultTypes } from 'es6/models/quiz-result';\n\n/**\n * @this RapidChoiceBase\n * @param {Boolean} isCorrect\n * @param {Number} choiceMade index of the choice made\n */\nfunction handleAnswer(isCorrect, choiceMade) {\n this._quizTimer.finished = null;\n this._quizTimer.pause();\n this.updateQuizData({ choiceMade });\n this.result.setResult(isCorrect ? ResultTypes.CORRECT : ResultTypes.INCORRECT);\n this.result.beginPhase('confirmation');\n}\n\n/**\n * TODO: Put this logic\n *\n * @this RapidChoiceBase\n */\nfunction handleTimeout() {\n this.result.setResult(ResultTypes.TIMEOUT);\n this.result.beginPhase('confirmation');\n renderComponent.call(this);\n}\n\n/**\n * @this RapidChoiceBase\n * @param {Function} onLoaded\n */\nfunction renderComponent(onLoaded) {\n const { answer, choices, recallPrompt } = this;\n const props = {\n correctChoiceIndex: choices.indexOf(answer),\n choices,\n onAnswer: handleAnswer.bind(this),\n onQuizFinished: this.finishQuiz.bind(this),\n recallPrompt,\n recallPromptSound: this.recall === 'cue' ? this.itemPackage.sound : null,\n timedOut: this.result.isTimeout(),\n };\n\n this._screenManager.renderComponent(RapidChoiceComponent, props, onLoaded);\n}\n\nclass RapidChoiceBase extends ItemQuizBase {\n constructor(itemPackage, ...args) {\n super(itemPackage, ...args);\n this._pausedAndFinished = false;\n this.timeLimit = 3;\n }\n\n show() {\n Logger.info('Quiz', 'Showing ' + this.quizType + ' quiz for ' + this.itemPackage.item.cue.text, this);\n\n this._quizTimer.finished = handleTimeout.bind(this);\n\n this.result.beginPhase('quiz');\n\n this.choices = [this.answer, this.distractor];\n\n if (!isDebugModeEnabled()) {\n this.choices = _.shuffle(this.choices);\n }\n\n // Convert the choices so the quizData reflects the appropriate structure.\n this.updateQuizData({\n choices: this.choices.map(choice => {\n return { 'text': choice, 'correct': choice === this.answer };\n }),\n });\n\n renderComponent.call(this, () => this._quizTimer.start(this.timeLimit));\n }\n\n _setDistractor(distractorSource) {\n const distractor = distractorSource[_.random(0, distractorSource.length - 1)];\n this.distractor = distractor.getText();\n }\n\n /**\n * There is some custom functionality because pausing the quiz\n * during the end animation should not allow proceeding to the next\n * quiz.\n */\n resume() {\n super.resume();\n\n // If the quiz is already done, move to the next quiz.\n if (this._pausedAndFinished) {\n this._pausedAndFinished = false;\n super.finishQuiz();\n }\n }\n\n /**\n * If the user has paused the app during the transition, we don't\n * want to go to the next quiz.\n */\n finishQuiz() {\n if (this.paused) {\n this._pausedAndFinished = true;\n return;\n }\n\n this._quizTimer.disable();\n super.finishQuiz();\n }\n}\n\nexport default RapidChoiceBase;\n","import { isDebugModeEnabled } from 'es6/controllers/apps/debug-overrides';\nimport SentenceQuizBase from 'es6/controllers/apps/quizzes/sentence-quiz-base';\n\n/**\n * Base class for the fill in the blank sentence quizzes.\n */\nexport class SentenceStudyListeningFillInTheBlankBase extends SentenceQuizBase {\n constructor(...args) {\n super(...args);\n\n // Define in subclass class.\n this._mode = null;\n }\n\n /**\n * Callback for submitting on the quiz screen.\n *\n * @param {Boolean} isCorrect\n * @param {String} enteredText\n * @param {Number} hintsUsed\n * @param {Number} mistakes\n */\n _handleSubmit(isCorrect, enteredText, hints, mistakes, fillInTheBlankHTML) {\n this._isCorrect = isCorrect;\n this._hints = hints;\n this._mistakes = mistakes;\n this._fillInTheBlankHTML = fillInTheBlankHTML;\n\n // Set the appropriate quiz result.\n this._setQuizResult(enteredText);\n\n // Update meta data and start next phase.\n this.updateQuizData({ enteredText, hintsUsed: hints });\n\n // If the quiz is over, start the confirmation phase. Otherwise,\n // create a new quiz result.\n if (isCorrect || mistakes === this._getMaxMistakes()) {\n this.result.beginPhase('confirmation');\n this._showConfirmationScreen();\n } else {\n this._pushQuizResult();\n }\n }\n\n /**\n * Renders the confirmation screen.\n *\n * @override\n */\n _showConfirmationScreen() {\n const props = {\n isCorrect: this._isCorrect,\n maxMistakes: this._getMaxMistakes(),\n mistakes: this._mistakes,\n onNext: this.finishQuiz.bind(this),\n sentence: this._sentence,\n fillInTheBlankHTML: this._fillInTheBlankHTML,\n };\n\n this._screenManager.populateAndShow('dictation_confirmation', props);\n }\n\n /**\n * Renders or rerenders the quiz screen.\n *\n * @override\n */\n _showQuizScreen() {\n const props = {\n debugMode: isDebugModeEnabled(),\n maxHints: this._getMaxHints(),\n maxMistakes: this._getMaxMistakes(),\n mode: this._mode,\n onDontKnow: this._handleDontKnow.bind(this),\n onSubmit: this._handleSubmit.bind(this),\n sentence: this._sentence,\n };\n\n this._screenManager.populateAndShow('dictation_quiz', props);\n }\n\n /**\n * Renders the recall screen.\n *\n * @override\n */\n _showRecallScreen() {\n const props = {\n mode: this._mode,\n onDontKnow: this._handleDontKnow.bind(this),\n onNext: this._handleRecallNext.bind(this),\n sentence: this._sentence,\n };\n\n this._screenManager.populateAndShow('dictation_recall', props);\n }\n}\n\nexport default SentenceStudyListeningFillInTheBlankBase;\n","import QuizBase from 'es6/controllers/apps/quizzes/quiz-base';\nimport { QuizResult, ResultTypes } from 'es6/models/quiz-result';\n\n/**\n * Base class for the sentence trainer quizzes.\n *\n * Subclasses should implement:\n *\n * _showConfirmationScreen()\n * _showQuizScreen()\n * _showRecallScreen()\n */\n\nconst MAX_HINTS = 3;\n\nconst MAX_MISTAKES = 3;\n\nexport class SentenceQuizBase extends QuizBase {\n constructor(sentence, ...args) {\n super('sentences', sentence.getId(), ...args);\n this._sentence = sentence;\n\n // Used to determine quiz result.\n this._isCorrect = false;\n\n // Keep track of hints and mistakes.\n this._hints = 0;\n this._mistakes = 0;\n\n // Sentence quizzes can have multiple quiz results. Maintain\n // them here.\n this.results = [this.result];\n }\n\n /**\n * Sentence quizzes return multiple results.\n *\n * @override\n * @returns {QuizResult[]}\n */\n getFinalResult() {\n return this.results.map(result => result.finalize());\n }\n\n /**\n * Returns the total number of hints allowed.\n *\n * @returns {Number}\n */\n _getMaxHints() {\n return MAX_HINTS;\n }\n\n /**\n * Returns the total number of mistakes allowed.\n *\n * @returns {Number}\n */\n _getMaxMistakes() {\n return MAX_MISTAKES;\n }\n\n /**\n * Callback for whenever the user hits the don't know button.\n */\n _handleDontKnow(fillInTheBlankHTML) {\n this.result.beginPhase('confirmation');\n this.result.setResult(ResultTypes.INCORRECT);\n this._fillInTheBlankHTML = fillInTheBlankHTML;\n this._showConfirmationScreen();\n }\n\n /**\n * Callback for onNext with the recall screen.\n */\n _handleRecallNext() {\n this.result.beginPhase('quiz');\n this._showQuizScreen();\n }\n\n /**\n * Pushes the current quiz result onto the results array and\n * creates a new quiz result.\n *\n * @param {String} phase what phase to start the new result on\n */\n _pushQuizResult(phase = 'quiz') {\n this.result.resume();\n this.result.endCurrentPhase();\n\n const { contentId, contentDomain, goalId, leQuizType } = this.result;\n\n // Create a new result and start the new phase.\n this.result = new QuizResult(contentDomain, contentId, goalId, leQuizType);\n this.result.beginPhase(phase);\n this.results.push(this.result);\n }\n\n /**\n * Sets the appropriate quiz result based on the current\n * instance variables.\n */\n _setQuizResult() {\n let resultType;\n\n if (this._isCorrect) {\n if (this._hints > 0) {\n resultType = ResultTypes.CORRECT_WITH_HINT;\n } else {\n resultType = ResultTypes.CORRECT;\n }\n } else {\n resultType = ResultTypes.INCORRECT;\n }\n\n this.result.setResult(resultType);\n }\n\n /**\n * Starts the quiz.\n */\n show() {\n this.result.beginPhase('recall');\n this._showRecallScreen();\n }\n\n _showConfirmationScreen() {\n throw new Error('_showConfirmationScreen() needs to be overridden');\n }\n\n _showQuizScreen() {\n throw new Error('_showQuizScreen() needs to be overridden');\n }\n\n _showRecallScreen() {\n throw new Error('_showRecallScreen() needs to be overridden');\n }\n}\n\nexport default SentenceQuizBase;\n","/* eslint-disable no-shadow, no-return-assign, no-param-reassign */\nimport { isDebugModeEnabled } from 'es6/controllers/apps/debug-overrides';\nimport SentenceBuilderRecall from 'es6/components/apps/screens/sentence-builder-recall';\nimport SentenceBuilderQuiz from 'es6/components/apps/screens/sentence-builder-quiz';\nimport SentenceBuilderConfirmation from 'es6/components/apps/screens/sentence-builder-confirmation';\nimport SentenceQuizBase from 'es6/controllers/apps/quizzes/sentence-quiz-base';\nimport WordChoice from 'es6/models/word-choice';\nimport WordSlot from 'es6/models/word-slot';\n\n/**\n * Base class for the listening and translation assembly quizzes.\n */\nexport class SentenceStudyAssemblyBase extends SentenceQuizBase {\n constructor(...args) {\n super(...args);\n\n // Define in subclass class.\n this._mode = null;\n\n // Keep track of hints and mistakes.\n this._hints = 0;\n this._mistakes = 0;\n\n // Build distractors, word slots and word choices.\n const wordEntities = this._sentence.wordEntities;\n\n // Build word choices and word slots.\n this._wordChoices = [];\n this._wordSlots = [];\n\n wordEntities.forEach((wordEntity, i) => {\n const wordChoice = new WordChoice(wordEntity);\n const wordSlot = new WordSlot({ expected: wordEntity.value });\n\n // If it is punctuation, fill the word slot and don't\n // add to possible choices.\n if (wordEntity.isPunctuation) {\n wordSlot.insert(wordChoice, true);\n wordSlot.isPunctuation = true;\n } else {\n this._wordChoices.push(wordChoice);\n }\n\n this._wordSlots.push(wordSlot);\n });\n\n // Add distractors and shuffle the word choices.\n const distractors = this._sentence.distractors.map(d => new WordChoice({ value: d }));\n this._wordChoices = this._wordChoices.concat(distractors);\n this._wordChoices = _.shuffle(this._wordChoices);\n }\n\n /**\n * Fills the fields with the correct answers. Used by debug mode.\n */\n _fillFieldsWithCorrectAnswers() {\n // Open up incorrect slots.\n this._wordSlots.filter(slot => slot.isIncorrect()).forEach(slot => slot.free());\n\n // Populate with appropriate word choices.\n this._wordSlots.filter(slot => !slot.isFilled()).forEach(slot => {\n const wordChoice = this._wordChoices.find(wc => !wc.used && wc.value === slot.expected);\n slot.insert(wordChoice);\n });\n }\n\n /**\n * Updates meta data and finishes the quiz.\n *\n * @override\n */\n finishQuiz() {\n super.finishQuiz();\n }\n\n /**\n * Callback for when a choice is clicked. There are two possibilities:\n * either a word choice inside a slot was clicked or a word choice\n * from the word bank was clicked.\n *\n * @param {WordChoice} wordChoice\n */\n _handleClick(wordChoice) {\n if (wordChoice.used) {\n // If the word choice is used, find the word slot and free the choice.\n const wordSlot = WordSlot.findWordSlotByWordChoice(this._wordSlots, wordChoice);\n\n if (!wordSlot.isFrozen()) {\n wordSlot.free();\n }\n } else {\n // Find the first empty slot and fill it.\n const wordSlot = this._wordSlots.find(wordSlot => !wordSlot.isFilled() || wordSlot.isIncorrectAndGraded());\n\n if (wordSlot) {\n wordSlot.insert(wordChoice);\n }\n }\n\n this._showQuizScreen();\n }\n\n /**\n * Callback for when word choice is dragged.\n *\n * @param {WordChoice} wordChoice\n * @param {Event} e\n */\n _handleDrag(wordChoice, e) {\n if (!wordChoice) {\n return;\n }\n\n const wordSlot = WordSlot.findWordSlotByWordChoice(this._wordSlots, wordChoice);\n\n if (wordSlot) {\n wordSlot.free();\n }\n\n this._showQuizScreen();\n }\n\n /**\n * Callback for when a drag event end. If the word choice is\n * in a word slot, clear the word slot.\n *\n * @param {WordChoice} wordChoice\n * @param {Event} e\n */\n _handleDragEnd(wordChoice, e) {\n if (e.dataTransfer.dropEffect === 'none') {\n const wordSlot = WordSlot.findWordSlotByWordChoice(this._wordSlots, wordChoice);\n\n if (wordSlot) {\n wordSlot.free();\n }\n }\n\n this._showQuizScreen();\n }\n\n /**\n * Callback for when a word choice is dropped on a slot. There\n * are a few important things to consider.\n *\n * 1) If toWordSlot is falsey, this means that the word choice is being\n * returned to the original drop zone.\n * 2) The word choice might be occupying an existing word slot.\n * 3) The slot the word choice is beinged moved to might contain a word choice.\n *\n * @param {WordSlot} toWordSlot the slot being dropped into\n * @param {WordChoice} wordChoice the word choice used to drop into\n */\n _handleDrop(toWordSlot, wordChoice) {\n const fromWordSlot = WordSlot.findWordSlotByWordChoice(this._wordSlots, wordChoice);\n\n // If the word choice is coming from another word slot, free it.\n if (fromWordSlot) {\n fromWordSlot.free();\n } else {\n wordChoice.free();\n }\n\n if (toWordSlot) {\n // If the new word slot has a word choice in it. Remove it.\n const swapChoice = toWordSlot.free();\n\n // If there was a choice and the choice is coming from another slot.\n // Perform a switch.\n if (swapChoice && fromWordSlot) {\n fromWordSlot.insert(swapChoice);\n }\n\n toWordSlot.insert(wordChoice);\n }\n\n this._showQuizScreen();\n }\n\n /**\n * Callback for when the hint button is used.\n */\n _handleHint() {\n if (this._getMaxHints() === this._hints) {\n return;\n }\n\n const wordSlot = this._wordSlots.find(wordSlot => wordSlot.isIncorrectAndUnhinted());\n\n // If there is a word slot, free the slot and set the hinted flag to true.\n if (wordSlot) {\n wordSlot.free();\n wordSlot.hinted = true;\n this._hints++;\n }\n\n this.updateQuizData();\n this._showQuizScreen();\n }\n\n /**\n * If debugging is on, populate the quiz with the correct answers.\n *\n * @override\n */\n _handleRecallNext(...args) {\n if (isDebugModeEnabled()) {\n this._fillFieldsWithCorrectAnswers();\n }\n\n super._handleRecallNext(...args);\n }\n\n /**\n * Callback for when a slot in a quiz is shifted.\n *\n * @param {Number} slotIndex the index of the slot being pushed\n * @param {WordChoice} wordChoice the word choice to push in\n */\n _handleShift(slotIndex, wordChoice) {\n WordSlot.shiftWordSlots(this._wordSlots, slotIndex);\n this._wordSlots[slotIndex].insert(wordChoice);\n this._showQuizScreen();\n }\n\n /**\n * Callback for submitting the sentence trainer quiz.\n */\n _handleSubmit() {\n // Mark all the slots as graded.\n this._wordSlots.forEach(wordSlot => wordSlot.graded = true);\n\n // See if there are any incorrect.\n const incorrect = this._wordSlots.some(wordSlot => wordSlot.isIncorrect());\n\n // Increment mistakes if there are.\n if (incorrect) {\n this._mistakes++;\n } else {\n this._isCorrect = true;\n }\n\n // Is the quiz over?\n const endQuiz = this._isCorrect || this._mistakes === this._getMaxMistakes();\n\n this._setQuizResult();\n\n if (endQuiz) {\n this.result.beginPhase('confirmation');\n this._showConfirmationScreen();\n } else {\n // Create a new quiz result.\n this._pushQuizResult();\n this._showQuizScreen();\n }\n }\n\n /**\n * Along with setting the result, add the meta data.\n *\n * @override\n */\n _setQuizResult() {\n const enteredText = this._wordSlots.map(w => w.value).join(' ');\n this.updateQuizData({ enteredText, hintsUsed: this._hints });\n super._setQuizResult();\n }\n\n show() {\n this.result.beginPhase('recall');\n this._showRecallScreen();\n }\n\n /**\n * Renders the confirmation screen.\n *\n * @override\n */\n _showConfirmationScreen() {\n const props = {\n isCorrect: this._isCorrect,\n maxMistakes: this._getMaxMistakes(),\n mistakes: this._mistakes,\n onNext: this.finishQuiz.bind(this),\n wordSlots: this._wordSlots,\n sentence: this._sentence,\n };\n\n this._screenManager.renderComponent(SentenceBuilderConfirmation, props);\n }\n\n /**\n * Renders or rerenders the quiz screen.\n *\n * @override\n */\n _showQuizScreen() {\n const props = {\n hints: this._hints,\n maxHints: this._getMaxHints(),\n maxMistakes: this._getMaxMistakes(),\n mistakes: this._mistakes,\n mode: this._mode,\n onClick: this._handleClick.bind(this),\n onDrag: this._handleDrag.bind(this),\n onDragEnd: this._handleDragEnd.bind(this),\n onDrop: this._handleDrop.bind(this),\n onDontKnow: this._handleDontKnow.bind(this),\n onHint: this._handleHint.bind(this),\n onShift: this._handleShift.bind(this),\n onSubmit: this._handleSubmit.bind(this),\n sentence: this._sentence,\n wordChoices: this._wordChoices,\n wordSlots: this._wordSlots,\n };\n\n this._screenManager.renderComponent(SentenceBuilderQuiz, props);\n }\n\n /**\n * Renders the recall screen.\n *\n * @override\n */\n _showRecallScreen() {\n const props = {\n mode: this._mode,\n onDontKnow: this._handleDontKnow.bind(this),\n onNext: this._handleRecallNext.bind(this),\n sentence: this._sentence,\n };\n\n this._screenManager.renderComponent(SentenceBuilderRecall, props);\n }\n}\n\nexport default SentenceStudyAssemblyBase;\n","/* eslint-disable react/prefer-es6-class, react/sort-comp */\nimport classnames from 'classnames';\nimport React from 'react';\nimport { t } from 'es6/services/localization';\n\nexport default React.createClass({\n displayName: 'QuizStatus',\n\n propTypes: {\n maxMistakes: React.PropTypes.number.isRequired,\n mistakes: React.PropTypes.number.isRequired,\n },\n\n render() {\n return (\n <aside className=\"quiz-status\">\n <div className=\"quiz-mistakes\">\n <div className=\"label\">{t('mistakes')}</div>\n <div className=\"mistake-glyphs\">{this._renderMistakes()}</div>\n </div>\n </aside>\n );\n },\n\n _renderMistakes() {\n const { mistakes, maxMistakes } = this.props;\n const mistakeComponents = [];\n\n for (let i = 0; i < maxMistakes; i++) {\n const className = classnames('glyph glyph-cross-sharp mistake', {\n used: (i + 1) <= mistakes,\n });\n\n mistakeComponents.push(<span key={i} className={className} />);\n }\n\n return mistakeComponents;\n },\n});\n","/* eslint-disable no-return-assign, no-param-reassign, arrow-body-style, react/sort-comp, array-callback-return */\nimport classnames from 'classnames';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport DropZone from 'es6/components/apps/sentence-builder/drop-zone';\nimport ShiftZone from 'es6/components/apps/sentence-builder/shift-zone';\nimport WordSlot from 'es6/models/word-slot';\nimport WordPiece from 'es6/components/apps/sentence-builder/word-piece';\n\n/**\n * hideWordSlotIndex: the index of the word slot that will be taken\n * off in the hypothetical event of a shift event.\n * shiftLeftSide: if the target is being shifted on the left or right.\n * shiftEventTarget: the DOM node that triggered the shift event.\n */\nconst INITIAL_STATE = {\n hideWordSlotIndex: -1,\n shiftLeftSide: false,\n shiftEventTarget: null,\n};\n\nclass WordSlots extends React.Component {\n constructor(props) {\n super(props);\n this.state = INITIAL_STATE;\n }\n\n componentDidMount() {\n this._positionWordSlots();\n }\n\n /**\n * Make sure that any DOM nodes that were manipulated get set back to normal.\n *\n * @param {Object} nextProps\n * @param {Object} nextState\n */\n componentWillUpdate(nextProps, nextState) {\n const { shiftEventTarget, hideWordSlotIndex } = this.state;\n\n // Make sure the hidden slot is shown.\n if (hideWordSlotIndex !== -1 && nextState.hideWordSlotIndex !== hideWordSlotIndex) {\n ReactDOM.findDOMNode(this).childNodes[hideWordSlotIndex].style.display = '';\n }\n\n // Make sure the padding is removed from the existing shift event target.\n if (shiftEventTarget && nextState.shiftEventTarget !== shiftEventTarget) {\n shiftEventTarget.style.paddingLeft = '';\n shiftEventTarget.style.paddingRight = '';\n }\n }\n\n componentDidUpdate() {\n this._positionWordSlots();\n }\n\n /**\n * Helper method to determine if the slot is draggable.\n *\n * @param {WordSlot} slot\n * @returns {Boolean}\n */\n _isDraggable(slot) {\n return !slot.isPunctuation && this.props.enableDragEvents && !slot.isCorrectAndGraded();\n }\n\n /**\n * Determines which slot will get dropped out, only update the state\n * if the end result will be different.\n *\n * @param {Number} slotIndex\n * @param {Boolean} shiftLeftSide\n * @param {WordChoice} wordChoice\n * @param {Event} e\n */\n _handleShiftStart(slotIndex, shiftLeftSide, wordChoice, e) {\n // In case the word piece is targeted, make sure the parent gets chosen.\n const { target } = e;\n const shiftEventTarget = target.classList.contains('shift-zone') ? target : target.parentElement;\n\n if (this.state.hideWordSlotIndex === -1 || shiftLeftSide !== this.state.shiftLeftSide) {\n const wordSlots = this.props.data;\n const hideWordSlotIndex = WordSlot.getShiftEndIndex(wordSlots, slotIndex);\n this.setState({ shiftLeftSide, shiftEventTarget, hideWordSlotIndex });\n }\n }\n\n /**\n * Pass the arguments back up and reset the hideWordSlotIndex state.\n */\n _handleShift(...args) {\n this.props.onShift.call(this, ...args);\n this._resetState();\n }\n\n /**\n * Reset the hideWordSlotIndex state.\n */\n _handleShiftEnd() {\n this._resetState();\n }\n\n /**\n * Calculates and positions the nodes within the word slot container.\n */\n _positionWordSlots() {\n const domNode = ReactDOM.findDOMNode(this);\n const wordSlots = [...domNode.childNodes];\n const totalWidth = domNode.clientWidth;\n const { hideWordSlotIndex, shiftLeftSide, shiftEventTarget } = this.state;\n\n // Reset the padding on the shift event target so we can recalculate\n // positions, naturally.\n if (shiftEventTarget) {\n shiftEventTarget.style.paddingLeft = '';\n shiftEventTarget.style.paddingRight = '';\n }\n\n // Get a reference to the hidden word slot (in case we need its stored width).\n const hiddenWordSlot = wordSlots[hideWordSlotIndex];\n\n // Reset the display state of the word slots.\n wordSlots.forEach(wordSlot => wordSlot.style.display = '');\n\n // Get the row height by finding the largest client height.\n const rowHeight = wordSlots.reduce((prev, wordSlot) => {\n return Math.max(prev, wordSlot.clientHeight);\n }, 0);\n\n // Keep track of the offsets.\n let leftOffset = 0;\n let topOffset = 0;\n\n // Iterate through the word slots.\n wordSlots.forEach((wordSlot, i) => {\n // If the word slot is the hidden element, set the display to none\n if (i === hideWordSlotIndex) {\n wordSlot.style.display = 'none';\n return;\n }\n\n // Is this the shifting element?\n const isShifting = wordSlot.contains(shiftEventTarget);\n\n // Determine the left offset for this element.\n let left = leftOffset;\n\n // If a word is shifting on the line below, do not bring it up to the top.\n // Moving to the line above will trigger a dragleave event.\n const shiftingBelow = isShifting && wordSlot._storedValues.offsetTop !== topOffset;\n\n // Can the word fit?\n const canFit = leftOffset + wordSlot.clientWidth < totalWidth;\n\n // If the word is shifting below or can't fit, put it on a new line.\n if (shiftingBelow || !canFit) {\n left = 0;\n topOffset += rowHeight;\n }\n\n // Set the left and top position on each DOM element.\n wordSlot.style.left = left > 0 ? `${left}px` : '0';\n wordSlot.style.top = topOffset > 0 ? `${topOffset}px` : '0';\n\n // Keep a record of what the previous values were. This can be useful\n // during a shift event.\n if (!shiftEventTarget) {\n const { offsetLeft, offsetTop, clientWidth } = wordSlot;\n wordSlot._storedValues = { offsetLeft, offsetTop, clientWidth };\n }\n\n // If the element shifting, adjust the padding so it matches the\n // difference offsets from before. If the top offset differs or the left offset\n // does not differ, simply allow the default CSS value to be used.\n if (isShifting) {\n // Determine if the shift is happening on the left or right side.\n const styleAttr = shiftLeftSide ? 'paddingLeft' : 'paddingRight';\n\n // If the left offset has changed, then that is the value to use.\n // If not, then use the client width of the hidden word slot so\n // the dimensions don't change. The padding should also remain\n // the same, so use the computed padding style.\n const computedStyle = window.getComputedStyle(shiftEventTarget);\n const existingPadding = parseInt(computedStyle[styleAttr], 10);\n const adjustedOffset = Math.abs(left - wordSlot._storedValues.offsetLeft);\n\n const newPadding = existingPadding +\n (adjustedOffset === 0 ? hiddenWordSlot._storedValues.clientWidth : adjustedOffset);\n\n // Actually set the new padding.\n shiftEventTarget.style[styleAttr] = `${newPadding}px`;\n }\n\n // Adjust the offset values based on the new word slot width.\n leftOffset = left + wordSlot.clientWidth;\n });\n }\n\n render() {\n const dropZones = [];\n\n // Render slots as normal, add drop zones when previous slot\n // hasn't been graded.\n this.props.data.map((slot, i) => {\n const renderedSlot = this._renderSlot(slot, i);\n dropZones.push(renderedSlot);\n });\n\n // Since all word slots are absolutely positioned, be sure that\n // the position for the actual container is relative.\n const style = {\n position: 'relative',\n };\n\n return (\n <section className=\"word-slots\" style={style}>{dropZones}</section>\n );\n }\n\n _renderSlot(slot, i) {\n // Set the position to be absolutely positioned (will calculate)\n // the positions manually.\n const style = {\n position: 'absolute',\n };\n\n if (slot.isPunctuation) {\n return (<span key={i} className=\"punctuation\" style={style}>{slot.expected}</span>);\n }\n\n const dropZoneProps = {\n className: classnames({\n 'word-slot': true,\n filled: slot.isFilled(),\n correct: slot.isCorrect(),\n incorrect: slot.isIncorrect(),\n corrected: slot.corrected,\n graded: slot.graded,\n hinted: slot.hinted,\n }),\n disabled: slot.isCorrectAndGraded(),\n expectedValue: slot.expected,\n };\n\n const wordPieceProps = {\n onDrag: this.props.onDrag,\n onDragEnd: this.props.onDragEnd,\n };\n\n // Determine if this word slot can be shifted and if so, will the removed\n // block be to the left or right?\n const shiftEndIndex = WordSlot.getShiftEndIndex(this.props.data, i);\n const isShiftable = slot.isFilled() && shiftEndIndex !== -1;\n\n // Corrected slots are no longer draggable.\n if (this._isDraggable(slot)) {\n if (this.props.onClick) {\n Object.assign(wordPieceProps, {\n onClick: this.props.onClick,\n enableDragEvents: true,\n wordChoice: slot.wordChoice,\n });\n }\n\n if (isShiftable) {\n // Will the shift zone be to the left or right?\n const shiftsRight = shiftEndIndex > i;\n\n Object.assign(dropZoneProps, {\n onDragLeave: this._handleShiftEnd.bind(this, i),\n onDragLeft: this._handleShiftStart.bind(this, i, true),\n onDragRight: this._handleShiftStart.bind(this, i, false),\n onDropLeft: this._handleShift.bind(this, shiftsRight ? i : i - 1),\n onDropRight: this._handleShift.bind(this, shiftsRight ? i + 1 : i),\n });\n } else if (this.props.onDrop) {\n Object.assign(dropZoneProps, {\n onDrop: this.props.onDrop.bind(null, slot),\n });\n }\n }\n\n const wordPiece = this._renderWordPiece(wordPieceProps, slot.value);\n\n return (\n <div key={i} className=\"word-slot-container\" style={style}>\n {\n isShiftable ?\n this._renderShiftZone(dropZoneProps, wordPiece) :\n this._renderDropZone(dropZoneProps, wordPiece)\n }\n </div>\n );\n }\n\n _renderDropZone(props, wordPiece) {\n return (<DropZone {...props}>{wordPiece}</DropZone>);\n }\n\n _renderShiftZone(props, wordPiece) {\n return (<ShiftZone {...props}>{wordPiece}</ShiftZone>);\n }\n\n _renderWordPiece(props, value) {\n return (<WordPiece {...props}>{value}</WordPiece>);\n }\n\n _resetState() {\n this.setState(INITIAL_STATE);\n }\n}\n\nWordSlots.propTypes = Object.freeze({\n data: React.PropTypes.array.isRequired,\n enableDragEvents: React.PropTypes.bool,\n onClick: React.PropTypes.func,\n onDrag: React.PropTypes.func,\n onDragEnd: React.PropTypes.func,\n onDrop: React.PropTypes.func,\n onShift: React.PropTypes.func,\n});\n\nexport default WordSlots;\n","/* eslint-disable no-confusing-arrow */\nimport WordChoice from 'es6/models/word-choice';\n\n/**\n * View Model for the WordSlot component.\n *\n * Some WordSlot instances contain a flag, \"isPunctuation.\" If it does,\n * the value cannot be changed and no word choices can be inserted into the\n * word slot.\n */\nexport default class WordSlot {\n constructor(data = {}) {\n Object.assign(this, {\n expected: '',\n graded: false,\n hinted: false,\n isPunctuation: false,\n wordChoice: null,\n }, data);\n }\n\n /**\n * Returns the value for the word slot.\n *\n * @returns {String}\n */\n get value() {\n return this.wordChoice ? this.wordChoice.value : '';\n }\n\n /**\n * Clears the word choice and value.\n *\n * @returns {WordChoice}\n */\n free() {\n this._throwFrozenError();\n\n // Store a reference for the return.\n const wordChoice = this.wordChoice;\n\n // Unset the existing values\n if (wordChoice) {\n wordChoice.free();\n }\n\n this.wordChoice = null;\n\n return wordChoice;\n }\n\n /**\n * Puts a word choice in the slot. Removes existing word choice from slot\n * if entered.\n *\n * @param {WordChoice}\n * @param {Boolean} isGraded changes the graded status of the slot\n * @returns {WordChoice} freed WordChoice (if there is one)\n */\n insert(wordChoice, isGraded = false) {\n this._throwFrozenError();\n\n if (!(wordChoice instanceof WordChoice)) {\n throw new Error('Can only insert WordChoice into a word slot.');\n }\n\n if (wordChoice.used) {\n throw new Error('Cannot insert a word choice that is being used.');\n }\n\n // Clear current value if it is available.\n const freedChoice = this.free();\n this.wordChoice = wordChoice;\n this.graded = isGraded;\n\n wordChoice.use();\n\n return freedChoice;\n }\n\n /**\n * Determines if the is fillable.\n *\n * @returns {Boolean}\n */\n isAvailable() {\n return this.wordChoice === null && !this.isFrozen() || this.graded && this.value !== this.expected;\n }\n\n /**\n * Determines if slot is correct with current word choice.\n *\n * @returns {Boolean}\n */\n isCorrect() {\n return this.value === this.expected;\n }\n\n /**\n * @returns {Boolean}\n */\n isCorrectAndGraded() {\n return this.isCorrect() && this.graded;\n }\n\n /**\n * @returns {Boolean}\n */\n isFilled() {\n return this.wordChoice !== null;\n }\n\n /**\n * Can this slot be cleared or have anything inserted?\n *\n * @returns {Boolean}\n */\n isFrozen() {\n return this.isPunctuation || this.isCorrectAndGraded();\n }\n\n /**\n * @returns {Boolean}\n */\n isIncorrect() {\n return this.value !== this.expected && !this.isPunctuation;\n }\n\n /**\n * @returns {Boolean}\n */\n isIncorrectAndGraded() {\n return this.isIncorrect() && this.graded;\n }\n\n /**\n * @returns {Boolean}\n */\n isIncorrectAndUnhinted() {\n return this.isIncorrect() && !this.hinted;\n }\n\n /**\n * Only throws an error if the object is a punctuation object.\n */\n _throwFrozenError() {\n if (this.isFrozen()) {\n throw new Error('Cannot manipulate this word slot.');\n }\n }\n\n /**\n * Gets the index of the word slot that will be shifted to.\n *\n * @param {WordSlot[]} wordSlots\n * @param {Number} startIndex index of where the shift starts\n * @returns {Number} index of the word slot that will be shifted to, -1 when not found\n */\n static getShiftEndIndex(wordSlots, startIndex) {\n const cantShift = (wordSlot) => wordSlot.isFrozen();\n const finished = (wordSlot) => !wordSlot.isFilled();\n\n // Try to the right.\n for (let i = startIndex; i < wordSlots.length; i++) {\n const wordSlot = wordSlots[i];\n\n if (finished(wordSlot)) {\n return i;\n }\n\n if (cantShift(wordSlot)) {\n break;\n }\n }\n\n // Try to the left.\n for (let i = startIndex; i >= 0; i--) {\n const wordSlot = wordSlots[i];\n\n if (finished(wordSlot)) {\n return i;\n }\n\n if (cantShift(wordSlot)) {\n break;\n }\n }\n\n return -1;\n }\n\n /**\n * Finds a WordSlot by WordChoice.\n *\n * @param {WordSlot[]} wordSlots\n * @param {WordChoice} wordChoice\n * @returns {WordSlot}\n */\n static findWordSlotByWordChoice(wordSlots, wordChoice) {\n return wordSlots.find(wordSlot => wordSlot.wordChoice === wordChoice);\n }\n\n /**\n * Shifts word slots over given a start position.\n *\n * @param {WordSlot[]} wordSlots list of WordSlot objects\n * @param {Number} startIndex index where the shifting starts\n */\n static shiftWordSlots(wordSlots, startIndex) {\n const endIndex = WordSlot.getShiftEndIndex(wordSlots, startIndex);\n let nextWordChoice;\n\n // Nothing can be shifted.\n if (endIndex === -1) {\n return;\n }\n\n const isShiftRight = endIndex > startIndex;\n\n const cond = (i) => isShiftRight ? i <= endIndex : i >= endIndex;\n\n for (let i = startIndex; cond(i); isShiftRight ? i++ : i--) {\n const wordSlot = wordSlots[i];\n\n // Insert the previous WordChoice.\n if (nextWordChoice) {\n nextWordChoice = wordSlot.insert(nextWordChoice);\n } else {\n nextWordChoice = wordSlot.free();\n }\n }\n }\n}\n","/**\n * View Model for the WordChoice component.\n */\nexport default class WordChoice {\n constructor(attrs = {}) {\n Object.assign(this, {\n value: '',\n used: false,\n }, attrs);\n }\n\n /**\n * Sets the word choice to being available.\n */\n free() {\n this.used = false;\n }\n\n /**\n * Sets a word choice to being used. Note, a word choice that\n * is not free can only be used once.\n */\n use() {\n if (this.used) {\n throw new Error('WordChoice is in use.');\n }\n\n this.used = true;\n }\n}\n","/* eslint-disable prefer-template */\nimport Config from 'es6/core/config';\nimport ItemQuizBase from 'es6/controllers/apps/quizzes/item-quiz-base';\nimport Logger from 'es6/services/logger';\nimport { ResultTypes } from 'es6/models/quiz-result';\nimport SelfAssessmentScreen from 'es6/components/apps/screens/self-assessment';\nimport SelfAssessmentStudyScreen from 'es6/components/apps/screens/self-assessment-study';\n\n/**\n * @this SelfAssessmentQuizBase\n */\nfunction handleReveal() {\n if (this.paused) {\n return;\n }\n\n this.result.beginPhase('quiz');\n this._screenManager.renderComponent(SelfAssessmentStudyScreen, {\n itemPackage: this.itemPackage,\n isNew: !this.itemPackage.memory,\n playAudioOnMount: !this._playAudioOnRecall,\n onVeryWell: this.returnedFromQuiz.bind(this, ResultTypes.EASY),\n onWell: this.returnedFromQuiz.bind(this, ResultTypes.OK),\n onNotWell: this.returnedFromQuiz.bind(this, ResultTypes.HARD),\n onDontKnow: this.returnedFromQuiz.bind(this, ResultTypes.INCORRECT),\n isRepeatQuiz: this._isRepeat,\n showTranscription: Config.showTranscriptions,\n });\n}\n\n/**\n * @this SelfAssessmentQuizBase\n */\nfunction handleSkip() {\n if (this.paused) {\n return;\n }\n\n this._screenManager.fireEvent('skip_item_initiated');\n}\n\n/**\n * @this SelfAssessmentQuizBase\n */\nfunction renderComponent() {\n const cueSound = this._playAudioOnRecall && this.itemPackage.sound ?\n this.itemPackage.sound :\n null;\n\n const props = {\n cue: this._recallCue,\n cueSound,\n isNew: !this.itemPackage.memory,\n isRepeat: this._isRepeat,\n onReveal: handleReveal.bind(this),\n onSkip: handleSkip.bind(this),\n prompt: this._prompt,\n response: this._recallResponse,\n };\n\n this._screenManager.renderComponent(SelfAssessmentScreen, props);\n}\n\nclass SelfAssessmentQuizBase extends ItemQuizBase {\n constructor(...args) {\n super(...args);\n this._playAudioOnRecall = false;\n this._isRepeat = false;\n }\n\n show() {\n Logger.info('Quiz', 'Showing ' + this.quizType + ' quiz for ' + this.itemPackage.item.cue.text, this);\n this.result.beginPhase('recall');\n renderComponent.call(this);\n }\n\n /*\n * @Override\n */\n returnedFromQuiz(resultType) {\n this.result.setResult(resultType);\n this.finishQuiz();\n }\n}\n\nexport default SelfAssessmentQuizBase;\n","/* eslint-disable default-case */\nexport const GoalSource = {\n UNCOMPLETED: 'uncompleted',\n COMPLETED: 'completed',\n ALL: 'all',\n};\n\nexport const ItemSource = {\n REVIEW: 'review',\n NEW: 'new',\n ALL: 'all',\n};\n\n/**\n * Model for individual session config.\n */\nexport class SessionConfig {\n /**\n * Constructor\n *\n * @param {Object} properties\n */\n constructor(properties = {}) {\n // Set up the ability to disable attributes.\n this._disabledValues = {\n itemSource: new Set(),\n goalSource: new Set(),\n };\n\n _.defaults(this, properties);\n }\n\n /**\n * Disables a value for a particular property.\n *\n * @param {String} [itemSource|goalSource] property\n * @param {String|Number} value\n * @returns {Boolean} returns true if current selection is unaffected\n */\n disable(property, value) {\n this._disabledValues[property].add(value);\n\n // Set the current value to the default if it is selected.\n if (this[property] === value) {\n this._setToDefault(property);\n return false;\n }\n\n return true;\n }\n\n /**\n * Enables a value for a particular property.\n *\n * @param {String} [itemSource|goalSource] property\n * @param {String|Number} value\n * @returns {Boolean} returns true if current selection is unaffected\n */\n enable(property, value) {\n this._disabledValues[property].delete(value);\n return true;\n }\n\n /**\n * Determines if a property and corresponding value are\n * disabled.\n *\n * @param {String} [itemSource|goalSource] property\n * @param {String|Number} value\n * @returns {Boolean}\n */\n isDisabled(property, value) {\n const disabledValues = this._disabledValues[property];\n return disabledValues && disabledValues.has(value);\n }\n\n /**\n * Returns true if any properties are disabled.\n *\n * @returns {Boolean}\n */\n hasDisabledProperties() {\n return this._disabledValues.itemSource.size > 0 || this._disabledValues.goalSource.size > 0;\n }\n\n /**\n * Takes a property and moves it to the fallback value.\n *\n * @param {String} property\n */\n _setToDefault(property) {\n switch (property) {\n case 'itemSource':\n this.itemSource = ItemSource.ALL;\n break;\n case 'goalSource':\n this.goalSource = GoalSource.ALL;\n break;\n }\n }\n\n /**\n * Enables a value for a particular property.\n *\n * @param {String} [itemSource|goalSource] property\n * @param {String|Number} value\n * @param {Boolean} disable whether to disable the property\n * @returns {Boolean} returns true if current selection is unaffected\n */\n toggleDisabled(property, value, disable = false) {\n return disable ? this.disable(property, value) : this.enable(property, value);\n }\n\n /**\n * Updates the session configuration. If some properties are disabled,\n * will set to default.\n *\n * @param {Object} properties\n * @returns {Boolean} true if nothing was set to the fallback value.\n */\n update(properties = {}) {\n let updatedSuccessfully = true;\n\n _.extend(this, properties);\n\n // Set the defaults to\n Object.keys(this).forEach(property => {\n if (this.isDisabled(property, this[property])) {\n this._setToDefault(property);\n updatedSuccessfully = false;\n }\n });\n\n return updatedSuccessfully;\n }\n}\n\nexport default SessionConfig;\n","import { Memory } from 'es6/models/memory';\n\nexport default class StudyNode {\n constructor(attrs = {}) {\n _.defaults(this, attrs, {\n applicationType: null, // NOTE: This is not returned by the API.\n contentDomain: null,\n contentId: null,\n itemId: null, // Used by sentences\n goalId: null,\n quizSequence: null,\n extraQuizzes: null,\n memory: null,\n });\n\n if (this.memory && !(this.memory instanceof Memory)) {\n this.memory = new Memory(this.memory);\n }\n }\n\n isReady() {\n return !this.memory || this.memory.isReady();\n }\n}\n","/**\n * Can't simply use btoa because of UTF-16 encoding issues. Use this in place of it.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#The_Unicode_Problem\n *\n * @param {String}\n * @returns {String}\n */\nexport const base64Encode = (str) => {\n const match = (m, p1) => String.fromCharCode(`0x${p1}`);\n const decodedUrl = encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, match);\n return btoa(decodedUrl);\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = play;\nvar audio = void 0;\n\nfunction play(url) {\n if (!audio) {\n audio = new Audio();\n }\n\n audio.pause();\n audio.src = cdnnify(url);\n audio.play();\n}\n\nfunction cdnnify(original) {\n // Take last 16 characters without the .mp3 url and calculate a mod\n // 4 hash. This way the CDN for an url will be always the same and\n // we can reuse cache\n var cdn = Array.prototype.reduce.call(original.substr(-20, 16), function (sum, character) {\n return sum + character.charCodeAt(0);\n }, 0) % 4;\n return original.replace(/(https?:\\/\\/assets)(\\d)(.iknow.jp\\/)/, function (match, pre, number, post) {\n return pre + cdn + post;\n });\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.feedbackStyle = exports.playButtonStyle = exports.buttonsStyle = exports.wordStyle = exports.arrowStyle = exports.firstEntry = exports.withSound = exports.entryStyle = exports.bubbleWrapStyle = exports.bubbleTransitionSliding = exports.bubbleTransitionOpacity = exports.bubbleStyle = exports.text = exports.span = exports.div = undefined;\n\nvar _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();\n\nexports[\"default\"] = content;\n\nvar _dictionary = require('./dictionary');\n\nvar _defs = require('./defs');\n\nvar _icons = require('./icons');\n\nvar _assign = require('./assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction _toConsumableArray(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n}\n\nfunction content(sourceWord) {\n var entries = (0, _dictionary.getWord)(sourceWord); // If there's even single entry with sound, all will get the same\n // left padding so they're aligned equally\n\n var anySound = entries.reduce(function (agg, _ref) {\n var sound = _ref.sound;\n return agg || !!sound;\n }, false);\n return div.apply(undefined, [{\n style: bubbleWrapStyle\n }].concat(_toConsumableArray(entries.map(function (_ref2, i) {\n var word = _ref2.word;\n var partOfSpeech = _ref2.partOfSpeech;\n var translation = _ref2.translation;\n var sound = _ref2.sound;\n return div({\n style: (0, _assign2[\"default\"])({}, entryStyle, i === 0 && firstEntry, anySound && withSound)\n }, playButton(sound), span({\n style: wordStyle\n }, text(word)), text(' '), partOfSpeechElement(partOfSpeech), text(' '), span({}, text(translation)), feedbackLink({\n sourceWord: sourceWord,\n word: word,\n partOfSpeech: partOfSpeech,\n translation: translation\n }));\n }))));\n}\n\nfunction playButton(sound) {\n return sound && el('button', {\n \"class\": _defs.BUTTON_CLASS,\n style: playButtonStyle,\n 'data-sound': sound\n });\n}\n\nfunction partOfSpeechElement(_ref3) {\n var ja = _ref3.ja;\n var color = _ref3.color;\n return span({\n style: {\n color: color\n }\n }, text('(' + ja + ')'));\n}\n\nfunction feedbackLink(options) {\n return el('a', {\n href: feedbackUrl(options),\n target: '_blank',\n \"class\": _defs.BUTTON_CLASS,\n style: feedbackStyle\n });\n}\n\nfunction feedbackUrl(_ref4) {\n var sourceWord = _ref4.sourceWord;\n var word = _ref4.word;\n var partOfSpeech = _ref4.partOfSpeech;\n var translation = _ref4.translation;\n var query = [['form', sourceWord], ['lemma', word], ['translation', translation], ['part_of_speech', partOfSpeech.en]].map(function (_ref5) {\n var _ref6 = _slicedToArray(_ref5, 2);\n\n var label = _ref6[0];\n var value = _ref6[1];\n return 'dictionary_entry_feedback[' + label + ']=' + encodeURIComponent(value);\n }).join('&');\n return _defs.FEEDBACK_URL + '?' + query;\n}\n\nvar div = exports.div = el.bind(null, 'div');\nvar span = exports.span = el.bind(null, 'span');\n\nvar text = exports.text = function text(value) {\n return document.createTextNode(value);\n};\n\nfunction el(name) {\n var attrs = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n var element = document.createElement(name);\n Object.keys(attrs).filter(function (attr) {\n return attr !== 'style';\n }).forEach(function (attr) {\n element.setAttribute(attr, attrs[attr]);\n });\n (0, _assign2[\"default\"])(element.style, attrs.style);\n\n for (var _len = arguments.length, children = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n children[_key - 2] = arguments[_key];\n }\n\n children.filter(function (x) {\n return !!x;\n }).forEach(function (child) {\n return element.appendChild(child);\n });\n return element;\n}\n\nvar bubbleStyle = exports.bubbleStyle = {\n display: 'none',\n width: '320px',\n fontSize: '13px',\n lineHeight: '18px',\n color: '#000',\n // Use a value that is slightly smaller than Number.MAX_SAFE_INTEGER, because\n // setting the zIndex to Number.MAX_SAFE_INTEGER doesn't seem to work in IE11.\n zIndex: 9000000000000000\n};\nvar bubbleTransitionOpacity = exports.bubbleTransitionOpacity = {\n transition: 'opacity 0.3s'\n};\nvar bubbleTransitionSliding = exports.bubbleTransitionSliding = {\n transition: 'left 0.2s'\n};\nvar bubbleWrapStyle = exports.bubbleWrapStyle = {\n padding: '5px 10px',\n background: '#fafafa',\n border: '1px solid #c1c1c1',\n borderRadius: '5px',\n boxShadow: '0 0 6px rgba(0, 0, 0, 0.3)'\n};\nvar entryStyle = exports.entryStyle = {\n position: 'relative',\n borderTop: '1px solid #eaeaea',\n paddingTop: '7px',\n paddingRight: '22px',\n paddingBottom: '7px',\n paddingLeft: '0'\n};\nvar withSound = exports.withSound = {\n paddingLeft: '22px'\n};\nvar firstEntry = exports.firstEntry = {\n borderTop: ''\n};\nvar arrowStyle = exports.arrowStyle = {\n width: '10px',\n height: '10px',\n background: '#fafafa',\n border: '1px solid #c1c1c1',\n position: 'absolute',\n transform: 'translateY(50%) translateX(-50%) rotate(45deg)'\n};\nvar wordStyle = exports.wordStyle = {\n fontWeight: 'bold'\n};\nvar buttonsStyle = exports.buttonsStyle = {\n appearance: 'none',\n webkitAppearance: 'none',\n display: 'block',\n position: 'absolute',\n top: '9px',\n width: '15px',\n height: '15px',\n border: '0',\n padding: '0',\n margin: '0',\n cursor: 'pointer',\n opacity: _defs.BUTTON_RESTING_OPACITY,\n transition: 'opacity 0.3s',\n backgroundColor: 'transparent',\n backgroundPosition: 'center',\n backgroundSize: 'contain'\n};\nvar playButtonStyle = exports.playButtonStyle = (0, _assign2[\"default\"])({\n left: '0',\n backgroundImage: 'url(\"' + _icons.speakerDataUrl + '\")'\n}, buttonsStyle);\nvar feedbackStyle = exports.feedbackStyle = (0, _assign2[\"default\"])({\n right: '0',\n backgroundImage: 'url(\"' + _icons.flagDataUrl + '\")',\n textDecoration: 'none'\n}, buttonsStyle);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n}); // Imported from moonicons project\n\nvar speakerSvg = exports.speakerSvg = '<svg width=\"1024\" height=\"1024\" viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M719.53 831.53c-12.286 0-24.568-4.686-33.942-14.058-18.744-18.744-18.744-49.136 0-67.882 131.006-131.006 131.006-344.17 0-475.176-18.744-18.746-18.744-49.138 0-67.882 18.744-18.742 49.138-18.744 67.882 0 81.596 81.592 126.53 190.076 126.53 305.466s-44.936 223.878-126.53 305.47c-9.374 9.374-21.656 14.058-33.942 14.058zM549.020 741.020c-12.286 0-24.568-4.686-33.942-14.058-18.746-18.746-18.746-49.136 0-67.882 81.1-81.1 81.1-213.058 0-294.154-18.746-18.746-18.746-49.138 0-67.882s49.136-18.744 67.882 0c118.53 118.53 118.53 311.392 0 429.922-9.37 9.37-21.654 14.054-33.938 14.054zM401.332 78.668c25.668-25.668 46.668-16.968 46.668 19.332v828c0 36.302-21 44.998-46.668 19.33l-241.33-241.33h-160v-384h160l241.33-241.332z\"></path></svg>';\nvar flagSvg = exports.flagSvg = '<svg width=\"1024\" height=\"1024\" viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M784.342 205.568c-15.956-6.614-34.304-2.944-46.506 9.26-53.932 53.888-141.696 53.93-195.668 0-87.252-87.168-229.12-87.168-316.332 0-8.022 7.98-12.502 18.858-12.502 30.164v554.668c0 23.552 19.072 42.668 42.668 42.668s42.666-19.116 42.666-42.668v-194.26c54.228-42.538 133.164-38.87 183.168 11.092 87.254 87.168 229.164 87.168 316.332 0 8.020-8.020 12.5-18.86 12.5-30.164v-341.334c0-17.28-10.41-32.81-26.326-39.424z\"></path></svg>';\nvar speakerDataUrl = exports.speakerDataUrl = dataUrl(speakerSvg);\nvar flagDataUrl = exports.flagDataUrl = dataUrl(flagSvg);\n\nfunction dataUrl(text) {\n return 'data:image/svg+xml;charset=UTF-8,' + encodeURIComponent(text);\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = collectWords;\n\nvar _createWalker = require('./create-walker');\n\nvar _createWalker2 = _interopRequireDefault(_createWalker);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nvar FULL_NUMBERS = /^\\d+$/g;\nvar SPECIAL_JA = '? !「。」()、 ~©■※:';\nvar SPECIAL_ASCII = '\\\\s!\"#$%&\\'()*+,\\\\-./:;<>=?@\\\\[\\\\]^_`{|}~.?';\nvar HIRAGANA = \"\\\\u3040-\\\\u309F\";\nvar KATAKANA = \"\\\\u30A0-\\\\u30FF\";\nvar KANJI = \"\\\\u4E00-\\\\u9FD5\";\nvar SPECIAL_CHARS = new RegExp('[' + SPECIAL_ASCII + SPECIAL_JA + HIRAGANA + KATAKANA + KANJI + ']+', 'g');\n\nfunction collectWords(node) {\n var words = {};\n var walker = (0, _createWalker2[\"default\"])(node);\n\n while (walker.nextNode()) {\n var newWords = walker.currentNode.wholeText.split(/\\b/);\n newWords.map(strip).filter(function (word) {\n return !!word;\n }).forEach(function (word) {\n words[word] = true;\n });\n }\n\n return words;\n}\n\nfunction strip(word) {\n return word.toLowerCase().replace(SPECIAL_CHARS, '').replace(FULL_NUMBERS, '');\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = spannify;\nexports.despannify = despannify;\n\nvar _dictionary = require('./dictionary');\n\nvar _createWalker = require('./create-walker');\n\nvar _createWalker2 = _interopRequireDefault(_createWalker);\n\nvar _defs = require('./defs');\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction spannify(root) {\n var walker = (0, _createWalker2[\"default\"])(root);\n var nodes = [];\n\n while (walker.nextNode()) {\n nodes.push(walker.currentNode);\n }\n\n nodes.forEach(splitText);\n return despannify.bind(null, root);\n}\n\nfunction despannify(root) {\n var nodes = Array.prototype.slice.call(root.getElementsByClassName(_defs.POPUP_CLASS));\n var parents = nodes.map(function (node) {\n return node.parentNode;\n });\n nodes.forEach(function (node) {\n var text = node.childNodes[0];\n node.parentNode.replaceChild(text, node);\n });\n parents.forEach(function (parent) {\n return parent.normalize();\n });\n}\n\nfunction splitText(node) {\n var pos = 0;\n var lastTextNode = node;\n var fragments = node.data.split(/\\b/);\n fragments.forEach(function (word) {\n if ((0, _dictionary.hasWord)(word)) {\n var nodeToReplace = lastTextNode.splitText(pos);\n lastTextNode = nodeToReplace.splitText(word.length);\n pos = 0;\n var span = document.createElement('span');\n span.className = _defs.POPUP_CLASS;\n span.appendChild(document.createTextNode(word));\n node.parentNode.replaceChild(span, nodeToReplace);\n } else {\n pos += word.length;\n }\n });\n}","var baseProperty = require('./_baseProperty');\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)\n * that affects Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\n\n\nvar getLength = baseProperty('length');\nmodule.exports = getLength;","var isFunction = require('./isFunction'),\n isObject = require('./isObject');\n/** Used as references for various `Number` constants. */\n\n\nvar NAN = 0 / 0;\n/** Used to match leading and trailing whitespace. */\n\nvar reTrim = /^\\s+|\\s+$/g;\n/** Used to detect bad signed hexadecimal string values. */\n\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n/** Used to detect binary string values. */\n\nvar reIsBinary = /^0b[01]+$/i;\n/** Used to detect octal string values. */\n\nvar reIsOctal = /^0o[0-7]+$/i;\n/** Built-in method references without a dependency on `root`. */\n\nvar freeParseInt = parseInt;\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3);\n * // => 3\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3');\n * // => 3\n */\n\nfunction toNumber(value) {\n if (isObject(value)) {\n var other = isFunction(value.valueOf) ? value.valueOf() : value;\n value = isObject(other) ? other + '' : other;\n }\n\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n}\n\nmodule.exports = toNumber;","var arrayMap = require('./_arrayMap');\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n\n\nfunction baseValues(object, props) {\n return arrayMap(props, function (key) {\n return object[key];\n });\n}\n\nmodule.exports = baseValues;","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isLength = require('./isLength'),\n isString = require('./isString');\n/**\n * Creates an array of index keys for `object` values of arrays,\n * `arguments` objects, and strings, otherwise `null` is returned.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array|null} Returns index keys, else `null`.\n */\n\n\nfunction indexKeys(object) {\n var length = object ? object.length : undefined;\n\n if (isLength(length) && (isArray(object) || isString(object) || isArguments(object))) {\n return baseTimes(length, String);\n }\n\n return null;\n}\n\nmodule.exports = indexKeys;","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n\n return result;\n}\n\nmodule.exports = baseTimes;","module.exports = require('../values');","'use strict';\n\nmodule.exports = {\n crc1: require('./crc1'),\n crc8: require('./crc8'),\n crc81wire: require('./crc8_1wire'),\n crc16: require('./crc16'),\n crc16ccitt: require('./crc16_ccitt'),\n crc16modbus: require('./crc16_modbus'),\n crc16xmodem: require('./crc16_xmodem'),\n crc16kermit: require('./crc16_kermit'),\n crc24: require('./crc24'),\n crc32: require('./crc32')\n};","'use strict';\n\nvar _buffer = require('buffer');\n\nvar _define_crc = require('./define_crc');\n\nvar _define_crc2 = _interopRequireDefault(_define_crc);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = (0, _define_crc2[\"default\"])('crc1', function (buf, previous) {\n if (!_buffer.Buffer.isBuffer(buf)) buf = (0, _buffer.Buffer)(buf);\n var crc = ~~previous;\n var accum = 0;\n\n for (var index = 0; index < buf.length; index++) {\n var _byte = buf[index];\n accum += _byte;\n }\n\n crc += accum % 256;\n return crc % 256;\n});","'use strict';\n\nexports.byteLength = byteLength;\nexports.toByteArray = toByteArray;\nexports.fromByteArray = fromByteArray;\nvar lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n}\n\nrevLookup['-'.charCodeAt(0)] = 62;\nrevLookup['_'.charCodeAt(0)] = 63;\n\nfunction placeHoldersCount(b64) {\n var len = b64.length;\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4');\n } // the number of equal signs (place holders)\n // if there are two placeholders, than the two characters before it\n // represent one byte\n // if there is only one, then the three characters before it represent 2 bytes\n // this is just a cheap hack to not do indexOf twice\n\n\n return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0;\n}\n\nfunction byteLength(b64) {\n // base64 is 4/3 + up to two characters of the original data\n return b64.length * 3 / 4 - placeHoldersCount(b64);\n}\n\nfunction toByteArray(b64) {\n var i, l, tmp, placeHolders, arr;\n var len = b64.length;\n placeHolders = placeHoldersCount(b64);\n arr = new Arr(len * 3 / 4 - placeHolders); // if there are placeholders, only get up to the last complete 4 chars\n\n l = placeHolders > 0 ? len - 4 : len;\n var L = 0;\n\n for (i = 0; i < l; i += 4) {\n tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)];\n arr[L++] = tmp >> 16 & 0xFF;\n arr[L++] = tmp >> 8 & 0xFF;\n arr[L++] = tmp & 0xFF;\n }\n\n if (placeHolders === 2) {\n tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4;\n arr[L++] = tmp & 0xFF;\n } else if (placeHolders === 1) {\n tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2;\n arr[L++] = tmp >> 8 & 0xFF;\n arr[L++] = tmp & 0xFF;\n }\n\n return arr;\n}\n\nfunction tripletToBase64(num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F];\n}\n\nfunction encodeChunk(uint8, start, end) {\n var tmp;\n var output = [];\n\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + uint8[i + 2];\n output.push(tripletToBase64(tmp));\n }\n\n return output.join('');\n}\n\nfunction fromByteArray(uint8) {\n var tmp;\n var len = uint8.length;\n var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n\n var output = '';\n var parts = [];\n var maxChunkLength = 16383; // must be multiple of 3\n // go through the array every three bytes, we'll deal with trailing stuff later\n\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength));\n } // pad the end with zeros, but make sure to not forget the extra bytes\n\n\n if (extraBytes === 1) {\n tmp = uint8[len - 1];\n output += lookup[tmp >> 2];\n output += lookup[tmp << 4 & 0x3F];\n output += '==';\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n output += lookup[tmp >> 10];\n output += lookup[tmp >> 4 & 0x3F];\n output += lookup[tmp << 2 & 0x3F];\n output += '=';\n }\n\n parts.push(output);\n return parts.join('');\n}","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = -7;\n var i = isLE ? nBytes - 1 : 0;\n var d = isLE ? -1 : 1;\n var s = buffer[offset + i];\n i += d;\n e = s & (1 << -nBits) - 1;\n s >>= -nBits;\n nBits += eLen;\n\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : (s ? -1 : 1) * Infinity;\n } else {\n m = m + Math.pow(2, mLen);\n e = e - eBias;\n }\n\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\n};\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;\n var i = isLE ? 0 : nBytes - 1;\n var d = isLE ? 1 : -1;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n value = Math.abs(value);\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0;\n e = eMax;\n } else {\n e = Math.floor(Math.log(value) / Math.LN2);\n\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * Math.pow(2, 1 - eBias);\n }\n\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n e = 0;\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = e << mLen | m;\n eLen += mLen;\n\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128;\n};","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};","'use strict';\n\nvar _buffer = require('buffer');\n\nvar _define_crc = require('./define_crc');\n\nvar _define_crc2 = _interopRequireDefault(_define_crc);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n} // Generated by `./pycrc.py --algorithm=table-driven --model=crc-8 --generate=c`\n\n\nvar TABLE = [0x00, 0x07, 0x0e, 0x09, 0x1c, 0x1b, 0x12, 0x15, 0x38, 0x3f, 0x36, 0x31, 0x24, 0x23, 0x2a, 0x2d, 0x70, 0x77, 0x7e, 0x79, 0x6c, 0x6b, 0x62, 0x65, 0x48, 0x4f, 0x46, 0x41, 0x54, 0x53, 0x5a, 0x5d, 0xe0, 0xe7, 0xee, 0xe9, 0xfc, 0xfb, 0xf2, 0xf5, 0xd8, 0xdf, 0xd6, 0xd1, 0xc4, 0xc3, 0xca, 0xcd, 0x90, 0x97, 0x9e, 0x99, 0x8c, 0x8b, 0x82, 0x85, 0xa8, 0xaf, 0xa6, 0xa1, 0xb4, 0xb3, 0xba, 0xbd, 0xc7, 0xc0, 0xc9, 0xce, 0xdb, 0xdc, 0xd5, 0xd2, 0xff, 0xf8, 0xf1, 0xf6, 0xe3, 0xe4, 0xed, 0xea, 0xb7, 0xb0, 0xb9, 0xbe, 0xab, 0xac, 0xa5, 0xa2, 0x8f, 0x88, 0x81, 0x86, 0x93, 0x94, 0x9d, 0x9a, 0x27, 0x20, 0x29, 0x2e, 0x3b, 0x3c, 0x35, 0x32, 0x1f, 0x18, 0x11, 0x16, 0x03, 0x04, 0x0d, 0x0a, 0x57, 0x50, 0x59, 0x5e, 0x4b, 0x4c, 0x45, 0x42, 0x6f, 0x68, 0x61, 0x66, 0x73, 0x74, 0x7d, 0x7a, 0x89, 0x8e, 0x87, 0x80, 0x95, 0x92, 0x9b, 0x9c, 0xb1, 0xb6, 0xbf, 0xb8, 0xad, 0xaa, 0xa3, 0xa4, 0xf9, 0xfe, 0xf7, 0xf0, 0xe5, 0xe2, 0xeb, 0xec, 0xc1, 0xc6, 0xcf, 0xc8, 0xdd, 0xda, 0xd3, 0xd4, 0x69, 0x6e, 0x67, 0x60, 0x75, 0x72, 0x7b, 0x7c, 0x51, 0x56, 0x5f, 0x58, 0x4d, 0x4a, 0x43, 0x44, 0x19, 0x1e, 0x17, 0x10, 0x05, 0x02, 0x0b, 0x0c, 0x21, 0x26, 0x2f, 0x28, 0x3d, 0x3a, 0x33, 0x34, 0x4e, 0x49, 0x40, 0x47, 0x52, 0x55, 0x5c, 0x5b, 0x76, 0x71, 0x78, 0x7f, 0x6a, 0x6d, 0x64, 0x63, 0x3e, 0x39, 0x30, 0x37, 0x22, 0x25, 0x2c, 0x2b, 0x06, 0x01, 0x08, 0x0f, 0x1a, 0x1d, 0x14, 0x13, 0xae, 0xa9, 0xa0, 0xa7, 0xb2, 0xb5, 0xbc, 0xbb, 0x96, 0x91, 0x98, 0x9f, 0x8a, 0x8d, 0x84, 0x83, 0xde, 0xd9, 0xd0, 0xd7, 0xc2, 0xc5, 0xcc, 0xcb, 0xe6, 0xe1, 0xe8, 0xef, 0xfa, 0xfd, 0xf4, 0xf3];\nif (typeof Int32Array !== 'undefined') TABLE = new Int32Array(TABLE);\nmodule.exports = (0, _define_crc2[\"default\"])('crc-8', function (buf, previous) {\n if (!_buffer.Buffer.isBuffer(buf)) buf = (0, _buffer.Buffer)(buf);\n var crc = ~~previous;\n\n for (var index = 0; index < buf.length; index++) {\n var _byte = buf[index];\n crc = TABLE[(crc ^ _byte) & 0xff] & 0xff;\n }\n\n return crc;\n});","'use strict';\n\nvar _buffer = require('buffer');\n\nvar _define_crc = require('./define_crc');\n\nvar _define_crc2 = _interopRequireDefault(_define_crc);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n} // Generated by `./pycrc.py --algorithm=table-driven --model=dallas-1-wire --generate=c`\n\n\nvar TABLE = [0x00, 0x5e, 0xbc, 0xe2, 0x61, 0x3f, 0xdd, 0x83, 0xc2, 0x9c, 0x7e, 0x20, 0xa3, 0xfd, 0x1f, 0x41, 0x9d, 0xc3, 0x21, 0x7f, 0xfc, 0xa2, 0x40, 0x1e, 0x5f, 0x01, 0xe3, 0xbd, 0x3e, 0x60, 0x82, 0xdc, 0x23, 0x7d, 0x9f, 0xc1, 0x42, 0x1c, 0xfe, 0xa0, 0xe1, 0xbf, 0x5d, 0x03, 0x80, 0xde, 0x3c, 0x62, 0xbe, 0xe0, 0x02, 0x5c, 0xdf, 0x81, 0x63, 0x3d, 0x7c, 0x22, 0xc0, 0x9e, 0x1d, 0x43, 0xa1, 0xff, 0x46, 0x18, 0xfa, 0xa4, 0x27, 0x79, 0x9b, 0xc5, 0x84, 0xda, 0x38, 0x66, 0xe5, 0xbb, 0x59, 0x07, 0xdb, 0x85, 0x67, 0x39, 0xba, 0xe4, 0x06, 0x58, 0x19, 0x47, 0xa5, 0xfb, 0x78, 0x26, 0xc4, 0x9a, 0x65, 0x3b, 0xd9, 0x87, 0x04, 0x5a, 0xb8, 0xe6, 0xa7, 0xf9, 0x1b, 0x45, 0xc6, 0x98, 0x7a, 0x24, 0xf8, 0xa6, 0x44, 0x1a, 0x99, 0xc7, 0x25, 0x7b, 0x3a, 0x64, 0x86, 0xd8, 0x5b, 0x05, 0xe7, 0xb9, 0x8c, 0xd2, 0x30, 0x6e, 0xed, 0xb3, 0x51, 0x0f, 0x4e, 0x10, 0xf2, 0xac, 0x2f, 0x71, 0x93, 0xcd, 0x11, 0x4f, 0xad, 0xf3, 0x70, 0x2e, 0xcc, 0x92, 0xd3, 0x8d, 0x6f, 0x31, 0xb2, 0xec, 0x0e, 0x50, 0xaf, 0xf1, 0x13, 0x4d, 0xce, 0x90, 0x72, 0x2c, 0x6d, 0x33, 0xd1, 0x8f, 0x0c, 0x52, 0xb0, 0xee, 0x32, 0x6c, 0x8e, 0xd0, 0x53, 0x0d, 0xef, 0xb1, 0xf0, 0xae, 0x4c, 0x12, 0x91, 0xcf, 0x2d, 0x73, 0xca, 0x94, 0x76, 0x28, 0xab, 0xf5, 0x17, 0x49, 0x08, 0x56, 0xb4, 0xea, 0x69, 0x37, 0xd5, 0x8b, 0x57, 0x09, 0xeb, 0xb5, 0x36, 0x68, 0x8a, 0xd4, 0x95, 0xcb, 0x29, 0x77, 0xf4, 0xaa, 0x48, 0x16, 0xe9, 0xb7, 0x55, 0x0b, 0x88, 0xd6, 0x34, 0x6a, 0x2b, 0x75, 0x97, 0xc9, 0x4a, 0x14, 0xf6, 0xa8, 0x74, 0x2a, 0xc8, 0x96, 0x15, 0x4b, 0xa9, 0xf7, 0xb6, 0xe8, 0x0a, 0x54, 0xd7, 0x89, 0x6b, 0x35];\nif (typeof Int32Array !== 'undefined') TABLE = new Int32Array(TABLE);\nmodule.exports = (0, _define_crc2[\"default\"])('dallas-1-wire', function (buf, previous) {\n if (!_buffer.Buffer.isBuffer(buf)) buf = (0, _buffer.Buffer)(buf);\n var crc = ~~previous;\n\n for (var index = 0; index < buf.length; index++) {\n var _byte = buf[index];\n crc = TABLE[(crc ^ _byte) & 0xff] & 0xff;\n }\n\n return crc;\n});","'use strict';\n\nvar _buffer = require('buffer');\n\nvar _define_crc = require('./define_crc');\n\nvar _define_crc2 = _interopRequireDefault(_define_crc);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n} // Generated by `./pycrc.py --algorithm=table-driven --model=crc-16 --generate=c`\n\n\nvar TABLE = [0x0000, 0xc0c1, 0xc181, 0x0140, 0xc301, 0x03c0, 0x0280, 0xc241, 0xc601, 0x06c0, 0x0780, 0xc741, 0x0500, 0xc5c1, 0xc481, 0x0440, 0xcc01, 0x0cc0, 0x0d80, 0xcd41, 0x0f00, 0xcfc1, 0xce81, 0x0e40, 0x0a00, 0xcac1, 0xcb81, 0x0b40, 0xc901, 0x09c0, 0x0880, 0xc841, 0xd801, 0x18c0, 0x1980, 0xd941, 0x1b00, 0xdbc1, 0xda81, 0x1a40, 0x1e00, 0xdec1, 0xdf81, 0x1f40, 0xdd01, 0x1dc0, 0x1c80, 0xdc41, 0x1400, 0xd4c1, 0xd581, 0x1540, 0xd701, 0x17c0, 0x1680, 0xd641, 0xd201, 0x12c0, 0x1380, 0xd341, 0x1100, 0xd1c1, 0xd081, 0x1040, 0xf001, 0x30c0, 0x3180, 0xf141, 0x3300, 0xf3c1, 0xf281, 0x3240, 0x3600, 0xf6c1, 0xf781, 0x3740, 0xf501, 0x35c0, 0x3480, 0xf441, 0x3c00, 0xfcc1, 0xfd81, 0x3d40, 0xff01, 0x3fc0, 0x3e80, 0xfe41, 0xfa01, 0x3ac0, 0x3b80, 0xfb41, 0x3900, 0xf9c1, 0xf881, 0x3840, 0x2800, 0xe8c1, 0xe981, 0x2940, 0xeb01, 0x2bc0, 0x2a80, 0xea41, 0xee01, 0x2ec0, 0x2f80, 0xef41, 0x2d00, 0xedc1, 0xec81, 0x2c40, 0xe401, 0x24c0, 0x2580, 0xe541, 0x2700, 0xe7c1, 0xe681, 0x2640, 0x2200, 0xe2c1, 0xe381, 0x2340, 0xe101, 0x21c0, 0x2080, 0xe041, 0xa001, 0x60c0, 0x6180, 0xa141, 0x6300, 0xa3c1, 0xa281, 0x6240, 0x6600, 0xa6c1, 0xa781, 0x6740, 0xa501, 0x65c0, 0x6480, 0xa441, 0x6c00, 0xacc1, 0xad81, 0x6d40, 0xaf01, 0x6fc0, 0x6e80, 0xae41, 0xaa01, 0x6ac0, 0x6b80, 0xab41, 0x6900, 0xa9c1, 0xa881, 0x6840, 0x7800, 0xb8c1, 0xb981, 0x7940, 0xbb01, 0x7bc0, 0x7a80, 0xba41, 0xbe01, 0x7ec0, 0x7f80, 0xbf41, 0x7d00, 0xbdc1, 0xbc81, 0x7c40, 0xb401, 0x74c0, 0x7580, 0xb541, 0x7700, 0xb7c1, 0xb681, 0x7640, 0x7200, 0xb2c1, 0xb381, 0x7340, 0xb101, 0x71c0, 0x7080, 0xb041, 0x5000, 0x90c1, 0x9181, 0x5140, 0x9301, 0x53c0, 0x5280, 0x9241, 0x9601, 0x56c0, 0x5780, 0x9741, 0x5500, 0x95c1, 0x9481, 0x5440, 0x9c01, 0x5cc0, 0x5d80, 0x9d41, 0x5f00, 0x9fc1, 0x9e81, 0x5e40, 0x5a00, 0x9ac1, 0x9b81, 0x5b40, 0x9901, 0x59c0, 0x5880, 0x9841, 0x8801, 0x48c0, 0x4980, 0x8941, 0x4b00, 0x8bc1, 0x8a81, 0x4a40, 0x4e00, 0x8ec1, 0x8f81, 0x4f40, 0x8d01, 0x4dc0, 0x4c80, 0x8c41, 0x4400, 0x84c1, 0x8581, 0x4540, 0x8701, 0x47c0, 0x4680, 0x8641, 0x8201, 0x42c0, 0x4380, 0x8341, 0x4100, 0x81c1, 0x8081, 0x4040];\nif (typeof Int32Array !== 'undefined') TABLE = new Int32Array(TABLE);\nmodule.exports = (0, _define_crc2[\"default\"])('crc-16', function (buf, previous) {\n if (!_buffer.Buffer.isBuffer(buf)) buf = (0, _buffer.Buffer)(buf);\n var crc = ~~previous;\n\n for (var index = 0; index < buf.length; index++) {\n var _byte = buf[index];\n crc = (TABLE[(crc ^ _byte) & 0xff] ^ crc >> 8) & 0xffff;\n }\n\n return crc;\n});","'use strict';\n\nvar _buffer = require('buffer');\n\nvar _define_crc = require('./define_crc');\n\nvar _define_crc2 = _interopRequireDefault(_define_crc);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n} // Generated by `./pycrc.py --algorithm=table-driven --model=ccitt --generate=c`\n\n\nvar TABLE = [0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef, 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6, 0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de, 0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485, 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d, 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4, 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc, 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823, 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b, 0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12, 0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a, 0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41, 0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49, 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70, 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78, 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f, 0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067, 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e, 0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256, 0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d, 0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, 0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c, 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634, 0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab, 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3, 0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a, 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92, 0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9, 0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1, 0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8, 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0];\nif (typeof Int32Array !== 'undefined') TABLE = new Int32Array(TABLE);\nmodule.exports = (0, _define_crc2[\"default\"])('ccitt', function (buf, previous) {\n if (!_buffer.Buffer.isBuffer(buf)) buf = (0, _buffer.Buffer)(buf);\n var crc = typeof previous !== 'undefined' ? ~~previous : 0xffff;\n\n for (var index = 0; index < buf.length; index++) {\n var _byte = buf[index];\n crc = (TABLE[(crc >> 8 ^ _byte) & 0xff] ^ crc << 8) & 0xffff;\n }\n\n return crc;\n});","'use strict';\n\nvar _buffer = require('buffer');\n\nvar _define_crc = require('./define_crc');\n\nvar _define_crc2 = _interopRequireDefault(_define_crc);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n} // Generated by `./pycrc.py --algorithm=table-driven --model=crc-16-modbus --generate=c`\n\n\nvar TABLE = [0x0000, 0xc0c1, 0xc181, 0x0140, 0xc301, 0x03c0, 0x0280, 0xc241, 0xc601, 0x06c0, 0x0780, 0xc741, 0x0500, 0xc5c1, 0xc481, 0x0440, 0xcc01, 0x0cc0, 0x0d80, 0xcd41, 0x0f00, 0xcfc1, 0xce81, 0x0e40, 0x0a00, 0xcac1, 0xcb81, 0x0b40, 0xc901, 0x09c0, 0x0880, 0xc841, 0xd801, 0x18c0, 0x1980, 0xd941, 0x1b00, 0xdbc1, 0xda81, 0x1a40, 0x1e00, 0xdec1, 0xdf81, 0x1f40, 0xdd01, 0x1dc0, 0x1c80, 0xdc41, 0x1400, 0xd4c1, 0xd581, 0x1540, 0xd701, 0x17c0, 0x1680, 0xd641, 0xd201, 0x12c0, 0x1380, 0xd341, 0x1100, 0xd1c1, 0xd081, 0x1040, 0xf001, 0x30c0, 0x3180, 0xf141, 0x3300, 0xf3c1, 0xf281, 0x3240, 0x3600, 0xf6c1, 0xf781, 0x3740, 0xf501, 0x35c0, 0x3480, 0xf441, 0x3c00, 0xfcc1, 0xfd81, 0x3d40, 0xff01, 0x3fc0, 0x3e80, 0xfe41, 0xfa01, 0x3ac0, 0x3b80, 0xfb41, 0x3900, 0xf9c1, 0xf881, 0x3840, 0x2800, 0xe8c1, 0xe981, 0x2940, 0xeb01, 0x2bc0, 0x2a80, 0xea41, 0xee01, 0x2ec0, 0x2f80, 0xef41, 0x2d00, 0xedc1, 0xec81, 0x2c40, 0xe401, 0x24c0, 0x2580, 0xe541, 0x2700, 0xe7c1, 0xe681, 0x2640, 0x2200, 0xe2c1, 0xe381, 0x2340, 0xe101, 0x21c0, 0x2080, 0xe041, 0xa001, 0x60c0, 0x6180, 0xa141, 0x6300, 0xa3c1, 0xa281, 0x6240, 0x6600, 0xa6c1, 0xa781, 0x6740, 0xa501, 0x65c0, 0x6480, 0xa441, 0x6c00, 0xacc1, 0xad81, 0x6d40, 0xaf01, 0x6fc0, 0x6e80, 0xae41, 0xaa01, 0x6ac0, 0x6b80, 0xab41, 0x6900, 0xa9c1, 0xa881, 0x6840, 0x7800, 0xb8c1, 0xb981, 0x7940, 0xbb01, 0x7bc0, 0x7a80, 0xba41, 0xbe01, 0x7ec0, 0x7f80, 0xbf41, 0x7d00, 0xbdc1, 0xbc81, 0x7c40, 0xb401, 0x74c0, 0x7580, 0xb541, 0x7700, 0xb7c1, 0xb681, 0x7640, 0x7200, 0xb2c1, 0xb381, 0x7340, 0xb101, 0x71c0, 0x7080, 0xb041, 0x5000, 0x90c1, 0x9181, 0x5140, 0x9301, 0x53c0, 0x5280, 0x9241, 0x9601, 0x56c0, 0x5780, 0x9741, 0x5500, 0x95c1, 0x9481, 0x5440, 0x9c01, 0x5cc0, 0x5d80, 0x9d41, 0x5f00, 0x9fc1, 0x9e81, 0x5e40, 0x5a00, 0x9ac1, 0x9b81, 0x5b40, 0x9901, 0x59c0, 0x5880, 0x9841, 0x8801, 0x48c0, 0x4980, 0x8941, 0x4b00, 0x8bc1, 0x8a81, 0x4a40, 0x4e00, 0x8ec1, 0x8f81, 0x4f40, 0x8d01, 0x4dc0, 0x4c80, 0x8c41, 0x4400, 0x84c1, 0x8581, 0x4540, 0x8701, 0x47c0, 0x4680, 0x8641, 0x8201, 0x42c0, 0x4380, 0x8341, 0x4100, 0x81c1, 0x8081, 0x4040];\nif (typeof Int32Array !== 'undefined') TABLE = new Int32Array(TABLE);\nmodule.exports = (0, _define_crc2[\"default\"])('crc-16-modbus', function (buf, previous) {\n if (!_buffer.Buffer.isBuffer(buf)) buf = (0, _buffer.Buffer)(buf);\n var crc = typeof previous !== 'undefined' ? ~~previous : 0xffff;\n\n for (var index = 0; index < buf.length; index++) {\n var _byte = buf[index];\n crc = (TABLE[(crc ^ _byte) & 0xff] ^ crc >> 8) & 0xffff;\n }\n\n return crc;\n});","'use strict';\n\nvar _buffer = require('buffer');\n\nvar _define_crc = require('./define_crc');\n\nvar _define_crc2 = _interopRequireDefault(_define_crc);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = (0, _define_crc2[\"default\"])('xmodem', function (buf, previous) {\n if (!_buffer.Buffer.isBuffer(buf)) buf = (0, _buffer.Buffer)(buf);\n var crc = typeof previous !== 'undefined' ? ~~previous : 0x0;\n\n for (var index = 0; index < buf.length; index++) {\n var _byte = buf[index];\n var code = crc >>> 8 & 0xFF;\n code ^= _byte & 0xFF;\n code ^= code >>> 4;\n crc = crc << 8 & 0xFFFF;\n crc ^= code;\n code = code << 5 & 0xFFFF;\n crc ^= code;\n code = code << 7 & 0xFFFF;\n crc ^= code;\n }\n\n return crc;\n});","'use strict';\n\nvar _buffer = require('buffer');\n\nvar _define_crc = require('./define_crc');\n\nvar _define_crc2 = _interopRequireDefault(_define_crc);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n} // Generated by `./pycrc.py --algorithm=table-driven --model=kermit --generate=c`\n\n\nvar TABLE = [0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf, 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7, 0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e, 0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876, 0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd, 0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5, 0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c, 0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974, 0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb, 0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3, 0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a, 0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72, 0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9, 0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1, 0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738, 0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70, 0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7, 0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff, 0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036, 0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e, 0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5, 0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd, 0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134, 0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c, 0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3, 0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb, 0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232, 0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a, 0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1, 0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9, 0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330, 0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78];\nif (typeof Int32Array !== 'undefined') TABLE = new Int32Array(TABLE);\nmodule.exports = (0, _define_crc2[\"default\"])('kermit', function (buf, previous) {\n if (!_buffer.Buffer.isBuffer(buf)) buf = (0, _buffer.Buffer)(buf);\n var crc = typeof previous !== 'undefined' ? ~~previous : 0x0000;\n\n for (var index = 0; index < buf.length; index++) {\n var _byte = buf[index];\n crc = (TABLE[(crc ^ _byte) & 0xff] ^ crc >> 8) & 0xffff;\n }\n\n return crc;\n});","'use strict';\n\nvar _buffer = require('buffer');\n\nvar _define_crc = require('./define_crc');\n\nvar _define_crc2 = _interopRequireDefault(_define_crc);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n} // Generated by `./pycrc.py --algorithm=table-drive --model=crc-24 --generate=c`\n\n\nvar TABLE = [0x000000, 0x864cfb, 0x8ad50d, 0x0c99f6, 0x93e6e1, 0x15aa1a, 0x1933ec, 0x9f7f17, 0xa18139, 0x27cdc2, 0x2b5434, 0xad18cf, 0x3267d8, 0xb42b23, 0xb8b2d5, 0x3efe2e, 0xc54e89, 0x430272, 0x4f9b84, 0xc9d77f, 0x56a868, 0xd0e493, 0xdc7d65, 0x5a319e, 0x64cfb0, 0xe2834b, 0xee1abd, 0x685646, 0xf72951, 0x7165aa, 0x7dfc5c, 0xfbb0a7, 0x0cd1e9, 0x8a9d12, 0x8604e4, 0x00481f, 0x9f3708, 0x197bf3, 0x15e205, 0x93aefe, 0xad50d0, 0x2b1c2b, 0x2785dd, 0xa1c926, 0x3eb631, 0xb8faca, 0xb4633c, 0x322fc7, 0xc99f60, 0x4fd39b, 0x434a6d, 0xc50696, 0x5a7981, 0xdc357a, 0xd0ac8c, 0x56e077, 0x681e59, 0xee52a2, 0xe2cb54, 0x6487af, 0xfbf8b8, 0x7db443, 0x712db5, 0xf7614e, 0x19a3d2, 0x9fef29, 0x9376df, 0x153a24, 0x8a4533, 0x0c09c8, 0x00903e, 0x86dcc5, 0xb822eb, 0x3e6e10, 0x32f7e6, 0xb4bb1d, 0x2bc40a, 0xad88f1, 0xa11107, 0x275dfc, 0xdced5b, 0x5aa1a0, 0x563856, 0xd074ad, 0x4f0bba, 0xc94741, 0xc5deb7, 0x43924c, 0x7d6c62, 0xfb2099, 0xf7b96f, 0x71f594, 0xee8a83, 0x68c678, 0x645f8e, 0xe21375, 0x15723b, 0x933ec0, 0x9fa736, 0x19ebcd, 0x8694da, 0x00d821, 0x0c41d7, 0x8a0d2c, 0xb4f302, 0x32bff9, 0x3e260f, 0xb86af4, 0x2715e3, 0xa15918, 0xadc0ee, 0x2b8c15, 0xd03cb2, 0x567049, 0x5ae9bf, 0xdca544, 0x43da53, 0xc596a8, 0xc90f5e, 0x4f43a5, 0x71bd8b, 0xf7f170, 0xfb6886, 0x7d247d, 0xe25b6a, 0x641791, 0x688e67, 0xeec29c, 0x3347a4, 0xb50b5f, 0xb992a9, 0x3fde52, 0xa0a145, 0x26edbe, 0x2a7448, 0xac38b3, 0x92c69d, 0x148a66, 0x181390, 0x9e5f6b, 0x01207c, 0x876c87, 0x8bf571, 0x0db98a, 0xf6092d, 0x7045d6, 0x7cdc20, 0xfa90db, 0x65efcc, 0xe3a337, 0xef3ac1, 0x69763a, 0x578814, 0xd1c4ef, 0xdd5d19, 0x5b11e2, 0xc46ef5, 0x42220e, 0x4ebbf8, 0xc8f703, 0x3f964d, 0xb9dab6, 0xb54340, 0x330fbb, 0xac70ac, 0x2a3c57, 0x26a5a1, 0xa0e95a, 0x9e1774, 0x185b8f, 0x14c279, 0x928e82, 0x0df195, 0x8bbd6e, 0x872498, 0x016863, 0xfad8c4, 0x7c943f, 0x700dc9, 0xf64132, 0x693e25, 0xef72de, 0xe3eb28, 0x65a7d3, 0x5b59fd, 0xdd1506, 0xd18cf0, 0x57c00b, 0xc8bf1c, 0x4ef3e7, 0x426a11, 0xc426ea, 0x2ae476, 0xaca88d, 0xa0317b, 0x267d80, 0xb90297, 0x3f4e6c, 0x33d79a, 0xb59b61, 0x8b654f, 0x0d29b4, 0x01b042, 0x87fcb9, 0x1883ae, 0x9ecf55, 0x9256a3, 0x141a58, 0xefaaff, 0x69e604, 0x657ff2, 0xe33309, 0x7c4c1e, 0xfa00e5, 0xf69913, 0x70d5e8, 0x4e2bc6, 0xc8673d, 0xc4fecb, 0x42b230, 0xddcd27, 0x5b81dc, 0x57182a, 0xd154d1, 0x26359f, 0xa07964, 0xace092, 0x2aac69, 0xb5d37e, 0x339f85, 0x3f0673, 0xb94a88, 0x87b4a6, 0x01f85d, 0x0d61ab, 0x8b2d50, 0x145247, 0x921ebc, 0x9e874a, 0x18cbb1, 0xe37b16, 0x6537ed, 0x69ae1b, 0xefe2e0, 0x709df7, 0xf6d10c, 0xfa48fa, 0x7c0401, 0x42fa2f, 0xc4b6d4, 0xc82f22, 0x4e63d9, 0xd11cce, 0x575035, 0x5bc9c3, 0xdd8538];\nif (typeof Int32Array !== 'undefined') TABLE = new Int32Array(TABLE);\nmodule.exports = (0, _define_crc2[\"default\"])('crc-24', function (buf, previous) {\n if (!_buffer.Buffer.isBuffer(buf)) buf = (0, _buffer.Buffer)(buf);\n var crc = typeof previous !== 'undefined' ? ~~previous : 0xb704ce;\n\n for (var index = 0; index < buf.length; index++) {\n var _byte = buf[index];\n crc = (TABLE[(crc >> 16 ^ _byte) & 0xff] ^ crc << 8) & 0xffffff;\n }\n\n return crc;\n});","'use strict';\n\nvar _buffer = require('buffer');\n\nvar _define_crc = require('./define_crc');\n\nvar _define_crc2 = _interopRequireDefault(_define_crc);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n} // Generated by `./pycrc.py --algorithm=table-driven --model=crc-32 --generate=c`\n\n\nvar TABLE = [0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d];\nif (typeof Int32Array !== 'undefined') TABLE = new Int32Array(TABLE);\nmodule.exports = (0, _define_crc2[\"default\"])('crc-32', function (buf, previous) {\n if (!_buffer.Buffer.isBuffer(buf)) buf = (0, _buffer.Buffer)(buf);\n var crc = previous === 0 ? 0 : ~~previous ^ -1;\n\n for (var index = 0; index < buf.length; index++) {\n var _byte = buf[index];\n crc = TABLE[(crc ^ _byte) & 0xff] ^ crc >>> 8;\n }\n\n return crc ^ -1;\n});","import { t } from 'es6/services/localization';\n\nconst SECONDS_IN_MINUTE = 60;\nconst SECONDS_IN_HOUR = 3600;\nconst SECONDS_IN_DAY = 86400;\nconst SECONDS_IN_WEEK = 604800;\nconst SECONDS_IN_YEAR = 31556736;\nconst SECONDS_IN_MONTH = SECONDS_IN_YEAR / 12;\n\nconst HUMAN_TIMES = [\n [SECONDS_IN_MINUTE, 120, (time) => t('{time} minutes from now', { time })],\n [SECONDS_IN_HOUR, 48, (time) => t('{time} hours from now', { time })],\n [SECONDS_IN_DAY, 14, (time) => t('{time} days from now', { time })],\n [SECONDS_IN_WEEK, 9, (time) => t('{time} weeks from now', { time })],\n [SECONDS_IN_MONTH, 12, (time) => t('{time} months from now', { time })],\n];\n\n/**\n * Helper function for converting seconds into humanized time.\n *\n * @i18n less than a minute ago\n * @i18n about a minute ago\n * @i18n minutes ago\n * @i18n about an hour ago\n * @i18n hours ago\n * @i18n yesterday at\n * @i18n this week at\n * @i18n on this date with year at\n * @i18n on this date at\n * @i18n am\n * @i18n pm\n *\n * @param {Number} seconds\n * @returns {String}\n */\nexport function humanizedTime(seconds) {\n return $.humanized_time(seconds);\n}\n\n/**\n * Given a date object, provides relative time to study.\n *\n * If usePast is true, then will only return localized 'now' for\n * past items.\n *\n * @param {Date} date\n * @returns {String}\n */\nexport function relativeTime(date) {\n const now = Date.now();\n\n if (!date) {\n return '';\n }\n\n const diff = Math.floor(Math.abs(date - now) / 1000);\n\n if (date < now || diff < SECONDS_IN_MINUTE) {\n return t('now');\n }\n\n /**\n * Iterate through the times to see which range the time falls under.\n * At the end, get the actual difference and floor the value.\n */\n for (let i = 0; i < HUMAN_TIMES.length; i++) {\n const time = HUMAN_TIMES[i];\n const seconds = time[0];\n const limit = time[1];\n const stringMethod = time[2];\n\n if (diff < seconds * limit) {\n return stringMethod(Math.floor(diff / seconds));\n }\n }\n\n return t('over a year from now');\n}\n","/* eslint-disable prefer-template */\nimport * as API from 'es6/core/api';\nimport Config from 'es6/core/config';\nimport Logger from 'es6/services/logger';\nimport { checkDiscardData } from 'es6/controllers/apps/debug-overrides';\n\nconst LOCAL_STORE_NAME = 'stashed_presentation_data';\n\n/**\n * @param {Function} onLoadStart\n * @param {Function} onLoaded\n * @param {Function} onError\n */\nexport function checkForStoredPresentationData(onLoadStart, onLoaded, onError) {\n let stashedPresentationData = window.localStorage.getItem(LOCAL_STORE_NAME);\n\n if (stashedPresentationData) {\n stashedPresentationData = JSON.parse(stashedPresentationData);\n\n if (stashedPresentationData.username === Config.user.username) {\n onLoadStart();\n\n // Retry the upload. We only want to delete the data if the server\n // returns a response.\n uploadPresentationData(stashedPresentationData.presentations, stashedPresentationData.applicationType)\n .then(response => {\n // Remove data we just reuploaded from localstorage.\n window.localStorage.removeItem(LOCAL_STORE_NAME);\n\n // Trigger onLoaded callback.\n onLoaded();\n })\n .catch(reason => {\n // Only remove the presentations from storage if it is not related to\n // a network error.\n if (!(reason.name === 'AjaxTimeoutError' || reason.name === 'NetworkError')) {\n window.localStorage.removeItem(LOCAL_STORE_NAME);\n }\n\n // If the error code is a 409, that means the data was\n // actually sent successfully on a previous call.\n if (reason.name === 'AjaxError' && reason.code === 409) {\n onLoaded();\n } else {\n onError(reason);\n }\n });\n } else {\n // Logged in as a different user than whoever the stashed data belongs to,\n // so drop it and carry on.\n window.localStorage.removeItem(LOCAL_STORE_NAME);\n onLoaded();\n }\n } else {\n // Nothing to upload.\n onLoaded();\n }\n}\n\nexport function storePresentationData(presentationData, applicationType) {\n const stringifiedPresentationData = JSON.stringify({\n presentations: presentationData,\n username: Config.user.username,\n applicationType,\n });\n window.localStorage.setItem(LOCAL_STORE_NAME, stringifiedPresentationData);\n}\n\nexport function uploadPresentationData(presentationData, applicationType) {\n // Debugging option to prevent data upload.\n if (checkDiscardData()) {\n return Promise.resolve({});\n }\n\n // Nothing to upload.\n if (presentationData.length === 0) {\n return Promise.resolve({});\n }\n\n const params = {\n presentations: presentationData,\n applicationType,\n };\n const saver = API.postStudyData(params);\n\n saver.catch(function (error) {\n // A 409 means that the data was already received, but anything\n // in the 400 range means the data is bad. As long as the error\n // does not fall within this range, save the presentation data\n // for reupload later. Unless it just a TokenExpiredError where\n // reloading the app will fix the data.\n if (error.code < 400 || error.code >= 500 || error.name === 'AjaxTimeoutError' || error.name === 'NetworkError' || error.name === 'TokenExpiredError') {\n Logger.warn('StudyDataManager', 'Failed to send presentationData, saving presentations locally.');\n storePresentationData(presentationData, applicationType);\n } else {\n Logger.error('StudyDataManager', 'Failed to send presentationData with error code ' + error.code + ', discarding presentation data.');\n }\n });\n return saver;\n}\n","import { EventEmitter } from 'events';\n\n// Variables\nlet _isPaused = false;\n\nlet autoPauseDelayMilliseconds;\nlet autoPauseEnabled = false;\n\nlet autoPauseTimeoutKey = undefined;\n\n// Private functions\nconst autoPause = () => {\n if (autoPauseEnabled) {\n pause();\n }\n};\nconst resetAutoPauseTimeout = () => {\n clearTimeout(autoPauseTimeoutKey);\n autoPauseTimeoutKey = setTimeout(autoPause, autoPauseDelayMilliseconds);\n};\n\n// Public functions\n/**\n * 'pause' and 'resume' events will be emitted on this EventEmitter when the app is paused/resumed.\n *\n * Example usage:\n *\n * ```\n * pauseEvents.on('pause', onPause);\n * ...\n * pauseEvents.removeListener('pause', onPause);\n * ```\n */\nexport const pauseEvents = new EventEmitter();\n\nexport function isPaused() {\n return _isPaused;\n}\n\nexport function pause() {\n if (_isPaused) {\n return;\n }\n\n _isPaused = true;\n\n pauseEvents.emit('pause');\n}\n\nexport function resume() {\n if (_isPaused) {\n pauseEvents.emit('resume');\n }\n\n resetAutoPauseTimeout();\n\n _isPaused = false;\n}\n\n/**\n * If the user doesn't trigger any input events for delayMilliseconds milliseconds,\n * automatically pause.\n *\n * @param {Number} delayMilliseconds\n */\nexport function enableAutoPause(delayMilliseconds) {\n if (autoPauseEnabled) {\n return;\n }\n\n autoPauseEnabled = true;\n autoPauseDelayMilliseconds = delayMilliseconds;\n\n // Reset the auto-pause timeout on input events.\n ['click', 'dragover', 'mousemove', 'keydown', 'keypress'].forEach((event) => {\n document.addEventListener(event, resetAutoPauseTimeout);\n });\n\n resetAutoPauseTimeout();\n}\n\nexport function disableAutoPause() {\n if (!autoPauseEnabled) {\n return;\n }\n\n autoPauseEnabled = false;\n\n // Remove the reset timeout events.\n ['click', 'dragover', 'mousemove', 'keydown', 'keypress'].forEach((event) => {\n document.removeEventListener(event, resetAutoPauseTimeout);\n });\n\n resetAutoPauseTimeout();\n}\n","/* eslint-disable arrow-body-style */\nimport { ItemsAggregateMemory, SentencesAggregateMemory } from 'es6/models/domain-aggregate-memory';\n\n/**\n * This class contains aggregates of items and sentences.\n */\nexport default class Grouping {\n constructor(attrs = {}) {\n _.defaults(this, attrs, {\n goalIds: null,\n grouping: {\n completed: null,\n cueLanguageCode: null,\n focused: null,\n uncompleted: null,\n unfocused: null,\n },\n items: null,\n sentences: null,\n });\n\n if (this.items && !(this.items instanceof ItemsAggregateMemory)) {\n this.items = new ItemsAggregateMemory(this.items);\n }\n\n if (this.sentences && !(this.sentences instanceof SentencesAggregateMemory)) {\n this.sentences = new SentencesAggregateMemory(this.sentences);\n }\n\n this._goalSet = new Set();\n\n if (this.goalIds) {\n for (const goalId of this.goalIds) {\n this._goalSet.add(goalId);\n }\n }\n }\n\n hasGoal(goalId) {\n return this._goalSet.has(goalId);\n }\n\n /**\n * Extracts list of groupings with with the specified cueLanguage\n *\n * @param {Grouping[]} groupings\n * @param {String} cueLanguageCode\n * @returns {Boolean}\n */\n static groupingsContainLanguage(groupings, cueLanguageCode) {\n return groupings.reduce((prev, grouping) => {\n return grouping.grouping.cueLanguageCode === cueLanguageCode || prev;\n }, false);\n }\n}\n","/* eslint-disable react/prop-types */\nimport React from 'react';\nimport { t } from 'es6/services/localization';\n\nfunction Annotations({ annotations, onEscape }) {\n return (\n <div className=\"annotation-area\">\n <div className=\"content\">\n <p className=\"note\">{t('note')}</p>\n <p className=\"text\">{annotations}</p>\n </div>\n <button className=\"btn btn-bar btn-default return-to-main\" onClick={onEscape}>Esc</button>\n </div>\n );\n}\n\nexport default Annotations;\n","/* eslint-disable no-unused-vars, react/sort-comp, no-shadow, react/jsx-no-bind */\nimport classnames from 'classnames';\nimport React, { Component, PropTypes } from 'react';\nimport { KeyHelpers } from 'es6/core/keys';\nimport ReactDmak from './dmak';\n\n// Kanji that we have SWF files for.\nconst AVAILABLE_KANJI_SWF = 'あいうえおかがきぎくぐけげこごさざしじすずせぜそぞただちぢつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもやゆよらりるれろわをんアイウエオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモヤユヨラリルレロワヲン一丁七万三上下不世両並中丸主久乗九乱乳予争事二五亡交京人仁今仕他付代令以仮仲件休会伝似位低住体何余作使例供価便係保信修俳俵倉個倍候借停健側傷働億優元兄兆先光児入全八公六共兵具典内円冊再写冬冷処出刀分切刊列初判別利制刷券刻則前副割創劇力功加助努労効勇勉動務勝勢勤包化北区医十千午半卒協南単博印危卵厚原厳去参友反収取受口古句台史右号司各合同名后向君否告周味呼命和品員唱商問善喜器四回困囲図固国園土在地坂型城域堂報場塩境墓増士声売変夏夕外多夜夢大天太夫央失奏奮女好妹妻姉始委姿婦子字存孝季学孫宅宇守安完宗官宙定宝実客宣宮害家宿富寒察寺対専射将尊導小少尺局屋展属層山岩岸島川州巣工左差己巻市布希席帯帰帳干平年幸幹幼庁広底店府度座庫庭康延建弁式弓引弟弱張強当形役往径待後徒従得復心必志忘応忠念思急性息悪悲情想意愛感態慣憲成我戦戸所手才打批承技投折拝拡拾持指挙捨推提揮損操支改放政故救敗教散敬数整敵文料断新方旅族旗日旧早明易昔星映春昨昭昼時晩景晴暑暖暗暮暴曜曲書最月有服朗望朝期木未末本札机材村束条来東松板林果枝柱査栄校株根案桜梅械森植検業極楽様標模権横樹橋機欠次歌止正武歩歯歴死残段殺母毎毒比毛氏民気水氷永求池決汽河油治沿泉法波泣注泳洋洗活派流浅浴海消深混清済減温測港湖湯満源準漁漢潔潮激火灯災炭点無然焼照熟熱燃父片版牛牧物特犬犯状独率玉王班現球理生産用田由申男町画界畑留略番異疑病痛発登白百的皇皮皿益盛目直相省看県真眼着矢知短石砂研破確磁示礼社祝神票祭禁福私秋科秒秘税種穀積穴究空窓立章童競竹笑笛第筆等筋答策算管箱節築簡米粉精糖糸系紀約紅納純紙級素細終組経結給統絵絶絹続綿総緑線編練縦縮績織罪置署羊美群羽翌習老考者耕耳聖聞職肉肥育肺胃背胸能脈腸臓臣臨自至舌舎航船良色花芸芽若苦英茶草荷菜落葉蒸蔵薬虫蚕血衆行術街衛衣表裁装裏製複西要見規視覚覧親観角言計討訓記設許訳証評詞試詩話誌認誕語誠誤説読課調談論諸講謝識警議谷豆豊象貝負財貧貨責貯貴買貸費貿賃資賛賞質赤走起足路身車軍転軽輪輸辞農辺近返述追送通速造連週進遊運過道達遠適選遺郡部郵郷都配酒酸里重野量金針鉄銀銅銭鋼録鏡長門閉開間関閣防降限陛院除陸険陽隊階際障集雑難雨雪雲電青静非面革音頂順預領頭題顔願類風飛食飯飲飼養館首馬駅験骨高魚鳥鳴麦黄黒鼻';\n\n// REGEXP for capturing japanese characters.\nconst KANJI_STROKE_REGEXP = /[\\u3040-\\u30FF\\uFF61-\\uFF9F\\u4E00-\\u9FFF\\uF900-\\uFAFF]/g;\n\n/**\n * Checks if a SWF file is available.\n *\n * @param {String} char the kanji character to check\n * @returns {Boolean}\n */\nfunction isSWFAvailable(char) {\n return AVAILABLE_KANJI_SWF.match(char);\n}\n\n/**\n * Returns all kanji that have a SWF file available.\n *\n * @params {string} str string containing kanji\n * @returns {String[]}\n */\nfunction getAvailableKanji(str) {\n return getUniqueKanji(str).filter(isSWFAvailable);\n}\n\n/**\n * Retrieves all unique kanji characters from a string.\n *\n * @param {String} str\n * @returns {String[]}\n */\nfunction getUniqueKanji(str) {\n const matched = str.match(KANJI_STROKE_REGEXP);\n return matched ? matched.filter((c, i) => str.indexOf(c) === i) : [];\n}\n\n/**\n *\n */\nfunction handleKeydown(e) {\n const { keyCode } = e;\n const { characterIndex } = this.state;\n\n if (KeyHelpers.isLeft(keyCode)) {\n setCharacterIndex.call(this, characterIndex - 1);\n } else if (KeyHelpers.isRight(keyCode)) {\n setCharacterIndex.call(this, characterIndex + 1);\n }\n}\n\n/**\n * @this KanjiStrokes\n * @param {Number} characterIndex sets the character index\n */\nfunction setCharacterIndex(characterIndex) {\n const { characters } = this.props;\n const maxLength = getAvailableKanji(characters).length - 1;\n\n if (characterIndex >= 0 && characterIndex <= maxLength) {\n this.setState({ characterIndex });\n }\n}\n\n/**\n * Determines whether a string contains any characters that can be displayed.\n *\n * @param {String} str\n * @returns {Boolean}\n */\nexport function containsDisplayableCharacters(str) {\n return getAvailableKanji(str).length > 0;\n}\n\nconst INITIAL_STATE = { characterIndex: 0 };\n\nclass KanjiStrokes extends Component {\n constructor(props) {\n super(props);\n this.handleKeydown = handleKeydown.bind(this);\n this.state = INITIAL_STATE;\n }\n\n componentDidMount() {\n window.addEventListener('keydown', this.handleKeydown);\n }\n\n componentWillUnmount() {\n window.removeEventListener('keydown', this.handleKeydown);\n }\n\n componentWillUpdate(nextProps, nextState) {\n if (nextProps.characters !== this.props.characters) {\n this.setState(INITIAL_STATE);\n }\n }\n\n render() {\n const { characterIndex } = this.state;\n const { characters, onEscape } = this.props;\n\n const available = getAvailableKanji(characters);\n let availableIndex = 0;\n const uniqueCharacters = getUniqueKanji(characters);\n const focused = available[characterIndex];\n\n return (\n <div className=\"kanji-strokes\">\n <div className=\"animation\">\n {focused && <ReactDmak character={focused} />}\n </div>\n\n <div className=\"characters\">\n {uniqueCharacters.map((char, i) => {\n const available = isSWFAvailable(char);\n const current = char === focused;\n const onClick = available && setCharacterIndex.bind(this, availableIndex);\n if (available) {\n availableIndex += 1;\n }\n return (<span key={i} onClick={onClick} className={classnames({ available, current })}>{char}</span>);\n })}\n </div>\n\n <div className=\"attribution\">\n <a href=\"http://kanjivg.tagaini.net/\">Kanji stroke data</a> by Ulrich Apel under <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA 3.0</a>\n </div>\n\n <button className=\"btn btn-bar btn-default return-to-main\" onClick={onEscape}>Esc</button>\n </div>\n );\n }\n}\n\nKanjiStrokes.propTypes = {\n characters: PropTypes.string.isRequired,\n onEscape: PropTypes.func.isRequired,\n};\n\nexport default KanjiStrokes;\n","import React, { Component, PropTypes } from 'react';\nimport Raphael from 'raphael';\nwindow.Raphael = Raphael; // required by dmak to be present globally\nimport 'dmak'; // exposes itself on window.Dmak\n\nclass ReactDmak extends Component {\n constructor(props) {\n super(props);\n this.id = `dmak-${Math.random()}`;\n this.element = null;\n this.dmak = null;\n\n this.setDrawDivRef = element => {\n this.element = element;\n };\n\n this.draw = () => {\n if (this.element !== null) {\n if (this.dmak !== null) {\n this.dmak.pause();\n }\n this.element.innerHTML = '';\n this.dmak = new window.Dmak(this.props.character, {\n // dmak has a bug where specifying an element does not work so we just use a \"unique\" id\n element: this.element.id,\n height: 320,\n width: 320,\n step: 0.02,\n // these were downloaded from https://kanjivg.tagaini.net/ and\n // manually uploaded to the S3 assets.iknow.jp bucket\n //\n // for local dev unzip the kanji folder into public/assets/\n uri: '/assets/kanji/',\n grid: {\n show: false,\n },\n stroke: {\n attr: {\n active: '#f09035',\n stroke: '#ffffff',\n },\n },\n });\n }\n };\n }\n\n componentDidMount() {\n this.draw();\n }\n\n componentDidUpdate() {\n this.draw();\n }\n\n componentWillUnmount() {\n if (this.dmak !== null) {\n this.dmak.pause();\n this.dmak = null;\n }\n }\n\n render() {\n return <div id={this.id} ref={this.setDrawDivRef} onClick={this.draw} />;\n }\n}\n\nReactDmak.propTypes = {\n character: PropTypes.string.isRequired,\n};\n\nexport default ReactDmak;\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n!function (t, e) {\n \"object\" == (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) && \"object\" == (typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) ? module.exports = e() : \"function\" == typeof define && define.amd ? define([], e) : \"object\" == (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) ? exports.Raphael = e() : t.Raphael = e();\n}(window, function () {\n return function (t) {\n var e = {};\n\n function r(i) {\n if (e[i]) return e[i].exports;\n var n = e[i] = {\n i: i,\n l: !1,\n exports: {}\n };\n return t[i].call(n.exports, n, n.exports, r), n.l = !0, n.exports;\n }\n\n return r.m = t, r.c = e, r.d = function (t, e, i) {\n r.o(t, e) || Object.defineProperty(t, e, {\n enumerable: !0,\n get: i\n });\n }, r.r = function (t) {\n \"undefined\" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, {\n value: \"Module\"\n }), Object.defineProperty(t, \"__esModule\", {\n value: !0\n });\n }, r.t = function (t, e) {\n if (1 & e && (t = r(t)), 8 & e) return t;\n if (4 & e && \"object\" == _typeof(t) && t && t.__esModule) return t;\n var i = Object.create(null);\n if (r.r(i), Object.defineProperty(i, \"default\", {\n enumerable: !0,\n value: t\n }), 2 & e && \"string\" != typeof t) for (var n in t) {\n r.d(i, n, function (e) {\n return t[e];\n }.bind(null, n));\n }\n return i;\n }, r.n = function (t) {\n var e = t && t.__esModule ? function () {\n return t[\"default\"];\n } : function () {\n return t;\n };\n return r.d(e, \"a\", e), e;\n }, r.o = function (t, e) {\n return Object.prototype.hasOwnProperty.call(t, e);\n }, r.p = \"\", r(r.s = 1);\n }([function (t, e, r) {\n var i, n;\n i = [r(2)], void 0 === (n = function (t) {\n function e(i) {\n if (e.is(i, \"function\")) return r ? i() : t.on(\"raphael.DOMload\", i);\n if (e.is(i, A)) return e._engine.create[c](e, i.splice(0, 3 + e.is(i[0], T))).add(i);\n var n = Array.prototype.slice.call(arguments, 0);\n\n if (e.is(n[n.length - 1], \"function\")) {\n var a = n.pop();\n return r ? a.call(e._engine.create[c](e, n)) : t.on(\"raphael.DOMload\", function () {\n a.call(e._engine.create[c](e, n));\n });\n }\n\n return e._engine.create[c](e, arguments);\n }\n\n e.version = \"2.3.0\", e.eve = t;\n\n var r,\n i,\n n = /[, ]+/,\n a = {\n circle: 1,\n rect: 1,\n path: 1,\n ellipse: 1,\n text: 1,\n image: 1\n },\n s = /\\{(\\d+)\\}/g,\n o = \"hasOwnProperty\",\n l = {\n doc: document,\n win: window\n },\n h = {\n was: Object.prototype[o].call(l.win, \"Raphael\"),\n is: l.win.Raphael\n },\n u = function u() {\n this.ca = this.customAttributes = {};\n },\n c = \"apply\",\n f = \"concat\",\n p = \"ontouchstart\" in window || window.TouchEvent || window.DocumentTouch && document instanceof DocumentTouch,\n d = \"\",\n g = \" \",\n x = String,\n v = \"split\",\n y = \"click dblclick mousedown mousemove mouseout mouseover mouseup touchstart touchmove touchend touchcancel\"[v](g),\n m = {\n mousedown: \"touchstart\",\n mousemove: \"touchmove\",\n mouseup: \"touchend\"\n },\n b = x.prototype.toLowerCase,\n _2 = Math,\n w = _2.max,\n k = _2.min,\n B = _2.abs,\n C = _2.pow,\n S = _2.PI,\n T = \"number\",\n A = \"array\",\n M = Object.prototype.toString,\n E = (e._ISURL = /^url\\(['\"]?(.+?)['\"]?\\)$/i, /^\\s*((#[a-f\\d]{6})|(#[a-f\\d]{3})|rgba?\\(\\s*([\\d\\.]+%?\\s*,\\s*[\\d\\.]+%?\\s*,\\s*[\\d\\.]+%?(?:\\s*,\\s*[\\d\\.]+%?)?)\\s*\\)|hsba?\\(\\s*([\\d\\.]+(?:deg|\\xb0|%)?\\s*,\\s*[\\d\\.]+%?\\s*,\\s*[\\d\\.]+(?:%?\\s*,\\s*[\\d\\.]+)?)%?\\s*\\)|hsla?\\(\\s*([\\d\\.]+(?:deg|\\xb0|%)?\\s*,\\s*[\\d\\.]+%?\\s*,\\s*[\\d\\.]+(?:%?\\s*,\\s*[\\d\\.]+)?)%?\\s*\\))\\s*$/i),\n N = {\n NaN: 1,\n Infinity: 1,\n \"-Infinity\": 1\n },\n L = /^(?:cubic-)?bezier\\(([^,]+),([^,]+),([^,]+),([^\\)]+)\\)/,\n P = _2.round,\n z = parseFloat,\n F = parseInt,\n R = x.prototype.toUpperCase,\n j = e._availableAttrs = {\n \"arrow-end\": \"none\",\n \"arrow-start\": \"none\",\n blur: 0,\n \"clip-rect\": \"0 0 1e9 1e9\",\n cursor: \"default\",\n cx: 0,\n cy: 0,\n fill: \"#fff\",\n \"fill-opacity\": 1,\n font: '10px \"Arial\"',\n \"font-family\": '\"Arial\"',\n \"font-size\": \"10\",\n \"font-style\": \"normal\",\n \"font-weight\": 400,\n gradient: 0,\n height: 0,\n href: \"http://raphaeljs.com/\",\n \"letter-spacing\": 0,\n opacity: 1,\n path: \"M0,0\",\n r: 0,\n rx: 0,\n ry: 0,\n src: \"\",\n stroke: \"#000\",\n \"stroke-dasharray\": \"\",\n \"stroke-linecap\": \"butt\",\n \"stroke-linejoin\": \"butt\",\n \"stroke-miterlimit\": 0,\n \"stroke-opacity\": 1,\n \"stroke-width\": 1,\n target: \"_blank\",\n \"text-anchor\": \"middle\",\n title: \"Raphael\",\n transform: \"\",\n width: 0,\n x: 0,\n y: 0,\n \"class\": \"\"\n },\n I = e._availableAnimAttrs = {\n blur: T,\n \"clip-rect\": \"csv\",\n cx: T,\n cy: T,\n fill: \"colour\",\n \"fill-opacity\": T,\n \"font-size\": T,\n height: T,\n opacity: T,\n path: \"path\",\n r: T,\n rx: T,\n ry: T,\n stroke: \"colour\",\n \"stroke-opacity\": T,\n \"stroke-width\": T,\n transform: \"transform\",\n width: T,\n x: T,\n y: T\n },\n D = /[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*,[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*/,\n q = {\n hs: 1,\n rg: 1\n },\n O = /,?([achlmqrstvxz]),?/gi,\n V = /([achlmrqstvz])[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029,]*((-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*,?[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*)+)/gi,\n W = /([rstm])[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029,]*((-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*,?[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*)+)/gi,\n Y = /(-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?)[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*,?[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*/gi,\n G = (e._radial_gradient = /^r(?:\\(([^,]+?)[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*,[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*([^\\)]+?)\\))?/, {}),\n H = function H(t, e) {\n return z(t) - z(e);\n },\n X = function X(t) {\n return t;\n },\n U = e._rectPath = function (t, e, r, i, n) {\n return n ? [[\"M\", t + n, e], [\"l\", r - 2 * n, 0], [\"a\", n, n, 0, 0, 1, n, n], [\"l\", 0, i - 2 * n], [\"a\", n, n, 0, 0, 1, -n, n], [\"l\", 2 * n - r, 0], [\"a\", n, n, 0, 0, 1, -n, -n], [\"l\", 0, 2 * n - i], [\"a\", n, n, 0, 0, 1, n, -n], [\"z\"]] : [[\"M\", t, e], [\"l\", r, 0], [\"l\", 0, i], [\"l\", -r, 0], [\"z\"]];\n },\n $ = function $(t, e, r, i) {\n return null == i && (i = r), [[\"M\", t, e], [\"m\", 0, -i], [\"a\", r, i, 0, 1, 1, 0, 2 * i], [\"a\", r, i, 0, 1, 1, 0, -2 * i], [\"z\"]];\n },\n Z = e._getPath = {\n path: function path(t) {\n return t.attr(\"path\");\n },\n circle: function circle(t) {\n var e = t.attrs;\n return $(e.cx, e.cy, e.r);\n },\n ellipse: function ellipse(t) {\n var e = t.attrs;\n return $(e.cx, e.cy, e.rx, e.ry);\n },\n rect: function rect(t) {\n var e = t.attrs;\n return U(e.x, e.y, e.width, e.height, e.r);\n },\n image: function image(t) {\n var e = t.attrs;\n return U(e.x, e.y, e.width, e.height);\n },\n text: function text(t) {\n var e = t._getBBox();\n\n return U(e.x, e.y, e.width, e.height);\n },\n set: function set(t) {\n var e = t._getBBox();\n\n return U(e.x, e.y, e.width, e.height);\n }\n },\n Q = e.mapPath = function (t, e) {\n if (!e) return t;\n var r, i, n, a, s, o, l;\n\n for (n = 0, s = (t = Tt(t)).length; n < s; n++) {\n for (a = 1, o = (l = t[n]).length; a < o; a += 2) {\n r = e.x(l[a], l[a + 1]), i = e.y(l[a], l[a + 1]), l[a] = r, l[a + 1] = i;\n }\n }\n\n return t;\n };\n\n if (e._g = l, e.type = l.win.SVGAngle || l.doc.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#BasicStructure\", \"1.1\") ? \"SVG\" : \"VML\", \"VML\" == e.type) {\n var J,\n K = l.doc.createElement(\"div\");\n if (K.innerHTML = '<v:shape adj=\"1\"/>', (J = K.firstChild).style.behavior = \"url(#default#VML)\", !J || \"object\" != _typeof(J.adj)) return e.type = d;\n K = null;\n }\n\n function tt(t) {\n if (\"function\" == typeof t || Object(t) !== t) return t;\n var e = new t.constructor();\n\n for (var r in t) {\n t[o](r) && (e[r] = tt(t[r]));\n }\n\n return e;\n }\n\n e.svg = !(e.vml = \"VML\" == e.type), e._Paper = u, e.fn = i = u.prototype = e.prototype, e._id = 0, e.is = function (t, e) {\n return \"finite\" == (e = b.call(e)) ? !N[o](+t) : \"array\" == e ? t instanceof Array : \"null\" == e && null === t || e == _typeof(t) && null !== t || \"object\" == e && t === Object(t) || \"array\" == e && Array.isArray && Array.isArray(t) || M.call(t).slice(8, -1).toLowerCase() == e;\n }, e.angle = function (t, r, i, n, a, s) {\n if (null == a) {\n var o = t - i,\n l = r - n;\n return o || l ? (180 + 180 * _2.atan2(-l, -o) / S + 360) % 360 : 0;\n }\n\n return e.angle(t, r, a, s) - e.angle(i, n, a, s);\n }, e.rad = function (t) {\n return t % 360 * S / 180;\n }, e.deg = function (t) {\n return Math.round(180 * t / S % 360 * 1e3) / 1e3;\n }, e.snapTo = function (t, r, i) {\n if (i = e.is(i, \"finite\") ? i : 10, e.is(t, A)) {\n for (var n = t.length; n--;) {\n if (B(t[n] - r) <= i) return t[n];\n }\n } else {\n var a = r % (t = +t);\n if (a < i) return r - a;\n if (a > t - i) return r - a + t;\n }\n\n return r;\n };\n var et, rt;\n e.createUUID = (et = /[xy]/g, rt = function rt(t) {\n var e = 16 * _2.random() | 0;\n return (\"x\" == t ? e : 3 & e | 8).toString(16);\n }, function () {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(et, rt).toUpperCase();\n });\n\n e.setWindow = function (r) {\n t(\"raphael.setWindow\", e, l.win, r), l.win = r, l.doc = l.win.document, e._engine.initWin && e._engine.initWin(l.win);\n };\n\n var _it = function it(t) {\n if (e.vml) {\n var r,\n i = /^\\s+|\\s+$/g;\n\n try {\n var n = new ActiveXObject(\"htmlfile\");\n n.write(\"<body>\"), n.close(), r = n.body;\n } catch (t) {\n r = createPopup().document.body;\n }\n\n var a = r.createTextRange();\n _it = ht(function (t) {\n try {\n r.style.color = x(t).replace(i, d);\n var e = a.queryCommandValue(\"ForeColor\");\n return \"#\" + (\"000000\" + (e = (255 & e) << 16 | 65280 & e | (16711680 & e) >>> 16).toString(16)).slice(-6);\n } catch (t) {\n return \"none\";\n }\n });\n } else {\n var s = l.doc.createElement(\"i\");\n s.title = \"Raphaël Colour Picker\", s.style.display = \"none\", l.doc.body.appendChild(s), _it = ht(function (t) {\n return s.style.color = t, l.doc.defaultView.getComputedStyle(s, d).getPropertyValue(\"color\");\n });\n }\n\n return _it(t);\n },\n nt = function nt() {\n return \"hsb(\" + [this.h, this.s, this.b] + \")\";\n },\n at = function at() {\n return \"hsl(\" + [this.h, this.s, this.l] + \")\";\n },\n st = function st() {\n return this.hex;\n },\n ot = function ot(t, r, i) {\n if (null == r && e.is(t, \"object\") && \"r\" in t && \"g\" in t && \"b\" in t && (i = t.b, r = t.g, t = t.r), null == r && e.is(t, \"string\")) {\n var n = e.getRGB(t);\n t = n.r, r = n.g, i = n.b;\n }\n\n return (t > 1 || r > 1 || i > 1) && (t /= 255, r /= 255, i /= 255), [t, r, i];\n },\n lt = function lt(t, r, i, n) {\n var a = {\n r: t *= 255,\n g: r *= 255,\n b: i *= 255,\n hex: e.rgb(t, r, i),\n toString: st\n };\n return e.is(n, \"finite\") && (a.opacity = n), a;\n };\n\n function ht(t, e, r) {\n return function i() {\n var n = Array.prototype.slice.call(arguments, 0),\n a = n.join(\"␀\"),\n s = i.cache = i.cache || {},\n l = i.count = i.count || [];\n return s[o](a) ? (function (t, e) {\n for (var r = 0, i = t.length; r < i; r++) {\n if (t[r] === e) return t.push(t.splice(r, 1)[0]);\n }\n }(l, a), r ? r(s[a]) : s[a]) : (l.length >= 1e3 && delete s[l.shift()], l.push(a), s[a] = t[c](e, n), r ? r(s[a]) : s[a]);\n };\n }\n\n e.color = function (t) {\n var r;\n return e.is(t, \"object\") && \"h\" in t && \"s\" in t && \"b\" in t ? (r = e.hsb2rgb(t), t.r = r.r, t.g = r.g, t.b = r.b, t.hex = r.hex) : e.is(t, \"object\") && \"h\" in t && \"s\" in t && \"l\" in t ? (r = e.hsl2rgb(t), t.r = r.r, t.g = r.g, t.b = r.b, t.hex = r.hex) : (e.is(t, \"string\") && (t = e.getRGB(t)), e.is(t, \"object\") && \"r\" in t && \"g\" in t && \"b\" in t ? (r = e.rgb2hsl(t), t.h = r.h, t.s = r.s, t.l = r.l, r = e.rgb2hsb(t), t.v = r.b) : (t = {\n hex: \"none\"\n }).r = t.g = t.b = t.h = t.s = t.v = t.l = -1), t.toString = st, t;\n }, e.hsb2rgb = function (t, e, r, i) {\n var n, a, s, o, l;\n return this.is(t, \"object\") && \"h\" in t && \"s\" in t && \"b\" in t && (r = t.b, e = t.s, i = t.o, t = t.h), o = (l = r * e) * (1 - B((t = (t *= 360) % 360 / 60) % 2 - 1)), n = a = s = r - l, lt(n += [l, o, 0, 0, o, l][t = ~~t], a += [o, l, l, o, 0, 0][t], s += [0, 0, o, l, l, o][t], i);\n }, e.hsl2rgb = function (t, e, r, i) {\n var n, a, s, o, l;\n return this.is(t, \"object\") && \"h\" in t && \"s\" in t && \"l\" in t && (r = t.l, e = t.s, t = t.h), (t > 1 || e > 1 || r > 1) && (t /= 360, e /= 100, r /= 100), o = (l = 2 * e * (r < .5 ? r : 1 - r)) * (1 - B((t = (t *= 360) % 360 / 60) % 2 - 1)), n = a = s = r - l / 2, lt(n += [l, o, 0, 0, o, l][t = ~~t], a += [o, l, l, o, 0, 0][t], s += [0, 0, o, l, l, o][t], i);\n }, e.rgb2hsb = function (t, e, r) {\n var i, n;\n return t = (r = ot(t, e, r))[0], e = r[1], r = r[2], {\n h: ((0 == (n = (i = w(t, e, r)) - k(t, e, r)) ? null : i == t ? (e - r) / n : i == e ? (r - t) / n + 2 : (t - e) / n + 4) + 360) % 6 * 60 / 360,\n s: 0 == n ? 0 : n / i,\n b: i,\n toString: nt\n };\n }, e.rgb2hsl = function (t, e, r) {\n var i, n, a, s;\n return t = (r = ot(t, e, r))[0], e = r[1], r = r[2], i = ((n = w(t, e, r)) + (a = k(t, e, r))) / 2, {\n h: ((0 == (s = n - a) ? null : n == t ? (e - r) / s : n == e ? (r - t) / s + 2 : (t - e) / s + 4) + 360) % 6 * 60 / 360,\n s: 0 == s ? 0 : i < .5 ? s / (2 * i) : s / (2 - 2 * i),\n l: i,\n toString: at\n };\n }, e._path2string = function () {\n return this.join(\",\").replace(O, \"$1\");\n };\n\n e._preload = function (t, e) {\n var r = l.doc.createElement(\"img\");\n r.style.cssText = \"position:absolute;left:-9999em;top:-9999em\", r.onload = function () {\n e.call(this), this.onload = null, l.doc.body.removeChild(this);\n }, r.onerror = function () {\n l.doc.body.removeChild(this);\n }, l.doc.body.appendChild(r), r.src = t;\n };\n\n function ut() {\n return this.hex;\n }\n\n function ct(t, e) {\n for (var r = [], i = 0, n = t.length; n - 2 * !e > i; i += 2) {\n var a = [{\n x: +t[i - 2],\n y: +t[i - 1]\n }, {\n x: +t[i],\n y: +t[i + 1]\n }, {\n x: +t[i + 2],\n y: +t[i + 3]\n }, {\n x: +t[i + 4],\n y: +t[i + 5]\n }];\n e ? i ? n - 4 == i ? a[3] = {\n x: +t[0],\n y: +t[1]\n } : n - 2 == i && (a[2] = {\n x: +t[0],\n y: +t[1]\n }, a[3] = {\n x: +t[2],\n y: +t[3]\n }) : a[0] = {\n x: +t[n - 2],\n y: +t[n - 1]\n } : n - 4 == i ? a[3] = a[2] : i || (a[0] = {\n x: +t[i],\n y: +t[i + 1]\n }), r.push([\"C\", (-a[0].x + 6 * a[1].x + a[2].x) / 6, (-a[0].y + 6 * a[1].y + a[2].y) / 6, (a[1].x + 6 * a[2].x - a[3].x) / 6, (a[1].y + 6 * a[2].y - a[3].y) / 6, a[2].x, a[2].y]);\n }\n\n return r;\n }\n\n e.getRGB = ht(function (t) {\n if (!t || (t = x(t)).indexOf(\"-\") + 1) return {\n r: -1,\n g: -1,\n b: -1,\n hex: \"none\",\n error: 1,\n toString: ut\n };\n if (\"none\" == t) return {\n r: -1,\n g: -1,\n b: -1,\n hex: \"none\",\n toString: ut\n };\n !q[o](t.toLowerCase().substring(0, 2)) && \"#\" != t.charAt() && (t = _it(t));\n var r,\n i,\n n,\n a,\n s,\n l,\n h = t.match(E);\n return h ? (h[2] && (n = F(h[2].substring(5), 16), i = F(h[2].substring(3, 5), 16), r = F(h[2].substring(1, 3), 16)), h[3] && (n = F((s = h[3].charAt(3)) + s, 16), i = F((s = h[3].charAt(2)) + s, 16), r = F((s = h[3].charAt(1)) + s, 16)), h[4] && (l = h[4][v](D), r = z(l[0]), \"%\" == l[0].slice(-1) && (r *= 2.55), i = z(l[1]), \"%\" == l[1].slice(-1) && (i *= 2.55), n = z(l[2]), \"%\" == l[2].slice(-1) && (n *= 2.55), \"rgba\" == h[1].toLowerCase().slice(0, 4) && (a = z(l[3])), l[3] && \"%\" == l[3].slice(-1) && (a /= 100)), h[5] ? (l = h[5][v](D), r = z(l[0]), \"%\" == l[0].slice(-1) && (r *= 2.55), i = z(l[1]), \"%\" == l[1].slice(-1) && (i *= 2.55), n = z(l[2]), \"%\" == l[2].slice(-1) && (n *= 2.55), (\"deg\" == l[0].slice(-3) || \"°\" == l[0].slice(-1)) && (r /= 360), \"hsba\" == h[1].toLowerCase().slice(0, 4) && (a = z(l[3])), l[3] && \"%\" == l[3].slice(-1) && (a /= 100), e.hsb2rgb(r, i, n, a)) : h[6] ? (l = h[6][v](D), r = z(l[0]), \"%\" == l[0].slice(-1) && (r *= 2.55), i = z(l[1]), \"%\" == l[1].slice(-1) && (i *= 2.55), n = z(l[2]), \"%\" == l[2].slice(-1) && (n *= 2.55), (\"deg\" == l[0].slice(-3) || \"°\" == l[0].slice(-1)) && (r /= 360), \"hsla\" == h[1].toLowerCase().slice(0, 4) && (a = z(l[3])), l[3] && \"%\" == l[3].slice(-1) && (a /= 100), e.hsl2rgb(r, i, n, a)) : ((h = {\n r: r,\n g: i,\n b: n,\n toString: ut\n }).hex = \"#\" + (16777216 | n | i << 8 | r << 16).toString(16).slice(1), e.is(a, \"finite\") && (h.opacity = a), h)) : {\n r: -1,\n g: -1,\n b: -1,\n hex: \"none\",\n error: 1,\n toString: ut\n };\n }, e), e.hsb = ht(function (t, r, i) {\n return e.hsb2rgb(t, r, i).hex;\n }), e.hsl = ht(function (t, r, i) {\n return e.hsl2rgb(t, r, i).hex;\n }), e.rgb = ht(function (t, e, r) {\n function i(t) {\n return t + .5 | 0;\n }\n\n return \"#\" + (16777216 | i(r) | i(e) << 8 | i(t) << 16).toString(16).slice(1);\n }), e.getColor = function (t) {\n var e = this.getColor.start = this.getColor.start || {\n h: 0,\n s: 1,\n b: t || .75\n },\n r = this.hsb2rgb(e.h, e.s, e.b);\n return e.h += .075, e.h > 1 && (e.h = 0, e.s -= .2, e.s <= 0 && (this.getColor.start = {\n h: 0,\n s: 1,\n b: e.b\n })), r.hex;\n }, e.getColor.reset = function () {\n delete this.start;\n }, e.parsePathString = function (t) {\n if (!t) return null;\n var r = ft(t);\n if (r.arr) return mt(r.arr);\n var i = {\n a: 7,\n c: 6,\n h: 1,\n l: 2,\n m: 2,\n r: 4,\n q: 4,\n s: 4,\n t: 2,\n v: 1,\n z: 0\n },\n n = [];\n return e.is(t, A) && e.is(t[0], A) && (n = mt(t)), n.length || x(t).replace(V, function (t, e, r) {\n var a = [],\n s = e.toLowerCase();\n if (r.replace(Y, function (t, e) {\n e && a.push(+e);\n }), \"m\" == s && a.length > 2 && (n.push([e][f](a.splice(0, 2))), s = \"l\", e = \"m\" == e ? \"l\" : \"L\"), \"r\" == s) n.push([e][f](a));else for (; a.length >= i[s] && (n.push([e][f](a.splice(0, i[s]))), i[s]);) {\n ;\n }\n }), n.toString = e._path2string, r.arr = mt(n), n;\n }, e.parseTransformString = ht(function (t) {\n if (!t) return null;\n var r = [];\n return e.is(t, A) && e.is(t[0], A) && (r = mt(t)), r.length || x(t).replace(W, function (t, e, i) {\n var n = [];\n b.call(e);\n i.replace(Y, function (t, e) {\n e && n.push(+e);\n }), r.push([e][f](n));\n }), r.toString = e._path2string, r;\n }, this, function (t) {\n if (!t) return t;\n\n for (var e = [], r = 0; r < t.length; r++) {\n for (var i = [], n = 0; n < t[r].length; n++) {\n i.push(t[r][n]);\n }\n\n e.push(i);\n }\n\n return e;\n });\n\n var ft = function ft(t) {\n var e = ft.ps = ft.ps || {};\n return e[t] ? e[t].sleep = 100 : e[t] = {\n sleep: 100\n }, setTimeout(function () {\n for (var r in e) {\n e[o](r) && r != t && (e[r].sleep--, !e[r].sleep && delete e[r]);\n }\n }), e[t];\n };\n\n function pt(t, e, r, i, n) {\n return t * (t * (-3 * e + 9 * r - 9 * i + 3 * n) + 6 * e - 12 * r + 6 * i) - 3 * e + 3 * r;\n }\n\n function dt(t, e, r, i, n, a, s, o, l) {\n null == l && (l = 1);\n\n for (var h = (l = l > 1 ? 1 : l < 0 ? 0 : l) / 2, u = [-.1252, .1252, -.3678, .3678, -.5873, .5873, -.7699, .7699, -.9041, .9041, -.9816, .9816], c = [.2491, .2491, .2335, .2335, .2032, .2032, .1601, .1601, .1069, .1069, .0472, .0472], f = 0, p = 0; p < 12; p++) {\n var d = h * u[p] + h,\n g = pt(d, t, r, n, s),\n x = pt(d, e, i, a, o),\n v = g * g + x * x;\n f += c[p] * _2.sqrt(v);\n }\n\n return h * f;\n }\n\n function gt(t, e, r, i, n, a, s, o) {\n if (!(w(t, r) < k(n, s) || k(t, r) > w(n, s) || w(e, i) < k(a, o) || k(e, i) > w(a, o))) {\n var l = (t - r) * (a - o) - (e - i) * (n - s);\n\n if (l) {\n var h = ((t * i - e * r) * (n - s) - (t - r) * (n * o - a * s)) / l,\n u = ((t * i - e * r) * (a - o) - (e - i) * (n * o - a * s)) / l,\n c = +h.toFixed(2),\n f = +u.toFixed(2);\n if (!(c < +k(t, r).toFixed(2) || c > +w(t, r).toFixed(2) || c < +k(n, s).toFixed(2) || c > +w(n, s).toFixed(2) || f < +k(e, i).toFixed(2) || f > +w(e, i).toFixed(2) || f < +k(a, o).toFixed(2) || f > +w(a, o).toFixed(2))) return {\n x: h,\n y: u\n };\n }\n }\n }\n\n function xt(t, r, i) {\n var n = e.bezierBBox(t),\n a = e.bezierBBox(r);\n if (!e.isBBoxIntersect(n, a)) return i ? 0 : [];\n\n for (var s = dt.apply(0, t), o = dt.apply(0, r), l = w(~~(s / 5), 1), h = w(~~(o / 5), 1), u = [], c = [], f = {}, p = i ? 0 : [], d = 0; d < l + 1; d++) {\n var g = e.findDotsAtSegment.apply(e, t.concat(d / l));\n u.push({\n x: g.x,\n y: g.y,\n t: d / l\n });\n }\n\n for (d = 0; d < h + 1; d++) {\n g = e.findDotsAtSegment.apply(e, r.concat(d / h)), c.push({\n x: g.x,\n y: g.y,\n t: d / h\n });\n }\n\n for (d = 0; d < l; d++) {\n for (var x = 0; x < h; x++) {\n var v = u[d],\n y = u[d + 1],\n m = c[x],\n b = c[x + 1],\n _ = B(y.x - v.x) < .001 ? \"y\" : \"x\",\n C = B(b.x - m.x) < .001 ? \"y\" : \"x\",\n S = gt(v.x, v.y, y.x, y.y, m.x, m.y, b.x, b.y);\n\n if (S) {\n if (f[S.x.toFixed(4)] == S.y.toFixed(4)) continue;\n f[S.x.toFixed(4)] = S.y.toFixed(4);\n var T = v.t + B((S[_] - v[_]) / (y[_] - v[_])) * (y.t - v.t),\n A = m.t + B((S[C] - m[C]) / (b[C] - m[C])) * (b.t - m.t);\n T >= 0 && T <= 1.001 && A >= 0 && A <= 1.001 && (i ? p++ : p.push({\n x: S.x,\n y: S.y,\n t1: k(T, 1),\n t2: k(A, 1)\n }));\n }\n }\n }\n\n return p;\n }\n\n function vt(t, r, i) {\n t = e._path2curve(t), r = e._path2curve(r);\n\n for (var n, a, s, o, l, h, u, c, f, p, d = i ? 0 : [], g = 0, x = t.length; g < x; g++) {\n var v = t[g];\n if (\"M\" == v[0]) n = l = v[1], a = h = v[2];else {\n \"C\" == v[0] ? (f = [n, a].concat(v.slice(1)), n = f[6], a = f[7]) : (f = [n, a, n, a, l, h, l, h], n = l, a = h);\n\n for (var y = 0, m = r.length; y < m; y++) {\n var b = r[y];\n if (\"M\" == b[0]) s = u = b[1], o = c = b[2];else {\n \"C\" == b[0] ? (p = [s, o].concat(b.slice(1)), s = p[6], o = p[7]) : (p = [s, o, s, o, u, c, u, c], s = u, o = c);\n\n var _ = xt(f, p, i);\n\n if (i) d += _;else {\n for (var w = 0, k = _.length; w < k; w++) {\n _[w].segment1 = g, _[w].segment2 = y, _[w].bez1 = f, _[w].bez2 = p;\n }\n\n d = d.concat(_);\n }\n }\n }\n }\n }\n\n return d;\n }\n\n e.findDotsAtSegment = function (t, e, r, i, n, a, s, o, l) {\n var h = 1 - l,\n u = C(h, 3),\n c = C(h, 2),\n f = l * l,\n p = f * l,\n d = u * t + 3 * c * l * r + 3 * h * l * l * n + p * s,\n g = u * e + 3 * c * l * i + 3 * h * l * l * a + p * o,\n x = t + 2 * l * (r - t) + f * (n - 2 * r + t),\n v = e + 2 * l * (i - e) + f * (a - 2 * i + e),\n y = r + 2 * l * (n - r) + f * (s - 2 * n + r),\n m = i + 2 * l * (a - i) + f * (o - 2 * a + i),\n b = h * t + l * r,\n w = h * e + l * i,\n k = h * n + l * s,\n B = h * a + l * o,\n T = 90 - 180 * _2.atan2(x - y, v - m) / S;\n return (x > y || v < m) && (T += 180), {\n x: d,\n y: g,\n m: {\n x: x,\n y: v\n },\n n: {\n x: y,\n y: m\n },\n start: {\n x: b,\n y: w\n },\n end: {\n x: k,\n y: B\n },\n alpha: T\n };\n }, e.bezierBBox = function (t, r, i, n, a, s, o, l) {\n e.is(t, \"array\") || (t = [t, r, i, n, a, s, o, l]);\n var h = St.apply(null, t);\n return {\n x: h.min.x,\n y: h.min.y,\n x2: h.max.x,\n y2: h.max.y,\n width: h.max.x - h.min.x,\n height: h.max.y - h.min.y\n };\n }, e.isPointInsideBBox = function (t, e, r) {\n return e >= t.x && e <= t.x2 && r >= t.y && r <= t.y2;\n }, e.isBBoxIntersect = function (t, r) {\n var i = e.isPointInsideBBox;\n return i(r, t.x, t.y) || i(r, t.x2, t.y) || i(r, t.x, t.y2) || i(r, t.x2, t.y2) || i(t, r.x, r.y) || i(t, r.x2, r.y) || i(t, r.x, r.y2) || i(t, r.x2, r.y2) || (t.x < r.x2 && t.x > r.x || r.x < t.x2 && r.x > t.x) && (t.y < r.y2 && t.y > r.y || r.y < t.y2 && r.y > t.y);\n }, e.pathIntersection = function (t, e) {\n return vt(t, e);\n }, e.pathIntersectionNumber = function (t, e) {\n return vt(t, e, 1);\n }, e.isPointInsidePath = function (t, r, i) {\n var n = e.pathBBox(t);\n return e.isPointInsideBBox(n, r, i) && vt(t, [[\"M\", r, i], [\"H\", n.x2 + 10]], 1) % 2 == 1;\n }, e._removedFactory = function (e) {\n return function () {\n t(\"raphael.log\", null, \"Raphaël: you are calling to method “\" + e + \"” of removed object\", e);\n };\n };\n\n var yt = e.pathBBox = function (t) {\n var e = ft(t);\n if (e.bbox) return tt(e.bbox);\n if (!t) return {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n x2: 0,\n y2: 0\n };\n\n for (var r, i = 0, n = 0, a = [], s = [], o = 0, l = (t = Tt(t)).length; o < l; o++) {\n if (\"M\" == (r = t[o])[0]) i = r[1], n = r[2], a.push(i), s.push(n);else {\n var h = St(i, n, r[1], r[2], r[3], r[4], r[5], r[6]);\n a = a[f](h.min.x, h.max.x), s = s[f](h.min.y, h.max.y), i = r[5], n = r[6];\n }\n }\n\n var u = k[c](0, a),\n p = k[c](0, s),\n d = w[c](0, a),\n g = w[c](0, s),\n x = d - u,\n v = g - p,\n y = {\n x: u,\n y: p,\n x2: d,\n y2: g,\n width: x,\n height: v,\n cx: u + x / 2,\n cy: p + v / 2\n };\n return e.bbox = tt(y), y;\n },\n mt = function mt(t) {\n var r = tt(t);\n return r.toString = e._path2string, r;\n },\n bt = e._pathToRelative = function (t) {\n var r = ft(t);\n if (r.rel) return mt(r.rel);\n e.is(t, A) && e.is(t && t[0], A) || (t = e.parsePathString(t));\n var i = [],\n n = 0,\n a = 0,\n s = 0,\n o = 0,\n l = 0;\n \"M\" == t[0][0] && (s = n = t[0][1], o = a = t[0][2], l++, i.push([\"M\", n, a]));\n\n for (var h = l, u = t.length; h < u; h++) {\n var c = i[h] = [],\n f = t[h];\n if (f[0] != b.call(f[0])) switch (c[0] = b.call(f[0]), c[0]) {\n case \"a\":\n c[1] = f[1], c[2] = f[2], c[3] = f[3], c[4] = f[4], c[5] = f[5], c[6] = +(f[6] - n).toFixed(3), c[7] = +(f[7] - a).toFixed(3);\n break;\n\n case \"v\":\n c[1] = +(f[1] - a).toFixed(3);\n break;\n\n case \"m\":\n s = f[1], o = f[2];\n\n default:\n for (var p = 1, d = f.length; p < d; p++) {\n c[p] = +(f[p] - (p % 2 ? n : a)).toFixed(3);\n }\n\n } else {\n c = i[h] = [], \"m\" == f[0] && (s = f[1] + n, o = f[2] + a);\n\n for (var g = 0, x = f.length; g < x; g++) {\n i[h][g] = f[g];\n }\n }\n var v = i[h].length;\n\n switch (i[h][0]) {\n case \"z\":\n n = s, a = o;\n break;\n\n case \"h\":\n n += +i[h][v - 1];\n break;\n\n case \"v\":\n a += +i[h][v - 1];\n break;\n\n default:\n n += +i[h][v - 2], a += +i[h][v - 1];\n }\n }\n\n return i.toString = e._path2string, r.rel = mt(i), i;\n },\n _t = e._pathToAbsolute = function (t) {\n var r = ft(t);\n if (r.abs) return mt(r.abs);\n if (e.is(t, A) && e.is(t && t[0], A) || (t = e.parsePathString(t)), !t || !t.length) return [[\"M\", 0, 0]];\n var i = [],\n n = 0,\n a = 0,\n s = 0,\n o = 0,\n l = 0;\n \"M\" == t[0][0] && (s = n = +t[0][1], o = a = +t[0][2], l++, i[0] = [\"M\", n, a]);\n\n for (var h, u, c = 3 == t.length && \"M\" == t[0][0] && \"R\" == t[1][0].toUpperCase() && \"Z\" == t[2][0].toUpperCase(), p = l, d = t.length; p < d; p++) {\n if (i.push(h = []), (u = t[p])[0] != R.call(u[0])) switch (h[0] = R.call(u[0]), h[0]) {\n case \"A\":\n h[1] = u[1], h[2] = u[2], h[3] = u[3], h[4] = u[4], h[5] = u[5], h[6] = +(u[6] + n), h[7] = +(u[7] + a);\n break;\n\n case \"V\":\n h[1] = +u[1] + a;\n break;\n\n case \"H\":\n h[1] = +u[1] + n;\n break;\n\n case \"R\":\n for (var g = [n, a][f](u.slice(1)), x = 2, v = g.length; x < v; x++) {\n g[x] = +g[x] + n, g[++x] = +g[x] + a;\n }\n\n i.pop(), i = i[f](ct(g, c));\n break;\n\n case \"M\":\n s = +u[1] + n, o = +u[2] + a;\n\n default:\n for (x = 1, v = u.length; x < v; x++) {\n h[x] = +u[x] + (x % 2 ? n : a);\n }\n\n } else if (\"R\" == u[0]) g = [n, a][f](u.slice(1)), i.pop(), i = i[f](ct(g, c)), h = [\"R\"][f](u.slice(-2));else for (var y = 0, m = u.length; y < m; y++) {\n h[y] = u[y];\n }\n\n switch (h[0]) {\n case \"Z\":\n n = s, a = o;\n break;\n\n case \"H\":\n n = h[1];\n break;\n\n case \"V\":\n a = h[1];\n break;\n\n case \"M\":\n s = h[h.length - 2], o = h[h.length - 1];\n\n default:\n n = h[h.length - 2], a = h[h.length - 1];\n }\n }\n\n return i.toString = e._path2string, r.abs = mt(i), i;\n },\n wt = function wt(t, e, r, i) {\n return [t, e, r, i, r, i];\n },\n kt = function kt(t, e, r, i, n, a) {\n return [1 / 3 * t + 2 / 3 * r, 1 / 3 * e + 2 / 3 * i, 1 / 3 * n + 2 / 3 * r, 1 / 3 * a + 2 / 3 * i, n, a];\n },\n Bt = function Bt(t, e, r, i, n, a, s, o, l, h) {\n var u,\n c = 120 * S / 180,\n p = S / 180 * (+n || 0),\n d = [],\n g = ht(function (t, e, r) {\n return {\n x: t * _2.cos(r) - e * _2.sin(r),\n y: t * _2.sin(r) + e * _2.cos(r)\n };\n });\n if (h) A = h[0], M = h[1], C = h[2], T = h[3];else {\n t = (u = g(t, e, -p)).x, e = u.y, o = (u = g(o, l, -p)).x, l = u.y;\n _2.cos(S / 180 * n), _2.sin(S / 180 * n);\n var x = (t - o) / 2,\n y = (e - l) / 2,\n m = x * x / (r * r) + y * y / (i * i);\n m > 1 && (r *= m = _2.sqrt(m), i *= m);\n\n var b = r * r,\n w = i * i,\n k = (a == s ? -1 : 1) * _2.sqrt(B((b * w - b * y * y - w * x * x) / (b * y * y + w * x * x))),\n C = k * r * y / i + (t + o) / 2,\n T = k * -i * x / r + (e + l) / 2,\n A = _2.asin(((e - T) / i).toFixed(9)),\n M = _2.asin(((l - T) / i).toFixed(9));\n\n (A = t < C ? S - A : A) < 0 && (A = 2 * S + A), (M = o < C ? S - M : M) < 0 && (M = 2 * S + M), s && A > M && (A -= 2 * S), !s && M > A && (M -= 2 * S);\n }\n var E = M - A;\n\n if (B(E) > c) {\n var N = M,\n L = o,\n P = l;\n M = A + c * (s && M > A ? 1 : -1), o = C + r * _2.cos(M), l = T + i * _2.sin(M), d = Bt(o, l, r, i, n, 0, s, L, P, [M, N, C, T]);\n }\n\n E = M - A;\n\n var z = _2.cos(A),\n F = _2.sin(A),\n R = _2.cos(M),\n j = _2.sin(M),\n I = _2.tan(E / 4),\n D = 4 / 3 * r * I,\n q = 4 / 3 * i * I,\n O = [t, e],\n V = [t + D * F, e - q * z],\n W = [o + D * j, l - q * R],\n Y = [o, l];\n\n if (V[0] = 2 * O[0] - V[0], V[1] = 2 * O[1] - V[1], h) return [V, W, Y][f](d);\n\n for (var G = [], H = 0, X = (d = [V, W, Y][f](d).join()[v](\",\")).length; H < X; H++) {\n G[H] = H % 2 ? g(d[H - 1], d[H], p).y : g(d[H], d[H + 1], p).x;\n }\n\n return G;\n },\n Ct = function Ct(t, e, r, i, n, a, s, o, l) {\n var h = 1 - l;\n return {\n x: C(h, 3) * t + 3 * C(h, 2) * l * r + 3 * h * l * l * n + C(l, 3) * s,\n y: C(h, 3) * e + 3 * C(h, 2) * l * i + 3 * h * l * l * a + C(l, 3) * o\n };\n },\n St = ht(function (t, e, r, i, n, a, s, o) {\n var l,\n h = n - 2 * r + t - (s - 2 * n + r),\n u = 2 * (r - t) - 2 * (n - r),\n f = t - r,\n p = (-u + _2.sqrt(u * u - 4 * h * f)) / 2 / h,\n d = (-u - _2.sqrt(u * u - 4 * h * f)) / 2 / h,\n g = [e, o],\n x = [t, s];\n return B(p) > \"1e12\" && (p = .5), B(d) > \"1e12\" && (d = .5), p > 0 && p < 1 && (l = Ct(t, e, r, i, n, a, s, o, p), x.push(l.x), g.push(l.y)), d > 0 && d < 1 && (l = Ct(t, e, r, i, n, a, s, o, d), x.push(l.x), g.push(l.y)), h = a - 2 * i + e - (o - 2 * a + i), f = e - i, p = (-(u = 2 * (i - e) - 2 * (a - i)) + _2.sqrt(u * u - 4 * h * f)) / 2 / h, d = (-u - _2.sqrt(u * u - 4 * h * f)) / 2 / h, B(p) > \"1e12\" && (p = .5), B(d) > \"1e12\" && (d = .5), p > 0 && p < 1 && (l = Ct(t, e, r, i, n, a, s, o, p), x.push(l.x), g.push(l.y)), d > 0 && d < 1 && (l = Ct(t, e, r, i, n, a, s, o, d), x.push(l.x), g.push(l.y)), {\n min: {\n x: k[c](0, x),\n y: k[c](0, g)\n },\n max: {\n x: w[c](0, x),\n y: w[c](0, g)\n }\n };\n }),\n Tt = e._path2curve = ht(function (t, e) {\n var r = !e && ft(t);\n if (!e && r.curve) return mt(r.curve);\n\n for (var i = _t(t), n = e && _t(e), a = {\n x: 0,\n y: 0,\n bx: 0,\n by: 0,\n X: 0,\n Y: 0,\n qx: null,\n qy: null\n }, s = {\n x: 0,\n y: 0,\n bx: 0,\n by: 0,\n X: 0,\n Y: 0,\n qx: null,\n qy: null\n }, o = function o(t, e, r) {\n var i, n;\n if (!t) return [\"C\", e.x, e.y, e.x, e.y, e.x, e.y];\n\n switch (!(t[0] in {\n T: 1,\n Q: 1\n }) && (e.qx = e.qy = null), t[0]) {\n case \"M\":\n e.X = t[1], e.Y = t[2];\n break;\n\n case \"A\":\n t = [\"C\"][f](Bt[c](0, [e.x, e.y][f](t.slice(1))));\n break;\n\n case \"S\":\n \"C\" == r || \"S\" == r ? (i = 2 * e.x - e.bx, n = 2 * e.y - e.by) : (i = e.x, n = e.y), t = [\"C\", i, n][f](t.slice(1));\n break;\n\n case \"T\":\n \"Q\" == r || \"T\" == r ? (e.qx = 2 * e.x - e.qx, e.qy = 2 * e.y - e.qy) : (e.qx = e.x, e.qy = e.y), t = [\"C\"][f](kt(e.x, e.y, e.qx, e.qy, t[1], t[2]));\n break;\n\n case \"Q\":\n e.qx = t[1], e.qy = t[2], t = [\"C\"][f](kt(e.x, e.y, t[1], t[2], t[3], t[4]));\n break;\n\n case \"L\":\n t = [\"C\"][f](wt(e.x, e.y, t[1], t[2]));\n break;\n\n case \"H\":\n t = [\"C\"][f](wt(e.x, e.y, t[1], e.y));\n break;\n\n case \"V\":\n t = [\"C\"][f](wt(e.x, e.y, e.x, t[1]));\n break;\n\n case \"Z\":\n t = [\"C\"][f](wt(e.x, e.y, e.X, e.Y));\n }\n\n return t;\n }, l = function l(t, e) {\n if (t[e].length > 7) {\n t[e].shift();\n\n for (var r = t[e]; r.length;) {\n u[e] = \"A\", n && (p[e] = \"A\"), t.splice(e++, 0, [\"C\"][f](r.splice(0, 6)));\n }\n\n t.splice(e, 1), v = w(i.length, n && n.length || 0);\n }\n }, h = function h(t, e, r, a, s) {\n t && e && \"M\" == t[s][0] && \"M\" != e[s][0] && (e.splice(s, 0, [\"M\", a.x, a.y]), r.bx = 0, r.by = 0, r.x = t[s][1], r.y = t[s][2], v = w(i.length, n && n.length || 0));\n }, u = [], p = [], d = \"\", g = \"\", x = 0, v = w(i.length, n && n.length || 0); x < v; x++) {\n i[x] && (d = i[x][0]), \"C\" != d && (u[x] = d, x && (g = u[x - 1])), i[x] = o(i[x], a, g), \"A\" != u[x] && \"C\" == d && (u[x] = \"C\"), l(i, x), n && (n[x] && (d = n[x][0]), \"C\" != d && (p[x] = d, x && (g = p[x - 1])), n[x] = o(n[x], s, g), \"A\" != p[x] && \"C\" == d && (p[x] = \"C\"), l(n, x)), h(i, n, a, s, x), h(n, i, s, a, x);\n\n var y = i[x],\n m = n && n[x],\n b = y.length,\n _ = n && m.length;\n\n a.x = y[b - 2], a.y = y[b - 1], a.bx = z(y[b - 4]) || a.x, a.by = z(y[b - 3]) || a.y, s.bx = n && (z(m[_ - 4]) || s.x), s.by = n && (z(m[_ - 3]) || s.y), s.x = n && m[_ - 2], s.y = n && m[_ - 1];\n }\n\n return n || (r.curve = mt(i)), n ? [i, n] : i;\n }, null, mt),\n At = (e._parseDots = ht(function (t) {\n for (var r = [], i = 0, n = t.length; i < n; i++) {\n var a = {},\n s = t[i].match(/^([^:]*):?([\\d\\.]*)/);\n if (a.color = e.getRGB(s[1]), a.color.error) return null;\n a.opacity = a.color.opacity, a.color = a.color.hex, s[2] && (a.offset = s[2] + \"%\"), r.push(a);\n }\n\n for (i = 1, n = r.length - 1; i < n; i++) {\n if (!r[i].offset) {\n for (var o = z(r[i - 1].offset || 0), l = 0, h = i + 1; h < n; h++) {\n if (r[h].offset) {\n l = r[h].offset;\n break;\n }\n }\n\n l || (l = 100, h = n);\n\n for (var u = ((l = z(l)) - o) / (h - i + 1); i < h; i++) {\n o += u, r[i].offset = o + \"%\";\n }\n }\n }\n\n return r;\n }), e._tear = function (t, e) {\n t == e.top && (e.top = t.prev), t == e.bottom && (e.bottom = t.next), t.next && (t.next.prev = t.prev), t.prev && (t.prev.next = t.next);\n }),\n Mt = (e._tofront = function (t, e) {\n e.top !== t && (At(t, e), t.next = null, t.prev = e.top, e.top.next = t, e.top = t);\n }, e._toback = function (t, e) {\n e.bottom !== t && (At(t, e), t.next = e.bottom, t.prev = null, e.bottom.prev = t, e.bottom = t);\n }, e._insertafter = function (t, e, r) {\n At(t, r), e == r.top && (r.top = t), e.next && (e.next.prev = t), t.next = e.next, t.prev = e, e.next = t;\n }, e._insertbefore = function (t, e, r) {\n At(t, r), e == r.bottom && (r.bottom = t), e.prev && (e.prev.next = t), t.prev = e.prev, e.prev = t, t.next = e;\n }, e.toMatrix = function (t, e) {\n var r = yt(t),\n i = {\n _: {\n transform: d\n },\n getBBox: function getBBox() {\n return r;\n }\n };\n return Et(i, e), i.matrix;\n }),\n Et = (e.transformPath = function (t, e) {\n return Q(t, Mt(t, e));\n }, e._extractTransform = function (t, r) {\n if (null == r) return t._.transform;\n r = x(r).replace(/\\.{3}|\\u2026/g, t._.transform || d);\n var i,\n n,\n a = e.parseTransformString(r),\n s = 0,\n o = 1,\n l = 1,\n h = t._,\n u = new Pt();\n if (h.transform = a || [], a) for (var c = 0, f = a.length; c < f; c++) {\n var p,\n g,\n v,\n y,\n m,\n b = a[c],\n _ = b.length,\n w = x(b[0]).toLowerCase(),\n k = b[0] != w,\n B = k ? u.invert() : 0;\n \"t\" == w && 3 == _ ? k ? (p = B.x(0, 0), g = B.y(0, 0), v = B.x(b[1], b[2]), y = B.y(b[1], b[2]), u.translate(v - p, y - g)) : u.translate(b[1], b[2]) : \"r\" == w ? 2 == _ ? (m = m || t.getBBox(1), u.rotate(b[1], m.x + m.width / 2, m.y + m.height / 2), s += b[1]) : 4 == _ && (k ? (v = B.x(b[2], b[3]), y = B.y(b[2], b[3]), u.rotate(b[1], v, y)) : u.rotate(b[1], b[2], b[3]), s += b[1]) : \"s\" == w ? 2 == _ || 3 == _ ? (m = m || t.getBBox(1), u.scale(b[1], b[_ - 1], m.x + m.width / 2, m.y + m.height / 2), o *= b[1], l *= b[_ - 1]) : 5 == _ && (k ? (v = B.x(b[3], b[4]), y = B.y(b[3], b[4]), u.scale(b[1], b[2], v, y)) : u.scale(b[1], b[2], b[3], b[4]), o *= b[1], l *= b[2]) : \"m\" == w && 7 == _ && u.add(b[1], b[2], b[3], b[4], b[5], b[6]), h.dirtyT = 1, t.matrix = u;\n }\n t.matrix = u, h.sx = o, h.sy = l, h.deg = s, h.dx = i = u.e, h.dy = n = u.f, 1 == o && 1 == l && !s && h.bbox ? (h.bbox.x += +i, h.bbox.y += +n) : h.dirtyT = 1;\n }),\n Nt = function Nt(t) {\n var e = t[0];\n\n switch (e.toLowerCase()) {\n case \"t\":\n return [e, 0, 0];\n\n case \"m\":\n return [e, 1, 0, 0, 1, 0, 0];\n\n case \"r\":\n return 4 == t.length ? [e, 0, t[2], t[3]] : [e, 0];\n\n case \"s\":\n return 5 == t.length ? [e, 1, 1, t[3], t[4]] : 3 == t.length ? [e, 1, 1] : [e, 1];\n }\n },\n Lt = e._equaliseTransform = function (t, r) {\n r = x(r).replace(/\\.{3}|\\u2026/g, t), t = e.parseTransformString(t) || [], r = e.parseTransformString(r) || [];\n\n for (var i, n, a, s, o = w(t.length, r.length), l = [], h = [], u = 0; u < o; u++) {\n if (a = t[u] || Nt(r[u]), s = r[u] || Nt(a), a[0] != s[0] || \"r\" == a[0].toLowerCase() && (a[2] != s[2] || a[3] != s[3]) || \"s\" == a[0].toLowerCase() && (a[3] != s[3] || a[4] != s[4])) return;\n\n for (l[u] = [], h[u] = [], i = 0, n = w(a.length, s.length); i < n; i++) {\n i in a && (l[u][i] = a[i]), i in s && (h[u][i] = s[i]);\n }\n }\n\n return {\n from: l,\n to: h\n };\n };\n\n function Pt(t, e, r, i, n, a) {\n null != t ? (this.a = +t, this.b = +e, this.c = +r, this.d = +i, this.e = +n, this.f = +a) : (this.a = 1, this.b = 0, this.c = 0, this.d = 1, this.e = 0, this.f = 0);\n }\n\n e._getContainer = function (t, r, i, n) {\n var a;\n if (null != (a = null != n || e.is(t, \"object\") ? t : l.doc.getElementById(t))) return a.tagName ? null == r ? {\n container: a,\n width: a.style.pixelWidth || a.offsetWidth,\n height: a.style.pixelHeight || a.offsetHeight\n } : {\n container: a,\n width: r,\n height: i\n } : {\n container: 1,\n x: t,\n y: r,\n width: i,\n height: n\n };\n }, e.pathToRelative = bt, e._engine = {}, e.path2curve = Tt, e.matrix = function (t, e, r, i, n, a) {\n return new Pt(t, e, r, i, n, a);\n }, function (t) {\n function r(t) {\n return t[0] * t[0] + t[1] * t[1];\n }\n\n function i(t) {\n var e = _2.sqrt(r(t));\n\n t[0] && (t[0] /= e), t[1] && (t[1] /= e);\n }\n\n t.add = function (t, e, r, i, n, a) {\n var s,\n o,\n l,\n h,\n u = [[], [], []],\n c = [[this.a, this.c, this.e], [this.b, this.d, this.f], [0, 0, 1]],\n f = [[t, r, n], [e, i, a], [0, 0, 1]];\n\n for (t && t instanceof Pt && (f = [[t.a, t.c, t.e], [t.b, t.d, t.f], [0, 0, 1]]), s = 0; s < 3; s++) {\n for (o = 0; o < 3; o++) {\n for (h = 0, l = 0; l < 3; l++) {\n h += c[s][l] * f[l][o];\n }\n\n u[s][o] = h;\n }\n }\n\n this.a = u[0][0], this.b = u[1][0], this.c = u[0][1], this.d = u[1][1], this.e = u[0][2], this.f = u[1][2];\n }, t.invert = function () {\n var t = this,\n e = t.a * t.d - t.b * t.c;\n return new Pt(t.d / e, -t.b / e, -t.c / e, t.a / e, (t.c * t.f - t.d * t.e) / e, (t.b * t.e - t.a * t.f) / e);\n }, t.clone = function () {\n return new Pt(this.a, this.b, this.c, this.d, this.e, this.f);\n }, t.translate = function (t, e) {\n this.add(1, 0, 0, 1, t, e);\n }, t.scale = function (t, e, r, i) {\n null == e && (e = t), (r || i) && this.add(1, 0, 0, 1, r, i), this.add(t, 0, 0, e, 0, 0), (r || i) && this.add(1, 0, 0, 1, -r, -i);\n }, t.rotate = function (t, r, i) {\n t = e.rad(t), r = r || 0, i = i || 0;\n var n = +_2.cos(t).toFixed(9),\n a = +_2.sin(t).toFixed(9);\n this.add(n, a, -a, n, r, i), this.add(1, 0, 0, 1, -r, -i);\n }, t.x = function (t, e) {\n return t * this.a + e * this.c + this.e;\n }, t.y = function (t, e) {\n return t * this.b + e * this.d + this.f;\n }, t.get = function (t) {\n return +this[x.fromCharCode(97 + t)].toFixed(4);\n }, t.toString = function () {\n return e.svg ? \"matrix(\" + [this.get(0), this.get(1), this.get(2), this.get(3), this.get(4), this.get(5)].join() + \")\" : [this.get(0), this.get(2), this.get(1), this.get(3), 0, 0].join();\n }, t.toFilter = function () {\n return \"progid:DXImageTransform.Microsoft.Matrix(M11=\" + this.get(0) + \", M12=\" + this.get(2) + \", M21=\" + this.get(1) + \", M22=\" + this.get(3) + \", Dx=\" + this.get(4) + \", Dy=\" + this.get(5) + \", sizingmethod='auto expand')\";\n }, t.offset = function () {\n return [this.e.toFixed(4), this.f.toFixed(4)];\n }, t.split = function () {\n var t = {};\n t.dx = this.e, t.dy = this.f;\n var n = [[this.a, this.c], [this.b, this.d]];\n t.scalex = _2.sqrt(r(n[0])), i(n[0]), t.shear = n[0][0] * n[1][0] + n[0][1] * n[1][1], n[1] = [n[1][0] - n[0][0] * t.shear, n[1][1] - n[0][1] * t.shear], t.scaley = _2.sqrt(r(n[1])), i(n[1]), t.shear /= t.scaley;\n var a = -n[0][1],\n s = n[1][1];\n return s < 0 ? (t.rotate = e.deg(_2.acos(s)), a < 0 && (t.rotate = 360 - t.rotate)) : t.rotate = e.deg(_2.asin(a)), t.isSimple = !(+t.shear.toFixed(9) || t.scalex.toFixed(9) != t.scaley.toFixed(9) && t.rotate), t.isSuperSimple = !+t.shear.toFixed(9) && t.scalex.toFixed(9) == t.scaley.toFixed(9) && !t.rotate, t.noRotation = !+t.shear.toFixed(9) && !t.rotate, t;\n }, t.toTransformString = function (t) {\n var e = t || this[v]();\n return e.isSimple ? (e.scalex = +e.scalex.toFixed(4), e.scaley = +e.scaley.toFixed(4), e.rotate = +e.rotate.toFixed(4), (e.dx || e.dy ? \"t\" + [e.dx, e.dy] : d) + (1 != e.scalex || 1 != e.scaley ? \"s\" + [e.scalex, e.scaley, 0, 0] : d) + (e.rotate ? \"r\" + [e.rotate, 0, 0] : d)) : \"m\" + [this.get(0), this.get(1), this.get(2), this.get(3), this.get(4), this.get(5)];\n };\n }(Pt.prototype);\n\n for (var zt = function zt() {\n this.returnValue = !1;\n }, Ft = function Ft() {\n return this.originalEvent.preventDefault();\n }, Rt = function Rt() {\n this.cancelBubble = !0;\n }, jt = function jt() {\n return this.originalEvent.stopPropagation();\n }, It = function It(t) {\n var e = l.doc.documentElement.scrollTop || l.doc.body.scrollTop,\n r = l.doc.documentElement.scrollLeft || l.doc.body.scrollLeft;\n return {\n x: t.clientX + r,\n y: t.clientY + e\n };\n }, Dt = l.doc.addEventListener ? function (t, e, r, i) {\n var n = function n(t) {\n var e = It(t);\n return r.call(i, t, e.x, e.y);\n };\n\n if (t.addEventListener(e, n, !1), p && m[e]) {\n var a = function a(e) {\n for (var n = It(e), a = e, s = 0, o = e.targetTouches && e.targetTouches.length; s < o; s++) {\n if (e.targetTouches[s].target == t) {\n (e = e.targetTouches[s]).originalEvent = a, e.preventDefault = Ft, e.stopPropagation = jt;\n break;\n }\n }\n\n return r.call(i, e, n.x, n.y);\n };\n\n t.addEventListener(m[e], a, !1);\n }\n\n return function () {\n return t.removeEventListener(e, n, !1), p && m[e] && t.removeEventListener(m[e], a, !1), !0;\n };\n } : l.doc.attachEvent ? function (t, e, r, i) {\n var n = function n(t) {\n t = t || l.win.event;\n var e = l.doc.documentElement.scrollTop || l.doc.body.scrollTop,\n n = l.doc.documentElement.scrollLeft || l.doc.body.scrollLeft,\n a = t.clientX + n,\n s = t.clientY + e;\n return t.preventDefault = t.preventDefault || zt, t.stopPropagation = t.stopPropagation || Rt, r.call(i, t, a, s);\n };\n\n return t.attachEvent(\"on\" + e, n), function () {\n return t.detachEvent(\"on\" + e, n), !0;\n };\n } : void 0, qt = [], Ot = function Ot(e) {\n for (var r, i = e.clientX, n = e.clientY, a = l.doc.documentElement.scrollTop || l.doc.body.scrollTop, s = l.doc.documentElement.scrollLeft || l.doc.body.scrollLeft, o = qt.length; o--;) {\n if (r = qt[o], p && e.touches) {\n for (var h, u = e.touches.length; u--;) {\n if ((h = e.touches[u]).identifier == r.el._drag.id) {\n i = h.clientX, n = h.clientY, (e.originalEvent ? e.originalEvent : e).preventDefault();\n break;\n }\n }\n } else e.preventDefault();\n\n var c,\n f = r.el.node,\n d = f.nextSibling,\n g = f.parentNode,\n x = f.style.display;\n l.win.opera && g.removeChild(f), f.style.display = \"none\", c = r.el.paper.getElementByPoint(i, n), f.style.display = x, l.win.opera && (d ? g.insertBefore(f, d) : g.appendChild(f)), c && t(\"raphael.drag.over.\" + r.el.id, r.el, c), i += s, n += a, t(\"raphael.drag.move.\" + r.el.id, r.move_scope || r.el, i - r.el._drag.x, n - r.el._drag.y, i, n, e);\n }\n }, Vt = function Vt(r) {\n e.unmousemove(Ot).unmouseup(Vt);\n\n for (var i, n = qt.length; n--;) {\n (i = qt[n]).el._drag = {}, t(\"raphael.drag.end.\" + i.el.id, i.end_scope || i.start_scope || i.move_scope || i.el, r);\n }\n\n qt = [];\n }, Wt = e.el = {}, Yt = y.length; Yt--;) {\n !function (t) {\n e[t] = Wt[t] = function (r, i) {\n return e.is(r, \"function\") && (this.events = this.events || [], this.events.push({\n name: t,\n f: r,\n unbind: Dt(this.shape || this.node || l.doc, t, r, i || this)\n })), this;\n }, e[\"un\" + t] = Wt[\"un\" + t] = function (r) {\n for (var i = this.events || [], n = i.length; n--;) {\n i[n].name != t || !e.is(r, \"undefined\") && i[n].f != r || (i[n].unbind(), i.splice(n, 1), !i.length && delete this.events);\n }\n\n return this;\n };\n }(y[Yt]);\n }\n\n Wt.data = function (r, i) {\n var n = G[this.id] = G[this.id] || {};\n if (0 == arguments.length) return n;\n\n if (1 == arguments.length) {\n if (e.is(r, \"object\")) {\n for (var a in r) {\n r[o](a) && this.data(a, r[a]);\n }\n\n return this;\n }\n\n return t(\"raphael.data.get.\" + this.id, this, n[r], r), n[r];\n }\n\n return n[r] = i, t(\"raphael.data.set.\" + this.id, this, i, r), this;\n }, Wt.removeData = function (t) {\n return null == t ? delete G[this.id] : G[this.id] && delete G[this.id][t], this;\n }, Wt.getData = function () {\n return tt(G[this.id] || {});\n }, Wt.hover = function (t, e, r, i) {\n return this.mouseover(t, r).mouseout(e, i || r);\n }, Wt.unhover = function (t, e) {\n return this.unmouseover(t).unmouseout(e);\n };\n var Gt = [];\n Wt.drag = function (r, i, n, a, s, o) {\n function h(h) {\n (h.originalEvent || h).preventDefault();\n var u = h.clientX,\n c = h.clientY,\n f = l.doc.documentElement.scrollTop || l.doc.body.scrollTop,\n d = l.doc.documentElement.scrollLeft || l.doc.body.scrollLeft;\n if (this._drag.id = h.identifier, p && h.touches) for (var g, x = h.touches.length; x--;) {\n if (g = h.touches[x], this._drag.id = g.identifier, g.identifier == this._drag.id) {\n u = g.clientX, c = g.clientY;\n break;\n }\n }\n this._drag.x = u + d, this._drag.y = c + f, !qt.length && e.mousemove(Ot).mouseup(Vt), qt.push({\n el: this,\n move_scope: a,\n start_scope: s,\n end_scope: o\n }), i && t.on(\"raphael.drag.start.\" + this.id, i), r && t.on(\"raphael.drag.move.\" + this.id, r), n && t.on(\"raphael.drag.end.\" + this.id, n), t(\"raphael.drag.start.\" + this.id, s || a || this, this._drag.x, this._drag.y, h);\n }\n\n return this._drag = {}, Gt.push({\n el: this,\n start: h\n }), this.mousedown(h), this;\n }, Wt.onDragOver = function (e) {\n e ? t.on(\"raphael.drag.over.\" + this.id, e) : t.unbind(\"raphael.drag.over.\" + this.id);\n }, Wt.undrag = function () {\n for (var r = Gt.length; r--;) {\n Gt[r].el == this && (this.unmousedown(Gt[r].start), Gt.splice(r, 1), t.unbind(\"raphael.drag.*.\" + this.id));\n }\n\n !Gt.length && e.unmousemove(Ot).unmouseup(Vt), qt = [];\n }, i.circle = function (t, r, i) {\n var n = e._engine.circle(this, t || 0, r || 0, i || 0);\n\n return this.__set__ && this.__set__.push(n), n;\n }, i.rect = function (t, r, i, n, a) {\n var s = e._engine.rect(this, t || 0, r || 0, i || 0, n || 0, a || 0);\n\n return this.__set__ && this.__set__.push(s), s;\n }, i.ellipse = function (t, r, i, n) {\n var a = e._engine.ellipse(this, t || 0, r || 0, i || 0, n || 0);\n\n return this.__set__ && this.__set__.push(a), a;\n }, i.path = function (t) {\n t && !e.is(t, \"string\") && !e.is(t[0], A) && (t += d);\n\n var r = e._engine.path(e.format[c](e, arguments), this);\n\n return this.__set__ && this.__set__.push(r), r;\n }, i.image = function (t, r, i, n, a) {\n var s = e._engine.image(this, t || \"about:blank\", r || 0, i || 0, n || 0, a || 0);\n\n return this.__set__ && this.__set__.push(s), s;\n }, i.text = function (t, r, i) {\n var n = e._engine.text(this, t || 0, r || 0, x(i));\n\n return this.__set__ && this.__set__.push(n), n;\n }, i.set = function (t) {\n !e.is(t, \"array\") && (t = Array.prototype.splice.call(arguments, 0, arguments.length));\n var r = new ce(t);\n return this.__set__ && this.__set__.push(r), r.paper = this, r.type = \"set\", r;\n }, i.setStart = function (t) {\n this.__set__ = t || this.set();\n }, i.setFinish = function (t) {\n var e = this.__set__;\n return delete this.__set__, e;\n }, i.getSize = function () {\n var t = this.canvas.parentNode;\n return {\n width: t.offsetWidth,\n height: t.offsetHeight\n };\n }, i.setSize = function (t, r) {\n return e._engine.setSize.call(this, t, r);\n }, i.setViewBox = function (t, r, i, n, a) {\n return e._engine.setViewBox.call(this, t, r, i, n, a);\n }, i.top = i.bottom = null, i.raphael = e;\n\n function Ht() {\n return this.x + g + this.y + g + this.width + \" × \" + this.height;\n }\n\n i.getElementByPoint = function (t, e) {\n var r,\n i,\n n,\n a,\n s,\n o,\n h,\n u = this.canvas,\n c = l.doc.elementFromPoint(t, e);\n\n if (l.win.opera && \"svg\" == c.tagName) {\n var f = (i = (r = u).getBoundingClientRect(), n = r.ownerDocument, a = n.body, s = n.documentElement, o = s.clientTop || a.clientTop || 0, h = s.clientLeft || a.clientLeft || 0, {\n y: i.top + (l.win.pageYOffset || s.scrollTop || a.scrollTop) - o,\n x: i.left + (l.win.pageXOffset || s.scrollLeft || a.scrollLeft) - h\n }),\n p = u.createSVGRect();\n p.x = t - f.x, p.y = e - f.y, p.width = p.height = 1;\n var d = u.getIntersectionList(p, null);\n d.length && (c = d[d.length - 1]);\n }\n\n if (!c) return null;\n\n for (; c.parentNode && c != u.parentNode && !c.raphael;) {\n c = c.parentNode;\n }\n\n return c == this.canvas.parentNode && (c = u), c = c && c.raphael ? this.getById(c.raphaelid) : null;\n }, i.getElementsByBBox = function (t) {\n var r = this.set();\n return this.forEach(function (i) {\n e.isBBoxIntersect(i.getBBox(), t) && r.push(i);\n }), r;\n }, i.getById = function (t) {\n for (var e = this.bottom; e;) {\n if (e.id == t) return e;\n e = e.next;\n }\n\n return null;\n }, i.forEach = function (t, e) {\n for (var r = this.bottom; r;) {\n if (!1 === t.call(e, r)) return this;\n r = r.next;\n }\n\n return this;\n }, i.getElementsByPoint = function (t, e) {\n var r = this.set();\n return this.forEach(function (i) {\n i.isPointInside(t, e) && r.push(i);\n }), r;\n }, Wt.isPointInside = function (t, r) {\n var i = this.realPath = Z[this.type](this);\n return this.attr(\"transform\") && this.attr(\"transform\").length && (i = e.transformPath(i, this.attr(\"transform\"))), e.isPointInsidePath(i, t, r);\n }, Wt.getBBox = function (t) {\n if (this.removed) return {};\n var e = this._;\n return t ? (!e.dirty && e.bboxwt || (this.realPath = Z[this.type](this), e.bboxwt = yt(this.realPath), e.bboxwt.toString = Ht, e.dirty = 0), e.bboxwt) : ((e.dirty || e.dirtyT || !e.bbox) && (!e.dirty && this.realPath || (e.bboxwt = 0, this.realPath = Z[this.type](this)), e.bbox = yt(Q(this.realPath, this.matrix)), e.bbox.toString = Ht, e.dirty = e.dirtyT = 0), e.bbox);\n }, Wt.clone = function () {\n if (this.removed) return null;\n var t = this.paper[this.type]().attr(this.attr());\n return this.__set__ && this.__set__.push(t), t;\n }, Wt.glow = function (t) {\n if (\"text\" == this.type) return null;\n var e = {\n width: ((t = t || {}).width || 10) + (+this.attr(\"stroke-width\") || 1),\n fill: t.fill || !1,\n opacity: null == t.opacity ? .5 : t.opacity,\n offsetx: t.offsetx || 0,\n offsety: t.offsety || 0,\n color: t.color || \"#000\"\n },\n r = e.width / 2,\n i = this.paper,\n n = i.set(),\n a = this.realPath || Z[this.type](this);\n a = this.matrix ? Q(a, this.matrix) : a;\n\n for (var s = 1; s < r + 1; s++) {\n n.push(i.path(a).attr({\n stroke: e.color,\n fill: e.fill ? e.color : \"none\",\n \"stroke-linejoin\": \"round\",\n \"stroke-linecap\": \"round\",\n \"stroke-width\": +(e.width / r * s).toFixed(3),\n opacity: +(e.opacity / r).toFixed(3)\n }));\n }\n\n return n.insertBefore(this).translate(e.offsetx, e.offsety);\n };\n\n var Xt = function Xt(t, r, i, n, a, s, o, l, h) {\n return null == h ? dt(t, r, i, n, a, s, o, l) : e.findDotsAtSegment(t, r, i, n, a, s, o, l, function (t, e, r, i, n, a, s, o, l) {\n if (!(l < 0 || dt(t, e, r, i, n, a, s, o) < l)) {\n var h,\n u = .5,\n c = 1 - u;\n\n for (h = dt(t, e, r, i, n, a, s, o, c); B(h - l) > .01;) {\n h = dt(t, e, r, i, n, a, s, o, c += (h < l ? 1 : -1) * (u /= 2));\n }\n\n return c;\n }\n }(t, r, i, n, a, s, o, l, h));\n },\n Ut = function Ut(t, r) {\n return function (i, n, a) {\n for (var s, o, l, h, u, c = \"\", f = {}, p = 0, d = 0, g = (i = Tt(i)).length; d < g; d++) {\n if (\"M\" == (l = i[d])[0]) s = +l[1], o = +l[2];else {\n if (p + (h = Xt(s, o, l[1], l[2], l[3], l[4], l[5], l[6])) > n) {\n if (r && !f.start) {\n if (c += [\"C\" + (u = Xt(s, o, l[1], l[2], l[3], l[4], l[5], l[6], n - p)).start.x, u.start.y, u.m.x, u.m.y, u.x, u.y], a) return c;\n f.start = c, c = [\"M\" + u.x, u.y + \"C\" + u.n.x, u.n.y, u.end.x, u.end.y, l[5], l[6]].join(), p += h, s = +l[5], o = +l[6];\n continue;\n }\n\n if (!t && !r) return {\n x: (u = Xt(s, o, l[1], l[2], l[3], l[4], l[5], l[6], n - p)).x,\n y: u.y,\n alpha: u.alpha\n };\n }\n\n p += h, s = +l[5], o = +l[6];\n }\n c += l.shift() + l;\n }\n\n return f.end = c, (u = t ? p : r ? f : e.findDotsAtSegment(s, o, l[0], l[1], l[2], l[3], l[4], l[5], 1)).alpha && (u = {\n x: u.x,\n y: u.y,\n alpha: u.alpha\n }), u;\n };\n },\n $t = Ut(1),\n Zt = Ut(),\n Qt = Ut(0, 1);\n\n e.getTotalLength = $t, e.getPointAtLength = Zt, e.getSubpath = function (t, e, r) {\n if (this.getTotalLength(t) - r < 1e-6) return Qt(t, e).end;\n var i = Qt(t, r, 1);\n return e ? Qt(i, e).end : i;\n }, Wt.getTotalLength = function () {\n var t = this.getPath();\n if (t) return this.node.getTotalLength ? this.node.getTotalLength() : $t(t);\n }, Wt.getPointAtLength = function (t) {\n var e = this.getPath();\n if (e) return Zt(e, t);\n }, Wt.getPath = function () {\n var t,\n r = e._getPath[this.type];\n if (\"text\" != this.type && \"set\" != this.type) return r && (t = r(this)), t;\n }, Wt.getSubpath = function (t, r) {\n var i = this.getPath();\n if (i) return e.getSubpath(i, t, r);\n };\n var Jt = e.easing_formulas = {\n linear: function linear(t) {\n return t;\n },\n \"<\": function _(t) {\n return C(t, 1.7);\n },\n \">\": function _(t) {\n return C(t, .48);\n },\n \"<>\": function _(t) {\n var e = .48 - t / 1.04,\n r = _2.sqrt(.1734 + e * e),\n i = r - e,\n n = -r - e,\n a = C(B(i), 1 / 3) * (i < 0 ? -1 : 1) + C(B(n), 1 / 3) * (n < 0 ? -1 : 1) + .5;\n\n return 3 * (1 - a) * a * a + a * a * a;\n },\n backIn: function backIn(t) {\n var e = 1.70158;\n return t * t * ((e + 1) * t - e);\n },\n backOut: function backOut(t) {\n var e = 1.70158;\n return (t -= 1) * t * ((e + 1) * t + e) + 1;\n },\n elastic: function elastic(t) {\n return t == !!t ? t : C(2, -10 * t) * _2.sin(2 * S * (t - .075) / .3) + 1;\n },\n bounce: function bounce(t) {\n var e = 7.5625,\n r = 2.75;\n return t < 1 / r ? e * t * t : t < 2 / r ? e * (t -= 1.5 / r) * t + .75 : t < 2.5 / r ? e * (t -= 2.25 / r) * t + .9375 : e * (t -= 2.625 / r) * t + .984375;\n }\n };\n Jt.easeIn = Jt[\"ease-in\"] = Jt[\"<\"], Jt.easeOut = Jt[\"ease-out\"] = Jt[\">\"], Jt.easeInOut = Jt[\"ease-in-out\"] = Jt[\"<>\"], Jt[\"back-in\"] = Jt.backIn, Jt[\"back-out\"] = Jt.backOut;\n\n var Kt = [],\n te = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (t) {\n setTimeout(t, 16);\n },\n ee = function ee() {\n for (var r = +new Date(), i = 0; i < Kt.length; i++) {\n var n = Kt[i];\n\n if (!n.el.removed && !n.paused) {\n var a,\n s,\n l = r - n.start,\n h = n.ms,\n u = n.easing,\n c = n.from,\n p = n.diff,\n d = n.to,\n x = (n.t, n.el),\n v = {},\n y = {};\n if (n.initstatus ? (l = (n.initstatus * n.anim.top - n.prev) / (n.percent - n.prev) * h, n.status = n.initstatus, delete n.initstatus, n.stop && Kt.splice(i--, 1)) : n.status = (n.prev + (n.percent - n.prev) * (l / h)) / n.anim.top, !(l < 0)) if (l < h) {\n var m = u(l / h);\n\n for (var b in c) {\n if (c[o](b)) {\n switch (I[b]) {\n case T:\n a = +c[b] + m * h * p[b];\n break;\n\n case \"colour\":\n a = \"rgb(\" + [re(P(c[b].r + m * h * p[b].r)), re(P(c[b].g + m * h * p[b].g)), re(P(c[b].b + m * h * p[b].b))].join(\",\") + \")\";\n break;\n\n case \"path\":\n a = [];\n\n for (var _ = 0, w = c[b].length; _ < w; _++) {\n a[_] = [c[b][_][0]];\n\n for (var k = 1, B = c[b][_].length; k < B; k++) {\n a[_][k] = +c[b][_][k] + m * h * p[b][_][k];\n }\n\n a[_] = a[_].join(g);\n }\n\n a = a.join(g);\n break;\n\n case \"transform\":\n if (p[b].real) for (a = [], _ = 0, w = c[b].length; _ < w; _++) {\n for (a[_] = [c[b][_][0]], k = 1, B = c[b][_].length; k < B; k++) {\n a[_][k] = c[b][_][k] + m * h * p[b][_][k];\n }\n } else {\n var C = function C(t) {\n return +c[b][t] + m * h * p[b][t];\n };\n\n a = [[\"m\", C(0), C(1), C(2), C(3), C(4), C(5)]];\n }\n break;\n\n case \"csv\":\n if (\"clip-rect\" == b) for (a = [], _ = 4; _--;) {\n a[_] = +c[b][_] + m * h * p[b][_];\n }\n break;\n\n default:\n var S = [][f](c[b]);\n\n for (a = [], _ = x.paper.customAttributes[b].length; _--;) {\n a[_] = +S[_] + m * h * p[b][_];\n }\n\n }\n\n v[b] = a;\n }\n }\n\n x.attr(v), function (e, r, i) {\n setTimeout(function () {\n t(\"raphael.anim.frame.\" + e, r, i);\n });\n }(x.id, x, n.anim);\n } else {\n if (function (r, i, n) {\n setTimeout(function () {\n t(\"raphael.anim.frame.\" + i.id, i, n), t(\"raphael.anim.finish.\" + i.id, i, n), e.is(r, \"function\") && r.call(i);\n });\n }(n.callback, x, n.anim), x.attr(d), Kt.splice(i--, 1), n.repeat > 1 && !n.next) {\n for (s in d) {\n d[o](s) && (y[s] = n.totalOrigin[s]);\n }\n\n n.el.attr(y), ae(n.anim, n.el, n.anim.percents[0], null, n.totalOrigin, n.repeat - 1);\n }\n\n n.next && !n.stop && ae(n.anim, n.el, n.next, null, n.totalOrigin, n.repeat);\n }\n }\n }\n\n Kt.length && te(ee);\n },\n re = function re(t) {\n return t > 255 ? 255 : t < 0 ? 0 : t;\n };\n\n function ie(t, e, r, i, n, a) {\n var s = 3 * e,\n o = 3 * (i - e) - s,\n l = 1 - s - o,\n h = 3 * r,\n u = 3 * (n - r) - h,\n c = 1 - h - u;\n\n function f(t) {\n return ((l * t + o) * t + s) * t;\n }\n\n return function (t, e) {\n var r = function (t, e) {\n var r, i, n, a, h, u;\n\n for (n = t, u = 0; u < 8; u++) {\n if (a = f(n) - t, B(a) < e) return n;\n if (B(h = (3 * l * n + 2 * o) * n + s) < 1e-6) break;\n n -= a / h;\n }\n\n if (i = 1, (n = t) < (r = 0)) return r;\n if (n > i) return i;\n\n for (; r < i;) {\n if (a = f(n), B(a - t) < e) return n;\n t > a ? r = n : i = n, n = (i - r) / 2 + r;\n }\n\n return n;\n }(t, e);\n\n return ((c * r + u) * r + h) * r;\n }(t, 1 / (200 * a));\n }\n\n function ne(t, e) {\n var r = [],\n i = {};\n\n if (this.ms = e, this.times = 1, t) {\n for (var n in t) {\n t[o](n) && (i[z(n)] = t[n], r.push(z(n)));\n }\n\n r.sort(H);\n }\n\n this.anim = i, this.top = r[r.length - 1], this.percents = r;\n }\n\n function ae(r, i, a, s, l, h) {\n a = z(a);\n var u,\n c,\n p,\n d,\n g,\n y,\n m = r.ms,\n b = {},\n _ = {},\n w = {};\n if (s) for (B = 0, C = Kt.length; B < C; B++) {\n var k = Kt[B];\n\n if (k.el.id == i.id && k.anim == r) {\n k.percent != a ? (Kt.splice(B, 1), p = 1) : c = k, i.attr(k.totalOrigin);\n break;\n }\n } else s = +_;\n\n for (var B = 0, C = r.percents.length; B < C; B++) {\n if (r.percents[B] == a || r.percents[B] > s * r.top) {\n a = r.percents[B], g = r.percents[B - 1] || 0, m = m / r.top * (a - g), d = r.percents[B + 1], u = r.anim[a];\n break;\n }\n\n s && i.attr(r.anim[r.percents[B]]);\n }\n\n if (u) {\n if (c) c.initstatus = s, c.start = new Date() - c.ms * s;else {\n for (var S in u) {\n if (u[o](S) && (I[o](S) || i.paper.customAttributes[o](S))) switch (b[S] = i.attr(S), null == b[S] && (b[S] = j[S]), _[S] = u[S], I[S]) {\n case T:\n w[S] = (_[S] - b[S]) / m;\n break;\n\n case \"colour\":\n b[S] = e.getRGB(b[S]);\n var A = e.getRGB(_[S]);\n w[S] = {\n r: (A.r - b[S].r) / m,\n g: (A.g - b[S].g) / m,\n b: (A.b - b[S].b) / m\n };\n break;\n\n case \"path\":\n var M = Tt(b[S], _[S]),\n E = M[1];\n\n for (b[S] = M[0], w[S] = [], B = 0, C = b[S].length; B < C; B++) {\n w[S][B] = [0];\n\n for (var N = 1, P = b[S][B].length; N < P; N++) {\n w[S][B][N] = (E[B][N] - b[S][B][N]) / m;\n }\n }\n\n break;\n\n case \"transform\":\n var F = i._,\n R = Lt(F[S], _[S]);\n if (R) for (b[S] = R.from, _[S] = R.to, w[S] = [], w[S].real = !0, B = 0, C = b[S].length; B < C; B++) {\n for (w[S][B] = [b[S][B][0]], N = 1, P = b[S][B].length; N < P; N++) {\n w[S][B][N] = (_[S][B][N] - b[S][B][N]) / m;\n }\n } else {\n var D = i.matrix || new Pt(),\n q = {\n _: {\n transform: F.transform\n },\n getBBox: function getBBox() {\n return i.getBBox(1);\n }\n };\n b[S] = [D.a, D.b, D.c, D.d, D.e, D.f], Et(q, _[S]), _[S] = q._.transform, w[S] = [(q.matrix.a - D.a) / m, (q.matrix.b - D.b) / m, (q.matrix.c - D.c) / m, (q.matrix.d - D.d) / m, (q.matrix.e - D.e) / m, (q.matrix.f - D.f) / m];\n }\n break;\n\n case \"csv\":\n var O = x(u[S])[v](n),\n V = x(b[S])[v](n);\n if (\"clip-rect\" == S) for (b[S] = V, w[S] = [], B = V.length; B--;) {\n w[S][B] = (O[B] - b[S][B]) / m;\n }\n _[S] = O;\n break;\n\n default:\n for (O = [][f](u[S]), V = [][f](b[S]), w[S] = [], B = i.paper.customAttributes[S].length; B--;) {\n w[S][B] = ((O[B] || 0) - (V[B] || 0)) / m;\n }\n\n }\n }\n\n var W = u.easing,\n Y = e.easing_formulas[W];\n if (!Y) if ((Y = x(W).match(L)) && 5 == Y.length) {\n var G = Y;\n\n Y = function Y(t) {\n return ie(t, +G[1], +G[2], +G[3], +G[4], m);\n };\n } else Y = X;\n if (k = {\n anim: r,\n percent: a,\n timestamp: y = u.start || r.start || +new Date(),\n start: y + (r.del || 0),\n status: 0,\n initstatus: s || 0,\n stop: !1,\n ms: m,\n easing: Y,\n from: b,\n diff: w,\n to: _,\n el: i,\n callback: u.callback,\n prev: g,\n next: d,\n repeat: h || r.times,\n origin: i.attr(),\n totalOrigin: l\n }, Kt.push(k), s && !c && !p && (k.stop = !0, k.start = new Date() - m * s, 1 == Kt.length)) return ee();\n p && (k.start = new Date() - k.ms * s), 1 == Kt.length && te(ee);\n }\n t(\"raphael.anim.start.\" + i.id, i, r);\n }\n }\n\n function se(t) {\n for (var e = 0; e < Kt.length; e++) {\n Kt[e].el.paper == t && Kt.splice(e--, 1);\n }\n }\n\n Wt.animateWith = function (t, r, i, n, a, s) {\n if (this.removed) return s && s.call(this), this;\n var o = i instanceof ne ? i : e.animation(i, n, a, s);\n ae(o, this, o.percents[0], null, this.attr());\n\n for (var l = 0, h = Kt.length; l < h; l++) {\n if (Kt[l].anim == r && Kt[l].el == t) {\n Kt[h - 1].start = Kt[l].start;\n break;\n }\n }\n\n return this;\n }, Wt.onAnimation = function (e) {\n return e ? t.on(\"raphael.anim.frame.\" + this.id, e) : t.unbind(\"raphael.anim.frame.\" + this.id), this;\n }, ne.prototype.delay = function (t) {\n var e = new ne(this.anim, this.ms);\n return e.times = this.times, e.del = +t || 0, e;\n }, ne.prototype.repeat = function (t) {\n var e = new ne(this.anim, this.ms);\n return e.del = this.del, e.times = _2.floor(w(t, 0)) || 1, e;\n }, e.animation = function (t, r, i, n) {\n if (t instanceof ne) return t;\n !e.is(i, \"function\") && i || (n = n || i || null, i = null), t = Object(t), r = +r || 0;\n var a,\n s,\n l = {};\n\n for (s in t) {\n t[o](s) && z(s) != s && z(s) + \"%\" != s && (a = !0, l[s] = t[s]);\n }\n\n if (a) return i && (l.easing = i), n && (l.callback = n), new ne({\n 100: l\n }, r);\n\n if (n) {\n var h = 0;\n\n for (var u in t) {\n var c = F(u);\n t[o](u) && c > h && (h = c);\n }\n\n !t[h += \"%\"].callback && (t[h].callback = n);\n }\n\n return new ne(t, r);\n }, Wt.animate = function (t, r, i, n) {\n if (this.removed) return n && n.call(this), this;\n var a = t instanceof ne ? t : e.animation(t, r, i, n);\n return ae(a, this, a.percents[0], null, this.attr()), this;\n }, Wt.setTime = function (t, e) {\n return t && null != e && this.status(t, k(e, t.ms) / t.ms), this;\n }, Wt.status = function (t, e) {\n var r,\n i,\n n = [],\n a = 0;\n if (null != e) return ae(t, this, -1, k(e, 1)), this;\n\n for (r = Kt.length; a < r; a++) {\n if ((i = Kt[a]).el.id == this.id && (!t || i.anim == t)) {\n if (t) return i.status;\n n.push({\n anim: i.anim,\n status: i.status\n });\n }\n }\n\n return t ? 0 : n;\n }, Wt.pause = function (e) {\n for (var r = 0; r < Kt.length; r++) {\n Kt[r].el.id != this.id || e && Kt[r].anim != e || !1 !== t(\"raphael.anim.pause.\" + this.id, this, Kt[r].anim) && (Kt[r].paused = !0);\n }\n\n return this;\n }, Wt.resume = function (e) {\n for (var r = 0; r < Kt.length; r++) {\n if (Kt[r].el.id == this.id && (!e || Kt[r].anim == e)) {\n var i = Kt[r];\n !1 !== t(\"raphael.anim.resume.\" + this.id, this, i.anim) && (delete i.paused, this.status(i.anim, i.status));\n }\n }\n\n return this;\n }, Wt.stop = function (e) {\n for (var r = 0; r < Kt.length; r++) {\n Kt[r].el.id != this.id || e && Kt[r].anim != e || !1 !== t(\"raphael.anim.stop.\" + this.id, this, Kt[r].anim) && Kt.splice(r--, 1);\n }\n\n return this;\n }, t.on(\"raphael.remove\", se), t.on(\"raphael.clear\", se), Wt.toString = function () {\n return \"Raphaël’s object\";\n };\n\n var oe,\n le,\n he,\n _ue,\n ce = function ce(t) {\n if (this.items = [], this.length = 0, this.type = \"set\", t) for (var e = 0, r = t.length; e < r; e++) {\n !t[e] || t[e].constructor != Wt.constructor && t[e].constructor != ce || (this[this.items.length] = this.items[this.items.length] = t[e], this.length++);\n }\n },\n fe = ce.prototype;\n\n for (var pe in fe.push = function () {\n for (var t, e, r = 0, i = arguments.length; r < i; r++) {\n !(t = arguments[r]) || t.constructor != Wt.constructor && t.constructor != ce || (this[e = this.items.length] = this.items[e] = t, this.length++);\n }\n\n return this;\n }, fe.pop = function () {\n return this.length && delete this[this.length--], this.items.pop();\n }, fe.forEach = function (t, e) {\n for (var r = 0, i = this.items.length; r < i; r++) {\n if (!1 === t.call(e, this.items[r], r)) return this;\n }\n\n return this;\n }, Wt) {\n Wt[o](pe) && (fe[pe] = function (t) {\n return function () {\n var e = arguments;\n return this.forEach(function (r) {\n r[t][c](r, e);\n });\n };\n }(pe));\n }\n\n return fe.attr = function (t, r) {\n if (t && e.is(t, A) && e.is(t[0], \"object\")) for (var i = 0, n = t.length; i < n; i++) {\n this.items[i].attr(t[i]);\n } else for (var a = 0, s = this.items.length; a < s; a++) {\n this.items[a].attr(t, r);\n }\n return this;\n }, fe.clear = function () {\n for (; this.length;) {\n this.pop();\n }\n }, fe.splice = function (t, e, r) {\n t = t < 0 ? w(this.length + t, 0) : t, e = w(0, k(this.length - t, e));\n var i,\n n = [],\n a = [],\n s = [];\n\n for (i = 2; i < arguments.length; i++) {\n s.push(arguments[i]);\n }\n\n for (i = 0; i < e; i++) {\n a.push(this[t + i]);\n }\n\n for (; i < this.length - t; i++) {\n n.push(this[t + i]);\n }\n\n var o = s.length;\n\n for (i = 0; i < o + n.length; i++) {\n this.items[t + i] = this[t + i] = i < o ? s[i] : n[i - o];\n }\n\n for (i = this.items.length = this.length -= e - o; this[i];) {\n delete this[i++];\n }\n\n return new ce(a);\n }, fe.exclude = function (t) {\n for (var e = 0, r = this.length; e < r; e++) {\n if (this[e] == t) return this.splice(e, 1), !0;\n }\n }, fe.animate = function (t, r, i, n) {\n (e.is(i, \"function\") || !i) && (n = i || null);\n var a,\n s,\n o = this.items.length,\n l = o,\n h = this;\n if (!o) return this;\n n && (s = function s() {\n ! --o && n.call(h);\n }), i = e.is(i, \"string\") ? i : s;\n var u = e.animation(t, r, i, s);\n\n for (a = this.items[--l].animate(u); l--;) {\n this.items[l] && !this.items[l].removed && this.items[l].animateWith(a, u, u), this.items[l] && !this.items[l].removed || o--;\n }\n\n return this;\n }, fe.insertAfter = function (t) {\n for (var e = this.items.length; e--;) {\n this.items[e].insertAfter(t);\n }\n\n return this;\n }, fe.getBBox = function () {\n for (var t = [], e = [], r = [], i = [], n = this.items.length; n--;) {\n if (!this.items[n].removed) {\n var a = this.items[n].getBBox();\n t.push(a.x), e.push(a.y), r.push(a.x + a.width), i.push(a.y + a.height);\n }\n }\n\n return {\n x: t = k[c](0, t),\n y: e = k[c](0, e),\n x2: r = w[c](0, r),\n y2: i = w[c](0, i),\n width: r - t,\n height: i - e\n };\n }, fe.clone = function (t) {\n t = this.paper.set();\n\n for (var e = 0, r = this.items.length; e < r; e++) {\n t.push(this.items[e].clone());\n }\n\n return t;\n }, fe.toString = function () {\n return \"Raphaël‘s set\";\n }, fe.glow = function (t) {\n var e = this.paper.set();\n return this.forEach(function (r, i) {\n var n = r.glow(t);\n null != n && n.forEach(function (t, r) {\n e.push(t);\n });\n }), e;\n }, fe.isPointInside = function (t, e) {\n var r = !1;\n return this.forEach(function (i) {\n if (i.isPointInside(t, e)) return r = !0, !1;\n }), r;\n }, e.registerFont = function (t) {\n if (!t.face) return t;\n this.fonts = this.fonts || {};\n var e = {\n w: t.w,\n face: {},\n glyphs: {}\n },\n r = t.face[\"font-family\"];\n\n for (var i in t.face) {\n t.face[o](i) && (e.face[i] = t.face[i]);\n }\n\n if (this.fonts[r] ? this.fonts[r].push(e) : this.fonts[r] = [e], !t.svg) for (var n in e.face[\"units-per-em\"] = F(t.face[\"units-per-em\"], 10), t.glyphs) {\n if (t.glyphs[o](n)) {\n var a = t.glyphs[n];\n if (e.glyphs[n] = {\n w: a.w,\n k: {},\n d: a.d && \"M\" + a.d.replace(/[mlcxtrv]/g, function (t) {\n return {\n l: \"L\",\n c: \"C\",\n x: \"z\",\n t: \"m\",\n r: \"l\",\n v: \"c\"\n }[t] || \"M\";\n }) + \"z\"\n }, a.k) for (var s in a.k) {\n a[o](s) && (e.glyphs[n].k[s] = a.k[s]);\n }\n }\n }\n return t;\n }, i.getFont = function (t, r, i, n) {\n if (n = n || \"normal\", i = i || \"normal\", r = +r || {\n normal: 400,\n bold: 700,\n lighter: 300,\n bolder: 800\n }[r] || 400, e.fonts) {\n var a,\n s = e.fonts[t];\n\n if (!s) {\n var l = new RegExp(\"(^|\\\\s)\" + t.replace(/[^\\w\\d\\s+!~.:_-]/g, d) + \"(\\\\s|$)\", \"i\");\n\n for (var h in e.fonts) {\n if (e.fonts[o](h) && l.test(h)) {\n s = e.fonts[h];\n break;\n }\n }\n }\n\n if (s) for (var u = 0, c = s.length; u < c && ((a = s[u]).face[\"font-weight\"] != r || a.face[\"font-style\"] != i && a.face[\"font-style\"] || a.face[\"font-stretch\"] != n); u++) {\n ;\n }\n return a;\n }\n }, i.print = function (t, r, i, a, s, o, l, h) {\n o = o || \"middle\", l = w(k(l || 0, 1), -1), h = w(k(h || 1, 3), 1);\n var u,\n c = x(i)[v](d),\n f = 0,\n p = 0,\n g = d;\n\n if (e.is(a, \"string\") && (a = this.getFont(a)), a) {\n u = (s || 16) / a.face[\"units-per-em\"];\n\n for (var y = a.face.bbox[v](n), m = +y[0], b = y[3] - y[1], _ = 0, B = +y[1] + (\"baseline\" == o ? b + +a.face.descent : b / 2), C = 0, S = c.length; C < S; C++) {\n if (\"\\n\" == c[C]) f = 0, A = 0, p = 0, _ += b * h;else {\n var T = p && a.glyphs[c[C - 1]] || {},\n A = a.glyphs[c[C]];\n f += p ? (T.w || a.w) + (T.k && T.k[c[C]] || 0) + a.w * l : 0, p = 1;\n }\n A && A.d && (g += e.transformPath(A.d, [\"t\", f * u, _ * u, \"s\", u, u, m, B, \"t\", (t - m) / u, (r - B) / u]));\n }\n }\n\n return this.path(g).attr({\n fill: \"#000\",\n stroke: \"none\"\n });\n }, i.add = function (t) {\n if (e.is(t, \"array\")) for (var r, i = this.set(), n = 0, s = t.length; n < s; n++) {\n r = t[n] || {}, a[o](r.type) && i.push(this[r.type]().attr(r));\n }\n return i;\n }, e.format = function (t, r) {\n var i = e.is(r, A) ? [0][f](r) : arguments;\n return t && e.is(t, \"string\") && i.length - 1 && (t = t.replace(s, function (t, e) {\n return null == i[++e] ? d : i[e];\n })), t || d;\n }, e.fullfill = (oe = /\\{([^\\}]+)\\}/g, le = /(?:(?:^|\\.)(.+?)(?=\\[|\\.|$|\\()|\\[('|\")(.+?)\\2\\])(\\(\\))?/g, function (t, e) {\n return String(t).replace(oe, function (t, r) {\n return function (t, e, r) {\n var i = r;\n return e.replace(le, function (t, e, r, n, a) {\n e = e || n, i && (e in i && (i = i[e]), \"function\" == typeof i && a && (i = i()));\n }), i = (null == i || i == r ? t : i) + \"\";\n }(t, r, e);\n });\n }), e.ninja = function () {\n if (h.was) l.win.Raphael = h.is;else {\n window.Raphael = void 0;\n\n try {\n delete window.Raphael;\n } catch (t) {}\n }\n return e;\n }, e.st = fe, t.on(\"raphael.DOMload\", function () {\n r = !0;\n }), null == (he = document).readyState && he.addEventListener && (he.addEventListener(\"DOMContentLoaded\", _ue = function ue() {\n he.removeEventListener(\"DOMContentLoaded\", _ue, !1), he.readyState = \"complete\";\n }, !1), he.readyState = \"loading\"), function t() {\n /in/.test(he.readyState) ? setTimeout(t, 9) : e.eve(\"raphael.DOMload\");\n }(), e;\n }.apply(e, i)) || (t.exports = n);\n }, function (t, e, r) {\n var i, n;\n i = [r(0), r(3), r(4)], void 0 === (n = function (t) {\n return t;\n }.apply(e, i)) || (t.exports = n);\n }, function (t, e, r) {\n var i, n, a, s, o, l, h, u, c, f, p, d, g, _x;\n\n s = \"hasOwnProperty\", o = /[\\.\\/]/, l = /\\s*,\\s*/, h = function h(t, e) {\n return t - e;\n }, u = {\n n: {}\n }, c = function c() {\n for (var t = 0, e = this.length; t < e; t++) {\n if (void 0 !== this[t]) return this[t];\n }\n }, f = function f() {\n for (var t = this.length; --t;) {\n if (void 0 !== this[t]) return this[t];\n }\n }, p = Object.prototype.toString, d = String, g = Array.isArray || function (t) {\n return t instanceof Array || \"[object Array]\" == p.call(t);\n }, (_x = function x(t, e) {\n var r,\n i = a,\n s = Array.prototype.slice.call(arguments, 2),\n o = _x.listeners(t),\n l = 0,\n u = [],\n p = {},\n d = [],\n g = n;\n\n d.firstDefined = c, d.lastDefined = f, n = t, a = 0;\n\n for (var v = 0, y = o.length; v < y; v++) {\n \"zIndex\" in o[v] && (u.push(o[v].zIndex), o[v].zIndex < 0 && (p[o[v].zIndex] = o[v]));\n }\n\n for (u.sort(h); u[l] < 0;) {\n if (r = p[u[l++]], d.push(r.apply(e, s)), a) return a = i, d;\n }\n\n for (v = 0; v < y; v++) {\n if (\"zIndex\" in (r = o[v])) {\n if (r.zIndex == u[l]) {\n if (d.push(r.apply(e, s)), a) break;\n\n do {\n if ((r = p[u[++l]]) && d.push(r.apply(e, s)), a) break;\n } while (r);\n } else p[r.zIndex] = r;\n } else if (d.push(r.apply(e, s)), a) break;\n }\n\n return a = i, n = g, d;\n })._events = u, _x.listeners = function (t) {\n var e,\n r,\n i,\n n,\n a,\n s,\n l,\n h,\n c = g(t) ? t : t.split(o),\n f = u,\n p = [f],\n d = [];\n\n for (n = 0, a = c.length; n < a; n++) {\n for (h = [], s = 0, l = p.length; s < l; s++) {\n for (r = [(f = p[s].n)[c[n]], f[\"*\"]], i = 2; i--;) {\n (e = r[i]) && (h.push(e), d = d.concat(e.f || []));\n }\n }\n\n p = h;\n }\n\n return d;\n }, _x.separator = function (t) {\n t ? (t = \"[\" + (t = d(t).replace(/(?=[\\.\\^\\]\\[\\-])/g, \"\\\\\")) + \"]\", o = new RegExp(t)) : o = /[\\.\\/]/;\n }, _x.on = function (t, e) {\n if (\"function\" != typeof e) return function () {};\n\n for (var r = g(t) ? g(t[0]) ? t : [t] : d(t).split(l), i = 0, n = r.length; i < n; i++) {\n !function (t) {\n for (var r, i = g(t) ? t : d(t).split(o), n = u, a = 0, s = i.length; a < s; a++) {\n n = (n = n.n).hasOwnProperty(i[a]) && n[i[a]] || (n[i[a]] = {\n n: {}\n });\n }\n\n for (n.f = n.f || [], a = 0, s = n.f.length; a < s; a++) {\n if (n.f[a] == e) {\n r = !0;\n break;\n }\n }\n\n !r && n.f.push(e);\n }(r[i]);\n }\n\n return function (t) {\n +t == +t && (e.zIndex = +t);\n };\n }, _x.f = function (t) {\n var e = [].slice.call(arguments, 1);\n return function () {\n _x.apply(null, [t, null].concat(e).concat([].slice.call(arguments, 0)));\n };\n }, _x.stop = function () {\n a = 1;\n }, _x.nt = function (t) {\n var e = g(n) ? n.join(\".\") : n;\n return t ? new RegExp(\"(?:\\\\.|\\\\/|^)\" + t + \"(?:\\\\.|\\\\/|$)\").test(e) : e;\n }, _x.nts = function () {\n return g(n) ? n : n.split(o);\n }, _x.off = _x.unbind = function (t, e) {\n if (t) {\n var r = g(t) ? g(t[0]) ? t : [t] : d(t).split(l);\n if (r.length > 1) for (var i = 0, n = r.length; i < n; i++) {\n _x.off(r[i], e);\n } else {\n r = g(t) ? t : d(t).split(o);\n var a,\n h,\n c,\n f,\n p,\n v = [u];\n\n for (i = 0, n = r.length; i < n; i++) {\n for (f = 0; f < v.length; f += c.length - 2) {\n if (c = [f, 1], a = v[f].n, \"*\" != r[i]) a[r[i]] && c.push(a[r[i]]);else for (h in a) {\n a[s](h) && c.push(a[h]);\n }\n v.splice.apply(v, c);\n }\n }\n\n for (i = 0, n = v.length; i < n; i++) {\n for (a = v[i]; a.n;) {\n if (e) {\n if (a.f) {\n for (f = 0, p = a.f.length; f < p; f++) {\n if (a.f[f] == e) {\n a.f.splice(f, 1);\n break;\n }\n }\n\n !a.f.length && delete a.f;\n }\n\n for (h in a.n) {\n if (a.n[s](h) && a.n[h].f) {\n var y = a.n[h].f;\n\n for (f = 0, p = y.length; f < p; f++) {\n if (y[f] == e) {\n y.splice(f, 1);\n break;\n }\n }\n\n !y.length && delete a.n[h].f;\n }\n }\n } else for (h in delete a.f, a.n) {\n a.n[s](h) && a.n[h].f && delete a.n[h].f;\n }\n\n a = a.n;\n }\n }\n }\n } else _x._events = u = {\n n: {}\n };\n }, _x.once = function (t, e) {\n var r = function r() {\n return _x.off(t, r), e.apply(this, arguments);\n };\n\n return _x.on(t, r);\n }, _x.version = \"0.5.0\", _x.toString = function () {\n return \"You are running Eve 0.5.0\";\n }, t.exports ? t.exports = _x : void 0 === (i = function () {\n return _x;\n }.apply(e, [])) || (t.exports = i);\n }, function (t, e, r) {\n var i, n;\n i = [r(0)], void 0 === (n = function (t) {\n if (!t || t.svg) {\n var e = \"hasOwnProperty\",\n r = String,\n i = parseFloat,\n n = parseInt,\n a = Math,\n s = a.max,\n o = a.abs,\n l = a.pow,\n h = /[, ]+/,\n u = t.eve,\n c = \"\",\n f = \" \",\n p = \"http://www.w3.org/1999/xlink\",\n d = {\n block: \"M5,0 0,2.5 5,5z\",\n classic: \"M5,0 0,2.5 5,5 3.5,3 3.5,2z\",\n diamond: \"M2.5,0 5,2.5 2.5,5 0,2.5z\",\n open: \"M6,1 1,3.5 6,6\",\n oval: \"M2.5,0A2.5,2.5,0,0,1,2.5,5 2.5,2.5,0,0,1,2.5,0z\"\n },\n g = {};\n\n t.toString = function () {\n return \"Your browser supports SVG.\\nYou are running Raphaël \" + this.version;\n };\n\n var x = function x(i, n) {\n if (n) for (var a in \"string\" == typeof i && (i = x(i)), n) {\n n[e](a) && (\"xlink:\" == a.substring(0, 6) ? i.setAttributeNS(p, a.substring(6), r(n[a])) : i.setAttribute(a, r(n[a])));\n } else (i = t._g.doc.createElementNS(\"http://www.w3.org/2000/svg\", i)).style && (i.style.webkitTapHighlightColor = \"rgba(0,0,0,0)\");\n return i;\n },\n v = function v(e, n) {\n var h = \"linear\",\n u = e.id + n,\n f = .5,\n p = .5,\n d = e.node,\n g = e.paper,\n v = d.style,\n m = t._g.doc.getElementById(u);\n\n if (!m) {\n if (n = (n = r(n).replace(t._radial_gradient, function (t, e, r) {\n if (h = \"radial\", e && r) {\n f = i(e);\n var n = 2 * ((p = i(r)) > .5) - 1;\n l(f - .5, 2) + l(p - .5, 2) > .25 && (p = a.sqrt(.25 - l(f - .5, 2)) * n + .5) && .5 != p && (p = p.toFixed(5) - 1e-5 * n);\n }\n\n return c;\n })).split(/\\s*\\-\\s*/), \"linear\" == h) {\n var b = n.shift();\n if (b = -i(b), isNaN(b)) return null;\n var _ = [0, 0, a.cos(t.rad(b)), a.sin(t.rad(b))],\n w = 1 / (s(o(_[2]), o(_[3])) || 1);\n _[2] *= w, _[3] *= w, _[2] < 0 && (_[0] = -_[2], _[2] = 0), _[3] < 0 && (_[1] = -_[3], _[3] = 0);\n }\n\n var k = t._parseDots(n);\n\n if (!k) return null;\n\n if (u = u.replace(/[\\(\\)\\s,\\xb0#]/g, \"_\"), e.gradient && u != e.gradient.id && (g.defs.removeChild(e.gradient), delete e.gradient), !e.gradient) {\n m = x(h + \"Gradient\", {\n id: u\n }), e.gradient = m, x(m, \"radial\" == h ? {\n fx: f,\n fy: p\n } : {\n x1: _[0],\n y1: _[1],\n x2: _[2],\n y2: _[3],\n gradientTransform: e.matrix.invert()\n }), g.defs.appendChild(m);\n\n for (var B = 0, C = k.length; B < C; B++) {\n m.appendChild(x(\"stop\", {\n offset: k[B].offset ? k[B].offset : B ? \"100%\" : \"0%\",\n \"stop-color\": k[B].color || \"#fff\",\n \"stop-opacity\": isFinite(k[B].opacity) ? k[B].opacity : 1\n }));\n }\n }\n }\n\n return x(d, {\n fill: y(u),\n opacity: 1,\n \"fill-opacity\": 1\n }), v.fill = c, v.opacity = 1, v.fillOpacity = 1, 1;\n },\n y = function y(t) {\n if ((e = document.documentMode) && (9 === e || 10 === e)) return \"url('#\" + t + \"')\";\n var e,\n r = document.location;\n return \"url('\" + (r.protocol + \"//\" + r.host + r.pathname + r.search) + \"#\" + t + \"')\";\n },\n m = function m(t) {\n var e = t.getBBox(1);\n x(t.pattern, {\n patternTransform: t.matrix.invert() + \" translate(\" + e.x + \",\" + e.y + \")\"\n });\n },\n b = function b(i, n, a) {\n if (\"path\" == i.type) {\n for (var s, o, l, h, u, f = r(n).toLowerCase().split(\"-\"), p = i.paper, v = a ? \"end\" : \"start\", y = i.node, m = i.attrs, b = m[\"stroke-width\"], _ = f.length, w = \"classic\", k = 3, B = 3, C = 5; _--;) {\n switch (f[_]) {\n case \"block\":\n case \"classic\":\n case \"oval\":\n case \"diamond\":\n case \"open\":\n case \"none\":\n w = f[_];\n break;\n\n case \"wide\":\n B = 5;\n break;\n\n case \"narrow\":\n B = 2;\n break;\n\n case \"long\":\n k = 5;\n break;\n\n case \"short\":\n k = 2;\n }\n }\n\n if (\"open\" == w ? (k += 2, B += 2, C += 2, l = 1, h = a ? 4 : 1, u = {\n fill: \"none\",\n stroke: m.stroke\n }) : (h = l = k / 2, u = {\n fill: m.stroke,\n stroke: \"none\"\n }), i._.arrows ? a ? (i._.arrows.endPath && g[i._.arrows.endPath]--, i._.arrows.endMarker && g[i._.arrows.endMarker]--) : (i._.arrows.startPath && g[i._.arrows.startPath]--, i._.arrows.startMarker && g[i._.arrows.startMarker]--) : i._.arrows = {}, \"none\" != w) {\n var S = \"raphael-marker-\" + w,\n T = \"raphael-marker-\" + v + w + k + B + \"-obj\" + i.id;\n t._g.doc.getElementById(S) ? g[S]++ : (p.defs.appendChild(x(x(\"path\"), {\n \"stroke-linecap\": \"round\",\n d: d[w],\n id: S\n })), g[S] = 1);\n\n var A,\n M = t._g.doc.getElementById(T);\n\n M ? (g[T]++, A = M.getElementsByTagName(\"use\")[0]) : (M = x(x(\"marker\"), {\n id: T,\n markerHeight: B,\n markerWidth: k,\n orient: \"auto\",\n refX: h,\n refY: B / 2\n }), A = x(x(\"use\"), {\n \"xlink:href\": \"#\" + S,\n transform: (a ? \"rotate(180 \" + k / 2 + \" \" + B / 2 + \") \" : c) + \"scale(\" + k / C + \",\" + B / C + \")\",\n \"stroke-width\": (1 / ((k / C + B / C) / 2)).toFixed(4)\n }), M.appendChild(A), p.defs.appendChild(M), g[T] = 1), x(A, u);\n var E = l * (\"diamond\" != w && \"oval\" != w);\n a ? (s = i._.arrows.startdx * b || 0, o = t.getTotalLength(m.path) - E * b) : (s = E * b, o = t.getTotalLength(m.path) - (i._.arrows.enddx * b || 0)), (u = {})[\"marker-\" + v] = \"url(#\" + T + \")\", (o || s) && (u.d = t.getSubpath(m.path, s, o)), x(y, u), i._.arrows[v + \"Path\"] = S, i._.arrows[v + \"Marker\"] = T, i._.arrows[v + \"dx\"] = E, i._.arrows[v + \"Type\"] = w, i._.arrows[v + \"String\"] = n;\n } else a ? (s = i._.arrows.startdx * b || 0, o = t.getTotalLength(m.path) - s) : (s = 0, o = t.getTotalLength(m.path) - (i._.arrows.enddx * b || 0)), i._.arrows[v + \"Path\"] && x(y, {\n d: t.getSubpath(m.path, s, o)\n }), delete i._.arrows[v + \"Path\"], delete i._.arrows[v + \"Marker\"], delete i._.arrows[v + \"dx\"], delete i._.arrows[v + \"Type\"], delete i._.arrows[v + \"String\"];\n\n for (u in g) {\n if (g[e](u) && !g[u]) {\n var N = t._g.doc.getElementById(u);\n\n N && N.parentNode.removeChild(N);\n }\n }\n }\n },\n _ = {\n \"-\": [3, 1],\n \".\": [1, 1],\n \"-.\": [3, 1, 1, 1],\n \"-..\": [3, 1, 1, 1, 1, 1],\n \". \": [1, 3],\n \"- \": [4, 3],\n \"--\": [8, 3],\n \"- .\": [4, 3, 1, 3],\n \"--.\": [8, 3, 1, 3],\n \"--..\": [8, 3, 1, 3, 1, 3]\n },\n w = function w(t, e, i) {\n if (e = _[r(e).toLowerCase()]) {\n for (var n = t.attrs[\"stroke-width\"] || \"1\", a = {\n round: n,\n square: n,\n butt: 0\n }[t.attrs[\"stroke-linecap\"] || i[\"stroke-linecap\"]] || 0, s = [], o = e.length; o--;) {\n s[o] = e[o] * n + (o % 2 ? 1 : -1) * a;\n }\n\n x(t.node, {\n \"stroke-dasharray\": s.join(\",\")\n });\n } else x(t.node, {\n \"stroke-dasharray\": \"none\"\n });\n },\n k = function k(i, a) {\n var l = i.node,\n u = i.attrs,\n f = l.style.visibility;\n\n for (var d in l.style.visibility = \"hidden\", a) {\n if (a[e](d)) {\n if (!t._availableAttrs[e](d)) continue;\n var g = a[d];\n\n switch (u[d] = g, d) {\n case \"blur\":\n i.blur(g);\n break;\n\n case \"title\":\n var y = l.getElementsByTagName(\"title\");\n if (y.length && (y = y[0])) y.firstChild.nodeValue = g;else {\n y = x(\"title\");\n\n var _ = t._g.doc.createTextNode(g);\n\n y.appendChild(_), l.appendChild(y);\n }\n break;\n\n case \"href\":\n case \"target\":\n var k = l.parentNode;\n\n if (\"a\" != k.tagName.toLowerCase()) {\n var C = x(\"a\");\n k.insertBefore(C, l), C.appendChild(l), k = C;\n }\n\n \"target\" == d ? k.setAttributeNS(p, \"show\", \"blank\" == g ? \"new\" : g) : k.setAttributeNS(p, d, g);\n break;\n\n case \"cursor\":\n l.style.cursor = g;\n break;\n\n case \"transform\":\n i.transform(g);\n break;\n\n case \"arrow-start\":\n b(i, g);\n break;\n\n case \"arrow-end\":\n b(i, g, 1);\n break;\n\n case \"clip-rect\":\n var S = r(g).split(h);\n\n if (4 == S.length) {\n i.clip && i.clip.parentNode.parentNode.removeChild(i.clip.parentNode);\n var T = x(\"clipPath\"),\n A = x(\"rect\");\n T.id = t.createUUID(), x(A, {\n x: S[0],\n y: S[1],\n width: S[2],\n height: S[3]\n }), T.appendChild(A), i.paper.defs.appendChild(T), x(l, {\n \"clip-path\": \"url(#\" + T.id + \")\"\n }), i.clip = A;\n }\n\n if (!g) {\n var M = l.getAttribute(\"clip-path\");\n\n if (M) {\n var E = t._g.doc.getElementById(M.replace(/(^url\\(#|\\)$)/g, c));\n\n E && E.parentNode.removeChild(E), x(l, {\n \"clip-path\": c\n }), delete i.clip;\n }\n }\n\n break;\n\n case \"path\":\n \"path\" == i.type && (x(l, {\n d: g ? u.path = t._pathToAbsolute(g) : \"M0,0\"\n }), i._.dirty = 1, i._.arrows && (\"startString\" in i._.arrows && b(i, i._.arrows.startString), \"endString\" in i._.arrows && b(i, i._.arrows.endString, 1)));\n break;\n\n case \"width\":\n if (l.setAttribute(d, g), i._.dirty = 1, !u.fx) break;\n d = \"x\", g = u.x;\n\n case \"x\":\n u.fx && (g = -u.x - (u.width || 0));\n\n case \"rx\":\n if (\"rx\" == d && \"rect\" == i.type) break;\n\n case \"cx\":\n l.setAttribute(d, g), i.pattern && m(i), i._.dirty = 1;\n break;\n\n case \"height\":\n if (l.setAttribute(d, g), i._.dirty = 1, !u.fy) break;\n d = \"y\", g = u.y;\n\n case \"y\":\n u.fy && (g = -u.y - (u.height || 0));\n\n case \"ry\":\n if (\"ry\" == d && \"rect\" == i.type) break;\n\n case \"cy\":\n l.setAttribute(d, g), i.pattern && m(i), i._.dirty = 1;\n break;\n\n case \"r\":\n \"rect\" == i.type ? x(l, {\n rx: g,\n ry: g\n }) : l.setAttribute(d, g), i._.dirty = 1;\n break;\n\n case \"src\":\n \"image\" == i.type && l.setAttributeNS(p, \"href\", g);\n break;\n\n case \"stroke-width\":\n 1 == i._.sx && 1 == i._.sy || (g /= s(o(i._.sx), o(i._.sy)) || 1), l.setAttribute(d, g), u[\"stroke-dasharray\"] && w(i, u[\"stroke-dasharray\"], a), i._.arrows && (\"startString\" in i._.arrows && b(i, i._.arrows.startString), \"endString\" in i._.arrows && b(i, i._.arrows.endString, 1));\n break;\n\n case \"stroke-dasharray\":\n w(i, g, a);\n break;\n\n case \"fill\":\n var N = r(g).match(t._ISURL);\n\n if (N) {\n T = x(\"pattern\");\n var L = x(\"image\");\n T.id = t.createUUID(), x(T, {\n x: 0,\n y: 0,\n patternUnits: \"userSpaceOnUse\",\n height: 1,\n width: 1\n }), x(L, {\n x: 0,\n y: 0,\n \"xlink:href\": N[1]\n }), T.appendChild(L), function (e) {\n t._preload(N[1], function () {\n var t = this.offsetWidth,\n r = this.offsetHeight;\n x(e, {\n width: t,\n height: r\n }), x(L, {\n width: t,\n height: r\n });\n });\n }(T), i.paper.defs.appendChild(T), x(l, {\n fill: \"url(#\" + T.id + \")\"\n }), i.pattern = T, i.pattern && m(i);\n break;\n }\n\n var P = t.getRGB(g);\n\n if (P.error) {\n if ((\"circle\" == i.type || \"ellipse\" == i.type || \"r\" != r(g).charAt()) && v(i, g)) {\n if (\"opacity\" in u || \"fill-opacity\" in u) {\n var z = t._g.doc.getElementById(l.getAttribute(\"fill\").replace(/^url\\(#|\\)$/g, c));\n\n if (z) {\n var F = z.getElementsByTagName(\"stop\");\n x(F[F.length - 1], {\n \"stop-opacity\": (\"opacity\" in u ? u.opacity : 1) * (\"fill-opacity\" in u ? u[\"fill-opacity\"] : 1)\n });\n }\n }\n\n u.gradient = g, u.fill = \"none\";\n break;\n }\n } else delete a.gradient, delete u.gradient, !t.is(u.opacity, \"undefined\") && t.is(a.opacity, \"undefined\") && x(l, {\n opacity: u.opacity\n }), !t.is(u[\"fill-opacity\"], \"undefined\") && t.is(a[\"fill-opacity\"], \"undefined\") && x(l, {\n \"fill-opacity\": u[\"fill-opacity\"]\n });\n\n P[e](\"opacity\") && x(l, {\n \"fill-opacity\": P.opacity > 1 ? P.opacity / 100 : P.opacity\n });\n\n case \"stroke\":\n P = t.getRGB(g), l.setAttribute(d, P.hex), \"stroke\" == d && P[e](\"opacity\") && x(l, {\n \"stroke-opacity\": P.opacity > 1 ? P.opacity / 100 : P.opacity\n }), \"stroke\" == d && i._.arrows && (\"startString\" in i._.arrows && b(i, i._.arrows.startString), \"endString\" in i._.arrows && b(i, i._.arrows.endString, 1));\n break;\n\n case \"gradient\":\n (\"circle\" == i.type || \"ellipse\" == i.type || \"r\" != r(g).charAt()) && v(i, g);\n break;\n\n case \"opacity\":\n u.gradient && !u[e](\"stroke-opacity\") && x(l, {\n \"stroke-opacity\": g > 1 ? g / 100 : g\n });\n\n case \"fill-opacity\":\n if (u.gradient) {\n (z = t._g.doc.getElementById(l.getAttribute(\"fill\").replace(/^url\\(#|\\)$/g, c))) && (F = z.getElementsByTagName(\"stop\"), x(F[F.length - 1], {\n \"stop-opacity\": g\n }));\n break;\n }\n\n default:\n \"font-size\" == d && (g = n(g, 10) + \"px\");\n var R = d.replace(/(\\-.)/g, function (t) {\n return t.substring(1).toUpperCase();\n });\n l.style[R] = g, i._.dirty = 1, l.setAttribute(d, g);\n }\n }\n }\n\n B(i, a), l.style.visibility = f;\n },\n B = function B(i, a) {\n if (\"text\" == i.type && (a[e](\"text\") || a[e](\"font\") || a[e](\"font-size\") || a[e](\"x\") || a[e](\"y\"))) {\n var s = i.attrs,\n o = i.node,\n l = o.firstChild ? n(t._g.doc.defaultView.getComputedStyle(o.firstChild, c).getPropertyValue(\"font-size\"), 10) : 10;\n\n if (a[e](\"text\")) {\n for (s.text = a.text; o.firstChild;) {\n o.removeChild(o.firstChild);\n }\n\n for (var h, u = r(a.text).split(\"\\n\"), f = [], p = 0, d = u.length; p < d; p++) {\n h = x(\"tspan\"), p && x(h, {\n dy: 1.2 * l,\n x: s.x\n }), h.appendChild(t._g.doc.createTextNode(u[p])), o.appendChild(h), f[p] = h;\n }\n } else for (p = 0, d = (f = o.getElementsByTagName(\"tspan\")).length; p < d; p++) {\n p ? x(f[p], {\n dy: 1.2 * l,\n x: s.x\n }) : x(f[0], {\n dy: 0\n });\n }\n\n x(o, {\n x: s.x,\n y: s.y\n }), i._.dirty = 1;\n\n var g = i._getBBox(),\n v = s.y - (g.y + g.height / 2);\n\n v && t.is(v, \"finite\") && x(f[0], {\n dy: v\n });\n }\n },\n C = function C(t) {\n return t.parentNode && \"a\" === t.parentNode.tagName.toLowerCase() ? t.parentNode : t;\n },\n S = function S(e, r) {\n this[0] = this.node = e, e.raphael = !0, this.id = (\"0000\" + (Math.random() * Math.pow(36, 5) << 0).toString(36)).slice(-5), e.raphaelid = this.id, this.matrix = t.matrix(), this.realPath = null, this.paper = r, this.attrs = this.attrs || {}, this._ = {\n transform: [],\n sx: 1,\n sy: 1,\n deg: 0,\n dx: 0,\n dy: 0,\n dirty: 1\n }, !r.bottom && (r.bottom = this), this.prev = r.top, r.top && (r.top.next = this), r.top = this, this.next = null;\n },\n T = t.el;\n\n S.prototype = T, T.constructor = S, t._engine.path = function (t, e) {\n var r = x(\"path\");\n e.canvas && e.canvas.appendChild(r);\n var i = new S(r, e);\n return i.type = \"path\", k(i, {\n fill: \"none\",\n stroke: \"#000\",\n path: t\n }), i;\n }, T.rotate = function (t, e, n) {\n if (this.removed) return this;\n\n if ((t = r(t).split(h)).length - 1 && (e = i(t[1]), n = i(t[2])), t = i(t[0]), null == n && (e = n), null == e || null == n) {\n var a = this.getBBox(1);\n e = a.x + a.width / 2, n = a.y + a.height / 2;\n }\n\n return this.transform(this._.transform.concat([[\"r\", t, e, n]])), this;\n }, T.scale = function (t, e, n, a) {\n if (this.removed) return this;\n if ((t = r(t).split(h)).length - 1 && (e = i(t[1]), n = i(t[2]), a = i(t[3])), t = i(t[0]), null == e && (e = t), null == a && (n = a), null == n || null == a) var s = this.getBBox(1);\n return n = null == n ? s.x + s.width / 2 : n, a = null == a ? s.y + s.height / 2 : a, this.transform(this._.transform.concat([[\"s\", t, e, n, a]])), this;\n }, T.translate = function (t, e) {\n return this.removed ? this : ((t = r(t).split(h)).length - 1 && (e = i(t[1])), t = i(t[0]) || 0, e = +e || 0, this.transform(this._.transform.concat([[\"t\", t, e]])), this);\n }, T.transform = function (r) {\n var i = this._;\n if (null == r) return i.transform;\n\n if (t._extractTransform(this, r), this.clip && x(this.clip, {\n transform: this.matrix.invert()\n }), this.pattern && m(this), this.node && x(this.node, {\n transform: this.matrix\n }), 1 != i.sx || 1 != i.sy) {\n var n = this.attrs[e](\"stroke-width\") ? this.attrs[\"stroke-width\"] : 1;\n this.attr({\n \"stroke-width\": n\n });\n }\n\n return this;\n }, T.hide = function () {\n return this.removed || (this.node.style.display = \"none\"), this;\n }, T.show = function () {\n return this.removed || (this.node.style.display = \"\"), this;\n }, T.remove = function () {\n var e = C(this.node);\n\n if (!this.removed && e.parentNode) {\n var r = this.paper;\n\n for (var i in r.__set__ && r.__set__.exclude(this), u.unbind(\"raphael.*.*.\" + this.id), this.gradient && r.defs.removeChild(this.gradient), t._tear(this, r), e.parentNode.removeChild(e), this.removeData(), this) {\n this[i] = \"function\" == typeof this[i] ? t._removedFactory(i) : null;\n }\n\n this.removed = !0;\n }\n }, T._getBBox = function () {\n if (\"none\" == this.node.style.display) {\n this.show();\n var t = !0;\n }\n\n var e,\n r = !1;\n this.paper.canvas.parentElement ? e = this.paper.canvas.parentElement.style : this.paper.canvas.parentNode && (e = this.paper.canvas.parentNode.style), e && \"none\" == e.display && (r = !0, e.display = \"\");\n var i = {};\n\n try {\n i = this.node.getBBox();\n } catch (t) {\n i = {\n x: this.node.clientLeft,\n y: this.node.clientTop,\n width: this.node.clientWidth,\n height: this.node.clientHeight\n };\n } finally {\n i = i || {}, r && (e.display = \"none\");\n }\n\n return t && this.hide(), i;\n }, T.attr = function (r, i) {\n if (this.removed) return this;\n\n if (null == r) {\n var n = {};\n\n for (var a in this.attrs) {\n this.attrs[e](a) && (n[a] = this.attrs[a]);\n }\n\n return n.gradient && \"none\" == n.fill && (n.fill = n.gradient) && delete n.gradient, n.transform = this._.transform, n;\n }\n\n if (null == i && t.is(r, \"string\")) {\n if (\"fill\" == r && \"none\" == this.attrs.fill && this.attrs.gradient) return this.attrs.gradient;\n if (\"transform\" == r) return this._.transform;\n\n for (var s = r.split(h), o = {}, l = 0, c = s.length; l < c; l++) {\n (r = s[l]) in this.attrs ? o[r] = this.attrs[r] : t.is(this.paper.customAttributes[r], \"function\") ? o[r] = this.paper.customAttributes[r].def : o[r] = t._availableAttrs[r];\n }\n\n return c - 1 ? o : o[s[0]];\n }\n\n if (null == i && t.is(r, \"array\")) {\n for (o = {}, l = 0, c = r.length; l < c; l++) {\n o[r[l]] = this.attr(r[l]);\n }\n\n return o;\n }\n\n if (null != i) {\n var f = {};\n f[r] = i;\n } else null != r && t.is(r, \"object\") && (f = r);\n\n for (var p in f) {\n u(\"raphael.attr.\" + p + \".\" + this.id, this, f[p]);\n }\n\n for (p in this.paper.customAttributes) {\n if (this.paper.customAttributes[e](p) && f[e](p) && t.is(this.paper.customAttributes[p], \"function\")) {\n var d = this.paper.customAttributes[p].apply(this, [].concat(f[p]));\n\n for (var g in this.attrs[p] = f[p], d) {\n d[e](g) && (f[g] = d[g]);\n }\n }\n }\n\n return k(this, f), this;\n }, T.toFront = function () {\n if (this.removed) return this;\n var e = C(this.node);\n e.parentNode.appendChild(e);\n var r = this.paper;\n return r.top != this && t._tofront(this, r), this;\n }, T.toBack = function () {\n if (this.removed) return this;\n var e = C(this.node),\n r = e.parentNode;\n r.insertBefore(e, r.firstChild), t._toback(this, this.paper);\n this.paper;\n return this;\n }, T.insertAfter = function (e) {\n if (this.removed || !e) return this;\n var r = C(this.node),\n i = C(e.node || e[e.length - 1].node);\n return i.nextSibling ? i.parentNode.insertBefore(r, i.nextSibling) : i.parentNode.appendChild(r), t._insertafter(this, e, this.paper), this;\n }, T.insertBefore = function (e) {\n if (this.removed || !e) return this;\n var r = C(this.node),\n i = C(e.node || e[0].node);\n return i.parentNode.insertBefore(r, i), t._insertbefore(this, e, this.paper), this;\n }, T.blur = function (e) {\n var r = this;\n\n if (0 != +e) {\n var i = x(\"filter\"),\n n = x(\"feGaussianBlur\");\n r.attrs.blur = e, i.id = t.createUUID(), x(n, {\n stdDeviation: +e || 1.5\n }), i.appendChild(n), r.paper.defs.appendChild(i), r._blur = i, x(r.node, {\n filter: \"url(#\" + i.id + \")\"\n });\n } else r._blur && (r._blur.parentNode.removeChild(r._blur), delete r._blur, delete r.attrs.blur), r.node.removeAttribute(\"filter\");\n\n return r;\n }, t._engine.circle = function (t, e, r, i) {\n var n = x(\"circle\");\n t.canvas && t.canvas.appendChild(n);\n var a = new S(n, t);\n return a.attrs = {\n cx: e,\n cy: r,\n r: i,\n fill: \"none\",\n stroke: \"#000\"\n }, a.type = \"circle\", x(n, a.attrs), a;\n }, t._engine.rect = function (t, e, r, i, n, a) {\n var s = x(\"rect\");\n t.canvas && t.canvas.appendChild(s);\n var o = new S(s, t);\n return o.attrs = {\n x: e,\n y: r,\n width: i,\n height: n,\n rx: a || 0,\n ry: a || 0,\n fill: \"none\",\n stroke: \"#000\"\n }, o.type = \"rect\", x(s, o.attrs), o;\n }, t._engine.ellipse = function (t, e, r, i, n) {\n var a = x(\"ellipse\");\n t.canvas && t.canvas.appendChild(a);\n var s = new S(a, t);\n return s.attrs = {\n cx: e,\n cy: r,\n rx: i,\n ry: n,\n fill: \"none\",\n stroke: \"#000\"\n }, s.type = \"ellipse\", x(a, s.attrs), s;\n }, t._engine.image = function (t, e, r, i, n, a) {\n var s = x(\"image\");\n x(s, {\n x: r,\n y: i,\n width: n,\n height: a,\n preserveAspectRatio: \"none\"\n }), s.setAttributeNS(p, \"href\", e), t.canvas && t.canvas.appendChild(s);\n var o = new S(s, t);\n return o.attrs = {\n x: r,\n y: i,\n width: n,\n height: a,\n src: e\n }, o.type = \"image\", o;\n }, t._engine.text = function (e, r, i, n) {\n var a = x(\"text\");\n e.canvas && e.canvas.appendChild(a);\n var s = new S(a, e);\n return s.attrs = {\n x: r,\n y: i,\n \"text-anchor\": \"middle\",\n text: n,\n \"font-family\": t._availableAttrs[\"font-family\"],\n \"font-size\": t._availableAttrs[\"font-size\"],\n stroke: \"none\",\n fill: \"#000\"\n }, s.type = \"text\", k(s, s.attrs), s;\n }, t._engine.setSize = function (t, e) {\n return this.width = t || this.width, this.height = e || this.height, this.canvas.setAttribute(\"width\", this.width), this.canvas.setAttribute(\"height\", this.height), this._viewBox && this.setViewBox.apply(this, this._viewBox), this;\n }, t._engine.create = function () {\n var e = t._getContainer.apply(0, arguments),\n r = e && e.container;\n\n if (!r) throw new Error(\"SVG container not found.\");\n var i,\n n = e.x,\n a = e.y,\n s = e.width,\n o = e.height,\n l = x(\"svg\"),\n h = \"overflow:hidden;\";\n return n = n || 0, a = a || 0, x(l, {\n height: o = o || 342,\n version: 1.1,\n width: s = s || 512,\n xmlns: \"http://www.w3.org/2000/svg\",\n \"xmlns:xlink\": \"http://www.w3.org/1999/xlink\"\n }), 1 == r ? (l.style.cssText = h + \"position:absolute;left:\" + n + \"px;top:\" + a + \"px\", t._g.doc.body.appendChild(l), i = 1) : (l.style.cssText = h + \"position:relative\", r.firstChild ? r.insertBefore(l, r.firstChild) : r.appendChild(l)), (r = new t._Paper()).width = s, r.height = o, r.canvas = l, r.clear(), r._left = r._top = 0, i && (r.renderfix = function () {}), r.renderfix(), r;\n }, t._engine.setViewBox = function (t, e, r, i, n) {\n u(\"raphael.setViewBox\", this, this._viewBox, [t, e, r, i, n]);\n var a,\n o,\n l = this.getSize(),\n h = s(r / l.width, i / l.height),\n c = this.top,\n p = n ? \"xMidYMid meet\" : \"xMinYMin\";\n\n for (null == t ? (this._vbSize && (h = 1), delete this._vbSize, a = \"0 0 \" + this.width + f + this.height) : (this._vbSize = h, a = t + f + e + f + r + f + i), x(this.canvas, {\n viewBox: a,\n preserveAspectRatio: p\n }); h && c;) {\n o = \"stroke-width\" in c.attrs ? c.attrs[\"stroke-width\"] : 1, c.attr({\n \"stroke-width\": o\n }), c._.dirty = 1, c._.dirtyT = 1, c = c.prev;\n }\n\n return this._viewBox = [t, e, r, i, !!n], this;\n }, t.prototype.renderfix = function () {\n var t,\n e = this.canvas,\n r = e.style;\n\n try {\n t = e.getScreenCTM() || e.createSVGMatrix();\n } catch (r) {\n t = e.createSVGMatrix();\n }\n\n var i = -t.e % 1,\n n = -t.f % 1;\n (i || n) && (i && (this._left = (this._left + i) % 1, r.left = this._left + \"px\"), n && (this._top = (this._top + n) % 1, r.top = this._top + \"px\"));\n }, t.prototype.clear = function () {\n t.eve(\"raphael.clear\", this);\n\n for (var e = this.canvas; e.firstChild;) {\n e.removeChild(e.firstChild);\n }\n\n this.bottom = this.top = null, (this.desc = x(\"desc\")).appendChild(t._g.doc.createTextNode(\"Created with Raphaël \" + t.version)), e.appendChild(this.desc), e.appendChild(this.defs = x(\"defs\"));\n }, t.prototype.remove = function () {\n for (var e in u(\"raphael.remove\", this), this.canvas.parentNode && this.canvas.parentNode.removeChild(this.canvas), this) {\n this[e] = \"function\" == typeof this[e] ? t._removedFactory(e) : null;\n }\n };\n var A = t.st;\n\n for (var M in T) {\n T[e](M) && !A[e](M) && (A[M] = function (t) {\n return function () {\n var e = arguments;\n return this.forEach(function (r) {\n r[t].apply(r, e);\n });\n };\n }(M));\n }\n }\n }.apply(e, i)) || (t.exports = n);\n }, function (t, e, r) {\n var i, n;\n i = [r(0)], void 0 === (n = function (t) {\n if (!t || t.vml) {\n var e = \"hasOwnProperty\",\n r = String,\n i = parseFloat,\n n = Math,\n a = n.round,\n s = n.max,\n o = n.min,\n l = n.abs,\n h = /[, ]+/,\n u = t.eve,\n c = \" \",\n f = \"\",\n p = {\n M: \"m\",\n L: \"l\",\n C: \"c\",\n Z: \"x\",\n m: \"t\",\n l: \"r\",\n c: \"v\",\n z: \"x\"\n },\n d = /([clmz]),?([^clmz]*)/gi,\n g = / progid:\\S+Blur\\([^\\)]+\\)/g,\n x = /-?[^,\\s-]+/g,\n v = \"position:absolute;left:0;top:0;width:1px;height:1px;behavior:url(#default#VML)\",\n y = 21600,\n m = {\n path: 1,\n rect: 1,\n image: 1\n },\n b = {\n circle: 1,\n ellipse: 1\n },\n _ = function _(e, r, i) {\n var n = t.matrix();\n return n.rotate(-e, .5, .5), {\n dx: n.x(r, i),\n dy: n.y(r, i)\n };\n },\n w = function w(t, e, r, i, n, a) {\n var s = t._,\n o = t.matrix,\n h = s.fillpos,\n u = t.node,\n f = u.style,\n p = 1,\n d = \"\",\n g = y / e,\n x = y / r;\n\n if (f.visibility = \"hidden\", e && r) {\n if (u.coordsize = l(g) + c + l(x), f.rotation = a * (e * r < 0 ? -1 : 1), a) {\n var v = _(a, i, n);\n\n i = v.dx, n = v.dy;\n }\n\n if (e < 0 && (d += \"x\"), r < 0 && (d += \" y\") && (p = -1), f.flip = d, u.coordorigin = i * -g + c + n * -x, h || s.fillsize) {\n var m = u.getElementsByTagName(\"fill\");\n m = m && m[0], u.removeChild(m), h && (v = _(a, o.x(h[0], h[1]), o.y(h[0], h[1])), m.position = v.dx * p + c + v.dy * p), s.fillsize && (m.size = s.fillsize[0] * l(e) + c + s.fillsize[1] * l(r)), u.appendChild(m);\n }\n\n f.visibility = \"visible\";\n }\n };\n\n t.toString = function () {\n return \"Your browser doesn’t support SVG. Falling down to VML.\\nYou are running Raphaël \" + this.version;\n };\n\n var k,\n B = function B(t, e, i) {\n for (var n = r(e).toLowerCase().split(\"-\"), a = i ? \"end\" : \"start\", s = n.length, o = \"classic\", l = \"medium\", h = \"medium\"; s--;) {\n switch (n[s]) {\n case \"block\":\n case \"classic\":\n case \"oval\":\n case \"diamond\":\n case \"open\":\n case \"none\":\n o = n[s];\n break;\n\n case \"wide\":\n case \"narrow\":\n h = n[s];\n break;\n\n case \"long\":\n case \"short\":\n l = n[s];\n }\n }\n\n var u = t.node.getElementsByTagName(\"stroke\")[0];\n u[a + \"arrow\"] = o, u[a + \"arrowlength\"] = l, u[a + \"arrowwidth\"] = h;\n },\n C = function C(n, l) {\n n.attrs = n.attrs || {};\n\n var u = n.node,\n g = n.attrs,\n v = u.style,\n _ = m[n.type] && (l.x != g.x || l.y != g.y || l.width != g.width || l.height != g.height || l.cx != g.cx || l.cy != g.cy || l.rx != g.rx || l.ry != g.ry || l.r != g.r),\n C = b[n.type] && (g.cx != l.cx || g.cy != l.cy || g.r != l.r || g.rx != l.rx || g.ry != l.ry),\n T = n;\n\n for (var A in l) {\n l[e](A) && (g[A] = l[A]);\n }\n\n if (_ && (g.path = t._getPath[n.type](n), n._.dirty = 1), l.href && (u.href = l.href), l.title && (u.title = l.title), l.target && (u.target = l.target), l.cursor && (v.cursor = l.cursor), \"blur\" in l && n.blur(l.blur), (l.path && \"path\" == n.type || _) && (u.path = function (e) {\n var i = /[ahqstv]/gi,\n n = t._pathToAbsolute;\n\n if (r(e).match(i) && (n = t._path2curve), i = /[clmz]/g, n == t._pathToAbsolute && !r(e).match(i)) {\n var s = r(e).replace(d, function (t, e, r) {\n var i = [],\n n = \"m\" == e.toLowerCase(),\n s = p[e];\n return r.replace(x, function (t) {\n n && 2 == i.length && (s += i + p[\"m\" == e ? \"l\" : \"L\"], i = []), i.push(a(t * y));\n }), s + i;\n });\n return s;\n }\n\n var o,\n l,\n h = n(e);\n s = [];\n\n for (var u = 0, g = h.length; u < g; u++) {\n o = h[u], \"z\" == (l = h[u][0].toLowerCase()) && (l = \"x\");\n\n for (var v = 1, m = o.length; v < m; v++) {\n l += a(o[v] * y) + (v != m - 1 ? \",\" : f);\n }\n\n s.push(l);\n }\n\n return s.join(c);\n }(~r(g.path).toLowerCase().indexOf(\"r\") ? t._pathToAbsolute(g.path) : g.path), n._.dirty = 1, \"image\" == n.type && (n._.fillpos = [g.x, g.y], n._.fillsize = [g.width, g.height], w(n, 1, 1, 0, 0, 0))), \"transform\" in l && n.transform(l.transform), C) {\n var M = +g.cx,\n E = +g.cy,\n N = +g.rx || +g.r || 0,\n L = +g.ry || +g.r || 0;\n u.path = t.format(\"ar{0},{1},{2},{3},{4},{1},{4},{1}x\", a((M - N) * y), a((E - L) * y), a((M + N) * y), a((E + L) * y), a(M * y)), n._.dirty = 1;\n }\n\n if (\"clip-rect\" in l) {\n var P = r(l[\"clip-rect\"]).split(h);\n\n if (4 == P.length) {\n P[2] = +P[2] + +P[0], P[3] = +P[3] + +P[1];\n\n var z = u.clipRect || t._g.doc.createElement(\"div\"),\n F = z.style;\n\n F.clip = t.format(\"rect({1}px {2}px {3}px {0}px)\", P), u.clipRect || (F.position = \"absolute\", F.top = 0, F.left = 0, F.width = n.paper.width + \"px\", F.height = n.paper.height + \"px\", u.parentNode.insertBefore(z, u), z.appendChild(u), u.clipRect = z);\n }\n\n l[\"clip-rect\"] || u.clipRect && (u.clipRect.style.clip = \"auto\");\n }\n\n if (n.textpath) {\n var R = n.textpath.style;\n l.font && (R.font = l.font), l[\"font-family\"] && (R.fontFamily = '\"' + l[\"font-family\"].split(\",\")[0].replace(/^['\"]+|['\"]+$/g, f) + '\"'), l[\"font-size\"] && (R.fontSize = l[\"font-size\"]), l[\"font-weight\"] && (R.fontWeight = l[\"font-weight\"]), l[\"font-style\"] && (R.fontStyle = l[\"font-style\"]);\n }\n\n if (\"arrow-start\" in l && B(T, l[\"arrow-start\"]), \"arrow-end\" in l && B(T, l[\"arrow-end\"], 1), null != l.opacity || null != l.fill || null != l.src || null != l.stroke || null != l[\"stroke-width\"] || null != l[\"stroke-opacity\"] || null != l[\"fill-opacity\"] || null != l[\"stroke-dasharray\"] || null != l[\"stroke-miterlimit\"] || null != l[\"stroke-linejoin\"] || null != l[\"stroke-linecap\"]) {\n var j = u.getElementsByTagName(\"fill\");\n\n if (!(j = j && j[0]) && (j = k(\"fill\")), \"image\" == n.type && l.src && (j.src = l.src), l.fill && (j.on = !0), null != j.on && \"none\" != l.fill && null !== l.fill || (j.on = !1), j.on && l.fill) {\n var I = r(l.fill).match(t._ISURL);\n\n if (I) {\n j.parentNode == u && u.removeChild(j), j.rotate = !0, j.src = I[1], j.type = \"tile\";\n var D = n.getBBox(1);\n j.position = D.x + c + D.y, n._.fillpos = [D.x, D.y], t._preload(I[1], function () {\n n._.fillsize = [this.offsetWidth, this.offsetHeight];\n });\n } else j.color = t.getRGB(l.fill).hex, j.src = f, j.type = \"solid\", t.getRGB(l.fill).error && (T.type in {\n circle: 1,\n ellipse: 1\n } || \"r\" != r(l.fill).charAt()) && S(T, l.fill, j) && (g.fill = \"none\", g.gradient = l.fill, j.rotate = !1);\n }\n\n if (\"fill-opacity\" in l || \"opacity\" in l) {\n var q = ((+g[\"fill-opacity\"] + 1 || 2) - 1) * ((+g.opacity + 1 || 2) - 1) * ((+t.getRGB(l.fill).o + 1 || 2) - 1);\n q = o(s(q, 0), 1), j.opacity = q, j.src && (j.color = \"none\");\n }\n\n u.appendChild(j);\n var O = u.getElementsByTagName(\"stroke\") && u.getElementsByTagName(\"stroke\")[0],\n V = !1;\n !O && (V = O = k(\"stroke\")), (l.stroke && \"none\" != l.stroke || l[\"stroke-width\"] || null != l[\"stroke-opacity\"] || l[\"stroke-dasharray\"] || l[\"stroke-miterlimit\"] || l[\"stroke-linejoin\"] || l[\"stroke-linecap\"]) && (O.on = !0), (\"none\" == l.stroke || null === l.stroke || null == O.on || 0 == l.stroke || 0 == l[\"stroke-width\"]) && (O.on = !1);\n var W = t.getRGB(l.stroke);\n O.on && l.stroke && (O.color = W.hex), q = ((+g[\"stroke-opacity\"] + 1 || 2) - 1) * ((+g.opacity + 1 || 2) - 1) * ((+W.o + 1 || 2) - 1);\n var Y = .75 * (i(l[\"stroke-width\"]) || 1);\n\n if (q = o(s(q, 0), 1), null == l[\"stroke-width\"] && (Y = g[\"stroke-width\"]), l[\"stroke-width\"] && (O.weight = Y), Y && Y < 1 && (q *= Y) && (O.weight = 1), O.opacity = q, l[\"stroke-linejoin\"] && (O.joinstyle = l[\"stroke-linejoin\"] || \"miter\"), O.miterlimit = l[\"stroke-miterlimit\"] || 8, l[\"stroke-linecap\"] && (O.endcap = \"butt\" == l[\"stroke-linecap\"] ? \"flat\" : \"square\" == l[\"stroke-linecap\"] ? \"square\" : \"round\"), \"stroke-dasharray\" in l) {\n var G = {\n \"-\": \"shortdash\",\n \".\": \"shortdot\",\n \"-.\": \"shortdashdot\",\n \"-..\": \"shortdashdotdot\",\n \". \": \"dot\",\n \"- \": \"dash\",\n \"--\": \"longdash\",\n \"- .\": \"dashdot\",\n \"--.\": \"longdashdot\",\n \"--..\": \"longdashdotdot\"\n };\n O.dashstyle = G[e](l[\"stroke-dasharray\"]) ? G[l[\"stroke-dasharray\"]] : f;\n }\n\n V && u.appendChild(O);\n }\n\n if (\"text\" == T.type) {\n T.paper.canvas.style.display = f;\n var H = T.paper.span,\n X = g.font && g.font.match(/\\d+(?:\\.\\d*)?(?=px)/);\n v = H.style, g.font && (v.font = g.font), g[\"font-family\"] && (v.fontFamily = g[\"font-family\"]), g[\"font-weight\"] && (v.fontWeight = g[\"font-weight\"]), g[\"font-style\"] && (v.fontStyle = g[\"font-style\"]), X = i(g[\"font-size\"] || X && X[0]) || 10, v.fontSize = 100 * X + \"px\", T.textpath.string && (H.innerHTML = r(T.textpath.string).replace(/</g, \"<\").replace(/&/g, \"&\").replace(/\\n/g, \"<br>\"));\n var U = H.getBoundingClientRect();\n T.W = g.w = (U.right - U.left) / 100, T.H = g.h = (U.bottom - U.top) / 100, T.X = g.x, T.Y = g.y + T.H / 2, (\"x\" in l || \"y\" in l) && (T.path.v = t.format(\"m{0},{1}l{2},{1}\", a(g.x * y), a(g.y * y), a(g.x * y) + 1));\n\n for (var $ = [\"x\", \"y\", \"text\", \"font\", \"font-family\", \"font-weight\", \"font-style\", \"font-size\"], Z = 0, Q = $.length; Z < Q; Z++) {\n if ($[Z] in l) {\n T._.dirty = 1;\n break;\n }\n }\n\n switch (g[\"text-anchor\"]) {\n case \"start\":\n T.textpath.style[\"v-text-align\"] = \"left\", T.bbx = T.W / 2;\n break;\n\n case \"end\":\n T.textpath.style[\"v-text-align\"] = \"right\", T.bbx = -T.W / 2;\n break;\n\n default:\n T.textpath.style[\"v-text-align\"] = \"center\", T.bbx = 0;\n }\n\n T.textpath.style[\"v-text-kern\"] = !0;\n }\n },\n S = function S(e, a, s) {\n e.attrs = e.attrs || {};\n e.attrs;\n var o = Math.pow,\n l = \"linear\",\n h = \".5 .5\";\n\n if (e.attrs.gradient = a, a = (a = r(a).replace(t._radial_gradient, function (t, e, r) {\n return l = \"radial\", e && r && (e = i(e), r = i(r), o(e - .5, 2) + o(r - .5, 2) > .25 && (r = n.sqrt(.25 - o(e - .5, 2)) * (2 * (r > .5) - 1) + .5), h = e + c + r), f;\n })).split(/\\s*\\-\\s*/), \"linear\" == l) {\n var u = a.shift();\n if (u = -i(u), isNaN(u)) return null;\n }\n\n var p = t._parseDots(a);\n\n if (!p) return null;\n\n if (e = e.shape || e.node, p.length) {\n e.removeChild(s), s.on = !0, s.method = \"none\", s.color = p[0].color, s.color2 = p[p.length - 1].color;\n\n for (var d = [], g = 0, x = p.length; g < x; g++) {\n p[g].offset && d.push(p[g].offset + c + p[g].color);\n }\n\n s.colors = d.length ? d.join() : \"0% \" + s.color, \"radial\" == l ? (s.type = \"gradientTitle\", s.focus = \"100%\", s.focussize = \"0 0\", s.focusposition = h, s.angle = 0) : (s.type = \"gradient\", s.angle = (270 - u) % 360), e.appendChild(s);\n }\n\n return 1;\n },\n T = function T(e, r) {\n this[0] = this.node = e, e.raphael = !0, this.id = t._oid++, e.raphaelid = this.id, this.X = 0, this.Y = 0, this.attrs = {}, this.paper = r, this.matrix = t.matrix(), this._ = {\n transform: [],\n sx: 1,\n sy: 1,\n dx: 0,\n dy: 0,\n deg: 0,\n dirty: 1,\n dirtyT: 1\n }, !r.bottom && (r.bottom = this), this.prev = r.top, r.top && (r.top.next = this), r.top = this, this.next = null;\n },\n A = t.el;\n\n T.prototype = A, A.constructor = T, A.transform = function (e) {\n if (null == e) return this._.transform;\n var i,\n n = this.paper._viewBoxShift,\n a = n ? \"s\" + [n.scale, n.scale] + \"-1-1t\" + [n.dx, n.dy] : f;\n n && (i = e = r(e).replace(/\\.{3}|\\u2026/g, this._.transform || f)), t._extractTransform(this, a + e);\n var s,\n o = this.matrix.clone(),\n l = this.skew,\n h = this.node,\n u = ~r(this.attrs.fill).indexOf(\"-\"),\n p = !r(this.attrs.fill).indexOf(\"url(\");\n if (o.translate(1, 1), p || u || \"image\" == this.type) {\n if (l.matrix = \"1 0 0 1\", l.offset = \"0 0\", s = o.split(), u && s.noRotation || !s.isSimple) {\n h.style.filter = o.toFilter();\n var d = this.getBBox(),\n g = this.getBBox(1),\n x = d.x - g.x,\n v = d.y - g.y;\n h.coordorigin = x * -y + c + v * -y, w(this, 1, 1, x, v, 0);\n } else h.style.filter = f, w(this, s.scalex, s.scaley, s.dx, s.dy, s.rotate);\n } else h.style.filter = f, l.matrix = r(o), l.offset = o.offset();\n return null !== i && (this._.transform = i, t._extractTransform(this, i)), this;\n }, A.rotate = function (t, e, n) {\n if (this.removed) return this;\n\n if (null != t) {\n if ((t = r(t).split(h)).length - 1 && (e = i(t[1]), n = i(t[2])), t = i(t[0]), null == n && (e = n), null == e || null == n) {\n var a = this.getBBox(1);\n e = a.x + a.width / 2, n = a.y + a.height / 2;\n }\n\n return this._.dirtyT = 1, this.transform(this._.transform.concat([[\"r\", t, e, n]])), this;\n }\n }, A.translate = function (t, e) {\n return this.removed ? this : ((t = r(t).split(h)).length - 1 && (e = i(t[1])), t = i(t[0]) || 0, e = +e || 0, this._.bbox && (this._.bbox.x += t, this._.bbox.y += e), this.transform(this._.transform.concat([[\"t\", t, e]])), this);\n }, A.scale = function (t, e, n, a) {\n if (this.removed) return this;\n if ((t = r(t).split(h)).length - 1 && (e = i(t[1]), n = i(t[2]), a = i(t[3]), isNaN(n) && (n = null), isNaN(a) && (a = null)), t = i(t[0]), null == e && (e = t), null == a && (n = a), null == n || null == a) var s = this.getBBox(1);\n return n = null == n ? s.x + s.width / 2 : n, a = null == a ? s.y + s.height / 2 : a, this.transform(this._.transform.concat([[\"s\", t, e, n, a]])), this._.dirtyT = 1, this;\n }, A.hide = function () {\n return !this.removed && (this.node.style.display = \"none\"), this;\n }, A.show = function () {\n return !this.removed && (this.node.style.display = f), this;\n }, A.auxGetBBox = t.el.getBBox, A.getBBox = function () {\n var t = this.auxGetBBox();\n\n if (this.paper && this.paper._viewBoxShift) {\n var e = {},\n r = 1 / this.paper._viewBoxShift.scale;\n return e.x = t.x - this.paper._viewBoxShift.dx, e.x *= r, e.y = t.y - this.paper._viewBoxShift.dy, e.y *= r, e.width = t.width * r, e.height = t.height * r, e.x2 = e.x + e.width, e.y2 = e.y + e.height, e;\n }\n\n return t;\n }, A._getBBox = function () {\n return this.removed ? {} : {\n x: this.X + (this.bbx || 0) - this.W / 2,\n y: this.Y - this.H,\n width: this.W,\n height: this.H\n };\n }, A.remove = function () {\n if (!this.removed && this.node.parentNode) {\n for (var e in this.paper.__set__ && this.paper.__set__.exclude(this), t.eve.unbind(\"raphael.*.*.\" + this.id), t._tear(this, this.paper), this.node.parentNode.removeChild(this.node), this.shape && this.shape.parentNode.removeChild(this.shape), this) {\n this[e] = \"function\" == typeof this[e] ? t._removedFactory(e) : null;\n }\n\n this.removed = !0;\n }\n }, A.attr = function (r, i) {\n if (this.removed) return this;\n\n if (null == r) {\n var n = {};\n\n for (var a in this.attrs) {\n this.attrs[e](a) && (n[a] = this.attrs[a]);\n }\n\n return n.gradient && \"none\" == n.fill && (n.fill = n.gradient) && delete n.gradient, n.transform = this._.transform, n;\n }\n\n if (null == i && t.is(r, \"string\")) {\n if (\"fill\" == r && \"none\" == this.attrs.fill && this.attrs.gradient) return this.attrs.gradient;\n\n for (var s = r.split(h), o = {}, l = 0, c = s.length; l < c; l++) {\n (r = s[l]) in this.attrs ? o[r] = this.attrs[r] : t.is(this.paper.customAttributes[r], \"function\") ? o[r] = this.paper.customAttributes[r].def : o[r] = t._availableAttrs[r];\n }\n\n return c - 1 ? o : o[s[0]];\n }\n\n if (this.attrs && null == i && t.is(r, \"array\")) {\n for (o = {}, l = 0, c = r.length; l < c; l++) {\n o[r[l]] = this.attr(r[l]);\n }\n\n return o;\n }\n\n var f;\n\n for (var p in null != i && ((f = {})[r] = i), null == i && t.is(r, \"object\") && (f = r), f) {\n u(\"raphael.attr.\" + p + \".\" + this.id, this, f[p]);\n }\n\n if (f) {\n for (p in this.paper.customAttributes) {\n if (this.paper.customAttributes[e](p) && f[e](p) && t.is(this.paper.customAttributes[p], \"function\")) {\n var d = this.paper.customAttributes[p].apply(this, [].concat(f[p]));\n\n for (var g in this.attrs[p] = f[p], d) {\n d[e](g) && (f[g] = d[g]);\n }\n }\n }\n\n f.text && \"text\" == this.type && (this.textpath.string = f.text), C(this, f);\n }\n\n return this;\n }, A.toFront = function () {\n return !this.removed && this.node.parentNode.appendChild(this.node), this.paper && this.paper.top != this && t._tofront(this, this.paper), this;\n }, A.toBack = function () {\n return this.removed ? this : (this.node.parentNode.firstChild != this.node && (this.node.parentNode.insertBefore(this.node, this.node.parentNode.firstChild), t._toback(this, this.paper)), this);\n }, A.insertAfter = function (e) {\n return this.removed ? this : (e.constructor == t.st.constructor && (e = e[e.length - 1]), e.node.nextSibling ? e.node.parentNode.insertBefore(this.node, e.node.nextSibling) : e.node.parentNode.appendChild(this.node), t._insertafter(this, e, this.paper), this);\n }, A.insertBefore = function (e) {\n return this.removed ? this : (e.constructor == t.st.constructor && (e = e[0]), e.node.parentNode.insertBefore(this.node, e.node), t._insertbefore(this, e, this.paper), this);\n }, A.blur = function (e) {\n var r = this.node.runtimeStyle,\n i = r.filter;\n return i = i.replace(g, f), 0 != +e ? (this.attrs.blur = e, r.filter = i + c + \" progid:DXImageTransform.Microsoft.Blur(pixelradius=\" + (+e || 1.5) + \")\", r.margin = t.format(\"-{0}px 0 0 -{0}px\", a(+e || 1.5))) : (r.filter = i, r.margin = 0, delete this.attrs.blur), this;\n }, t._engine.path = function (t, e) {\n var r = k(\"shape\");\n r.style.cssText = v, r.coordsize = y + c + y, r.coordorigin = e.coordorigin;\n var i = new T(r, e),\n n = {\n fill: \"none\",\n stroke: \"#000\"\n };\n t && (n.path = t), i.type = \"path\", i.path = [], i.Path = f, C(i, n), e.canvas && e.canvas.appendChild(r);\n var a = k(\"skew\");\n return a.on = !0, r.appendChild(a), i.skew = a, i.transform(f), i;\n }, t._engine.rect = function (e, r, i, n, a, s) {\n var o = t._rectPath(r, i, n, a, s),\n l = e.path(o),\n h = l.attrs;\n\n return l.X = h.x = r, l.Y = h.y = i, l.W = h.width = n, l.H = h.height = a, h.r = s, h.path = o, l.type = \"rect\", l;\n }, t._engine.ellipse = function (t, e, r, i, n) {\n var a = t.path();\n a.attrs;\n return a.X = e - i, a.Y = r - n, a.W = 2 * i, a.H = 2 * n, a.type = \"ellipse\", C(a, {\n cx: e,\n cy: r,\n rx: i,\n ry: n\n }), a;\n }, t._engine.circle = function (t, e, r, i) {\n var n = t.path();\n n.attrs;\n return n.X = e - i, n.Y = r - i, n.W = n.H = 2 * i, n.type = \"circle\", C(n, {\n cx: e,\n cy: r,\n r: i\n }), n;\n }, t._engine.image = function (e, r, i, n, a, s) {\n var o = t._rectPath(i, n, a, s),\n l = e.path(o).attr({\n stroke: \"none\"\n }),\n h = l.attrs,\n u = l.node,\n c = u.getElementsByTagName(\"fill\")[0];\n\n return h.src = r, l.X = h.x = i, l.Y = h.y = n, l.W = h.width = a, l.H = h.height = s, h.path = o, l.type = \"image\", c.parentNode == u && u.removeChild(c), c.rotate = !0, c.src = r, c.type = \"tile\", l._.fillpos = [i, n], l._.fillsize = [a, s], u.appendChild(c), w(l, 1, 1, 0, 0, 0), l;\n }, t._engine.text = function (e, i, n, s) {\n var o = k(\"shape\"),\n l = k(\"path\"),\n h = k(\"textpath\");\n i = i || 0, n = n || 0, s = s || \"\", l.v = t.format(\"m{0},{1}l{2},{1}\", a(i * y), a(n * y), a(i * y) + 1), l.textpathok = !0, h.string = r(s), h.on = !0, o.style.cssText = v, o.coordsize = y + c + y, o.coordorigin = \"0 0\";\n var u = new T(o, e),\n p = {\n fill: \"#000\",\n stroke: \"none\",\n font: t._availableAttrs.font,\n text: s\n };\n u.shape = o, u.path = l, u.textpath = h, u.type = \"text\", u.attrs.text = r(s), u.attrs.x = i, u.attrs.y = n, u.attrs.w = 1, u.attrs.h = 1, C(u, p), o.appendChild(h), o.appendChild(l), e.canvas.appendChild(o);\n var d = k(\"skew\");\n return d.on = !0, o.appendChild(d), u.skew = d, u.transform(f), u;\n }, t._engine.setSize = function (e, r) {\n var i = this.canvas.style;\n return this.width = e, this.height = r, e == +e && (e += \"px\"), r == +r && (r += \"px\"), i.width = e, i.height = r, i.clip = \"rect(0 \" + e + \" \" + r + \" 0)\", this._viewBox && t._engine.setViewBox.apply(this, this._viewBox), this;\n }, t._engine.setViewBox = function (e, r, i, n, a) {\n t.eve(\"raphael.setViewBox\", this, this._viewBox, [e, r, i, n, a]);\n var s,\n o,\n l = this.getSize(),\n h = l.width,\n u = l.height;\n return a && (i * (s = u / n) < h && (e -= (h - i * s) / 2 / s), n * (o = h / i) < u && (r -= (u - n * o) / 2 / o)), this._viewBox = [e, r, i, n, !!a], this._viewBoxShift = {\n dx: -e,\n dy: -r,\n scale: l\n }, this.forEach(function (t) {\n t.transform(\"...\");\n }), this;\n }, t._engine.initWin = function (t) {\n var e = t.document;\n e.styleSheets.length < 31 ? e.createStyleSheet().addRule(\".rvml\", \"behavior:url(#default#VML)\") : e.styleSheets[0].addRule(\".rvml\", \"behavior:url(#default#VML)\");\n\n try {\n !e.namespaces.rvml && e.namespaces.add(\"rvml\", \"urn:schemas-microsoft-com:vml\"), k = function k(t) {\n return e.createElement(\"<rvml:\" + t + ' class=\"rvml\">');\n };\n } catch (t) {\n k = function k(t) {\n return e.createElement(\"<\" + t + ' xmlns=\"urn:schemas-microsoft.com:vml\" class=\"rvml\">');\n };\n }\n }, t._engine.initWin(t._g.win), t._engine.create = function () {\n var e = t._getContainer.apply(0, arguments),\n r = e.container,\n i = e.height,\n n = e.width,\n a = e.x,\n s = e.y;\n\n if (!r) throw new Error(\"VML container not found.\");\n\n var o = new t._Paper(),\n l = o.canvas = t._g.doc.createElement(\"div\"),\n h = l.style;\n\n return a = a || 0, s = s || 0, n = n || 512, i = i || 342, o.width = n, o.height = i, n == +n && (n += \"px\"), i == +i && (i += \"px\"), o.coordsize = 216e5 + c + 216e5, o.coordorigin = \"0 0\", o.span = t._g.doc.createElement(\"span\"), o.span.style.cssText = \"position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;\", l.appendChild(o.span), h.cssText = t.format(\"top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden\", n, i), 1 == r ? (t._g.doc.body.appendChild(l), h.left = a + \"px\", h.top = s + \"px\", h.position = \"absolute\") : r.firstChild ? r.insertBefore(l, r.firstChild) : r.appendChild(l), o.renderfix = function () {}, o;\n }, t.prototype.clear = function () {\n t.eve(\"raphael.clear\", this), this.canvas.innerHTML = f, this.span = t._g.doc.createElement(\"span\"), this.span.style.cssText = \"position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;\", this.canvas.appendChild(this.span), this.bottom = this.top = null;\n }, t.prototype.remove = function () {\n for (var e in t.eve(\"raphael.remove\", this), this.canvas.parentNode.removeChild(this.canvas), this) {\n this[e] = \"function\" == typeof this[e] ? t._removedFactory(e) : null;\n }\n\n return !0;\n };\n var M = t.st;\n\n for (var E in A) {\n A[e](E) && !M[e](E) && (M[E] = function (t) {\n return function () {\n var e = arguments;\n return this.forEach(function (r) {\n r[t].apply(r, e);\n });\n };\n }(E));\n }\n }\n }.apply(e, i)) || (t.exports = n);\n }]);\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*\r\n * Draw Me A Kanji - v0.3.1\r\n * A funny drawer for your Japanese writings\r\n * http://drawmeakanji.com\r\n *\r\n * Made by Matthieu Bilbille\r\n * Under MIT License\r\n */\n!function () {\n \"use strict\";\n\n function a(a, b) {\n var c,\n d,\n e,\n f,\n g = [];\n\n for (e = 0; e < a.length; e++) {\n for (f = 0; f < a[e].length; f++) {\n d = Raphael.getTotalLength(a[e][f].path), c = {\n \"char\": e,\n length: d,\n duration: d * b.step * 1e3,\n path: a[e][f].path,\n groups: a[e][f].groups,\n text: a[e][f].text,\n object: {\n path: null,\n text: null\n }\n }, g.push(c);\n }\n }\n\n return g;\n }\n\n function b(a, b) {\n var c,\n d,\n e = [];\n\n for (d = 0; a > d; d++) {\n c = new Raphael(b.element, b.width + \"px\", b.height + \"px\"), c.setViewBox(b.viewBox.x, b.viewBox.y, b.viewBox.w, b.viewBox.h), c.canvas.setAttribute(\"class\", \"dmak-svg\"), e.push(c);\n }\n\n return e.reverse();\n }\n\n function c(a, b) {\n var c;\n\n for (c = 0; c < a.length; c++) {\n a[c].path(\"M\" + b.viewBox.w / 2 + \",0 L\" + b.viewBox.w / 2 + \",\" + b.viewBox.h).attr(b.grid.attr), a[c].path(\"M0,\" + b.viewBox.h / 2 + \" L\" + b.viewBox.w + \",\" + b.viewBox.h / 2).attr(b.grid.attr);\n }\n }\n\n function d(a, b, c) {\n null !== a.object.text && a.object.text.remove();\n\n var d = function d() {\n a.object.path.remove(), a.object = {\n path: null,\n text: null\n }, b.shift();\n };\n\n c.stroke.animated.erasing ? (a.object.path.node.style.stroke = c.stroke.attr.active, b.push(g(a, -1, c, d))) : d();\n }\n\n function e(a, b, c, d) {\n var e = function e() {\n if (null !== b.object.path) {\n var a = d.stroke.attr.stroke;\n \"random\" === d.stroke.attr.stroke && (a = Raphael.getColor()), b.object.path.node.style.stroke = a, b.object.path.node.style.transition = b.object.path.node.style.WebkitTransition = \"stroke 400ms ease\", c.shift();\n }\n };\n\n b.object.path = a.path(b.path), b.object.path.attr(d.stroke.attr), d.stroke.order.visible && f(a, b, d), d.stroke.animated.drawing ? g(b, 1, d, e) : e();\n }\n\n function f(a, b, c) {\n b.object.text = a.text(b.text.x, b.text.y, b.text.value), b.object.text.attr(c.stroke.order.attr);\n }\n\n function g(a, b, c, d) {\n return a.object.path.attr({\n stroke: c.stroke.attr.active\n }), a.object.path.node.style.transition = a.object.path.node.style.WebkitTransition = \"none\", a.object.path.node.style.strokeDasharray = a.length + \" \" + a.length, a.object.path.node.style.strokeDashoffset = b > 0 ? a.length : 0, a.object.path.node.getBoundingClientRect(), a.object.path.node.style.transition = a.object.path.node.style.WebkitTransition = \"stroke-dashoffset \" + a.duration + \"ms ease\", a.object.path.node.style.strokeDashoffset = b > 0 ? \"0\" : a.length, setTimeout(d, a.duration);\n }\n\n function h(a) {\n if (null === a || \"object\" != _typeof(a)) return a;\n var b = a.constructor();\n\n for (var c in a) {\n b[c] = h(a[c]);\n }\n\n return b;\n }\n\n function i(a, b) {\n if (2 !== arguments.length) throw new Error(\"Missing arguments in assign function\");\n\n for (var c in a) {\n b.hasOwnProperty(c) && (a[c] = \"object\" == _typeof(b[c]) ? i(a[c], b[c]) : b[c]);\n }\n\n return a;\n }\n\n var j = function j(a, b) {\n if (this.text = a, this.options = i(h(j[\"default\"]), b), this.strokes = [], this.papers = [], this.pointer = 0, this.timeouts = {\n play: [],\n erasing: [],\n drawing: []\n }, !this.options.skipLoad) {\n var c = new DmakLoader(this.options.uri),\n d = this;\n c.load(a, function (a) {\n d.prepare(a), d.options.loaded(d.strokes), d.options.autoplay && d.render();\n });\n }\n };\n\n j.VERSION = \"0.2.0\", j[\"default\"] = {\n uri: \"\",\n skipLoad: !1,\n autoplay: !0,\n height: 109,\n width: 109,\n viewBox: {\n x: 0,\n y: 0,\n w: 109,\n h: 109\n },\n step: .03,\n element: \"draw\",\n stroke: {\n animated: {\n drawing: !0,\n erasing: !0\n },\n order: {\n visible: !1,\n attr: {\n \"font-size\": \"8\",\n fill: \"#999999\"\n }\n },\n attr: {\n active: \"#BF0000\",\n stroke: \"#2C2C2C\",\n \"stroke-width\": 4,\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n }\n },\n grid: {\n show: !0,\n attr: {\n stroke: \"#CCCCCC\",\n \"stroke-width\": .5,\n \"stroke-dasharray\": \"--\"\n }\n },\n loaded: function loaded() {},\n erased: function erased() {},\n drew: function drew() {}\n }, j.fn = j.prototype = {\n prepare: function prepare(d) {\n this.strokes = a(d, this.options), this.papers = b(d.length, this.options), this.options.grid.show && c(this.papers, this.options);\n },\n erase: function erase(a) {\n if (this.timeouts.play.length) return !1;\n if (this.pointer <= 0) return !1;\n \"undefined\" == typeof a && (a = 0);\n\n do {\n this.pointer--, d(this.strokes[this.pointer], this.timeouts.erasing, this.options), this.options.erased(this.pointer);\n } while (this.pointer > a);\n },\n render: function render(a) {\n if (this.timeouts.play.length) return !1;\n if (\"undefined\" == typeof a) a = this.strokes.length;else if (a > this.strokes.length) return !1;\n\n var b,\n c = function c(a) {\n e(a.papers[a.strokes[a.pointer][\"char\"]], a.strokes[a.pointer], a.timeouts.drawing, a.options), a.options.drew(a.pointer), a.pointer++, a.timeouts.play.shift();\n },\n d = 0;\n\n for (b = 0; b < this.timeouts.erasing.length; b++) {\n window.clearTimeout(this.timeouts.erasing[b]), this.timeouts.erasing = [];\n }\n\n for (b = this.pointer; a > b; b++) {\n !this.options.stroke.animated.drawing || 0 >= d ? c(this) : this.timeouts.play.push(setTimeout(c, d, this)), d += this.strokes[b].duration;\n }\n },\n pause: function pause() {\n for (var a = 0; a < this.timeouts.play.length; a++) {\n window.clearTimeout(this.timeouts.play[a]);\n }\n\n this.timeouts.play = [];\n },\n eraseLastStrokes: function eraseLastStrokes(a) {\n this.erase(this.pointer - a);\n },\n renderNextStrokes: function renderNextStrokes(a) {\n this.render(this.pointer + a);\n }\n }, window.Dmak = j;\n}(), function () {\n \"use strict\";\n\n function a(a, c, d, e) {\n var f = new XMLHttpRequest(),\n g = (\"00000\" + d).slice(-5);\n return \"00020\" === g || \"03000\" === g ? void e.done(c, {\n paths: [],\n texts: []\n }) : (f.open(\"GET\", a + g + \".svg\", !0), f.onreadystatechange = function () {\n 4 === f.readyState && (200 === f.status ? e.done(c, b(f.response, g)) : e.error(f.statusText));\n }, void f.send());\n }\n\n function b(a, b) {\n function c(a) {\n var b,\n d = a.childNodes;\n\n for (b = 0; b < d.length; b++) {\n \"g\" === d[b].tagName ? (h.push(d[b].getAttribute(\"id\")), c(d[b]), h.splice(h.indexOf(d[b].getAttribute(\"id\")), 1)) : \"path\" === d[b].tagName && e.push({\n path: d[b].getAttribute(\"d\"),\n groups: h.slice(0)\n });\n }\n }\n\n var d,\n e = [],\n f = new DOMParser().parseFromString(a, \"application/xml\"),\n g = f.querySelectorAll(\"text\"),\n h = [];\n\n for (c(f.getElementById(\"kvg:\" + b)), d = 0; d < g.length; d++) {\n e[d].text = {\n value: g[d].textContent,\n x: g[d].getAttribute(\"transform\").split(\" \")[4],\n y: g[d].getAttribute(\"transform\").split(\" \")[5].replace(\")\", \"\")\n };\n }\n\n return e;\n }\n\n var c = function c(a) {\n this.uri = a;\n };\n\n c.prototype.load = function (b, c) {\n var d,\n e = [],\n f = b.length,\n g = 0,\n h = {\n done: function done(a, b) {\n e[a] = b, g++, g === f && c(e);\n },\n error: function error(a) {\n console.log(\"Error\", a);\n }\n };\n\n for (d = 0; f > d; d++) {\n a(this.uri, d, b.charCodeAt(d).toString(16), h);\n }\n }, window.DmakLoader = c;\n}();","var baseIndexOf = require('./_baseIndexOf'),\n isArrayLike = require('./isArrayLike'),\n isString = require('./isString'),\n toInteger = require('./toInteger'),\n values = require('./values');\n/* Built-in method references for those with the same name as other `lodash` methods. */\n\n\nvar nativeMax = Math.max;\n/**\n * Checks if `value` is in `collection`. If `collection` is a string it's checked\n * for a substring of `value`, otherwise [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to search.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for functions like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'user': 'fred', 'age': 40 }, 'fred');\n * // => true\n *\n * _.includes('pebbles', 'eb');\n * // => true\n */\n\nfunction includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = fromIndex && !guard ? toInteger(fromIndex) : 0;\n var length = collection.length;\n\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n\n return isString(collection) ? fromIndex <= length && collection.indexOf(value, fromIndex) > -1 : !!length && baseIndexOf(collection, value, fromIndex) > -1;\n}\n\nmodule.exports = includes;","var indexOfNaN = require('./_indexOfNaN');\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to search.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n\n\nfunction baseIndexOf(array, value, fromIndex) {\n if (value !== value) {\n return indexOfNaN(array, fromIndex);\n }\n\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n\n return -1;\n}\n\nmodule.exports = baseIndexOf;","/**\n * Gets the index at which the first occurrence of `NaN` is found in `array`.\n *\n * @private\n * @param {Array} array The array to search.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched `NaN`, else `-1`.\n */\nfunction indexOfNaN(array, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 0 : -1);\n\n while (fromRight ? index-- : ++index < length) {\n var other = array[index];\n\n if (other !== other) {\n return index;\n }\n }\n\n return -1;\n}\n\nmodule.exports = indexOfNaN;","/* eslint-disable no-shadow, react/prop-types, quote-props, react/jsx-no-bind */\nimport classnames from 'classnames';\nimport React, { Component, PropTypes } from 'react';\nimport Keys, { KeyHelpers } from 'es6/core/keys';\nimport Glyph, { CHEVRON_LEFT, CHEVRON_RIGHT } from 'es6/components/common/glyph';\nimport MouseoverDictionary from 'iknow-mouseover-dictionary/react';\nimport FitText from 'es6/components/common/fit-text';\nimport SoundPlayer from 'es6/components/common/sound-player';\nimport SoundManager from 'es6/services/sound-manager';\nimport { t } from 'es6/services/localization';\nimport { TranscodedImageSizes, TranscodedImage } from 'es6/components/common/transcoded-image';\n\n// TODO: See if there is a good way to decouple this.\nconst SENTENCE_LIST_WIDTH = 720;\n\n/**\n * @this SentenceTab\n * @param {Number} shiftBy how many sentences to shift over by (use negative to go back)\n */\nfunction adjustSentenceIndex(shiftBy) {\n const { sentences } = this.props;\n const { sentenceIndex } = this.state;\n let newIndex = sentenceIndex + shiftBy;\n\n // Make sure we aren't outside possible ranges.\n if (newIndex < 0) {\n newIndex = 0;\n } else if (newIndex >= sentences.length) {\n newIndex = sentences.length - 1;\n }\n\n // If the index is new, update the state. Stop the sound of that sentence\n // if it is playing.\n if (newIndex !== sentenceIndex) {\n stopSound.call(this);\n this.setState({ sentenceIndex: newIndex });\n }\n}\n\n/**\n * @this SentenceTab\n */\nfunction handleKeydown(e) {\n const { keyCode } = e;\n const { disableVimKeys } = this.props;\n const { isOpen } = this.state;\n\n const { isUp, isDown, isLeft, isRight } = disableVimKeys ? {\n isUp: keyCode => keyCode === Keys.UP,\n isDown: keyCode => keyCode === Keys.DOWN,\n isLeft: keyCode => keyCode === Keys.LEFT,\n isRight: keyCode => keyCode === Keys.RIGHT,\n } : KeyHelpers;\n\n // Detect actions for the user being in sentence mode.\n if ((isUp(keyCode) && !isOpen) || (isDown(keyCode) && isOpen)) {\n toggleSentenceTab.call(this);\n } else if (isOpen) {\n if (isLeft(keyCode)) {\n adjustSentenceIndex.call(this, -1);\n } else if (isRight(keyCode)) {\n adjustSentenceIndex.call(this, 1);\n } else if (keyCode === Keys.SPACE) {\n playSound.call(this);\n }\n }\n}\n\n/**\n * Trigger onOpened and onClosed events.\n *\n * @this SentenceTab\n */\nfunction handleTransitionEnd() {\n if (this.state.isOpen) {\n playSound.call(this);\n }\n}\n\n/**\n * @this SentenceTab\n */\nfunction playSound() {\n const { sentenceIndex } = this.state;\n const { sentences } = this.props;\n SoundManager.play(sentences[sentenceIndex].sound);\n}\n\nfunction Sentence({ sentence }) {\n const image = sentence.getImage();\n\n return (\n <li className={classnames('sentence', { 'has_image': !!image })}>\n {image && <TranscodedImage src={image} size={TranscodedImageSizes.APP_SENTENCE} className=\"image\" />}\n\n <div className=\"content\">\n <div className=\"top\">\n <div className=\"bottom_aligned\">\n <span className=\"text-and-transliteration\">\n <FitText key={sentence.getText() + sentence.getTransliteration()}>\n <p>\n <span className=\"text\" lang={sentence.cue.language}>\n <MouseoverDictionary html={sentence.getText()} />\n </span>\n {' '}\n {/* Don't shrink the font-size of the sound player icon. */}\n {sentence.sound &&\n <span data-fit-text=\"no-resize\">\n <SoundPlayer source={sentence.sound} data-fit-text=\"no-resize\" />\n </span>}\n </p>\n {sentence.getTransliteration() &&\n <p className=\"transliteration\">\n <span dangerouslySetInnerHTML={{ __html: sentence.getTransliteration() }} />\n </p>}\n </FitText>\n </span>\n </div>\n </div>\n\n <div className=\"hr\"></div>\n\n <p className=\"translation\">\n <FitText><span dangerouslySetInnerHTML={{ __html: sentence.getTranslation() }} /></FitText>\n </p>\n </div>\n </li>\n );\n}\n\n/**\n * @this SentenceTab\n */\nfunction stopSound() {\n const { sentenceIndex } = this.state;\n const { sentences } = this.props;\n SoundManager.stop(sentences[sentenceIndex].sound);\n}\n\n/**\n * @this SentenceTab\n */\nfunction toggleSentenceTab() {\n const { onOpen, onClose } = this.props;\n const { isOpen } = this.state;\n\n if (isOpen) {\n onClose.call();\n stopSound.call(this);\n this.setState({ isOpen: false });\n } else {\n onOpen.call();\n this.setState({ isOpen: true });\n }\n}\n\nconst INITIAL_STATE = { sentenceIndex: 0, isOpen: false };\n\nclass SentenceTab extends Component {\n constructor(props) {\n super(props);\n this.handleKeydown = handleKeydown.bind(this);\n this.state = INITIAL_STATE;\n }\n\n componentDidMount() {\n window.addEventListener('keydown', this.handleKeydown);\n }\n\n componentWillUpdate(nextProps) {\n // If the sentences change, reset the state of the component.\n if (nextProps.sentences !== this.props.sentences) {\n this.setState(INITIAL_STATE);\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener('keydown', this.handleKeydown);\n }\n\n render() {\n const { isOpen, sentenceIndex } = this.state;\n const { sentences } = this.props;\n\n return (\n <div className={classnames('sentence-tab', { 'sentence-tab-open': isOpen })} onTransitionEnd={handleTransitionEnd.bind(this)}>\n <h4 className=\"tab\" onClick={toggleSentenceTab.bind(this)}>\n <span>{t('sentences')}</span>\n </h4>\n\n <div className=\"scrolling-list\">\n <ul className=\"sentence-list\" style={{ transform: `translateX(-${sentenceIndex * SENTENCE_LIST_WIDTH}px)` }}>\n {sentences.map((sentence) => <Sentence sentence={sentence} key={sentence.getId()} />)}\n </ul>\n </div>\n\n <div className=\"footer\">\n <Glyph type={CHEVRON_LEFT} className=\"prev\" onClick={adjustSentenceIndex.bind(this, -1)} />\n <Glyph type={CHEVRON_RIGHT} className=\"next\" onClick={adjustSentenceIndex.bind(this, 1)} />\n\n <div className=\"pages\">\n <span className=\"current\">{sentenceIndex + 1}</span>\n {' '}\n <span className=\"separator\">/</span>\n {' '}\n <span className=\"total\">{sentences.length}</span>\n </div>\n </div>\n </div>\n );\n }\n}\n\nSentenceTab.propTypes = {\n disableVimKeys: PropTypes.bool,\n onOpen: PropTypes.func,\n onClose: PropTypes.func,\n sentences: PropTypes.arrayOf(PropTypes.object).isRequired,\n};\n\nSentenceTab.defaultProps = {\n disableVimKeys: false,\n onOpen: () => {},\n onClose: () => {},\n};\n\nexport default SentenceTab;\n","/* eslint-disable no-console, react/jsx-pascal-case, react/jsx-no-bind */\nimport classnames from 'classnames';\nimport React, { PropTypes, Component } from 'react';\nimport IME from 'es6/components/apps/ime';\nimport FitText from 'es6/components/common/fit-text';\nimport Glyph, { CORRECT_RESULT, INCORRECT_RESULT } from 'es6/components/common/glyph';\nimport { ResultTypes } from 'es6/models/quiz-result';\nimport { SPELL_CORRECT, SPELL_INCORRECT } from 'es6/core/sound-effects';\nimport SoundPlayer from 'es6/components/common/sound-player';\nimport SoundManager from 'es6/services/sound-manager';\n\n// Spelling practice states.\nconst SPELLING_PRACTICE_DEFAULT = 0;\nconst SPELLING_PRACTICE_CORRECT = 1;\nconst SPELLING_PRACTICE_INCORRECT = 2;\n\n// Time durations to disable the key input before rebuilding.\nconst DISABLE_INPUT_DURATION = 250;\n\n// Duration to show the correct/incorrect icon before fading it out.\nconst ICON_VISIBLE_DURATION = 750;\n\nconst INITIAL_STATE = {\n mode: SPELLING_PRACTICE_DEFAULT,\n enableInputTimeout: null,\n hideIconTimeout: null,\n inputDisabled: false,\n result: null,\n};\n\n/**\n * Handles the text was confirmed result from the IME.\n *\n * @this SpellingPractice\n * @param {Object} result results passed back from the IME KeyInput instance\n */\nfunction handleTextWasConfirmed(result) {\n const enableInput = () => this.setState({ inputDisabled: false });\n const enableInputTimeout = setTimeout(enableInput, DISABLE_INPUT_DURATION);\n\n const hideIcon = () => {\n // If the answer was correct, also clear the input after the fade out delay.\n if (this.state.result === ResultTypes.CORRECT) {\n this.reset();\n }\n\n this.setState({ mode: SPELLING_PRACTICE_DEFAULT });\n };\n const hideIconTimeout = setTimeout(hideIcon, ICON_VISIBLE_DURATION);\n\n const newState = {\n inputDisabled: true,\n enableInputTimeout,\n hideIconTimeout,\n result: result.result,\n };\n\n if (result.result === ResultTypes.CORRECT) {\n SoundManager.playEffect(SPELL_CORRECT);\n newState.mode = SPELLING_PRACTICE_CORRECT;\n } else {\n SoundManager.playEffect(SPELL_INCORRECT);\n newState.mode = SPELLING_PRACTICE_INCORRECT;\n }\n\n this.setState(newState);\n}\n\nclass SpellingPractice extends Component {\n constructor(props) {\n super(props);\n\n this.handleKeyDown = e => {\n if (this.state.inputDisabled) {\n console.error('IME triggered onKeyDown while disabled.');\n }\n\n // Clear the input if the user types something after an incorrect answer.\n if (this.state.result !== null) {\n this.reset();\n }\n };\n\n this.state = INITIAL_STATE;\n }\n\n componentWillUpdate(nextProps) {\n const { language, text } = this.props;\n\n if (nextProps.language !== language || nextProps.text !== text) {\n this.cancelTimeouts();\n this.setState(INITIAL_STATE);\n }\n }\n\n componentWillUnmount() {\n this.cancelTimeouts();\n }\n\n cancelTimeouts() {\n this.state.enableInputTimeout && clearTimeout(this.state.enableInputTimeout);\n this.state.hideIconTimeout && clearTimeout(this.state.hideIconTimeout);\n }\n\n reset() {\n this.refs.ime.rebuild();\n this.setState({ result: null });\n }\n\n render() {\n const { language, text, sound } = this.props;\n const { mode, inputDisabled } = this.state;\n\n return (\n <div className={classnames('spelling-practice', 'fill_in_the_blank')}>\n\n <Glyph type={CORRECT_RESULT} className={classnames('result', { reveal: mode === SPELLING_PRACTICE_CORRECT })} />\n <Glyph type={INCORRECT_RESULT} className={classnames('result', { reveal: mode === SPELLING_PRACTICE_INCORRECT })} />\n\n {sound && <SoundPlayer source={sound} />}\n\n <div className=\"ime-container\">\n <FitText key={text}>\n <IME\n ref=\"ime\"\n autoConfirm\n disabled={inputDisabled}\n language={language}\n onTextWasConfirmed={handleTextWasConfirmed.bind(this)}\n onKeyDown={this.handleKeyDown}\n text={text}\n correctLettersTypeable\n />\n </FitText>\n </div>\n </div>\n );\n }\n}\n\nSpellingPractice.propTypes = {\n language: PropTypes.string.isRequired,\n text: PropTypes.string.isRequired,\n sound: PropTypes.string,\n};\n\nexport default SpellingPractice;\n","/* eslint-disable one-var, react/sort-comp, react/jsx-first-prop-new-line, react/jsx-closing-bracket-location */\nimport React, { Component, PropTypes } from 'react';\nimport Keys from 'es6/core/keys';\nimport classnames from 'classnames';\nimport { css } from 'aphrodite';\nimport { createAndInjectStyleSheet } from 'es6/helpers/css';\nimport { t } from 'es6/services/localization';\nimport { NavButton, Navigation } from 'es6/components/apps/navigation';\nimport Glyph, { CORRECT_RESULT, REMOVE, REVIEW } from 'es6/components/common/glyph';\nimport SoundPlayer, { SOUND_PLAYER_UNSTYLED } from 'es6/components/common/sound-player';\nimport SoundManager from 'es6/services/sound-manager';\nimport FitText from 'es6/components/common/fit-text';\nimport MouseoverDictionary from 'iknow-mouseover-dictionary/react';\nimport BasicModal from 'es6/components/common/modals/basic';\nimport cookies from 'es6/services/cookies';\nimport {\n ANSWER_CONFIRMATION_ANSWER_TEXT_COLOR,\n ANSWER_CONFIRMATION_ANSWER_BACKGROUND_COLOR,\n} from 'es6/core/styles/colors';\nimport AlignBottom from 'es6/components/layout/align-bottom';\nimport FadeInSentenceTask, {\n ANIMATION_START,\n ANIMATION_FADE_IN_SENTENCE,\n ANIMATION_FADE_IN_SENTENCE_END,\n ANIMATION_PLAY_SENTENCE,\n ANIMATION_FADE_IN_SENTENCE_TRANSLATION,\n ANIMATION_FADE_IN_SENTENCE_TRANSLATION_END,\n ANIMATION_END,\n} from 'es6/components/apps/screens/answer-confirmation-tasks';\nimport FillInTheBlankAnswer from 'es6/components/apps/fill-in-the-blank-answer';\nimport { parseIMEHtml } from 'es6/components/apps/ime';\n\nconst STUDY_LESS_MORE_MODAL_SKIP_COOKIE = 'skip_study_more_less';\n\nexport const\n STUDY_LESS = 0,\n STUDY_MORE = 1;\n\nexport const\n MULTIPLE_CHOICE_ANSWER = 0,\n FILL_IN_THE_BLANK_ANSWER = 1;\n\nexport default class AnswerConfirmationScreen extends Component {\n constructor() {\n super();\n\n this.state = {\n animationState: ANIMATION_START,\n isStudyLessMoreModalOpen: false,\n };\n\n this.setAnimationState = animationState => this.setState({ animationState });\n\n // Event callbacks.\n this.onSentenceTransitionEnd = e => {\n if (this.state.animationState === ANIMATION_FADE_IN_SENTENCE) {\n this.setAnimationState(ANIMATION_FADE_IN_SENTENCE_END);\n }\n };\n this.onSentenceTranslationTransitionEnd = e => {\n if (this.state.animationState === ANIMATION_FADE_IN_SENTENCE_TRANSLATION) {\n this.setAnimationState(ANIMATION_FADE_IN_SENTENCE_TRANSLATION_END);\n }\n\n // Prevent the sentence translation transitionend event from bubbling up and triggering the\n // transitionend event on the sentence container.\n e.stopPropagation();\n };\n\n this.playSentenceIfNeeded = () => {\n // If the sound hasn't been played yet, play it.\n if (this.state.animationState < ANIMATION_PLAY_SENTENCE) {\n this.playSentence();\n }\n };\n\n this.onNext = () => {\n // Skip to end of animation when user presses the next button.\n if (this.state.animationState !== ANIMATION_END) {\n this.playSentenceIfNeeded();\n\n this.setAnimationState(ANIMATION_END);\n } else {\n // If the animation is already over, show the next screen.\n this.props.onNext();\n }\n };\n\n this.onKeyDown = e => {\n // If the user presses enter or space, skip to the end of the animation.\n if (e.keyCode === Keys.ENTER && this.state.animationState !== ANIMATION_END) {\n // Prevent nav buttons from being pressed if one currently has focus.\n e.preventDefault();\n\n this.playSentenceIfNeeded();\n\n this.setAnimationState(ANIMATION_END);\n } else if (e.keyCode === Keys.SPACE && this.props.sentence && this.props.sentence.soundUrl) {\n // Also skip the animation sequence when the user presses space, but always replay the\n // sentence audio.\n this.playSentence();\n\n this.setAnimationState(ANIMATION_END);\n }\n };\n\n this.openStudyLessModal = () => this.openStudyLessMoreModal(STUDY_LESS);\n this.openStudyMoreModal = () => this.openStudyLessMoreModal(STUDY_MORE);\n this.closeStudyLessMoreModal = () => {\n this.setState({\n isStudyLessMoreModalOpen: false,\n onStudyLessMoreModalConfirm: null,\n });\n };\n }\n\n playSentence() {\n if (this.props.sentence && this.props.sentence.soundUrl) {\n SoundManager.play(this.props.sentence.soundUrl);\n }\n }\n\n openStudyLessMoreModal(lessOrMore) {\n const skipModal = cookies.get(STUDY_LESS_MORE_MODAL_SKIP_COOKIE);\n\n if (skipModal) {\n // Just call the callback if the skip cookie is set.\n this.props.onStudyLessMore(lessOrMore);\n } else {\n this.setState({\n isStudyLessMoreModalOpen: true,\n onStudyLessMoreModalConfirm: () => {\n this.props.onStudyLessMore(lessOrMore);\n\n // If the user clicks the confirm button, skip the dialog the next time they press one of\n // the study less/more buttons.\n cookies.set(STUDY_LESS_MORE_MODAL_SKIP_COOKIE, true, { expires: 356, path: '/' });\n\n this.closeStudyLessMoreModal();\n },\n });\n }\n }\n\n componentDidMount() {\n window.addEventListener('keydown', this.onKeyDown);\n }\n\n componentWillUnmount() {\n window.removeEventListener('keydown', this.onKeyDown);\n\n // Stop playing the sentence if it is currently playing.\n if (this.props.sentence && this.props.sentence.soundUrl) {\n SoundManager.stop(this.props.sentence.soundUrl);\n }\n }\n\n render() {\n const { answerType, answerText, answerLanguage, imeHtml, sentence } = this.props;\n\n const animationTaskProps = {\n setAnimationState: this.setAnimationState,\n animationState: this.state.animationState,\n sentence,\n };\n\n const answerClassName = classnames(css(styles.answer), {\n [css(styles.answerMultipleChoice)]: answerType === MULTIPLE_CHOICE_ANSWER,\n [css(styles.answerFillInTheBlank)]: answerType === FILL_IN_THE_BLANK_ANSWER,\n });\n\n const answerContentClassName = classnames({\n [css(styles.answerMultipleChoiceContent)]: answerType === MULTIPLE_CHOICE_ANSWER,\n [css(styles.answerFillInTheBlankContent)]: answerType === FILL_IN_THE_BLANK_ANSWER,\n });\n\n const answerCorrectIconClassName = classnames(css(styles.answerCorrectIcon), {\n [css(styles.answerMultipleChoiceCorrectIcon)]: answerType === MULTIPLE_CHOICE_ANSWER,\n [css(styles.answerFillInTheBlankCorrectIcon)]: answerType === FILL_IN_THE_BLANK_ANSWER,\n });\n\n // Need to use non-Aphrodite CSS to style <b> elements inside the sentence data.\n // TODO: Find out if there is any to style tags with Aphrodite.\n const sentenceContainerClassName = classnames('sentence', css(styles.sentenceContainer), {\n [css(styles.hidden)]: this.state.animationState < ANIMATION_FADE_IN_SENTENCE,\n [css(styles.fadeIn)]: this.state.animationState === ANIMATION_FADE_IN_SENTENCE,\n });\n\n const sentenceClassName = classnames(css(styles.sentence), {\n [css(styles.sentenceWithImage)]: sentence && sentence.imageUrl,\n });\n\n const sentenceTranslationClassName = classnames(css(styles.sentenceTranslation), {\n [css(styles.hidden)]: this.state.animationState < ANIMATION_FADE_IN_SENTENCE_TRANSLATION,\n [css(styles.fadeIn)]: this.state.animationState === ANIMATION_FADE_IN_SENTENCE_TRANSLATION,\n });\n\n return (\n <div className=\"screen\">\n {this.state.animationState < ANIMATION_END && <FadeInSentenceTask {...animationTaskProps} />}\n\n <div className={classnames('screen-content', css(styles.screen))}>\n <div className={css(styles.message)}>\n {t('js_iknow.well done!')}\n </div>\n\n <div className={answerClassName}>\n <Glyph type={CORRECT_RESULT} className={answerCorrectIconClassName} />\n\n <span className={answerContentClassName}>\n <FitText key={answerText}>\n <span className=\"forceLanguage\" lang={answerLanguage}>\n <MouseoverDictionary>\n {answerType === FILL_IN_THE_BLANK_ANSWER ?\n <FillInTheBlankAnswer imeState={parseIMEHtml(imeHtml)} /> :\n answerText}\n </MouseoverDictionary>\n </span>\n </FitText>\n </span>\n </div>\n\n {sentence && (\n <div className={sentenceContainerClassName} onTransitionEnd={this.onSentenceTransitionEnd}>\n {sentence.imageUrl && (\n <div style={{ backgroundImage: `url(${sentence.imageUrl})` }} className={css(styles.sentenceImage)} />\n )}\n\n <div className={sentenceClassName}>\n <div className={css(styles.sentenceContent)}>\n <AlignBottom>\n {sentence.soundUrl &&\n <SoundPlayer source={sentence.soundUrl} variant={SOUND_PLAYER_UNSTYLED} className={css(styles.sentenceSoundPlayer)} />}\n\n <FitText key={sentence.text}>\n <div className={css(styles.sentenceText)}>\n <span className=\"forceLanguage\" lang={sentence.language}>\n <MouseoverDictionary html={sentence.text} />\n </span>\n </div>\n {sentence.transliteration &&\n <div className={css(styles.sentenceTransliteration)}\n dangerouslySetInnerHTML={{ __html: sentence.transliteration }} />}\n </FitText>\n </AlignBottom>\n </div>\n\n {sentence.translation && (\n <div className={sentenceTranslationClassName} onTransitionEnd={this.onSentenceTranslationTransitionEnd}>\n <FitText><span dangerouslySetInnerHTML={{ __html: sentence.translation }} /></FitText>\n </div>\n )}\n </div>\n </div>\n )}\n\n <div className={css(styles.bottomMessage)} dangerouslySetInnerHTML={{ __html: t('choose-item-difficulty') }} />\n </div>\n\n <Navigation>\n <NavButton align=\"left\" onClick={this.props.onRemove} title={t('js_iknow.remove')} className=\"btn-danger btn-nav-icon\">\n <Glyph type={REMOVE} />\n </NavButton>\n <NavButton align=\"left\" onClick={this.props.onReview} title={t('js_iknow.review')} className=\"btn-nav-icon\">\n <Glyph type={REVIEW} />\n </NavButton>\n <NavButton align=\"left\" className=\"btn-nav-icon\" onClick={this.props.onIncorrect}>\n {t('mark-as-incorrect')}\n </NavButton>\n\n <NavButton align=\"center\" className={css(styles.navStudyLessMore)} onClick={this.openStudyLessModal}>{t('easy')}</NavButton>\n <NavButton align=\"center\" className={css(styles.navStudyLessMore)} onClick={this.openStudyMoreModal}>{t('hard')}</NavButton>\n\n <NavButton align=\"right\" focused onClick={this.onNext}>{t('js_iknow.next')}</NavButton>\n </Navigation>\n\n <BasicModal\n isOpen={this.state.isStudyLessMoreModalOpen}\n onClose={this.closeStudyLessMoreModal}\n title={t('study-more-less-dialogue-header')}\n className={css(styles.modal)}\n >\n <div className={css(styles.modalContent)}>\n <p dangerouslySetInnerHTML={{ __html: t('study-more-less-dialogue-description') }} />\n </div>\n\n <footer className={css(styles.modalButtonContainer)}>\n <button onClick={this.state.onStudyLessMoreModalConfirm} className=\"btn btn-bar btn-primary ok\">{t('ok')}</button>\n </footer>\n </BasicModal>\n </div>\n );\n }\n}\n\nAnswerConfirmationScreen.propTypes = {\n onRemove: PropTypes.func.isRequired,\n onIncorrect: PropTypes.func.isRequired,\n onReview: PropTypes.func.isRequired,\n onNext: PropTypes.func.isRequired,\n onStudyLessMore: PropTypes.func.isRequired,\n answerType: PropTypes.number,\n answerText: PropTypes.string,\n answerLanguage: PropTypes.string,\n imeHtml: PropTypes.string,\n sentence: PropTypes.shape({\n text: PropTypes.string,\n transliteration: PropTypes.string,\n translation: PropTypes.string,\n language: PropTypes.string,\n imageUrl: PropTypes.string,\n soundUrl: PropTypes.string,\n }),\n};\n\nconst ANSWER_HEIGHT = 60;\nconst ANSWER_HEIGHT_PX = `${ANSWER_HEIGHT}px`;\n\nconst styles = createAndInjectStyleSheet({\n screen: {\n lineHeight: '1.2',\n },\n message: {\n position: 'absolute',\n top: '20px',\n width: '100%',\n textAlign: 'center',\n fontSize: '14px',\n },\n answer: {\n position: 'absolute',\n top: '70px',\n left: '100px',\n right: '100px',\n },\n answerMultipleChoice: {\n color: ANSWER_CONFIRMATION_ANSWER_TEXT_COLOR,\n backgroundColor: ANSWER_CONFIRMATION_ANSWER_BACKGROUND_COLOR,\n borderRadius: '5px',\n padding: `10px ${15 + ANSWER_HEIGHT}px 10px 15px`,\n height: ANSWER_HEIGHT_PX,\n maxHeight: ANSWER_HEIGHT_PX,\n fontSize: '24px',\n },\n answerFillInTheBlank: {\n fontSize: '28px',\n textAlign: 'center',\n height: '90px',\n },\n answerMultipleChoiceContent: {\n },\n answerFillInTheBlankContent: {\n display: 'inline-block',\n verticalAlign: 'middle',\n maxHeight: '90px',\n },\n answerCorrectIcon: {\n width: ANSWER_HEIGHT_PX,\n height: ANSWER_HEIGHT_PX,\n fontSize: ANSWER_HEIGHT_PX,\n lineHeight: '1',\n },\n answerMultipleChoiceCorrectIcon: {\n position: 'absolute',\n right: '10px',\n top: '10px',\n },\n answerFillInTheBlankCorrectIcon: {\n display: 'inline-block',\n verticalAlign: 'middle',\n marginLeft: '-80px',\n marginRight: '15px',\n },\n sentenceContainer: {\n position: 'absolute',\n top: '170px',\n left: '100px',\n right: '100px',\n },\n sentence: {\n },\n sentenceWithImage: {\n marginRight: '210px',\n },\n sentenceImage: {\n float: 'right',\n marginLeft: '10px',\n marginTop: '10px',\n width: '180px',\n height: '166px',\n borderRadius: '8px',\n backgroundPosition: 'center',\n backgroundSize: '180px 168px',\n },\n sentenceContent: {\n height: '80px',\n maxHeight: '80px',\n },\n sentenceSoundPlayer: {\n position: 'absolute',\n right: '100%',\n paddingRight: '5px',\n lineHeight: '31px',\n fontSize: '20px',\n },\n sentenceText: {\n fontSize: '26px',\n verticalAlign: 'middle',\n },\n sentenceTransliteration: {\n marginTop: '5px',\n fontSize: '14px',\n },\n sentenceTranslation: {\n marginTop: '15px',\n borderTop: '1px solid rgba(255, 255, 255, 0.3)',\n paddingTop: '15px',\n fontSize: '22px',\n maxHeight: '80px',\n },\n hidden: {\n opacity: '0',\n },\n fadeIn: {\n transition: 'opacity 500ms',\n },\n navStudyLessMore: {\n // Override nav button default min-width for study less/more buttons.\n minWidth: '80px !important',\n },\n modal: {\n maxWidth: '500px',\n },\n modalContent: {\n padding: '15px',\n },\n modalButtonContainer: {\n textAlign: 'center',\n padding: '10px 0',\n },\n bottomMessage: {\n position: 'absolute',\n bottom: '5px',\n width: '100%',\n textAlign: 'center',\n fontSize: '12px',\n },\n});\n","/* eslint-disable no-restricted-syntax */\n// Use the no-important version of Aphrodite because the !important styles sometimes conflict with\n// the font sizes set by FitText.\nimport { StyleSheet, css } from 'aphrodite/no-important';\n\n/**\n * Wrapper for Aphrodite's StyleSheet.create() that immediately calls css() on all of the style\n * definitions to force Aphrodite to inject the styles as soon as possible.\n *\n * This is a hack to fix problems caused by trying to get an element's computed styles before the\n * styles injected by Aphrodite get applied to the element (such as the FitText component).\n */\nexport function createAndInjectStyleSheet(styleDefinitions) {\n const styles = StyleSheet.create(styleDefinitions);\n\n for (const className in styles) {\n if (styles.hasOwnProperty(className)) {\n css(styles[className]);\n }\n }\n\n return styles;\n}\n","module.exports = require('./lib/no-important.js');","// Module with the same interface as the core aphrodite module,\n// except that styles injected do not automatically have !important\n// appended to them.\n//\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nvar _inject = require('./inject');\n\nvar _indexJs = require('./index.js');\n\nvar css = function css() {\n for (var _len = arguments.length, styleDefinitions = Array(_len), _key = 0; _key < _len; _key++) {\n styleDefinitions[_key] = arguments[_key];\n }\n\n var useImportant = false; // Don't append !important to style definitions\n\n return (0, _inject.injectAndGetClassName)(useImportant, styleDefinitions);\n};\n\nexports.StyleSheet = _indexJs.StyleSheet;\nexports.StyleSheetServer = _indexJs.StyleSheetServer;\nexports.StyleSheetTestUtils = _indexJs.StyleSheetTestUtils;\nexports.css = css;","/* eslint-disable react/prop-types */\nimport React from 'react';\nimport { StyleSheet, css } from 'aphrodite';\n\nexport default function AlignBottom(props) {\n return (\n <div className={css(styles.container)}>\n <div className={css(styles.pullBottom)}>\n {props.children}\n </div>\n </div>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n position: 'relative',\n width: '100%',\n height: '100%',\n },\n pullBottom: {\n position: 'absolute',\n width: '100%',\n bottom: '0px',\n },\n});\n","/* eslint-disable one-var */\nimport { PropTypes } from 'react';\nimport { task, call } from 'react-task';\nimport { delay } from 'react-task/promises';\nimport SoundManager from 'es6/services/sound-manager';\nimport { CORRECT } from 'es6/core/sound-effects';\n\nexport const\n ANIMATION_START = 0,\n ANIMATION_FADE_IN_SENTENCE = 1,\n ANIMATION_FADE_IN_SENTENCE_END = 2,\n ANIMATION_PLAY_SENTENCE = 3,\n ANIMATION_FADE_IN_SENTENCE_TRANSLATION = 4,\n ANIMATION_FADE_IN_SENTENCE_TRANSLATION_END = 5,\n ANIMATION_END = 6;\n\nexport function* fadeInSentence(getProps) {\n const { setAnimationState, sentence } = yield call(getProps);\n\n // Play sound effect and wait for it to finish playing.\n yield call(playEffectPromise, CORRECT);\n\n if (sentence) {\n // Fade in sentence and wait for the transition to end.\n yield call(setAnimationState, ANIMATION_FADE_IN_SENTENCE);\n // Wait until the props match the filter.\n yield call(getProps, ({ animationState }) => animationState === ANIMATION_FADE_IN_SENTENCE_END);\n\n // Play the audio for the sentence and wait for it to finish.\n if (sentence.soundUrl) {\n yield call(setAnimationState, ANIMATION_PLAY_SENTENCE);\n yield call(playSoundPromise, sentence.soundUrl);\n }\n\n if (sentence.translation) {\n // Delay before showing the sentence translation and then fade it in.\n yield call(delay, 500);\n yield call(setAnimationState, ANIMATION_FADE_IN_SENTENCE_TRANSLATION);\n\n // Wait until animation finishes.\n yield call(getProps, ({ animationState }) => animationState === ANIMATION_FADE_IN_SENTENCE_TRANSLATION_END);\n }\n }\n\n yield call(setAnimationState, ANIMATION_END);\n}\n\nconst FadeInSentenceTask = task(fadeInSentence);\n\nFadeInSentenceTask.propTypes = {\n setAnimationState: PropTypes.func.isRequired,\n animationState: PropTypes.number.isRequired,\n sentence: PropTypes.shape({\n text: PropTypes.string,\n translation: PropTypes.string,\n soundUrl: PropTypes.string,\n }),\n};\n\nexport default FadeInSentenceTask;\n\n// Side effect helper functions that return promises for use inside the task generator function.\nexport function playEffectPromise(url) {\n return new Promise((resolve, reject) => {\n SoundManager.playEffect(url, { finished: resolve });\n });\n}\n\nexport function playSoundPromise(url) {\n return new Promise((resolve, reject) => {\n SoundManager.play(url, { finished: resolve });\n });\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _task = require('./task');\n\nObject.defineProperty(exports, 'task', {\n enumerable: true,\n get: function get() {\n return _task.task;\n }\n});\n\nvar _proc = require('./proc');\n\nObject.defineProperty(exports, 'call', {\n enumerable: true,\n get: function get() {\n return _proc.call;\n }\n});\nObject.defineProperty(exports, 'callSync', {\n enumerable: true,\n get: function get() {\n return _proc.callSync;\n }\n});\nObject.defineProperty(exports, 'callMethod', {\n enumerable: true,\n get: function get() {\n return _proc.callMethod;\n }\n});\nObject.defineProperty(exports, 'callMethodSync', {\n enumerable: true,\n get: function get() {\n return _proc.callMethodSync;\n }\n});\nObject.defineProperty(exports, 'apply', {\n enumerable: true,\n get: function get() {\n return _proc.apply;\n }\n});\nObject.defineProperty(exports, 'applySync', {\n enumerable: true,\n get: function get() {\n return _proc.applySync;\n }\n});\nObject.defineProperty(exports, 'run', {\n enumerable: true,\n get: function get() {\n return _proc.run;\n }\n});","'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Task = undefined;\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nexports.task = task;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _proc = require('./proc');\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof(call) === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n/**\n * A helper function to create a stateless React component that renders a Task\n * component with the given generator function.\n */\n\n\nfunction task(generatorFunction) {\n var component = function component(props) {\n return _react2[\"default\"].createElement(Task, _extends({\n proc: generatorFunction\n }, props));\n }; // If the function is named, use its name as the component's displayName for\n // debugging purposes.\n\n\n component.displayName = generatorFunction.name || generatorFunction.displayName;\n return component;\n}\n/**\n * <Task proc={...} ... />\n *\n * A Task component starts a Proc (which is basically a background process that\n * runs a generator function) when it gets mounted, and stops the Proc when it\n * gets unmounted (or when the value of the proc prop gets changed).\n *\n * The generator function will get passed a `getProps` function, which returns a\n * promise that resolves with the component's current props. If you pass a\n * function to the getProps function, the props will be passed to that function\n * and the promise returned by getProps will only resolve once that function\n * returns a truthy value.\n *\n * NOTE: A Task will only stop its Proc when it gets unmounted or the proc prop\n * is changed. To restart a Task with new props, pass a unique \"key\" prop, which\n * will force React to unmount the Task when the key changes.\n *\n * Alternatively, you can use the this.getProps() method (which is also passed\n * as the second argument to he generator function) to get the current state of\n * the Task's props in the middle of the Task's execution.\n */\n\n\nvar Task = exports.Task = function (_React$Component) {\n _inherits(Task, _React$Component);\n\n function Task() {\n _classCallCheck(this, Task); // Private variables.\n\n\n var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(Task).call(this));\n\n _this.onPropsReceived = null;\n _this.proc = null;\n _this.boundGetProps = _this.getProps.bind(_this);\n _this.boundOnStep = _this.onStep.bind(_this);\n _this.wasUnmounted = false;\n return _this;\n }\n /**\n * Returns a promise that resolves with the props when they match the given\n * filter, or resolves with the current props immediately if no filter\n * function is provided.\n */\n\n\n _createClass(Task, [{\n key: 'getProps',\n value: function getProps() {\n var _this2 = this;\n\n var filterFn = arguments.length <= 0 || arguments[0] === undefined ? function () {\n return true;\n } : arguments[0];\n return new Promise(function (resolve, reject) {\n // Check and resolve immediately if the props already match the filter.\n if (filterFn(_this2.props)) {\n resolve(_this2.props);\n return;\n }\n\n if (_this2.onPropsReceived !== null) {\n throw new Error('Cannot call getProps more than once at a time.');\n } // Check if the props match the filter whenever they change.\n\n\n _this2.onPropsReceived = function (nextProps) {\n if (filterFn(nextProps)) {\n resolve(nextProps);\n _this2.onPropsReceived = null;\n }\n };\n });\n }\n /**\n * Updates the state with the result of the last call for debugging purposes.\n */\n\n }, {\n key: 'onStep',\n value: function onStep(step) {\n // Don't update the state if the component has already been unmounted.\n if (!this.wasUnmounted) {\n this.setState({\n currentStep: step\n });\n }\n }\n }, {\n key: 'start',\n value: function start() {\n var generator = this.props.proc(this.boundGetProps);\n this.proc = (0, _proc.runProc)(generator, this.boundOnStep);\n }\n }, {\n key: 'stop',\n value: function stop() {\n if (this.proc) {\n this.proc.cancel();\n }\n } // React lifecycle methods\n // -----------------------\n //\n // Starts a proc (which is basically a background process that runs a\n // generator function) when the Task component gets mounted, and stop the proc\n // when it gets unmounted.\n //\n\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.start(this.props);\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n if (this.props.proc !== nextProps.proc) {\n console.warn('Changing the proc property of the Task component will not ' + 'cause the process to restart. Use the task() helper function instead of ' + 'using the Task component directly, or set a key prop on the Task ' + 'component to make it mount a new component when the proc changes.');\n } else {\n if (this.onPropsReceived !== null) {\n this.onPropsReceived(nextProps);\n }\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.stop();\n this.wasUnmounted = true;\n } // Task components never render anything by default.\n\n }, {\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate() {\n return false;\n }\n }, {\n key: 'render',\n value: function render() {\n return null;\n }\n }]);\n\n return Task;\n}(_react2[\"default\"].Component);\n\nTask.propTypes = {\n proc: _react2[\"default\"].PropTypes.func.isRequired,\n children: function children(props, propName, componentName) {\n if (props.children) {\n return new Error('Task components should not have any children. To organize ' + 'tasks in a hierarchy, use normal elements like <div>, <span>, etc.');\n }\n }\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.delay = delay;\n/**\n * Returns a promise that resolves after the given number of milliseconds.\n */\n\nfunction delay(timeoutMilliseconds) {\n var timeoutId = void 0;\n var promise = new Promise(function (resolve, reject) {\n timeoutId = setTimeout(resolve, timeoutMilliseconds);\n });\n\n promise.cancel = function () {\n clearTimeout(timeoutId);\n };\n\n return promise;\n} // TODO: Make more convenience functions that create promises.","/* eslint-disable prefer-template, no-unused-vars */\nimport React, { PropTypes } from 'react';\nimport { StyleSheet, css } from 'aphrodite';\nimport { IME_ITEM, IME_SPACE } from 'es6/components/apps/ime';\n\n/**\n * Wraps each typeable letter in the answer text with an element styled to look like a fill in the\n * blank input field.\n *\n * In addition, spaces have a className applied to them to make them wider than usual.\n */\nexport default function FillInTheBlankAnswer({ imeState = [] }) {\n const elements = imeState.map((object, index) => {\n if (object.type === IME_ITEM) {\n return object.letters.map(({ isTypeable, text }, letterIndex) => {\n const key = `${index}-${letterIndex}`;\n const className = isTypeable ? css(styles.answerFillInTheBlankLetter) : null;\n\n return <span key={key} className={className}>{text}</span>;\n });\n } else {\n const key = index;\n const className = object.type === IME_SPACE ? css(styles.answerLetterSpace) : null;\n\n return <span key={key} className={className}>{object.text}</span>;\n }\n });\n\n return <span>{elements}</span>;\n}\n\nFillInTheBlankAnswer.propTypes = {\n imeState: PropTypes.arrayOf(PropTypes.object),\n};\n\nexport const styles = StyleSheet.create({\n answerFillInTheBlankLetter: {\n display: 'inline-block',\n borderBottom: '2px solid white',\n marginRight: '2px',\n textAlign: 'center',\n verticalAlign: 'top',\n width: '0.9em',\n height: '1.2em',\n },\n answerLetterSpace: {\n display: 'inline-block',\n width: '0.6em',\n },\n});\n// Pre-insert Aphrodite styles so that they are available to FitText component.\nObject.keys(styles).forEach(className => css(styles[className]));\n","/* eslint-disable prefer-template */\nimport Config from 'es6/core/config';\nimport ItemQuizBase from 'es6/controllers/apps/quizzes/item-quiz-base';\nimport Logger from 'es6/services/logger';\nimport { ResultTypes } from 'es6/models/quiz-result';\nimport StudyScreen from 'es6/components/apps/screens/study';\n\n/**\n * @this Study\n */\nfunction handleRemove() {\n this._screenManager.fireEvent('skip_item_initiated');\n}\n\nexport class Study extends ItemQuizBase {\n constructor(...args) {\n super(...args);\n this._setQuizType('Study');\n }\n\n show() {\n const { itemPackage } = this;\n const screenProperties = {\n isNew: !itemPackage.memory,\n itemPackage,\n onNext: this.finishQuiz.bind(this),\n onRemove: handleRemove.bind(this),\n showTranscription: Config.showTranscriptions,\n };\n\n Logger.info('Quiz', 'Showing Study quiz for ' + itemPackage.item.cue.text, this);\n this.result.setResult(ResultTypes.SEEN);\n this._screenManager.renderComponent(StudyScreen, screenProperties);\n this.result.beginPhase('study');\n }\n}\n\nexport default Study;\n","import RapidChoiceBase from 'es6/controllers/apps/quizzes/rapid-choice-base';\n\nclass RapidChoicePair extends RapidChoiceBase {\n constructor(itemPackage, ...args) {\n super(itemPackage, ...args);\n this._setQuizType('RapidChoicePair');\n this._setDistractor(itemPackage.distractors.response);\n this.recall = 'cue';\n this.recallPrompt = itemPackage.getText();\n this.answer = itemPackage.getTranslation();\n }\n}\n\nexport default RapidChoicePair;\n","/* eslint-disable no-shadow, react/sort-comp */\nimport classnames from 'classnames';\nimport React from 'react';\nimport Keys from 'es6/core/keys';\nimport Localization from 'es6/services/localization';\nimport FitText from 'es6/components/common/fit-text';\nimport { MCQuizChoice, MCQuizChoices } from 'es6/components/apps/mc-quiz-choices';\nimport { RAPID_CHOICE_CORRECT, RAPID_CHOICE_INCORRECT, TIMEOUT } from 'es6/core/sound-effects';\nimport SoundManager from 'es6/services/sound-manager';\n\nconst INITIAL_STATE = {\n answered: false,\n chosenIndex: -1,\n fadeOut: false,\n isCorrect: false,\n timeout: null,\n};\n\nconst IS_CORRECT_INTERVAL = 500;\n\nconst IS_INCORRECT_INTERVAL = 1000;\n\nconst FADE_OUT_TIME = 300;\n\n/**\n * Handles the animation phase of the rapid choice component.\n * This is essentially a two part phase.\n *\n * One is to give the user enough time to see the results of their\n * answer (which may or may not be different for correct and incorrect).\n *\n * The second part is to perform the fade out animation and send back\n * the onQuizFinished response.\n *\n * @this RapidChoice\n */\nfunction animateAndFadeOut() {\n const { isCorrect, fadeOut } = this.state;\n\n // Already fading out, no need to do anything.\n if (fadeOut) {\n return;\n }\n\n // Animate for 500 milliseconds if the user was correct.\n // Animate for 1000 if they were wrong.\n // After the animation, perform the transition and move to the next quiz\n const timeoutInterval = isCorrect ? IS_CORRECT_INTERVAL : IS_INCORRECT_INTERVAL;\n const timeout = setTimeout(() => {\n const timeout = setTimeout(this.props.onQuizFinished.bind(this), FADE_OUT_TIME);\n this.setState({ fadeOut: true, timeout });\n }, timeoutInterval);\n\n this.setState({ timeout });\n}\n\n/**\n * Callback for when an option is clicked.\n *\n * @this RapidChoice\n * @param {Number} choiceIndex the index of the choice made\n */\nfunction handleAnswer(chosenIndex) {\n const { correctChoiceIndex, timedOut } = this.props;\n\n // Only allow the quiz to be completed once.\n if (this.state.answered || timedOut) {\n return;\n }\n\n const isCorrect = chosenIndex === correctChoiceIndex;\n\n if (isCorrect) {\n SoundManager.playEffect(RAPID_CHOICE_CORRECT);\n } else {\n SoundManager.playEffect(RAPID_CHOICE_INCORRECT);\n }\n\n this.setState({ answered: true, chosenIndex, isCorrect });\n this.props.onAnswer.call(this, isCorrect, chosenIndex);\n animateAndFadeOut.call(this);\n}\n\n/**\n * Plays the sound only if rendering a cue.\n */\nfunction playSound() {\n const { recallPromptSound } = this.props;\n\n if (recallPromptSound) {\n SoundManager.play(recallPromptSound, {}, true);\n }\n}\n\n/**\n * Helper method to render a choice.\n *\n * @this RapidChoice\n * @param {Number} choiceIndex index of choice to render\n * @param {Array} keyCode keyCode to pass into the MCQuizChoice\n */\nfunction renderChoice(choiceIndex, keyCode) {\n const { correctChoiceIndex, choices, timedOut } = this.props;\n const { answered, chosenIndex, isCorrect } = this.state;\n\n // Is the choice that was chosen?\n const isChosenIndex = choiceIndex === chosenIndex;\n\n const className = classnames({\n 'mc-quiz-choice-correct': answered && isChosenIndex && isCorrect,\n 'mc-quiz-choice-incorrect': answered && isChosenIndex && !isCorrect,\n 'mc-quiz-choice-highlight': timedOut && choiceIndex === correctChoiceIndex,\n });\n\n const choice = choices[choiceIndex];\n const onClick = handleAnswer.bind(this, choiceIndex);\n\n const props = {\n key: choice,\n keyCode,\n className,\n onClick,\n disabled: this.isDone(),\n };\n\n return (<MCQuizChoice {...props}>{choice}</MCQuizChoice>);\n}\n\nclass RapidChoice extends React.Component {\n constructor(...args) {\n super(...args);\n this.state = INITIAL_STATE;\n }\n\n componentWillMount() {\n playSound.call(this);\n }\n\n // Play the item package sound if answered or timed out are not set.\n componentDidUpdate() {\n const { timedOut } = this.props;\n const { answered } = this.state;\n\n if (!timedOut && !answered) {\n playSound.call(this);\n }\n }\n\n componentWillUnmount() {\n clearTimeout(this.state.timeout);\n }\n\n /**\n * If the choices change, reset the state.\n */\n componentWillReceiveProps(nextProps) {\n const { choices, timedOut } = this.props;\n\n // Essentially resets the state.\n if (nextProps.choices !== choices) {\n clearTimeout(this.state.timeout);\n this.setState(INITIAL_STATE);\n }\n\n // If timed out flag is set, play the timed out audio and fade out.\n if (nextProps.timedOut && !timedOut) {\n SoundManager.playEffect(TIMEOUT);\n animateAndFadeOut.call(this);\n }\n }\n\n isDone() {\n // If the animation delay or fade out animation has started, then the quiz is over.\n return !!(this.state.timeout || this.state.fadeOut);\n }\n\n /**\n * Because we don't want the arrow events to work on the multiple choice menu,\n * just disable it and let the choices handle the events themselves.\n */\n render() {\n const { recallPrompt } = this.props;\n const recallPromptClasses = classnames('recall-prompt animated', {\n 'fade-out-left': this.state.fadeOut,\n });\n\n return (\n <div className=\"screen screen-rapid-choice\">\n <div className=\"screen-content\">\n <div className=\"message\">\n <p className=\"know\">{Localization.t('do you know this word?')}</p>\n </div>\n\n <p className={recallPromptClasses}>\n <FitText minFontSize={20}>{recallPrompt}</FitText>\n </p>\n\n {/* Set a key to reset the focus when the quiz changes. */}\n <MCQuizChoices key={recallPrompt} enableArrowKeys={false} disabled={this.isDone()} className=\"mc-quiz-choices-center\">\n {renderChoice.call(this, 0, [Keys[1], Keys.UP, Keys.K])}\n {renderChoice.call(this, 1, [Keys[2], Keys.DOWN, Keys.J])}\n </MCQuizChoices>\n </div>\n </div>\n );\n }\n}\n\nRapidChoice.propTypes = {\n correctChoiceIndex: React.PropTypes.number.isRequired,\n choices: React.PropTypes.array.isRequired,\n onAnswer: React.PropTypes.func.isRequired,\n onQuizFinished: React.PropTypes.func.isRequired,\n recallPrompt: React.PropTypes.string.isRequired,\n recallPromptSound: React.PropTypes.string,\n timedOut: React.PropTypes.bool,\n};\n\nRapidChoice.defaultProps = {\n recallPromptSound: null,\n timedOut: false,\n};\n\nexport default RapidChoice;\n","/* eslint-disable react/prop-types, react/no-multi-comp */\nimport React from 'react';\nimport Keys, { KeyHelpers } from 'es6/core/keys';\nimport classnames from 'classnames';\n\n/**\n * Click handler for the MC Choice.\n *\n * @this MCQuizChoice\n * @param {Event} e\n */\nfunction handleClick(e) {\n e.preventDefault();\n\n if (this.props.disabled) {\n return;\n } else {\n this.props.onClick.call(this, e);\n }\n}\n\n/**\n * Key event handler for the MC Choice.\n *\n * @this MCQuizChoice\n * @param {Event} e\n */\nfunction handleKeyDown(e) {\n const { keyCode } = this.props;\n\n if (!keyCode) {\n return;\n }\n\n const matchesKey = keyCode instanceof Array ?\n keyCode.indexOf(e.keyCode) !== -1 :\n keyCode === e.keyCode;\n\n if (matchesKey) {\n handleClick.call(this, e);\n }\n}\n\nexport class MCQuizChoice extends React.Component {\n constructor(...args) {\n super(...args);\n\n this.state = {\n handleClick: handleClick.bind(this),\n handleKeyDown: handleKeyDown.bind(this),\n };\n }\n\n componentDidMount() {\n window.addEventListener('keydown', this.state.handleKeyDown);\n }\n\n componentWillUnmount() {\n window.removeEventListener('keydown', this.state.handleKeyDown);\n }\n\n render() {\n const className = `mc-quiz-choice ${this.props.className}`;\n\n return (\n <a href=\"#\" className={className} onClick={this.state.handleClick}>{this.props.children}</a>\n );\n }\n}\n\nMCQuizChoice.propTypes = {\n className: React.PropTypes.string,\n disabled: React.PropTypes.bool,\n keyCode: React.PropTypes.oneOfType([\n React.PropTypes.number,\n React.PropTypes.array,\n ]),\n onClick: React.PropTypes.func.isRequired,\n};\n\nMCQuizChoice.defaultProps = {\n className: '',\n disabled: false,\n keyCode: [],\n};\n\n/**\n * Key press handler for the MCQuizChoices component.\n * If the user presses an arrow key, adjust focus on a child.\n * If the user presses a number, trigger the corresponding element.\n *\n * @this MCQuizChoices\n * @param {Event} e\n */\nfunction choicesHandleKeyDown(e) {\n if (this.props.disabled) {\n return;\n }\n\n // If enableArrowKeys is disabled, then don't use them.\n if (!this.props.enableArrowEvents) {\n return;\n }\n\n const key = e.keyCode;\n const numOfChildren = this.props.children.length;\n let newIndex = this.state.focusedIndex;\n\n if (key === Keys.TAB) {\n // Prevent tab changing focus.\n e.preventDefault();\n }\n\n // User presses an arrow key or tab key.\n if (KeyHelpers.isUp(key) || (key === Keys.TAB && e.shiftKey)) {\n if (!this.state.focusedIndex) {\n newIndex = numOfChildren - 1;\n } else {\n newIndex = this.state.focusedIndex - 1;\n }\n } else if (KeyHelpers.isDown(key) || key === Keys.TAB) {\n if (this.state.focusedIndex === null || this.state.focusedIndex === numOfChildren - 1) {\n newIndex = 0;\n } else {\n newIndex = this.state.focusedIndex + 1;\n }\n }\n\n this.setState({ focusedIndex: newIndex });\n}\n\nexport class MCQuizChoices extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n focusedIndex: props.focusedIndex,\n handleKeyDown: choicesHandleKeyDown.bind(this),\n };\n }\n\n componentDidMount() {\n const { focusedIndex } = this.props;\n\n if (focusedIndex !== null) {\n this.refs.mcQuizChoices.children[focusedIndex].focus();\n }\n\n window.addEventListener('keydown', this.state.handleKeyDown);\n }\n\n componentDidUpdate() {\n if (this.state.focusedIndex !== null) {\n this.refs.mcQuizChoices.children[this.state.focusedIndex].focus();\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener('keydown', this.state.handleKeyDown);\n }\n\n render() {\n const classNames = classnames('mc-quiz-choices', this.props.className, {\n 'mc-quiz-choices-choosing': !this.props.disabled,\n 'mc-quiz-choices-not-choosing': this.props.disabled,\n });\n\n return (\n <div ref=\"mcQuizChoices\" className={classNames}>{this.props.children}</div>\n );\n }\n}\n\nMCQuizChoices.propTypes = {\n className: React.PropTypes.string,\n disabled: React.PropTypes.bool,\n enableArrowEvents: React.PropTypes.bool,\n focusedIndex: React.PropTypes.number,\n};\n\nMCQuizChoices.defaultProps = {\n className: '',\n disabled: false,\n enableArrowEvents: true,\n focusedIndex: null,\n};\n","import RapidChoiceBase from 'es6/controllers/apps/quizzes/rapid-choice-base';\n\nclass ReverseRapidChoicePair extends RapidChoiceBase {\n constructor(itemPackage, ...args) {\n super(itemPackage, ...args);\n this._setQuizType('ReverseRapidChoicePair');\n this._setDistractor(itemPackage.distractors.cue);\n this.recall = 'response';\n this.recallPrompt = itemPackage.getTranslation();\n this.answer = itemPackage.getText();\n }\n}\n\nexport default ReverseRapidChoicePair;\n","import SentenceStudyListeningFillInTheBlankBase from 'es6/controllers/apps/quizzes/sentence-study-listening-fill-in-the-blank-base';\n\nconst MAX_HINTS = 1;\n\n/**\n * Base class for the listening and translation assembly quizzes.\n */\nexport class SentenceStudyListeningFillInTheBlankPartial extends SentenceStudyListeningFillInTheBlankBase {\n constructor(...args) {\n super(...args);\n this._mode = 'chunk';\n this._setQuizType('SentenceStudyListeningFillInTheBlankPartial');\n }\n\n /**\n * @override\n * @returns {Number}\n */\n _getMaxHints() {\n return MAX_HINTS;\n }\n}\n\nexport default SentenceStudyListeningFillInTheBlankPartial;\n","import SentenceStudyListeningFillInTheBlankBase from 'es6/controllers/apps/quizzes/sentence-study-listening-fill-in-the-blank-base';\n\n/**\n * Base class for the fill in the blank sentence quizzes.\n */\nexport class SentenceStudyListeningFillInTheBlank extends SentenceStudyListeningFillInTheBlankBase {\n constructor(...args) {\n super(...args);\n this._mode = 'full';\n this._setQuizType('SentenceStudyListeningFillInTheBlank');\n }\n}\n\nexport default SentenceStudyListeningFillInTheBlank;\n","import SentenceStudyAssemblyBase from 'es6/controllers/apps/quizzes/sentence-study-assembly-base';\n\nexport class SentenceStudyListeningAssembly extends SentenceStudyAssemblyBase {\n constructor(...args) {\n super(...args);\n this._mode = 'listening';\n this._setQuizType('SentenceStudyListeningAssembly');\n }\n}\n\nexport default SentenceStudyListeningAssembly;\n","/* eslint-disable react/prefer-es6-class, react/sort-comp, react/jsx-no-bind */\nimport React from 'react';\nimport Keys from 'es6/core/keys';\nimport { t } from 'es6/services/localization';\nimport FitText from 'es6/components/common/fit-text';\nimport { NavButton, Navigation } from 'es6/components/apps/navigation';\nimport * as SoundEffects from 'es6/core/sound-effects';\nimport SoundManager from 'es6/services/sound-manager';\nimport { TranscodedImageSizes, TranscodedImage } from 'es6/components/common/transcoded-image';\n\n/**\n * ItemPackages are expected to contain the memory field.\n */\nexport default React.createClass({\n displayName: 'SentenceBuilderRecallScreen',\n\n propTypes: {\n mode: React.PropTypes.oneOf(['listening', 'reading']).isRequired,\n onDontKnow: React.PropTypes.func.isRequired,\n onNext: React.PropTypes.func.isRequired,\n sentence: React.PropTypes.object.isRequired,\n },\n\n /**\n * Bind keyboard events.\n */\n componentDidMount() {\n if (this.props.mode === 'listening') {\n this._playSound({\n finished: () => SoundManager.playEffect(SoundEffects.RECALL),\n });\n } else {\n SoundManager.playEffect(SoundEffects.RECALL);\n }\n\n document.addEventListener('keydown', this._handleKeydown);\n },\n\n /**\n * Unbind keyboard events.\n */\n componentWillUnmount() {\n SoundManager.stop();\n document.removeEventListener('keydown', this._handleKeydown);\n },\n\n /**\n * Callback for keydown event.\n *\n * @param {Event} e\n */\n _handleKeydown(e) {\n const downKey = e.shiftKey && e.keyCode === Keys.DOWN;\n const spaceKey = e.keyCode === Keys.SPACE;\n\n if (this.props.mode === 'listening' && (downKey || spaceKey)) {\n this._playSound();\n }\n },\n\n /**\n * Play the sentence sound.\n *\n * @param {Object} options\n */\n _playSound(options = {}) {\n const sound = this.props.sentence.sound;\n\n if (sound) {\n SoundManager.play(sound, options);\n }\n },\n\n render() {\n return (\n <div className=\"screen screen-sentence-builder-recall\">\n <div className=\"screen-content\">\n {this.props.mode === 'reading' ? this._renderReadingMode() : this._renderListeningMode()}\n </div>\n\n <Navigation>\n <NavButton align=\"left\" onClick={this.props.onDontKnow} className=\"btn-danger\">{t(\"don't know\")}</NavButton>\n <NavButton align=\"right\" onClick={this.props.onNext} focused>{t('js_iknow.next')}</NavButton>\n </Navigation>\n </div>\n );\n },\n\n _renderSentenceImage() {\n const image = this.props.sentence.getImage();\n\n if (!image) {\n return null;\n }\n\n return (\n <TranscodedImage size={TranscodedImageSizes.APP_SENTENCE} src={image} />\n );\n },\n\n _renderListeningMode() {\n return (\n <section className=\"mode-container listening-mode\">\n <p className=\"message\">{t('sentence-builder-recall-listening-instructions')}</p>\n\n <div className=\"sentence-study-figure\">\n <section className=\"sentence-content\">\n <div className=\"primary-content\">\n <span className=\"sound-player glyph glyph-volume-medium sentence-sound\" onClick={this._playSound.bind(null, {})} />\n {this._renderSentenceImage()}\n </div>\n </section>\n </div>\n </section>\n );\n },\n\n _renderReadingMode() {\n const translation = this.props.sentence.getTranslation();\n\n return (\n <section className=\"mode-container reading-mode\">\n <p className=\"message\">{t('sentence-builder-recall-reading-instructions')}</p>\n\n <div className=\"sentence-study-figure\">\n <section className=\"sentence-content\">\n <div className=\"primary-content\">\n <div className=\"sentence-text\">\n <FitText><span dangerouslySetInnerHTML={{ __html: translation }} /></FitText>\n </div>\n </div>\n\n <aside className=\"secondary-content\">\n {this._renderSentenceImage()}\n </aside>\n </section>\n </div>\n </section>\n );\n },\n});\n","/* eslint-disable react/prefer-es6-class, react/no-did-mount-set-state, react/sort-comp, no-unused-vars, react/jsx-first-prop-new-line, react/jsx-closing-bracket-location */\nimport classnames from 'classnames';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport Keys from 'es6/core/keys';\nimport FitText from 'es6/components/common/fit-text';\nimport HintButton from 'es6/components/apps/hint-button';\nimport { t } from 'es6/services/localization';\nimport { Navigation, NavButton, NavContainer } from 'es6/components/apps/navigation';\nimport QuizStatus from 'es6/components/apps/sentence-builder/quiz-status';\nimport * as SoundEffects from 'es6/core/sound-effects';\nimport SoundManager from 'es6/services/sound-manager';\nimport SoundPlayer from 'es6/components/common/sound-player';\nimport WordChoices from 'es6/components/apps/sentence-builder/word-choices';\nimport WordSlots from 'es6/components/apps/sentence-builder/word-slots';\n\nconst LARGE_DISPLAY_ROWS = 4;\n\nexport default React.createClass({\n displayName: 'SentenceBuilderQuizScreen',\n\n propTypes: {\n hints: React.PropTypes.number.isRequired,\n maxHints: React.PropTypes.number.isRequired,\n maxMistakes: React.PropTypes.number.isRequired,\n mistakes: React.PropTypes.number.isRequired,\n mode: React.PropTypes.oneOf(['listening', 'reading']).isRequired,\n onClick: React.PropTypes.func.isRequired,\n onDrop: React.PropTypes.func.isRequired,\n onDrag: React.PropTypes.func.isRequired,\n onDragEnd: React.PropTypes.func.isRequired,\n onDontKnow: React.PropTypes.func.isRequired,\n onHint: React.PropTypes.func.isRequired,\n onShift: React.PropTypes.func.isRequired,\n onSubmit: React.PropTypes.func.isRequired,\n sentence: React.PropTypes.object.isRequired,\n wordChoices: React.PropTypes.array.isRequired,\n wordSlots: React.PropTypes.array.isRequired,\n },\n\n getInitialState() {\n return {\n calculatedDisplaySize: false,\n focusNavigation: true,\n isLargeDisplay: false,\n allSlotsFilled: this._allSlotsFilled(this.props.wordSlots),\n };\n },\n\n /**\n * Determine if the sentence is taking up a lot of real estate. If so,\n * mark the state as being a large display.\n */\n componentDidMount() {\n const wordChoices = ReactDOM.findDOMNode(this.refs.wordChoices);\n const wordPieces = [...wordChoices.querySelectorAll('.word-piece')];\n const rows = wordPieces.map(wordPiece => wordPiece.offsetTop)\n .filter((offset, i, arr) => arr.indexOf(offset) === i)\n .length;\n\n this.setState({ calculatedDisplaySize: true, isLargeDisplay: rows >= LARGE_DISPLAY_ROWS });\n\n document.addEventListener('keydown', this._handleKeyDown);\n\n // If all the slots are filled and not marked as incorrect, focus the default navigation button.\n if (this.state.allSlotsFilled) {\n this.refs.navigation.focusDefaultButton();\n }\n },\n\n /**\n * Play and update mistakes if the number of mistakes changed.\n * Check to see if the navigation is focusable.\n *\n * @param {Object} nextProps\n */\n componentWillReceiveProps(nextProps) {\n const mistakes = nextProps.mistakes;\n\n if (typeof mistakes === 'number' && mistakes > this.props.mistakes) {\n SoundManager.playEffect(SoundEffects.SPELL_INCORRECT);\n }\n\n this.setState({\n allSlotsFilled: this._allSlotsFilled(nextProps.wordSlots),\n });\n },\n\n componentDidUpdate(prevProps, prevState) {\n // If all the slots are filled and not marked as incorrect, focus the default navigation button.\n if (this.state.allSlotsFilled && !prevState.allSlotsFilled) {\n this.refs.navigation.focusDefaultButton();\n }\n },\n\n componentWillUnmount() {\n document.removeEventListener('keydown', this._handleKeyDown);\n },\n\n _allSlotsFilled(wordSlots) {\n return wordSlots.every(slot => slot.isFilled() && !slot.isIncorrectAndGraded());\n },\n\n _handleKeyDown(e) {\n if (e.keyCode !== Keys.ENTER) {\n // TODO: Remove this and other blanket preventDefaults, because they also prevents browser\n // keyboard shortcuts, such as Ctrl-R to refresh.\n e.preventDefault();\n }\n\n if (this.props.mode === 'listening' && e.keyCode === Keys.SPACE) {\n SoundManager.play(this.props.sentence.sound);\n }\n\n if (e.keyCode === Keys.UP && e.shiftKey) {\n this.props.onHint();\n }\n },\n\n render() {\n const { hints,\n maxMistakes,\n maxHints,\n mistakes,\n mode,\n onClick,\n onDrop,\n wordChoices,\n wordSlots } = this.props;\n\n const { calculuatedSize, isLargeDisplay } = this.state;\n\n // If all the slots are filled and not marked as incorrect, make the navigation focusable.\n const focusNavigation = this.state.allSlotsFilled;\n\n // If the navigation is focusable, then the word choices are not focusable.\n const enableKeyEvents = !focusNavigation;\n\n // Hide the style if the display size hasn't been determined yet.\n const style = { visibility: calculuatedSize ? 'hidden' : 'visible' };\n\n const quizContentClassName = classnames('quiz-content', {\n 'quiz-content-large-display': isLargeDisplay,\n });\n\n return (\n <div className=\"screen screen-sentence-builder-quiz\">\n <div className=\"screen-content\" style={style}>\n <QuizStatus mistakes={mistakes} maxMistakes={maxMistakes} />\n\n <header className=\"quiz-details message\">{t('sentence-builder-quiz-instructions')}</header>\n\n <div className={quizContentClassName}>\n {mode === 'reading' ? this._renderReading() : this._renderListening()}\n\n <WordChoices ref=\"wordChoices\" data={wordChoices} enableKeyEvents={enableKeyEvents} onClick={onClick} onDrop={onDrop} />\n </div>\n </div>\n\n <Navigation ref=\"navigation\">\n <NavButton align=\"left\" onClick={this.props.onDontKnow} focusable={focusNavigation} className=\"btn-danger\">{t(\"don't know\")}</NavButton>\n\n <NavContainer align=\"center\">\n <HintButton hints={hints} maxHints={maxHints} onClick={this.props.onHint} />\n </NavContainer>\n\n <NavButton align=\"right\" onClick={this.props.onSubmit} focused={focusNavigation} focusable={focusNavigation}>{t('enter')}</NavButton>\n </Navigation>\n </div>\n );\n },\n\n _renderReading() {\n const translation = this.props.sentence.getTranslation();\n\n return (\n <div className=\"quiz-content reading\">\n <div ref=\"sentenceText\" className=\"sentence-text\">\n <FitText><span dangerouslySetInnerHTML={{ __html: translation }} /></FitText>\n </div>\n\n {this._renderWordSlots()}\n </div>\n );\n },\n\n _renderListening() {\n const sound = this.props.sentence.sound;\n\n return (\n <div className=\"quiz-content listening\">\n <SoundPlayer source={sound} />\n {this._renderWordSlots()}\n </div>\n );\n },\n\n _renderWordSlots() {\n const { onClick,\n onDrag,\n onDragEnd,\n onDrop,\n onShift,\n wordSlots } = this.props;\n\n return (\n <WordSlots data={wordSlots}\n enableDragEvents\n onClick={onClick}\n onDrag={onDrag}\n onDragEnd={onDragEnd}\n onDrop={onDrop}\n onShift={onShift} />\n );\n },\n});\n","/* eslint-disable react/prefer-es6-class */\nimport classNames from 'classnames';\nimport React from 'react';\nimport Localization from 'es6/services/localization';\n\nexport default React.createClass({\n displayName: 'HintButton',\n\n propTypes: {\n className: React.PropTypes.string,\n disabled: React.PropTypes.bool,\n hints: React.PropTypes.number,\n maxHints: React.PropTypes.number,\n onClick: React.PropTypes.func.isRequired,\n },\n\n getDefaultProps() {\n return {\n className: '',\n disabled: false,\n hints: 0,\n maxHints: 1,\n };\n },\n\n render() {\n const { disabled, hints, maxHints, onClick } = this.props;\n const className = classNames('btn btn-bar btn-default hint-button', {\n disabled: hints >= maxHints || disabled,\n }, this.props.className);\n\n return (\n <button className={className} onClick={onClick}>\n {Localization.t('show-hint')} <div className=\"remaining\">{maxHints - hints}</div>\n </button>\n );\n },\n});\n","/* eslint-disable react/prefer-es6-class, arrow-body-style, react/sort-comp, react/jsx-no-bind */\nimport classnames from 'classnames';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport Keys, { KeyHelpers } from 'es6/core/keys';\nimport DropZone from 'es6/components/apps/sentence-builder/drop-zone';\nimport WordPiece from 'es6/components/apps/sentence-builder/word-piece';\n\nexport default React.createClass({\n displayName: 'WordChoices',\n\n propTypes: {\n data: React.PropTypes.array.isRequired,\n enableKeyEvents: React.PropTypes.bool,\n onDrop: React.PropTypes.func.isRequired,\n onClick: React.PropTypes.func.isRequired,\n },\n\n getDefaultProps() {\n return {\n enableKeyEvents: true,\n };\n },\n\n getInitialState() {\n return {\n keyPositionIndex: 0,\n };\n },\n\n componentDidMount() {\n document.addEventListener('keydown', this._handleKeyDown);\n },\n\n componentWillUnmount() {\n document.removeEventListener('keydown', this._handleKeyDown);\n },\n\n _handleKeyDown(e) {\n if (!this.props.enableKeyEvents) {\n return;\n }\n\n e.preventDefault();\n\n const onEnter = () => {\n const wordChoice = this.props.data[this.state.keyPositionIndex];\n this.props.onClick.call(null, wordChoice);\n };\n\n if (KeyHelpers.isDirectional(e.keyCode)) {\n this._setKeyboardSelection(e.keyCode);\n } else if (e.keyCode === Keys.ENTER) {\n onEnter();\n }\n },\n\n /**\n * Targets and highlights for the currently selected word piece.\n *\n * @param {Number} keyCode\n * @returns {Number}\n */\n _setKeyboardSelection(keyCode) {\n let keyPositionIndex = this.state.keyPositionIndex;\n const wordChoicesLength = this.props.data.length;\n\n // Executed if the case is UP or DOWN.\n const onVerticalMove = () => {\n const wordChoiceNode = ReactDOM.findDOMNode(this.refs.wordChoices);\n const wordPieceNodes = [...wordChoiceNode.querySelectorAll('.word-piece')];\n const referenceNode = wordPieceNodes[keyPositionIndex];\n\n // Create an array of candidate nodes to check based on whether they are above\n // or below the selected node.\n const candidateNodes = wordPieceNodes.filter(node => {\n return KeyHelpers.isUp(keyCode) ?\n referenceNode.offsetTop > node.offsetTop :\n referenceNode.offsetTop < node.offsetTop;\n });\n\n // If there any candidates, simply grab the one with the\n // closest left offset and then set the key position to be\n // the index of it.\n if (candidateNodes.length > 0) {\n const closestNode = candidateNodes.reduce((prev, next) => {\n const prevOffset = Math.abs(prev.offsetLeft - referenceNode.offsetLeft);\n const nextOffset = Math.abs(next.offsetLeft - referenceNode.offsetLeft);\n\n return prevOffset > nextOffset ? next : prev;\n });\n\n keyPositionIndex = wordPieceNodes.indexOf(closestNode);\n }\n };\n\n if (KeyHelpers.isRight(keyCode)) {\n // User intends to move forward or wrap around to beginning.\n keyPositionIndex = (keyPositionIndex + 1) % wordChoicesLength;\n } else if (KeyHelpers.isLeft(keyCode)) {\n // User intends to move backward or wrap around to ending.\n keyPositionIndex = (((keyPositionIndex - 1 % wordChoicesLength) + wordChoicesLength) % wordChoicesLength);\n } else if (KeyHelpers.isDown(keyCode) || KeyHelpers.isUp(keyCode)) {\n onVerticalMove();\n }\n\n this.setState({ keyPositionIndex });\n },\n\n render() {\n return (\n <section className=\"word-choices\" ref=\"wordChoices\">\n <DropZone onDrop={this.props.onDrop.bind(null, null)}>\n {this.props.data.map((word, i) => this._renderWordPiece(word, i))}\n </DropZone>\n </section>\n );\n },\n\n /**\n * Renders a word piece.\n *\n * @param {WordChoice} wordChoice\n * @param {Number} index\n * @returns {ReactElement}\n */\n _renderWordPiece(wordChoice, index) {\n const props = {\n className: classnames({\n highlighted: this.props.enableKeyEvents && this.state.keyPositionIndex === index,\n freed: !wordChoice.used,\n used: wordChoice.used,\n }),\n key: index,\n enableDragEvents: !wordChoice.used,\n onClick: this.props.onClick,\n wordChoice,\n };\n\n return (<WordPiece {...props}>{wordChoice.value}</WordPiece>);\n },\n});\n","import classnames from 'classnames';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport DropZone from 'es6/components/apps/sentence-builder/drop-zone';\n\n/**\n * Helper method to determine if the drag event is on the left\n * or right side of the component.\n *\n * @param {HTMLElement} domNode HTML element to find position relative to\n * @param {Event} dragEvent\n * @return {Boolean}\n */\nfunction isLeftSide(domNode, dragEvent) {\n // Get the offset of the mouse event relative to the target.\n const rect = domNode.getBoundingClientRect();\n const offsetX = dragEvent.clientX - rect.left;\n\n // Get the position of the middle of the target,\n // without taking padding into account.\n const style = window.getComputedStyle(domNode);\n const leftPadding = parseInt(style.paddingLeft, 10);\n const rightPadding = parseInt(style.paddingRight, 10);\n const widthWithoutPadding = domNode.offsetWidth - leftPadding - rightPadding;\n const offsetMiddle = leftPadding + (widthWithoutPadding / 2);\n\n // Now just return if the offset of X is greater than the\n // offset of the middle.\n return offsetX <= offsetMiddle;\n}\n\nconst INITIAL_STATE = {\n shiftLeftSide: false,\n};\n\n/**\n * ShiftZone is similar to a drop zone, except it will determine\n * if the user is dropping a word piece on the left or right side\n * of the shift zone.\n *\n * It also provides a onDropLeft and onDropRight callback.\n */\nexport class ShiftZone extends DropZone {\n /**\n * @override\n * @returns {Object}\n */\n _getInitialState() {\n const state = super._getInitialState();\n return Object.assign(state, INITIAL_STATE);\n }\n\n /**\n * Extends the classnames to include\n *\n * @override\n * @returns {Object}\n */\n _getContainerProps() {\n const { shiftLeftSide, draggedOver } = this.state;\n const props = super._getContainerProps();\n\n props.className = classnames(props.className, 'shift-zone', {\n 'shift-left-side': draggedOver && shiftLeftSide,\n 'shift-right-side': draggedOver && !shiftLeftSide,\n });\n\n if (draggedOver && shiftLeftSide) {\n props['data-shift-left-side'] = true;\n }\n\n if (draggedOver && !shiftLeftSide) {\n props['data-shift-right-side'] = true;\n }\n\n return props;\n }\n\n /**\n * DOMNode is only accessible within the context of the component.\n * Allow the drag and drop methods to be extended after local methods have run.\n *\n * @override\n * @param {Event} e\n */\n _handleDragOver(e) {\n const shiftLeftSide = isLeftSide(ReactDOM.findDOMNode(this), e);\n\n // Update the state with the new shift value.\n this.setState({ shiftLeftSide });\n\n if (shiftLeftSide) {\n this._executeHandler(this.props.onDragLeft, e);\n } else {\n this._executeHandler(this.props.onDragRight, e);\n }\n\n super._handleDragOver(e);\n }\n\n /**\n * Handle callback for dropping on the left and right side.\n *\n * @override\n */\n _handleDrop(e) {\n if (this.state.shiftLeftSide) {\n this._executeHandler(this.props.onDropLeft, e);\n } else {\n this._executeHandler(this.props.onDropRight, e);\n }\n\n super._handleDrop(e);\n }\n}\n\nShiftZone.propTypes = Object.freeze({\n onDragLeft: React.PropTypes.func,\n onDragRight: React.PropTypes.func,\n onDropLeft: React.PropTypes.func,\n onDropRight: React.PropTypes.func,\n});\n\nexport default ShiftZone;\n","/* eslint-disable react/prefer-es6-class, react/no-did-mount-set-state, react/sort-comp */\nimport classnames from 'classnames';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport Keys from 'es6/core/keys';\nimport { t } from 'es6/services/localization';\nimport MouseoverDictionary from 'iknow-mouseover-dictionary/react';\nimport FitText from 'es6/components/common/fit-text';\nimport QuizStatus from 'es6/components/apps/sentence-builder/quiz-status';\nimport { NavButton, Navigation } from 'es6/components/apps/navigation';\nimport ResultGlyphs from 'es6/components/apps/result-glyphs';\nimport * as SoundEffects from 'es6/core/sound-effects';\nimport SoundManager from 'es6/services/sound-manager';\nimport SoundPlayer from 'es6/components/common/sound-player';\nimport { TranscodedImageSizes, TranscodedImage } from 'es6/components/common/transcoded-image';\nimport WordSlots from 'es6/components/apps/sentence-builder/word-slots';\n\n/**\n * ItemPackages are expected to contain the memory field.\n */\nexport default React.createClass({\n displayName: 'SentenceBuilderConfirmationScreen',\n\n propTypes: {\n isCorrect: React.PropTypes.bool.isRequired,\n maxMistakes: React.PropTypes.number.isRequired,\n mistakes: React.PropTypes.number.isRequired,\n onNext: React.PropTypes.func.isRequired,\n wordSlots: React.PropTypes.array.isRequired,\n sentence: React.PropTypes.object.isRequired,\n },\n\n getInitialState() {\n return {\n calculatedDisplaySize: false,\n isLargeDisplay: false,\n };\n },\n\n componentDidMount() {\n // Play sound effect.\n const soundEffect = this.props.isCorrect ? SoundEffects.SPELL_CORRECT : SoundEffects.SPELL_INCORRECT;\n SoundManager.playEffect(soundEffect, { finished: this._playSound });\n\n // Determine if word slots is a large display.\n const wordSlots = ReactDOM.findDOMNode(this).querySelector('.word-slots');\n const isLargeDisplay = wordSlots.scrollHeight > wordSlots.clientHeight;\n this.setState({ calculatedDisplaySize: true, isLargeDisplay });\n\n // Listen for user input.\n document.addEventListener('keydown', this._handleKeydown);\n },\n\n componentWillUnmount() {\n SoundManager.stop();\n\n document.removeEventListener('keydown', this._handleKeydown);\n },\n\n /**\n * Callback for keydown event.\n *\n * @param {Event} e\n */\n _handleKeydown(e) {\n const downKey = e.shiftKey && e.keyCode === Keys.DOWN;\n const spaceKey = e.keyCode === Keys.SPACE;\n\n if (downKey || spaceKey) {\n this._playSound();\n }\n },\n\n /**\n * Play the sentence sound.\n *\n * @param {Object} options\n */\n _playSound() {\n const sound = this.props.sentence.sound;\n\n if (sound) {\n SoundManager.play(sound);\n }\n },\n\n render() {\n let resultIconClassName;\n let message;\n\n const { isCorrect,\n maxMistakes,\n mistakes,\n sentence,\n wordSlots } = this.props;\n\n const { calculatedDisplaySize, isLargeDisplay } = this.state;\n\n if (!isCorrect) {\n message = t('too bad!');\n resultIconClassName = ResultGlyphs.INCORRECT;\n } else if (mistakes > 0) {\n message = t('almost');\n resultIconClassName = ResultGlyphs.CORRECT_WITH_MISTAKES;\n } else {\n message = t('js_iknow.well done!');\n resultIconClassName = ResultGlyphs.CORRECT;\n }\n\n const quizContentStyle = { visibility: calculatedDisplaySize ? 'visible' : 'hidden' };\n const quizContentClassName = classnames('quiz-content', {\n 'quiz-content-large-display': isLargeDisplay,\n });\n\n return (\n <div className=\"screen screen-sentence-builder-confirmation\">\n <div className=\"screen-content\">\n <p className=\"message\">{message}</p>\n\n <QuizStatus mistakes={mistakes} maxMistakes={maxMistakes} />\n\n <section className=\"quiz\">\n <div className=\"result-icon\">\n <div className={resultIconClassName} />\n </div>\n\n <div className={quizContentClassName} style={quizContentStyle}>\n <WordSlots data={wordSlots} />\n </div>\n </section>\n\n <div className=\"sentence-study-figure\">\n <div className=\"sentence-content\">\n <div className=\"primary-content\">\n {this._renderSoundPlayer()}\n\n <div className=\"sentence-text\">\n {/* Set a key on the FitText forcing it to reshrink the font sizes if\n the MouseoverDictionary text changes. */}\n <FitText key={sentence.getText()}>\n <MouseoverDictionary html={sentence.getText()} />\n </FitText>\n </div>\n\n <div className=\"sentence-transliteration\">\n {sentence.getTransliteration() &&\n <FitText key={sentence.getTransliteration()}>\n <MouseoverDictionary html={sentence.getTransliteration()} />\n </FitText>}\n </div>\n\n {this._renderTranslation()}\n </div>\n\n <aside className=\"secondary-content\">\n {this._renderImage()}\n </aside>\n </div>\n </div>\n </div>\n\n <Navigation>\n <NavButton align=\"right\" onClick={this.props.onNext} keyCode={Keys.ENTER} focused>{t('js_iknow.next')}</NavButton>\n </Navigation>\n </div>\n );\n },\n\n _renderImage() {\n const image = this.props.sentence.getImage();\n\n if (!image) {\n return null;\n }\n\n return (\n <TranscodedImage size={TranscodedImageSizes.APP_SENTENCE_SMALL} src={image} />\n );\n },\n\n _renderSoundPlayer() {\n const sound = this.props.sentence.sound;\n\n if (!sound) {\n return null;\n }\n\n return (<SoundPlayer source={sound} className=\"sentence-sound\" />);\n },\n\n _renderTranslation() {\n const translation = this.props.sentence.getTranslation();\n\n if (!translation) {\n return null;\n }\n\n return (\n <div className=\"sentence-translation\">\n <FitText><span dangerouslySetInnerHTML={{ __html: translation }} /></FitText>\n </div>\n );\n },\n});\n","/* eslint-disable no-shadow */\nimport SentenceStudyAssemblyBase from 'es6/controllers/apps/quizzes/sentence-study-assembly-base';\n\nexport class SentenceStudyTranslationAssembly extends SentenceStudyAssemblyBase {\n constructor(...args) {\n super(...args);\n this._mode = 'reading';\n this._setQuizType('SentenceStudyTranslationAssembly');\n\n // Give the first word as a hint and remove the word from the list of options.\n const wordSlot = this._wordSlots.find(wordSlot => !wordSlot.isFilled());\n const wordChoice = this._wordChoices.find(wordChoice => wordChoice.value === wordSlot.expected);\n this._wordChoices.splice(this._wordChoices.indexOf(wordChoice), 1);\n wordSlot.insert(wordChoice, true);\n }\n}\n\nexport default SentenceStudyTranslationAssembly;\n","import SelfAssessmentBase from 'es6/controllers/apps/quizzes/self-assessment-base';\n\nclass SelfAssessment extends SelfAssessmentBase {\n constructor(...args) {\n super(...args);\n this._setQuizType('SelfAssessment');\n this._recallCue = this.itemPackage.getText();\n this.followUpQuiz = SelfAssessmentBinary;\n\n // Play audio on recall only if itemPackage is from a non-transliterated langauge.\n this._playAudioOnRecall = !this.itemPackage.getTransliteration();\n }\n}\n\nexport class SelfAssessmentBinary extends SelfAssessment {\n constructor(...args) {\n super(...args);\n this._setQuizType('SelfAssessmentBinary');\n this._isRepeat = true;\n }\n}\n\nexport default SelfAssessment;\n","/* eslint-disable no-return-assign, react/jsx-no-bind */\nimport React from 'react';\nimport Localization from 'es6/services/localization';\nimport FitText from 'es6/components/common/fit-text';\nimport { Navigation, NavButton } from 'es6/components/apps/navigation';\nimport SoundManager from 'es6/services/sound-manager';\n\n/**\n * @this SelfAssessment\n * @returns {String}\n */\nfunction getPrompt() {\n const { isNew, isRepeat } = this.props;\n\n if (isRepeat) {\n return Localization.t('prompt-repeat');\n } else if (isNew) {\n return Localization.t('prompt-new');\n } else {\n return Localization.t('prompt-review');\n }\n}\n\n/**\n * @this SelfAssessment\n * @returns {ReactElement}\n */\nfunction renderBadge() {\n const className = 'screen-badge screen-badge-repeat-item';\n const { isNew, isRepeat } = this.props;\n\n if (isRepeat) {\n return (<span className={className}>{Localization.t('badge-repeat')}</span>);\n } else if (isNew) {\n return (<span className={className}>{Localization.t('js_iknow.new item')}</span>);\n }\n\n return null;\n}\n\nclass SelfAssessment extends React.Component {\n constructor(...args) {\n super(...args);\n\n this.state = {\n handleClick: this.props.onReveal.bind(this),\n };\n\n this.saveNavigationRef = ref => this.navigationRef = ref;\n }\n\n componentDidMount() {\n const { cueSound } = this.props;\n\n if (cueSound) {\n SoundManager.play(cueSound);\n }\n\n this.refs.screen.addEventListener('click', this.state.handleClick);\n }\n\n componentWillUpdate() {\n this.componentWillUnmount();\n }\n\n componentDidUpdate(prevProps, prevState) {\n this.componentDidMount();\n\n // Refocus the Next button when a new cue is shown.\n if (this.props.cue !== prevProps.cue) {\n this.navigationRef && this.navigationRef.focusDefaultButton(true);\n }\n }\n\n componentWillUnmount() {\n this.refs.screen.removeEventListener('click', this.state.handleClick);\n }\n\n render() {\n const { cue, onReveal, onSkip, response } = this.props;\n const removeTooltip = Localization.t('js_iknow.remove');\n\n return (\n <div className=\"screen screen-self-assessment\">\n <div ref=\"screen\" className=\"screen-content\">\n {renderBadge.call(this)}\n\n <div className=\"message\">\n <p className=\"know\">{getPrompt.call(this)}</p>\n </div>\n\n <div className=\"cue-response\">\n <div className=\"cue\">\n <div className=\"content\">\n <div className=\"bottom\">\n <FitText minFontSize={20}>{cue || '?'}</FitText>\n </div>\n </div>\n </div>\n\n <div className=\"cue-response-separator\" />\n\n <div className=\"response\">\n <FitText minFontSize={20}>{response || '?'}</FitText>\n </div>\n </div>\n </div>\n\n <Navigation ref={this.saveNavigationRef}>\n <NavButton align=\"left\" className=\"btn-nav-icon btn-danger\" focusable onClick={onSkip.bind(this)} title={removeTooltip}>\n <span className=\"glyph glyph-remove\" />\n </NavButton>\n\n <NavButton align=\"right\" focused focusable onClick={onReveal.bind(this)}>\n {Localization.t('self-assessment.check')}\n </NavButton>\n </Navigation>\n </div>\n );\n }\n}\n\nSelfAssessment.propTypes = {\n cue: React.PropTypes.string,\n cueSound: React.PropTypes.string,\n isNew: React.PropTypes.bool.isRequired,\n isRepeat: React.PropTypes.bool.isRequired,\n onReveal: React.PropTypes.func.isRequired,\n onSkip: React.PropTypes.func.isRequired,\n response: React.PropTypes.string,\n};\n\nexport default SelfAssessment;\n","/* eslint-disable react/prop-types, react/jsx-closing-bracket-location, consistent-return */\nimport React, { PropTypes } from 'react';\nimport { t } from 'es6/services/localization';\nimport Keys from 'es6/core/keys';\nimport { bindProps } from 'es6/helpers/react';\nimport { NavButton, Navigation } from 'es6/components/apps/navigation';\nimport StudyScreen from 'es6/components/apps/screens/study';\n\nfunction DefaultNavigation({ disableEnterKey, disableArrowKeys, saveNavigationRef, isNew, onVeryWell, onWell, onNotWell, onDontKnow }) {\n return (\n <Navigation disableEnterKey={disableEnterKey} disableArrowKeys={disableArrowKeys} ref={saveNavigationRef}>\n <NavButton align=\"left\" keyCode={Keys[1]} onClick={onDontKnow} className=\"btn-danger\">\n {isNew ? t('dont-know') : t('dont-know-review')}\n </NavButton>\n\n <NavButton align=\"center\" keyCode={Keys[2]} onClick={onNotWell}>\n {isNew ? t('not-well') : t('not-well-review')}\n </NavButton>\n <NavButton align=\"center\" focused keyCode={Keys[3]} onClick={onWell}>\n {isNew ? t('well') : t('well-review')}\n </NavButton>\n <NavButton align=\"center\" keyCode={Keys[4]} onClick={onVeryWell}>\n {isNew ? t('very-well') : t('very-well-review')}\n </NavButton>\n </Navigation>\n );\n}\n\nfunction RepeatNavigation({ disableEnterKey, disableArrowKeys, saveNavigationRef, onWell, onDontKnow }) {\n return (\n <Navigation disableEnterKey={disableEnterKey} disableArrowKeys={disableArrowKeys} ref={saveNavigationRef}>\n <NavButton align=\"center\" keyCode={Keys[1]} onClick={onDontKnow}>{t('js_iknow.no')}</NavButton>\n <NavButton align=\"center\" focused keyCode={Keys[2]} onClick={onWell}>{t('js_iknow.yes')}</NavButton>\n </Navigation>\n );\n}\n\nfunction SelfAssessmentStudyScreen({\n isNew,\n isRepeatQuiz,\n itemPackage,\n onDontKnow,\n onNotWell,\n onWell,\n onVeryWell,\n showTranscription,\n}) {\n const navigationProps = { onDontKnow, onNotWell, onWell, onVeryWell };\n const navigation = isRepeatQuiz ? RepeatNavigation : DefaultNavigation;\n\n return (\n <StudyScreen\n animateOnMount={false}\n customNavigation={bindProps(navigation, navigationProps)}\n isNew={isNew}\n itemPackage={itemPackage}\n playAudioOnMount\n showTranscription={showTranscription} />\n );\n}\n\nfunction isDefaultValidation(props, propName) {\n if (props.isRepeatQuiz !== true && typeof props[propName] !== 'function') {\n return new Error(`${propName} is required if isRepeatQuiz isn't set`);\n }\n}\n\nSelfAssessmentStudyScreen.propTypes = {\n itemPackage: PropTypes.object.isRequired,\n isNew: PropTypes.bool,\n isRepeatQuiz: PropTypes.bool,\n\n // Required when it is not a repeat quiz.\n onVeryWell: isDefaultValidation,\n onNotWell: isDefaultValidation,\n\n onWell: PropTypes.func.isRequired,\n onDontKnow: PropTypes.func.isRequired,\n showTranscription: PropTypes.bool,\n};\n\n\nSelfAssessmentStudyScreen.defaultProps = {\n isNew: false,\n isRepeatQuiz: false,\n showTranscription: false,\n};\n\nexport default SelfAssessmentStudyScreen;\n","import { createElement } from 'react';\n\n/**\n * Creates a new react component with bound properties.\n *\n * @param {Function|Component} component\n * @param {Object} props\n * @returns {ReactElement}\n */\nexport function bindProps(component, props) {\n return function reboundComponent(newProps) {\n return createElement(component, Object.assign({}, props, newProps));\n };\n}\n","import SelfAssessmentBase from 'es6/controllers/apps/quizzes/self-assessment-base';\n\nexport class ReverseSelfAssessment extends SelfAssessmentBase {\n constructor(...args) {\n super(...args);\n this._setQuizType('ReverseSelfAssessment');\n this._recallResponse = this.itemPackage.getTranslation();\n this.followUpQuiz = ReverseSelfAssessmentBinary;\n }\n}\n\nexport class ReverseSelfAssessmentBinary extends ReverseSelfAssessment {\n constructor(...args) {\n super(...args);\n this._setQuizType('ReverseSelfAssessmentBinary');\n this._isRepeat = true;\n }\n}\n\nexport default ReverseSelfAssessment;\n","/* eslint-disable react/prop-types, no-shadow, no-unused-vars, react/no-multi-comp */\nimport React from 'react';\nimport { t } from 'es6/services/localization';\nimport { pauseEvents, pause, resume, isPaused } from 'es6/services/pause';\nimport BasicModal from 'es6/components/common/modals/basic';\nimport BaseModal from 'es6/components/common/modals/base';\nimport Config from 'es6/core/config';\nimport Glyph, { PAUSE, GEAR, CROSS } from 'es6/components/common/glyph';\n\nexport default class ScreenBanner extends React.Component {\n constructor() {\n super();\n\n this.state = { isSettingsModalOpen: false };\n\n this._openSettingsModal = () => {\n pause();\n this.setState({ isSettingsModalOpen: true });\n };\n this._closeSettingsModal = () => {\n resume();\n this.setState({ isSettingsModalOpen: false });\n };\n }\n\n render() {\n const {\n showPauseButton,\n showSettingsButton,\n renderSettingsModalContents,\n onQuit,\n children,\n } = this.props;\n const { isPaused, isSettingsModalOpen } = this.state;\n\n const pauseProps = { isSettingsModalOpen };\n const settingsProps = {\n isSettingsModalOpen,\n renderSettingsModalContents,\n onOpen: this._openSettingsModal,\n onClose: this._closeSettingsModal,\n };\n\n return (\n <div>\n <div className=\"control_panel\">\n {showPauseButton && <PauseButton {...pauseProps} />}\n {showSettingsButton && <SettingsButton {...settingsProps} />}\n <QuitButton onClick={onQuit} />\n </div>\n\n {children && <div className=\"screen-banner\">{children}</div>}\n </div>\n );\n }\n\n}\n\nScreenBanner.propTypes = {\n showPauseButton: React.PropTypes.bool.isRequired,\n showSettingsButton: React.PropTypes.bool.isRequired,\n renderSettingsModalContents: React.PropTypes.func,\n onQuit: React.PropTypes.func,\n};\n\nclass PauseButton extends React.Component {\n constructor() {\n super();\n\n this._update = () => this.forceUpdate();\n }\n\n componentDidMount() {\n // Re-render the pause modal when paused/resumed.\n pauseEvents.on('pause', this._update);\n pauseEvents.on('resume', this._update);\n }\n\n componentWillUnmount() {\n pauseEvents.removeListener('pause', this._update);\n pauseEvents.removeListener('resume', this._update);\n }\n\n render() {\n const { isSettingsModalOpen } = this.props;\n\n // Don't show the pause modal if the settings modal is open, too.\n const isOpen = isPaused() && !isSettingsModalOpen;\n\n return (\n <span className=\"button\" onClick={pause}>\n\n <Glyph type={PAUSE} />\n\n <BaseModal isOpen={isOpen} onOverlayClick={resume}>\n <section className=\"content-container pause-modal\" onClick={resume}>\n <div className=\"content-primary\">\n {t('application-paused-explanation')}\n </div>\n </section>\n </BaseModal>\n </span>\n );\n }\n}\n\nfunction SettingsButton({ isSettingsModalOpen, renderSettingsModalContents, onOpen, onClose }) {\n return (\n <span className=\"button\" onClick={onOpen}>\n <Glyph type={GEAR} />\n\n <BasicModal isOpen={isSettingsModalOpen} onClose={onClose}>\n {renderSettingsModalContents && renderSettingsModalContents(onClose)}\n </BasicModal>\n </span>\n );\n}\n\nfunction QuitButton({ onClick }) {\n return (\n <a href={Config.getReferrerURL()} className=\"blue button\" onClick={onClick}>\n <Glyph type={CROSS} />\n </a>\n );\n}\n","/* eslint-disable react/prefer-es6-class, react/prefer-stateless-function, react/prop-types, react/no-multi-comp */\nimport classnames from 'classnames';\nimport React from 'react';\n\n/**\n * These are choices that are specific to the applications. Use common/choices\n * for creating non redundant ones.\n */\nexport const Stat = React.createClass({\n displayName: 'Stat',\n\n propTypes: {\n type: React.PropTypes.oneOf([\n 'started',\n 'new',\n 'reviewed',\n 'mastered',\n 'strong',\n 'weak',\n 'time',\n ]).isRequired,\n },\n\n render() {\n return (\n <li className={`stat stat-${this.props.type}`}>\n <div className=\"accent\" />\n\n <div className=\"stat-details\">{this.props.children}</div>\n </li>\n );\n },\n});\n\nexport const StatData = React.createClass({\n render() {\n // NOTE: This is used to handle the odd case where the markup is actually\n // embedded in the label. As it stands, this is only from the humanized\n // time method.\n if (!(this.props.children instanceof Array)) {\n return (<div className=\"primary\" dangerouslySetInnerHTML={{ __html: this.props.children }} />);\n }\n\n return (<div className=\"primary\">{this.props.children}</div>);\n },\n});\n\nexport const StatLabel = React.createClass({\n displayName: 'StatLabel',\n\n render() {\n return (<div className=\"secondary\">{this.props.children}</div>);\n },\n});\n\nexport const Stats = React.createClass({\n displayName: 'Stats',\n\n propTypes: {\n className: React.PropTypes.string,\n },\n\n getDefaultProps() {\n return {\n className: '',\n };\n },\n\n render() {\n const className = classnames('stats', this.props.className);\n return (<ul className={className}>{this.props.children}</ul>);\n },\n});\n","/**\n * General settings for the memory bank.\n */\n\nexport const ViewBox = {\n HEIGHT: 345,\n WIDTH: 860,\n};\n\nexport const Circle = {\n // HACK: to work around an issue with tipped/jquery, we specify an equivalent\n // CSS rule in stylesheets/partials/memory-bank/_base.sass, ensure that's\n // also updated when changing this\n RADIUS: 10,\n RADIUS_HOVER: 11,\n RADIUS_BULGE: 12,\n};\n\nexport const PADLOCK_IMAGE = '/_assets/memory_bank/padlock.svg';\n\n// Node starting or exiting position.\nexport const HiddenCoords = {\n X: Circle.RADIUS * 10 * -1,\n Y: ViewBox.HEIGHT,\n};\n\nexport const Text = {\n OFFSET: 4,\n};\n\nexport const Animation = {\n SLOWEST: 1200,\n SLOW: 500,\n MEDIUM: 300,\n FAST: 200,\n};\n\n/**\n * Default tooltip options for Tipped.\n */\nexport const Tooltip = {\n offset: {\n y: -1,\n },\n fadeIn: 0,\n};\n","/* eslint-disable no-shadow, arrow-body-style */\nimport * as API from 'es6/core/api';\n\n// Maintain the promises for looking up titles. This is necessary\n// if multiple requests are made simultaneously (don't make the goal twice).\nconst getGoalIdResponses = {};\n\n/**\n * Tries to find a user goal by title. If it can't be found, then\n * will create the goal, instead. Will also add the items to the custom\n * goal.\n *\n * Part of the benefit of using this method is that multiple requests can\n * be made without the worry of accidentally creating the same goal twice.\n *\n * @param {String} title title of the goal\n * @param {Object} postParams fields for creating the goal (if not found), reference API for required fields\n * @param {Object[]} items array containing items to add to the goal\n * @param {Number} items[].itemId\n * @param {Number} items[].goalId\n * @returns {Promise} promise containing goalId\n */\nexport function addToBucket(title, postParams = {}, items = []) {\n let getGoalIdResponse = getGoalIdResponses[title];\n\n // Create a promise that returns the goalId. If the goalId is not\n // found, get the user goals and find the appropriate goal.\n if (!getGoalIdResponse) {\n getGoalIdResponse = API.getUserCreatedGoals().then(goals => {\n const goal = goals.find(goal => goal.title === title);\n const goalParams = Object.assign({}, postParams, { title });\n\n if (goal) {\n return goal;\n }\n\n // No goal was found, so create a new one.\n return API.postGoal(goalParams);\n }).then(goal => {\n return Promise.resolve(goal.id);\n });\n\n getGoalIdResponses[title] = getGoalIdResponse;\n }\n\n return getGoalIdResponse.then(goalId => {\n return API.postCopyItemsToCustomGoal(goalId, { items });\n }).then((responses) => {\n // Return the goalId by actually returning the getGoalIdResponse\n return getGoalIdResponse;\n });\n}\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n//\n// Generated on Tue Dec 16 2014 12:13:47 GMT+0100 (CET) by Charlie Robbins, Paolo Fragomeni & the Contributors (Using Codesurgeon).\n// Version 1.2.6\n//\n(function (exports) {\n /*\n * browser.js: Browser specific functionality for director.\n *\n * (C) 2011, Charlie Robbins, Paolo Fragomeni, & the Contributors.\n * MIT LICENSE\n *\n */\n var dloc = document.location;\n\n function dlocHashEmpty() {\n // Non-IE browsers return '' when the address bar shows '#'; Director's logic\n // assumes both mean empty.\n return dloc.hash === '' || dloc.hash === '#';\n }\n\n var listener = {\n mode: 'modern',\n hash: dloc.hash,\n history: false,\n check: function check() {\n var h = dloc.hash;\n\n if (h != this.hash) {\n this.hash = h;\n this.onHashChanged();\n }\n },\n fire: function fire() {\n if (this.mode === 'modern') {\n this.history === true ? window.onpopstate() : window.onhashchange();\n } else {\n this.onHashChanged();\n }\n },\n init: function init(fn, history) {\n var self = this;\n this.history = history;\n\n if (!Router.listeners) {\n Router.listeners = [];\n }\n\n function onchange(onChangeEvent) {\n for (var i = 0, l = Router.listeners.length; i < l; i++) {\n Router.listeners[i](onChangeEvent);\n }\n } //note IE8 is being counted as 'modern' because it has the hashchange event\n\n\n if ('onhashchange' in window && (document.documentMode === undefined || document.documentMode > 7)) {\n // At least for now HTML5 history is available for 'modern' browsers only\n if (this.history === true) {\n // There is an old bug in Chrome that causes onpopstate to fire even\n // upon initial page load. Since the handler is run manually in init(),\n // this would cause Chrome to run it twise. Currently the only\n // workaround seems to be to set the handler after the initial page load\n // http://code.google.com/p/chromium/issues/detail?id=63040\n setTimeout(function () {\n window.onpopstate = onchange;\n }, 500);\n } else {\n window.onhashchange = onchange;\n }\n\n this.mode = 'modern';\n } else {\n //\n // IE support, based on a concept by Erik Arvidson ...\n //\n var frame = document.createElement('iframe');\n frame.id = 'state-frame';\n frame.style.display = 'none';\n document.body.appendChild(frame);\n this.writeFrame('');\n\n if ('onpropertychange' in document && 'attachEvent' in document) {\n document.attachEvent('onpropertychange', function () {\n if (event.propertyName === 'location') {\n self.check();\n }\n });\n }\n\n window.setInterval(function () {\n self.check();\n }, 50);\n this.onHashChanged = onchange;\n this.mode = 'legacy';\n }\n\n Router.listeners.push(fn);\n return this.mode;\n },\n destroy: function destroy(fn) {\n if (!Router || !Router.listeners) {\n return;\n }\n\n var listeners = Router.listeners;\n\n for (var i = listeners.length - 1; i >= 0; i--) {\n if (listeners[i] === fn) {\n listeners.splice(i, 1);\n }\n }\n },\n setHash: function setHash(s) {\n // Mozilla always adds an entry to the history\n if (this.mode === 'legacy') {\n this.writeFrame(s);\n }\n\n if (this.history === true) {\n window.history.pushState({}, document.title, s); // Fire an onpopstate event manually since pushing does not obviously\n // trigger the pop event.\n\n this.fire();\n } else {\n dloc.hash = s[0] === '/' ? s : '/' + s;\n }\n\n return this;\n },\n writeFrame: function writeFrame(s) {\n // IE support...\n var f = document.getElementById('state-frame');\n var d = f.contentDocument || f.contentWindow.document;\n d.open();\n d.write(\"<script>_hash = '\" + s + \"'; onload = parent.listener.syncHash;<script>\");\n d.close();\n },\n syncHash: function syncHash() {\n // IE support...\n var s = this._hash;\n\n if (s != dloc.hash) {\n dloc.hash = s;\n }\n\n return this;\n },\n onHashChanged: function onHashChanged() {}\n };\n\n var Router = exports.Router = function (routes) {\n if (!(this instanceof Router)) return new Router(routes);\n this.params = {};\n this.routes = {};\n this.methods = ['on', 'once', 'after', 'before'];\n this.scope = [];\n this._methods = {};\n this._insert = this.insert;\n this.insert = this.insertEx;\n this.historySupport = (window.history != null ? window.history.pushState : null) != null;\n this.configure();\n this.mount(routes || {});\n };\n\n Router.prototype.init = function (r) {\n var self = this,\n routeTo;\n\n this.handler = function (onChangeEvent) {\n var newURL = onChangeEvent && onChangeEvent.newURL || window.location.hash;\n var url = self.history === true ? self.getPath() : newURL.replace(/.*#/, '');\n self.dispatch('on', url.charAt(0) === '/' ? url : '/' + url);\n };\n\n listener.init(this.handler, this.history);\n\n if (this.history === false) {\n if (dlocHashEmpty() && r) {\n dloc.hash = r;\n } else if (!dlocHashEmpty()) {\n self.dispatch('on', '/' + dloc.hash.replace(/^(#\\/|#|\\/)/, ''));\n }\n } else {\n if (this.convert_hash_in_init) {\n // Use hash as route\n routeTo = dlocHashEmpty() && r ? r : !dlocHashEmpty() ? dloc.hash.replace(/^#/, '') : null;\n\n if (routeTo) {\n window.history.replaceState({}, document.title, routeTo);\n }\n } else {\n // Use canonical url\n routeTo = this.getPath();\n } // Router has been initialized, but due to the chrome bug it will not\n // yet actually route HTML5 history state changes. Thus, decide if should route.\n\n\n if (routeTo || this.run_in_init === true) {\n this.handler();\n }\n }\n\n return this;\n };\n\n Router.prototype.explode = function () {\n var v = this.history === true ? this.getPath() : dloc.hash;\n\n if (v.charAt(1) === '/') {\n v = v.slice(1);\n }\n\n return v.slice(1, v.length).split(\"/\");\n };\n\n Router.prototype.setRoute = function (i, v, val) {\n var url = this.explode();\n\n if (typeof i === 'number' && typeof v === 'string') {\n url[i] = v;\n } else if (typeof val === 'string') {\n url.splice(i, v, s);\n } else {\n url = [i];\n }\n\n listener.setHash(url.join('/'));\n return url;\n }; //\n // ### function insertEx(method, path, route, parent)\n // #### @method {string} Method to insert the specific `route`.\n // #### @path {Array} Parsed path to insert the `route` at.\n // #### @route {Array|function} Route handlers to insert.\n // #### @parent {Object} **Optional** Parent \"routes\" to insert into.\n // insert a callback that will only occur once per the matched route.\n //\n\n\n Router.prototype.insertEx = function (method, path, route, parent) {\n if (method === \"once\") {\n method = \"on\";\n\n route = function (route) {\n var once = false;\n return function () {\n if (once) return;\n once = true;\n return route.apply(this, arguments);\n };\n }(route);\n }\n\n return this._insert(method, path, route, parent);\n };\n\n Router.prototype.getRoute = function (v) {\n var ret = v;\n\n if (typeof v === \"number\") {\n ret = this.explode()[v];\n } else if (typeof v === \"string\") {\n var h = this.explode();\n ret = h.indexOf(v);\n } else {\n ret = this.explode();\n }\n\n return ret;\n };\n\n Router.prototype.destroy = function () {\n listener.destroy(this.handler);\n return this;\n };\n\n Router.prototype.getPath = function () {\n var path = window.location.pathname;\n\n if (path.substr(0, 1) !== '/') {\n path = '/' + path;\n }\n\n return path;\n };\n\n function _every(arr, iterator) {\n for (var i = 0; i < arr.length; i += 1) {\n if (iterator(arr[i], i, arr) === false) {\n return;\n }\n }\n }\n\n function _flatten(arr) {\n var flat = [];\n\n for (var i = 0, n = arr.length; i < n; i++) {\n flat = flat.concat(arr[i]);\n }\n\n return flat;\n }\n\n function _asyncEverySeries(arr, iterator, callback) {\n if (!arr.length) {\n return callback();\n }\n\n var completed = 0;\n\n (function iterate() {\n iterator(arr[completed], function (err) {\n if (err || err === false) {\n callback(err);\n\n callback = function callback() {};\n } else {\n completed += 1;\n\n if (completed === arr.length) {\n callback();\n } else {\n iterate();\n }\n }\n });\n })();\n }\n\n function paramifyString(str, params, mod) {\n mod = str;\n\n for (var param in params) {\n if (params.hasOwnProperty(param)) {\n mod = params[param](str);\n\n if (mod !== str) {\n break;\n }\n }\n }\n\n return mod === str ? \"([._a-zA-Z0-9-%()]+)\" : mod;\n }\n\n function regifyString(str, params) {\n var matches,\n last = 0,\n out = \"\";\n\n while (matches = str.substr(last).match(/[^\\w\\d\\- %@&]*\\*[^\\w\\d\\- %@&]*/)) {\n last = matches.index + matches[0].length;\n matches[0] = matches[0].replace(/^\\*/, \"([_.()!\\\\ %@&a-zA-Z0-9-]+)\");\n out += str.substr(0, matches.index) + matches[0];\n }\n\n str = out += str.substr(last);\n var captures = str.match(/:([^\\/]+)/ig),\n capture,\n length;\n\n if (captures) {\n length = captures.length;\n\n for (var i = 0; i < length; i++) {\n capture = captures[i];\n\n if (capture.slice(0, 2) === \"::\") {\n str = capture.slice(1);\n } else {\n str = str.replace(capture, paramifyString(capture, params));\n }\n }\n }\n\n return str;\n }\n\n function terminator(routes, delimiter, start, stop) {\n var last = 0,\n left = 0,\n right = 0,\n start = (start || \"(\").toString(),\n stop = (stop || \")\").toString(),\n i;\n\n for (i = 0; i < routes.length; i++) {\n var chunk = routes[i];\n\n if (chunk.indexOf(start, last) > chunk.indexOf(stop, last) || ~chunk.indexOf(start, last) && !~chunk.indexOf(stop, last) || !~chunk.indexOf(start, last) && ~chunk.indexOf(stop, last)) {\n left = chunk.indexOf(start, last);\n right = chunk.indexOf(stop, last);\n\n if (~left && !~right || !~left && ~right) {\n var tmp = routes.slice(0, (i || 1) + 1).join(delimiter);\n routes = [tmp].concat(routes.slice((i || 1) + 1));\n }\n\n last = (right > left ? right : left) + 1;\n i = 0;\n } else {\n last = 0;\n }\n }\n\n return routes;\n }\n\n var QUERY_SEPARATOR = /\\?.*/;\n\n Router.prototype.configure = function (options) {\n options = options || {};\n\n for (var i = 0; i < this.methods.length; i++) {\n this._methods[this.methods[i]] = true;\n }\n\n this.recurse = options.recurse || this.recurse || false;\n this.async = options.async || false;\n this.delimiter = options.delimiter || \"/\";\n this.strict = typeof options.strict === \"undefined\" ? true : options.strict;\n this.notfound = options.notfound;\n this.resource = options.resource;\n this.history = options.html5history && this.historySupport || false;\n this.run_in_init = this.history === true && options.run_handler_in_init !== false;\n this.convert_hash_in_init = this.history === true && options.convert_hash_in_init !== false;\n this.every = {\n after: options.after || null,\n before: options.before || null,\n on: options.on || null\n };\n return this;\n };\n\n Router.prototype.param = function (token, matcher) {\n if (token[0] !== \":\") {\n token = \":\" + token;\n }\n\n var compiled = new RegExp(token, \"g\");\n\n this.params[token] = function (str) {\n return str.replace(compiled, matcher.source || matcher);\n };\n\n return this;\n };\n\n Router.prototype.on = Router.prototype.route = function (method, path, route) {\n var self = this;\n\n if (!route && typeof path == \"function\") {\n route = path;\n path = method;\n method = \"on\";\n }\n\n if (Array.isArray(path)) {\n return path.forEach(function (p) {\n self.on(method, p, route);\n });\n }\n\n if (path.source) {\n path = path.source.replace(/\\\\\\//ig, \"/\");\n }\n\n if (Array.isArray(method)) {\n return method.forEach(function (m) {\n self.on(m.toLowerCase(), path, route);\n });\n }\n\n path = path.split(new RegExp(this.delimiter));\n path = terminator(path, this.delimiter);\n this.insert(method, this.scope.concat(path), route);\n };\n\n Router.prototype.path = function (path, routesFn) {\n var self = this,\n length = this.scope.length;\n\n if (path.source) {\n path = path.source.replace(/\\\\\\//ig, \"/\");\n }\n\n path = path.split(new RegExp(this.delimiter));\n path = terminator(path, this.delimiter);\n this.scope = this.scope.concat(path);\n routesFn.call(this, this);\n this.scope.splice(length, path.length);\n };\n\n Router.prototype.dispatch = function (method, path, callback) {\n var self = this,\n fns = this.traverse(method, path.replace(QUERY_SEPARATOR, \"\"), this.routes, \"\"),\n invoked = this._invoked,\n after;\n this._invoked = true;\n\n if (!fns || fns.length === 0) {\n this.last = [];\n\n if (typeof this.notfound === \"function\") {\n this.invoke([this.notfound], {\n method: method,\n path: path\n }, callback);\n }\n\n return false;\n }\n\n if (this.recurse === \"forward\") {\n fns = fns.reverse();\n }\n\n function updateAndInvoke() {\n self.last = fns.after;\n self.invoke(self.runlist(fns), self, callback);\n }\n\n after = this.every && this.every.after ? [this.every.after].concat(this.last) : [this.last];\n\n if (after && after.length > 0 && invoked) {\n if (this.async) {\n this.invoke(after, this, updateAndInvoke);\n } else {\n this.invoke(after, this);\n updateAndInvoke();\n }\n\n return true;\n }\n\n updateAndInvoke();\n return true;\n };\n\n Router.prototype.invoke = function (fns, thisArg, callback) {\n var self = this;\n\n var _apply2;\n\n if (this.async) {\n _apply2 = function apply(fn, next) {\n if (Array.isArray(fn)) {\n return _asyncEverySeries(fn, _apply2, next);\n } else if (typeof fn == \"function\") {\n fn.apply(thisArg, (fns.captures || []).concat(next));\n }\n };\n\n _asyncEverySeries(fns, _apply2, function () {\n if (callback) {\n callback.apply(thisArg, arguments);\n }\n });\n } else {\n _apply2 = function _apply(fn) {\n if (Array.isArray(fn)) {\n return _every(fn, _apply2);\n } else if (typeof fn === \"function\") {\n return fn.apply(thisArg, fns.captures || []);\n } else if (typeof fn === \"string\" && self.resource) {\n self.resource[fn].apply(thisArg, fns.captures || []);\n }\n };\n\n _every(fns, _apply2);\n }\n };\n\n Router.prototype.traverse = function (method, path, routes, regexp, filter) {\n var fns = [],\n current,\n exact,\n match,\n next,\n that;\n\n function filterRoutes(routes) {\n if (!filter) {\n return routes;\n }\n\n function deepCopy(source) {\n var result = [];\n\n for (var i = 0; i < source.length; i++) {\n result[i] = Array.isArray(source[i]) ? deepCopy(source[i]) : source[i];\n }\n\n return result;\n }\n\n function applyFilter(fns) {\n for (var i = fns.length - 1; i >= 0; i--) {\n if (Array.isArray(fns[i])) {\n applyFilter(fns[i]);\n\n if (fns[i].length === 0) {\n fns.splice(i, 1);\n }\n } else {\n if (!filter(fns[i])) {\n fns.splice(i, 1);\n }\n }\n }\n }\n\n var newRoutes = deepCopy(routes);\n newRoutes.matched = routes.matched;\n newRoutes.captures = routes.captures;\n newRoutes.after = routes.after.filter(filter);\n applyFilter(newRoutes);\n return newRoutes;\n }\n\n if (path === this.delimiter && routes[method]) {\n next = [[routes.before, routes[method]].filter(Boolean)];\n next.after = [routes.after].filter(Boolean);\n next.matched = true;\n next.captures = [];\n return filterRoutes(next);\n }\n\n for (var r in routes) {\n if (routes.hasOwnProperty(r) && (!this._methods[r] || this._methods[r] && _typeof(routes[r]) === \"object\" && !Array.isArray(routes[r]))) {\n current = exact = regexp + this.delimiter + r;\n\n if (!this.strict) {\n exact += \"[\" + this.delimiter + \"]?\";\n }\n\n match = path.match(new RegExp(\"^\" + exact));\n\n if (!match) {\n continue;\n }\n\n if (match[0] && match[0] == path && routes[r][method]) {\n next = [[routes[r].before, routes[r][method]].filter(Boolean)];\n next.after = [routes[r].after].filter(Boolean);\n next.matched = true;\n next.captures = match.slice(1);\n\n if (this.recurse && routes === this.routes) {\n next.push([routes.before, routes.on].filter(Boolean));\n next.after = next.after.concat([routes.after].filter(Boolean));\n }\n\n return filterRoutes(next);\n }\n\n next = this.traverse(method, path, routes[r], current);\n\n if (next.matched) {\n if (next.length > 0) {\n fns = fns.concat(next);\n }\n\n if (this.recurse) {\n fns.push([routes[r].before, routes[r].on].filter(Boolean));\n next.after = next.after.concat([routes[r].after].filter(Boolean));\n\n if (routes === this.routes) {\n fns.push([routes[\"before\"], routes[\"on\"]].filter(Boolean));\n next.after = next.after.concat([routes[\"after\"]].filter(Boolean));\n }\n }\n\n fns.matched = true;\n fns.captures = next.captures;\n fns.after = next.after;\n return filterRoutes(fns);\n }\n }\n }\n\n return false;\n };\n\n Router.prototype.insert = function (method, path, route, parent) {\n var methodType, parentType, isArray, nested, part;\n path = path.filter(function (p) {\n return p && p.length > 0;\n });\n parent = parent || this.routes;\n part = path.shift();\n\n if (/\\:|\\*/.test(part) && !/\\\\d|\\\\w/.test(part)) {\n part = regifyString(part, this.params);\n }\n\n if (path.length > 0) {\n parent[part] = parent[part] || {};\n return this.insert(method, path, route, parent[part]);\n }\n\n if (!part && !path.length && parent === this.routes) {\n methodType = _typeof(parent[method]);\n\n switch (methodType) {\n case \"function\":\n parent[method] = [parent[method], route];\n return;\n\n case \"object\":\n parent[method].push(route);\n return;\n\n case \"undefined\":\n parent[method] = route;\n return;\n }\n\n return;\n }\n\n parentType = _typeof(parent[part]);\n isArray = Array.isArray(parent[part]);\n\n if (parent[part] && !isArray && parentType == \"object\") {\n methodType = _typeof(parent[part][method]);\n\n switch (methodType) {\n case \"function\":\n parent[part][method] = [parent[part][method], route];\n return;\n\n case \"object\":\n parent[part][method].push(route);\n return;\n\n case \"undefined\":\n parent[part][method] = route;\n return;\n }\n } else if (parentType == \"undefined\") {\n nested = {};\n nested[method] = route;\n parent[part] = nested;\n return;\n }\n\n throw new Error(\"Invalid route context: \" + parentType);\n };\n\n Router.prototype.extend = function (methods) {\n var self = this,\n len = methods.length,\n i;\n\n function extend(method) {\n self._methods[method] = true;\n\n self[method] = function () {\n var extra = arguments.length === 1 ? [method, \"\"] : [method];\n self.on.apply(self, extra.concat(Array.prototype.slice.call(arguments)));\n };\n }\n\n for (i = 0; i < len; i++) {\n extend(methods[i]);\n }\n };\n\n Router.prototype.runlist = function (fns) {\n var runlist = this.every && this.every.before ? [this.every.before].concat(_flatten(fns)) : _flatten(fns);\n\n if (this.every && this.every.on) {\n runlist.push(this.every.on);\n }\n\n runlist.captures = fns.captures;\n runlist.source = fns.source;\n return runlist;\n };\n\n Router.prototype.mount = function (routes, path) {\n if (!routes || _typeof(routes) !== \"object\" || Array.isArray(routes)) {\n return;\n }\n\n var self = this;\n path = path || [];\n\n if (!Array.isArray(path)) {\n path = path.split(self.delimiter);\n }\n\n function insertOrMount(route, local) {\n var rename = route,\n parts = route.split(self.delimiter),\n routeType = _typeof(routes[route]),\n isRoute = parts[0] === \"\" || !self._methods[parts[0]],\n event = isRoute ? \"on\" : rename;\n\n if (isRoute) {\n rename = rename.slice((rename.match(new RegExp(\"^\" + self.delimiter)) || [\"\"])[0].length);\n parts.shift();\n }\n\n if (isRoute && routeType === \"object\" && !Array.isArray(routes[route])) {\n local = local.concat(parts);\n self.mount(routes[route], local);\n return;\n }\n\n if (isRoute) {\n local = local.concat(rename.split(self.delimiter));\n local = terminator(local, self.delimiter);\n }\n\n self.insert(event, local, routes[route]);\n }\n\n for (var route in routes) {\n if (routes.hasOwnProperty(route)) {\n insertOrMount(route, path.slice(0));\n }\n }\n };\n})((typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === \"object\" ? exports : window);","/* eslint-disable react/prefer-es6-class */\nimport React from 'react';\nimport Localization from 'es6/services/localization';\nimport ProgressBar from 'es6/components/common/progress-bar';\n\nexport const SessionProgressBar = React.createClass({\n displayName: 'SessionProgressBar',\n\n propTypes: {\n progress: React.PropTypes.number.isRequired,\n },\n\n getInitialState() {\n return {\n animatedProgress: 0,\n };\n },\n\n _handleAnimationIteration(animatedProgress) {\n this.setState({ animatedProgress });\n },\n\n render() {\n return (\n <div className=\"session-progress\">\n <span className=\"text\">{Localization.t('js_iknow.session progress')}</span>\n <span className=\"percent\">{this.state.animatedProgress}%</span>\n <ProgressBar animationDurationMillis={500} progress={this.props.progress} onAnimationIteration={this._handleAnimationIteration} />\n </div>\n );\n },\n});\n\nexport default SessionProgressBar;\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n!function () {\n var d3 = {\n version: \"3.5.15\"\n };\n\n var d3_arraySlice = [].slice,\n d3_array = function d3_array(list) {\n return d3_arraySlice.call(list);\n };\n\n var d3_document = this.document;\n\n function d3_documentElement(node) {\n return node && (node.ownerDocument || node.document || node).documentElement;\n }\n\n function d3_window(node) {\n return node && (node.ownerDocument && node.ownerDocument.defaultView || node.document && node || node.defaultView);\n }\n\n if (d3_document) {\n try {\n d3_array(d3_document.documentElement.childNodes)[0].nodeType;\n } catch (e) {\n d3_array = function d3_array(list) {\n var i = list.length,\n array = new Array(i);\n\n while (i--) {\n array[i] = list[i];\n }\n\n return array;\n };\n }\n }\n\n if (!Date.now) Date.now = function () {\n return +new Date();\n };\n\n if (d3_document) {\n try {\n d3_document.createElement(\"DIV\").style.setProperty(\"opacity\", 0, \"\");\n } catch (error) {\n var d3_element_prototype = this.Element.prototype,\n d3_element_setAttribute = d3_element_prototype.setAttribute,\n d3_element_setAttributeNS = d3_element_prototype.setAttributeNS,\n d3_style_prototype = this.CSSStyleDeclaration.prototype,\n d3_style_setProperty = d3_style_prototype.setProperty;\n\n d3_element_prototype.setAttribute = function (name, value) {\n d3_element_setAttribute.call(this, name, value + \"\");\n };\n\n d3_element_prototype.setAttributeNS = function (space, local, value) {\n d3_element_setAttributeNS.call(this, space, local, value + \"\");\n };\n\n d3_style_prototype.setProperty = function (name, value, priority) {\n d3_style_setProperty.call(this, name, value + \"\", priority);\n };\n }\n }\n\n d3.ascending = d3_ascending;\n\n function d3_ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n }\n\n d3.descending = function (a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n };\n\n d3.min = function (array, f) {\n var i = -1,\n n = array.length,\n a,\n b;\n\n if (arguments.length === 1) {\n while (++i < n) {\n if ((b = array[i]) != null && b >= b) {\n a = b;\n break;\n }\n }\n\n while (++i < n) {\n if ((b = array[i]) != null && a > b) a = b;\n }\n } else {\n while (++i < n) {\n if ((b = f.call(array, array[i], i)) != null && b >= b) {\n a = b;\n break;\n }\n }\n\n while (++i < n) {\n if ((b = f.call(array, array[i], i)) != null && a > b) a = b;\n }\n }\n\n return a;\n };\n\n d3.max = function (array, f) {\n var i = -1,\n n = array.length,\n a,\n b;\n\n if (arguments.length === 1) {\n while (++i < n) {\n if ((b = array[i]) != null && b >= b) {\n a = b;\n break;\n }\n }\n\n while (++i < n) {\n if ((b = array[i]) != null && b > a) a = b;\n }\n } else {\n while (++i < n) {\n if ((b = f.call(array, array[i], i)) != null && b >= b) {\n a = b;\n break;\n }\n }\n\n while (++i < n) {\n if ((b = f.call(array, array[i], i)) != null && b > a) a = b;\n }\n }\n\n return a;\n };\n\n d3.extent = function (array, f) {\n var i = -1,\n n = array.length,\n a,\n b,\n c;\n\n if (arguments.length === 1) {\n while (++i < n) {\n if ((b = array[i]) != null && b >= b) {\n a = c = b;\n break;\n }\n }\n\n while (++i < n) {\n if ((b = array[i]) != null) {\n if (a > b) a = b;\n if (c < b) c = b;\n }\n }\n } else {\n while (++i < n) {\n if ((b = f.call(array, array[i], i)) != null && b >= b) {\n a = c = b;\n break;\n }\n }\n\n while (++i < n) {\n if ((b = f.call(array, array[i], i)) != null) {\n if (a > b) a = b;\n if (c < b) c = b;\n }\n }\n }\n\n return [a, c];\n };\n\n function d3_number(x) {\n return x === null ? NaN : +x;\n }\n\n function d3_numeric(x) {\n return !isNaN(x);\n }\n\n d3.sum = function (array, f) {\n var s = 0,\n n = array.length,\n a,\n i = -1;\n\n if (arguments.length === 1) {\n while (++i < n) {\n if (d3_numeric(a = +array[i])) s += a;\n }\n } else {\n while (++i < n) {\n if (d3_numeric(a = +f.call(array, array[i], i))) s += a;\n }\n }\n\n return s;\n };\n\n d3.mean = function (array, f) {\n var s = 0,\n n = array.length,\n a,\n i = -1,\n j = n;\n\n if (arguments.length === 1) {\n while (++i < n) {\n if (d3_numeric(a = d3_number(array[i]))) s += a;else --j;\n }\n } else {\n while (++i < n) {\n if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) s += a;else --j;\n }\n }\n\n if (j) return s / j;\n };\n\n d3.quantile = function (values, p) {\n var H = (values.length - 1) * p + 1,\n h = Math.floor(H),\n v = +values[h - 1],\n e = H - h;\n return e ? v + e * (values[h] - v) : v;\n };\n\n d3.median = function (array, f) {\n var numbers = [],\n n = array.length,\n a,\n i = -1;\n\n if (arguments.length === 1) {\n while (++i < n) {\n if (d3_numeric(a = d3_number(array[i]))) numbers.push(a);\n }\n } else {\n while (++i < n) {\n if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) numbers.push(a);\n }\n }\n\n if (numbers.length) return d3.quantile(numbers.sort(d3_ascending), .5);\n };\n\n d3.variance = function (array, f) {\n var n = array.length,\n m = 0,\n a,\n d,\n s = 0,\n i = -1,\n j = 0;\n\n if (arguments.length === 1) {\n while (++i < n) {\n if (d3_numeric(a = d3_number(array[i]))) {\n d = a - m;\n m += d / ++j;\n s += d * (a - m);\n }\n }\n } else {\n while (++i < n) {\n if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) {\n d = a - m;\n m += d / ++j;\n s += d * (a - m);\n }\n }\n }\n\n if (j > 1) return s / (j - 1);\n };\n\n d3.deviation = function () {\n var v = d3.variance.apply(this, arguments);\n return v ? Math.sqrt(v) : v;\n };\n\n function d3_bisector(compare) {\n return {\n left: function left(a, x, lo, hi) {\n if (arguments.length < 3) lo = 0;\n if (arguments.length < 4) hi = a.length;\n\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;else hi = mid;\n }\n\n return lo;\n },\n right: function right(a, x, lo, hi) {\n if (arguments.length < 3) lo = 0;\n if (arguments.length < 4) hi = a.length;\n\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;else lo = mid + 1;\n }\n\n return lo;\n }\n };\n }\n\n var d3_bisect = d3_bisector(d3_ascending);\n d3.bisectLeft = d3_bisect.left;\n d3.bisect = d3.bisectRight = d3_bisect.right;\n\n d3.bisector = function (f) {\n return d3_bisector(f.length === 1 ? function (d, x) {\n return d3_ascending(f(d), x);\n } : f);\n };\n\n d3.shuffle = function (array, i0, i1) {\n if ((m = arguments.length) < 3) {\n i1 = array.length;\n if (m < 2) i0 = 0;\n }\n\n var m = i1 - i0,\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m + i0], array[m + i0] = array[i + i0], array[i + i0] = t;\n }\n\n return array;\n };\n\n d3.permute = function (array, indexes) {\n var i = indexes.length,\n permutes = new Array(i);\n\n while (i--) {\n permutes[i] = array[indexes[i]];\n }\n\n return permutes;\n };\n\n d3.pairs = function (array) {\n var i = 0,\n n = array.length - 1,\n p0,\n p1 = array[0],\n pairs = new Array(n < 0 ? 0 : n);\n\n while (i < n) {\n pairs[i] = [p0 = p1, p1 = array[++i]];\n }\n\n return pairs;\n };\n\n d3.transpose = function (matrix) {\n if (!(n = matrix.length)) return [];\n\n for (var i = -1, m = d3.min(matrix, d3_transposeLength), transpose = new Array(m); ++i < m;) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n row[j] = matrix[j][i];\n }\n }\n\n return transpose;\n };\n\n function d3_transposeLength(d) {\n return d.length;\n }\n\n d3.zip = function () {\n return d3.transpose(arguments);\n };\n\n d3.keys = function (map) {\n var keys = [];\n\n for (var key in map) {\n keys.push(key);\n }\n\n return keys;\n };\n\n d3.values = function (map) {\n var values = [];\n\n for (var key in map) {\n values.push(map[key]);\n }\n\n return values;\n };\n\n d3.entries = function (map) {\n var entries = [];\n\n for (var key in map) {\n entries.push({\n key: key,\n value: map[key]\n });\n }\n\n return entries;\n };\n\n d3.merge = function (arrays) {\n var n = arrays.length,\n m,\n i = -1,\n j = 0,\n merged,\n array;\n\n while (++i < n) {\n j += arrays[i].length;\n }\n\n merged = new Array(j);\n\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n\n return merged;\n };\n\n var abs = Math.abs;\n\n d3.range = function (start, stop, step) {\n if (arguments.length < 3) {\n step = 1;\n\n if (arguments.length < 2) {\n stop = start;\n start = 0;\n }\n }\n\n if ((stop - start) / step === Infinity) throw new Error(\"infinite range\");\n var range = [],\n k = d3_range_integerScale(abs(step)),\n i = -1,\n j;\n start *= k, stop *= k, step *= k;\n if (step < 0) while ((j = start + step * ++i) > stop) {\n range.push(j / k);\n } else while ((j = start + step * ++i) < stop) {\n range.push(j / k);\n }\n return range;\n };\n\n function d3_range_integerScale(x) {\n var k = 1;\n\n while (x * k % 1) {\n k *= 10;\n }\n\n return k;\n }\n\n function d3_class(ctor, properties) {\n for (var key in properties) {\n Object.defineProperty(ctor.prototype, key, {\n value: properties[key],\n enumerable: false\n });\n }\n }\n\n d3.map = function (object, f) {\n var map = new d3_Map();\n\n if (object instanceof d3_Map) {\n object.forEach(function (key, value) {\n map.set(key, value);\n });\n } else if (Array.isArray(object)) {\n var i = -1,\n n = object.length,\n o;\n if (arguments.length === 1) while (++i < n) {\n map.set(i, object[i]);\n } else while (++i < n) {\n map.set(f.call(object, o = object[i], i), o);\n }\n } else {\n for (var key in object) {\n map.set(key, object[key]);\n }\n }\n\n return map;\n };\n\n function d3_Map() {\n this._ = Object.create(null);\n }\n\n var d3_map_proto = \"__proto__\",\n d3_map_zero = \"\\x00\";\n d3_class(d3_Map, {\n has: d3_map_has,\n get: function get(key) {\n return this._[d3_map_escape(key)];\n },\n set: function set(key, value) {\n return this._[d3_map_escape(key)] = value;\n },\n remove: d3_map_remove,\n keys: d3_map_keys,\n values: function values() {\n var values = [];\n\n for (var key in this._) {\n values.push(this._[key]);\n }\n\n return values;\n },\n entries: function entries() {\n var entries = [];\n\n for (var key in this._) {\n entries.push({\n key: d3_map_unescape(key),\n value: this._[key]\n });\n }\n\n return entries;\n },\n size: d3_map_size,\n empty: d3_map_empty,\n forEach: function forEach(f) {\n for (var key in this._) {\n f.call(this, d3_map_unescape(key), this._[key]);\n }\n }\n });\n\n function d3_map_escape(key) {\n return (key += \"\") === d3_map_proto || key[0] === d3_map_zero ? d3_map_zero + key : key;\n }\n\n function d3_map_unescape(key) {\n return (key += \"\")[0] === d3_map_zero ? key.slice(1) : key;\n }\n\n function d3_map_has(key) {\n return d3_map_escape(key) in this._;\n }\n\n function d3_map_remove(key) {\n return (key = d3_map_escape(key)) in this._ && delete this._[key];\n }\n\n function d3_map_keys() {\n var keys = [];\n\n for (var key in this._) {\n keys.push(d3_map_unescape(key));\n }\n\n return keys;\n }\n\n function d3_map_size() {\n var size = 0;\n\n for (var key in this._) {\n ++size;\n }\n\n return size;\n }\n\n function d3_map_empty() {\n for (var key in this._) {\n return false;\n }\n\n return true;\n }\n\n d3.nest = function () {\n var nest = {},\n keys = [],\n sortKeys = [],\n sortValues,\n rollup;\n\n function map(mapType, array, depth) {\n if (depth >= keys.length) return rollup ? rollup.call(nest, array) : sortValues ? array.sort(sortValues) : array;\n var i = -1,\n n = array.length,\n key = keys[depth++],\n keyValue,\n object,\n setter,\n valuesByKey = new d3_Map(),\n values;\n\n while (++i < n) {\n if (values = valuesByKey.get(keyValue = key(object = array[i]))) {\n values.push(object);\n } else {\n valuesByKey.set(keyValue, [object]);\n }\n }\n\n if (mapType) {\n object = mapType();\n\n setter = function setter(keyValue, values) {\n object.set(keyValue, map(mapType, values, depth));\n };\n } else {\n object = {};\n\n setter = function setter(keyValue, values) {\n object[keyValue] = map(mapType, values, depth);\n };\n }\n\n valuesByKey.forEach(setter);\n return object;\n }\n\n function entries(map, depth) {\n if (depth >= keys.length) return map;\n var array = [],\n sortKey = sortKeys[depth++];\n map.forEach(function (key, keyMap) {\n array.push({\n key: key,\n values: entries(keyMap, depth)\n });\n });\n return sortKey ? array.sort(function (a, b) {\n return sortKey(a.key, b.key);\n }) : array;\n }\n\n nest.map = function (array, mapType) {\n return map(mapType, array, 0);\n };\n\n nest.entries = function (array) {\n return entries(map(d3.map, array, 0), 0);\n };\n\n nest.key = function (d) {\n keys.push(d);\n return nest;\n };\n\n nest.sortKeys = function (order) {\n sortKeys[keys.length - 1] = order;\n return nest;\n };\n\n nest.sortValues = function (order) {\n sortValues = order;\n return nest;\n };\n\n nest.rollup = function (f) {\n rollup = f;\n return nest;\n };\n\n return nest;\n };\n\n d3.set = function (array) {\n var set = new d3_Set();\n if (array) for (var i = 0, n = array.length; i < n; ++i) {\n set.add(array[i]);\n }\n return set;\n };\n\n function d3_Set() {\n this._ = Object.create(null);\n }\n\n d3_class(d3_Set, {\n has: d3_map_has,\n add: function add(key) {\n this._[d3_map_escape(key += \"\")] = true;\n return key;\n },\n remove: d3_map_remove,\n values: d3_map_keys,\n size: d3_map_size,\n empty: d3_map_empty,\n forEach: function forEach(f) {\n for (var key in this._) {\n f.call(this, d3_map_unescape(key));\n }\n }\n });\n d3.behavior = {};\n\n function d3_identity(d) {\n return d;\n }\n\n d3.rebind = function (target, source) {\n var i = 1,\n n = arguments.length,\n method;\n\n while (++i < n) {\n target[method = arguments[i]] = d3_rebind(target, source, source[method]);\n }\n\n return target;\n };\n\n function d3_rebind(target, source, method) {\n return function () {\n var value = method.apply(source, arguments);\n return value === source ? target : value;\n };\n }\n\n function d3_vendorSymbol(object, name) {\n if (name in object) return name;\n name = name.charAt(0).toUpperCase() + name.slice(1);\n\n for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) {\n var prefixName = d3_vendorPrefixes[i] + name;\n if (prefixName in object) return prefixName;\n }\n }\n\n var d3_vendorPrefixes = [\"webkit\", \"ms\", \"moz\", \"Moz\", \"o\", \"O\"];\n\n function d3_noop() {}\n\n d3.dispatch = function () {\n var dispatch = new d3_dispatch(),\n i = -1,\n n = arguments.length;\n\n while (++i < n) {\n dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n }\n\n return dispatch;\n };\n\n function d3_dispatch() {}\n\n d3_dispatch.prototype.on = function (type, listener) {\n var i = type.indexOf(\".\"),\n name = \"\";\n\n if (i >= 0) {\n name = type.slice(i + 1);\n type = type.slice(0, i);\n }\n\n if (type) return arguments.length < 2 ? this[type].on(name) : this[type].on(name, listener);\n\n if (arguments.length === 2) {\n if (listener == null) for (type in this) {\n if (this.hasOwnProperty(type)) this[type].on(name, null);\n }\n return this;\n }\n };\n\n function d3_dispatch_event(dispatch) {\n var listeners = [],\n listenerByName = new d3_Map();\n\n function event() {\n var z = listeners,\n i = -1,\n n = z.length,\n l;\n\n while (++i < n) {\n if (l = z[i].on) l.apply(this, arguments);\n }\n\n return dispatch;\n }\n\n event.on = function (name, listener) {\n var l = listenerByName.get(name),\n i;\n if (arguments.length < 2) return l && l.on;\n\n if (l) {\n l.on = null;\n listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));\n listenerByName.remove(name);\n }\n\n if (listener) listeners.push(listenerByName.set(name, {\n on: listener\n }));\n return dispatch;\n };\n\n return event;\n }\n\n d3.event = null;\n\n function d3_eventPreventDefault() {\n d3.event.preventDefault();\n }\n\n function d3_eventSource() {\n var e = d3.event,\n s;\n\n while (s = e.sourceEvent) {\n e = s;\n }\n\n return e;\n }\n\n function d3_eventDispatch(target) {\n var dispatch = new d3_dispatch(),\n i = 0,\n n = arguments.length;\n\n while (++i < n) {\n dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n }\n\n dispatch.of = function (thiz, argumentz) {\n return function (e1) {\n try {\n var e0 = e1.sourceEvent = d3.event;\n e1.target = target;\n d3.event = e1;\n dispatch[e1.type].apply(thiz, argumentz);\n } finally {\n d3.event = e0;\n }\n };\n };\n\n return dispatch;\n }\n\n d3.requote = function (s) {\n return s.replace(d3_requote_re, \"\\\\$&\");\n };\n\n var d3_requote_re = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n var d3_subclass = {}.__proto__ ? function (object, prototype) {\n object.__proto__ = prototype;\n } : function (object, prototype) {\n for (var property in prototype) {\n object[property] = prototype[property];\n }\n };\n\n function d3_selection(groups) {\n d3_subclass(groups, d3_selectionPrototype);\n return groups;\n }\n\n var d3_select = function d3_select(s, n) {\n return n.querySelector(s);\n },\n d3_selectAll = function d3_selectAll(s, n) {\n return n.querySelectorAll(s);\n },\n _d3_selectMatches = function d3_selectMatches(n, s) {\n var d3_selectMatcher = n.matches || n[d3_vendorSymbol(n, \"matchesSelector\")];\n\n _d3_selectMatches = function d3_selectMatches(n, s) {\n return d3_selectMatcher.call(n, s);\n };\n\n return _d3_selectMatches(n, s);\n };\n\n if (typeof Sizzle === \"function\") {\n d3_select = function d3_select(s, n) {\n return Sizzle(s, n)[0] || null;\n };\n\n d3_selectAll = Sizzle;\n _d3_selectMatches = Sizzle.matchesSelector;\n }\n\n d3.selection = function () {\n return d3.select(d3_document.documentElement);\n };\n\n var d3_selectionPrototype = d3.selection.prototype = [];\n\n d3_selectionPrototype.select = function (selector) {\n var subgroups = [],\n subgroup,\n subnode,\n group,\n node;\n selector = d3_selection_selector(selector);\n\n for (var j = -1, m = this.length; ++j < m;) {\n subgroups.push(subgroup = []);\n subgroup.parentNode = (group = this[j]).parentNode;\n\n for (var i = -1, n = group.length; ++i < n;) {\n if (node = group[i]) {\n subgroup.push(subnode = selector.call(node, node.__data__, i, j));\n if (subnode && \"__data__\" in node) subnode.__data__ = node.__data__;\n } else {\n subgroup.push(null);\n }\n }\n }\n\n return d3_selection(subgroups);\n };\n\n function d3_selection_selector(selector) {\n return typeof selector === \"function\" ? selector : function () {\n return d3_select(selector, this);\n };\n }\n\n d3_selectionPrototype.selectAll = function (selector) {\n var subgroups = [],\n subgroup,\n node;\n selector = d3_selection_selectorAll(selector);\n\n for (var j = -1, m = this.length; ++j < m;) {\n for (var group = this[j], i = -1, n = group.length; ++i < n;) {\n if (node = group[i]) {\n subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i, j)));\n subgroup.parentNode = node;\n }\n }\n }\n\n return d3_selection(subgroups);\n };\n\n function d3_selection_selectorAll(selector) {\n return typeof selector === \"function\" ? selector : function () {\n return d3_selectAll(selector, this);\n };\n }\n\n var d3_nsPrefix = {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: \"http://www.w3.org/1999/xhtml\",\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n };\n d3.ns = {\n prefix: d3_nsPrefix,\n qualify: function qualify(name) {\n var i = name.indexOf(\":\"),\n prefix = name;\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return d3_nsPrefix.hasOwnProperty(prefix) ? {\n space: d3_nsPrefix[prefix],\n local: name\n } : name;\n }\n };\n\n d3_selectionPrototype.attr = function (name, value) {\n if (arguments.length < 2) {\n if (typeof name === \"string\") {\n var node = this.node();\n name = d3.ns.qualify(name);\n return name.local ? node.getAttributeNS(name.space, name.local) : node.getAttribute(name);\n }\n\n for (value in name) {\n this.each(d3_selection_attr(value, name[value]));\n }\n\n return this;\n }\n\n return this.each(d3_selection_attr(name, value));\n };\n\n function d3_selection_attr(name, value) {\n name = d3.ns.qualify(name);\n\n function attrNull() {\n this.removeAttribute(name);\n }\n\n function attrNullNS() {\n this.removeAttributeNS(name.space, name.local);\n }\n\n function attrConstant() {\n this.setAttribute(name, value);\n }\n\n function attrConstantNS() {\n this.setAttributeNS(name.space, name.local, value);\n }\n\n function attrFunction() {\n var x = value.apply(this, arguments);\n if (x == null) this.removeAttribute(name);else this.setAttribute(name, x);\n }\n\n function attrFunctionNS() {\n var x = value.apply(this, arguments);\n if (x == null) this.removeAttributeNS(name.space, name.local);else this.setAttributeNS(name.space, name.local, x);\n }\n\n return value == null ? name.local ? attrNullNS : attrNull : typeof value === \"function\" ? name.local ? attrFunctionNS : attrFunction : name.local ? attrConstantNS : attrConstant;\n }\n\n function d3_collapse(s) {\n return s.trim().replace(/\\s+/g, \" \");\n }\n\n d3_selectionPrototype.classed = function (name, value) {\n if (arguments.length < 2) {\n if (typeof name === \"string\") {\n var node = this.node(),\n n = (name = d3_selection_classes(name)).length,\n i = -1;\n\n if (value = node.classList) {\n while (++i < n) {\n if (!value.contains(name[i])) return false;\n }\n } else {\n value = node.getAttribute(\"class\");\n\n while (++i < n) {\n if (!d3_selection_classedRe(name[i]).test(value)) return false;\n }\n }\n\n return true;\n }\n\n for (value in name) {\n this.each(d3_selection_classed(value, name[value]));\n }\n\n return this;\n }\n\n return this.each(d3_selection_classed(name, value));\n };\n\n function d3_selection_classedRe(name) {\n return new RegExp(\"(?:^|\\\\s+)\" + d3.requote(name) + \"(?:\\\\s+|$)\", \"g\");\n }\n\n function d3_selection_classes(name) {\n return (name + \"\").trim().split(/^|\\s+/);\n }\n\n function d3_selection_classed(name, value) {\n name = d3_selection_classes(name).map(d3_selection_classedName);\n var n = name.length;\n\n function classedConstant() {\n var i = -1;\n\n while (++i < n) {\n name[i](this, value);\n }\n }\n\n function classedFunction() {\n var i = -1,\n x = value.apply(this, arguments);\n\n while (++i < n) {\n name[i](this, x);\n }\n }\n\n return typeof value === \"function\" ? classedFunction : classedConstant;\n }\n\n function d3_selection_classedName(name) {\n var re = d3_selection_classedRe(name);\n return function (node, value) {\n if (c = node.classList) return value ? c.add(name) : c.remove(name);\n var c = node.getAttribute(\"class\") || \"\";\n\n if (value) {\n re.lastIndex = 0;\n if (!re.test(c)) node.setAttribute(\"class\", d3_collapse(c + \" \" + name));\n } else {\n node.setAttribute(\"class\", d3_collapse(c.replace(re, \" \")));\n }\n };\n }\n\n d3_selectionPrototype.style = function (name, value, priority) {\n var n = arguments.length;\n\n if (n < 3) {\n if (typeof name !== \"string\") {\n if (n < 2) value = \"\";\n\n for (priority in name) {\n this.each(d3_selection_style(priority, name[priority], value));\n }\n\n return this;\n }\n\n if (n < 2) {\n var node = this.node();\n return d3_window(node).getComputedStyle(node, null).getPropertyValue(name);\n }\n\n priority = \"\";\n }\n\n return this.each(d3_selection_style(name, value, priority));\n };\n\n function d3_selection_style(name, value, priority) {\n function styleNull() {\n this.style.removeProperty(name);\n }\n\n function styleConstant() {\n this.style.setProperty(name, value, priority);\n }\n\n function styleFunction() {\n var x = value.apply(this, arguments);\n if (x == null) this.style.removeProperty(name);else this.style.setProperty(name, x, priority);\n }\n\n return value == null ? styleNull : typeof value === \"function\" ? styleFunction : styleConstant;\n }\n\n d3_selectionPrototype.property = function (name, value) {\n if (arguments.length < 2) {\n if (typeof name === \"string\") return this.node()[name];\n\n for (value in name) {\n this.each(d3_selection_property(value, name[value]));\n }\n\n return this;\n }\n\n return this.each(d3_selection_property(name, value));\n };\n\n function d3_selection_property(name, value) {\n function propertyNull() {\n delete this[name];\n }\n\n function propertyConstant() {\n this[name] = value;\n }\n\n function propertyFunction() {\n var x = value.apply(this, arguments);\n if (x == null) delete this[name];else this[name] = x;\n }\n\n return value == null ? propertyNull : typeof value === \"function\" ? propertyFunction : propertyConstant;\n }\n\n d3_selectionPrototype.text = function (value) {\n return arguments.length ? this.each(typeof value === \"function\" ? function () {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n } : value == null ? function () {\n this.textContent = \"\";\n } : function () {\n this.textContent = value;\n }) : this.node().textContent;\n };\n\n d3_selectionPrototype.html = function (value) {\n return arguments.length ? this.each(typeof value === \"function\" ? function () {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n } : value == null ? function () {\n this.innerHTML = \"\";\n } : function () {\n this.innerHTML = value;\n }) : this.node().innerHTML;\n };\n\n d3_selectionPrototype.append = function (name) {\n name = d3_selection_creator(name);\n return this.select(function () {\n return this.appendChild(name.apply(this, arguments));\n });\n };\n\n function d3_selection_creator(name) {\n function create() {\n var document = this.ownerDocument,\n namespace = this.namespaceURI;\n return namespace && namespace !== document.documentElement.namespaceURI ? document.createElementNS(namespace, name) : document.createElement(name);\n }\n\n function createNS() {\n return this.ownerDocument.createElementNS(name.space, name.local);\n }\n\n return typeof name === \"function\" ? name : (name = d3.ns.qualify(name)).local ? createNS : create;\n }\n\n d3_selectionPrototype.insert = function (name, before) {\n name = d3_selection_creator(name);\n before = d3_selection_selector(before);\n return this.select(function () {\n return this.insertBefore(name.apply(this, arguments), before.apply(this, arguments) || null);\n });\n };\n\n d3_selectionPrototype.remove = function () {\n return this.each(d3_selectionRemove);\n };\n\n function d3_selectionRemove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n }\n\n d3_selectionPrototype.data = function (value, key) {\n var i = -1,\n n = this.length,\n group,\n node;\n\n if (!arguments.length) {\n value = new Array(n = (group = this[0]).length);\n\n while (++i < n) {\n if (node = group[i]) {\n value[i] = node.__data__;\n }\n }\n\n return value;\n }\n\n function bind(group, groupData) {\n var i,\n n = group.length,\n m = groupData.length,\n n0 = Math.min(n, m),\n updateNodes = new Array(m),\n enterNodes = new Array(m),\n exitNodes = new Array(n),\n node,\n nodeData;\n\n if (key) {\n var nodeByKeyValue = new d3_Map(),\n keyValues = new Array(n),\n keyValue;\n\n for (i = -1; ++i < n;) {\n if (node = group[i]) {\n if (nodeByKeyValue.has(keyValue = key.call(node, node.__data__, i))) {\n exitNodes[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n\n keyValues[i] = keyValue;\n }\n }\n\n for (i = -1; ++i < m;) {\n if (!(node = nodeByKeyValue.get(keyValue = key.call(groupData, nodeData = groupData[i], i)))) {\n enterNodes[i] = d3_selection_dataNode(nodeData);\n } else if (node !== true) {\n updateNodes[i] = node;\n node.__data__ = nodeData;\n }\n\n nodeByKeyValue.set(keyValue, true);\n }\n\n for (i = -1; ++i < n;) {\n if (i in keyValues && nodeByKeyValue.get(keyValues[i]) !== true) {\n exitNodes[i] = group[i];\n }\n }\n } else {\n for (i = -1; ++i < n0;) {\n node = group[i];\n nodeData = groupData[i];\n\n if (node) {\n node.__data__ = nodeData;\n updateNodes[i] = node;\n } else {\n enterNodes[i] = d3_selection_dataNode(nodeData);\n }\n }\n\n for (; i < m; ++i) {\n enterNodes[i] = d3_selection_dataNode(groupData[i]);\n }\n\n for (; i < n; ++i) {\n exitNodes[i] = group[i];\n }\n }\n\n enterNodes.update = updateNodes;\n enterNodes.parentNode = updateNodes.parentNode = exitNodes.parentNode = group.parentNode;\n enter.push(enterNodes);\n update.push(updateNodes);\n exit.push(exitNodes);\n }\n\n var enter = d3_selection_enter([]),\n update = d3_selection([]),\n exit = d3_selection([]);\n\n if (typeof value === \"function\") {\n while (++i < n) {\n bind(group = this[i], value.call(group, group.parentNode.__data__, i));\n }\n } else {\n while (++i < n) {\n bind(group = this[i], value);\n }\n }\n\n update.enter = function () {\n return enter;\n };\n\n update.exit = function () {\n return exit;\n };\n\n return update;\n };\n\n function d3_selection_dataNode(data) {\n return {\n __data__: data\n };\n }\n\n d3_selectionPrototype.datum = function (value) {\n return arguments.length ? this.property(\"__data__\", value) : this.property(\"__data__\");\n };\n\n d3_selectionPrototype.filter = function (filter) {\n var subgroups = [],\n subgroup,\n group,\n node;\n if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n\n for (var j = 0, m = this.length; j < m; j++) {\n subgroups.push(subgroup = []);\n subgroup.parentNode = (group = this[j]).parentNode;\n\n for (var i = 0, n = group.length; i < n; i++) {\n if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n subgroup.push(node);\n }\n }\n }\n\n return d3_selection(subgroups);\n };\n\n function d3_selection_filter(selector) {\n return function () {\n return _d3_selectMatches(this, selector);\n };\n }\n\n d3_selectionPrototype.order = function () {\n for (var j = -1, m = this.length; ++j < m;) {\n for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n };\n\n d3_selectionPrototype.sort = function (comparator) {\n comparator = d3_selection_sortComparator.apply(this, arguments);\n\n for (var j = -1, m = this.length; ++j < m;) {\n this[j].sort(comparator);\n }\n\n return this.order();\n };\n\n function d3_selection_sortComparator(comparator) {\n if (!arguments.length) comparator = d3_ascending;\n return function (a, b) {\n return a && b ? comparator(a.__data__, b.__data__) : !a - !b;\n };\n }\n\n d3_selectionPrototype.each = function (callback) {\n return d3_selection_each(this, function (node, i, j) {\n callback.call(node, node.__data__, i, j);\n });\n };\n\n function d3_selection_each(groups, callback) {\n for (var j = 0, m = groups.length; j < m; j++) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; i++) {\n if (node = group[i]) callback(node, i, j);\n }\n }\n\n return groups;\n }\n\n d3_selectionPrototype.call = function (callback) {\n var args = d3_array(arguments);\n callback.apply(args[0] = this, args);\n return this;\n };\n\n d3_selectionPrototype.empty = function () {\n return !this.node();\n };\n\n d3_selectionPrototype.node = function () {\n for (var j = 0, m = this.length; j < m; j++) {\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n };\n\n d3_selectionPrototype.size = function () {\n var n = 0;\n d3_selection_each(this, function () {\n ++n;\n });\n return n;\n };\n\n function d3_selection_enter(selection) {\n d3_subclass(selection, d3_selection_enterPrototype);\n return selection;\n }\n\n var d3_selection_enterPrototype = [];\n d3.selection.enter = d3_selection_enter;\n d3.selection.enter.prototype = d3_selection_enterPrototype;\n d3_selection_enterPrototype.append = d3_selectionPrototype.append;\n d3_selection_enterPrototype.empty = d3_selectionPrototype.empty;\n d3_selection_enterPrototype.node = d3_selectionPrototype.node;\n d3_selection_enterPrototype.call = d3_selectionPrototype.call;\n d3_selection_enterPrototype.size = d3_selectionPrototype.size;\n\n d3_selection_enterPrototype.select = function (selector) {\n var subgroups = [],\n subgroup,\n subnode,\n upgroup,\n group,\n node;\n\n for (var j = -1, m = this.length; ++j < m;) {\n upgroup = (group = this[j]).update;\n subgroups.push(subgroup = []);\n subgroup.parentNode = group.parentNode;\n\n for (var i = -1, n = group.length; ++i < n;) {\n if (node = group[i]) {\n subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i, j));\n subnode.__data__ = node.__data__;\n } else {\n subgroup.push(null);\n }\n }\n }\n\n return d3_selection(subgroups);\n };\n\n d3_selection_enterPrototype.insert = function (name, before) {\n if (arguments.length < 2) before = d3_selection_enterInsertBefore(this);\n return d3_selectionPrototype.insert.call(this, name, before);\n };\n\n function d3_selection_enterInsertBefore(enter) {\n var i0, j0;\n return function (d, i, j) {\n var group = enter[j].update,\n n = group.length,\n node;\n if (j != j0) j0 = j, i0 = 0;\n if (i >= i0) i0 = i + 1;\n\n while (!(node = group[i0]) && ++i0 < n) {\n ;\n }\n\n return node;\n };\n }\n\n d3.select = function (node) {\n var group;\n\n if (typeof node === \"string\") {\n group = [d3_select(node, d3_document)];\n group.parentNode = d3_document.documentElement;\n } else {\n group = [node];\n group.parentNode = d3_documentElement(node);\n }\n\n return d3_selection([group]);\n };\n\n d3.selectAll = function (nodes) {\n var group;\n\n if (typeof nodes === \"string\") {\n group = d3_array(d3_selectAll(nodes, d3_document));\n group.parentNode = d3_document.documentElement;\n } else {\n group = d3_array(nodes);\n group.parentNode = null;\n }\n\n return d3_selection([group]);\n };\n\n d3_selectionPrototype.on = function (type, listener, capture) {\n var n = arguments.length;\n\n if (n < 3) {\n if (typeof type !== \"string\") {\n if (n < 2) listener = false;\n\n for (capture in type) {\n this.each(d3_selection_on(capture, type[capture], listener));\n }\n\n return this;\n }\n\n if (n < 2) return (n = this.node()[\"__on\" + type]) && n._;\n capture = false;\n }\n\n return this.each(d3_selection_on(type, listener, capture));\n };\n\n function d3_selection_on(type, listener, capture) {\n var name = \"__on\" + type,\n i = type.indexOf(\".\"),\n wrap = d3_selection_onListener;\n if (i > 0) type = type.slice(0, i);\n var filter = d3_selection_onFilters.get(type);\n if (filter) type = filter, wrap = d3_selection_onFilter;\n\n function onRemove() {\n var l = this[name];\n\n if (l) {\n this.removeEventListener(type, l, l.$);\n delete this[name];\n }\n }\n\n function onAdd() {\n var l = wrap(listener, d3_array(arguments));\n onRemove.call(this);\n this.addEventListener(type, this[name] = l, l.$ = capture);\n l._ = listener;\n }\n\n function removeAll() {\n var re = new RegExp(\"^__on([^.]+)\" + d3.requote(type) + \"$\"),\n match;\n\n for (var name in this) {\n if (match = name.match(re)) {\n var l = this[name];\n this.removeEventListener(match[1], l, l.$);\n delete this[name];\n }\n }\n }\n\n return i ? listener ? onAdd : onRemove : listener ? d3_noop : removeAll;\n }\n\n var d3_selection_onFilters = d3.map({\n mouseenter: \"mouseover\",\n mouseleave: \"mouseout\"\n });\n\n if (d3_document) {\n d3_selection_onFilters.forEach(function (k) {\n if (\"on\" + k in d3_document) d3_selection_onFilters.remove(k);\n });\n }\n\n function d3_selection_onListener(listener, argumentz) {\n return function (e) {\n var o = d3.event;\n d3.event = e;\n argumentz[0] = this.__data__;\n\n try {\n listener.apply(this, argumentz);\n } finally {\n d3.event = o;\n }\n };\n }\n\n function d3_selection_onFilter(listener, argumentz) {\n var l = d3_selection_onListener(listener, argumentz);\n return function (e) {\n var target = this,\n related = e.relatedTarget;\n\n if (!related || related !== target && !(related.compareDocumentPosition(target) & 8)) {\n l.call(target, e);\n }\n };\n }\n\n var d3_event_dragSelect,\n d3_event_dragId = 0;\n\n function d3_event_dragSuppress(node) {\n var name = \".dragsuppress-\" + ++d3_event_dragId,\n click = \"click\" + name,\n w = d3.select(d3_window(node)).on(\"touchmove\" + name, d3_eventPreventDefault).on(\"dragstart\" + name, d3_eventPreventDefault).on(\"selectstart\" + name, d3_eventPreventDefault);\n\n if (d3_event_dragSelect == null) {\n d3_event_dragSelect = \"onselectstart\" in node ? false : d3_vendorSymbol(node.style, \"userSelect\");\n }\n\n if (d3_event_dragSelect) {\n var style = d3_documentElement(node).style,\n select = style[d3_event_dragSelect];\n style[d3_event_dragSelect] = \"none\";\n }\n\n return function (suppressClick) {\n w.on(name, null);\n if (d3_event_dragSelect) style[d3_event_dragSelect] = select;\n\n if (suppressClick) {\n var off = function off() {\n w.on(click, null);\n };\n\n w.on(click, function () {\n d3_eventPreventDefault();\n off();\n }, true);\n setTimeout(off, 0);\n }\n };\n }\n\n d3.mouse = function (container) {\n return d3_mousePoint(container, d3_eventSource());\n };\n\n var d3_mouse_bug44083 = this.navigator && /WebKit/.test(this.navigator.userAgent) ? -1 : 0;\n\n function d3_mousePoint(container, e) {\n if (e.changedTouches) e = e.changedTouches[0];\n var svg = container.ownerSVGElement || container;\n\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n\n if (d3_mouse_bug44083 < 0) {\n var window = d3_window(container);\n\n if (window.scrollX || window.scrollY) {\n svg = d3.select(\"body\").append(\"svg\").style({\n position: \"absolute\",\n top: 0,\n left: 0,\n margin: 0,\n padding: 0,\n border: \"none\"\n }, \"important\");\n var ctm = svg[0][0].getScreenCTM();\n d3_mouse_bug44083 = !(ctm.f || ctm.e);\n svg.remove();\n }\n }\n\n if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY;else point.x = e.clientX, point.y = e.clientY;\n point = point.matrixTransform(container.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n\n var rect = container.getBoundingClientRect();\n return [e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop];\n }\n\n d3.touch = function (container, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = d3_eventSource().changedTouches;\n if (touches) for (var i = 0, n = touches.length, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return d3_mousePoint(container, touch);\n }\n }\n };\n\n d3.behavior.drag = function () {\n var event = d3_eventDispatch(drag, \"drag\", \"dragstart\", \"dragend\"),\n origin = null,\n mousedown = dragstart(d3_noop, d3.mouse, d3_window, \"mousemove\", \"mouseup\"),\n touchstart = dragstart(d3_behavior_dragTouchId, d3.touch, d3_identity, \"touchmove\", \"touchend\");\n\n function drag() {\n this.on(\"mousedown.drag\", mousedown).on(\"touchstart.drag\", touchstart);\n }\n\n function dragstart(id, position, subject, move, end) {\n return function () {\n var that = this,\n target = d3.event.target.correspondingElement || d3.event.target,\n parent = that.parentNode,\n dispatch = event.of(that, arguments),\n dragged = 0,\n dragId = id(),\n dragName = \".drag\" + (dragId == null ? \"\" : \"-\" + dragId),\n dragOffset,\n dragSubject = d3.select(subject(target)).on(move + dragName, moved).on(end + dragName, ended),\n dragRestore = d3_event_dragSuppress(target),\n position0 = position(parent, dragId);\n\n if (origin) {\n dragOffset = origin.apply(that, arguments);\n dragOffset = [dragOffset.x - position0[0], dragOffset.y - position0[1]];\n } else {\n dragOffset = [0, 0];\n }\n\n dispatch({\n type: \"dragstart\"\n });\n\n function moved() {\n var position1 = position(parent, dragId),\n dx,\n dy;\n if (!position1) return;\n dx = position1[0] - position0[0];\n dy = position1[1] - position0[1];\n dragged |= dx | dy;\n position0 = position1;\n dispatch({\n type: \"drag\",\n x: position1[0] + dragOffset[0],\n y: position1[1] + dragOffset[1],\n dx: dx,\n dy: dy\n });\n }\n\n function ended() {\n if (!position(parent, dragId)) return;\n dragSubject.on(move + dragName, null).on(end + dragName, null);\n dragRestore(dragged);\n dispatch({\n type: \"dragend\"\n });\n }\n };\n }\n\n drag.origin = function (x) {\n if (!arguments.length) return origin;\n origin = x;\n return drag;\n };\n\n return d3.rebind(drag, event, \"on\");\n };\n\n function d3_behavior_dragTouchId() {\n return d3.event.changedTouches[0].identifier;\n }\n\n d3.touches = function (container, touches) {\n if (arguments.length < 2) touches = d3_eventSource().touches;\n return touches ? d3_array(touches).map(function (touch) {\n var point = d3_mousePoint(container, touch);\n point.identifier = touch.identifier;\n return point;\n }) : [];\n };\n\n var ε = 1e-6,\n ε2 = ε * ε,\n π = Math.PI,\n τ = 2 * π,\n τε = τ - ε,\n halfπ = π / 2,\n d3_radians = π / 180,\n d3_degrees = 180 / π;\n\n function d3_sgn(x) {\n return x > 0 ? 1 : x < 0 ? -1 : 0;\n }\n\n function d3_cross2d(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n }\n\n function d3_acos(x) {\n return x > 1 ? 0 : x < -1 ? π : Math.acos(x);\n }\n\n function d3_asin(x) {\n return x > 1 ? halfπ : x < -1 ? -halfπ : Math.asin(x);\n }\n\n function d3_sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n }\n\n function d3_cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n }\n\n function d3_tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n }\n\n function d3_haversin(x) {\n return (x = Math.sin(x / 2)) * x;\n }\n\n var ρ = Math.SQRT2,\n ρ2 = 2,\n ρ4 = 4;\n\n d3.interpolateZoom = function (p0, p1) {\n var ux0 = p0[0],\n uy0 = p0[1],\n w0 = p0[2],\n ux1 = p1[0],\n uy1 = p1[1],\n w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n if (d2 < ε2) {\n S = Math.log(w1 / w0) / ρ;\n\n i = function i(t) {\n return [ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(ρ * t * S)];\n };\n } else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + ρ4 * d2) / (2 * w0 * ρ2 * d1),\n b1 = (w1 * w1 - w0 * w0 - ρ4 * d2) / (2 * w1 * ρ2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / ρ;\n\n i = function i(t) {\n var s = t * S,\n coshr0 = d3_cosh(r0),\n u = w0 / (ρ2 * d1) * (coshr0 * d3_tanh(ρ * s + r0) - d3_sinh(r0));\n return [ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / d3_cosh(ρ * s + r0)];\n };\n }\n\n i.duration = S * 1e3;\n return i;\n };\n\n d3.behavior.zoom = function () {\n var view = {\n x: 0,\n y: 0,\n k: 1\n },\n translate0,\n center0,\n center,\n size = [960, 500],\n scaleExtent = d3_behavior_zoomInfinity,\n duration = 250,\n zooming = 0,\n mousedown = \"mousedown.zoom\",\n mousemove = \"mousemove.zoom\",\n mouseup = \"mouseup.zoom\",\n mousewheelTimer,\n touchstart = \"touchstart.zoom\",\n touchtime,\n event = d3_eventDispatch(zoom, \"zoomstart\", \"zoom\", \"zoomend\"),\n x0,\n x1,\n y0,\n y1;\n\n if (!d3_behavior_zoomWheel) {\n d3_behavior_zoomWheel = \"onwheel\" in d3_document ? (d3_behavior_zoomDelta = function d3_behavior_zoomDelta() {\n return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1);\n }, \"wheel\") : \"onmousewheel\" in d3_document ? (d3_behavior_zoomDelta = function d3_behavior_zoomDelta() {\n return d3.event.wheelDelta;\n }, \"mousewheel\") : (d3_behavior_zoomDelta = function d3_behavior_zoomDelta() {\n return -d3.event.detail;\n }, \"MozMousePixelScroll\");\n }\n\n function zoom(g) {\n g.on(mousedown, mousedowned).on(d3_behavior_zoomWheel + \".zoom\", mousewheeled).on(\"dblclick.zoom\", dblclicked).on(touchstart, touchstarted);\n }\n\n zoom.event = function (g) {\n g.each(function () {\n var dispatch = event.of(this, arguments),\n view1 = view;\n\n if (d3_transitionInheritId) {\n d3.select(this).transition().each(\"start.zoom\", function () {\n view = this.__chart__ || {\n x: 0,\n y: 0,\n k: 1\n };\n zoomstarted(dispatch);\n }).tween(\"zoom:zoom\", function () {\n var dx = size[0],\n dy = size[1],\n cx = center0 ? center0[0] : dx / 2,\n cy = center0 ? center0[1] : dy / 2,\n i = d3.interpolateZoom([(cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k], [(cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k]);\n return function (t) {\n var l = i(t),\n k = dx / l[2];\n this.__chart__ = view = {\n x: cx - l[0] * k,\n y: cy - l[1] * k,\n k: k\n };\n zoomed(dispatch);\n };\n }).each(\"interrupt.zoom\", function () {\n zoomended(dispatch);\n }).each(\"end.zoom\", function () {\n zoomended(dispatch);\n });\n } else {\n this.__chart__ = view;\n zoomstarted(dispatch);\n zoomed(dispatch);\n zoomended(dispatch);\n }\n });\n };\n\n zoom.translate = function (_) {\n if (!arguments.length) return [view.x, view.y];\n view = {\n x: +_[0],\n y: +_[1],\n k: view.k\n };\n rescale();\n return zoom;\n };\n\n zoom.scale = function (_) {\n if (!arguments.length) return view.k;\n view = {\n x: view.x,\n y: view.y,\n k: null\n };\n scaleTo(+_);\n rescale();\n return zoom;\n };\n\n zoom.scaleExtent = function (_) {\n if (!arguments.length) return scaleExtent;\n scaleExtent = _ == null ? d3_behavior_zoomInfinity : [+_[0], +_[1]];\n return zoom;\n };\n\n zoom.center = function (_) {\n if (!arguments.length) return center;\n center = _ && [+_[0], +_[1]];\n return zoom;\n };\n\n zoom.size = function (_) {\n if (!arguments.length) return size;\n size = _ && [+_[0], +_[1]];\n return zoom;\n };\n\n zoom.duration = function (_) {\n if (!arguments.length) return duration;\n duration = +_;\n return zoom;\n };\n\n zoom.x = function (z) {\n if (!arguments.length) return x1;\n x1 = z;\n x0 = z.copy();\n view = {\n x: 0,\n y: 0,\n k: 1\n };\n return zoom;\n };\n\n zoom.y = function (z) {\n if (!arguments.length) return y1;\n y1 = z;\n y0 = z.copy();\n view = {\n x: 0,\n y: 0,\n k: 1\n };\n return zoom;\n };\n\n function location(p) {\n return [(p[0] - view.x) / view.k, (p[1] - view.y) / view.k];\n }\n\n function point(l) {\n return [l[0] * view.k + view.x, l[1] * view.k + view.y];\n }\n\n function scaleTo(s) {\n view.k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s));\n }\n\n function translateTo(p, l) {\n l = point(l);\n view.x += p[0] - l[0];\n view.y += p[1] - l[1];\n }\n\n function zoomTo(that, p, l, k) {\n that.__chart__ = {\n x: view.x,\n y: view.y,\n k: view.k\n };\n scaleTo(Math.pow(2, k));\n translateTo(center0 = p, l);\n that = d3.select(that);\n if (duration > 0) that = that.transition().duration(duration);\n that.call(zoom.event);\n }\n\n function rescale() {\n if (x1) x1.domain(x0.range().map(function (x) {\n return (x - view.x) / view.k;\n }).map(x0.invert));\n if (y1) y1.domain(y0.range().map(function (y) {\n return (y - view.y) / view.k;\n }).map(y0.invert));\n }\n\n function zoomstarted(dispatch) {\n if (!zooming++) dispatch({\n type: \"zoomstart\"\n });\n }\n\n function zoomed(dispatch) {\n rescale();\n dispatch({\n type: \"zoom\",\n scale: view.k,\n translate: [view.x, view.y]\n });\n }\n\n function zoomended(dispatch) {\n if (! --zooming) dispatch({\n type: \"zoomend\"\n }), center0 = null;\n }\n\n function mousedowned() {\n var that = this,\n dispatch = event.of(that, arguments),\n dragged = 0,\n subject = d3.select(d3_window(that)).on(mousemove, moved).on(mouseup, ended),\n location0 = location(d3.mouse(that)),\n dragRestore = d3_event_dragSuppress(that);\n d3_selection_interrupt.call(that);\n zoomstarted(dispatch);\n\n function moved() {\n dragged = 1;\n translateTo(d3.mouse(that), location0);\n zoomed(dispatch);\n }\n\n function ended() {\n subject.on(mousemove, null).on(mouseup, null);\n dragRestore(dragged);\n zoomended(dispatch);\n }\n }\n\n function touchstarted() {\n var that = this,\n dispatch = event.of(that, arguments),\n locations0 = {},\n distance0 = 0,\n scale0,\n zoomName = \".zoom-\" + d3.event.changedTouches[0].identifier,\n touchmove = \"touchmove\" + zoomName,\n touchend = \"touchend\" + zoomName,\n targets = [],\n subject = d3.select(that),\n dragRestore = d3_event_dragSuppress(that);\n started();\n zoomstarted(dispatch);\n subject.on(mousedown, null).on(touchstart, started);\n\n function relocate() {\n var touches = d3.touches(that);\n scale0 = view.k;\n touches.forEach(function (t) {\n if (t.identifier in locations0) locations0[t.identifier] = location(t);\n });\n return touches;\n }\n\n function started() {\n var target = d3.event.target;\n d3.select(target).on(touchmove, moved).on(touchend, ended);\n targets.push(target);\n var changed = d3.event.changedTouches;\n\n for (var i = 0, n = changed.length; i < n; ++i) {\n locations0[changed[i].identifier] = null;\n }\n\n var touches = relocate(),\n now = Date.now();\n\n if (touches.length === 1) {\n if (now - touchtime < 500) {\n var p = touches[0];\n zoomTo(that, p, locations0[p.identifier], Math.floor(Math.log(view.k) / Math.LN2) + 1);\n d3_eventPreventDefault();\n }\n\n touchtime = now;\n } else if (touches.length > 1) {\n var p = touches[0],\n q = touches[1],\n dx = p[0] - q[0],\n dy = p[1] - q[1];\n distance0 = dx * dx + dy * dy;\n }\n }\n\n function moved() {\n var touches = d3.touches(that),\n p0,\n l0,\n p1,\n l1;\n d3_selection_interrupt.call(that);\n\n for (var i = 0, n = touches.length; i < n; ++i, l1 = null) {\n p1 = touches[i];\n\n if (l1 = locations0[p1.identifier]) {\n if (l0) break;\n p0 = p1, l0 = l1;\n }\n }\n\n if (l1) {\n var distance1 = (distance1 = p1[0] - p0[0]) * distance1 + (distance1 = p1[1] - p0[1]) * distance1,\n scale1 = distance0 && Math.sqrt(distance1 / distance0);\n p0 = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l0 = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n scaleTo(scale1 * scale0);\n }\n\n touchtime = null;\n translateTo(p0, l0);\n zoomed(dispatch);\n }\n\n function ended() {\n if (d3.event.touches.length) {\n var changed = d3.event.changedTouches;\n\n for (var i = 0, n = changed.length; i < n; ++i) {\n delete locations0[changed[i].identifier];\n }\n\n for (var identifier in locations0) {\n return void relocate();\n }\n }\n\n d3.selectAll(targets).on(zoomName, null);\n subject.on(mousedown, mousedowned).on(touchstart, touchstarted);\n dragRestore();\n zoomended(dispatch);\n }\n }\n\n function mousewheeled() {\n var dispatch = event.of(this, arguments);\n if (mousewheelTimer) clearTimeout(mousewheelTimer);else d3_selection_interrupt.call(this), translate0 = location(center0 = center || d3.mouse(this)), zoomstarted(dispatch);\n mousewheelTimer = setTimeout(function () {\n mousewheelTimer = null;\n zoomended(dispatch);\n }, 50);\n d3_eventPreventDefault();\n scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * view.k);\n translateTo(center0, translate0);\n zoomed(dispatch);\n }\n\n function dblclicked() {\n var p = d3.mouse(this),\n k = Math.log(view.k) / Math.LN2;\n zoomTo(this, p, location(p), d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1);\n }\n\n return d3.rebind(zoom, event, \"on\");\n };\n\n var d3_behavior_zoomInfinity = [0, Infinity],\n d3_behavior_zoomDelta,\n d3_behavior_zoomWheel;\n d3.color = d3_color;\n\n function d3_color() {}\n\n d3_color.prototype.toString = function () {\n return this.rgb() + \"\";\n };\n\n d3.hsl = d3_hsl;\n\n function d3_hsl(h, s, l) {\n return this instanceof d3_hsl ? void (this.h = +h, this.s = +s, this.l = +l) : arguments.length < 2 ? h instanceof d3_hsl ? new d3_hsl(h.h, h.s, h.l) : d3_rgb_parse(\"\" + h, d3_rgb_hsl, d3_hsl) : new d3_hsl(h, s, l);\n }\n\n var d3_hslPrototype = d3_hsl.prototype = new d3_color();\n\n d3_hslPrototype.brighter = function (k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n return new d3_hsl(this.h, this.s, this.l / k);\n };\n\n d3_hslPrototype.darker = function (k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n return new d3_hsl(this.h, this.s, k * this.l);\n };\n\n d3_hslPrototype.rgb = function () {\n return d3_hsl_rgb(this.h, this.s, this.l);\n };\n\n function d3_hsl_rgb(h, s, l) {\n var m1, m2;\n h = isNaN(h) ? 0 : (h %= 360) < 0 ? h + 360 : h;\n s = isNaN(s) ? 0 : s < 0 ? 0 : s > 1 ? 1 : s;\n l = l < 0 ? 0 : l > 1 ? 1 : l;\n m2 = l <= .5 ? l * (1 + s) : l + s - l * s;\n m1 = 2 * l - m2;\n\n function v(h) {\n if (h > 360) h -= 360;else if (h < 0) h += 360;\n if (h < 60) return m1 + (m2 - m1) * h / 60;\n if (h < 180) return m2;\n if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60;\n return m1;\n }\n\n function vv(h) {\n return Math.round(v(h) * 255);\n }\n\n return new d3_rgb(vv(h + 120), vv(h), vv(h - 120));\n }\n\n d3.hcl = d3_hcl;\n\n function d3_hcl(h, c, l) {\n return this instanceof d3_hcl ? void (this.h = +h, this.c = +c, this.l = +l) : arguments.length < 2 ? h instanceof d3_hcl ? new d3_hcl(h.h, h.c, h.l) : h instanceof d3_lab ? d3_lab_hcl(h.l, h.a, h.b) : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b) : new d3_hcl(h, c, l);\n }\n\n var d3_hclPrototype = d3_hcl.prototype = new d3_color();\n\n d3_hclPrototype.brighter = function (k) {\n return new d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));\n };\n\n d3_hclPrototype.darker = function (k) {\n return new d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));\n };\n\n d3_hclPrototype.rgb = function () {\n return d3_hcl_lab(this.h, this.c, this.l).rgb();\n };\n\n function d3_hcl_lab(h, c, l) {\n if (isNaN(h)) h = 0;\n if (isNaN(c)) c = 0;\n return new d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);\n }\n\n d3.lab = d3_lab;\n\n function d3_lab(l, a, b) {\n return this instanceof d3_lab ? void (this.l = +l, this.a = +a, this.b = +b) : arguments.length < 2 ? l instanceof d3_lab ? new d3_lab(l.l, l.a, l.b) : l instanceof d3_hcl ? d3_hcl_lab(l.h, l.c, l.l) : d3_rgb_lab((l = d3_rgb(l)).r, l.g, l.b) : new d3_lab(l, a, b);\n }\n\n var d3_lab_K = 18;\n var d3_lab_X = .95047,\n d3_lab_Y = 1,\n d3_lab_Z = 1.08883;\n var d3_labPrototype = d3_lab.prototype = new d3_color();\n\n d3_labPrototype.brighter = function (k) {\n return new d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n };\n\n d3_labPrototype.darker = function (k) {\n return new d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n };\n\n d3_labPrototype.rgb = function () {\n return d3_lab_rgb(this.l, this.a, this.b);\n };\n\n function d3_lab_rgb(l, a, b) {\n var y = (l + 16) / 116,\n x = y + a / 500,\n z = y - b / 200;\n x = d3_lab_xyz(x) * d3_lab_X;\n y = d3_lab_xyz(y) * d3_lab_Y;\n z = d3_lab_xyz(z) * d3_lab_Z;\n return new d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - .4985314 * z), d3_xyz_rgb(-.969266 * x + 1.8760108 * y + .041556 * z), d3_xyz_rgb(.0556434 * x - .2040259 * y + 1.0572252 * z));\n }\n\n function d3_lab_hcl(l, a, b) {\n return l > 0 ? new d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l) : new d3_hcl(NaN, NaN, l);\n }\n\n function d3_lab_xyz(x) {\n return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037;\n }\n\n function d3_xyz_lab(x) {\n return x > .008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29;\n }\n\n function d3_xyz_rgb(r) {\n return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055));\n }\n\n d3.rgb = d3_rgb;\n\n function d3_rgb(r, g, b) {\n return this instanceof d3_rgb ? void (this.r = ~~r, this.g = ~~g, this.b = ~~b) : arguments.length < 2 ? r instanceof d3_rgb ? new d3_rgb(r.r, r.g, r.b) : d3_rgb_parse(\"\" + r, d3_rgb, d3_hsl_rgb) : new d3_rgb(r, g, b);\n }\n\n function d3_rgbNumber(value) {\n return new d3_rgb(value >> 16, value >> 8 & 255, value & 255);\n }\n\n function d3_rgbString(value) {\n return d3_rgbNumber(value) + \"\";\n }\n\n var d3_rgbPrototype = d3_rgb.prototype = new d3_color();\n\n d3_rgbPrototype.brighter = function (k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n var r = this.r,\n g = this.g,\n b = this.b,\n i = 30;\n if (!r && !g && !b) return new d3_rgb(i, i, i);\n if (r && r < i) r = i;\n if (g && g < i) g = i;\n if (b && b < i) b = i;\n return new d3_rgb(Math.min(255, r / k), Math.min(255, g / k), Math.min(255, b / k));\n };\n\n d3_rgbPrototype.darker = function (k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n return new d3_rgb(k * this.r, k * this.g, k * this.b);\n };\n\n d3_rgbPrototype.hsl = function () {\n return d3_rgb_hsl(this.r, this.g, this.b);\n };\n\n d3_rgbPrototype.toString = function () {\n return \"#\" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b);\n };\n\n function d3_rgb_hex(v) {\n return v < 16 ? \"0\" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16);\n }\n\n function d3_rgb_parse(format, rgb, hsl) {\n var r = 0,\n g = 0,\n b = 0,\n m1,\n m2,\n color;\n m1 = /([a-z]+)\\((.*)\\)/.exec(format = format.toLowerCase());\n\n if (m1) {\n m2 = m1[2].split(\",\");\n\n switch (m1[1]) {\n case \"hsl\":\n {\n return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100);\n }\n\n case \"rgb\":\n {\n return rgb(d3_rgb_parseNumber(m2[0]), d3_rgb_parseNumber(m2[1]), d3_rgb_parseNumber(m2[2]));\n }\n }\n }\n\n if (color = d3_rgb_names.get(format)) {\n return rgb(color.r, color.g, color.b);\n }\n\n if (format != null && format.charAt(0) === \"#\" && !isNaN(color = parseInt(format.slice(1), 16))) {\n if (format.length === 4) {\n r = (color & 3840) >> 4;\n r = r >> 4 | r;\n g = color & 240;\n g = g >> 4 | g;\n b = color & 15;\n b = b << 4 | b;\n } else if (format.length === 7) {\n r = (color & 16711680) >> 16;\n g = (color & 65280) >> 8;\n b = color & 255;\n }\n }\n\n return rgb(r, g, b);\n }\n\n function d3_rgb_hsl(r, g, b) {\n var min = Math.min(r /= 255, g /= 255, b /= 255),\n max = Math.max(r, g, b),\n d = max - min,\n h,\n s,\n l = (max + min) / 2;\n\n if (d) {\n s = l < .5 ? d / (max + min) : d / (2 - max - min);\n if (r == max) h = (g - b) / d + (g < b ? 6 : 0);else if (g == max) h = (b - r) / d + 2;else h = (r - g) / d + 4;\n h *= 60;\n } else {\n h = NaN;\n s = l > 0 && l < 1 ? 0 : h;\n }\n\n return new d3_hsl(h, s, l);\n }\n\n function d3_rgb_lab(r, g, b) {\n r = d3_rgb_xyz(r);\n g = d3_rgb_xyz(g);\n b = d3_rgb_xyz(b);\n var x = d3_xyz_lab((.4124564 * r + .3575761 * g + .1804375 * b) / d3_lab_X),\n y = d3_xyz_lab((.2126729 * r + .7151522 * g + .072175 * b) / d3_lab_Y),\n z = d3_xyz_lab((.0193339 * r + .119192 * g + .9503041 * b) / d3_lab_Z);\n return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z));\n }\n\n function d3_rgb_xyz(r) {\n return (r /= 255) <= .04045 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4);\n }\n\n function d3_rgb_parseNumber(c) {\n var f = parseFloat(c);\n return c.charAt(c.length - 1) === \"%\" ? Math.round(f * 2.55) : f;\n }\n\n var d3_rgb_names = d3.map({\n aliceblue: 15792383,\n antiquewhite: 16444375,\n aqua: 65535,\n aquamarine: 8388564,\n azure: 15794175,\n beige: 16119260,\n bisque: 16770244,\n black: 0,\n blanchedalmond: 16772045,\n blue: 255,\n blueviolet: 9055202,\n brown: 10824234,\n burlywood: 14596231,\n cadetblue: 6266528,\n chartreuse: 8388352,\n chocolate: 13789470,\n coral: 16744272,\n cornflowerblue: 6591981,\n cornsilk: 16775388,\n crimson: 14423100,\n cyan: 65535,\n darkblue: 139,\n darkcyan: 35723,\n darkgoldenrod: 12092939,\n darkgray: 11119017,\n darkgreen: 25600,\n darkgrey: 11119017,\n darkkhaki: 12433259,\n darkmagenta: 9109643,\n darkolivegreen: 5597999,\n darkorange: 16747520,\n darkorchid: 10040012,\n darkred: 9109504,\n darksalmon: 15308410,\n darkseagreen: 9419919,\n darkslateblue: 4734347,\n darkslategray: 3100495,\n darkslategrey: 3100495,\n darkturquoise: 52945,\n darkviolet: 9699539,\n deeppink: 16716947,\n deepskyblue: 49151,\n dimgray: 6908265,\n dimgrey: 6908265,\n dodgerblue: 2003199,\n firebrick: 11674146,\n floralwhite: 16775920,\n forestgreen: 2263842,\n fuchsia: 16711935,\n gainsboro: 14474460,\n ghostwhite: 16316671,\n gold: 16766720,\n goldenrod: 14329120,\n gray: 8421504,\n green: 32768,\n greenyellow: 11403055,\n grey: 8421504,\n honeydew: 15794160,\n hotpink: 16738740,\n indianred: 13458524,\n indigo: 4915330,\n ivory: 16777200,\n khaki: 15787660,\n lavender: 15132410,\n lavenderblush: 16773365,\n lawngreen: 8190976,\n lemonchiffon: 16775885,\n lightblue: 11393254,\n lightcoral: 15761536,\n lightcyan: 14745599,\n lightgoldenrodyellow: 16448210,\n lightgray: 13882323,\n lightgreen: 9498256,\n lightgrey: 13882323,\n lightpink: 16758465,\n lightsalmon: 16752762,\n lightseagreen: 2142890,\n lightskyblue: 8900346,\n lightslategray: 7833753,\n lightslategrey: 7833753,\n lightsteelblue: 11584734,\n lightyellow: 16777184,\n lime: 65280,\n limegreen: 3329330,\n linen: 16445670,\n magenta: 16711935,\n maroon: 8388608,\n mediumaquamarine: 6737322,\n mediumblue: 205,\n mediumorchid: 12211667,\n mediumpurple: 9662683,\n mediumseagreen: 3978097,\n mediumslateblue: 8087790,\n mediumspringgreen: 64154,\n mediumturquoise: 4772300,\n mediumvioletred: 13047173,\n midnightblue: 1644912,\n mintcream: 16121850,\n mistyrose: 16770273,\n moccasin: 16770229,\n navajowhite: 16768685,\n navy: 128,\n oldlace: 16643558,\n olive: 8421376,\n olivedrab: 7048739,\n orange: 16753920,\n orangered: 16729344,\n orchid: 14315734,\n palegoldenrod: 15657130,\n palegreen: 10025880,\n paleturquoise: 11529966,\n palevioletred: 14381203,\n papayawhip: 16773077,\n peachpuff: 16767673,\n peru: 13468991,\n pink: 16761035,\n plum: 14524637,\n powderblue: 11591910,\n purple: 8388736,\n rebeccapurple: 6697881,\n red: 16711680,\n rosybrown: 12357519,\n royalblue: 4286945,\n saddlebrown: 9127187,\n salmon: 16416882,\n sandybrown: 16032864,\n seagreen: 3050327,\n seashell: 16774638,\n sienna: 10506797,\n silver: 12632256,\n skyblue: 8900331,\n slateblue: 6970061,\n slategray: 7372944,\n slategrey: 7372944,\n snow: 16775930,\n springgreen: 65407,\n steelblue: 4620980,\n tan: 13808780,\n teal: 32896,\n thistle: 14204888,\n tomato: 16737095,\n turquoise: 4251856,\n violet: 15631086,\n wheat: 16113331,\n white: 16777215,\n whitesmoke: 16119285,\n yellow: 16776960,\n yellowgreen: 10145074\n });\n d3_rgb_names.forEach(function (key, value) {\n d3_rgb_names.set(key, d3_rgbNumber(value));\n });\n\n function d3_functor(v) {\n return typeof v === \"function\" ? v : function () {\n return v;\n };\n }\n\n d3.functor = d3_functor;\n d3.xhr = d3_xhrType(d3_identity);\n\n function d3_xhrType(response) {\n return function (url, mimeType, callback) {\n if (arguments.length === 2 && typeof mimeType === \"function\") callback = mimeType, mimeType = null;\n return d3_xhr(url, mimeType, response, callback);\n };\n }\n\n function d3_xhr(url, mimeType, response, callback) {\n var xhr = {},\n dispatch = d3.dispatch(\"beforesend\", \"progress\", \"load\", \"error\"),\n headers = {},\n request = new XMLHttpRequest(),\n responseType = null;\n if (this.XDomainRequest && !(\"withCredentials\" in request) && /^(http(s)?:)?\\/\\//.test(url)) request = new XDomainRequest();\n \"onload\" in request ? request.onload = request.onerror = respond : request.onreadystatechange = function () {\n request.readyState > 3 && respond();\n };\n\n function respond() {\n var status = request.status,\n result;\n\n if (!status && d3_xhrHasResponse(request) || status >= 200 && status < 300 || status === 304) {\n try {\n result = response.call(xhr, request);\n } catch (e) {\n dispatch.error.call(xhr, e);\n return;\n }\n\n dispatch.load.call(xhr, result);\n } else {\n dispatch.error.call(xhr, request);\n }\n }\n\n request.onprogress = function (event) {\n var o = d3.event;\n d3.event = event;\n\n try {\n dispatch.progress.call(xhr, request);\n } finally {\n d3.event = o;\n }\n };\n\n xhr.header = function (name, value) {\n name = (name + \"\").toLowerCase();\n if (arguments.length < 2) return headers[name];\n if (value == null) delete headers[name];else headers[name] = value + \"\";\n return xhr;\n };\n\n xhr.mimeType = function (value) {\n if (!arguments.length) return mimeType;\n mimeType = value == null ? null : value + \"\";\n return xhr;\n };\n\n xhr.responseType = function (value) {\n if (!arguments.length) return responseType;\n responseType = value;\n return xhr;\n };\n\n xhr.response = function (value) {\n response = value;\n return xhr;\n };\n\n [\"get\", \"post\"].forEach(function (method) {\n xhr[method] = function () {\n return xhr.send.apply(xhr, [method].concat(d3_array(arguments)));\n };\n });\n\n xhr.send = function (method, data, callback) {\n if (arguments.length === 2 && typeof data === \"function\") callback = data, data = null;\n request.open(method, url, true);\n if (mimeType != null && !(\"accept\" in headers)) headers[\"accept\"] = mimeType + \",*/*\";\n if (request.setRequestHeader) for (var name in headers) {\n request.setRequestHeader(name, headers[name]);\n }\n if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType);\n if (responseType != null) request.responseType = responseType;\n if (callback != null) xhr.on(\"error\", callback).on(\"load\", function (request) {\n callback(null, request);\n });\n dispatch.beforesend.call(xhr, request);\n request.send(data == null ? null : data);\n return xhr;\n };\n\n xhr.abort = function () {\n request.abort();\n return xhr;\n };\n\n d3.rebind(xhr, dispatch, \"on\");\n return callback == null ? xhr : xhr.get(d3_xhr_fixCallback(callback));\n }\n\n function d3_xhr_fixCallback(callback) {\n return callback.length === 1 ? function (error, request) {\n callback(error == null ? request : null);\n } : callback;\n }\n\n function d3_xhrHasResponse(request) {\n var type = request.responseType;\n return type && type !== \"text\" ? request.response : request.responseText;\n }\n\n d3.dsv = function (delimiter, mimeType) {\n var reFormat = new RegExp('[\"' + delimiter + \"\\n]\"),\n delimiterCode = delimiter.charCodeAt(0);\n\n function dsv(url, row, callback) {\n if (arguments.length < 3) callback = row, row = null;\n var xhr = d3_xhr(url, mimeType, row == null ? response : typedResponse(row), callback);\n\n xhr.row = function (_) {\n return arguments.length ? xhr.response((row = _) == null ? response : typedResponse(_)) : row;\n };\n\n return xhr;\n }\n\n function response(request) {\n return dsv.parse(request.responseText);\n }\n\n function typedResponse(f) {\n return function (request) {\n return dsv.parse(request.responseText, f);\n };\n }\n\n dsv.parse = function (text, f) {\n var o;\n return dsv.parseRows(text, function (row, i) {\n if (o) return o(row, i - 1);\n var a = new Function(\"d\", \"return {\" + row.map(function (name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"]\";\n }).join(\",\") + \"}\");\n o = f ? function (row, i) {\n return f(a(row), i);\n } : a;\n });\n };\n\n dsv.parseRows = function (text, f) {\n var EOL = {},\n EOF = {},\n rows = [],\n N = text.length,\n I = 0,\n n = 0,\n t,\n eol;\n\n function token() {\n if (I >= N) return EOF;\n if (eol) return eol = false, EOL;\n var j = I;\n\n if (text.charCodeAt(j) === 34) {\n var i = j;\n\n while (i++ < N) {\n if (text.charCodeAt(i) === 34) {\n if (text.charCodeAt(i + 1) !== 34) break;\n ++i;\n }\n }\n\n I = i + 2;\n var c = text.charCodeAt(i + 1);\n\n if (c === 13) {\n eol = true;\n if (text.charCodeAt(i + 2) === 10) ++I;\n } else if (c === 10) {\n eol = true;\n }\n\n return text.slice(j + 1, i).replace(/\"\"/g, '\"');\n }\n\n while (I < N) {\n var c = text.charCodeAt(I++),\n k = 1;\n if (c === 10) eol = true;else if (c === 13) {\n eol = true;\n if (text.charCodeAt(I) === 10) ++I, ++k;\n } else if (c !== delimiterCode) continue;\n return text.slice(j, I - k);\n }\n\n return text.slice(j);\n }\n\n while ((t = token()) !== EOF) {\n var a = [];\n\n while (t !== EOL && t !== EOF) {\n a.push(t);\n t = token();\n }\n\n if (f && (a = f(a, n++)) == null) continue;\n rows.push(a);\n }\n\n return rows;\n };\n\n dsv.format = function (rows) {\n if (Array.isArray(rows[0])) return dsv.formatRows(rows);\n var fieldSet = new d3_Set(),\n fields = [];\n rows.forEach(function (row) {\n for (var field in row) {\n if (!fieldSet.has(field)) {\n fields.push(fieldSet.add(field));\n }\n }\n });\n return [fields.map(formatValue).join(delimiter)].concat(rows.map(function (row) {\n return fields.map(function (field) {\n return formatValue(row[field]);\n }).join(delimiter);\n })).join(\"\\n\");\n };\n\n dsv.formatRows = function (rows) {\n return rows.map(formatRow).join(\"\\n\");\n };\n\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n\n function formatValue(text) {\n return reFormat.test(text) ? '\"' + text.replace(/\\\"/g, '\"\"') + '\"' : text;\n }\n\n return dsv;\n };\n\n d3.csv = d3.dsv(\",\", \"text/csv\");\n d3.tsv = d3.dsv(\"\t\", \"text/tab-separated-values\");\n\n var d3_timer_queueHead,\n d3_timer_queueTail,\n d3_timer_interval,\n d3_timer_timeout,\n d3_timer_frame = this[d3_vendorSymbol(this, \"requestAnimationFrame\")] || function (callback) {\n setTimeout(callback, 17);\n };\n\n d3.timer = function () {\n d3_timer.apply(this, arguments);\n };\n\n function d3_timer(callback, delay, then) {\n var n = arguments.length;\n if (n < 2) delay = 0;\n if (n < 3) then = Date.now();\n var time = then + delay,\n timer = {\n c: callback,\n t: time,\n n: null\n };\n if (d3_timer_queueTail) d3_timer_queueTail.n = timer;else d3_timer_queueHead = timer;\n d3_timer_queueTail = timer;\n\n if (!d3_timer_interval) {\n d3_timer_timeout = clearTimeout(d3_timer_timeout);\n d3_timer_interval = 1;\n d3_timer_frame(d3_timer_step);\n }\n\n return timer;\n }\n\n function d3_timer_step() {\n var now = d3_timer_mark(),\n delay = d3_timer_sweep() - now;\n\n if (delay > 24) {\n if (isFinite(delay)) {\n clearTimeout(d3_timer_timeout);\n d3_timer_timeout = setTimeout(d3_timer_step, delay);\n }\n\n d3_timer_interval = 0;\n } else {\n d3_timer_interval = 1;\n d3_timer_frame(d3_timer_step);\n }\n }\n\n d3.timer.flush = function () {\n d3_timer_mark();\n d3_timer_sweep();\n };\n\n function d3_timer_mark() {\n var now = Date.now(),\n timer = d3_timer_queueHead;\n\n while (timer) {\n if (now >= timer.t && timer.c(now - timer.t)) timer.c = null;\n timer = timer.n;\n }\n\n return now;\n }\n\n function d3_timer_sweep() {\n var t0,\n t1 = d3_timer_queueHead,\n time = Infinity;\n\n while (t1) {\n if (t1.c) {\n if (t1.t < time) time = t1.t;\n t1 = (t0 = t1).n;\n } else {\n t1 = t0 ? t0.n = t1.n : d3_timer_queueHead = t1.n;\n }\n }\n\n d3_timer_queueTail = t0;\n return time;\n }\n\n function d3_format_precision(x, p) {\n return p - (x ? Math.ceil(Math.log(x) / Math.LN10) : 1);\n }\n\n d3.round = function (x, n) {\n return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x);\n };\n\n var d3_formatPrefixes = [\"y\", \"z\", \"a\", \"f\", \"p\", \"n\", \"µ\", \"m\", \"\", \"k\", \"M\", \"G\", \"T\", \"P\", \"E\", \"Z\", \"Y\"].map(d3_formatPrefix);\n\n d3.formatPrefix = function (value, precision) {\n var i = 0;\n\n if (value = +value) {\n if (value < 0) value *= -1;\n if (precision) value = d3.round(value, d3_format_precision(value, precision));\n i = 1 + Math.floor(1e-12 + Math.log(value) / Math.LN10);\n i = Math.max(-24, Math.min(24, Math.floor((i - 1) / 3) * 3));\n }\n\n return d3_formatPrefixes[8 + i / 3];\n };\n\n function d3_formatPrefix(d, i) {\n var k = Math.pow(10, abs(8 - i) * 3);\n return {\n scale: i > 8 ? function (d) {\n return d / k;\n } : function (d) {\n return d * k;\n },\n symbol: d\n };\n }\n\n function d3_locale_numberFormat(locale) {\n var locale_decimal = locale.decimal,\n locale_thousands = locale.thousands,\n locale_grouping = locale.grouping,\n locale_currency = locale.currency,\n formatGroup = locale_grouping && locale_thousands ? function (value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = locale_grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = locale_grouping[j = (j + 1) % locale_grouping.length];\n }\n\n return t.reverse().join(locale_thousands);\n } : d3_identity;\n return function (specifier) {\n var match = d3_format_re.exec(specifier),\n fill = match[1] || \" \",\n align = match[2] || \">\",\n sign = match[3] || \"-\",\n symbol = match[4] || \"\",\n zfill = match[5],\n width = +match[6],\n comma = match[7],\n precision = match[8],\n type = match[9],\n scale = 1,\n prefix = \"\",\n suffix = \"\",\n integer = false,\n exponent = true;\n if (precision) precision = +precision.substring(1);\n\n if (zfill || fill === \"0\" && align === \"=\") {\n zfill = fill = \"0\";\n align = \"=\";\n }\n\n switch (type) {\n case \"n\":\n comma = true;\n type = \"g\";\n break;\n\n case \"%\":\n scale = 100;\n suffix = \"%\";\n type = \"f\";\n break;\n\n case \"p\":\n scale = 100;\n suffix = \"%\";\n type = \"r\";\n break;\n\n case \"b\":\n case \"o\":\n case \"x\":\n case \"X\":\n if (symbol === \"#\") prefix = \"0\" + type.toLowerCase();\n\n case \"c\":\n exponent = false;\n\n case \"d\":\n integer = true;\n precision = 0;\n break;\n\n case \"s\":\n scale = -1;\n type = \"r\";\n break;\n }\n\n if (symbol === \"$\") prefix = locale_currency[0], suffix = locale_currency[1];\n if (type == \"r\" && !precision) type = \"g\";\n\n if (precision != null) {\n if (type == \"g\") precision = Math.max(1, Math.min(21, precision));else if (type == \"e\" || type == \"f\") precision = Math.max(0, Math.min(20, precision));\n }\n\n type = d3_format_types.get(type) || d3_format_typeDefault;\n var zcomma = zfill && comma;\n return function (value) {\n var fullSuffix = suffix;\n if (integer && value % 1) return \"\";\n var negative = value < 0 || value === 0 && 1 / value < 0 ? (value = -value, \"-\") : sign === \"-\" ? \"\" : sign;\n\n if (scale < 0) {\n var unit = d3.formatPrefix(value, precision);\n value = unit.scale(value);\n fullSuffix = unit.symbol + suffix;\n } else {\n value *= scale;\n }\n\n value = type(value, precision);\n var i = value.lastIndexOf(\".\"),\n before,\n after;\n\n if (i < 0) {\n var j = exponent ? value.lastIndexOf(\"e\") : -1;\n if (j < 0) before = value, after = \"\";else before = value.substring(0, j), after = value.substring(j);\n } else {\n before = value.substring(0, i);\n after = locale_decimal + value.substring(i + 1);\n }\n\n if (!zfill && comma) before = formatGroup(before, Infinity);\n var length = prefix.length + before.length + after.length + (zcomma ? 0 : negative.length),\n padding = length < width ? new Array(length = width - length + 1).join(fill) : \"\";\n if (zcomma) before = formatGroup(padding + before, padding.length ? width - after.length : Infinity);\n negative += prefix;\n value = before + after;\n return (align === \"<\" ? negative + value + padding : align === \">\" ? padding + negative + value : align === \"^\" ? padding.substring(0, length >>= 1) + negative + value + padding.substring(length) : negative + (zcomma ? value : padding + value)) + fullSuffix;\n };\n };\n }\n\n var d3_format_re = /(?:([^{])?([<>=^]))?([+\\- ])?([$#])?(0)?(\\d+)?(,)?(\\.-?\\d+)?([a-z%])?/i;\n var d3_format_types = d3.map({\n b: function b(x) {\n return x.toString(2);\n },\n c: function c(x) {\n return String.fromCharCode(x);\n },\n o: function o(x) {\n return x.toString(8);\n },\n x: function x(_x) {\n return _x.toString(16);\n },\n X: function X(x) {\n return x.toString(16).toUpperCase();\n },\n g: function g(x, p) {\n return x.toPrecision(p);\n },\n e: function e(x, p) {\n return x.toExponential(p);\n },\n f: function f(x, p) {\n return x.toFixed(p);\n },\n r: function r(x, p) {\n return (x = d3.round(x, d3_format_precision(x, p))).toFixed(Math.max(0, Math.min(20, d3_format_precision(x * (1 + 1e-15), p))));\n }\n });\n\n function d3_format_typeDefault(x) {\n return x + \"\";\n }\n\n var d3_time = d3.time = {},\n d3_date = Date;\n\n function d3_date_utc() {\n this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]);\n }\n\n d3_date_utc.prototype = {\n getDate: function getDate() {\n return this._.getUTCDate();\n },\n getDay: function getDay() {\n return this._.getUTCDay();\n },\n getFullYear: function getFullYear() {\n return this._.getUTCFullYear();\n },\n getHours: function getHours() {\n return this._.getUTCHours();\n },\n getMilliseconds: function getMilliseconds() {\n return this._.getUTCMilliseconds();\n },\n getMinutes: function getMinutes() {\n return this._.getUTCMinutes();\n },\n getMonth: function getMonth() {\n return this._.getUTCMonth();\n },\n getSeconds: function getSeconds() {\n return this._.getUTCSeconds();\n },\n getTime: function getTime() {\n return this._.getTime();\n },\n getTimezoneOffset: function getTimezoneOffset() {\n return 0;\n },\n valueOf: function valueOf() {\n return this._.valueOf();\n },\n setDate: function setDate() {\n d3_time_prototype.setUTCDate.apply(this._, arguments);\n },\n setDay: function setDay() {\n d3_time_prototype.setUTCDay.apply(this._, arguments);\n },\n setFullYear: function setFullYear() {\n d3_time_prototype.setUTCFullYear.apply(this._, arguments);\n },\n setHours: function setHours() {\n d3_time_prototype.setUTCHours.apply(this._, arguments);\n },\n setMilliseconds: function setMilliseconds() {\n d3_time_prototype.setUTCMilliseconds.apply(this._, arguments);\n },\n setMinutes: function setMinutes() {\n d3_time_prototype.setUTCMinutes.apply(this._, arguments);\n },\n setMonth: function setMonth() {\n d3_time_prototype.setUTCMonth.apply(this._, arguments);\n },\n setSeconds: function setSeconds() {\n d3_time_prototype.setUTCSeconds.apply(this._, arguments);\n },\n setTime: function setTime() {\n d3_time_prototype.setTime.apply(this._, arguments);\n }\n };\n var d3_time_prototype = Date.prototype;\n\n function d3_time_interval(local, step, number) {\n function round(date) {\n var d0 = local(date),\n d1 = offset(d0, 1);\n return date - d0 < d1 - date ? d0 : d1;\n }\n\n function ceil(date) {\n step(date = local(new d3_date(date - 1)), 1);\n return date;\n }\n\n function offset(date, k) {\n step(date = new d3_date(+date), k);\n return date;\n }\n\n function range(t0, t1, dt) {\n var time = ceil(t0),\n times = [];\n\n if (dt > 1) {\n while (time < t1) {\n if (!(number(time) % dt)) times.push(new Date(+time));\n step(time, 1);\n }\n } else {\n while (time < t1) {\n times.push(new Date(+time)), step(time, 1);\n }\n }\n\n return times;\n }\n\n function range_utc(t0, t1, dt) {\n try {\n d3_date = d3_date_utc;\n var utc = new d3_date_utc();\n utc._ = t0;\n return range(utc, t1, dt);\n } finally {\n d3_date = Date;\n }\n }\n\n local.floor = local;\n local.round = round;\n local.ceil = ceil;\n local.offset = offset;\n local.range = range;\n var utc = local.utc = d3_time_interval_utc(local);\n utc.floor = utc;\n utc.round = d3_time_interval_utc(round);\n utc.ceil = d3_time_interval_utc(ceil);\n utc.offset = d3_time_interval_utc(offset);\n utc.range = range_utc;\n return local;\n }\n\n function d3_time_interval_utc(method) {\n return function (date, k) {\n try {\n d3_date = d3_date_utc;\n var utc = new d3_date_utc();\n utc._ = date;\n return method(utc, k)._;\n } finally {\n d3_date = Date;\n }\n };\n }\n\n d3_time.year = d3_time_interval(function (date) {\n date = d3_time.day(date);\n date.setMonth(0, 1);\n return date;\n }, function (date, offset) {\n date.setFullYear(date.getFullYear() + offset);\n }, function (date) {\n return date.getFullYear();\n });\n d3_time.years = d3_time.year.range;\n d3_time.years.utc = d3_time.year.utc.range;\n d3_time.day = d3_time_interval(function (date) {\n var day = new d3_date(2e3, 0);\n day.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n return day;\n }, function (date, offset) {\n date.setDate(date.getDate() + offset);\n }, function (date) {\n return date.getDate() - 1;\n });\n d3_time.days = d3_time.day.range;\n d3_time.days.utc = d3_time.day.utc.range;\n\n d3_time.dayOfYear = function (date) {\n var year = d3_time.year(date);\n return Math.floor((date - year - (date.getTimezoneOffset() - year.getTimezoneOffset()) * 6e4) / 864e5);\n };\n\n [\"sunday\", \"monday\", \"tuesday\", \"wednesday\", \"thursday\", \"friday\", \"saturday\"].forEach(function (day, i) {\n i = 7 - i;\n var interval = d3_time[day] = d3_time_interval(function (date) {\n (date = d3_time.day(date)).setDate(date.getDate() - (date.getDay() + i) % 7);\n return date;\n }, function (date, offset) {\n date.setDate(date.getDate() + Math.floor(offset) * 7);\n }, function (date) {\n var day = d3_time.year(date).getDay();\n return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7) - (day !== i);\n });\n d3_time[day + \"s\"] = interval.range;\n d3_time[day + \"s\"].utc = interval.utc.range;\n\n d3_time[day + \"OfYear\"] = function (date) {\n var day = d3_time.year(date).getDay();\n return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7);\n };\n });\n d3_time.week = d3_time.sunday;\n d3_time.weeks = d3_time.sunday.range;\n d3_time.weeks.utc = d3_time.sunday.utc.range;\n d3_time.weekOfYear = d3_time.sundayOfYear;\n\n function d3_locale_timeFormat(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_days = locale.days,\n locale_shortDays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n function d3_time_format(template) {\n var n = template.length;\n\n function format(date) {\n var string = [],\n i = -1,\n j = 0,\n c,\n p,\n f;\n\n while (++i < n) {\n if (template.charCodeAt(i) === 37) {\n string.push(template.slice(j, i));\n if ((p = d3_time_formatPads[c = template.charAt(++i)]) != null) c = template.charAt(++i);\n if (f = d3_time_formats[c]) c = f(date, p == null ? c === \"e\" ? \" \" : \"0\" : p);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(template.slice(j, i));\n return string.join(\"\");\n }\n\n format.parse = function (string) {\n var d = {\n y: 1900,\n m: 0,\n d: 1,\n H: 0,\n M: 0,\n S: 0,\n L: 0,\n Z: null\n },\n i = d3_time_parse(d, template, string, 0);\n if (i != string.length) return null;\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n var localZ = d.Z != null && d3_date !== d3_date_utc,\n date = new (localZ ? d3_date_utc : d3_date)();\n if (\"j\" in d) date.setFullYear(d.y, 0, d.j);else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n date.setFullYear(d.y, 0, 1);\n date.setFullYear(d.y, 0, \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (date.getDay() + 5) % 7 : d.w + d.U * 7 - (date.getDay() + 6) % 7);\n } else date.setFullYear(d.y, d.m, d.d);\n date.setHours(d.H + (d.Z / 100 | 0), d.M + d.Z % 100, d.S, d.L);\n return localZ ? date._ : date;\n };\n\n format.toString = function () {\n return template;\n };\n\n return format;\n }\n\n function d3_time_parse(date, template, string, j) {\n var c,\n p,\n t,\n i = 0,\n n = template.length,\n m = string.length;\n\n while (i < n) {\n if (j >= m) return -1;\n c = template.charCodeAt(i++);\n\n if (c === 37) {\n t = template.charAt(i++);\n p = d3_time_parsers[t in d3_time_formatPads ? template.charAt(i++) : t];\n if (!p || (j = p(date, string, j)) < 0) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n d3_time_format.utc = function (template) {\n var local = d3_time_format(template);\n\n function format(date) {\n try {\n d3_date = d3_date_utc;\n var utc = new d3_date();\n utc._ = date;\n return local(utc);\n } finally {\n d3_date = Date;\n }\n }\n\n format.parse = function (string) {\n try {\n d3_date = d3_date_utc;\n var date = local.parse(string);\n return date && date._;\n } finally {\n d3_date = Date;\n }\n };\n\n format.toString = local.toString;\n return format;\n };\n\n d3_time_format.multi = d3_time_format.utc.multi = d3_time_formatMulti;\n var d3_time_periodLookup = d3.map(),\n d3_time_dayRe = d3_time_formatRe(locale_days),\n d3_time_dayLookup = d3_time_formatLookup(locale_days),\n d3_time_dayAbbrevRe = d3_time_formatRe(locale_shortDays),\n d3_time_dayAbbrevLookup = d3_time_formatLookup(locale_shortDays),\n d3_time_monthRe = d3_time_formatRe(locale_months),\n d3_time_monthLookup = d3_time_formatLookup(locale_months),\n d3_time_monthAbbrevRe = d3_time_formatRe(locale_shortMonths),\n d3_time_monthAbbrevLookup = d3_time_formatLookup(locale_shortMonths);\n locale_periods.forEach(function (p, i) {\n d3_time_periodLookup.set(p.toLowerCase(), i);\n });\n var d3_time_formats = {\n a: function a(d) {\n return locale_shortDays[d.getDay()];\n },\n A: function A(d) {\n return locale_days[d.getDay()];\n },\n b: function b(d) {\n return locale_shortMonths[d.getMonth()];\n },\n B: function B(d) {\n return locale_months[d.getMonth()];\n },\n c: d3_time_format(locale_dateTime),\n d: function d(_d, p) {\n return d3_time_formatPad(_d.getDate(), p, 2);\n },\n e: function e(d, p) {\n return d3_time_formatPad(d.getDate(), p, 2);\n },\n H: function H(d, p) {\n return d3_time_formatPad(d.getHours(), p, 2);\n },\n I: function I(d, p) {\n return d3_time_formatPad(d.getHours() % 12 || 12, p, 2);\n },\n j: function j(d, p) {\n return d3_time_formatPad(1 + d3_time.dayOfYear(d), p, 3);\n },\n L: function L(d, p) {\n return d3_time_formatPad(d.getMilliseconds(), p, 3);\n },\n m: function m(d, p) {\n return d3_time_formatPad(d.getMonth() + 1, p, 2);\n },\n M: function M(d, p) {\n return d3_time_formatPad(d.getMinutes(), p, 2);\n },\n p: function p(d) {\n return locale_periods[+(d.getHours() >= 12)];\n },\n S: function S(d, p) {\n return d3_time_formatPad(d.getSeconds(), p, 2);\n },\n U: function U(d, p) {\n return d3_time_formatPad(d3_time.sundayOfYear(d), p, 2);\n },\n w: function w(d) {\n return d.getDay();\n },\n W: function W(d, p) {\n return d3_time_formatPad(d3_time.mondayOfYear(d), p, 2);\n },\n x: d3_time_format(locale_date),\n X: d3_time_format(locale_time),\n y: function y(d, p) {\n return d3_time_formatPad(d.getFullYear() % 100, p, 2);\n },\n Y: function Y(d, p) {\n return d3_time_formatPad(d.getFullYear() % 1e4, p, 4);\n },\n Z: d3_time_zone,\n \"%\": function _() {\n return \"%\";\n }\n };\n var d3_time_parsers = {\n a: d3_time_parseWeekdayAbbrev,\n A: d3_time_parseWeekday,\n b: d3_time_parseMonthAbbrev,\n B: d3_time_parseMonth,\n c: d3_time_parseLocaleFull,\n d: d3_time_parseDay,\n e: d3_time_parseDay,\n H: d3_time_parseHour24,\n I: d3_time_parseHour24,\n j: d3_time_parseDayOfYear,\n L: d3_time_parseMilliseconds,\n m: d3_time_parseMonthNumber,\n M: d3_time_parseMinutes,\n p: d3_time_parseAmPm,\n S: d3_time_parseSeconds,\n U: d3_time_parseWeekNumberSunday,\n w: d3_time_parseWeekdayNumber,\n W: d3_time_parseWeekNumberMonday,\n x: d3_time_parseLocaleDate,\n X: d3_time_parseLocaleTime,\n y: d3_time_parseYear,\n Y: d3_time_parseFullYear,\n Z: d3_time_parseZone,\n \"%\": d3_time_parseLiteralPercent\n };\n\n function d3_time_parseWeekdayAbbrev(date, string, i) {\n d3_time_dayAbbrevRe.lastIndex = 0;\n var n = d3_time_dayAbbrevRe.exec(string.slice(i));\n return n ? (date.w = d3_time_dayAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function d3_time_parseWeekday(date, string, i) {\n d3_time_dayRe.lastIndex = 0;\n var n = d3_time_dayRe.exec(string.slice(i));\n return n ? (date.w = d3_time_dayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function d3_time_parseMonthAbbrev(date, string, i) {\n d3_time_monthAbbrevRe.lastIndex = 0;\n var n = d3_time_monthAbbrevRe.exec(string.slice(i));\n return n ? (date.m = d3_time_monthAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function d3_time_parseMonth(date, string, i) {\n d3_time_monthRe.lastIndex = 0;\n var n = d3_time_monthRe.exec(string.slice(i));\n return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function d3_time_parseLocaleFull(date, string, i) {\n return d3_time_parse(date, d3_time_formats.c.toString(), string, i);\n }\n\n function d3_time_parseLocaleDate(date, string, i) {\n return d3_time_parse(date, d3_time_formats.x.toString(), string, i);\n }\n\n function d3_time_parseLocaleTime(date, string, i) {\n return d3_time_parse(date, d3_time_formats.X.toString(), string, i);\n }\n\n function d3_time_parseAmPm(date, string, i) {\n var n = d3_time_periodLookup.get(string.slice(i, i += 2).toLowerCase());\n return n == null ? -1 : (date.p = n, i);\n }\n\n return d3_time_format;\n }\n\n var d3_time_formatPads = {\n \"-\": \"\",\n _: \" \",\n \"0\": \"0\"\n },\n d3_time_numberRe = /^\\s*\\d+/,\n d3_time_percentRe = /^%/;\n\n function d3_time_formatPad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n }\n\n function d3_time_formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(d3.requote).join(\"|\") + \")\", \"i\");\n }\n\n function d3_time_formatLookup(names) {\n var map = new d3_Map(),\n i = -1,\n n = names.length;\n\n while (++i < n) {\n map.set(names[i].toLowerCase(), i);\n }\n\n return map;\n }\n\n function d3_time_parseWeekdayNumber(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 1));\n return n ? (date.w = +n[0], i + n[0].length) : -1;\n }\n\n function d3_time_parseWeekNumberSunday(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i));\n return n ? (date.U = +n[0], i + n[0].length) : -1;\n }\n\n function d3_time_parseWeekNumberMonday(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i));\n return n ? (date.W = +n[0], i + n[0].length) : -1;\n }\n\n function d3_time_parseFullYear(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 4));\n return n ? (date.y = +n[0], i + n[0].length) : -1;\n }\n\n function d3_time_parseYear(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.y = d3_time_expandYear(+n[0]), i + n[0].length) : -1;\n }\n\n function d3_time_parseZone(date, string, i) {\n return /^[+-]\\d{4}$/.test(string = string.slice(i, i + 5)) ? (date.Z = -string, i + 5) : -1;\n }\n\n function d3_time_expandYear(d) {\n return d + (d > 68 ? 1900 : 2e3);\n }\n\n function d3_time_parseMonthNumber(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.m = n[0] - 1, i + n[0].length) : -1;\n }\n\n function d3_time_parseDay(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.d = +n[0], i + n[0].length) : -1;\n }\n\n function d3_time_parseDayOfYear(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n return n ? (date.j = +n[0], i + n[0].length) : -1;\n }\n\n function d3_time_parseHour24(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.H = +n[0], i + n[0].length) : -1;\n }\n\n function d3_time_parseMinutes(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.M = +n[0], i + n[0].length) : -1;\n }\n\n function d3_time_parseSeconds(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.S = +n[0], i + n[0].length) : -1;\n }\n\n function d3_time_parseMilliseconds(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n return n ? (date.L = +n[0], i + n[0].length) : -1;\n }\n\n function d3_time_zone(d) {\n var z = d.getTimezoneOffset(),\n zs = z > 0 ? \"-\" : \"+\",\n zh = abs(z) / 60 | 0,\n zm = abs(z) % 60;\n return zs + d3_time_formatPad(zh, \"0\", 2) + d3_time_formatPad(zm, \"0\", 2);\n }\n\n function d3_time_parseLiteralPercent(date, string, i) {\n d3_time_percentRe.lastIndex = 0;\n var n = d3_time_percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n }\n\n function d3_time_formatMulti(formats) {\n var n = formats.length,\n i = -1;\n\n while (++i < n) {\n formats[i][0] = this(formats[i][0]);\n }\n\n return function (date) {\n var i = 0,\n f = formats[i];\n\n while (!f[1](date)) {\n f = formats[++i];\n }\n\n return f[0](date);\n };\n }\n\n d3.locale = function (locale) {\n return {\n numberFormat: d3_locale_numberFormat(locale),\n timeFormat: d3_locale_timeFormat(locale)\n };\n };\n\n var d3_locale_enUS = d3.locale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"],\n dateTime: \"%a %b %e %X %Y\",\n date: \"%m/%d/%Y\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n });\n d3.format = d3_locale_enUS.numberFormat;\n d3.geo = {};\n\n function d3_adder() {}\n\n d3_adder.prototype = {\n s: 0,\n t: 0,\n add: function add(y) {\n d3_adderSum(y, this.t, d3_adderTemp);\n d3_adderSum(d3_adderTemp.s, this.s, this);\n if (this.s) this.t += d3_adderTemp.t;else this.s = d3_adderTemp.t;\n },\n reset: function reset() {\n this.s = this.t = 0;\n },\n valueOf: function valueOf() {\n return this.s;\n }\n };\n var d3_adderTemp = new d3_adder();\n\n function d3_adderSum(a, b, o) {\n var x = o.s = a + b,\n bv = x - a,\n av = x - bv;\n o.t = a - av + (b - bv);\n }\n\n d3.geo.stream = function (object, listener) {\n if (object && d3_geo_streamObjectType.hasOwnProperty(object.type)) {\n d3_geo_streamObjectType[object.type](object, listener);\n } else {\n d3_geo_streamGeometry(object, listener);\n }\n };\n\n function d3_geo_streamGeometry(geometry, listener) {\n if (geometry && d3_geo_streamGeometryType.hasOwnProperty(geometry.type)) {\n d3_geo_streamGeometryType[geometry.type](geometry, listener);\n }\n }\n\n var d3_geo_streamObjectType = {\n Feature: function Feature(feature, listener) {\n d3_geo_streamGeometry(feature.geometry, listener);\n },\n FeatureCollection: function FeatureCollection(object, listener) {\n var features = object.features,\n i = -1,\n n = features.length;\n\n while (++i < n) {\n d3_geo_streamGeometry(features[i].geometry, listener);\n }\n }\n };\n var d3_geo_streamGeometryType = {\n Sphere: function Sphere(object, listener) {\n listener.sphere();\n },\n Point: function Point(object, listener) {\n object = object.coordinates;\n listener.point(object[0], object[1], object[2]);\n },\n MultiPoint: function MultiPoint(object, listener) {\n var coordinates = object.coordinates,\n i = -1,\n n = coordinates.length;\n\n while (++i < n) {\n object = coordinates[i], listener.point(object[0], object[1], object[2]);\n }\n },\n LineString: function LineString(object, listener) {\n d3_geo_streamLine(object.coordinates, listener, 0);\n },\n MultiLineString: function MultiLineString(object, listener) {\n var coordinates = object.coordinates,\n i = -1,\n n = coordinates.length;\n\n while (++i < n) {\n d3_geo_streamLine(coordinates[i], listener, 0);\n }\n },\n Polygon: function Polygon(object, listener) {\n d3_geo_streamPolygon(object.coordinates, listener);\n },\n MultiPolygon: function MultiPolygon(object, listener) {\n var coordinates = object.coordinates,\n i = -1,\n n = coordinates.length;\n\n while (++i < n) {\n d3_geo_streamPolygon(coordinates[i], listener);\n }\n },\n GeometryCollection: function GeometryCollection(object, listener) {\n var geometries = object.geometries,\n i = -1,\n n = geometries.length;\n\n while (++i < n) {\n d3_geo_streamGeometry(geometries[i], listener);\n }\n }\n };\n\n function d3_geo_streamLine(coordinates, listener, closed) {\n var i = -1,\n n = coordinates.length - closed,\n coordinate;\n listener.lineStart();\n\n while (++i < n) {\n coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1], coordinate[2]);\n }\n\n listener.lineEnd();\n }\n\n function d3_geo_streamPolygon(coordinates, listener) {\n var i = -1,\n n = coordinates.length;\n listener.polygonStart();\n\n while (++i < n) {\n d3_geo_streamLine(coordinates[i], listener, 1);\n }\n\n listener.polygonEnd();\n }\n\n d3.geo.area = function (object) {\n d3_geo_areaSum = 0;\n d3.geo.stream(object, d3_geo_area);\n return d3_geo_areaSum;\n };\n\n var d3_geo_areaSum,\n d3_geo_areaRingSum = new d3_adder();\n var d3_geo_area = {\n sphere: function sphere() {\n d3_geo_areaSum += 4 * π;\n },\n point: d3_noop,\n lineStart: d3_noop,\n lineEnd: d3_noop,\n polygonStart: function polygonStart() {\n d3_geo_areaRingSum.reset();\n d3_geo_area.lineStart = d3_geo_areaRingStart;\n },\n polygonEnd: function polygonEnd() {\n var area = 2 * d3_geo_areaRingSum;\n d3_geo_areaSum += area < 0 ? 4 * π + area : area;\n d3_geo_area.lineStart = d3_geo_area.lineEnd = d3_geo_area.point = d3_noop;\n }\n };\n\n function d3_geo_areaRingStart() {\n var λ00, φ00, λ0, cosφ0, sinφ0;\n\n d3_geo_area.point = function (λ, φ) {\n d3_geo_area.point = nextPoint;\n λ0 = (λ00 = λ) * d3_radians, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + π / 4), sinφ0 = Math.sin(φ);\n };\n\n function nextPoint(λ, φ) {\n λ *= d3_radians;\n φ = φ * d3_radians / 2 + π / 4;\n var dλ = λ - λ0,\n sdλ = dλ >= 0 ? 1 : -1,\n adλ = sdλ * dλ,\n cosφ = Math.cos(φ),\n sinφ = Math.sin(φ),\n k = sinφ0 * sinφ,\n u = cosφ0 * cosφ + k * Math.cos(adλ),\n v = k * sdλ * Math.sin(adλ);\n d3_geo_areaRingSum.add(Math.atan2(v, u));\n λ0 = λ, cosφ0 = cosφ, sinφ0 = sinφ;\n }\n\n d3_geo_area.lineEnd = function () {\n nextPoint(λ00, φ00);\n };\n }\n\n function d3_geo_cartesian(spherical) {\n var λ = spherical[0],\n φ = spherical[1],\n cosφ = Math.cos(φ);\n return [cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ)];\n }\n\n function d3_geo_cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n }\n\n function d3_geo_cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n }\n\n function d3_geo_cartesianAdd(a, b) {\n a[0] += b[0];\n a[1] += b[1];\n a[2] += b[2];\n }\n\n function d3_geo_cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n }\n\n function d3_geo_cartesianNormalize(d) {\n var l = Math.sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l;\n d[1] /= l;\n d[2] /= l;\n }\n\n function d3_geo_spherical(cartesian) {\n return [Math.atan2(cartesian[1], cartesian[0]), d3_asin(cartesian[2])];\n }\n\n function d3_geo_sphericalEqual(a, b) {\n return abs(a[0] - b[0]) < ε && abs(a[1] - b[1]) < ε;\n }\n\n d3.geo.bounds = function () {\n var λ0, φ0, λ1, φ1, λ_, λ__, φ__, p0, dλSum, ranges, range;\n var bound = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function polygonStart() {\n bound.point = ringPoint;\n bound.lineStart = ringStart;\n bound.lineEnd = ringEnd;\n dλSum = 0;\n d3_geo_area.polygonStart();\n },\n polygonEnd: function polygonEnd() {\n d3_geo_area.polygonEnd();\n bound.point = point;\n bound.lineStart = lineStart;\n bound.lineEnd = lineEnd;\n if (d3_geo_areaRingSum < 0) λ0 = -(λ1 = 180), φ0 = -(φ1 = 90);else if (dλSum > ε) φ1 = 90;else if (dλSum < -ε) φ0 = -90;\n range[0] = λ0, range[1] = λ1;\n }\n };\n\n function point(λ, φ) {\n ranges.push(range = [λ0 = λ, λ1 = λ]);\n if (φ < φ0) φ0 = φ;\n if (φ > φ1) φ1 = φ;\n }\n\n function linePoint(λ, φ) {\n var p = d3_geo_cartesian([λ * d3_radians, φ * d3_radians]);\n\n if (p0) {\n var normal = d3_geo_cartesianCross(p0, p),\n equatorial = [normal[1], -normal[0], 0],\n inflection = d3_geo_cartesianCross(equatorial, normal);\n d3_geo_cartesianNormalize(inflection);\n inflection = d3_geo_spherical(inflection);\n var dλ = λ - λ_,\n s = dλ > 0 ? 1 : -1,\n λi = inflection[0] * d3_degrees * s,\n antimeridian = abs(dλ) > 180;\n\n if (antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n var φi = inflection[1] * d3_degrees;\n if (φi > φ1) φ1 = φi;\n } else if (λi = (λi + 360) % 360 - 180, antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n var φi = -inflection[1] * d3_degrees;\n if (φi < φ0) φ0 = φi;\n } else {\n if (φ < φ0) φ0 = φ;\n if (φ > φ1) φ1 = φ;\n }\n\n if (antimeridian) {\n if (λ < λ_) {\n if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n } else {\n if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n }\n } else {\n if (λ1 >= λ0) {\n if (λ < λ0) λ0 = λ;\n if (λ > λ1) λ1 = λ;\n } else {\n if (λ > λ_) {\n if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n } else {\n if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n }\n }\n }\n } else {\n point(λ, φ);\n }\n\n p0 = p, λ_ = λ;\n }\n\n function lineStart() {\n bound.point = linePoint;\n }\n\n function lineEnd() {\n range[0] = λ0, range[1] = λ1;\n bound.point = point;\n p0 = null;\n }\n\n function ringPoint(λ, φ) {\n if (p0) {\n var dλ = λ - λ_;\n dλSum += abs(dλ) > 180 ? dλ + (dλ > 0 ? 360 : -360) : dλ;\n } else λ__ = λ, φ__ = φ;\n\n d3_geo_area.point(λ, φ);\n linePoint(λ, φ);\n }\n\n function ringStart() {\n d3_geo_area.lineStart();\n }\n\n function ringEnd() {\n ringPoint(λ__, φ__);\n d3_geo_area.lineEnd();\n if (abs(dλSum) > ε) λ0 = -(λ1 = 180);\n range[0] = λ0, range[1] = λ1;\n p0 = null;\n }\n\n function angle(λ0, λ1) {\n return (λ1 -= λ0) < 0 ? λ1 + 360 : λ1;\n }\n\n function compareRanges(a, b) {\n return a[0] - b[0];\n }\n\n function withinRange(x, range) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n }\n\n return function (feature) {\n φ1 = λ1 = -(λ0 = φ0 = Infinity);\n ranges = [];\n d3.geo.stream(feature, bound);\n var n = ranges.length;\n\n if (n) {\n ranges.sort(compareRanges);\n\n for (var i = 1, a = ranges[0], b, merged = [a]; i < n; ++i) {\n b = ranges[i];\n\n if (withinRange(b[0], a) || withinRange(b[1], a)) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n\n var best = -Infinity,\n dλ;\n\n for (var n = merged.length - 1, i = 0, a = merged[n], b; i <= n; a = b, ++i) {\n b = merged[i];\n if ((dλ = angle(a[1], b[0])) > best) best = dλ, λ0 = b[0], λ1 = a[1];\n }\n }\n\n ranges = range = null;\n return λ0 === Infinity || φ0 === Infinity ? [[NaN, NaN], [NaN, NaN]] : [[λ0, φ0], [λ1, φ1]];\n };\n }();\n\n d3.geo.centroid = function (object) {\n d3_geo_centroidW0 = d3_geo_centroidW1 = d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n d3.geo.stream(object, d3_geo_centroid);\n var x = d3_geo_centroidX2,\n y = d3_geo_centroidY2,\n z = d3_geo_centroidZ2,\n m = x * x + y * y + z * z;\n\n if (m < ε2) {\n x = d3_geo_centroidX1, y = d3_geo_centroidY1, z = d3_geo_centroidZ1;\n if (d3_geo_centroidW1 < ε) x = d3_geo_centroidX0, y = d3_geo_centroidY0, z = d3_geo_centroidZ0;\n m = x * x + y * y + z * z;\n if (m < ε2) return [NaN, NaN];\n }\n\n return [Math.atan2(y, x) * d3_degrees, d3_asin(z / Math.sqrt(m)) * d3_degrees];\n };\n\n var d3_geo_centroidW0, d3_geo_centroidW1, d3_geo_centroidX0, d3_geo_centroidY0, d3_geo_centroidZ0, d3_geo_centroidX1, d3_geo_centroidY1, d3_geo_centroidZ1, d3_geo_centroidX2, d3_geo_centroidY2, d3_geo_centroidZ2;\n var d3_geo_centroid = {\n sphere: d3_noop,\n point: d3_geo_centroidPoint,\n lineStart: d3_geo_centroidLineStart,\n lineEnd: d3_geo_centroidLineEnd,\n polygonStart: function polygonStart() {\n d3_geo_centroid.lineStart = d3_geo_centroidRingStart;\n },\n polygonEnd: function polygonEnd() {\n d3_geo_centroid.lineStart = d3_geo_centroidLineStart;\n }\n };\n\n function d3_geo_centroidPoint(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians);\n d3_geo_centroidPointXYZ(cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ));\n }\n\n function d3_geo_centroidPointXYZ(x, y, z) {\n ++d3_geo_centroidW0;\n d3_geo_centroidX0 += (x - d3_geo_centroidX0) / d3_geo_centroidW0;\n d3_geo_centroidY0 += (y - d3_geo_centroidY0) / d3_geo_centroidW0;\n d3_geo_centroidZ0 += (z - d3_geo_centroidZ0) / d3_geo_centroidW0;\n }\n\n function d3_geo_centroidLineStart() {\n var x0, y0, z0;\n\n d3_geo_centroid.point = function (λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians);\n x0 = cosφ * Math.cos(λ);\n y0 = cosφ * Math.sin(λ);\n z0 = Math.sin(φ);\n d3_geo_centroid.point = nextPoint;\n d3_geo_centroidPointXYZ(x0, y0, z0);\n };\n\n function nextPoint(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians),\n x = cosφ * Math.cos(λ),\n y = cosφ * Math.sin(λ),\n z = Math.sin(φ),\n w = Math.atan2(Math.sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n d3_geo_centroidW1 += w;\n d3_geo_centroidX1 += w * (x0 + (x0 = x));\n d3_geo_centroidY1 += w * (y0 + (y0 = y));\n d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n d3_geo_centroidPointXYZ(x0, y0, z0);\n }\n }\n\n function d3_geo_centroidLineEnd() {\n d3_geo_centroid.point = d3_geo_centroidPoint;\n }\n\n function d3_geo_centroidRingStart() {\n var λ00, φ00, x0, y0, z0;\n\n d3_geo_centroid.point = function (λ, φ) {\n λ00 = λ, φ00 = φ;\n d3_geo_centroid.point = nextPoint;\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians);\n x0 = cosφ * Math.cos(λ);\n y0 = cosφ * Math.sin(λ);\n z0 = Math.sin(φ);\n d3_geo_centroidPointXYZ(x0, y0, z0);\n };\n\n d3_geo_centroid.lineEnd = function () {\n nextPoint(λ00, φ00);\n d3_geo_centroid.lineEnd = d3_geo_centroidLineEnd;\n d3_geo_centroid.point = d3_geo_centroidPoint;\n };\n\n function nextPoint(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians),\n x = cosφ * Math.cos(λ),\n y = cosφ * Math.sin(λ),\n z = Math.sin(φ),\n cx = y0 * z - z0 * y,\n cy = z0 * x - x0 * z,\n cz = x0 * y - y0 * x,\n m = Math.sqrt(cx * cx + cy * cy + cz * cz),\n u = x0 * x + y0 * y + z0 * z,\n v = m && -d3_acos(u) / m,\n w = Math.atan2(m, u);\n d3_geo_centroidX2 += v * cx;\n d3_geo_centroidY2 += v * cy;\n d3_geo_centroidZ2 += v * cz;\n d3_geo_centroidW1 += w;\n d3_geo_centroidX1 += w * (x0 + (x0 = x));\n d3_geo_centroidY1 += w * (y0 + (y0 = y));\n d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n d3_geo_centroidPointXYZ(x0, y0, z0);\n }\n }\n\n function d3_geo_compose(a, b) {\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n\n if (a.invert && b.invert) compose.invert = function (x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n return compose;\n }\n\n function d3_true() {\n return true;\n }\n\n function d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener) {\n var subject = [],\n clip = [];\n segments.forEach(function (segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n,\n p0 = segment[0],\n p1 = segment[n];\n\n if (d3_geo_sphericalEqual(p0, p1)) {\n listener.lineStart();\n\n for (var i = 0; i < n; ++i) {\n listener.point((p0 = segment[i])[0], p0[1]);\n }\n\n listener.lineEnd();\n return;\n }\n\n var a = new d3_geo_clipPolygonIntersection(p0, segment, null, true),\n b = new d3_geo_clipPolygonIntersection(p0, null, a, false);\n a.o = b;\n subject.push(a);\n clip.push(b);\n a = new d3_geo_clipPolygonIntersection(p1, segment, null, false);\n b = new d3_geo_clipPolygonIntersection(p1, null, a, true);\n a.o = b;\n subject.push(a);\n clip.push(b);\n });\n clip.sort(compare);\n d3_geo_clipPolygonLinkCircular(subject);\n d3_geo_clipPolygonLinkCircular(clip);\n if (!subject.length) return;\n\n for (var i = 0, entry = clipStartInside, n = clip.length; i < n; ++i) {\n clip[i].e = entry = !entry;\n }\n\n var start = subject[0],\n points,\n point;\n\n while (1) {\n var current = start,\n isSubject = true;\n\n while (current.v) {\n if ((current = current.n) === start) return;\n }\n\n points = current.z;\n listener.lineStart();\n\n do {\n current.v = current.o.v = true;\n\n if (current.e) {\n if (isSubject) {\n for (var i = 0, n = points.length; i < n; ++i) {\n listener.point((point = points[i])[0], point[1]);\n }\n } else {\n interpolate(current.x, current.n.x, 1, listener);\n }\n\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n\n for (var i = points.length - 1; i >= 0; --i) {\n listener.point((point = points[i])[0], point[1]);\n }\n } else {\n interpolate(current.x, current.p.x, -1, listener);\n }\n\n current = current.p;\n }\n\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n\n listener.lineEnd();\n }\n }\n\n function d3_geo_clipPolygonLinkCircular(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n\n a.n = b = array[0];\n b.p = a;\n }\n\n function d3_geo_clipPolygonIntersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other;\n this.e = entry;\n this.v = false;\n this.n = this.p = null;\n }\n\n function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {\n return function (rotate, listener) {\n var line = clipLine(listener),\n rotatedClipStart = rotate.invert(clipStart[0], clipStart[1]);\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function polygonStart() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function polygonEnd() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = d3.merge(segments);\n var clipStartInside = d3_geo_pointInPolygon(rotatedClipStart, polygon);\n\n if (segments.length) {\n if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n d3_geo_clipPolygon(segments, d3_geo_clipSort, clipStartInside, interpolate, listener);\n } else if (clipStartInside) {\n if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n listener.lineStart();\n interpolate(null, null, 1, listener);\n listener.lineEnd();\n }\n\n if (polygonStarted) listener.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function sphere() {\n listener.polygonStart();\n listener.lineStart();\n interpolate(null, null, 1, listener);\n listener.lineEnd();\n listener.polygonEnd();\n }\n };\n\n function point(λ, φ) {\n var point = rotate(λ, φ);\n if (pointVisible(λ = point[0], φ = point[1])) listener.point(λ, φ);\n }\n\n function pointLine(λ, φ) {\n var point = rotate(λ, φ);\n line.point(point[0], point[1]);\n }\n\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n\n var segments;\n var buffer = d3_geo_clipBufferListener(),\n ringListener = clipLine(buffer),\n polygonStarted = false,\n polygon,\n ring;\n\n function pointRing(λ, φ) {\n ring.push([λ, φ]);\n var point = rotate(λ, φ);\n ringListener.point(point[0], point[1]);\n }\n\n function ringStart() {\n ringListener.lineStart();\n ring = [];\n }\n\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringListener.lineEnd();\n var clean = ringListener.clean(),\n ringSegments = buffer.buffer(),\n segment,\n n = ringSegments.length;\n ring.pop();\n polygon.push(ring);\n ring = null;\n if (!n) return;\n\n if (clean & 1) {\n segment = ringSegments[0];\n var n = segment.length - 1,\n i = -1,\n point;\n\n if (n > 0) {\n if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n listener.lineStart();\n\n while (++i < n) {\n listener.point((point = segment[i])[0], point[1]);\n }\n\n listener.lineEnd();\n }\n\n return;\n }\n\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n segments.push(ringSegments.filter(d3_geo_clipSegmentLength1));\n }\n\n return clip;\n };\n }\n\n function d3_geo_clipSegmentLength1(segment) {\n return segment.length > 1;\n }\n\n function d3_geo_clipBufferListener() {\n var lines = [],\n line;\n return {\n lineStart: function lineStart() {\n lines.push(line = []);\n },\n point: function point(λ, φ) {\n line.push([λ, φ]);\n },\n lineEnd: d3_noop,\n buffer: function buffer() {\n var buffer = lines;\n lines = [];\n line = null;\n return buffer;\n },\n rejoin: function rejoin() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n }\n };\n }\n\n function d3_geo_clipSort(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfπ - ε : halfπ - a[1]) - ((b = b.x)[0] < 0 ? b[1] - halfπ - ε : halfπ - b[1]);\n }\n\n var d3_geo_clipAntimeridian = d3_geo_clip(d3_true, d3_geo_clipAntimeridianLine, d3_geo_clipAntimeridianInterpolate, [-π, -π / 2]);\n\n function d3_geo_clipAntimeridianLine(listener) {\n var λ0 = NaN,\n φ0 = NaN,\n sλ0 = NaN,\n _clean;\n\n return {\n lineStart: function lineStart() {\n listener.lineStart();\n _clean = 1;\n },\n point: function point(λ1, φ1) {\n var sλ1 = λ1 > 0 ? π : -π,\n dλ = abs(λ1 - λ0);\n\n if (abs(dλ - π) < ε) {\n listener.point(λ0, φ0 = (φ0 + φ1) / 2 > 0 ? halfπ : -halfπ);\n listener.point(sλ0, φ0);\n listener.lineEnd();\n listener.lineStart();\n listener.point(sλ1, φ0);\n listener.point(λ1, φ0);\n _clean = 0;\n } else if (sλ0 !== sλ1 && dλ >= π) {\n if (abs(λ0 - sλ0) < ε) λ0 -= sλ0 * ε;\n if (abs(λ1 - sλ1) < ε) λ1 -= sλ1 * ε;\n φ0 = d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1);\n listener.point(sλ0, φ0);\n listener.lineEnd();\n listener.lineStart();\n listener.point(sλ1, φ0);\n _clean = 0;\n }\n\n listener.point(λ0 = λ1, φ0 = φ1);\n sλ0 = sλ1;\n },\n lineEnd: function lineEnd() {\n listener.lineEnd();\n λ0 = φ0 = NaN;\n },\n clean: function clean() {\n return 2 - _clean;\n }\n };\n }\n\n function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) {\n var cosφ0,\n cosφ1,\n sinλ0_λ1 = Math.sin(λ0 - λ1);\n return abs(sinλ0_λ1) > ε ? Math.atan((Math.sin(φ0) * (cosφ1 = Math.cos(φ1)) * Math.sin(λ1) - Math.sin(φ1) * (cosφ0 = Math.cos(φ0)) * Math.sin(λ0)) / (cosφ0 * cosφ1 * sinλ0_λ1)) : (φ0 + φ1) / 2;\n }\n\n function d3_geo_clipAntimeridianInterpolate(from, to, direction, listener) {\n var φ;\n\n if (from == null) {\n φ = direction * halfπ;\n listener.point(-π, φ);\n listener.point(0, φ);\n listener.point(π, φ);\n listener.point(π, 0);\n listener.point(π, -φ);\n listener.point(0, -φ);\n listener.point(-π, -φ);\n listener.point(-π, 0);\n listener.point(-π, φ);\n } else if (abs(from[0] - to[0]) > ε) {\n var s = from[0] < to[0] ? π : -π;\n φ = direction * s / 2;\n listener.point(-s, φ);\n listener.point(0, φ);\n listener.point(s, φ);\n } else {\n listener.point(to[0], to[1]);\n }\n }\n\n function d3_geo_pointInPolygon(point, polygon) {\n var meridian = point[0],\n parallel = point[1],\n meridianNormal = [Math.sin(meridian), -Math.cos(meridian), 0],\n polarAngle = 0,\n winding = 0;\n d3_geo_areaRingSum.reset();\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n var ring = polygon[i],\n m = ring.length;\n if (!m) continue;\n var point0 = ring[0],\n λ0 = point0[0],\n φ0 = point0[1] / 2 + π / 4,\n sinφ0 = Math.sin(φ0),\n cosφ0 = Math.cos(φ0),\n j = 1;\n\n while (true) {\n if (j === m) j = 0;\n point = ring[j];\n var λ = point[0],\n φ = point[1] / 2 + π / 4,\n sinφ = Math.sin(φ),\n cosφ = Math.cos(φ),\n dλ = λ - λ0,\n sdλ = dλ >= 0 ? 1 : -1,\n adλ = sdλ * dλ,\n antimeridian = adλ > π,\n k = sinφ0 * sinφ;\n d3_geo_areaRingSum.add(Math.atan2(k * sdλ * Math.sin(adλ), cosφ0 * cosφ + k * Math.cos(adλ)));\n polarAngle += antimeridian ? dλ + sdλ * τ : dλ;\n\n if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) {\n var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0), d3_geo_cartesian(point));\n d3_geo_cartesianNormalize(arc);\n var intersection = d3_geo_cartesianCross(meridianNormal, arc);\n d3_geo_cartesianNormalize(intersection);\n var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]);\n\n if (parallel > φarc || parallel === φarc && (arc[0] || arc[1])) {\n winding += antimeridian ^ dλ >= 0 ? 1 : -1;\n }\n }\n\n if (!j++) break;\n λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point;\n }\n }\n\n return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < 0) ^ winding & 1;\n }\n\n function d3_geo_clipCircle(radius) {\n var cr = Math.cos(radius),\n smallRadius = cr > 0,\n notHemisphere = abs(cr) > ε,\n interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians);\n return d3_geo_clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-π, radius - π]);\n\n function visible(λ, φ) {\n return Math.cos(λ) * Math.cos(φ) > cr;\n }\n\n function clipLine(listener) {\n var point0, c0, v0, v00, _clean2;\n\n return {\n lineStart: function lineStart() {\n v00 = v0 = false;\n _clean2 = 1;\n },\n point: function point(λ, φ) {\n var point1 = [λ, φ],\n point2,\n v = visible(λ, φ),\n c = smallRadius ? v ? 0 : code(λ, φ) : v ? code(λ + (λ < 0 ? π : -π), φ) : 0;\n if (!point0 && (v00 = v0 = v)) listener.lineStart();\n\n if (v !== v0) {\n point2 = intersect(point0, point1);\n\n if (d3_geo_sphericalEqual(point0, point2) || d3_geo_sphericalEqual(point1, point2)) {\n point1[0] += ε;\n point1[1] += ε;\n v = visible(point1[0], point1[1]);\n }\n }\n\n if (v !== v0) {\n _clean2 = 0;\n\n if (v) {\n listener.lineStart();\n point2 = intersect(point1, point0);\n listener.point(point2[0], point2[1]);\n } else {\n point2 = intersect(point0, point1);\n listener.point(point2[0], point2[1]);\n listener.lineEnd();\n }\n\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n _clean2 = 0;\n\n if (smallRadius) {\n listener.lineStart();\n listener.point(t[0][0], t[0][1]);\n listener.point(t[1][0], t[1][1]);\n listener.lineEnd();\n } else {\n listener.point(t[1][0], t[1][1]);\n listener.lineEnd();\n listener.lineStart();\n listener.point(t[0][0], t[0][1]);\n }\n }\n }\n\n if (v && (!point0 || !d3_geo_sphericalEqual(point0, point1))) {\n listener.point(point1[0], point1[1]);\n }\n\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function lineEnd() {\n if (v0) listener.lineEnd();\n point0 = null;\n },\n clean: function clean() {\n return _clean2 | (v00 && v0) << 1;\n }\n };\n }\n\n function intersect(a, b, two) {\n var pa = d3_geo_cartesian(a),\n pb = d3_geo_cartesian(b);\n var n1 = [1, 0, 0],\n n2 = d3_geo_cartesianCross(pa, pb),\n n2n2 = d3_geo_cartesianDot(n2, n2),\n n1n2 = n2[0],\n determinant = n2n2 - n1n2 * n1n2;\n if (!determinant) return !two && a;\n var c1 = cr * n2n2 / determinant,\n c2 = -cr * n1n2 / determinant,\n n1xn2 = d3_geo_cartesianCross(n1, n2),\n A = d3_geo_cartesianScale(n1, c1),\n B = d3_geo_cartesianScale(n2, c2);\n d3_geo_cartesianAdd(A, B);\n var u = n1xn2,\n w = d3_geo_cartesianDot(A, u),\n uu = d3_geo_cartesianDot(u, u),\n t2 = w * w - uu * (d3_geo_cartesianDot(A, A) - 1);\n if (t2 < 0) return;\n var t = Math.sqrt(t2),\n q = d3_geo_cartesianScale(u, (-w - t) / uu);\n d3_geo_cartesianAdd(q, A);\n q = d3_geo_spherical(q);\n if (!two) return q;\n var λ0 = a[0],\n λ1 = b[0],\n φ0 = a[1],\n φ1 = b[1],\n z;\n if (λ1 < λ0) z = λ0, λ0 = λ1, λ1 = z;\n var δλ = λ1 - λ0,\n polar = abs(δλ - π) < ε,\n meridian = polar || δλ < ε;\n if (!polar && φ1 < φ0) z = φ0, φ0 = φ1, φ1 = z;\n\n if (meridian ? polar ? φ0 + φ1 > 0 ^ q[1] < (abs(q[0] - λ0) < ε ? φ0 : φ1) : φ0 <= q[1] && q[1] <= φ1 : δλ > π ^ (λ0 <= q[0] && q[0] <= λ1)) {\n var q1 = d3_geo_cartesianScale(u, (-w + t) / uu);\n d3_geo_cartesianAdd(q1, A);\n return [q, d3_geo_spherical(q1)];\n }\n }\n\n function code(λ, φ) {\n var r = smallRadius ? radius : π - radius,\n code = 0;\n if (λ < -r) code |= 1;else if (λ > r) code |= 2;\n if (φ < -r) code |= 4;else if (φ > r) code |= 8;\n return code;\n }\n }\n\n function d3_geom_clipLine(x0, y0, x1, y1) {\n return function (line) {\n var a = line.a,\n b = line.b,\n ax = a.x,\n ay = a.y,\n bx = b.x,\n by = b.y,\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (t0 > 0) line.a = {\n x: ax + t0 * dx,\n y: ay + t0 * dy\n };\n if (t1 < 1) line.b = {\n x: ax + t1 * dx,\n y: ay + t1 * dy\n };\n return line;\n };\n }\n\n var d3_geo_clipExtentMAX = 1e9;\n\n d3.geo.clipExtent = function () {\n var x0,\n y0,\n x1,\n y1,\n _stream,\n clip,\n clipExtent = {\n stream: function stream(output) {\n if (_stream) _stream.valid = false;\n _stream = clip(output);\n _stream.valid = true;\n return _stream;\n },\n extent: function extent(_) {\n if (!arguments.length) return [[x0, y0], [x1, y1]];\n clip = d3_geo_clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]);\n if (_stream) _stream.valid = false, _stream = null;\n return clipExtent;\n }\n };\n\n return clipExtent.extent([[0, 0], [960, 500]]);\n };\n\n function d3_geo_clipExtent(x0, y0, x1, y1) {\n return function (listener) {\n var listener_ = listener,\n bufferListener = d3_geo_clipBufferListener(),\n clipLine = d3_geom_clipLine(x0, y0, x1, y1),\n segments,\n polygon,\n ring;\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function polygonStart() {\n listener = bufferListener;\n segments = [];\n polygon = [];\n clean = true;\n },\n polygonEnd: function polygonEnd() {\n listener = listener_;\n segments = d3.merge(segments);\n var clipStartInside = insidePolygon([x0, y1]),\n inside = clean && clipStartInside,\n visible = segments.length;\n\n if (inside || visible) {\n listener.polygonStart();\n\n if (inside) {\n listener.lineStart();\n interpolate(null, null, 1, listener);\n listener.lineEnd();\n }\n\n if (visible) {\n d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener);\n }\n\n listener.polygonEnd();\n }\n\n segments = polygon = ring = null;\n }\n };\n\n function insidePolygon(p) {\n var wn = 0,\n n = polygon.length,\n y = p[1];\n\n for (var i = 0; i < n; ++i) {\n for (var j = 1, v = polygon[i], m = v.length, a = v[0], b; j < m; ++j) {\n b = v[j];\n\n if (a[1] <= y) {\n if (b[1] > y && d3_cross2d(a, b, p) > 0) ++wn;\n } else {\n if (b[1] <= y && d3_cross2d(a, b, p) < 0) --wn;\n }\n\n a = b;\n }\n }\n\n return wn !== 0;\n }\n\n function interpolate(from, to, direction, listener) {\n var a = 0,\n a1 = 0;\n\n if (from == null || (a = corner(from, direction)) !== (a1 = corner(to, direction)) || comparePoints(from, to) < 0 ^ direction > 0) {\n do {\n listener.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n } while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n listener.point(to[0], to[1]);\n }\n }\n\n function pointVisible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n\n function point(x, y) {\n if (pointVisible(x, y)) listener.point(x, y);\n }\n\n var x__, y__, v__, x_, y_, v_, first, clean;\n\n function lineStart() {\n clip.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferListener.rejoin();\n segments.push(bufferListener.buffer());\n }\n\n clip.point = point;\n if (v_) listener.lineEnd();\n }\n\n function linePoint(x, y) {\n x = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, x));\n y = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, y));\n var v = pointVisible(x, y);\n if (polygon) ring.push([x, y]);\n\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n\n if (v) {\n listener.lineStart();\n listener.point(x, y);\n }\n } else {\n if (v && v_) listener.point(x, y);else {\n var l = {\n a: {\n x: x_,\n y: y_\n },\n b: {\n x: x,\n y: y\n }\n };\n\n if (clipLine(l)) {\n if (!v_) {\n listener.lineStart();\n listener.point(l.a.x, l.a.y);\n }\n\n listener.point(l.b.x, l.b.y);\n if (!v) listener.lineEnd();\n clean = false;\n } else if (v) {\n listener.lineStart();\n listener.point(x, y);\n clean = false;\n }\n }\n }\n\n x_ = x, y_ = y, v_ = v;\n }\n\n return clip;\n };\n\n function corner(p, direction) {\n return abs(p[0] - x0) < ε ? direction > 0 ? 0 : 3 : abs(p[0] - x1) < ε ? direction > 0 ? 2 : 1 : abs(p[1] - y0) < ε ? direction > 0 ? 1 : 0 : direction > 0 ? 3 : 2;\n }\n\n function compare(a, b) {\n return comparePoints(a.x, b.x);\n }\n\n function comparePoints(a, b) {\n var ca = corner(a, 1),\n cb = corner(b, 1);\n return ca !== cb ? ca - cb : ca === 0 ? b[1] - a[1] : ca === 1 ? a[0] - b[0] : ca === 2 ? a[1] - b[1] : b[0] - a[0];\n }\n }\n\n function d3_geo_conic(projectAt) {\n var φ0 = 0,\n φ1 = π / 3,\n m = d3_geo_projectionMutator(projectAt),\n p = m(φ0, φ1);\n\n p.parallels = function (_) {\n if (!arguments.length) return [φ0 / π * 180, φ1 / π * 180];\n return m(φ0 = _[0] * π / 180, φ1 = _[1] * π / 180);\n };\n\n return p;\n }\n\n function d3_geo_conicEqualArea(φ0, φ1) {\n var sinφ0 = Math.sin(φ0),\n n = (sinφ0 + Math.sin(φ1)) / 2,\n C = 1 + sinφ0 * (2 * n - sinφ0),\n ρ0 = Math.sqrt(C) / n;\n\n function forward(λ, φ) {\n var ρ = Math.sqrt(C - 2 * n * Math.sin(φ)) / n;\n return [ρ * Math.sin(λ *= n), ρ0 - ρ * Math.cos(λ)];\n }\n\n forward.invert = function (x, y) {\n var ρ0_y = ρ0 - y;\n return [Math.atan2(x, ρ0_y) / n, d3_asin((C - (x * x + ρ0_y * ρ0_y) * n * n) / (2 * n))];\n };\n\n return forward;\n }\n\n (d3.geo.conicEqualArea = function () {\n return d3_geo_conic(d3_geo_conicEqualArea);\n }).raw = d3_geo_conicEqualArea;\n\n d3.geo.albers = function () {\n return d3.geo.conicEqualArea().rotate([96, 0]).center([-.6, 38.7]).parallels([29.5, 45.5]).scale(1070);\n };\n\n d3.geo.albersUsa = function () {\n var lower48 = d3.geo.albers();\n var alaska = d3.geo.conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]);\n var hawaii = d3.geo.conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]);\n\n var _point,\n pointStream = {\n point: function point(x, y) {\n _point = [x, y];\n }\n },\n lower48Point,\n alaskaPoint,\n hawaiiPoint;\n\n function albersUsa(coordinates) {\n var x = coordinates[0],\n y = coordinates[1];\n _point = null;\n (lower48Point(x, y), _point) || (alaskaPoint(x, y), _point) || hawaiiPoint(x, y);\n return _point;\n }\n\n albersUsa.invert = function (coordinates) {\n var k = lower48.scale(),\n t = lower48.translate(),\n x = (coordinates[0] - t[0]) / k,\n y = (coordinates[1] - t[1]) / k;\n return (y >= .12 && y < .234 && x >= -.425 && x < -.214 ? alaska : y >= .166 && y < .234 && x >= -.214 && x < -.115 ? hawaii : lower48).invert(coordinates);\n };\n\n albersUsa.stream = function (stream) {\n var lower48Stream = lower48.stream(stream),\n alaskaStream = alaska.stream(stream),\n hawaiiStream = hawaii.stream(stream);\n return {\n point: function point(x, y) {\n lower48Stream.point(x, y);\n alaskaStream.point(x, y);\n hawaiiStream.point(x, y);\n },\n sphere: function sphere() {\n lower48Stream.sphere();\n alaskaStream.sphere();\n hawaiiStream.sphere();\n },\n lineStart: function lineStart() {\n lower48Stream.lineStart();\n alaskaStream.lineStart();\n hawaiiStream.lineStart();\n },\n lineEnd: function lineEnd() {\n lower48Stream.lineEnd();\n alaskaStream.lineEnd();\n hawaiiStream.lineEnd();\n },\n polygonStart: function polygonStart() {\n lower48Stream.polygonStart();\n alaskaStream.polygonStart();\n hawaiiStream.polygonStart();\n },\n polygonEnd: function polygonEnd() {\n lower48Stream.polygonEnd();\n alaskaStream.polygonEnd();\n hawaiiStream.polygonEnd();\n }\n };\n };\n\n albersUsa.precision = function (_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_);\n alaska.precision(_);\n hawaii.precision(_);\n return albersUsa;\n };\n\n albersUsa.scale = function (_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_);\n alaska.scale(_ * .35);\n hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n\n albersUsa.translate = function (_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(),\n x = +_[0],\n y = +_[1];\n lower48Point = lower48.translate(_).clipExtent([[x - .455 * k, y - .238 * k], [x + .455 * k, y + .238 * k]]).stream(pointStream).point;\n alaskaPoint = alaska.translate([x - .307 * k, y + .201 * k]).clipExtent([[x - .425 * k + ε, y + .12 * k + ε], [x - .214 * k - ε, y + .234 * k - ε]]).stream(pointStream).point;\n hawaiiPoint = hawaii.translate([x - .205 * k, y + .212 * k]).clipExtent([[x - .214 * k + ε, y + .166 * k + ε], [x - .115 * k - ε, y + .234 * k - ε]]).stream(pointStream).point;\n return albersUsa;\n };\n\n return albersUsa.scale(1070);\n };\n\n var d3_geo_pathAreaSum,\n d3_geo_pathAreaPolygon,\n d3_geo_pathArea = {\n point: d3_noop,\n lineStart: d3_noop,\n lineEnd: d3_noop,\n polygonStart: function polygonStart() {\n d3_geo_pathAreaPolygon = 0;\n d3_geo_pathArea.lineStart = d3_geo_pathAreaRingStart;\n },\n polygonEnd: function polygonEnd() {\n d3_geo_pathArea.lineStart = d3_geo_pathArea.lineEnd = d3_geo_pathArea.point = d3_noop;\n d3_geo_pathAreaSum += abs(d3_geo_pathAreaPolygon / 2);\n }\n };\n\n function d3_geo_pathAreaRingStart() {\n var x00, y00, x0, y0;\n\n d3_geo_pathArea.point = function (x, y) {\n d3_geo_pathArea.point = nextPoint;\n x00 = x0 = x, y00 = y0 = y;\n };\n\n function nextPoint(x, y) {\n d3_geo_pathAreaPolygon += y0 * x - x0 * y;\n x0 = x, y0 = y;\n }\n\n d3_geo_pathArea.lineEnd = function () {\n nextPoint(x00, y00);\n };\n }\n\n var d3_geo_pathBoundsX0, d3_geo_pathBoundsY0, d3_geo_pathBoundsX1, d3_geo_pathBoundsY1;\n var d3_geo_pathBounds = {\n point: d3_geo_pathBoundsPoint,\n lineStart: d3_noop,\n lineEnd: d3_noop,\n polygonStart: d3_noop,\n polygonEnd: d3_noop\n };\n\n function d3_geo_pathBoundsPoint(x, y) {\n if (x < d3_geo_pathBoundsX0) d3_geo_pathBoundsX0 = x;\n if (x > d3_geo_pathBoundsX1) d3_geo_pathBoundsX1 = x;\n if (y < d3_geo_pathBoundsY0) d3_geo_pathBoundsY0 = y;\n if (y > d3_geo_pathBoundsY1) d3_geo_pathBoundsY1 = y;\n }\n\n function d3_geo_pathBuffer() {\n var pointCircle = d3_geo_pathBufferCircle(4.5),\n buffer = [];\n var stream = {\n point: point,\n lineStart: function lineStart() {\n stream.point = pointLineStart;\n },\n lineEnd: lineEnd,\n polygonStart: function polygonStart() {\n stream.lineEnd = lineEndPolygon;\n },\n polygonEnd: function polygonEnd() {\n stream.lineEnd = lineEnd;\n stream.point = point;\n },\n pointRadius: function pointRadius(_) {\n pointCircle = d3_geo_pathBufferCircle(_);\n return stream;\n },\n result: function result() {\n if (buffer.length) {\n var result = buffer.join(\"\");\n buffer = [];\n return result;\n }\n }\n };\n\n function point(x, y) {\n buffer.push(\"M\", x, \",\", y, pointCircle);\n }\n\n function pointLineStart(x, y) {\n buffer.push(\"M\", x, \",\", y);\n stream.point = pointLine;\n }\n\n function pointLine(x, y) {\n buffer.push(\"L\", x, \",\", y);\n }\n\n function lineEnd() {\n stream.point = point;\n }\n\n function lineEndPolygon() {\n buffer.push(\"Z\");\n }\n\n return stream;\n }\n\n function d3_geo_pathBufferCircle(radius) {\n return \"m0,\" + radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius + \"z\";\n }\n\n var d3_geo_pathCentroid = {\n point: d3_geo_pathCentroidPoint,\n lineStart: d3_geo_pathCentroidLineStart,\n lineEnd: d3_geo_pathCentroidLineEnd,\n polygonStart: function polygonStart() {\n d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidRingStart;\n },\n polygonEnd: function polygonEnd() {\n d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidLineStart;\n d3_geo_pathCentroid.lineEnd = d3_geo_pathCentroidLineEnd;\n }\n };\n\n function d3_geo_pathCentroidPoint(x, y) {\n d3_geo_centroidX0 += x;\n d3_geo_centroidY0 += y;\n ++d3_geo_centroidZ0;\n }\n\n function d3_geo_pathCentroidLineStart() {\n var x0, y0;\n\n d3_geo_pathCentroid.point = function (x, y) {\n d3_geo_pathCentroid.point = nextPoint;\n d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n };\n\n function nextPoint(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = Math.sqrt(dx * dx + dy * dy);\n d3_geo_centroidX1 += z * (x0 + x) / 2;\n d3_geo_centroidY1 += z * (y0 + y) / 2;\n d3_geo_centroidZ1 += z;\n d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n }\n }\n\n function d3_geo_pathCentroidLineEnd() {\n d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n }\n\n function d3_geo_pathCentroidRingStart() {\n var x00, y00, x0, y0;\n\n d3_geo_pathCentroid.point = function (x, y) {\n d3_geo_pathCentroid.point = nextPoint;\n d3_geo_pathCentroidPoint(x00 = x0 = x, y00 = y0 = y);\n };\n\n function nextPoint(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = Math.sqrt(dx * dx + dy * dy);\n d3_geo_centroidX1 += z * (x0 + x) / 2;\n d3_geo_centroidY1 += z * (y0 + y) / 2;\n d3_geo_centroidZ1 += z;\n z = y0 * x - x0 * y;\n d3_geo_centroidX2 += z * (x0 + x);\n d3_geo_centroidY2 += z * (y0 + y);\n d3_geo_centroidZ2 += z * 3;\n d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n }\n\n d3_geo_pathCentroid.lineEnd = function () {\n nextPoint(x00, y00);\n };\n }\n\n function d3_geo_pathContext(context) {\n var _pointRadius = 4.5;\n var stream = {\n point: point,\n lineStart: function lineStart() {\n stream.point = pointLineStart;\n },\n lineEnd: lineEnd,\n polygonStart: function polygonStart() {\n stream.lineEnd = lineEndPolygon;\n },\n polygonEnd: function polygonEnd() {\n stream.lineEnd = lineEnd;\n stream.point = point;\n },\n pointRadius: function pointRadius(_) {\n _pointRadius = _;\n return stream;\n },\n result: d3_noop\n };\n\n function point(x, y) {\n context.moveTo(x + _pointRadius, y);\n context.arc(x, y, _pointRadius, 0, τ);\n }\n\n function pointLineStart(x, y) {\n context.moveTo(x, y);\n stream.point = pointLine;\n }\n\n function pointLine(x, y) {\n context.lineTo(x, y);\n }\n\n function lineEnd() {\n stream.point = point;\n }\n\n function lineEndPolygon() {\n context.closePath();\n }\n\n return stream;\n }\n\n function d3_geo_resample(project) {\n var δ2 = .5,\n cosMinDistance = Math.cos(30 * d3_radians),\n maxDepth = 16;\n\n function resample(stream) {\n return (maxDepth ? resampleRecursive : resampleNone)(stream);\n }\n\n function resampleNone(stream) {\n return d3_geo_transformPoint(stream, function (x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n });\n }\n\n function resampleRecursive(stream) {\n var λ00, φ00, x00, y00, a00, b00, c00, λ0, x0, y0, a0, b0, c0;\n var resample = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function polygonStart() {\n stream.polygonStart();\n resample.lineStart = ringStart;\n },\n polygonEnd: function polygonEnd() {\n stream.polygonEnd();\n resample.lineStart = lineStart;\n }\n };\n\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n\n function lineStart() {\n x0 = NaN;\n resample.point = linePoint;\n stream.lineStart();\n }\n\n function linePoint(λ, φ) {\n var c = d3_geo_cartesian([λ, φ]),\n p = project(λ, φ);\n resampleLineTo(x0, y0, λ0, a0, b0, c0, x0 = p[0], y0 = p[1], λ0 = λ, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n\n function lineEnd() {\n resample.point = point;\n stream.lineEnd();\n }\n\n function ringStart() {\n lineStart();\n resample.point = ringPoint;\n resample.lineEnd = ringEnd;\n }\n\n function ringPoint(λ, φ) {\n linePoint(λ00 = λ, φ00 = φ), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resample.point = linePoint;\n }\n\n function ringEnd() {\n resampleLineTo(x0, y0, λ0, a0, b0, c0, x00, y00, λ00, a00, b00, c00, maxDepth, stream);\n resample.lineEnd = lineEnd;\n lineEnd();\n }\n\n return resample;\n }\n\n function resampleLineTo(x0, y0, λ0, a0, b0, c0, x1, y1, λ1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0,\n dy = y1 - y0,\n d2 = dx * dx + dy * dy;\n\n if (d2 > 4 * δ2 && depth--) {\n var a = a0 + a1,\n b = b0 + b1,\n c = c0 + c1,\n m = Math.sqrt(a * a + b * b + c * c),\n φ2 = Math.asin(c /= m),\n λ2 = abs(abs(c) - 1) < ε || abs(λ0 - λ1) < ε ? (λ0 + λ1) / 2 : Math.atan2(b, a),\n p = project(λ2, φ2),\n x2 = p[0],\n y2 = p[1],\n dx2 = x2 - x0,\n dy2 = y2 - y0,\n dz = dy * dx2 - dx * dy2;\n\n if (dz * dz / d2 > δ2 || abs((dx * dx2 + dy * dy2) / d2 - .5) > .3 || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) {\n resampleLineTo(x0, y0, λ0, a0, b0, c0, x2, y2, λ2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, λ2, a, b, c, x1, y1, λ1, a1, b1, c1, depth, stream);\n }\n }\n }\n\n resample.precision = function (_) {\n if (!arguments.length) return Math.sqrt(δ2);\n maxDepth = (δ2 = _ * _) > 0 && 16;\n return resample;\n };\n\n return resample;\n }\n\n d3.geo.path = function () {\n var pointRadius = 4.5,\n projection,\n context,\n projectStream,\n contextStream,\n cacheStream;\n\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n if (!cacheStream || !cacheStream.valid) cacheStream = projectStream(contextStream);\n d3.geo.stream(object, cacheStream);\n }\n\n return contextStream.result();\n }\n\n path.area = function (object) {\n d3_geo_pathAreaSum = 0;\n d3.geo.stream(object, projectStream(d3_geo_pathArea));\n return d3_geo_pathAreaSum;\n };\n\n path.centroid = function (object) {\n d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n d3.geo.stream(object, projectStream(d3_geo_pathCentroid));\n return d3_geo_centroidZ2 ? [d3_geo_centroidX2 / d3_geo_centroidZ2, d3_geo_centroidY2 / d3_geo_centroidZ2] : d3_geo_centroidZ1 ? [d3_geo_centroidX1 / d3_geo_centroidZ1, d3_geo_centroidY1 / d3_geo_centroidZ1] : d3_geo_centroidZ0 ? [d3_geo_centroidX0 / d3_geo_centroidZ0, d3_geo_centroidY0 / d3_geo_centroidZ0] : [NaN, NaN];\n };\n\n path.bounds = function (object) {\n d3_geo_pathBoundsX1 = d3_geo_pathBoundsY1 = -(d3_geo_pathBoundsX0 = d3_geo_pathBoundsY0 = Infinity);\n d3.geo.stream(object, projectStream(d3_geo_pathBounds));\n return [[d3_geo_pathBoundsX0, d3_geo_pathBoundsY0], [d3_geo_pathBoundsX1, d3_geo_pathBoundsY1]];\n };\n\n path.projection = function (_) {\n if (!arguments.length) return projection;\n projectStream = (projection = _) ? _.stream || d3_geo_pathProjectStream(_) : d3_identity;\n return reset();\n };\n\n path.context = function (_) {\n if (!arguments.length) return context;\n contextStream = (context = _) == null ? new d3_geo_pathBuffer() : new d3_geo_pathContext(_);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return reset();\n };\n\n path.pointRadius = function (_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n\n function reset() {\n cacheStream = null;\n return path;\n }\n\n return path.projection(d3.geo.albersUsa()).context(null);\n };\n\n function d3_geo_pathProjectStream(project) {\n var resample = d3_geo_resample(function (x, y) {\n return project([x * d3_degrees, y * d3_degrees]);\n });\n return function (stream) {\n return d3_geo_projectionRadians(resample(stream));\n };\n }\n\n d3.geo.transform = function (methods) {\n return {\n stream: function stream(_stream2) {\n var transform = new d3_geo_transform(_stream2);\n\n for (var k in methods) {\n transform[k] = methods[k];\n }\n\n return transform;\n }\n };\n };\n\n function d3_geo_transform(stream) {\n this.stream = stream;\n }\n\n d3_geo_transform.prototype = {\n point: function point(x, y) {\n this.stream.point(x, y);\n },\n sphere: function sphere() {\n this.stream.sphere();\n },\n lineStart: function lineStart() {\n this.stream.lineStart();\n },\n lineEnd: function lineEnd() {\n this.stream.lineEnd();\n },\n polygonStart: function polygonStart() {\n this.stream.polygonStart();\n },\n polygonEnd: function polygonEnd() {\n this.stream.polygonEnd();\n }\n };\n\n function d3_geo_transformPoint(stream, point) {\n return {\n point: point,\n sphere: function sphere() {\n stream.sphere();\n },\n lineStart: function lineStart() {\n stream.lineStart();\n },\n lineEnd: function lineEnd() {\n stream.lineEnd();\n },\n polygonStart: function polygonStart() {\n stream.polygonStart();\n },\n polygonEnd: function polygonEnd() {\n stream.polygonEnd();\n }\n };\n }\n\n d3.geo.projection = d3_geo_projection;\n d3.geo.projectionMutator = d3_geo_projectionMutator;\n\n function d3_geo_projection(project) {\n return d3_geo_projectionMutator(function () {\n return project;\n })();\n }\n\n function d3_geo_projectionMutator(projectAt) {\n var project,\n rotate,\n projectRotate,\n projectResample = d3_geo_resample(function (x, y) {\n x = project(x, y);\n return [x[0] * k + δx, δy - x[1] * k];\n }),\n k = 150,\n x = 480,\n y = 250,\n λ = 0,\n φ = 0,\n δλ = 0,\n δφ = 0,\n δγ = 0,\n δx,\n δy,\n preclip = d3_geo_clipAntimeridian,\n postclip = d3_identity,\n clipAngle = null,\n clipExtent = null,\n stream;\n\n function projection(point) {\n point = projectRotate(point[0] * d3_radians, point[1] * d3_radians);\n return [point[0] * k + δx, δy - point[1] * k];\n }\n\n function invert(point) {\n point = projectRotate.invert((point[0] - δx) / k, (δy - point[1]) / k);\n return point && [point[0] * d3_degrees, point[1] * d3_degrees];\n }\n\n projection.stream = function (output) {\n if (stream) stream.valid = false;\n stream = d3_geo_projectionRadians(preclip(rotate, projectResample(postclip(output))));\n stream.valid = true;\n return stream;\n };\n\n projection.clipAngle = function (_) {\n if (!arguments.length) return clipAngle;\n preclip = _ == null ? (clipAngle = _, d3_geo_clipAntimeridian) : d3_geo_clipCircle((clipAngle = +_) * d3_radians);\n return invalidate();\n };\n\n projection.clipExtent = function (_) {\n if (!arguments.length) return clipExtent;\n clipExtent = _;\n postclip = _ ? d3_geo_clipExtent(_[0][0], _[0][1], _[1][0], _[1][1]) : d3_identity;\n return invalidate();\n };\n\n projection.scale = function (_) {\n if (!arguments.length) return k;\n k = +_;\n return reset();\n };\n\n projection.translate = function (_) {\n if (!arguments.length) return [x, y];\n x = +_[0];\n y = +_[1];\n return reset();\n };\n\n projection.center = function (_) {\n if (!arguments.length) return [λ * d3_degrees, φ * d3_degrees];\n λ = _[0] % 360 * d3_radians;\n φ = _[1] % 360 * d3_radians;\n return reset();\n };\n\n projection.rotate = function (_) {\n if (!arguments.length) return [δλ * d3_degrees, δφ * d3_degrees, δγ * d3_degrees];\n δλ = _[0] % 360 * d3_radians;\n δφ = _[1] % 360 * d3_radians;\n δγ = _.length > 2 ? _[2] % 360 * d3_radians : 0;\n return reset();\n };\n\n d3.rebind(projection, projectResample, \"precision\");\n\n function reset() {\n projectRotate = d3_geo_compose(rotate = d3_geo_rotation(δλ, δφ, δγ), project);\n var center = project(λ, φ);\n δx = x - center[0] * k;\n δy = y + center[1] * k;\n return invalidate();\n }\n\n function invalidate() {\n if (stream) stream.valid = false, stream = null;\n return projection;\n }\n\n return function () {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return reset();\n };\n }\n\n function d3_geo_projectionRadians(stream) {\n return d3_geo_transformPoint(stream, function (x, y) {\n stream.point(x * d3_radians, y * d3_radians);\n });\n }\n\n function d3_geo_equirectangular(λ, φ) {\n return [λ, φ];\n }\n\n (d3.geo.equirectangular = function () {\n return d3_geo_projection(d3_geo_equirectangular);\n }).raw = d3_geo_equirectangular.invert = d3_geo_equirectangular;\n\n d3.geo.rotation = function (rotate) {\n rotate = d3_geo_rotation(rotate[0] % 360 * d3_radians, rotate[1] * d3_radians, rotate.length > 2 ? rotate[2] * d3_radians : 0);\n\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n }\n\n forward.invert = function (coordinates) {\n coordinates = rotate.invert(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n };\n\n return forward;\n };\n\n function d3_geo_identityRotation(λ, φ) {\n return [λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ];\n }\n\n d3_geo_identityRotation.invert = d3_geo_equirectangular;\n\n function d3_geo_rotation(δλ, δφ, δγ) {\n return δλ ? δφ || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationφγ(δφ, δγ)) : d3_geo_rotationλ(δλ) : δφ || δγ ? d3_geo_rotationφγ(δφ, δγ) : d3_geo_identityRotation;\n }\n\n function d3_geo_forwardRotationλ(δλ) {\n return function (λ, φ) {\n return λ += δλ, [λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ];\n };\n }\n\n function d3_geo_rotationλ(δλ) {\n var rotation = d3_geo_forwardRotationλ(δλ);\n rotation.invert = d3_geo_forwardRotationλ(-δλ);\n return rotation;\n }\n\n function d3_geo_rotationφγ(δφ, δγ) {\n var cosδφ = Math.cos(δφ),\n sinδφ = Math.sin(δφ),\n cosδγ = Math.cos(δγ),\n sinδγ = Math.sin(δγ);\n\n function rotation(λ, φ) {\n var cosφ = Math.cos(φ),\n x = Math.cos(λ) * cosφ,\n y = Math.sin(λ) * cosφ,\n z = Math.sin(φ),\n k = z * cosδφ + x * sinδφ;\n return [Math.atan2(y * cosδγ - k * sinδγ, x * cosδφ - z * sinδφ), d3_asin(k * cosδγ + y * sinδγ)];\n }\n\n rotation.invert = function (λ, φ) {\n var cosφ = Math.cos(φ),\n x = Math.cos(λ) * cosφ,\n y = Math.sin(λ) * cosφ,\n z = Math.sin(φ),\n k = z * cosδγ - y * sinδγ;\n return [Math.atan2(y * cosδγ + z * sinδγ, x * cosδφ + k * sinδφ), d3_asin(k * cosδφ - x * sinδφ)];\n };\n\n return rotation;\n }\n\n d3.geo.circle = function () {\n var origin = [0, 0],\n angle,\n precision = 6,\n interpolate;\n\n function circle() {\n var center = typeof origin === \"function\" ? origin.apply(this, arguments) : origin,\n rotate = d3_geo_rotation(-center[0] * d3_radians, -center[1] * d3_radians, 0).invert,\n ring = [];\n interpolate(null, null, 1, {\n point: function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= d3_degrees, x[1] *= d3_degrees;\n }\n });\n return {\n type: \"Polygon\",\n coordinates: [ring]\n };\n }\n\n circle.origin = function (x) {\n if (!arguments.length) return origin;\n origin = x;\n return circle;\n };\n\n circle.angle = function (x) {\n if (!arguments.length) return angle;\n interpolate = d3_geo_circleInterpolate((angle = +x) * d3_radians, precision * d3_radians);\n return circle;\n };\n\n circle.precision = function (_) {\n if (!arguments.length) return precision;\n interpolate = d3_geo_circleInterpolate(angle * d3_radians, (precision = +_) * d3_radians);\n return circle;\n };\n\n return circle.angle(90);\n };\n\n function d3_geo_circleInterpolate(radius, precision) {\n var cr = Math.cos(radius),\n sr = Math.sin(radius);\n return function (from, to, direction, listener) {\n var step = direction * precision;\n\n if (from != null) {\n from = d3_geo_circleAngle(cr, from);\n to = d3_geo_circleAngle(cr, to);\n if (direction > 0 ? from < to : from > to) from += direction * τ;\n } else {\n from = radius + direction * τ;\n to = radius - .5 * step;\n }\n\n for (var point, t = from; direction > 0 ? t > to : t < to; t -= step) {\n listener.point((point = d3_geo_spherical([cr, -sr * Math.cos(t), -sr * Math.sin(t)]))[0], point[1]);\n }\n };\n }\n\n function d3_geo_circleAngle(cr, point) {\n var a = d3_geo_cartesian(point);\n a[0] -= cr;\n d3_geo_cartesianNormalize(a);\n var angle = d3_acos(-a[1]);\n return ((-a[2] < 0 ? -angle : angle) + 2 * Math.PI - ε) % (2 * Math.PI);\n }\n\n d3.geo.distance = function (a, b) {\n var Δλ = (b[0] - a[0]) * d3_radians,\n φ0 = a[1] * d3_radians,\n φ1 = b[1] * d3_radians,\n sinΔλ = Math.sin(Δλ),\n cosΔλ = Math.cos(Δλ),\n sinφ0 = Math.sin(φ0),\n cosφ0 = Math.cos(φ0),\n sinφ1 = Math.sin(φ1),\n cosφ1 = Math.cos(φ1),\n t;\n return Math.atan2(Math.sqrt((t = cosφ1 * sinΔλ) * t + (t = cosφ0 * sinφ1 - sinφ0 * cosφ1 * cosΔλ) * t), sinφ0 * sinφ1 + cosφ0 * cosφ1 * cosΔλ);\n };\n\n d3.geo.graticule = function () {\n var x1,\n x0,\n X1,\n X0,\n y1,\n y0,\n Y1,\n Y0,\n dx = 10,\n dy = dx,\n DX = 90,\n DY = 360,\n x,\n y,\n X,\n Y,\n precision = 2.5;\n\n function graticule() {\n return {\n type: \"MultiLineString\",\n coordinates: lines()\n };\n }\n\n function lines() {\n return d3.range(Math.ceil(X0 / DX) * DX, X1, DX).map(X).concat(d3.range(Math.ceil(Y0 / DY) * DY, Y1, DY).map(Y)).concat(d3.range(Math.ceil(x0 / dx) * dx, x1, dx).filter(function (x) {\n return abs(x % DX) > ε;\n }).map(x)).concat(d3.range(Math.ceil(y0 / dy) * dy, y1, dy).filter(function (y) {\n return abs(y % DY) > ε;\n }).map(y));\n }\n\n graticule.lines = function () {\n return lines().map(function (coordinates) {\n return {\n type: \"LineString\",\n coordinates: coordinates\n };\n });\n };\n\n graticule.outline = function () {\n return {\n type: \"Polygon\",\n coordinates: [X(X0).concat(Y(Y1).slice(1), X(X1).reverse().slice(1), Y(Y0).reverse().slice(1))]\n };\n };\n\n graticule.extent = function (_) {\n if (!arguments.length) return graticule.minorExtent();\n return graticule.majorExtent(_).minorExtent(_);\n };\n\n graticule.majorExtent = function (_) {\n if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.minorExtent = function (_) {\n if (!arguments.length) return [[x0, y0], [x1, y1]];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.step = function (_) {\n if (!arguments.length) return graticule.minorStep();\n return graticule.majorStep(_).minorStep(_);\n };\n\n graticule.majorStep = function (_) {\n if (!arguments.length) return [DX, DY];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n\n graticule.minorStep = function (_) {\n if (!arguments.length) return [dx, dy];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n\n graticule.precision = function (_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = d3_geo_graticuleX(y0, y1, 90);\n y = d3_geo_graticuleY(x0, x1, precision);\n X = d3_geo_graticuleX(Y0, Y1, 90);\n Y = d3_geo_graticuleY(X0, X1, precision);\n return graticule;\n };\n\n return graticule.majorExtent([[-180, -90 + ε], [180, 90 - ε]]).minorExtent([[-180, -80 - ε], [180, 80 + ε]]);\n };\n\n function d3_geo_graticuleX(y0, y1, dy) {\n var y = d3.range(y0, y1 - ε, dy).concat(y1);\n return function (x) {\n return y.map(function (y) {\n return [x, y];\n });\n };\n }\n\n function d3_geo_graticuleY(x0, x1, dx) {\n var x = d3.range(x0, x1 - ε, dx).concat(x1);\n return function (y) {\n return x.map(function (x) {\n return [x, y];\n });\n };\n }\n\n function d3_source(d) {\n return d.source;\n }\n\n function d3_target(d) {\n return d.target;\n }\n\n d3.geo.greatArc = function () {\n var source = d3_source,\n source_,\n target = d3_target,\n target_;\n\n function greatArc() {\n return {\n type: \"LineString\",\n coordinates: [source_ || source.apply(this, arguments), target_ || target.apply(this, arguments)]\n };\n }\n\n greatArc.distance = function () {\n return d3.geo.distance(source_ || source.apply(this, arguments), target_ || target.apply(this, arguments));\n };\n\n greatArc.source = function (_) {\n if (!arguments.length) return source;\n source = _, source_ = typeof _ === \"function\" ? null : _;\n return greatArc;\n };\n\n greatArc.target = function (_) {\n if (!arguments.length) return target;\n target = _, target_ = typeof _ === \"function\" ? null : _;\n return greatArc;\n };\n\n greatArc.precision = function () {\n return arguments.length ? greatArc : 0;\n };\n\n return greatArc;\n };\n\n d3.geo.interpolate = function (source, target) {\n return d3_geo_interpolate(source[0] * d3_radians, source[1] * d3_radians, target[0] * d3_radians, target[1] * d3_radians);\n };\n\n function d3_geo_interpolate(x0, y0, x1, y1) {\n var cy0 = Math.cos(y0),\n sy0 = Math.sin(y0),\n cy1 = Math.cos(y1),\n sy1 = Math.sin(y1),\n kx0 = cy0 * Math.cos(x0),\n ky0 = cy0 * Math.sin(x0),\n kx1 = cy1 * Math.cos(x1),\n ky1 = cy1 * Math.sin(x1),\n d = 2 * Math.asin(Math.sqrt(d3_haversin(y1 - y0) + cy0 * cy1 * d3_haversin(x1 - x0))),\n k = 1 / Math.sin(d);\n var interpolate = d ? function (t) {\n var B = Math.sin(t *= d) * k,\n A = Math.sin(d - t) * k,\n x = A * kx0 + B * kx1,\n y = A * ky0 + B * ky1,\n z = A * sy0 + B * sy1;\n return [Math.atan2(y, x) * d3_degrees, Math.atan2(z, Math.sqrt(x * x + y * y)) * d3_degrees];\n } : function () {\n return [x0 * d3_degrees, y0 * d3_degrees];\n };\n interpolate.distance = d;\n return interpolate;\n }\n\n d3.geo.length = function (object) {\n d3_geo_lengthSum = 0;\n d3.geo.stream(object, d3_geo_length);\n return d3_geo_lengthSum;\n };\n\n var d3_geo_lengthSum;\n var d3_geo_length = {\n sphere: d3_noop,\n point: d3_noop,\n lineStart: d3_geo_lengthLineStart,\n lineEnd: d3_noop,\n polygonStart: d3_noop,\n polygonEnd: d3_noop\n };\n\n function d3_geo_lengthLineStart() {\n var λ0, sinφ0, cosφ0;\n\n d3_geo_length.point = function (λ, φ) {\n λ0 = λ * d3_radians, sinφ0 = Math.sin(φ *= d3_radians), cosφ0 = Math.cos(φ);\n d3_geo_length.point = nextPoint;\n };\n\n d3_geo_length.lineEnd = function () {\n d3_geo_length.point = d3_geo_length.lineEnd = d3_noop;\n };\n\n function nextPoint(λ, φ) {\n var sinφ = Math.sin(φ *= d3_radians),\n cosφ = Math.cos(φ),\n t = abs((λ *= d3_radians) - λ0),\n cosΔλ = Math.cos(t);\n d3_geo_lengthSum += Math.atan2(Math.sqrt((t = cosφ * Math.sin(t)) * t + (t = cosφ0 * sinφ - sinφ0 * cosφ * cosΔλ) * t), sinφ0 * sinφ + cosφ0 * cosφ * cosΔλ);\n λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ;\n }\n }\n\n function d3_geo_azimuthal(scale, angle) {\n function azimuthal(λ, φ) {\n var cosλ = Math.cos(λ),\n cosφ = Math.cos(φ),\n k = scale(cosλ * cosφ);\n return [k * cosφ * Math.sin(λ), k * Math.sin(φ)];\n }\n\n azimuthal.invert = function (x, y) {\n var ρ = Math.sqrt(x * x + y * y),\n c = angle(ρ),\n sinc = Math.sin(c),\n cosc = Math.cos(c);\n return [Math.atan2(x * sinc, ρ * cosc), Math.asin(ρ && y * sinc / ρ)];\n };\n\n return azimuthal;\n }\n\n var d3_geo_azimuthalEqualArea = d3_geo_azimuthal(function (cosλcosφ) {\n return Math.sqrt(2 / (1 + cosλcosφ));\n }, function (ρ) {\n return 2 * Math.asin(ρ / 2);\n });\n (d3.geo.azimuthalEqualArea = function () {\n return d3_geo_projection(d3_geo_azimuthalEqualArea);\n }).raw = d3_geo_azimuthalEqualArea;\n var d3_geo_azimuthalEquidistant = d3_geo_azimuthal(function (cosλcosφ) {\n var c = Math.acos(cosλcosφ);\n return c && c / Math.sin(c);\n }, d3_identity);\n (d3.geo.azimuthalEquidistant = function () {\n return d3_geo_projection(d3_geo_azimuthalEquidistant);\n }).raw = d3_geo_azimuthalEquidistant;\n\n function d3_geo_conicConformal(φ0, φ1) {\n var cosφ0 = Math.cos(φ0),\n t = function t(φ) {\n return Math.tan(π / 4 + φ / 2);\n },\n n = φ0 === φ1 ? Math.sin(φ0) : Math.log(cosφ0 / Math.cos(φ1)) / Math.log(t(φ1) / t(φ0)),\n F = cosφ0 * Math.pow(t(φ0), n) / n;\n\n if (!n) return d3_geo_mercator;\n\n function forward(λ, φ) {\n if (F > 0) {\n if (φ < -halfπ + ε) φ = -halfπ + ε;\n } else {\n if (φ > halfπ - ε) φ = halfπ - ε;\n }\n\n var ρ = F / Math.pow(t(φ), n);\n return [ρ * Math.sin(n * λ), F - ρ * Math.cos(n * λ)];\n }\n\n forward.invert = function (x, y) {\n var ρ0_y = F - y,\n ρ = d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y);\n return [Math.atan2(x, ρ0_y) / n, 2 * Math.atan(Math.pow(F / ρ, 1 / n)) - halfπ];\n };\n\n return forward;\n }\n\n (d3.geo.conicConformal = function () {\n return d3_geo_conic(d3_geo_conicConformal);\n }).raw = d3_geo_conicConformal;\n\n function d3_geo_conicEquidistant(φ0, φ1) {\n var cosφ0 = Math.cos(φ0),\n n = φ0 === φ1 ? Math.sin(φ0) : (cosφ0 - Math.cos(φ1)) / (φ1 - φ0),\n G = cosφ0 / n + φ0;\n if (abs(n) < ε) return d3_geo_equirectangular;\n\n function forward(λ, φ) {\n var ρ = G - φ;\n return [ρ * Math.sin(n * λ), G - ρ * Math.cos(n * λ)];\n }\n\n forward.invert = function (x, y) {\n var ρ0_y = G - y;\n return [Math.atan2(x, ρ0_y) / n, G - d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y)];\n };\n\n return forward;\n }\n\n (d3.geo.conicEquidistant = function () {\n return d3_geo_conic(d3_geo_conicEquidistant);\n }).raw = d3_geo_conicEquidistant;\n var d3_geo_gnomonic = d3_geo_azimuthal(function (cosλcosφ) {\n return 1 / cosλcosφ;\n }, Math.atan);\n (d3.geo.gnomonic = function () {\n return d3_geo_projection(d3_geo_gnomonic);\n }).raw = d3_geo_gnomonic;\n\n function d3_geo_mercator(λ, φ) {\n return [λ, Math.log(Math.tan(π / 4 + φ / 2))];\n }\n\n d3_geo_mercator.invert = function (x, y) {\n return [x, 2 * Math.atan(Math.exp(y)) - halfπ];\n };\n\n function d3_geo_mercatorProjection(project) {\n var m = d3_geo_projection(project),\n scale = m.scale,\n translate = m.translate,\n clipExtent = m.clipExtent,\n clipAuto;\n\n m.scale = function () {\n var v = scale.apply(m, arguments);\n return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n };\n\n m.translate = function () {\n var v = translate.apply(m, arguments);\n return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n };\n\n m.clipExtent = function (_) {\n var v = clipExtent.apply(m, arguments);\n\n if (v === m) {\n if (clipAuto = _ == null) {\n var k = π * scale(),\n t = translate();\n clipExtent([[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]]);\n }\n } else if (clipAuto) {\n v = null;\n }\n\n return v;\n };\n\n return m.clipExtent(null);\n }\n\n (d3.geo.mercator = function () {\n return d3_geo_mercatorProjection(d3_geo_mercator);\n }).raw = d3_geo_mercator;\n var d3_geo_orthographic = d3_geo_azimuthal(function () {\n return 1;\n }, Math.asin);\n (d3.geo.orthographic = function () {\n return d3_geo_projection(d3_geo_orthographic);\n }).raw = d3_geo_orthographic;\n var d3_geo_stereographic = d3_geo_azimuthal(function (cosλcosφ) {\n return 1 / (1 + cosλcosφ);\n }, function (ρ) {\n return 2 * Math.atan(ρ);\n });\n (d3.geo.stereographic = function () {\n return d3_geo_projection(d3_geo_stereographic);\n }).raw = d3_geo_stereographic;\n\n function d3_geo_transverseMercator(λ, φ) {\n return [Math.log(Math.tan(π / 4 + φ / 2)), -λ];\n }\n\n d3_geo_transverseMercator.invert = function (x, y) {\n return [-y, 2 * Math.atan(Math.exp(x)) - halfπ];\n };\n\n (d3.geo.transverseMercator = function () {\n var projection = d3_geo_mercatorProjection(d3_geo_transverseMercator),\n center = projection.center,\n rotate = projection.rotate;\n\n projection.center = function (_) {\n return _ ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n };\n\n projection.rotate = function (_) {\n return _ ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n };\n\n return rotate([0, 0, 90]);\n }).raw = d3_geo_transverseMercator;\n d3.geom = {};\n\n function d3_geom_pointX(d) {\n return d[0];\n }\n\n function d3_geom_pointY(d) {\n return d[1];\n }\n\n d3.geom.hull = function (vertices) {\n var x = d3_geom_pointX,\n y = d3_geom_pointY;\n if (arguments.length) return hull(vertices);\n\n function hull(data) {\n if (data.length < 3) return [];\n var fx = d3_functor(x),\n fy = d3_functor(y),\n i,\n n = data.length,\n points = [],\n flippedPoints = [];\n\n for (i = 0; i < n; i++) {\n points.push([+fx.call(this, data[i], i), +fy.call(this, data[i], i), i]);\n }\n\n points.sort(d3_geom_hullOrder);\n\n for (i = 0; i < n; i++) {\n flippedPoints.push([points[i][0], -points[i][1]]);\n }\n\n var upper = d3_geom_hullUpper(points),\n lower = d3_geom_hullUpper(flippedPoints);\n var skipLeft = lower[0] === upper[0],\n skipRight = lower[lower.length - 1] === upper[upper.length - 1],\n polygon = [];\n\n for (i = upper.length - 1; i >= 0; --i) {\n polygon.push(data[points[upper[i]][2]]);\n }\n\n for (i = +skipLeft; i < lower.length - skipRight; ++i) {\n polygon.push(data[points[lower[i]][2]]);\n }\n\n return polygon;\n }\n\n hull.x = function (_) {\n return arguments.length ? (x = _, hull) : x;\n };\n\n hull.y = function (_) {\n return arguments.length ? (y = _, hull) : y;\n };\n\n return hull;\n };\n\n function d3_geom_hullUpper(points) {\n var n = points.length,\n hull = [0, 1],\n hs = 2;\n\n for (var i = 2; i < n; i++) {\n while (hs > 1 && d3_cross2d(points[hull[hs - 2]], points[hull[hs - 1]], points[i]) <= 0) {\n --hs;\n }\n\n hull[hs++] = i;\n }\n\n return hull.slice(0, hs);\n }\n\n function d3_geom_hullOrder(a, b) {\n return a[0] - b[0] || a[1] - b[1];\n }\n\n d3.geom.polygon = function (coordinates) {\n d3_subclass(coordinates, d3_geom_polygonPrototype);\n return coordinates;\n };\n\n var d3_geom_polygonPrototype = d3.geom.polygon.prototype = [];\n\n d3_geom_polygonPrototype.area = function () {\n var i = -1,\n n = this.length,\n a,\n b = this[n - 1],\n area = 0;\n\n while (++i < n) {\n a = b;\n b = this[i];\n area += a[1] * b[0] - a[0] * b[1];\n }\n\n return area * .5;\n };\n\n d3_geom_polygonPrototype.centroid = function (k) {\n var i = -1,\n n = this.length,\n x = 0,\n y = 0,\n a,\n b = this[n - 1],\n c;\n if (!arguments.length) k = -1 / (6 * this.area());\n\n while (++i < n) {\n a = b;\n b = this[i];\n c = a[0] * b[1] - b[0] * a[1];\n x += (a[0] + b[0]) * c;\n y += (a[1] + b[1]) * c;\n }\n\n return [x * k, y * k];\n };\n\n d3_geom_polygonPrototype.clip = function (subject) {\n var input,\n closed = d3_geom_polygonClosed(subject),\n i = -1,\n n = this.length - d3_geom_polygonClosed(this),\n j,\n m,\n a = this[n - 1],\n b,\n c,\n d;\n\n while (++i < n) {\n input = subject.slice();\n subject.length = 0;\n b = this[i];\n c = input[(m = input.length - closed) - 1];\n j = -1;\n\n while (++j < m) {\n d = input[j];\n\n if (d3_geom_polygonInside(d, a, b)) {\n if (!d3_geom_polygonInside(c, a, b)) {\n subject.push(d3_geom_polygonIntersect(c, d, a, b));\n }\n\n subject.push(d);\n } else if (d3_geom_polygonInside(c, a, b)) {\n subject.push(d3_geom_polygonIntersect(c, d, a, b));\n }\n\n c = d;\n }\n\n if (closed) subject.push(subject[0]);\n a = b;\n }\n\n return subject;\n };\n\n function d3_geom_polygonInside(p, a, b) {\n return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]);\n }\n\n function d3_geom_polygonIntersect(c, d, a, b) {\n var x1 = c[0],\n x3 = a[0],\n x21 = d[0] - x1,\n x43 = b[0] - x3,\n y1 = c[1],\n y3 = a[1],\n y21 = d[1] - y1,\n y43 = b[1] - y3,\n ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21);\n return [x1 + ua * x21, y1 + ua * y21];\n }\n\n function d3_geom_polygonClosed(coordinates) {\n var a = coordinates[0],\n b = coordinates[coordinates.length - 1];\n return !(a[0] - b[0] || a[1] - b[1]);\n }\n\n var d3_geom_voronoiEdges,\n d3_geom_voronoiCells,\n d3_geom_voronoiBeaches,\n d3_geom_voronoiBeachPool = [],\n d3_geom_voronoiFirstCircle,\n d3_geom_voronoiCircles,\n d3_geom_voronoiCirclePool = [];\n\n function d3_geom_voronoiBeach() {\n d3_geom_voronoiRedBlackNode(this);\n this.edge = this.site = this.circle = null;\n }\n\n function d3_geom_voronoiCreateBeach(site) {\n var beach = d3_geom_voronoiBeachPool.pop() || new d3_geom_voronoiBeach();\n beach.site = site;\n return beach;\n }\n\n function d3_geom_voronoiDetachBeach(beach) {\n d3_geom_voronoiDetachCircle(beach);\n d3_geom_voronoiBeaches.remove(beach);\n d3_geom_voronoiBeachPool.push(beach);\n d3_geom_voronoiRedBlackNode(beach);\n }\n\n function d3_geom_voronoiRemoveBeach(beach) {\n var circle = beach.circle,\n x = circle.x,\n y = circle.cy,\n vertex = {\n x: x,\n y: y\n },\n previous = beach.P,\n next = beach.N,\n disappearing = [beach];\n d3_geom_voronoiDetachBeach(beach);\n var lArc = previous;\n\n while (lArc.circle && abs(x - lArc.circle.x) < ε && abs(y - lArc.circle.cy) < ε) {\n previous = lArc.P;\n disappearing.unshift(lArc);\n d3_geom_voronoiDetachBeach(lArc);\n lArc = previous;\n }\n\n disappearing.unshift(lArc);\n d3_geom_voronoiDetachCircle(lArc);\n var rArc = next;\n\n while (rArc.circle && abs(x - rArc.circle.x) < ε && abs(y - rArc.circle.cy) < ε) {\n next = rArc.N;\n disappearing.push(rArc);\n d3_geom_voronoiDetachBeach(rArc);\n rArc = next;\n }\n\n disappearing.push(rArc);\n d3_geom_voronoiDetachCircle(rArc);\n var nArcs = disappearing.length,\n iArc;\n\n for (iArc = 1; iArc < nArcs; ++iArc) {\n rArc = disappearing[iArc];\n lArc = disappearing[iArc - 1];\n d3_geom_voronoiSetEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n }\n\n lArc = disappearing[0];\n rArc = disappearing[nArcs - 1];\n rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, rArc.site, null, vertex);\n d3_geom_voronoiAttachCircle(lArc);\n d3_geom_voronoiAttachCircle(rArc);\n }\n\n function d3_geom_voronoiAddBeach(site) {\n var x = site.x,\n directrix = site.y,\n lArc,\n rArc,\n dxl,\n dxr,\n node = d3_geom_voronoiBeaches._;\n\n while (node) {\n dxl = d3_geom_voronoiLeftBreakPoint(node, directrix) - x;\n if (dxl > ε) node = node.L;else {\n dxr = x - d3_geom_voronoiRightBreakPoint(node, directrix);\n\n if (dxr > ε) {\n if (!node.R) {\n lArc = node;\n break;\n }\n\n node = node.R;\n } else {\n if (dxl > -ε) {\n lArc = node.P;\n rArc = node;\n } else if (dxr > -ε) {\n lArc = node;\n rArc = node.N;\n } else {\n lArc = rArc = node;\n }\n\n break;\n }\n }\n }\n\n var newArc = d3_geom_voronoiCreateBeach(site);\n d3_geom_voronoiBeaches.insert(lArc, newArc);\n if (!lArc && !rArc) return;\n\n if (lArc === rArc) {\n d3_geom_voronoiDetachCircle(lArc);\n rArc = d3_geom_voronoiCreateBeach(lArc.site);\n d3_geom_voronoiBeaches.insert(newArc, rArc);\n newArc.edge = rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n d3_geom_voronoiAttachCircle(lArc);\n d3_geom_voronoiAttachCircle(rArc);\n return;\n }\n\n if (!rArc) {\n newArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n return;\n }\n\n d3_geom_voronoiDetachCircle(lArc);\n d3_geom_voronoiDetachCircle(rArc);\n var lSite = lArc.site,\n ax = lSite.x,\n ay = lSite.y,\n bx = site.x - ax,\n by = site.y - ay,\n rSite = rArc.site,\n cx = rSite.x - ax,\n cy = rSite.y - ay,\n d = 2 * (bx * cy - by * cx),\n hb = bx * bx + by * by,\n hc = cx * cx + cy * cy,\n vertex = {\n x: (cy * hb - by * hc) / d + ax,\n y: (bx * hc - cx * hb) / d + ay\n };\n d3_geom_voronoiSetEdgeEnd(rArc.edge, lSite, rSite, vertex);\n newArc.edge = d3_geom_voronoiCreateEdge(lSite, site, null, vertex);\n rArc.edge = d3_geom_voronoiCreateEdge(site, rSite, null, vertex);\n d3_geom_voronoiAttachCircle(lArc);\n d3_geom_voronoiAttachCircle(rArc);\n }\n\n function d3_geom_voronoiLeftBreakPoint(arc, directrix) {\n var site = arc.site,\n rfocx = site.x,\n rfocy = site.y,\n pby2 = rfocy - directrix;\n if (!pby2) return rfocx;\n var lArc = arc.P;\n if (!lArc) return -Infinity;\n site = lArc.site;\n var lfocx = site.x,\n lfocy = site.y,\n plby2 = lfocy - directrix;\n if (!plby2) return lfocx;\n var hl = lfocx - rfocx,\n aby2 = 1 / pby2 - 1 / plby2,\n b = hl / plby2;\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n return (rfocx + lfocx) / 2;\n }\n\n function d3_geom_voronoiRightBreakPoint(arc, directrix) {\n var rArc = arc.N;\n if (rArc) return d3_geom_voronoiLeftBreakPoint(rArc, directrix);\n var site = arc.site;\n return site.y === directrix ? site.x : Infinity;\n }\n\n function d3_geom_voronoiCell(site) {\n this.site = site;\n this.edges = [];\n }\n\n d3_geom_voronoiCell.prototype.prepare = function () {\n var halfEdges = this.edges,\n iHalfEdge = halfEdges.length,\n edge;\n\n while (iHalfEdge--) {\n edge = halfEdges[iHalfEdge].edge;\n if (!edge.b || !edge.a) halfEdges.splice(iHalfEdge, 1);\n }\n\n halfEdges.sort(d3_geom_voronoiHalfEdgeOrder);\n return halfEdges.length;\n };\n\n function d3_geom_voronoiCloseCells(extent) {\n var x0 = extent[0][0],\n x1 = extent[1][0],\n y0 = extent[0][1],\n y1 = extent[1][1],\n x2,\n y2,\n x3,\n y3,\n cells = d3_geom_voronoiCells,\n iCell = cells.length,\n cell,\n iHalfEdge,\n halfEdges,\n nHalfEdges,\n start,\n end;\n\n while (iCell--) {\n cell = cells[iCell];\n if (!cell || !cell.prepare()) continue;\n halfEdges = cell.edges;\n nHalfEdges = halfEdges.length;\n iHalfEdge = 0;\n\n while (iHalfEdge < nHalfEdges) {\n end = halfEdges[iHalfEdge].end(), x3 = end.x, y3 = end.y;\n start = halfEdges[++iHalfEdge % nHalfEdges].start(), x2 = start.x, y2 = start.y;\n\n if (abs(x3 - x2) > ε || abs(y3 - y2) > ε) {\n halfEdges.splice(iHalfEdge, 0, new d3_geom_voronoiHalfEdge(d3_geom_voronoiCreateBorderEdge(cell.site, end, abs(x3 - x0) < ε && y1 - y3 > ε ? {\n x: x0,\n y: abs(x2 - x0) < ε ? y2 : y1\n } : abs(y3 - y1) < ε && x1 - x3 > ε ? {\n x: abs(y2 - y1) < ε ? x2 : x1,\n y: y1\n } : abs(x3 - x1) < ε && y3 - y0 > ε ? {\n x: x1,\n y: abs(x2 - x1) < ε ? y2 : y0\n } : abs(y3 - y0) < ε && x3 - x0 > ε ? {\n x: abs(y2 - y0) < ε ? x2 : x0,\n y: y0\n } : null), cell.site, null));\n ++nHalfEdges;\n }\n }\n }\n }\n\n function d3_geom_voronoiHalfEdgeOrder(a, b) {\n return b.angle - a.angle;\n }\n\n function d3_geom_voronoiCircle() {\n d3_geom_voronoiRedBlackNode(this);\n this.x = this.y = this.arc = this.site = this.cy = null;\n }\n\n function d3_geom_voronoiAttachCircle(arc) {\n var lArc = arc.P,\n rArc = arc.N;\n if (!lArc || !rArc) return;\n var lSite = lArc.site,\n cSite = arc.site,\n rSite = rArc.site;\n if (lSite === rSite) return;\n var bx = cSite.x,\n by = cSite.y,\n ax = lSite.x - bx,\n ay = lSite.y - by,\n cx = rSite.x - bx,\n cy = rSite.y - by;\n var d = 2 * (ax * cy - ay * cx);\n if (d >= -ε2) return;\n var ha = ax * ax + ay * ay,\n hc = cx * cx + cy * cy,\n x = (cy * ha - ay * hc) / d,\n y = (ax * hc - cx * ha) / d,\n cy = y + by;\n var circle = d3_geom_voronoiCirclePool.pop() || new d3_geom_voronoiCircle();\n circle.arc = arc;\n circle.site = cSite;\n circle.x = x + bx;\n circle.y = cy + Math.sqrt(x * x + y * y);\n circle.cy = cy;\n arc.circle = circle;\n var before = null,\n node = d3_geom_voronoiCircles._;\n\n while (node) {\n if (circle.y < node.y || circle.y === node.y && circle.x <= node.x) {\n if (node.L) node = node.L;else {\n before = node.P;\n break;\n }\n } else {\n if (node.R) node = node.R;else {\n before = node;\n break;\n }\n }\n }\n\n d3_geom_voronoiCircles.insert(before, circle);\n if (!before) d3_geom_voronoiFirstCircle = circle;\n }\n\n function d3_geom_voronoiDetachCircle(arc) {\n var circle = arc.circle;\n\n if (circle) {\n if (!circle.P) d3_geom_voronoiFirstCircle = circle.N;\n d3_geom_voronoiCircles.remove(circle);\n d3_geom_voronoiCirclePool.push(circle);\n d3_geom_voronoiRedBlackNode(circle);\n arc.circle = null;\n }\n }\n\n function d3_geom_voronoiClipEdges(extent) {\n var edges = d3_geom_voronoiEdges,\n clip = d3_geom_clipLine(extent[0][0], extent[0][1], extent[1][0], extent[1][1]),\n i = edges.length,\n e;\n\n while (i--) {\n e = edges[i];\n\n if (!d3_geom_voronoiConnectEdge(e, extent) || !clip(e) || abs(e.a.x - e.b.x) < ε && abs(e.a.y - e.b.y) < ε) {\n e.a = e.b = null;\n edges.splice(i, 1);\n }\n }\n }\n\n function d3_geom_voronoiConnectEdge(edge, extent) {\n var vb = edge.b;\n if (vb) return true;\n var va = edge.a,\n x0 = extent[0][0],\n x1 = extent[1][0],\n y0 = extent[0][1],\n y1 = extent[1][1],\n lSite = edge.l,\n rSite = edge.r,\n lx = lSite.x,\n ly = lSite.y,\n rx = rSite.x,\n ry = rSite.y,\n fx = (lx + rx) / 2,\n fy = (ly + ry) / 2,\n fm,\n fb;\n\n if (ry === ly) {\n if (fx < x0 || fx >= x1) return;\n\n if (lx > rx) {\n if (!va) va = {\n x: fx,\n y: y0\n };else if (va.y >= y1) return;\n vb = {\n x: fx,\n y: y1\n };\n } else {\n if (!va) va = {\n x: fx,\n y: y1\n };else if (va.y < y0) return;\n vb = {\n x: fx,\n y: y0\n };\n }\n } else {\n fm = (lx - rx) / (ry - ly);\n fb = fy - fm * fx;\n\n if (fm < -1 || fm > 1) {\n if (lx > rx) {\n if (!va) va = {\n x: (y0 - fb) / fm,\n y: y0\n };else if (va.y >= y1) return;\n vb = {\n x: (y1 - fb) / fm,\n y: y1\n };\n } else {\n if (!va) va = {\n x: (y1 - fb) / fm,\n y: y1\n };else if (va.y < y0) return;\n vb = {\n x: (y0 - fb) / fm,\n y: y0\n };\n }\n } else {\n if (ly < ry) {\n if (!va) va = {\n x: x0,\n y: fm * x0 + fb\n };else if (va.x >= x1) return;\n vb = {\n x: x1,\n y: fm * x1 + fb\n };\n } else {\n if (!va) va = {\n x: x1,\n y: fm * x1 + fb\n };else if (va.x < x0) return;\n vb = {\n x: x0,\n y: fm * x0 + fb\n };\n }\n }\n }\n\n edge.a = va;\n edge.b = vb;\n return true;\n }\n\n function d3_geom_voronoiEdge(lSite, rSite) {\n this.l = lSite;\n this.r = rSite;\n this.a = this.b = null;\n }\n\n function d3_geom_voronoiCreateEdge(lSite, rSite, va, vb) {\n var edge = new d3_geom_voronoiEdge(lSite, rSite);\n d3_geom_voronoiEdges.push(edge);\n if (va) d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, va);\n if (vb) d3_geom_voronoiSetEdgeEnd(edge, rSite, lSite, vb);\n d3_geom_voronoiCells[lSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, lSite, rSite));\n d3_geom_voronoiCells[rSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, rSite, lSite));\n return edge;\n }\n\n function d3_geom_voronoiCreateBorderEdge(lSite, va, vb) {\n var edge = new d3_geom_voronoiEdge(lSite, null);\n edge.a = va;\n edge.b = vb;\n d3_geom_voronoiEdges.push(edge);\n return edge;\n }\n\n function d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, vertex) {\n if (!edge.a && !edge.b) {\n edge.a = vertex;\n edge.l = lSite;\n edge.r = rSite;\n } else if (edge.l === rSite) {\n edge.b = vertex;\n } else {\n edge.a = vertex;\n }\n }\n\n function d3_geom_voronoiHalfEdge(edge, lSite, rSite) {\n var va = edge.a,\n vb = edge.b;\n this.edge = edge;\n this.site = lSite;\n this.angle = rSite ? Math.atan2(rSite.y - lSite.y, rSite.x - lSite.x) : edge.l === lSite ? Math.atan2(vb.x - va.x, va.y - vb.y) : Math.atan2(va.x - vb.x, vb.y - va.y);\n }\n\n d3_geom_voronoiHalfEdge.prototype = {\n start: function start() {\n return this.edge.l === this.site ? this.edge.a : this.edge.b;\n },\n end: function end() {\n return this.edge.l === this.site ? this.edge.b : this.edge.a;\n }\n };\n\n function d3_geom_voronoiRedBlackTree() {\n this._ = null;\n }\n\n function d3_geom_voronoiRedBlackNode(node) {\n node.U = node.C = node.L = node.R = node.P = node.N = null;\n }\n\n d3_geom_voronoiRedBlackTree.prototype = {\n insert: function insert(after, node) {\n var parent, grandpa, uncle;\n\n if (after) {\n node.P = after;\n node.N = after.N;\n if (after.N) after.N.P = node;\n after.N = node;\n\n if (after.R) {\n after = after.R;\n\n while (after.L) {\n after = after.L;\n }\n\n after.L = node;\n } else {\n after.R = node;\n }\n\n parent = after;\n } else if (this._) {\n after = d3_geom_voronoiRedBlackFirst(this._);\n node.P = null;\n node.N = after;\n after.P = after.L = node;\n parent = after;\n } else {\n node.P = node.N = null;\n this._ = node;\n parent = null;\n }\n\n node.L = node.R = null;\n node.U = parent;\n node.C = true;\n after = node;\n\n while (parent && parent.C) {\n grandpa = parent.U;\n\n if (parent === grandpa.L) {\n uncle = grandpa.R;\n\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.R) {\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\n after = parent;\n parent = after.U;\n }\n\n parent.C = false;\n grandpa.C = true;\n d3_geom_voronoiRedBlackRotateRight(this, grandpa);\n }\n } else {\n uncle = grandpa.L;\n\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.L) {\n d3_geom_voronoiRedBlackRotateRight(this, parent);\n after = parent;\n parent = after.U;\n }\n\n parent.C = false;\n grandpa.C = true;\n d3_geom_voronoiRedBlackRotateLeft(this, grandpa);\n }\n }\n\n parent = after.U;\n }\n\n this._.C = false;\n },\n remove: function remove(node) {\n if (node.N) node.N.P = node.P;\n if (node.P) node.P.N = node.N;\n node.N = node.P = null;\n var parent = node.U,\n sibling,\n left = node.L,\n right = node.R,\n next,\n red;\n if (!left) next = right;else if (!right) next = left;else next = d3_geom_voronoiRedBlackFirst(right);\n\n if (parent) {\n if (parent.L === node) parent.L = next;else parent.R = next;\n } else {\n this._ = next;\n }\n\n if (left && right) {\n red = next.C;\n next.C = node.C;\n next.L = left;\n left.U = next;\n\n if (next !== right) {\n parent = next.U;\n next.U = node.U;\n node = next.R;\n parent.L = node;\n next.R = right;\n right.U = next;\n } else {\n next.U = parent;\n parent = next;\n node = next.R;\n }\n } else {\n red = node.C;\n node = next;\n }\n\n if (node) node.U = parent;\n if (red) return;\n\n if (node && node.C) {\n node.C = false;\n return;\n }\n\n do {\n if (node === this._) break;\n\n if (node === parent.L) {\n sibling = parent.R;\n\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\n sibling = parent.R;\n }\n\n if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n if (!sibling.R || !sibling.R.C) {\n sibling.L.C = false;\n sibling.C = true;\n d3_geom_voronoiRedBlackRotateRight(this, sibling);\n sibling = parent.R;\n }\n\n sibling.C = parent.C;\n parent.C = sibling.R.C = false;\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\n node = this._;\n break;\n }\n } else {\n sibling = parent.L;\n\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n d3_geom_voronoiRedBlackRotateRight(this, parent);\n sibling = parent.L;\n }\n\n if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n if (!sibling.L || !sibling.L.C) {\n sibling.R.C = false;\n sibling.C = true;\n d3_geom_voronoiRedBlackRotateLeft(this, sibling);\n sibling = parent.L;\n }\n\n sibling.C = parent.C;\n parent.C = sibling.L.C = false;\n d3_geom_voronoiRedBlackRotateRight(this, parent);\n node = this._;\n break;\n }\n }\n\n sibling.C = true;\n node = parent;\n parent = parent.U;\n } while (!node.C);\n\n if (node) node.C = false;\n }\n };\n\n function d3_geom_voronoiRedBlackRotateLeft(tree, node) {\n var p = node,\n q = node.R,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.R = q.L;\n if (p.R) p.R.U = p;\n q.L = p;\n }\n\n function d3_geom_voronoiRedBlackRotateRight(tree, node) {\n var p = node,\n q = node.L,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.L = q.R;\n if (p.L) p.L.U = p;\n q.R = p;\n }\n\n function d3_geom_voronoiRedBlackFirst(node) {\n while (node.L) {\n node = node.L;\n }\n\n return node;\n }\n\n function d3_geom_voronoi(sites, bbox) {\n var site = sites.sort(d3_geom_voronoiVertexOrder).pop(),\n x0,\n y0,\n circle;\n d3_geom_voronoiEdges = [];\n d3_geom_voronoiCells = new Array(sites.length);\n d3_geom_voronoiBeaches = new d3_geom_voronoiRedBlackTree();\n d3_geom_voronoiCircles = new d3_geom_voronoiRedBlackTree();\n\n while (true) {\n circle = d3_geom_voronoiFirstCircle;\n\n if (site && (!circle || site.y < circle.y || site.y === circle.y && site.x < circle.x)) {\n if (site.x !== x0 || site.y !== y0) {\n d3_geom_voronoiCells[site.i] = new d3_geom_voronoiCell(site);\n d3_geom_voronoiAddBeach(site);\n x0 = site.x, y0 = site.y;\n }\n\n site = sites.pop();\n } else if (circle) {\n d3_geom_voronoiRemoveBeach(circle.arc);\n } else {\n break;\n }\n }\n\n if (bbox) d3_geom_voronoiClipEdges(bbox), d3_geom_voronoiCloseCells(bbox);\n var diagram = {\n cells: d3_geom_voronoiCells,\n edges: d3_geom_voronoiEdges\n };\n d3_geom_voronoiBeaches = d3_geom_voronoiCircles = d3_geom_voronoiEdges = d3_geom_voronoiCells = null;\n return diagram;\n }\n\n function d3_geom_voronoiVertexOrder(a, b) {\n return b.y - a.y || b.x - a.x;\n }\n\n d3.geom.voronoi = function (points) {\n var x = d3_geom_pointX,\n y = d3_geom_pointY,\n fx = x,\n fy = y,\n clipExtent = d3_geom_voronoiClipExtent;\n if (points) return voronoi(points);\n\n function voronoi(data) {\n var polygons = new Array(data.length),\n x0 = clipExtent[0][0],\n y0 = clipExtent[0][1],\n x1 = clipExtent[1][0],\n y1 = clipExtent[1][1];\n d3_geom_voronoi(sites(data), clipExtent).cells.forEach(function (cell, i) {\n var edges = cell.edges,\n site = cell.site,\n polygon = polygons[i] = edges.length ? edges.map(function (e) {\n var s = e.start();\n return [s.x, s.y];\n }) : site.x >= x0 && site.x <= x1 && site.y >= y0 && site.y <= y1 ? [[x0, y1], [x1, y1], [x1, y0], [x0, y0]] : [];\n polygon.point = data[i];\n });\n return polygons;\n }\n\n function sites(data) {\n return data.map(function (d, i) {\n return {\n x: Math.round(fx(d, i) / ε) * ε,\n y: Math.round(fy(d, i) / ε) * ε,\n i: i\n };\n });\n }\n\n voronoi.links = function (data) {\n return d3_geom_voronoi(sites(data)).edges.filter(function (edge) {\n return edge.l && edge.r;\n }).map(function (edge) {\n return {\n source: data[edge.l.i],\n target: data[edge.r.i]\n };\n });\n };\n\n voronoi.triangles = function (data) {\n var triangles = [];\n d3_geom_voronoi(sites(data)).cells.forEach(function (cell, i) {\n var site = cell.site,\n edges = cell.edges.sort(d3_geom_voronoiHalfEdgeOrder),\n j = -1,\n m = edges.length,\n e0,\n s0,\n e1 = edges[m - 1].edge,\n s1 = e1.l === site ? e1.r : e1.l;\n\n while (++j < m) {\n e0 = e1;\n s0 = s1;\n e1 = edges[j].edge;\n s1 = e1.l === site ? e1.r : e1.l;\n\n if (i < s0.i && i < s1.i && d3_geom_voronoiTriangleArea(site, s0, s1) < 0) {\n triangles.push([data[i], data[s0.i], data[s1.i]]);\n }\n }\n });\n return triangles;\n };\n\n voronoi.x = function (_) {\n return arguments.length ? (fx = d3_functor(x = _), voronoi) : x;\n };\n\n voronoi.y = function (_) {\n return arguments.length ? (fy = d3_functor(y = _), voronoi) : y;\n };\n\n voronoi.clipExtent = function (_) {\n if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent;\n clipExtent = _ == null ? d3_geom_voronoiClipExtent : _;\n return voronoi;\n };\n\n voronoi.size = function (_) {\n if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent && clipExtent[1];\n return voronoi.clipExtent(_ && [[0, 0], _]);\n };\n\n return voronoi;\n };\n\n var d3_geom_voronoiClipExtent = [[-1e6, -1e6], [1e6, 1e6]];\n\n function d3_geom_voronoiTriangleArea(a, b, c) {\n return (a.x - c.x) * (b.y - a.y) - (a.x - b.x) * (c.y - a.y);\n }\n\n d3.geom.delaunay = function (vertices) {\n return d3.geom.voronoi().triangles(vertices);\n };\n\n d3.geom.quadtree = function (points, x1, y1, x2, y2) {\n var x = d3_geom_pointX,\n y = d3_geom_pointY,\n compat;\n\n if (compat = arguments.length) {\n x = d3_geom_quadtreeCompatX;\n y = d3_geom_quadtreeCompatY;\n\n if (compat === 3) {\n y2 = y1;\n x2 = x1;\n y1 = x1 = 0;\n }\n\n return quadtree(points);\n }\n\n function quadtree(data) {\n var d,\n fx = d3_functor(x),\n fy = d3_functor(y),\n xs,\n ys,\n i,\n n,\n x1_,\n y1_,\n x2_,\n y2_;\n\n if (x1 != null) {\n x1_ = x1, y1_ = y1, x2_ = x2, y2_ = y2;\n } else {\n x2_ = y2_ = -(x1_ = y1_ = Infinity);\n xs = [], ys = [];\n n = data.length;\n if (compat) for (i = 0; i < n; ++i) {\n d = data[i];\n if (d.x < x1_) x1_ = d.x;\n if (d.y < y1_) y1_ = d.y;\n if (d.x > x2_) x2_ = d.x;\n if (d.y > y2_) y2_ = d.y;\n xs.push(d.x);\n ys.push(d.y);\n } else for (i = 0; i < n; ++i) {\n var x_ = +fx(d = data[i], i),\n y_ = +fy(d, i);\n if (x_ < x1_) x1_ = x_;\n if (y_ < y1_) y1_ = y_;\n if (x_ > x2_) x2_ = x_;\n if (y_ > y2_) y2_ = y_;\n xs.push(x_);\n ys.push(y_);\n }\n }\n\n var dx = x2_ - x1_,\n dy = y2_ - y1_;\n if (dx > dy) y2_ = y1_ + dx;else x2_ = x1_ + dy;\n\n function insert(n, d, x, y, x1, y1, x2, y2) {\n if (isNaN(x) || isNaN(y)) return;\n\n if (n.leaf) {\n var nx = n.x,\n ny = n.y;\n\n if (nx != null) {\n if (abs(nx - x) + abs(ny - y) < .01) {\n insertChild(n, d, x, y, x1, y1, x2, y2);\n } else {\n var nPoint = n.point;\n n.x = n.y = n.point = null;\n insertChild(n, nPoint, nx, ny, x1, y1, x2, y2);\n insertChild(n, d, x, y, x1, y1, x2, y2);\n }\n } else {\n n.x = x, n.y = y, n.point = d;\n }\n } else {\n insertChild(n, d, x, y, x1, y1, x2, y2);\n }\n }\n\n function insertChild(n, d, x, y, x1, y1, x2, y2) {\n var xm = (x1 + x2) * .5,\n ym = (y1 + y2) * .5,\n right = x >= xm,\n below = y >= ym,\n i = below << 1 | right;\n n.leaf = false;\n n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode());\n if (right) x1 = xm;else x2 = xm;\n if (below) y1 = ym;else y2 = ym;\n insert(n, d, x, y, x1, y1, x2, y2);\n }\n\n var root = d3_geom_quadtreeNode();\n\n root.add = function (d) {\n insert(root, d, +fx(d, ++i), +fy(d, i), x1_, y1_, x2_, y2_);\n };\n\n root.visit = function (f) {\n d3_geom_quadtreeVisit(f, root, x1_, y1_, x2_, y2_);\n };\n\n root.find = function (point) {\n return d3_geom_quadtreeFind(root, point[0], point[1], x1_, y1_, x2_, y2_);\n };\n\n i = -1;\n\n if (x1 == null) {\n while (++i < n) {\n insert(root, data[i], xs[i], ys[i], x1_, y1_, x2_, y2_);\n }\n\n --i;\n } else data.forEach(root.add);\n\n xs = ys = data = d = null;\n return root;\n }\n\n quadtree.x = function (_) {\n return arguments.length ? (x = _, quadtree) : x;\n };\n\n quadtree.y = function (_) {\n return arguments.length ? (y = _, quadtree) : y;\n };\n\n quadtree.extent = function (_) {\n if (!arguments.length) return x1 == null ? null : [[x1, y1], [x2, y2]];\n if (_ == null) x1 = y1 = x2 = y2 = null;else x1 = +_[0][0], y1 = +_[0][1], x2 = +_[1][0], y2 = +_[1][1];\n return quadtree;\n };\n\n quadtree.size = function (_) {\n if (!arguments.length) return x1 == null ? null : [x2 - x1, y2 - y1];\n if (_ == null) x1 = y1 = x2 = y2 = null;else x1 = y1 = 0, x2 = +_[0], y2 = +_[1];\n return quadtree;\n };\n\n return quadtree;\n };\n\n function d3_geom_quadtreeCompatX(d) {\n return d.x;\n }\n\n function d3_geom_quadtreeCompatY(d) {\n return d.y;\n }\n\n function d3_geom_quadtreeNode() {\n return {\n leaf: true,\n nodes: [],\n point: null,\n x: null,\n y: null\n };\n }\n\n function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) {\n if (!f(node, x1, y1, x2, y2)) {\n var sx = (x1 + x2) * .5,\n sy = (y1 + y2) * .5,\n children = node.nodes;\n if (children[0]) d3_geom_quadtreeVisit(f, children[0], x1, y1, sx, sy);\n if (children[1]) d3_geom_quadtreeVisit(f, children[1], sx, y1, x2, sy);\n if (children[2]) d3_geom_quadtreeVisit(f, children[2], x1, sy, sx, y2);\n if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2);\n }\n }\n\n function d3_geom_quadtreeFind(root, x, y, x0, y0, x3, y3) {\n var minDistance2 = Infinity,\n closestPoint;\n\n (function find(node, x1, y1, x2, y2) {\n if (x1 > x3 || y1 > y3 || x2 < x0 || y2 < y0) return;\n\n if (point = node.point) {\n var point,\n dx = x - node.x,\n dy = y - node.y,\n distance2 = dx * dx + dy * dy;\n\n if (distance2 < minDistance2) {\n var distance = Math.sqrt(minDistance2 = distance2);\n x0 = x - distance, y0 = y - distance;\n x3 = x + distance, y3 = y + distance;\n closestPoint = point;\n }\n }\n\n var children = node.nodes,\n xm = (x1 + x2) * .5,\n ym = (y1 + y2) * .5,\n right = x >= xm,\n below = y >= ym;\n\n for (var i = below << 1 | right, j = i + 4; i < j; ++i) {\n if (node = children[i & 3]) switch (i & 3) {\n case 0:\n find(node, x1, y1, xm, ym);\n break;\n\n case 1:\n find(node, xm, y1, x2, ym);\n break;\n\n case 2:\n find(node, x1, ym, xm, y2);\n break;\n\n case 3:\n find(node, xm, ym, x2, y2);\n break;\n }\n }\n })(root, x0, y0, x3, y3);\n\n return closestPoint;\n }\n\n d3.interpolateRgb = d3_interpolateRgb;\n\n function d3_interpolateRgb(a, b) {\n a = d3.rgb(a);\n b = d3.rgb(b);\n var ar = a.r,\n ag = a.g,\n ab = a.b,\n br = b.r - ar,\n bg = b.g - ag,\n bb = b.b - ab;\n return function (t) {\n return \"#\" + d3_rgb_hex(Math.round(ar + br * t)) + d3_rgb_hex(Math.round(ag + bg * t)) + d3_rgb_hex(Math.round(ab + bb * t));\n };\n }\n\n d3.interpolateObject = d3_interpolateObject;\n\n function d3_interpolateObject(a, b) {\n var i = {},\n c = {},\n k;\n\n for (k in a) {\n if (k in b) {\n i[k] = d3_interpolate(a[k], b[k]);\n } else {\n c[k] = a[k];\n }\n }\n\n for (k in b) {\n if (!(k in a)) {\n c[k] = b[k];\n }\n }\n\n return function (t) {\n for (k in i) {\n c[k] = i[k](t);\n }\n\n return c;\n };\n }\n\n d3.interpolateNumber = d3_interpolateNumber;\n\n function d3_interpolateNumber(a, b) {\n a = +a, b = +b;\n return function (t) {\n return a * (1 - t) + b * t;\n };\n }\n\n d3.interpolateString = d3_interpolateString;\n\n function d3_interpolateString(a, b) {\n var bi = d3_interpolate_numberA.lastIndex = d3_interpolate_numberB.lastIndex = 0,\n am,\n bm,\n bs,\n i = -1,\n s = [],\n q = [];\n a = a + \"\", b = b + \"\";\n\n while ((am = d3_interpolate_numberA.exec(a)) && (bm = d3_interpolate_numberB.exec(b))) {\n if ((bs = bm.index) > bi) {\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs;else s[++i] = bs;\n }\n\n if ((am = am[0]) === (bm = bm[0])) {\n if (s[i]) s[i] += bm;else s[++i] = bm;\n } else {\n s[++i] = null;\n q.push({\n i: i,\n x: d3_interpolateNumber(am, bm)\n });\n }\n\n bi = d3_interpolate_numberB.lastIndex;\n }\n\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs;else s[++i] = bs;\n }\n\n return s.length < 2 ? q[0] ? (b = q[0].x, function (t) {\n return b(t) + \"\";\n }) : function () {\n return b;\n } : (b = q.length, function (t) {\n for (var i = 0, o; i < b; ++i) {\n s[(o = q[i]).i] = o.x(t);\n }\n\n return s.join(\"\");\n });\n }\n\n var d3_interpolate_numberA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n d3_interpolate_numberB = new RegExp(d3_interpolate_numberA.source, \"g\");\n d3.interpolate = d3_interpolate;\n\n function d3_interpolate(a, b) {\n var i = d3.interpolators.length,\n f;\n\n while (--i >= 0 && !(f = d3.interpolators[i](a, b))) {\n ;\n }\n\n return f;\n }\n\n d3.interpolators = [function (a, b) {\n var t = _typeof(b);\n\n return (t === \"string\" ? d3_rgb_names.has(b.toLowerCase()) || /^(#|rgb\\(|hsl\\()/i.test(b) ? d3_interpolateRgb : d3_interpolateString : b instanceof d3_color ? d3_interpolateRgb : Array.isArray(b) ? d3_interpolateArray : t === \"object\" && isNaN(b) ? d3_interpolateObject : d3_interpolateNumber)(a, b);\n }];\n d3.interpolateArray = d3_interpolateArray;\n\n function d3_interpolateArray(a, b) {\n var x = [],\n c = [],\n na = a.length,\n nb = b.length,\n n0 = Math.min(a.length, b.length),\n i;\n\n for (i = 0; i < n0; ++i) {\n x.push(d3_interpolate(a[i], b[i]));\n }\n\n for (; i < na; ++i) {\n c[i] = a[i];\n }\n\n for (; i < nb; ++i) {\n c[i] = b[i];\n }\n\n return function (t) {\n for (i = 0; i < n0; ++i) {\n c[i] = x[i](t);\n }\n\n return c;\n };\n }\n\n var d3_ease_default = function d3_ease_default() {\n return d3_identity;\n };\n\n var d3_ease = d3.map({\n linear: d3_ease_default,\n poly: d3_ease_poly,\n quad: function quad() {\n return d3_ease_quad;\n },\n cubic: function cubic() {\n return d3_ease_cubic;\n },\n sin: function sin() {\n return d3_ease_sin;\n },\n exp: function exp() {\n return d3_ease_exp;\n },\n circle: function circle() {\n return d3_ease_circle;\n },\n elastic: d3_ease_elastic,\n back: d3_ease_back,\n bounce: function bounce() {\n return d3_ease_bounce;\n }\n });\n var d3_ease_mode = d3.map({\n \"in\": d3_identity,\n out: d3_ease_reverse,\n \"in-out\": d3_ease_reflect,\n \"out-in\": function outIn(f) {\n return d3_ease_reflect(d3_ease_reverse(f));\n }\n });\n\n d3.ease = function (name) {\n var i = name.indexOf(\"-\"),\n t = i >= 0 ? name.slice(0, i) : name,\n m = i >= 0 ? name.slice(i + 1) : \"in\";\n t = d3_ease.get(t) || d3_ease_default;\n m = d3_ease_mode.get(m) || d3_identity;\n return d3_ease_clamp(m(t.apply(null, d3_arraySlice.call(arguments, 1))));\n };\n\n function d3_ease_clamp(f) {\n return function (t) {\n return t <= 0 ? 0 : t >= 1 ? 1 : f(t);\n };\n }\n\n function d3_ease_reverse(f) {\n return function (t) {\n return 1 - f(1 - t);\n };\n }\n\n function d3_ease_reflect(f) {\n return function (t) {\n return .5 * (t < .5 ? f(2 * t) : 2 - f(2 - 2 * t));\n };\n }\n\n function d3_ease_quad(t) {\n return t * t;\n }\n\n function d3_ease_cubic(t) {\n return t * t * t;\n }\n\n function d3_ease_cubicInOut(t) {\n if (t <= 0) return 0;\n if (t >= 1) return 1;\n var t2 = t * t,\n t3 = t2 * t;\n return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75);\n }\n\n function d3_ease_poly(e) {\n return function (t) {\n return Math.pow(t, e);\n };\n }\n\n function d3_ease_sin(t) {\n return 1 - Math.cos(t * halfπ);\n }\n\n function d3_ease_exp(t) {\n return Math.pow(2, 10 * (t - 1));\n }\n\n function d3_ease_circle(t) {\n return 1 - Math.sqrt(1 - t * t);\n }\n\n function d3_ease_elastic(a, p) {\n var s;\n if (arguments.length < 2) p = .45;\n if (arguments.length) s = p / τ * Math.asin(1 / a);else a = 1, s = p / 4;\n return function (t) {\n return 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * τ / p);\n };\n }\n\n function d3_ease_back(s) {\n if (!s) s = 1.70158;\n return function (t) {\n return t * t * ((s + 1) * t - s);\n };\n }\n\n function d3_ease_bounce(t) {\n return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;\n }\n\n d3.interpolateHcl = d3_interpolateHcl;\n\n function d3_interpolateHcl(a, b) {\n a = d3.hcl(a);\n b = d3.hcl(b);\n var ah = a.h,\n ac = a.c,\n al = a.l,\n bh = b.h - ah,\n bc = b.c - ac,\n bl = b.l - al;\n if (isNaN(bc)) bc = 0, ac = isNaN(ac) ? b.c : ac;\n if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah;else if (bh > 180) bh -= 360;else if (bh < -180) bh += 360;\n return function (t) {\n return d3_hcl_lab(ah + bh * t, ac + bc * t, al + bl * t) + \"\";\n };\n }\n\n d3.interpolateHsl = d3_interpolateHsl;\n\n function d3_interpolateHsl(a, b) {\n a = d3.hsl(a);\n b = d3.hsl(b);\n var ah = a.h,\n as = a.s,\n al = a.l,\n bh = b.h - ah,\n bs = b.s - as,\n bl = b.l - al;\n if (isNaN(bs)) bs = 0, as = isNaN(as) ? b.s : as;\n if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah;else if (bh > 180) bh -= 360;else if (bh < -180) bh += 360;\n return function (t) {\n return d3_hsl_rgb(ah + bh * t, as + bs * t, al + bl * t) + \"\";\n };\n }\n\n d3.interpolateLab = d3_interpolateLab;\n\n function d3_interpolateLab(a, b) {\n a = d3.lab(a);\n b = d3.lab(b);\n var al = a.l,\n aa = a.a,\n ab = a.b,\n bl = b.l - al,\n ba = b.a - aa,\n bb = b.b - ab;\n return function (t) {\n return d3_lab_rgb(al + bl * t, aa + ba * t, ab + bb * t) + \"\";\n };\n }\n\n d3.interpolateRound = d3_interpolateRound;\n\n function d3_interpolateRound(a, b) {\n b -= a;\n return function (t) {\n return Math.round(a + b * t);\n };\n }\n\n d3.transform = function (string) {\n var g = d3_document.createElementNS(d3.ns.prefix.svg, \"g\");\n return (d3.transform = function (string) {\n if (string != null) {\n g.setAttribute(\"transform\", string);\n var t = g.transform.baseVal.consolidate();\n }\n\n return new d3_transform(t ? t.matrix : d3_transformIdentity);\n })(string);\n };\n\n function d3_transform(m) {\n var r0 = [m.a, m.b],\n r1 = [m.c, m.d],\n kx = d3_transformNormalize(r0),\n kz = d3_transformDot(r0, r1),\n ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0;\n\n if (r0[0] * r1[1] < r1[0] * r0[1]) {\n r0[0] *= -1;\n r0[1] *= -1;\n kx *= -1;\n kz *= -1;\n }\n\n this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_degrees;\n this.translate = [m.e, m.f];\n this.scale = [kx, ky];\n this.skew = ky ? Math.atan2(kz, ky) * d3_degrees : 0;\n }\n\n d3_transform.prototype.toString = function () {\n return \"translate(\" + this.translate + \")rotate(\" + this.rotate + \")skewX(\" + this.skew + \")scale(\" + this.scale + \")\";\n };\n\n function d3_transformDot(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n }\n\n function d3_transformNormalize(a) {\n var k = Math.sqrt(d3_transformDot(a, a));\n\n if (k) {\n a[0] /= k;\n a[1] /= k;\n }\n\n return k;\n }\n\n function d3_transformCombine(a, b, k) {\n a[0] += k * b[0];\n a[1] += k * b[1];\n return a;\n }\n\n var d3_transformIdentity = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: 0,\n f: 0\n };\n d3.interpolateTransform = d3_interpolateTransform;\n\n function d3_interpolateTransformPop(s) {\n return s.length ? s.pop() + \",\" : \"\";\n }\n\n function d3_interpolateTranslate(ta, tb, s, q) {\n if (ta[0] !== tb[0] || ta[1] !== tb[1]) {\n var i = s.push(\"translate(\", null, \",\", null, \")\");\n q.push({\n i: i - 4,\n x: d3_interpolateNumber(ta[0], tb[0])\n }, {\n i: i - 2,\n x: d3_interpolateNumber(ta[1], tb[1])\n });\n } else if (tb[0] || tb[1]) {\n s.push(\"translate(\" + tb + \")\");\n }\n }\n\n function d3_interpolateRotate(ra, rb, s, q) {\n if (ra !== rb) {\n if (ra - rb > 180) rb += 360;else if (rb - ra > 180) ra += 360;\n q.push({\n i: s.push(d3_interpolateTransformPop(s) + \"rotate(\", null, \")\") - 2,\n x: d3_interpolateNumber(ra, rb)\n });\n } else if (rb) {\n s.push(d3_interpolateTransformPop(s) + \"rotate(\" + rb + \")\");\n }\n }\n\n function d3_interpolateSkew(wa, wb, s, q) {\n if (wa !== wb) {\n q.push({\n i: s.push(d3_interpolateTransformPop(s) + \"skewX(\", null, \")\") - 2,\n x: d3_interpolateNumber(wa, wb)\n });\n } else if (wb) {\n s.push(d3_interpolateTransformPop(s) + \"skewX(\" + wb + \")\");\n }\n }\n\n function d3_interpolateScale(ka, kb, s, q) {\n if (ka[0] !== kb[0] || ka[1] !== kb[1]) {\n var i = s.push(d3_interpolateTransformPop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({\n i: i - 4,\n x: d3_interpolateNumber(ka[0], kb[0])\n }, {\n i: i - 2,\n x: d3_interpolateNumber(ka[1], kb[1])\n });\n } else if (kb[0] !== 1 || kb[1] !== 1) {\n s.push(d3_interpolateTransformPop(s) + \"scale(\" + kb + \")\");\n }\n }\n\n function d3_interpolateTransform(a, b) {\n var s = [],\n q = [];\n a = d3.transform(a), b = d3.transform(b);\n d3_interpolateTranslate(a.translate, b.translate, s, q);\n d3_interpolateRotate(a.rotate, b.rotate, s, q);\n d3_interpolateSkew(a.skew, b.skew, s, q);\n d3_interpolateScale(a.scale, b.scale, s, q);\n a = b = null;\n return function (t) {\n var i = -1,\n n = q.length,\n o;\n\n while (++i < n) {\n s[(o = q[i]).i] = o.x(t);\n }\n\n return s.join(\"\");\n };\n }\n\n function d3_uninterpolateNumber(a, b) {\n b = (b -= a = +a) || 1 / b;\n return function (x) {\n return (x - a) / b;\n };\n }\n\n function d3_uninterpolateClamp(a, b) {\n b = (b -= a = +a) || 1 / b;\n return function (x) {\n return Math.max(0, Math.min(1, (x - a) / b));\n };\n }\n\n d3.layout = {};\n\n d3.layout.bundle = function () {\n return function (links) {\n var paths = [],\n i = -1,\n n = links.length;\n\n while (++i < n) {\n paths.push(d3_layout_bundlePath(links[i]));\n }\n\n return paths;\n };\n };\n\n function d3_layout_bundlePath(link) {\n var start = link.source,\n end = link.target,\n lca = d3_layout_bundleLeastCommonAncestor(start, end),\n points = [start];\n\n while (start !== lca) {\n start = start.parent;\n points.push(start);\n }\n\n var k = points.length;\n\n while (end !== lca) {\n points.splice(k, 0, end);\n end = end.parent;\n }\n\n return points;\n }\n\n function d3_layout_bundleAncestors(node) {\n var ancestors = [],\n parent = node.parent;\n\n while (parent != null) {\n ancestors.push(node);\n node = parent;\n parent = parent.parent;\n }\n\n ancestors.push(node);\n return ancestors;\n }\n\n function d3_layout_bundleLeastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = d3_layout_bundleAncestors(a),\n bNodes = d3_layout_bundleAncestors(b),\n aNode = aNodes.pop(),\n bNode = bNodes.pop(),\n sharedNode = null;\n\n while (aNode === bNode) {\n sharedNode = aNode;\n aNode = aNodes.pop();\n bNode = bNodes.pop();\n }\n\n return sharedNode;\n }\n\n d3.layout.chord = function () {\n var chord = {},\n chords,\n groups,\n matrix,\n n,\n padding = 0,\n sortGroups,\n sortSubgroups,\n sortChords;\n\n function relayout() {\n var subgroups = {},\n groupSums = [],\n groupIndex = d3.range(n),\n subgroupIndex = [],\n k,\n x,\n x0,\n i,\n j;\n chords = [];\n groups = [];\n k = 0, i = -1;\n\n while (++i < n) {\n x = 0, j = -1;\n\n while (++j < n) {\n x += matrix[i][j];\n }\n\n groupSums.push(x);\n subgroupIndex.push(d3.range(n));\n k += x;\n }\n\n if (sortGroups) {\n groupIndex.sort(function (a, b) {\n return sortGroups(groupSums[a], groupSums[b]);\n });\n }\n\n if (sortSubgroups) {\n subgroupIndex.forEach(function (d, i) {\n d.sort(function (a, b) {\n return sortSubgroups(matrix[i][a], matrix[i][b]);\n });\n });\n }\n\n k = (τ - padding * n) / k;\n x = 0, i = -1;\n\n while (++i < n) {\n x0 = x, j = -1;\n\n while (++j < n) {\n var di = groupIndex[i],\n dj = subgroupIndex[di][j],\n v = matrix[di][dj],\n a0 = x,\n a1 = x += v * k;\n subgroups[di + \"-\" + dj] = {\n index: di,\n subindex: dj,\n startAngle: a0,\n endAngle: a1,\n value: v\n };\n }\n\n groups[di] = {\n index: di,\n startAngle: x0,\n endAngle: x,\n value: groupSums[di]\n };\n x += padding;\n }\n\n i = -1;\n\n while (++i < n) {\n j = i - 1;\n\n while (++j < n) {\n var source = subgroups[i + \"-\" + j],\n target = subgroups[j + \"-\" + i];\n\n if (source.value || target.value) {\n chords.push(source.value < target.value ? {\n source: target,\n target: source\n } : {\n source: source,\n target: target\n });\n }\n }\n }\n\n if (sortChords) resort();\n }\n\n function resort() {\n chords.sort(function (a, b) {\n return sortChords((a.source.value + a.target.value) / 2, (b.source.value + b.target.value) / 2);\n });\n }\n\n chord.matrix = function (x) {\n if (!arguments.length) return matrix;\n n = (matrix = x) && matrix.length;\n chords = groups = null;\n return chord;\n };\n\n chord.padding = function (x) {\n if (!arguments.length) return padding;\n padding = x;\n chords = groups = null;\n return chord;\n };\n\n chord.sortGroups = function (x) {\n if (!arguments.length) return sortGroups;\n sortGroups = x;\n chords = groups = null;\n return chord;\n };\n\n chord.sortSubgroups = function (x) {\n if (!arguments.length) return sortSubgroups;\n sortSubgroups = x;\n chords = null;\n return chord;\n };\n\n chord.sortChords = function (x) {\n if (!arguments.length) return sortChords;\n sortChords = x;\n if (chords) resort();\n return chord;\n };\n\n chord.chords = function () {\n if (!chords) relayout();\n return chords;\n };\n\n chord.groups = function () {\n if (!groups) relayout();\n return groups;\n };\n\n return chord;\n };\n\n d3.layout.force = function () {\n var force = {},\n event = d3.dispatch(\"start\", \"tick\", \"end\"),\n timer,\n size = [1, 1],\n drag,\n alpha,\n friction = .9,\n linkDistance = d3_layout_forceLinkDistance,\n linkStrength = d3_layout_forceLinkStrength,\n charge = -30,\n chargeDistance2 = d3_layout_forceChargeDistance2,\n gravity = .1,\n theta2 = .64,\n nodes = [],\n links = [],\n distances,\n strengths,\n charges;\n\n function repulse(node) {\n return function (quad, x1, _, x2) {\n if (quad.point !== node) {\n var dx = quad.cx - node.x,\n dy = quad.cy - node.y,\n dw = x2 - x1,\n dn = dx * dx + dy * dy;\n\n if (dw * dw / theta2 < dn) {\n if (dn < chargeDistance2) {\n var k = quad.charge / dn;\n node.px -= dx * k;\n node.py -= dy * k;\n }\n\n return true;\n }\n\n if (quad.point && dn && dn < chargeDistance2) {\n var k = quad.pointCharge / dn;\n node.px -= dx * k;\n node.py -= dy * k;\n }\n }\n\n return !quad.charge;\n };\n }\n\n force.tick = function () {\n if ((alpha *= .99) < .005) {\n timer = null;\n event.end({\n type: \"end\",\n alpha: alpha = 0\n });\n return true;\n }\n\n var n = nodes.length,\n m = links.length,\n q,\n i,\n o,\n s,\n t,\n l,\n k,\n x,\n y;\n\n for (i = 0; i < m; ++i) {\n o = links[i];\n s = o.source;\n t = o.target;\n x = t.x - s.x;\n y = t.y - s.y;\n\n if (l = x * x + y * y) {\n l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l;\n x *= l;\n y *= l;\n t.x -= x * (k = s.weight + t.weight ? s.weight / (s.weight + t.weight) : .5);\n t.y -= y * k;\n s.x += x * (k = 1 - k);\n s.y += y * k;\n }\n }\n\n if (k = alpha * gravity) {\n x = size[0] / 2;\n y = size[1] / 2;\n i = -1;\n if (k) while (++i < n) {\n o = nodes[i];\n o.x += (x - o.x) * k;\n o.y += (y - o.y) * k;\n }\n }\n\n if (charge) {\n d3_layout_forceAccumulate(q = d3.geom.quadtree(nodes), alpha, charges);\n i = -1;\n\n while (++i < n) {\n if (!(o = nodes[i]).fixed) {\n q.visit(repulse(o));\n }\n }\n }\n\n i = -1;\n\n while (++i < n) {\n o = nodes[i];\n\n if (o.fixed) {\n o.x = o.px;\n o.y = o.py;\n } else {\n o.x -= (o.px - (o.px = o.x)) * friction;\n o.y -= (o.py - (o.py = o.y)) * friction;\n }\n }\n\n event.tick({\n type: \"tick\",\n alpha: alpha\n });\n };\n\n force.nodes = function (x) {\n if (!arguments.length) return nodes;\n nodes = x;\n return force;\n };\n\n force.links = function (x) {\n if (!arguments.length) return links;\n links = x;\n return force;\n };\n\n force.size = function (x) {\n if (!arguments.length) return size;\n size = x;\n return force;\n };\n\n force.linkDistance = function (x) {\n if (!arguments.length) return linkDistance;\n linkDistance = typeof x === \"function\" ? x : +x;\n return force;\n };\n\n force.distance = force.linkDistance;\n\n force.linkStrength = function (x) {\n if (!arguments.length) return linkStrength;\n linkStrength = typeof x === \"function\" ? x : +x;\n return force;\n };\n\n force.friction = function (x) {\n if (!arguments.length) return friction;\n friction = +x;\n return force;\n };\n\n force.charge = function (x) {\n if (!arguments.length) return charge;\n charge = typeof x === \"function\" ? x : +x;\n return force;\n };\n\n force.chargeDistance = function (x) {\n if (!arguments.length) return Math.sqrt(chargeDistance2);\n chargeDistance2 = x * x;\n return force;\n };\n\n force.gravity = function (x) {\n if (!arguments.length) return gravity;\n gravity = +x;\n return force;\n };\n\n force.theta = function (x) {\n if (!arguments.length) return Math.sqrt(theta2);\n theta2 = x * x;\n return force;\n };\n\n force.alpha = function (x) {\n if (!arguments.length) return alpha;\n x = +x;\n\n if (alpha) {\n if (x > 0) {\n alpha = x;\n } else {\n timer.c = null, timer.t = NaN, timer = null;\n event.end({\n type: \"end\",\n alpha: alpha = 0\n });\n }\n } else if (x > 0) {\n event.start({\n type: \"start\",\n alpha: alpha = x\n });\n timer = d3_timer(force.tick);\n }\n\n return force;\n };\n\n force.start = function () {\n var i,\n n = nodes.length,\n m = links.length,\n w = size[0],\n h = size[1],\n neighbors,\n o;\n\n for (i = 0; i < n; ++i) {\n (o = nodes[i]).index = i;\n o.weight = 0;\n }\n\n for (i = 0; i < m; ++i) {\n o = links[i];\n if (typeof o.source == \"number\") o.source = nodes[o.source];\n if (typeof o.target == \"number\") o.target = nodes[o.target];\n ++o.source.weight;\n ++o.target.weight;\n }\n\n for (i = 0; i < n; ++i) {\n o = nodes[i];\n if (isNaN(o.x)) o.x = position(\"x\", w);\n if (isNaN(o.y)) o.y = position(\"y\", h);\n if (isNaN(o.px)) o.px = o.x;\n if (isNaN(o.py)) o.py = o.y;\n }\n\n distances = [];\n if (typeof linkDistance === \"function\") for (i = 0; i < m; ++i) {\n distances[i] = +linkDistance.call(this, links[i], i);\n } else for (i = 0; i < m; ++i) {\n distances[i] = linkDistance;\n }\n strengths = [];\n if (typeof linkStrength === \"function\") for (i = 0; i < m; ++i) {\n strengths[i] = +linkStrength.call(this, links[i], i);\n } else for (i = 0; i < m; ++i) {\n strengths[i] = linkStrength;\n }\n charges = [];\n if (typeof charge === \"function\") for (i = 0; i < n; ++i) {\n charges[i] = +charge.call(this, nodes[i], i);\n } else for (i = 0; i < n; ++i) {\n charges[i] = charge;\n }\n\n function position(dimension, size) {\n if (!neighbors) {\n neighbors = new Array(n);\n\n for (j = 0; j < n; ++j) {\n neighbors[j] = [];\n }\n\n for (j = 0; j < m; ++j) {\n var o = links[j];\n neighbors[o.source.index].push(o.target);\n neighbors[o.target.index].push(o.source);\n }\n }\n\n var candidates = neighbors[i],\n j = -1,\n l = candidates.length,\n x;\n\n while (++j < l) {\n if (!isNaN(x = candidates[j][dimension])) return x;\n }\n\n return Math.random() * size;\n }\n\n return force.resume();\n };\n\n force.resume = function () {\n return force.alpha(.1);\n };\n\n force.stop = function () {\n return force.alpha(0);\n };\n\n force.drag = function () {\n if (!drag) drag = d3.behavior.drag().origin(d3_identity).on(\"dragstart.force\", d3_layout_forceDragstart).on(\"drag.force\", dragmove).on(\"dragend.force\", d3_layout_forceDragend);\n if (!arguments.length) return drag;\n this.on(\"mouseover.force\", d3_layout_forceMouseover).on(\"mouseout.force\", d3_layout_forceMouseout).call(drag);\n };\n\n function dragmove(d) {\n d.px = d3.event.x, d.py = d3.event.y;\n force.resume();\n }\n\n return d3.rebind(force, event, \"on\");\n };\n\n function d3_layout_forceDragstart(d) {\n d.fixed |= 2;\n }\n\n function d3_layout_forceDragend(d) {\n d.fixed &= ~6;\n }\n\n function d3_layout_forceMouseover(d) {\n d.fixed |= 4;\n d.px = d.x, d.py = d.y;\n }\n\n function d3_layout_forceMouseout(d) {\n d.fixed &= ~4;\n }\n\n function d3_layout_forceAccumulate(quad, alpha, charges) {\n var cx = 0,\n cy = 0;\n quad.charge = 0;\n\n if (!quad.leaf) {\n var nodes = quad.nodes,\n n = nodes.length,\n i = -1,\n c;\n\n while (++i < n) {\n c = nodes[i];\n if (c == null) continue;\n d3_layout_forceAccumulate(c, alpha, charges);\n quad.charge += c.charge;\n cx += c.charge * c.cx;\n cy += c.charge * c.cy;\n }\n }\n\n if (quad.point) {\n if (!quad.leaf) {\n quad.point.x += Math.random() - .5;\n quad.point.y += Math.random() - .5;\n }\n\n var k = alpha * charges[quad.point.index];\n quad.charge += quad.pointCharge = k;\n cx += k * quad.point.x;\n cy += k * quad.point.y;\n }\n\n quad.cx = cx / quad.charge;\n quad.cy = cy / quad.charge;\n }\n\n var d3_layout_forceLinkDistance = 20,\n d3_layout_forceLinkStrength = 1,\n d3_layout_forceChargeDistance2 = Infinity;\n\n d3.layout.hierarchy = function () {\n var sort = d3_layout_hierarchySort,\n children = d3_layout_hierarchyChildren,\n value = d3_layout_hierarchyValue;\n\n function hierarchy(root) {\n var stack = [root],\n nodes = [],\n node;\n root.depth = 0;\n\n while ((node = stack.pop()) != null) {\n nodes.push(node);\n\n if ((childs = children.call(hierarchy, node, node.depth)) && (n = childs.length)) {\n var n, childs, child;\n\n while (--n >= 0) {\n stack.push(child = childs[n]);\n child.parent = node;\n child.depth = node.depth + 1;\n }\n\n if (value) node.value = 0;\n node.children = childs;\n } else {\n if (value) node.value = +value.call(hierarchy, node, node.depth) || 0;\n delete node.children;\n }\n }\n\n d3_layout_hierarchyVisitAfter(root, function (node) {\n var childs, parent;\n if (sort && (childs = node.children)) childs.sort(sort);\n if (value && (parent = node.parent)) parent.value += node.value;\n });\n return nodes;\n }\n\n hierarchy.sort = function (x) {\n if (!arguments.length) return sort;\n sort = x;\n return hierarchy;\n };\n\n hierarchy.children = function (x) {\n if (!arguments.length) return children;\n children = x;\n return hierarchy;\n };\n\n hierarchy.value = function (x) {\n if (!arguments.length) return value;\n value = x;\n return hierarchy;\n };\n\n hierarchy.revalue = function (root) {\n if (value) {\n d3_layout_hierarchyVisitBefore(root, function (node) {\n if (node.children) node.value = 0;\n });\n d3_layout_hierarchyVisitAfter(root, function (node) {\n var parent;\n if (!node.children) node.value = +value.call(hierarchy, node, node.depth) || 0;\n if (parent = node.parent) parent.value += node.value;\n });\n }\n\n return root;\n };\n\n return hierarchy;\n };\n\n function d3_layout_hierarchyRebind(object, hierarchy) {\n d3.rebind(object, hierarchy, \"sort\", \"children\", \"value\");\n object.nodes = object;\n object.links = d3_layout_hierarchyLinks;\n return object;\n }\n\n function d3_layout_hierarchyVisitBefore(node, callback) {\n var nodes = [node];\n\n while ((node = nodes.pop()) != null) {\n callback(node);\n\n if ((children = node.children) && (n = children.length)) {\n var n, children;\n\n while (--n >= 0) {\n nodes.push(children[n]);\n }\n }\n }\n }\n\n function d3_layout_hierarchyVisitAfter(node, callback) {\n var nodes = [node],\n nodes2 = [];\n\n while ((node = nodes.pop()) != null) {\n nodes2.push(node);\n\n if ((children = node.children) && (n = children.length)) {\n var i = -1,\n n,\n children;\n\n while (++i < n) {\n nodes.push(children[i]);\n }\n }\n }\n\n while ((node = nodes2.pop()) != null) {\n callback(node);\n }\n }\n\n function d3_layout_hierarchyChildren(d) {\n return d.children;\n }\n\n function d3_layout_hierarchyValue(d) {\n return d.value;\n }\n\n function d3_layout_hierarchySort(a, b) {\n return b.value - a.value;\n }\n\n function d3_layout_hierarchyLinks(nodes) {\n return d3.merge(nodes.map(function (parent) {\n return (parent.children || []).map(function (child) {\n return {\n source: parent,\n target: child\n };\n });\n }));\n }\n\n d3.layout.partition = function () {\n var hierarchy = d3.layout.hierarchy(),\n size = [1, 1];\n\n function position(node, x, dx, dy) {\n var children = node.children;\n node.x = x;\n node.y = node.depth * dy;\n node.dx = dx;\n node.dy = dy;\n\n if (children && (n = children.length)) {\n var i = -1,\n n,\n c,\n d;\n dx = node.value ? dx / node.value : 0;\n\n while (++i < n) {\n position(c = children[i], x, d = c.value * dx, dy);\n x += d;\n }\n }\n }\n\n function depth(node) {\n var children = node.children,\n d = 0;\n\n if (children && (n = children.length)) {\n var i = -1,\n n;\n\n while (++i < n) {\n d = Math.max(d, depth(children[i]));\n }\n }\n\n return 1 + d;\n }\n\n function partition(d, i) {\n var nodes = hierarchy.call(this, d, i);\n position(nodes[0], 0, size[0], size[1] / depth(nodes[0]));\n return nodes;\n }\n\n partition.size = function (x) {\n if (!arguments.length) return size;\n size = x;\n return partition;\n };\n\n return d3_layout_hierarchyRebind(partition, hierarchy);\n };\n\n d3.layout.pie = function () {\n var value = Number,\n sort = d3_layout_pieSortByValue,\n startAngle = 0,\n endAngle = τ,\n padAngle = 0;\n\n function pie(data) {\n var n = data.length,\n values = data.map(function (d, i) {\n return +value.call(pie, d, i);\n }),\n a = +(typeof startAngle === \"function\" ? startAngle.apply(this, arguments) : startAngle),\n da = (typeof endAngle === \"function\" ? endAngle.apply(this, arguments) : endAngle) - a,\n p = Math.min(Math.abs(da) / n, +(typeof padAngle === \"function\" ? padAngle.apply(this, arguments) : padAngle)),\n pa = p * (da < 0 ? -1 : 1),\n sum = d3.sum(values),\n k = sum ? (da - n * pa) / sum : 0,\n index = d3.range(n),\n arcs = [],\n v;\n if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function (i, j) {\n return values[j] - values[i];\n } : function (i, j) {\n return sort(data[i], data[j]);\n });\n index.forEach(function (i) {\n arcs[i] = {\n data: data[i],\n value: v = values[i],\n startAngle: a,\n endAngle: a += v * k + pa,\n padAngle: p\n };\n });\n return arcs;\n }\n\n pie.value = function (_) {\n if (!arguments.length) return value;\n value = _;\n return pie;\n };\n\n pie.sort = function (_) {\n if (!arguments.length) return sort;\n sort = _;\n return pie;\n };\n\n pie.startAngle = function (_) {\n if (!arguments.length) return startAngle;\n startAngle = _;\n return pie;\n };\n\n pie.endAngle = function (_) {\n if (!arguments.length) return endAngle;\n endAngle = _;\n return pie;\n };\n\n pie.padAngle = function (_) {\n if (!arguments.length) return padAngle;\n padAngle = _;\n return pie;\n };\n\n return pie;\n };\n\n var d3_layout_pieSortByValue = {};\n\n d3.layout.stack = function () {\n var values = d3_identity,\n order = d3_layout_stackOrderDefault,\n offset = d3_layout_stackOffsetZero,\n out = d3_layout_stackOut,\n x = d3_layout_stackX,\n y = d3_layout_stackY;\n\n function stack(data, index) {\n if (!(n = data.length)) return data;\n var series = data.map(function (d, i) {\n return values.call(stack, d, i);\n });\n var points = series.map(function (d) {\n return d.map(function (v, i) {\n return [x.call(stack, v, i), y.call(stack, v, i)];\n });\n });\n var orders = order.call(stack, points, index);\n series = d3.permute(series, orders);\n points = d3.permute(points, orders);\n var offsets = offset.call(stack, points, index);\n var m = series[0].length,\n n,\n i,\n j,\n o;\n\n for (j = 0; j < m; ++j) {\n out.call(stack, series[0][j], o = offsets[j], points[0][j][1]);\n\n for (i = 1; i < n; ++i) {\n out.call(stack, series[i][j], o += points[i - 1][j][1], points[i][j][1]);\n }\n }\n\n return data;\n }\n\n stack.values = function (x) {\n if (!arguments.length) return values;\n values = x;\n return stack;\n };\n\n stack.order = function (x) {\n if (!arguments.length) return order;\n order = typeof x === \"function\" ? x : d3_layout_stackOrders.get(x) || d3_layout_stackOrderDefault;\n return stack;\n };\n\n stack.offset = function (x) {\n if (!arguments.length) return offset;\n offset = typeof x === \"function\" ? x : d3_layout_stackOffsets.get(x) || d3_layout_stackOffsetZero;\n return stack;\n };\n\n stack.x = function (z) {\n if (!arguments.length) return x;\n x = z;\n return stack;\n };\n\n stack.y = function (z) {\n if (!arguments.length) return y;\n y = z;\n return stack;\n };\n\n stack.out = function (z) {\n if (!arguments.length) return out;\n out = z;\n return stack;\n };\n\n return stack;\n };\n\n function d3_layout_stackX(d) {\n return d.x;\n }\n\n function d3_layout_stackY(d) {\n return d.y;\n }\n\n function d3_layout_stackOut(d, y0, y) {\n d.y0 = y0;\n d.y = y;\n }\n\n var d3_layout_stackOrders = d3.map({\n \"inside-out\": function insideOut(data) {\n var n = data.length,\n i,\n j,\n max = data.map(d3_layout_stackMaxIndex),\n sums = data.map(d3_layout_stackReduceSum),\n index = d3.range(n).sort(function (a, b) {\n return max[a] - max[b];\n }),\n top = 0,\n bottom = 0,\n tops = [],\n bottoms = [];\n\n for (i = 0; i < n; ++i) {\n j = index[i];\n\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n\n return bottoms.reverse().concat(tops);\n },\n reverse: function reverse(data) {\n return d3.range(data.length).reverse();\n },\n \"default\": d3_layout_stackOrderDefault\n });\n var d3_layout_stackOffsets = d3.map({\n silhouette: function silhouette(data) {\n var n = data.length,\n m = data[0].length,\n sums = [],\n max = 0,\n i,\n j,\n o,\n y0 = [];\n\n for (j = 0; j < m; ++j) {\n for (i = 0, o = 0; i < n; i++) {\n o += data[i][j][1];\n }\n\n if (o > max) max = o;\n sums.push(o);\n }\n\n for (j = 0; j < m; ++j) {\n y0[j] = (max - sums[j]) / 2;\n }\n\n return y0;\n },\n wiggle: function wiggle(data) {\n var n = data.length,\n x = data[0],\n m = x.length,\n i,\n j,\n k,\n s1,\n s2,\n s3,\n dx,\n o,\n o0,\n y0 = [];\n y0[0] = o = o0 = 0;\n\n for (j = 1; j < m; ++j) {\n for (i = 0, s1 = 0; i < n; ++i) {\n s1 += data[i][j][1];\n }\n\n for (i = 0, s2 = 0, dx = x[j][0] - x[j - 1][0]; i < n; ++i) {\n for (k = 0, s3 = (data[i][j][1] - data[i][j - 1][1]) / (2 * dx); k < i; ++k) {\n s3 += (data[k][j][1] - data[k][j - 1][1]) / dx;\n }\n\n s2 += s3 * data[i][j][1];\n }\n\n y0[j] = o -= s1 ? s2 / s1 * dx : 0;\n if (o < o0) o0 = o;\n }\n\n for (j = 0; j < m; ++j) {\n y0[j] -= o0;\n }\n\n return y0;\n },\n expand: function expand(data) {\n var n = data.length,\n m = data[0].length,\n k = 1 / n,\n i,\n j,\n o,\n y0 = [];\n\n for (j = 0; j < m; ++j) {\n for (i = 0, o = 0; i < n; i++) {\n o += data[i][j][1];\n }\n\n if (o) for (i = 0; i < n; i++) {\n data[i][j][1] /= o;\n } else for (i = 0; i < n; i++) {\n data[i][j][1] = k;\n }\n }\n\n for (j = 0; j < m; ++j) {\n y0[j] = 0;\n }\n\n return y0;\n },\n zero: d3_layout_stackOffsetZero\n });\n\n function d3_layout_stackOrderDefault(data) {\n return d3.range(data.length);\n }\n\n function d3_layout_stackOffsetZero(data) {\n var j = -1,\n m = data[0].length,\n y0 = [];\n\n while (++j < m) {\n y0[j] = 0;\n }\n\n return y0;\n }\n\n function d3_layout_stackMaxIndex(array) {\n var i = 1,\n j = 0,\n v = array[0][1],\n k,\n n = array.length;\n\n for (; i < n; ++i) {\n if ((k = array[i][1]) > v) {\n j = i;\n v = k;\n }\n }\n\n return j;\n }\n\n function d3_layout_stackReduceSum(d) {\n return d.reduce(d3_layout_stackSum, 0);\n }\n\n function d3_layout_stackSum(p, d) {\n return p + d[1];\n }\n\n d3.layout.histogram = function () {\n var frequency = true,\n valuer = Number,\n ranger = d3_layout_histogramRange,\n binner = d3_layout_histogramBinSturges;\n\n function histogram(data, i) {\n var bins = [],\n values = data.map(valuer, this),\n range = ranger.call(this, values, i),\n thresholds = binner.call(this, range, values, i),\n bin,\n i = -1,\n n = values.length,\n m = thresholds.length - 1,\n k = frequency ? 1 : 1 / n,\n x;\n\n while (++i < m) {\n bin = bins[i] = [];\n bin.dx = thresholds[i + 1] - (bin.x = thresholds[i]);\n bin.y = 0;\n }\n\n if (m > 0) {\n i = -1;\n\n while (++i < n) {\n x = values[i];\n\n if (x >= range[0] && x <= range[1]) {\n bin = bins[d3.bisect(thresholds, x, 1, m) - 1];\n bin.y += k;\n bin.push(data[i]);\n }\n }\n }\n\n return bins;\n }\n\n histogram.value = function (x) {\n if (!arguments.length) return valuer;\n valuer = x;\n return histogram;\n };\n\n histogram.range = function (x) {\n if (!arguments.length) return ranger;\n ranger = d3_functor(x);\n return histogram;\n };\n\n histogram.bins = function (x) {\n if (!arguments.length) return binner;\n binner = typeof x === \"number\" ? function (range) {\n return d3_layout_histogramBinFixed(range, x);\n } : d3_functor(x);\n return histogram;\n };\n\n histogram.frequency = function (x) {\n if (!arguments.length) return frequency;\n frequency = !!x;\n return histogram;\n };\n\n return histogram;\n };\n\n function d3_layout_histogramBinSturges(range, values) {\n return d3_layout_histogramBinFixed(range, Math.ceil(Math.log(values.length) / Math.LN2 + 1));\n }\n\n function d3_layout_histogramBinFixed(range, n) {\n var x = -1,\n b = +range[0],\n m = (range[1] - b) / n,\n f = [];\n\n while (++x <= n) {\n f[x] = m * x + b;\n }\n\n return f;\n }\n\n function d3_layout_histogramRange(values) {\n return [d3.min(values), d3.max(values)];\n }\n\n d3.layout.pack = function () {\n var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort),\n padding = 0,\n size = [1, 1],\n radius;\n\n function pack(d, i) {\n var nodes = hierarchy.call(this, d, i),\n root = nodes[0],\n w = size[0],\n h = size[1],\n r = radius == null ? Math.sqrt : typeof radius === \"function\" ? radius : function () {\n return radius;\n };\n root.x = root.y = 0;\n d3_layout_hierarchyVisitAfter(root, function (d) {\n d.r = +r(d.value);\n });\n d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n\n if (padding) {\n var dr = padding * (radius ? 1 : Math.max(2 * root.r / w, 2 * root.r / h)) / 2;\n d3_layout_hierarchyVisitAfter(root, function (d) {\n d.r += dr;\n });\n d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n d3_layout_hierarchyVisitAfter(root, function (d) {\n d.r -= dr;\n });\n }\n\n d3_layout_packTransform(root, w / 2, h / 2, radius ? 1 : 1 / Math.max(2 * root.r / w, 2 * root.r / h));\n return nodes;\n }\n\n pack.size = function (_) {\n if (!arguments.length) return size;\n size = _;\n return pack;\n };\n\n pack.radius = function (_) {\n if (!arguments.length) return radius;\n radius = _ == null || typeof _ === \"function\" ? _ : +_;\n return pack;\n };\n\n pack.padding = function (_) {\n if (!arguments.length) return padding;\n padding = +_;\n return pack;\n };\n\n return d3_layout_hierarchyRebind(pack, hierarchy);\n };\n\n function d3_layout_packSort(a, b) {\n return a.value - b.value;\n }\n\n function d3_layout_packInsert(a, b) {\n var c = a._pack_next;\n a._pack_next = b;\n b._pack_prev = a;\n b._pack_next = c;\n c._pack_prev = b;\n }\n\n function d3_layout_packSplice(a, b) {\n a._pack_next = b;\n b._pack_prev = a;\n }\n\n function d3_layout_packIntersects(a, b) {\n var dx = b.x - a.x,\n dy = b.y - a.y,\n dr = a.r + b.r;\n return .999 * dr * dr > dx * dx + dy * dy;\n }\n\n function d3_layout_packSiblings(node) {\n if (!(nodes = node.children) || !(n = nodes.length)) return;\n var nodes,\n xMin = Infinity,\n xMax = -Infinity,\n yMin = Infinity,\n yMax = -Infinity,\n a,\n b,\n c,\n i,\n j,\n k,\n n;\n\n function bound(node) {\n xMin = Math.min(node.x - node.r, xMin);\n xMax = Math.max(node.x + node.r, xMax);\n yMin = Math.min(node.y - node.r, yMin);\n yMax = Math.max(node.y + node.r, yMax);\n }\n\n nodes.forEach(d3_layout_packLink);\n a = nodes[0];\n a.x = -a.r;\n a.y = 0;\n bound(a);\n\n if (n > 1) {\n b = nodes[1];\n b.x = b.r;\n b.y = 0;\n bound(b);\n\n if (n > 2) {\n c = nodes[2];\n d3_layout_packPlace(a, b, c);\n bound(c);\n d3_layout_packInsert(a, c);\n a._pack_prev = c;\n d3_layout_packInsert(c, b);\n b = a._pack_next;\n\n for (i = 3; i < n; i++) {\n d3_layout_packPlace(a, b, c = nodes[i]);\n var isect = 0,\n s1 = 1,\n s2 = 1;\n\n for (j = b._pack_next; j !== b; j = j._pack_next, s1++) {\n if (d3_layout_packIntersects(j, c)) {\n isect = 1;\n break;\n }\n }\n\n if (isect == 1) {\n for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) {\n if (d3_layout_packIntersects(k, c)) {\n break;\n }\n }\n }\n\n if (isect) {\n if (s1 < s2 || s1 == s2 && b.r < a.r) d3_layout_packSplice(a, b = j);else d3_layout_packSplice(a = k, b);\n i--;\n } else {\n d3_layout_packInsert(a, c);\n b = c;\n bound(c);\n }\n }\n }\n }\n\n var cx = (xMin + xMax) / 2,\n cy = (yMin + yMax) / 2,\n cr = 0;\n\n for (i = 0; i < n; i++) {\n c = nodes[i];\n c.x -= cx;\n c.y -= cy;\n cr = Math.max(cr, c.r + Math.sqrt(c.x * c.x + c.y * c.y));\n }\n\n node.r = cr;\n nodes.forEach(d3_layout_packUnlink);\n }\n\n function d3_layout_packLink(node) {\n node._pack_next = node._pack_prev = node;\n }\n\n function d3_layout_packUnlink(node) {\n delete node._pack_next;\n delete node._pack_prev;\n }\n\n function d3_layout_packTransform(node, x, y, k) {\n var children = node.children;\n node.x = x += k * node.x;\n node.y = y += k * node.y;\n node.r *= k;\n\n if (children) {\n var i = -1,\n n = children.length;\n\n while (++i < n) {\n d3_layout_packTransform(children[i], x, y, k);\n }\n }\n }\n\n function d3_layout_packPlace(a, b, c) {\n var db = a.r + c.r,\n dx = b.x - a.x,\n dy = b.y - a.y;\n\n if (db && (dx || dy)) {\n var da = b.r + c.r,\n dc = dx * dx + dy * dy;\n da *= da;\n db *= db;\n var x = .5 + (db - da) / (2 * dc),\n y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc);\n c.x = a.x + x * dx + y * dy;\n c.y = a.y + x * dy - y * dx;\n } else {\n c.x = a.x + db;\n c.y = a.y;\n }\n }\n\n d3.layout.tree = function () {\n var hierarchy = d3.layout.hierarchy().sort(null).value(null),\n separation = d3_layout_treeSeparation,\n size = [1, 1],\n nodeSize = null;\n\n function tree(d, i) {\n var nodes = hierarchy.call(this, d, i),\n root0 = nodes[0],\n root1 = wrapTree(root0);\n d3_layout_hierarchyVisitAfter(root1, firstWalk), root1.parent.m = -root1.z;\n d3_layout_hierarchyVisitBefore(root1, secondWalk);\n if (nodeSize) d3_layout_hierarchyVisitBefore(root0, sizeNode);else {\n var left = root0,\n right = root0,\n bottom = root0;\n d3_layout_hierarchyVisitBefore(root0, function (node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var tx = separation(left, right) / 2 - left.x,\n kx = size[0] / (right.x + separation(right, left) / 2 + tx),\n ky = size[1] / (bottom.depth || 1);\n d3_layout_hierarchyVisitBefore(root0, function (node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n return nodes;\n }\n\n function wrapTree(root0) {\n var root1 = {\n A: null,\n children: [root0]\n },\n queue = [root1],\n node1;\n\n while ((node1 = queue.pop()) != null) {\n for (var children = node1.children, child, i = 0, n = children.length; i < n; ++i) {\n queue.push((children[i] = child = {\n _: children[i],\n parent: node1,\n children: (child = children[i].children) && child.slice() || [],\n A: null,\n a: null,\n z: 0,\n m: 0,\n c: 0,\n s: 0,\n t: null,\n i: i\n }).a = child);\n }\n }\n\n return root1.children[0];\n }\n\n function firstWalk(v) {\n var children = v.children,\n siblings = v.parent.children,\n w = v.i ? siblings[v.i - 1] : null;\n\n if (children.length) {\n d3_layout_treeShift(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v,\n vop = v,\n vim = w,\n vom = vip.parent.children[0],\n sip = vip.m,\n sop = vop.m,\n sim = vim.m,\n som = vom.m,\n shift;\n\n while (vim = d3_layout_treeRight(vim), vip = d3_layout_treeLeft(vip), vim && vip) {\n vom = d3_layout_treeLeft(vom);\n vop = d3_layout_treeRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n\n if (shift > 0) {\n d3_layout_treeMove(d3_layout_treeAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n\n if (vim && !d3_layout_treeRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n\n if (vip && !d3_layout_treeLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n\n return ancestor;\n }\n\n function sizeNode(node) {\n node.x *= size[0];\n node.y = node.depth * size[1];\n }\n\n tree.separation = function (x) {\n if (!arguments.length) return separation;\n separation = x;\n return tree;\n };\n\n tree.size = function (x) {\n if (!arguments.length) return nodeSize ? null : size;\n nodeSize = (size = x) == null ? sizeNode : null;\n return tree;\n };\n\n tree.nodeSize = function (x) {\n if (!arguments.length) return nodeSize ? size : null;\n nodeSize = (size = x) == null ? null : sizeNode;\n return tree;\n };\n\n return d3_layout_hierarchyRebind(tree, hierarchy);\n };\n\n function d3_layout_treeSeparation(a, b) {\n return a.parent == b.parent ? 1 : 2;\n }\n\n function d3_layout_treeLeft(v) {\n var children = v.children;\n return children.length ? children[0] : v.t;\n }\n\n function d3_layout_treeRight(v) {\n var children = v.children,\n n;\n return (n = children.length) ? children[n - 1] : v.t;\n }\n\n function d3_layout_treeMove(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n }\n\n function d3_layout_treeShift(v) {\n var shift = 0,\n change = 0,\n children = v.children,\n i = children.length,\n w;\n\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n }\n\n function d3_layout_treeAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n }\n\n d3.layout.cluster = function () {\n var hierarchy = d3.layout.hierarchy().sort(null).value(null),\n separation = d3_layout_treeSeparation,\n size = [1, 1],\n nodeSize = false;\n\n function cluster(d, i) {\n var nodes = hierarchy.call(this, d, i),\n root = nodes[0],\n previousNode,\n x = 0;\n d3_layout_hierarchyVisitAfter(root, function (node) {\n var children = node.children;\n\n if (children && children.length) {\n node.x = d3_layout_clusterX(children);\n node.y = d3_layout_clusterY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n var left = d3_layout_clusterLeft(root),\n right = d3_layout_clusterRight(root),\n x0 = left.x - separation(left, right) / 2,\n x1 = right.x + separation(right, left) / 2;\n d3_layout_hierarchyVisitAfter(root, nodeSize ? function (node) {\n node.x = (node.x - root.x) * size[0];\n node.y = (root.y - node.y) * size[1];\n } : function (node) {\n node.x = (node.x - x0) / (x1 - x0) * size[0];\n node.y = (1 - (root.y ? node.y / root.y : 1)) * size[1];\n });\n return nodes;\n }\n\n cluster.separation = function (x) {\n if (!arguments.length) return separation;\n separation = x;\n return cluster;\n };\n\n cluster.size = function (x) {\n if (!arguments.length) return nodeSize ? null : size;\n nodeSize = (size = x) == null;\n return cluster;\n };\n\n cluster.nodeSize = function (x) {\n if (!arguments.length) return nodeSize ? size : null;\n nodeSize = (size = x) != null;\n return cluster;\n };\n\n return d3_layout_hierarchyRebind(cluster, hierarchy);\n };\n\n function d3_layout_clusterY(children) {\n return 1 + d3.max(children, function (child) {\n return child.y;\n });\n }\n\n function d3_layout_clusterX(children) {\n return children.reduce(function (x, child) {\n return x + child.x;\n }, 0) / children.length;\n }\n\n function d3_layout_clusterLeft(node) {\n var children = node.children;\n return children && children.length ? d3_layout_clusterLeft(children[0]) : node;\n }\n\n function d3_layout_clusterRight(node) {\n var children = node.children,\n n;\n return children && (n = children.length) ? d3_layout_clusterRight(children[n - 1]) : node;\n }\n\n d3.layout.treemap = function () {\n var hierarchy = d3.layout.hierarchy(),\n round = Math.round,\n size = [1, 1],\n padding = null,\n pad = d3_layout_treemapPadNull,\n sticky = false,\n stickies,\n mode = \"squarify\",\n ratio = .5 * (1 + Math.sqrt(5));\n\n function scale(children, k) {\n var i = -1,\n n = children.length,\n child,\n area;\n\n while (++i < n) {\n area = (child = children[i]).value * (k < 0 ? 0 : k);\n child.area = isNaN(area) || area <= 0 ? 0 : area;\n }\n }\n\n function squarify(node) {\n var children = node.children;\n\n if (children && children.length) {\n var rect = pad(node),\n row = [],\n remaining = children.slice(),\n child,\n best = Infinity,\n score,\n u = mode === \"slice\" ? rect.dx : mode === \"dice\" ? rect.dy : mode === \"slice-dice\" ? node.depth & 1 ? rect.dy : rect.dx : Math.min(rect.dx, rect.dy),\n n;\n scale(remaining, rect.dx * rect.dy / node.value);\n row.area = 0;\n\n while ((n = remaining.length) > 0) {\n row.push(child = remaining[n - 1]);\n row.area += child.area;\n\n if (mode !== \"squarify\" || (score = worst(row, u)) <= best) {\n remaining.pop();\n best = score;\n } else {\n row.area -= row.pop().area;\n position(row, u, rect, false);\n u = Math.min(rect.dx, rect.dy);\n row.length = row.area = 0;\n best = Infinity;\n }\n }\n\n if (row.length) {\n position(row, u, rect, true);\n row.length = row.area = 0;\n }\n\n children.forEach(squarify);\n }\n }\n\n function stickify(node) {\n var children = node.children;\n\n if (children && children.length) {\n var rect = pad(node),\n remaining = children.slice(),\n child,\n row = [];\n scale(remaining, rect.dx * rect.dy / node.value);\n row.area = 0;\n\n while (child = remaining.pop()) {\n row.push(child);\n row.area += child.area;\n\n if (child.z != null) {\n position(row, child.z ? rect.dx : rect.dy, rect, !remaining.length);\n row.length = row.area = 0;\n }\n }\n\n children.forEach(stickify);\n }\n }\n\n function worst(row, u) {\n var s = row.area,\n r,\n rmax = 0,\n rmin = Infinity,\n i = -1,\n n = row.length;\n\n while (++i < n) {\n if (!(r = row[i].area)) continue;\n if (r < rmin) rmin = r;\n if (r > rmax) rmax = r;\n }\n\n s *= s;\n u *= u;\n return s ? Math.max(u * rmax * ratio / s, s / (u * rmin * ratio)) : Infinity;\n }\n\n function position(row, u, rect, flush) {\n var i = -1,\n n = row.length,\n x = rect.x,\n y = rect.y,\n v = u ? round(row.area / u) : 0,\n o;\n\n if (u == rect.dx) {\n if (flush || v > rect.dy) v = rect.dy;\n\n while (++i < n) {\n o = row[i];\n o.x = x;\n o.y = y;\n o.dy = v;\n x += o.dx = Math.min(rect.x + rect.dx - x, v ? round(o.area / v) : 0);\n }\n\n o.z = true;\n o.dx += rect.x + rect.dx - x;\n rect.y += v;\n rect.dy -= v;\n } else {\n if (flush || v > rect.dx) v = rect.dx;\n\n while (++i < n) {\n o = row[i];\n o.x = x;\n o.y = y;\n o.dx = v;\n y += o.dy = Math.min(rect.y + rect.dy - y, v ? round(o.area / v) : 0);\n }\n\n o.z = false;\n o.dy += rect.y + rect.dy - y;\n rect.x += v;\n rect.dx -= v;\n }\n }\n\n function treemap(d) {\n var nodes = stickies || hierarchy(d),\n root = nodes[0];\n root.x = root.y = 0;\n if (root.value) root.dx = size[0], root.dy = size[1];else root.dx = root.dy = 0;\n if (stickies) hierarchy.revalue(root);\n scale([root], root.dx * root.dy / root.value);\n (stickies ? stickify : squarify)(root);\n if (sticky) stickies = nodes;\n return nodes;\n }\n\n treemap.size = function (x) {\n if (!arguments.length) return size;\n size = x;\n return treemap;\n };\n\n treemap.padding = function (x) {\n if (!arguments.length) return padding;\n\n function padFunction(node) {\n var p = x.call(treemap, node, node.depth);\n return p == null ? d3_layout_treemapPadNull(node) : d3_layout_treemapPad(node, typeof p === \"number\" ? [p, p, p, p] : p);\n }\n\n function padConstant(node) {\n return d3_layout_treemapPad(node, x);\n }\n\n var type;\n pad = (padding = x) == null ? d3_layout_treemapPadNull : (type = _typeof(x)) === \"function\" ? padFunction : type === \"number\" ? (x = [x, x, x, x], padConstant) : padConstant;\n return treemap;\n };\n\n treemap.round = function (x) {\n if (!arguments.length) return round != Number;\n round = x ? Math.round : Number;\n return treemap;\n };\n\n treemap.sticky = function (x) {\n if (!arguments.length) return sticky;\n sticky = x;\n stickies = null;\n return treemap;\n };\n\n treemap.ratio = function (x) {\n if (!arguments.length) return ratio;\n ratio = x;\n return treemap;\n };\n\n treemap.mode = function (x) {\n if (!arguments.length) return mode;\n mode = x + \"\";\n return treemap;\n };\n\n return d3_layout_hierarchyRebind(treemap, hierarchy);\n };\n\n function d3_layout_treemapPadNull(node) {\n return {\n x: node.x,\n y: node.y,\n dx: node.dx,\n dy: node.dy\n };\n }\n\n function d3_layout_treemapPad(node, padding) {\n var x = node.x + padding[3],\n y = node.y + padding[0],\n dx = node.dx - padding[1] - padding[3],\n dy = node.dy - padding[0] - padding[2];\n\n if (dx < 0) {\n x += dx / 2;\n dx = 0;\n }\n\n if (dy < 0) {\n y += dy / 2;\n dy = 0;\n }\n\n return {\n x: x,\n y: y,\n dx: dx,\n dy: dy\n };\n }\n\n d3.random = {\n normal: function normal(µ, σ) {\n var n = arguments.length;\n if (n < 2) σ = 1;\n if (n < 1) µ = 0;\n return function () {\n var x, y, r;\n\n do {\n x = Math.random() * 2 - 1;\n y = Math.random() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n\n return µ + σ * x * Math.sqrt(-2 * Math.log(r) / r);\n };\n },\n logNormal: function logNormal() {\n var random = d3.random.normal.apply(d3, arguments);\n return function () {\n return Math.exp(random());\n };\n },\n bates: function bates(m) {\n var random = d3.random.irwinHall(m);\n return function () {\n return random() / m;\n };\n },\n irwinHall: function irwinHall(m) {\n return function () {\n for (var s = 0, j = 0; j < m; j++) {\n s += Math.random();\n }\n\n return s;\n };\n }\n };\n d3.scale = {};\n\n function d3_scaleExtent(domain) {\n var start = domain[0],\n stop = domain[domain.length - 1];\n return start < stop ? [start, stop] : [stop, start];\n }\n\n function d3_scaleRange(scale) {\n return scale.rangeExtent ? scale.rangeExtent() : d3_scaleExtent(scale.range());\n }\n\n function d3_scale_bilinear(domain, range, uninterpolate, interpolate) {\n var u = uninterpolate(domain[0], domain[1]),\n i = interpolate(range[0], range[1]);\n return function (x) {\n return i(u(x));\n };\n }\n\n function d3_scale_nice(domain, nice) {\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n dx;\n\n if (x1 < x0) {\n dx = i0, i0 = i1, i1 = dx;\n dx = x0, x0 = x1, x1 = dx;\n }\n\n domain[i0] = nice.floor(x0);\n domain[i1] = nice.ceil(x1);\n return domain;\n }\n\n function d3_scale_niceStep(step) {\n return step ? {\n floor: function floor(x) {\n return Math.floor(x / step) * step;\n },\n ceil: function ceil(x) {\n return Math.ceil(x / step) * step;\n }\n } : d3_scale_niceIdentity;\n }\n\n var d3_scale_niceIdentity = {\n floor: d3_identity,\n ceil: d3_identity\n };\n\n function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {\n var u = [],\n i = [],\n j = 0,\n k = Math.min(domain.length, range.length) - 1;\n\n if (domain[k] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++j <= k) {\n u.push(uninterpolate(domain[j - 1], domain[j]));\n i.push(interpolate(range[j - 1], range[j]));\n }\n\n return function (x) {\n var j = d3.bisect(domain, x, 1, k) - 1;\n return i[j](u[j](x));\n };\n }\n\n d3.scale.linear = function () {\n return d3_scale_linear([0, 1], [0, 1], d3_interpolate, false);\n };\n\n function d3_scale_linear(domain, range, interpolate, clamp) {\n var output, input;\n\n function rescale() {\n var linear = Math.min(domain.length, range.length) > 2 ? d3_scale_polylinear : d3_scale_bilinear,\n uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber;\n output = linear(domain, range, uninterpolate, interpolate);\n input = linear(range, domain, uninterpolate, d3_interpolate);\n return scale;\n }\n\n function scale(x) {\n return output(x);\n }\n\n scale.invert = function (y) {\n return input(y);\n };\n\n scale.domain = function (x) {\n if (!arguments.length) return domain;\n domain = x.map(Number);\n return rescale();\n };\n\n scale.range = function (x) {\n if (!arguments.length) return range;\n range = x;\n return rescale();\n };\n\n scale.rangeRound = function (x) {\n return scale.range(x).interpolate(d3_interpolateRound);\n };\n\n scale.clamp = function (x) {\n if (!arguments.length) return clamp;\n clamp = x;\n return rescale();\n };\n\n scale.interpolate = function (x) {\n if (!arguments.length) return interpolate;\n interpolate = x;\n return rescale();\n };\n\n scale.ticks = function (m) {\n return d3_scale_linearTicks(domain, m);\n };\n\n scale.tickFormat = function (m, format) {\n return d3_scale_linearTickFormat(domain, m, format);\n };\n\n scale.nice = function (m) {\n d3_scale_linearNice(domain, m);\n return rescale();\n };\n\n scale.copy = function () {\n return d3_scale_linear(domain, range, interpolate, clamp);\n };\n\n return rescale();\n }\n\n function d3_scale_linearRebind(scale, linear) {\n return d3.rebind(scale, linear, \"range\", \"rangeRound\", \"interpolate\", \"clamp\");\n }\n\n function d3_scale_linearNice(domain, m) {\n d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n return domain;\n }\n\n function d3_scale_linearTickRange(domain, m) {\n if (m == null) m = 10;\n var extent = d3_scaleExtent(domain),\n span = extent[1] - extent[0],\n step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)),\n err = m / span * step;\n if (err <= .15) step *= 10;else if (err <= .35) step *= 5;else if (err <= .75) step *= 2;\n extent[0] = Math.ceil(extent[0] / step) * step;\n extent[1] = Math.floor(extent[1] / step) * step + step * .5;\n extent[2] = step;\n return extent;\n }\n\n function d3_scale_linearTicks(domain, m) {\n return d3.range.apply(d3, d3_scale_linearTickRange(domain, m));\n }\n\n function d3_scale_linearTickFormat(domain, m, format) {\n var range = d3_scale_linearTickRange(domain, m);\n\n if (format) {\n var match = d3_format_re.exec(format);\n match.shift();\n\n if (match[8] === \"s\") {\n var prefix = d3.formatPrefix(Math.max(abs(range[0]), abs(range[1])));\n if (!match[7]) match[7] = \".\" + d3_scale_linearPrecision(prefix.scale(range[2]));\n match[8] = \"f\";\n format = d3.format(match.join(\"\"));\n return function (d) {\n return format(prefix.scale(d)) + prefix.symbol;\n };\n }\n\n if (!match[7]) match[7] = \".\" + d3_scale_linearFormatPrecision(match[8], range);\n format = match.join(\"\");\n } else {\n format = \",.\" + d3_scale_linearPrecision(range[2]) + \"f\";\n }\n\n return d3.format(format);\n }\n\n var d3_scale_linearFormatSignificant = {\n s: 1,\n g: 1,\n p: 1,\n r: 1,\n e: 1\n };\n\n function d3_scale_linearPrecision(value) {\n return -Math.floor(Math.log(value) / Math.LN10 + .01);\n }\n\n function d3_scale_linearFormatPrecision(type, range) {\n var p = d3_scale_linearPrecision(range[2]);\n return type in d3_scale_linearFormatSignificant ? Math.abs(p - d3_scale_linearPrecision(Math.max(abs(range[0]), abs(range[1])))) + +(type !== \"e\") : p - (type === \"%\") * 2;\n }\n\n d3.scale.log = function () {\n return d3_scale_log(d3.scale.linear().domain([0, 1]), 10, true, [1, 10]);\n };\n\n function d3_scale_log(linear, base, positive, domain) {\n function log(x) {\n return (positive ? Math.log(x < 0 ? 0 : x) : -Math.log(x > 0 ? 0 : -x)) / Math.log(base);\n }\n\n function pow(x) {\n return positive ? Math.pow(base, x) : -Math.pow(base, -x);\n }\n\n function scale(x) {\n return linear(log(x));\n }\n\n scale.invert = function (x) {\n return pow(linear.invert(x));\n };\n\n scale.domain = function (x) {\n if (!arguments.length) return domain;\n positive = x[0] >= 0;\n linear.domain((domain = x.map(Number)).map(log));\n return scale;\n };\n\n scale.base = function (_) {\n if (!arguments.length) return base;\n base = +_;\n linear.domain(domain.map(log));\n return scale;\n };\n\n scale.nice = function () {\n var niced = d3_scale_nice(domain.map(log), positive ? Math : d3_scale_logNiceNegative);\n linear.domain(niced);\n domain = niced.map(pow);\n return scale;\n };\n\n scale.ticks = function () {\n var extent = d3_scaleExtent(domain),\n ticks = [],\n u = extent[0],\n v = extent[1],\n i = Math.floor(log(u)),\n j = Math.ceil(log(v)),\n n = base % 1 ? 2 : base;\n\n if (isFinite(j - i)) {\n if (positive) {\n for (; i < j; i++) {\n for (var k = 1; k < n; k++) {\n ticks.push(pow(i) * k);\n }\n }\n\n ticks.push(pow(i));\n } else {\n ticks.push(pow(i));\n\n for (; i++ < j;) {\n for (var k = n - 1; k > 0; k--) {\n ticks.push(pow(i) * k);\n }\n }\n }\n\n for (i = 0; ticks[i] < u; i++) {}\n\n for (j = ticks.length; ticks[j - 1] > v; j--) {}\n\n ticks = ticks.slice(i, j);\n }\n\n return ticks;\n };\n\n scale.tickFormat = function (n, format) {\n if (!arguments.length) return d3_scale_logFormat;\n if (arguments.length < 2) format = d3_scale_logFormat;else if (typeof format !== \"function\") format = d3.format(format);\n var k = Math.max(1, base * n / scale.ticks().length);\n return function (d) {\n var i = d / pow(Math.round(log(d)));\n if (i * base < base - .5) i *= base;\n return i <= k ? format(d) : \"\";\n };\n };\n\n scale.copy = function () {\n return d3_scale_log(linear.copy(), base, positive, domain);\n };\n\n return d3_scale_linearRebind(scale, linear);\n }\n\n var d3_scale_logFormat = d3.format(\".0e\"),\n d3_scale_logNiceNegative = {\n floor: function floor(x) {\n return -Math.ceil(-x);\n },\n ceil: function ceil(x) {\n return -Math.floor(-x);\n }\n };\n\n d3.scale.pow = function () {\n return d3_scale_pow(d3.scale.linear(), 1, [0, 1]);\n };\n\n function d3_scale_pow(linear, exponent, domain) {\n var powp = d3_scale_powPow(exponent),\n powb = d3_scale_powPow(1 / exponent);\n\n function scale(x) {\n return linear(powp(x));\n }\n\n scale.invert = function (x) {\n return powb(linear.invert(x));\n };\n\n scale.domain = function (x) {\n if (!arguments.length) return domain;\n linear.domain((domain = x.map(Number)).map(powp));\n return scale;\n };\n\n scale.ticks = function (m) {\n return d3_scale_linearTicks(domain, m);\n };\n\n scale.tickFormat = function (m, format) {\n return d3_scale_linearTickFormat(domain, m, format);\n };\n\n scale.nice = function (m) {\n return scale.domain(d3_scale_linearNice(domain, m));\n };\n\n scale.exponent = function (x) {\n if (!arguments.length) return exponent;\n powp = d3_scale_powPow(exponent = x);\n powb = d3_scale_powPow(1 / exponent);\n linear.domain(domain.map(powp));\n return scale;\n };\n\n scale.copy = function () {\n return d3_scale_pow(linear.copy(), exponent, domain);\n };\n\n return d3_scale_linearRebind(scale, linear);\n }\n\n function d3_scale_powPow(e) {\n return function (x) {\n return x < 0 ? -Math.pow(-x, e) : Math.pow(x, e);\n };\n }\n\n d3.scale.sqrt = function () {\n return d3.scale.pow().exponent(.5);\n };\n\n d3.scale.ordinal = function () {\n return d3_scale_ordinal([], {\n t: \"range\",\n a: [[]]\n });\n };\n\n function d3_scale_ordinal(domain, ranger) {\n var index, range, rangeBand;\n\n function scale(x) {\n return range[((index.get(x) || (ranger.t === \"range\" ? index.set(x, domain.push(x)) : NaN)) - 1) % range.length];\n }\n\n function steps(start, step) {\n return d3.range(domain.length).map(function (i) {\n return start + step * i;\n });\n }\n\n scale.domain = function (x) {\n if (!arguments.length) return domain;\n domain = [];\n index = new d3_Map();\n var i = -1,\n n = x.length,\n xi;\n\n while (++i < n) {\n if (!index.has(xi = x[i])) index.set(xi, domain.push(xi));\n }\n\n return scale[ranger.t].apply(scale, ranger.a);\n };\n\n scale.range = function (x) {\n if (!arguments.length) return range;\n range = x;\n rangeBand = 0;\n ranger = {\n t: \"range\",\n a: arguments\n };\n return scale;\n };\n\n scale.rangePoints = function (x, padding) {\n if (arguments.length < 2) padding = 0;\n var start = x[0],\n stop = x[1],\n step = domain.length < 2 ? (start = (start + stop) / 2, 0) : (stop - start) / (domain.length - 1 + padding);\n range = steps(start + step * padding / 2, step);\n rangeBand = 0;\n ranger = {\n t: \"rangePoints\",\n a: arguments\n };\n return scale;\n };\n\n scale.rangeRoundPoints = function (x, padding) {\n if (arguments.length < 2) padding = 0;\n var start = x[0],\n stop = x[1],\n step = domain.length < 2 ? (start = stop = Math.round((start + stop) / 2), 0) : (stop - start) / (domain.length - 1 + padding) | 0;\n range = steps(start + Math.round(step * padding / 2 + (stop - start - (domain.length - 1 + padding) * step) / 2), step);\n rangeBand = 0;\n ranger = {\n t: \"rangeRoundPoints\",\n a: arguments\n };\n return scale;\n };\n\n scale.rangeBands = function (x, padding, outerPadding) {\n if (arguments.length < 2) padding = 0;\n if (arguments.length < 3) outerPadding = padding;\n var reverse = x[1] < x[0],\n start = x[reverse - 0],\n stop = x[1 - reverse],\n step = (stop - start) / (domain.length - padding + 2 * outerPadding);\n range = steps(start + step * outerPadding, step);\n if (reverse) range.reverse();\n rangeBand = step * (1 - padding);\n ranger = {\n t: \"rangeBands\",\n a: arguments\n };\n return scale;\n };\n\n scale.rangeRoundBands = function (x, padding, outerPadding) {\n if (arguments.length < 2) padding = 0;\n if (arguments.length < 3) outerPadding = padding;\n var reverse = x[1] < x[0],\n start = x[reverse - 0],\n stop = x[1 - reverse],\n step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding));\n range = steps(start + Math.round((stop - start - (domain.length - padding) * step) / 2), step);\n if (reverse) range.reverse();\n rangeBand = Math.round(step * (1 - padding));\n ranger = {\n t: \"rangeRoundBands\",\n a: arguments\n };\n return scale;\n };\n\n scale.rangeBand = function () {\n return rangeBand;\n };\n\n scale.rangeExtent = function () {\n return d3_scaleExtent(ranger.a[0]);\n };\n\n scale.copy = function () {\n return d3_scale_ordinal(domain, ranger);\n };\n\n return scale.domain(domain);\n }\n\n d3.scale.category10 = function () {\n return d3.scale.ordinal().range(d3_category10);\n };\n\n d3.scale.category20 = function () {\n return d3.scale.ordinal().range(d3_category20);\n };\n\n d3.scale.category20b = function () {\n return d3.scale.ordinal().range(d3_category20b);\n };\n\n d3.scale.category20c = function () {\n return d3.scale.ordinal().range(d3_category20c);\n };\n\n var d3_category10 = [2062260, 16744206, 2924588, 14034728, 9725885, 9197131, 14907330, 8355711, 12369186, 1556175].map(d3_rgbString);\n var d3_category20 = [2062260, 11454440, 16744206, 16759672, 2924588, 10018698, 14034728, 16750742, 9725885, 12955861, 9197131, 12885140, 14907330, 16234194, 8355711, 13092807, 12369186, 14408589, 1556175, 10410725].map(d3_rgbString);\n var d3_category20b = [3750777, 5395619, 7040719, 10264286, 6519097, 9216594, 11915115, 13556636, 9202993, 12426809, 15186514, 15190932, 8666169, 11356490, 14049643, 15177372, 8077683, 10834324, 13528509, 14589654].map(d3_rgbString);\n var d3_category20c = [3244733, 7057110, 10406625, 13032431, 15095053, 16616764, 16625259, 16634018, 3253076, 7652470, 10607003, 13101504, 7695281, 10394312, 12369372, 14342891, 6513507, 9868950, 12434877, 14277081].map(d3_rgbString);\n\n d3.scale.quantile = function () {\n return d3_scale_quantile([], []);\n };\n\n function d3_scale_quantile(domain, range) {\n var thresholds;\n\n function rescale() {\n var k = 0,\n q = range.length;\n thresholds = [];\n\n while (++k < q) {\n thresholds[k - 1] = d3.quantile(domain, k / q);\n }\n\n return scale;\n }\n\n function scale(x) {\n if (!isNaN(x = +x)) return range[d3.bisect(thresholds, x)];\n }\n\n scale.domain = function (x) {\n if (!arguments.length) return domain;\n domain = x.map(d3_number).filter(d3_numeric).sort(d3_ascending);\n return rescale();\n };\n\n scale.range = function (x) {\n if (!arguments.length) return range;\n range = x;\n return rescale();\n };\n\n scale.quantiles = function () {\n return thresholds;\n };\n\n scale.invertExtent = function (y) {\n y = range.indexOf(y);\n return y < 0 ? [NaN, NaN] : [y > 0 ? thresholds[y - 1] : domain[0], y < thresholds.length ? thresholds[y] : domain[domain.length - 1]];\n };\n\n scale.copy = function () {\n return d3_scale_quantile(domain, range);\n };\n\n return rescale();\n }\n\n d3.scale.quantize = function () {\n return d3_scale_quantize(0, 1, [0, 1]);\n };\n\n function d3_scale_quantize(x0, x1, range) {\n var kx, i;\n\n function scale(x) {\n return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))];\n }\n\n function rescale() {\n kx = range.length / (x1 - x0);\n i = range.length - 1;\n return scale;\n }\n\n scale.domain = function (x) {\n if (!arguments.length) return [x0, x1];\n x0 = +x[0];\n x1 = +x[x.length - 1];\n return rescale();\n };\n\n scale.range = function (x) {\n if (!arguments.length) return range;\n range = x;\n return rescale();\n };\n\n scale.invertExtent = function (y) {\n y = range.indexOf(y);\n y = y < 0 ? NaN : y / kx + x0;\n return [y, y + 1 / kx];\n };\n\n scale.copy = function () {\n return d3_scale_quantize(x0, x1, range);\n };\n\n return rescale();\n }\n\n d3.scale.threshold = function () {\n return d3_scale_threshold([.5], [0, 1]);\n };\n\n function d3_scale_threshold(domain, range) {\n function scale(x) {\n if (x <= x) return range[d3.bisect(domain, x)];\n }\n\n scale.domain = function (_) {\n if (!arguments.length) return domain;\n domain = _;\n return scale;\n };\n\n scale.range = function (_) {\n if (!arguments.length) return range;\n range = _;\n return scale;\n };\n\n scale.invertExtent = function (y) {\n y = range.indexOf(y);\n return [domain[y - 1], domain[y]];\n };\n\n scale.copy = function () {\n return d3_scale_threshold(domain, range);\n };\n\n return scale;\n }\n\n d3.scale.identity = function () {\n return d3_scale_identity([0, 1]);\n };\n\n function d3_scale_identity(domain) {\n function identity(x) {\n return +x;\n }\n\n identity.invert = identity;\n\n identity.domain = identity.range = function (x) {\n if (!arguments.length) return domain;\n domain = x.map(identity);\n return identity;\n };\n\n identity.ticks = function (m) {\n return d3_scale_linearTicks(domain, m);\n };\n\n identity.tickFormat = function (m, format) {\n return d3_scale_linearTickFormat(domain, m, format);\n };\n\n identity.copy = function () {\n return d3_scale_identity(domain);\n };\n\n return identity;\n }\n\n d3.svg = {};\n\n function d3_zero() {\n return 0;\n }\n\n d3.svg.arc = function () {\n var innerRadius = d3_svg_arcInnerRadius,\n outerRadius = d3_svg_arcOuterRadius,\n cornerRadius = d3_zero,\n padRadius = d3_svg_arcAuto,\n startAngle = d3_svg_arcStartAngle,\n endAngle = d3_svg_arcEndAngle,\n padAngle = d3_svg_arcPadAngle;\n\n function arc() {\n var r0 = Math.max(0, +innerRadius.apply(this, arguments)),\n r1 = Math.max(0, +outerRadius.apply(this, arguments)),\n a0 = startAngle.apply(this, arguments) - halfπ,\n a1 = endAngle.apply(this, arguments) - halfπ,\n da = Math.abs(a1 - a0),\n cw = a0 > a1 ? 0 : 1;\n if (r1 < r0) rc = r1, r1 = r0, r0 = rc;\n if (da >= τε) return circleSegment(r1, cw) + (r0 ? circleSegment(r0, 1 - cw) : \"\") + \"Z\";\n var rc,\n cr,\n rp,\n ap,\n p0 = 0,\n p1 = 0,\n x0,\n y0,\n x1,\n y1,\n x2,\n y2,\n x3,\n y3,\n path = [];\n\n if (ap = (+padAngle.apply(this, arguments) || 0) / 2) {\n rp = padRadius === d3_svg_arcAuto ? Math.sqrt(r0 * r0 + r1 * r1) : +padRadius.apply(this, arguments);\n if (!cw) p1 *= -1;\n if (r1) p1 = d3_asin(rp / r1 * Math.sin(ap));\n if (r0) p0 = d3_asin(rp / r0 * Math.sin(ap));\n }\n\n if (r1) {\n x0 = r1 * Math.cos(a0 + p1);\n y0 = r1 * Math.sin(a0 + p1);\n x1 = r1 * Math.cos(a1 - p1);\n y1 = r1 * Math.sin(a1 - p1);\n var l1 = Math.abs(a1 - a0 - 2 * p1) <= π ? 0 : 1;\n\n if (p1 && d3_svg_arcSweep(x0, y0, x1, y1) === cw ^ l1) {\n var h1 = (a0 + a1) / 2;\n x0 = r1 * Math.cos(h1);\n y0 = r1 * Math.sin(h1);\n x1 = y1 = null;\n }\n } else {\n x0 = y0 = 0;\n }\n\n if (r0) {\n x2 = r0 * Math.cos(a1 - p0);\n y2 = r0 * Math.sin(a1 - p0);\n x3 = r0 * Math.cos(a0 + p0);\n y3 = r0 * Math.sin(a0 + p0);\n var l0 = Math.abs(a0 - a1 + 2 * p0) <= π ? 0 : 1;\n\n if (p0 && d3_svg_arcSweep(x2, y2, x3, y3) === 1 - cw ^ l0) {\n var h0 = (a0 + a1) / 2;\n x2 = r0 * Math.cos(h0);\n y2 = r0 * Math.sin(h0);\n x3 = y3 = null;\n }\n } else {\n x2 = y2 = 0;\n }\n\n if (da > ε && (rc = Math.min(Math.abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments))) > .001) {\n cr = r0 < r1 ^ cw ? 0 : 1;\n var rc1 = rc,\n rc0 = rc;\n\n if (da < π) {\n var oc = x3 == null ? [x2, y2] : x1 == null ? [x0, y0] : d3_geom_polygonIntersect([x0, y0], [x3, y3], [x1, y1], [x2, y2]),\n ax = x0 - oc[0],\n ay = y0 - oc[1],\n bx = x1 - oc[0],\n by = y1 - oc[1],\n kc = 1 / Math.sin(Math.acos((ax * bx + ay * by) / (Math.sqrt(ax * ax + ay * ay) * Math.sqrt(bx * bx + by * by))) / 2),\n lc = Math.sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = Math.min(rc, (r0 - lc) / (kc - 1));\n rc1 = Math.min(rc, (r1 - lc) / (kc + 1));\n }\n\n if (x1 != null) {\n var t30 = d3_svg_arcCornerTangents(x3 == null ? [x2, y2] : [x3, y3], [x0, y0], r1, rc1, cw),\n t12 = d3_svg_arcCornerTangents([x1, y1], [x2, y2], r1, rc1, cw);\n\n if (rc === rc1) {\n path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t30[1], \"A\", r1, \",\", r1, \" 0 \", 1 - cw ^ d3_svg_arcSweep(t30[1][0], t30[1][1], t12[1][0], t12[1][1]), \",\", cw, \" \", t12[1], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t12[0]);\n } else {\n path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 1,\", cr, \" \", t12[0]);\n }\n } else {\n path.push(\"M\", x0, \",\", y0);\n }\n\n if (x3 != null) {\n var t03 = d3_svg_arcCornerTangents([x0, y0], [x3, y3], r0, -rc0, cw),\n t21 = d3_svg_arcCornerTangents([x2, y2], x1 == null ? [x0, y0] : [x1, y1], r0, -rc0, cw);\n\n if (rc === rc0) {\n path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t21[1], \"A\", r0, \",\", r0, \" 0 \", cw ^ d3_svg_arcSweep(t21[1][0], t21[1][1], t03[1][0], t03[1][1]), \",\", 1 - cw, \" \", t03[1], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n } else {\n path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n }\n } else {\n path.push(\"L\", x2, \",\", y2);\n }\n } else {\n path.push(\"M\", x0, \",\", y0);\n if (x1 != null) path.push(\"A\", r1, \",\", r1, \" 0 \", l1, \",\", cw, \" \", x1, \",\", y1);\n path.push(\"L\", x2, \",\", y2);\n if (x3 != null) path.push(\"A\", r0, \",\", r0, \" 0 \", l0, \",\", 1 - cw, \" \", x3, \",\", y3);\n }\n\n path.push(\"Z\");\n return path.join(\"\");\n }\n\n function circleSegment(r1, cw) {\n return \"M0,\" + r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + -r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + r1;\n }\n\n arc.innerRadius = function (v) {\n if (!arguments.length) return innerRadius;\n innerRadius = d3_functor(v);\n return arc;\n };\n\n arc.outerRadius = function (v) {\n if (!arguments.length) return outerRadius;\n outerRadius = d3_functor(v);\n return arc;\n };\n\n arc.cornerRadius = function (v) {\n if (!arguments.length) return cornerRadius;\n cornerRadius = d3_functor(v);\n return arc;\n };\n\n arc.padRadius = function (v) {\n if (!arguments.length) return padRadius;\n padRadius = v == d3_svg_arcAuto ? d3_svg_arcAuto : d3_functor(v);\n return arc;\n };\n\n arc.startAngle = function (v) {\n if (!arguments.length) return startAngle;\n startAngle = d3_functor(v);\n return arc;\n };\n\n arc.endAngle = function (v) {\n if (!arguments.length) return endAngle;\n endAngle = d3_functor(v);\n return arc;\n };\n\n arc.padAngle = function (v) {\n if (!arguments.length) return padAngle;\n padAngle = d3_functor(v);\n return arc;\n };\n\n arc.centroid = function () {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - halfπ;\n return [Math.cos(a) * r, Math.sin(a) * r];\n };\n\n return arc;\n };\n\n var d3_svg_arcAuto = \"auto\";\n\n function d3_svg_arcInnerRadius(d) {\n return d.innerRadius;\n }\n\n function d3_svg_arcOuterRadius(d) {\n return d.outerRadius;\n }\n\n function d3_svg_arcStartAngle(d) {\n return d.startAngle;\n }\n\n function d3_svg_arcEndAngle(d) {\n return d.endAngle;\n }\n\n function d3_svg_arcPadAngle(d) {\n return d && d.padAngle;\n }\n\n function d3_svg_arcSweep(x0, y0, x1, y1) {\n return (x0 - x1) * y0 - (y0 - y1) * x0 > 0 ? 0 : 1;\n }\n\n function d3_svg_arcCornerTangents(p0, p1, r1, rc, cw) {\n var x01 = p0[0] - p1[0],\n y01 = p0[1] - p1[1],\n lo = (cw ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x1 = p0[0] + ox,\n y1 = p0[1] + oy,\n x2 = p1[0] + ox,\n y2 = p1[1] + oy,\n x3 = (x1 + x2) / 2,\n y3 = (y1 + y2) / 2,\n dx = x2 - x1,\n dy = y2 - y1,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x1 * y2 - x2 * y1,\n d = (dy < 0 ? -1 : 1) * Math.sqrt(Math.max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x3,\n dy0 = cy0 - y3,\n dx1 = cx1 - x3,\n dy1 = cy1 - y3;\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n return [[cx0 - ox, cy0 - oy], [cx0 * r1 / r, cy0 * r1 / r]];\n }\n\n function d3_svg_line(projection) {\n var x = d3_geom_pointX,\n y = d3_geom_pointY,\n defined = d3_true,\n interpolate = d3_svg_lineLinear,\n interpolateKey = interpolate.key,\n tension = .7;\n\n function line(data) {\n var segments = [],\n points = [],\n i = -1,\n n = data.length,\n d,\n fx = d3_functor(x),\n fy = d3_functor(y);\n\n function segment() {\n segments.push(\"M\", interpolate(projection(points), tension));\n }\n\n while (++i < n) {\n if (defined.call(this, d = data[i], i)) {\n points.push([+fx.call(this, d, i), +fy.call(this, d, i)]);\n } else if (points.length) {\n segment();\n points = [];\n }\n }\n\n if (points.length) segment();\n return segments.length ? segments.join(\"\") : null;\n }\n\n line.x = function (_) {\n if (!arguments.length) return x;\n x = _;\n return line;\n };\n\n line.y = function (_) {\n if (!arguments.length) return y;\n y = _;\n return line;\n };\n\n line.defined = function (_) {\n if (!arguments.length) return defined;\n defined = _;\n return line;\n };\n\n line.interpolate = function (_) {\n if (!arguments.length) return interpolateKey;\n if (typeof _ === \"function\") interpolateKey = interpolate = _;else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n return line;\n };\n\n line.tension = function (_) {\n if (!arguments.length) return tension;\n tension = _;\n return line;\n };\n\n return line;\n }\n\n d3.svg.line = function () {\n return d3_svg_line(d3_identity);\n };\n\n var d3_svg_lineInterpolators = d3.map({\n linear: d3_svg_lineLinear,\n \"linear-closed\": d3_svg_lineLinearClosed,\n step: d3_svg_lineStep,\n \"step-before\": d3_svg_lineStepBefore,\n \"step-after\": d3_svg_lineStepAfter,\n basis: d3_svg_lineBasis,\n \"basis-open\": d3_svg_lineBasisOpen,\n \"basis-closed\": d3_svg_lineBasisClosed,\n bundle: d3_svg_lineBundle,\n cardinal: d3_svg_lineCardinal,\n \"cardinal-open\": d3_svg_lineCardinalOpen,\n \"cardinal-closed\": d3_svg_lineCardinalClosed,\n monotone: d3_svg_lineMonotone\n });\n d3_svg_lineInterpolators.forEach(function (key, value) {\n value.key = key;\n value.closed = /-closed$/.test(key);\n });\n\n function d3_svg_lineLinear(points) {\n return points.length > 1 ? points.join(\"L\") : points + \"Z\";\n }\n\n function d3_svg_lineLinearClosed(points) {\n return points.join(\"L\") + \"Z\";\n }\n\n function d3_svg_lineStep(points) {\n var i = 0,\n n = points.length,\n p = points[0],\n path = [p[0], \",\", p[1]];\n\n while (++i < n) {\n path.push(\"H\", (p[0] + (p = points[i])[0]) / 2, \"V\", p[1]);\n }\n\n if (n > 1) path.push(\"H\", p[0]);\n return path.join(\"\");\n }\n\n function d3_svg_lineStepBefore(points) {\n var i = 0,\n n = points.length,\n p = points[0],\n path = [p[0], \",\", p[1]];\n\n while (++i < n) {\n path.push(\"V\", (p = points[i])[1], \"H\", p[0]);\n }\n\n return path.join(\"\");\n }\n\n function d3_svg_lineStepAfter(points) {\n var i = 0,\n n = points.length,\n p = points[0],\n path = [p[0], \",\", p[1]];\n\n while (++i < n) {\n path.push(\"H\", (p = points[i])[0], \"V\", p[1]);\n }\n\n return path.join(\"\");\n }\n\n function d3_svg_lineCardinalOpen(points, tension) {\n return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, -1), d3_svg_lineCardinalTangents(points, tension));\n }\n\n function d3_svg_lineCardinalClosed(points, tension) {\n return points.length < 3 ? d3_svg_lineLinearClosed(points) : points[0] + d3_svg_lineHermite((points.push(points[0]), points), d3_svg_lineCardinalTangents([points[points.length - 2]].concat(points, [points[1]]), tension));\n }\n\n function d3_svg_lineCardinal(points, tension) {\n return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineCardinalTangents(points, tension));\n }\n\n function d3_svg_lineHermite(points, tangents) {\n if (tangents.length < 1 || points.length != tangents.length && points.length != tangents.length + 2) {\n return d3_svg_lineLinear(points);\n }\n\n var quad = points.length != tangents.length,\n path = \"\",\n p0 = points[0],\n p = points[1],\n t0 = tangents[0],\n t = t0,\n pi = 1;\n\n if (quad) {\n path += \"Q\" + (p[0] - t0[0] * 2 / 3) + \",\" + (p[1] - t0[1] * 2 / 3) + \",\" + p[0] + \",\" + p[1];\n p0 = points[1];\n pi = 2;\n }\n\n if (tangents.length > 1) {\n t = tangents[1];\n p = points[pi];\n pi++;\n path += \"C\" + (p0[0] + t0[0]) + \",\" + (p0[1] + t0[1]) + \",\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n\n for (var i = 2; i < tangents.length; i++, pi++) {\n p = points[pi];\n t = tangents[i];\n path += \"S\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n }\n }\n\n if (quad) {\n var lp = points[pi];\n path += \"Q\" + (p[0] + t[0] * 2 / 3) + \",\" + (p[1] + t[1] * 2 / 3) + \",\" + lp[0] + \",\" + lp[1];\n }\n\n return path;\n }\n\n function d3_svg_lineCardinalTangents(points, tension) {\n var tangents = [],\n a = (1 - tension) / 2,\n p0,\n p1 = points[0],\n p2 = points[1],\n i = 1,\n n = points.length;\n\n while (++i < n) {\n p0 = p1;\n p1 = p2;\n p2 = points[i];\n tangents.push([a * (p2[0] - p0[0]), a * (p2[1] - p0[1])]);\n }\n\n return tangents;\n }\n\n function d3_svg_lineBasis(points) {\n if (points.length < 3) return d3_svg_lineLinear(points);\n var i = 1,\n n = points.length,\n pi = points[0],\n x0 = pi[0],\n y0 = pi[1],\n px = [x0, x0, x0, (pi = points[1])[0]],\n py = [y0, y0, y0, pi[1]],\n path = [x0, \",\", y0, \"L\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py)];\n points.push(points[n - 1]);\n\n while (++i <= n) {\n pi = points[i];\n px.shift();\n px.push(pi[0]);\n py.shift();\n py.push(pi[1]);\n d3_svg_lineBasisBezier(path, px, py);\n }\n\n points.pop();\n path.push(\"L\", pi);\n return path.join(\"\");\n }\n\n function d3_svg_lineBasisOpen(points) {\n if (points.length < 4) return d3_svg_lineLinear(points);\n var path = [],\n i = -1,\n n = points.length,\n pi,\n px = [0],\n py = [0];\n\n while (++i < 3) {\n pi = points[i];\n px.push(pi[0]);\n py.push(pi[1]);\n }\n\n path.push(d3_svg_lineDot4(d3_svg_lineBasisBezier3, px) + \",\" + d3_svg_lineDot4(d3_svg_lineBasisBezier3, py));\n --i;\n\n while (++i < n) {\n pi = points[i];\n px.shift();\n px.push(pi[0]);\n py.shift();\n py.push(pi[1]);\n d3_svg_lineBasisBezier(path, px, py);\n }\n\n return path.join(\"\");\n }\n\n function d3_svg_lineBasisClosed(points) {\n var path,\n i = -1,\n n = points.length,\n m = n + 4,\n pi,\n px = [],\n py = [];\n\n while (++i < 4) {\n pi = points[i % n];\n px.push(pi[0]);\n py.push(pi[1]);\n }\n\n path = [d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py)];\n --i;\n\n while (++i < m) {\n pi = points[i % n];\n px.shift();\n px.push(pi[0]);\n py.shift();\n py.push(pi[1]);\n d3_svg_lineBasisBezier(path, px, py);\n }\n\n return path.join(\"\");\n }\n\n function d3_svg_lineBundle(points, tension) {\n var n = points.length - 1;\n\n if (n) {\n var x0 = points[0][0],\n y0 = points[0][1],\n dx = points[n][0] - x0,\n dy = points[n][1] - y0,\n i = -1,\n p,\n t;\n\n while (++i <= n) {\n p = points[i];\n t = i / n;\n p[0] = tension * p[0] + (1 - tension) * (x0 + t * dx);\n p[1] = tension * p[1] + (1 - tension) * (y0 + t * dy);\n }\n }\n\n return d3_svg_lineBasis(points);\n }\n\n function d3_svg_lineDot4(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n }\n\n var d3_svg_lineBasisBezier1 = [0, 2 / 3, 1 / 3, 0],\n d3_svg_lineBasisBezier2 = [0, 1 / 3, 2 / 3, 0],\n d3_svg_lineBasisBezier3 = [0, 1 / 6, 2 / 3, 1 / 6];\n\n function d3_svg_lineBasisBezier(path, x, y) {\n path.push(\"C\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, y));\n }\n\n function d3_svg_lineSlope(p0, p1) {\n return (p1[1] - p0[1]) / (p1[0] - p0[0]);\n }\n\n function d3_svg_lineFiniteDifferences(points) {\n var i = 0,\n j = points.length - 1,\n m = [],\n p0 = points[0],\n p1 = points[1],\n d = m[0] = d3_svg_lineSlope(p0, p1);\n\n while (++i < j) {\n m[i] = (d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1]))) / 2;\n }\n\n m[i] = d;\n return m;\n }\n\n function d3_svg_lineMonotoneTangents(points) {\n var tangents = [],\n d,\n a,\n b,\n s,\n m = d3_svg_lineFiniteDifferences(points),\n i = -1,\n j = points.length - 1;\n\n while (++i < j) {\n d = d3_svg_lineSlope(points[i], points[i + 1]);\n\n if (abs(d) < ε) {\n m[i] = m[i + 1] = 0;\n } else {\n a = m[i] / d;\n b = m[i + 1] / d;\n s = a * a + b * b;\n\n if (s > 9) {\n s = d * 3 / Math.sqrt(s);\n m[i] = s * a;\n m[i + 1] = s * b;\n }\n }\n }\n\n i = -1;\n\n while (++i <= j) {\n s = (points[Math.min(j, i + 1)][0] - points[Math.max(0, i - 1)][0]) / (6 * (1 + m[i] * m[i]));\n tangents.push([s || 0, m[i] * s || 0]);\n }\n\n return tangents;\n }\n\n function d3_svg_lineMonotone(points) {\n return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineMonotoneTangents(points));\n }\n\n d3.svg.line.radial = function () {\n var line = d3_svg_line(d3_svg_lineRadial);\n line.radius = line.x, delete line.x;\n line.angle = line.y, delete line.y;\n return line;\n };\n\n function d3_svg_lineRadial(points) {\n var point,\n i = -1,\n n = points.length,\n r,\n a;\n\n while (++i < n) {\n point = points[i];\n r = point[0];\n a = point[1] - halfπ;\n point[0] = r * Math.cos(a);\n point[1] = r * Math.sin(a);\n }\n\n return points;\n }\n\n function d3_svg_area(projection) {\n var x0 = d3_geom_pointX,\n x1 = d3_geom_pointX,\n y0 = 0,\n y1 = d3_geom_pointY,\n defined = d3_true,\n interpolate = d3_svg_lineLinear,\n interpolateKey = interpolate.key,\n interpolateReverse = interpolate,\n L = \"L\",\n tension = .7;\n\n function area(data) {\n var segments = [],\n points0 = [],\n points1 = [],\n i = -1,\n n = data.length,\n d,\n fx0 = d3_functor(x0),\n fy0 = d3_functor(y0),\n fx1 = x0 === x1 ? function () {\n return x;\n } : d3_functor(x1),\n fy1 = y0 === y1 ? function () {\n return y;\n } : d3_functor(y1),\n x,\n y;\n\n function segment() {\n segments.push(\"M\", interpolate(projection(points1), tension), L, interpolateReverse(projection(points0.reverse()), tension), \"Z\");\n }\n\n while (++i < n) {\n if (defined.call(this, d = data[i], i)) {\n points0.push([x = +fx0.call(this, d, i), y = +fy0.call(this, d, i)]);\n points1.push([+fx1.call(this, d, i), +fy1.call(this, d, i)]);\n } else if (points0.length) {\n segment();\n points0 = [];\n points1 = [];\n }\n }\n\n if (points0.length) segment();\n return segments.length ? segments.join(\"\") : null;\n }\n\n area.x = function (_) {\n if (!arguments.length) return x1;\n x0 = x1 = _;\n return area;\n };\n\n area.x0 = function (_) {\n if (!arguments.length) return x0;\n x0 = _;\n return area;\n };\n\n area.x1 = function (_) {\n if (!arguments.length) return x1;\n x1 = _;\n return area;\n };\n\n area.y = function (_) {\n if (!arguments.length) return y1;\n y0 = y1 = _;\n return area;\n };\n\n area.y0 = function (_) {\n if (!arguments.length) return y0;\n y0 = _;\n return area;\n };\n\n area.y1 = function (_) {\n if (!arguments.length) return y1;\n y1 = _;\n return area;\n };\n\n area.defined = function (_) {\n if (!arguments.length) return defined;\n defined = _;\n return area;\n };\n\n area.interpolate = function (_) {\n if (!arguments.length) return interpolateKey;\n if (typeof _ === \"function\") interpolateKey = interpolate = _;else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n interpolateReverse = interpolate.reverse || interpolate;\n L = interpolate.closed ? \"M\" : \"L\";\n return area;\n };\n\n area.tension = function (_) {\n if (!arguments.length) return tension;\n tension = _;\n return area;\n };\n\n return area;\n }\n\n d3_svg_lineStepBefore.reverse = d3_svg_lineStepAfter;\n d3_svg_lineStepAfter.reverse = d3_svg_lineStepBefore;\n\n d3.svg.area = function () {\n return d3_svg_area(d3_identity);\n };\n\n d3.svg.area.radial = function () {\n var area = d3_svg_area(d3_svg_lineRadial);\n area.radius = area.x, delete area.x;\n area.innerRadius = area.x0, delete area.x0;\n area.outerRadius = area.x1, delete area.x1;\n area.angle = area.y, delete area.y;\n area.startAngle = area.y0, delete area.y0;\n area.endAngle = area.y1, delete area.y1;\n return area;\n };\n\n d3.svg.chord = function () {\n var source = d3_source,\n target = d3_target,\n radius = d3_svg_chordRadius,\n startAngle = d3_svg_arcStartAngle,\n endAngle = d3_svg_arcEndAngle;\n\n function chord(d, i) {\n var s = subgroup(this, source, d, i),\n t = subgroup(this, target, d, i);\n return \"M\" + s.p0 + arc(s.r, s.p1, s.a1 - s.a0) + (equals(s, t) ? curve(s.r, s.p1, s.r, s.p0) : curve(s.r, s.p1, t.r, t.p0) + arc(t.r, t.p1, t.a1 - t.a0) + curve(t.r, t.p1, s.r, s.p0)) + \"Z\";\n }\n\n function subgroup(self, f, d, i) {\n var subgroup = f.call(self, d, i),\n r = radius.call(self, subgroup, i),\n a0 = startAngle.call(self, subgroup, i) - halfπ,\n a1 = endAngle.call(self, subgroup, i) - halfπ;\n return {\n r: r,\n a0: a0,\n a1: a1,\n p0: [r * Math.cos(a0), r * Math.sin(a0)],\n p1: [r * Math.cos(a1), r * Math.sin(a1)]\n };\n }\n\n function equals(a, b) {\n return a.a0 == b.a0 && a.a1 == b.a1;\n }\n\n function arc(r, p, a) {\n return \"A\" + r + \",\" + r + \" 0 \" + +(a > π) + \",1 \" + p;\n }\n\n function curve(r0, p0, r1, p1) {\n return \"Q 0,0 \" + p1;\n }\n\n chord.radius = function (v) {\n if (!arguments.length) return radius;\n radius = d3_functor(v);\n return chord;\n };\n\n chord.source = function (v) {\n if (!arguments.length) return source;\n source = d3_functor(v);\n return chord;\n };\n\n chord.target = function (v) {\n if (!arguments.length) return target;\n target = d3_functor(v);\n return chord;\n };\n\n chord.startAngle = function (v) {\n if (!arguments.length) return startAngle;\n startAngle = d3_functor(v);\n return chord;\n };\n\n chord.endAngle = function (v) {\n if (!arguments.length) return endAngle;\n endAngle = d3_functor(v);\n return chord;\n };\n\n return chord;\n };\n\n function d3_svg_chordRadius(d) {\n return d.radius;\n }\n\n d3.svg.diagonal = function () {\n var source = d3_source,\n target = d3_target,\n projection = d3_svg_diagonalProjection;\n\n function diagonal(d, i) {\n var p0 = source.call(this, d, i),\n p3 = target.call(this, d, i),\n m = (p0.y + p3.y) / 2,\n p = [p0, {\n x: p0.x,\n y: m\n }, {\n x: p3.x,\n y: m\n }, p3];\n p = p.map(projection);\n return \"M\" + p[0] + \"C\" + p[1] + \" \" + p[2] + \" \" + p[3];\n }\n\n diagonal.source = function (x) {\n if (!arguments.length) return source;\n source = d3_functor(x);\n return diagonal;\n };\n\n diagonal.target = function (x) {\n if (!arguments.length) return target;\n target = d3_functor(x);\n return diagonal;\n };\n\n diagonal.projection = function (x) {\n if (!arguments.length) return projection;\n projection = x;\n return diagonal;\n };\n\n return diagonal;\n };\n\n function d3_svg_diagonalProjection(d) {\n return [d.x, d.y];\n }\n\n d3.svg.diagonal.radial = function () {\n var diagonal = d3.svg.diagonal(),\n projection = d3_svg_diagonalProjection,\n projection_ = diagonal.projection;\n\n diagonal.projection = function (x) {\n return arguments.length ? projection_(d3_svg_diagonalRadialProjection(projection = x)) : projection;\n };\n\n return diagonal;\n };\n\n function d3_svg_diagonalRadialProjection(projection) {\n return function () {\n var d = projection.apply(this, arguments),\n r = d[0],\n a = d[1] - halfπ;\n return [r * Math.cos(a), r * Math.sin(a)];\n };\n }\n\n d3.svg.symbol = function () {\n var type = d3_svg_symbolType,\n size = d3_svg_symbolSize;\n\n function symbol(d, i) {\n return (d3_svg_symbols.get(type.call(this, d, i)) || d3_svg_symbolCircle)(size.call(this, d, i));\n }\n\n symbol.type = function (x) {\n if (!arguments.length) return type;\n type = d3_functor(x);\n return symbol;\n };\n\n symbol.size = function (x) {\n if (!arguments.length) return size;\n size = d3_functor(x);\n return symbol;\n };\n\n return symbol;\n };\n\n function d3_svg_symbolSize() {\n return 64;\n }\n\n function d3_svg_symbolType() {\n return \"circle\";\n }\n\n function d3_svg_symbolCircle(size) {\n var r = Math.sqrt(size / π);\n return \"M0,\" + r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + -r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + r + \"Z\";\n }\n\n var d3_svg_symbols = d3.map({\n circle: d3_svg_symbolCircle,\n cross: function cross(size) {\n var r = Math.sqrt(size / 5) / 2;\n return \"M\" + -3 * r + \",\" + -r + \"H\" + -r + \"V\" + -3 * r + \"H\" + r + \"V\" + -r + \"H\" + 3 * r + \"V\" + r + \"H\" + r + \"V\" + 3 * r + \"H\" + -r + \"V\" + r + \"H\" + -3 * r + \"Z\";\n },\n diamond: function diamond(size) {\n var ry = Math.sqrt(size / (2 * d3_svg_symbolTan30)),\n rx = ry * d3_svg_symbolTan30;\n return \"M0,\" + -ry + \"L\" + rx + \",0\" + \" 0,\" + ry + \" \" + -rx + \",0\" + \"Z\";\n },\n square: function square(size) {\n var r = Math.sqrt(size) / 2;\n return \"M\" + -r + \",\" + -r + \"L\" + r + \",\" + -r + \" \" + r + \",\" + r + \" \" + -r + \",\" + r + \"Z\";\n },\n \"triangle-down\": function triangleDown(size) {\n var rx = Math.sqrt(size / d3_svg_symbolSqrt3),\n ry = rx * d3_svg_symbolSqrt3 / 2;\n return \"M0,\" + ry + \"L\" + rx + \",\" + -ry + \" \" + -rx + \",\" + -ry + \"Z\";\n },\n \"triangle-up\": function triangleUp(size) {\n var rx = Math.sqrt(size / d3_svg_symbolSqrt3),\n ry = rx * d3_svg_symbolSqrt3 / 2;\n return \"M0,\" + -ry + \"L\" + rx + \",\" + ry + \" \" + -rx + \",\" + ry + \"Z\";\n }\n });\n d3.svg.symbolTypes = d3_svg_symbols.keys();\n var d3_svg_symbolSqrt3 = Math.sqrt(3),\n d3_svg_symbolTan30 = Math.tan(30 * d3_radians);\n\n d3_selectionPrototype.transition = function (name) {\n var id = d3_transitionInheritId || ++d3_transitionId,\n ns = d3_transitionNamespace(name),\n subgroups = [],\n subgroup,\n node,\n transition = d3_transitionInherit || {\n time: Date.now(),\n ease: d3_ease_cubicInOut,\n delay: 0,\n duration: 250\n };\n\n for (var j = -1, m = this.length; ++j < m;) {\n subgroups.push(subgroup = []);\n\n for (var group = this[j], i = -1, n = group.length; ++i < n;) {\n if (node = group[i]) d3_transitionNode(node, i, ns, id, transition);\n subgroup.push(node);\n }\n }\n\n return d3_transition(subgroups, ns, id);\n };\n\n d3_selectionPrototype.interrupt = function (name) {\n return this.each(name == null ? d3_selection_interrupt : d3_selection_interruptNS(d3_transitionNamespace(name)));\n };\n\n var d3_selection_interrupt = d3_selection_interruptNS(d3_transitionNamespace());\n\n function d3_selection_interruptNS(ns) {\n return function () {\n var lock, activeId, active;\n\n if ((lock = this[ns]) && (active = lock[activeId = lock.active])) {\n active.timer.c = null;\n active.timer.t = NaN;\n if (--lock.count) delete lock[activeId];else delete this[ns];\n lock.active += .5;\n active.event && active.event.interrupt.call(this, this.__data__, active.index);\n }\n };\n }\n\n function d3_transition(groups, ns, id) {\n d3_subclass(groups, d3_transitionPrototype);\n groups.namespace = ns;\n groups.id = id;\n return groups;\n }\n\n var d3_transitionPrototype = [],\n d3_transitionId = 0,\n d3_transitionInheritId,\n d3_transitionInherit;\n d3_transitionPrototype.call = d3_selectionPrototype.call;\n d3_transitionPrototype.empty = d3_selectionPrototype.empty;\n d3_transitionPrototype.node = d3_selectionPrototype.node;\n d3_transitionPrototype.size = d3_selectionPrototype.size;\n\n d3.transition = function (selection, name) {\n return selection && selection.transition ? d3_transitionInheritId ? selection.transition(name) : selection : d3.selection().transition(selection);\n };\n\n d3.transition.prototype = d3_transitionPrototype;\n\n d3_transitionPrototype.select = function (selector) {\n var id = this.id,\n ns = this.namespace,\n subgroups = [],\n subgroup,\n subnode,\n node;\n selector = d3_selection_selector(selector);\n\n for (var j = -1, m = this.length; ++j < m;) {\n subgroups.push(subgroup = []);\n\n for (var group = this[j], i = -1, n = group.length; ++i < n;) {\n if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i, j))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n d3_transitionNode(subnode, i, ns, id, node[ns][id]);\n subgroup.push(subnode);\n } else {\n subgroup.push(null);\n }\n }\n }\n\n return d3_transition(subgroups, ns, id);\n };\n\n d3_transitionPrototype.selectAll = function (selector) {\n var id = this.id,\n ns = this.namespace,\n subgroups = [],\n subgroup,\n subnodes,\n node,\n subnode,\n transition;\n selector = d3_selection_selectorAll(selector);\n\n for (var j = -1, m = this.length; ++j < m;) {\n for (var group = this[j], i = -1, n = group.length; ++i < n;) {\n if (node = group[i]) {\n transition = node[ns][id];\n subnodes = selector.call(node, node.__data__, i, j);\n subgroups.push(subgroup = []);\n\n for (var k = -1, o = subnodes.length; ++k < o;) {\n if (subnode = subnodes[k]) d3_transitionNode(subnode, k, ns, id, transition);\n subgroup.push(subnode);\n }\n }\n }\n }\n\n return d3_transition(subgroups, ns, id);\n };\n\n d3_transitionPrototype.filter = function (filter) {\n var subgroups = [],\n subgroup,\n group,\n node;\n if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n\n for (var j = 0, m = this.length; j < m; j++) {\n subgroups.push(subgroup = []);\n\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n subgroup.push(node);\n }\n }\n }\n\n return d3_transition(subgroups, this.namespace, this.id);\n };\n\n d3_transitionPrototype.tween = function (name, tween) {\n var id = this.id,\n ns = this.namespace;\n if (arguments.length < 2) return this.node()[ns][id].tween.get(name);\n return d3_selection_each(this, tween == null ? function (node) {\n node[ns][id].tween.remove(name);\n } : function (node) {\n node[ns][id].tween.set(name, tween);\n });\n };\n\n function d3_transition_tween(groups, name, value, tween) {\n var id = groups.id,\n ns = groups.namespace;\n return d3_selection_each(groups, typeof value === \"function\" ? function (node, i, j) {\n node[ns][id].tween.set(name, tween(value.call(node, node.__data__, i, j)));\n } : (value = tween(value), function (node) {\n node[ns][id].tween.set(name, value);\n }));\n }\n\n d3_transitionPrototype.attr = function (nameNS, value) {\n if (arguments.length < 2) {\n for (value in nameNS) {\n this.attr(value, nameNS[value]);\n }\n\n return this;\n }\n\n var interpolate = nameNS == \"transform\" ? d3_interpolateTransform : d3_interpolate,\n name = d3.ns.qualify(nameNS);\n\n function attrNull() {\n this.removeAttribute(name);\n }\n\n function attrNullNS() {\n this.removeAttributeNS(name.space, name.local);\n }\n\n function attrTween(b) {\n return b == null ? attrNull : (b += \"\", function () {\n var a = this.getAttribute(name),\n i;\n return a !== b && (i = interpolate(a, b), function (t) {\n this.setAttribute(name, i(t));\n });\n });\n }\n\n function attrTweenNS(b) {\n return b == null ? attrNullNS : (b += \"\", function () {\n var a = this.getAttributeNS(name.space, name.local),\n i;\n return a !== b && (i = interpolate(a, b), function (t) {\n this.setAttributeNS(name.space, name.local, i(t));\n });\n });\n }\n\n return d3_transition_tween(this, \"attr.\" + nameNS, value, name.local ? attrTweenNS : attrTween);\n };\n\n d3_transitionPrototype.attrTween = function (nameNS, tween) {\n var name = d3.ns.qualify(nameNS);\n\n function attrTween(d, i) {\n var f = tween.call(this, d, i, this.getAttribute(name));\n return f && function (t) {\n this.setAttribute(name, f(t));\n };\n }\n\n function attrTweenNS(d, i) {\n var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local));\n return f && function (t) {\n this.setAttributeNS(name.space, name.local, f(t));\n };\n }\n\n return this.tween(\"attr.\" + nameNS, name.local ? attrTweenNS : attrTween);\n };\n\n d3_transitionPrototype.style = function (name, value, priority) {\n var n = arguments.length;\n\n if (n < 3) {\n if (typeof name !== \"string\") {\n if (n < 2) value = \"\";\n\n for (priority in name) {\n this.style(priority, name[priority], value);\n }\n\n return this;\n }\n\n priority = \"\";\n }\n\n function styleNull() {\n this.style.removeProperty(name);\n }\n\n function styleString(b) {\n return b == null ? styleNull : (b += \"\", function () {\n var a = d3_window(this).getComputedStyle(this, null).getPropertyValue(name),\n i;\n return a !== b && (i = d3_interpolate(a, b), function (t) {\n this.style.setProperty(name, i(t), priority);\n });\n });\n }\n\n return d3_transition_tween(this, \"style.\" + name, value, styleString);\n };\n\n d3_transitionPrototype.styleTween = function (name, tween, priority) {\n if (arguments.length < 3) priority = \"\";\n\n function styleTween(d, i) {\n var f = tween.call(this, d, i, d3_window(this).getComputedStyle(this, null).getPropertyValue(name));\n return f && function (t) {\n this.style.setProperty(name, f(t), priority);\n };\n }\n\n return this.tween(\"style.\" + name, styleTween);\n };\n\n d3_transitionPrototype.text = function (value) {\n return d3_transition_tween(this, \"text\", value, d3_transition_text);\n };\n\n function d3_transition_text(b) {\n if (b == null) b = \"\";\n return function () {\n this.textContent = b;\n };\n }\n\n d3_transitionPrototype.remove = function () {\n var ns = this.namespace;\n return this.each(\"end.transition\", function () {\n var p;\n if (this[ns].count < 2 && (p = this.parentNode)) p.removeChild(this);\n });\n };\n\n d3_transitionPrototype.ease = function (value) {\n var id = this.id,\n ns = this.namespace;\n if (arguments.length < 1) return this.node()[ns][id].ease;\n if (typeof value !== \"function\") value = d3.ease.apply(d3, arguments);\n return d3_selection_each(this, function (node) {\n node[ns][id].ease = value;\n });\n };\n\n d3_transitionPrototype.delay = function (value) {\n var id = this.id,\n ns = this.namespace;\n if (arguments.length < 1) return this.node()[ns][id].delay;\n return d3_selection_each(this, typeof value === \"function\" ? function (node, i, j) {\n node[ns][id].delay = +value.call(node, node.__data__, i, j);\n } : (value = +value, function (node) {\n node[ns][id].delay = value;\n }));\n };\n\n d3_transitionPrototype.duration = function (value) {\n var id = this.id,\n ns = this.namespace;\n if (arguments.length < 1) return this.node()[ns][id].duration;\n return d3_selection_each(this, typeof value === \"function\" ? function (node, i, j) {\n node[ns][id].duration = Math.max(1, value.call(node, node.__data__, i, j));\n } : (value = Math.max(1, value), function (node) {\n node[ns][id].duration = value;\n }));\n };\n\n d3_transitionPrototype.each = function (type, listener) {\n var id = this.id,\n ns = this.namespace;\n\n if (arguments.length < 2) {\n var inherit = d3_transitionInherit,\n inheritId = d3_transitionInheritId;\n\n try {\n d3_transitionInheritId = id;\n d3_selection_each(this, function (node, i, j) {\n d3_transitionInherit = node[ns][id];\n type.call(node, node.__data__, i, j);\n });\n } finally {\n d3_transitionInherit = inherit;\n d3_transitionInheritId = inheritId;\n }\n } else {\n d3_selection_each(this, function (node) {\n var transition = node[ns][id];\n (transition.event || (transition.event = d3.dispatch(\"start\", \"end\", \"interrupt\"))).on(type, listener);\n });\n }\n\n return this;\n };\n\n d3_transitionPrototype.transition = function () {\n var id0 = this.id,\n id1 = ++d3_transitionId,\n ns = this.namespace,\n subgroups = [],\n subgroup,\n group,\n node,\n transition;\n\n for (var j = 0, m = this.length; j < m; j++) {\n subgroups.push(subgroup = []);\n\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n if (node = group[i]) {\n transition = node[ns][id0];\n d3_transitionNode(node, i, ns, id1, {\n time: transition.time,\n ease: transition.ease,\n delay: transition.delay + transition.duration,\n duration: transition.duration\n });\n }\n\n subgroup.push(node);\n }\n }\n\n return d3_transition(subgroups, ns, id1);\n };\n\n function d3_transitionNamespace(name) {\n return name == null ? \"__transition__\" : \"__transition_\" + name + \"__\";\n }\n\n function d3_transitionNode(node, i, ns, id, inherit) {\n var lock = node[ns] || (node[ns] = {\n active: 0,\n count: 0\n }),\n transition = lock[id],\n time,\n timer,\n duration,\n ease,\n tweens;\n\n function schedule(elapsed) {\n var delay = transition.delay;\n timer.t = delay + time;\n if (delay <= elapsed) return start(elapsed - delay);\n timer.c = start;\n }\n\n function start(elapsed) {\n var activeId = lock.active,\n active = lock[activeId];\n\n if (active) {\n active.timer.c = null;\n active.timer.t = NaN;\n --lock.count;\n delete lock[activeId];\n active.event && active.event.interrupt.call(node, node.__data__, active.index);\n }\n\n for (var cancelId in lock) {\n if (+cancelId < id) {\n var cancel = lock[cancelId];\n cancel.timer.c = null;\n cancel.timer.t = NaN;\n --lock.count;\n delete lock[cancelId];\n }\n }\n\n timer.c = tick;\n d3_timer(function () {\n if (timer.c && tick(elapsed || 1)) {\n timer.c = null;\n timer.t = NaN;\n }\n\n return 1;\n }, 0, time);\n lock.active = id;\n transition.event && transition.event.start.call(node, node.__data__, i);\n tweens = [];\n transition.tween.forEach(function (key, value) {\n if (value = value.call(node, node.__data__, i)) {\n tweens.push(value);\n }\n });\n ease = transition.ease;\n duration = transition.duration;\n }\n\n function tick(elapsed) {\n var t = elapsed / duration,\n e = ease(t),\n n = tweens.length;\n\n while (n > 0) {\n tweens[--n].call(node, e);\n }\n\n if (t >= 1) {\n transition.event && transition.event.end.call(node, node.__data__, i);\n if (--lock.count) delete lock[id];else delete node[ns];\n return 1;\n }\n }\n\n if (!transition) {\n time = inherit.time;\n timer = d3_timer(schedule, 0, time);\n transition = lock[id] = {\n tween: new d3_Map(),\n time: time,\n timer: timer,\n delay: inherit.delay,\n duration: inherit.duration,\n ease: inherit.ease,\n index: i\n };\n inherit = null;\n ++lock.count;\n }\n }\n\n d3.svg.axis = function () {\n var scale = d3.scale.linear(),\n orient = d3_svg_axisDefaultOrient,\n innerTickSize = 6,\n outerTickSize = 6,\n tickPadding = 3,\n tickArguments_ = [10],\n tickValues = null,\n tickFormat_;\n\n function axis(g) {\n g.each(function () {\n var g = d3.select(this);\n var scale0 = this.__chart__ || scale,\n scale1 = this.__chart__ = scale.copy();\n var ticks = tickValues == null ? scale1.ticks ? scale1.ticks.apply(scale1, tickArguments_) : scale1.domain() : tickValues,\n tickFormat = tickFormat_ == null ? scale1.tickFormat ? scale1.tickFormat.apply(scale1, tickArguments_) : d3_identity : tickFormat_,\n tick = g.selectAll(\".tick\").data(ticks, scale1),\n tickEnter = tick.enter().insert(\"g\", \".domain\").attr(\"class\", \"tick\").style(\"opacity\", ε),\n tickExit = d3.transition(tick.exit()).style(\"opacity\", ε).remove(),\n tickUpdate = d3.transition(tick.order()).style(\"opacity\", 1),\n tickSpacing = Math.max(innerTickSize, 0) + tickPadding,\n tickTransform;\n var range = d3_scaleRange(scale1),\n path = g.selectAll(\".domain\").data([0]),\n pathUpdate = (path.enter().append(\"path\").attr(\"class\", \"domain\"), d3.transition(path));\n tickEnter.append(\"line\");\n tickEnter.append(\"text\");\n var lineEnter = tickEnter.select(\"line\"),\n lineUpdate = tickUpdate.select(\"line\"),\n text = tick.select(\"text\").text(tickFormat),\n textEnter = tickEnter.select(\"text\"),\n textUpdate = tickUpdate.select(\"text\"),\n sign = orient === \"top\" || orient === \"left\" ? -1 : 1,\n x1,\n x2,\n y1,\n y2;\n\n if (orient === \"bottom\" || orient === \"top\") {\n tickTransform = d3_svg_axisX, x1 = \"x\", y1 = \"y\", x2 = \"x2\", y2 = \"y2\";\n text.attr(\"dy\", sign < 0 ? \"0em\" : \".71em\").style(\"text-anchor\", \"middle\");\n pathUpdate.attr(\"d\", \"M\" + range[0] + \",\" + sign * outerTickSize + \"V0H\" + range[1] + \"V\" + sign * outerTickSize);\n } else {\n tickTransform = d3_svg_axisY, x1 = \"y\", y1 = \"x\", x2 = \"y2\", y2 = \"x2\";\n text.attr(\"dy\", \".32em\").style(\"text-anchor\", sign < 0 ? \"end\" : \"start\");\n pathUpdate.attr(\"d\", \"M\" + sign * outerTickSize + \",\" + range[0] + \"H0V\" + range[1] + \"H\" + sign * outerTickSize);\n }\n\n lineEnter.attr(y2, sign * innerTickSize);\n textEnter.attr(y1, sign * tickSpacing);\n lineUpdate.attr(x2, 0).attr(y2, sign * innerTickSize);\n textUpdate.attr(x1, 0).attr(y1, sign * tickSpacing);\n\n if (scale1.rangeBand) {\n var x = scale1,\n dx = x.rangeBand() / 2;\n\n scale0 = scale1 = function scale1(d) {\n return x(d) + dx;\n };\n } else if (scale0.rangeBand) {\n scale0 = scale1;\n } else {\n tickExit.call(tickTransform, scale1, scale0);\n }\n\n tickEnter.call(tickTransform, scale0, scale1);\n tickUpdate.call(tickTransform, scale1, scale1);\n });\n }\n\n axis.scale = function (x) {\n if (!arguments.length) return scale;\n scale = x;\n return axis;\n };\n\n axis.orient = function (x) {\n if (!arguments.length) return orient;\n orient = x in d3_svg_axisOrients ? x + \"\" : d3_svg_axisDefaultOrient;\n return axis;\n };\n\n axis.ticks = function () {\n if (!arguments.length) return tickArguments_;\n tickArguments_ = d3_array(arguments);\n return axis;\n };\n\n axis.tickValues = function (x) {\n if (!arguments.length) return tickValues;\n tickValues = x;\n return axis;\n };\n\n axis.tickFormat = function (x) {\n if (!arguments.length) return tickFormat_;\n tickFormat_ = x;\n return axis;\n };\n\n axis.tickSize = function (x) {\n var n = arguments.length;\n if (!n) return innerTickSize;\n innerTickSize = +x;\n outerTickSize = +arguments[n - 1];\n return axis;\n };\n\n axis.innerTickSize = function (x) {\n if (!arguments.length) return innerTickSize;\n innerTickSize = +x;\n return axis;\n };\n\n axis.outerTickSize = function (x) {\n if (!arguments.length) return outerTickSize;\n outerTickSize = +x;\n return axis;\n };\n\n axis.tickPadding = function (x) {\n if (!arguments.length) return tickPadding;\n tickPadding = +x;\n return axis;\n };\n\n axis.tickSubdivide = function () {\n return arguments.length && axis;\n };\n\n return axis;\n };\n\n var d3_svg_axisDefaultOrient = \"bottom\",\n d3_svg_axisOrients = {\n top: 1,\n right: 1,\n bottom: 1,\n left: 1\n };\n\n function d3_svg_axisX(selection, x0, x1) {\n selection.attr(\"transform\", function (d) {\n var v0 = x0(d);\n return \"translate(\" + (isFinite(v0) ? v0 : x1(d)) + \",0)\";\n });\n }\n\n function d3_svg_axisY(selection, y0, y1) {\n selection.attr(\"transform\", function (d) {\n var v0 = y0(d);\n return \"translate(0,\" + (isFinite(v0) ? v0 : y1(d)) + \")\";\n });\n }\n\n d3.svg.brush = function () {\n var event = d3_eventDispatch(brush, \"brushstart\", \"brush\", \"brushend\"),\n x = null,\n y = null,\n xExtent = [0, 0],\n yExtent = [0, 0],\n xExtentDomain,\n yExtentDomain,\n xClamp = true,\n yClamp = true,\n resizes = d3_svg_brushResizes[0];\n\n function brush(g) {\n g.each(function () {\n var g = d3.select(this).style(\"pointer-events\", \"all\").style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\").on(\"mousedown.brush\", brushstart).on(\"touchstart.brush\", brushstart);\n var background = g.selectAll(\".background\").data([0]);\n background.enter().append(\"rect\").attr(\"class\", \"background\").style(\"visibility\", \"hidden\").style(\"cursor\", \"crosshair\");\n g.selectAll(\".extent\").data([0]).enter().append(\"rect\").attr(\"class\", \"extent\").style(\"cursor\", \"move\");\n var resize = g.selectAll(\".resize\").data(resizes, d3_identity);\n resize.exit().remove();\n resize.enter().append(\"g\").attr(\"class\", function (d) {\n return \"resize \" + d;\n }).style(\"cursor\", function (d) {\n return d3_svg_brushCursor[d];\n }).append(\"rect\").attr(\"x\", function (d) {\n return /[ew]$/.test(d) ? -3 : null;\n }).attr(\"y\", function (d) {\n return /^[ns]/.test(d) ? -3 : null;\n }).attr(\"width\", 6).attr(\"height\", 6).style(\"visibility\", \"hidden\");\n resize.style(\"display\", brush.empty() ? \"none\" : null);\n var gUpdate = d3.transition(g),\n backgroundUpdate = d3.transition(background),\n range;\n\n if (x) {\n range = d3_scaleRange(x);\n backgroundUpdate.attr(\"x\", range[0]).attr(\"width\", range[1] - range[0]);\n redrawX(gUpdate);\n }\n\n if (y) {\n range = d3_scaleRange(y);\n backgroundUpdate.attr(\"y\", range[0]).attr(\"height\", range[1] - range[0]);\n redrawY(gUpdate);\n }\n\n redraw(gUpdate);\n });\n }\n\n brush.event = function (g) {\n g.each(function () {\n var event_ = event.of(this, arguments),\n extent1 = {\n x: xExtent,\n y: yExtent,\n i: xExtentDomain,\n j: yExtentDomain\n },\n extent0 = this.__chart__ || extent1;\n this.__chart__ = extent1;\n\n if (d3_transitionInheritId) {\n d3.select(this).transition().each(\"start.brush\", function () {\n xExtentDomain = extent0.i;\n yExtentDomain = extent0.j;\n xExtent = extent0.x;\n yExtent = extent0.y;\n event_({\n type: \"brushstart\"\n });\n }).tween(\"brush:brush\", function () {\n var xi = d3_interpolateArray(xExtent, extent1.x),\n yi = d3_interpolateArray(yExtent, extent1.y);\n xExtentDomain = yExtentDomain = null;\n return function (t) {\n xExtent = extent1.x = xi(t);\n yExtent = extent1.y = yi(t);\n event_({\n type: \"brush\",\n mode: \"resize\"\n });\n };\n }).each(\"end.brush\", function () {\n xExtentDomain = extent1.i;\n yExtentDomain = extent1.j;\n event_({\n type: \"brush\",\n mode: \"resize\"\n });\n event_({\n type: \"brushend\"\n });\n });\n } else {\n event_({\n type: \"brushstart\"\n });\n event_({\n type: \"brush\",\n mode: \"resize\"\n });\n event_({\n type: \"brushend\"\n });\n }\n });\n };\n\n function redraw(g) {\n g.selectAll(\".resize\").attr(\"transform\", function (d) {\n return \"translate(\" + xExtent[+/e$/.test(d)] + \",\" + yExtent[+/^s/.test(d)] + \")\";\n });\n }\n\n function redrawX(g) {\n g.select(\".extent\").attr(\"x\", xExtent[0]);\n g.selectAll(\".extent,.n>rect,.s>rect\").attr(\"width\", xExtent[1] - xExtent[0]);\n }\n\n function redrawY(g) {\n g.select(\".extent\").attr(\"y\", yExtent[0]);\n g.selectAll(\".extent,.e>rect,.w>rect\").attr(\"height\", yExtent[1] - yExtent[0]);\n }\n\n function brushstart() {\n var target = this,\n eventTarget = d3.select(d3.event.target),\n event_ = event.of(target, arguments),\n g = d3.select(target),\n resizing = eventTarget.datum(),\n resizingX = !/^(n|s)$/.test(resizing) && x,\n resizingY = !/^(e|w)$/.test(resizing) && y,\n dragging = eventTarget.classed(\"extent\"),\n dragRestore = d3_event_dragSuppress(target),\n center,\n origin = d3.mouse(target),\n offset;\n var w = d3.select(d3_window(target)).on(\"keydown.brush\", keydown).on(\"keyup.brush\", keyup);\n\n if (d3.event.changedTouches) {\n w.on(\"touchmove.brush\", brushmove).on(\"touchend.brush\", brushend);\n } else {\n w.on(\"mousemove.brush\", brushmove).on(\"mouseup.brush\", brushend);\n }\n\n g.interrupt().selectAll(\"*\").interrupt();\n\n if (dragging) {\n origin[0] = xExtent[0] - origin[0];\n origin[1] = yExtent[0] - origin[1];\n } else if (resizing) {\n var ex = +/w$/.test(resizing),\n ey = +/^n/.test(resizing);\n offset = [xExtent[1 - ex] - origin[0], yExtent[1 - ey] - origin[1]];\n origin[0] = xExtent[ex];\n origin[1] = yExtent[ey];\n } else if (d3.event.altKey) center = origin.slice();\n\n g.style(\"pointer-events\", \"none\").selectAll(\".resize\").style(\"display\", null);\n d3.select(\"body\").style(\"cursor\", eventTarget.style(\"cursor\"));\n event_({\n type: \"brushstart\"\n });\n brushmove();\n\n function keydown() {\n if (d3.event.keyCode == 32) {\n if (!dragging) {\n center = null;\n origin[0] -= xExtent[1];\n origin[1] -= yExtent[1];\n dragging = 2;\n }\n\n d3_eventPreventDefault();\n }\n }\n\n function keyup() {\n if (d3.event.keyCode == 32 && dragging == 2) {\n origin[0] += xExtent[1];\n origin[1] += yExtent[1];\n dragging = 0;\n d3_eventPreventDefault();\n }\n }\n\n function brushmove() {\n var point = d3.mouse(target),\n moved = false;\n\n if (offset) {\n point[0] += offset[0];\n point[1] += offset[1];\n }\n\n if (!dragging) {\n if (d3.event.altKey) {\n if (!center) center = [(xExtent[0] + xExtent[1]) / 2, (yExtent[0] + yExtent[1]) / 2];\n origin[0] = xExtent[+(point[0] < center[0])];\n origin[1] = yExtent[+(point[1] < center[1])];\n } else center = null;\n }\n\n if (resizingX && move1(point, x, 0)) {\n redrawX(g);\n moved = true;\n }\n\n if (resizingY && move1(point, y, 1)) {\n redrawY(g);\n moved = true;\n }\n\n if (moved) {\n redraw(g);\n event_({\n type: \"brush\",\n mode: dragging ? \"move\" : \"resize\"\n });\n }\n }\n\n function move1(point, scale, i) {\n var range = d3_scaleRange(scale),\n r0 = range[0],\n r1 = range[1],\n position = origin[i],\n extent = i ? yExtent : xExtent,\n size = extent[1] - extent[0],\n min,\n max;\n\n if (dragging) {\n r0 -= position;\n r1 -= size + position;\n }\n\n min = (i ? yClamp : xClamp) ? Math.max(r0, Math.min(r1, point[i])) : point[i];\n\n if (dragging) {\n max = (min += position) + size;\n } else {\n if (center) position = Math.max(r0, Math.min(r1, 2 * center[i] - min));\n\n if (position < min) {\n max = min;\n min = position;\n } else {\n max = position;\n }\n }\n\n if (extent[0] != min || extent[1] != max) {\n if (i) yExtentDomain = null;else xExtentDomain = null;\n extent[0] = min;\n extent[1] = max;\n return true;\n }\n }\n\n function brushend() {\n brushmove();\n g.style(\"pointer-events\", \"all\").selectAll(\".resize\").style(\"display\", brush.empty() ? \"none\" : null);\n d3.select(\"body\").style(\"cursor\", null);\n w.on(\"mousemove.brush\", null).on(\"mouseup.brush\", null).on(\"touchmove.brush\", null).on(\"touchend.brush\", null).on(\"keydown.brush\", null).on(\"keyup.brush\", null);\n dragRestore();\n event_({\n type: \"brushend\"\n });\n }\n }\n\n brush.x = function (z) {\n if (!arguments.length) return x;\n x = z;\n resizes = d3_svg_brushResizes[!x << 1 | !y];\n return brush;\n };\n\n brush.y = function (z) {\n if (!arguments.length) return y;\n y = z;\n resizes = d3_svg_brushResizes[!x << 1 | !y];\n return brush;\n };\n\n brush.clamp = function (z) {\n if (!arguments.length) return x && y ? [xClamp, yClamp] : x ? xClamp : y ? yClamp : null;\n if (x && y) xClamp = !!z[0], yClamp = !!z[1];else if (x) xClamp = !!z;else if (y) yClamp = !!z;\n return brush;\n };\n\n brush.extent = function (z) {\n var x0, x1, y0, y1, t;\n\n if (!arguments.length) {\n if (x) {\n if (xExtentDomain) {\n x0 = xExtentDomain[0], x1 = xExtentDomain[1];\n } else {\n x0 = xExtent[0], x1 = xExtent[1];\n if (x.invert) x0 = x.invert(x0), x1 = x.invert(x1);\n if (x1 < x0) t = x0, x0 = x1, x1 = t;\n }\n }\n\n if (y) {\n if (yExtentDomain) {\n y0 = yExtentDomain[0], y1 = yExtentDomain[1];\n } else {\n y0 = yExtent[0], y1 = yExtent[1];\n if (y.invert) y0 = y.invert(y0), y1 = y.invert(y1);\n if (y1 < y0) t = y0, y0 = y1, y1 = t;\n }\n }\n\n return x && y ? [[x0, y0], [x1, y1]] : x ? [x0, x1] : y && [y0, y1];\n }\n\n if (x) {\n x0 = z[0], x1 = z[1];\n if (y) x0 = x0[0], x1 = x1[0];\n xExtentDomain = [x0, x1];\n if (x.invert) x0 = x(x0), x1 = x(x1);\n if (x1 < x0) t = x0, x0 = x1, x1 = t;\n if (x0 != xExtent[0] || x1 != xExtent[1]) xExtent = [x0, x1];\n }\n\n if (y) {\n y0 = z[0], y1 = z[1];\n if (x) y0 = y0[1], y1 = y1[1];\n yExtentDomain = [y0, y1];\n if (y.invert) y0 = y(y0), y1 = y(y1);\n if (y1 < y0) t = y0, y0 = y1, y1 = t;\n if (y0 != yExtent[0] || y1 != yExtent[1]) yExtent = [y0, y1];\n }\n\n return brush;\n };\n\n brush.clear = function () {\n if (!brush.empty()) {\n xExtent = [0, 0], yExtent = [0, 0];\n xExtentDomain = yExtentDomain = null;\n }\n\n return brush;\n };\n\n brush.empty = function () {\n return !!x && xExtent[0] == xExtent[1] || !!y && yExtent[0] == yExtent[1];\n };\n\n return d3.rebind(brush, event, \"on\");\n };\n\n var d3_svg_brushCursor = {\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n };\n var d3_svg_brushResizes = [[\"n\", \"e\", \"s\", \"w\", \"nw\", \"ne\", \"se\", \"sw\"], [\"e\", \"w\"], [\"n\", \"s\"], []];\n var d3_time_format = d3_time.format = d3_locale_enUS.timeFormat;\n var d3_time_formatUtc = d3_time_format.utc;\n var d3_time_formatIso = d3_time_formatUtc(\"%Y-%m-%dT%H:%M:%S.%LZ\");\n d3_time_format.iso = Date.prototype.toISOString && +new Date(\"2000-01-01T00:00:00.000Z\") ? d3_time_formatIsoNative : d3_time_formatIso;\n\n function d3_time_formatIsoNative(date) {\n return date.toISOString();\n }\n\n d3_time_formatIsoNative.parse = function (string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n };\n\n d3_time_formatIsoNative.toString = d3_time_formatIso.toString;\n d3_time.second = d3_time_interval(function (date) {\n return new d3_date(Math.floor(date / 1e3) * 1e3);\n }, function (date, offset) {\n date.setTime(date.getTime() + Math.floor(offset) * 1e3);\n }, function (date) {\n return date.getSeconds();\n });\n d3_time.seconds = d3_time.second.range;\n d3_time.seconds.utc = d3_time.second.utc.range;\n d3_time.minute = d3_time_interval(function (date) {\n return new d3_date(Math.floor(date / 6e4) * 6e4);\n }, function (date, offset) {\n date.setTime(date.getTime() + Math.floor(offset) * 6e4);\n }, function (date) {\n return date.getMinutes();\n });\n d3_time.minutes = d3_time.minute.range;\n d3_time.minutes.utc = d3_time.minute.utc.range;\n d3_time.hour = d3_time_interval(function (date) {\n var timezone = date.getTimezoneOffset() / 60;\n return new d3_date((Math.floor(date / 36e5 - timezone) + timezone) * 36e5);\n }, function (date, offset) {\n date.setTime(date.getTime() + Math.floor(offset) * 36e5);\n }, function (date) {\n return date.getHours();\n });\n d3_time.hours = d3_time.hour.range;\n d3_time.hours.utc = d3_time.hour.utc.range;\n d3_time.month = d3_time_interval(function (date) {\n date = d3_time.day(date);\n date.setDate(1);\n return date;\n }, function (date, offset) {\n date.setMonth(date.getMonth() + offset);\n }, function (date) {\n return date.getMonth();\n });\n d3_time.months = d3_time.month.range;\n d3_time.months.utc = d3_time.month.utc.range;\n\n function d3_time_scale(linear, methods, format) {\n function scale(x) {\n return linear(x);\n }\n\n scale.invert = function (x) {\n return d3_time_scaleDate(linear.invert(x));\n };\n\n scale.domain = function (x) {\n if (!arguments.length) return linear.domain().map(d3_time_scaleDate);\n linear.domain(x);\n return scale;\n };\n\n function tickMethod(extent, count) {\n var span = extent[1] - extent[0],\n target = span / count,\n i = d3.bisect(d3_time_scaleSteps, target);\n return i == d3_time_scaleSteps.length ? [methods.year, d3_scale_linearTickRange(extent.map(function (d) {\n return d / 31536e6;\n }), count)[2]] : !i ? [d3_time_scaleMilliseconds, d3_scale_linearTickRange(extent, count)[2]] : methods[target / d3_time_scaleSteps[i - 1] < d3_time_scaleSteps[i] / target ? i - 1 : i];\n }\n\n scale.nice = function (interval, skip) {\n var domain = scale.domain(),\n extent = d3_scaleExtent(domain),\n method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" && tickMethod(extent, interval);\n if (method) interval = method[0], skip = method[1];\n\n function skipped(date) {\n return !isNaN(date) && !interval.range(date, d3_time_scaleDate(+date + 1), skip).length;\n }\n\n return scale.domain(d3_scale_nice(domain, skip > 1 ? {\n floor: function floor(date) {\n while (skipped(date = interval.floor(date))) {\n date = d3_time_scaleDate(date - 1);\n }\n\n return date;\n },\n ceil: function ceil(date) {\n while (skipped(date = interval.ceil(date))) {\n date = d3_time_scaleDate(+date + 1);\n }\n\n return date;\n }\n } : interval));\n };\n\n scale.ticks = function (interval, skip) {\n var extent = d3_scaleExtent(scale.domain()),\n method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" ? tickMethod(extent, interval) : !interval.range && [{\n range: interval\n }, skip];\n if (method) interval = method[0], skip = method[1];\n return interval.range(extent[0], d3_time_scaleDate(+extent[1] + 1), skip < 1 ? 1 : skip);\n };\n\n scale.tickFormat = function () {\n return format;\n };\n\n scale.copy = function () {\n return d3_time_scale(linear.copy(), methods, format);\n };\n\n return d3_scale_linearRebind(scale, linear);\n }\n\n function d3_time_scaleDate(t) {\n return new Date(t);\n }\n\n var d3_time_scaleSteps = [1e3, 5e3, 15e3, 3e4, 6e4, 3e5, 9e5, 18e5, 36e5, 108e5, 216e5, 432e5, 864e5, 1728e5, 6048e5, 2592e6, 7776e6, 31536e6];\n var d3_time_scaleLocalMethods = [[d3_time.second, 1], [d3_time.second, 5], [d3_time.second, 15], [d3_time.second, 30], [d3_time.minute, 1], [d3_time.minute, 5], [d3_time.minute, 15], [d3_time.minute, 30], [d3_time.hour, 1], [d3_time.hour, 3], [d3_time.hour, 6], [d3_time.hour, 12], [d3_time.day, 1], [d3_time.day, 2], [d3_time.week, 1], [d3_time.month, 1], [d3_time.month, 3], [d3_time.year, 1]];\n var d3_time_scaleLocalFormat = d3_time_format.multi([[\".%L\", function (d) {\n return d.getMilliseconds();\n }], [\":%S\", function (d) {\n return d.getSeconds();\n }], [\"%I:%M\", function (d) {\n return d.getMinutes();\n }], [\"%I %p\", function (d) {\n return d.getHours();\n }], [\"%a %d\", function (d) {\n return d.getDay() && d.getDate() != 1;\n }], [\"%b %d\", function (d) {\n return d.getDate() != 1;\n }], [\"%B\", function (d) {\n return d.getMonth();\n }], [\"%Y\", d3_true]]);\n var d3_time_scaleMilliseconds = {\n range: function range(start, stop, step) {\n return d3.range(Math.ceil(start / step) * step, +stop, step).map(d3_time_scaleDate);\n },\n floor: d3_identity,\n ceil: d3_identity\n };\n d3_time_scaleLocalMethods.year = d3_time.year;\n\n d3_time.scale = function () {\n return d3_time_scale(d3.scale.linear(), d3_time_scaleLocalMethods, d3_time_scaleLocalFormat);\n };\n\n var d3_time_scaleUtcMethods = d3_time_scaleLocalMethods.map(function (m) {\n return [m[0].utc, m[1]];\n });\n var d3_time_scaleUtcFormat = d3_time_formatUtc.multi([[\".%L\", function (d) {\n return d.getUTCMilliseconds();\n }], [\":%S\", function (d) {\n return d.getUTCSeconds();\n }], [\"%I:%M\", function (d) {\n return d.getUTCMinutes();\n }], [\"%I %p\", function (d) {\n return d.getUTCHours();\n }], [\"%a %d\", function (d) {\n return d.getUTCDay() && d.getUTCDate() != 1;\n }], [\"%b %d\", function (d) {\n return d.getUTCDate() != 1;\n }], [\"%B\", function (d) {\n return d.getUTCMonth();\n }], [\"%Y\", d3_true]]);\n d3_time_scaleUtcMethods.year = d3_time.year.utc;\n\n d3_time.scale.utc = function () {\n return d3_time_scale(d3.scale.linear(), d3_time_scaleUtcMethods, d3_time_scaleUtcFormat);\n };\n\n d3.text = d3_xhrType(function (request) {\n return request.responseText;\n });\n\n d3.json = function (url, callback) {\n return d3_xhr(url, \"application/json\", d3_json, callback);\n };\n\n function d3_json(request) {\n return JSON.parse(request.responseText);\n }\n\n d3.html = function (url, callback) {\n return d3_xhr(url, \"text/html\", d3_html, callback);\n };\n\n function d3_html(request) {\n var range = d3_document.createRange();\n range.selectNode(d3_document.body);\n return range.createContextualFragment(request.responseText);\n }\n\n d3.xml = d3_xhrType(function (request) {\n return request.responseXML;\n });\n if (typeof define === \"function\" && define.amd) this.d3 = d3, define(d3);else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) === \"object\" && module.exports) module.exports = d3;else this.d3 = d3;\n}();","/* eslint-disable prefer-template, arrow-body-style, no-param-reassign */\nimport * as API from 'es6/core/api';\nimport Logger from 'es6/services/logger';\nimport Quizzes from 'es6/controllers/apps/quizzes';\n\n/**\n * Implementing subclasses must call the super constructor and provide an implementation\n * of 'showNextQuiz()' and 'quizFinished()'.\n */\nexport default class SequencerBase {\n\n /**\n * @param {StudyNode[]} studyItems array of all studyItems that may be presented in this session\n * @param {QuizTimer} quizTimer (may be null)\n */\n constructor(studyItems, isDiagnosticQuiz, quizTimer = null) {\n this.progress = 0;\n this.activeQuiz = null;\n this._isDiagnosticQuiz = isDiagnosticQuiz;\n this._quizTimer = quizTimer;\n this._initializeStudyItems(studyItems);\n this.totalItems = this._itemsWithQuizzesRemaining().length;\n }\n\n /**\n * Initiate a study session.\n *\n * @param sessionFinishedCallback\n */\n startSequence(sessionFinishedCallback, sessionProgressUpdatedCallback) {\n this._sessionFinishedCallback = sessionFinishedCallback;\n this._sessionProgressUpdatedCallback = sessionProgressUpdatedCallback;\n sessionProgressUpdatedCallback(this.progress);\n this.showNextQuiz();\n }\n\n /**\n * Ends the sequence, sending presentation results to the callback method.\n */\n sequenceFinished() {\n this.activeQuiz = null;\n this._sessionFinishedCallback(this._collectPresentationResults());\n }\n\n /**\n * Force the study session to end prematurely.\n *\n * @param finishedCallback Replaces the standard the standard sessionFinishedCallback.\n */\n forceFinishSequence(finishedCallback) {\n this.activeQuiz = null;\n finishedCallback(this._collectPresentationResults());\n }\n\n skipCurrentItem() {\n if (!this.activeQuiz) {\n Logger.warn('IntraSessionSequencer', 'Item skip attempted when no quiz is active.');\n return;\n }\n\n const skippedItem = this._studyItemFromQuiz(this.activeQuiz);\n skippedItem.skipped = true;\n skippedItem.sequencing.remainingQuizzes = [];\n\n API.postSkipItem(skippedItem.contentId).then(() => {\n Logger.info('Skipping', 'Skipped item ' + skippedItem.contentId, skippedItem);\n }).catch((reason) => {\n Logger.error('Skipping', reason, reason.stack);\n });\n\n // Move directly to next quiz (the current quiz result will not be saved).\n this._incrementProgress();\n this.showNextQuiz();\n }\n\n inProgress() {\n // In progress if we still have a quiz active.\n return !_.isNull(this.activeQuiz);\n }\n\n pauseSequence() {\n this.pause = true;\n this.activeQuiz.pause();\n }\n\n resumeSequence() {\n this.pause = false;\n this.activeQuiz.resume();\n }\n\n _initializeStudyItems(studyItems) {\n this._studyItems = studyItems;\n _.each(studyItems, (studyItem) => {\n // Build Quiz objects for any scheduled quizzes.\n const initiallyScheduledQuizzes = _.chain(studyItem.quizSequence)\n .map((quizName) => {\n return this._buildQuiz(studyItem, quizName); // TODO we shouldn't be building quizzes here, unnecessary overhead.\n })\n // Compact as any unknown quiz types will add undefined entries.\n .compact()\n .value();\n\n studyItem.sequencing = {\n remainingQuizzes: initiallyScheduledQuizzes,\n presentedQuizzes: [],\n possibleQuizTypes: _.union(studyItem.extraQuizzes, _.difference(studyItem.quizSequence, ['Study'])),\n lastSeenAt: -1,\n extraQuizzesInserted: 0,\n };\n });\n }\n\n _buildQuiz(studyItem, quizName) {\n const quizConstructor = Quizzes[quizName];\n if (quizConstructor) {\n return new quizConstructor(studyItem.content, studyItem.goalId, this._isDiagnosticQuiz, this.quizFinished.bind(this), this._quizTimer);\n } else {\n Logger.error('Session Loader', 'Unknown quiz type ' + quizName + '.');\n return null;\n }\n }\n\n _showNextQuizForItem(studyItem) {\n studyItem.sequencing.lastSeenAt = this.currentPresentationIndex;\n const quiz = studyItem.sequencing.remainingQuizzes.shift();\n this.activeQuiz = quiz;\n quiz.show();\n }\n\n /*\n * Increments session progress after a quiz has been shown based on the\n * expected number of quizzes remaining. Should be called once following\n * after each quiz presentation.\n */\n _incrementProgress() {\n const expectedRemaining = this._expectedRemainingQuizCount();\n\n // Increase progress proportionally to expected number of quizzes that remain\n this.progress += (100 - this.progress) / (expectedRemaining + 1);\n\n let visibleProgress = Math.ceil(this.progress);\n // But don't round progress up to 100%.\n if (expectedRemaining !== 0 && visibleProgress === 100) {\n visibleProgress = 99;\n }\n\n this._updateProgress(visibleProgress);\n }\n\n /*\n * Returns an estimate of the number of quizzes remaining in the session\n * which is used to update progress.\n */\n _expectedRemainingQuizCount() {\n return _.reduce(this._itemsWithQuizzesRemaining(), function (count, item) {\n return count + item.sequencing.remainingQuizzes.length;\n }, 0);\n }\n\n /*\n * Helper function which returns an array of studyItems which still have\n * scheduled quizzes remaining to be presented.\n */\n _itemsWithQuizzesRemaining(studyItems = this._studyItems) {\n return studyItems.filter(studyItem => {\n return studyItem.sequencing.remainingQuizzes.length > 0;\n });\n }\n\n /*\n * Helper function for looking up the studyItem that a quiz is testing.\n *\n * @returns {StudyNode}\n */\n _studyItemFromQuiz(quiz) {\n return this._studyItems.find(studyItem =>\n studyItem.contentId === quiz.getContentId() && studyItem.contentDomain === quiz.getContentDomain()\n );\n }\n\n /**\n * Updates the progress manager.\n *\n * @param {Number} progress\n */\n _updateProgress(progress) {\n this._sessionProgressUpdatedCallback(progress);\n }\n\n /**\n * Returns all the finalized quiz results from the session.\n *\n * @returns {QuizResult[]}\n */\n _collectPresentationResults() {\n return _.chain(this._studyItems)\n .map(item => item.sequencing.presentedQuizzes)\n .flatten()\n .map(quizResult => quizResult.getFinalResult())\n .flatten() // Some quizzes (such as sentence quizzes, may return multiple results)\n .value();\n }\n}\n","/* eslint-disable arrow-body-style, consistent-return, no-param-reassign, no-confusing-arrow, react/react-in-jsx-scope, react/jsx-closing-bracket-location */\nimport * as API from 'es6/core/api';\nimport BaseStudyApp from 'es6/controllers/apps/base-study-app';\nimport { checkForcedCheckpoint, checkForcedCompletion } from 'es6/controllers/apps/debug-overrides';\nimport Config from 'es6/core/config';\nimport CourseRecommendationScreen from 'es6/components/apps/screens/course-recommendation';\nimport HelpPanel from 'es6/components/apps/settings/help-panel';\nimport { GoalSource, ItemSource } from 'es6/models/session-config';\nimport * as Loaders from 'es6/core/loaders';\nimport Localization from 'es6/services/localization';\nimport Logger from 'es6/services/logger';\nimport MemoryBankNode from 'es6/models/memory-bank-node';\nimport MemoryBankPlot from 'es6/components/memory-bank/memory-bank-plot';\nimport MemoryBankSummaryScreen, { MemoryBankSummaryBanner } from 'es6/components/apps/screens/memory-bank-summary';\nimport Memory from 'es6/models/memory';\nimport * as Paths from 'es6/core/paths';\n\n// This has to persist between apps for a blue box session. We don't\n// want to recommend a user a course repeatedly for starting a new\n// app after they have already seen it.\nlet courseRecommended = false;\n\n// Message to show user if they try to leave during a checkpoint.\nconst SkipCheckpointPrompt = Localization.t('skip-checkpoint-prompt');\n\n/**\n * Base class for Item Study Applications: iKnow, Rapid Choice, Self Assessment.\n */\nexport default class BaseItemStudyApp extends BaseStudyApp {\n /**\n * Constructor for the base app.\n */\n constructor(...args) {\n super(...args);\n\n // Information pertaining to the recommended course (if available).\n this._courseRecommendation = null;\n\n // Include sentence assets when loading item packages?\n this._includeSentenceAssets = true;\n\n // These flags are used to determine whether a course was completed in session.\n // The This flag is for when the course was completed in session.\n this._isCourseCompleted = false;\n\n // Has the user reached a checkpoint.\n this._isCheckpoint = false;\n\n // Is it time to show a course recommendation.\n this._isCourseRecommendation = false;\n\n // Contains a copy of MemoryBankPlot used to render the memory bank SVG.\n this._memoryBankPlot = null;\n }\n\n /**\n * Determines whether or not to set the checkpoint flag.\n *\n * @param {Object} sessionResults results from the last session\n * @returns {Boolean}\n */\n _checkpointTriggered(sessionResults) {\n return !this._studyAll && this._sessionData.goals[0].sentencesCount > 0 &&\n (checkForcedCheckpoint() || sessionResults.checkpointGoals.some(cp => cp.goalId === this._goalId));\n }\n\n /**\n * Determines whether or not to set the course completed flag.\n *\n * @param {Object} sessionResults results from the last session\n * @returns {Boolean}\n */\n _courseCompleted(sessionResults) {\n return !this._studyAll &&\n (checkForcedCompletion() || sessionResults.completedGoals.some(goalId => goalId === this._goalId));\n }\n\n /**\n * For item study apps, the course recommendation might need to be retrieved.\n *\n * @override\n * @returns {Promise}\n */\n _fetchSessionBasedData() {\n return Promise.all([super._fetchSessionBasedData(), this._setupCourseRecommendation()]);\n }\n\n /**\n * Add help panel to the settings modal.\n *\n * @override\n * @returns {Array}\n */\n _getSettingsPanels() {\n const panels = super._getSettingsPanels();\n panels.push(HelpPanel);\n return panels;\n }\n\n /**\n * Add item source to the study parameters.\n *\n * @override\n * @returns {Object}\n */\n _getStudyParameters() {\n const params = super._getStudyParameters();\n params.sessionItemSource = this._sessionConfig.itemSource;\n return params;\n }\n\n /**\n * Callback for redirecting the user to sentence trainer.\n */\n _handleCheckpointRedirect() {\n // No need to check if the user wants to leave beforehand.\n window.removeEventListener('beforeunload', this._handleBeforeUnload);\n this._quitApplication(Paths.AppPaths.SENTENCE_TRAINER, true);\n }\n\n /**\n * Callback for skipping checkpoints.\n */\n _handleCheckpointSkip() {\n this._isCheckpoint = false;\n this._showWelcomeScreen();\n }\n\n /**\n * Callback method for skipping the course recommendation.\n */\n _handleCourseRecommendationSkip() {\n this._isCourseRecommendation = false;\n this._showWelcomeScreen();\n }\n\n /**\n * Callback method for show course recommendation screen.\n *\n * Focus the course (if it is a new course).\n * After, if the user is in studyAll mode, refresh the study session.\n * Otherwise, redirect the user to the single goal page.\n */\n _handleCourseRecommendationStart() {\n this._isCourseRecommendation = false;\n\n this._loading(true);\n this._screenManager.show('loading');\n\n // If the course isn't focused, focus it.\n let promise = Promise.resolve(true);\n if (!this._courseRecommendation.aggregateMemory.focused) {\n promise = API.postFocusGoal(this._courseRecommendation.goal.id);\n }\n\n promise.then(() => {\n if (this._studyAll) {\n this._fetchData();\n } else {\n window.location.href = Paths.studyGoal(this._courseRecommendation.goal.id);\n }\n })\n .catch(this._errorHandler.bind(this));\n }\n\n /**\n * @override\n * @param {Object[]} presentationResults results sent\n * @param {Object} sessionResults response from the server\n */\n _handlePresentationResultsUploaded(presentationResults, sessionResults) {\n // Check to see if the goal was completed (this only applies to single course).\n this._isCourseCompleted = this._courseCompleted(sessionResults);\n\n // Check to see if the checkpoint was returned.\n this._isCheckpoint = this._checkpointTriggered(sessionResults);\n\n super._handlePresentationResultsUploaded(presentationResults, sessionResults);\n }\n\n /**\n * Callback for skipping multiple items on the welcome screen(s).\n *\n * @param {Number[]} itemIds\n */\n _handleSkipItems(itemIds) {\n // Don't do anything if in the loading process.\n if (this._isLoading) {\n return;\n }\n\n this._loading(true);\n\n const skippedItemCalls = _.map(itemIds, (itemId) => {\n return API.postSkipItem(itemId);\n });\n\n Promise.all(skippedItemCalls)\n .then(() => {\n // Update item package data to set memory data to skipped.\n itemIds.forEach(itemId => {\n const itemPackage = this._sessionData.itemPackages[itemId];\n\n if (itemPackage.memory) {\n itemPackage.memory.skipped = true;\n } else {\n itemPackage.memory = new Memory({ skipped: true });\n }\n });\n\n // Skipping items will alter aggregate data, reload\n // the memories when fetching the study session.\n this._reloadMemories();\n this._fetchData();\n })\n .catch((reason) => {\n Logger.error('Skipping Items', reason, reason.stack);\n this._fetchData();\n });\n }\n\n /**\n * Method for loading item package assets.\n *\n * @override\n * @param {Boolean} includeSentenceAssets\n * @returns {Loader}\n */\n _loadSessionAssets() {\n const itemPackages = this._sessionData.studySession.map(studyNode => studyNode.content);\n return new Loaders.ItemPackageAssets(itemPackages, this._includeSentenceAssets);\n }\n\n /**\n * Determines whether the current state of the session data makes\n * the course eligible for a recommendation. If so, retrieve the\n * recommendation data.\n *\n * Because course the recommendation only appears once for each\n * bluebox, use courseRecommend to determine whether the\n * course was already recommended or not.\n *\n * @returns {Promise}\n */\n _setupCourseRecommendation() {\n if (courseRecommended) {\n this._isCourseRecommendation = false;\n return Promise.resolve(false);\n }\n\n // For studyAll, make sure the item source and goal source are set to\n // All. If all the items in the study session are strong, then the\n // course is eligible for a recommendation.\n //\n // For a single goal, check to see if there are no ready or no new items.\n if (this._studyAll) {\n courseRecommended =\n this._sessionConfig.goalSource === GoalSource.ALL &&\n this._sessionConfig.itemSource === ItemSource.ALL &&\n this._sessionData.studySession.every(s => s.memory && !s.memory.isReady());\n } else {\n courseRecommended = this._sessionData.goals[0].getReadyItemsCount(this._sessionData.aggregateMemories[0]) === 0;\n }\n\n // Simply resolve if nothing has changed.\n if (!courseRecommended) {\n return Promise.resolve(false);\n }\n\n // Set up promise as a response.\n const loader = new Loaders.GoalSuggestionLoader(this._cueLanguage);\n return loader.then(response => {\n this._courseRecommendation = response;\n\n // If the response wasn't truthy, then there is no course to study.\n // Reset the course recommended and isCourseRecommendation flag so\n // the lookup can happen again.\n if (!response) {\n courseRecommended = false;\n this._isCourseRecommendation = false;\n } else {\n this._isCourseRecommendation = true;\n }\n\n return this._isCourseRecommendation;\n });\n }\n\n /**\n * Listen for beforeunload event to warn user that they are\n * leaving a checkpoint.\n *\n * @override\n */\n _setupEvents() {\n super._setupEvents();\n\n // Helper method that needs to be stored as a bound method for binding\n // and unbinding event.\n this._handleBeforeUnload = (e) => {\n // If the state is welcome screen checkpoint, then prompt\n // the user before they can leave the page. Some browsers\n // require returnValue to set on the event itself.\n // https://developer.mozilla.org/en-US/docs/Web/Events/beforeunload#Example\n if (this._isCheckpoint) {\n (e || window.event).returnValue = SkipCheckpointPrompt;\n return SkipCheckpointPrompt;\n }\n\n // Force the session to be saved locally if there is one running.\n this._forceFinishSession(true);\n };\n\n window.addEventListener('beforeunload', this._handleBeforeUnload);\n }\n\n /**\n * Unbind listener for checkpoints, memory bank, etc.\n *\n * @override\n */\n _quitApplication(...args) {\n if (this._isLoading) {\n return;\n }\n\n // If a plot was generated, delete it.\n if (this._memoryBankPlot) {\n this._memoryBankPlot.remove();\n }\n\n // Unbind window events.\n window.removeEventListener('beforeunload', this._handleBeforeUnload);\n\n // Remove master and skip events.\n this._skipItemDialogue.removeEvent('item_skipped');\n this._completeItemDialogue.removeEvent('item_skipped');\n\n // In Study All, clear memories from the item packages (since they are\n // cached), but should not persist between apps.\n if (this._studyAll && this._sessionData && this._sessionData.itemPackages) {\n const itemPackages = this._sessionData.itemPackages;\n Object.keys(itemPackages).map(id => delete itemPackages[id].memory);\n }\n\n super._quitApplication(...args);\n }\n\n /**\n * Render the course recommendation page.\n */\n _showCourseRecommendation() {\n this._screenManager.renderComponent(CourseRecommendationScreen, {\n aggregateMemory: this._courseRecommendation.aggregateMemory,\n goal: this._courseRecommendation.goal,\n onMenu: () => this._quitApplication(),\n onStart: this._handleCourseRecommendationStart.bind(this),\n onSkip: this._handleCourseRecommendationSkip.bind(this),\n });\n\n // Reset the banner.\n this._renderBanner();\n }\n\n /**\n * For items, always just retrieve the next session data and show\n * the memory bank.\n */\n _showSummaryScreen() {\n this._screenManager.show('loading');\n this._fetchData();\n }\n\n /**\n * Renders the memory bank component, which renders the session preview,\n * session summary and memory bank components.\n */\n _showWelcomeScreen() {\n let updateMemoryBankPlot = true;\n\n // Build the memory bank nodes for the next session. For study all, we only\n // want to add items that are in the session or have had a memory assigned\n // to them. For single study, we can create a node for all items.\n const inSessionNodes = new Set(this._sessionData.studySession.map(studyNode => studyNode.content));\n const memoryBankNodes = _.chain(this._sessionData.itemPackages)\n .filter(ip => this._studyAll ? (inSessionNodes.has(ip) || !!ip.memory) : true)\n .map(ip => {\n const inSession = inSessionNodes.has(ip);\n return MemoryBankNode.createFromItemPackage(ip, ip.memory, inSession);\n })\n .value();\n\n // Set up memory bank plot if it already exist.\n // Don't use the update method to render the nodes.\n if (!this._memoryBankPlot) {\n this._memoryBankPlot = new MemoryBankPlot(memoryBankNodes);\n updateMemoryBankPlot = false;\n }\n\n // If there is a course recommendation and a checkpoint, ignore the checkpoint.\n const isCheckpoint = this._isCheckpoint && !this._isCourseRecommendation;\n\n // Set up the props to send to the screen manager.\n const props = {\n applicationType: this._applicationType,\n courseRecommendation: this._isCourseRecommendation ? this._courseRecommendation : null,\n isCheckpoint,\n isCourseCompleted: this._isCourseCompleted,\n isCourseRecommendation: this._isCourseRecommendation,\n isPremiumUser: Config.user.isPremium,\n isStudyAll: this._studyAll,\n hasFinishedSession: this._finishedSessionsCount > 0,\n memoryBankPlot: this._memoryBankPlot,\n onCheckpointSkip: this._handleCheckpointSkip.bind(this),\n onCheckpointRedirect: this._handleCheckpointRedirect.bind(this),\n onCourseRecommendationShow: this._showCourseRecommendation.bind(this),\n onCourseRecommendationSkip: this._handleCourseRecommendationSkip.bind(this),\n\n // After the complete item prompt goes away, re-render component.\n onMasterItem: (itemPackage) => {\n this._completeItemPrompt(itemPackage, this._showWelcomeScreen.bind(this));\n },\n\n onMenu: () => this._quitApplication(),\n onNext: () => {\n this._isCourseCompleted = false;\n this._showWelcomeScreen();\n },\n\n onGoalSourceChange: this._handleSessionChange.bind(this, 'goalSource'),\n onItemSourceChange: this._handleSessionChange.bind(this, 'itemSource'),\n onSessionSizeChange: this._handleSessionChange.bind(this, 'sessionSize'),\n\n onSkipItems: this._handleSkipItems.bind(this),\n onStart: (...args) => this._startSession(...args),\n sessionConfig: this._sessionConfig,\n sessionData: this._sessionData,\n sessionSizes: this._getSessionSizes(),\n startLabel: this._getStartButtonLabel(),\n updatedMemories: this._updatedMemories,\n };\n\n this._screenManager.renderComponent(\n MemoryBankSummaryScreen,\n props,\n () => {\n // Now that the component has rendered, update the memory bank nodes\n if (updateMemoryBankPlot) {\n this._memoryBankPlot.update(memoryBankNodes);\n }\n }\n );\n\n this._renderBanner({\n showSettingsButton: true,\n children: (\n <MemoryBankSummaryBanner\n isStudyAll={props.isStudyAll}\n sessionData={props.sessionData} />\n ),\n });\n }\n\n /**\n * @override\n * @returns {Boolean}\n */\n _updateSessionConfig() {\n let hasNewItems = true;\n let hasReviewItems = true;\n let hasCompleted = true;\n let hasUncompleted = true;\n\n if (this._studyAll) {\n // Not checking all goals for review items, but seeing if are any started\n // courses.\n hasReviewItems = _.some(this._sessionData.aggregateMemories, (memory) => {\n return memory && memory.items && memory.items.studiedItemsCount;\n });\n\n hasCompleted = _.some(this._sessionData.aggregateMemories, (memory) => {\n return memory && memory.completed;\n });\n\n hasUncompleted = _.some(this._sessionData.aggregateMemories, (memory) => {\n return !memory || !memory.completed;\n });\n } else {\n hasNewItems = _.some(this._sessionData.itemPackages, (ip) => {\n return !ip.memory;\n });\n\n hasReviewItems = _.some(this._sessionData.itemPackages, (ip) => {\n return ip.memory && !ip.memory.skipped;\n });\n }\n\n // Keep all the results from toggling each field.\n const toggleResults = [\n this._sessionConfig.toggleDisabled('itemSource', ItemSource.NEW, !hasNewItems),\n this._sessionConfig.toggleDisabled('itemSource', ItemSource.REVIEW, !hasReviewItems),\n this._sessionConfig.toggleDisabled('goalSource', GoalSource.COMPLETED, !hasCompleted),\n this._sessionConfig.toggleDisabled('goalSource', GoalSource.UNCOMPLETED, !hasUncompleted),\n ];\n\n // If any of the fields forced a config to change, return false.\n return toggleResults.reduce((a, b) => a && b);\n }\n\n /**\n * Should return a translated string for the app.\n */\n _getStartButtonLabel() {\n throw new Error('Item Study Apps must define _getStartButtonLabel()');\n }\n}\n","/* eslint-disable no-param-reassign, default-case, prefer-template, react/react-in-jsx-scope */\nimport { HaltFetchDataError, noticeError } from 'es6/core/errors';\nimport * as API from 'es6/core/api';\nimport Config from 'es6/core/config';\nimport Keys from 'es6/core/keys';\nimport * as Loaders from 'es6/core/loaders';\nimport Logger from 'es6/services/logger';\nimport { schedule as scheduleMouseoverDictionaryLoad } from 'iknow-mouseover-dictionary/loader';\nimport { hideImmediately as hideMouseoverDictionary } from 'iknow-mouseover-dictionary/bubble';\nimport bindMouseoverDictionary from 'iknow-mouseover-dictionary';\nimport ServerTimeManager from 'es6/services/server-time-manager';\nimport * as StudyDataManager from 'es6/services/study-data-manager';\nimport TokenExpiredScreen from 'es6/components/apps/screens/token-expired';\nimport { pauseEvents, enableAutoPause, disableAutoPause } from 'es6/services/pause';\nimport { getPauseDelay } from 'es6/controllers/apps/debug-overrides';\nimport SessionProgressBar from 'es6/components/apps/session-progress-bar';\nimport ScreenBanner from 'es6/components/apps/screen-banner';\n\n// Only need to load the static assets once per app. Keep a reference here.\nlet staticAssetLoader = null;\n\n/**\n * Prevent browser to navigate using the back button.\n */\nfunction disableDefaultBackspace() {\n window.addEventListener('keydown', preventDefaultBackspace, true);\n window.addEventListener('keypress', preventDefaultBackspace, true);\n}\n\n/**\n * Enable browser to navigate using the back button.\n */\nfunction enableDefaultBackspace() {\n window.removeEventListener('keydown', preventDefaultBackspace, true);\n window.removeEventListener('keypress', preventDefaultBackspace, true);\n}\n\n/**\n * preventDefaultBackspace is used to prevent the browser to navigate\n * using the backspace key.\n *\n * @param {Event} e\n */\nfunction preventDefaultBackspace(e) {\n if (e.keyCode === Keys.BACKSPACE) {\n e.preventDefault();\n }\n}\n\n/**\n * When extending this class, the _createSequencer() method needs to be overidden or an error will\n * be tossed.\n */\nexport default class BaseApp {\n constructor(applicationType) {\n this._setupElements();\n this._setupUtilities();\n this._setupHelpers();\n this._setupQuizTimer();\n this._setupScreenManager();\n this._setupScreens();\n this._setupStaticAssets();\n this._setupEvents();\n\n this._activeLoaders = [];\n this._applicationType = applicationType;\n this._isLoading = false;\n\n // Put it on the global namespace so legacy screens can read it.\n Smartfm.bindMouseoverDictionary = (root) => {\n let unbinds = [];\n\n root.find('.dictionary-target').each(\n (i, el) => unbinds.push(bindMouseoverDictionary(el))\n );\n\n return () => {\n unbinds.forEach(unbind => unbind());\n unbinds = [];\n };\n };\n }\n\n _setupElements() {\n this._elements = {\n homeButton: document.querySelector('#home_button'),\n appContainer: document.querySelector('.app-container'),\n };\n }\n\n _setupUtilities() {\n Smartfm.Apps.Utilities.VariableType();\n Smartfm.Apps.Utilities.DisallowKeys('PGUP', 'PGDOWN');\n\n this._completeItemDialogue = new Smartfm.Apps.Utilities.ModalWindow('master_item', { window: Smartfm.Apps.Common.Windows.SkipItem });\n this._skipItemDialogue = new Smartfm.Apps.Utilities.ModalWindow('skip_item', { window: Smartfm.Apps.Common.Windows.SkipItem });\n }\n\n _setupHelpers() {\n // TODO turn these into a module.\n this._trigger = Smartfm.Apps.Helpers.Base.trigger;\n this._click = Smartfm.Apps.Helpers.Base.addClickEvent;\n }\n\n _setupQuizTimer() {\n this._quizTimer = new Smartfm.Apps.QuizTimer();\n this._quizTimer.finished = () => {\n this._screenManager.fireScreenCallback('quizTimedOut');\n };\n\n // Timer should pause while text is being entered.\n $(document).bind('key_input_activity', () => {\n this._quizTimer.delay(2);\n });\n }\n\n _setupScreenManager() {\n this._screenManager = new Smartfm.Apps.ScreenManager();\n\n // TODO remove the need for this by making screenManager a module.\n Smartfm.screenManager = this._screenManager;\n }\n\n _setupScreens() {\n this._screenManager.addNavigation('app_navigation');\n this._screenManager.addPanel('bottom');\n this._screenManager.showPanels('bottom');\n\n this._screenManager.addScreen('loading', Smartfm.Apps.Common.Screens.Loading);\n this._screenManager.addScreen('error', Smartfm.Apps.iKnow.Screens.Error);\n\n // For skiping an item in session.\n this._screenManager.addEvent('skip_item_initiated', this._showSkipDialog.bind(this));\n }\n\n _setupEvents() {\n const handleHomeButton = this._handleHomeButton.bind(this);\n\n // Keep instances of the bound methods so they can be removed\n // in the unbindEvents() method.\n this._eventHandlers = {\n handleHomeButton,\n };\n\n this._elements.homeButton.addEventListener('click', handleHomeButton);\n\n // Disable ability in browser to go back.\n disableDefaultBackspace();\n\n // Hide any visible dictionary tooltips when the app is paused.\n pauseEvents.on('pause', hideMouseoverDictionary);\n\n pauseEvents.on('pause', () => this._pauseApplication());\n pauseEvents.on('resume', () => this._resumeApplication());\n }\n\n /**\n * @param {Event} e\n */\n _handleReloadPromptClose(e) {\n this._elements.reloadPrompt.hide();\n }\n\n /**\n * @param {Event} e\n */\n _handleReloadPromptReload(e) {\n window.location.reload();\n }\n\n /**\n * Takes a packed response and builds a session data object from it.\n *\n * @param {Object} packedData\n * @returns {Object}\n */\n _buildSessionData(packedData) {\n // Create item packages.\n packedData.itemPackages = _.chain(packedData.goals)\n .pluck('goalItems')\n .flatten()\n .indexBy(ip => ip.getId())\n .value();\n\n // Create sentences.\n packedData.sentences = _.chain(packedData.goals)\n .pluck('goalItems')\n .flatten()\n .pluck('sentences')\n .flatten()\n .indexBy(sentence => sentence.getId())\n .value();\n\n // This handles placing the memory on the appropriate sentence\n // or item package for single study session.\n if (Array.isArray(packedData.memories)) {\n packedData.memories.forEach(memory => {\n switch (memory.contentDomain) {\n case 'sentences':\n if (packedData.sentences[memory.contentId] !== 'undefined') {\n packedData.sentences[memory.contentId].memory = memory;\n }\n break;\n case 'items':\n if (packedData.itemPackages[memory.contentId] !== 'undefined') {\n packedData.itemPackages[memory.contentId].memory = memory;\n }\n break;\n }\n });\n }\n\n // Associate appropriate sentence or item package to study item.\n // Link the study item memory to the sentence or item package\n // if not specified.\n _.each(packedData.studySession, studyNode => {\n switch (studyNode.contentDomain) {\n case 'sentences':\n studyNode.content = packedData.sentences[studyNode.contentId];\n break;\n case 'items':\n studyNode.content = packedData.itemPackages[studyNode.contentId];\n break;\n }\n\n // Make sure the memories are the same.\n if (studyNode.content) {\n if (!studyNode.content.memory) {\n studyNode.content.memory = studyNode.memory;\n } else if (!studyNode.memory) {\n studyNode.memory = studyNode.content.memory;\n }\n }\n\n if (!studyNode.content) {\n Logger.error('Session Loader', 'No sentence or itemPackage for ' + studyNode.contentId + '.');\n }\n });\n\n // TODO: Set to error when loader logic is rewritten.\n // This should in theory be an error, but because it can occur and not\n // trigger an error, send it as a warning for now.\n if (packedData.studySession.length === 0) {\n Logger.warn('Session Loader', 'Study session has no items.');\n }\n\n return packedData;\n }\n\n /**\n * Aborts all active loaders.\n */\n _abortActiveLoaders() {\n this._activeLoaders.forEach(l => l.abort());\n }\n\n /**\n * Will add a loader to the active loader list. Removes the loader\n * from the active list when it finishes, is aborted or an error\n * occurs.\n *\n * @param {Loader} loader\n * @returns {Loader} loader\n */\n _addActiveLoader(loader) {\n this._activeLoaders.push(loader);\n\n // Callback to remove the loader when done.\n const removeLoader = () => {\n const index = this._activeLoaders.indexOf(loader);\n this._activeLoaders.splice(index, 1);\n };\n\n // When the loader finishes, remove it from the active loaders list.\n loader.then(removeLoader).catch(removeLoader);\n\n return loader;\n }\n\n /**\n * _preventDefaultBackspace is used to prevent the browser to navigate\n * using the backspace key.\n */\n _preventDefaultBackspace(e) {\n if (e.keyCode === Keys.BACKSPACE) {\n e.preventDefault();\n }\n }\n\n /**\n * Helper method by diagnostic, iknow and quick review to load\n * the Mouseover Dictionary after retrieving data from the loaders.\n * This can be chained with the response from the loaders.\n *\n * @param {Array} goals\n * @returns {Promise}\n */\n _setupMouseoverDictionary(goals) {\n const goalIds = goals.map((g) => g.id);\n const promise = scheduleMouseoverDictionaryLoad({ courses: goalIds });\n // We don't want to fail appliction load when dictionary fails.\n return promise.catch(error => error);\n }\n\n /**\n * Sets up static loaders.\n *\n * @returns {Promise}\n */\n _setupStaticAssets() {\n // If staticAssetLoader has not been defined, start loading the\n // assets for it.\n if (!staticAssetLoader) {\n staticAssetLoader = new Loaders.Assets({\n sounds: (new Smartfm.Apps.SoundSet(Smartfm.Apps.Sounds)).urls,\n });\n }\n\n return Promise.all([ServerTimeManager, staticAssetLoader]);\n }\n\n _checkUnsentSaveData(onSent) {\n StudyDataManager.checkForStoredPresentationData(\n () => {},\n onSent,\n error => this._errorHandler(error)\n );\n }\n\n _savePresentationResults(presentationResults, completeCallback) {\n if (Config.isLoggedIn()) {\n StudyDataManager.uploadPresentationData(presentationResults, this._applicationType)\n .then(completeCallback)\n .catch(error => this._errorHandler(error));\n } else {\n // Store locally until the user creates an account.\n StudyDataManager.storePresentationData(presentationResults, this._applicationType)\n .then(completeCallback)\n .catch(error => this._errorHandler(error));\n }\n }\n\n /**\n * Can be used to stop the chain of events in fetchData().\n */\n _haltFetchData() {\n throw new HaltFetchDataError();\n }\n\n /*\n * Error handler for the expected kinds of error that can occur\n * during Ajax requests.\n *\n * @param {Error} error\n */\n _errorHandler(error) {\n if (error.name === 'TokenExpiredError') {\n Logger.error('DataError', error);\n this._loading(false);\n this._screenManager.renderComponent(TokenExpiredScreen, { onReload: () => window.location.reload() });\n } else if (error.name === 'PaywallError') {\n this._screenManager.show('premium');\n } else if (error.name === 'AjaxAbortedError' || error.name === 'HaltFetchDataError') {\n // AjaxAbortedError only gets triggered when changing app settings and\n // Should not trigger anything in the app.\n return;\n } else {\n Logger.error('DataError', error, error.stack);\n\n // Send the error to new relic.\n noticeError(error);\n\n // Show a generic error.\n $(document).trigger('api_error', error);\n }\n }\n\n _pauseApplication() {\n if (!this._sessionInProgress()) {\n return;\n }\n this._quizTimer.pause();\n this._screenManager.pause();\n this._sequencer.pauseSequence();\n }\n\n _resumeApplication() {\n if (!this._sessionInProgress()) {\n return;\n }\n this._quizTimer.resume();\n this._screenManager.resume();\n this._sequencer.resumeSequence();\n }\n\n _sessionInProgress() {\n return this._sequencer && this._sequencer.inProgress();\n }\n\n /**\n * TODO: Fix this dialogue to just take an ID to skip.\n */\n _showSkipDialog() {\n this._skipItemDialogue.removeEvent('item_skipped');\n this._skipItemDialogue.addEvent('item_skipped', () => {\n // Remove the skipped item from the stored study session.\n // TODO a cleaner way of doing this\n const removeId = this._sequencer.activeQuiz.itemPackage.item.id;\n this._sessionData.studySession = _.filter(this._sessionData.studySession, studyNode => studyNode.contentId !== removeId);\n this._sequencer.skipCurrentItem();\n });\n this._skipItemDialogue.show();\n }\n\n /**\n * Callback for handling home button clicked.\n *\n * @param {Event} e\n */\n _handleHomeButton(e) {\n e.preventDefault();\n this._quitSession();\n }\n\n /**\n * Callback for handling quit button clicked.\n *\n * @param {Event} e\n */\n _handleQuitButton(e) {\n e.preventDefault();\n this._quitSession();\n }\n\n /**\n * Behavior for when the app is quit by the user. Does\n * not handle when the tab or window is closed.\n */\n _quitSession() {\n window.location = Config.getReferrerURL();\n }\n\n /**\n * Callback to trigger starting a new session.\n */\n _startSession() {\n if (this._isLoading) {\n return;\n }\n\n this._screenManager.show('loading');\n\n // Reset the banner.\n this._renderBanner();\n\n // Wait for assets to finish loading and start the sequencer.\n this._assetLoader.then(() => {\n // Create sequencer and start.\n this._sequencer = this._createSequencer();\n this._sequencer.startSequence(\n this._handleSequencerEnded.bind(this),\n this._handleSequencerProgress.bind(this));\n\n this._handleSequencerStarted();\n }).catch(this._errorHandler);\n }\n\n /**\n * Return a sequencer.\n *\n * @returns {SequencerBase}\n */\n _createSequencer() {\n throw new Error('_createSequencer() needs to be defined');\n }\n\n _handleSequencerStarted() {\n // Start the auto-pause service.\n enableAutoPause(getPauseDelay() || 90 * 1000);\n }\n\n _handleSequencerEnded() {\n // Stop the auto-pause service.\n disableAutoPause();\n }\n\n _handleSequencerProgress(progress) {\n this._renderBanner({\n showPauseButton: true,\n children: (<SessionProgressBar progress={progress} />),\n });\n }\n\n _renderBanner(props = {}) {\n const defaultProps = {\n showPauseButton: false,\n showSettingsButton: false,\n renderSettingsModalContents: (...args) => this._renderSettingsModalContents(...args),\n onQuit: (...args) => this._handleQuitButton(...args),\n };\n\n this._screenManager.renderBannerComponent(\n ScreenBanner,\n Object.assign(defaultProps, props)\n );\n }\n\n /**\n * Subclasses can override this to return a React component containing the contents of the\n * settings modal.\n */\n _renderSettingsModalContents(closeModal) {\n return null;\n }\n\n /**\n * Used to toggle the loading flag on the app.\n *\n * @param {Boolean} isLoadingToggle\n */\n _loading(isLoadingToggle) {\n const { appContainer } = this._elements;\n\n this._isLoading = isLoadingToggle;\n\n if (isLoadingToggle) {\n appContainer.classList.add('loading');\n } else {\n appContainer.classList.remove('loading');\n }\n }\n\n /**\n * Used by the summary panel and summary screen to skip individual items. Does\n * NOT retrieve a new session.\n */\n _skipItem(itemPackage, callback) {\n this._loading(true);\n\n API.postSkipItem(itemPackage.getId()).then(() => {\n itemPackage.memory.skipped = true;\n callback.call(this, itemPackage);\n this._loading(false);\n }).catch(function (reason) {\n Logger.error('Skip Item', reason, reason.stack);\n this._loading(false);\n });\n }\n\n _unbindEvents() {\n const { handleHomeButton } = this._eventHandlers;\n\n // Restore the default backspace button.\n enableDefaultBackspace();\n\n this._elements.homeButton.removeEventListener('click', handleHomeButton);\n\n pauseEvents.removeListener('pause', hideMouseoverDictionary);\n\n pauseEvents.removeListener('pause', () => this._pauseApplication());\n pauseEvents.removeListener('resume', () => this._resumeApplication());\n }\n\n /**\n * Used by the summary panel and summary screen to unskip individual items. Does\n * NOT retrieve a new session.\n */\n _unskipItem(itemPackage, callback) {\n this._loading(true);\n\n API.postUnskipItem(itemPackage.getId()).then(() => {\n itemPackage.memory.skipped = false;\n callback.call(this, itemPackage);\n this._loading(false);\n }).catch((reason) => {\n Logger.error('Unskip Item', reason, reason.stack);\n this._loading(false);\n });\n }\n\n /**\n * Used by summary panel and summary screen to set an item to mastered. Prompts\n * a modal (unreversible action warning).\n */\n _completeItemPrompt(itemPackage, callback) {\n this._completeItemDialogue.removeEvent('item_skipped');\n this._completeItemDialogue.addEvent('item_skipped', () => this._completeItem(itemPackage, callback));\n this._completeItemDialogue.show();\n }\n\n _completeItem(itemPackage, callback) {\n API.postMemoryCheckpoint([itemPackage.getId()]).then(() => {\n itemPackage.memory.setToComplete();\n callback(itemPackage);\n this._loading(false);\n }).catch(function (reason) {\n Logger.error('Master Item', reason, reason.stack);\n this._loading(false);\n });\n }\n}\n","/* eslint-disable react/prefer-es6-class, react/prefer-stateless-function */\nimport React from 'react';\nimport Localization from 'es6/services/localization';\nimport { NavButton, Navigation } from 'es6/components/apps/navigation';\n\n/**\n * ItemPackages are expected to contain the memory field.\n */\nexport default React.createClass({\n displayName: 'TokenExpiredScreen',\n\n propTypes: {\n onReload: React.PropTypes.func.isRequired,\n },\n\n render() {\n return (\n <div className=\"screen screen-token-expired\">\n <div className=\"screen-content\">\n <p className=\"message\">{Localization.t('token-expired-explanation')}</p>\n </div>\n\n <Navigation>\n <NavButton align=\"right\" onClick={this.props.onReload} focused focusable>{Localization.t('quit')}</NavButton>\n </Navigation>\n </div>\n );\n },\n});\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar R = (typeof Reflect === \"undefined\" ? \"undefined\" : _typeof(Reflect)) === 'object' ? Reflect : null;\nvar ReflectApply = R && typeof R.apply === 'function' ? R.apply : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n};\nvar ReflectOwnKeys;\n\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys;\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n};\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\n\nmodule.exports = EventEmitter;\nmodule.exports.once = once; // Backwards-compat with node 0.10.x\n\nEventEmitter.EventEmitter = EventEmitter;\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined; // By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\n\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + _typeof(listener));\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function get() {\n return defaultMaxListeners;\n },\n set: function set(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function () {\n if (this._events === undefined || this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n}; // Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\n\n\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined) return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n\n for (var i = 1; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var doError = type === 'error';\n var events = this._events;\n if (events !== undefined) doError = doError && events.error === undefined;else if (!doError) return false; // If there is no 'error' event listener then throw.\n\n if (doError) {\n var er;\n if (args.length > 0) er = args[0];\n\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n } // At least give some kind of context to the user\n\n\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n if (handler === undefined) return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n\n for (var i = 0; i < len; ++i) {\n ReflectApply(listeners[i], this, args);\n }\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n checkListener(listener);\n events = target._events;\n\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type, listener.listener ? listener.listener : listener); // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n\n events = target._events;\n }\n\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] = prepend ? [listener, existing] : [existing, listener]; // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n } // Check for listener leak\n\n\n m = _getMaxListeners(target);\n\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true; // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n\n var w = new Error('Possible EventEmitter memory leak detected. ' + existing.length + ' ' + String(type) + ' listeners ' + 'added. Use emitter.setMaxListeners() to ' + 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener = function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n};\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0) return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = {\n fired: false,\n wrapFn: undefined,\n target: target,\n type: type,\n listener: listener\n };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener = function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n}; // Emits a 'removeListener' event if and only if the listener was removed.\n\n\nEventEmitter.prototype.removeListener = function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n checkListener(listener);\n events = this._events;\n if (events === undefined) return this;\n list = events[type];\n if (list === undefined) return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0) this._events = Object.create(null);else {\n delete events[type];\n if (events.removeListener) this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0) return this;\n if (position === 0) list.shift();else {\n spliceOne(list, position);\n }\n if (list.length === 1) events[type] = list[0];\n if (events.removeListener !== undefined) this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(type) {\n var listeners, events, i;\n events = this._events;\n if (events === undefined) return this; // not listening for removeListener, no need to emit\n\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0) this._events = Object.create(null);else delete events[type];\n }\n\n return this;\n } // emit removeListener for all listeners on all events\n\n\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n};\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n if (events === undefined) return [];\n var evlistener = events[type];\n if (evlistener === undefined) return [];\n if (typeof evlistener === 'function') return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function (emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\n\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n\n for (var i = 0; i < n; ++i) {\n copy[i] = arr[i];\n }\n\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++) {\n list[index] = list[index + 1];\n }\n\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n\n resolve([].slice.call(arguments));\n }\n\n ;\n eventTargetAgnosticAddListener(emitter, name, resolver, {\n once: true\n });\n\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, {\n once: true\n });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + _typeof(emitter));\n }\n}","/* eslint-disable react/prefer-es6-class, react/sort-comp, react/jsx-indent */\nimport React from 'react';\nimport ProgressBar from 'es6/components/common/progress-bar';\nimport Localization from 'es6/services/localization';\nimport { Stats, Stat, StatData, StatLabel } from 'es6/components/apps/stats';\nimport { TranscodedImageSizes, TranscodedImage } from 'es6/components/common/transcoded-image';\n\n/**\n * Displays the basic information about a course. If an aggregateMemory is provided,\n * the teaser will also show progress and display a ribbon over the image icon.\n */\nexport default React.createClass({\n displayName: 'CourseTeaser',\n\n /**\n * enableRibbon and enableStudyStats depend on aggregateMemory being set.\n *\n * enableRibbon: Wil add a \"new\" ribbon if the course is new for the user\n * enableStudyStats: Will show stat pills instead of typical course details.\n */\n propTypes: {\n aggregateMemory: React.PropTypes.object,\n enableRibbon: React.PropTypes.bool,\n enableStudyStats: React.PropTypes.bool,\n goal: React.PropTypes.object.isRequired,\n },\n\n getDefaultProps() {\n return {\n aggregateMemory: null,\n enableRibbon: false,\n enableStudyStats: false,\n };\n },\n\n /**\n * Helper method to determine if the user has started a course.\n *\n * @returns {Boolean}\n */\n _hasStartedCourse() {\n return this.props.aggregateMemory && this.props.aggregateMemory.startedAt;\n },\n\n render() {\n let progressBar = null;\n\n if (this.props.aggregateMemory && this.props.aggregateMemory.items) {\n progressBar = (<ProgressBar progress={this.props.aggregateMemory.items.progress} showProgressTag />);\n }\n\n return (\n <div className=\"course-teaser\">\n {this._renderImage()}\n\n <div className=\"course-details\">\n <div className=\"course-title-container\">\n <h1 className=\"course-title\">{this.props.goal.title}</h1>\n {progressBar}\n </div>\n\n {this.props.enableStudyStats && this._hasStartedCourse() ?\n this._renderStudyStats() : this._renderDetails()}\n </div>\n </div>\n );\n },\n\n /**\n * Renders course details.\n */\n _renderDetails() {\n return [\n (\n <div key=\"level\" className=\"course-detail course-detail-inline course-detail-level\">\n <span className=\"primary\">{Localization.t('js_iknow.level')} </span>\n <span className=\"secondary\">{this.props.goal.getDifficultyLevel()}</span>\n </div>\n ),\n (\n <div key=\"item-count\" className=\"course-detail course-detail-inline course-detail-items\">\n <span className=\"primary\">{Localization.t('items-label')} </span>\n <span className=\"secondary\">{this.props.goal.itemsCount}</span>\n </div>\n ),\n (\n <div key=\"sentence-count\" className=\"course-detail course-detail-inline course-detail-sentences\">\n <span className=\"primary\">{Localization.t('sentences-label')} </span>\n <span className=\"secondary\">{this.props.goal.sentencesCount}</span>\n </div>\n ),\n ];\n },\n\n /**\n * Renders image for the course page, with or without a ribbon marking it\n * as new.\n */\n _renderImage() {\n let ribbon = null;\n\n if (!this.props.goal.icon) {\n return null;\n }\n\n // If there is an aggregateMemory, but unstarted. Add the as new.\n if (this.props.enableRibbon && !this._hasStartedCourse()) {\n ribbon = (\n <div className=\"ribbon ribbon-corner ribbon-corner-large-image ribbon-orange\">\n <div className=\"ribbon-message\">{Localization.t('ribbon-message.new')}</div>\n </div>\n );\n }\n\n return (\n <div className=\"course-image\">\n {ribbon}\n <TranscodedImage src={this.props.goal.icon} size={TranscodedImageSizes.LARGE} />\n </div>\n );\n },\n\n /**\n * Renders study statistics for a course.\n */\n _renderStudyStats() {\n const aggregate = this.props.aggregateMemory;\n const goal = this.props.goal;\n\n return (\n <Stats>\n <Stat type=\"started\">\n <StatData>\n {aggregate.items.studiedItemsCount}\n <span className=\"slash\">/</span>\n <span className=\"total\">{goal.getTotalItemsCount(aggregate)}</span>\n </StatData>\n <StatLabel>{Localization.t('items-started')}</StatLabel>\n </Stat>\n\n <Stat type=\"strong\">\n <StatData>{aggregate.items.getItemsAtCheckpoint1()}</StatData>\n <StatLabel>{Localization.t('items-zone-1')}</StatLabel>\n </Stat>\n\n <Stat type=\"mastered\">\n <StatData>{aggregate.items.itemsAtCheckpoint2}</StatData>\n <StatLabel>{Localization.t('items-mastered')}</StatLabel>\n </Stat>\n </Stats>\n );\n },\n});\n","/* eslint-disable brace-style, no-param-reassign, yoda */\nimport Quizzes from 'es6/controllers/apps/quizzes';\nimport SequencerBase from 'es6/controllers/apps/sequencer-base';\nimport { ResultTypes } from 'es6/models/quiz-result';\n\nconst EXPECTED_CORRECT_RATIO = 0.8;\n\nconst MAX_INSERTIONS = 2;\nconst MAX_PRESENTATIONS = 5;\n\nexport default class IKnowSequencer extends SequencerBase {\n constructor(sessionData, quizTimer) {\n super(sessionData.studySession, false, quizTimer);\n this.currentPresentationIndex = 0;\n }\n\n showNextQuiz() {\n const itemsWithQuizzesRemaining = this._itemsWithQuizzesRemaining();\n const previousQuizId = this.activeQuiz ? this.activeQuiz.itemPackage.getId() : null;\n let nextItem;\n const self = this;\n\n if (itemsWithQuizzesRemaining.length === 0) {\n this.sequenceFinished();\n return;\n }\n\n // If only one item remains and the previous presented quiz was testing that item,\n // insert a spacer quiz for a completed item.\n if (itemsWithQuizzesRemaining.length === 1 &&\n itemsWithQuizzesRemaining[0].content.getId() === previousQuizId)\n {\n // Select a substitute item to have a spacer quiz inserted for.\n nextItem = _.chain(this._studyItems)\n .reject(function (item) {\n // exclude the quiz we are trying to space out and any skipped items.\n return item.content.getId() === previousQuizId || item.skipped;\n })\n .shuffle()\n .min(function (item) {\n // The combination of shuffle and min will randomly select from amongst the\n // items with lowest-equal score calculated as follows.\n\n // The more quizzes already presented for an item the less desirable it is.\n let score = item.sequencing.presentedQuizzes.length;\n\n // But overriding this we want to avoid items that don't have possible quizzes\n // not already been presented in this session.\n const presentedQuizzes = _.pluck(item.sequencing.presentedQuizzes, 'quizType');\n const unpresentedQuizzes = _.difference(item.sequencing.possibleQuizTypes, presentedQuizzes);\n if (_.isEmpty(unpresentedQuizzes)) {\n score += 100; // Any large number would do here.\n }\n\n // And also want to avoid items that the user has marked as easy in this session.\n const markedAsEasy = _.some(item.sequencing.presentedQuizzes, function (quiz) {\n return quiz.result.leQuizResult === ResultTypes.EASY;\n });\n if (markedAsEasy) {\n score += 50;\n }\n\n // But preferably include items marked as hard.\n _.each(item.sequencing.presentedQuizzes, function (quiz) {\n if (quiz.result.leQuizResult === ResultTypes.HARD) {\n // reduce by 1, essentially cancelling the penalty of an extra quiz having been\n // shown for the item.\n score -= 1;\n }\n });\n\n return score;\n })\n .value();\n\n // If no valid spacers were found (e.g. if all skipped), do the only thing\n // possible and show another quiz for the previously quizzed item.\n if (nextItem === Infinity) { // _.min([]) gives Infinity\n this._showNextQuizForItem(this._studyItemFromQuiz(this.activeQuiz));\n return;\n }\n\n // Insert a quiz for the substitute item\n nextItem.sequencing.remainingQuizzes.unshift(this.selectSubstituteQuiz(nextItem));\n nextItem.sequencing.extraQuizzesInserted++;\n } else if (itemsWithQuizzesRemaining.length === 1) {\n // If only one item has quizzes left, present a quiz for that item.\n nextItem = itemsWithQuizzesRemaining[0];\n } else {\n // Assign scores to a pool of potential items then select between them by\n // roulette wheel selection.\n\n let totalScore = 0;\n\n // Find a single unseen item to add to the pool of potential items to show\n const insertableUnseenItem = _.chain(itemsWithQuizzesRemaining)\n .sortBy(function (item) {\n // Order by number of remaining quizzes so that the selected item\n // has the most remaining quizzes among unseenItems.\n return -item.sequencing.remainingQuizzes.length;\n })\n .find(function (item) {\n return item.sequencing.lastSeenAt === -1;\n })\n .value();\n\n const pool = _.chain(itemsWithQuizzesRemaining)\n // Filter out the item tested by the previous quiz and unstarted items\n .reject(function (item) {\n return item.content.getId() === previousQuizId || item.sequencing.lastSeenAt === -1;\n })\n // Add back in the single unseen item\n .union(insertableUnseenItem ? [insertableUnseenItem] : [])\n // Assign scores to all items in the pool.\n .each(function (item) {\n const score = self.scoreItem(item);\n item.sequencing.score = score;\n totalScore += score;\n })\n .value();\n\n // Select from the pool via roulette wheel selection on the items' scores.\n let targetPosition = _.random(0, totalScore - 1);\n nextItem = _.find(pool, function (item) {\n // Decrement by how far the current item moves us around the wheel.\n targetPosition -= item.sequencing.score;\n // Return whether the target was in the current section.\n return (0 > targetPosition);\n });\n }\n\n this._showNextQuizForItem(nextItem);\n }\n\n scoreItem(item) {\n if (item.sequencing.lastSeenAt === -1) {\n // The one and only unstarted item is given a fixed score. Its probability of inclusion\n // depends on this score relative to the scores assigned to started-but-not-yet-completed\n // items (Generally the more such items, the lower its chance of inclusion).\n return 32;\n } else {\n // Score determined by the number of quizzes remaining for the item (strong preference\n // for items with multiple remaining quizzes).\n const baseScore = Math.pow(3, item.sequencing.remainingQuizzes.length - 1);\n\n // And the interval since a quiz for the item was last presented (preference for items that\n // havent been seen in awhile).\n const lastSeenInterval = (this.currentPresentationIndex - item.sequencing.lastSeenAt);\n\n return baseScore * this.scoreItemIntervalMultiplier(lastSeenInterval);\n }\n }\n\n // Hard coded results of the interval modifier calculation.\n scoreItemIntervalMultiplier(interval) {\n const intervalMultipliers = [0.5, 1, 2, 4, 8, 16];\n if (interval < intervalMultipliers.length) {\n return intervalMultipliers[interval];\n } else {\n return _.last(intervalMultipliers);\n }\n }\n\n // Helper function to calculate the study interval multiplier\n // Exponential growth out to TARGET_FACTOR at the TARGET_INTERVAL.\n // Currently gives the following vales: f(2)=1, f(3)=2, f(4)=4,\n // f(5)=8, f(6)=16, f(7)=16, f(8)=16, ...\n /* TARGET_INTERVAL: 4,\n TARGET_FACTOR: 16,\n function intervalMultiplier(interval) {\n // NOTE: these are hard coded above, I'm just keeping the\n // calculation here as I may want to adjust the constants in future.\n var spacingExpBase = Math.pow(this.TARGET_FACTOR, 1/this.TARGET_INTERVAL);\n\n // Exponential only until the TARGET_INTERVAL; flat beyond it.\n interval = Math.min(interval-1, this.TARGET_INTERVAL);\n return Math.pow(spacingExpBase, interval);\n }*/\n\n quizFinished(quiz) {\n this.currentPresentationIndex++;\n\n const studyItem = this._studyItemFromQuiz(quiz);\n studyItem.sequencing.presentedQuizzes.push(quiz);\n\n const quizResult = quiz.result;\n if (quizResult.isCorrect()) {\n if (quizResult.leQuizResult === ResultTypes.HARD) {\n this._onHardAnswer(studyItem);\n } else if (quizResult.leQuizResult === ResultTypes.EASY) {\n this._onEasyAnswer(studyItem);\n }\n } else {\n this._onIncorrectAnswer(quiz, studyItem);\n }\n\n this._incrementProgress();\n this.showNextQuiz();\n }\n\n _onEasyAnswer(studyItem) {\n // If the user marks the item as easy, they probably don't want to see it again.\n studyItem.sequencing.remainingQuizzes = [];\n }\n\n _onHardAnswer(studyItem) {\n // Ensure there is at least one more quiz for the studyItem.\n if (studyItem.sequencing.remainingQuizzes.length === 0) {\n this._attemptInsertingExtraQuiz(studyItem);\n }\n }\n\n _onIncorrectAnswer(quiz, studyItem) {\n // Add a quiz to replace the one that was answered incorrectly.\n const repeatQuiz = this._getReplacementForIncorrectQuiz(quiz, studyItem);\n const remainingQuizzes = studyItem.sequencing.remainingQuizzes;\n remainingQuizzes.unshift(repeatQuiz);\n\n if (remainingQuizzes.length === 1) {\n // Insert an extra quiz if mistake was on the final scheduled quiz for the item.\n this._attemptInsertingExtraQuiz(studyItem);\n } else {\n // Otherwise reschedule the incorrectly answered quiz one place\n // later in the study sequence for that item.\n remainingQuizzes[0] = remainingQuizzes[1];\n remainingQuizzes[1] = repeatQuiz; // Previously at position 0\n }\n }\n\n _getReplacementForIncorrectQuiz(quiz, studyItem) {\n // Duplicate the incorrectly answered quiz.\n return new Quizzes[quiz.quizType](\n quiz.itemPackage,\n quiz.result.goalId,\n this._isDiagnosticQuiz,\n this.quizFinished.bind(this),\n this._quizTimer\n );\n }\n\n _attemptInsertingExtraQuiz(studyItem) {\n // Don't insert when there are no other items with quizzes remaining, in which\n // case the insertion would also require the insertions of too many spacers.\n if (this._itemsWithQuizzesRemaining().length === 1) {\n return;\n }\n\n // And don't when we have already inserted MAX_INSERTIONS quizzes for that item,\n // or it has had a total of more than MAX_PRESENTATIONS total presentations.\n // NOTE: we might want to revisit this in future, from a learning perspective,\n // its better to keep inserting (particular unique quizzes), but don't want\n // to make sessions feel unfinishable towards the end.\n if (studyItem.sequencing.extraQuizzesInserted > MAX_INSERTIONS ||\n studyItem.sequencing.presentedQuizzes.length > MAX_PRESENTATIONS)\n {\n return;\n }\n studyItem.sequencing.remainingQuizzes.unshift(this.selectSubstituteQuiz(studyItem));\n studyItem.sequencing.extraQuizzesInserted++;\n }\n\n selectSubstituteQuiz(studyItem) {\n const possibleQuizTypes = studyItem.sequencing.possibleQuizTypes;\n const presentedQuizTypes = _.pluck(studyItem.sequencing.presentedQuizzes, 'quizType');\n const remainingQuizTypes = _.pluck(studyItem.sequencing.remainingQuizzes, 'quizType');\n\n // Priority given to quizzes not already presented or scheduled in the current session.\n let insertable = _.difference(possibleQuizTypes, presentedQuizTypes, remainingQuizTypes);\n\n // Otherwise prefer quizzes that have already been presented to those that are scheduled.\n if (insertable.length === 0) {\n insertable = _.difference(possibleQuizTypes, remainingQuizTypes);\n }\n\n // If all else fails, take one of the upcoming quizzes.\n if (insertable.length === 0) {\n insertable = remainingQuizTypes;\n }\n\n // Sample and build quiz.\n const substituteQuiz = this._buildQuiz(studyItem, _.sample(insertable));\n\n return substituteQuiz;\n }\n\n /**\n * @Override\n * Adjustment to _expectedRemainingQuizCount due to item insertion.\n */\n _expectedRemainingQuizCount() {\n // The expected number of quizzes remaining is greater than the number of scheduled\n // quizzes remaining as the user will get some fraction of the remaining quizzes wrong\n // which will then need to be repeated. This could be made more accurate by also taking\n // extra quiz insertions into account.\n return super._expectedRemainingQuizCount() * (1 / EXPECTED_CORRECT_RATIO);\n }\n}\n","/* eslint-disable react/prefer-es6-class, react/prefer-stateless-function */\nimport React from 'react';\nimport Localization from 'es6/services/localization';\n\nexport default React.createClass({\n displayName: 'StudyAllRibbon',\n\n render() {\n return (\n <div className=\"ribbon ribbon-corner\">\n <div className=\"ribbon-study-all ribbon-message\">{Localization.t('ribbon-study-all')}</div>\n </div>\n );\n },\n});\n","import BaseItemStudyApp from 'es6/controllers/apps/base-item-study-app';\nimport IKnowQuizSettingsPanel from 'es6/components/apps/settings/iknow-quiz-settings-panel';\nimport IKnowSequencer from 'es6/controllers/apps/iknow-sequencer';\nimport Logger from 'es6/services/logger';\nimport { t } from 'es6/services/localization';\n\nexport default class IKnowApp extends BaseItemStudyApp {\n\n /**\n * Takes app settings from the app-launcher.\n */\n constructor(appSettings) {\n // Pass to BaseStudyApp for initialization.\n super('item_study', appSettings);\n }\n\n /**\n * Only iKnow uses the mark as correct prompt/dialogue for\n * the answer screens, override the parent method and\n * instantiate the ModalWindow for the correct dialogue.\n */\n _setupUtilities() {\n super._setupUtilities();\n\n Smartfm.Apps.Modals.markAsCorrectDialogue = new Smartfm.Apps.Utilities.ModalWindow('mark_as_correct', { window: Smartfm.Apps.Common.Windows.MarkAsCorrect });\n Smartfm.Apps.Modals.markAsCorrectDialogue.addEvent('item_was_marked_as_correct', this._itemMarkedAsCorrect.bind(this));\n }\n\n /**\n * Set up additional legacy screens that are used by iKnow.\n */\n _setupScreens() {\n super._setupScreens();\n\n const screenManager = this._screenManager;\n\n screenManager.addScreen('recall', Smartfm.Apps.iKnow.Screens.Recall);\n screenManager.addScreen('multiple_choice_five', Smartfm.Apps.iKnow.Screens.MultipleChoice);\n screenManager.addScreen('image_multiple_choice_five', Smartfm.Apps.iKnow.Screens.ImageMultipleChoice);\n screenManager.addScreen('fill_in_the_blank', Smartfm.Apps.iKnow.Screens.FillInTheBlank);\n\n // For skipping an item out of session.\n screenManager.addEvent('skip_item', this._skipItem.bind(this));\n }\n\n /**\n * Creates the sequencer for iKnow.\n *\n * @returns {IKnowSequencer}\n */\n _createSequencer() {\n return new IKnowSequencer(this._sessionData, this._quizTimer);\n }\n\n /**\n * Set defaults for the user settings object.\n *\n * @override\n * @returns {Object}\n */\n _getDefaultQuizOptions() {\n return {\n audio: true,\n spelling: true,\n };\n }\n\n /**\n * Add settings panel that are specific to iKnow.\n *\n * @returns {Array}\n */\n _getSettingsPanels() {\n const panels = super._getSettingsPanels();\n\n // Add the iKnow quiz settings panel.\n panels.splice(1, 0, IKnowQuizSettingsPanel);\n\n return panels;\n }\n\n /**\n * Add study parameters that are specific to iKnow.\n *\n * @returns {Object}\n */\n _getStudyParameters() {\n const params = super._getStudyParameters();\n const quizOptions = this._userSettings.apps.itemStudy.quizOptions;\n\n if (!quizOptions.audio) {\n params.sequenceOptions.push('no_audio');\n }\n\n if (!quizOptions.spelling) {\n params.sequenceOptions.push('no_spelling');\n }\n\n return params;\n }\n\n /**\n * Callback for marking an item as correct in the sequencer.\n */\n _itemMarkedAsCorrect() {\n if (!this._sequencer || !this._sequencer.activeQuiz) { // TODO shouldn't be touching activeQuiz... isn't it private now?\n Logger.error('MarkAsCorrect', 'Cannot mark item as correct outside of a study session.');\n return;\n }\n\n this._sequencer.activeQuiz.quizMarkedAsCorrect(); // TODO change the interface for this\n }\n\n /**\n * @override\n * @returns {String}\n */\n _getStartButtonLabel() {\n return t('memory-bank-screen.start-item-study');\n }\n}\n","/* eslint-disable no-unused-vars, default-case, no-param-reassign, react/react-in-jsx-scope, react/jsx-closing-bracket-location, no-new */\nimport * as API from 'es6/core/api';\nimport AggregateMemory from 'es6/models/aggregate-memory';\nimport AudioPanel from 'es6/components/apps/settings/audio-panel';\nimport BaseApp from 'es6/controllers/apps/base-app';\nimport Memory from 'es6/models/memory';\nimport { checkAllOverrides, checkForcedAchievement } from 'es6/controllers/apps/debug-overrides';\nimport Config from 'es6/core/config';\nimport KanaPanel from 'es6/components/apps/settings/kana-panel';\nimport * as Loaders from 'es6/core/loaders';\nimport Logger from 'es6/services/logger';\nimport { GoalSource, ItemSource, SessionConfig } from 'es6/models/session-config';\nimport Quizzes from 'es6/controllers/apps/quizzes';\nimport SettingsModal from 'es6/components/apps/settings/settings-modal';\nimport * as StudyDataManager from 'es6/services/study-data-manager';\nimport { t } from 'es6/services/localization';\nimport SessionProgressBar from 'es6/components/apps/session-progress-bar';\n\n/**\n * The base study app is an extension of the base app. It is used\n * by all the item study quiz types. When extending this class, the\n * following methods need to be overwritten or an error will be tossed:\n *\n * _loadSessionAssets()\n * _showSummaryScreen()\n * _showWelcomeScreen()\n * _updateSessionConfig()\n */\nexport default class BaseStudyApp extends BaseApp {\n /**\n * Constructor for the base app.\n *\n * @param {String} applicationType application type for the API\n * @param {Object} appSettings settings and features used for this app instance\n */\n constructor(applicationType, appSettings) {\n super(applicationType);\n\n // App settings and toggles passed down from the\n // app selector or inheriting applications.\n this._cueLanguage = appSettings.cueLanguage;\n this._goalId = appSettings.goalId;\n this._onAppQuit = appSettings.onAppQuit;\n this._studyAll = !appSettings.goalId;\n this._userSettings = this._setupUserSettings(appSettings.userSettings);\n this._siteConfiguration = appSettings.siteConfiguration;\n\n // Used to determine if assets have completely loaded for item packages.\n this._assetLoader = Promise.resolve(true);\n\n // Keeps track of the number of sessions started and finished.\n this._finishedSessionsCount = 0;\n\n // Used to check if we are in the welcome screen.\n this._sessionStarted = false;\n\n // Session config data, used to maintain which configs are disabled and\n // being used.\n this._sessionConfig = this._createSessionConfig();\n\n // The data for the current session the user is in.\n this._sessionData = null;\n\n // Used to store the results from the last updated memories.\n this._updatedMemories = [];\n\n // Update the global settings.\n this._updateGlobalSettings();\n\n // Show the loading screen.\n this._screenManager.show('loading');\n\n // Check for unsaved data and once uploaded, fetch data for the session.\n this._checkUnsentSaveData(this._fetchData.bind(this));\n }\n\n /**\n * Returns a promise that will trigger when assets for the session\n * have finished loading.\n *\n * @returns {Promise} should return a thenable object\n */\n _loadSessionAssets() {\n throw new Error('_loadSessionAssets() needs to be defined');\n }\n\n /**\n * Renders the summary screen.\n *\n * @param {Object[]} presentationResults presentation results sent to server\n * @param {Object} sessionResults session results returned from server\n */\n _showSummaryScreen(presentationResults, sessionResults) {\n throw new Error('_showSummaryScreen() needs to be defined');\n }\n\n /**\n * Renders the welcome screen.\n */\n _showWelcomeScreen() {\n throw new Error('_showWelcomeScreen() needs to be defined');\n }\n\n /**\n * Updates the session config properties to determine if there\n * are any conflicts.\n *\n * @returns {Boolean} true on success, false if new session needs to be fetched\n */\n _updateSessionConfig() {\n throw new Error('_updateSessionConfig() needs to be defined');\n }\n\n /**\n * Set up generic callbacks on the window and buttons.\n *\n * @override\n */\n _setupEvents() {\n super._setupEvents();\n\n // Show the error screen if an error gets triggered.\n // TODO: Get rid of this legacy stuff.\n Smartfm.Apps.Utilities.ErrorHandling(() => {\n this._screenManager.show('error');\n });\n }\n\n /**\n * On top of the base app screen, achievements and premium account are needed\n * for regular study apps.\n */\n _setupScreens() {\n super._setupScreens();\n\n this._screenManager.addScreen('achievements', Smartfm.Apps.Common.Screens.Achievements);\n\n // For paywall\n this._screenManager.addScreen('premium', Smartfm.Apps.Common.Screens.Premium);\n }\n\n /**\n * Apply app specific defaults to the user settings object.\n *\n * @params {UserSettings} userSettings\n * @returns {UserSettings}\n */\n _setupUserSettings(userSettings) {\n const appKey = this._getApplicationTypeKey();\n const defaultSessionConfig = this._getDefaultSessionConfig();\n const settings = userSettings.apps[appKey];\n\n _.defaults(settings.quizOptions, this._getDefaultQuizOptions());\n _.defaults(settings.sessionConfig.course, defaultSessionConfig.course);\n _.defaults(settings.sessionConfig.studyAll, defaultSessionConfig.studyAll);\n\n return userSettings;\n }\n\n /**\n * Handles the data necessary to start a session. If more data\n * is necessary before starting an application, override or\n * change _fetchSessionBasedData().\n */\n _fetchData() {\n // Reset _sessionStarted when we load new session data.\n this._sessionStarted = false;\n\n // If there are any active loaders, stop and refetch data.\n this._abortActiveLoaders();\n\n // Set the app container to a loading state.\n this._loading(true);\n\n // Instantiate study loader.\n const studyLoader = this._getStudyLoader();\n\n // Wait for all the study loader to finish.\n Promise.all([this._addActiveLoader(studyLoader), this._setupStaticAssets()])\n\n // Set up session data and retrieve more data based on the API results.\n .then(loaderResponse => {\n this._unpackData(loaderResponse[0]);\n return this._fetchSessionBasedData();\n })\n\n // Show welcome screen.\n .then(() => {\n this._loading(false);\n this._showWelcomeScreen();\n })\n\n .catch(error => this._errorHandler(error));\n }\n\n /**\n * Creates a session config.\n *\n * @returns {SessionConfig}\n */\n _createSessionConfig() {\n const appKey = this._getApplicationTypeKey();\n const studyModeKey = this._getStudyModeKey();\n const sessionConfig = this._userSettings.apps[appKey].sessionConfig[studyModeKey];\n\n return new SessionConfig(sessionConfig);\n }\n\n /**\n * Executed after unpacking data and before showing the welcome screen.\n * Sets up data that requires session data.\n *\n * @returns {Promise}\n */\n _fetchSessionBasedData() {\n return this._setupMouseoverDictionary(this._sessionData.goals);\n }\n\n /**\n * Gets default quiz options for the app.\n *\n * @returns {Object}\n */\n _getDefaultQuizOptions() {\n return {};\n }\n\n /**\n * Gets default session configs for the app.\n *\n * @returns {Object}\n */\n _getDefaultSessionConfig() {\n return {\n course: {\n sessionSize: 10,\n itemSource: ItemSource.ALL,\n },\n studyAll: {\n sessionSize: 10,\n itemSource: ItemSource.ALL,\n goalSource: GoalSource.ALL,\n },\n };\n }\n\n /**\n * Helper method for looking up application based settings in the\n * user settings object.\n *\n * @returns {String}\n */\n _getApplicationTypeKey() {\n return this._applicationType.replace(/_([a-z])/, x => x[1].toUpperCase());\n }\n\n /**\n * Helper method for looking up session config settings in the\n * UserSettings object.\n *\n * @returns {String}\n */\n _getStudyModeKey() {\n return this._studyAll ? 'studyAll' : 'course';\n }\n\n /**\n * Creates the study loader for the session.\n *\n * @returns {Loader}\n */\n _getStudyLoader() {\n if (this._studyAll) {\n return new Loaders.StudyAll(\n this._cueLanguage,\n this._getStudyParameters()\n );\n } else {\n return new Loaders.StudyGoal(\n this._goalId,\n this._getStudyParameters()\n );\n }\n }\n\n /**\n * Retrieves the session sizes for the app.\n *\n * @returns {Number[]}\n */\n _getSessionSizes() {\n return [5, 10, 20, 50];\n }\n\n /**\n * Creates study parameters for the application.\n *\n * @returns {Object}\n */\n _getStudyParameters() {\n let sequenceOptions = [];\n\n if (this._userSettings.isKanaMode() || this._userSettings.isRomajiMode()) {\n // Add sequences options which will exclude:\n // - TransliterationMultipleChoiceLimited\n // - ReverseTransliterationMultipleChoiceLimited\n // - TransliterationFillInTheBlank\n // Which make no sense in these modes. Also exclude:\n // - ReverseMultipleChoiceLimited\n // Which requires a transliteration on the cue and at least 4 distractors with\n // transliterations which may not be met by all content.\n sequenceOptions = _.union(sequenceOptions, ['no_transliteration', 'no_quiz_reverse_multiple_choice_limited']);\n }\n\n const params = {\n sessionSize: this._sessionConfig.sessionSize,\n includeMemories: this._studyAll,\n sequenceOptions,\n supportedQuizTypes: _.keys(Quizzes),\n applicationType: this._applicationType,\n };\n\n if (this._sessionConfig.goalSource) {\n params.sessionGoalSource = this._sessionConfig.goalSource;\n }\n\n return params;\n }\n\n /**\n * Callback used to update session changes made on the welcome\n * screen.\n *\n * @param {String} type\n * @param {String|Integer} val\n */\n _handleSessionChange(type, val) {\n this._sessionConfig.update({ [type]: val });\n\n // Rerender the welcome screen while fetching results.\n this._showWelcomeScreen();\n\n // Retrieve a new session and persist session config.\n this._fetchData();\n this._persistSessionConfig();\n }\n\n /**\n * Callback for after presentation results have been sent to the server.\n *\n * @param {Object[]} presentationResults results sent\n * @param {Object} sessionResults response from the server\n */\n _handlePresentationResultsUploaded(presentationResults, sessionResults) {\n this._updatedMemories = [];\n\n // Store memory changes and apply them to any memories.\n if (sessionResults.memories) {\n sessionResults.memories.forEach(updatedMemory => {\n // itemPackage or sentence.\n let memoryOwner;\n\n switch (updatedMemory.contentDomain) {\n case 'items':\n memoryOwner = this._sessionData.itemPackages[updatedMemory.contentId];\n break;\n case 'sentences':\n memoryOwner = this._sessionData.sentences[updatedMemory.contentId];\n break;\n }\n\n if (!memoryOwner.memory) {\n memoryOwner.memory = new Memory(updatedMemory);\n } else {\n memoryOwner.memory.update(updatedMemory);\n }\n\n this._updatedMemories.push(memoryOwner.memory);\n });\n }\n\n // Cast all the aggregates to AggregateMemory.\n sessionResults.goalMemoryAggregates = sessionResults.goalMemoryAggregates.map(\n aggregate => new AggregateMemory(aggregate)\n );\n\n // Session has been uploaded, grab new memories next time data is fetched.\n this._reloadMemories();\n\n // Determine which screen to show next.\n const showSummaryScreen = this._showSummaryScreen.bind(this, presentationResults, sessionResults);\n const achievements = checkForcedAchievement() || sessionResults.achievements || [];\n\n if (achievements.length > 0) {\n this._screenManager.addEvent('returned_from_achievements', showSummaryScreen);\n const isSocialSharingEnabled = this._siteConfiguration.features.socialSharing;\n this._screenManager.populateAndShow('achievements', achievements, isSocialSharingEnabled);\n } else {\n showSummaryScreen();\n }\n }\n\n /**\n * Persists the session configurations.\n *\n * @returns {Object} the settings to persist\n */\n _persistSessionConfig() {\n const config = _.pick(this._sessionConfig, 'sessionSize', 'itemSource', 'goalSource');\n const appKey = this._getApplicationTypeKey();\n const studyModeKey = this._getStudyModeKey();\n\n // Update the UserSettings object and get the difference.\n const changes = {\n apps: {\n [appKey]: {\n sessionConfig: {\n [studyModeKey]: config,\n },\n },\n },\n };\n\n // Persist the user settings object.\n this._userSettings.update(changes);\n\n // Persist in the API for next time.\n API.postSettings(changes);\n }\n\n /**\n * Retrieves settings panels for the app.\n *\n * @returns {Array}\n */\n _getSettingsPanels() {\n const panels = [AudioPanel];\n\n if (this._cueLanguage === 'ja') {\n panels.splice(1, 0, KanaPanel);\n }\n\n return panels;\n }\n\n _handleSequencerStarted() {\n super._handleSequencerStarted();\n\n this._sessionStarted = true;\n }\n\n /**\n * Callback for when the sequencer finishes.\n *\n * @param {Object[]} presentationResults generated by sequencer\n */\n _handleSequencerEnded(presentationResults = []) {\n super._handleSequencerEnded();\n\n this._finishedSessionsCount++;\n this._screenManager.show('loading');\n\n // Reset the banner.\n this._renderBanner();\n\n // Sequencer ended without results. Simply show the summary screen.\n if (presentationResults.length === 0) {\n this._showSummaryScreen(presentationResults, null);\n } else {\n this._savePresentationResults(\n presentationResults,\n this._handlePresentationResultsUploaded.bind(this, presentationResults)\n );\n }\n }\n\n _handleSequencerProgress(progress) {\n this._renderBanner({\n showPauseButton: true,\n showSettingsButton: true,\n children: (<SessionProgressBar progress={progress} />),\n });\n }\n\n /**\n * Handles the saving of the user settings. The SettingsModal\n * will return an object of the new user settings.\n *\n * @param {UserSettings} userSettings\n */\n _handleSettingsSave(userSettings) {\n // Transfer the values.\n const changes = this._userSettings.update(userSettings);\n\n // Post the changes to the user settings\n API.postSettings(changes);\n\n // Update all the fields for legacy purposes.\n this._updateGlobalSettings();\n\n // If the session hasn't started yet (e.g. during the welcome screen), refetch the data.\n if (!this._sessionStarted) {\n this._fetchData();\n }\n }\n\n /**\n * Function passed to the ScreenBanner component to render the contents of the settings modal.\n *\n * @param {Function} closeModal a callback that closes the settings modal, which will be passed in\n * by the ScreenBanner component.\n */\n _renderSettingsModalContents(closeModal) {\n return (\n <SettingsModal\n inSession={this._sessionInProgress()}\n panel={AudioPanel}\n panels={this._getSettingsPanels()}\n onSave={(userSettings) => {\n this._handleSettingsSave(userSettings);\n closeModal();\n }}\n userSettings={this._userSettings} />\n );\n }\n\n /**\n * Will cause the memory loaders to reload memories next time they\n * are called.\n *\n * This function will happen when an item is skipped or a session ends.\n */\n _reloadMemories() {\n if (this._studyAll) {\n Loaders.FocusedAggregateMemoriesLoader.invalidate();\n } else {\n const goalId = this._sessionData.goals[0].id;\n\n Loaders.AggregateMemoryLoader.invalidate(goalId);\n Loaders.GoalMemoriesLoader.invalidate(goalId);\n }\n }\n\n /**\n * Handles the basic setting up of a session.\n *\n * @params {Object} packedData study loader response\n */\n _unpackData(packedData) {\n // Build session data.\n const sessionData = this._buildSessionData(packedData);\n\n // For study all, the session data grows to include item packages\n // and sentences accumulated from prior sessions. The memory bank\n // and summary screen need to have this information available.\n if (this._studyAll && this._sessionData) {\n const itemPackages = Object.assign({}, this._sessionData.itemPackages, sessionData.itemPackages);\n const sentences = Object.assign({}, this._sessionData.sentences, sessionData.sentences);\n\n // Put the merged item packages and sentences into the sessionData object.\n Object.assign(sessionData, { itemPackages, sentences });\n }\n\n // Because the study API does not return the difficulty bucket\n // for memories. We need to re-retrieve the memories. This code\n // ensures any updated memories from the previous session do not\n // change.\n this._updatedMemories.forEach(updatedMemory => {\n let memoryOwner;\n\n switch (updatedMemory.contentDomain) {\n case 'items':\n memoryOwner = sessionData.itemPackages[updatedMemory.contentId];\n break;\n case 'sentences':\n memoryOwner = sessionData.sentences[updatedMemory.contentId];\n break;\n default:\n return;\n }\n\n // I'm not really sure I understand what this whole loop is intended to\n // do but for new items without previous memories, `_updatedMemories`\n // will not have the difficultyBucket set and break the UI so we just\n // copy the difficultyBucket from the newly-fetched memories.\n if (updatedMemory.difficultyBucket == null && memoryOwner.memory != null) {\n updatedMemory.difficultyBucket = memoryOwner.memory.difficultyBucket;\n }\n\n memoryOwner.memory = updatedMemory;\n });\n\n // Swap out the existing session data with the new one.\n this._sessionData = sessionData;\n\n // Update session settings based on session data. If a setting is\n // forcibly changed. Start retrieving a new data session and halt this one.\n if (!this._updateSessionConfig()) {\n Logger.info('Force Session Change', 'Needed to get a new session because options are not available.');\n this._fetchData();\n this._haltFetchData();\n return;\n }\n\n // Override session data if any debugging flags are on.\n checkAllOverrides(this._sessionData);\n\n // Load assets in background.\n const goals = _.pluck(this._sessionData.goals, 'id');\n Promise.all(_.map(goals, (goal) => { new Loaders.GoalAssets(goal); }));\n\n // Create an asset loader for the session.\n this._assetLoader = this._loadSessionAssets();\n }\n\n /**\n * Used to handle quitting a session. If the user is the middle\n * of a session, try to save progress and then redirect.\n */\n _quitSession() {\n // If the session is in progress,\n if (this._sessionInProgress()) {\n this._screenManager.show('loading');\n this._forceFinishSession().then(() => super._quitSession());\n } else {\n super._quitSession();\n }\n }\n\n /**\n * Forces the sequencer to finish the session early, either sending\n * the existing data to the server or storing locally to try to send\n * later.\n *\n * @param {Boolean} storeLocally if the data should be stored locally and sent later\n * @returns {Promise}\n */\n _forceFinishSession(storeLocally) {\n if (!this._sessionInProgress()) {\n return Promise.resolve(true);\n }\n\n // TODO: Look into making forceFinishSequence return a promise.\n return new Promise((resolve, reject) => {\n this._sequencer.forceFinishSequence(presentationResults => {\n if (storeLocally) {\n StudyDataManager.storePresentationData(presentationResults, this._applicationType);\n resolve(true);\n } else {\n this._savePresentationResults(presentationResults, resolve);\n }\n });\n });\n }\n\n /**\n * The app settings pass a callback function for when the user wants\n * to go and choose another app.\n *\n * This is essentially ending the apps lifecycle. Unbind as much as\n * possible.\n *\n * @param {String} appPath specify if to redirect to another app\n * @param {Boolean} isCheckpoint only for sentence trainer, will pass it\n */\n _quitApplication(appPath = null, isCheckpoint = false) {\n // Unbind screen events.\n this._screenManager.removeAll();\n this._screenManager.hide();\n\n // Unbind application events.\n this._unbindEvents();\n\n // Hit the callback passed to the app.\n this._onAppQuit(appPath, isCheckpoint);\n }\n\n /**\n * This method takes the user settings and puts them onto\n * the global namespace. This so legacy parts of the app\n * can continue to work.\n *\n * TODO: Try to eliminate as many of these globals as possible.\n */\n _updateGlobalSettings() {\n const appSettings = this._userSettings.apps;\n\n $.setVolume(appSettings.contentVolume * 10);\n Smartfm.Apps.Settings.EffectVolume = appSettings.effectVolume * 10;\n Smartfm.Apps.Settings.SpecialCharacters = appSettings.typingSpecialCharacters;\n Smartfm.Apps.Settings.TypingSound = appSettings.typingSound;\n\n // Update the config settings.\n Config.updateSettings(this._userSettings, { setKana: this._cueLanguage === 'ja' });\n }\n}\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define('d3-array', ['exports'], factory) : factory(global.d3_array = {});\n})(this, function (exports) {\n 'use strict';\n\n function ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n }\n\n ;\n\n function bisector(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function left(a, x, lo, hi) {\n if (arguments.length < 3) lo = 0;\n if (arguments.length < 4) hi = a.length;\n\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;else hi = mid;\n }\n\n return lo;\n },\n right: function right(a, x, lo, hi) {\n if (arguments.length < 3) lo = 0;\n if (arguments.length < 4) hi = a.length;\n\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;else lo = mid + 1;\n }\n\n return lo;\n }\n };\n }\n\n ;\n\n function ascendingComparator(f) {\n return function (d, x) {\n return ascending(f(d), x);\n };\n }\n\n var ascendingBisect = bisector(ascending);\n var bisectRight = ascendingBisect.right;\n var bisectLeft = ascendingBisect.left;\n\n function descending(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n }\n\n ;\n\n function number$1(x) {\n return x === null ? NaN : +x;\n }\n\n ;\n\n function variance(array, f) {\n var n = array.length,\n m = 0,\n a,\n d,\n s = 0,\n i = -1,\n j = 0;\n\n if (arguments.length === 1) {\n while (++i < n) {\n if (!isNaN(a = number$1(array[i]))) {\n d = a - m;\n m += d / ++j;\n s += d * (a - m);\n }\n }\n } else {\n while (++i < n) {\n if (!isNaN(a = number$1(f(array[i], i, array)))) {\n d = a - m;\n m += d / ++j;\n s += d * (a - m);\n }\n }\n }\n\n if (j > 1) return s / (j - 1);\n }\n\n ;\n\n function deviation() {\n var v = variance.apply(this, arguments);\n return v ? Math.sqrt(v) : v;\n }\n\n ;\n\n function entries(map) {\n var entries = [];\n\n for (var key in map) {\n entries.push({\n key: key,\n value: map[key]\n });\n }\n\n return entries;\n }\n\n ;\n\n function extent(array, f) {\n var i = -1,\n n = array.length,\n a,\n b,\n c;\n\n if (arguments.length === 1) {\n while (++i < n) {\n if ((b = array[i]) != null && b >= b) {\n a = c = b;\n break;\n }\n }\n\n while (++i < n) {\n if ((b = array[i]) != null) {\n if (a > b) a = b;\n if (c < b) c = b;\n }\n }\n } else {\n while (++i < n) {\n if ((b = f(array[i], i, array)) != null && b >= b) {\n a = c = b;\n break;\n }\n }\n\n while (++i < n) {\n if ((b = f(array[i], i, array)) != null) {\n if (a > b) a = b;\n if (c < b) c = b;\n }\n }\n }\n\n return [a, c];\n }\n\n ;\n\n function constant(x) {\n return function () {\n return x;\n };\n }\n\n ;\n\n function identity(x) {\n return x;\n }\n\n ;\n\n function uniform(min, max, n) {\n var h = (max - min) / (n + 1),\n thresholds = new Array(n),\n i = -1;\n min += h;\n\n while (++i < n) {\n thresholds[i] = min + i * h;\n }\n\n return thresholds;\n }\n\n ;\n\n function uniform$1(n) {\n return function (min, max) {\n return uniform(min, max, n);\n };\n }\n\n ;\n\n function sturges(min, max, values) {\n return uniform(min, max, Math.ceil(Math.log(values.length) / Math.LN2));\n }\n\n ;\n\n function number(x) {\n return +x;\n }\n\n function histogram() {\n var value = identity,\n domain = extent,\n threshold = sturges;\n\n function histogram(data) {\n var i,\n n = data.length,\n x,\n values = new Array(n); // Coerce values to numbers.\n\n for (i = 0; i < n; ++i) {\n values[i] = +value(data[i], i, data);\n }\n\n var xz = domain(values),\n x0 = +xz[0],\n x1 = +xz[1],\n tz = threshold(x0, x1, values),\n m = tz.length; // Coerce thresholds to numbers, ignoring any outside the domain.\n\n for (i = 0; i < m; ++i) {\n x = tz[i] = +tz[i];\n }\n\n while (tz[0] <= x0) {\n tz.shift(), --m;\n }\n\n while (tz[m - 1] >= x1) {\n tz.pop(), --m;\n }\n\n var bins = new Array(m + 1),\n bin; // Initialize bins.\n\n for (i = 0; i <= m; ++i) {\n bin = bins[i] = [];\n bin.x0 = i > 0 ? tz[i - 1] : x0;\n bin.x1 = i < m ? tz[i] : x1;\n } // Assign data to bins by value, ignoring any outside the domain.\n\n\n for (i = 0; i < n; ++i) {\n x = values[i];\n\n if (x0 <= x && x <= x1) {\n bins[bisectRight(tz, x, 0, m)].push(data[i]);\n }\n }\n\n return bins;\n }\n\n histogram.value = function (_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), histogram) : value;\n };\n\n histogram.domain = function (_) {\n return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), histogram) : domain;\n };\n\n histogram.thresholds = function (_) {\n if (!arguments.length) return threshold;\n threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(Array.prototype.map.call(_, number)) : uniform$1(+_);\n return histogram;\n };\n\n return histogram;\n }\n\n ;\n\n function quantile(array, p, f) {\n if (arguments.length < 3) f = number$1;\n if (!(n = array.length)) return;\n if ((p = +p) <= 0 || n < 2) return +f(array[0], 0, array);\n if (p >= 1) return +f(array[n - 1], n - 1, array);\n var n,\n h = (n - 1) * p,\n i = Math.floor(h),\n a = +f(array[i], i, array),\n b = +f(array[i + 1], i + 1, array);\n return a + (b - a) * (h - i);\n }\n\n ;\n\n function freedmanDiaconis(min, max, values) {\n values.sort(ascending);\n var h = 2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3),\n k = Math.ceil((max - min) / h);\n return uniform(min, max, k - 1);\n }\n\n ;\n\n function scott(min, max, values) {\n var h = 3.5 * deviation(values) * Math.pow(values.length, -1 / 3),\n k = Math.ceil((max - min) / h);\n return uniform(min, max, k - 1);\n }\n\n ;\n\n function keys(map) {\n var keys = [];\n\n for (var key in map) {\n keys.push(key);\n }\n\n return keys;\n }\n\n ;\n var prefix = \"$\";\n\n function Map() {}\n\n Map.prototype = map.prototype = {\n has: function has(key) {\n return prefix + key in this;\n },\n get: function get(key) {\n return this[prefix + key];\n },\n set: function set(key, value) {\n this[prefix + key] = value;\n return this;\n },\n remove: function remove(key) {\n var property = prefix + key;\n return property in this && delete this[property];\n },\n clear: function clear() {\n for (var property in this) {\n if (property[0] === prefix) delete this[property];\n }\n },\n keys: function keys() {\n var keys = [];\n\n for (var property in this) {\n if (property[0] === prefix) keys.push(property.slice(1));\n }\n\n return keys;\n },\n values: function values() {\n var values = [];\n\n for (var property in this) {\n if (property[0] === prefix) values.push(this[property]);\n }\n\n return values;\n },\n entries: function entries() {\n var entries = [];\n\n for (var property in this) {\n if (property[0] === prefix) entries.push({\n key: property.slice(1),\n value: this[property]\n });\n }\n\n return entries;\n },\n size: function size() {\n var size = 0;\n\n for (var property in this) {\n if (property[0] === prefix) ++size;\n }\n\n return size;\n },\n empty: function empty() {\n for (var property in this) {\n if (property[0] === prefix) return false;\n }\n\n return true;\n },\n each: function each(f) {\n for (var property in this) {\n if (property[0] === prefix) f(this[property], property.slice(1), this);\n }\n }\n };\n\n function map(object, f) {\n var map = new Map(); // Copy constructor.\n\n if (object instanceof Map) object.each(function (value, key) {\n map.set(key, value);\n }); // Index array by numeric index or specified key function.\n else if (Array.isArray(object)) {\n var i = -1,\n n = object.length,\n o;\n if (arguments.length === 1) while (++i < n) {\n map.set(i, object[i]);\n } else while (++i < n) {\n map.set(f(o = object[i], i, object), o);\n }\n } // Convert object to map.\n else if (object) for (var key in object) {\n map.set(key, object[key]);\n }\n return map;\n }\n\n function max(array, f) {\n var i = -1,\n n = array.length,\n a,\n b;\n\n if (arguments.length === 1) {\n while (++i < n) {\n if ((b = array[i]) != null && b >= b) {\n a = b;\n break;\n }\n }\n\n while (++i < n) {\n if ((b = array[i]) != null && b > a) a = b;\n }\n } else {\n while (++i < n) {\n if ((b = f(array[i], i, array)) != null && b >= b) {\n a = b;\n break;\n }\n }\n\n while (++i < n) {\n if ((b = f(array[i], i, array)) != null && b > a) a = b;\n }\n }\n\n return a;\n }\n\n ;\n\n function mean(array, f) {\n var s = 0,\n n = array.length,\n a,\n i = -1,\n j = n;\n\n if (arguments.length === 1) {\n while (++i < n) {\n if (!isNaN(a = number$1(array[i]))) s += a;else --j;\n }\n } else {\n while (++i < n) {\n if (!isNaN(a = number$1(f(array[i], i, array)))) s += a;else --j;\n }\n }\n\n if (j) return s / j;\n }\n\n ;\n\n function median(array, f) {\n var numbers = [],\n n = array.length,\n a,\n i = -1;\n\n if (arguments.length === 1) {\n while (++i < n) {\n if (!isNaN(a = number$1(array[i]))) numbers.push(a);\n }\n } else {\n while (++i < n) {\n if (!isNaN(a = number$1(f(array[i], i, array)))) numbers.push(a);\n }\n }\n\n return quantile(numbers.sort(ascending), 0.5);\n }\n\n ;\n\n function merge(arrays) {\n var n = arrays.length,\n m,\n i = -1,\n j = 0,\n merged,\n array;\n\n while (++i < n) {\n j += arrays[i].length;\n }\n\n merged = new Array(j);\n\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n\n return merged;\n }\n\n ;\n\n function min(array, f) {\n var i = -1,\n n = array.length,\n a,\n b;\n\n if (arguments.length === 1) {\n while (++i < n) {\n if ((b = array[i]) != null && b >= b) {\n a = b;\n break;\n }\n }\n\n while (++i < n) {\n if ((b = array[i]) != null && a > b) a = b;\n }\n } else {\n while (++i < n) {\n if ((b = f(array[i], i, array)) != null && b >= b) {\n a = b;\n break;\n }\n }\n\n while (++i < n) {\n if ((b = f(array[i], i, array)) != null && a > b) a = b;\n }\n }\n\n return a;\n }\n\n ;\n\n function nest() {\n var keys = [],\n _sortKeys = [],\n _sortValues,\n _rollup,\n nest;\n\n function apply(array, depth, createResult, setResult) {\n if (depth >= keys.length) return _rollup ? _rollup(array) : _sortValues ? array.sort(_sortValues) : array;\n var i = -1,\n n = array.length,\n key = keys[depth++],\n keyValue,\n value,\n valuesByKey = map(),\n values,\n result = createResult();\n\n while (++i < n) {\n if (values = valuesByKey.get(keyValue = key(value = array[i]) + \"\")) {\n values.push(value);\n } else {\n valuesByKey.set(keyValue, [value]);\n }\n }\n\n valuesByKey.each(function (values, key) {\n setResult(result, key, apply(values, depth, createResult, setResult));\n });\n return result;\n }\n\n function _entries(map, depth) {\n if (depth >= keys.length) return map;\n var array = [],\n sortKey = _sortKeys[depth++];\n map.each(function (value, key) {\n array.push({\n key: key,\n values: _entries(value, depth)\n });\n });\n return sortKey ? array.sort(function (a, b) {\n return sortKey(a.key, b.key);\n }) : array;\n }\n\n return nest = {\n object: function object(array) {\n return apply(array, 0, createObject, setObject);\n },\n map: function map(array) {\n return apply(array, 0, createMap, setMap);\n },\n entries: function entries(array) {\n return _entries(apply(array, 0, createMap, setMap), 0);\n },\n key: function key(d) {\n keys.push(d);\n return nest;\n },\n sortKeys: function sortKeys(order) {\n _sortKeys[keys.length - 1] = order;\n return nest;\n },\n sortValues: function sortValues(order) {\n _sortValues = order;\n return nest;\n },\n rollup: function rollup(f) {\n _rollup = f;\n return nest;\n }\n };\n }\n\n ;\n\n function createObject() {\n return {};\n }\n\n function setObject(object, key, value) {\n object[key] = value;\n }\n\n function createMap() {\n return map();\n }\n\n function setMap(map, key, value) {\n map.set(key, value);\n }\n\n function pairs(array) {\n var i = 0,\n n = array.length - 1,\n p0,\n p1 = array[0],\n pairs = new Array(n < 0 ? 0 : n);\n\n while (i < n) {\n pairs[i] = [p0 = p1, p1 = array[++i]];\n }\n\n return pairs;\n }\n\n ;\n\n function permute(array, indexes) {\n var i = indexes.length,\n permutes = new Array(i);\n\n while (i--) {\n permutes[i] = array[indexes[i]];\n }\n\n return permutes;\n }\n\n ;\n\n function range(start, stop, step) {\n if ((n = arguments.length) < 3) {\n step = 1;\n\n if (n < 2) {\n stop = start;\n start = 0;\n }\n }\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n }\n\n ;\n\n function scan(array, compare) {\n if (!(n = array.length)) return;\n var i = 0,\n n,\n j = 0,\n xi,\n xj = array[j];\n if (!compare) compare = ascending;\n\n while (++i < n) {\n if (compare(xi = array[i], xj) < 0 || compare(xj, xj) !== 0) xj = xi, j = i;\n }\n\n if (compare(xj, xj) === 0) return j;\n }\n\n ;\n\n function Set() {}\n\n var proto = map.prototype;\n Set.prototype = set.prototype = {\n has: proto.has,\n add: function add(value) {\n value += \"\";\n this[prefix + value] = value;\n return this;\n },\n remove: proto.remove,\n clear: proto.clear,\n values: proto.keys,\n size: proto.size,\n empty: proto.empty,\n each: proto.each\n };\n\n function set(object, f) {\n var set = new Set(); // Copy constructor.\n\n if (object instanceof Set) object.each(function (value) {\n set.add(value);\n }); // Otherwise, assume it’s an array.\n else if (object) {\n var i = -1,\n n = object.length,\n o;\n if (arguments.length === 1) while (++i < n) {\n set.add(object[i]);\n } else while (++i < n) {\n set.add(f(o = object[i], i, object));\n }\n }\n return set;\n }\n\n function shuffle(array, i0, i1) {\n if ((m = arguments.length) < 3) {\n i1 = array.length;\n if (m < 2) i0 = 0;\n }\n\n var m = i1 - i0,\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m + i0];\n array[m + i0] = array[i + i0];\n array[i + i0] = t;\n }\n\n return array;\n }\n\n ;\n\n function sum(array, f) {\n var s = 0,\n n = array.length,\n a,\n i = -1;\n\n if (arguments.length === 1) {\n while (++i < n) {\n if (!isNaN(a = +array[i])) s += a;\n } // Note: zero and null are equivalent.\n\n } else {\n while (++i < n) {\n if (!isNaN(a = +f(array[i], i, array))) s += a;\n }\n }\n\n return s;\n }\n\n ;\n\n function transpose(matrix) {\n if (!(n = matrix.length)) return [];\n\n for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n row[j] = matrix[j][i];\n }\n }\n\n return transpose;\n }\n\n ;\n\n function length(d) {\n return d.length;\n }\n\n function values(map) {\n var values = [];\n\n for (var key in map) {\n values.push(map[key]);\n }\n\n return values;\n }\n\n ;\n\n function zip() {\n return transpose(arguments);\n }\n\n ;\n var version = \"0.5.2\";\n exports.version = version;\n exports.bisect = bisectRight;\n exports.bisectRight = bisectRight;\n exports.bisectLeft = bisectLeft;\n exports.ascending = ascending;\n exports.bisector = bisector;\n exports.descending = descending;\n exports.deviation = deviation;\n exports.entries = entries;\n exports.extent = extent;\n exports.histogram = histogram;\n exports.thresholdFreedmanDiaconis = freedmanDiaconis;\n exports.thresholdScott = scott;\n exports.thresholdSturges = sturges;\n exports.keys = keys;\n exports.map = map;\n exports.max = max;\n exports.mean = mean;\n exports.median = median;\n exports.merge = merge;\n exports.min = min;\n exports.nest = nest;\n exports.pairs = pairs;\n exports.permute = permute;\n exports.quantile = quantile;\n exports.range = range;\n exports.scan = scan;\n exports.set = set;\n exports.shuffle = shuffle;\n exports.sum = sum;\n exports.transpose = transpose;\n exports.values = values;\n exports.variance = variance;\n exports.zip = zip;\n});","/* eslint-disable no-param-reassign */\nimport d3 from 'd3';\nimport * as Config from 'es6/components/memory-bank/config';\nimport Tooltip from 'es6/components/memory-bank/tooltip';\n\n/**\n * BaseVisual for the different visuals the memory bank uses.\n */\nexport class BaseVisual {\n constructor(memoryBankPlot) {\n this._memoryBankPlot = memoryBankPlot;\n }\n\n /**\n * Sets up the entering nodes, exiting nodes and gives an opportunity\n * to style the attributes. It is not really recommended to override\n * this method, but the other methods if changes are needed.\n */\n _beforeShowOrUpdate() {\n const selection = this._memoryBankPlot.selection;\n\n this._handleEnterNodes(selection.enter());\n selection.each(this._setDefaultAttributes);\n this._handleExitNodes(selection.exit());\n }\n\n /**\n * When given an array of MemoryBankNodes, will return a d3\n * object of the associated nodes.\n *\n * @param {Array} memoryBankNodes\n * @return {d3_selection} a D3 selection object.\n */\n _getSelection(memoryBankNodes) {\n const set = new Set(memoryBankNodes);\n return this._memoryBankPlot.nodesContainer.selectAll('g').filter(d => set.has(d));\n }\n\n /**\n * Retrieves the 'visible' nodes from the selection.\n *\n * @return {d3_selection} the visible nodes in the plot data\n */\n _getVisible() {\n return this._memoryBankPlot.nodesContainer.selectAll('g').filter(this._isNodeVisible);\n }\n\n /**\n * Method that handles where entered nodes should start. Have them\n * start to the bottom left of the visual.\n *\n * @params {d3_selection} selection The d3 data of the nodes entering\n */\n _handleEnterNodes(selection) {\n const enteredGroupNodes = selection.append('g')\n .attr('transform', this._hiddenCoords);\n\n enteredGroupNodes.append('circle')\n .classed('node-circle', true)\n .attr('r', Config.Circle.RADIUS);\n\n enteredGroupNodes.append('text')\n .classed('node-group-count-badge', true)\n .attr('text-anchor', 'middle');\n }\n\n /**\n * Method that handles what should happen to exiting nodes.\n *\n * @params {d3_selection} selection The d3 data of the nodes exiting\n */\n _handleExitNodes(selection) {\n selection.transition()\n .duration(Config.Animation.SLOWEST)\n .attr('transform', this._hiddenCoords)\n .each('end', function () {\n if (this.parentNode) {\n this.parentNode.removeChild(this);\n }\n });\n }\n\n /**\n * Returns coordinates for where to hide nodes.\n *\n * @returns {String}\n */\n get _hiddenCoords() {\n return this._translate(Config.HiddenCoords.X, Config.HiddenCoords.Y);\n }\n\n /**\n * Unbind the tooltip events.\n */\n hide() {\n this._memoryBankPlot.selection.on({\n 'mouseenter.tooltip': null,\n 'mouseleave.tooltip': null,\n });\n }\n\n /**\n * Move nodes that aren't visible off the plot.\n */\n _moveHiddenNodes() {\n this._memoryBankPlot.selection\n .filter(d => !this._isNodeVisible(d))\n .transition()\n .duration(Config.Animation.SLOWEST)\n .delay(d => Math.random() * 200)\n .attr('transform', this._hiddenCoords)\n .each(d => {\n d.current = {\n x: Config.HiddenCoords.X,\n y: Config.HiddenCoords.Y,\n };\n });\n }\n\n /**\n * Helper method to determine if the node should be shown on\n * the visuals.\n *\n * @param {MemoryBankNode} node\n * @returns {Boolean}\n */\n _isNodeVisible(node) {\n return !node.skipped && !node.isNew();\n }\n\n /**\n * A callback placed on all the nodes that can be used to set attributes.\n *\n * @this The HTMLElement associated with the node.\n * @param {MemoryBankNode} node\n */\n _setDefaultAttributes(node) {\n const _this = d3.select(this);\n\n const entered = !_this.classed('node');\n const wasNew = _this.classed('new') && !node.isNew();\n\n _this.classed({\n 'checkpoint-1': node.isAtCheckpoint1(),\n 'checkpoint-2': node.isAtCheckpoint2(),\n 'checkpoint-3': node.isAtCheckpoint3(),\n entered,\n 'in-session': node.inSession,\n locked: node.shortTermMemory && node.isReady(),\n new: node.isNew(),\n node: 'true',\n 'not-ready': !node.isReady(),\n ready: node.isReady(),\n skipped: node.skipped,\n unstarted: node.isNew(),\n 'was-new': wasNew,\n });\n }\n\n /**\n * Applies the tooltips to the nodes on the memory bank.\n */\n _setTooltips() {\n this._memoryBankPlot.selection.on({\n 'mouseenter.tooltip': Tooltip.create,\n 'mouseleave.tooltip': Tooltip.remove,\n });\n }\n\n /**\n * Called when a visual is either initially rendered or transitioning\n * from another visual. The inheriting class should define what happens\n * to the updated nodes.\n */\n show() {\n this._beforeShowOrUpdate();\n }\n\n /**\n * Returns a translate string for the transform attribute.\n *\n * @params {number} x\n * @params {number} y\n * @return {string}\n */\n _translate(x, y) {\n return `translate(${x}, ${y})`;\n }\n\n /**\n * Called when a visual is being updated. In this case, the nodes may\n * be changing position.\n */\n update() {\n this._beforeShowOrUpdate();\n }\n}\n\nexport default BaseVisual;\n","/* eslint-disable quote-props */\n/**\n * Layouts are mainly helper classes for visuals to display label data and have\n * data on for displaying labels and providing boundary data.\n */\nexport default class BaseLayout {\n /**\n * Adds a layout group to the layout container and render the labels in\n * there.\n *\n * params {Array} layoutsContainer D3 array of the layoutContainer\n */\n constructor(layoutsContainer) {\n this._layoutContainer = layoutsContainer.append('g').classed({\n 'visual-layout': true,\n 'hide': true,\n });\n\n this.labels.forEach(label => {\n this._layoutContainer.append('text').attr(label).text(label.text);\n });\n }\n\n /**\n * @return {array} array of label information.\n */\n get labels() {\n return [\n /**\n * Example of a label.\n *\n * {\n * x: 10,\n * y: 15,\n * class: 'my-label',\n * text: 'myLabel'\n * }\n */\n ];\n }\n\n /**\n * @return {object} key-pair lookup of section dimensions.\n */\n get sections() {\n return {\n /**\n * Example of a section. Should be a key-pair for lookup purposes.\n *\n * mySection: {\n * x1: 22,\n * x2: 200,\n * y: 0,\n * y2: 200,\n * width: 0.2,\n * height: 0.2\n * }\n */\n };\n }\n\n hide() {\n this._layoutContainer.classed('hide', true);\n }\n\n show() {\n this._layoutContainer.classed('hide', false);\n }\n}\n","/* eslint-disable react/prefer-stateless-function, quote-props, no-shadow, react/no-multi-comp, react/prop-types, react/jsx-no-bind */\nimport classNames from 'classnames';\nimport React from 'react';\nimport ProgressBar from 'es6/components/common/progress-bar';\nimport { t } from 'es6/services/localization';\nimport SoundManager from 'es6/services/sound-manager';\n\nconst ITEM_CLASSNAME = 'item';\n\nconst ITEMS_PER_ROW = 2;\n\n/**\n * Plays the audio from an item package.\n *\n * @params {ItemPackage} itemPackage\n */\nfunction playAudio(itemPackage) {\n if (itemPackage.sound) {\n SoundManager.play(itemPackage.sound);\n }\n}\n\nclass ItemSummary extends React.Component {\n render() {\n const { disabled, itemPackages, onComplete } = this.props;\n\n // Only show item packages that have memories.\n const eligibleItemPackages = itemPackages.filter(itemPackage => !!itemPackage.memory);\n\n // Split rows into columns.\n const rows = _.chain(eligibleItemPackages)\n .groupBy((itemPackage, i) => Math.floor(i / ITEMS_PER_ROW))\n .toArray()\n .value();\n\n const className = classNames(\n 'items-session-details items-session-details-item-summary',\n { 'disabled': this.props.disabled }\n );\n\n return (\n <section className={className}>\n <h4 className=\"action-message\">{t('session-summary-header')}</h4>\n\n <section className=\"items-container\">\n <section className=\"items\">\n {rows.map((itemPackages, i) => {\n const props = {\n key: i,\n itemPackages,\n onComplete: !disabled ? onComplete : null,\n };\n\n return (<Row {...props} />);\n })}\n </section>\n </section>\n </section>\n );\n }\n}\n\nItemSummary.propTypes = {\n disabled: React.PropTypes.bool,\n itemPackages: React.PropTypes.array,\n onComplete: React.PropTypes.func.isRequired,\n};\n\nItemSummary.defaultProps = {\n disabled: false,\n itemPackages: [],\n};\n\nclass Row extends React.Component {\n render() {\n const { itemPackages, onComplete } = this.props;\n const emptyCells = _.range(ITEMS_PER_ROW - itemPackages.length)\n .map(i => null);\n const cells = itemPackages.concat(emptyCells);\n\n return (\n <div className=\"item-row\">\n {cells.map((itemPackage, i) => {\n if (itemPackage) {\n return (<Item key={i} onComplete={onComplete} itemPackage={itemPackage} />);\n } else {\n return (<div key={i} className={ITEM_CLASSNAME} />);\n }\n })}\n </div>\n );\n }\n}\n\nclass Item extends React.Component {\n render() {\n const { itemPackage, onComplete } = this.props;\n const { memory } = itemPackage;\n const isComplete = memory.isComplete();\n\n // Set up variables to be used throughout the component.\n const className = classNames(ITEM_CLASSNAME, { 'mastered': isComplete });\n const prevProgress = memory.previous ? memory.previous.progress : 0;\n const masterTitle = memory.isComplete() ? t('item-mastered') : t('master-item');\n const onCueClick = playAudio.bind(null, itemPackage);\n const onMasterClick = isComplete ? null : onComplete.bind(null, itemPackage);\n\n return (\n <div className={className}>\n <div className=\"item-actions\">\n <ProgressBar progress={memory.progress} prevProgress={prevProgress} showProgressTag showDifferenceTag className=\"progress-bar-item\" />\n <span className=\"glyph glyph-master-check\" title={masterTitle} onClick={onMasterClick}></span>\n </div>\n\n <div className=\"item-details\">\n <div className=\"cue\" onClick={onCueClick}>{itemPackage.getText()}</div>\n <div className=\"response\">{itemPackage.getTranslation()}</div>\n </div>\n </div>\n );\n }\n}\n\nexport default ItemSummary;\n","import React from 'react';\nimport ResultGlyphs from 'es6/components/apps/result-glyphs';\n\n/**\n * Provides helper methods to look at presentation and session data for\n * correct/incorrect information.\n */\nexport const SentenceTrainerSummaryMixin = {\n propTypes: {\n presentationResults: React.PropTypes.array.isRequired,\n sessionData: React.PropTypes.object.isRequired,\n },\n\n /**\n * Creates an array of objects containing mistakes and hint count for each\n * sentence. As well as the corresponding result glyph. The resulting object\n * contains the keys: contentId, isCorrect, mistakes, hints, resultGlyph.\n *\n * @returns {Object[]}\n */\n _getSentenceTrainerResults() {\n // Group presentation results by content ID.\n const groupedByContentId = {};\n\n this.props.presentationResults.forEach(pr => {\n const contentId = pr.contentId;\n\n if (!groupedByContentId[contentId]) {\n groupedByContentId[contentId] = {\n contentId,\n isCorrect: pr.isCorrect(),\n hints: 0,\n mistakes: 0,\n resultGlyph: ResultGlyphs.CORRECT,\n };\n }\n\n const result = groupedByContentId[contentId];\n\n // Increment mistakes.\n if (!pr.isCorrect()) {\n result.mistakes++;\n }\n\n // Set isCorrect to the appropriate value.\n result.isCorrect = result.isCorrect || pr.isCorrect();\n\n // Use the highest number of hints used.\n const hintsUsed = pr.quizData.hintsUsed;\n if (hintsUsed) {\n result.hints = Math.max(result.hints, pr.quizData.hintsUsed);\n }\n\n // Get the approprate glyph.\n if (result.isCorrect && result.mistakes > 0) {\n result.resultGlyph = ResultGlyphs.CORRECT_WITH_MISTAKES;\n } else if (!result.isCorrect) {\n result.resultGlyph = ResultGlyphs.INCORRECT;\n }\n });\n\n return Object.keys(groupedByContentId).map(key => groupedByContentId[key]);\n },\n};\n\nexport default SentenceTrainerSummaryMixin;\n","/* eslint-disable react/prefer-es6-class, react/prefer-stateless-function, react/no-multi-comp */\nimport React from 'react';\nimport { Choice, Choices } from 'es6/components/common/choices';\nimport { GoalSource, ItemSource } from 'es6/models/session-config';\nimport Localization from 'es6/services/localization';\n\n/**\n * Labels property should be a key for the corresponding size. The label\n * will default to the value if none is specified.\n *\n * Example:\n * 'sizes': [5, 10, 20]\n */\nexport const ChoicesSessionSize = React.createClass({\n displayName: 'ChoicesSessionSize',\n\n propTypes: {\n sessionConfig: React.PropTypes.object.isRequired,\n sizes: React.PropTypes.array.isRequired,\n },\n\n render() {\n const sessionConfig = this.props.sessionConfig;\n\n // Create the choices.\n const choices = this.props.sizes.map((size) => {\n const disabled = sessionConfig.isDisabled('sessionSize', size);\n return (<Choice key={size} disabled={disabled} value={size}>{size}</Choice>);\n });\n\n return (\n <Choices {...this.props} value={sessionConfig.sessionSize}>{choices}</Choices>\n );\n },\n});\n\nexport const ChoicesItemSource = React.createClass({\n displayName: 'ChoicesItemSource',\n\n propTypes: {\n sessionConfig: React.PropTypes.object.isRequired,\n },\n\n render() {\n const sessionConfig = this.props.sessionConfig;\n\n return (\n <Choices {...this.props} value={this.props.sessionConfig.itemSource}>\n <Choice disabled={sessionConfig.isDisabled('itemSource', ItemSource.ALL)} value={ItemSource.ALL}>{Localization.t('js_iknow.recommended')}</Choice>\n <Choice disabled={sessionConfig.isDisabled('itemSource', ItemSource.REVIEW)} value={ItemSource.REVIEW}>{Localization.t('review-only')}</Choice>\n <Choice disabled={sessionConfig.isDisabled('itemSource', ItemSource.NEW)} value={ItemSource.NEW}>{Localization.t('new-only')}</Choice>\n </Choices>\n );\n },\n});\n\nexport const ChoicesGoalSource = React.createClass({\n displayName: 'ChoicesGoalSource',\n\n propTypes: {\n sessionConfig: React.PropTypes.object.isRequired,\n },\n\n render() {\n const sessionConfig = this.props.sessionConfig;\n\n return (\n <Choices {...this.props} value={sessionConfig.goalSource}>\n <Choice disabled={sessionConfig.isDisabled('goalSource', GoalSource.ALL)} value={GoalSource.ALL}>{Localization.t('js_iknow.all')}</Choice>\n <Choice disabled={sessionConfig.isDisabled('goalSource', GoalSource.UNCOMPLETED)} value={GoalSource.UNCOMPLETED}>{Localization.t('in-progress')}</Choice>\n <Choice disabled={sessionConfig.isDisabled('goalSource', GoalSource.COMPLETED)} value={GoalSource.COMPLETED}>{Localization.t('completed')}</Choice>\n </Choices>\n );\n },\n});\n","import React from 'react';\nimport { t } from 'es6/services/localization';\nimport { NavButton, Navigation } from 'es6/components/apps/navigation';\nimport SoundManager from 'es6/services/sound-manager';\nimport { WELCOME } from 'es6/core/sound-effects';\n\n/**\n * Mixin for the other panels.\n */\nexport const WelcomeSentenceTrainerMixin = {\n propTypes: {\n onMenu: React.PropTypes.func.isRequired,\n onStart: React.PropTypes.func.isRequired,\n sessionData: React.PropTypes.object.isRequired,\n },\n\n componentDidMount() {\n SoundManager.playEffect(WELCOME);\n },\n\n _renderNavigation() {\n if (this.props.sessionData.studySession.length === 0) {\n return this._renderEmptyStudyNavigation();\n }\n\n return (\n <Navigation>\n <NavButton align=\"left\" onClick={this.props.onMenu}>{t('js_iknow.menu')}</NavButton>\n <NavButton align=\"right\" focused onClick={this.props.onStart}>{t('start')}</NavButton>\n </Navigation>\n );\n },\n\n _renderEmptyStudyNavigation() {\n return (\n <Navigation>\n <NavButton align=\"left\" focused onClick={this.props.onMenu}>{t('js_iknow.menu')}</NavButton>\n </Navigation>\n );\n },\n\n /**\n * Helper method to render session details for the sentence trainer welcome\n * screens.\n */\n _renderSessionDetails() {\n const sessionData = this.props.sessionData;\n const newCount = sessionData.studySession.filter(s => !s.memory).length;\n const reviewCount = sessionData.studySession.length - newCount;\n\n return (\n <div className=\"session-details\">\n <h4 className=\"next-session-header\">{t('next-session')}</h4>\n\n <div className=\"sentence-counts\">\n <div className=\"sentence-count sentence-count-new\">\n <span className=\"primary\">{newCount}</span>\n <span className=\"secondary\">{t('new-sentences')}</span>\n </div>\n\n <span className=\"hr-vertical\" />\n\n <div className=\"sentence-count sentence-count-review\">\n <span className=\"primary\">{reviewCount}</span>\n <span className=\"secondary\">{t('review-sentences')}</span>\n </div>\n </div>\n </div>\n );\n },\n};\n\nexport default WelcomeSentenceTrainerMixin;\n","import 'core-js/stable';\nimport 'regenerator-runtime/runtime';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport * as API from 'es6/core/api';\nimport {noticeError} from 'es6/core/errors';\nimport Localization from 'es6/services/localization';\nimport { partOfSpeech } from 'es6/helpers/localization';\nimport * as Paths from 'es6/core/paths';\nimport * as Result from 'es6/models/quiz-result';\nimport UserSettings from 'es6/models/user-settings';\nimport AppLauncher from 'es6/controllers/apps/app-launcher.js';\nimport Quizzes from 'es6/controllers/apps/quizzes';\nimport * as ImageManager from 'es6/services/image-manager';\n\nconst Helpers = { Localization: { partOfSpeech }};\n\n// Globalize so it is accessible to legacy code.\n// Make new APIs available to legacy front end components.\nObject.assign(window.App, { Helpers, Paths });\nObject.assign(window, { ImageManager, Localization, React, ReactDOM });\nObject.assign(Smartfm.Apps.iKnow, { Quizzes });\nSmartfm.Apps.QuizResult = Result;\n\nwindow.addEventListener('load', function() {\n Promise.all([API.getSettings(), API.getSiteConfiguration()]).then(requests => {\n const userSettings = new UserSettings(requests[0]);\n const siteConfiguration = requests[1];\n\n // Load the app launcher.\n new AppLauncher(userSettings, siteConfiguration);\n }).catch(noticeError);\n});\n","/* eslint-disable radix, react/react-in-jsx-scope, default-case, no-new */\nimport Director from 'director';\nimport AppSelectionScreen, { AppSelectionBanner } from 'es6/components/apps/screens/app-selection';\nimport Config from 'es6/core/config';\nimport { noticeError } from 'es6/core/errors';\nimport Logger from 'es6/services/logger';\nimport * as Loaders from 'es6/core/loaders';\nimport * as Paths from 'es6/core/paths';\nimport IKnowApp from 'es6/controllers/apps/iknow-app';\nimport RapidChoiceApp from 'es6/controllers/apps/rapid-choice-app';\nimport SelfAssessmentApp from 'es6/controllers/apps/self-assessment-app';\nimport SentenceTrainerApp from 'es6/controllers/apps/sentence-trainer-app';\nimport SpecificContentApp from 'es6/controllers/apps/specific-content-app';\nimport ScreenBanner from 'es6/components/apps/screen-banner';\n\nexport default class AppLauncher {\n /**\n * Retrieves necessary study data from the URL and APIs. Then starts\n * an app or renders the app selection screen.\n *\n * @param {UserSettings} userSettings\n */\n constructor(userSettings, siteConfiguration) {\n this._cueLanguage = null;\n this._goalId = null;\n this._isStudyAll = false;\n this._userSettings = userSettings;\n this._siteConfiguration = siteConfiguration;\n\n this._screenManager = new Smartfm.Apps.ScreenManager();\n this._screenManager.addScreen('loading', Smartfm.Apps.Common.Screens.Loading);\n\n // Set up the router. Since the app uses replaceState, instead of pushState,\n // this is only used to set up initial information. Afterwards, the URL\n // is updated using the _replaceState() method.\n const router = new Director.Router().configure({\n html5history: true,\n run_handler_in_init: true,\n });\n\n // Set up potential parameters.\n router.param('goalId', /(\\d+)/);\n router.param('language', /([A-Za-z-_]+)/);\n router.param('appPath', /([a-z_]+)/);\n\n // Set up the routes.\n router.on('/apps/courses/:goalId/:appPath', this._handleGoalRoute.bind(this));\n router.on('/apps/courses/:goalId', this._handleGoalRoute.bind(this));\n router.on('/apps/study_all/:language/:appPath', this._handleStudyAllRoute.bind(this));\n router.on('/apps/study_all/:language', this._handleStudyAllRoute.bind(this));\n\n // Specific content behaves a little differently, just launch the app\n // separately.\n router.on('/apps/specific_content', () => new SpecificContentApp({\n userSettings: this._userSettings,\n }));\n\n // Initial the router.\n router.init();\n }\n\n /**\n * Handles the routes for single goals.\n *\n * @param {String} goalId this is a string because it is taken from the route\n * @param {String} appPath\n */\n _handleGoalRoute(goalId, appPath = null) {\n // Cast the goalId to a string\n this._goalId = parseInt(goalId);\n this._loadApp(appPath);\n }\n\n /**\n * Handles the routes for study all.\n *\n * @param {String} language\n * @param {String} appPath\n */\n _handleStudyAllRoute(language, appPath = null) {\n this._cueLanguage = language;\n this._isStudyAll = true;\n this._loadApp(appPath);\n }\n\n /**\n * Helper method for loading the app. If no app is specified, will\n * fallback on the load application screen.\n *\n * @param {String} appPath\n */\n _loadApp(appPath = null) {\n if (appPath) {\n this._loadAppData()\n .then(() => this._handleAppSelection(appPath))\n .catch(reason => this._onLoaderError(reason));\n } else {\n this._loadAppSelection();\n }\n }\n\n /**\n * Pre-emptively load app data, which can be used to acquire more\n * app settings and will make loading faster once an app is chosen.\n *\n * @returns {Promise} containing appropriate data for the app screen\n */\n _loadAppData() {\n const goalId = this._goalId;\n\n if (goalId) {\n return Promise.all([\n new Loaders.GoalsLoader([goalId]),\n new Loaders.AggregateMemoryLoader(goalId),\n ]).then(responses => {\n const goal = responses[0][0];\n const aggregateMemory = responses[1];\n\n // Set cue language for app.\n this._cueLanguage = goal.cueLanguage;\n\n return { goal, aggregateMemory };\n });\n } else {\n return Promise.resolve({});\n }\n }\n\n /**\n * Callback for when the loader fails.\n *\n * @param {Error} reason\n */\n _onLoaderError(reason) {\n noticeError(reason);\n Logger.error('AppLauncher', reason, reason.stack);\n }\n\n /**\n * Shows the app selection screen. Will grab session data to\n * show things like the goal and memory statistics.\n */\n _loadAppSelection() {\n this._screenManager.show('loading');\n\n this._loadAppData().then(data => {\n this.show(data.goal, data.aggregateMemory);\n }).catch(this._onLoaderError);\n }\n\n /**\n * Renders the AppSelectionScreen screen.\n *\n * @params {Goal} goal\n * @params {AggregateMemory} aggregateMemory\n */\n show(goal, aggregateMemory) {\n this._screenManager.renderComponent(\n AppSelectionScreen,\n {\n aggregateMemory,\n goal,\n onAppSelection: (appPath) => this._handleAppSelection(appPath),\n isStudyAll: !goal,\n }\n );\n\n // Also render the banner for the screen.\n this._screenManager.renderBannerComponent(\n ScreenBanner,\n {\n showPauseButton: false,\n showSettingsButton: false,\n children: <AppSelectionBanner goal={goal} />,\n }\n );\n }\n\n /**\n * Callback for when an app is chosen on app selection screen.\n *\n * @param {String} appPath\n * @param {Boolean} isCheckpoint will pass down isCheckpoint variable\n */\n _handleAppSelection(appPath, isCheckpoint = false) {\n const appSettings = {\n cueLanguage: this._cueLanguage,\n goalId: this._goalId,\n isCheckpoint,\n onAppQuit: this._handleAppQuit.bind(this),\n userSettings: this._userSettings,\n siteConfiguration: this._siteConfiguration,\n };\n\n // Pull in any SmartFM settings before showing the app screen.\n Config.refreshSettings();\n\n // Show the loading screen.\n this._screenManager.show('loading');\n\n // Reset the banneer.\n this._screenManager.renderBannerComponent(\n ScreenBanner,\n {\n showPauseButton: false,\n showSettingsButton: false,\n }\n );\n\n switch (appPath) {\n case Paths.AppPaths.IKNOW:\n new IKnowApp(appSettings);\n break;\n case Paths.AppPaths.RAPID_CHOICE:\n new RapidChoiceApp(appSettings);\n break;\n case Paths.AppPaths.SELF_ASSESSMENT:\n new SelfAssessmentApp(appSettings);\n break;\n case Paths.AppPaths.SENTENCE_TRAINER:\n new SentenceTrainerApp(appSettings);\n break;\n }\n\n this._replaceState(appPath);\n }\n\n /**\n * Quits an app and shows the app selection screen.\n *\n * @param {String} appPath open a new app\n * @param {Boolean} isCheckpoint if new app is a checkpoint\n */\n _handleAppQuit(appPath = null, isCheckpoint = false) {\n if (appPath) {\n this._handleAppSelection(appPath, isCheckpoint);\n } else {\n this._replaceState();\n this._loadAppSelection();\n }\n }\n\n /**\n * Replaces the history state with the current path.\n *\n * @param {String} appPath\n */\n _replaceState(appPath = null) {\n // For browsers that don't support pushstate, just ignore and\n // don't do anything.\n if (!window.history || !window.history.replaceState) {\n return;\n }\n\n let newPath;\n\n if (this._isStudyAll) {\n newPath = Paths.studyAll(this._cueLanguage, appPath);\n } else {\n newPath = Paths.studyGoal(this._goalId, appPath);\n }\n\n newPath += window.location.search;\n\n window.history.replaceState({}, document.title, newPath);\n }\n}\n","import classnames from 'classnames';\nimport React, { PropTypes } from 'react';\nimport { KeyHelpers } from 'es6/core/keys';\nimport { AppPaths } from 'es6/core/paths';\nimport AggregateMemory from 'es6/models/aggregate-memory';\nimport Goal from 'es6/models/goal';\nimport { t } from 'es6/services/localization';\nimport { ProgressBar, ProgressBarSentenceTrainer } from 'es6/components/common/progress-bar';\nimport StudyAllRibbon from 'es6/components/apps/study-all-ribbon';\n\nconst APP_CHOICE_SELECTOR = '.app-choice:not(.disabled)';\n\nconst ItemProgress = ({ aggregateMemory }) => (\n <div className=\"header-progress\">\n <div className=\"progress-label\">\n <span className=\"progress\">{aggregateMemory.items.progress}%</span>\n </div>\n <ProgressBar progress={aggregateMemory.items.progress} />\n </div>\n);\n\nItemProgress.propTypes = {\n aggregateMemory: PropTypes.instanceOf(AggregateMemory).isRequired,\n};\n\nconst AppChoice = ({ appName, onClick, glyphClass, title, description, disabled = false }) => {\n const href = disabled ? null : '#';\n const className = classnames('app-choice', { disabled });\n const glyphClassName = classnames('glyph', glyphClass, 'app-glyph');\n\n const handleClick = (e) => {\n e.preventDefault();\n\n if (!disabled) {\n onClick(appName);\n }\n };\n\n return (\n <li className=\"app-choice-container\">\n <a href={href} onClick={handleClick} className={className}>\n <span className={glyphClassName} />\n\n <div className=\"app-details\">\n <span className=\"app-title\">{title}</span>\n <span className=\"app-description\">{description}</span>\n </div>\n\n <div className=\"app-launcher-container\">\n <span className=\"glyph glyph-triangle-right app-launcher\" />\n </div>\n </a>\n </li>\n );\n};\n\nAppChoice.propTypes = {\n appName: PropTypes.string.isRequired,\n description: PropTypes.string.isRequired,\n disabled: PropTypes.bool,\n glyphClass: PropTypes.string.isRequired,\n onClick: PropTypes.func,\n title: PropTypes.string.isRequired,\n};\n\n/**\n * Renders sentence trainer progress.\n *\n * @this AppSelection\n * @returns {ReactElement}\n */\nconst SentenceProgress = ({ aggregateMemory }) => {\n const levelLabel = t('st-level-{level}', {\n level: aggregateMemory.sentences.level,\n });\n\n return (\n <div className=\"header-progress\">\n <div className=\"progress-label\">\n <span className=\"level-label\">{levelLabel}</span>\n </div>\n <ProgressBarSentenceTrainer progress={aggregateMemory.sentences.progress} />\n </div>\n );\n};\n\nSentenceProgress.propTypes = {\n aggregateMemory: PropTypes.instanceOf(AggregateMemory).isRequired,\n};\n\nclass AppSelection extends React.Component {\n constructor(...args) {\n super(...args);\n\n this.handleKeydown = (e) => {\n const appChoices = [...this.refs.applicationGroups.querySelectorAll(APP_CHOICE_SELECTOR)];\n const focusedIndex = appChoices.indexOf(document.activeElement);\n let newIndex = focusedIndex;\n\n if (KeyHelpers.isUp(e.keyCode)) {\n newIndex--;\n\n if (newIndex < 0) {\n newIndex = appChoices.length - 1;\n }\n } else if (KeyHelpers.isDown(e.keyCode)) {\n newIndex++;\n\n if (newIndex >= appChoices.length) {\n newIndex = 0;\n }\n } else {\n return;\n }\n\n appChoices[newIndex].focus();\n };\n }\n\n /**\n * Focus the first app choice and set up an event to listen to for\n * other app choices.\n */\n componentDidMount() {\n this.refs.applicationGroups.querySelector(APP_CHOICE_SELECTOR).focus();\n document.addEventListener('keydown', this.handleKeydown);\n }\n\n componentWillUnmount() {\n document.removeEventListener('keydown', this.handleKeydown);\n }\n\n render() {\n const { aggregateMemory, onAppSelection, isStudyAll, goal } = this.props;\n const sentencesDisabled = goal ? !goal.isSentenceStudyEnabled() : false;\n\n return (\n <div className=\"screen screen-app-selection\">\n {isStudyAll ? <StudyAllRibbon /> : null}\n\n <div className=\"screen-content\">\n <div ref=\"applicationGroups\" className=\"application-groups\">\n <section className=\"application-group application-group-items\">\n <header className=\"application-group-header\">\n <span className=\"title\">{t('iknow.label')}</span>\n\n {aggregateMemory && <ItemProgress aggregateMemory={aggregateMemory} />}\n </header>\n\n <ul className=\"application-list\">\n <AppChoice\n appName={AppPaths.IKNOW}\n glyphClass=\"glyph-app-logo-iknow\"\n title={t('iknow-app-title')}\n description={t('iknow-app-description')}\n onClick={onAppSelection}\n />\n\n <AppChoice\n appName={AppPaths.RAPID_CHOICE}\n glyphClass=\"glyph-app-logo-rapid-choice\"\n title={t('rapid-choice-app-title')}\n description={t('rapid-choice-app-description')}\n onClick={onAppSelection}\n />\n\n <AppChoice\n appName={AppPaths.SELF_ASSESSMENT}\n glyphClass=\"glyph-app-logo-self-assessment\"\n title={t('self-assessment-app-title')}\n description={t('self-assessment-app-description')}\n onClick={onAppSelection}\n />\n </ul>\n </section>\n\n <section className=\"application-group application-group-sentences\">\n <header className=\"application-group-header\">\n <span className=\"title\">{t('app-branding.sentence-trainer')}</span>\n\n {aggregateMemory && !sentencesDisabled &&\n <SentenceProgress aggregateMemory={aggregateMemory} />}\n </header>\n\n <ul className=\"app-choices\">\n <AppChoice\n appName={AppPaths.SENTENCE_TRAINER}\n glyphClass=\"glyph-app-logo-sentence-trainer\"\n title={t('sentence-trainer-app-title')}\n description={t('sentence-trainer-app-description')}\n onClick={onAppSelection}\n disabled={sentencesDisabled}\n />\n </ul>\n </section>\n </div>\n </div>\n </div>\n );\n }\n}\n\nAppSelection.propTypes = {\n aggregateMemory: React.PropTypes.object,\n goal: React.PropTypes.object,\n onAppSelection: React.PropTypes.func.isRequired,\n isStudyAll: React.PropTypes.bool,\n};\n\nAppSelection.defaultProps = {\n aggregateMemory: null,\n goal: null,\n isStudyAll: false,\n};\n\n// The screen banner will be rendered at a different location in the DOM, so\n// export a stateless component that the controller can use to render it.\nexport function AppSelectionBanner(props) {\n const bannerMessage = props.goal ? props.goal.title : t('choose-an-app-study-all');\n\n return (\n <div className=\"screen-app-selection-banner\">{bannerMessage}</div>\n );\n}\n\nAppSelectionBanner.propTypes = {\n goal: PropTypes.instanceOf(Goal),\n};\n\nexport default AppSelection;\n","/* eslint-disable react/prefer-es6-class, react/prop-types, react/jsx-no-bind */\nimport React from 'react';\nimport { t } from 'es6/services/localization';\nimport PanelMixin from 'es6/components/apps/settings/panel-mixin';\nimport Slider from 'es6/components/common/slider';\nimport * as SoundEffects from 'es6/core/sound-effects';\nimport SoundManager from 'es6/services/sound-manager';\n\nexport const AudioPanel = React.createClass({\n displayName: 'AudioPanel',\n\n mixins: [PanelMixin],\n\n statics: {\n getTabName() {\n return t('js_iknow.audio settings');\n },\n },\n\n /**\n * The current soundmanager keeps everything on a scale of 1-10, even though HTML5\n * does it on a scale of 0-1. When the sound manager goes, so can this method.\n */\n _getVolume(setting) {\n return this.props.userSettings.apps[setting] * 10;\n },\n\n _handleContentClick() {\n SoundManager.play(SoundEffects.CORRECT, { volume: this._getVolume('contentVolume') });\n },\n\n _handleEffectClick() {\n SoundManager.play(SoundEffects.CORRECT, { volume: this._getVolume('effectVolume') });\n },\n\n /**\n * Callback for when the typing sound changes.\n *\n * @param {Boolean} typingSound\n */\n _handleTypingSoundChange(typingSound) {\n const attrs = {\n apps: {\n typingSound,\n },\n };\n\n this.props.onDataChange.call(this, attrs);\n },\n\n /**\n * Because Slider only handles integers and the volume is on a 0 to 1 scale,\n * just adjust from a 1 to 10 scale.\n *\n * @param {String} key\n * @param {Number} value\n */\n _handleVolumeChange(key, value) {\n const attrs = {\n apps: {\n [key]: value / 10,\n },\n };\n\n this.props.onDataChange.call(this, attrs);\n },\n\n render() {\n const contentVolume = this._getVolume('contentVolume');\n const effectVolume = this._getVolume('effectVolume');\n const typingSound = this.props.userSettings.apps.typingSound;\n\n return (\n <div className=\"audio-settings\">\n <div className=\"setting\">\n <h4>{t('content volume')}</h4>\n <div className=\"input\">\n <div className=\"sound glyph glyph-volume-medium sound-player example\" onClick={this._handleContentClick}></div>\n <Slider max={10} min={0} onChange={this._handleVolumeChange.bind(null, 'contentVolume')} value={contentVolume} />\n </div>\n </div>\n\n <div className=\"setting\">\n <h4>{t('effect volume')}</h4>\n <div className=\"input\">\n <div className=\"sound glyph glyph-volume-medium sound-player example\" onClick={this._handleEffectClick}></div>\n <Slider max={10} min={0} onChange={this._handleVolumeChange.bind(null, 'effectVolume')} value={effectVolume} />\n </div>\n </div>\n\n <div className=\"setting\">\n <h4>{t('typing sound')}</h4>\n {this._renderToggle('typingSound', typingSound, false, this._handleTypingSoundChange)}\n </div>\n </div>\n );\n },\n});\n\nexport default AudioPanel;\n","/* eslint-disable react/prefer-es6-class, react/sort-comp */\nimport React from 'react';\n\n/**\n * The proper way to stack these is in the format. Unfortunately,\n * jQuery UI will always round the numbers, so the range cannot\n * be between 0 and 1.\n *\n * <Slider max={10} min={0} onChange={someFunction} value={5} />\n *\n * @requires jQuery UI\n */\n\nexport const Slider = React.createClass({\n displayName: 'Slider',\n\n propTypes: {\n min: React.PropTypes.number.isRequired,\n max: React.PropTypes.number.isRequired,\n onChange: React.PropTypes.func.isRequired,\n value: React.PropTypes.number.isRequired,\n },\n\n getInitialState() {\n return {\n value: this.props.value,\n };\n },\n\n /**\n * Setup the component based on the values.\n */\n componentDidMount() {\n const slider = $(this.refs.slider).slider({\n max: this.props.max,\n min: this.props.min,\n slide: this._updateValue,\n stop: this._updateValue,\n value: this.state.value,\n });\n\n $('.ui-slider-handle', slider).addClass('handle');\n },\n\n /**\n * If the properties are going to update, change the slider position.\n */\n componentWillReceiveProps(nextProps) {\n if (isFinite(nextProps.value)) {\n this.setState({ value: nextProps.value });\n }\n\n $(this.refs.slider).slider('value', nextProps.value);\n },\n\n /**\n * Simply destroy the slider events.\n */\n componentWillUnmount() {\n $(this.refs.slider).slider('destroy');\n },\n\n render() {\n const barStyle = {\n width: `${(this.state.value / this.props.max) * 100}%`,\n };\n\n return (\n <span ref=\"slider\" className=\"slider-bar\">\n <span ref=\"bar\" className=\"bar\" style={barStyle} />\n </span>\n );\n },\n\n /**\n * Helper for the slide and stop callbacks.\n */\n _updateValue(event, ui) {\n const value = ui.value;\n\n this.setState({ value });\n this.props.onChange.call(this, value);\n },\n});\n\nexport default Slider;\n","/* eslint-disable react/prefer-es6-class, react/prop-types, react/sort-comp */\nimport React from 'react';\nimport classnames from 'classnames';\nimport { JAStudyModes } from 'es6/models/user-settings';\nimport { t } from 'es6/services/localization';\nimport PanelMixin from 'es6/components/apps/settings/panel-mixin';\n\nexport const KanaPanel = React.createClass({\n displayName: 'KanaPanel',\n\n mixins: [PanelMixin],\n\n statics: {\n getTabName() {\n return t('js_iknow.japanese study mode');\n },\n },\n\n /**\n * @params {String} jaStudyMode\n */\n _handleChange(jaStudyMode) {\n const attrs = {\n apps: {\n jaStudyMode,\n },\n };\n\n this.props.onDataChange.call(null, attrs);\n },\n\n render() {\n const className = classnames('content-columns', { disabled: this.props.inSession });\n\n return (\n <div className=\"kana-mode-settings\">\n <div className={className}>\n {this._renderColumn(\n JAStudyModes.DEFAULT,\n 'full',\n t('full'),\n t('full-mode-description')\n )}\n {this._renderColumn(\n JAStudyModes.KANA,\n 'kana',\n t('js_iknow.kana'),\n t('kana-mode-description')\n )}\n {this._renderColumn(\n JAStudyModes.ROMAJI,\n 'romaji',\n t('romaji'),\n t('romaji-mode-description')\n )}\n </div>\n </div>\n );\n },\n\n /**\n * Renders a column.\n *\n * @param {Number} value the actual value of the radio box.\n * @param {String} [full|kana|romaji] name\n * @param {String} title\n * @param {String} description\n */\n _renderColumn(value, name, title, description) {\n const id = `ja-study-mode-${name}`;\n const isChecked = this.props.userSettings.apps.jaStudyMode === value;\n const onChange = this._handleChange.bind(null, value);\n\n return (\n <p className=\"content-column\">\n <input type=\"radio\" id={id} disabled={this.props.inSession} name=\"ja-study-mode\" checked={isChecked} value={value} onChange={onChange} />\n <label htmlFor={id}>\n <span className=\"title\">{title}</span>\n <span className=\"description\">{description}</span>\n </label>\n </p>\n );\n },\n});\n\nexport default KanaPanel;\n","/* eslint-disable react/prefer-es6-class, react/sort-comp, react/jsx-no-bind */\nimport classnames from 'classnames';\nimport React from 'react';\nimport { t } from 'es6/services/localization';\nimport UserSettings from 'es6/models/user-settings';\n\n/**\n * Use in conjunction with React BaseModal for the apps.\n *\n * To define which panels are to be used, pass them in\n * below.\n *\n * Example:\n * <SettingsModal panels={[AudioPanel, QuizSettingsPanel, HelpPanel]} panel={AudioPanel} ... />\n */\nexport const SettingsModal = React.createClass({\n displayName: 'SettingsModal',\n\n propTypes: {\n inSession: React.PropTypes.bool,\n\n // Constructor methods for panels.\n panels: React.PropTypes.array.isRequired,\n\n // Default panel to render (can be undefined/null).\n panel: React.PropTypes.func,\n onSave: React.PropTypes.func.isRequired,\n userSettings: React.PropTypes.object.isRequired,\n },\n\n /**\n * Keep a copy of userSettings in the state. The modal should\n * not change anything in the original copy.\n */\n getInitialState() {\n return {\n panel: this.props.panel,\n userSettings: new UserSettings(this.props.userSettings),\n };\n },\n\n getDefaultProps() {\n return {\n inSession: false,\n panel: null,\n };\n },\n\n componentWillReceiveProps(nextProps) {\n const state = {};\n\n // Only overwrite the userSettings if receiving new user\n // settings. Reset any changed data.\n if (nextProps.userSettings) {\n state.userSettings = new UserSettings(nextProps.userSettings);\n }\n\n // Likewise, only change the state if a panel is sent in\n // as a property.\n if (nextProps.panel) {\n state.panel = nextProps.panel;\n }\n\n this.setState(state);\n },\n\n /**\n * Chooses the appropriate panel based on what data has been\n * passed in through the parent or based on the user actions performed.\n */\n _getSelectedPanel() {\n return this.props.panels.indexOf(this.state.panel) === -1 ?\n this.props.panels[0] :\n this.state.panel;\n },\n\n _handleTabClick(panel) {\n this.setState({ panel });\n },\n\n /**\n * This method is passed down to the other panels, it takes\n * a key from the user setting and a corresponding value to\n * replace that key with.\n *\n * @param {Object} attrs Changed attributes\n */\n _handleDataChange(attrs = {}) {\n const userSettings = new UserSettings(this.state.userSettings);\n userSettings.update(attrs);\n\n // Update state with changes to the key\n this.setState({ userSettings });\n },\n\n render() {\n return (\n <div className=\"settings-modal content-container\">\n <header className=\"content-details\">\n <div className=\"details-primary\">\n {this._renderTabs()}\n </div>\n </header>\n\n <div className=\"content-primary\">\n {this._renderPanels()}\n </div>\n\n <footer className=\"content-actions\">\n <a className=\"btn btn-bar save ok\" onClick={this.props.onSave.bind(null, this.state.userSettings)}>{t('js_iknow.save')}</a>\n </footer>\n </div>\n );\n },\n\n _renderPanels() {\n // If there is no selected panel, just choose the first one.\n const selectedPanel = this._getSelectedPanel();\n\n return this.props.panels.map((Panel, i) => {\n let className = classnames('settings', { selected: selectedPanel === Panel });\n\n return (\n <div key={i} className={className}>\n <Panel inSession={this.props.inSession} onDataChange={this._handleDataChange} userSettings={this.state.userSettings} />\n </div>\n );\n });\n },\n\n _renderTabs() {\n const selectedPanel = this._getSelectedPanel();\n\n return (\n <ul className=\"content-tabs\">\n {this.props.panels.map((Panel, i) => {\n let className = classnames('content-tab', { selected: selectedPanel === Panel });\n\n return (\n <li key={i} className={className} onClick={this._handleTabClick.bind(null, Panel)}>{Panel.getTabName()}</li>\n );\n })}\n </ul>\n );\n },\n});\n\nexport default SettingsModal;\n","/* eslint-disable react/prefer-es6-class, react/prefer-stateless-function */\nimport React from 'react';\nimport Keys from 'es6/core/keys';\nimport CourseTeaser from 'es6/components/apps/course-teaser';\nimport Localization from 'es6/services/localization';\nimport { NavButton, Navigation } from 'es6/components/apps/navigation';\n\nexport default React.createClass({\n displayName: 'CourseRecommendationScreen',\n\n propTypes: {\n aggregateMemory: React.PropTypes.object.isRequired,\n goal: React.PropTypes.object.isRequired,\n onMenu: React.PropTypes.func.isRequired,\n onStart: React.PropTypes.func.isRequired,\n onSkip: React.PropTypes.func.isRequired,\n },\n\n render() {\n const headerMessage = this.props.aggregateMemory && !this.props.aggregateMemory.startedAt ?\n Localization.t('course-recommendation.new-course-header') :\n Localization.t('course-recommendation.header');\n\n return (\n <div className=\"screen screen-course-recommendation\">\n <div className=\"screen-content\">\n <div className=\"message\">\n <h1 className=\"header\">{headerMessage}</h1>\n </div>\n\n <CourseTeaser enableRibbon enableStudyStats goal={this.props.goal} aggregateMemory={this.props.aggregateMemory} />\n </div>\n\n <Navigation>\n <NavButton align=\"left\" onClick={this.props.onMenu}>{Localization.t('js_iknow.menu')}</NavButton>\n <NavButton align=\"right\" onClick={this.props.onSkip}>{Localization.t('skip-recommended')}</NavButton>\n <NavButton align=\"right\" keyCode={Keys.ENTER} focused onClick={this.props.onStart}>{Localization.t('start')}</NavButton>\n </Navigation>\n </div>\n );\n },\n});\n","/* eslint-disable react/prefer-es6-class */\nimport React from 'react';\nimport { t } from 'es6/services/localization';\nimport PanelMixin from 'es6/components/apps/settings/panel-mixin';\n\nexport const HelpPanel = React.createClass({\n displayName: 'HelpPanel',\n\n mixins: [PanelMixin],\n\n statics: {\n getTabName() {\n return t('shortcut keys');\n },\n },\n\n render() {\n return (\n <div className=\"help-block\">\n <div className=\"keyboard-explanation\">\n <table>\n <tbody>\n <tr>\n <td>\n <div className=\"keys\">\n <div className=\"key long-key\">\n <div className=\"top-left text\">Enter</div>\n <div className=\"bottom-right text\">↲</div>\n </div>\n </div>\n <div className=\"explanation\">{t('app_keys.confirm')}</div>\n </td>\n <td>\n <div className=\"keys\">\n <div className=\"key long-key\">\n <div className=\"top-left text\">Space</div>\n </div>\n </div>\n <div className=\"explanation\">{t('app_keys.play audio')}</div>\n </td>\n </tr>\n <tr>\n <td>\n <div className=\"keys\">\n <div className=\"key\">\n <div className=\"arrow\">↑</div>\n </div>\n <div className=\"key\">\n <div className=\"arrow\">↓</div>\n </div>\n </div>\n <div className=\"explanation\">{t('move row and open/close sentence panel')}</div>\n </td>\n <td>\n <div className=\"keys\">\n <div className=\"key\">\n <div className=\"arrow\">←</div>\n </div>\n <div className=\"key\">\n <div className=\"arrow\">→</div>\n </div>\n </div>\n <div className=\"explanation\">{t('select choice')}</div>\n </td>\n </tr>\n <tr>\n <td>\n <div className=\"keys\">\n <div className=\"key\">\n <div className=\"text\">S</div>\n </div>\n </div>\n <div className=\"explanation\">{t('practice spelling')}</div>\n </td>\n <td>\n <div className=\"keys\">\n <div className=\"key\">\n <div className=\"text\">Esc</div>\n </div>\n </div>\n <div className=\"explanation\">{t('close spelling practice')}</div>\n </td>\n </tr>\n <tr>\n <td>\n <div className=\"keys\">\n <div className=\"key\">\n <div className=\"text\">Ctrl</div>\n </div>\n <div className=\"key\">\n <div className=\"text\"><</div>\n </div>\n </div>\n <div className=\"explanation\">{t('hint')}</div>\n </td>\n <td>\n <div className=\"keys\">\n <div className=\"key\">\n <div className=\"text\">1</div>\n </div>\n <div className=\"not-key tilde\">\n ...\n </div>\n <div className=\"key\">\n <div className=\"text\">5</div>\n </div>\n </div>\n <div className=\"explanation\">{t('multiple choice hotkey')}</div>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n );\n },\n});\n\nexport default HelpPanel;\n","/* eslint-disable prefer-template */\nimport {\n IntervalCheckpoint1,\n IntervalCheckpoint2,\n IntervalCheckpoint3,\n Memory,\n ReadyToStudyCap } from 'es6/models/memory';\n\nexport default class MemoryBankNode extends Memory {\n constructor(attrs = {}) {\n super(attrs);\n\n // Additional attributes that are not apart of main memory.\n _.defaults(this, {\n id: null,\n name: null,\n inSession: false,\n });\n }\n\n isNew() {\n return this.reviewInterval === null;\n }\n\n isAtCheckpoint1() {\n return this.reviewInterval >= IntervalCheckpoint1;\n }\n\n isAtCheckpoint2() {\n return this.reviewInterval >= IntervalCheckpoint2;\n }\n\n isAtCheckpoint3() {\n return this.reviewInterval >= IntervalCheckpoint3;\n }\n\n /**\n * On the memory bank, the concept of ready really means that\n * the retention is below the retention cap. Do not take\n * short term memory into consideration.\n *\n * @override\n * @returns {Boolean}\n */\n isReady() {\n return this.currentRetention < ReadyToStudyCap;\n }\n\n /**\n * Get a string that can be used to see if two nodes\n * are in the same position.\n *\n * @return {String}\n */\n getPositionKey() {\n return this.x + ',' + this.y;\n }\n\n /**\n * Helper method to convert from an item package.\n *\n * overrideAttrs: Attributes to override for creating memory bank node.\n */\n static createFromItemPackage(itemPackage, memory, inSession = false) {\n const attrs = _.extend({}, memory, {\n id: 'itempackage-' + itemPackage.getId(),\n name: itemPackage.getText(),\n inSession,\n });\n\n return new MemoryBankNode(attrs);\n }\n}\n","/**\n * This is not a React component, but will render and maintain an SVG plot.\n * This needs to be passed to the MemroyBank component.\n *\n * To initially render the nodes, showVisual() must be called.\n * To get the SVG DOM element, call the getSVG() method.\n *\n * @requires tipped\n */\n\nimport d3 from 'd3';\nimport * as Config from 'es6/components/memory-bank/config';\nimport ProgressVisual from 'es6/components/memory-bank/visuals/progress';\nimport DifficultyVisual from 'es6/components/memory-bank/visuals/difficulty';\n\nexport default class MemoryBankPlot {\n /**\n * Sets up the SVG element.\n *\n * @param {array} memoryBankNodes - Array of MemoryBankNode\n */\n constructor(memoryBankNodes = []) {\n this.nodes = memoryBankNodes;\n\n // This contains the D3 selection after a transition. Can be used\n // to access entered and exited nodes.\n this.selection = null;\n\n // Set up the SVG DOM element.\n this._svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n this._svg.setAttribute('width', '100%');\n this._svg.setAttribute('height', '100%');\n this._svg.setAttribute('viewBox', `0 0 ${Config.ViewBox.WIDTH} ${Config.ViewBox.HEIGHT}`);\n\n // Create and append two containers. One for labels and the other for nodes.\n this.layoutsContainer = d3.select(this._svg).append('g').classed('layout', true);\n this.nodesContainer = d3.select(this._svg).append('g').classed('nodes', true);\n\n // Create the visuals and layouts.\n this._visual = null;\n this._visuals = {\n difficulty: new DifficultyVisual(this),\n progress: new ProgressVisual(this),\n };\n }\n\n /**\n * Returns the SVG that contains the memory bank nodes.\n *\n * @returns {HTMLElement} SVG DOM element\n */\n getSVG() {\n return this._svg;\n }\n\n /**\n * Updates selection, which can be used by the visuals to handle entering,\n * updating and exiting nodes. Be sure to specify the ID here, because if\n * new memory bank nodes are created, we still want to associate the same IDs.\n */\n _setupSelection() {\n this.selection = this.nodesContainer.selectAll('.node').data(this.nodes, d => d.id);\n }\n\n /**\n * Updates the nodes on the plot to position them where the\n *\n * @param {String} [progress|difficulty] visual\n */\n showVisual(visual = 'progress') {\n const nextVisual = this._visuals[visual];\n\n if (nextVisual && this._visual !== nextVisual) {\n this._setupSelection();\n\n if (this._visual !== null) {\n this._visual.hide();\n }\n\n this._visual = nextVisual;\n this._visual.show();\n }\n }\n\n /**\n * Cleans up all the data binding and removes the elements.\n */\n remove() {\n this.nodesContainer.data([]).exit().remove();\n }\n\n /**\n * Updates the nodes on the current visual.\n *\n * params {Array} nodes\n */\n update(memoryBankNodes = []) {\n this.nodes = memoryBankNodes;\n this._setupSelection();\n this._visual.update();\n }\n}\n","/* eslint-disable quote-props, no-param-reassign, no-shadow */\nimport d3 from 'd3';\nimport { hexbin } from 'd3-hexbin';\nimport * as Config from 'es6/components/memory-bank/config';\nimport BaseVisual from 'es6/components/memory-bank/visuals/base-visual';\nimport ProgressLayout from 'es6/components/memory-bank/layouts/progress';\nimport { ReadyToStudyCap } from 'es6/models/memory';\n\n// If nodes are stacked, have a limit of the max number shown.\nconst MaxBadgeCount = 99;\n\n// How long the user has to hover back over a node during a delay.\nconst HoverGracePeriod = 300;\n\n// Offset for expanding nodes.\nconst MaxExpansionOffset = Config.Circle.RADIUS * 3 / 2;\n\n// The progress visual is on a hexbin. So, each nodes radius is an\n// apothem of the hexagon. Convert the cirle's radius to a hexagon\n// radius.\nconst HexRadius = Config.Circle.RADIUS / Math.cos(Math.PI / 6);\n\n// Padding for the sections. Essentially, make sure nothing\n// falls on a hexbin across the lines.\nconst Padding = HexRadius * 2;\n\n// Adjusters are used to add padding at places on the graph where overlap\n// is undesireable.\nconst CheckpointAdjusters = [0.01, 0.02];\nconst ActivationAdjuster = 0.01;\n\n// Class for hiding nodes (to prevent scaling/aliasing issues).\nconst HiddenClass = 'lower-neighbor-hidden';\n\n// Maximum time to perform animation on update.\nconst MaxTransitionDelay = 50;\nconst MaxTransitionTime = 1000;\n\n/**\n * Progress visual for the memory bank.\n */\nexport class Progress extends BaseVisual {\n constructor(...args) {\n super(...args);\n\n // Set up labels.\n this._layout = new ProgressLayout(this._memoryBankPlot.layoutsContainer);\n\n // Get the sections to create the scaling methods.\n const sections = this._layout.sections;\n const readySection = sections.ready;\n const notReadySection = sections.notReady;\n const checkpoint1Section = sections.checkpoint1;\n const checkpoint2Section = sections.checkpoint2;\n const sessionItemsCountSection = sections.sessionItemsCount;\n\n // Create some scale functions to determine where the nodes should be placed.\n // The x scale uses the sum of progress and getScaledProgress() for the domain.\n // The y scale uses the currentRetention attribute for the domain.\n const scale = {\n x: d3.scale\n .linear()\n .domain([\n 0,\n 80,\n 80 + CheckpointAdjusters[0],\n 100 + CheckpointAdjusters[0],\n 100 + CheckpointAdjusters[1],\n 120 + CheckpointAdjusters[1],\n ])\n .range([\n readySection.x + Padding,\n checkpoint1Section.x - Padding,\n checkpoint1Section.x + Padding,\n checkpoint2Section.x - Padding,\n checkpoint2Section.x + Padding,\n checkpoint2Section.x + checkpoint2Section.width - Padding,\n ])\n .clamp(true),\n\n y: d3.scale\n .linear()\n .domain([0, ReadyToStudyCap, ReadyToStudyCap + ActivationAdjuster, 1 + ActivationAdjuster])\n .range([\n readySection.y + readySection.height - Padding,\n readySection.y + Padding,\n notReadySection.y + notReadySection.height - Padding,\n notReadySection.y + Padding,\n ])\n .clamp(true),\n };\n\n // Each node gets put into hexbins, so the points are centered\n // and consistent.\n this._hexbin = hexbin()\n .radius(HexRadius)\n .x(d => {\n let progress = d.getScaledProgress();\n\n if (d.isAtCheckpoint2()) {\n progress += CheckpointAdjusters[1];\n } else if (d.isAtCheckpoint1()) {\n progress += CheckpointAdjusters[0];\n }\n\n return scale.x(progress);\n })\n .y(d => scale.y(!d.isReady() ? d.currentRetention + ActivationAdjuster : d.currentRetention));\n\n // The session item count just shows a number, put the text\n // in the center of the item circle.\n this._sessionItemsCountCoords = {\n x: sessionItemsCountSection.x + (sessionItemsCountSection.width / 2),\n y: sessionItemsCountSection.y + (sessionItemsCountSection.height / 2),\n };\n\n // Sorted list of nodes at a particular location.\n // The key is deteremined by the nodes getPositionKey() method.\n this._nodesAtPosition = {};\n }\n\n /**\n * Called at the end of the transition. Applies the appropriate\n * classes and events to each node.\n */\n _afterTransition() {\n // Keep a reference to use inside the methods.\n const handleMouseover = this._handleMouseover.bind(this);\n const handleMouseout = this._handleMouseout.bind(this);\n\n // Bind onmouseover and onmouseout methods. To not have\n // conflicts with the events bound by the tooltips, use namespace\n // in the event.\n //\n // https://github.com/mbostock/d3/wiki/Selections#on\n this._memoryBankPlot.selection.on({\n 'mouseover.progress'(d) {\n handleMouseover(d, this);\n },\n 'mouseout.progress'(d) {\n handleMouseout(d, this);\n },\n });\n\n // Remove all badge counts before updating.\n this._removeBadgeCount();\n\n // Count nodes that are stacked at each location. If stacked nodes\n // contain nodes that are in session, use the number of in session\n // nodes, instead.\n Object.keys(this._nodesAtPosition).forEach(lookupKey => {\n const nodes = this._nodesAtPosition[lookupKey];\n let length = Math.min(this._nodesAtPosition[lookupKey].length, MaxBadgeCount);\n\n // If there are items in session, replace the length with that value.\n const inSessionNodesCount = nodes.filter(n => n.inSession).length;\n if (inSessionNodesCount > 0) {\n length = inSessionNodesCount;\n }\n\n // If there's a length more than one, have it show on the top node\n // Show a number of how many items are beneath it.\n if (length > 1) {\n this._getSelection(nodes.slice(0, 1))\n .select('.node-group-count-badge')\n .text(length)\n .attr({\n 'data-count': length,\n 'transform': `translate(0, ${Config.Text.OFFSET})`,\n });\n }\n\n // Hide all child nodes.\n this._getSelection(nodes.slice(1)).classed(HiddenClass, true);\n });\n\n this._setTooltips();\n }\n\n /**\n * Calculates the node position and sets the target position on the\n * node. Also sets up the hash to decide what nodes are in the\n * same location.\n */\n _beforeTransition() {\n this._cleanup();\n\n // Set up this._nodesAtPosition and set up the target\n // for the node.\n this._getVisible()\n .each(this._setNodePosition.bind(this))\n .sort(this._sort)\n .each(d => {\n const lookupKey = d.getPositionKey();\n\n // Record the nodes at the target position.\n if (!this._nodesAtPosition[lookupKey]) {\n this._nodesAtPosition[lookupKey] = [];\n }\n\n // This array should keep the data in order of top to\n // bottom. So, the array needs to be inverted.\n this._nodesAtPosition[lookupKey].unshift(d);\n });\n\n // Get the number of new in session and add it to the layout.\n const inSessionNewNodesCount = this._memoryBankPlot.selection.filter(d => d.isNew() && d.inSession).size();\n this._layout.setSessionItemsCountLabel(inSessionNewNodesCount);\n }\n\n /**\n * Removes text and node from classes that might not be relevant on\n * transition.\n */\n _cleanup() {\n this._nodesAtPosition = {};\n\n this._memoryBankPlot.selection\n .classed(HiddenClass, false)\n .on({ '.progress': null });\n }\n\n /**\n * Collapses a series of nodes at the position of the corresponding\n * node.\n *\n * @param {MemoryBankNode} node\n */\n _collapseNodeGroup(node) {\n const lookupKey = node.getPositionKey();\n const nodes = this._nodesAtPosition[lookupKey];\n const selection = this._getSelection(nodes);\n const topNode = nodes[0];\n\n // If there are any nodes still hovered, don't collapse.\n if (nodes.filter(d => d.isHovered).length === 0) {\n selection.transition()\n .duration(Config.Animation.FAST)\n .attr('transform', d => this._translate(d.x, d.y))\n\n // Make sure the nodes are hidden again at the end.\n .each('end', function (d) {\n if (d !== topNode) {\n d3.select(this).classed(HiddenClass, true);\n }\n });\n }\n }\n\n /**\n * Expands a series of nodes at the position of the corresponding\n * node.\n *\n * @param {MemoryBankNode} node\n */\n _expandNodeGroup(node) {\n const nodesAtSamePosition = this._nodesAtPosition[node.getPositionKey()];\n const numberOfNodes = nodesAtSamePosition.length;\n\n // Calculate some values for seeing how far to stretch.\n // If there are more nodes than can fit using MaxExpansionOffset,\n // squish the nodes so they fit.\n let direction = 1; // 1 for left, -1 for right\n let totalSpace = Config.ViewBox.WIDTH - node.x - Padding;\n\n // If in the strong areas, show to the left\n if (node.isAtCheckpoint1()) {\n direction = -1;\n totalSpace = node.x - this._layout.sections.ready.x - Padding;\n }\n\n const offset = (numberOfNodes * MaxExpansionOffset) > totalSpace ?\n totalSpace / numberOfNodes :\n MaxExpansionOffset;\n\n // Move all nodes that are not being expanded to the back.\n // The reason to do this, as opposed to moving the expanding nodes,\n // is to prevent mouseover events from acting strange. This has\n // the best cross browser behavior.\n this._getVisible()\n .filter(d => d.getPositionKey() !== node.getPositionKey())\n .each(this._moveToBack);\n\n // Filter nodes in this position.\n this._getVisible()\n .filter(d => d.getPositionKey() === node.getPositionKey())\n .classed(HiddenClass, false)\n .transition()\n .duration(Config.Animation.MEDIUM)\n .attr('transform', (d, i) => {\n // Because the nodes are actually in reverse order on the DOM,\n // the index has to be inverted.\n const index = numberOfNodes - 1 - i;\n const nodeOffset = index * offset * direction;\n return this._translate(d.x + nodeOffset, d.y);\n });\n }\n\n /**\n * Callback for onmouseover.\n *\n * @param {MemoryBankNode} node\n * @param {HTMLElement} el <g> tag for node\n */\n _handleMouseover(node, el) {\n node.isHovered = true;\n\n // Expand the radius a little bit.\n d3.select(el)\n .select('circle')\n .transition()\n .duration(Config.Animation.SLOW)\n .ease('elastic')\n .attr('r', Config.Circle.RADIUS_HOVER);\n\n this._expandNodeGroup(node);\n }\n\n /**\n * Callback for onmouseout.\n *\n * @param {MemoryBankNode} node\n * @param {HTMLElement} el <g> tag for node\n */\n _handleMouseout(node, el) {\n node.isHovered = false;\n\n // Shrink the radius.\n d3.select(el)\n .select('circle')\n .transition()\n .duration(Config.Animation.SLOW)\n .ease('elastic')\n .attr('r', Config.Circle.RADIUS);\n\n // If the user hovered over another element in the collection,\n // don't collapse it yet. Let execution finish.\n setTimeout(this._collapseNodeGroup.bind(this, node), HoverGracePeriod);\n }\n\n /**\n * Unbind the expanding events and remove all the progress related\n * classes from the nodes.\n */\n hide() {\n super.hide();\n this._layout.hide();\n this._cleanup();\n\n // Remove badge count from all nodes.\n this._removeBadgeCount();\n }\n\n /**\n * Moves a node to the top of the svg, making it appear behind\n * all the other nodes. This is necessary because SVG does not\n * support z-index.\n *\n * @this HTMLElement the g element for the node\n * @param {MemoryBankNode} d\n * @param {Number} i the index\n */\n _moveToBack(d, i) {\n const parentNode = this.parentNode;\n\n // Insert before the first child.\n return parentNode.insertBefore(this, parentNode.childNodes[i]);\n }\n\n /**\n * Removes badge count from the specified selection.\n *\n * @param {d3_selection} selection if null, will use all node data.\n */\n _removeBadgeCount(selection = null) {\n selection = selection || this._memoryBankPlot.selection;\n\n selection.selectAll('.node-group-count-badge')\n .text(null)\n .attr({ 'data-count': 0, 'transform': null });\n }\n\n /**\n * Sets the x, y coordinates for a node.\n *\n * @param {MemoryBankNode} node\n */\n _setNodePosition(node) {\n // Take the scaled values and put them into the appropriate hexbin.\n const hexbinCoordinates = this._hexbin([node]);\n\n // Unfortunately, some browsers will round the values, so to keep\n // the node values consistent with the elements, do some rounding.\n node.x = Math.round(hexbinCoordinates[0].x);\n node.y = Math.round(hexbinCoordinates[0].y);\n }\n\n /**\n * Called when a visual is either initially rendered or transitioning\n * from another visual. The inheriting class should define what happens\n * to the updated nodes.\n */\n show() {\n super.show();\n this._layout.show();\n\n // Maintained for checking the end of the transition.\n let length = this._getVisible().length;\n\n this._beforeTransition();\n\n this._getVisible()\n .transition()\n .duration(Config.Animation.SLOWEST)\n .delay(node => Math.random() * 200)\n .attr('transform', d => this._translate(d.x, d.y))\n .each('end', d => {\n // Check to see if the transition has ended.\n length--;\n if (length === 0) {\n this._afterTransition();\n }\n });\n\n // Move hidden nodes during the transition.\n this._moveHiddenNodes();\n }\n\n /**\n * Sort method for comparing two nodes together.\n *\n * @param {MemoryBankNode} nodeA\n * @param {MemoryBankNode} nodeB\n * @return {number}\n */\n _sort(nodeA, nodeB) {\n return d3.ascending(nodeA.inSession, nodeB.inSession) ||\n d3.descending(nodeA.shortTermMemory, nodeB.shortTermMemory) ||\n d3.descending(nodeA.progress, nodeB.progress) ||\n d3.descending(nodeA.currentRetention, nodeB.currentRetention);\n }\n\n /**\n * Called when a visual is being updated. In this case, the nodes may\n * be changing position.\n */\n update() {\n super.update();\n\n // Keep reference to the translate method.\n const translate = this._translate;\n\n // Run the before transition methods.\n this._beforeTransition();\n\n // If nodes enter the dataset on update, simply render them in place.\n this._getVisible()\n .filter(function () { return d3.select(this).classed('entered'); })\n .attr('transform', d => translate(d.x, d.y));\n\n // Set the current location of the node on the MemoryBankNode.\n this._getVisible().each(function (d) {\n const transform = d3.transform(d3.select(this).attr('transform'));\n const [x, y] = transform.translate;\n d.current = { x, y };\n });\n\n // Start by moving all the nodes that were new\n // to the center of the session items label.\n this._getVisible()\n .filter(function (d) { return d3.select(this).classed('was-new'); })\n .each(d => {\n d.current = {\n x: this._sessionItemsCountCoords.x,\n y: this._sessionItemsCountCoords.y,\n };\n })\n .attr('transform', d => translate(d.current.x, d.current.y));\n\n // Get all nodes that have moved.\n const moveSelection = this._getVisible().filter(d => d.x !== d.current.x || d.y !== d.current.y);\n let untransitionedNodesCount = moveSelection.size();\n\n // Move any hidden nodes if there are any.\n this._moveHiddenNodes();\n\n // If there are no nodes that have moved, just call afterTransition and\n // return.\n if (untransitionedNodesCount === 0) {\n this._afterTransition();\n return;\n }\n\n // Used to help decide delay on node. If amount of nodes being transitioned\n // will take longer than the maximum time to transition, evenly divide that\n // time by the maximum transition time (so it doesn't feel slow to the user).\n const delayIncrement =\n (MaxTransitionDelay * untransitionedNodesCount) > MaxTransitionTime ?\n Math.floor(MaxTransitionTime / untransitionedNodesCount) :\n MaxTransitionDelay;\n\n // Remove the badge count from all moving nodes.\n this._removeBadgeCount(moveSelection);\n\n // Perform a transition on all the nodes.\n moveSelection.transition()\n .duration(Config.Animation.SLOWEST)\n\n // Set a short delay based on where the node is sequentially.\n .delay((n, i) => i * delayIncrement)\n\n // Do not bind this function, the this keyword reflects\n // the element associated with the node.\n .tween('curveTween', function (d) {\n const el = this;\n\n // Keep a record of the original x and y position.\n const x = d.current.x;\n const y = d.current.y;\n const dx = d.x - x;\n const dy = d.y - y;\n\n const easeInSine = (t, b, c, d) => -c * Math.cos(t / d * (Math.PI / 2)) + c + b;\n const easeOutSine = (t, b, c, d) => c * Math.sin(t / d * (Math.PI / 2)) + b;\n\n return t => {\n const rx = easeInSine(t, 0, 1, 1);\n const ry = easeOutSine(t, 0, 1, 1);\n\n let moveToX = x + dx * rx;\n let moveToY = y + dy * ry;\n\n // The time is up, just set the nodes to the appropriate position.\n if (t === 1) {\n moveToX = d.x;\n moveToY = d.y;\n }\n\n d3.select(el).attr('transform', d => translate(moveToX, moveToY));\n };\n })\n\n // Check to see if the transition has ended.\n .each('end', d => {\n untransitionedNodesCount--;\n\n if (untransitionedNodesCount === 0) {\n this._afterTransition();\n }\n });\n }\n}\n\nexport default Progress;\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-array')) : typeof define === 'function' && define.amd ? define('d3-hexbin', ['exports', 'd3-array'], factory) : factory(global.d3_hexbin = {}, global.d3_array);\n})(this, function (exports, d3Array) {\n 'use strict';\n\n var hexbinAngles = d3Array.range(0, 2 * Math.PI, Math.PI / 3);\n\n var hexbinX = function hexbinX(d) {\n return d[0];\n };\n\n var hexbinY = function hexbinY(d) {\n return d[1];\n };\n\n function hexbin() {\n var width = 1,\n height = 1,\n r,\n x = hexbinX,\n y = hexbinY,\n dx,\n dy;\n\n function hexbin(points) {\n var binsById = {};\n points.forEach(function (point, i) {\n var py = y.call(hexbin, point, i) / dy,\n pj = Math.round(py),\n px = x.call(hexbin, point, i) / dx - (pj & 1 ? .5 : 0),\n pi = Math.round(px),\n py1 = py - pj;\n\n if (Math.abs(py1) * 3 > 1) {\n var px1 = px - pi,\n pi2 = pi + (px < pi ? -1 : 1) / 2,\n pj2 = pj + (py < pj ? -1 : 1),\n px2 = px - pi2,\n py2 = py - pj2;\n if (px1 * px1 + py1 * py1 > px2 * px2 + py2 * py2) pi = pi2 + (pj & 1 ? 1 : -1) / 2, pj = pj2;\n }\n\n var id = pi + \"-\" + pj,\n bin = binsById[id];\n if (bin) bin.push(point);else {\n bin = binsById[id] = [point];\n bin.i = pi;\n bin.j = pj;\n bin.x = (pi + (pj & 1 ? 1 / 2 : 0)) * dx;\n bin.y = pj * dy;\n }\n });\n return d3Array.values(binsById);\n }\n\n function hexagon(radius) {\n var x0 = 0,\n y0 = 0;\n return hexbinAngles.map(function (angle) {\n var x1 = Math.sin(angle) * radius,\n y1 = -Math.cos(angle) * radius,\n dx = x1 - x0,\n dy = y1 - y0;\n x0 = x1, y0 = y1;\n return [dx, dy];\n });\n }\n\n hexbin.x = function (_) {\n if (!arguments.length) return x;\n x = _;\n return hexbin;\n };\n\n hexbin.y = function (_) {\n if (!arguments.length) return y;\n y = _;\n return hexbin;\n };\n\n hexbin.hexagon = function (radius) {\n if (arguments.length < 1) radius = r;\n return \"m\" + hexagon(radius).join(\"l\") + \"z\";\n };\n\n hexbin.centers = function () {\n var centers = [];\n\n for (var y = 0, odd = false, j = 0; y < height + r; y += dy, odd = !odd, ++j) {\n for (var x = odd ? dx / 2 : 0, i = 0; x < width + dx / 2; x += dx, ++i) {\n var center = [x, y];\n center.i = i;\n center.j = j;\n centers.push(center);\n }\n }\n\n return centers;\n };\n\n hexbin.mesh = function () {\n var fragment = hexagon(r).slice(0, 4).join(\"l\");\n return hexbin.centers().map(function (p) {\n return \"M\" + p + \"m\" + fragment;\n }).join(\"\");\n };\n\n hexbin.size = function (_) {\n if (!arguments.length) return [width, height];\n width = +_[0], height = +_[1];\n return hexbin;\n };\n\n hexbin.radius = function (_) {\n if (!arguments.length) return r;\n r = +_;\n dx = r * 2 * Math.sin(Math.PI / 3);\n dy = r * 1.5;\n return hexbin;\n };\n\n return hexbin.radius(1);\n }\n\n var version = \"0.1.0\";\n exports.version = version;\n exports.hexbin = hexbin;\n});","/* eslint-disable prefer-template, arrow-body-style */\nimport * as Config from 'es6/components/memory-bank/config';\nimport { t } from 'es6/services/localization';\nimport { relativeTime } from 'es6/helpers/time';\n\n/**\n * Tooltip methods for the MemoryBank. Uses the tipped library.\n *\n * @requires moment\n * @requires JST\n * @requires Tipped\n */\nexport class Tooltip {\n /**\n * @this HTMLElement <g> tag for the node\n * @param {MemoryBankNode} node\n */\n static create(node) {\n let shortTermMemory = '';\n let studyDateRelative;\n\n if (node.isNew()) {\n studyDateRelative = t('study-new');\n } else {\n studyDateRelative = relativeTime(node.seeNextAt);\n }\n\n if (node.isReady() && node.shortTermMemory) {\n shortTermMemory = t('memory-bank.see-next-short-term-memory');\n }\n\n const content = JST['memory_bank/tooltips/progress/item']({\n id: node.id,\n cue: node.name,\n debug: debugInformation(node),\n isComplete: node.isComplete(),\n isNew: node.isNew,\n progress: Math.floor(node.progress),\n progressDifference: Math.floor(node.getProgressDifference()),\n shortTermMemory,\n studyDate: node.seeNextAt,\n studyDateRelative,\n studyTimeTranslation: t('from-now'),\n });\n\n Tipped.create(this, content, Config.Tooltip).show();\n }\n\n /**\n * @this HTMLElement <g> tag for the node\n * @param {MemoryBankNode} node\n */\n static remove(node) {\n Tipped.remove(this);\n }\n}\n\n/**\n * Includes debug information in the underscore template.\n */\nfunction debugInformation(node) {\n if (Smartfm && Smartfm.Apps && Smartfm.Apps.Settings.StealthMode) {\n const debugVars = {\n id: node.id,\n current_retention: node.currentRetention,\n difficulty_bucket: node.difficultyBucket,\n easiness_modifier: node.easinessModifier,\n inSession: node.inSession,\n interval_hours: (node.reviewInterval / 3600000).toFixed(2) + ' hours',\n last_study_time: node.lastStudyTime.toISOString(),\n progress: node.progress,\n see_next_at: node.seeNextAt.toISOString(),\n review_interval: node.reviewInterval,\n previous_retention: node.previous ? node.previous.currentRetention : 'n/a',\n previous_interval: node.previous ? node.previous.reviewInterval : 'n/a',\n };\n\n const debugItems = Object.keys(debugVars).map(key => {\n return DEBUG_ITEM_TEMPLATE({ key, value: debugVars[key] });\n }).join(' ');\n\n return DEBUG_TEMPLATE({ debugItems });\n }\n\n return '';\n}\n\nconst DEBUG_TEMPLATE = _.template(\n '<div class=\"debug\">{{= debugItems }}</div>'\n);\n\nconst DEBUG_ITEM_TEMPLATE = _.template(\n '<div class=\"debug-item\">' +\n ' <div class=\"key\">{{= key }}: </div>' +\n ' <div class=\"value\">{{= value }}</div>' +\n '</div>'\n);\n\nexport default Tooltip;\n","import BaseLayout from 'es6/components/memory-bank/layouts/base-layout';\nimport { t } from 'es6/services/localization';\n\nconst DivisionWidth = 135;\n\n/**\n * The dimensions of the main area in the memory bank are from 723x730.\n * Starting at position (21, 0).\n */\nconst LABELS = [\n {\n text: t('completed-label'),\n x: 795,\n y: 305,\n class: 'label label-middle label-completed',\n },\n\n {\n text: t('memory-bank.zone-1-label'),\n x: 660,\n y: 305,\n class: 'label label-middle label-strong',\n },\n\n {\n text: t('memory-bank.not-ready-label'),\n x: 35,\n y: 10,\n dy: '0.5em',\n class: 'label label-not-ready',\n },\n\n {\n text: t('ready-label'),\n x: 35,\n y: 102,\n dy: '0.5em',\n class: 'label label-ready',\n },\n\n {\n text: '',\n x: 21,\n y: 312,\n dy: '0.5ex',\n class: 'label label-middle label-session-items-count',\n },\n\n {\n text: t('new-label'),\n x: 44,\n y: 338,\n class: 'label label-new',\n },\n\n {\n text: '20%',\n x: 189,\n y: 338,\n class: 'label label-middle label-percent',\n },\n\n {\n text: '40%',\n x: 324,\n y: 338,\n class: 'label label-middle label-percent',\n },\n\n {\n text: '60%',\n x: 459,\n y: 338,\n class: 'label label-middle label-percent',\n },\n\n {\n text: '80%',\n x: 594,\n y: 338,\n class: 'label label-middle label-percent',\n },\n\n {\n text: '100%',\n x: 729,\n y: 338,\n class: 'label label-middle label-percent',\n },\n];\n\nconst SECTIONS = {\n notReady: {\n x: 44,\n y: 0,\n width: 817,\n height: 88,\n },\n\n ready: {\n x: 44,\n y: 92,\n width: 817,\n height: 226,\n },\n\n checkpoint1: {\n x: 590,\n width: DivisionWidth,\n },\n\n checkpoint2: {\n x: 725,\n width: DivisionWidth,\n },\n\n sessionItemsCount: {\n x: 1,\n y: 290,\n width: 40,\n height: 40,\n },\n};\n\nexport default class Progress extends BaseLayout {\n hide() {\n super.hide();\n this.setSessionItemsCountLabel(null);\n }\n\n get labels() {\n return LABELS;\n }\n\n get sections() {\n return SECTIONS;\n }\n\n /**\n * Sets the text for session items label.\n *\n * param {Number} sessionItemsCount\n */\n setSessionItemsCountLabel(sessionItemsCount) {\n this._layoutContainer.select('.label-session-items-count').text(sessionItemsCount || '');\n }\n}\n","/* eslint-disable eqeqeq, no-param-reassign */\nimport d3 from 'd3';\nimport * as Config from 'es6/components/memory-bank/config';\nimport BaseVisual from 'es6/components/memory-bank/visuals/base-visual';\nimport DifficultyLayout from 'es6/components/memory-bank/layouts/difficulty';\n\n// Used to adjust the rate of movement on each axis.\nconst ForceMultiplier = {\n X: 0.4,\n Y: 0.2,\n};\n\n// Difficulty is number based from 0-3. This is a map between\n// index and section.\nconst DIFFICULTY_LOOKUP = ['easy', 'moderate', 'hard', 'very-hard'];\n\n/**\n * Helper function for the show() function.\n *\n * Function for applying a collision force between roundish objects.\n * Objects must have x, y, and radius defined.\n *\n * Originally based on http://bl.ocks.org/mbostock/1748247\n *\n * @return {Function} Method to apply on each node\n */\nfunction collide(force) {\n const quadtree = d3.geom.quadtree(force.nodes());\n\n return (d) => {\n let r = Config.Circle.RADIUS;\n const nx1 = d.x - r;\n const nx2 = d.x + r;\n const ny1 = d.y - r;\n const ny2 = d.y + r;\n\n quadtree.visit((quad, x1, y1, x2, y2) => {\n if (quad.point && (quad.point != d)) {\n let x = d.x - quad.point.x;\n let y = d.y - quad.point.y;\n let l = Math.sqrt(x * x + y * y);\n r = Config.Circle.RADIUS * 2;\n\n if (l < r) {\n l = (l - r) / l * 0.5;\n\n d.x -= x *= l;\n d.y -= y *= l;\n\n quad.point.x += x;\n quad.point.y += y;\n }\n }\n\n return x1 > nx2 || x2 < nx1 || y1 > ny2 || y2 < ny1;\n });\n };\n}\n\n/**\n * @requires d3\n * @requires d3-plugins\n */\nexport class Difficulty extends BaseVisual {\n constructor(...args) {\n super(...args);\n this._layout = new DifficultyLayout(this._memoryBankPlot.layoutsContainer);\n }\n\n hide() {\n super.hide();\n this._layout.hide();\n }\n\n show() {\n super.show();\n this._layout.show();\n\n // Store a reference to sections, so it can be used inside methods.\n const sections = this._layout.sections;\n const visibleSelection = this._getVisible();\n\n // Add some randomization to unbundle collapsed nodes.\n visibleSelection.each(function (d) {\n const transform = d3.transform(d3.select(this).attr('transform'));\n let [x, y] = transform.translate;\n\n x += Math.random() - 0.5;\n y += Math.random() - 0.5;\n\n d.x = x;\n d.y = y;\n });\n\n // Create a force layout and tick through it to get the final positions\n // of the nodes.\n const force = d3.layout.force()\n .gravity(0)\n .charge(0)\n .friction(0.7)\n .nodes(this._memoryBankPlot.nodes.filter(this._isNodeVisible))\n .on('tick', (e) => {\n const alpha = e.alpha;\n const k = {\n x: ForceMultiplier.X * alpha,\n y: ForceMultiplier.Y * alpha,\n };\n\n visibleSelection\n .each((d, i) => {\n const sectionName = DIFFICULTY_LOOKUP[d.difficultyBucket];\n const section = sections[sectionName];\n\n d.y += (section.originY - d.y) * k.y;\n d.x += (section.originX - d.x) * k.x;\n })\n .each(collide(force));\n });\n\n // Simulate ticks.\n force.start();\n for (let i = 0; i < 600; i++) {\n force.tick();\n }\n\n // Update all the nodes with the corresponding location.\n visibleSelection\n .transition()\n .duration(Config.Animation.SLOWEST)\n .delay(d => Math.random() * 200)\n .attr('transform', d => this._translate(d.x, d.y));\n\n // Set tooltips and move hidden nodes.\n this._setTooltips();\n this._moveHiddenNodes();\n }\n\n /**\n * No special transition happens here, just call the show method.\n */\n update() {\n this.show();\n }\n}\n\nexport default Difficulty;\n","import BaseLayout from 'es6/components/memory-bank/layouts/base-layout';\nimport { t } from 'es6/services/localization';\n\n// All the nodes fall in the center.\nconst OriginY = 173;\nconst OriginXEasy = 107;\nconst OriginXModerate = 322;\nconst OriginXHard = 537;\nconst OriginXVeryHard = 752;\n\nconst LABELS = [\n {\n text: t('easy-label'),\n x: OriginXEasy,\n y: 15,\n dy: '0.5em',\n class: 'label label-middle label-easy',\n },\n\n {\n text: t('moderate-label'),\n x: OriginXModerate,\n y: 15,\n dy: '0.5em',\n class: 'label label-middle label-moderate',\n },\n\n {\n text: t('hard-label'),\n x: OriginXHard,\n y: 15,\n dy: '0.5em',\n class: 'label label-middle label-hard',\n },\n\n {\n text: t('very-hard-label'),\n x: OriginXVeryHard,\n y: 15,\n dy: '0.5em',\n class: 'label label-middle label-very-hard',\n },\n];\n\nconst SECTIONS = {\n easy: {\n originX: OriginXEasy,\n originY: OriginY,\n },\n\n moderate: {\n originX: OriginXModerate,\n originY: OriginY,\n },\n\n hard: {\n originX: OriginXHard,\n originY: OriginY,\n },\n\n 'very-hard': {\n originX: OriginXVeryHard,\n originY: OriginY,\n },\n};\n\nexport default class Difficulty extends BaseLayout {\n get labels() {\n return LABELS;\n }\n\n /**\n * These sections contain an originX and originY field, which are\n * primarily used to determine the center of gravity for their sections.\n */\n get sections() {\n return SECTIONS;\n }\n}\n","/* eslint-disable react/prefer-es6-class, default-case, react/sort-comp, arrow-body-style, quote-props, react/jsx-no-bind, react/prop-types */\nimport classnames from 'classnames';\nimport React from 'react';\nimport { DropdownSessionSize, DropdownItemSource, DropdownGoalSource } from 'es6/components/apps/session-config-dropdown';\nimport ItemPreview from 'es6/components/apps/item-preview';\nimport ItemSummary from 'es6/components/apps/item-summary';\nimport Keys from 'es6/core/keys';\nimport { t } from 'es6/services/localization';\nimport MemoryBank from 'es6/components/apps/memory-bank';\nimport { NavButton, NavContainer, Navigation } from 'es6/components/apps/navigation';\nimport ProgressBar from 'es6/components/common/progress-bar';\nimport PremiumLink from 'es6/components/apps/premium-link';\nimport * as SoundEffects from 'es6/core/sound-effects';\nimport SoundManager from 'es6/services/sound-manager';\n\nexport const Panels = {\n Progress: 'report-panel',\n Difficulty: 'difficulty',\n SessionPreview: 'session-items-panel',\n SessionSummary: 'items-summary-panel',\n};\n\n/**\n * The memory bank summary screen component. This handles the\n * rendering of a memory bank plot, along with toggles to\n * change the panels between progress, difficulty, item preview\n * and item summary.\n *\n * This is a pretty complex component that is stateful, performs\n * animations and takes in a lot of properties to render subcomponents.\n * Please above propTypes for property details.\n */\nexport const MemoryBankSummaryScreen = React.createClass({\n displayName: 'MemoryBankSummaryScreen',\n\n /**\n * applicationType: which app is being used\n * courseRecommendation: object with goal and aggregate memory of course to recommend\n * onCourseRecommendationShow: callback method for showing the course recommendation\n * onCourseRecommendationSkip: callback method for skipping the course recommendation\n * isCheckpoint: will render a checkpoint overlay and navigation\n * isCourseCompleted: will render a course completed overlay and navigation\n * isPremiumUser: don't show session settings\n * isStudyAll: used to display difficulty panel, different screen banner and goal source\n * hasFinishedSession: indicates whether the user is coming back from a session\n * onCheckpointRedirect: callback for the user triggering checkpoint\n * onCheckpointSkip: callback for a user declining the checkpoint\n * onMasterItem: callback passed to summary component\n * onMenu: callback to navigate back to the app launcher\n * onNext: callback for course completed navigation\n * onGoalSourceChange:callback for when goal source changes\n * onItemSourceChange: callback for when item source changes\n * onSessionSizeChange: callback for session size changes\n * onStart: callback for when the user clicks to start the app\n * onSkipItems: callback used by item preview component\n * memoryBankPlot: instance of MemoryBankPlot object containing SVG\n * sessionConfig: instance of SessionConfig object\n * sessionData: object containing information of upcoming session\n * startLabel: label for the start button\n * updatedMemories: array of memory changes from the last session\n */\n propTypes: {\n applicationType: React.PropTypes.string,\n courseRecommendation: React.PropTypes.object,\n onCourseRecommendationShow: React.PropTypes.func,\n onCourseRecommendationSkip: React.PropTypes.func,\n isCheckpoint: React.PropTypes.bool,\n isCourseCompleted: React.PropTypes.bool,\n isPremiumUser: React.PropTypes.bool.isRequired,\n isStudyAll: React.PropTypes.bool,\n hasFinishedSession: React.PropTypes.bool,\n onCheckpointRedirect: React.PropTypes.func,\n onCheckpointSkip: React.PropTypes.func,\n onMasterItem: React.PropTypes.func.isRequired,\n onMenu: React.PropTypes.func.isRequired,\n onNext: React.PropTypes.func.isRequired,\n onGoalSourceChange: React.PropTypes.func.isRequired,\n onItemSourceChange: React.PropTypes.func.isRequired,\n onSessionSizeChange: React.PropTypes.func.isRequired,\n onStart: React.PropTypes.func.isRequired,\n onSkipItems: React.PropTypes.func,\n memoryBankPlot: React.PropTypes.object.isRequired,\n sessionConfig: React.PropTypes.object.isRequired,\n sessionData: React.PropTypes.object.isRequired,\n startLabel: React.PropTypes.string.isRequired,\n updatedMemories: React.PropTypes.array,\n },\n\n getDefaultProps() {\n return {\n courseRecommendation: null,\n onCourseRecommendationShow: null,\n onCourseRecommendationSkip: null,\n isCheckpoint: false,\n isCourseCompleted: false,\n isPremiumUser: false,\n isStudyAll: false,\n hasFinishedSession: false,\n onCheckpointRedirect: null,\n onCheckpointSkip: null,\n onSkipItems: null,\n updatedMemories: [],\n };\n },\n\n getInitialState() {\n return {\n bannerOverlay: null,\n itemPackages: _.values(this.props.sessionData.itemPackages),\n\n // Used to delay animations.\n enableSessionSummary: false,\n hasMounted: false,\n\n // Generated when the component mounts.\n memoryBankVisual: 'progress',\n\n panel: Panels.Progress,\n\n skippedItemIds: [],\n };\n },\n\n /**\n * Because animations are impossible to do when mounting a component, we set\n * the hasMounted flag to true (which will re-render with animatable CSS\n * classes).\n */\n componentWillMount() {\n // Play the appropriate sound on mount.\n if (this.props.isCourseCompleted) {\n SoundManager.playEffect(SoundEffects.COURSE_COMPLETION);\n } else if (this.props.isCheckpoint) {\n SoundManager.playEffect(SoundEffects.CHECKPOINT);\n } else if (this.props.hasFinishedSession) {\n SoundManager.playEffect(SoundEffects.DONE);\n } else {\n SoundManager.playEffect(SoundEffects.WELCOME);\n }\n\n this.setState({ hasMounted: true });\n },\n\n /**\n * The skipped items queue should also be reset, as the results will\n * change for the skipped items panel.\n */\n componentWillReceiveProps(nextProps) {\n this.setState({\n // Need to keep a copy of the previous banner overlay so\n // it does not impact the animation.\n bannerOverlay: this._getOverlayMessage(),\n itemPackages: _.values(nextProps.sessionData.itemPackages),\n skippedItemIds: [],\n });\n },\n\n /**\n * Logic for determining if the render item preview panel\n * and panel tab can be rendered.\n */\n _canRenderItemSummary() {\n return this.props.updatedMemories.length > 0;\n },\n\n /**\n * Get the appropriate overlay message.\n *\n * @returns {String}\n */\n _getOverlayMessage() {\n if (this.props.isCourseCompleted && this.props.courseRecommendation) {\n return this._isCourseRecommendationNew() ?\n t('course-completed-overlay-message-new') :\n t('course-completed-overlay-message-next');\n } else if (this.props.courseRecommendation) {\n // Show a different message depending on if the overlay is new.\n return this._isCourseRecommendationNew() ?\n t('recommendation-overlay-message-new') :\n t('recommendation-overlay-message-next');\n } else if (this.props.isCourseCompleted) {\n return t('course-completed-overlay-message');\n } else if (this.props.isCheckpoint) {\n return t('checkpoint-overlay-message');\n }\n\n return null;\n },\n\n /**\n * If the user switches panels, reset the items to skip.\n * If the user is switching to the summary panel for\n * the first time, set enableSessionSummary to true, which\n * will render the session summary component, triggering the\n * animations.\n *\n * @param {String} panel one of the Panel options\n */\n _handlePanelSwitch(panel) {\n let memoryBankVisual = this.state.memoryBankVisual;\n let enableSessionSummary = this.state.enableSessionSummary;\n\n switch (panel) {\n case Panels.Difficulty:\n memoryBankVisual = 'difficulty';\n break;\n case Panels.Progress:\n memoryBankVisual = 'progress';\n break;\n case Panels.SessionSummary:\n enableSessionSummary = true;\n break;\n }\n\n this.setState({\n enableSessionSummary,\n memoryBankTransitionType: 'default',\n memoryBankVisual,\n panel,\n skippedItemIds: [],\n });\n },\n\n /**\n * Maintains some state for the item preview component. Will only\n * send back all the skipped items once the user performs the skip\n * action.\n *\n * @param {Number[]} skippedItemIds\n */\n _handleSkipped(skippedItemIds) {\n this.setState({ skippedItemIds });\n },\n\n /**\n * Returns true if the recommended course is a new course. Will\n * return false if there is no recommended course present (as a fallback).\n *\n * @returns {Boolean}\n */\n _isCourseRecommendationNew() {\n const courseRecommendation = this.props.courseRecommendation;\n\n return !courseRecommendation || !courseRecommendation.aggregateMemory || !courseRecommendation.aggregateMemory.startedAt;\n },\n\n render() {\n // Check to see if the component has mounted, otherwise the animation\n // will be lost.\n const className = classnames('screen screen-memory-bank-summary', {\n 'screen-overlay': this.state.hasMounted && this._getOverlayMessage() !== null,\n });\n\n return (\n <div className={className}>\n\n <div className=\"screen-content\">\n\n {this._renderOverlay()}\n\n <header className=\"panel-navigation-container\">\n <span className=\"memory-bank-logo\" />\n <span className=\"loading-spinner\" />\n\n <div className=\"panel-menu-container\">\n <nav className=\"panel-menu\">\n <ul className=\"choice-set\">\n {this._renderPanelTab(Panels.Progress)}\n {this._renderPanelTab(Panels.Difficulty)}\n {this._renderPanelTab(Panels.SessionPreview)}\n {this._renderPanelTab(Panels.SessionSummary)}\n </ul>\n\n <a href=\"#memory-bank-help\" className=\"btn btn-bar memory-bank-help\" data-modal-link title={t('memory-bank-help-title')}>\n {t('memory-bank-help.label')}\n </a>\n </nav>\n\n {this._renderReadyStatisticsTab()}\n {this._renderMainStatisticsTab()}\n </div>\n </header>\n\n <div className=\"panels\">\n {this._renderMemoryBankPanel()}\n {this._renderItemPreviewPanel()}\n {this._renderItemSummaryPanel()}\n </div>\n </div>\n\n {this._renderNavigation()}\n </div>\n );\n },\n\n _renderCourseRecommendationNavigation() {\n const showButtonText = this._isCourseRecommendationNew() ? t('start-new') : t('start-next');\n\n return (\n <Navigation>\n <NavButton align=\"left\" onClick={this.props.onMenu}>{t('js_iknow.menu')}</NavButton>\n <NavButton align=\"right\" onClick={this.props.onCourseRecommendationSkip}>{t('skip-recommended')}</NavButton>\n <NavButton align=\"right\" focused onClick={this.props.onCourseRecommendationShow}>{showButtonText}</NavButton>\n </Navigation>\n );\n },\n\n _renderReadyStatisticsTab() {\n return (\n <div className=\"statistics-tab statistics-tab-ready\">\n <div className=\"primary\">{getAggregateData(this.props.isStudyAll, this.props.sessionData).items.eligibleItemsCount}</div>\n <div className=\"secondary\">{t('ready-banner')}</div>\n </div>\n );\n },\n\n _renderMainStatisticsTab() {\n const aggregateData = getAggregateData(this.props.isStudyAll, this.props.sessionData);\n\n if (this.props.isStudyAll) {\n return (\n <div className=\"statistics-tab statistics-tab-mastered\">\n <div className=\"primary\">{aggregateData.items.itemsAtCheckpoint2}</div>\n <div className=\"secondary\">{t('mastered-banner')}</div>\n </div>\n );\n } else {\n const goal = getCurrentGoal(this.props.sessionData);\n const totalCount = goal.getTotalItemsCount(aggregateData);\n const allStarted = totalCount === aggregateData.items.studiedItemsCount;\n const className = classnames('statistics-tab', {\n 'statistics-tab-mastered': allStarted,\n 'statistics-tab-started': !allStarted,\n });\n\n let primary = aggregateData.items.studiedItemsCount;\n let message = t('started-banner');\n\n if (allStarted) {\n primary = aggregateData.items.itemsAtCheckpoint2;\n message = t('mastered-banner');\n }\n\n return (\n <div className={className}>\n <div className=\"primary\">\n {primary}\n <span className=\"total-count\">/{totalCount}</span>\n </div>\n <div className=\"secondary\">{message}</div>\n </div>\n );\n }\n },\n\n /**\n * Do one of two things:\n *\n * 1) Either show the current overlay message, that reflects the current\n * state of the memory bank.\n * 2) Show the previous banner overlay, so the message does not disappear\n * when animating.\n */\n _renderOverlay() {\n const message = this._getOverlayMessage() || this.state.bannerOverlay || '';\n const className = classnames('overlay', {\n 'overlay-progress-visual': this.state.panel === Panels.Progress,\n });\n\n return (\n <div className={className}>\n <div className=\"overlay-message\" dangerouslySetInnerHTML={{ __html: message }} />\n </div>\n );\n },\n\n _renderCheckpointNavigation() {\n return (\n <Navigation>\n <NavButton align=\"left\" onClick={this.props.onMenu}>{t('js_iknow.menu')}</NavButton>\n\n <NavButton align=\"right\" onClick={this.props.onCheckpointSkip}>{t('checkpoint-skip')}</NavButton>\n <NavButton align=\"right\" focused onClick={this.props.onCheckpointRedirect}>{t('checkpoint-redirect')}</NavButton>\n </Navigation>\n );\n },\n\n _renderItemPreviewPanel() {\n let className = classnames('panel items-preview-container', {\n hidden: this.state.panel !== Panels.SessionPreview,\n });\n\n const itemPreviewProps = {\n itemPackages: _.pluck(this.props.sessionData.studySession, 'content'),\n onSkipped: this._handleSkipped,\n skippedItemIds: this.state.skippedItemIds,\n };\n\n return (\n <div className={className}>\n <ItemPreview {...itemPreviewProps} />\n </div>\n );\n },\n\n /**\n * Postpone rendering the panel until the user clicks on the panel. This will\n * ensure that any animations occur then.\n */\n _renderItemSummaryPanel() {\n if (!this._canRenderItemSummary() || !this.state.enableSessionSummary) {\n return null;\n }\n\n let className = classnames('panel items-summary-container', {\n hidden: this.state.panel !== Panels.SessionSummary,\n });\n\n let itemPackages = _.map(this.props.updatedMemories, memory => {\n return this.props.sessionData.itemPackages[memory.contentId];\n });\n\n return (\n <div className={className}>\n <ItemSummary itemPackages={itemPackages} onComplete={this.props.onMasterItem} />\n </div>\n );\n },\n\n _renderMemoryBankPanel() {\n let className = classnames('panel memory-bank-container', {\n hidden: this.state.panel !== Panels.Progress && this.state.panel !== Panels.Difficulty,\n });\n\n return (\n <div className={className}>\n <MemoryBank memoryBankPlot={this.props.memoryBankPlot} visual={this.state.memoryBankVisual} />\n </div>\n );\n },\n\n /**\n * Renders a panel tab.\n *\n * @param {String} panel one of strings defined in the constant above\n */\n _renderPanelTab(panel) {\n const className = classnames(`choice choice-${panel}`, { 'selected': this.state.panel === panel });\n let body;\n\n switch (panel) {\n case Panels.Progress:\n body = t('js_iknow.report-panel');\n break;\n case Panels.Difficulty:\n body = t('js_iknow.difficulty');\n break;\n case Panels.SessionPreview:\n body = t('session-items-panel');\n break;\n case Panels.SessionSummary:\n body = t('items-summary-panel');\n break;\n }\n\n // Don't render the session summary tab if the summary panel isn't going to\n // be rendered.\n if (panel === Panels.SessionSummary && !this._canRenderItemSummary()) {\n return null;\n }\n\n // Don't render difficulty layout when component is used with study all.\n if (panel === Panels.Difficulty && this.props.isStudyAll) {\n return null;\n }\n\n return (\n <li onClick={this._handlePanelSwitch.bind(null, panel)} className={className}>{body}</li>\n );\n },\n\n _renderNavigation() {\n if (this.props.isCourseRecommendation) {\n return this._renderCourseRecommendationNavigation();\n } else if (this.props.isCourseCompleted) {\n return this._renderCourseCompletedNavigation();\n } else if (this.props.isCheckpoint) {\n return this._renderCheckpointNavigation();\n } else if (this.props.sessionData.studySession.length === 0) {\n return this._renderNoItemsNavigation();\n } else if (this.state.skippedItemIds.length > 0) {\n return this._renderSkippedNavigation();\n }\n\n return this._renderDefaultNavigation();\n },\n\n /**\n * Will render the session configuration or sign up for a premium\n * account link.\n */\n _renderSessionConfiguration() {\n if (!this.props.isPremiumUser) {\n return (<PremiumLink source={this.props.applicationType} />);\n }\n\n return (\n <NavContainer align=\"right\" className=\"settings-wrapper\">\n {this._renderGoalSourceConfig()}\n\n <div className=\"settings-block settings-block-item-source\">\n <span className=\"setting-label\">{t('js_iknow.item-source')}</span>\n <DropdownItemSource onChange={this.props.onItemSourceChange} sessionConfig={this.props.sessionConfig} />\n </div>\n\n <div className=\"settings-block settings-block-session-size\">\n <span className=\"setting-label\">{t('session-size-max-label')}</span>\n <DropdownSessionSize onChange={this.props.onSessionSizeChange} sessionConfig={this.props.sessionConfig} sizes={this.props.sessionSizes} />\n </div>\n </NavContainer>\n );\n },\n\n _renderGoalSourceConfig() {\n if (!this.props.isStudyAll) {\n return null;\n }\n\n return (\n <div className=\"settings-block settings-block-goal-source\">\n <span className=\"setting-label\">{t('goal-source')}</span>\n <DropdownGoalSource onChange={this.props.onGoalSourceChange} sessionConfig={this.props.sessionConfig} />\n </div>\n );\n },\n\n _renderCourseCompletedNavigation() {\n return (\n <Navigation>\n <NavButton align=\"left\" onClick={this.props.onMenu}>{t('js_iknow.menu')}</NavButton>\n <NavButton align=\"right\" keyCode={Keys.ENTER} focused onClick={this.props.onNext}>{t('js_iknow.next')}</NavButton>\n </Navigation>\n );\n },\n\n _renderDefaultNavigation() {\n const { startLabel } = this.props;\n\n return (\n <Navigation>\n <NavButton align=\"left\" onClick={this.props.onMenu}>{t('js_iknow.menu')}</NavButton>\n {this._renderSessionConfiguration()}\n <NavButton align=\"right\" keyCode={Keys.ENTER} focused onClick={this.props.onStart}>{startLabel}</NavButton>\n </Navigation>\n );\n },\n\n _renderNoItemsNavigation() {\n const { startLabel } = this.props;\n\n return (\n <Navigation>\n <NavButton align=\"left\" onClick={this.props.onMenu}>{t('js_iknow.menu')}</NavButton>\n {this._renderSessionConfiguration()}\n <NavButton align=\"right\" disabled>{startLabel}</NavButton>\n </Navigation>\n );\n },\n\n _renderSkippedNavigation() {\n return (\n <Navigation>\n <NavButton align=\"left\" onClick={this.props.onMenu}>{t('js_iknow.menu')}</NavButton>\n <NavButton align=\"right\" onClick={this.props.onSkipItems.bind(null, this.state.skippedItemIds)}>{t('js_iknow.reload')}</NavButton>\n </Navigation>\n );\n },\n});\n\n/**\n * Helper method to get the aggregate data for study all or single\n * course.\n *\n * @returns {AggregateMemory|Grouping}\n */\nfunction getAggregateData(isStudyAll, sessionData) {\n return isStudyAll ?\n sessionData.grouping :\n sessionData.aggregateMemories[0];\n}\n\nfunction getCurrentGoal(sessionData) {\n return sessionData.goals[0];\n}\n\n// The screen banner will be rendered at a different location in the DOM, so\n// expose a stateless component that the controller can use to render it.\nexport function MemoryBankSummaryBanner(props) {\n let bannerContent = null;\n let progress = null;\n\n if (props.isStudyAll) {\n bannerContent = (<span className=\"study-all-title\">{t('study-all.label')}</span>);\n } else {\n const aggregateMemory = getAggregateData(props.isStudyAll, props.sessionData);\n\n if (aggregateMemory.completed) {\n progress = (<span className=\"course-completed-message\">{t('course completed')}</span>);\n } else {\n progress = (<ProgressBar progress={aggregateMemory.items.progress} showProgressTag />);\n }\n\n bannerContent = (<span className=\"course-title\">{getCurrentGoal(props.sessionData).title}</span>);\n }\n\n return (\n <div className=\"screen-memory-bank-summary-banner\">{bannerContent} {progress}</div>\n );\n}\n\nexport default MemoryBankSummaryScreen;\n","/* eslint-disable quote-props, react/no-did-mount-set-state, prefer-template, react/jsx-no-bind, default-case */\nimport classnames from 'classnames';\nimport React from 'react';\nimport { GoalSource, ItemSource } from 'es6/models/session-config';\nimport Localization from 'es6/services/localization';\n\n/**\n * Sets the state value to what was called and triggers\n * the onChange method.\n *\n * @param {String|Number} value\n */\nfunction handleClick(value) {\n if (value !== this.state.value) {\n this.setState({ value });\n this.props.onChange.call(null, value);\n }\n}\n\n/**\n * Hide the underlying choice set when the popover opens.\n */\nfunction handleOpen() {\n document.addEventListener('click', this._handleClose);\n this.setState({ isOpen: true });\n}\n\n/**\n * Show the underlying choice set when the popover closes.\n */\nfunction handleClose() {\n document.removeEventListener('click', this._handleClose);\n this.setState({ isOpen: false });\n}\n\n/**\n * Helper to render a list item.\n *\n * @param {String} source\n * @param {String|Number} value\n */\nfunction renderOption(source, value) {\n const sessionConfig = this.props.sessionConfig;\n const disabled = sessionConfig.isDisabled(source, value);\n const onClick = disabled ? null : handleClick.bind(this, value);\n const className = classnames('choice', {\n disabled,\n 'selected': sessionConfig[source] === value,\n });\n const label = this.getDisplayLabel(value);\n\n return (\n <li key={value} className={className} onClick={onClick}>{label}</li>\n );\n}\n\n/**\n * Inheriting classes need to define a getDisplayLabel(), getSelectedValue()\n * and renderOptions() method.\n */\nclass DropdownBase extends React.Component {\n constructor(...args) {\n super(...args);\n\n // Keep a reference to bind and unbind from the document.\n this._handleClose = handleClose.bind(this);\n\n this.state = {\n isOpen: false,\n hasMounted: false,\n minWidth: 0,\n value: this.props.value,\n };\n }\n\n /**\n * Make sure the size of the menu and choice set are the same size.\n */\n componentDidMount() {\n const minWidth = this.refs.menu.clientWidth;\n this.setState({ hasMounted: true, minWidth });\n }\n\n /**\n * Update the state of the component if the value changes\n */\n componentWillReceiveProps(nextProps) {\n const { value } = nextProps;\n if (value) {\n this.setState({ isOpen: false, value });\n }\n }\n\n /**\n * Unbind the handle close method (in case it is bound when the node\n * is unmounted).\n */\n componentWillUnmount() {\n document.removeEventListener('click', this._handleClose);\n }\n\n render() {\n const className = classnames('session-config-dropdown', {\n 'session-config-dropdown-open': this.state.isOpen,\n });\n const style = { minWidth: this.state.minWidth + 'px' };\n\n return (\n <div className={className} style={style}>\n <ul ref=\"menu\" className=\"choice-set choice-set-vertical\">\n {this.renderOptions()}\n </ul>\n\n <ul ref=\"placeholder\" className=\"choice-set choice-set-expanded choice-set-placeholder\">\n <li className=\"choice choice-dropdown selected\" onClick={handleOpen.bind(this)}>\n {this.getDisplayLabel(this.getSelectedValue())}\n </li>\n </ul>\n </div>\n );\n }\n}\n\nDropdownBase.propTypes = {\n onChange: React.PropTypes.func.isRequired,\n sessionConfig: React.PropTypes.object.isRequired,\n value: React.PropTypes.any,\n};\n\n/**\n * Labels property should be a key for the corresponding size. The label\n * will default to the value if none is specified.\n *\n * Example:\n * 'sizes': [5, 10, 20]\n */\nexport class DropdownSessionSize extends DropdownBase {\n getDisplayLabel(value) {\n return value;\n }\n\n getSelectedValue() {\n return this.props.sessionConfig.sessionSize;\n }\n\n renderOptions() {\n return this.props.sizes.map(size => renderOption.call(this, 'sessionSize', size));\n }\n}\n\nDropdownSessionSize.propTypes = Object.assign({\n sizes: React.PropTypes.array.isRequired,\n}, DropdownBase.propTypes);\n\nexport class DropdownItemSource extends DropdownBase {\n getDisplayLabel(value) {\n switch (value) {\n case ItemSource.ALL:\n return Localization.t('js_iknow.recommended');\n case ItemSource.REVIEW:\n return Localization.t('review-only');\n case ItemSource.NEW:\n return Localization.t('new-only');\n }\n\n return null;\n }\n\n getSelectedValue() {\n return this.props.sessionConfig.itemSource;\n }\n\n renderOptions() {\n return [\n renderOption.call(this, 'itemSource', ItemSource.ALL),\n renderOption.call(this, 'itemSource', ItemSource.REVIEW),\n renderOption.call(this, 'itemSource', ItemSource.NEW),\n ];\n }\n}\n\nexport class DropdownGoalSource extends DropdownBase {\n getDisplayLabel(value) {\n switch (value) {\n case GoalSource.ALL:\n return Localization.t('js_iknow.all');\n case GoalSource.UNCOMPLETED:\n return Localization.t('in-progress');\n case GoalSource.COMPLETED:\n return Localization.t('completed');\n }\n\n return null;\n }\n\n getSelectedValue() {\n return this.props.sessionConfig.goalSource;\n }\n\n renderOptions() {\n return [\n renderOption.call(this, 'goalSource', GoalSource.ALL),\n renderOption.call(this, 'goalSource', GoalSource.UNCOMPLETED),\n renderOption.call(this, 'goalSource', GoalSource.COMPLETED),\n ];\n }\n}\n","/* eslint-disable react/prefer-es6-class, react/sort-comp, quote-props, arrow-body-style */\nimport classNames from 'classnames';\nimport React from 'react';\nimport ProgressBar from 'es6/components/common/progress-bar';\nimport { t } from 'es6/services/localization';\n\nexport default React.createClass({\n\n displayName: 'ItemPreview',\n\n propTypes: {\n disabled: React.PropTypes.bool,\n itemPackages: React.PropTypes.array,\n onSkipped: React.PropTypes.func.isRequired,\n skippedItemIds: React.PropTypes.array,\n },\n\n getInitialState() {\n return {\n skippedItemIds: [],\n };\n },\n\n getDefaultProps() {\n return {\n disabled: false,\n itemPackages: [],\n onSkipped: null,\n skippedItemIds: [],\n };\n },\n\n componentWillMount() {\n if (this.props.skippedItemIds.length > 0) {\n this.setState({ skippedItemIds: this.props.skippedItemIds });\n }\n },\n\n componentWillReceiveProps(nextProps) {\n if (nextProps.skippedItemIds) {\n this.setState({ skippedItemIds: nextProps.skippedItemIds });\n }\n },\n\n _handleSkipped(itemPackage) {\n if (this.props.disabled) {\n return;\n }\n\n const skippedItemIds = this.state.skippedItemIds;\n const index = skippedItemIds.indexOf(itemPackage.getId());\n\n if (index !== -1) {\n skippedItemIds.splice(index, 1);\n } else {\n skippedItemIds.push(itemPackage.getId());\n }\n\n this.setState({ skippedItemIds });\n\n // Send the skipped items back to the properties callback.\n if (this.props.onSkipped) {\n this.props.onSkipped.call(this, skippedItemIds);\n }\n },\n\n render() {\n const className = classNames('items-session-details', {\n 'items-unavailable': !this.props.itemPackages.length,\n 'disabled': this.props.disabled,\n });\n\n // Split rows into two columns.\n const rows = _.chain(this.props.itemPackages)\n .groupBy((elem, i) => { return Math.floor(i / 2); })\n .toArray()\n .value();\n\n const actionMessage = this.props.itemPackages.length > 0 ?\n t('review your items, then hit start.') :\n t('no new items.');\n\n return (\n <section className={className}>\n <h4 className=\"action-message\">{actionMessage}</h4>\n\n <section className=\"items-container\">\n <section className=\"items\">\n {rows.map((itemPackages, i) => { return this._renderItemRow(itemPackages, i); })}\n </section>\n </section>\n </section>\n );\n },\n\n /**\n * Populates an item row, will add an extra slot if one isn't available.\n */\n _renderItemRow(itemPackages, rowNum) {\n let emptyItemSlot = null;\n\n if (itemPackages.length !== 2) {\n emptyItemSlot = (<section className=\"item\" />);\n }\n\n return (\n <section key={rowNum} className=\"item-row\">\n {itemPackages.map((itemPackage) => { return this._renderItem(itemPackage); })}\n {emptyItemSlot}\n </section>\n );\n },\n\n _renderItem(itemPackage) {\n const isSkipped = this.state.skippedItemIds.indexOf(itemPackage.getId()) !== -1;\n let itemClass = classNames('item', { 'skipped': isSkipped });\n let title = isSkipped ? t('unskip-item') : t('skip-item');\n let onSkipClick = this._handleSkipped.bind(this, itemPackage);\n\n return (\n <section className={itemClass} key={itemPackage.getId()}>\n <div className=\"item-actions\">\n {this._renderNewOrProgressBar(itemPackage)}\n <span className=\"glyph glyph-remove\" title={title} onClick={onSkipClick}></span>\n </div>\n\n <div className=\"item-details\">\n <p className=\"cue text\">{itemPackage.getText()}</p>\n {this._renderTransliteration(itemPackage)}\n {this._renderResponse(itemPackage)}\n </div>\n </section>\n );\n },\n\n // If the item has a memory, show the progress bar.\n _renderNewOrProgressBar(itemPackage) {\n if (!itemPackage.memory) {\n return (\n <span className=\"new-label\">{t('js_iknow.new item')}</span>\n );\n }\n\n return (\n <ProgressBar progress={itemPackage.memory.progress} showProgressTag className=\"progress-bar-item\" />\n );\n },\n\n // If the item is not new, don't show anything.\n _renderResponse(itemPackage) {\n if (itemPackage.memory) {\n return null;\n }\n\n return (\n <p className=\"response\">{itemPackage.getTranslation()}</p>\n );\n },\n\n // If the item is a review or doesn't have a transliteration, don't show anything.\n _renderTransliteration(itemPackage) {\n let transliteration = itemPackage.getTransliteration();\n\n if (itemPackage.memory || !transliteration) {\n return null;\n }\n\n return (\n <p className=\"transliteration\">{transliteration}</p>\n );\n },\n});\n","/* eslint-disable react/prefer-es6-class */\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport Localization from 'es6/services/localization';\n\n/**\n * A memoryBankPlot needs to be passed in, which is not a react component,\n * but handles rendering a SVG and manipulating it.\n *\n * NOTE: If you are planning to use this component, the underscore template\n * in memory_bank/templates/tooltip must be on the page.\n */\nexport default React.createClass({\n displayName: 'MemoryBank',\n\n propTypes: {\n memoryBankPlot: React.PropTypes.object.isRequired,\n visual: React.PropTypes.oneOf([\n 'progress',\n 'difficulty',\n ]),\n },\n\n getDefaultProps() {\n return {\n visual: null,\n };\n },\n\n componentDidMount() {\n this._insertSVG();\n },\n\n componentDidUpdate(prevProps, prevState) {\n if (this.props.memoryBankPlot !== prevProps.memoryBankPlot) {\n this._insertSVG();\n } else if (prevProps.visual !== this.props.visual) {\n this.props.memoryBankPlot.showVisual(this.props.visual);\n }\n },\n\n _insertSVG() {\n if (this.props.memoryBankPlot) {\n const domNode = ReactDOM.findDOMNode(this.refs.memoryBankLayer);\n\n // Remove previous memory bank if it exists.\n domNode.innerHTML = '';\n domNode.appendChild(this.props.memoryBankPlot.getSVG());\n\n this.props.memoryBankPlot.showVisual(this.props.visual);\n }\n },\n\n render() {\n return (\n <div className=\"memory-bank-root\" id=\"memory-bank-component\" data-visual={this.props.visual} >\n <section className=\"memory-bank-layer\" ref=\"memoryBankLayer\" />\n <section className=\"labels\">\n <div className=\"label label-memory-strength\">{Localization.t('memory-bank.y-axis')}</div>\n </section>\n </div>\n );\n },\n});\n","/* eslint-disable react/prefer-es6-class, react/prefer-stateless-function */\nimport React from 'react';\nimport { t } from 'es6/services/localization';\nimport * as Paths from 'es6/core/paths';\n\nexport default React.createClass({\n displayName: 'PremiumLink',\n\n propTypes: {\n source: React.PropTypes.string.isRequired,\n },\n\n render() {\n return (\n <a href={Paths.payment(this.props.source)} className=\"premium-button\">{t('sign up to become a premium member!')}</a>\n );\n },\n});\n","/* eslint-disable react/prefer-es6-class, react/prop-types, react/jsx-no-bind */\nimport React from 'react';\nimport classnames from 'classnames';\nimport { t } from 'es6/services/localization';\nimport PanelMixin from 'es6/components/apps/settings/panel-mixin';\n\nexport default React.createClass({\n displayName: 'IKnowQuizSettingsPanel',\n\n mixins: [PanelMixin],\n\n statics: {\n getTabName() {\n return t('quiz settings');\n },\n },\n\n /**\n * Helper method to update the quiz options.\n *\n * @param {String} quizOption\n * @param {Boolean} value\n */\n _handleQuizOptionsChange(quizOption, value) {\n const attrs = {\n apps: {\n itemStudy: {\n quizOptions: {\n [quizOption]: value,\n },\n },\n },\n };\n\n this.props.onDataChange.call(this, attrs);\n },\n\n /**\n * @param {Boolean} showTranscription\n */\n _handleShowTranscriptionChange(showTranscription) {\n const attrs = {\n apps: {\n showTranscription,\n },\n };\n\n this.props.onDataChange.call(this, attrs);\n },\n\n render() {\n // These settings must be disabled while in session.\n const spellingAndAudioClassName = classnames('setting', { disabled: this.props.inSession });\n const quizOptions = this.props.userSettings.apps.itemStudy.quizOptions;\n const audioHandler = this._handleQuizOptionsChange.bind(null, 'audio');\n const spellingHandler = this._handleQuizOptionsChange.bind(null, 'spelling');\n const showTranscription = this.props.userSettings.apps.showTranscription;\n\n return (\n <div className=\"quiz-settings\">\n <div className=\"content-columns\">\n <div className=\"content-column\">\n <div className={spellingAndAudioClassName}>\n <h4>{t('spelling quiz')}</h4>\n {this._renderToggle('spelling', quizOptions.spelling, this.props.inSession, spellingHandler)}\n </div>\n\n <div className={spellingAndAudioClassName}>\n <h4>{t('audio quiz')}</h4>\n {this._renderToggle('audio', quizOptions.audio, this.props.inSession, audioHandler)}\n </div>\n\n {this._renderTypingSpecialCharactersToggle()}\n\n <div className=\"setting\">\n <h4>{t('show transcription')}</h4>\n {this._renderToggle('showTranscription', showTranscription, false, this._handleShowTranscriptionChange)}\n </div>\n </div>\n </div>\n </div>\n );\n },\n});\n","/* eslint-disable default-case */\nimport BaseItemStudyApp from 'es6/controllers/apps/base-item-study-app';\nimport RapidChoiceQuizDirectionPanel from 'es6/components/apps/settings/rapid-choice-quiz-direction-panel';\nimport RapidChoiceSequencer from 'es6/controllers/apps/rapid-choice-sequencer';\nimport { QuizDirection } from 'es6/models/user-settings';\nimport { t } from 'es6/services/localization';\n\nexport default class RapidChoiceApp extends BaseItemStudyApp {\n\n /**\n * Takes app settings from the app-launcher.\n */\n constructor(appSettings) {\n // Pass to BaseStudyApp for initialization.\n super('rapid_choice', appSettings);\n\n // Don't load the sentence assets.\n this._includeSentenceAssets = false;\n }\n\n /**\n * Override the _checkpointTriggered() method.\n *\n * @returns {Boolean}\n */\n _checkpointTriggered() {\n return false;\n }\n\n /**\n * Creates the sequencer for rapid choice.\n *\n * @returns {RapidChoiceSequencer}\n */\n _createSequencer() {\n return new RapidChoiceSequencer(this._sessionData, this._quizTimer);\n }\n\n /**\n * @override\n * @returns {Object}\n */\n _getDefaultQuizOptions() {\n return {\n quizDirection: QuizDirection.Forward,\n };\n }\n\n /**\n * @override\n * @returns {Object}\n */\n _getDefaultSessionConfig() {\n const config = super._getDefaultSessionConfig();\n\n // Only want to increase the session size.\n config.course.sessionSize = 20;\n config.studyAll.sessionSize = 20;\n\n return config;\n }\n\n /**\n * Override default session sizes.\n *\n * @returns {Number[]}\n */\n _getSessionSizes() {\n return [10, 20, 50, 100];\n }\n\n /**\n * Add settings panel that are specific to rapid choice.\n *\n * @returns {Array}\n */\n _getSettingsPanels() {\n const panels = super._getSettingsPanels();\n\n // Add the iKnow quiz settings panel.\n panels.splice(1, 0, RapidChoiceQuizDirectionPanel);\n\n return panels;\n }\n\n /**\n * Add study parameters that are specific to rapid choice.\n *\n * @returns {Object}\n */\n _getStudyParameters() {\n const params = super._getStudyParameters();\n const quizOptions = this._userSettings.apps.rapidChoice.quizOptions;\n\n switch (quizOptions.quizDirection) {\n case QuizDirection.Forward:\n params.sequenceOptions.push('no_reverse_rapid_choice');\n break;\n case QuizDirection.Reverse:\n params.sequenceOptions.push('no_forward_rapid_choice');\n break;\n }\n\n return params;\n }\n\n /**\n * @override\n * @returns {String}\n */\n _getStartButtonLabel() {\n return t('memory-bank-screen.start-rapid-choice');\n }\n}\n","/* eslint-disable react/prefer-es6-class, react/prop-types */\nimport React from 'react';\nimport Localization from 'es6/services/localization';\nimport PanelMixin from 'es6/components/apps/settings/panel-mixin';\n\nexport default React.createClass({\n displayName: 'RapidChoiceQuizDirectionPanel',\n\n mixins: [PanelMixin],\n\n statics: {\n getTabName() {\n return Localization.t('quiz settings');\n },\n },\n\n /**\n * @params {String} quizDirection\n */\n _handleChange(quizDirection) {\n const attrs = {\n apps: {\n rapidChoice: {\n quizOptions: {\n quizDirection,\n },\n },\n },\n };\n\n this.props.onDataChange.call(this, attrs);\n },\n\n render() {\n const value = this.props.userSettings.apps.rapidChoice.quizOptions.quizDirection;\n return this._renderQuizDirectionOptions(value, this._handleChange);\n },\n});\n\n","import IKnowSequencer from 'es6/controllers/apps/iknow-sequencer';\nimport { ResultTypes } from 'es6/models/quiz-result';\nimport { pause, pauseEvents } from 'es6/services/pause';\n\nconst TIMEOUTS_BEFORE_PAUSE = 2;\n\n/*\n * Sequencer identical to the IKnowSequencer, but which auto-pauses\n * following multiple TimeoutResults.\n */\nexport default class RapidChoiceSequencer extends IKnowSequencer {\n constructor(...args) {\n super(...args);\n this.timeoutsRemaining = TIMEOUTS_BEFORE_PAUSE;\n }\n\n /*\n * @Override\n * Check if the result was a timeout and pause if necessary, before\n * deferring to the super classes normal behaviour.\n */\n quizFinished(quiz) {\n if (quiz.result.leQuizResult === ResultTypes.TIMEOUT) {\n this.timeoutsRemaining--;\n } else {\n this.timeoutsRemaining = TIMEOUTS_BEFORE_PAUSE;\n }\n\n if (this.timeoutsRemaining === 0) {\n this.timeoutsRemaining = TIMEOUTS_BEFORE_PAUSE;\n\n // Wait until after the pause before proceeding to next quiz.\n const onResume = () => {\n super.quizFinished(quiz);\n pauseEvents.removeListener('resume', onResume);\n };\n pauseEvents.on('resume', onResume);\n\n pause();\n } else {\n super.quizFinished(quiz);\n }\n }\n}\n","/* eslint-disable default-case */\nimport BaseItemStudyApp from 'es6/controllers/apps/base-item-study-app';\nimport SelfAssessmentQuizDirectionPanel from 'es6/components/apps/settings/self-assessment-quiz-direction-panel';\nimport SelfAssessmentSequencer from 'es6/controllers/apps/self-assessment-sequencer';\nimport { QuizDirection } from 'es6/models/user-settings';\nimport { t } from 'es6/services/localization';\n\nexport default class SelfAssessmentApp extends BaseItemStudyApp {\n\n /**\n * Takes app settings from the app-launcher.\n */\n constructor(appSettings) {\n // Pass to BaseStudyApp for initialization.\n super('self_assessment', appSettings);\n }\n\n /**\n * Override the _checkpointTriggered() method.\n *\n * @returns {Boolean}\n */\n _checkpointTriggered() {\n return false;\n }\n\n /**\n * Creates the sequencer for self assessment.\n *\n * @returns {SelfAssessmentSequencer}\n */\n _createSequencer() {\n return new SelfAssessmentSequencer(this._sessionData, this._quizTimer);\n }\n\n /**\n * @override\n * @returns {Object}\n */\n _getDefaultQuizOptions() {\n return {\n quizDirection: QuizDirection.Forward,\n };\n }\n\n /**\n * Add settings panel that are specific to iKnow.\n *\n * @returns {Array}\n */\n _getSettingsPanels() {\n const panels = super._getSettingsPanels();\n\n // Add the self assessment quiz direction panel.\n panels.splice(1, 0, SelfAssessmentQuizDirectionPanel);\n\n return panels;\n }\n\n /**\n * Add study parameters that are specific to self asessment.\n *\n * @returns {Object}\n */\n _getStudyParameters() {\n const params = super._getStudyParameters();\n const quizOptions = this._userSettings.apps.selfAssessment.quizOptions;\n\n switch (quizOptions.quizDirection) {\n case QuizDirection.Forward:\n params.sequenceOptions.push('no_reverse_self_assessment');\n break;\n case QuizDirection.Reverse:\n params.sequenceOptions.push('no_forward_self_assessment');\n break;\n }\n\n return params;\n }\n\n /**\n * @override\n * @returns {String}\n */\n _getStartButtonLabel() {\n return t('memory-bank-screen.start-self-assessment');\n }\n}\n","/* eslint-disable react/prefer-es6-class, react/prop-types */\nimport React from 'react';\nimport Localization from 'es6/services/localization';\nimport PanelMixin from 'es6/components/apps/settings/panel-mixin';\n\nexport default React.createClass({\n displayName: 'SelfAssessmentQuizDirectionPanel',\n\n mixins: [PanelMixin],\n\n statics: {\n getTabName() {\n return Localization.t('quiz settings');\n },\n },\n\n /**\n * @params {String} quizDirection\n */\n _handleChange(quizDirection) {\n const attrs = {\n apps: {\n selfAssessment: {\n quizOptions: {\n quizDirection,\n },\n },\n },\n };\n\n this.props.onDataChange.call(this, attrs);\n },\n\n render() {\n const value = this.props.userSettings.apps.selfAssessment.quizOptions.quizDirection;\n return this._renderQuizDirectionOptions(value, this._handleChange);\n },\n});\n","import IKnowSequencer from 'es6/controllers/apps/iknow-sequencer';\n\n/*\n * Essentially the same as the iKnow sequencer, but doesn't insert extra\n * quizzes following incorrect or hard answers.\n */\nexport default class SelfAssessmentSequencer extends IKnowSequencer {\n\n /*\n * Note: Because we expect longer sequences in Quick Review modes (self-assessment\n * & rapid choice) we might want to expand out the intervalMultipliers over more\n * steps.\n */\n\n /*\n * @Override\n * Don't want to insert an extra quiz in the same way we do in iknow.\n */\n _onHardAnswer(studyItem) {\n // Do nothing\n }\n\n /*\n * @Override\n * Don't want to insert an extra quiz following an incorrect answer.\n */\n _attemptInsertingExtraQuiz(studyItem) {\n // Do nothing\n }\n\n /*\n * @Override\n * Don't want to replace with an identical quiz; want to add the SABinary\n * quiz listed as the followup instead.\n */\n _getReplacementForIncorrectQuiz(quiz, studyItem) {\n return new quiz.followUpQuiz(\n quiz.itemPackage,\n quiz.result.goalId,\n this._isDiagnosticQuiz,\n this.quizFinished.bind(this),\n this._quizTimer\n );\n }\n}\n","/* eslint-disable no-unused-vars, no-param-reassign, react/react-in-jsx-scope, react/jsx-closing-bracket-location */\nimport BaseStudyApp from 'es6/controllers/apps/base-study-app';\nimport { AppPaths } from 'es6/core/paths';\nimport SentenceTrainerHelpPanel from 'es6/components/apps/settings/sentence-trainer-help-panel';\nimport QuizSettingsPanel from 'es6/components/apps/settings/sentence-trainer-quiz-settings-panel';\nimport QuizTypesPanel from 'es6/components/apps/settings/sentence-trainer-quiz-types-panel';\nimport { SentenceAssets } from 'es6/core/loaders';\nimport SentenceTrainerSequencer from 'es6/controllers/apps/sentence-trainer-sequencer';\nimport SentenceTrainerSummary from 'es6/components/apps/screens/sentence-trainer-summary';\nimport WelcomeSentenceTrainerCourse from 'es6/components/apps/screens/welcome-sentence-trainer-course';\nimport WelcomeSentenceTrainerStudyAll from 'es6/components/apps/screens/welcome-sentence-trainer-study-all';\nimport SessionProgressSteps from 'es6/components/apps/session-progress-steps';\nimport ScreenBanner from 'es6/components/apps/screen-banner';\n\nexport default class SentenceTrainerApp extends BaseStudyApp {\n\n /**\n * Takes app settings from the app launcher.\n */\n constructor(appSettings) {\n super('sentence_study', appSettings);\n\n // Is this a checkpoint session? Only allow on a single course study session.\n this._isCheckpoint = appSettings.isCheckpoint;\n }\n\n /**\n * Until the backend returns distractors, add distractors to the sentence\n * objects that will be studied.\n *\n * @override\n * @returns {Object}\n */\n _buildSessionData(...args) {\n const sessionData = super._buildSessionData(...args);\n\n // Construct new word entities (in the event the language study mode changed).\n sessionData.studySession.forEach(s => s.content.constructWordEntities());\n\n const distractorPool = sessionData.studySession\n .map(s => s.content.wordEntities)\n .reduce((a, b) => a.concat(b), [])\n .filter(w => !w.isPunctuation)\n .map(w => w.value);\n\n sessionData.studySession.forEach(studyNode => {\n studyNode.content.distractors = studyNode.content.getWordDistractors(distractorPool);\n });\n\n return sessionData;\n }\n\n /**\n * Creates the sequencer for sentence trainer.\n *\n * @returns {SentenceTrainerSequencer}\n */\n _createSequencer() {\n return new SentenceTrainerSequencer(this._sessionData);\n }\n\n _handleSequencerProgress(progress) {\n this._renderBanner({\n showPauseButton: true,\n showSettingsButton: true,\n children: (\n <SessionProgressSteps\n progress={progress}\n totalSteps={this._sequencer.totalItems} />\n ),\n });\n }\n\n /**\n * @override\n * @returns {Object}\n */\n _getDefaultQuizOptions() {\n return {\n listeningFillInTheBlankPartial: true,\n listeningFillInTheBlank: true,\n listeningAssembly: true,\n translationAssembly: true,\n };\n }\n\n /**\n * Override default session sizes.\n *\n * @returns {Number[]}\n */\n _getSessionSizes() {\n return [5, 10, 20];\n }\n\n /**\n * Add settings panel that are specific to sentence trainer.\n *\n * @override\n * @returns {Array}\n */\n _getSettingsPanels() {\n const panels = super._getSettingsPanels();\n\n panels.splice(1, 0, QuizTypesPanel, QuizSettingsPanel);\n panels.push(SentenceTrainerHelpPanel);\n\n return panels;\n }\n\n /**\n * Add study parameters that are specific to sentence trainer.\n *\n * @returns {Object}\n */\n _getStudyParameters() {\n const params = super._getStudyParameters();\n const sequenceOptions = params.sequenceOptions;\n const quizOptions = this._userSettings.apps.sentenceStudy.quizOptions;\n\n if (!quizOptions.listeningFillInTheBlankPartial) {\n sequenceOptions.push('no_quiz_sentence_study_listening_fill_in_the_blank_partial');\n }\n\n if (!quizOptions.listeningFillInTheBlank) {\n sequenceOptions.push('no_quiz_sentence_study_listening_fill_in_the_blank');\n }\n\n if (!quizOptions.listeningAssembly) {\n sequenceOptions.push('no_quiz_sentence_study_listening_assembly');\n }\n\n if (!quizOptions.translationAssembly) {\n sequenceOptions.push('no_quiz_sentence_study_translation_assembly');\n }\n\n return params;\n }\n\n /**\n * Callback for skipping checkpoint on the welcome screen.\n */\n _handleCheckpointSkip() {\n this._redirectToIKnow();\n }\n\n /**\n * Callback for clicking next on the summary screen.\n */\n _handleSummaryNext() {\n // If this is a checkpoint, send the user back to iKnow.\n // Otherwise, start a new session.\n if (this._isCheckpoint) {\n this._redirectToIKnow();\n } else {\n this._screenManager.show('loading');\n this._fetchData();\n }\n }\n\n /**\n * @override\n * @returns {Promise}\n */\n _loadSessionAssets() {\n const sentences = this._sessionData.studySession.map(s => s.content);\n return new SentenceAssets(sentences);\n }\n\n _redirectToIKnow() {\n this._quitApplication(AppPaths.IKNOW);\n }\n\n /**\n * @override\n */\n _setupScreens() {\n super._setupScreens();\n\n this._screenManager.addScreen('dictation_recall', Smartfm.Apps.Dictation.Screens.DictationRecall);\n this._screenManager.addScreen('dictation_quiz', Smartfm.Apps.Dictation.Screens.DictationQuiz);\n this._screenManager.addScreen('dictation_confirmation', Smartfm.Apps.Dictation.Screens.DictationConfirmation);\n }\n\n /**\n * @override\n */\n _showSummaryScreen(presentationResults, sessionResults) {\n const props = {\n onNext: this._handleSummaryNext.bind(this),\n presentationResults,\n sessionData: this._sessionData,\n sessionResults,\n studyAll: this._studyAll,\n };\n\n this._screenManager.renderComponent(SentenceTrainerSummary, props);\n\n // Reset the banner.\n this._renderBanner({ showSettingsButton: true });\n }\n\n /**\n * @override\n */\n _showWelcomeScreen() {\n const component = this._studyAll ? WelcomeSentenceTrainerStudyAll : WelcomeSentenceTrainerCourse;\n\n const props = {\n isCheckpoint: this._isCheckpoint,\n onCheckpointSkip: this._handleCheckpointSkip.bind(this),\n onMenu: () => this._quitApplication(),\n onSessionSizeChange: this._handleSessionChange.bind(this, 'sessionSize'),\n onGoalSourceChange: this._handleSessionChange.bind(this, 'goalSource'),\n onStart: () => this._startSession(),\n sessionConfig: this._sessionConfig,\n sessionData: this._sessionData,\n };\n\n this._screenManager.renderComponent(component, props);\n\n this._renderBanner({ showSettingsButton: true });\n }\n\n /**\n * @override\n * @returns {Boolean}\n */\n _updateSessionConfig() {\n return true;\n }\n}\n","/* eslint-disable react/prefer-es6-class */\nimport React from 'react';\nimport { t } from 'es6/services/localization';\nimport PanelMixin from 'es6/components/apps/settings/panel-mixin';\n\nexport const SentenceTrainerHelpPanel = React.createClass({\n displayName: 'SentenceTrainerHelpPanel',\n\n mixins: [PanelMixin],\n\n statics: {\n getTabName() {\n return t('shortcut keys');\n },\n },\n\n render() {\n return (\n <div className=\"help-block\">\n <div className=\"keyboard-explanation\">\n <table>\n <tbody>\n <tr>\n <td>\n <div className=\"keys\">\n <div className=\"key long-key\">\n <div className=\"top-left text\">Enter</div>\n <div className=\"bottom-right text\">↲</div>\n </div>\n </div>\n <div className=\"explanation\">{t('help-panel.sentence-trainer.enter')}</div>\n </td>\n\n <td>\n <div className=\"keys\">\n <div className=\"key long-key\">\n <div className=\"top-left text\">Space</div>\n </div>\n </div>\n <div className=\"explanation\">{t('app_keys.play audio')}</div>\n </td>\n </tr>\n <tr>\n <td>\n <div className=\"keys\">\n <div className=\"key-wrapper\">\n <div className=\"key\">\n <div className=\"arrow\">↑</div>\n </div>\n </div>\n <div className=\"key\">\n <div className=\"arrow\">←</div>\n </div>\n <div className=\"key\">\n <div className=\"arrow\">↓</div>\n </div>\n <div className=\"key\">\n <div className=\"arrow\">→</div>\n </div>\n </div>\n <div className=\"explanation\">{t('select-answer')}</div>\n </td>\n\n <td>\n <div className=\"keys\">\n <div className=\"key long-key\">\n <div className=\"top-left text\">Shift</div>\n </div>\n\n <div className=\"key\">\n <div className=\"arrow\">↑</div>\n </div>\n </div>\n <div className=\"explanation\">{t('hint')}</div>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n );\n },\n});\n\nexport default SentenceTrainerHelpPanel;\n","/* eslint-disable react/prefer-es6-class */\nimport React from 'react';\nimport { t } from 'es6/services/localization';\nimport PanelMixin from 'es6/components/apps/settings/panel-mixin';\n\nexport const SentenceTrainerQuizSettingsPanel = React.createClass({\n displayName: 'SentenceTrainerQuizSettingsPanel',\n\n mixins: [PanelMixin],\n\n statics: {\n getTabName() {\n return t('quiz settings');\n },\n },\n\n render() {\n return (\n <div className=\"quiz-settings\">\n <div className=\"content-columns\">\n <div className=\"content-column\">\n {this._renderTypingSpecialCharactersToggle()}\n </div>\n </div>\n </div>\n );\n },\n});\n\nexport default SentenceTrainerQuizSettingsPanel;\n","/* eslint-disable react/prefer-es6-class, react/prop-types, no-confusing-arrow, react/sort-comp */\nimport React from 'react';\nimport classnames from 'classnames';\nimport { t } from 'es6/services/localization';\nimport PanelMixin from 'es6/components/apps/settings/panel-mixin';\n\nexport const SentenceTrainerQuizTypesPanel = React.createClass({\n displayName: 'SentenceTrainerQuizTypesPanel',\n\n mixins: [PanelMixin],\n\n statics: {\n getTabName() {\n return t('learning-app.quiz-types');\n },\n },\n\n /**\n * Get the number of quiz options enabled.\n *\n * @returns {Number}\n */\n _getEnabledQuizOptionsCount() {\n const quizOptions = this.props.userSettings.apps.sentenceStudy.quizOptions;\n\n return Object.keys(quizOptions)\n .map(type => quizOptions[type] ? 1 : 0)\n .reduce((m, n) => m + n, 0);\n },\n\n _handleChange(quizOption, value) {\n const attrs = {\n apps: {\n sentenceStudy: {\n quizOptions: {\n [quizOption]: value,\n },\n },\n },\n };\n\n this.props.onDataChange.call(this, attrs);\n },\n\n render() {\n const className = classnames('content-columns quiz-types', {\n disabled: this.props.inSession,\n });\n\n return (\n <div className=\"quiz-type-settings\">\n <div className={className}>\n <section className=\"content-column dictation-quizzes\">\n <h4>{t('dictation-quiz-types')}</h4>\n\n {this._renderQuizOptionToggle('listeningFillInTheBlankPartial', t('dictation-chunk'), t('dictation-chunk-description'))}\n {this._renderQuizOptionToggle('listeningFillInTheBlank', t('dictation-full'), t('dictation-full-description'))}\n </section>\n\n <section className=\"content-column sentence-builder-quizzes\">\n <h4 className=\"primary-item\">{t('sentence-builder-quiz-types')}</h4>\n\n {this._renderQuizOptionToggle('translationAssembly', t('builder-reading'), t('builder-reading-description'))}\n {this._renderQuizOptionToggle('listeningAssembly', t('builder-listening'), t('builder-listening-description'))}\n </section>\n </div>\n </div>\n );\n },\n\n /**\n * @param {String} quizOption\n * @param {String} title\n * @param {String} description\n */\n _renderQuizOptionToggle(quizOption, title, description) {\n // If in session, disable the quiz. Otherwise, if this is the only\n // quiz type enabled, make sure no one can toggle it. There has to\n // be at least one quiz type enabled.\n const value = this.props.userSettings.apps.sentenceStudy.quizOptions[quizOption];\n const isDisabled = this.props.inSession || (this._getEnabledQuizOptionsCount() === 1 && value);\n\n return (\n <div className=\"item-wrapper\">\n <span className=\"primary-item\">{title}</span>\n {this._renderToggle(quizOption, value, isDisabled, this._handleChange.bind(null, quizOption))}\n <span className=\"tertiary-item\">{description}</span>\n </div>\n );\n },\n});\n\nexport default SentenceTrainerQuizTypesPanel;\n","import SequencerBase from 'es6/controllers/apps/sequencer-base';\n\nexport default class SentenceTrainerSequencer extends SequencerBase {\n constructor(sessionData) {\n super(sessionData.studySession, false, null);\n }\n\n /**\n * @override\n */\n showNextQuiz() {\n const itemsWithQuizzesRemaining = this._itemsWithQuizzesRemaining();\n\n if (itemsWithQuizzesRemaining.length > 0) {\n this._showNextQuizForItem(itemsWithQuizzesRemaining[0]);\n } else {\n this.sequenceFinished();\n }\n }\n\n /**\n * @override\n */\n quizFinished(quiz) {\n const studyItem = this._studyItemFromQuiz(quiz);\n studyItem.sequencing.presentedQuizzes.push(quiz);\n this._incrementProgress();\n this.showNextQuiz();\n }\n\n /**\n * Updates the progress.\n *\n * @override\n */\n _incrementProgress() {\n const progress = this._studyItems.length - this._itemsWithQuizzesRemaining().length;\n this._updateProgress(progress);\n }\n}\n","/* eslint-disable react/prefer-es6-class, react/sort-comp, react/jsx-closing-bracket-location */\nimport classnames from 'classnames';\nimport React from 'react';\nimport { t } from 'es6/services/localization';\nimport { humanizedTime } from 'es6/helpers/time';\nimport { NavButton, Navigation } from 'es6/components/apps/navigation';\nimport { ProgressBarSentenceTrainer } from 'es6/components/common/progress-bar';\nimport ResultGlyphs from 'es6/components/apps/result-glyphs';\nimport SentenceTrainerSummaryBreakdown from 'es6/components/apps/screens/sentence-trainer-summary-breakdown';\nimport SentenceTrainerSummaryMixin from 'es6/components/apps/mixins/sentence-trainer-summary';\nimport SoundManager from 'es6/services/sound-manager';\nimport { Stats, Stat, StatData, StatLabel } from 'es6/components/apps/stats';\nimport { DONE } from 'es6/core/sound-effects';\n\nexport default React.createClass({\n displayName: 'SentenceTrainerSummaryScreen',\n\n mixins: [SentenceTrainerSummaryMixin],\n\n propTypes: {\n onNext: React.PropTypes.func.isRequired,\n presentationResults: React.PropTypes.array.isRequired,\n sessionData: React.PropTypes.object.isRequired,\n sessionResults: React.PropTypes.object.isRequired,\n studyAll: React.PropTypes.bool.isRequired,\n },\n\n getInitialState() {\n return {\n isViewingSentenceBreakdown: false,\n };\n },\n\n componentDidMount() {\n SoundManager.playEffect(DONE);\n },\n\n _toggleScreenContent(e) {\n e.preventDefault();\n this.setState({ isViewingSentenceBreakdown: !this.state.isViewingSentenceBreakdown });\n },\n\n render() {\n if (this.state.isViewingSentenceBreakdown) {\n return this._renderSentenceBreakdown();\n }\n\n const className = classnames('screen screen-sentence-trainer-summary', {\n 'screen-sentence-trainer-summary-study-all': this.props.studyAll,\n });\n\n // Determine the amount of correct/mistakes/incorrect for each presentation result.\n const sentenceTrainerResults = this._getSentenceTrainerResults();\n\n let correct = 0;\n let mistakes = 0;\n let incorrect = 0;\n\n sentenceTrainerResults.forEach(result => {\n if (result.resultGlyph === ResultGlyphs.CORRECT) {\n correct++;\n } else if (result.resultGlyph === ResultGlyphs.CORRECT_WITH_MISTAKES) {\n mistakes++;\n } else {\n incorrect++;\n }\n });\n\n return (\n <div className={className}>\n <div className=\"screen-content\">\n <h4 className=\"header\">{t('session-results')}</h4>\n\n <div className=\"summary\">\n {this._renderCourseDetails()}\n\n <ul className=\"summary-stats\">\n <li className=\"correct\">\n <div className={`secondary-item ${ResultGlyphs.CORRECT}`} />\n <div className=\"primary-item\">\n <span className=\"primary sentences_correct\">{correct}</span>\n {' '}\n <span className=\"secondary\">{t('js_iknow.correct')}</span>\n </div>\n </li>\n <li className=\"with_misses\">\n <div className={`secondary-item ${ResultGlyphs.CORRECT_WITH_MISTAKES}`}></div>\n <div className=\"primary-item\">\n <span className=\"primary sentences_with_misses\">{mistakes}</span>\n {' '}\n <span className=\"unit\">{t('with misses')}</span>\n </div>\n </li>\n <li className=\"incorrect\">\n <div className={`secondary-item ${ResultGlyphs.INCORRECT}`}></div>\n <div className=\"primary-item\">\n <span className=\"primary sentences_incorrect\">{incorrect}</span>\n {' '}\n <span className=\"unit\">{t('incorrect')}</span>\n </div>\n </li>\n </ul>\n </div>\n\n <div className=\"session-details\">\n <a onClick={this._toggleScreenContent}>{t('js_iknow.details')}</a>\n </div>\n </div>\n\n <Navigation>\n <NavButton align=\"right\" focused onClick={this.props.onNext}>{t('js_iknow.next')}</NavButton>\n </Navigation>\n </div>\n );\n },\n\n _renderCourseDetails() {\n if (this.props.studyAll) {\n return null;\n }\n\n const { presentationResults,\n sessionData,\n sessionResults } = this.props;\n\n const aggregateMemory = sessionResults.goalMemoryAggregates[0] || sessionData.aggregateMemory[0];\n const goal = this.props.sessionData.goals[0];\n\n const progress = aggregateMemory.sentences.progress;\n const level = aggregateMemory.sentences.level;\n\n const started = sessionData.studySession.length;\n const totalTimeMillis = presentationResults.reduce((prev, pr) => pr.studyTimeMillis + prev, 0);\n const totalTime = totalTimeMillis / 1000;\n\n return (\n <div className=\"course-details\">\n <h4 className=\"level\">{t('st-level-{level}', { level })}</h4>\n <h2 className=\"title ellipsis\">{goal.title}</h2>\n\n <ProgressBarSentenceTrainer progress={progress} />\n\n <div className=\"stats-container\">\n <Stats>\n <Stat type=\"started\">\n <StatData>{started}</StatData>\n <StatLabel>{t('times')}</StatLabel>\n </Stat>\n\n <Stat type=\"time\">\n <StatData>{humanizedTime(totalTime)}</StatData>\n <StatLabel>{t('js_iknow.study time')}</StatLabel>\n </Stat>\n </Stats>\n </div>\n\n <div className=\"hr\"></div>\n </div>\n );\n },\n\n _renderSentenceBreakdown() {\n return (\n <SentenceTrainerSummaryBreakdown\n onBack={this._toggleScreenContent}\n presentationResults={this.props.presentationResults}\n sessionData={this.props.sessionData} />\n );\n },\n});\n","/* eslint-disable react/prefer-es6-class, react/sort-comp */\nimport React from 'react';\nimport { t } from 'es6/services/localization';\nimport { NavButton, Navigation } from 'es6/components/apps/navigation';\nimport SentenceTrainerSummaryMixin from 'es6/components/apps/mixins/sentence-trainer-summary';\nimport SoundPlayer, { SOUND_PLAYER_UNSTYLED } from 'es6/components/common/sound-player';\nimport MouseoverDictionary from 'iknow-mouseover-dictionary/react';\n\nconst SENTENCES_PER_ROW = 2;\n\nexport default React.createClass({\n displayName: 'SentenceTrainerSummaryBreakdownScreen',\n\n mixins: [SentenceTrainerSummaryMixin],\n\n propTypes: {\n onBack: React.PropTypes.func.isRequired,\n presentationResults: React.PropTypes.array.isRequired,\n sessionData: React.PropTypes.object.isRequired,\n },\n\n render() {\n return (\n <div className=\"screen screen-sentence-trainer-summary-breakdown\">\n <div className=\"screen-content\">\n <h2>{t('please review the sentences below')}</h2>\n\n <div className=\"scroll-container\">\n <div className=\"sentences\">\n {this._renderSentences()}\n </div>\n </div>\n </div>\n\n <Navigation>\n <NavButton focused onClick={this.props.onBack}>{t('js_iknow.back')}</NavButton>\n </Navigation>\n </div>\n );\n },\n\n /**\n * Renders the sentence and the result of the study.\n *\n * @param {Sentence} sentence\n * @param {Object} result\n */\n _renderSentence(sentence, result) {\n return (\n <div key={sentence.getId()} className=\"sentence-content\">\n {this._renderSoundPlayer(sentence)}\n\n <div className=\"cue-response-results\">\n <div className=\"text\">\n <MouseoverDictionary html={sentence.getText()} />\n </div>\n <div className=\"transliteration\" dangerouslySetInnerHTML={{ __html: sentence.getTransliteration() }} />\n <div className=\"translation\" dangerouslySetInnerHTML={{ __html: sentence.getTranslation() }} />\n\n <div className=\"result-summary\">\n <span className=\"label\">{t('misses:')}</span> <span className=\"value\">{result.mistakes}</span>\n {' '}\n <span className=\"label\">{t('hints:')}</span> <span className=\"value\">{result.hints}</span>\n </div>\n </div>\n\n <div className=\"result-glyph\">\n <span className={result.resultGlyph} />\n </div>\n </div>\n );\n },\n\n _renderSentences() {\n const { sessionData } = this.props;\n const sentenceTrainerResults = this._getSentenceTrainerResults();\n\n // Partition the sentences into rows and then render the\n // sentences into a sentence group.\n return sentenceTrainerResults.reduce((arr, sentence, i) => {\n if (i % SENTENCES_PER_ROW === 0) {\n arr.push([sentence]);\n } else {\n arr[arr.length - 1].push(sentence);\n }\n\n return arr;\n }, []).map((row, i) => {\n const sentences = row.map(result => {\n const sentence = sessionData.sentences[result.contentId];\n return this._renderSentence(sentence, result);\n });\n\n return (<div key={i} className=\"sentence-group\">{sentences}</div>);\n });\n },\n\n _renderSoundPlayer(sentence) {\n const sound = sentence.sound;\n\n if (!sound) {\n return null;\n }\n\n return (\n <div className=\"sound-player-container\">\n <SoundPlayer source={sound} variant={SOUND_PLAYER_UNSTYLED} />\n </div>\n );\n },\n});\n","/* eslint-disable react/prefer-es6-class, react/sort-comp */\nimport React from 'react';\nimport { ChoicesSessionSize } from 'es6/components/apps/choices';\nimport { humanizedTime } from 'es6/helpers/time';\nimport { t } from 'es6/services/localization';\nimport { ProgressBarSentenceTrainer } from 'es6/components/common/progress-bar';\nimport { NavButton, Navigation } from 'es6/components/apps/navigation';\nimport { Stats, Stat, StatData, StatLabel } from 'es6/components/apps/stats';\nimport { TranscodedImageSizes, TranscodedImage } from 'es6/components/common/transcoded-image';\nimport WelcomeSentenceTrainerMixin from 'es6/components/apps/mixins/welcome-sentence-trainer';\n\nexport default React.createClass({\n displayName: 'WelcomeSentenceTrainerCourseScreen',\n\n mixins: [WelcomeSentenceTrainerMixin],\n\n propTypes: {\n isCheckpoint: React.PropTypes.bool,\n onCheckpointSkip: React.PropTypes.func,\n onSessionSizeChange: React.PropTypes.func.isRequired,\n onStart: React.PropTypes.func.isRequired,\n sessionConfig: React.PropTypes.object.isRequired,\n sessionData: React.PropTypes.object.isRequired,\n sessionSizes: React.PropTypes.array,\n },\n\n getDefaultProps() {\n return {\n isCheckpoint: false,\n onCheckpointSkip: null,\n sessionSizes: [5, 10, 20],\n };\n },\n\n render() {\n const sessionData = this.props.sessionData;\n const aggregateMemory = sessionData.aggregateMemories[0];\n const goal = sessionData.goals[0];\n\n return (\n <div className=\"screen screen-welcome-sentence-trainer screen-welcome-sentence-trainer-course\">\n <div className=\"screen-content\">\n <span className=\"loading-spinner\"></span>\n\n <h1 className=\"title\">\n {this.props.isCheckpoint ? t('checkpoint-label') : ''}\n {' '}\n {t('app-branding.sentence-trainer')}\n </h1>\n\n <div className=\"course-details\">\n {this._renderCourseImage()}\n\n <div className=\"course-details-inner\">\n <div className=\"title-level-container\">\n <h2 className=\"course-title\">{goal.title}</h2>\n <span className=\"level\">{t('level-label')} {aggregateMemory.sentences.level}</span>\n </div>\n\n <ProgressBarSentenceTrainer progress={aggregateMemory.sentences.progress} />\n\n <Stats className=\"stats-inline\">\n <Stat type=\"started\">\n <StatData>\n {aggregateMemory.sentences.studiedItemsCount}\n {' '}\n <span className=\"secondary\">/ {goal.sentencesCount}</span>\n </StatData>\n <StatLabel>{t('times')}</StatLabel>\n </Stat>\n\n <Stat type=\"time\">\n <StatData>{humanizedTime(aggregateMemory.sentences.totalStudyTime)}</StatData>\n <StatLabel>{t('js_iknow.study time')}</StatLabel>\n </Stat>\n </Stats>\n </div>\n </div>\n\n <div className=\"next-session\">\n <div className=\"session-config\">\n <label className=\"choice-label\">\n {t('sentence-trainer.session-size')}\n </label>\n\n <ChoicesSessionSize sizes={this.props.sessionSizes} sessionConfig={this.props.sessionConfig} onChange={this.props.onSessionSizeChange} className=\"choice-set-expanded\" />\n </div>\n\n {this._renderSessionDetails()}\n </div>\n </div>\n\n {this.props.isCheckpoint ? this._renderCheckpointNavigation() : this._renderNavigation()}\n </div>\n );\n },\n\n _renderCheckpointNavigation() {\n return (\n <Navigation>\n <NavButton align=\"left\" onClick={this.props.onCheckpointSkip} className=\"btn-danger\">{t('checkpoint-skip')}</NavButton>\n <NavButton align=\"right\" focused onClick={this.props.onStart}>{t('start')}</NavButton>\n </Navigation>\n );\n },\n\n _renderCourseImage() {\n const goal = this.props.sessionData.goals[0];\n\n if (!goal.icon) {\n return null;\n }\n\n return (\n <TranscodedImage className=\"course-image\" src={goal.icon} size={TranscodedImageSizes.LARGE} />\n );\n },\n});\n","/* eslint-disable react/prefer-es6-class, react/prop-types, react/no-multi-comp, react/jsx-no-bind */\nimport classnames from 'classnames';\nimport React from 'react';\n\n/**\n * The proper way to stack these is in the format.\n *\n * <Choices onChange={someFunction} value={20}>\n * <Choice value={5} disabled={true}>5</Choice>\n * <Choice value={10}>10</Choice>\n * <Choice value={20}>20</Choice>\n * </Choices>\n */\n\nexport const Choice = React.createClass({\n displayName: 'Choice',\n\n propTypes: {\n onClick: React.PropTypes.func,\n disabled: React.PropTypes.bool,\n value: React.PropTypes.any.isRequired,\n selected: React.PropTypes.bool,\n },\n\n getDefaultProps() {\n return {\n disabled: false,\n onClick: null,\n selected: false,\n };\n },\n\n handleClick() {\n if (this.props.onClick && !this.props.disabled) {\n this.props.onClick.call(this, this.props.value);\n }\n },\n\n render() {\n const { disabled, selected } = this.props;\n const className = classnames('choice', { disabled, selected });\n\n return (\n <li className={className} onClick={this.handleClick}>{this.props.children}</li>\n );\n },\n});\n\nexport const Choices = React.createClass({\n displayName: 'Choices',\n\n propTypes: {\n className: React.PropTypes.string,\n onChange: React.PropTypes.func.isRequired,\n value: React.PropTypes.any,\n },\n\n getDefaultProps() {\n return {\n className: '',\n value: null,\n };\n },\n\n render() {\n const className = `choice-set ${this.props.className}`;\n const { children, onChange, value } = this.props;\n\n /**\n * Take the child properties and create a new set of properties\n * for rendering the choices.\n */\n const choices = React.Children.map(children, (child, i) => {\n const props = Object.assign({}, child.props, {\n key: i,\n onClick: onChange.bind(null, child.props.value),\n selected: child.props.value === value,\n });\n\n return (<Choice {...props} />);\n });\n\n return (\n <ul className={className}>{choices}</ul>\n );\n },\n});\n","/* eslint-disable react/prefer-es6-class, react/sort-comp */\nimport React from 'react';\nimport { ChoicesSessionSize, ChoicesGoalSource } from 'es6/components/apps/choices';\nimport { t } from 'es6/services/localization';\nimport StudyAllRibbon from 'es6/components/apps/study-all-ribbon';\nimport { TranscodedImageSizes, TranscodedImagePlaceholders, TranscodedImage } from 'es6/components/common/transcoded-image';\nimport WelcomeSentenceTrainerMixin from 'es6/components/apps/mixins/welcome-sentence-trainer';\n\nconst COURSE_IMAGE_COUNT = 6;\n\nexport default React.createClass({\n displayName: 'WelcomeSentenceTrainerStudyAllScreen',\n\n mixins: [WelcomeSentenceTrainerMixin],\n\n propTypes: {\n onGoalSourceChange: React.PropTypes.func.isRequired,\n onSessionSizeChange: React.PropTypes.func.isRequired,\n sessionConfig: React.PropTypes.object.isRequired,\n sessionData: React.PropTypes.object.isRequired,\n sessionSizes: React.PropTypes.array,\n },\n\n getDefaultProps() {\n return {\n sessionSizes: [5, 10, 20],\n };\n },\n\n render() {\n return (\n <div className=\"screen screen-welcome-sentence-trainer screen-welcome-sentence-trainer-study-all\">\n <StudyAllRibbon />\n\n <div className=\"screen-content\">\n <span className=\"loading-spinner\"></span>\n\n <h2 className=\"title\">{t('sentence-trainer-study-all')}</h2>\n\n <div className=\"course-images\">\n {this._renderCourseImages()}\n </div>\n\n <div className=\"next-session\">\n <div className=\"session-config\">\n <div className=\"session-config-setting\">\n <label className=\"choice-label\">\n {t('sentence-trainer.session-size')}\n </label>\n\n <ChoicesSessionSize sizes={this.props.sessionSizes} sessionConfig={this.props.sessionConfig} onChange={this.props.onSessionSizeChange} className=\"choice-set-expanded\" />\n </div>\n\n <div className=\"session-config-setting\">\n <label className=\"choice-label\">\n {t('goal-source')}\n </label>\n\n <ChoicesGoalSource sessionConfig={this.props.sessionConfig} onChange={this.props.onGoalSourceChange} className=\"choice-set-expanded\" />\n </div>\n </div>\n\n {this._renderSessionDetails()}\n </div>\n </div>\n\n {this._renderNavigation()}\n </div>\n );\n },\n\n _renderCourseImages() {\n // Get the goals that are in the session.\n const sessionData = this.props.sessionData;\n const goalIds = sessionData.studySession\n .map(studyNode => studyNode.goalId)\n .filter((v, i, s) => s.indexOf(v) === i);\n const goals = sessionData.goals.filter(g => goalIds.indexOf(g.id) !== -1);\n\n // Build the components.\n const components = [];\n for (let i = 0; i < COURSE_IMAGE_COUNT; i++) {\n const goal = goals[i];\n const src = goal ? goal.icon : null;\n\n components.push(\n (<TranscodedImage key={i} size={TranscodedImageSizes.MEDIUM} src={src} placeholder={TranscodedImagePlaceholders.APP} />)\n );\n }\n\n return components;\n },\n});\n","/* eslint-disable react/prefer-es6-class, react/sort-comp */\nimport classnames from 'classnames';\nimport Localization from 'es6/services/localization';\nimport React from 'react';\n\nexport const SessionProgressSteps = React.createClass({\n displayName: 'SessionProgressSteps',\n\n propTypes: {\n progress: React.PropTypes.number.isRequired,\n totalSteps: React.PropTypes.number,\n },\n\n render() {\n const steps = [];\n\n for (let i = 0; i < this.props.totalSteps; i++) {\n steps.push(this._renderStep(i));\n }\n\n return (\n <div className=\"session-progress\">\n <span className=\"text\">{Localization.t('js_iknow.session progress')}</span>\n <ul className=\"steps\">\n {steps}\n </ul>\n </div>\n );\n },\n\n _renderStep(i) {\n const className = classnames('step', { 'step-filled': i <= this.props.progress });\n\n return (\n <li key={i} className={className} />\n );\n },\n});\n\nexport default SessionProgressSteps;\n","/* eslint-disable arrow-body-style */\n// Global variable sent down for SpecificContent\n/* global SpecificContent */\n\nimport { addToBucket } from 'es6/helpers/api';\nimport { camelCaseKeys } from 'es6/helpers/case';\nimport { StudySpecificContent } from 'es6/core/loaders';\nimport Logger from 'es6/services/logger';\nimport IKnowApp from 'es6/controllers/apps/iknow-app';\nimport ItemSummaryScreen from 'es6/components/apps/screens/item-summary';\n\nexport default class SpecificContentApp extends IKnowApp {\n constructor(...args) {\n super(...args);\n\n // Store the manipulated specific content data after it was added\n // to the goal.\n this._specificContent = {};\n }\n\n /**\n * Retrieves the cue language from the global namespace.\n *\n * @returns {String}\n */\n static getCueLanguage() {\n return SpecificContent.CueLanguage;\n }\n\n /**\n * Retrieves the response language from the global namespace.\n *\n * @returns {String}\n */\n static getResponseLanguage() {\n return SpecificContent.ResponseLanguage;\n }\n\n /**\n * Retrieves the bucket setting from the global namespace.\n *\n * @returns {String}\n */\n static getTargetGoal() {\n return SpecificContent.TargetGoal;\n }\n\n /**\n * Retrieves the specific content from the global namespace.\n *\n * @returns {Object[]}\n */\n static getSpecificContent() {\n return camelCaseKeys(SpecificContent.Content);\n }\n\n /**\n * Add the specific content to the user bucket before the start of\n * the session. This is to prevent the wrong courses from being\n * focused at the end of the session.\n *\n * @override\n */\n _fetchData(...args) {\n const goalTitle = SpecificContentApp.getTargetGoal();\n\n // Parameters for creating the goal if it is not found.\n const postParams = {\n cueLanguage: SpecificContentApp.getCueLanguage(),\n responseLanguage: SpecificContentApp.getResponseLanguage(),\n };\n\n // Build parameters for sending to the create course API.\n const items = SpecificContentApp.getSpecificContent().map(gip => {\n return { goalId: gip.goalId, itemId: gip.contentId };\n });\n\n // No goal title to save to?\n if (!goalTitle) {\n Logger.error('No goal title provided');\n return;\n }\n\n // Add items to the bucket.\n addToBucket(goalTitle, postParams, items).then((goalId) => {\n // Build the parameters to be send to the specific content request.\n this._specificContent = SpecificContentApp.getSpecificContent().map(gip => {\n return { goalId, contentId: gip.contentId };\n });\n\n // No matter what, show the summary screen.\n super._fetchData(...args);\n }).catch(reason => {\n // Something failed with uploading.\n Logger.error('Failed to add items to goal.', reason);\n this._errorHandler(reason);\n });\n }\n\n /**\n * @override\n * @returns {Loader}\n */\n _getStudyLoader() {\n const params = this._getStudyParameters();\n return new StudySpecificContent(this._specificContent, params);\n }\n\n /**\n * For specific content, quitting the app should close the window if it was opened\n * in a pop up. Otherwise, it should go back to the page that performed the POST.\n *\n * @override\n */\n _quitSession() {\n if (window.opener) {\n window.close();\n } else {\n history.back();\n }\n }\n\n /**\n * For specific content, there is no such things as a course recommendation.\n *\n * @override\n * @returns {Promise}\n */\n _setupCourseRecommendation() {\n return Promise.resolve(false);\n }\n\n /**\n * Don't actually show a welcome screen. Start a new session.\n *\n * @override\n */\n _showWelcomeScreen() {\n this._startSession();\n }\n\n /**\n * Show the session item summary screen.\n *\n * @override\n * @param {Object[]} presentationResults presentation results sent to server\n * @param {Object} sessionResults session results returned from server\n */\n _showSummaryScreen(presentationResults = [], sessionResults) {\n const memories = sessionResults && sessionResults.memories || [];\n\n // Only show item details that were returned from the server.\n const itemPackages = memories.map(m => this._sessionData.itemPackages[m.contentId]);\n\n // Method that gets executed when mastering an item package.\n const onComplete = (itemPackage) => {\n const onCompleted = this._showSummaryScreen.bind(this, presentationResults, sessionResults);\n this._completeItemPrompt(itemPackage, onCompleted);\n };\n\n this._screenManager.renderComponent(ItemSummaryScreen, {\n itemPackages,\n onComplete,\n onQuit: this._quitSession,\n });\n\n // Reset the banner.\n this._renderBanner({ onQuit: this._quitSession });\n }\n\n /**\n * There are no session configs. No reason to update/change them.\n *\n * @override\n * @returns {Boolean}\n */\n _updateSessionConfig() {\n return true;\n }\n}\n","/* eslint-disable react/prefer-es6-class, react/prop-types */\nimport React from 'react';\nimport Localization from 'es6/services/localization';\nimport { NavButton, Navigation } from 'es6/components/apps/navigation';\nimport ItemSummary from 'es6/components/apps/item-summary';\n\nconst DEFAULT_PROPS = Object.assign(\n {\n onQuit: React.PropTypes.func.isRequired,\n },\n ItemSummary.propTypes\n);\n\nconst ItemSummaryScreen = React.createClass({\n displayName: 'ItemSummaryScreen',\n\n defaultProps: DEFAULT_PROPS,\n\n render() {\n const { props } = this;\n\n return (\n <div className=\"screen screen-item-summary\">\n <div className=\"screen-content\">\n <ItemSummary {...props} />\n </div>\n\n <Navigation>\n <NavButton align=\"right\" focused onClick={this.props.onQuit}>\n {Localization.t('item-summary-screen.quit')}\n </NavButton>\n </Navigation>\n </div>\n );\n },\n});\n\nexport default ItemSummaryScreen;\n"],"sourceRoot":""}