{"version":3,"sources":["node_modules/browser-pack/_prelude.js","node_modules/character-entities-html4/index.json","node_modules/character-entities-legacy/index.json","node_modules/character-entities/index.json","node_modules/character-reference-invalid/index.json","node_modules/gemoji/index.json","node_modules/hast-util-sanitize/lib/github.json","node_modules/remark-parse/lib/block-elements.json","node_modules/stringify-entities/dangerous.json","node_modules/@marionebl/react-router/lib/AsyncUtils.js","node_modules/@marionebl/react-router/lib/History.js","node_modules/@marionebl/react-router/lib/IndexLink.js","node_modules/@marionebl/react-router/lib/IndexRedirect.js","node_modules/@marionebl/react-router/lib/IndexRoute.js","node_modules/@marionebl/react-router/lib/InternalPropTypes.js","node_modules/@marionebl/react-router/lib/Lifecycle.js","node_modules/@marionebl/react-router/lib/Link.js","node_modules/@marionebl/react-router/lib/PatternUtils.js","node_modules/@marionebl/react-router/lib/PropTypes.js","node_modules/@marionebl/react-router/lib/Redirect.js","node_modules/@marionebl/react-router/lib/Route.js","node_modules/@marionebl/react-router/lib/RouteContext.js","node_modules/@marionebl/react-router/lib/RouteUtils.js","node_modules/@marionebl/react-router/lib/Router.js","node_modules/@marionebl/react-router/lib/RouterContext.js","node_modules/@marionebl/react-router/lib/RouterUtils.js","node_modules/@marionebl/react-router/lib/RoutingContext.js","node_modules/@marionebl/react-router/lib/TransitionUtils.js","node_modules/@marionebl/react-router/lib/applyRouterMiddleware.js","node_modules/@marionebl/react-router/lib/browserHistory.js","node_modules/@marionebl/react-router/lib/computeChangedRoutes.js","node_modules/@marionebl/react-router/lib/createMemoryHistory.js","node_modules/@marionebl/react-router/lib/createRouterHistory.js","node_modules/@marionebl/react-router/lib/createTransitionManager.js","node_modules/@marionebl/react-router/lib/deprecateObjectProperties.js","node_modules/@marionebl/react-router/lib/getComponents.js","node_modules/@marionebl/react-router/lib/getRouteParams.js","node_modules/@marionebl/react-router/lib/hashHistory.js","node_modules/@marionebl/react-router/lib/index.js","node_modules/@marionebl/react-router/lib/isActive.js","node_modules/@marionebl/react-router/lib/makeStateWithLocation.js","node_modules/@marionebl/react-router/lib/match.js","node_modules/@marionebl/react-router/lib/matchRoutes.js","node_modules/@marionebl/react-router/lib/routerWarning.js","node_modules/@marionebl/react-router/lib/useRouterHistory.js","node_modules/@marionebl/react-router/lib/useRoutes.js","node_modules/@marionebl/react-router/lib/withRouter.js","node_modules/array-iterate/index.js","node_modules/assert/assert.js","node_modules/babel-runtime/core-js/array/from.js","node_modules/babel-runtime/core-js/get-iterator.js","node_modules/babel-runtime/core-js/is-iterable.js","node_modules/babel-runtime/core-js/json/stringify.js","node_modules/babel-runtime/core-js/object/assign.js","node_modules/babel-runtime/core-js/object/create.js","node_modules/babel-runtime/core-js/object/define-property.js","node_modules/babel-runtime/core-js/object/entries.js","node_modules/babel-runtime/core-js/object/get-own-property-descriptor.js","node_modules/babel-runtime/core-js/object/get-prototype-of.js","node_modules/babel-runtime/core-js/object/keys.js","node_modules/babel-runtime/core-js/object/set-prototype-of.js","node_modules/babel-runtime/core-js/object/values.js","node_modules/babel-runtime/core-js/promise.js","node_modules/babel-runtime/core-js/symbol.js","node_modules/babel-runtime/core-js/symbol/iterator.js","node_modules/babel-runtime/helpers/asyncToGenerator.js","node_modules/babel-runtime/helpers/classCallCheck.js","node_modules/babel-runtime/helpers/createClass.js","node_modules/babel-runtime/helpers/defineProperty.js","node_modules/babel-runtime/helpers/extends.js","node_modules/babel-runtime/helpers/inherits.js","node_modules/babel-runtime/helpers/objectWithoutProperties.js","node_modules/babel-runtime/helpers/possibleConstructorReturn.js","node_modules/babel-runtime/helpers/slicedToArray.js","node_modules/babel-runtime/helpers/toConsumableArray.js","node_modules/babel-runtime/helpers/typeof.js","node_modules/babel-runtime/regenerator/index.js","node_modules/bail/index.js","node_modules/boolbase/index.js","node_modules/browser-split/index.js","node_modules/browserify/node_modules/process/browser.js","node_modules/camelcase/index.js","node_modules/ccount/index.js","node_modules/chain-function/index.js","node_modules/collapse-white-space/index.js","node_modules/comma-separated-tokens/index.js","node_modules/core-js/library/fn/array/from.js","node_modules/core-js/library/fn/get-iterator.js","node_modules/core-js/library/fn/is-iterable.js","node_modules/core-js/library/fn/json/stringify.js","node_modules/core-js/library/fn/object/assign.js","node_modules/core-js/library/fn/object/create.js","node_modules/core-js/library/fn/object/define-property.js","node_modules/core-js/library/fn/object/entries.js","node_modules/core-js/library/fn/object/get-own-property-descriptor.js","node_modules/core-js/library/fn/object/get-prototype-of.js","node_modules/core-js/library/fn/object/keys.js","node_modules/core-js/library/fn/object/set-prototype-of.js","node_modules/core-js/library/fn/object/values.js","node_modules/core-js/library/fn/promise.js","node_modules/core-js/library/fn/symbol/index.js","node_modules/core-js/library/fn/symbol/iterator.js","node_modules/core-js/library/modules/_a-function.js","node_modules/core-js/library/modules/_add-to-unscopables.js","node_modules/core-js/library/modules/_an-instance.js","node_modules/core-js/library/modules/_an-object.js","node_modules/core-js/library/modules/_array-includes.js","node_modules/core-js/library/modules/_classof.js","node_modules/core-js/library/modules/_cof.js","node_modules/core-js/library/modules/_core.js","node_modules/core-js/library/modules/_create-property.js","node_modules/core-js/library/modules/_ctx.js","node_modules/core-js/library/modules/_defined.js","node_modules/core-js/library/modules/_descriptors.js","node_modules/core-js/library/modules/_dom-create.js","node_modules/core-js/library/modules/_enum-bug-keys.js","node_modules/core-js/library/modules/_enum-keys.js","node_modules/core-js/library/modules/_export.js","node_modules/core-js/library/modules/_fails.js","node_modules/core-js/library/modules/_for-of.js","node_modules/core-js/library/modules/_global.js","node_modules/core-js/library/modules/_has.js","node_modules/core-js/library/modules/_hide.js","node_modules/core-js/library/modules/_html.js","node_modules/core-js/library/modules/_ie8-dom-define.js","node_modules/core-js/library/modules/_invoke.js","node_modules/core-js/library/modules/_iobject.js","node_modules/core-js/library/modules/_is-array-iter.js","node_modules/core-js/library/modules/_is-array.js","node_modules/core-js/library/modules/_is-object.js","node_modules/core-js/library/modules/_iter-call.js","node_modules/core-js/library/modules/_iter-create.js","node_modules/core-js/library/modules/_iter-define.js","node_modules/core-js/library/modules/_iter-detect.js","node_modules/core-js/library/modules/_iter-step.js","node_modules/core-js/library/modules/_iterators.js","node_modules/core-js/library/modules/_library.js","node_modules/core-js/library/modules/_meta.js","node_modules/core-js/library/modules/_microtask.js","node_modules/core-js/library/modules/_new-promise-capability.js","node_modules/core-js/library/modules/_object-assign.js","node_modules/core-js/library/modules/_object-create.js","node_modules/core-js/library/modules/_object-dp.js","node_modules/core-js/library/modules/_object-dps.js","node_modules/core-js/library/modules/_object-gopd.js","node_modules/core-js/library/modules/_object-gopn-ext.js","node_modules/core-js/library/modules/_object-gopn.js","node_modules/core-js/library/modules/_object-gops.js","node_modules/core-js/library/modules/_object-gpo.js","node_modules/core-js/library/modules/_object-keys-internal.js","node_modules/core-js/library/modules/_object-keys.js","node_modules/core-js/library/modules/_object-pie.js","node_modules/core-js/library/modules/_object-sap.js","node_modules/core-js/library/modules/_object-to-array.js","node_modules/core-js/library/modules/_perform.js","node_modules/core-js/library/modules/_promise-resolve.js","node_modules/core-js/library/modules/_property-desc.js","node_modules/core-js/library/modules/_redefine-all.js","node_modules/core-js/library/modules/_redefine.js","node_modules/core-js/library/modules/_set-proto.js","node_modules/core-js/library/modules/_set-species.js","node_modules/core-js/library/modules/_set-to-string-tag.js","node_modules/core-js/library/modules/_shared-key.js","node_modules/core-js/library/modules/_shared.js","node_modules/core-js/library/modules/_species-constructor.js","node_modules/core-js/library/modules/_string-at.js","node_modules/core-js/library/modules/_task.js","node_modules/core-js/library/modules/_to-absolute-index.js","node_modules/core-js/library/modules/_to-integer.js","node_modules/core-js/library/modules/_to-iobject.js","node_modules/core-js/library/modules/_to-length.js","node_modules/core-js/library/modules/_to-object.js","node_modules/core-js/library/modules/_to-primitive.js","node_modules/core-js/library/modules/_uid.js","node_modules/core-js/library/modules/_wks-define.js","node_modules/core-js/library/modules/_wks-ext.js","node_modules/core-js/library/modules/_wks.js","node_modules/core-js/library/modules/core.get-iterator-method.js","node_modules/core-js/library/modules/core.get-iterator.js","node_modules/core-js/library/modules/core.is-iterable.js","node_modules/core-js/library/modules/es6.array.from.js","node_modules/core-js/library/modules/es6.array.iterator.js","node_modules/core-js/library/modules/es6.object.assign.js","node_modules/core-js/library/modules/es6.object.create.js","node_modules/core-js/library/modules/es6.object.define-property.js","node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js","node_modules/core-js/library/modules/es6.object.get-prototype-of.js","node_modules/core-js/library/modules/es6.object.keys.js","node_modules/core-js/library/modules/es6.object.set-prototype-of.js","node_modules/core-js/library/modules/es6.promise.js","node_modules/core-js/library/modules/es6.string.iterator.js","node_modules/core-js/library/modules/es6.symbol.js","node_modules/core-js/library/modules/es7.object.entries.js","node_modules/core-js/library/modules/es7.object.values.js","node_modules/core-js/library/modules/es7.promise.finally.js","node_modules/core-js/library/modules/es7.promise.try.js","node_modules/core-js/library/modules/es7.symbol.async-iterator.js","node_modules/core-js/library/modules/es7.symbol.observable.js","node_modules/core-js/library/modules/web.dom.iterable.js","node_modules/create-react-class/factory.js","node_modules/create-react-class/index.js","node_modules/css-selector-parser/index.js","node_modules/css-selector-parser/lib/css-selector-parser.js","node_modules/deep-equal/index.js","node_modules/deep-equal/lib/is_arguments.js","node_modules/deep-equal/lib/keys.js","node_modules/define-properties/index.js","node_modules/detab/index.js","node_modules/dom-helpers/class/addClass.js","node_modules/dom-helpers/class/hasClass.js","node_modules/dom-helpers/class/removeClass.js","node_modules/dom-helpers/transition/properties.js","node_modules/dom-helpers/util/inDOM.js","node_modules/dom-helpers/util/requestAnimationFrame.js","node_modules/dom4/build/dom4.max.js","node_modules/es6-promise/dist/es6-promise.js","node_modules/ev-store/index.js","node_modules/events/events.js","node_modules/exenv/index.js","node_modules/extend/index.js","node_modules/fbjs/lib/emptyFunction.js","node_modules/fbjs/lib/emptyObject.js","node_modules/fbjs/lib/invariant.js","node_modules/foreach/index.js","node_modules/function-bind/implementation.js","node_modules/function-bind/index.js","node_modules/gemoji/index.js","node_modules/has/src/index.js","node_modules/hast-to-hyperscript/index.js","node_modules/hast-util-from-parse5/index.js","node_modules/hast-util-parse-selector/index.js","node_modules/hast-util-sanitize/index.js","node_modules/hast-util-sanitize/lib/index.js","node_modules/hastscript/index.js","node_modules/highlight.js/lib/highlight.js","node_modules/highlight.js/lib/languages/bash.js","node_modules/highlight.js/lib/languages/css.js","node_modules/highlight.js/lib/languages/javascript.js","node_modules/highlight.js/lib/languages/json.js","node_modules/highlight.js/lib/languages/less.js","node_modules/highlight.js/lib/languages/markdown.js","node_modules/highlight.js/lib/languages/scss.js","node_modules/highlight.js/lib/languages/stylus.js","node_modules/highlight.js/lib/languages/typescript.js","node_modules/highlight.js/lib/languages/xml.js","node_modules/history/lib/Actions.js","node_modules/history/lib/AsyncUtils.js","node_modules/history/lib/DOMStateStorage.js","node_modules/history/lib/DOMUtils.js","node_modules/history/lib/ExecutionEnvironment.js","node_modules/history/lib/PathUtils.js","node_modules/history/lib/createBrowserHistory.js","node_modules/history/lib/createDOMHistory.js","node_modules/history/lib/createHashHistory.js","node_modules/history/lib/createHistory.js","node_modules/history/lib/createLocation.js","node_modules/history/lib/createMemoryHistory.js","node_modules/history/lib/deprecate.js","node_modules/history/lib/runTransitionHook.js","node_modules/history/lib/useBasename.js","node_modules/history/lib/useQueries.js","node_modules/history/node_modules/query-string/index.js","node_modules/history/node_modules/warning/browser.js","node_modules/hoist-non-react-statics/index.js","node_modules/individual/index.js","node_modules/individual/one-version.js","node_modules/inherits/inherits_browser.js","node_modules/invariant/browser.js","node_modules/is-alphabetical/index.js","node_modules/is-alphanumeric/index.js","node_modules/is-alphanumerical/index.js","node_modules/is-buffer/index.js","node_modules/is-decimal/index.js","node_modules/is-hexadecimal/index.js","node_modules/is-nan/implementation.js","node_modules/is-nan/index.js","node_modules/is-nan/polyfill.js","node_modules/is-nan/shim.js","node_modules/is-whitespace-character/index.js","node_modules/is-word-character/index.js","node_modules/kebab-case/index.js","node_modules/longest-streak/index.js","node_modules/lowlight/lib/core.js","node_modules/markdown-escapes/index.js","node_modules/markdown-table/index.js","node_modules/mdast-util-compact/index.js","node_modules/mdast-util-definitions/index.js","node_modules/mdast-util-to-hast/index.js","node_modules/mdast-util-to-hast/lib/all.js","node_modules/mdast-util-to-hast/lib/failsafe.js","node_modules/mdast-util-to-hast/lib/footer.js","node_modules/mdast-util-to-hast/lib/handlers/blockquote.js","node_modules/mdast-util-to-hast/lib/handlers/break.js","node_modules/mdast-util-to-hast/lib/handlers/code.js","node_modules/mdast-util-to-hast/lib/handlers/delete.js","node_modules/mdast-util-to-hast/lib/handlers/emphasis.js","node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js","node_modules/mdast-util-to-hast/lib/handlers/footnote.js","node_modules/mdast-util-to-hast/lib/handlers/heading.js","node_modules/mdast-util-to-hast/lib/handlers/html.js","node_modules/mdast-util-to-hast/lib/handlers/image-reference.js","node_modules/mdast-util-to-hast/lib/handlers/image.js","node_modules/mdast-util-to-hast/lib/handlers/index.js","node_modules/mdast-util-to-hast/lib/handlers/inline-code.js","node_modules/mdast-util-to-hast/lib/handlers/link-reference.js","node_modules/mdast-util-to-hast/lib/handlers/link.js","node_modules/mdast-util-to-hast/lib/handlers/list-item.js","node_modules/mdast-util-to-hast/lib/handlers/list.js","node_modules/mdast-util-to-hast/lib/handlers/paragraph.js","node_modules/mdast-util-to-hast/lib/handlers/root.js","node_modules/mdast-util-to-hast/lib/handlers/strong.js","node_modules/mdast-util-to-hast/lib/handlers/table.js","node_modules/mdast-util-to-hast/lib/handlers/text.js","node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js","node_modules/mdast-util-to-hast/lib/index.js","node_modules/mdast-util-to-hast/lib/one.js","node_modules/mdast-util-to-hast/lib/wrap.js","node_modules/mdurl/encode.js","node_modules/ms/index.js","node_modules/nth-check/compile.js","node_modules/nth-check/index.js","node_modules/nth-check/parse.js","node_modules/object-assign/index.js","node_modules/object-keys/index.js","node_modules/object-keys/isArguments.js","node_modules/once/once.js","node_modules/parse-entities/index.js","node_modules/parse5/lib/common/doctype.js","node_modules/parse5/lib/common/foreign_content.js","node_modules/parse5/lib/common/html.js","node_modules/parse5/lib/common/merge_options.js","node_modules/parse5/lib/common/unicode.js","node_modules/parse5/lib/location_info/parser_mixin.js","node_modules/parse5/lib/location_info/tokenizer_mixin.js","node_modules/parse5/lib/parser/formatting_element_list.js","node_modules/parse5/lib/parser/index.js","node_modules/parse5/lib/parser/open_element_stack.js","node_modules/parse5/lib/tokenizer/index.js","node_modules/parse5/lib/tokenizer/named_entity_trie.js","node_modules/parse5/lib/tokenizer/preprocessor.js","node_modules/parse5/lib/tree_adapters/default.js","node_modules/path-browserify/index.js","node_modules/platform/platform.js","node_modules/pretty-data/pretty-data.js","node_modules/prop-types/factoryWithThrowingShims.js","node_modules/prop-types/index.js","node_modules/prop-types/lib/ReactPropTypesSecret.js","node_modules/property-information/index.js","node_modules/query-string/index.js","node_modules/querystring-es3/decode.js","node_modules/querystring-es3/encode.js","node_modules/querystring-es3/index.js","node_modules/react-helmet/lib/Helmet.js","node_modules/react-helmet/lib/HelmetConstants.js","node_modules/react-helmet/lib/HelmetUtils.js","node_modules/react-side-effect/lib/index.js","node_modules/react-transition-group/CSSTransitionGroup.js","node_modules/react-transition-group/CSSTransitionGroupChild.js","node_modules/react-transition-group/TransitionGroup.js","node_modules/react-transition-group/utils/ChildMapping.js","node_modules/react-transition-group/utils/PropTypes.js","node_modules/rehype-parse/index.js","node_modules/rehype-parse/lib/parser.js","node_modules/remark-gemoji-to-emoji/index.js","node_modules/remark-parse/index.js","node_modules/remark-parse/lib/decode.js","node_modules/remark-parse/lib/defaults.js","node_modules/remark-parse/lib/locate/break.js","node_modules/remark-parse/lib/locate/code-inline.js","node_modules/remark-parse/lib/locate/delete.js","node_modules/remark-parse/lib/locate/emphasis.js","node_modules/remark-parse/lib/locate/escape.js","node_modules/remark-parse/lib/locate/link.js","node_modules/remark-parse/lib/locate/strong.js","node_modules/remark-parse/lib/locate/tag.js","node_modules/remark-parse/lib/locate/url.js","node_modules/remark-parse/lib/parse.js","node_modules/remark-parse/lib/parser.js","node_modules/remark-parse/lib/set-options.js","node_modules/remark-parse/lib/tokenize/auto-link.js","node_modules/remark-parse/lib/tokenize/blockquote.js","node_modules/remark-parse/lib/tokenize/break.js","node_modules/remark-parse/lib/tokenize/code-fenced.js","node_modules/remark-parse/lib/tokenize/code-indented.js","node_modules/remark-parse/lib/tokenize/code-inline.js","node_modules/remark-parse/lib/tokenize/definition.js","node_modules/remark-parse/lib/tokenize/delete.js","node_modules/remark-parse/lib/tokenize/emphasis.js","node_modules/remark-parse/lib/tokenize/escape.js","node_modules/remark-parse/lib/tokenize/footnote-definition.js","node_modules/remark-parse/lib/tokenize/heading-atx.js","node_modules/remark-parse/lib/tokenize/heading-setext.js","node_modules/remark-parse/lib/tokenize/html-block.js","node_modules/remark-parse/lib/tokenize/html-inline.js","node_modules/remark-parse/lib/tokenize/link.js","node_modules/remark-parse/lib/tokenize/list.js","node_modules/remark-parse/lib/tokenize/newline.js","node_modules/remark-parse/lib/tokenize/paragraph.js","node_modules/remark-parse/lib/tokenize/reference.js","node_modules/remark-parse/lib/tokenize/strong.js","node_modules/remark-parse/lib/tokenize/table.js","node_modules/remark-parse/lib/tokenize/text.js","node_modules/remark-parse/lib/tokenize/thematic-break.js","node_modules/remark-parse/lib/tokenize/url.js","node_modules/remark-parse/lib/tokenize/yaml.js","node_modules/remark-parse/lib/tokenizer.js","node_modules/remark-parse/lib/unescape.js","node_modules/remark-parse/lib/util/get-indentation.js","node_modules/remark-parse/lib/util/html.js","node_modules/remark-parse/lib/util/interrupt.js","node_modules/remark-parse/lib/util/normalize.js","node_modules/remark-parse/lib/util/remove-indentation.js","node_modules/remark-stringify/index.js","node_modules/remark-stringify/lib/compiler.js","node_modules/remark-stringify/lib/defaults.js","node_modules/remark-stringify/lib/escape.js","node_modules/remark-stringify/lib/macro/all.js","node_modules/remark-stringify/lib/macro/block.js","node_modules/remark-stringify/lib/macro/compile.js","node_modules/remark-stringify/lib/macro/one.js","node_modules/remark-stringify/lib/macro/ordered-items.js","node_modules/remark-stringify/lib/macro/unordered-items.js","node_modules/remark-stringify/lib/set-options.js","node_modules/remark-stringify/lib/util/copy-identifier-encoding.js","node_modules/remark-stringify/lib/util/enclose-title.js","node_modules/remark-stringify/lib/util/enclose-uri.js","node_modules/remark-stringify/lib/util/enter-link-reference.js","node_modules/remark-stringify/lib/util/entity-prefix-length.js","node_modules/remark-stringify/lib/util/label.js","node_modules/remark-stringify/lib/util/pad.js","node_modules/remark-stringify/lib/util/returner.js","node_modules/remark-stringify/lib/visitors/blockquote.js","node_modules/remark-stringify/lib/visitors/break.js","node_modules/remark-stringify/lib/visitors/code.js","node_modules/remark-stringify/lib/visitors/definition.js","node_modules/remark-stringify/lib/visitors/delete.js","node_modules/remark-stringify/lib/visitors/emphasis.js","node_modules/remark-stringify/lib/visitors/footnote-definition.js","node_modules/remark-stringify/lib/visitors/footnote-reference.js","node_modules/remark-stringify/lib/visitors/footnote.js","node_modules/remark-stringify/lib/visitors/heading.js","node_modules/remark-stringify/lib/visitors/html.js","node_modules/remark-stringify/lib/visitors/image-reference.js","node_modules/remark-stringify/lib/visitors/image.js","node_modules/remark-stringify/lib/visitors/inline-code.js","node_modules/remark-stringify/lib/visitors/link-reference.js","node_modules/remark-stringify/lib/visitors/link.js","node_modules/remark-stringify/lib/visitors/list-item.js","node_modules/remark-stringify/lib/visitors/list.js","node_modules/remark-stringify/lib/visitors/paragraph.js","node_modules/remark-stringify/lib/visitors/root.js","node_modules/remark-stringify/lib/visitors/strong.js","node_modules/remark-stringify/lib/visitors/table-cell.js","node_modules/remark-stringify/lib/visitors/table.js","node_modules/remark-stringify/lib/visitors/text.js","node_modules/remark-stringify/lib/visitors/thematic-break.js","node_modules/remark-stringify/lib/visitors/yaml.js","node_modules/remark-vdom/index.js","node_modules/remark/index.js","node_modules/repeat-string/index.js","node_modules/replace-ext/index.js","node_modules/scrollparent/scrollparent.js","node_modules/shallowequal/index.js","node_modules/shortid/lib/alphabet.js","node_modules/shortid/lib/build.js","node_modules/shortid/lib/decode.js","node_modules/shortid/lib/encode.js","node_modules/shortid/lib/index.js","node_modules/shortid/lib/is-valid.js","node_modules/shortid/lib/random/random-byte-browser.js","node_modules/shortid/lib/random/random-from-seed.js","node_modules/shortid/lib/util/cluster-worker-id-browser.js","node_modules/space-separated-tokens/index.js","node_modules/state-toggle/index.js","node_modules/strict-uri-encode/index.js","node_modules/stringify-entities/index.js","node_modules/topologically-combine-reducers/lib/index.js","node_modules/toposort-class/build/toposort.js","node_modules/toposort-class/index.js","node_modules/trim-lines/index.js","node_modules/trim-trailing-lines/index.js","node_modules/trim/index.js","node_modules/trough/index.js","node_modules/unescape-html/index.js","node_modules/unherit/index.js","node_modules/unified/index.js","node_modules/unist-builder/index.js","node_modules/unist-util-generated/index.js","node_modules/unist-util-is/index.js","node_modules/unist-util-modify-children/index.js","node_modules/unist-util-position/index.js","node_modules/unist-util-remove-position/index.js","node_modules/unist-util-select/index.js","node_modules/unist-util-select/lib/ast-walkers.js","node_modules/unist-util-select/lib/collector.js","node_modules/unist-util-select/lib/match-node.js","node_modules/unist-util-select/lib/select.js","node_modules/unist-util-select/lib/selector.js","node_modules/unist-util-select/lib/type-index.js","node_modules/unist-util-select/node_modules/debug/src/browser.js","node_modules/unist-util-select/node_modules/debug/src/debug.js","node_modules/unist-util-stringify-position/index.js","node_modules/unist-util-visit/index.js","node_modules/util/support/isBufferBrowser.js","node_modules/util/util.js","node_modules/vfile-location/index.js","node_modules/vfile/index.js","node_modules/virtual-dom/h.js","node_modules/virtual-dom/virtual-hyperscript/hooks/ev-hook.js","node_modules/virtual-dom/virtual-hyperscript/hooks/soft-set-hook.js","node_modules/virtual-dom/virtual-hyperscript/index.js","node_modules/virtual-dom/virtual-hyperscript/parse-tag.js","node_modules/virtual-dom/vnode/is-thunk.js","node_modules/virtual-dom/vnode/is-vhook.js","node_modules/virtual-dom/vnode/is-vnode.js","node_modules/virtual-dom/vnode/is-vtext.js","node_modules/virtual-dom/vnode/is-widget.js","node_modules/virtual-dom/vnode/version.js","node_modules/virtual-dom/vnode/vnode.js","node_modules/virtual-dom/vnode/vtext.js","node_modules/web-animations-js/web-animations.min.js","node_modules/wrappy/wrappy.js","node_modules/x-is-array/index.js","node_modules/x-is-string/index.js","node_modules/xtend/immutable.js","source/application/actions/apply-state.js","source/application/actions/change-concern.js","source/application/actions/change-environment.js","source/application/actions/change-type.js","source/application/actions/close-all-the-things.js","source/application/actions/demo-content-resize.js","source/application/actions/dismiss-all-messages.js","source/application/actions/dismiss-message.js","source/application/actions/handle-dependent-actions.js","source/application/actions/index.js","source/application/actions/load-pattern-data.js","source/application/actions/load-pattern-demo.js","source/application/actions/load-pattern-file.js","source/application/actions/load-pattern.js","source/application/actions/mark-block.js","source/application/actions/open-documentation.js","source/application/actions/open-fullscreen.js","source/application/actions/patch-location.js","source/application/actions/pattern-demo-error.js","source/application/actions/promise-thunk-action.js","source/application/actions/resize-demo.js","source/application/actions/scroll-demo.js","source/application/actions/scroll-to.js","source/application/actions/search.js","source/application/actions/theme-loaded.js","source/application/actions/toggle-console.js","source/application/actions/toggle-expand-menu.js","source/application/actions/toggle-hide.js","source/application/actions/toggle-issue.js","source/application/actions/toggle-keyboard-shortcuts.js","source/application/actions/toggle-opacity.js","source/application/actions/toggle-rulers.js","source/application/actions/toggle-search-focus.js","source/application/actions/toggle-theme.js","source/application/actions/window-resize.js","source/application/components/application/index.js","source/application/components/bread-crumbs/index.js","source/application/components/common/code/highlight.js","source/application/components/common/code/index.js","source/application/components/common/code/to-elements.js","source/application/components/common/editor.js","source/application/components/common/frame/bind.js","source/application/components/common/frame/get-error.js","source/application/components/common/frame/get-field.js","source/application/components/common/frame/handle.js","source/application/components/common/frame/handles.js","source/application/components/common/frame/index.js","source/application/components/common/frame/relay.js","source/application/components/common/headline.js","source/application/components/common/icon.js","source/application/components/common/icons.js","source/application/components/common/markdown/index.js","source/application/components/common/markdown/markdown-code.js","source/application/components/common/markdown/markdown-headline.js","source/application/components/common/markdown/markdown-link.js","source/application/components/common/markdown/render.js","source/application/components/common/markdown/wrap.js","source/application/components/common/message.js","source/application/components/common/search-field.js","source/application/components/common/select.js","source/application/components/content/console.js","source/application/components/content/home.js","source/application/components/content/index.js","source/application/components/content/problem.js","source/application/components/content/shortcuts.js","source/application/components/header/index.js","source/application/components/lightbox/index.js","source/application/components/navigation/index.js","source/application/components/navigation/navigation-item.js","source/application/components/navigation/navigation-toggle.js","source/application/components/navigation/navigation-toolbar.js","source/application/components/navigation/navigation-tree.js","source/application/components/pattern/block-column.js","source/application/components/pattern/block.js","source/application/components/pattern/connection.js","source/application/components/pattern/index.js","source/application/components/pattern/pattern-code.js","source/application/components/pattern/pattern-control.js","source/application/components/pattern/pattern-demo.js","source/application/components/pattern/pattern-dependencies.js","source/application/components/pattern/pattern-documentation.js","source/application/components/pattern/pattern-folder.js","source/application/components/pattern/pattern-header.js","source/application/components/pattern/pattern-ruler.js","source/application/components/pattern/pattern-section.js","source/application/components/pattern/pattern-sources.js","source/application/components/pattern/pattern-tool-code-toggle.js","source/application/components/pattern/pattern-tool-environment-selection.js","source/application/components/pattern/pattern-tool-relations.js","source/application/components/pattern/pattern-toolbar.js","source/application/components/pattern/pattern-tools.js","source/application/containers/application.js","source/application/containers/console.js","source/application/containers/content.js","source/application/containers/home.js","source/application/containers/markdown.js","source/application/containers/not-found.js","source/application/containers/pattern.js","source/application/containers/problem.js","source/application/containers/shortcuts.js","source/application/react-routes/client.js","source/application/react-routes/routes.js","source/application/react-routes/store.js","source/application/reducers/active-block.js","source/application/reducers/base.js","source/application/reducers/demo-content-dimensions.js","source/application/reducers/demo-dimensions.js","source/application/reducers/depth.js","source/application/reducers/environment.js","source/application/reducers/expanded.js","source/application/reducers/hide.js","source/application/reducers/id.js","source/application/reducers/index.js","source/application/reducers/issue.js","source/application/reducers/lightbox.js","source/application/reducers/menu-enabled.js","source/application/reducers/messages.js","source/application/reducers/navigation.js","source/application/reducers/opacity.js","source/application/reducers/pattern.js","source/application/reducers/rulers.js","source/application/reducers/scroll-demo-x.js","source/application/reducers/scroll-demo-y.js","source/application/reducers/search-matches/helpers.js","source/application/reducers/search-matches/index.js","source/application/reducers/search.js","source/application/reducers/source-expanded.js","source/application/reducers/source-id.js","source/application/reducers/source-type.js","source/application/reducers/styles.js","source/application/reducers/theme.js","source/application/reducers/window.js","source/application/utils/augment-hierarchy.js","source/application/utils/compose-reducers.js","source/application/utils/fetch.js","source/application/utils/get-id-by-pathname.js","source/application/utils/navigate.js","source/application/utils/unwrap.js","source/application/utils/url-query.js","source/assets/script/index.js","source/assets/script/polyfills.js"],"names":["loopAsync","turns","work","callback","done","isDone","sync","doneArgs","concat","Array","prototype","slice","call","arguments","apply","this","next","hasNext","currentTurn","mapAsync","array","index","error","value","values","doneCount","length","forEach","item","exports","__esModule","_interopRequireDefault","obj","default","_routerWarning","require","_routerWarning2","_InternalPropTypes","History","contextTypes","history","componentWillMount","context","module","_extends","Object","assign","target","i","source","key","hasOwnProperty","_createReactClass","_createReactClass2","_react","_react2","_Link","_Link2","IndexLink","displayName","render","createElement","props","onlyActiveOnIndex","_propTypes","_propTypes2","_invariant","_invariant2","_Redirect","_Redirect2","string","object","IndexRedirect","statics","createRouteFromReactElement","element","parentRoute","indexRoute","propTypes","to","isRequired","query","state","onEnter","falsy","children","_RouteUtils","func","IndexRoute","path","component","components","getComponent","getComponents","propName","componentName","Error","routes","route","undefined","arrayOf","oneOfType","shape","listen","push","replace","go","goBack","goForward","Lifecycle","componentDidMount","routerWillLeave","_unlistenBeforeLeavingRoute","listenBeforeLeavingRoute","componentWillUnmount","_objectWithoutProperties","keys","indexOf","isLeftClickEvent","event","button","isModifiedEvent","metaKey","altKey","ctrlKey","shiftKey","isEmptyObject","p","createLocationDescriptor","_ref","hash","pathname","_PropTypes","bool","Link","router","routerShape","href","activeStyle","activeClassName","className","onClick","style","getDefaultProps","handleClick","defaultPrevented","preventDefault","_props","location","_props2","createHref","isActive","escapeRegExp","_compilePattern","pattern","regexpSource","paramNames","tokens","match","lastIndex","matcher","exec","compilePattern","CompiledPatternsCache","matchPattern","charAt","_compilePattern2","RegExp","matchedPath","remainingPathname","substr","paramValues","map","v","decodeURIComponent","getParamNames","getParams","params","paramName","formatPattern","_compilePattern3","parenCount","splatIndex","token","paramValue","len","isArray","splat","encodeURI","substring","encodeURIComponent","create","_interopRequireWildcard","newObj","locationShape","_deprecateObjectProperties","_deprecateObjectProperties2","InternalPropTypes","setRouteLeaveHook","search","action","deprecatePropType","deprecateInternalPropType","deprecateRenamedPropType","defaultExport","_PatternUtils","Redirect","from","nextState","routeIndex","parentPattern","getRoutePattern","Route","RouteContext","childContextTypes","getChildContext","isValidChild","isValidElement","isReactChildren","every","createRoute","defaultProps","type","childRoutes","createRoutesFromReactChildren","Children","createRoutes","isDeprecatedHistory","__v2_compatible__","isUnsupportedHistory","getCurrentLocation","_createHashHistory","_createHashHistory2","_useQueries","_useQueries2","_createTransitionManager","_createTransitionManager2","_RouterContext","_RouterContext2","_RouterUtils","Router","onError","onUpdate","parseQueryString","stringifyQuery","matchContext","getInitialState","handleError","_this","_createRouterObjects","createRouterObjects","transitionManager","_unlisten","setState","wrapDeprecatedHistory","createRouterObject","createRoutingHistory","_props3","createHistory","componentWillReceiveProps","nextProps","_state","_props4","propType","_typeof","Symbol","iterator","constructor","_getRouteParams","_getRouteParams2","any","RouterContext","reduceRight","routeParams","prop","elements","RoutingContext","createTransitionHook","hook","asyncArity","_len","args","_key","getEnterHooks","reduce","hooks","getChangeHooks","onChange","runTransitionHooks","iter","deprecatedPathname","deprecatedQuery","redirectInfo","_AsyncUtils","runEnterHooks","runChangeHooks","runLeaveHooks","prevState","onLeave","middlewares","withContext","m","renderRouterContext","filter","f","withComponent","renderRouteComponent","makeCreateElement","baseCreateElement","Component","previous","renderProps","_createBrowserHistory","_createBrowserHistory2","_createRouterHistory","_createRouterHistory2","routeParamsChanged","some","computeChangedRoutes","prevRoutes","nextRoutes","leaveRoutes","changeRoutes","enterRoutes","parentIsLeaving","isLeaving","reverse","isNew","paramsChanged","createMemoryHistory","options","memoryHistory","_createMemoryHistory2","_useBasename2","_useBasename","_createMemoryHistory","canUseDOM","_useRouterHistory2","_useRouterHistory","window","document","hasAnyProperties","createTransitionManager","indexOnlyOrDeprecatedQuery","deprecatedIndexOnly","indexOnly","createLocation","_isActive3","createLocationFromRedirectInfo","_Actions","REPLACE","partialNextState","finishMatch","_matchRoutes2","finishEnterHooks","handleErrorOrRedirect","_getComponents2","_computeChangedRoutes","_computeChangedRoutes3","_TransitionUtils","removeListenBeforeHooksForRoute","getRouteID","__id__","RouteGuid","getRouteHooksForRoutes","RouteHooks","transitionHook","result","beforeUnloadHook","message","routeID","unlistenBefore","unlistenBeforeUnload","thereWereNoRouteHooks","listenBefore","listenBeforeUnload","newHooks","listener","redirectLocation","transitionTo","_computeChangedRoutes2","_isActive2","_getComponents","_matchRoutes","canUseMembrane","deprecateObjectProperties","getComponentsForRoute","nextStateWithLocation","_makeStateWithLocation2","_makeStateWithLocation","getRouteParams","hashHistory","browserHistory","applyRouterMiddleware","useRouterHistory","PropTypes","useRoutes","withRouter","defineProperty","enumerable","get","_PropTypes2","_Router2","_Router3","_Link3","_IndexLink2","_IndexLink3","_withRouter2","_withRouter3","_IndexRedirect2","_IndexRedirect3","_IndexRoute2","_IndexRoute3","_Redirect3","_Route2","_Route3","_History2","_History3","_Lifecycle2","_Lifecycle3","_RouteContext2","_RouteContext3","_useRoutes2","_useRoutes3","_RouterContext3","_RoutingContext2","_RoutingContext3","_PropTypes3","_match2","_match3","_useRouterHistory3","_applyRouterMiddleware2","_applyRouterMiddleware3","_browserHistory2","_browserHistory3","_hashHistory2","_hashHistory3","_createMemoryHistory3","deepEqual","a","b","String","pathIsActive","currentPathname","routeIsActive","matched","queryIsActive","activeQuery","currentLocation","makeStateWithLocation","unlisten","historyLocation","getChildRoutes","createParams","partialNextStateWithLocation","getIndexRoute","pathless","childRoute","err","assignParams","matchRouteDeep","_match$routes","onChildRoutes","matchRoutes","unshift","routerWarning","falseToWarn","warned","_warning2","_resetWarned","_warning","getDisplayName","WrappedComponent","name","WithRouter","_hoistNonReactStatics2","_hoistNonReactStatics","iterate","own","compare","x","y","Math","min","isBuffer","global","Buffer","_isBuffer","pToString","toString","isView","arrbuf","ArrayBuffer","DataView","buffer","getName","util","isFunction","functionsHaveNames","str","regex","truncate","s","n","inspect","something","rawname","getMessage","self","actual","operator","expected","fail","stackStartFunction","assert","AssertionError","ok","_deepEqual","strict","memos","isDate","getTime","isRegExp","multiline","ignoreCase","Float32Array","Float64Array","Uint8Array","actualIndex","objEquiv","isArguments","actualVisitedObjects","isPrimitive","getPrototypeOf","aIsArgs","bIsArgs","pSlice","ka","objectKeys","kb","sort","notDeepStrictEqual","expectedException","test","e","isPrototypeOf","_tryBlock","block","_throws","shouldThrow","TypeError","userProvidedMessage","isUnwantedException","isError","isUnexpectedException","hasOwn","generatedMessage","captureStackTrace","stack","out","fn_name","idx","next_line","inherits","equal","notEqual","deepStrictEqual","notDeepEqual","strictEqual","notStrictEqual","throws","doesNotThrow","ifError","_promise","_promise2","fn","gen","resolve","reject","step","arg","info","then","instance","Constructor","_defineProperty","_defineProperty2","defineProperties","descriptor","configurable","writable","protoProps","staticProps","_assign","_assign2","_setPrototypeOf","_setPrototypeOf2","_create","_create2","_typeof2","_typeof3","subClass","superClass","__proto__","ReferenceError","_isIterable2","_isIterable3","_getIterator2","_getIterator3","sliceIterator","arr","_arr","_n","_d","_e","_s","_i","_from","_from2","arr2","_iterator","_iterator2","_symbol","_symbol2","bail","trueFunc","falseFunc","undef","nativeSplit","split","compliantExecNpcg","separator","limit","separator2","lastLength","output","flags","extended","sticky","lastLastIndex","defaultSetTimout","defaultClearTimeout","runTimeout","fun","cachedSetTimeout","setTimeout","runClearTimeout","marker","cachedClearTimeout","clearTimeout","cleanUpNextTick","draining","currentQueue","queue","queueIndex","drainQueue","timeout","run","Item","noop","process","nextTick","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","preserveCamelCase","isLastCharLower","c","toUpperCase","toLowerCase","trim","join","p1","ccount","character","count","current","collapse","parse","val","input","EMPTY","C_COMMA","end","stringify","settings","left","padLeft","padRight","C_SPACE","core","$JSON","JSON","it","$Object","P","D","desc","entries","getOwnPropertyDescriptor","setPrototypeOf","Promise","forbiddenField","isObject","toIObject","toLength","toAbsoluteIndex","IS_INCLUDES","$this","el","fromIndex","O","cof","TAG","ARG","tryGet","T","B","callee","__e","$defineProperty","createDesc","aFunction","that","is","getKeys","gOPS","pIE","getSymbols","symbols","isEnum","ctx","hide","PROTOTYPE","$export","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","S","IS_PROTO","IS_BIND","IS_WRAP","W","expProto","C","Function","virtual","R","U","isArrayIter","anObject","getIterFn","BREAK","RETURN","iterable","ITERATOR","iterFn","__g","dP","documentElement","un","propertyIsEnumerable","Iterators","ArrayProto","ret","setToStringTag","IteratorPrototype","NAME","LIBRARY","redefine","has","$iterCreate","BUGGY","FF_ITERATOR","KEYS","VALUES","returnThis","Base","DEFAULT","IS_SET","FORCED","methods","getMethod","kind","proto","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","SAFE_CLOSING","riter","skipClosing","safe","META","setDesc","id","isExtensible","FREEZE","preventExtensions","setMeta","w","fastKey","getWeak","onFreeze","meta","NEED","KEY","macrotask","set","Observer","MutationObserver","WebKitMutationObserver","isNode","head","last","notify","flush","parent","domain","exit","enter","toggle","node","createTextNode","observe","characterData","data","promise","task","PromiseCapability","$$resolve","$$reject","toObject","IObject","$assign","A","K","k","aLen","j","dPs","enumBugKeys","IE_PROTO","Empty","createDict","iframeDocument","iframe","display","appendChild","src","contentWindow","open","write","lt","close","Properties","IE8_DOM_DEFINE","toPrimitive","Attributes","gOPD","gOPN","windowNames","getOwnPropertyNames","getWindowNames","$keys","hiddenKeys","getOwnPropertySymbols","ObjectProto","arrayIndexOf","names","fails","exp","isEntries","newPromiseCapability","promiseCapability","bitmap","check","buggy","DESCRIPTORS","SPECIES","def","tag","stat","shared","uid","SHARED","store","toInteger","defined","TO_STRING","pos","l","charCodeAt","invoke","html","cel","setTask","setImmediate","clearTask","clearImmediate","MessageChannel","Dispatch","counter","ONREADYSTATECHANGE","defer","channel","port","now","port2","port1","onmessage","postMessage","addEventListener","importScripts","removeChild","clear","max","ceil","floor","isNaN","valueOf","px","random","wksExt","$Symbol","USE_SYMBOL","$exports","classof","getIteratorMethod","getIterator","isIterable","createProperty","arrayLike","mapfn","mapping","addToUnscopables","iterated","_t","_k","Arguments","$getOwnPropertyDescriptor","$getPrototypeOf","anInstance","forOf","speciesConstructor","microtask","newPromiseCapabilityModule","perform","promiseResolve","PROMISE","$Promise","empty","Internal","newGenericPromiseCapability","OwnPromiseCapability","Wrapper","USE_NATIVE","FakePromise","PromiseRejectionEvent","isThenable","isReject","chain","_c","_v","reaction","handler","_h","onHandleUnhandled","onUnhandled","console","unhandled","isUnhandled","onunhandledrejection","reason","_a","onrejectionhandled","$reject","_w","$resolve","wrapper","executor","onFulfilled","onRejected","catch","r","capability","all","remaining","$index","alreadyCalled","race","$at","point","$fails","wks","wksDefine","enumKeys","gOPNExt","$GOPD","$DP","_stringify","HIDDEN","TO_PRIMITIVE","SymbolRegistry","AllSymbols","OPSymbols","QObject","setter","findChild","setSymbolDesc","protoDesc","wrap","sym","isSymbol","$defineProperties","$create","$propertyIsEnumerable","E","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","$set","es6Symbols","wellKnownSymbols","for","keyFor","useSetter","useSimple","replacer","$replacer","$values","finally","onFinally","try","callbackfn","TO_STRING_TAG","DOMIterables","Collection","identity","factory","ReactComponent","ReactNoopUpdateQueue","validateMethodOverride","isAlreadyDefined","specPolicy","ReactClassInterface","ReactClassMixin","mixSpecIntoComponent","spec","autoBindPairs","__reactAutoBindPairs","MIXINS_KEY","RESERVED_SPEC_KEYS","mixins","property","isReactClassMethod","shouldAutoBind","autobind","createMergedResultFunction","createChainedFunction","mixStaticSpecIntoComponent","isReserved","isInherited","mergeIntoWithNoDuplicateKeys","one","two","bindAutoBindMethod","method","boundMethod","bind","bindAutoBindMethods","pairs","autoBindKey","createClass","updater","refs","emptyObject","initialState","ReactClassComponent","injectedMixins","IsMountedPreMixin","IsMountedPostMixin","methodName","shouldComponentUpdate","componentWillUpdate","componentDidUpdate","updateComponent","__isMounted","replaceState","newState","enqueueReplaceState","isMounted","warning","ReactPropTypeLocationNames","React","CssSelectorParser","pseudos","attrEqualityMods","ruleNestingOperators","substitutesEnabled","isIdentStart","isIdent","isHex","isDecimal","isAttrMatchOperator","chr","ParseContext","getIdent","getStr","skipWhitespace","quote","escapeTable","esc","hex","fromCharCode","parseInt","identSpecialChars","res","parseSelector","selector","parseSingleSelector","selectors","rule","parseRule","currentRule","op","nestingOperator","tagName","classNames","attr","attrValue","valueType","doubleQuotesEscapeChars","singleQuoteEscapeChars","attrs","pseudoName","pseudo","registerSelectorPseudos","unregisterSelectorPseudos","registerNumericPseudos","unregisterNumericPseudos","registerNestingOperators","unregisterNestingOperators","registerAttrEqualityMods","mod","unregisterAttrEqualityMods","enableSubstitutes","disableSubstitutes","!","\"","#","$","%","&","'","(",")","*","+",",",".","/",";","<","=",">","?","@","[","\\","]","^","`","{","|","}","~","strReplacementsRev","\n","\r","\t","\f","\u000b","t","escapeIdentifier","charCode","extraCharCode","escapeStr","replacement","_renderEntity","entity","currentEntity","parts","cn","isUndefinedOrNull","copy","opts","Date","supported","unsupported","supportsArgumentsClass","shim","foreach","hasSymbols","toStr","arePropertyDescriptorsSupported","_","supportsDescriptors","predicate","predicates","detab","size","code","add","start","column","tabSize","results","TAB","repeat","LF","CR","addClass","classList","_hasClass2","_hasClass","hasClass","contains","remove","getTransitionProperties","vendorMap","Moz","Webkit","ms","vendors","transitionEnd","animationEnd","prefix","vendor","animationDelay","animationTiming","animationDuration","animationName","transitionDuration","transitionDelay","transitionTiming","transitionProperty","transform","_inDOM","_inDOM2","_getTransitionPropert","timing","delay","duration","fallback","curr","prev","req","cancel","raf","compatRaf","getKey","rafKey","cb","createDocumentFragment","nodeName","enoughArguments","mutationMacro","nodes","textNodeIfString","fragment","list","TemporaryPrototype","TemporaryTokenList","wrapVerifyToken","hOP","__defineGetter__","__defineSetter__","verifyToken","spaces","DOMTokenList","noClassName","getAttribute","isSVG","baseVal","properties","_isSVG","classListDescriptor","force","DocumentFragmentPrototype","DocumentFragment","Node","NodePrototype","Element","CharacterData","CharacterDataPrototype","DocumentType","DocumentTypePrototype","ElementPrototype","HTMLElement","HTMLSelectElement","selectRemove","ShadowRoot","SVGElement","idSpaceFinder","createQueryMethod","createArray","css","nl","parentNode","setAttribute","removeAttribute","addQueryAndAll","where","queryAll","matchesSelector","webkitMatchesSelector","khtmlMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","querySelectorAll","matches","firstChild","insertBefore","nextSibling","replaceWith","replaceChild","o_O","splice","original","getElementsByTagName","rAF","requestAnimationFrame","cAF","cancelAnimationFrame","prefixes","goOn","CustomEvent","eventName","defaultInitDict","eventInitDict","createEvent","initCustomEvent","bubbles","cancelable","detail","initEvent","Event","$Event","init","KeyboardEvent","$KeyboardEvent","getModifier","withDefaults","withInitValues","defaults","eventType","altGraphKey","modifiers","initType","char","keyCode","locale","view","which","initKeyEvent","initKeyboardEvent","navigator","language","keyIdentifier","keyLocation","MouseEvent","$MouseEvent","initMouseEvent","screenX","screenY","clientX","clientY","relatedTarget","Dict","createEventListener","eventListener","currentTarget","removeEventListener","removed","passive","handleEvent","capture","DOMMap","WeakMap","dispatch","ce","shouldDrop","drop","dispatched","dispatchEvent","Handler","__ce__","delete","augment","dE","aEL","rEL","increment","getListenerKey","createAEL","tmp","dm","createREL","EventTarget","Text","HTMLDocument","Window","XMLHttpRequest","define","amd","ES6Promise","objectOrFunction","setScheduler","scheduleFn","customSchedulerFn","setAsap","asapFn","asap","useVertxTimer","vertxNext","useSetTimeout","globalSetTimeout","onFulfillment","onRejection","_arguments","child","PROMISE_ID","makePromise","invokeCallback","_result","subscribe","resolve$1","selfFulfillment","cannotReturnOwn","getThen","GET_THEN_ERROR","tryThen","then$$1","fulfillmentHandler","rejectionHandler","handleForeignThenable","thenable","sealed","fulfill","_label","handleOwnThenable","FULFILLED","REJECTED","handleMaybeThenable","maybeThenable","publishRejection","_onerror","publish","PENDING","_subscribers","subscribers","settled","ErrorObject","tryCatch","TRY_CATCH_ERROR","hasCallback","succeeded","failed","initializePromise","resolver","nextId","Enumerator$1","_instanceConstructor","_remaining","_enumerate","validationError","all$1","race$1","reject$1","needsResolver","needsNew","Promise$2","polyfill$1","local","promiseToString","cast","_isArray","scheduleFlush","browserWindow","browserGlobal","BrowserMutationObserver","isWorker","Uint8ClampedArray","iterations","observer","vertx","runOnLoop","runOnContext","_eachEntry","entry","resolve$$1","_then","_settledAt","_willSettleAt","enumerator","_setScheduler","_setAsap","_asap","polyfill","EvStore","elem","hashKey","OneVersionConstraint","MY_VERSION","EventEmitter","_events","_maxListeners","isNumber","isUndefined","defaultMaxListeners","setMaxListeners","er","newListener","trace","g","fired","position","listenerCount","evlistener","emitter","ExecutionEnvironment","canUseWorkers","Worker","canUseEventListeners","attachEvent","canUseViewport","screen","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","extend","copyIsArray","clone","deep","makeEmptyFunction","emptyFunction","thatReturns","thatReturnsFalse","thatReturnsTrue","thatReturnsNull","thatReturnsThis","thatReturnsArgument","invariant","condition","format","d","validateFormat","argIndex","framesToPop","ERROR_MESSAGE","funcType","bound","binder","boundLength","boundArgs","implementation","enhance","information","emoji","unicode","h","react","vdom","toH","hyperscript","attributes","addAttribute","parseStyle","nan","boolean","paramCase","commaSeparated","commas","mustUseAttribute","propertyName","_store","cleanup","declaration","declarations","camelCase","$0","$1","ast","file","messages","toPosition","vfileLocation","verbose","config","childNodes","__location","root","quirksMode","startOffset","endOffset","doctype","public","publicId","system","systemId","text","comment","loc","dirty","reference","propPositions","camelcase","endTag","offset","startTag","opening","closing","#document","#document-fragment","#text","#comment","#documentType","subvalue","dot","schema","xtend","allowed","NODES","strip","handleProperties","handleTagName","handlePropertyValues","handlePropertyValue","handleProtocol","clobber","clobberPrefix","protocol","first","colon","protocols","ancestors","tagNames","handleValue","allow","addProperty","addChild","content","propertyInformation","spaceSeparated","parsePrimitive","numeric","positiveNumeric","Number","overloadedBoolean","globalObject","hljs","escape","testRe","re","lexeme","isNotHighlighted","noHighlightRe","blockLanguage","_class","classes","languagePrefixRe","getLanguage","inherit","objects","nodeStream","_nodeStream","nodeType","nodeValue","mergeStreams","highlighted","selectStream","attr_str","processed","nodeStack","stream","pop","expand_mode","mode","variants","cached_variants","variant","endsWithParent","compileLanguage","reStr","langRe","case_insensitive","compileMode","compiled","keywords","beginKeywords","compiled_keywords","flatten","kw","pair","lexemesRe","lexemes","begin","beginRe","endRe","terminator_end","illegal","illegalRe","relevance","starts","terminators","Boolean","highlight","ignore_illegals","continuation","subMode","endOfMode","endsParent","isIllegal","keywordMatch","match_str","buildSpan","classname","insideSpan","leaveOpen","noPrefix","classPrefix","openSpan","closeSpan","spanEndTag","processKeywords","keyword_match","last_index","top","mode_buffer","processSubLanguage","explicit","subLanguage","languages","continuations","highlightAuto","processBuffer","startNewMode","processLexeme","new_mode","skip","excludeBegin","returnBegin","end_mode","origin","returnEnd","excludeEnd","languageSubset","second_best","fixMarkup","tabReplace","useBR","fixMarkupRe","buildClassName","prevClassName","currentLang","resultLang","aliases","highlightBlock","originalStream","resultNode","createElementNS","innerHTML","textContent","configure","user_options","initHighlighting","called","blocks","initHighlightingOnLoad","registerLanguage","lang","alias","listLanguages","IDENT_RE","UNDERSCORE_IDENT_RE","NUMBER_RE","C_NUMBER_RE","BINARY_NUMBER_RE","RE_STARTERS_RE","BACKSLASH_ESCAPE","APOS_STRING_MODE","QUOTE_STRING_MODE","PHRASAL_WORDS_MODE","COMMENT","C_LINE_COMMENT_MODE","C_BLOCK_COMMENT_MODE","HASH_COMMENT_MODE","NUMBER_MODE","C_NUMBER_MODE","BINARY_NUMBER_MODE","CSS_NUMBER_MODE","REGEXP_MODE","TITLE_MODE","UNDERSCORE_TITLE_MODE","METHOD_GUARD","VAR","QUOTE_STRING","APOS_STRING","keyword","literal","built_in","RULE","KEYWORDS","NUMBER","SUBST","TEMPLATE_STRING","PARAMS_CONTAINS","LITERALS","TYPES","VALUE_CONTAINER","OBJECT","ARRAY","INTERP_IDENT_RE","RULES","VALUE","STRING_MODE","IDENT_MODE","PARENS_MODE","VALUE_WITH_RULESETS","MIXIN_GUARD_MODE","RULE_MODE","AT_RULE_MODE","VAR_RULE_MODE","SELECTOR_MODE","VARIABLE","HEXCOLOR","HEX_COLOR","AT_KEYWORDS","PSEUDO_SELECTORS","TAGS","TAG_END","ATTRIBUTES","TAG_INTERNALS","PUSH","POP","_slice","createKey","KeyPrefix","saveState","sessionStorage","removeItem","setItem","SecurityError","NODE_ENV","QuotaExceededErrors","readState","json","getItem","detachEvent","getHashPath","replaceHashPath","getWindowPath","getUserConfirmation","confirm","supportsHistory","ua","userAgent","supportsGoWithoutReloadUsingHash","extractPath","parsePath","hashIndex","searchIndex","createBrowserHistory","historyState","_DOMUtils","_historyState","_DOMStateStorage","isSupported","_PathUtils","startPopStateListener","popStateListener","finishTransition","basename","useRefresh","pushState","stopPopStateListener","registerTransitionHook","unregisterTransitionHook","_ExecutionEnvironment","forceRefresh","_createDOMHistory2","_createDOMHistory","createDOMHistory","_createHistory2","_createHistory","isAbsolutePath","ensureSlash","addQueryStringValueToPath","stripQueryStringValueFromPath","getQueryStringValueFromPath","createHashHistory","queryKey","startHashChangeListener","hashChangeListener","currentHash","stopHashChangeListener","goIsSupportedWithoutReload","DefaultQueryKey","createRandomKey","locationsAreEqual","_deepEqual2","transitionHooks","getCurrent","pendingLocation","allKeys","updateLocation","newLocation","changeListeners","_location","confirmTransitionTo","_runTransitionHook2","nextLocation","prevPath","createPath","nextPath","prevIndex","nextIndex","keyLength","_createLocation3","updateLocationState","DefaultKeyLength","_deprecate2","_createLocation2","_runTransitionHook","_deprecate","_fourthArg","createStateStorage","memo","storage","canGo","_options","deprecate","runTransitionHook","useBasename","checkBaseHref","checkedBaseHref","base","baseHref","addBasename","prependBasename","pname","normalizedBasename","normalizedPathname","defaultStringifyQuery","_queryString","isNestedObject","useQueries","addQuery","SEARCH_BASE_KEY","searchBase","appendQuery","_extends2","searchBaseSpec","queryString","fullLocation","defaultParseQueryString","strictUriEncode","extract","param","shift","val2","REACT_STATICS","KNOWN_STATICS","caller","arity","isGetOwnPropertySymbolsAvailable","targetComponent","sourceComponent","customStatics","Individual","OneVersion","moduleName","defaultValue","enforceKey","versionValue","ctor","superCtor","super_","TempCtor","alphabetical","alphanumerical","decimal","isSlowBuffer","readFloatLE","hexadecimal","getPolyfill","NaN","whitespace","fromCode","wordCharacter","KEBAB_REGEX","REVERSE_REGEX","longestStreak","maximum","High","autoHighlight","secondBest","subset","languageNames","DEFAULT_PREFIX","normalize","coreHighlight","syntax","low","ignore","newMode","endMode","modeBuffer","addSiblings","currentChildren","addText","build","submatch","siblings","sibling","T_TEXT","tail","buildText","contents","T_ELEMENT","T_SPAN","KEY_INSENSITIVE","expandMode","KEY_CACHED_VARIANTS","C_PIPE","compiledKeywords","terminatorEnd","execNoop","expression","high","escapes","commonmark","gfm","markdownTable","table","align","rows","row","cells","spacing","before","after","delimiter","alignment","calculateStringLength","stringLength","lengthNoop","cellCount","rowIndex","rowLength","sizes","SPACE","PIPE","dotindex","MIN_CELL_SIZE","pad","ALLIGNMENT","NULL","DOT","EXPRESSION_DOT","RIGHT","CENTER","DASH","COLON","LEFT","NEW_LINE","EXPRESSION_LAST_DOT","compact","tree","visitor","modifier","mergeable","modify","visit","line","getDefinitionFactory","getterFactory","gather","definition","normalise","identifier","cache","normal","getter","failsafe","subtype","referenceType","u","alt","generateFootnotes","footnotes","listItems","hProperties","url","thematicBreak","ordered","blockquote","hardBreak","strikethrough","emphasis","footnoteReference","footnote","identifiers","heading","depth","dangerous","imageReference","image","break","inlineCode","linkReference","link","listItem","paragraph","strong","toml","yaml","footnoteDefinition","container","single","loose","checked","disabled","cell","alignLength","trimLines","right","hName","hChildren","generated","allowDangerousHTML","definitions","handlers","toHAST","footer","unknown","getEncodeCache","exclude","ch","encodeCache","encode","keepEscaped","nextCode","defaultChars","componentChars","parseFloat","fmtShort","round","fmtLong","plural","long","compile","parsed","bMod","BaseFuncs","formula","re_nthElement","SyntaxError","shouldUseNative","test1","test2","test3","letter","propIsEnumerable","isArgs","isEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","o","excludedKeys","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","equalsConstructorPrototypeIfNotBuggy","keysShim","isString","theKeys","skipProto","skipConstructor","originalKeys","onceStrict","onceError","wrappy","option","indent","parseError","handleWarning","warningContext","MESSAGES","at","handleText","textContext","entityCharacters","terminated","characters","following","diff","additional","nonTerminated","handleReference","referenceContext","lines","NEWLINE","AMPERSAND","FORM_FEED","LESS_THAN","OCTOTHORP","NAMED","X_LOWER","X_UPPER","HEXADECIMAL","DECIMAL","TESTS","legacy","SEMICOLON","characterEntities","NAMED_UNKNOWN","NAMED_NOT_TERMINATED","NAMED_EMPTY","attribute","EQUAL","NUMERIC_NOT_TERMINATED","BASE","isProhibited","NUMERIC_PROHIBITED","REPLACEMENT","invalid","NUMERIC_DISALLOWED","isWarning","NUMERIC_EMPTY","NUMERIC_REFERENCE","NAMED_REFERENCE","TERMINATED","VOID","enquoteDoctypeId","VALID_DOCTYPE_NAME","QUIRKS_MODE_SYSTEM_ID","QUIRKS_MODE_PUBLIC_ID_PREFIXES","QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES","QUIRKS_MODE_PUBLIC_IDS","isQuirks","serializeContent","isMathMLTextIntegrationPoint","tn","ns","NS","MATHML","MI","MO","MN","MS","MTEXT","isHtmlIntegrationPoint","ANNOTATION_XML","ATTRS","ENCODING","MIME_TYPES","TEXT_HTML","APPLICATION_XML","SVG","FOREIGN_OBJECT","DESC","TITLE","Tokenizer","HTML","TAG_NAMES","NAMESPACES","DEFINITION_URL_ATTR","ADJUSTED_DEFINITION_URL_ATTR","SVG_ATTRS_ADJUSTMENT_MAP","attributename","attributetype","basefrequency","baseprofile","calcmode","clippathunits","diffuseconstant","edgemode","filterunits","glyphref","gradienttransform","gradientunits","kernelmatrix","kernelunitlength","keypoints","keysplines","keytimes","lengthadjust","limitingconeangle","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","numoctaves","pathlength","patterncontentunits","patterntransform","patternunits","pointsatx","pointsaty","pointsatz","preservealpha","preserveaspectratio","primitiveunits","refx","refy","repeatcount","repeatdur","requiredextensions","requiredfeatures","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","surfacescale","systemlanguage","tablevalues","targetx","targety","textlength","viewbox","viewtarget","xchannelselector","ychannelselector","zoomandpan","XML_ATTRS_ADJUSTMENT_MAP","xlink:actuate","namespace","XLINK","xlink:arcrole","xlink:href","xlink:role","xlink:show","xlink:title","xlink:type","xml:base","XML","xml:lang","xml:space","xmlns","XMLNS","xmlns:xlink","SVG_TAG_NAMES_ADJUSTMENT_MAP","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","clippath","feblend","fecolormatrix","fecomponenttransfer","fecomposite","feconvolvematrix","fediffuselighting","fedisplacementmap","fedistantlight","feflood","fefunca","fefuncb","fefuncg","fefuncr","fegaussianblur","feimage","femerge","femergenode","femorphology","feoffset","fepointlight","fespecularlighting","fespotlight","fetile","feturbulence","foreignobject","lineargradient","radialgradient","textpath","EXITS_FOREIGN_CONTENT","BIG","BLOCKQUOTE","BODY","BR","CODE","DD","DIV","DL","DT","EM","EMBED","H1","H2","H3","H4","H5","H6","HEAD","HR","I","IMG","LI","LISTING","MENU","NOBR","OL","PRE","RUBY","SMALL","SPAN","STRONG","STRIKE","SUB","SUP","TABLE","TT","UL","causesExit","startTagToken","FONT","getTokenAttr","COLOR","SIZE","FACE","adjustTokenMathMLAttrs","adjustTokenSVGAttrs","adjustedAttrName","adjustTokenXMLAttrs","adjustedAttrEntry","adjustTokenSVGTagName","adjustedTagName","isIntegrationPoint","foreignNS","TYPE","ACTION","PROMPT","ADDRESS","APPLET","AREA","ARTICLE","ASIDE","BASEFONT","BGSOUND","BUTTON","CAPTION","COL","COLGROUP","DETAILS","DIALOG","DIR","FIELDSET","FIGCAPTION","FIGURE","FOOTER","FORM","FRAME","FRAMESET","HEADER","HGROUP","IMAGE","INPUT","IFRAME","KEYGEN","LABEL","LINK","MAIN","MALIGNMARK","MARQUEE","MATH","MENUITEM","MGLYPH","NAV","NOFRAMES","NOEMBED","NOSCRIPT","OPTGROUP","OPTION","PARAM","PLAINTEXT","RB","RP","RT","RTC","SCRIPT","SECTION","SELECT","SOURCE","STYLE","SUMMARY","TBODY","TEMPLATE","TEXTAREA","TFOOT","TD","TH","THEAD","TR","TRACK","WBR","XMP","SPECIAL_ELEMENTS","merged","optObj","REPLACEMENT_CHARACTER","CODE_POINTS","EOF","TABULATION","CARRIAGE_RETURN","LINE_FEED","EXCLAMATION_MARK","QUOTATION_MARK","NUMBER_SIGN","APOSTROPHE","HYPHEN_MINUS","SOLIDUS","DIGIT_0","DIGIT_9","LESS_THAN_SIGN","EQUALS_SIGN","GREATER_THAN_SIGN","QUESTION_MARK","LATIN_CAPITAL_A","LATIN_CAPITAL_F","LATIN_CAPITAL_X","LATIN_CAPITAL_Z","GRAVE_ACCENT","LATIN_SMALL_A","LATIN_SMALL_F","LATIN_SMALL_X","LATIN_SMALL_Z","CODE_POINT_SEQUENCES","DASH_DASH_STRING","DOCTYPE_STRING","CDATA_START_STRING","CDATA_END_STRING","SCRIPT_STRING","PUBLIC_STRING","SYSTEM_STRING","setEndLocation","closingToken","treeAdapter","col","ctLocation","getTagName","isClosingEndTag","END_TAG_TOKEN","OpenElementStack","parser","parserProto","attachableElementLocation","lastFosterParentingLocation","currentToken","_bootstrap","fragmentContext","openElements","popAllUpToHtmlElement","stackTop","items","_processTokenInForeignContent","_processToken","hasInScope","_setDocumentType","documentChildren","getChildNodes","cnLength","isDocumentTypeNode","_attachElementToTree","_appendElement","namespaceURI","_insertElement","_insertTemplate","getTemplateContent","_insertFakeRootElement","_appendCommentNode","_findFosterParentingLocation","_insertCharacters","hasFosterParent","_shouldFosterParentOnInsertion","currentTmplContent","textNodeIdx","beforeElement","textNode","UNICODE","tokenizer","attachLocationInfo","tokenLine","tokenCol","tokenStartOffset","tokenizerProto","isEol","lineStartPosStack","lineStartPos","_consume","cp","preprocessor","sourcePos","_unconsume","_createStartTagToken","_createEndTagToken","_createCommentToken","_createDoctypeToken","initialName","_createCharacterToken","currentCharacterToken","_createAttr","attrNameFirstCh","currentAttrLocation","_leaveAttrName","toState","_attachCurrentAttrLocationInfo","_leaveAttrValue","currentAttr","_emitCurrentToken","_emitCurrentCharacterToken","MODE","modeName","NOAH_ARK_CAPACITY","FormattingElementList","bookmark","MARKER_ENTRY","ELEMENT_ENTRY","_getNoahArkConditionCandidates","newElement","candidates","neAttrsLength","getAttrList","neTagName","neNamespaceURI","getNamespaceURI","elementAttrs","isCandidate","_ensureNoahArkCondition","cLength","neAttrs","neAttrsMap","neAttr","cAttr","insertMarker","pushElement","insertElementAfterBookmark","bookmarkIdx","removeEntry","clearToLastMarker","getElementEntryInScopeWithTagName","getElementEntry","aaObtainFormattingElementEntry","formattingElementEntry","activeFormattingElements","genericEndTagInBody","aaObtainFurthestBlock","furthestBlock","_isSpecialElement","popUntilElementPopped","aaInnerLoop","formattingElement","lastElement","nextElement","getCommonAncestor","elementEntry","counterOverflow","AA_INNER_LOOP_ITER","aaRecreateElementFromEntry","detachNode","aaInsertLastNodeInCommonAncestor","commonAncestor","_isElementCausesFosterParenting","_fosterParentElement","aaReplaceFormattingElement","_adoptNodes","insertAfter","callAdoptionAgency","AA_OUTER_LOOP_ITER","ignoreToken","appendComment","appendCommentToRootHtmlElement","appendCommentToDocument","insertCharacters","stopParsing","stopped","doctypeInInitialMode","forceQuirks","setQuirksMode","insertionMode","BEFORE_HTML_MODE","tokenInInitialMode","startTagBeforeHtml","BEFORE_HEAD_MODE","tokenBeforeHtml","endTagBeforeHtml","startTagBeforeHead","startTagInBody","headElement","IN_HEAD_MODE","tokenBeforeHead","endTagBeforeHead","_insertFakeElement","startTagInHead","_switchToTextParsing","RCDATA","RAWTEXT","SCRIPT_DATA","framesetOk","IN_TEMPLATE_MODE","_pushTmplInsertionMode","tokenInHead","endTagInHead","AFTER_HEAD_MODE","tmplCount","generateImpliedEndTags","popUntilTagNamePopped","_popTmplInsertionMode","_resetInsertionMode","startTagAfterHead","IN_BODY_MODE","IN_FRAMESET_MODE","tokenAfterHead","endTagAfterHead","whitespaceCharacterInBody","_reconstructActiveFormattingElements","characterInBody","htmlStartTagInBody","adoptAttributes","bodyStartTagInBody","bodyElement","tryPeekProperlyNestedBodyElement","framesetStartTagInBody","addressStartTagInBody","hasInButtonScope","_closePElement","numberedHeaderStartTagInBody","currentTagName","preStartTagInBody","skipNextNewLine","formStartTagInBody","inTemplate","formElement","listItemStartTagInBody","elementTn","closeTn","generateImpliedEndTagsWithExclusion","plaintextStartTagInBody","buttonStartTagInBody","aStartTagInBody","activeElementEntry","bStartTagInBody","nobrStartTagInBody","appletStartTagInBody","tableStartTagInBody","isQuirksMode","IN_TABLE_MODE","areaStartTagInBody","inputStartTagInBody","inputType","HIDDEN_INPUT_TYPE","paramStartTagInBody","hrStartTagInBody","imageStartTagInBody","textareaStartTagInBody","originalInsertionMode","TEXT_MODE","xmpStartTagInBody","iframeStartTagInBody","noembedStartTagInBody","selectStartTagInBody","IN_CAPTION_MODE","IN_TABLE_BODY_MODE","IN_ROW_MODE","IN_CELL_MODE","IN_SELECT_IN_TABLE_MODE","IN_SELECT_MODE","optgroupStartTagInBody","rbStartTagInBody","rtStartTagInBody","menuitemStartTagInBody","menuStartTagInBody","mathStartTagInBody","foreignContent","selfClosing","svgStartTagInBody","genericStartTagInBody","bodyEndTagInBody","AFTER_BODY_MODE","htmlEndTagInBody","addressEndTagInBody","formEndTagInBody","pEndTagInBody","liEndTagInBody","hasInListItemScope","ddEndTagInBody","numberedHeaderEndTagInBody","hasNumberedHeaderInScope","popUntilNumberedHeaderPopped","appletEndTagInBody","brEndTagInBody","endTagInBody","eofInBody","tmplInsertionModeStackTop","eofInTemplate","endTagInText","pendingScript","eofInText","characterInTable","curTn","pendingCharacterTokens","hasNonWhitespacePendingCharacterToken","IN_TABLE_TEXT_MODE","tokenInTable","captionStartTagInTable","clearBackToTableContext","colgroupStartTagInTable","IN_COLUMN_GROUP_MODE","colStartTagInTable","tbodyStartTagInTable","tdStartTagInTable","tableStartTagInTable","hasInTableScope","inputStartTagInTable","formStartTagInTable","startTagInTable","endTagInTable","savedFosterParentingState","fosterParentingEnabled","_processTokenInBodyMode","whitespaceCharacterInTableText","characterInTableText","tokenInTableText","startTagInCaption","endTagInCaption","startTagInColumnGroup","tokenInColumnGroup","endTagInColumnGroup","startTagInTableBody","clearBackToTableBodyContext","hasTableBodyContextInTableScope","endTagInTableBody","startTagInRow","clearBackToTableRowContext","endTagInRow","startTagInCell","_closeTableCell","endTagInCell","startTagInSelect","hasInSelectScope","endTagInSelect","prevOpenElement","prevOpenElementTn","startTagInSelectInTable","endTagInSelectInTable","startTagInTemplate","newInsertionMode","TEMPLATE_INSERTION_MODE_SWITCH_MAP","endTagInTemplate","startTagAfterBody","tokenAfterBody","endTagAfterBody","AFTER_AFTER_BODY_MODE","startTagInFrameset","endTagInFrameset","isRootHtmlElementCurrent","AFTER_FRAMESET_MODE","startTagAfterFrameset","endTagAfterFrameset","AFTER_AFTER_FRAMESET_MODE","startTagAfterAfterBody","tokenAfterAfterBody","startTagAfterAfterFrameset","nullCharacterInForeignContent","chars","characterInForeignContent","startTagInForeignContent","_isIntegrationPoint","_getAdjustedCurrentElement","currentNs","endTagInForeignContent","locationInfoMixin","defaultTreeAdapter","mergeOptions","DEFAULT_OPTIONS","locationInfo","INITIAL_MODE","INSERTION_MODE_RESET_MAP","CHARACTER_TOKEN","NULL_CHARACTER_TOKEN","WHITESPACE_CHARACTER_TOKEN","COMMENT_TOKEN","DOCTYPE_TOKEN","START_TAG_TOKEN","EOF_TOKEN","Parser","createDocument","_runParsingLoop","parseFragment","documentMock","_initTokenizerForFragmentParsing","_findFormInFragmentContext","rootElement","getFirstChild","tmplInsertionModeStack","currentTmplInsertionMode","writeCallback","scriptHandler","_setupTokenizerCDATAMode","getNextToken","HIBERNATION_TOKEN","_processInputToken","script","allowCDATA","nextTokenizerState","getParentNode","setDocumentType","tmpl","setTemplateContent","commentNode","createCommentNode","_fosterParentText","insertText","donor","recipient","_shouldProcessTokenInForeignContent","isCharacterToken","listLength","unopenIdx","popUntilTableCellPopped","_resetInsertionModeForSelect","selectIdx","ancestor","openElement","insertTextBefore","isImpliedEndTagRequired","isScopingElement","_indexOf","_isInTemplate","_updateCurrentElement","oldElement","referenceElement","insertionIdx","poppedElement","elementIdx","exclusionTagName","isWhitespace","isAsciiDigit","isAsciiUpper","isAsciiLower","isAsciiLetter","isAsciiAlphaNumeric","isDigit","isReservedCodePoint","toAsciiLowerCodePoint","toChar","toAsciiLowerChar","Preprocessor","NAMED_ENTITY_TRIE","$$","NUMERIC_ENTITY_REPLACEMENTS","0","13","128","129","130","131","132","133","134","135","136","137","138","139","140","141","142","143","144","145","146","147","148","149","150","151","152","153","154","155","156","157","158","159","DATA_STATE","CHARACTER_REFERENCE_IN_DATA_STATE","RCDATA_STATE","CHARACTER_REFERENCE_IN_RCDATA_STATE","RAWTEXT_STATE","SCRIPT_DATA_STATE","PLAINTEXT_STATE","TAG_OPEN_STATE","END_TAG_OPEN_STATE","TAG_NAME_STATE","RCDATA_LESS_THAN_SIGN_STATE","RCDATA_END_TAG_OPEN_STATE","RCDATA_END_TAG_NAME_STATE","RAWTEXT_LESS_THAN_SIGN_STATE","RAWTEXT_END_TAG_OPEN_STATE","RAWTEXT_END_TAG_NAME_STATE","SCRIPT_DATA_LESS_THAN_SIGN_STATE","SCRIPT_DATA_END_TAG_OPEN_STATE","SCRIPT_DATA_END_TAG_NAME_STATE","SCRIPT_DATA_ESCAPE_START_STATE","SCRIPT_DATA_ESCAPE_START_DASH_STATE","SCRIPT_DATA_ESCAPED_STATE","SCRIPT_DATA_ESCAPED_DASH_STATE","SCRIPT_DATA_ESCAPED_DASH_DASH_STATE","SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE","SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE","SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE","SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE","SCRIPT_DATA_DOUBLE_ESCAPED_STATE","SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE","SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE","SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE","SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE","BEFORE_ATTRIBUTE_NAME_STATE","ATTRIBUTE_NAME_STATE","AFTER_ATTRIBUTE_NAME_STATE","BEFORE_ATTRIBUTE_VALUE_STATE","ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE","ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE","ATTRIBUTE_VALUE_UNQUOTED_STATE","CHARACTER_REFERENCE_IN_ATTRIBUTE_VALUE_STATE","AFTER_ATTRIBUTE_VALUE_QUOTED_STATE","SELF_CLOSING_START_TAG_STATE","BOGUS_COMMENT_STATE","BOGUS_COMMENT_STATE_CONTINUATION","MARKUP_DECLARATION_OPEN_STATE","COMMENT_START_STATE","COMMENT_START_DASH_STATE","COMMENT_STATE","COMMENT_END_DASH_STATE","COMMENT_END_STATE","COMMENT_END_BANG_STATE","DOCTYPE_STATE","DOCTYPE_NAME_STATE","AFTER_DOCTYPE_NAME_STATE","BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE","DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE","DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE","BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE","BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE","DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE","DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE","AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE","BOGUS_DOCTYPE_STATE","CDATA_SECTION_STATE","tokenQueue","returnState","tempBuff","additionalAllowedCp","lastStartTagName","consumedAfterSnapshot","active","DATA","attrName","_hibernationSnapshot","_ensureHibernation","chunk","isLastChunk","insertHtmlAtCurrentPos","endOfChunkHit","retreat","advance","_unconsumeSeveral","_reconsumeInState","_consumeSubsequentIfMatch","startCp","caseSensitive","consumedCount","isMatch","patternLength","patternPos","patternCp","_lookahead","isTempBufferEqualToScriptString","_isDuplicateAttr","_isAppropriateEndTagToken","_emitEOFToken","_appendCharToCurrentCharacterToken","_emitCodePoint","_emitSeveralCodePoints","codePoints","_emitChar","_consumeNumericEntity","digits","nextCp","referencedCp","_consumeNamedEntity","inAttr","referencedCodePoints","entityCodePointsCount","leaf","semicolonTerminated","_consumeCharacterReference","dropParsedChunk","dashDashMatch","doctypeMatch","cdataMatch","publicMatch","systemMatch","cdataEndMatch","65","69","108","105","103","59","77","80","97","99","117","116","101","98","114","118","121","102","112","104","109","110","100","111","70","115","66","107","119","113","67","72","79","89","68","84","73","81","74","83","90","71","76","82","85","86","78","120","122","75","87","88","49","50","52","51","106","53","54","56","55","isSurrogatePair","cp1","cp2","getSurrogatePairCodePoint","DEFAULT_BUFFER_WATERLINE","lastGapPos","lastCharPos","droppedBufferSize","gapStack","lastChunkWritten","bufferWaterline","_addGap","_processHighRangeCodePoint","newNode","referenceNode","templateElement","contentElement","doctypeNode","prevNode","recipientNode","recipientAttrsMap","getTextNodeContent","getCommentNodeContent","getDocumentTypeNodeName","getDocumentTypeNodePublicId","getDocumentTypeNodeSystemId","isTextNode","isCommentNode","isElementNode","normalizeArray","allowAboveRoot","up","xs","splitPathRe","splitPath","filename","resolvedPath","resolvedAbsolute","isAbsolute","trailingSlash","paths","relative","fromParts","toParts","samePartsLength","outputParts","sep","dirname","ext","extname","capitalize","cleanupOS","os","label","10.0","6.4","6.3","6.2","6.1","6.0","5.2","5.1","5.01","5.0","4.0","4.90","each","maxSafeInteger","forOwn","getClassOf","isHostType","qualify","accumulator","getProduct","guesses","guess","toStringPlatform","description","isCustomContext","nav","isSpecialCasedOS","isModuleScope","thisBinding","oldRoot","likeChrome","airRuntimeClass","enviroClass","javaClass","java","phantomClass","rhino","environment","alpha","beta","doc","opera","operamini","operaClass","reOpera","arch","prerelease","useFeatures","layout","product","manufacturer","Apple","iPad","iPhone","iPod","Archos","Amazon","Kindle","Kindle Fire","Asus","Transformer","Barnes & Noble","Nook","BlackBerry","PlayBook","Google","Google TV","Nexus","HP","TouchPad","HTC","LG","Microsoft","Xbox","Xbox One","Motorola","Xoom","Nintendo","Wii U","Wii","Nokia","Lumia","Samsung","Galaxy S","Galaxy S2","Galaxy S3","Galaxy S4","Sony","PlayStation","PlayStation Vita","patterns","System","getProperty","electron","nw","platform","runtime","flash","Capabilities","phantom","major","minor","patch","documentMode","toFixed","appMinorVersion","external","architecture","family","cpuClass","objectTypes","function","freeExports","freeModule","freeGlobal","pow","objectProto","pp","maxdeep","ix","isSubquery","parenthesisLevel","split_sql","tab","xml","ar","inComment","sql","ar_by_quote","xmlmin","preserveComments","jsonmin","cssmin","sqlmin","pd","ReactPropTypesSecret","propFullName","secret","getShim","ReactPropTypes","number","symbol","instanceOf","objectOf","oneOf","exact","checkPropTypes","REACT_ELEMENT_TYPE","throwOnDirectAccess","getPropertyInformation","insensitive","lower","propertyToAttributeMapping","bitmask","USE_ATTRIBUTE","USE_PROPERTY","BOOLEAN_VALUE","NUMERIC_VALUE","POSITIVE_NUMERIC_VALUE","OVERLOADED_BOOLEAN_VALUE","SPACE_SEPARATED","COMMA_SEPARATED","propertyConfig","abbr","accept","acceptCharset","accessKey","allowFullScreen","allowTransparency","as","async","autoComplete","autoFocus","autoPlay","cellPadding","cellSpacing","challenge","charSet","cite","cols","colSpan","command","contentEditable","contextMenu","controls","controlsList","coords","crossOrigin","dateTime","dirName","download","draggable","dropzone","encType","form","formAction","formEncType","formMethod","formNoValidate","formTarget","frameBorder","headers","height","hidden","hrefLang","htmlFor","httpEquiv","inputMode","isMap","keyParams","keyType","loop","manifest","marginHeight","marginWidth","maxLength","media","mediaGroup","menu","minLength","multiple","muted","nonce","noValidate","optimum","ping","placeholder","playsInline","poster","preload","profile","radioGroup","readOnly","referrerPolicy","rel","required","reversed","role","rowSpan","sandbox","scope","scoped","scrolling","seamless","selected","slot","sortable","sorted","span","spellCheck","srcDoc","srcLang","srcSet","summary","tabIndex","translate","typeMustMatch","useMap","volume","width","wmode","autoCapitalize","autoCorrect","autoSave","itemProp","itemScope","itemType","itemID","itemRef","security","unselectable","xmlLang","xmlBase","xmlbase","xmllang","htmlfor","httpequiv","acceptcharset","mustUseProperty","encoderForArrayFormat","arrayFormat","parserForArrayFormat","keysSorter","objectAssign","formatter","qs","eq","regexp","maxKeys","kstr","vstr","stringifyPrimitive","isFinite","ks","decode","_classCallCheck","_possibleConstructorReturn","_inherits","Helmet","_createClass","_reactSideEffect","_reactSideEffect2","_HelmetUtils","_HelmetConstants","_temp","_React$Component","HelmetWrapper","mapNestedChildrenToProps","nestedChildren","cssText","flattenArrayTypeChildren","arrayTypeChildren","newChildProps","mapObjectTypeChildren","_ref2","_extends3","_extends4","newProps","titleAttributes","bodyAttributes","htmlAttributes","mapArrayTypeChildrenToProps","newFlattenedProps","arrayChildName","_extends5","warnOnInvalidChildren","VALID_TAG_NAMES","warn","nestedChild","mapChildrenToProps","_this2","_child$props","childProps","convertReactPropstoHtmlAttributes","defaultTitle","encodeSpecialCharacters","noscript","onChangeClientState","titleTemplate","peek","rewind","mappedState","mapStateOnServer","baseTag","linkTags","metaTags","noscriptTags","scriptTags","styleTags","NullComponent","HelmetSideEffects","reducePropsToState","handleClientStateChange","HelmetExport","renderStatic","ATTRIBUTE_NAMES","TAG_PROPERTIES","CHARSET","CSS_TEXT","HREF","HTTPEQUIV","INNER_HTML","ITEM_PROP","PROPERTY","REL","SRC","REACT_TAG_MAP","accesskey","charset","class","contenteditable","contextmenu","http-equiv","itemprop","tabindex","HELMET_PROPS","DEFAULT_TITLE","DEFER","ENCODE_SPECIAL_CHARACTERS","ON_CHANGE_CLIENT_STATE","TITLE_TEMPLATE","HTML_TAG_MAP","SELF_CLOSING_TAGS","HELMET_ATTRIBUTE","_objectAssign","_objectAssign2","getTitleFromPropsList","propsList","innermostTitle","getInnermostProperty","innermostTemplate","innermostDefaultTitle","getOnChangeClientState","getAttributesFromPropsList","tagType","tagAttrs","getBaseTagFromPropsList","primaryAttributes","innermostBaseTag","attributeKey","lowerCaseAttributeKey","getTagsFromPropsList","approvedSeenTags","approvedTags","instanceTags","instanceSeenTags","primaryAttributeKey","tagUnion","rafPolyfill","clock","currentTime","cafPolyfill","webkitRequestAnimationFrame","mozRequestAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","msg","_helmetCallback","commitTagChanges","updateAttributes","updateTitle","tagUpdates","updateTags","addedTags","removedTags","_tagUpdates$tagType","newTags","oldTags","flattenArray","possibleArray","elementTag","helmetAttributeString","helmetAttributes","attributesToRemove","attributeKeys","indexToSave","tags","querySelector","tagNodes","indexToDelete","styleSheet","existingTag","isEqualNode","generateElementAttributesAsString","generateTitleAsString","attributeString","flattenedTitle","generateTagsAsString","attributeHtml","tagContent","isSelfClosing","convertElementAttributestoReactProps","initProps","initAttributes","generateTitleAsReactComponent","_initProps","generateTagsAsReactComponent","_mappedTag","mappedTag","mappedAttribute","dangerouslySetInnerHTML","__html","getMethodsForTag","toComponent","_ref$title","_exenv","_exenv2","_shallowequal","_shallowequal2","handleStateChangeOnClient","emitChange","mountedInstances","SideEffect","_Component","recordedState","_TransitionGroup","_TransitionGroup2","_CSSTransitionGroupChild","_CSSTransitionGroupChild2","transitionName","nameShape","transitionAppear","transitionEnter","transitionLeave","transitionAppearTimeout","transitionTimeout","transitionEnterTimeout","transitionLeaveTimeout","CSSTransitionGroup","_ret","_wrapChild","appear","leave","appearTimeout","enterTimeout","leaveTimeout","childFactory","addEndListener","events","_addClass","_addClass2","_removeClass","_removeClass2","_requestAnimationFrame","_requestAnimationFrame2","_properties","_reactDom","CSSTransitionGroupChild","componentWillAppear","transition","componentWillEnter","componentWillLeave","classNameAndNodeQueue","transitionTimeouts","unmounted","animationType","finishCallback","findDOMNode","timer","removeListeners","queueClassAndNode","finish","rafHandle","flushClassNameAndNodeQueue","scrollTop","cloneElement","only","_chainFunction","_chainFunction2","_ChildMapping","TransitionGroup","performAppear","currentlyTransitioningKeys","_handleDoneAppearing","componentDidAppear","currentChildMapping","getChildMapping","performLeave","performEnter","_handleDoneEntering","componentDidEnter","_handleDoneLeaving","componentDidLeave","keysToEnter","newChildren","childRefs","keysToLeave","initialChildMapping","nextChildMapping","prevChildMapping","mergeChildMappings","hasPrev","_this3","childrenToRender","isCallbackRef","ref","factoryChild","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","nextKey","pendingNextKey","transitionType","timeoutPropName","enabledPropName","enterActive","leaveActive","appearActive","processor","Parser5","fromParse5","gemojiToEmoji","transformer","gemoji","unherit","offsets","decoder","entities","decodeRaw","raw","pedantic","breaks","locate","asterisk","underscore","PROTOCOLS","EXPRESSION_LINE_BREAKS","C_NEWLINE","tokenizeBlock","eof","removePosition","setOptions","inList","inBlock","inLink","atStart","toOffset","unescape","exitStart","enterList","enterLink","enterBlock","interruptParagraph","interruptList","interruptBlockquote","blockTokenizers","yamlFrontMatter","newline","indentedCode","fencedCode","atxHeading","setextHeading","inlineTokenizers","autoLink","deletion","blockMethods","inlineMethods","tokenizeInline","tokenizeFactory","eat","silent","hasAtCharacter","tokenize","C_LT","C_GT","C_AT_SIGN","C_SLASH","MAILTO_LENGTH","MAILTO","locator","notInLink","rest","startIndex","prefixed","tokenizers","interruptors","currentLine","indents","C_TAB","interrupt","MIN_BREAK_LENGTH","fenceCount","flag","exdentedContent","exdentedClosing","C_TILDE","C_TICK","MIN_FENCE_COUNT","CODE_INDENT_COUNT","blankQueue","subvalueQueue","contentQueue","CODE_INDENT","subqueue","openingCount","found","tickQueue","beforeURL","beforeTitle","C_BRACKET_OPEN","C_BRACKET_CLOSE","C_BACKSLASH","C_COLON","isEnclosedURLCharacter","isUnclosedURLCharacter","C_DOUBLE_QUOTE","C_SINGLE_QUOTE","C_PAREN_OPEN","C_PAREN_CLOSE","notInList","notInBlock","preceding","DOUBLE","C_ASTERISK","C_UNDERSCORE","word","C_CARET","EXPRESSION_INITIAL_TAB","C_HASH","MAX_ATX_COUNT","MAX_HEADING_INDENT","SETEXT_MARKERS","C_EQUALS","C_DASH","blockHTML","sequence","sequences","openCloseTag","inlineHTML","EXPRESSION_HTML_LINK_OPEN","EXPRESSION_HTML_LINK_CLOSE","closed","hasMarker","markers","isImage","COMMONMARK_LINK_MARKERS","LINK_MARKERS","currentMarker","prevEmpty","allLines","emptyLines","enterTop","exitBlockquote","isLoose","indented","interuptors","TAB_SIZE","LIST_ORDERED_COMMONMARK_MARKERS","LIST_ORDERED_MARKERS","LIST_UNORDERED_MARKERS","trail","reset","pedanticListItem","normalListItem","EXPRESSION_TASK_ITEM","C_X_LOWER","EXPRESSION_LOOSE_LIST_ITEM","EXPRESSION_PEDANTIC_BULLET","EXPRESSION_INITIAL_INDENT","$2","$3","$4","bullet","trimmedLines","EXPRESSION_BULLET","removeIndent","getIndent","C_PLUS","C_DOT","trimTrailingLines","bracketed","intro","T_LINK","REFERENCE_TYPE_SHORTCUT","T_IMAGE","T_FOOTNOTE","REFERENCE_TYPE_FULL","REFERENCE_TYPE_COLLAPSED","alignments","hasDash","preamble","lineCount","lineIndex","pipeIndex","MIN_TABLE_ROWS","TABLE_ALIGN_NONE","TABLE_ALIGN_LEFT","TABLE_ALIGN_CENTER","TABLE_ALIGN_RIGHT","MIN_TABLE_COLUMNS","markerCount","THEMATIC_BREAK_MARKER_COUNT","nextCharacter","PROTOCOLS_LENGTH","MAILTO_PROTOCOL","HTTP_PROTOCOL","HTTPS_PROTOCOL","FENCE","onlyAtStart","mergeText","mergeBlockquote","updatePosition","getOffset","indentation","Position","validateEat","update","combined","MERGEABLE_NODES","valueLength","stops"," ","attributeName","unquoted","singleQuoted","doubleQuoted","attributeValue","openTag","closeTag","processing","cdata","interruptor","bools","collapseWhiteSpace","padding","minIndent","Infinity","matrix","Compiler","inTable","enterTable","enterLinkReference","visitOrderedItems","visitUnorderedItems","visitors","tableCell","setext","closeAtx","looseTable","spacedTable","paddedTable","incrementListMarker","fences","fence","listItemIndent","ruleSpaces","ruleRepetition","escapable","BACKSLASH","afterNewLine","wordCharBefore","wordCharAfter","escaped","alphanumeric","BULLETS","lastIndexOf",":","orderedItems","unorderedItems","validate","maps","raise","encodeFactory","escapeFactory","validateBoolean","validateNumber","validateString","wrapped","returner","useNamedReferences","escapeOnly","true","false","numbers","-","mixed","1","PUNCTUATION","entityPrefixLength","enclose","uri","always","compiler","level","INDENT","lineBreak","streak","ticks","PROTOCOL","CHECKBOX_MAP","null","ORDERED_MAP","spaced","thematic","plugin","hast","div","clean","sanitize","unified","use","abstract","num","replaceExt","npath","nFileName","Scrollparent","parents","ps","getComputedStyle","getPropertyValue","overflow","scroll","body","objA","objB","compareContext","keysA","keysB","bHasOwnProperty","valueA","valueB","shuffled","setCharacters","_alphabet_","alphabet","ORIGINAL","unique","ind","setSeed","seed","randomFromSeed","previousSeed","shuffle","characterIndex","sourceArray","targetArray","nextValue","getShuffled","lookup","clusterWorkerId","seconds","REDUCE_TIME","previousSeconds","worker","loopCounter","randomByte","seedValue","workerId","newCharacters","generate","isValid","isShortId","crypto","getRandomValues","dest","msCrypto","getNextValue","_seed_","whiteSpace","space","toExpression","EXPRESSION_ESCAPE","omit","omitOptionalSemicolons","EXPRESSION_SURROGATE_PAIR","toHexReference","EXPRESSION_BMP","named","shortest","useShortestReferences","toNamed","construct","topologicallyCombineReducers","reducers","dependencies","ts","_toposortClass2","order","oldChildState","newChildState","_toposortClass","Toposort","edges","deps","dep","_isArray2","_i2","edge","_iterator3","_isArray3","_i3","_ref3","place","_iterator5","_isArray5","_i5","_ref5","predecessors","_iterator4","_isArray4","_i4","_ref4","ws","trough","fns","middleware","invoked","Super","From","parameters","Of","destination","attachers","assertParser","isParser","assertCompiler","isCompiler","assertConcrete","concrete","assertNode","assertDone","complete","isProcessor","transformers","vfile","pipeline","encoding","ended","chunks","pipe","onended","ondata","onend","onerror","_isStdio","readable","optional","hasParent","hasIndex","convert","typeFactory","anyFactory","matchesFactory","convertAll","tests","checks","modifierFactory","iteratorFactory","wrapperFactory","positionFactory","hard","soft","matchSelector","debug","select","selectOne","walkIterator","hasTypeIndex","typeIndex","typeCount","TypeIndex","nodeThunks","rangeDefaults","prefillTypeIndex","nodeIndex","pushNode","nodeTypeIndex","walkers","topScan","descendant","adjacentSibling","generalSibling","collect","collectOne","matchNode","matchType","matchAttrs","matchPseudos","searchOpts","Collector","ruleSet","compileNthChecks","nthCheck","typeLists","typeList","useColors","WebkitAppearance","firebug","exception","formatArgs","humanize","color","lastC","log","save","namespaces","load","DEBUG","localstorage","localStorage","chrome","colors","formatters","enable","selectColor","abs","createDebug","enabled","prevTime","coerce","skips","disable","fill","readUInt8","seen","stylize","stylizeNoColor","isBoolean","showHidden","_extend","customInspect","stylizeWithColor","formatValue","styleType","styles","arrayToHash","recurseTimes","primitive","formatPrimitive","visibleKeys","formatError","braces","toUTCString","formatArray","formatProperty","reduceToSingleString","simple","isNull","numLinesEst","cur","isNullOrUndefined","objectToString","timestamp","time","getHours","getMinutes","getSeconds","getDate","months","getMonth","formatRegExp","deprecated","throwDeprecation","traceDeprecation","noDeprecation","debugs","debugEnviron","debuglog","NODE_DEBUG","pid","bold","italic","underline","inverse","white","grey","black","blue","cyan","green","magenta","red","yellow","special","date","indices","offsetToPositionFactory","positionToOffsetFactory","offsetToPosition","positionToOffset","VFile","ruleId","filePath","range","VMessage","fatal","VMessagePrototype","assertPart","part","assertNonEmpty","assertPath","stem","EvHook","unhook","SoftSetHook","isChildren","parseTag","isHook","softSetHook","transformProperties","VNode","VText","isChild","UnexpectedVirtualElement","foreignObject","parentVnode","evHook","isVNode","isVText","isWidget","isVThunk","errorString","noId","tagParts","classIdSplit","notClassId","isThunk","isVirtualNode","isVirtualText","VirtualNode","noProperties","noChildren","descendants","hasWidgets","hasThunks","descendantHooks","isVHook","destroy","VirtualText","_delay","_endDelay","_fill","_iterationStart","_iterations","_duration","_playbackRate","_direction","_easing","_easingFunction","isDeprecated","numericTimingToObject","animationTimingFunction","middle","z","playbackRate","endDelay","H","J","q","iterationStart","direction","_setMember","_effect","_timingInput","_timing","normalizeTimingInput","activeDuration","calculateActiveDuration","_animation","_rebuildUnderlyingAnimation","easing","ease","ease-in","ease-out","ease-in-out","step-start","step-middle","step-end","cloneTimingInput","makeTiming","calculateIterationProgress","calculatePhase","normalizeEasing","parseEasingFunction","composite","DOMException","NOT_SUPPORTED_ERR","background","border","borderBottom","borderColor","borderLeft","borderRadius","borderRight","borderTop","borderWidth","flex","font","margin","outline","thin","medium","thick","borderBottomWidth","borderLeftWidth","borderRightWidth","borderTopWidth","fontSize","xx-small","x-small","small","large","x-large","xx-large","fontWeight","outlineWidth","textShadow","none","boxShadow","convertToArrayForm","normalizeKeyframes","setMonth","toDateString","animate","applyFrom","applyTo","easingFunction","interpolation","propertyInterpolation","convertEffectInput","Interpolation","addPropertiesHandler","backgroundColor","backgroundPosition","borderBottomColor","borderBottomLeftRadius","borderBottomRightRadius","borderLeftColor","borderRightColor","borderSpacing","borderTopColor","borderTopLeftRadius","borderTopRightRadius","bottom","clip","letterSpacing","lineHeight","marginBottom","marginLeft","marginRight","marginTop","maxHeight","maxWidth","minHeight","minWidth","opacity","outlineColor","outlineOffset","paddingBottom","paddingLeft","paddingRight","paddingTop","strokeDasharray","strokeDashoffset","textIndent","verticalAlign","visibility","wordSpacing","zIndex","_totalDuration","KeyframeEffect","_update","_clear","_hasSameTarget","_target","_id","_element","_surrogateStyle","_style","_length","_isAnimatedProperty","_updateSvgTransformAttr","_savedTransformAttr","_updateIndices","_webAnimationsPatchedStyle","_set","parentRule","getPropertyCSSValue","getPropertyPriority","removeProperty","setProperty","unprefixedPropertyName","transformToSvgMatrix","timeline","_play","acos","sin","sqrt","cos","composeMatrix","quat","sequenceNumber","timelineTime","eventPhase","AT_TARGET","timeStamp","Animation","_sequenceNumber","_currentTime","_startTime","_paused","_inTimeline","_finishedFlag","onfinish","_finishHandlers","_inEffect","_idle","_currentTimePending","_ensureAlive","_animations","_tickCurrentTime","_isFinished","restart","_timeline","applyDirtiedAnimation","startTime","playState","_rewind","play","pause","_fireEvents","_tick","_needsTick","pending","running","_targetAnimations","_activeAnimations","_markTarget","_unmarkTarget","performance","rad","deg","grad","turn","PI","tan","makeMatrixDecomposition","transformListToMatrix","consumeTrimmed","consumeToken","consumeRepeated","consumeParenthesised","consumeList","mergeNestedRepeated","mergeWrappedNestedRepeated","mergeList","inset","consumeLengthOrPercent","lengths","consumeColor","mergeDimensions","mergeColors","clamp","parseNumber","parseNumberList","mergeNumbers","numberToString","fillStyle","fillRect","getImageData","clearRect","getContext","parseLength","parseLengthOrPercent","parseAngle","consumeSizePairList","mergeNonNegativeSizePair","parseBox","mergeBoxes","N","L","decompositionPair","matrix3d","rotate","rotatex","rotatey","rotatez","rotate3d","perspective","scale","scalex","scaley","scalez","scale3d","skew","skewx","skewy","translatex","translatey","translatez","translate3d","center","consumePosition","mergeOffsetList","oncancel","_cancelHandlers","nativeIsArray","applyState","payload","changeConcern","concern","getState","routing","locationBeforeTransitions","_urlQuery2","_path2","hasDemo","files","patchLocation","_path","_urlQuery","changeEnvironment","changeType","_assert2","_lodash","includes","merge","_assert","closeAllTheThings","dismissAllMessages","issue","lightbox","menu-enabled","source-expanded","_reduxActions","createAction","partialReduce","_entries2","registry","_entry","_slicedToArray3","handleDependentActions","actionHandlers","_args$","_keys2","missing","dependency","pick","handleActions","reducer","demoContentResize","dismissMessage","loadPattern","loadPatternData","loadPatternDemo","loadPatternFile","openDocumentation","openFullscreen","patternDemoError","resizeDemo","scrollDemo","scrollTo","themeLoaded","toggleConsole","toggleExpandMenu","toggleHide","toggleIssue","toggleKeyboardShortcuts","toggleOpacity","toggleRulers","toggleSearchFocus","toggleTheme","windowResize","_callee","response","_regenerator2","_context","sent","abrupt","t0","status","statusText","stop","_promiseThunkAction","_fetch","createPromiseThunkAction","_asyncToGenerator3","mark","_callee2","_context2","_fetch2","getError","_x3","_location$query$envir","dataPayload","actions","jobs","sourceId","sourceType","least","_x","_x2","wait","_getState","_reactRouterRedux","createPatternDemoError","fileName","rawCreator","creator","asyncIdent","delayedAction","successAction","startAction","throwsAction","delayedTimer","ident","__name","handlePromiseThunkAction","rawName","_handleDependentActio","_handleDependentActions2","_defineProperty3","delayed","success","_handleDependentActions","scrollDemoX","frame","scrollDemoY","_global","getElementById","_scrollparent2","offsetTop","_scrollparent","toggleConsoleLightbox","forced","expanded","rulers","faux","activeElement","blur","focus","theme","createLinks","createStyle","data-style-id","getThemeLoadedListener","_args$1$linkTags","added","onload","dataset","styleId","_autobindDecorator","_classnames","_reactHelmet","_console","_problem","_shortcuts","_navigation","Application","onResize","innerWidth","innerHeight","handleSearch","onSearch","_classnames2","application--menu-enabled","menuEnabled","application--theme-loading","themeLoading","_reactHelmet2","startBase","onThemeLoaded","_navigation2","activePattern","hierarchy","icon","logo","navigation","onThemeChange","requestSearchBlur","searchValue","_console2","_shortcuts2","_problem2","BreadCrumbs","crumbs","crumb","BreadCrumb","navigateable","breadcrumb--navigateable","_reactRouter","prettyPrinted","_prettyData","_core2","_core","_css","_less","_scss","_stylus","_javascript","_typescript","_json","_xml","_markdown","_bash","_css2","_less2","_scss2","_stylus2","_javascript2","_typescript2","_json2","_xml2","_markdown2","_bash2","Code","highlightCode","_highlight2","_toElements2","_highlight","_toElements","toElements","_hastToHyperscript2","_hastToHyperscript","Editor","onKeyDown","win","clientWidth","clientHeight","debounce","scrollWidth","scrollHeight","onScroll","scroller","scrollingElement","scrollLeft","_getField2","_getField","getField","find","startsWith","Handle","handleGlobalMouseMove","handleGlobalMouseUp","onDrag","_queryString2","handle--active","onMouseDown","handleMouseDown","onSubmit","onClear","_handle","Handles","_handle2","onClearHorizontal","onDragHorizontal","onSubmitHorizontal","heightValue","onClearVertical","onDragVertical","onSubmitVertical","widthValue","onDragDiagonal","_pureRenderDecorator","_bind","_handles","_relay","Frame","rect","getBoundingClientRect","resize","pageY","pageX","onLoad","_bind2","frameClassName","iframe--resizeable","resizeable","frameResizeClassName","_relay2","saveRef","handleKeyDown","_handles2","handleDiagonalDrag","handleHorizontalDrag","handleVerticalDrag","handleHorizontalSubmit","handleVerticalSubmit","_getError","innerText","_getError2","Headline","TagName","uniq","IconRegistry","getRegistryMountPoint","_reactDom2","created","Icon","icon--has-description","textStyle","xlinkHref","hiddenStyles","_icons2","_Symbol","viewBox","Path","_objectWithoutProperties3","_icons","iconNames","checkers","inverted","arrowLeft","arrowRight","dark","ecospheres","folder","fullscreen","globals","home","light","molecules","organisms","templates","pages","patternplate","polymers","reload","atoms","arrowDoubleLeft","arrowDoubleRight","folderOpen","documentation","cx","cy","arrow-double-left","arrow-double-right","arrow-left","arrow-right","checkers-inverted","folder-open","Markdown","_render2","onHashChange","_render","MarkdownCode","parseLanguage","_code2","_code","MarkdownHeadline","_url","MarkdownLink","_url2","hasHash","isSamePathname","highlights","headline","_wrap2","_markdownHeadline2","strictChildren","MarkdownGeneric","tbody","tr","td","_markdownLink2","_markdownCode2","h1","h2","h3","h4","h5","h6","thead","th","_github2","img","_remark2","_remarkVdom2","_remarkGemojiToEmoji2","StrictChildren","toArray","_github","_remark","_remarkGemojiToEmoji","_remarkVdom","_markdownLink","_markdownCode","_markdownHeadline","_wrap","_icon","Message","onDismiss","onRetry","retry","handleRetryClick","handleDismissClick","_icon2","onTimeRequest","SearchField","userClassName","onFocus","onBlur","containerClassName","iconClassName","inputClassName","Select","isDisabled","_editor","_lightbox","ConsoleLightbox","onApplyState","onClose","handleApplyState","handleClose","_lightbox2","backdrop","buttons","_editor2","handleChange","Home","readme","Content","_urlQuery$parse","_getIdByPathname2","fragments","_navigate2","getNotFoundSource","itemDefaults","sortBy","getItems","rateType","_patternFolder2","_patternSection2","onDataRequest","_CSSTransitionGroup2","_message2","subject","getItemName","_values2","selectPatternData","amend","_CSSTransitionGroup","_message","_getIdByPathname","_patternFolder","_patternSection","_navigate","sortTypes","getIssueTemplate","includeDetails","getDetails","serverVersion","clientVersion","browserName","browserVersion","runtimeName","runtimeVersion","clientOsName","clientOsVersion","serverOsName","serverOsVersion","getInstructions","ProblemLightbox","issueTemplate","reaOnly","ShortcutsLightbox","Header","enabledTo","LiteralIcon","toSVGElement","dim","_unified2","_rehypeParse2","svg","_unistUtilSelect2","_unified","_rehypeParse","_unistUtilSelect","Lightbox","_navigationTree","_navigationItem","_navigationToolbar","_searchField","_header","Navigation","slim","navigation--expanded","_header2","_navigationTree2","handleSearchSubmit","_searchField2","linkTo","handleSearchBlur","handleSearchChange","handleSearchFocus","_navigationItem2","_navigationToolbar2","onSearchBlur","getPathName","rawish","NavigationItem","child-active","anchored","itemClassName","linkClassName","symbolActive","NavigationToggle","icon--mirrored","NavigationToolbar","cheatsheet","targetTheme","handleThemeChange","_navigationToggle2","_navigationToggle","_augmentHierarchy","NavigationTree","_getAugmentedChildren","_augmentHierarchy2","folders","handleFolderClick","searchQuery","iconActive","_manifest$options","_options$hidden","hideItem","getActiveReference","BlockColumn","activeBlock","connect","onMouseEnter","onMouseLeave","localName","_block2","blockId","labelWidth","labelX","Label","labelAlign","label--active","_block","_querystring","_connection","Block","orientation","textX","textY","_querystring2","_connection2","labels","spline","Connection","PointShape","Pattern","onReloadClick","onConcernChange","_unwrap2","onEnvironmentChange","onTypeChange","_patternHeader2","automount","breadcrumbs","errored","loading","reloadTime","reloadedTime","_patternDemo2","contentHeight","demoContentHeight","contentWidth","demoContentWidth","demoHeight","onDemoError","onReady","onDemoReady","onDemoContentResize","onDemoScroll","rulerX","rulerY","rulerLengthX","rulerLengthY","demoWidth","_patternToolbar2","activeSource","dependents","environments","onFileRequest","sourceExpanded","_patternDemo","_patternHeader","_patternToolbar","_unwrap","_select","PatternCode","copying","idle","execCommand","prettify","concerns","types","_select2","handleCopyClick","requestHighlight","saveReference","PatternControl","expand","shortid","PatternDemo","reload-time","pattern-demo-container--opacity","demoClassName","pattern-demo--resizable","_patternRuler2","_frame2","_frame","_patternRuler","_reactRedux","_markBlock","_blockColumn","PatternDependencies","_markBlock2","passedClassName","rootWidth","offsetY","viewBoxHeight","blockHeight","_blockColumn2","handleMouseEnter","handleMouseLeave","rootY","PatternDocumentation","ItemField","valueKey","PatternFolderItem","PatternFolder","PatternHeader","flagClassName","fullscreenTitle","reloadTitle","reloadClassName","reload--reloading","button--is-active","reload--error","rulersTitle","rulersClassName","opacityClassName","opacitySymbol","opacityTitle","_breadCrumbs2","_headline2","autoMount","_breadCrumbs","_headline","getSteps","Ruler","keyframes","animation","markerPositionProperty","RulerSteps","steps","spacerProperty","orderProperty","sizingProperty","orderDimension","spacer","_pattern","PatternSection","isEqual","_pattern2","PatternSources","sources","PatternSource","_md","_patternControl","_patternCode","_patternDocumentation","pattern-source--loading","verb","_patternControl2","_patternDocumentation2","_patternCode2","_md2","PatternToolCodeToogle","PatternToolEnvSelect","envs","pattern-environment-selection--disabled","getTitle","other","lead","PatternToolRelations","relationCount","_patternDependencies2","_patternDependencies","PatternToolbar","pattern-toolbar--expanded","_patternSources2","_patternTools2","hasCode","_patternSources","_patternTools","PatternTools","hasEnvironments","activeId","_patternToolCodeToggle2","_patternToolEnvironmentSelection2","_patternToolRelations2","_patternToolCodeToggle","_patternToolEnvironmentSelection","_patternToolRelations","mapProps","selectDescription","searchMatches","selectNavigation","selectThemeLoading","selectVersion","mapDispatch","_redux","bindActionCreators","_actions","sanitizeNavigationTreeData","selectSchema","grandChildren","_application","_application2","_stringify2","mapState","_content","_content2","getDefaultReadme","selectReadme","_unescapeHtml2","_unescapeHtml","_home","_home2","selectAutomount","selectBreadCrumbs","selectCode","selectRulerXFraction","selectRulerYFraction","selectRulerLengthX","selectRulerLengthY","selectDemoContentHeight","selectDemoContentWidth","selectHeight","selectWidth","selectDependencies","selectDependents","selectDisplay","selectEnvironments","selectPatternErrored","selectFlag","selectId","selectLoading","selectLocation","selectName","selectOnDemoReloaded","selectReloadedTime","selectReloadTime","selectTags","demoDimensions","selectWindowWidth","selectWindowHeight","demoContentDimensions","windowWidth","windowHeight","partial","selectPattern","cached","selectManifest","selectManifestOptions","selectReactMarkup","selectReactMarkupOptions","getManifestSelector","selectDependentPatterns","navPattern","patternEntries","localNames","_toConsumableArray3","rootPattern","dataLoading","demoLoading","sourceLoading","onDemoReloaded","selectPatternErrors","errors","dataErrored","demoErrored","sourceErrored","uniqBy","inExtname","outExtname","in","formatFiles","defaultConcern","passedConcern","isApplicable","fileErrors","patternFile","_shortid2","_shortid","_patternDemoError","appVersion","nodeVersion","npmVersion","osName","osVersion","clientRuntimeName","clientRuntimeVersion","serverRuntimeName","serverRuntimeVersion","_store2","syncHistoryWithStore","Provider","_routes2","_routes","_notFound2","_notFound","configureStore","initial","hydrateable","_topologicallyCombineReducers2","_reducers2","_reducers","_reduxThunk2","_reduxPromise2","routerMiddleware","applyMiddleware","createStore","compose","_reduxThunk","_topologicallyCombineReducers","_reduxPromise","markBlockHandler","locationChangeHandler","_handleActions","getBase","_depth","getDepth","handleAction","@@router/LOCATION_CHANGE","fragmentIndex","getEnvironment","onEnvironmentLocationChange","onExpandedLocationChange","onHideChange","_activeBlock","_base","_demoContentDimensions","_demoDimensions","_environment","_expanded","_issue","_menuEnabled","_messages","_opacity","_rulers","_search","_searchMatches","_scrollDemoX","_scrollDemoY","_sourceExpanded","_sourceId","_sourceType","_styles","_theme","_hide","_window","getDependencies","onIssueLocationChange","onLightboxLocationChange","menuEnabledlocationChangeHandler","createMessage","_stripAnsi2","_stripAnsi","_composeReducers","_composeReducers2","handlePatternLoad","entityPath","envelope","zipObjectDeep","onOpacityLocationChange","fileLoading","handleSourceLoad","handleLoadPatternDemo","_ref6","onRulersLocationChange","SCROLL_DEMO_X","SCROLL_DEMO_Y","searchFolder","cut","rewrap","criteria","_item","valueFlag","dependentPatterns","dependent","createStems","isStem","createTokens","isToken","isTagToken","getTokenValues","isFlagToken","depends","isDependsToken","provides","isProvidesToken","getPatterns","haystack","filterPatterns","ids","matchesToken","tokenKeys","tokenKey","_action$payload$query","stems","helpers","createFuse","_ids$filter","_ids$filter2","direct","_fuse2","threshold","_fuse","_helpers","searchMatchReducer","onSearchLocationChange","onLocationChange","_themeLoaded","stylesReducer","_themeLoaded2","onWindowResize","hierarchyCompare","localeCompare","augmentFolderData","splits","defaultHierarchyEntry","hierarchyEntry","augmentPatternData","pool","getAugmentedChildren","composeReducers","fetch","userHeaders","defaultHeaders","credentials","getIdByPathname","navigate","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","return","unwrap","not","shove","extension","urlPath","main","vault","getData","startPathname","_client2","app","platformData","getPlatformData","windowData","getWindowData","vaultData","_platform2","lastChild","_platform","_client","_es6Promise","_es6Promise2"],"mappings":"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AAO,ikBACPM,UAAW,IAGXN,MAAO,wWAGPA,MAAO,6FAETgI,GAEEtrD,UAAW,YACXsjD,MAAO,suFACPI,QAAS,WAGTJ,MAAO,+oCAGPA,MAAO,IAAKrgC,IAAK,IACjBoiB,UACEimB,EACAC,EACA/K,EAAK4I,gBACL5I,EAAKmI,kBACLnI,EAAKkI,kBAEH1oD,UAAW,OAAQsjD,MAAO,iBAK9BA,MAAO,IAAKrgC,IAAK,OACjB6/B,SAAU,+GACVzd,UACEimB,EACA9K,EAAKmI,kBACLnI,EAAKkI,iBACL6C,EACA/K,EAAK4I,iBAEH9F,MAAO,qBACPM,UAAW;;AC1FvB7pD,OAAOd,QAAU,SAASunD,GAExB,GAAI8K,IACFtrD,UAAW,WACXsjD,MAAO,MAAQ9C,EAAK2H,UAGlBqD,GACFxrD,UAAW,SACXsjD,MAAO,oCAGLmI,GACF,UACA,MACA,QACA,SACA,YACA,MACA,SACA,UACA,QACA,QACA,OACA,OACA,SAGEC,GACF,QACA,SACA,eACA,aACA,SACA,cACA,QACA,QACA,OACA,OACA,WAGEC,GACF,IACA,OACA,UACA,UACA,QACA,QACA,IACA,aACA,OACA,SACA,SACA,UACA,OACA,OACA,KACA,MACA,UACA,MACA,MACA,KACA,KACA,KACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,SACA,SACA,OACA,IACA,SACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,OACA,MACA,SACA,KACA,IACA,IACA,QACA,OACA,UACA,OACA,SACA,UACA,MACA,QACA,QACA,KACA,WACA,QACA,KACA,QACA,OACA,KACA,KACA,MACA,SAGEC,EAAU,qBAEVC,GACF,gBACA,cACA,aACA,YACA,kBACA,sBACA,qBACA,sBACA,4BACA,iBACA,uBACA,4BACA,OACA,sBACA,aACA,wBACA,kBACA,mBACA,mBACA,oBACA,sBACA,oBACA,kBACA,SACA,gBACA,sBACA,4BACA,6BACA,sBACA,sBACA,kBACA,eACA,eACA,sBACA,sBACA,qBACA,sBACA,qBACA,cACA,oBACA,oBACA,oBACA,gBACA,eACA,qBACA,qBACA,qBACA,iBACA,eACA,aACA,mBACA,yBACA,0BACA,mBACA,mBACA,eACA,SACA,uBACA,aACA,aACA,cACA,eACA,eACA,eACA,QACA,OACA,YACA,QACA,eACA,cACA,aACA,cACA,oBACA,oBACA,oBACA,cACA,eACA,UACA,UACA,oBACA,gBACA,SACA,YACA,UACA,cACA,SACA,OACA,aACA,iBACA,YACA,YACA,cACA,YACA,QACA,OACA,cACA,wBACA,eACA,yBACA,YACA,mBACA,eACA,aACA,eACA,yBACA,cACA,SACA,UACA,OACA,oBACA,kBACA,mBACA,WACA,UACA,UACA,kBACA,OACA,iBACA,cACA,aACA,mBACA,sBACA,kBACA,SACA,gBACA,cACA,eACA,aACA,QACA,OACA,aACA,YACA,aACA,YACA,WACA,YACA,WACA,YACA,SACA,OACA,SACA,aACA,kBACA,UACA,QACA,UACA,UACA,gBACA,iBACA,gBACA,gBACA,WACA,gBACA,aACA,aACA,UACA,iBACA,eACA,gBACA,cACA,mBACA,oBACA,oBACA,cACA,qBACA,iBACA,WACA,SACA,SACA,QACA,WACA,eACA,aACA,kBACA,kBACA,wBACA,uBACA,wBACA,cACA,gBACA,iBACA,cACA,iBACA,0BACA,MACA,YACA,mBACA,kBACA,aACA,mBACA,sBACA,sBACA,6BACA,eACA,iBACA,aACA,cACA,SACA,QACA,aACA,eACA,YACA,UAkBF,QACE3E,SAAU,QACVvE,kBAAkB,EAClBG,SAAU,iBACVY,QAAS,KAjBT,MACA,iBACA,cACA,cACA,cACA,IACA,OACA,SACA,SACA,MACA,KAOuBrhC,KAAK,KAAO,IACnCgjB,UAGEmb,EAAKmI,kBACLnI,EAAKkI,iBAGLlI,EAAKsI,oBACLtI,EAAKuI,qBAGLyC,GAIElI,MAAO,4BAA8BsI,EACrCzF,aAAa,EACb9gB,WACGrlC,UAAW,iBAAkBsjD,MAAO,gCAMvCA,MAAO,4BAA8BsI,EACrCzF,aAAa,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,OAASsB,QAjK5CtB,MAAS,WAAYpjG,QAAW,QAClC,WACEojG,MAAS,SAAUpjG,QAAW,eAChC,OACA,SACA,WACA,SACA,QACA,UAIE+T,EAkLJ,SAAiB0wF,GACf,MAAOv8F,GAAOu8F,EAAS,SAASp3F,EAAQq3F,GACtC,MAAOr3F,IAAUxM,OAAO,OACtB6jG,EAAM1kG,SAAWskG,EAAQI,IACvB,MAAO,KAAKnkG,KAAKgsD,KAAQm4C,EAAMtB,OAASsB,OArL9C,YACA,QACA,gBACA,SACA,SACA,WACA,WACA,SACA,QACA,SACA,eACA,OACA,YACA,WACA,YACA,YACA,WACEtB,MAAS,iBAAkBpjG,QAAW,QACxC,SACA,eACA,WACA,YACA,QACA,SACA,YACEojG,MAAS,mBAAoBpjG,QAAW,kBAC1C,aACEojG,MAAS,OAAQpjG,QAAW,+BAC9B,WACA,eACEojG,MAAS,cAAepjG,QAAW,QACrC,UACA,WACA,WACA,cACA,cACEojG,MAAS,aAAcpjG,QAAW,SACpC,SACEojG,MAAS,QAASpjG,QAAW,OAC/B,UACEojG,MAAS,gBAAiBpjG,QAAW,mBACrCojG,MAAS,UAAWpjG,QAAW,0BAC/BojG,MAAS,kBAAmBpjG,QAAW,UACvCojG,MAAS,KAAMpjG,QAAW,aAC1BojG,MAAS,KAAMpjG,QAAW,QAC5B,WAIEsmG,EAAU9B,IACVpB,MAAS,aAAcpjG,QAAW,QACpC,cACEojG,MAAS,WAAYpjG,QAAW,aAChCojG,MAAS,YAAapjG,QAAW,aACjCojG,MAAS,YAAapjG,QAAW,aACjCojG,MAAS,YAAapjG,QAAW,aACjCojG,MAAS,YAAapjG,QAAW,YACjCojG,MAAS,YAAapjG,QAAW,YACjCojG,MAAS,iBAAkBpjG,QAAW,YACtCojG,MAAS,YAAapjG,QAAW,YACjCojG,MAAS,iBAAkBpjG,QAAW,WACxC,YACA,QACA,OACA,OACA,SACA,UACEojG,MAAS,cAAepjG,QAAW,+BACrC,QACA,OACA,WACA,mBACA,cACA,WACA,eACEojG,MAAS,QAASpjG,QAAW,QAC/B,MACA,YACEojG,MAAS,WAAYpjG,Q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AAE,GAAGC,EAAE,GAAGD,EAAE,IAAIC,EAAE,GAAGD,EAAE,IAAIC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,IAAIC,EAAE,GAAGD,EAAE,IAAIC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,IAAIC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,IAAIC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,IAAIC,EAAE,GAAGD,EAAE,IAAIC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,IAAIC,EAAE,GAAGD,EAAE,IAAIC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,GAAGC,EAAE,IAAID,EAAE,IAAIC,EAAE,IAAID,EAAE,GAAGC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,GAAGC,EAAE,IAAID,EAAE,IAAIC,EAAE,IAAID,EAAE,GAAGC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,IAAIC,EAAE,IAAID,EAAE,IAAIC,EAAE,IAAID,EAAE,GAAGC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,IAAIC,EAAE,IAAID,EAAE,IAAIC,EAAE,IAAID,EAAE,GAAGC,EAAE,IAAID,EAAE,GAAGC,EAAE,IAAID,EAAE,GAAGC,EAAE,IAAID,EAAE,IAAIC,EAAE,IAAID,EAAE,GAAGC,EAAE,IAAID,EAAE,GAAGC,EAAE,IAAID,EAAE,GAAGC,EAAE,IAAID,EAAE,IAAIC,EAAE,IAAID,EAAE,GAAGC,EAAE,IAAID,EAAE,GAAGC,EAAE,IAAID,EAAE,IAAIC,EAAE,IAAID,EAAE,IAAIC,EAAE,IAAID,EAAE,GAAGC,EAAE,IAAID,EAAE,GAAGC,EAAE,IAAID,EAAE,IAAIC,EAAE,IAAID,EAAE,IAAIC,EAAE,KAAK,QAASwG,GAAEzG,GAAG,GAAIC,GAAED,EAAEyoI,KAAK,CAAE,SAAQzoI,EAAE0oI,KAAK,GAAG,KAAK1oI,EAAE2oI,MAAM,GAAG,KAAK3oI,EAAE4oI,MAAM,KAAK,EAAEjmI,KAAKkmI,IAAI5oI,EAAE,QAASxI,GAAEuI,GAAG,OAAOA,EAAE8vB,GAAG,IAAI,UAAU,GAAI7vB,GAAEwG,EAAEzG,EAAEonC,EAAE,GAAI,QAAO,EAAE,EAAE,EAAE,EAAE,EAAEzkC,KAAKojI,IAAI9lI,GAAG0C,KAAKkjI,IAAI5lI,GAAG,EAAE,GAAG0C,KAAKkjI,IAAI5lI,GAAG0C,KAAKojI,IAAI9lI,GAAG,EAAE,EAAE,EAAE,EAAE,EAAG,KAAI,UAAU,GAAIA,GAAEwG,EAAEzG,EAAEonC,EAAE,GAAI,QAAOzkC,KAAKojI,IAAI9lI,GAAG,GAAG0C,KAAKkjI,IAAI5lI,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE0C,KAAKkjI,IAAI5lI,GAAG,EAAE0C,KAAKojI,IAAI9lI,GAAG,EAAE,EAAE,EAAE,EAAE,EAAG,KAAI,SAAS,IAAI,UAAU,GAAIA,GAAEwG,EAAEzG,EAAEonC,EAAE,GAAI,QAAOzkC,KAAKojI,IAAI9lI,GAAG0C,KAAKkjI,IAAI5lI,GAAG,EAAE,GAAG0C,KAAKkjI,IAAI5lI,GAAG0C,KAAKojI,IAAI9lI,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAG,KAAI,WAAW,GAAIqP,GAAEtP,EAAEonC,EAAE,GAAGA,EAAEpnC,EAAEonC,EAAE,GAAG3vC,EAAEuI,EAAEonC,EAAE,GAAGnnC,EAAEwG,EAAEzG,EAAEonC,EAAE,IAAI/B,EAAE/1B,EAAEA,EAAE83B,EAAEA,EAAE3vC,EAAEA,CAAE,IAAG,IAAI4tC,EAAE/1B,EAAE,EAAE83B,EAAE,EAAE3vC,EAAE,MAAO,IAAG,IAAI4tC,EAAE,CAAC,GAAI8C,GAAExlC,KAAKmjI,KAAKzgG,EAAG/1B,IAAG64B,EAAEf,GAAGe,EAAE1wC,GAAG0wC,EAAE,GAAI1gD,GAAEkb,KAAKkjI,IAAI5lI,EAAE,GAAGqa,EAAE7yB,EAAEkb,KAAKojI,IAAI9lI,EAAE,GAAGma,EAAE3yB,EAAEA,CAAE,QAAO,EAAE,GAAG2/C,EAAEA,EAAE3vC,EAAEA,GAAG2iB,EAAE,GAAG9K,EAAE83B,EAAEhtB,EAAE3iB,EAAE6iB,GAAG,GAAGhL,EAAE7X,EAAE2iB,EAAEgtB,EAAE9sB,GAAG,EAAE,GAAGhL,EAAE83B,EAAEhtB,EAAE3iB,EAAE6iB,GAAG,EAAE,GAAGhL,EAAEA,EAAE7X,EAAEA,GAAG2iB,EAAE,GAAGgtB,EAAE3vC,EAAE2iB,EAAE9K,EAAEgL,GAAG,EAAE,GAAGhL,EAAE7X,EAAE2iB,EAAEgtB,EAAE9sB,GAAG,GAAG8sB,EAAE3vC,EAAE2iB,EAAE9K,EAAEgL,GAAG,EAAE,GAAGhL,EAAEA,EAAE83B,EAAEA,GAAGhtB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAG,KAAI,QAAQ,OAAOpa,EAAEonC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAEpnC,EAAEonC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAG,KAAI,SAAS,OAAOpnC,EAAEonC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAG,KAAI,SAAS,OAAO,EAAE,EAAE,EAAE,EAAE,EAAEpnC,EAAEonC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAG,KAAI,SAAS,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEpnC,EAAEonC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAG,KAAI,UAAU,OAAOpnC,EAAEonC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAEpnC,EAAEonC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAEpnC,EAAEonC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAG,KAAI,OAAO,GAAI1pB,GAAEjX,EAAEzG,EAAEonC,EAAE,IAAI9vC,EAAEmP,EAAEzG,EAAEonC,EAAE,GAAI,QAAO,EAAEzkC,KAAKmmI,IAAIxxI,GAAG,EAAE,EAAEqL,KAAKmmI,IAAIprH,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAG,KAAI,QAAQ,GAAIzd,GAAEwG,EAAEzG,EAAEonC,EAAE,GAAI,QAAO,EAAE,EAAE,EAAE,EAAEzkC,KAAKmmI,IAAI7oI,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAG,KAAI,QAAQ,GAAIA,GAAEwG,EAAEzG,EAAEonC,EAAE,GAAI,QAAO,EAAEzkC,KAAKmmI,IAAI7oI,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAG,KAAI,YAAY,GAAIqP,GAAEtP,EAAEonC,EAAE,GAAG5nB,IAAI,EAAE4nB,EAAEpnC,EAAEonC,EAAE,GAAG5nB,IAAI,CAAE,QAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAElQ,EAAE83B,EAAE,EAAE,EAAG,KAAI,aAAa,GAAI93B,GAAEtP,EAAEonC,EAAE,GAAG5nB,IAAI,CAAE,QAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAElQ,EAAE,EAAE,EAAE,EAAG,KAAI,aAAa,GAAI83B,GAAEpnC,EAAEonC,EAAE,GAAG5nB,IAAI,CAAE,QAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE4nB,EAAE,EAAE,EAAG,KAAI,aAAa,GAAI3vC,GAAEuI,EAAEonC,EAAE,GAAG5nB,IAAI,CAAE,QAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE/nB,EAAE,EAAG,KAAI,cAAc,GAAI6X,GAAEtP,EAAEonC,EAAE,GAAG5nB,IAAI,EAAE4nB,EAAEpnC,EAAEonC,EAAE,GAAG5nB,IAAI,EAAE/nB,EAAEuI,EAAEonC,EAAE,GAAG5nB,IAAI,CAAE,QAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAElQ,EAAE83B,EAAE3vC,EAAE,EAAG,KAAI,cAAc,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEuI,EAAEonC,EAAE,GAAG5nB,IAAI,EAAExf,EAAEonC,EAAE,GAAG5nB,GAAG,EAAE,EAAE,EAAE,EAAE,EAAG,KAAI,SAAS,OAAOxf,EAAEonC,EAAE,GAAGpnC,EAAEonC,EAAE,GAAG,EAAE,EAAEpnC,EAAEonC,EAAE,GAAGpnC,EAAEonC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEpnC,EAAEonC,EAAE,GAAGpnC,EAAEonC,EAAE,GAAG,EAAE,EAAG,KAAI,WAAW,MAAOpnC,GAAEonC,GAAG,QAAS/B,GAAErlC,GAAG,MAAO,KAAIA,EAAE7Z,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG6Z,EAAE3Q,IAAIoI,GAAGpB,OAAO+wC,GAAG,QAASe,GAAEnoC,GAAG,OAAOvY,EAAE49C,EAAErlC,KAAK,GAAIvY,GAAE,WAAW,QAASuY,GAAEA,GAAG,MAAOA,GAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAG,QAASC,GAAEA,GAAG,IAAI,GAAIqP,GAAE,EAAEtP,EAAEC,GAAGmnC,EAAEnnC,EAAE,GAAG,GAAGwG,EAAExG,EAAE,GAAG,GAAGxI,EAAEwI,EAAE,GAAG,GAAGolC,EAAEplC,EAAE,GAAG,GAAGkoC,EAAEloC,EAAE,GAAG,GAAGxY,EAAEwY,EAAE,GAAG,GAAGqa,EAAEra,EAAE,GAAG,GAAGma,EAAEna,EAAE,GAAG,GAAGyd,EAAEzd,EAAE,GAAG,GAAG3I,KAAK6wC,EAAEzqB,EAAEj2B,EAAE2yB,GAAG9K,GAAG7X,EAAE2iB,EAAE3T,EAAEiX,GAAGpO,GAAG7I,EAAEhf,EAAEgQ,EAAE0wC,GAAG74B,EAAE,KAAK7nB,EAAE6yB,EAAE+qB,EAAE3nB,GAAGpO,GAAG83B,EAAE1pB,EAAEjmB,EAAE6iB,GAAGhL,GAAG7X,EAAE4tC,EAAE+B,EAAE3/C,GAAG6nB,EAAE,KAAK+1B,EAAEjrB,EAAE+tB,EAAE7tB,GAAGhL,GAAGgL,EAAE7T,EAAE2gC,EAAEhtB,GAAG9K,GAAG83B,EAAEe,EAAE1hC,EAAE4+B,GAAG/1B,EAAE,IAAItL,KAAKqqD,EAAE,EAAEA,EAAE,EAAEA,IAAI,CAAC,IAAI,GAAI7hE,GAAE,EAAE2wI,EAAE,EAAEA,EAAE,EAAEA,IAAI3wI,GAAGyT,EAAE,GAAGk9H,GAAG7lI,EAAE6lI,GAAG9uE,EAAGrqD,GAAE/Y,KAAKuB,GAAG,MAAOwX,GAAE/Y,KAAK,GAAGqM,EAAErM,KAAK+Y,GAAG1M,EAAE,QAAS8vC,GAAEpnC,GAAG,QAAQA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,KAAKA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,KAAKA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,KAAKA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,KAAK,QAASyG,GAAEzG,EAAEC,GAAG,IAAI,GAAIqP,MAAK83B,EAAE,EAAEA,EAAE,EAAEA,IAAI,CAAC,IAAI,GAAI3gC,GAAE,EAAEhP,EAAE,EAAEA,EAAE,EAAEA,IAAIgP,GAAGzG,EAAEvI,GAAGwI,EAAExI,GAAG2vC,EAAG93B,GAAErkB,KAAKwb,GAAG,MAAO6I,GAAE,QAAS7X,GAAEuI,GAAG,GAAIC,GAAEolC,EAAErlC,EAAG,QAAOA,EAAE,GAAGC,EAAED,EAAE,GAAGC,EAAED,EAAE,GAAGC,GAAG,QAASolC,GAAErlC,GAAG,MAAO2C,MAAKmjI,KAAK9lI,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,IAAI,QAASmoC,GAAEnoC,EAAEC,EAAEqP,EAAE83B,GAAG,OAAO93B,EAAEtP,EAAE,GAAGonC,EAAEnnC,EAAE,GAAGqP,EAAEtP,EAAE,GAAGonC,EAAEnnC,EAAE,GAAGqP,EAAEtP,EAAE,GAAGonC,EAAEnnC,EAAE,IAAI,QAASxY,GAAEuY,EAAEC,GAAG,OAAOD,EAAE,GAAGC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,GAAGC,EAAE,IAAI,QAASqa,GAAEA,GAAG,GAAIF,IAAGE,EAAEl1B,MAAM,EAAE,GAAGk1B,EAAEl1B,MAAM,EAAE,GAAGk1B,EAAEl1B,MAAM,EAAE,IAAIk1B,EAAEl1B,MAAM,GAAG,IAAK,IAAG,IAAIg1B,EAAE,GAAG,GAAG,MAAO,KAAK,KAAI,GAAIsD,MAAKpmB,EAAE,EAAEA,EAAE,EAAEA,IAAIomB,EAAEzyB,KAAKmvB,EAAE9iB,GAAGlS,QAAS,KAAI,GAAIkS,GAAE,EAAEA,EAAE,EAAEA,IAAIomB,EAAEpmB,GAAG,GAAG,CAAE,IAAG,IAAI0I,EAAE0d,GAAG,MAAO,KAAK,IAAI1Z,GAAEqqD,IAAKj0C,GAAE,GAAG,IAAIA,EAAE,GAAG,IAAIA,EAAE,GAAG,IAAIi0C,EAAEpjE,KAAKmvB,EAAE,GAAG,IAAIi0C,EAAEpjE,KAAKmvB,EAAE,GAAG,IAAIi0C,EAAEpjE,KAAKmvB,EAAE,GAAG,IAAIi0C,EAAEpjE,KAAKmvB,EAAE,GAAG,IAAIpW,EAAEyC,EAAE4nD,EAAEjnB,EAAEnnC,EAAEyd,MAAM1Z,GAAG,EAAE,EAAE,EAAE,EAAG,IAAIxX,GAAE4tB,EAAE,GAAGh1B,MAAM,EAAE,GAAG+3I,IAAKA,GAAElyI,KAAKmvB,EAAE,GAAGh1B,MAAM,EAAE,GAAI,IAAIm+B,KAAKA,GAAEt4B,KAAKo6C,EAAE83F,EAAE,KAAKA,EAAE,GAAG1lI,EAAE0lI,EAAE,GAAI,IAAIp5H,KAAKo5H,GAAElyI,KAAKmvB,EAAE,GAAGh1B,MAAM,EAAE,IAAI2e,EAAE9Y,KAAKqkB,EAAE6tH,EAAE,GAAGA,EAAE,KAAKA,EAAE,GAAGh1F,EAAEg1F,EAAE,GAAGA,EAAE,GAAG,GAAGp5H,EAAE,IAAIwf,EAAEt4B,KAAKo6C,EAAE83F,EAAE,KAAKA,EAAE,GAAG1lI,EAAE0lI,EAAE,IAAIp5H,EAAE,IAAIwf,EAAE,GAAG45G,EAAElyI,KAAKmvB,EAAE,GAAGh1B,MAAM,EAAE,IAAI2e,EAAE9Y,KAAKqkB,EAAE6tH,EAAE,GAAGA,EAAE,KAAKA,EAAE,GAAGh1F,EAAEg1F,EAAE,GAAGA,EAAE,GAAG,GAAGp5H,EAAE,IAAIA,EAAE9Y,KAAKqkB,EAAE6tH,EAAE,GAAGA,EAAE,KAAKA,EAAE,GAAGh1F,EAAEg1F,EAAE,GAAGA,EAAE,GAAG,GAAGp5H,EAAE,IAAIwf,EAAEt4B,KAAKo6C,EAAE83F,EAAE,KAAKA,EAAE,GAAG1lI,EAAE0lI,EAAE,IAAIp5H,EAAE,IAAIwf,EAAE,GAAGxf,EAAE,IAAIwf,EAAE,EAAG,IAAIuM,GAAEroC,EAAE01I,EAAE,GAAGA,EAAE,GAAI,IAAG7tH,EAAE6tH,EAAE,GAAGrtG,GAAG,EAAE,IAAI,GAAIx4B,GAAE,EAAEA,EAAE,EAAEA,IAAIisB,EAAEjsB,KAAK,EAAE6lI,EAAE7lI,GAAG,KAAK,EAAE6lI,EAAE7lI,GAAG,KAAK,EAAE6lI,EAAE7lI,GAAG,KAAK,CAAE,IAAI4xD,GAAE55D,EAAEyoB,EAAEolH,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAG,CAAE,OAAOplH,GAAE,MAAMmxC,EAAE,GAAGvmD,KAAKmjI,KAAK/tH,GAAGzoB,IAAI6tI,EAAE,GAAG,GAAGA,EAAE,GAAG,IAAIj0E,GAAGi0E,EAAE,GAAG,GAAGA,EAAE,GAAG,IAAIj0E,GAAGi0E,EAAE,GAAG,GAAGA,EAAE,GAAG,IAAIj0E,EAAE,IAAIA,IAAIi0E,EAAE,GAAG,GAAGA,EAAE,GAAG,IAAIA,EAAE,GAAG,GAAGA,EAAE,GAAG,IAAIj0E,EAAE,EAAEvmD,KAAKmjI,KAAK,EAAE3I,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,IAAI7tI,GAAG,IAAI45D,GAAGi0E,EAAE,GAAG,GAAGA,EAAE,GAAG,IAAIj0E,GAAGi0E,EAAE,GAAG,GAAGA,EAAE,GAAG,IAAIj0E,GAAGi0E,EAAE,GAAG,GAAGA,EAAE,GAAG,IAAIj0E,IAAIi0E,EAAE,GAAG,GAAGA,EAAE,GAAG,IAAIj0E,EAAE,EAAEvmD,KAAKmjI,KAAK,EAAE3I,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,IAAI7tI,IAAI6tI,EAAE,GAAG,GAAGA,EAAE,GAAG,IAAIj0E,EAAE,IAAIA,GAAGi0E,EAAE,GAAG,GAAGA,EAAE,GAAG,IAAIj0E,GAAGi0E,EAAE,GAAG,GAAGA,EAAE,GAAG,IAAIj0E,KAAKA,EAAE,EAAEvmD,KAAKmjI,KAAK,EAAE3I,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,IAAI7tI,IAAI6tI,EAAE,GAAG,GAAGA,EAAE,GAAG,IAAIj0E,GAAGi0E,EAAE,GAAG,GAAGA,EAAE,GAAG,IAAIj0E,EAAE,IAAIA,GAAGi0E,EAAE,GAAG,GAAGA,EAAE,GAAG,IAAIj0E,KAAK18D,EAAE+2B,EAAExf,EAAEzU,EAAE0U,GAAG,MAAOsW,KAAKta,GAAE6rC,IAAIv8B,EAAEtP,EAAE+oI,wBAAwB5gG,EAAEnoC,EAAEgpI,sBAAsB3jG,GAAG+B,GAAG,SAASpnC,GAAG,QAASC,GAAED,EAAEC,GAAG,GAAIqP,GAAEtP,EAAEtR,KAAKuR,EAAG,IAAGqP,EAAE,MAAOA,GAAEtP,EAAEqF,WAAWiK,EAAE,GAAGE,cAAcF,EAAE,IAAIA,EAAErP,EAAE9Q,OAAOmgB,EAAEnpB,SAAS,QAASmpB,GAAEtP,EAAEC,GAAGA,EAAEA,EAAE/U,QAAQ,OAAO,GAAI,IAAIokB,GAAEtP,EAAEC,EAAG,IAAGqP,EAAE,OAAOA,EAAE,GAAGA,EAAE,GAAGpkB,QAAQ,OAAO,KAAK,QAASk8C,GAAEpnC,EAAEonC,EAAE3gC,GAAGzG,EAAEsP,EAAEsZ,KAAK,KAAK5oB,EAAG,KAAI,GAAIvI,QAAO,CAAC,GAAI4tC,GAAErlC,EAAEyG,EAAG,KAAI4+B,EAAE,OAAO5tC,EAAEgP,EAAG,IAAGhP,EAAExM,KAAKo6C,EAAE,IAAI5+B,EAAE4+B,EAAE,KAAKA,EAAEplC,EAAEmnC,EAAE3gC,KAAK,IAAI4+B,EAAE,GAAG,OAAO5tC,EAAEgP,EAAGA,GAAE4+B,EAAE,IAAI,QAAS5+B,GAAEzG,EAAEC,GAAG,IAAI,GAAIqP,GAAE,EAAE83B,EAAE,EAAEA,EAAEnnC,EAAE9Z,UAAU,OAAOqgB,KAAKvG,EAAEmnC,KAAK,GAAG93B,GAAG83B,IAAI,GAAG,KAAKnnC,EAAEmnC,GAAG93B,QAAS,IAAG,KAAKrP,EAAEmnC,KAAK93B,IAAI,GAAGA,GAAG83B,IAAI93B,GAAG,GAAG,KAAM,IAAI7I,GAAEzG,EAAEC,EAAE9Q,OAAO,EAAEi4C,GAAI,YAAO,IAAQ3gC,MAAE,IAAQA,EAAExG,EAAE9Q,OAAOi4C,IAAI,QAAS3vC,GAAEuI,EAAEC,GAAG,IAAI,GAAIqP,GAAEtP,EAAEonC,EAAEnnC,EAAEqP,GAAG83B,GAAG93B,EAAE83B,EAAE93B,GAAG83B,EAAEA,GAAG93B,CAAE,OAAOA,GAAEtP,EAAEC,GAAGqP,EAAE83B,GAAG,QAAS/B,GAAErlC,GAAG,MAAO,UAASC,GAAG,GAAIqP,GAAEtP,EAAEC,EAAG,OAAOqP,KAAIA,EAAE,OAAG,IAAQA,GAAG,QAAS64B,GAAEnoC,EAAEC,GAAG,MAAO,UAASqP,GAAG,MAAOtP,GAAEsP,KAAKrP,EAAEqP,IAAI,QAAS7nB,GAAEwY,EAAEqP,GAAG,IAAI,GAAI83B,MAAK3gC,EAAE,EAAEA,EAAExG,EAAE9Z,OAAOsgB,IAAI,CAAC,GAAIhP,GAAEuI,EAAEipI,eAAehpI,EAAEwG,GAAG6I,EAAG,KAAI7X,GAAG,IAAIA,EAAE,GAAG,WAAO,KAASA,EAAE,IAAI2vC,EAAEn8C,KAAKwM,EAAE,IAAI6X,EAAE7X,EAAE,GAAG,GAAG,IAAI6X,EAAE,MAAO83B,GAAE,QAAS9sB,GAAEta,EAAEC,EAAEqP,EAAE83B,EAAE3gC,GAAG,IAAI,GAAI4+B,MAAK8C,KAAK1gD,KAAK6yB,EAAE7iB,EAAE2vC,EAAEjhD,OAAOsgB,EAAEtgB,QAAQi0B,EAAE,EAAEA,EAAEE,EAAEF,IAAI,CAAC,GAAIsD,GAAEzd,EAAEmnC,EAAEhtB,EAAEgtB,EAAEjhD,QAAQsgB,EAAE2T,EAAE3T,EAAEtgB,QAAS,KAAIu3B,EAAE,MAAO2nB,GAAEp6C,KAAKyyB,EAAE,IAAIyqB,EAAEl9C,KAAKyyB,EAAE,IAAIj2B,EAAEwD,KAAKyyB,EAAE,IAAI,OAAO2nB,EAAE8C,EAAE,SAASloC,GAAG,GAAImnC,GAAEnnC,EAAE5Q,IAAI,SAAS2Q,EAAEC,GAAG,MAAOxY,GAAEwY,GAAGD,KAAK0P,KAAKJ,EAAG,OAAOtP,GAAEA,EAAEonC,GAAGA,IAAI,QAAShtB,GAAEpa,EAAEC,EAAEqP,GAAG,IAAI,GAAI83B,MAAK3gC,KAAKhP,KAAK4tC,EAAE,EAAE8C,EAAE,EAAEA,EAAE74B,EAAEnpB,OAAOgiD,IAAI,GAAG,kBAAmB74B,GAAE64B,GAAG,CAAC,GAAI1gD,GAAE6nB,EAAE64B,GAAGnoC,EAAEqlC,GAAGplC,EAAEolC,KAAM+B,GAAEn8C,KAAKxD,EAAE,IAAIgf,EAAExb,KAAKxD,EAAE,IAAIgQ,EAAExM,KAAKxD,EAAE,SAAS,SAASuY,GAAGonC,EAAEn8C,MAAK,GAAIwb,EAAExb,MAAK,GAAIwM,EAAExM,KAAK,WAAW,MAAOqkB,GAAEtP,MAAMmoC,EAAG,QAAOf,EAAE3gC,EAAE,SAASzG,GAAG,IAAI,GAAIC,GAAE,GAAGqP,EAAE,EAAEA,EAAEtP,EAAE7Z,OAAOmpB,IAAIrP,GAAGxI,EAAE6X,GAAGtP,EAAEsP,GAAI,OAAOrP,KAAID,EAAEkpI,aAAajpI,EAAED,EAAEipI,eAAe35H,EAAEtP,EAAEmpI,gBAAgB/hG,EAAEpnC,EAAEopI,qBAAqB3iI,EAAEzG,EAAE+jD,OAAO1e,EAAErlC,EAAE+vH,SAAS5nF,EAAEnoC,EAAEqpI,YAAY5hJ,EAAEuY,EAAEspI,oBAAoBhvH,EAAEsO,KAAK,KAAK,MAAM5oB,EAAEupI,2BAA2BjvH,EAAEta,EAAEwpI,UAAUpvH,GAAGgtB,GAAG,SAASpnC,GAAG,QAASC,GAAEA,GAAG,QAASqP,GAAErP,GAAG,GAAIqP,GAAEtP,EAAEkpI,aAAa,UAAUjpI,EAAG,IAAGqP,EAAE,MAAO83B,GAAEqiG,OAAM,EAAGn6H,CAAE,IAAIA,GAAEtP,EAAE0pI,uBAAuBzpI,EAAG,IAAGqP,EAAE,MAAO83B,GAAEuiG,QAAQ1+I,KAAKqkB,EAAE,IAAIA,CAAE,IAAIA,GAAEtP,EAAE4pI,aAAa3pI,EAAG,OAAOqP,IAAG83B,EAAEksF,MAAMhkH,EAAE,GAAGA,OAAG,GAAO,GAAI83B,IAAGqiG,OAAM,EAAGE,WAAWrW,MAAM,MAAM7sH,EAAEzG,EAAEmpI,gBAAgB75H,EAAE,IAAIrP,EAAG,IAAGwG,GAAGA,EAAE,GAAGtgB,OAAO,OAAOihD,EAAE3gC,EAAE,IAAI,QAAS6I,GAAEA,GAAG,GAAI83B,GAAEpnC,EAAEmpI,gBAAgBlpI,EAAE,KAAKqP;iCAAG,IAAG83B,GAAG,IAAIA,EAAE,GAAG,MAAOA,GAAE,GAAG,QAASA,GAAEnnC,EAAEqP,GAAG,KAAKrP,EAAE0pI,QAAQxjJ,OAAOwc,KAAKwc,IAAIlf,EAAE0pI,QAAQxjJ,OAAOmpB,EAAEq6H,QAAQxjJ,SAAS8Z,EAAE0pI,QAAQ1+I,MAAMu0B,GAAG,GAAI,MAAKlQ,EAAEq6H,QAAQxjJ,OAAOwc,KAAKwc,IAAIlf,EAAE0pI,QAAQxjJ,OAAOmpB,EAAEq6H,QAAQxjJ,SAASmpB,EAAEq6H,QAAQ1+I,MAAMu0B,GAAG,GAAI,IAAGvf,EAAEwpI,OAAOn6H,EAAEm6H,SAASxpI,EAAEqzH,SAAShkH,EAAEgkH,MAAM,CAAC,IAAI,GAAIlsF,GAAE3gC,KAAKhP,MAAM,GAAG4tC,MAAM,GAAG8C,EAAE,EAAEA,EAAEloC,EAAE0pI,QAAQxjJ,OAAOgiD,IAAI,CAAC,GAAI1gD,GAAEuY,EAAE6pI,gBAAgB5pI,EAAE0pI,QAAQxhG,GAAG74B,EAAEq6H,QAAQxhG,GAAG,GAAGA,EAAG1wC,GAAE,GAAGxM,KAAKxD,EAAE,IAAI49C,EAAE,GAAGp6C,KAAKxD,EAAE,IAAIgf,EAAExb,KAAKxD,EAAE,IAAI,GAAGwY,EAAEqzH,OAAOhkH,EAAEgkH,MAAM,CAAC,GAAIh5G,GAAEta,EAAE8pI,YAAY7pI,EAAEqzH,MAAMhkH,EAAEgkH,MAAO77H,GAAE,GAAG6iB,EAAE,GAAG+qB,EAAE,GAAG/qB,EAAE,GAAG8sB,EAAE9sB,EAAE,GAAG,OAAO7iB,EAAE4tC,EAAE,SAASrlC,GAAG,IAAI,GAAIsP,GAAErP,EAAEwpI,MAAM,SAAS,IAAIhyI,EAAE,EAAEA,EAAEgP,EAAEtgB,OAAOsR,IAAI6X,GAAG7I,EAAEhP,GAAGuI,EAAE,GAAGvI,IAAI,GAAI,OAAO2vC,KAAI93B,GAAG83B,EAAEpnC,EAAE,KAAKsP,KAAK,QAAS7I,GAAExG,EAAEqP,EAAE83B,EAAE3gC,GAAG,QAAShP,GAAEuI,GAAG,OAAOypI,MAAMzpI,EAAEszH,OAAO,EAAE,EAAE,EAAE,GAAGqW,UAAUnqH,GAAG,IAAIA,GAAG,IAAIA,GAAG,IAAIA,GAAG,KAAK,IAAI,GAAI6lB,MAAK8C,KAAK1gD,EAAE,EAAEA,EAAE2/C,EAAEjhD,QAAQsB,EAAEgf,EAAEtgB,OAAOsB,IAAI,CAAC,GAAI6yB,GAAE8sB,EAAE3/C,IAAIgQ,EAAEgP,EAAEhf,GAAGgiJ,OAAOrvH,EAAE3T,EAAEhf,IAAIgQ,EAAE2vC,EAAE3/C,GAAGgiJ,MAAOpkG,GAAEp6C,KAAKqvB,GAAG6tB,EAAEl9C,KAAKmvB,GAAG,MAAOpa,GAAEspI,oBAAoBrpI,EAAEqP,EAAE+1B,EAAE8C,GAAG,GAAI1wC,GAAEgP,EAAEmiB,KAAK,KAAKwe,EAAE,KAAMpnC,GAAE4hI,qBAAqBtyH,EAAE7X,GAAG,aAAa,iBAAiB2vC,GAAG,SAASpnC,EAAEC,GAAG,QAASqP,GAAEtP,GAAG,MAAOA,GAAEg4F,QAAQ,GAAG9sG,QAAQ,MAAM,IAAIA,QAAQ,MAAM,IAAI,QAASk8C,GAAEpnC,EAAEC,EAAEqP,GAAG,MAAO3M,MAAKC,IAAI3C,EAAE0C,KAAKwc,IAAInf,EAAEsP,IAAI,QAAS7I,GAAEzG,GAAG,GAAG,2BAA2BwG,KAAKxG,GAAG,MAAO0tC,QAAO1tC,GAAG,QAASvI,GAAEuI,EAAEC,GAAG,OAAOD,EAAEC,EAAEqP,GAAG,QAAS+1B,GAAErlC,EAAEC,GAAG,GAAG,GAAGD,EAAE,MAAOvY,GAAE,EAAE,EAAA,GAAKuY,EAAEC,GAAG,QAASkoC,GAAEnoC,EAAEC,GAAG,OAAOD,EAAEC,EAAE,SAASD,GAAG,MAAO2C,MAAKmqD,MAAM1lB,EAAE,EAAE,EAAA,EAAIpnC,MAAM,QAASvY,GAAEuY,EAAEC,GAAG,MAAO,UAASwG,EAAEhP,GAAG,OAAOgP,EAAEhP,EAAE,SAASgP,GAAG,MAAO6I,GAAE83B,EAAEpnC,EAAEC,EAAEwG,OAAO,QAAS6T,GAAEta,GAAG,GAAIC,GAAED,EAAEyP,OAAO3D,MAAM,cAAe,IAAG,IAAI7L,EAAE9Z,OAAO,CAAC,IAAI,GAAImpB,MAAK83B,EAAE,EAAEA,EAAEnnC,EAAE9Z,OAAOihD,IAAI,CAAC,GAAI3vC,GAAEgP,EAAExG,EAAEmnC,GAAI,QAAG,KAAS3vC,EAAE,MAAO6X,GAAErkB,KAAKwM,GAAG,MAAO6X,IAAG,QAAS8K,GAAEpa,EAAEC,GAAG,GAAGD,EAAE7Z,QAAQ8Z,EAAE9Z,OAAO,OAAO6Z,EAAEC,EAAE,SAASD,GAAG,MAAOA,GAAE3Q,IAAIigB,GAAGI,KAAK,OAAO,QAASgO,GAAE1d,EAAEC,GAAG,OAAOD,EAAEC,EAAE0C,KAAKmqD,OAAO9sD,EAAE+pI,MAAM3iG,EAAEpnC,EAAE4hI,qBAAqBtnH,EAAEF,GAAG,qBAAqBpa,EAAE4hI,qBAAqBn7H,EAAEhf,EAAE,EAAE,EAAA,IAAM,qBAAqB,gBAAgBuY,EAAE4hI,qBAAqBn7H,EAAEhf,EAAE,EAAE,IAAI,UAAU,0BAA0BuY,EAAE4hI,qBAAqBn7H,EAAE4+B,GAAG,YAAY,gBAAgBrlC,EAAE4hI,qBAAqBn7H,EAAE0hC,GAAG,UAAU,WAAWnoC,EAAE4hI,qBAAqBn7H,EAAEiX,GAAG,YAAY1d,EAAEgqI,YAAYvjI,EAAEzG,EAAEiqI,gBAAgB3vH,EAAEta,EAAEkqI,aAAazyI,EAAEuI,EAAEmqI,eAAe76H,GAAG83B,GAAG,SAASpnC,EAAEC,GAAG,QAASqP,GAAEtP,EAAEC,GAAG,GAAG,WAAWD,GAAG,WAAWC,EAAE,OAAO,EAAE,EAAE,SAASqP,GAAG,MAAOA,IAAG,EAAEtP,EAAEsP,GAAG,EAAErP,EAAE,YAAYD,EAAE4hI,qBAAqB1hI,OAAOoP,GAAG,gBAAgB83B,GAAG,SAASpnC,EAAEC,GAAG,QAASqP,GAAEtP,GAAGA,EAAEA,EAAEyP,OAAOhY,EAAE2yI,UAAU,OAAO3yI,EAAE2yI,UAAUpqI,CAAE,IAAIC,GAAExI,EAAE2yI,SAAU,IAAG3yI,EAAE2yI,UAAU,OAAO3yI,EAAE2yI,UAAUpqI,EAAEC,GAAGxI,EAAE2yI,UAAU,CAAC3yI,EAAE4yI,SAAS,EAAE,EAAE,EAAE,EAAG,IAAI/6H,GAAE7X,EAAE6yI,aAAa,EAAE,EAAE,EAAE,GAAG7wH,IAAKhiB,GAAE8yI,UAAU,EAAE,EAAE,EAAE,EAAG,IAAInjG,GAAE93B,EAAE,GAAG,GAAI,QAAOA,EAAE,GAAG83B,EAAE93B,EAAE,GAAG83B,EAAE93B,EAAE,GAAG83B,EAAEA,IAAI,QAASA,GAAEnnC,EAAEqP,GAAG,OAAOrP,EAAEqP,EAAE,SAASrP,GAAoD,GAAGA,EAAE,GAAG,IAAI,GAAImnC,GAAE,EAAEA,EAAE,EAAEA,IAAInnC,EAAEmnC,GAAGzkC,KAAKmqD,MAAvF,SAAW9sD,GAAG,MAAO2C,MAAKwc,IAAI,EAAExc,KAAKC,IAAI,IAAI5C,KAAkDC,EAAEmnC,GAAGnnC,EAAE,IAAK,OAAOA,GAAE,GAAGD,EAAEmqI,eAAenqI,EAAE+pI,MAAM,EAAE,EAAE9pI,EAAE,KAAK,QAAQA,EAAEyP,KAAK,KAAK,MAAM,GAAIjJ,GAAE5M,SAAS86C,gBAAgB,+BAA+B,SAAUluC,GAAEk7F,MAAMl7F,EAAEy3F,OAAO,CAAE,IAAIzmG,GAAEgP,EAAE+jI,WAAW,KAAMxqI,GAAE4hI,qBAAqBtyH,EAAE83B,GAAG,mBAAmB,sBAAsB,oBAAoB,qBAAqB,mBAAmB,QAAQ,OAAO,cAAc,iBAAiB,gBAAgB,aAAa,SAAS,0BAA0BpnC,EAAE4pI,aAAa5pI,EAAEopI,qBAAqBxgH,KAAK,KAAKtZ,GAAGtP,EAAE8pI,YAAY1iG,GAAGA,GAAG,SAASpnC,EAAEC,GAAG,QAASqP,GAAEtP,GAAG,QAASC,KAAI,GAAIA,GAAEkoC,EAAEz5C,KAAKsR,EAAGqlC,GAAEplC,EAAEA,EAAE,OAAG,GAAO,QAASqP,KAAI,GAAItP,GAAE0tC,OAAOrI,EAAG,OAAOplC,KAAID,EAAE,QAASonC,KAAI,GAAG,MAAM/B,EAAE,MAAO/1B,IAAIrP,IAAI,IAAID,GAAEvI,GAAI,OAAM,MAAM4tC,EAAEwd,KAAK5iD,IAAID,GAAG,QAASyG,KAAI,IAAI,GAAIzG,GAAEonC,IAAI,MAAM/B,GAAG,MAAMA,GAAG,CAAC,GAAI/1B,GAAE+1B,CAAEplC,IAAI,IAAIwG,GAAE2gC,GAAI,OAAM93B,EAAEtP,GAAGyG,EAAEzG,GAAGyG,EAAE,MAAOzG,GAAE,QAASvI,KAAI,IAAI,GAAIuI,GAAEyG,IAAI,MAAM4+B,GAAG,MAAMA,GAAG,CAAC,GAAI/1B,GAAE+1B,CAAEplC,IAAI,IAAImnC,GAAE3gC,GAAI,OAAM6I,EAAEtP,GAAGonC,EAAEpnC,GAAGonC,EAAE,MAAOpnC,GAAE,GAAIqlC,GAAE8C,EAAE,2BAA4B,OAAOloC,KAAIxI,IAAI,QAAS2vC,GAAEpnC,EAAEC,GAAG,GAAG,MAAMA,EAAEA,EAAEwP,OAAOD,gBAAgB,KAAKxe,OAAOgP,IAAI,EAAE,OAAOwf,GAAG,EAAG,IAAG,gBAAgBhZ,KAAKvG,GAAG,CAACA,EAAEA,EAAE/U,QAAQ,UAAU,IAAK,IAAIk8C,KAAKnnC,GAAEA,EAAE/U,QAAQ8U,EAAE,SAASA,GAAG,MAAOonC,GAAEpnC,GAAG,KAAK,IAAIA,GAAI,KAAI,GAAIyG,GAAE,KAAKzG,EAAEtY,OAAO,IAAI+P,EAAEwI,EAAE/U,QAAQ,mCAAmC,KAAKA,QAAQ,GAAI8D,QAAO,IAAIyX,EAAE,KAAK,KAAKvb,QAAQ,YAAY,KAAKA,QAAQ,MAAM,IAAIm6C,GAAG,UAAU,eAAe,YAAY,cAAc8C,EAAE,EAAEA,EAAE9C,EAAEl/C,QAAQk/C,EAAE8C,GAAG3hC,KAAK/O,IAAIA,EAAEA,EAAEvM,QAAQm6C,EAAE8C,GAAG,MAAMA,EAAE,GAAGA,GAAI,IAAG,KAAK1wC,EAAE,CAAC,IAAI,GAAIhQ,KAAK2/C,GAAE,CAAC,GAAI9sB,GAAEhL,EAAErP,EAAE/U,QAAQ,GAAI8D,QAAO,IAAIvH,EAAE,KAAK,IAAIyD,QAAQ,GAAI8D,QAAOyX,EAAE,KAAK,MAAO,KAAIm9F,SAAStpF,GAAG,MAAO8sB,GAAE3/C,GAAG6yB,EAAE,MAAO8sB,KAAI,QAAS3gC,GAAEzG,EAAEC,GAAG,MAAOxI,GAAEuI,EAAEC,GAAE,GAAI,QAASxI,GAAEwI,EAAEqP,EAAE83B,GAAG,GAAI3gC,GAAEhP,IAAK,KAAIgP,IAAKxG,GAAExI,EAAExM,KAAKwb,EAAG,KAAIA,IAAK6I,GAAE7X,EAAE3L,QAAQ2a,GAAG,GAAGhP,EAAExM,KAAKwb,EAAG,OAAOxG,GAAExI,EAAEpI,IAAI,SAAS2Q,GAAG,MAAOC,GAAED,IAAI,IAAIsP,EAAE7X,EAAEpI,IAAI,SAAS2Q,GAAG,MAAOsP,GAAEtP,IAAI,KAAKC,EAAEqP,EAAE,SAASrP,GAAG,GAAIqP,GAAErP,EAAE5Q,IAAI,SAASigB,EAAE7I,GAAG,MAAO,IAAGxG,EAAE9Z,QAAQihD,IAAI93B,EAAE3M,KAAKwc,IAAI7P,EAAE,IAAItP,EAAEmqI,eAAe76H,GAAG7X,EAAEgP,KAAKiJ,KAAK,MAAO,OAAOzP,GAAE9Z,OAAO,EAAE,QAAQmpB,EAAE,IAAIA,IAAI,GAAI+1B,GAAE,iDAAiD8C,EAAEf,EAAExe,KAAK,KAAK,GAAI55B,QAAOq2C,EAAE,MAAM59C,EAAE2/C,EAAExe,KAAK,KAAK,GAAI55B,QAAOq2C,EAAE,KAAK,MAAM/qB,EAAE8sB,EAAExe,KAAK,KAAK,qBAAsB5oB,GAAEyqI,YAAYtiG,EAAEnoC,EAAE0qI,qBAAqBjjJ,EAAEuY,EAAE0pI,uBAAuB1pI,EAAEopI,qBAAqBxgH,KAAK,KAAKnhC,GAAGuY,EAAE2qI,WAAWrwH,EAAEta,EAAE6pI,gBAAgBpyI,CAAE,IAAI2iB,GAAEpa,EAAEopI,qBAAqBxgH,KAAK,KAAKuf,GAAGzqB,EAAE1d,EAAEmpI,gBAAgBvgH,SAAK,GAAOxO,EAAE,KAAK9iB,EAAE0I,EAAEmpI,gBAAgBvgH,SAAK,GAAOlL,EAAE,KAAM1d,GAAE4qI,oBAAoBtzI,CAAE,IAAI0M,GAAE,SAAShE,GAAG,GAAIC,GAAE3I,EAAE0I,EAAG,IAAGC,GAAG,IAAIA,EAAE,GAAG,MAAOA,GAAE,IAAIouD,EAAEruD,EAAEspI,oBAAoB1gH,SAAK,GAAOniB,EAAE,KAAKja,EAAEwT,EAAEspI,oBAAoB1gH,SAAK,GAAOylC,EAAE,IAAKruD,GAAE6qI,yBAAyBx8E,EAAEruD,EAAE4hI,qBAAqB59H,EAAExX,GAAG,oBAAoBwT,EAAE4hI,qBAAqBn6I,EAAEgf,GAAG,sBAAsB,qBAAqB,oBAAoB,qBAAqB,mBAAmB,aAAa,YAAY,SAAS,cAAc,aAAa,YAAY,gBAAgB,UAAUzG,EAAE4hI,qBAAqBn6I,EAAEgQ,GAAG,4BAA4B,6BAA6B,yBAAyB,0BAA0B,SAAS,OAAO,iBAAiB,gBAAgB,cAAc,eAAe,aAAa,aAAa,YAAY,iBAAiB,iBAAiB,eAAe,gBAAgB,cAAc,cAAc,QAAQ,eAAe,oBAAoB,cAAc,MAAM,iBAAiB,kBAAkB2vC,GAAG,SAASpnC,EAAEC,GAAG,QAASqP,GAAErP,GAAG,MAAOD,GAAE0pI,uBAAuBzpI,IAAID,EAAEkpI,aAAa,QAAQjpI,GAAG,QAASmnC,GAAEnnC,GAAG,GAAImnC,GAAEpnC,EAAEqpI,aAAarpI,EAAE+jD,OAAO/jD,EAAEkpI,aAAatgH,KAAK,KAAK,UAAU5oB,EAAE+jD,OAAO/jD,EAAEkpI,aAAatgH,KAAK,KAAK,QAAQ5oB,EAAEmpI,gBAAgBvgH,KAAK,KAAKtZ,EAAE,MAAMtP,EAAE+jD,OAAO/jD,EAAEkpI,aAAatgH,KAAK,KAAK,SAAS3oB,EAAG,IAAGmnC,GAAG,GAAGA,EAAE,GAAGjhD,OAAO,MAAOihD,GAAE,GAAG,QAAS3gC,GAAExG,EAAEqP,GAAG,MAAM,QAAQrP,GAAG,QAAQqP,IAAG,GAAG,EAAG,SAAS83B,GAAG,GAAI3gC,GAAE2gC,EAAEnnC,EAAEqP,CAAE,IAAG,QAAQ7I,EAAE,MAAM,MAAO,IAAIhP,GAAEuI,EAAE6pI,gBAAgBpjI,EAAEA,EAAG,OAAOhP,GAAE,GAAGA,EAAE,MAAMuI,EAAE6pI,gBAAgB5pI,EAAEqP,GAAG,QAAS7X,GAAEuI,GAAG,MAAM,QAAQA,EAAE,IAAI,GAAIqlC,GAAErlC,EAAEupI,2BAA2B3gH,KAAK,KAAKnxB,EAAEgP,EAAE,KAAMzG,GAAE8qI,SAAS1jG,EAAEpnC,EAAE+qI,WAAW1lG,EAAErlC,EAAE4hI,qBAAqBx6F,EAAE/B,GAAG,UAAU+B,GAAG,SAASpnC,EAAEC,GAAG,QAASqP,GAAEtP,GAAG,MAAO,UAASC,GAAG,GAAIqP,GAAE,CAAE,OAAOtP,GAAE3Q,IAAI,SAAS2Q,GAAG,MAAOA,KAAIoa,EAAEna,EAAEqP,KAAKtP,KAAK,QAASonC,GAAEpnC,GAAG,MAAOA,GAAE,QAASyG,GAAExG,GAAG,GAAG,SAASA,EAAEA,EAAEuP,cAAcC,QAAQ,QAAS,KAAI,GAAIH,GAAE83B,EAAE,uBAAuB3gC,KAAKhP,EAAE,EAAE6X,EAAE83B,EAAE14C,KAAKuR,IAAI,CAAC,GAAGqP,EAAExpB,OAAO2R,EAAE,MAAOA,GAAE6X,EAAExpB,MAAMwpB,EAAE,GAAGnpB,MAAO,IAAIk/C,GAAE/1B,EAAE,GAAG64B,EAAEnkC,EAAEqhC,EAAG,KAAI8C,EAAE,MAAO,IAAI1gD,GAAE6nB,EAAE,GAAGxD,MAAM,KAAKwO,EAAE6tB,EAAE,EAAG,IAAG7tB,EAAEn0B,OAAOsB,EAAEtB,OAAO,MAAO,KAAI,GAAIi0B,MAAKi0C,EAAE,EAAEA,EAAE/zC,EAAEn0B,OAAOkoE,IAAI,CAAC,GAAI7hE,GAAE2wI,EAAE11I,EAAE4mE,GAAG9qC,EAAEjJ,EAAE+zC,EAAG,QAAG,MAAU7hE,EAAE2wI,GAAGjjH,EAAE,SAASja,GAAG,MAAM,KAAKA,EAAEwP,OAAOnY,EAAE0I,EAAE2qI,WAAW1qI,IAAI+qI,EAAEhrI,EAAEgqI,YAAYz3H,EAAEvS,EAAE0qI,qBAAqBO,EAAEjrI,EAAEyqI,aAAalnH,EAAEhU,eAAe4tH,IAAIn9H,EAAE1I,EAAE0M,EAAEoW,EAAE,GAAG0V,EAAEpS,GAAG6F,IAAI,MAAOnJ,GAAEnvB,KAAKuB,GAAG,GAAGia,EAAExb,MAAM6kC,EAAEuV,EAAE+B,EAAEhtB,IAAIgtB,EAAE54C,WAAWyR,EAAE9Z,OAAO,MAAOsgB,IAAG,QAAShP,GAAEuI,GAAG,MAAOA,GAAEg4F,QAAQ,GAAG9sG,QAAQ,UAAU,IAAI,QAASm6C,GAAEplC,EAAEqP,GAAG,GAAGrP,EAAEirI,oBAAoB57H,EAAE,CAACrP,EAAEirI,kBAAkB57H,CAAE,IAAI83B,GAAEpnC,EAAE+oI,wBAAwB9oI,GAAG,GAAGqP,EAAE47H,oBAAoBjrI,EAAE,CAACqP,EAAE47H,kBAAkBjrI,CAAE,IAAIwG,GAAEzG,EAAE+oI,wBAAwBz5H,GAAG,MAAO,OAAM83B,EAAE,IAAI,MAAM3gC,EAAE,MAAK,KAAK,GAAI,SAASzG,GAAG,MAAOA,GAAEsP,EAAE,GAAG83B,EAAEnnC,EAAE,GAAGmnC,KAAKA,EAAE,GAAGn8C,KAAK,GAAGwb,EAAE,GAAGxb,KAAK,IAAIm8C,EAAE3gC,EAAE,SAASxG,GAAG,GAAIqP,GAAEtP,EAAEimI,KAAK7+F,EAAE,GAAG,GAAG3gC,EAAE,GAAG,GAAGxG,EAAE,GAAI,OAAOD,GAAEgmI,cAAc/lI,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGqP,EAAErP,EAAE,IAAI5Q,IAAIoI,GAAGiY,KAAK,QAAQ,QAASy4B,GAAEnoC,GAAG,MAAOA,GAAE9U,QAAQ,OAAO,IAAI,QAASzD,GAAEuY,GAAG,MAAOA,GAAE9U,QAAQ,eAAe,MAAM,QAASovB,GAAEra,EAAEqP,GAAG,GAAI83B,GAAEpnC,EAAE+oI,0BAAyB,EAAGtiI,GAAE,CAAG,KAAIxG,EAAE9Z,SAASmpB,EAAEnpB,OAAO,CAAC8Z,EAAE9Z,SAASsgB,GAAE,EAAGxG,EAAEqP,EAAEA,KAAM,KAAI,GAAI7X,GAAE,EAAEA,EAAEwI,EAAE9Z,OAAOsR,IAAI,CAAC,GAAI6iB,GAAEra,EAAExI,GAAGq4B,EAAE1V,EAAEna,EAAExI,GAAG2vC,EAAE1pB,EAAE,SAASpD,EAAEnrB,OAAO,EAAE,GAAG,EAAE,CAAEmgB,GAAErkB,MAAM6kC,EAAExV,EAAE8sB,EAAEhtB,EAAE/qB,IAAI,SAAS2Q,GAAG,GAAG,gBAAiBA,GAAE,MAAO0d,EAAE,IAAIzd,KAAK,KAAI,GAAIqP,KAAKtP,GAAEC,EAAEqP,GAAGoO,CAAE,OAAOzd,QAAO,GAA0HouD,MAAK7hE,KAAK2wI,IAAK,IAAGl9H,EAAE9Z,QAAQmpB,EAAEnpB,OAAO,CAAC,IAAIihD,EAAE,MAAO,IAAI7jB,GAAE8hB,EAAEplC,EAAEqP,EAAG++C,IAAG9qC,EAAE,IAAI/2B,GAAG+2B,EAAE,IAAI45G,IAAI,UAAU55G,EAAE,UAAW,KAAI,GAAI9rB,GAAE,EAAEA,EAAEwI,EAAE9Z,OAAOsR,IAAI,CAAC,GAAI6iB,GAAEvW,EAAE9D,EAAExI,GAAGq4B,EAAEA,EAAExgB,EAAE7X,GAAGq4B,EAAEo5B,EAAEjpD,EAAExI,GAAG2vC,EAAE93C,EAAEggB,EAAE7X,GAAG2vC,EAAErvB,EAAE/T,EAAED,GAAGtB,EAAEuB,EAAE8rB,EAAG,IAArT,SAAS9vB,EAAEC,GAAG,MAAM,eAAeD,GAAG,eAAeC,IAAI,UAAUD,GAAG,YAAYA,KAAK,UAAUC,GAAG,YAAYA,IAA0M8D,EAAE+rB,GAAG,CAAC,IAAIsX,EAAE,MAAO,IAAI7jB,GAAE8hB,GAAGplC,EAAExI,KAAK6X,EAAE7X,IAAK42D,GAAEpjE,KAAKs4B,EAAE,IAAI/2B,EAAEvB,KAAKs4B,EAAE,IAAI45G,EAAElyI,MAAM,UAAUs4B,EAAE,UAAU,CAAC,GAAGxf,GAAG+rB,EAAExV,EAAEvW,MAAO,IAAGgU,EAAE,IAAItV,EAAE,IAAI0lC,EAAEpkC,IAAIokC,EAAErY,GAAGxV,EAAE6tB,EAAEpkC,GAAGmlD,EAAEnxC,EAAE,GAAGmxC,GAAG55D,EAAEmT,EAAE,GAAGnT,OAAO,CAAC,IAAIyoB,EAAE,KAAKtV,EAAE,IAAIhb,EAAEsc,IAAItc,EAAEqoC,GAAG,CAAC,IAAIsX,EAAE,MAAO,IAAI7jB,GAAE8hB,EAAEplC,EAAEqP,EAAG++C,IAAG9qC,EAAE,IAAI/2B,GAAG+2B,EAAE,IAAI45G,IAAI,UAAU55G,EAAE,KAAM,OAAMjJ,EAAE7yB,EAAEsc,GAAGmlD,EAAEnxC,EAAE,GAAGmxC,GAAG55D,EAAEmT,EAAE,GAAGnT,GAAG,IAAI,GAAIoT,MAAKo6H,KAAK5iH,KAAK1H,EAAE,EAAEA,EAAE02C,EAAE/iE,OAAOqsB,IAAI,CAAC,GAAI6B,GAAE,gBAAiB60C,GAAE12C,GAAGxS,EAAEkqI,aAAalqI,EAAE6pI,gBAAgBtmH,EAAElP,EAAE60C,EAAE12C,GAAGljB,EAAEkjB,GAAI9P,GAAE8P,GAAG+Q,EAAE,GAAGu5G,EAAEtqH,GAAG+Q,EAAE,GAAGrJ,EAAEjvB,KAAKs4B,EAAE,IAAI8qC,EAAEpjE,KAAKyX,GAAGlW,EAAEvB,KAAK6xI,GAAGK,EAAElyI,MAAMqvB,EAAEJ,KAAK,GAAGzT,EAAE,CAAC,GAAI0K,GAAEk9C,CAAEA,GAAE7hE,EAAEA,EAAE2kB,EAAE,OAAOk9C,EAAE7hE,EAAE,SAASwT,GAAG,MAAOA,GAAE3Q,IAAI,SAAS2Q,EAAEC,GAAG,GAAIqP,GAAEtP,EAAE3Q,IAAI,SAAS2Q,EAAEsP,GAAG,MAAO6tH,GAAEl9H,GAAG,GAAGqP,GAAGtP,KAAK0P,KAAK,IAAK,OAAM,UAAUytH,EAAEl9H,GAAG,IAAI,IAAIqP,EAAExD,MAAM,KAAK3lB,SAASg3I,EAAEl9H,GAAG,GAAG,YAAYk9H,EAAEl9H,GAAG,GAAG,IAAIqP,EAAE,MAAMI,KAAK,OAAO,GAAI0K,GAAE,KAAKsD,GAAG8B,GAAG,GAAGloB,GAAGoxI,IAAI,GAAG1kI,GAAG6+G,QAAQ,UAAUzoG,EAAEA,EAAE,EAAE,EAAEA,EAAEA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAEA,EAAE,EAAE,GAAGgtB,GAAG+jG,UAAU,mBAAmB/jG,GAAGgkG,QAAQ,KAAKC,SAAS,KAAKC,SAAS,KAAKC,SAAS,KAAKC,UAAU,QAAQC,aAAa,KAAKC,OAAO,KAAKp8H,GAAG8K,EAAEA,EAAE,IAAIgtB,GAAGukG,QAAQ,IAAIr8H,GAAG8K,EAAE,EAAE,IAAI9K,GAAG8K,EAAE,KAAKwxH,QAAQ,IAAIt8H,GAAG,EAAE8K,EAAE,IAAI9K,GAAG,EAAE8K,KAAKyxH,QAAQ,IAAIv8H,GAAG,EAAE,EAAE8K,KAAK0xH,SAAS,MAAM1kG,GAAG2kG,MAAM,KAAK,KAAK3kG,GAAG4kG,OAAO,IAAI,KAAK18H,GAAG8K,EAAE9iB,KAAK20I,OAAO,IAAI,KAAK38H,GAAGhY,EAAE8iB,KAAKmnF,WAAW,KAAKjyF,GAAG8K,EAAEA,EAAEsD,IAAI0pB,GAAG8kG,YAAY,IAAI58H,GAAG8K,EAAEsD,EAAEA,IAAIpO,GAAG8K,EAAEsD,KAAKyuH,YAAY,IAAI78H,GAAGoO,EAAEtD,EAAEsD,IAAIpO,GAAGoO,EAAEtD,KAAKgyH,YAAY,IAAI98H,GAAGoO,EAAEA,EAAEtD,KAAKiyH,aAAa,MAAMjlG,GAAIpnC,GAAE4hI,qBAAqBn7H,EAAE6T,GAAG,cAActa,EAAEylI,qBAAqB,SAASxlI,GAAG,GAAIqP,GAAEtP,EAAEgpI,sBAAsBviI,EAAExG,GAAI,OAAM,UAAUxI,EAAE6X,EAAE,IAAI,IAAI7X,EAAE6X,EAAE,IAAI,IAAI7X,EAAE6X,EAAE,IAAI,IAAI7X,EAAE6X,EAAE,IAAI,IAAI7X,EAAE6X,EAAE,KAAK,IAAI7X,EAAE6X,EAAE,KAAK,MAAM83B,GAAG,SAASpnC,GAAG,QAASC,GAAED,GAAG,GAAIC,GAAEytC,OAAO1tC,EAAG,MAAKsf,MAAMrf,IAAIA,EAAE,KAAKA,EAAE,KAAKA,EAAE,KAAK,GAAG,MAAOA,GAAE,QAASqP,GAAErP,GAAG,MAAOA,GAAE,IAAI0C,KAAKmqD,MAAM7sD,EAAE,KAAKA,EAAED,EAAE+pI,MAAM,IAAI,IAAI9pI,GAAG,MAAMA,EAAE,SAAS,MAAMA,EAAE,OAAOC,OAAOD,GAAG,QAASmnC,GAAEpnC,EAAEC,GAAG,OAAOD,EAAEC,EAAEqP,GAAGtP,EAAE4hI,qBAAqB3hI,EAAEmnC,GAAG,iBAAiBA,GAAG,SAASpnC,GAAG,QAASC,GAAED,GAAG,GAAIC,KAAK,KAAI,GAAIqP,KAAKtP,GAAEC,EAAEqP,IAAItP,EAAEsP,EAAG,OAAOrP,GAAE,QAASqP,GAAErP,GAAG,MAAOD,GAAEkpI,aAAa,qCAAqCjpI,IAAID,EAAE0pI,uBAAuBzpI,GAAG,QAASmnC,GAAEnnC,EAAEmnC,GAAG,GAAI3gC,GAAEzG,EAAEmpI,gBAAgB75H,EAAE,IAAI83B,EAAG,IAAG3gC,GAAG,IAAIA,EAAE,GAAG,CAAC,GAAIhP,GAAEgP,EAAE,EAAG,IAAGhP,EAAE,GAAGA,EAAE,IAAI,SAASA,EAAE,GAAGA,EAAE,IAAI,SAAS,GAAGwI,IAAIxI,EAAE,GAAGA,EAAE,KAAK+nB,GAAG,IAAI/nB,EAAEtR,QAAQ8Z,EAAE,CAAC,GAAG,aAAauG,KAAK/O,EAAE,KAAK,aAAa+O,KAAK/O,EAAE,IAAI,CAAC,GAAI0wC,GAAE1wC,EAAE,EAAGA,GAAE,GAAGA,EAAE,GAAGA,EAAE,GAAG0wC,EAAE,GAAG,2BAA2B3hC,KAAK/O,EAAE,KAAK,2BAA2B+O,KAAK/O,EAAE,IAAI,MAAOA,GAAEpI,IAAI,SAAS2Q,GAAG,MAAM,gBAAiBA,GAAEA,EAAEqlC,EAAErlC,OAAO,QAASyG,GAAE2gC,GAAG,GAAI3gC,GAAEzG,EAAEmpI,gBAAgB75H,EAAE,IAAI83B,EAAG,IAAG3gC,EAAE,CAAC,IAAI,GAAIhP,GAAEgP,EAAE,GAAG0hC,IAAIpa,IAAI,KAAKA,IAAI,KAAKtmC,EAAE,EAAE6yB,GAAE,EAAGF,EAAE,EAAEA,EAAE3iB,EAAEtR,OAAOi0B,IAAI,CAAC,GAAIsD,GAAEjmB,EAAE2iB,EAAG,iBAAiBsD,IAAGpD,EAAE,eAAe9T,KAAKkX,GAAGj2B,GAAGgpB,KAAK,EAAEg7C,MAAM,EAAE6gF,OAAO7kJ,EAAEirD,IAAI,EAAE8vF,OAAO,GAAG9kH,GAAGyqB,EAAE1gD,GAAG49C,EAAE3nB,GAAG,UAAUA,GAAGj2B,MAAM6yB,IAAIoD,EAAEzd,EAAEyd,GAAGA,EAAE,MAAMA,EAAE,MAAM,GAAG,KAAKyqB,EAAE1gD,GAAGi2B,EAAEj2B,IAAI6yB,GAAE,GAAI,OAAO6tB,EAAE1hC,EAAE,KAAK,QAAShP,GAAEwI,GAAG,GAAIqP,GAAEtP,EAAEmpI,gBAAgB1iI,EAAE,KAAKxG,EAAG,IAAGqP,GAAG,IAAIA,EAAE,GAAG,MAAOA,GAAE,GAAG,GAAI+1B,IAAG50B,MAAMsd,IAAI,GAAGu+G,QAAQv+G,IAAI,IAAI09B,OAAO19B,IAAI,KAAK2kB,KAAK3kB,IAAI,GAAGy0G,QAAQz0G,IAAI,MAAMoa,EAAEnoC,EAAEspI,oBAAoB1gH,KAAK,KAAK5oB,EAAE6pI,gBAAgB,IAAK7pI,GAAE4hI,qBAAqBx6F,EAAExe,KAAK,KAAK,GAAGuf,GAAG,qBAAqBnoC,EAAE4hI,qBAAqBx6F,EAAExe,KAAK,KAAK,GAAGuf,GAAG,uBAAuBnoC,EAAEusI,gBAAgB9lI,EAAEzG,EAAEwsI,gBAAgBrkG,CAAE,IAAI1gD,GAAEuY,EAAEspI,oBAAoB1gH,KAAK,KAAKuf,EAAE,KAAMnoC,GAAE4hI,qBAAqBnqI,EAAEhQ,GAAG,sBAAsB,qBAAqB2/C,GAAG,SAASpnC,GAAG,QAASC,GAAEA,GAAG,GAAIqP,GAAEtP,EAAEkpI,aAAa,UAAUjpI,EAAG,IAAGqP,GAAGA,EAAE,GAAG,OAAO,UAAUrqB,OAAO+a,EAAEqpI,aAAarpI,EAAE+jD,OAAO/jD,EAAEkpI,aAAatgH,SAAK,GAAO,QAAQwe,EAAEpnC,EAAE+jD,OAAO/jD,EAAEkpI,aAAatgH,SAAK,GAAO,QAAQ5oB,EAAEusI,gBAAgBvsI,EAAE+jD,OAAO/jD,EAAEkpI,aAAatgH,SAAK,GAAO,SAAStZ,EAAE,IAAK,IAAI7X,GAAEuI,EAAEkpI,aAAa,WAAWjpI,EAAG,IAAGxI,GAAGA,EAAE,GAAG,OAAO,WAAWxS,OAAO+a,EAAEqpI,aAAarpI,EAAE+jD,OAAO/jD,EAAEkpI,aAAatgH,SAAK,GAAO,QAAQniB,EAAEzG,EAAE+jD,OAAO/jD,EAAEkpI,aAAatgH,SAAK,GAAO,QAAQ5oB,EAAEusI,gBAAgBvsI,EAAE+jD,OAAO/jD,EAAEkpI,aAAatgH,SAAK,GAAO,SAASnxB,EAAE,IAAK,IAAI4tC,GAAErlC,EAAEkpI,aAAa,WAAWjpI,EAAG,OAAOolC,IAAGA,EAAE,IAAI,WAAWpgD,OAAO+a,EAAEqpI,aAAarpI,EAAE+jD,OAAO/jD,EAAEkpI,aAAatgH,SAAK,GAAO,QAAQ5oB,EAAE+vH,SAAS/vH,EAAEkpI,aAAatgH,SAAK,GAAO,6BAA6B,YAAY5oB,EAAE4qI,oBAAoB5qI,EAAE+jD,OAAO/jD,EAAEkpI,aAAatgH,SAAK,GAAO,SAASyc,EAAE,SAAK,GAAO,QAAS/1B,GAAErP,EAAEqP,GAAG,GAAGrP,EAAE,KAAKqP,EAAE,GAAG,MAAM,UAAUrP,EAAE,GAAGD,EAAEwpI,UAAUvpI,EAAE7a,MAAM,GAAGkqB,EAAElqB,MAAM,IAAI,UAAU4a,EAAE6pI,gBAAgB,OAAO7pI,EAAEwsI,gBAAgB,MAAM,WAAWvsI,EAAE,GAAGD,EAAEwpI,UAAUvpI,EAAE7a,MAAM,GAAGkqB,EAAElqB,MAAM,IAAI,WAAW4a,EAAE6qI,yBAAyB,OAAO7qI,EAAEwsI,gBAAgB,MAAM,WAAWvsI,EAAE,IAAIA,EAAE,IAAIqP,EAAE,GAAGtP,EAAEwpI,UAAUvpI,EAAE7a,MAAM,GAAGkqB,EAAElqB,MAAM,IAAI,WAAW6a,EAAE,GAAGolC,EAAE,UAAM,GAAO,GAAI+B,GAAEpnC,EAAEopI,qBAAqBxgH,KAAK,KAAK5oB,EAAE0qI,sBAAsBjkI,EAAEzG,EAAEmpI,gBAAgBvgH,SAAK,GAAOwe,EAAE,KAAK3vC,EAAEuI,EAAEspI,oBAAoB1gH,SAAK,GAAO5oB,EAAE6pI,gBAAgB,KAAKxkG,EAAErlC,EAAEspI,oBAAoB1gH,SAAK,GAAOnxB,EAAE,IAAKuI,GAAE4hI,qBAAqB3hI,EAAEqP,GAAG,mBAAmB83B,GAAG,SAASpnC,EAAEC,GAAG,QAASqP,GAAEtP,EAAEC,GAAGA,EAAEhb,QAAQ+a,IAAI5Z,QAAQ,SAAS6Z,GAAGA,IAAKpG,UAASub,gBAAgB7nB,QAAQ65C,EAAEpnC,GAAGC,GAAGwG,EAAExG,GAAGD,IAAI,GAAIonC,MAAK3gC,IAAK6I,GAAE,aAAa,kBAAkB,gBAAgBA,EAAE,mBAAmB,0BAA0BA,EAAE,eAAe,sBAAsBA,EAAE,qBAAqB,4BAA4BtP,EAAEipC,aAAa,SAASjpC,GAAG,MAAOonC,GAAEpnC,IAAIA,GAAGA,EAAEwlI,uBAAuB,SAASxlI,GAAG,MAAOyG,GAAEzG,IAAIA,IAAIonC,MAAM,WAAW,OAAG,KAASvtC,SAASvR,cAAc,OAAO84I,YAAYqL,SAAS,CAAC,GAAIzsI,EAAE,IAAGpG,OAAO4uI,aAAaA,YAAY9pH,IAAI,GAAI1e,GAAE,WAAW,MAAOwoI,aAAY9pH,WAAY,IAAI1e,GAAE,WAAW,MAAO4wB,MAAKlS,MAAO,IAAIze,GAAE,SAASD,EAAEC,EAAEqP,GAAG9pB,KAAKgC,OAAOwY,EAAExa,KAAK0lH,YAAYjrG,EAAEza,KAAK2gJ,aAAa72H,EAAE9pB,KAAK+M,KAAK,SAAS/M,KAAKu0C,SAAQ,EAAGv0C,KAAKw0C,YAAW,EAAGx0C,KAAK82C,cAAct8B,EAAExa,KAAKkI,kBAAiB,EAAGlI,KAAK4gJ,WAAWjsG,MAAMksG,UAAU7gJ,KAAK8gJ,UAAU11G,KAAKlS,OAAOpP,EAAE1V,OAAOg9B,QAAQzxC,UAAUi8I,OAAQxnI,QAAOg9B,QAAQzxC,UAAUi8I,QAAQ,SAASh6F,EAAE3gC,GAAG,GAAIhP,GAAE6X,EAAEjqB,KAAKG,KAAK4hD,EAAE3gC,EAAGhP,GAAEi1I,mBAAmBj1I,EAAEg1I,SAAS,IAAK,IAAIpnG,GAAE5tC,EAAEg9B,MAAOh9B,GAAEg9B,OAAO,WAAW4Q,EAAEhgD,KAAKG,KAAM,IAAI8pB,GAAE,GAAIrP,GAAEza,KAAK,KAAKwa,KAAKonC,EAAE5hD,KAAKknJ,gBAAgBznJ,OAAOO,KAAKinJ,UAAUjnJ,KAAKinJ,aAAc3/H,YAAW,WAAWs6B,EAAEhhD,QAAQ,SAAS4Z,GAAGA,EAAE3a,KAAKiqB,EAAE9nB,OAAO8nB,MAAM,GAAI,IAAI64B,GAAE1wC,EAAEsnB,gBAAiBtnB,GAAEsnB,iBAAiB,SAAS/e,EAAEC,GAAG,kBAAmBA,IAAG,UAAUD,EAAExa,KAAKknJ,gBAAgBzhJ,KAAKgV,GAAGkoC,EAAE9iD,KAAKG,KAAKwa,EAAEC,GAAI,IAAIxY,GAAEgQ,EAAE8kC,mBAAoB,OAAO9kC,GAAE8kC,oBAAoB,SAASv8B,EAAEC,GAAG,GAAG,UAAUD,EAAE,CAAC,GAAIsP,GAAE9pB,KAAKknJ,gBAAgB5gJ,QAAQmU,EAAGqP,IAAG,GAAG9pB,KAAKknJ,gBAAgB1zG,OAAO1pB,EAAE,OAAQ7nB,GAAEpC,KAAKG,KAAKwa,EAAEC,IAAIxI,OAAO,SAASuI,GAAG,GAAIC,GAAEpG,SAASub,gBAAgB9F,EAAE,KAAK83B,GAAE,CAAG,KAAI,GAAI3gC,GAAEshH,iBAAiB9nH,GAAG+nH,iBAAiB,WAAWvwH,EAAE,KAAKgP,EAAE,IAAI,GAAI6I,GAAErP,EAAEmhI,SAASgC,SAAS3rI,EAAEA,KAAK28B,SAAS,IAAI9kB,EAAE47F,YAAY,EAAE9jE,EAAE2gF,iBAAiB9nH,GAAG+nH,iBAAiB,YAAYvwH,EAAE,MAAMuI,IAAI,QAAQsP,GAAGA,EAAEmlB,SAAS,IAAI2S,EAAE,CAAC,GAAI/B,GAAEzrC,OAAOg9B,QAAQzxC,UAAUi8I,OAAQxnI,QAAOg9B,QAAQzxC,UAAUi8I,QAAQ,SAASnhI,EAAEqP,GAAG,MAAO1V,QAAO1E,QAAQA,OAAOC,UAAUjQ,MAAMC,UAAUqM,MAAMyO,EAAE/K,OAAOC,YAAY8K,EAAE/a,MAAMsM,KAAKyO,IAAI/a,MAAMiL,QAAQ8P,IAAI,OAAOA,IAAIA,EAAED,EAAEghI,mBAAmB/gI,IAAIolC,EAAEhgD,KAAKG,KAAKya,EAAEqP,MAAMA,GAAGrP,EAAEwlH,KAAKzlH,MAAM,WAAW,MAAOxa;;ACRxj8C,QAAS6qE,QAAQ7nD,EAAIssB,GAYnB,QAAS5R,KAEP,IAAK,GADDhtB,GAAO,GAAIhR,OAAMI,UAAUa,QACtBsB,EAAI,EAAGA,EAAIyO,EAAK/P,OAAQsB,IAC/ByO,EAAKzO,GAAKnC,UAAUmC,EAEtB,IAAIguB,GAAMjN,EAAGjjB,MAAMC,KAAM0Q,GACrB4+B,EAAK5+B,EAAKA,EAAK/P,OAAO,EAM1B,OALmB,kBAARsvB,IAAsBA,IAAQqf,GACvCxtC,OAAOuE,KAAKipC,GAAI1uC,QAAQ,SAAUg0B,GAChC3E,EAAI2E,GAAK0a,EAAG1a,KAGT3E,EAvBT,GAAIjN,GAAMssB,EAAI,MAAOu7B,QAAO7nD,GAAIssB,EAEhC,IAAkB,kBAAPtsB,GACT,KAAM,IAAIzB,WAAU,wBAMtB,OAJAzf,QAAOuE,KAAK2c,GAAIpiB,QAAQ,SAAUg0B,GAChC8I,EAAQ9I,GAAK5R,EAAG4R,KAGX8I,EAXT97B,OAAOd,QAAU+pE;;ACAjB,QAASlgE,SAAQ1J,GACb,MAA8B,mBAAvByc,SAAS7d,KAAKoB,GANzB,GAAIkmJ,eAAgBznJ,MAAMiL,QACtB+S,SAAW5b,OAAOnC,UAAU+d,QAEhC9b,QAAOd,QAAUqmJ,eAAiBx8I;;ACClC,QAAS2/D,UAASrpE,GACd,MAA8B,oBAAvByc,SAAS7d,KAAKoB,GALzB,GAAIyc,UAAW5b,OAAOnC,UAAU+d,QAEhC9b,QAAOd,QAAUwpE;;ACEjB,QAASzpB,UAGL,IAAK,GAFD7+C,MAEKC,EAAI,EAAGA,EAAInC,UAAUa,OAAQsB,IAAK,CACvC,GAAIC,GAASpC,UAAUmC,EAEvB,KAAK,GAAIE,KAAOD,GACRE,eAAevC,KAAKqC,EAAQC,KAC5BH,EAAOG,GAAOD,EAAOC,IAKjC,MAAOH,GAjBXJ,OAAOd,QAAU+/C,MAEjB,IAAIz+C,gBAAiBN,OAAOnC,UAAUyC;;YCCtC,SAASglJ,YAAWC,GACnB,OACCt6I,KAAAA,KACAs6I,QAAAA,0EANaD,UACR,IAAMr6I,MAAAA,QAAAA,KAAO;;qFCMpB,QAASu6I,eAAcC,GACtB,MAAO,UAACjwG,EAAUkwG,GACjB,GAAMrjJ,GAAQqjJ,IACRn/I,EAAWlE,EAAMsjJ,QAAQC,0BACzB//E,EAASggF,WAAAzmJ,QAASupB,MAAMpiB,EAASnE,MAAMhC,QACvCqQ,EAAWo1D,EAAOvgE,SAClBskG,EAAMk8C,OAAA1mJ,QAAKyqG,QAAQp5F,GAEnBs1I,EAAU1jJ,EAAMwE,QAAQm/I,MAAMh1I,KAAK,SAAAoxC,GACxC,MAAwB,SAAjBA,EAAKqjG,SAAsBrjG,EAAKn3C,OAAS2+F,EAAI9rG,MAAM,KAGrDmN,EAAmB,UAAZw6I,GAAuBM,EACnC,SACAlgF,EAAOzjE,MAAM6I,KAER7K,EAASylJ,WAAAzmJ,QAASygD,QACvBv6C,SAAawgJ,OAAA1mJ,QAAKuqG,QAAQl5F,GAA1B,IAAuCg1I,EAAU77C,EACjDxnG,OAAAA,EAAAA,UAAAA,YACIyjE,EAAOzjE,OACV6I,KAAAA,KAIFuqC,IAAS,EAAAzL,EAAAk8G,gBACR7jJ,OACChC,OAAAA,qLAjCJ8lJ,MAAA5mJ,QAAA,6CACA6mJ,UAAA7mJ,QAAA,mEACAyqC,EAAAzqC,QAAA,sBAEekmJ,aACR,IAAMv6I,MAAAA,QAAAA,KAAO,gBAkCpBu6I,eAAcv6I,KAAOA;;qFCjCrB,QAASm7I,mBAAkB75C,GAC1B,MAAO,UAAC/2D,EAAUkwG,GACjB,GAAMn/I,GAAWm/I,IAAWC,QAAQC,0BAC9B//E,EAASggF,WAAAzmJ,QAASupB,MAAMpiB,EAASjB,UACjCA,EAAWugJ,WAAAzmJ,QAASygD,QAAT,EAAAg+D,UAAAz+G,YACbymE,GACHzjE,OACCmqG,YAAAA,KAIF/2D,IAAS,EAAAzL,EAAAk8G,gBAAe3gJ,SAAAA,oLAjB1BykC,EAAAzqC,QAAA,MACA6mJ,UAAA7mJ,QAAA,mFAEe8mJ,iBACR,IAAMn7I,MAAAA,QAAAA,KAAO,oBAiBpBm7I,mBAAkBn7I,KAAOA;;qFCbzB,QAASo7I,YAAWx9H,GAGnB,MAFAy9H,UAAAlnJ,QAAOmhB,UAAP,KAAoBsI,EAApB,aAAA,EAAAlG,SAAAvjB,SAAoBypB,GAAO,SAAU,sDAE9B,SAAC2sB,EAAUkwG,GACjB,GAAMn/I,GAAWm/I,IAAWC,QAAQC,0BAC9B//E,EAASggF,WAAAzmJ,QAASupB,MAAMpiB,EAASnE,MAAMhC,QAAU,IACjD6K,GAAO,EAAAs7I,QAAAC,WAAU,SAAU,eAAgB39H,GAASA,EAAQ,SAC5DzmB,GAAS6I,KAAAA,GACT7K,EAASylJ,WAAAzmJ,QAASygD,QAAO,EAAA0mG,QAAAE,UAAU5gF,GAASzjE,MAAAA,IAClDozC,IAAS,EAAAzL,EAAAk8G,gBAAe7jJ,OAAQhC,OAAAA,iLAjBlCsmJ,QAAApnJ,QAAA,mDACAinJ,QAAAjnJ,QAAA,UACA6mJ,UAAA7mJ,QAAA,mEACAyqC,EAAAzqC,QAAA,sBAEe+mJ,UACR,IAAMp7I,MAAAA,QAAAA,KAAO,aAepBo7I,YAAWp7I,KAAOA;;YChBlB,SAAS07I,qBACR,MAAO,UAAAnxG,GACNA,GAAS,EAAAzL,EAAA68G,uBACTpxG,GAAS,EAAAzL,EAAAk8G,gBACR7jJ,OACCykJ,MAAS,KACTC,SAAY,KACZC,eAAgB,KAChB3mJ,OAAU,KACV4mJ,kBAAmB,oFAdvB,IAAAj9G,GAAAzqC,QAAA,sBAEeqnJ,iBACR,IAAM17I,MAAAA,QAAAA,KAAO,sBAiBpB07I,mBAAkB17I,KAAOA;;mECpBzB,IAAAg8I,eAAA3nJ,QAAA,kCACe,EAAA2nJ,cAAAC,cAAa,sBAAuB,SAAA9hJ,GAAA,OAAuBi1G,MAAvBj1G,EAAEi1G,MAA4BzD,OAA9BxxG,EAASwxG;;mECD5D,IAAAqwC,eAAA3nJ,QAAA,kCACe,EAAA2nJ,cAAAC,cAAa;;mECD5B,IAAAD,eAAA3nJ,QAAA,kCACe,EAAA2nJ,cAAAC,cAAa;;qFCK5B,QAASC,eAAc/hB,GACtB,MAAO,UAAA3gE,GACN,OAAO,EAAA2iF,UAAAhoJ,SAAeqlE,GACpB11D,OAAO,SAACs4I,EAAU/qG,GAAU,GAAAgrG,IAAA,EAAAC,gBAAAnoJ,SACTk9C,EADS,GACrB1hC,EADqB0sI,EAAA,GACfpmI,EADeomI,EAAA,EAK5B,OAHAD,GAASzsI,GAAQ,SAACvY,EAAOsH,GACxB,MAAOuX,GAAG7e,EAAOsH,EAAQy7H,IAEnBiiB,QAKX,QAASG,wBAAuBC,EAAgB51I,GAC/Cy0I,SAAAlnJ,QAAOme,GAAG3f,MAAMiL,QAAQgJ,EAAQ8yH,cAAe,wCAE/C,IAAM7pG,GAAU,WAAa,IAAA,GAAAnsB,GAAA3Q,UAAAa,OAAT+P,EAAShR,MAAA+Q,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAATD,EAASC,GAAA7Q,UAAA6Q,EAAA,IAAA64I,GACI94I,EADJ,GACjB+1H,MADiBrhI,KAAAokJ,KAAAA,CAG5B,KAAI,EAAAC,OAAAvoJ,SAAYulI,GAAc9lI,OAAS,EAAG,CACzC,GAAM+oJ,GAAU/1I,EAAQ8yH,aAAaz0H,OAAO,SAAA23I,GAAA,QAAgBA,IAAcljB,KAC1E2hB,UAAAlnJ,QAAOme,GACa,IAAnBqqI,EAAQ/oJ,OADT,mDAEoD+oJ,EAAQx/H,KAAK,MAIlE,GAAMg9G,IAAO,EAAAmhB,QAAAuB,MAAKnjB,EAAc9yH,EAAQ8yH,cAClClgE,EAAW0iF,cAAc/hB,GAAMqiB,EAErC,QADgB,EAAAR,cAAAc,eAActjF,EAAU5yD,EAAQ4oD,cACzCutF,UAAAA,GAAWp5I,GAGnB,OADAksB,GAAQ6pG,aAAe9yH,EAAQ8yH,aACxB7pG,gXAvCR4rH,QAAApnJ,QAAA,mDACA2nJ,cAAA3nJ,QAAA,iBACAinJ,QAAAjnJ,QAAA,0BAEekoJ;;26HCJRlC,wCACAE,8CACAY,sDACAC,wCACAM,sDACAsB,sDACArB,wDACAsB,gDAKAC,0CACAC,kDACAC,kDACAC,kDACAC,sDACAC,gDACAvC,8CACAwC,oDAEAC,wCACAC,wCACAC,oCACAl/I,gCACAm/I,0CAKAC,8CACAC,oDACAC,wCACAC,0CACAC,kEACAC,8CACAC,4CACAC,sDACAC,0CAEAC;;4cCnCP,QAAAC,GAAwBC,EAAUlE,GAAlC,GAAA5yF,GAAAl0D,CAAA,OAAAirJ,eAAAtqJ,QAAAw+B,KAAA,SAAA+rH,GAAA,OAAA,OAAAA,EAAA18G,KAAA08G,EAAAxrJ,MAAA,IAAA,GAAA,MAAAwrJ,GAAA18G,KAAA,EAAA08G,EAAAxrJ,KAAA,EAEqBsrJ,EAAS92F,MAF9B,KAAA,GAAA,MAEQA,GAFRg3F,EAAAC,KAGQnrJ,EAAQ,GAAI0E,OAAMwvD,EAAKv+C,SAC7B3V,EAAM8mJ,QAAUA,EAJlBoE,EAAAE,OAAA,UAKS,EAAAtD,QAAAE,OAAMhoJ,EAAOk0D,GALtB,KAAA,GAAA,MAAAg3F,GAAA18G,KAAA,EAAA08G,EAAAG,GAAAH,EAAA,MAAA,GAOEA,EAAAG,GAAM11I,SAAU,eACAq1I,EAAS7qB,IADT,qBACiC6qB,EAASM,OAD1C,KACqDN,EAASO,WAC7EL,EAAAG,GAAM11I,SACLgU,KAAK,MACPuhI,EAAAG,GAAMvE,QAAUA,EAXlBoE,EAAAE,OAAA,SAAAF,EAAAG,GAAA,KAAA,IAAA,IAAA,MAAA,MAAAH,GAAAM,SAAAT,EAAAtrJ,OAAA,EAAA,gEALAqoJ,QAAAjnJ,QAAA,UACA4qJ,oBAAA5qJ,QAAA,0BACA6qJ,OAAA7qJ,QAAA,yDACA6mJ,UAAA7mJ,QAAA,oFAkBe,EAAA4qJ,oBAAAE,0BAAyB,oBAAzB,WAAA,GAAAxsC,IAAA,EAAAysC,mBAAAjrJ,SAAAsqJ,cAAAtqJ,QAAAkrJ,KAA8C,QAAAC,GAAMhF,GAAN,GAAAn1H,GAAAhuB,EAAAi2D,EAAAumE,EAAA6qB,CAAA,OAAAC,eAAAtqJ,QAAAw+B,KAAA,SAAA4sH,GAAA,OAAA,OAAAA,EAAAv9G,KAAAu9G,EAAArsJ,MAAA,IAAA,GAAA,MACrDiyB,GAA8Bm1H,EAA9Bn1H,GAAIhuB,EAA0BmjJ,EAA1BnjJ,MAAiBi2D,EAASktF,EAAnB1zI,QAAUwmD,KACtBumE,EAAMinB,WAAAzmJ,QAASygD,QACpBv6C,SAAa+yD,EAAb,eAAgCjoC,EAAhC,QAA2ChuB,MAAAA,IAHgBooJ,EAAArsJ,KAAA,GAMrC,EAAAssJ,QAAArrJ,SAAMw/H,EAN+B,KAAA,GAAA,GAMtD6qB,EANsDe,EAAAZ,OAQxDH,EAASM,QAAU,KARqC,CAAAS,EAAArsJ,KAAA,CAAA,OAAA,MAAAqsJ,GAAArsJ,KAAA,EAS/CusJ,SAASjB,EAAUlE,EAT4B,KAAA,GAAA,KAAAiF,GAAAZ,IAAA,KAAA,GAAA,MAAAY,GAAAX,OAAA,SAYrDJ,EAAS92F,OAZ4C,KAAA,IAAA,IAAA,MAAA,MAAA63F,GAAAP,SAAAM,MAAAjnJ,MAA9C,OAAA,UAAAqnJ,GAAA,MAAA/sC,GAAA3/G,MAAAC,KAAAF;;mECrBf,IAAAipJ,eAAA3nJ,QAAA,kCACe,EAAA2nJ,cAAAC,cAAa;;4cCG5B,QAAAsC,GAAwBC,EAAUlE,GAAlC,GAAA5yF,GAAAl0D,CAAA,OAAAirJ,eAAAtqJ,QAAAw+B,KAAA,SAAA+rH,GAAA,OAAA,OAAAA,EAAA18G,KAAA08G,EAAAxrJ,MAAA,IAAA,GAAA,MAAAwrJ,GAAA18G,KAAA,EAAA08G,EAAAxrJ,KAAA,EAEqBsrJ,EAAS92F,MAF9B,KAAA,GAAA,MAEQA,GAFRg3F,EAAAC,KAGQnrJ,EAAQ,GAAI0E,OAAMwvD,EAAKv+C,SAC7B3V,EAAM8mJ,QAAUA,EAJlBoE,EAAAE,OAAA,UAKS,EAAAtD,QAAAE,OAAMhoJ,EAAOk0D,GALtB,KAAA,GAAA,MAAAg3F,GAAA18G,KAAA,EAAA08G,EAAAG,GAAAH,EAAA,MAAA,GAOEA,EAAAG,GAAM11I,SAAU,eACAq1I,EAAS7qB,IADT,qBACiC6qB,EAASM,OAD1C,KACqDN,EAASO,WAC7EL,EAAAG,GAAM11I,SACLgU,KAAK,MACPuhI,EAAAG,GAAMvE,QAAUA,EAXlBoE,EAAAE,OAAA,SAAAF,EAAAG,GAAA,KAAA,IAAA,IAAA,MAAA,MAAAH,GAAAM,SAAAT,EAAAtrJ,OAAA,EAAA,gEAJAqoJ,QAAAjnJ,QAAA,UACA4qJ,oBAAA5qJ,QAAA,0BACA6qJ,OAAA7qJ,QAAA,0EAkBe,EAAA4qJ,oBAAAE,0BAAyB,oBAAzB,WAAA,GAAAxsC,IAAA,EAAAysC,mBAAAjrJ,SAAAsqJ,cAAAtqJ,QAAAkrJ,KAA8C,QAAAC,GAAMhF,GAAN,GAAAn1H,GAAAioC,EAAAumE,EAAA6qB,EAAAhrJ,EAAA2B,CAAA,OAAAspJ,eAAAtqJ,QAAAw+B,KAAA,SAAA4sH,GAAA,OAAA,OAAAA,EAAAv9G,KAAAu9G,EAAArsJ,MAAA,IAAA,GAAA,MACrDiyB,GAAYm1H,EAAZn1H,GAAIioC,EAAQktF,EAARltF,KACLumE,EAASvmE,EAF6C,YAE7BjoC,EAF6Bo6H,EAAArsJ,KAAA,GAGrC,EAAAssJ,QAAArrJ,SAAMw/H,EAH+B,KAAA,GAAA,GAGtD6qB,EAHsDe,EAAAZ,OAKxDH,EAASM,QAAU,KALqC,CAAAS,EAAArsJ,KAAA,EAAA,OAAA,MAAAqsJ,GAAArsJ,KAAA,EAMvCusJ,SAASjB,EAAUlE,EANoB,KAAA,GAAA,KAMrD9mJ,GANqD+rJ,EAAAZ,IAAA,KAAA,IAAA,MAAAY,GAAArsJ,KAAA,GAUvCsrJ,EAASpmG,MAV8B,KAAA,IAAA,MAUtDjjD,GAVsDoqJ,EAAAZ,KAAAY,EAAAX,OAAA,UAa3Dz5H,GAAAA,EACAhwB,OAAAA,GAd2D,KAAA,IAAA,IAAA,MAAA,MAAAoqJ,GAAAP,SAAAM,MAAAjnJ,MAA9C,OAAA,UAAAqnJ,GAAA,MAAA/sC,GAAA3/G,MAAAC,KAAAF;;qFCZf,QAASmqJ,eAAc,GAAAx7I,GAAAzO,IACtB,OAAA,YAAA,GAAAkH,IAAA,EAAAilJ,mBAAAjrJ,SAAAsqJ,cAAAtqJ,QAAAkrJ,KAAO,QAAAd,GAAOh0G,EAAUkwG,GAAjB,GAAArjJ,GAAAkE,EAAAqkJ,EAAAr+C,EAAAthG,EAAA4/I,EAAAC,EAAAC,EAAA36H,CAAA,OAAAs5H,eAAAtqJ,QAAAw+B,KAAA,SAAA+rH,GAAA,OAAA,OAAAA,EAAA18G,KAAA08G,EAAAxrJ,MAAA,IAAA,GAAA,GACAkE,EAAQqjJ,IAEG,OAAbrjJ,EAAM+tB,GAHJ,CAAAu5H,EAAAxrJ,KAAA,CAAA,OAAA,MAAAwrJ,GAAAE,OAAA,SAAA,KAAA,GAAA,MAOAtjJ,GAAWlE,EAAMsjJ,QAAQC,0BAPzBgF,EAQ0BrkJ,EAASnE,MAAlCmqG,YAAAA,MARDjpG,KAAAsnJ,EAQe,QARfA,EASA3/I,EAAyC,aAAlC66I,OAAA1mJ,QAAKi1D,SAAShyD,EAAM2oJ,UAChC,SAAW3oJ,EAAM4oJ,WAEZJ,GACLz6H,GAAI/tB,EAAM+tB,GACVhuB,OACCmqG,YAAAA,GAED16F,SACCwmD,KAAMh2D,EAAMg2D,OAIRyyF,IACL,EAAA/gH,EAAAq+G,iBAAgByC,IAChB,EAAA9gH,EAAAs+G,kBAAgB,IAGX0C,EAAOD,EAAQ/iJ,IAAIytC,GACnBplB,EAAKy1H,WAAAzmJ,QAASupB,MAAMtmB,EAAM2oJ,UAAY,IAAI1lJ,SAE5C8qB,GAAa,cAAPA,GACT26H,EAAKpnJ,KAAK6xC,GAAS,EAAAzL,EAAAu+G,kBAClBjwF,KAAMh2D,EAAMg2D,KACZk0C,YAAAA,EACAn8E,GAAI/tB,EAAM2oJ,SACV//I,KAAAA,MAnCI0+I,EAAAxrJ,KAAA,GAuCA+sJ,MAAM,IAAMjqI,UAAA7hB,QAAQ+8B,IAAI4uH,GAvCxB,KAAA,IAAA,IAAA,MAAA,MAAApB,GAAAM,SAAAT,EAAA78I,KAAP,OAAA,UAAAw+I,EAAAC,GAAA,MAAAhmJ,GAAAnH,MAAAC,KAAAF,eA2CD,QAASqtJ,MAAKllI,EAASznB,GACtB,MAAO,IAAAuiB,WAAA7hB,QAAY,SAAAgiB,GAAA,MAAWoE,YAAW,WAAA,MAAMpE,GAAQ1iB,IAAQynB,KAGhE,QAAS+kI,OAAM/kI,EAAS8yB,GACvB,GAAMx3B,GAAO,GAAI6nB,KAEjB,OAAOroB,WAAA7hB,QAAQgiB,QAAQ63B,GACrBx3B,KAAK,SAAAvN,GAEL,MAAOm3I,MADO,KAAQ,GAAI/hH,MAAS7nB,GAAQ,IACxBvN,qYA9DtBgyI,MAAA5mJ,QAAA,6CACA2nJ,cAAA3nJ,QAAA,iBAEAyqC,EAAAzqC,QAAA,MACA6mJ,UAAA7mJ,QAAA,mFAEe6oJ;;mECNf,IAAAlB,eAAA3nJ,QAAA,kCACe,EAAA2nJ,cAAAC,cAAa;;YCI5B,SAASqB,qBACR,MAAO,UAAC/yG,EAAUkwG,GACjB,GAAMrjJ,GAAQqjJ,IACRpgJ,EAAWjD,EAAMg2D,IACvB7iB,IAAS,EAAAzL,EAAAk8G,gBAAe3gJ,SAAAA,gFAT1B,IAAAykC,GAAAzqC,QAAA,sBAEeipJ,iBACR,IAAMt9I,MAAAA,QAAAA,KAAO,oBAUpBs9I,mBAAkBt9I,KAAOA;;qFCRzB,QAASu9I,kBACR,MAAO,UAAChzG,EAAUkwG,GAAa,GAAA4F,GACE5F,IAAzBrtF,EADuBizF,EACvBjzF,KAAMjoC,EADiBk7H,EACjBl7H,GAAIm8E,EADa++C,EACb/+C,WACjB,IAAW,OAAPn8E,GAAgB9d,OAAOshB,KAA3B,CAIA,GAAMhuB,GAAOigJ,WAAAzmJ,QAASygD,QACrBv6C,SAAa+yD,EAAb,QAAyBjoC,EAAzB,cACAhuB,OAAQmqG,YAAAA,IAGTj6F,QAAOshB,KAAKhuB,EAAM,sFAjBpB,IAAAugJ,WAAA7mJ,QAAA,mFAEekpJ,cACR,IAAMv9I,MAAAA,QAAAA,KAAO,iBAkBpBu9I,gBAAev9I,KAAOA;;YCftB,SAASg7I,eAAcV,GACtB,MAAO,UAAC/vG,EAAUkwG,GACjB,GAAMrjJ,GAAQqjJ,IACRn/I,EAAWlE,EAAMsjJ,QAAQC,yBAC/BpwG,IAAS,EAAA+1G,kBAAA5nJ,OAAK,EAAA4iJ,QAAAE,UAAUlgJ,EAAUg/I,gFAVpC,IAAAgB,SAAAjnJ,QAAA,UACAisJ,kBAAAjsJ,QAAA,sCAEe2mJ,aACR,IAAMh7I,MAAAA,QAAAA,KAAO,gBAUpBg7I,eAAch7I,KAAOA;;YCZrB,SAASugJ,wBAAuBjG,GAC/B,MAAO,UAAC/vG,EAAUkwG,GACjB,GAAMrjJ,GAAQqjJ,GACd,OAAOlwG,IACNvqC,KAAM,qBACNs6I,SACCnxI,QAASmxI,EAAQnxI,QACjBvN,QAAS0+I,EAAQ1+I,SAAWxE,EAAM+tB,GAClCnQ,MAAOslI,EAAQtlI,MACfmiC,KAAMmjG,EAAQnjG,MAAQmjG,EAAQkG,UAAYppJ,EAAM2oJ,oFAXrCQ,uBAiBfA,uBAAuBvgJ,KAAO;;;qFCXvB,QAASm/I,0BAAyBxvI,EAAM8wI,GAAY,GAAA/+I,GAAAzO,KACpDytJ,EAAUD,GAAcE,WAExB1qI,EAAK,SAAAqkI,GACV,GAAMsG,IAAgB,EAAA5E,cAAAC,cAAgBtsI,EAAhB,YAChBkxI,GAAgB,EAAA7E,cAAAC,cAAgBtsI,EAAhB,YAChBmxI,GAAc,EAAA9E,cAAAC,cAAgBtsI,EAAhB,UACdoxI,GAAe,EAAA/E,cAAAC,cAAgBtsI,EAAhB,UAErB,OAAA,YAAA,GAAAgjG,IAAA,EAAAysC,mBAAAjrJ,SAAAsqJ,cAAAtqJ,QAAAkrJ,KAAO,QAAAC,GAAO/0G,EAAUkwG,GAAjB,GAAAuG,GAAA/3I,CAAA,OAAAw1I,eAAAtqJ,QAAAw+B,KAAA,SAAA4sH,GAAA,OAAA,OAAAA,EAAAv9G,KAAAu9G,EAAArsJ,MAAA,IAAA,GAAA,MACNq3C,GAASu2G,EAAYxG,EAAS2G,MAAOxG,IAC/BuG,EAAezwI,OAAOgK,WAAW,WACtCgwB,EAASq2G,EAActG,EAAS2G,MAAOxG,KACrC,KAJG8E,EAAAv9G,KAAA,EAAAu9G,EAAArsJ,KAAA,EAMgBwtJ,EAAQpG,EAAS/vG,EAAUkwG,EAN3C,KAAA,GAAA,MAMCxxI,GANDs2I,EAAAZ,KAOLpuI,OAAOoK,aAAaqmI,GACpBz2G,EAASs2G,EAAc53I,IARlBs2I,EAAAX,OAAA,SASE31I,EATF,KAAA,IAAA,MAAAs2I,GAAAv9G,KAAA,GAAAu9G,EAAAV,GAAAU,EAAA,MAAA,GAWLhvI,OAAOoK,aAAaqmI,GACpBz2G,EAASw2G,EAAAA,EAAAA,KAZJxB,EAAAX,OAAA,SAAAW,EAAAV,GAAA,KAAA,IAAA,IAAA,MAAA,MAAAU,GAAAP,SAAAM,EAAA59I,IAAA,EAAA,QAAP,OAAA,UAAAy+I,EAAAT,GAAA,MAAA/sC,GAAA3/G,MAAAC,KAAAF,eAkBD,OADAkjB,GAAGirI,OAASvxI,EACLsG,EAGD,QAASkrI,0BAAyBC,EAASvxH,GAAuB,GAAAwxH,GAAdz6I,EAAc7T,UAAAa,OAAA,OAAAyE,KAAAtF,UAAA,GAAAA,UAAA,MAClE4c,EAAOyxI,EAAQF,QAAUE,CAQ/B,OAPAx6I,GAAQ8yH,aAAe9yH,EAAQ8yH,kBACf,EAAA4nB,yBAAAntJ,UAAAktJ,MAAA,EAAAE,iBAAAptJ,SAAAktJ,EACX1xI,EADW,SACIkgB,EAAQyP,OAAS2hH,QADrB,EAAAM,iBAAAptJ,SAAAktJ,EAEX1xI,EAFW,WAEMkgB,EAAQ2xH,SAAWP,QAFzB,EAAAM,iBAAAptJ,SAAAktJ,EAGX1xI,EAHW,WAGMkgB,EAAQ4xH,SAAWR,QAHzB,EAAAM,iBAAAptJ,SAAAktJ,EAIX1xI,EAJW,UAIKkgB,EAAQja,QAAUqrI,OAJvBI,GAKbz6I,yaAtCYu4I,yBAAAA,iCA8BAgC,yBAAAA,wBApChB,IAAAnF,eAAA3nJ,QAAA,iBACAqtJ,wBAAArtJ,QAAA,uGAEM4sJ,MAAQ,SAAA/rJ,GAAA,MAAKA,IACbyrJ,WAAAA,WAAA,GAAAxmJ,IAAA,EAAAilJ,mBAAAjrJ,SAAAsqJ,cAAAtqJ,QAAAkrJ,KAAa,QAAAd,GAAMrpJ,GAAN,MAAAupJ,eAAAtqJ,QAAAw+B,KAAA,SAAA+rH,GAAA,OAAA,OAAAA,EAAA18G,KAAA08G,EAAAxrJ,MAAA,IAAA,GAAA,MAAAwrJ,GAAAE,OAAA,SAAW1pJ,EAAX,KAAA,GAAA,IAAA,MAAA,MAAAwpJ,GAAAM,SAAAT,MAAAlmJ,MAAb,OAAA,UAAA6nJ,GAAA,MAAA/lJ,GAAAnH,MAAAC,KAAAF;;;;YCCN,SAAS0qJ,YAAWnD,GACnB,MAAO,UAAA/vG,GACNA,GAAS,EAAAzL,EAAAk8G,gBACR7jJ,OACCi4G,MAAOkrC,EAAQpqI,EACfy7F,OAAQ2uC,EAAQnqI,iFAVpB,IAAA2uB,GAAAzqC,QAAA,sBAEeopJ,UACR,IAAMz9I,MAAAA,QAAAA,KAAO,aAapBy9I,YAAWz9I,KAAOA;;;YCVlB,SAAS09I,YAAWpD,GACnB,MAAO,UAAC/vG,EAAUkwG,GACjB,QAASt/H,KACRixF,KAAO77F,OAAOs2B,sBAAsB,WACnC,GAAMzvC,GAAQqjJ,GAEVrjJ,GAAMuqJ,YAAYzxI,IAAM0xI,MAAM1xI,GACjCq6B,GACCvqC,KAAM,gBACNs6I,QAASsH,MAAM1xI,IAGb9Y,EAAMyqJ,YAAY1xI,IAAMyxI,MAAMzxI,GACjCo6B,GACCvqC,KAAM,gBACNs6I,QAASsH,MAAMzxI,IAGjBgL,MAIGixF,MACJjxF,IAGDymI,MAAQtH,0EAhCKoD,UACR,IAAM19I,MAAAA,QAAAA,KAAO,cAEhBosG,SAAAA,GACAw1C,UAAAA,EAgCJlE,YAAW19I,KAAOA;;;;;qFC/BlB,QAAS29I,UAASvjJ,GAAM,GAAA0nJ,GACJvxI,OAAZjJ,EADgBw6I,EAChBx6I,QACP,IAAIA,EAAU,CACb,GAAMrS,GAASqS,EAASy6I,eAAe3nJ,IACxB,EAAA4nJ,eAAA7tJ,SAAac,GACrB4qH,UAAY5qH,EAAOgtJ,UAG3B,MAAO,UAAA13G,GACNA,GACCvqC,KAAM,cACNs6I,QAASlgJ,+EAhBZ,IAAA8nJ,eAAA7tJ,QAAA,qFAEespJ,QACR,IAAM39I,MAAAA,QAAAA,KAAO,WAkBpB29I,UAAS39I,KAAOA;;;;YChBhB,SAASvB,QAAOA,GACf,MAAO,UAAA8rC,GACNA,GAAS,EAAAzL,EAAAk8G,gBACR7jJ,OACCsH,OAAAA,iFATJ,IAAAqgC,GAAAzqC,QAAA,sBAEeoK,MACR,IAAMuB,MAAAA,QAAAA,KAAO,QAYpBvB,QAAOuB,KAAOA;;mECfd,IAAAg8I,eAAA3nJ,QAAA,kCACe,EAAA2nJ,cAAAC,cAAa;;YCI5B,SAASkG,uBAAsBC,GAC9B,MAAO,UAAC73G,EAAUkwG,GACjB,OAAsB,KAAX2H,EAAwB,CAClC,GAAMvG,GAAWuG,EAAS,KAAO,SACjC73G,IAAS,EAAAzL,EAAAk8G,gBAAe7jJ,OAAQ0kJ,SAAAA,MAGjC,GAAMA,GAAmC,YAAxBpB,IAAWoB,SAAyB,KAAO,SAC5DtxG,IAAS,EAAAzL,EAAAk8G,gBAAe7jJ,OAAQ0kJ,SAAAA,iFAblC,IAAA/8G,GAAAzqC,QAAA,sBAEe8tJ,qBACR,IAAMniJ,MAAAA,QAAAA,KAAO,yBAcpBmiJ,uBAAsBniJ,KAAOA;;YCZ7B,SAAS89I,oBACR,MAAO,UAACvzG,EAAUkwG,GACjBlwG,GAAS,EAAAzL,EAAAk8G,gBACR7jJ,OACCkrJ,UAAW5H,IAAW4H,wFAT1B,IAAAvjH,GAAAzqC,QAAA,sBAEeypJ,gBACR,IAAM99I,MAAAA,QAAAA,KAAO,oBAYpB89I,kBAAiB99I,KAAOA;;YCVxB,SAAS+9I,cACR,MAAO,UAACxzG,EAAUkwG,GACjB,GAAMz5H,IAAQy5H,IAAWz5H,IACzBupB,IAAS,EAAAzL,EAAAk8G,gBAAe7jJ,OAAQ6pB,KAAAA,iFARlC,IAAA8d,GAAAzqC,QAAA,sBAEe0pJ,UACR,IAAM/9I,MAAAA,QAAAA,KAAO,aASpB+9I,YAAW/9I,KAAOA;;YCPlB,SAASg+I,eACR,MAAO,UAACzzG,EAAUkwG,GACjB,GAAMmB,IAASnB,IAAWmB,KAC1BrxG,IAAS,EAAAzL,EAAAk8G,gBAAe7jJ,OAAQykJ,MAAAA,iFARlC,IAAA98G,GAAAzqC,QAAA,sBAEe2pJ,WACR,IAAMh+I,MAAAA,QAAAA,KAAO,cASpBg+I,aAAYh+I,KAAOA;;YCPnB,SAASi+I,2BACR,MAAO,UAAC1zG,EAAUkwG,GACjB,GAAMoB,GAAmC,cAAxBpB,IAAWoB,SAA2B,KAAO,WAC9DtxG,IAAS,EAAAzL,EAAAk8G,gBAAe7jJ,OAAQ0kJ,SAAAA,iFARlC,IAAA/8G,GAAAzqC,QAAA,sBAEe4pJ,uBACR,IAAMj+I,MAAAA,QAAAA,KAAO,2BASpBi+I,yBAAwBj+I,KAAOA;;YCP/B,SAASk+I,iBACR,MAAO,UAAC3zG,EAAUkwG,GACjB,GAAM5J,GAAU4J,IAAW5J,OAC3BtmG,IAAS,EAAAzL,EAAAk8G,gBAAe7jJ,OAAQ05I,SAAUA,iFAR5C,IAAA/xG,GAAAzqC,QAAA,sBAEe6pJ,aACR,IAAMl+I,MAAAA,QAAAA,KAAO,gBASpBk+I,eAAcl+I,KAAOA;;YCPrB,SAASm+I,gBACR,MAAO,UAAC5zG,EAAUkwG,GACjB,GAAM6H,GAAS7H,IAAW6H,MAC1B/3G,IAAS,EAAAzL,EAAAk8G,gBAAe7jJ,OAAQmrJ,QAASA,iFAR3C,IAAAxjH,GAAAzqC,QAAA,sBAEe8pJ,YACR,IAAMn+I,MAAAA,QAAAA,KAAO,eASpBm+I,cAAan+I,KAAOA;;;YCNpB,SAASo+I,mBAAkBgE,GAC1B,MAAO,YAAM,GAAAN,GACOvxI,OAAZjJ,EADKw6I,EACLx6I,SACDmY,EAAKnY,EAASgzG,cAAc,uBAAyBioC,IAE3D,QAAsB,KAAXH,EAAwB,EACjB96I,EAASk7I,gBAAkB/iI,EAClBA,EAAGgjI,KAAOhjI,EAAGijI,OAChCrsH,KAAK5W,SACN,EACS2iI,EAAS3iI,EAAGijI,MAAQjjI,EAAGgjI,MAC/BpsH,KAAK5W,KAGb,MAAO,UAAA8qB,GACNA,GAAUvqC,KAAM,qGArBnB,IAAAs7I,SAAAjnJ,QAAA,0BACe+pJ,iBACR,IAAMp+I,MAAAA,QAAAA,KAAO,sBAEduiJ,MAAQE,KAAAA,QAAAA,KAAYC,MAAAA,QAAAA,KAsB1BtE,mBAAkBp+I,KAAOA;;;;YCrBzB,SAASq+I,aAAY+D,GACpB,MAAO,UAAC73G,EAAUkwG,GACjB,GAAMkI,GAAQP,IAAuC,SAArB3H,IAAWkI,MAAmB,QAAU,OACxEp4G,IAAS,EAAAzL,EAAAk8G,gBACR7jJ,OACCwrJ,MAAAA,iFAVJ,IAAA7jH,GAAAzqC,QAAA,sBAEegqJ,WACR,IAAMr+I,MAAAA,QAAAA,KAAO,cAapBq+I,aAAYr+I,KAAOA;;mEChBnB,IAAAg8I,eAAA3nJ,QAAA,kCACe,EAAA2nJ,cAAAC,cAAa,gBAAiB,SAAA9hJ,GAAA,OAAuBi1G,MAAvBj1G,EAAEi1G,MAA4BzD,OAA9BxxG,EAASwxG;;;qFCwHtD,QAASi3C,aAAY5f,EAAQp8H,GAC5B,MAAOo8H,GAAOlmI,IAAI+lJ,YAAYj8I,IAG/B,QAASi8I,aAAYj8I,GACpB,MAAO,UAAA5L,GACN,OACC2yG,IAAO,aACPhzG,KAAWiM,EAAQwmD,KAAnB,UAAiCpyD,EAAjC,OACA8nJ,gBAAiB9nJ,IAKpB,QAAS+nJ,wBAAuB9sI,GAC/B,MAAO,YAAa,IAAA,GAAAvS,GAAA3Q,UAAAa,OAAT+P,EAAShR,MAAA+Q,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAATD,EAASC,GAAA7Q,UAAA6Q,EAAA,IAAAo/I,GACgBr/I,EADhB,GACT8wG,SAAUwuC,MADD5qJ,KAAA2qJ,KAAAA,EAEb3oC,EAAO4oC,EAAMh+I,OAAO,SAAAwlB,GAAA,MAAmB,eAAZA,EAAIkjF,MAC/BljF,EAAM4vF,EAAKA,EAAKzmH,OAAS,EAC3B62B,KACHA,EAAIy4H,OAAS,WACZjtI,EAAGwU,EAAI04H,QAAQC,2tBA9InB5tJ,OAAAnB,QAAA,gDACAgvJ,mBAAAhvJ,QAAA,qFACAivJ,YAAAjvJ,QAAA,+DACAkvJ,aAAAlvJ,QAAA,mEAEAmvJ,SAAAnvJ,QAAA,uEACAovJ,SAAApvJ,QAAA,uEACAqvJ,WAAArvJ,QAAA,6EACAsvJ,YAAAtvJ,QAAA,kEAGqBuvJ,mVAEnBrzI,OAAOic,iBAAiB,SAAUv5B,KAAK4wJ,yDAIvCtzI,OAAOy5B,oBAAoB,SAAU/2C,KAAK4wJ,6CAI1C5wJ,KAAK+C,MAAM6tJ,UACVz0C,MAAO7+F,OAAOuzI,WACdn4C,OAAQp7F,OAAOwzI,+CAIR,GACD/tJ,GAAS/C,KAAT+C,MACDguJ,EAAehuJ,EAAMiuJ,SAErBnpJ,GAAY,EAAAopJ,aAAA/vJ,SAAK,eACtBgwJ,4BAA6BnuJ,EAAMouJ,YACnCC,6BAA8BruJ,EAAMsuJ,cAGrC,OACC7uJ,SAAAtB,QAAA4B,cAAA,OAAK+E,UAAWA,GACfrF,QAAAtB,QAAA4B,cAAAwuJ,cAAApwJ,SACCyxB,OAEEjW,KAAM,cACNkrC,QAAS7kD,EAAMwqG,cAGf7wF,KAAM,WACNkrC,QAAS,wCAGXsd,KAAMyqF,YAAY5sJ,EAAMgtI,QAAS51E,KAAMp3D,EAAMwuJ,YAC7ChpI,MAAOxlB,EAAMwlB,MACb04F,oBAAqB6uC,uBAAuB/sJ,EAAMyuJ,iBAEnDhvJ,QAAAtB,QAAA4B,cAAA2uJ,aAAAvwJ,SACCwwJ,cAAe3uJ,EAAM2uJ,cACrBv3F,KAAMp3D,EAAMo3D,KACZ20E,QAAS/rI,EAAMouJ,YACf/B,SAAUrsJ,EAAMqsJ,SAChBuC,UAAW5uJ,EAAM4uJ,UACjB5jI,KAAMhrB,EAAMgrB,KACZ6jI,KAAM7uJ,EAAM8uJ,KACZV,YAAapuJ,EAAMouJ,YACnBW,WAAY/uJ,EAAM+uJ,WAClBd,SAAUD,EACVgB,cAAehvJ,EAAMgvJ,cACrB3qJ,SAAUrE,EAAMqE,SAChBlD,MAAOnB,EAAMmB,MACb8tJ,kBAAmBjvJ,EAAMivJ,kBACzBC,YAAalvJ,EAAMyI,OACnBkkJ,MAAO3sJ,EAAM2sJ,MACbnnI,MAAOxlB,EAAMwlB,MACbI,QAAS5lB,EAAM4lB,UAEhBnmB,QAAAtB,QAAA4B,cAAA,QAAM+E,UAAU,wBACd9E,EAAMuB,UAGY,YAAnBvB,EAAM6lJ,UACLpmJ,QAAAtB,QAAA4B,cAAAovJ,UAAAhxJ,QAAA,MAGkB,cAAnB6B,EAAM6lJ,UACLpmJ,QAAAtB,QAAA4B,cAAAqvJ,YAAAjxJ,QAAA,MAGD6B,EAAM4lJ,OACLnmJ,QAAAtB,QAAA4B,cAAAsvJ,UAAAlxJ,QAAA,yDA3EeyvJ;;;;qFCLrB,QAAS0B,aAAYtvJ,GAAO,GACpBuvJ,GAAUvvJ,EAAVuvJ,OACDzqJ,GAAY,EAAAopJ,aAAA/vJ,SAAK,cAAe6B,EAAM8E,UAE5C,OACCrF,SAAAtB,QAAA4B,cAAA,MAAI+E,UAAWA,GAEbyqJ,EAAOzoJ,IAAI,SAAA0oJ,GACV,MACC/vJ,SAAAtB,QAAA4B,cAAC0vJ,YACArwJ,IAAKowJ,EAAMrgI,GACXxV,KAAM61I,EAAM71I,KACZ+1I,aAAcF,EAAME,aACpBzwJ,OAAQuwJ,EAAMvwJ,YASrB,QAASwwJ,YAAWzvJ,GACnB,GAAM8E,IAAY,EAAAopJ,aAAA/vJ,SAAK,cACtBwxJ,2BAA4B3vJ,EAAM0vJ,cAEnC,OACCjwJ,SAAAtB,QAAA4B,cAAA,MAAI+E,UAAWA,GAEb9E,EAAM0vJ,aACLjwJ,QAAAtB,QAAA4B,cAAA6vJ,aAAAprJ,MAAMvD,GAAIjB,EAAMf,QACde,EAAM2Z,MAERla,QAAAtB,QAAA4B,cAAA,OAAA,KACEC,EAAM2Z,6DAxCb,IAAAna,QAAAnB,QAAA,gDACAuxJ,aAAAvxJ,QAAA,2BACAivJ,YAAAjvJ,QAAA,+EAEeixJ;;qFC8CA,QAASxmG,WAAU7V,EAAU9zC,GAC3C,KAAK,EAAAmmJ,QAAAC,UAAS/6F,UAAWvX,GACxB,MAAO9zC,EAER,IAAMiqC,IAAO,EAAAk8G,QAAAC,UAASsK,cAAe58G,GAAY68G,YAAAv+C,GAAOV,IAAI1xG,GAAUA,CAEtE,OAD0B4wJ,QAAA5xJ,QAAI2qD,UAAU7V,EAAU7J,GAA3C3rC,6EALgBqrD,SAlDxB,IAAAw8F,SAAAjnJ,QAAA,UACA2xJ,MAAA3xJ,QAAA,0DACAyxJ,YAAAzxJ,QAAA,eAEA4xJ,KAAA5xJ,QAAA,wEACA6xJ,MAAA7xJ,QAAA,2EACA8xJ,MAAA9xJ,QAAA,2EACA+xJ,QAAA/xJ,QAAA,iFAEAgyJ,YAAAhyJ,QAAA,6FACAiyJ,YAAAjyJ,QAAA,6FACAkyJ,MAAAlyJ,QAAA,2EAEAmyJ,KAAAnyJ,QAAA,wEACAoyJ,UAAApyJ,QAAA,uFAEAqyJ,MAAAryJ,QAAA,0EAGA0xJ,QAAA5xJ,QAAI0uD,iBAAiB,MAArB8jG,MAAAxyJ,SACA4xJ,OAAA5xJ,QAAI0uD,iBAAiB,OAArB+jG,OAAAzyJ,SACA4xJ,OAAA5xJ,QAAI0uD,iBAAiB,OAArBgkG,OAAA1yJ,SACA4xJ,OAAA5xJ,QAAI0uD,iBAAiB,SAArBikG,SAAA3yJ,SAGA4xJ,OAAA5xJ,QAAI0uD,iBAAiB,KAArBkkG,aAAA5yJ,SACA4xJ,OAAA5xJ,QAAI0uD,iBAAiB,aAArBkkG,aAAA5yJ,SACA4xJ,OAAA5xJ,QAAI0uD,iBAAiB,MAArBkkG,aAAA5yJ,SACA4xJ,OAAA5xJ,QAAI0uD,iBAAiB,KAArBmkG,aAAA7yJ,SACA4xJ,OAAA5xJ,QAAI0uD,iBAAiB,MAArBmkG,aAAA7yJ,SACA4xJ,OAAA5xJ,QAAI0uD,iBAAiB,aAArBmkG,aAAA7yJ,SACA4xJ,OAAA5xJ,QAAI0uD,iBAAiB,OAArBokG,OAAA9yJ,SAGA4xJ,OAAA5xJ,QAAI0uD,iBAAiB,OAArBqkG,MAAA/yJ,SACA4xJ,OAAA5xJ,QAAI0uD,iBAAiB,MAArBqkG,MAAA/yJ,SACA4xJ,OAAA5xJ,QAAI0uD,iBAAiB,KAArBskG,WAAAhzJ,SACA4xJ,OAAA5xJ,QAAI0uD,iBAAiB,WAArBskG,WAAAhzJ,SAGA4xJ,OAAA5xJ,QAAI0uD,iBAAiB,OAArBukG,OAAAjzJ,QAGA,IAAMqsD,YACL,MAAO,OAAQ,OAAQ,SAAU,KAAM,aAAc,MAAO,KAAM,MAClE,aAAc,OAAQ,OAAQ,MAAO,KAAM,WAAY,QAGlDqlG,eAAiB,MAAO;;qFCxC9B,QAASwB,MAAKrxJ,GACb,GAAM8E,IAAY,EAAAopJ,aAAA/vJ,SAAK,YAAL,QAA0B6B,EAAMizC,UAC5C9zC,EAASmyJ,cAActxJ,EAAMizC,SAAUjzC,EAAMuB,SAEnD,OACC9B,SAAAtB,QAAA4B,cAAA,QAAM+E,UAAWA,GACf3F,GAUJ,QAASmyJ,eAAcr+G,GAAuB,GAAb9zC,GAAapC,UAAAa,OAAA,OAAAyE,KAAAtF,UAAA,GAAAA,UAAA,GAAJ,EACzC,KAAKk2C,EACJ,MAAO9zC,EAER,KAAKA,EACJ,MAAOA,EAER,IAAMu/H,IAAO,EAAA6yB,YAAApzJ,SAAU80C,EAAU9zC,EACjC,QAAO,EAAAqyJ,aAAArzJ,SAAWugI,yDAhCnB,IAAA4uB,aAAAjvJ,QAAA,+DACAmB,OAAAnB,QAAA,gDAEAozJ,WAAApzJ,QAAA,8DACAqzJ,YAAArzJ,QAAA,kFAEegzJ;;qFCFf,QAASM,YAAWpwJ,GACnB,MAAK5E,OAAMiL,QAAQrG,IAIN,EAAAqwJ,oBAAAzzJ,SAAIsB,QAAAtB,QAAM4B,eACtBiK,KAAM,UACN+5B,QAAS,MACTxiC,SAAAA,IAGWvB,MAAMuB,SATVA,wDANT,IAAA/B,QAAAnB,QAAA,gDACAwzJ,mBAAAxzJ,QAAA,sGACeszJ;;6xBCFfnyJ,OAAAnB,QAAA,gDAEqByzJ,4RACX,GACD9xJ,GAAS/C,KAAT+C,KAEP,OACCP,SAAAtB,QAAA4B,cAAA,YACC+E,UAAW9E,EAAM8E,UACjBmJ,SAAUjO,EAAMiO,SAChB8jJ,UAAW/xJ,EAAM+xJ,UACjBt0J,MAAOuC,EAAMvC,iDATIq0J;;;YCGrB,SAASzxH,MAAKurF,EAAK5rH,GAClB,GAAK4rH,EAAL,CADyB,GAAAkgC,GAKOvxI,OAAzBw3B,EALkB+5G,EAKlB/5G,cAAe1gC,EALGy6I,EAKHz6I,OAChByf,GAAO,EAAA63F,UAAAW,aAAYsC,GACnBomC,EAAMlhI,EAAK4B,cACX+4E,EAAMumD,EAAI1gJ,QAEhB0gJ,GAAIx7H,iBAAiB,UAAW,SAAAtY,GAC/B,GAAMza,GAAQ,GAAIsuC,GAAc,WAAW,EAAAuzG,QAAAxiB,MAAK5kH,GAAI,gBACpDza,GAAMytB,KAAOhT,EACK,KAAdA,EAAEw0B,SACL5hB,EAAK27H,OAENp7I,EAAOujC,cAAcnxC,KAGtBzD,EAAM6tJ,UACLz0C,MAAO3N,EAAIm0B,KAAKqyB,YAChBt8C,OAAQlK,EAAIm0B,KAAKsyB,cAGlB,IAAMrE,IAAW,EAAAvI,QAAA6M,UAAS,WACzBnyJ,EAAM6tJ,UACLz0C,MAAO3N,EAAIm0B,KAAKwyB,YAChBz8C,OAAQlK,EAAIm0B,KAAKyyB,gBAEhB,IAEGC,GAAW,EAAAhN,QAAA6M,UAAS,WACzB,GAAMI,GAAW9mD,EAAI+mD,kBAAoB/mD,EAAIm0B,KACvCzlH,EAAIo4I,EAAS1oC,UACb3vG,EAAIq4I,EAASE,UACnBzyJ,GAAMsyJ,UAAUp4I,EAAAA,EAAGC,EAAAA,KACjB,GAEH63I,GAAIx7H,iBAAiB,SAAUq3H,GAC/BmE,EAAIx7H,iBAAiB,SAAU87H,0DA5ChC,IAAA3pC,WAAAtqH,QAAA,aACAinJ,QAAAjnJ,QAAA,0BAEegiC;;;;qFCAf,QAASopH,UAASxgF,GACjB,GAAMrjE,IAAU,EAAA8sJ,WAAAv0J,SAAS,WAAW8qE,GAC9B19B,GAAY,EAAAmnH,WAAAv0J,SAAS,aAAa8qE,GAClC9nB,GAAO,EAAAuxG,WAAAv0J,SAAS,QAAQ8qE,GAExBzrE,EAAQ,GAAI0E,OAAM+mE,EAAM9hD,KAAK,MAInC,OAHA3pB,GAAMoI,QAAUA,EAChBpI,EAAM+tC,UAAYA,EAClB/tC,EAAMgtJ,SAAWrpG,EACV3jD,wDAZR,IAAAm1J,WAAAt0J,QAAA,4EACeorJ;;YCEf,SAASmJ,UAASj5I,GACjB,MAAO,UAAAsvD,GACN,GAAMq4D,GAAY3nH,EAAZ,IAEN,QADa,EAAA2rI,QAAAuN,MAAK5pF,EAAO,SAAAnJ,GAAA,OAAQ,EAAAwlF,QAAAwN,YAAWhzF,EAAMwhE,KACtCzkI,MAAMykI,EAAO1jI,OAAS,0DAPpC,IAAA0nJ,SAAAjnJ,QAAA,0BACeu0J;;;mzBCDfvF,mBAAAhvJ,QAAA,qFACAivJ,YAAAjvJ,QAAA,+DACAinJ,QAAAjnJ,QAAA,UACAu5D,aAAAv5D,QAAA,mEACAmB,OAAAnB,QAAA,gDAGqB00J,gVAiBpB3xJ,OACCy9F,QAAQ,6JAIRtkF,OAAOic,iBAAiB,YAAav5B,KAAK+1J,uBAC1Cz4I,OAAOic,iBAAiB,UAAWv5B,KAAKg2J,oEAIxC14I,OAAOy5B,oBAAoB,YAAa/2C,KAAK+1J,uBAC7Cz4I,OAAOy5B,oBAAoB,UAAW/2C,KAAKg2J,6DAG5B/0I,GACfA,EAAE9Y,iBACFnI,KAAK8O,UAAU8yF,QAAQ,kDAGF3gF,GACrBA,EAAE9Y,iBACEnI,KAAKmE,MAAMy9F,QACd5hG,KAAK+C,MAAMkzJ,OAAOh1I,iDAKfjhB,KAAKmE,MAAMy9F,QACd5hG,KAAK8O,UAAU8yF,QAAQ,qCAIhB,GACD7+F,GAAS/C,KAAT+C,MACDgF,GAASo0G,MAAOp5G,EAAMo5G,MAAOzD,OAAQ31G,EAAM21G,QAK3C7wG,GAHS9E,EAAMvC,QACjBuC,EAAMqE,SAAY8uJ,cAAAh1J,QAAY6pB,UAAUhoB,EAAMmB,SAEhC,EAAA+sJ,aAAA/vJ,SAAK,SAAU6B,EAAM8E,WACtCsuJ,iBAAkBn2J,KAAKmE,MAAMy9F,SAG9B,OACCp/F,SAAAtB,QAAA4B,cAAA,OAAK+E,UAAWA,EAAWE,MAAOA,GACjCvF,QAAAtB,QAAA4B,cAAA,OACC+E,UAAU,sBACVuuJ,YAAap2J,KAAKq2J,iBAGjBr2J,KAAKmE,MAAMy9F,QACVp/F,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,uDAzDdiF,cACNwpJ,SAAAA,QAAAA,KACAC,QAAAA,QAAAA,KACAN,OAAAA,QAAAA,8CAdmBH;;;;oyBCPrB1F,mBAAAhvJ,QAAA,qFACAmB,OAAAnB,QAAA,gDACAo1J,QAAAp1J,QAAA,qDAGqBq1J,oUACX,GACD1zJ,GAAS/C,KAAT+C,KAEP,OACCP,SAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,kBACdrF,QAAAtB,QAAA4B,cAAA4zJ,SAAAx1J,SACC2G,UAAU,wCACV0uJ,QAASxzJ,EAAM4zJ,kBACfV,OAAQlzJ,EAAM6zJ,iBACdN,SAAUvzJ,EAAM8zJ,mBAChBzvJ,SAAUrE,EAAMqE,SAChBlD,MAAOnB,EAAMmB,MACb1D,MAAOuC,EAAM+zJ,YACb36C,MAAOp5G,EAAMo5G,QAEd35G,QAAAtB,QAAA4B,cAAA4zJ,SAAAx1J,SACC2G,UAAU,sCACV6wG,OAAQ31G,EAAM21G,OACd69C,QAASxzJ,EAAMg0J,gBACfd,OAAQlzJ,EAAMi0J,eACdV,SAAUvzJ,EAAMk0J,iBAChB7vJ,SAAUrE,EAAMqE,SAChBlD,MAAOnB,EAAMmB,MACb1D,MAAOuC,EAAMm0J,aAEd10J,QAAAtB,QAAA4B,cAAA4zJ,SAAAx1J,SACC2G,UAAU,sCACVouJ,OAAQlzJ,EAAMo0J,oEA5BEV;;kzBCLrBrG,mBAAAhvJ,QAAA,qFACAivJ,YAAAjvJ,QAAA,+DACAinJ,QAAAjnJ,QAAA,UACAg2J,qBAAAh2J,QAAA,4FACAmB,OAAAnB,QAAA,gDACAsqH,UAAAtqH,QAAA,aAEAi2J,MAAAj2J,QAAA,+CACAk2J,SAAAl2J,QAAA,wDACAm2J,OAAAn2J,QAAA,kDAIqBo2J,6XAgBDv2I,GAClB,GAAMw2I,IAAO,EAAA/rC,UAAAW,aAAYrsH,KAAK2uH,KAAK+oC,uBACnC13J,MAAK+C,MAAM40J,QACVz6I,EAAGC,KAAKmqD,MAAMrmD,EAAE22I,MAAQH,EAAKvqG,KAC7BjwC,EAAGE,KAAKmqD,MAAMrmD,EAAE42I,MAAQJ,EAAKxsI,uDAIRhK,GACtBjhB,KAAK+C,MAAM40J,QACVz6I,EAAG+D,EAAEjf,OAAOxB,qDAIOygB,GACpB,GAAMw2I,IAAO,EAAA/rC,UAAAW,aAAYrsH,KAAK2uH,KAAK+oC,uBACnC13J,MAAK+C,MAAM40J,QACVz6I,EAAGC,KAAKmqD,MAAMrmD,EAAE22I,MAAQH,EAAKvqG,oDAIVjsC,GACpBjhB,KAAK+C,MAAM40J,QACV16I,EAAGgE,EAAEjf,OAAOxB,mDAIKygB,GAClB,GAAMw2I,IAAO,EAAA/rC,UAAAW,aAAYrsH,KAAK2uH,KAAK+oC,uBACnC13J,MAAK+C,MAAM40J,QACV16I,EAAGE,KAAKmqD,MAAMrmD,EAAE42I,MAAQJ,EAAKxsI,wCAIvB0jG,GACP3uH,KAAK2uH,IAAMA,mCAGH,GAAAjO,GAAA1gH,KACD+C,EAAS/C,KAAT+C,MAED+0J,EAAS,SAAA72I,IACd,EAAA82I,OAAA72J,SAAKw/G,EAAKiO,IAAKjO,EAAK39G,OACpBA,EAAM+0J,OAAO72I,IAGR+2I,GAAiB,EAAA/G,aAAA/vJ,SACtB,UAEC+2J,qBAAsBl1J,EAAMm1J,aAIxBC,GAAuB,EAAAlH,aAAA/vJ,SAC5B,0BACA,kBAGK6G,EAAQhF,EAAMm1J,YACnB/7C,MAAOp5G,EAAMo5G,MACbzD,OAAQ31G,EAAM21G,UAGf,OACCl2G,SAAAtB,QAAA4B,cAAA,OAAK+E,UAAW9E,EAAM8E,WACrBrF,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAWswJ,EAAsBpwJ,MAAOA,GAC5CvF,QAAAtB,QAAA4B,cAAA,UACC+E,UAAWmwJ,EACXF,QAAQ,EAAAM,QAAAl3J,SAAM42J,EAAQ/0J,EAAMmL,SAC5BygH,IAAK3uH,KAAKq4J,QACV7iI,IAAKzyB,EAAMyyB,IACXulF,QAASh4G,EAAMg4G,QACf+5C,UAAW90J,KAAKs4J,gBAGhBv1J,EAAMm1J,YACL11J,QAAAtB,QAAA4B,cAAAy1J,UAAAr3J,SACCw3G,OAAQ31G,EAAM21G,OACdy+C,eAAgBn3J,KAAKw4J,mBACrB5B,iBAAkB52J,KAAKy4J,qBACvBzB,eAAgBh3J,KAAK04J,mBACrB7B,mBAAoB72J,KAAK24J,uBACzB1B,iBAAkBj3J,KAAK44J,qBACvBz8C,MAAOp5G,EAAMo5G,2CAlGbv5G,YAAc,gBAWdkK,cACN6qJ,OAAAA,QAAAA,sDAbmBH;;2ICbrB,IAAAnP,SAAAjnJ,QAAA,UACAy3J,UAAAz3J,QAAA,4EAEe,WAAmC,GAAlC02J,GAAkCh4J,UAAAa,OAAA,OAAAyE,KAAAtF,UAAA,GAAAA,UAAA,GAAAuoJ,QAAAjgI,KAAnBla,EAAmBpO,UAAAa,OAAA,OAAAyE,KAAAtF,UAAA,GAAAA,UAAA,GAAAuoJ,QAAAjgI,IACjD,OAAO,UAAAnH,GACN,GAAM5M,GAAW4M,EAAEjf,OAAOyzB,cAAcphB,SACjCsuH,EAAQtuH,EAARsuH,KACDx7E,EAAQw7E,EAAKzvF,UAEnB,KAAKiU,IAAUA,EAAM2xG,UACpB,MAAOhB,GAAO72I,EAGf,IAAM+qD,GAAQ7kB,EAAM2xG,UAAUxyI,MAAM,KAEpC,KAAI,EAAA+hI,QAAAwN,YAAW7pF,EAAM,GAAI,qBAAsB,CAC9C,GAAMzrE,IAAQ,EAAAw4J,WAAA73J,SAAS8qE,EACvB,OAAO99D,GAAQ3N,GAGhB,MAAOu3J,GAAO72I;;4xBCpBhB1e,OAAAnB,QAAA,gDACAivJ,YAAAjvJ,QAAA,+DACAg2J,qBAAAh2J,QAAA,4FAGM43J,oVACLp2J,YAAc,0JAeb,GAAMq2J,GAAAA,IAAcj5J,KAAK+C,MAAM6jI,MACzB/+H,GAAY,EAAAopJ,aAAA/vJ,SAAW,IAAX,KAAoBlB,KAAK+C,MAAMuyB,SAAWt1B,KAAK+C,MAAM6jI,OAAS5mI,KAAK+C,MAAM8E,UAE3F,OACCrF,SAAAtB,QAAA4B,cAACm2J,GAAQpxJ,UAAWA,GAClB7H,KAAK+C,MAAMuB,2CAXRwI,cACNxI,SAAU,WACVsiI,MAAO,2CAeMoyB;;;qFCrBf,QAASvzE,SAAQ0+B,GAChB,GAAMr0E,GAAOq0E,EACXt6G,IAAI,SAAAhJ,GAAA,MAAQA,GAAKg0G,SACjBh0F,OACI+M,GAAU,EAAAy6H,QAAA6Q,MAAKppH,EACrB,OAAOttC,SAAAtB,QAAA4B,cAACq2J,cAAavrI,QAASA,IAG/B,QAAS5c,UAASm4I,GACjB,GAAMvlJ,GAAUw1J,uBAChBC,YAAAn4J,QAAS2B,OAAOsmJ,EAAUvlJ,GAG3B,QAASw1J,yBAAwB,GAAAvK,GACbvxI,OAAZjJ,EADyBw6I,EACzBx6I,SACD4gH,EAAQ5gH,EAASgzG,cAAc,uBACrC,IAAI4N,EACH,MAAOA,EAGR,IAAMqkC,GAAUjlJ,EAASvR,cAAc,MAGvC,OAFAw2J,GAAQjnH,aAAa,sBAAsB,GAC3Ch+B,EAASsuH,KAAKptG,YAAY+jI,GACnBA,EAGR,QAASC,MAAKx2J,GACb,GAAM8E,IAAY,EAAAopJ,aAAA/vJ,SAAK,OAAQ6B,EAAM8E,WACpC2xJ,wBAAyBz2J,EAAMwqG,cAG1BksD,GAAankI,QAASvyB,EAAM8rC,SAAW,OAAS,MAChD6qH,EAAAA,IAAgB32J,EAAM8xG,MAE5B,OACCryG,SAAAtB,QAAA4B,cAAA,OAAK+E,UAAWA,EAAWE,MAAOhF,EAAMgF,OACvCvF,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,YAEdrF,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,OACdrF,QAAAtB,QAAA4B,cAAA,OAAK42J,UAAWA,MAIlBl3J,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,WAAWE,MAAO0xJ,GAC/B12J,EAAMuB,UAGPvB,EAAMwqG,aACL/qG,QAAAtB,QAAA4B,cAAA,SAAO+E,UAAU,qBACf9E,EAAMwqG,cA6Bb,QAAS4rD,cAAap2J,GACrB,MACCP,SAAAtB,QAAA4B,cAAA,OAAKiF,MAAO4xJ,cAEV52J,EAAM6qB,QACJ/jB,IAAI,SAAAgrG,GACJ,GAAM44C,GAAUmM,QAAA14J,QAAM2zG,IAANwzC,QAAAjgI,KACV8iF,EAAQuiD,OACd,OAAOjrJ,SAAAtB,QAAA4B,cAAC+2J,SAAO3nI,GAAI2iF,EAAQ1yG,IAAK0yG,EAAQ5xC,WAAYioC,OAe1D,QAASx7F,SAAO3M,GACf,GAAMmoG,GAAQxrG,MAAMiL,QAAQ5H,EAAMkgE,YACjClgE,EAAMkgE,YACLlgE,EAAMkgE,WAER,OACCzgE,SAAAtB,QAAA4B,cAAA,UACCovB,GAAInvB,EAAMmvB,GACV4nI,QAAQ,aAGP5uD,EAAMrhG,IAAI,SAAAnF,GAAA,MAAQlC,SAAAtB,QAAA4B,cAACi3J,MAAK92F,WAAYv+D,EAAMvC,IAAKuC,OAWnD,QAASq1J,MAAKh3J,GAAO,GACbkgE,GAAclgE,EAAdkgE,WACD1rC,EAA4B,gBAAf0rC,IAA2BrhB,EAAGqhB,GAAcA,EACxDn8B,EAAiBvP,EAAjBuP,QAAY9/B,GAHC,EAAAgzJ,0BAAA94J,SAGIq2B,GAHJ,YAIdjlB,EAAYw0B,GAAW,MAC7B,OAAOtkC,SAAAtB,QAAA4B,cAACwP,EAActL,qTA3IvBqpJ,YAAAjvJ,QAAA,+DACAinJ,QAAAjnJ,QAAA,UACAmB,OAAAnB,QAAA,gDACAsqH,UAAAtqH,QAAA,0DACAw9G,iBAAAx9G,QAAA,gFACA64J,OAAA74J,QAAA,kDAEM84J,WAAY,EAAAzQ,OAAAvoJ,SAAA04J,QAAA14J,0BAEH,EAAA29G,kBAAA39G,SAAeukF,QAASz0E,UAAUuoJ,MAmEjDA,KAAKzsJ,cACJ+hC,UAAU,EAGX,IAAM8qH,eACL55G,SAAU,QACV24D,OAAQ,EACRyD,MAAO,EACPsmB,SAAU,SACVvF,QAAS,EACTqhB,WAAY,SAsBb4a,cAAarsJ,cACZ8gB;;;;qFCGD,QAASusI,WAASC,GAoCjB,MAAOlwI,OA7BQ,EAAAm+H,QAAA3U,OAAMppH,IACnBzgB,IAAI,SAACgiC,EAAG5pC,GACR,GAAMgb,GAAIhb,EAPE,EAQNib,GAAKjb,EAAIgb,GARH,CAcZ,MAJeC,EAAI,GAAM,EACxBD,EAAI,GAAM,EACVA,EAAI,GAAM,GAGV,MAAO,KAGR,IAAMgyF,IAAW/xF,EAAI,IAAMD,EAAI,EAG/B,SAFem9I,GAAkBnrD,GAhBpB3kF,KAsBNmtI,MACNx6I,EAxBY,EADHtc,EAyBGsc,EACZC,EAzBY,EADHvc,EA0BGuc,EACZi/F,MA3BSx7G,EA4BT+3G,OA5BS/3G,IAqBF,OAURqR,OAAO45C,UAKV,QAAS6rG,MAAK10J,GAAO,GACbo5G,GAA6Bp5G,EAA7Bo5G,MAAOzD,EAAsB31G,EAAtB21G,OAAQz7F,EAAcla,EAAdka,EAAGC,EAAWna,EAAXma,EAAMlW,GADX,EAAAgzJ,0BAAA94J,SACgB6B,GADhB,QAAA,SAAA,IAAA,KAEpB,QAAA,EAAA48G,UAAAz+G,YACI8F,GACH46C,EAAAA,IAAO3kC,EAAP,IAAYC,EAAZ,IAAiBi/F,EAAjB,IAA0BzD,EAA1B,KAAqCyD,EAArC,MAIF,QAASjyF,MAAKghF,GAEb,QACCtpD,EAFSspD,EAAMrhG,IAAI,SAAAnF,GAAA,MAAQA,GAAKk9C,IAAG13B,KAAK,+TA/J1Cm+H,QAAAjnJ,QAAA,UAEMi5J,WAAY,gPACZC,YAAa,kTACbnuH,MAAO,sTACPouH,MAAO,yGACP9zB,cAAe,8lDACf+zB,YAAa,8iBACbC,QAAS,qFACTC,YAAa,6ZACbC,SAAU,gpBACVtsD,aAAcssD,SACdC,MAAO,sNACPC,OAAQ,sGACRC,WAAY,+lBACZC,WAAY,upCACZC,WAAY,0RACZC,QACL,0DACA,+GAEKtyJ,SAAU,+bACVuyJ,cAAe,iNACfC,UAAW,03CACXv4G,OAAQ,4oPACRw4G,QAAS,4WACT/L,QAAS,mJACT7jJ,QAAS,qsCAET6vJ,QACL,8QACA,oKAGKC,kBACL,gPACA,kPAGKC,mBACL,6OACA,6OAGKC,cACL55G,EAAG,0FAGE65G,gBACL,yEACA,6HAEC30H,QAAS,SACT40H,GAAI,GACJC,GAAI,IACJ59H,EAAG,KAEJ,yEAGK4qH,QACL,6iBAEC7hH,QAAS,SACT40H,GAAI,GACJC,GAAI,GACJ59H,EAAG,KAEJ,8BAGKs5E,UACL,gHACA,uSAIAukD,oBAAqB,WAAA,MAAMN,mBAC3BO,qBAAsB,WAAA,MAAMN,oBAC5BO,aAAc,WAAA,MAAMzB,aACpB0B,cAAe,WAAA,MAAMzB,cACrBe,MAAS,WAAA,MAAMA,SACfW,oBAAqB,WAAA,MAAM7B,YAAS,IACpCA,SAAY,WAAA,MAAMA,cAClBhuH,KAAQ,WAAA,MAAMA,QACdkrE,QAAW,WAAA,MAAMA,WACjBkjD,KAAQ,WAAA,MAAMA,QACd9zB,aAAgB,WAAA,MAAMA,gBACtBg1B,cAAiB,WAAA,MAAMA,iBACvBjB,WAAc,WAAA,MAAMA,cACpBnsD,YAAe,WAAA,MAAMA,eACrB4tD,cAAe,WAAA,MAAMT,cACrBf,OAAU,WAAA,MAAMA,UAChBC,WAAc,WAAA,MAAMA,cACpBC,QAAW,WAAA,MAAMA,WACjBC,KAAQ,WAAA,MAAMA,QACdjS,MAAS,WAAA,MAAMA,SACfkS,MAAS,WAAA,MAAMA,SACfC,UAAa,WAAA,MAAMA,aACnBC,UAAa,WAAA,MAAMA,aACnBE,MAAS,WAAA,MAAMA,SACftyJ,QAAW,WAAA,MAAMA,WACjBuyJ,aAAgB,WAAA,MAAMA,gBACtBC,SAAY,WAAA,MAAMA,YAClBv4G,MAAS,WAAA,MAAMA,SACfw4G,OAAU,WAAA,MAAMA,UAChB/L,OAAU,WAAA,MAAMA,UAChB7jJ,OAAU,WAAA,MAAMA,UAChBwvJ,UAAa,WAAA,MAAMA;;qFCvGpB,QAASkB,UAASn5J,GACjB,GAAM8E,IAAY,EAAAopJ,aAAA/vJ,SAAK,WAAY6B,EAAM8E,UACzC,OACCrF,SAAAtB,QAAA4B,cAAA,OAAK+E,UAAWA,IACd,EAAAs0J,SAAAj7J,SAAO6B,EAAMb,QACbi4D,KAAMp3D,EAAMo3D,KACZhzD,KAAMpE,EAAMoE,KACZjD,MAAOnB,EAAMmB,MACbkD,SAAUrE,EAAMqE,SAChBg1J,aAAcr5J,EAAM2nJ,kEAfxB,IAAAnoJ,QAAAnB,QAAA,gDACAivJ,YAAAjvJ,QAAA,+DACAi7J,QAAAj7J,QAAA,qEAEe86J;;qFCCf,QAASI,cAAav5J,GACrB,GAAMizC,GAAWumH,cAAcx5J,EAAM8E,UAErC,KAAKmuC,EACJ,MACCxzC,SAAAtB,QAAA4B,cAAA,OAAA,KACEC,EAAMuB,SAKV,IAAMpC,GAASa,EAAMuB,SAAS4lB,KAAK,GACnC,OACC1nB,SAAAtB,QAAA4B,cAAA05J,OAAAt7J,SAAM80C,SAAUA,GACd9zC,GAUJ,QAASq6J,iBAKR,OALuCz8J,UAAAa,OAAA,OAAAyE,KAAAtF,UAAA,GAAAA,UAAA,GAAJ,IACRwmB,MAAM,KAC/Bzc,IAAI,SAAAhC,GAAA,MAAaA,GAAUye,MAAM,OACjCtU,OAAO,SAAAosC,GAAA,MAAsB,aAAbA,EAAM,KACtBv0C,IAAI,SAAAu0C,GAAA,MAASA,GAAM,KACN,yDAlChB,IAAA77C,QAAAnB,QAAA,gDACAq7J,MAAAr7J,QAAA,gEAEek7J;;qFCCf,QAASI,kBAAiB35J,GAAO,GAChBk2J,GAAiBl2J,EAA1B+jC,QAAqB9/B,GADI,EAAAgzJ,0BAAA94J,SACC6B,GADD,YAE1BuB,EAAW5E,MAAMiL,QAAQ3D,EAAE1C,UAAY0C,EAAE1C,SAAS4lB,KAAK,IAAMljB,EAAE1C,SAC/D4tB,EAAK5tB,EAASgiB,MAAM,KAAK4D,KAAK,KAAKF,aAEzC,OACCxnB,SAAAtB,QAAA4B,cAACm2J,GAAQ/mI,GAAIA,GACXnvB,EAAMuB,oOAXV/B,OAAAnB,QAAA,gEAEes7J;;0yBCFfC,KAAAv7J,QAAA,0CACAmB,OAAAnB,QAAA,gDACAuxJ,aAAAvxJ,QAAA,2BAEqBw7J,2TAgBA,GACZ75J,GAAS/C,KAAT+C,MACD4kE,EAASk1F,MAAA37J,QAAIupB,MAAM1nB,EAAM2E,MACzBN,EAAWugE,EAAOvgE,UAAY,IAC9B01J,EAAUlxG,QAAQ+b,EAAOxgE,MACzB41J,GAAkBp1F,EAAOvgE,UAAYrE,EAAMqE,WAAaA,CAC3C01J,IAAWC,GAAkBh6J,EAAMoE,OAASwgE,EAAOxgE,MAGrEpE,EAAMq5J,aAAaz0F,EAAOxgE,KAAKvH,MAAM,qCAI9B,GACDmD,GAAS/C,KAAT+C,MACD4kE,EAASk1F,MAAA37J,QAAIupB,MAAM1nB,EAAM2E,MACzBN,EAAWugE,EAAOvgE,UAAY,GAGpC,IAFmBwkD,QAAQ+b,EAAOzgB,UAGjC,MACC1kD,SAAAtB,QAAA4B,cAAA,KACC4E,KAAM3E,EAAM2E,KACZG,UAAU,sBACV6yG,IAAI,WACJ14G,OAAO,SACPumB,MAAOxlB,EAAMwlB,OAAN,QAAuBxlB,EAAM2E,KAA7B,iBAEN3E,EAAMuB,SAKV,IAAMw4J,GAAUlxG,QAAQ+b,EAAOxgE,MACzB41J,GAAkBp1F,EAAOvgE,UAAYrE,EAAMqE,WAAaA,EAExDpD,GACLoD,SAAU01J,GAAWC,EAAX,GACNh6J,EAAMo3D,KADA,KAEJp3D,EAAMo3D,KAAMwN,EAAOvgE,UAAU8iB,KAAK,IAAI5D,MAAM,KAAKtU,OAAO45C,SAAS1hC,KAAK,KAC5EhmB,MAAOnB,EAAMmB,MACbiD,KAAMwgE,EAAOxgE,MAGRohB,EAAQu0I,GAAWC,EAAX,WACF/4J,EAAGmD,KAAKvH,MAAM,GADZ,eAEEoE,EAAGoD,SAEbU,EAAU,WACXg1J,GAAWC,GACdh6J,EAAMq5J,aAAap4J,EAAGmD,KAAKvH,MAAM,IAInC,OACC4C,SAAAtB,QAAA4B,cAAA6vJ,aAAAprJ,MACCO,QAASA,EACTygB,MAAOxlB,EAAMwlB,OAASA,EACtBvkB,GAAIA,GAEHjB,EAAMuB,0CAhEHwI,cACNsvJ,aAAc,qCAbKQ;;qFCUrB,QAAS/5J,QAAOX,EAAQyR,GAAS,GACzBwmD,GAAoExmD,EAApEwmD,KAAMhzD,EAA8DwM,EAA9DxM,KAAM61J,EAAwDrpJ,EAAxDqpJ,WAAYnxG,EAA4Cl4C,EAA5Ck4C,UAAW3nD,EAAiCyP,EAAjCzP,MAAOkD,EAA0BuM,EAA1BvM,SAAUg1J,EAAgBzoJ,EAAhByoJ,aACrDz5G,EAAIngD,QAAAtB,QAAM4B,cACVm6J,GAAW,EAAAC,OAAAh8J,SAAAi8J,mBAAAj8J,SAEXm/D,GAAQ,EAAA68F,OAAAh8J,SAAKk8J,eAAeC,iBAAkB,QAAS,WACvDC,GAAQ,EAAAJ,OAAAh8J,SAAKk8J,eAAeC,iBAAkB,QAC9CE,GAAK,EAAAL,OAAAh8J,SAAKk8J,eAAeC,iBAAkB,KAAM,QACjDG,GAAK,EAAAN,OAAAh8J,SAAKm8J,iBAEVn4F,GAAQ/K,KAAAA,EAAMhzD,KAAAA,EAAMjD,MAAAA,EAAOkD,SAAAA,EAAUg1J,aAAAA,GACrCjwH,GAAQ6wH,WAAAA,EAAYnxG,UAAAA,GAEpBjnD,GACL4V,GAAG,EAAA0iJ,OAAAh8J,SAAAu8J,eAAAv8J,QAAmBgkE,GACtB/4B,MAAM,EAAA+wH,OAAAh8J,SAAAw8J,eAAAx8J,QAAmBirC,GACzBwxH,GAAIV,EACJW,GAAIX,EACJY,GAAIZ,EACJa,GAAIb,EACJc,GAAId,EACJe,GAAIf,EACJ58F,MAAAA,EACA49F,MAAOX,EACPA,MAAAA,EACAC,GAAAA,EACAW,GAAIV,EACJA,GAAAA,GAGK57B,GAAW,EAAAymB,QAAAE,UAAA4V,SAAAj9J,QACjB0gI,GAAS5+E,YACRxoC,GAAI,OAAQ,SACZ2xB,MAAO,aACPiyH,KAAM,MAAO,OAGd,IAAMjzH,IAAQwX,EAAAA,EAAG/9C,WAAAA,EAAYg9H,SAAAA,EAE7B,QAAO,EAAAy8B,SAAAn9J,WACL4gI,IADKw8B,aAAAp9J,QACKiqC,GACV22F,IAFKy8B,sBAAAr9J,SAGLmnB,QAAQnmB,GACRm9D,SAGH,QAASg+F,iBAAgBt6J,GACxB,GAAMuP,GAAYvP,EAAM+jC,OACxB,OAAOtkC,SAAAtB,QAAA4B,cAACwP,EAAD,KAAYvP,EAAMuB,UAQ1B,QAAS84J,gBAAe9qJ,EAAWi1C,GAClC,QAASi3G,GAAez7J,GACvB,GAAMuB,GAAW/B,OAAA2K,SAASuxJ,QAAQ17J,EAAMuB,UACtC0N,OAAO,SAAA+nC,GACP,MAAwB,gBAAjB,KAAOA,EAAP,aAAA,EAAAt1B,SAAAvjB,SAAO64C,MAAsB,EAAAsuG,QAAAC,UAAS/gG,EAAUxN,EAAMh3C,MAAM+jC,UAErE,OAAOtkC,SAAAtB,QAAA4B,cAACwP,EAAcvP,EAAQuB,GAO/B,MAAOk6J,yJAnFRE,QAAAt9J,QAAA,0EACAinJ,QAAAjnJ,QAAA,UACAmB,OAAAnB,QAAA,gDACAu9J,QAAAv9J,QAAA,mDACAw9J,qBAAAx9J,QAAA,6FACAy9J,YAAAz9J,QAAA,gEAEA09J,cAAA19J,QAAA,wEACA29J,cAAA39J,QAAA,wEACA49J,kBAAA59J,QAAA,oFACA69J,MAAA79J,QAAA,+DAEeyB;;qFCPf,QAAS68B,MAAKptB,EAAWqB,GACxB,GAAMgvC,GAAIngD,QAAAtB,QAAM4B,aAChB,OAAO,UAACgkC,EAAS/jC,EAAOuB,GACvB,MAAOq+C,GAAErwC,GAAW,EAAA+1I,QAAAE,UAAU50I,EAAS5Q,GAAQ+jC,QAAAA,IAAWxiC,0DAR5D,IAAA/B,QAAAnB,QAAA,gDACAinJ,QAAAjnJ,QAAA,0BAEes+B;;kzBCHfn9B,OAAAnB,QAAA,gDACAuxJ,aAAAvxJ,QAAA,2BACAivJ,YAAAjvJ,QAAA,+DACAgvJ,mBAAAhvJ,QAAA,qFACAg2J,qBAAAh2J,QAAA,4FACAinJ,QAAAjnJ,QAAA,UAEA89J,MAAA99J,QAAA,uDAIqB+9J,iYAgBnBn/J,KAAK+C,MAAMq8J,UAAUp/J,KAAK+C,MAAMmvB,+CAIhClyB,KAAK+C,MAAMs8J,2CAGH,GACDt8J,GAAS/C,KAAT+C,MACD8E,GAAY,EAAAopJ,aAAA/vJ,SAAK,UAAL,YAA4B6B,EAAMgK,KACpD,OACCvK,SAAAtB,QAAA4B,cAAA,OAAK+E,UAAWA,GACfrF,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,mBAEb9E,EAAMwlB,OACL/lB,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,kBACb9E,EAAMwlB,OAGV/lB,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,mBAEb9E,EAAMu8J,OACL98J,QAAAtB,QAAA4B,cAAA,UACCgF,QAAS9H,KAAKu/J,iBACdxyJ,KAAK,SACLlF,UAAU,kBACV0gB,MAAA,iBAAwBxlB,EAAM4F,QAA9B,aAJD,SASFnG,QAAAtB,QAAA4B,cAAA,UACCgF,QAAS9H,KAAKw/J,mBACdzyJ,KAAK,SACLlF,UAAU,kBACV0gB,MAAA,yBAJD,aAUF/lB,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,iBACdrF,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,yBACb9E,EAAM4/H,OAGTngI,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,iBAEb9E,EAAM4F,SACLnG,QAAAtB,QAAA4B,cAAA6vJ,aAAAprJ,MACCvD,IACCoD,SAAarE,EAAMo3D,KAAnB,WAAkCp3D,EAAM4F,QACxCzE,MAAOnB,EAAMsF,SAASnE,OAEvB2D,UAAU,kBAEVrF,QAAAtB,QAAA4B,cAAA28J,OAAAv+J,SAAMi5D,KAAMp3D,EAAMo3D,KAAM06C,OAAO,YAC9B9xG,EAAM4F,SAIT5F,EAAMmhD,MACL1hD,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,kBACdrF,QAAAtB,QAAA4B,cAAA28J,OAAAv+J,SAAMi5D,KAAMp3D,EAAMo3D,KAAM06C,OAAO,kBAC9B9xG,EAAMmhD,KAAKtkD,OAAO,wCAvEnBkN,cACN4yJ,cAAAA,QAAAA,KACAN,UAAAA,QAAAA,KACAC,QAAAA,QAAAA,sDAZmBF;;i9BCXrB58J,OAAAnB,QAAA,gDACAivJ,YAAAjvJ,QAAA,+DACAgvJ,mBAAAhvJ,QAAA,qFACAg2J,qBAAAh2J,QAAA,4FAEA89J,MAAA99J,QAAA,+CAIqBu+J,yXA0BX,GAAAv3J,GAYJpI,KAAK+C,MAVRo3D,EAFO/xD,EAEP+xD,KACW7nD,EAHJlK,EAGPzD,UACWi7J,EAJJx3J,EAIPP,UACArH,EALO4H,EAKP5H,MACAkc,EANOtU,EAMPsU,KACA1L,EAPO5I,EAOP4I,SACA6uJ,EAROz3J,EAQPy3J,QACAC,EATO13J,EASP03J,OACA5lD,EAVO9xG,EAUP8xG,YACGn3G,GAXI,EAAAi3J,0BAAA94J,SAAAkH,GAAA,OAAA,YAAA,YAAA,QAAA,OAAA,WAAA,UAAA,SAAA,gBAcDxF,EAAe+8J,EAAf/8J,YACDiF,GAAY,EAAAopJ,aAAA/vJ,SAAG0B,EAAag9J,GAC5BG,EAAwBn9J,EAAxB,cACAo9J,EAAmBp9J,EAAnB,SACAq9J,EAAoBr9J,EAApB,SAEN,OACCJ,SAAAtB,QAAA4B,cAACwP,GAAUzK,UAAWA,GACrBrF,QAAAtB,QAAA4B,cAAA,SAAO+E,UAAWk4J,GACjBv9J,QAAAtB,QAAA4B,cAAA,SACC+E,UAAWo4J,EACXz/J,MAAOA,EACP05G,YAAaA,EACb3xF,MAAOxlB,EAAMwlB,MACbxb,KAAK,SACL2P,KAAMA,EACNojJ,OAAQA,EACR9uJ,SAAUA,EACV6uJ,QAASA,EACT/K,UAAW90J,KAAKs4J,gBAEjB91J,QAAAtB,QAAA4B,cAAA28J,OAAAv+J,SAAMi5D,KAAMA,EAAMtyD,UAAWm4J,EAAenrD,OAAO,8CA5DhDjyG,YAAc,uBAiBdkK,cACN0iJ,KAAM,aACN7qJ,UAAW,MACXqM,SAAU,aACV6uJ,QAAS,aACTC,OAAQ,8DAvBWH;;qFCFrB,QAASO,QAAOn9J,GACf,GAAM8E,IAAY,EAAAopJ,aAAA/vJ,SAAK,SAAU6B,EAAM8E,UAEvC,OACCrF,SAAAtB,QAAA4B,cAAA,SAAO+E,UAAWA,GACjBrF,QAAAtB,QAAA4B,cAAA,UACC+E,UAAU,iBACVmJ,SAAUjO,EAAMiO,SAChBxQ,MAAOuC,EAAMvC,MAAMA,OAGlBuC,EAAM4Q,QAAQ9J,IAAI,SAAA3C,GAAmB,GAAjB1G,GAAiB0G,EAAjB1G,MAAOkc,EAAUxV,EAAVwV,IAC1B,OAAOla,SAAAtB,QAAA4B,cAAA,UAAQX,IAAK3B,EAAOA,MAAOA,GAAQkc,MAI7Cla,QAAAtB,QAAA4B,cAAA,QAAM+E,UAAU,iBACd9E,EAAMgpG,OAERvpG,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,gBACdrF,QAAAtB,QAAA4B,cAAA,QAAM+E,UAAU,iBACd9E,EAAMvC,MAAMkc,MAEdla,QAAAtB,QAAA4B,cAAA28J,OAAAv+J,SACCi5D,KAAMp3D,EAAMo3D,KACZtyD,UAAU,eACVgtG,OAAO,wEAjCZ,IAAAtyG,QAAAnB,QAAA,gDACAivJ,YAAAjvJ,QAAA,+DAEA89J,MAAA99J,QAAA,+DAEe8+J;;qFCkHf,QAASC,YAAWh8J,EAAOpB,GAC1B,OAAQoB,EAAM3D,OAAS2D,EAAM3D,QAAUuC,EAAMoB,ozBAxH9C5B,OAAAnB,QAAA,gDACAsqH,UAAAtqH,QAAA,aACAuxJ,aAAAvxJ,QAAA,2BACAgvJ,mBAAAhvJ,QAAA,qFAEAg/J,QAAAh/J,QAAA,6DACAoyJ,UAAApyJ,QAAA,0EACAi/J,UAAAj/J,QAAA,4DAGqBk/J,gVASpBn8J,OACC3D,MAAO,8JAIP,GAAIR,KAAK2uH,IAAK,EACA,EAAAjD,UAAAW,aAAYrsH,KAAK2uH,KACzB8gC,oDAKN,IAAI0Q,WAAWngK,KAAKmE,MAAOnE,KAAK+C,OAGhC,IACC,GAAMkxB,GAAO1I,KAAKd,MAAMzqB,KAAKmE,MAAM3D,MACnCR,MAAK+C,MAAMw9J,aAAatsI,GACvB,MAAO1zB,GACRy8B,QAAQz8B,MAAMA,yCAIH0gB,GACZjhB,KAAK8O,UAAUtO,MAAOygB,EAAEjf,OAAOxB,8CAI/BR,KAAK+C,MAAMy9J,gDAGEv/I,GACTA,EAAEpa,SAAyB,KAAdoa,EAAEw0B,UAClBx0B,EAAE9Y,iBACFnI,KAAKygK,oBAEY,KAAdx/I,EAAEw0B,SACLz1C,KAAK0gK,8CAIC/xC,GACP3uH,KAAK2uH,IAAMA,mCAGH,GACD5rH,GAAS/C,KAAT+C,MACD8iE,EAAWs6F,WAAWngK,KAAKmE,MAAOnE,KAAK+C,OACvCwlB,EAAQs9C,EACb,sBAAwB,4BAEzB,OACCrjE,SAAAtB,QAAA4B,cAAA69J,WAAAz/J,SACCqnB,MAAM,eACNq4I,UAAA,EACAC,SACCr+J,QAAAtB,QAAA4B,cAAA,UACCX,IAAI,QACJ0F,UAAU,kEACVg+D,SAAUA,EACVt9C,MAAOA,EACPzgB,QAAS9H,KAAKygK,kBALf,iBASAj+J,QAAAtB,QAAA4B,cAAA6vJ,aAAAprJ,MACCpF,IAAI,QACJ6B,IAAA,EAAA27G,UAAAz+G,YACI6B,EAAMsF,UACTnE,OAAAA,EAAAA,UAAAA,YACInB,EAAMsF,SAASnE,OAClB0kJ,UAAU,MAGZrgI,MAAM,4BACN1gB,UAAU,mEAVX,WAgBDrF,QAAAtB,QAAA4B,cAAAoxJ,WAAAhzJ,SACCi5D,KAAMp3D,EAAMo3D,KACZtyD,UAAU,yBACV3F,OAAO,+DAERM,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,6BACdrF,QAAAtB,QAAA4B,cAAAg+J,SAAA5/J,SACC2G,UAAU,iCACVrH,MAAOR,KAAKmE,MAAM3D,OAASuC,EAAMoB,MACjC6M,SAAUhR,KAAK+gK,aACfjM,UAAW90J,KAAKs4J,cAChB3pC,IAAK3uH,KAAKq4J,8DArGKiI;;swBCVrB/9J,OAAAnB,QAAA,gDACAoyJ,UAAApyJ,QAAA,0EAKM4/J,0RAMI,GAAA54J,GACepI,KAAK+C,MAArBk+J,EADC74J,EACD64J,OAAQ9mG,EADP/xD,EACO+xD,IACf,OACC33D,SAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,qDACdrF,QAAAtB,QAAA4B,cAAAoxJ,WAAAhzJ,SAAUgB,OAAQ++J,EAAQ9mG,KAAMA,EAAMtyD,UAAU,mDAMrCm5J;;qFCLf,QAASE,SAAQn+J,GAAO,GAChBo3D,GAA0Bp3D,EAA1Bo3D,KAAM5V,EAAoBxhD,EAApBwhD,OAAQl8C,EAAYtF,EAAZsF,SACdspJ,EAAaptG,EAAbotG,UAFgBwP,EAIJxZ,WAAAzmJ,QAASupB,MAAMpiB,EAASjB,UAApCA,EAJgB+5J,EAIhB/5J,SACD8qB,GAAK,EAAAkvI,kBAAAlgK,SAAgBkG,EAAUrE,EAAMo3D,MAErCknG,EAAYnvI,EAAG5L,MAAM,KACrBq+C,EAAQ08F,EAAU1gK,OAAS,EAC3B8pG,EAAK9lC,EAAQ,EAAI08F,EAAUzhK,MAAM,EAAGyhK,EAAU1gK,OAAS,GAAGupB,KAAK,KAAO,GACtErpB,GAAO,EAAAygK,WAAApgK,SAASgxB,EAAInvB,EAAM+uJ,WAEhC,KAAKjxJ,EACJ,MACC2B,SAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,wDACdrF,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,qBACdrF,QAAAtB,QAAA4B,cAAAoxJ,WAAAhzJ,SAAUgB,OAAQq/J,kBAAkBrvI,MAMxC,IAAMsvI,IAAgBrnG,KAAAA,EAAM9xD,SAAAA,GACtBi6E,GAAQ,EAAA+lE,QAAAoZ,SAAO,EAAApZ,QAAAoZ,QAAOC,SAAS7gK,EAAM8wJ,EAAW6P,EAAcz+J,EAAMgrB,MAAO,QAAS4zI,SAE1F,OACCn/J,SAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,wDAEC,WAAdhH,EAAKkM,MACJvK,QAAAtB,QAAA4B,cAAA8+J,gBAAA1gK,SACCgxB,GAAIA,EACJ7pB,SAAUA,EACVi6E,MAAOA,EACPmoB,GAAIA,EACJtwC,KAAMA,IAIM,YAAdt5D,EAAKkM,MACJvK,QAAAtB,QAAA4B,cAAA++J,iBAAA3gK,SACCgxB,GAAIA,EACJ+B,KAAMlxB,EAAM4F,QACZmpJ,WAAY/uJ,EAAM+uJ,WAClBvtG,OAAQxhD,EAAMwhD,OACdl8C,SAAUA,EACV0E,KAAMlM,EAAKkM,KACX+0J,cAAe/+J,EAAM+0J,OACrB39F,KAAMA,IAGT33D,QAAAtB,QAAA4B,cAAAi/J,qBAAA7gK,SACCyD,UAAU,QACVolH,eAAe,6BACfliH,UAAU,WACVyiH,uBAAwB,IACxBC,uBAAwB,KAGvBxnH,EAAMohD,SAASt6C,IAAI,SAAAqM,GAClB,MACC1T,SAAAtB,QAAA4B,cAAAk/J,UAAA9gK,SACCgxB,GAAIhc,EAAQgc,GACZ/vB,IAAK+T,EAAQgc,GACbnlB,KAAMmJ,EAAQnJ,KACdwb,MAAOrS,EAAQ+rJ,QACft/B,KAAMzsH,EAAQysH,MAAQzsH,EAAQ6L,MAC9BpZ,QAAS+R,OAAOxE,EAAQvN,SAASshB,OACjCo9H,QAASnxI,EAAQmxI,QACjBiY,MAAOppJ,EAAQopJ,MACfp7G,KAAMhuC,EAAQguC,KACd+sF,UAAW/6H,EAAQ+6H,UACnBmuB,UAAWr8J,EAAMq8J,UACjBC,QAASt8J,EAAMs8J,QACfh3J,SAAUA,EACV8xD,KAAMA,QAyBd,QAAS+nG,aAAYrhK,EAAM8wJ,GAC1B,MAAkB,YAAd9wJ,EAAKkM,KACDlM,EAAKu4G,SAASx2G,aAAe/B,EAAKu4G,SAAS18F,MAAQ7b,EAAKqxB,IAE7Cy/H,EAAU9wJ,EAAKqxB,SAChBtvB,aAAe/B,EAAKqxB,GAGvC,QAASqvI,mBAAkBrvI,GAC1B,MAAA,6EAGmDA,EAHnD,0LAaD,QAASwvI,UAASh9G,EAAMitG,EAAWx8G,EAAUpnB,GAC5C,MAAkB,WAAd22B,EAAK33C,SAGF,EAAAo1J,SAAAjhK,SAAcwjD,EAAKpgD,UACxBuF,IAAIu4J,kBAAkBzQ,EAAWx8G,EAAUpnB,IAC3C/b,OAAO,SAAAnR,GAAA,MAAsB,YAAdA,EAAKkM,MAAsBlM,EAAKy0B,UAGlD,QAAS8sI,mBAAkBzQ,EAAWx8G,EAAUpnB,GAC/C,MAAO,UAAAgsB,GACN,GAAMsoH,GAAuB,YAAftoH,EAAMhtC,MAEnB4b,QAASoxB,EAAMq/D,SAASzwF,QACxByrG,KAAMr6E,EAAMq/D,SAASgb,KACrBhN,KAAMrtE,EAAMq/D,SAASgO,KACrB9xF,SAASvH,IAAkC,IAA3BgsB,EAAMq/D,SAAS9jF,WAIhC,QAAA,EAAAqqF,UAAAz+G,YACIi0C,GACHjjB,GAAI6nB,EAAM7nB,GACVxV,KAAMwlJ,YAAYnoH,EAAO43G,GACzB5kJ,KAAMgtC,EAAMhtC,MACTs1J,8PAnKN9/J,OAAAnB,QAAA,gDACAinJ,QAAAjnJ,QAAA,UACAkhK,oBAAAlhK,QAAA,8GAEAoyJ,UAAApyJ,QAAA,mEACAmhK,SAAAnhK,QAAA,gEACA6mJ,UAAA7mJ,QAAA,sEACAohK,iBAAAphK,QAAA,6FACAqhK,eAAArhK,QAAA,oFACAshK,gBAAAthK,QAAA,uFACAuhK,UAAAvhK,QAAA,qFAEe8/J,OAEf,IAAM0B,YAAa,SAAU,WACvBjB,SAAW,SAAA9gK,GAAA,MAAQ+hK,WAAUt8J,QAAQzF,EAAKkM;;qFCqDhD,QAAS81J,kBAAiB9/J,EAAO+/J,GAChC,MAAA,qaAeCA,EAAiBC,WAAWhgK,GAAS,IAftC,KAmBD,QAASggK,YAAWhgK,GACnB,MAAA,kGAKCA,EAAMoB,MALP,gSA2BKpB,EAAM4lB,QA3BX,iHAmCK5lB,EAAMigK,cAnCX,iHA2CKjgK,EAAMkgK,cA3CX,2DAgDKlgK,EAAMmgK,YAhDX,sCAmDKngK,EAAMogK,eAnDX,4DAwDKpgK,EAAMqgK,YAAcrgK,EAAMqgK,YAAc,WAxD7C,sCA2DKrgK,EAAMsgK,eA3DX,4DAgEKtgK,EAAMugK,aAAevgK,EAAMugK,aAAe,MAhE/C,+CAmEKvgK,EAAMwgK,gBAnEX,4DAwEKxgK,EAAMygK,aAAezgK,EAAMygK,aAAe,MAxE/C,+CA2EKzgK,EAAM0gK,gBA3EX,+DAoFD,QAASC,iBAAgB3gK,GAMxB,MAAA,6NALcmzJ,cAAAh1J,QAAY6pB,WACzBxC,MAAAA,KAAYxlB,EAAM4lB,QAAlB,IACAg6G,KAAAA,oEAGD,ozBAnLDpgI,OAAAnB,QAAA,gDACAuxJ,aAAAvxJ,QAAA,2BACAgvJ,mBAAAhvJ,QAAA,qFAGAu5D,aAAAv5D,QAAA,mEAEAi/J,UAAAj/J,QAAA,4DACAg/J,QAAAh/J,QAAA,6DACAoyJ,UAAApyJ,QAAA,0EAGqBuiK,4UAYX,GACD5gK,GAAS/C,KAAT+C,MACD6gK,EAAgBf,iBAAiB9/J,GAAO,GAExC89J,GACLr+J,QAAAtB,QAAA4B,cAAA6vJ,aAAAprJ,MACCpF,IAAI,IACJ6B,IAAA,EAAA27G,UAAAz+G,YACI6B,EAAMsF,UACTnE,OAAAA,EAAAA,UAAAA,YACInB,EAAMsF,SAASnE,OAClBykJ,OAAO,MAGTpgI,MAAM,4BACN1gB,UAAU,2BAVX,SAgBD,OACCrF,SAAAtB,QAAA4B,cAAA69J,WAAAz/J,SACCqnB,MAAM,kBACNq4I,UAAA,EACAC,QAASA,GAETr+J,QAAAtB,QAAA4B,cAAAoxJ,WAAAhzJ,SACCi5D,KAAMp3D,EAAMo3D,KACZtyD,UAAU,yBACV3F,OAAQwhK,gBAAgB3gK,KAEzBP,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,6BACdrF,QAAAtB,QAAA4B,cAAAg+J,SAAA5/J,SACC2G,UAAU,iCACVg8J,SAAA,EACArjK,MAAOojK,wDAhDQD;;qFCoBrB,QAASG,mBAAkB/gK,GAC1B,GAAM89J,IACLr+J,QAAAtB,QAAA4B,cAAA6vJ,aAAAprJ,MACCpF,IAAI,IACJ6B,IAAA,EAAA27G,UAAAz+G,YACI6B,EAAMsF,UACTnE,OAAAA,EAAAA,UAAAA,YACInB,EAAMsF,SAASnE,OAClB0kJ,UAAU,MAGZrgI,MAAM,4BACN1gB,UAAU,2BAVX,SAeD,OACCrF,SAAAtB,QAAA4B,cAAA69J,WAAAz/J,SACCqnB,MAAM,qBACNq4I,UAAA,EACAC,QAASA,GAETr+J,QAAAtB,QAAA4B,cAAAoxJ,WAAAhzJ,SACCi5D,KAAMp3D,EAAMo3D,KACZtyD,UAAU,yBACV3F,OAAQA,oKA1DZK,OAAAnB,QAAA,gDACAuxJ,aAAAvxJ,QAAA,2BAEAoyJ,UAAApyJ,QAAA,0EACAi/J,UAAAj/J,QAAA,4DAEMc,OAAAA,ilDAwBS4hK;;qFClBf,QAASC,QAAOhhK,GACf,GAAMiB,IAAMoD,SAAUrE,EAAMo3D,KAAMj2D,MAAOnB,EAAMmB,OACzC8/J,GACL58J,SAAUrE,EAAMqE,SAChBlD,OAAAA,EAAAA,UAAAA,YACInB,EAAMmB,OACT2kJ,gBAAiB9lJ,EAAMouJ,cAIzB,OACC3uJ,SAAAtB,QAAA4B,cAAA,UAAQ+E,UAAU,mCACjBrF,QAAAtB,QAAA4B,cAAA6vJ,aAAAhwJ,WACCqB,GAAIA,EACJukB,MAAM,qCACN1gB,UAAU,QAEVrF,QAAAtB,QAAA4B,cAACmhK,aAAYrS,KAAM7uJ,EAAM6uJ,OACzBpvJ,QAAAtB,QAAA4B,cAAA,QAAM+E,UAAU,sBACd9E,EAAMwlB,QAGT/lB,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,WACdrF,QAAAtB,QAAA4B,cAAA6vJ,aAAAprJ,MACCM,UAAU,OACV7D,GAAIggK,GAEJxhK,QAAAtB,QAAA4B,cAAA28J,OAAAv+J,SACCi5D,KAAMp3D,EAAMo3D,KACZ06C,OAAO,eACPhmE,UAAU,GAGT9rC,EAAMouJ,YACL,eACA,kBAmBR,QAAS8S,aAAYlhK,GACpB,GAAM2tC,IAAQ,EAAA23G,QAAAwN,YAAW9yJ,EAAM6uJ,KAAK3nI,OAAQ,QACtC09C,EAASj3B,EAAQwzH,aAAanhK,EAAM6uJ,MAAQ,KAC5CuS,EAAMx8F,GAAUw0C,MAAUx0C,EAAO5kE,MAAMo5G,MAAvB,KAAkCzD,OAAW/wC,EAAO5kE,MAAM21G,OAAxB,MAAsC,IAC9F,OAAO/wC,GACNnlE,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,QAAOrF,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,WAAWE,MAAOo8J,GAAMx8F,IAC7DnlE,QAAAtB,QAAA4B,cAAA28J,OAAAv+J,SAAM2zG,OAAQ9xG,EAAM6uJ,KAAM/iH,UAAU,IAOtC,QAASq1H,cAAav5I,GACrB,GAAMs5B,IAAM,EAAAmgH,UAAAljK,WACV4gI,IADUuiC,cAAAnjK,SAEVupB,MAAME,GACF25I,GAAM,EAAAjc,QAAAuN,OAAK,EAAA2O,kBAAArjK,SAAO+iD,EAAK,KAAM,SAAAhjC,GAAA,MAAmB,QAAdA,EAAE6lB,UACpCta,GAAK,EAAAmoI,oBAAAzzJ,SAAIsB,QAAAtB,QAAM4B,cAAewhK,GAC9BvhK,GAAQ,EAAAslJ,QAAAhiJ,MAAKmmB,EAAGzpB,OAAO8N,OAAO,SAAC9N,EAAOoN,GAE3C,MADApN,IAAM,EAAAslJ,QAAAvkG,WAAU3zC,IAASqc,EAAGzpB,MAAMoN,GAC3BpN,MAER,QAAO,EAAAslJ,QAAAtmJ,WAAWyqB,GAAKzpB,MAAAA,8JAzFxBR,OAAAnB,QAAA,gDACAuxJ,aAAAvxJ,QAAA,2BACAinJ,QAAAjnJ,QAAA,UACAojK,SAAApjK,QAAA,sDACAqjK,aAAArjK,QAAA,mEACAsjK,iBAAAtjK,QAAA,gFACAwzJ,mBAAAxzJ,QAAA,sFAEA89J,MAAA99J,QAAA,uEAEe2iK;;qFCNf,QAASY,UAAS5hK,GACjB,MACCP,SAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,YAEb9E,EAAM69J,UAAYp+J,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,uBAElCrF,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,uBACdrF,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,mBACdrF,QAAAtB,QAAA4B,cAAA,MAAI+E,UAAU,QACZ9E,EAAMwlB,QAGT/lB,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,sBACb9E,EAAMuB,UAER9B,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,wBACb9E,EAAM89J,iEApBZ,IAAAt+J,QAAAnB,QAAA,gEAEeujK;;y5CCFfpiK,OAAAnB,QAAA,gDACAgvJ,mBAAAhvJ,QAAA,qFACAivJ,YAAAjvJ,QAAA,+DACAg2J,qBAAAh2J,QAAA,4FAEAwjK,gBAAAxjK,QAAA,8EACAyjK,gBAAAzjK,QAAA,8EACA0jK,mBAAA1jK,QAAA,uFACA2jK,aAAA3jK,QAAA,6EACA4jK,QAAA5jK,QAAA,sDAGM6jK,2VA+BchkJ,GAClBA,EAAE9Y,4DAIgB8Y,GAClBjhB,KAAK+C,MAAMiuJ,SAAS/vI,EAAEjf,OAAOxB,wCAGrB,GACDuC,GAAS/C,KAAT+C,MAED8E,GAAY,EAAAopJ,aAAA/vJ,SAAW,sCAC5BgkK,MAASniK,EAAMqsJ,SACf+V,uBAAwBpiK,EAAMqsJ,UAG/B,OACC5sJ,SAAAtB,QAAA4B,cAAA,OAAK+E,UAAWA,GACfrF,QAAAtB,QAAA4B,cAAAsiK,SAAAlkK,SACCi5D,KAAMp3D,EAAMo3D,KACZy3F,KAAM7uJ,EAAM6uJ,KACZT,YAAapuJ,EAAMouJ,YACnB/pJ,SAAUrE,EAAMqE,SAChBlD,MAAOnB,EAAMmB,MACbqkB,MAAOxlB,EAAMwlB,MACbI,QAAS5lB,EAAM4lB,UAEhBnmB,QAAAtB,QAAA4B,cAAAuiK,iBAAAnkK,SACCwwJ,cAAe3uJ,EAAM2uJ,cACrBv3F,KAAMp3D,EAAMo3D,KACZlmC,KAAMlxB,EAAM+uJ,WACZ5tJ,MAAOnB,EAAMmB,MACbytJ,UAAW5uJ,EAAM4uJ,UACjB5jI,KAAMhrB,EAAMgrB,MAEZvrB,QAAAtB,QAAA4B,cAAA,QAAMwzJ,SAAUt2J,KAAKslK,mBAAoBpiI,OAAO,OAC/C1gC,QAAAtB,QAAA4B,cAAAyiK,cAAArkK,SACCi5D,KAAMp3D,EAAMo3D,KACZq1F,KAAMxvJ,KAAK+C,MAAMivJ,kBACjBnqJ,UAAU,2BACV29J,OAAO,UACP9oJ,KAAK,SACLojJ,OAAQ9/J,KAAKylK,iBACbz0J,SAAUhR,KAAK0lK,mBACf7F,QAAS7/J,KAAK2lK,kBACdzrD,YAAY,SACZ3xF,MAAM,mCACN/nB,MAAOuC,EAAMkvJ,eAGfzvJ,QAAAtB,QAAA4B,cAAA8iK,iBAAA1kK,SACC0gG,OAAQ7+F,EAAMqE,WAAarE,EAAMo3D,KACjCA,KAAMp3D,EAAMo3D,KACZh4D,IAAI,OACJqjK,OAAO,IACP9oJ,KAAK,gBACLxY,MAAOnB,EAAMmB,MACb2wG,OAAO,gBACPtsF,MAAM,qCACNxb,KAAK,UAGPvK,QAAAtB,QAAA4B,cAAA+iK,oBAAA3kK,SACCi5D,KAAMp3D,EAAMo3D,KACZi1F,SAAUrsJ,EAAMqsJ,SAChB2C,cAAehvJ,EAAMgvJ,cACrB3qJ,SAAUrE,EAAMqE,SAChBlD,MAAOnB,EAAMmB,MACbwrJ,MAAO3sJ,EAAM2sJ,gBApGOltJ,QAAAtB,QAAMoR,mBAwBvBxF,cACNkkJ,SAAU,aACV8U,aAAc,aACd9T,kBAAmB,ucAgFNiT;;mhBChHf,QAASc,eAA0B,IAAA,GAAAt1J,GAAA3Q,UAAAa,OAAX0gK,EAAW3hK,MAAA+Q,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAX0wJ,EAAW1wJ,GAAA7Q,UAAA6Q,EAClC,IAAM0/G,GAAMgxC,EACVn3I,KAAK,KACL5D,MAAM,KACNtU,OAAO45C,SACP/hD,IAAI,SAAAgmC,GAAA,MAAyB,MAAbA,EAAmB,GAAKA,IACxC79B,OAAO45C,SACP1hC,KAAK,KACD87I,EAAiB,KAAR31C,EAAa,IAAMA,CAGlC,QAF0B,MAAd21C,EAAO,GAAa,GAAK,KAErBA,GAD2B,MAA9BA,EAAOA,EAAOrlK,OAAS,GAAa,GAAK,05BAjBvD4B,OAAAnB,QAAA,gDACAuxJ,aAAAvxJ,QAAA,2BACAgvJ,mBAAAhvJ,QAAA,qFACAivJ,YAAAjvJ,QAAA,+DACAinJ,QAAAjnJ,QAAA,UACA89J,MAAA99J,QAAA,uDAgBqB6kK,sTAkCRhlJ,GACXjhB,KAAK+C,MAAM+E,QAAQmZ,EAAGjhB,uCAGd,GACD+C,GAAS/C,KAAT+C,MACWuP,EAAavP,EAAxB4B,UAED2wC,GACL4wH,eAAgBnjK,EAAM6+F,OACtB+W,OAAU51G,EAAM41G,OAChBwtD,SAAYpjK,EAAMojK,UAGbC,GAAgB,EAAAnV,aAAA/vJ,SAAA,oCAA+C6B,EAAMgK,KAAQuoC,GAC7E+wH,GAAgB,EAAApV,aAAA/vJ,SAAW,kBAAmBo0C,GAC9CluC,EAAW2+J,YAAYhjK,EAAMo3D,KAAMp3D,EAAMyiK,OAAQziK,EAAMmvB,IACvDluB,GAAMoD,SAAAA,EAAUlD,OAAO,EAAAmkJ,QAAAxiB,MAAK9iI,EAAMmB,OAAQ,kBAC1CqkB,EAAQxlB,EAAMwlB,OAAN,eAA8BxlB,EAAM2Z,KAApC,IAA4C3Z,EAAMgK,KAC1D8nG,EAAS9xG,EAAM6+F,QAA4B,WAAjB7+F,EAAM8xG,OAAuB9xG,EAAMujK,aAAevjK,EAAM8xG,MAExF,OACCryG,SAAAtB,QAAA4B,cAACwP,GAAUzK,UAAWu+J,GACrB5jK,QAAAtB,QAAA4B,cAAA6vJ,aAAAprJ,MACCO,QAAS9H,KAAKiI,YACdjE,GAAIA,EACJukB,MAAOA,EACP1gB,UAAWw+J,GAEX7jK,QAAAtB,QAAA4B,cAAA28J,OAAAv+J,SAAM2zG,OAAQA,IACdryG,QAAAtB,QAAA4B,cAAA,OAAA,KAAOC,EAAM2Z,OAGb3Z,EAAM6+F,QAAU7+F,EAAMuB,iBAnEiB9B,QAAAtB,QAAMoR,mBAyB1CxF,cACNnI,UAAW,KACXi9F,QAAQ,EACR+W,QAAQ,EACR6sD,OAAQ,UACR19J,QAAS,mOA9BUm+J;;qFCfN,QAASM,kBAAiBxjK,GACxC,GAAMi9J,IAAgB,EAAA/O,aAAA/vJ,UACrBslK,iBAAkBzjK,EAAMqsJ,UAGzB,OACC5sJ,SAAAtB,QAAA4B,cAAA6vJ,aAAAprJ,MACCvD,IACCoD,SAAUrE,EAAMqE,SAChBlD,OAAAA,EAAAA,UAAAA,YAAWnB,EAAMmB,OAAWkrJ,UAAWrsJ,EAAMqsJ,YAE9CvnJ,UAAU,aACV0gB,MAAOxlB,EAAMqsJ,SAAW,+BAAiC,8BAEzD5sJ,QAAAtB,QAAA4B,cAAA28J,OAAAv+J,SAAMi5D,KAAMp3D,EAAMo3D,KAAMtyD,UAAWm4J,EAAenrD,OAAO,kMAdpC0xD,gBANxB,IAAAhkK,QAAAnB,QAAA,gDACAuxJ,aAAAvxJ,QAAA,2BACAivJ,YAAAjvJ,QAAA,+DAEA89J,MAAA99J,QAAA;;qFCEe,QAASqlK,mBAAkB1jK,GAEzC,GAAM4lJ,IACLvhJ,SAAUrE,EAAMqE,SAChBlD,OAAAA,EAAAA,UAAAA,YACInB,EAAMmB,OACTykJ,OAAO,KAIH+d,GACLt/J,SAAUrE,EAAMqE,SAChBlD,OAAAA,EAAAA,UAAAA,YACInB,EAAMmB,OACT0kJ,SAAU,eAIN+d,EAA8B,SAAhB5jK,EAAM2sJ,MAAmB,QAAU,OACjDkX,EAAoB,WAAA,MAAM7jK,GAAMgvJ,cAAc4U,IAE9C52B,GACL8qB,OAAQvlI,QAAyB,UAAhBqxI,EAA0B,QAAU,QACrDpM,MAAOjlI,QAAyB,SAAhBqxI,EAAyB,QAAU,QAGpD,OACCnkK,SAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,sBACdrF,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,iCACdrF,QAAAtB,QAAA4B,cAAA,MAAI+E,UAAU,6BACbrF,QAAAtB,QAAA4B,cAAA,MAAI+E,UAAU,4BACbrF,QAAAtB,QAAA4B,cAAA6vJ,aAAAprJ,MACCM,UAAU,SACV0gB,MAAM,2BACNvkB,GAAI2kJ,GAEJnmJ,QAAAtB,QAAA4B,cAAA28J,OAAAv+J,SAAM2zG,OAAO,YAGfryG,QAAAtB,QAAA4B,cAAA,MAAI+E,UAAU,4BACbrF,QAAAtB,QAAA4B,cAAA6vJ,aAAAprJ,MACCM,UAAU,SACV0gB,MAAM,mCACNvkB,GAAI0iK,GAEJlkK,QAAAtB,QAAA4B,cAAA28J,OAAAv+J,SAAM2zG,OAAO,cAGfryG,QAAAtB,QAAA4B,cAAA,MAAI+E,UAAU,4BACbrF,QAAAtB,QAAA4B,cAAA,UACC+E,UAAU,SACVkF,KAAK,SACLjF,QAAS8+J,EACTr+I,MAAA,aAAoBo+I,EAApB,mBAEAnkK,QAAAtB,QAAA4B,cAAA28J,OAAAv+J,SACCi5D,KAAMp3D,EAAMo3D,KACZ06C,OAAO,QACP9sG,MAAOgoI,EAAO8qB,OAHf,SAOAr4J,QAAAtB,QAAA4B,cAAA28J,OAAAv+J,SACCi5D,KAAMp3D,EAAMo3D,KACZ06C,OAAO,OACP9sG,MAAOgoI,EAAOwqB,MAHf,YAWJ/3J,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,8BACdrF,QAAAtB,QAAA4B,cAAA+jK,mBAAA3lK,SACCi5D,KAAMp3D,EAAMo3D,KACZi1F,SAAUrsJ,EAAMqsJ,SAChBhoJ,SAAUrE,EAAMqE,SAChBlD,MAAOnB,EAAMmB,oLA9EMuiK,iBANxB,IAAAlkK,QAAAnB,QAAA,gDACAuxJ,aAAAvxJ,QAAA,2BAEA89J,MAAA99J,QAAA,uDACA0lK,kBAAA1lK,QAAA;;6wBCJAinJ,QAAAjnJ,QAAA,UACAmB,OAAAnB,QAAA,gDACAg2J,qBAAAh2J,QAAA,4FACAkhK,oBAAAlhK,QAAA,8GAEAyjK,gBAAAzjK,QAAA,8EACA2lK,kBAAA3lK,QAAA,8FAGM4lK,iVACLpkK,YAAc,gKAkBL,GAAA89G,GAAA1gH,KACD+C,EAAS/C,KAAT+C,MADCkkK,GAEoB,EAAAC,mBAAAhmK,SAAqB6B,EAAMkxB,KAAMlxB,EAAM4uJ,WAA5DwV,EAFCF,EAEDE,QAASz1D,EAFRu1D,EAEQv1D,QAEhB,OACClvG,SAAAtB,QAAA4B,cAAAi/J,qBAAA7gK,SACCyD,UAAU,KACVkD,UAAU,kBACVkiH,eAAe,6BACfO,uBAAwB,IACxBC,uBAAwB,KAEvBxnH,EAAMuB,SAEN6iK,EAAQt9J,IAAI,SAAA4wJ,GACX,GAAM74D,IAAS,EAAAymD,QAAAwN,YAAW9yJ,EAAM2uJ,cAAe+I,EAAOvoI,GAEtD,OACC1vB,SAAAtB,QAAA4B,cAAA8iK,iBAAA1kK,SACC0gG,OAAQA,GAAU64D,EAAOrL,SACzBj1F,KAAMp3D,EAAMo3D,KACZjoC,GAAIuoI,EAAOvoI,GACX/vB,IAAKs4J,EAAOvoI,GACZxV,KAAM+9I,EAAO73J,YACbkF,QAAS44G,EAAK0mD,kBACdljK,MAAOnB,EAAMmB,MACbmjK,YAAatkK,EAAMskK,YACnBxyD,OAAQ4lD,EAAO7I,KACf0U,aAAc7L,EAAO6M,WACrBv6J,KAAK,YACLghB,KAAMhrB,EAAMgrB,MAEZvrB,QAAAtB,QAAA4B,cAACkkK,GACAtV,cAAe3uJ,EAAM2uJ,cACrBv3F,KAAMp3D,EAAMo3D,KACZlmC,KAAMwmI,EAAOn2J,SACbqtJ,UAAW5uJ,EAAM4uJ,UACjBz/H,GAAIuoI,EAAOvoI,GACXhuB,MAAOnB,EAAMmB,MACbmjK,YAAatkK,EAAMskK,YACnBt5I,KAAMhrB,EAAMgrB,UAOhB2jF,EAAS7nG,IAAI,SAAAlB,GAAW,GAEtB/F,GAIG+F,EAJH/F,YACAwsJ,EAGGzmJ,EAHHymJ,SACAriJ,EAEGpE,EAFHoE,KACAqsG,EACGzwG,EADHywG,SALsBmuD,EAQAnuD,EAAhBzlG,QAAAA,MARgBvO,KAAAmiK,KAAAA,EAAAC,EASE7zJ,EAAlBglG,OAAAA,MATgBvzG,KAAAoiK,GAAAA,EAUjBC,IAAW1kK,EAAMgrB,MAAO4qF,CAE9B,OACCn2G,SAAAtB,QAAA4B,cAAA8iK,iBAAA1kK,SACC0gG,OAAQ7+F,EAAM2uJ,gBAAkB/oJ,EAAQupB,IAAMk9H,EAC9Cj1F,KAAMp3D,EAAMo3D,KACZw+C,OAAQ8uD,EACRv1I,GAAIvpB,EAAQupB,GACZ/vB,IAAKwG,EAAQupB,GACbxV,KAAM9Z,EACNsB,MAAOnB,EAAMmB,MACbyqH,IAAKjO,EAAKgnD,mBACVL,YAAatkK,EAAMskK,YACnBxyD,OAAQ9nG,EACRA,KAAMA,EACNghB,KAAMhrB,EAAMgrB,4DAULi5I;;qFC1GA,QAASW,aAAY5kK,GAAO,GAEzC6kK,GAEG7kK,EAFH6kK,YAAatnG,EAEVv9D,EAFUu9D,MAAOnG,EAEjBp3D,EAFiBo3D,KAAMmoB,EAEvBv/E,EAFuBu/E,MAAOrlE,EAE9Bla,EAF8Bka,EAAGC,EAEjCna,EAFiCma,EAAG7U,EAEpCtF,EAFoCsF,SAAUw/J,EAE9C9kK,EAF8C8kK,QAASnvD,EAEvD31G,EAFuD21G,OAAQ5wG,EAE/D/E,EAF+D+E,QAClEggK,EACG/kK,EADH+kK,aAAcC,EACXhlK,EADWglK,YAGf,OACCvlK,SAAAtB,QAAA4B,cAAA,IAAA,KAEEw/E,EAAMz4E,IAAI,SAAA3C,EAAwB5G,GAAU,GAAhCoc,GAAgCxV,EAAhCwV,KAAMwV,EAA0BhrB,EAA1BgrB,GAAI81I,EAAsB9gK,EAAtB8gK,UACfj8D,GAASrvF,EAAMsrJ,GAAW99I,KAAK,IAC/BiyF,EAAQh/F,KAAKwc,IAAI,EAAkB,GAAfoyE,EAAMprG,QAC1BglD,EAAmB,UAAV2a,EAAoB67C,EAAQ,EAAI,EACzC39F,GAAK,GAAK29F,GAAS,EACnBh6G,GAAO+vB,EAAIxV,EAAMsrJ,GAAWh2J,OAAO45C,SAAS1hC,KAAK,IAEvD,OACC1nB,SAAAtB,QAAA4B,cAAAmlK,QAAA/mK,SACC0gG,OAAQgmE,IAAgBzlK,EACxB4K,KAAK,QACLotD,KAAMA,EACNjoC,GAAIA,EACJg2I,QAAS/lK,EACTua,KAAMA,EACNO,EAAGA,EAAI0oC,EACPxjD,IAAKA,EACL+a,EAAGA,EAAI5c,GAASo4G,EAAS,GACzByD,MAAOA,EACPzD,OAAQA,EACRmvD,SAAA,EAAAloD,UAAAz+G,YAAa2mK,GAASrpJ,EAAAA,IACtB1W,QAASA,EACTggK,aAAcA,EACdC,aAAcA,EACd1/J,SAAUA,MAMbi6E,EAAMz4E,IAAI,SAAA61G,EAAwBp/G,GAAU,GAAhCoc,GAAgCgjG,EAAhChjG,KAAMsrJ,EAA0BtoD,EAA1BsoD,UAAW91I,EAAewtF,EAAfxtF,GACtB65E,GAASrvF,EAAMsrJ,GAAW99I,KAAK,IAC/Bi7B,EAAiB,UAAVmb,EAAoB0nG,EAAY91I,EACvCiqF,EAAQh/F,KAAKwc,IAAI,EAAkB,GAAfoyE,EAAMprG,QAC1BwnK,EAAahrJ,KAAKwc,IAAI,EAAiB,GAAdwrB,EAAKxkD,QAC9BwB,GAAO+vB,EAAIxV,EAAMsrJ,GAAWh2J,OAAO45C,SAAS1hC,KAAK,KACjDk+I,EAAmB,UAAV9nG,EAAoBrjD,EAAIk/F,EAAQl/F,EAAIk/F,EAC7Cx2D,EAAmB,UAAV2a,EAAoB,EAAI,CACvC,OACC99D,SAAAtB,QAAA4B,cAACulK,OACAzmE,OAAQgmE,IAAgBzlK,EACxBm+D,MAAOA,EACPn+D,IAAKA,EACLg6G,MAAOgsD,EACPzvD,OAAQ,IACRz7F,EAAGmrJ,EAASziH,EACZzoC,EAAGA,EAAI5c,GAASo4G,EAAS,GAAMA,EAAS,EAAK,GAC7CvzD,KAAMA,MAMTm9B,EAAMz4E,IAAI,SAAAhJ,GACT,GAAMynK,GAAuB,SAAVhoG,EAAmB,QAAU,OAC1Cnb,EAAiB,UAAVmb,EAAoBz/D,EAAKqxB,GAAKrxB,EAAKmnK,UAC1C7lK,GAAOtB,EAAKqxB,GAAIrxB,EAAK6b,KAAM7b,EAAKmnK,WAAWh2J,OAAO45C,SAAS1hC,KAAK,KAChEi+I,EAAahrJ,KAAKwc,IAAI,EAAiB,GAAdwrB,EAAKxkD,OAEpC,OACC6B,SAAAtB,QAAA4B,cAACulK,OACAzmE,OAAQgmE,IAAgBzlK,EACxBm+D,MAAOgoG,EACPnmK,IAAKA,EACLgjD,KAAMA,EACNg3D,MAAOgsD,EACPzvD,OAAQ,IACRz7F,EAAG4qJ,EAAQ5qJ,EACXC,EAAG2qJ,EAAQ3qJ,EAAI,QAwCtB,QAASmrJ,OAAMtlK,GACd,IAAKA,EAAMoiD,KACV,MAAO,KAGR,IAAMloC,GAAoB,UAAhBla,EAAMu9D,MAAqBv9D,EAAMka,EAAIla,EAAMo5G,MAASp5G,EAAMka,EAC9DpV,GAAY,EAAAopJ,aAAA/vJ,SAAK,SACtBqnK,gBAAiBxlK,EAAM6+F,QAGxB,OACCp/F,SAAAtB,QAAA4B,cAAA,KAAG+E,UAAWA,GACbrF,QAAAtB,QAAA4B,cAAA,UACC+E,UAAU,gBACV6zJ,GAAIz+I,EAAIla,EAAMo5G,MACdw/C,GAAI54J,EAAMma,EAAIna,EAAM21G,OAAS,EAC7B36E,EAAG,KAEJv7B,QAAAtB,QAAA4B,cAAA,UACC+E,UAAU,gBACV6zJ,GAAIz+I,EACJ0+I,GAAI54J,EAAMma,EAAIna,EAAM21G,OAAS,EAC7B36E,EAAG,KAEJv7B,QAAAtB,QAAA4B,cAAA,QACC41G,OAAQ31G,EAAM21G,OACdyD,MAAOp5G,EAAMo5G,MACbl/F,EAAGA,EACHC,EAAGna,EAAMma,EACTrV,UAAU,qBAEXrF,QAAAtB,QAAA4B,cAAA,QACCma,EAAGA,EAAIla,EAAMo5G,MAAQ,EACrBj/F,EAAGna,EAAMma,EAAI,KAAQna,EAAM21G,OAAS,EACpC7wG,UAAU,eACT9E,EAAMoiD,iLAxJawiH,WAJxB,IAAAplK,QAAAnB,QAAA,gDACAivJ,YAAAjvJ,QAAA,+DACAonK,OAAApnK,QAAA,iDA+GAumK,aAAY76J,cACXw1E,SACAplE,EAAG,EACHpV,QAAS,aACTw4D,MAAO,OACPitC,YAAa;;kzBCtHdhrG,OAAAnB,QAAA,gDACAgvJ,mBAAAhvJ,QAAA,qFACAqnK,aAAArnK,QAAA,kEACAsnK,YAAAtnK,QAAA,iEAGqBunK,6UA+BR1nJ,GACXA,EAAE9Y,iBACFnI,KAAK+C,MAAM+E,QAAQ9H,KAAK+C,wCAGhB,GACDA,GAAS/C,KAAT+C,MACAsF,EAAkBtF,EAAlBsF,SAAU8xD,EAAQp3D,EAARo3D,KACXtyD,EAAAA,yBAAqC9E,EAAMgK,KAC3C67J,EAAc7lK,EAAMka,EAAI,GAAK,EAAI,EAEjC6qJ,EAAe,WAAA,MAAM/kK,GAAM+kK,aAAa/kK,EAAMmlK,UAC9CH,EAAe,WAAA,MAAMhlK,GAAMglK,aAAahlK,EAAMmlK,UAE9C9mJ,GACLnE,EAAGla,EAAMka,EAAIla,EAAMo5G,MAAQysD,EAC3B1rJ,EAAGna,EAAMma,EAAKna,EAAM21G,OAAS,GAGxB12G,EAASe,EAAM8kK,QAEf77J,EAAuB,IAAhB48J,EAAoBxnJ,EAAQpf,EACnCgC,EAAqB,IAAhB4kK,EAAoB5mK,EAASof,EAElCynJ,EAAuB,SAAf9lK,EAAMgK,KAAkB,GAAKhK,EAAMka,EAAIla,EAAMo5G,MAAQ,EAC7D2sD,EAAQ/lK,EAAMma,EAAIna,EAAM21G,OAAS,EAEjChxG,GACFyyD,EADS,WACMp3D,EAAMmvB,GACxB62I,cAAA7nK,QAAY6pB,UAAU1iB,EAASnE,QAC9BgmB,KAAK,IAEP,OACC1nB,SAAAtB,QAAA4B,cAAA,KAAG+E,UAAU,cAAcigK,aAAcA,EAAcC,aAAcA,GACpEvlK,QAAAtB,QAAA4B,cAAA,KAAG42J,UAAWhyJ,EAAMG,UAAWA,GAC9BrF,QAAAtB,QAAA4B,cAAA,QACC+E,UAAWA,EACXoV,EAAGla,EAAMka,EACTC,EAAGna,EAAMma,EACTi/F,MAAOp5G,EAAMo5G,MACbzD,OAAQ31G,EAAM21G,OACd5wG,QAAS9H,KAAKiI,eAIflF,EAAM8kK,SACLrlK,QAAAtB,QAAA4B,cAAAkmK,aAAA9nK,SACC+nK,QAASlmK,EAAMmvB,GAAInvB,EAAMilK,WACzBh8J,KAAMA,EACNhI,GAAIA,EACJwa,EAAGxc,EAAOwc,GAAK,KAIjBzb,EAAM2Z,MACLla,QAAAtB,QAAA4B,cAAA,KAAG42J,UAAWhyJ,GACblF,QAAAtB,QAAA4B,cAAA,QACCma,EAAG4rJ,EACH3rJ,EAAG4rJ,EACH3sD,MAAOp5G,EAAMo5G,MACbzD,OAAQ31G,EAAM21G,OACd7wG,UAAU,cAET9E,EAAM2Z,yCAxEP5P,cACNC,KAAM,QACNovG,MAAO,EACPzD,OAAQ,EACR5wG,QAAS,aACTggK,aAAc,aACdC,aAAc,qDA5BKY;;qFCCrB,QAASO,QAAO1uJ,EAAGC,GAAW,GAAR+D,GAAQ1e,UAAAa,OAAA,OAAAyE,KAAAtF,UAAA,GAAAA,UAAA,GAAJ,EACzB,OAAA,IAAW0a,EAAEyC,EAAb,IAAkBzC,EAAE0C,EAApB,MAA0B1C,EAAEyC,EAAIuB,GAAhC,IAAqChE,EAAE0C,EAAvC,KAA4CzC,EAAEwC,EAAIuB,GAAlD,IAAuD/D,EAAEyC,EAAzD,IAA8DzC,EAAEwC,EAAhE,IAAqExC,EAAEyC,EAGzD,QAASisJ,YAATjiK,GAAmC,GAAd8E,GAAc9E,EAAd8E,KAAMhI,EAAQkD,EAARlD,GAAIwa,EAAItX,EAAJsX,EACvCojC,EAAIsnH,OAAOl9J,EAAMhI,EAAIwa,EAC3B,OACChc,SAAAtB,QAAA4B,cAAA,KAAG+E,UAAU,oBACZrF,QAAAtB,QAAA4B,cAAA,UAAQ+E,UAAU,YAAY6zJ,GAAI1vJ,EAAKiR,EAAG0+I,GAAI3vJ,EAAKkR,EAAG6gB,EAAG,KACzDv7B,QAAAtB,QAAA4B,cAAA,QAAM+E,UAAU,aAAa+5C,EAAGA,IAChCp/C,QAAAtB,QAAA4B,cAAA,UAAQ+E,UAAU,YAAY6zJ,GAAI13J,EAAGiZ,EAAG0+I,GAAI33J,EAAGkZ,EAAG6gB,EAAG,MAWxD,QAASsqI,OAAMtlK,GACd,IAAKA,EAAMoiD,KACV,MAAO,KAFa,IAKdmb,GAA0Bv9D,EAA1Bu9D,MAAOo4C,EAAmB31G,EAAnB21G,OAAQvzD,EAAWpiD,EAAXoiD,KAAMjoC,EAAKna,EAALma,EACtBi/F,EAAsB,GAAdh3D,EAAKxkD,OACbsc,EAAc,SAAVqjD,EAAmBv9D,EAAMka,EAAIla,EAAMka,EAAIk/F,CAEjD,OACC35G,SAAAtB,QAAA4B,cAAA,KAAG+E,UAAU,SACZrF,QAAAtB,QAAA4B,cAAA,QAAM+E,UAAU,mBAAmBoV,EAAGA,EAAGC,EAAGA,EAAIw7F,EAAS,EAAGA,OAAQA,EAAQyD,MAAOA,IACnF35G,QAAAtB,QAAA4B,cAAA,QAAM+E,UAAU,cAAcoV,EAAGA,EAAIk/F,EAAQ,EAAGj/F,EAAGA,GAAIioC,2EA7BlCgkH,UAXxB,IAAA5mK,QAAAnB,QAAA,gDAEMgoK,WAAa7mK,OAAAqV,UAAErS,OACpB0X,EAAG1a,OAAAqV,UAAEg9F,OAAO3wG,WACZiZ,EAAG3a,OAAAqV,UAAEg9F,OAAO3wG;;qFCKb,QAASolK,SAAQtmK,GAChB,GAAMumK,GAAgBvmK,EAAMq4J,OAEtBmO,GAAkB,EAAAC,SAAAtoK,SAAO6B,EAAMwmK,gBAAiB,gBAChDE,GAAsB,EAAAD,SAAAtoK,SAAO6B,EAAM0mK,oBAAqB,gBACxDC,GAAe,EAAAF,SAAAtoK,SAAO6B,EAAM2mK,aAAc,eAEhD,OACClnK,SAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,WACdrF,QAAAtB,QAAA4B,cAAA6mK,gBAAAzoK,SACC0oK,UAAW7mK,EAAM6mK,UACjBzvG,KAAMp3D,EAAMo3D,KACZ0vG,YAAa9mK,EAAM8mK,YACnBx7D,YAAatrG,EAAMsrG,YACnBy7D,QAAS/mK,EAAM+mK,QACf11C,KAAMrxH,EAAMqxH,KACZliG,GAAInvB,EAAMmvB,GACV63I,QAAShnK,EAAMgnK,QACf1hK,SAAUtF,EAAMsF,SAChBqU,KAAM3Z,EAAM2Z,KACZkhI,QAAS76I,EAAM66I,QACf0rB,cAAeA,EACfU,WAAYjnK,EAAMinK,WAClBC,aAAclnK,EAAMknK,aACpB5a,OAAQtsJ,EAAMssJ,OACdjoC,KAAMrkH,EAAMqkH,KACZz+F,QAAS5lB,EAAM4lB,UAEhBnmB,QAAAtB,QAAA4B,cAAAonK,cAAAhpK,SACCi5D,KAAMp3D,EAAMo3D,KACZgwG,cAAepnK,EAAMqnK,kBACrBC,aAActnK,EAAMunK,iBACpBj8D,YAAatrG,EAAMsrG,YACnBqK,OAAQ31G,EAAMwnK,WACdR,QAAShnK,EAAMgnK,QACf77J,QAASnL,EAAMynK,YACfC,QAAS1nK,EAAM2nK,YACf9Z,SAAU7tJ,EAAM4nK,oBAChBtV,SAAUtyJ,EAAM6nK,aAChBhtB,QAAS76I,EAAM66I,QACfosB,WAAYjnK,EAAMinK,WAClB9R,WAAYn1J,EAAMssJ,OAClBsI,OAAQ50J,EAAM40J,OACdtI,OAAQtsJ,EAAMssJ,OACdwb,OAAQ9nK,EAAM8nK,OACdC,OAAQ/nK,EAAM+nK,OACdC,aAAchoK,EAAMgoK,aACpBC,aAAcjoK,EAAMioK,aACpBhpK,OAAQe,EAAMmvB,GACdiqF,MAAOp5G,EAAMkoK,YAEdzoK,QAAAtB,QAAA4B,cAAAooK,iBAAAhqK,SACCiqK,aAAcpoK,EAAMooK,aACpBhxG,KAAMp3D,EAAMo3D,KACZhuB,KAAMppC,EAAMopC,KACZs6F,aAAc1jI,EAAM0jI,aACpB2kC,WAAYroK,EAAMqoK,WAClB/8D,YAAatrG,EAAMsrG,YACnBg9D,aAActoK,EAAMsoK,aACpBn5I,GAAInvB,EAAMmvB,GACV63I,QAAShnK,EAAMgnK,QACf1hK,SAAUtF,EAAMsF,SAChBqU,KAAM3Z,EAAM2Z,KACZ6sJ,gBAAiBA,EACjBE,oBAAqBA,EACrB6B,cAAevoK,EAAMuoK,cACrB5B,aAAcA,EACdta,SAAUrsJ,EAAMwoK,wEA5EpB,IAAAhpK,QAAAnB,QAAA,gDAEAoqK,aAAApqK,QAAA,qEACAqqK,eAAArqK,QAAA,2EACAsqK,gBAAAtqK,QAAA,8EACAuqK,QAAAvqK,QAAA,+EAEeioK;;;k5BCPf9mK,OAAAnB,QAAA,gDACAyxJ,YAAAzxJ,QAAA,eACAgvJ,mBAAAhvJ,QAAA,qFACAg2J,qBAAAh2J,QAAA,4FAEAq7J,MAAAr7J,QAAA,uDACAwqK,QAAAxqK,QAAA,6DAIqByqK,8XAuBpB1nK,OACC2nK,SAAS,KAGV7jJ,QAAU,OACV8jJ,KAAO,kKAGF/rK,KAAKioB,SACR3K,OAAOoK,aAAa1nB,KAAKioB,+CAIb0mG,GACb3uH,KAAK2uH,IAAMA,4CAGM,GAAAjO,GAAA1gH,IACbA,MAAK2uH,MAAQ3uH,KAAKmE,MAAM2nK,UAC3B9rK,KAAK2uH,IAAI8gC,QACTzvJ,KAAK2uH,IAAI8c,SACTnuH,OAAOjJ,SAAS23J,YAAY,QAC5BhsK,KAAK8O,UAAL,EAAA6wG,UAAAz+G,YACIlB,KAAKmE,OACR2nK,SAAS,KAEV9rK,KAAKioB,QAAUX,WAAW,WACzBo5F,EAAK5xG,UAAL,EAAA6wG,UAAAz+G,YACIw/G,EAAKv8G,OACR2nK,SAAS,MAER,uCAII,GACD/oK,GAAS/C,KAAT+C,MACDkpK,EAAWlpK,EAAM8oD,WAA8B,SAAjB9oD,EAAM4+C,OACpCz/C,EAAS+pK,EAAWpZ,YAAAv+C,GAAOV,IAAI7wG,EAAMb,QAAUa,EAAMb,OACpD4pK,EAAW9rK,KAAKmE,MAAhB2nK,QAEDvkB,GACL/mJ,MAAOuC,EAAMwkJ,QACb7qI,KAAAA,GAAS3Z,EAAMwkJ,QAAUxkJ,EAAM4oG,SAG1BugE,EAAWlsK,KAAK+C,MAAMmpK,SAASriK,IAAI,SAAA09I,GACxC,OAAQ7qI,KAAAA,GAAS6qI,EAAUxkJ,EAAM4oG,QAAWnrG,MAAO+mJ,KAG9Cx6I,GACLvM,MAAOR,KAAK+C,MAAMgK,KAClB2P,KAAM1c,KAAK+C,MAAMgK,MAGZo/J,EAAQnsK,KAAK+C,MAAMopK,MAAMtiK,IAAI,SAAAkD,GAClC,OAAQ2P,KAAM3P,EAAMvM,MAAOuM,IAG5B,OACCvK,SAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,gBACdrF,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,yBACdrF,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,sBAEbqkK,EAASvrK,OAAS,EACjB6B,QAAAtB,QAAA4B,cAAAspK,SAAAlrK,SACCi5D,KAAMp3D,EAAMo3D,KACZtyD,UAAU,wBACV8L,QAASu4J,EACTl7J,SAAUjO,EAAMwmK,gBAChB/oK,MAAO+mJ,IAER/kJ,QAAAtB,QAAA4B,cAAA,QAAM+E,UAAU,yBACd0/I,EAAQ7qI,MAIXyvJ,EAAMxrK,OAAS,EACd6B,QAAAtB,QAAA4B,cAAAspK,SAAAlrK,SACCi5D,KAAMp3D,EAAMo3D,KACZtyD,UAAU,qBACV8L,QAASw4J,EACTn7J,SAAUjO,EAAM2mK,aAChBlpK,MAAOuM,IAERvK,QAAAtB,QAAA4B,cAAA,QAAM+E,UAAU,sBACdkF,EAAK2P,OAIVla,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,uBAEb9E,EAAMmoC,MACL1oC,QAAAtB,QAAA4B,cAAA,UAAQiK,KAAK,SAASjF,QAAS9H,KAAKqsK,iBAClCP,EAAU,UAAY,uBAK5BtpK,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,yBACdrF,QAAAtB,QAAA4B,cAAA,MAAA,KACCN,QAAAtB,QAAA4B,cAAA05J,OAAAt7J,SACC87J,WAAYj6J,EAAMi6J,WAClBnxG,UAAW9oD,EAAMupK,iBACjBt2H,SAAUjzC,EAAM4+C,QAEfz/C,IAGHM,QAAAtB,QAAA4B,cAAA,YACC+E,UAAU,YACVrH,MAAO0B,EACPysH,IAAK3uH,KAAKusK,cACV/xD,UAAA,aAxImCh4G,QAAAtB,QAAMoR,mBAiBvCxF,cAEN++C,WAAW,EACX3gB,MAAM,oDApBa2gI;;;;q/BCVrBtpK,OAAAnB,QAAA,gDACAuxJ,aAAAvxJ,QAAA,2BACAivJ,YAAAjvJ,QAAA,+DACAg2J,qBAAAh2J,QAAA,4FACAgvJ,mBAAAhvJ,QAAA,qFAIMorK,+XAkBOvrJ,GACXA,EAAE9Y,gBADY,IAAAC,GAE8BpI,KAAK+C,MAA1C6+F,EAFOx5F,EAEPw5F,OAAQ6qE,EAFDrkK,EAECqkK,OAAQpkK,EAFTD,EAESC,SAAUqkK,EAFnBtkK,EAEmBskK,QAC3BxqK,EAAS0/F,EAAS,KAAO8qE,EACzBvnK,GACLiC,SAAUiB,EAASjB,SACnBlD,OAAAA,EAAAA,UAAAA,YACImE,EAASnE,OADb,EAAAoqJ,iBAAAptJ,UAECgB,OAAAA,GAFD,kBAGsBuqK,IAGvBzsK,MAAK2B,QAAQ6F,OAAO9B,QAAQP,oCAGpB,GACDpC,GAAS/C,KAAT+C,MACA6+F,EAAoB7+F,EAApB6+F,OAAQv5F,EAAYtF,EAAZsF,SACTR,GAAY,EAAAopJ,aAAA/vJ,SAAW,mBAAoB0gG,OAAAA,IAC3C1/F,EAASa,EAAM6+F,OAAS,KAAO7+F,EAAM2pK,QAErC1oK,GACLoD,SAAUiB,EAASjB,SACnBlD,OAAAA,EAAAA,UAAAA,YACImE,EAASnE,OADb,EAAAoqJ,iBAAAptJ,UAECgB,OAAAA,GAFD,kBAGsBa,EAAM0pK,SAI7B,OACCjqK,SAAAtB,QAAA4B,cAAA6vJ,aAAAprJ,MACCvD,GAAIA,EACJ6D,UAAWA,EACXg+D,SAAU9iE,EAAM8iE,SAChB/9D,QAAS9H,KAAKiI,YACdsgB,MAAOxlB,EAAMwlB,OAEZxlB,EAAMuB,UAAYvB,EAAM2Z,uCA1CrBlb,cACNgG,OAAQjF,OAAAqV,UAAE7H,qDA+CGy8J;;qFC/Df,QAASG,aAAY5pK,GACpB,GAAMb,GAASylJ,WAAAzmJ,QAASygD,QACvBv6C,SAAarE,EAAMo3D,KAAnB,QAA+Bp3D,EAAMf,OAArC,cACAkC,OAAQmqG,YAAatrG,EAAMsrG,eAGtBnqG,EAAQgyJ,cAAAh1J,QAAY6pB,WACzB6hJ,cAAe7pK,EAAMinK,aAGhBx0I,GAAOtzB,EAAQgC,GAAO8N,OAAO45C,SAAS1hC,KAAK,KAC3CriB,GAAY,EAAAopJ,aAAA/vJ,SAAK,0BACtB2rK,kCAAmC9pK,EAAM66I,UAEpCkvB,GAAgB,EAAA7b,aAAA/vJ,SAAK,gBAC1B6rK,0BAA2BhqK,EAAMm1J,YAGlC,OACC11J,SAAAtB,QAAA4B,cAAA,OAAK+E,UAAWA,GAEd9E,EAAMssJ,QACL7sJ,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,UACdrF,QAAAtB,QAAA4B,cAAAkqK,eAAA9rK,SACC6L,KAAK,WACLqW,KAAM,GACNziB,OAAQoC,EAAMioK,aACdzzC,SAAUx0H,EAAM21G,QAChB/yD,OAAQ5iD,EAAM+nK,SAEftoK,QAAAtB,QAAA4B,cAAAkqK,eAAA9rK,SACC6L,KAAK,aACLqW,KAAM,GACNziB,OAAQoC,EAAMgoK,aACdxzC,SAAUx0H,EAAMo5G,OAChBx2D,OAAQ5iD,EAAM8nK,UAIlBroK,QAAAtB,QAAA4B,cAAAmqK,QAAA/rK,SACC2G,UAAWilK,EACX56I,GAAIhwB,EACJw2G,OAAQ31G,EAAM21G,OACdo/C,OAAQ/0J,EAAM0nK,QACdv8J,QAASnL,EAAMmL,QACfmnJ,SAAUtyJ,EAAMsyJ,SAChBzE,SAAU7tJ,EAAM6tJ,SAChBsH,WAAYn1J,EAAMssJ,OAClBsI,OAAQ50J,EAAM40J,OACdniI,IAAKA,EACL2mF,MAAOp5G,EAAMo5G,+DAzDjB,IAAA55G,QAAAnB,QAAA,gDACAivJ,YAAAjvJ,QAAA,+DACAu5D,aAAAv5D,QAAA,mEACA6mJ,UAAA7mJ,QAAA,sEACA8rK,OAAA9rK,QAAA,0DACA+rK,cAAA/rK,QAAA,wFAgFeurK;;2xBCrFfpqK,OAAAnB,QAAA,gDACAgsK,YAAAhsK,QAAA,eACAivJ,YAAAjvJ,QAAA,+DACAgvJ,mBAAAhvJ,QAAA,qFAEAisK,WAAAjsK,QAAA,2EACAonK,OAAApnK,QAAA,kDACAksK,aAAAlsK,QAAA,qEAGMmsK,2VAyBOxqK,GAAO,GACXmvB,GAAYnvB,EAAZmvB,GAAIioC,EAAQp3D,EAARo3D,KACJ9xD,EAAYrI,KAAK+C,MAAjBsF,QACUrI,MAAK2B,QAAf6F,OACA/B,MACN2B,SAAa+yD,EAAb,WAA4BjoC,EAC5BhuB,MAAOmE,EAASnE,iDAIDguB,IAEhBolB,EADmBt3C,KAAK+C,MAAjBu0C,WACE,EAAAk2H,YAAAtsK,UAAWgxB,GAAAA,EAAI0vE,QAAQ,8CAGhB1vE,IAEhBolB,EADmBt3C,KAAK+C,MAAjBu0C,WACE,EAAAk2H,YAAAtsK,UAAWgxB,GAAAA,EAAI0vE,QAAQ,sCAGxB,GAAAx5F,GAUJpI,KAAK+C,MARR6kK,EAFOx/J,EAEPw/J,YACW6F,EAHJrlK,EAGPP,UACA4+H,EAJOr+H,EAIPq+H,aACA2kC,EALOhjK,EAKPgjK,WACAl5I,EANO9pB,EAMP8pB,GACAioC,EAPO/xD,EAOP+xD,KACAz9C,EAROtU,EAQPsU,KACArU,EATOD,EASPC,SAGKR,GAAY,EAAAopJ,aAAA/vJ,SAAK,uBAAwBusK,GAIzCC,EAAYvwJ,KAAKwc,IAAI,EAAiB,KAAdjd,EAAK/b,QAI7BgtK,EAAUxwJ,KAAKwc,IAFP,EACE,GAKVi0I,EAAgBzwJ,KAAKwc,IADRk0I,EACY1wJ,KAAKwc,IAAI8sG,EAAa9lI,OAAQyqK,EAAWzqK,QAAuBgtK,EAAU,EADtFE,EACsGF,EAAU,EAEnI,OACCnrK,SAAAtB,QAAA4B,cAAA,OAAK+E,UAAWA,GACfrF,QAAAtB,QAAA4B,cAAA,OAAKg3J,QAAA,WAAoB8T,EAAiB/lK,UAAU,+BACnDrF,QAAAtB,QAAA4B,cAAAgrK,cAAA5sK,SACC0mK,YAAaA,EACbtlF,MAAOmkD,EACPtsE,KAAMA,EACNj9C,EAdY,EAeZD,EAjBa,EAkBby7F,OArBgB,EAsBhB5wG,QAAS9H,KAAKiI,YACd6/J,aAAc9nK,KAAK+tK,iBACnBhG,aAAc/nK,KAAKguK,iBACnBzgE,YAAY,eACZllG,SAAUA,EACVw/J,SAAU5qJ,EA1BC,GA0BWywJ,EAAY,EAAGxwJ,EAnBrB+wJ,KAqBjBzrK,QAAAtB,QAAA4B,cAAAgrK,cAAA5sK,SACC0mK,YAAaA,EACbtlF,MAAO8oF,EACPjxG,KAAMA,EACNj9C,EA5BY,EA6BZD,EAAG,IACHy7F,OAnCgB,EAoChB5wG,QAAS9H,KAAKiI,YACd6/J,aAAc9nK,KAAK+tK,iBACnBhG,aAAc/nK,KAAKguK,iBACnB1tG,MAAM,QACNitC,YAAY,eACZllG,SAAUA,EACVw/J,SAAU5qJ,EAzCC,GAyCWywJ,EAAY,EAAGxwJ,EAlCrB+wJ,KAoCjBzrK,QAAAtB,QAAA4B,cAAAmlK,QAAA/mK,SACC6L,KAAK,OACL2P,KAAMA,EACNwV,GAAIA,EACJjV,EAAG,GAAKywJ,EAAY,EACpBxwJ,EA7CU,EA8CVw7F,OAlDgB,EAmDhByD,MAAOuxD,EACPrlK,SAAUA,EACV8xD,KAAMA,uCA3FJ34D,cACNgG,OAAQjF,OAAAqV,UAAE7H,6CAkGG,EAAAq9J,YAAAvF,SAAQ,SAAA3gK,GACtB,OAAQ0gK,YADiC1gK,EAAjB0gK,eAEtB2F;;qFChIH,QAASW,sBAAqBnrK,GAC7B,GAAMb,GAASa,EAAMb,QAAUa,EAAMuB,QACrC,OACC9B,SAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,gBACdrF,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,yBACdrF,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,sBAAsB9E,EAAM2Z,OAE5Cla,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,yBACdrF,QAAAtB,QAAA4B,cAAAoxJ,WAAAhzJ,SAAUi5D,KAAMp3D,EAAMo3D,KAAMj4D,OAAQA,4DAZxC,IAAAK,QAAAnB,QAAA,gDAEAoyJ,UAAApyJ,QAAA,0FAuBe8sK;;qFCnBf,QAASC,WAAUprK,GAClB,GAAMuP,GAAYvP,EAAM4B,UAClBkD,GAAY,EAAAopJ,aAAA/vJ,SAAK,gBAAiB6B,EAAM8E,WAA5B,EAAAymJ,iBAAAptJ,YAAA,kBACE6B,EAAMqrK,SAAarrK,EAAMvC,QAEvC8D,EAAWvB,EAAMuB,UAAYvB,EAAMvC,KAEzC,OACCgC,SAAAtB,QAAA4B,cAACwP,GAAUzK,UAAWA,GAEpBnI,MAAMiL,QAAQrG,GACbA,EAASuF,IAAI,SAACigB,EAAG7nB,GAChB,MAAOO,SAAAtB,QAAA4B,cAAA,QAAMX,IAAKF,GAAI6nB,KAEvBxlB,GAkBL,QAAS+pK,mBAAkBtrK,GAAO,GAC1B2Z,GAAkC3Z,EAAlC2Z,KAAM3P,EAA4BhK,EAA5BgK,KAAMmlB,EAAsBnvB,EAAtBmvB,GAAI7pB,EAAkBtF,EAAlBsF,SAAU8xD,EAAQp3D,EAARo3D,KAC3Bn2D,GACLoD,SAAa+yD,EAAb,WAA4BjoC,EAC5BhuB,MAAOmE,EAASnE,OAGXqkB,EAAAA,eAAuBxb,EAAvB,KAAgC2P,EAAhC,QAA4CwV,EAC5CxqB,EAAUyyD,EAAV,QAAsBjoC,CAE5B,OACC1vB,SAAAtB,QAAA4B,cAAA,MAAI+E,UAAU,gBACbrF,QAAAtB,QAAA4B,cAACqrK,WAAUC,SAAS,OAAO5tK,MAAOuC,EAAM2Z,MACvCla,QAAAtB,QAAA4B,cAAA6vJ,aAAAprJ,MAAMvD,GAAIA,EAAIukB,MAAOA,GACpB/lB,QAAAtB,QAAA4B,cAAA28J,OAAAv+J,SAAMi5D,KAAMA,EAAM06C,OAAQ9nG,GAAO2P,GACjCla,QAAAtB,QAAA4B,cAAA,OAAA,KAAOC,EAAM2Z,QAGfla,QAAAtB,QAAA4B,cAACqrK,WAAUC,SAAS,UAAU5tK,MAAOuC,EAAM4lB,UAC3CnmB,QAAAtB,QAAA4B,cAACqrK,WAAUC,SAAS,OAAO5tK,MAAOuC,EAAMqkH,OACxC5kH,QAAAtB,QAAA4B,cAACqrK,WAAUC,SAAS,OAAO5tK,MAAOuC,EAAMqxH,OAExB,YAAfrxH,EAAMgK,KACLvK,QAAAtB,QAAA4B,cAAA,KACC4E,KAAMA,EACN1F,OAAO,SACP04G,IAAI,WACJ7yG,UAAU,gBACV0gB,MAAA,QAAexb,EAAf,KAAwB2P,EAAxB,QAAoCwV,EAApC,kBAEA1vB,QAAAtB,QAAA4B,cAAA28J,OAAAv+J,SAAMi5D,KAAMA,EAAM06C,OAAO,aAAatH,YAAY,cAC7Cr7E,EADL,mBAID1vB,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,mBAoBL,QAASymK,eAATpnK,GAAoD,GAA5Bo7E,GAA4Bp7E,EAA5Bo7E,MAAOj6E,EAAqBnB,EAArBmB,SAAUoiG,EAAWvjG,EAAXujG,GAAItwC,EAAOjzD,EAAPizD,IAC3D,OACC33D,SAAAtB,QAAA4B,cAAA,MAAI+E,UAAU,kBACbrF,QAAAtB,QAAA4B,cAAA,MAAI+E,UAAU,uBACbrF,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,8BACfrF,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,6BAAf,WACArF,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,6BAAf,QACArF,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,6BAAf,QACArF,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,+BAGf4iG,GACCjoG,QAAAtB,QAAA4B,cAACurK,mBACAn8I,GAAIu4E,EACJ/tF,KAAK,KACL3P,KAAK,SACL1E,SAAUA,EACV8xD,KAAMA,IAIRmoB,EAAMz4E,IAAI,SAAAhJ,GAAA,MACT2B,SAAAtB,QAAA4B,cAACurK,mBAAD,EAAA1uD,UAAAz+G,YACKL,GACJwH,SAAUA,EACVlG,IAAKtB,EAAKqxB,GACVioC,KAAMA,6SA1BYm0G,aA5FxB,IAAA/rK,QAAAnB,QAAA,gDACAuxJ,aAAAvxJ,QAAA,2BACAivJ,YAAAjvJ,QAAA,+DAEA89J,MAAA99J,QAAA,sDA8BA+sK,WAAUrhK,cACTnI,UAAW,OAqGZ2pK,cAAcxhK,cACbw1E;;qFC7Hc,QAASisF,eAAcxrK,GACrC,GAAMyrK,IAAgB,EAAAvd,aAAA/vJ,SAAA,iBAAA,EAAAotJ,iBAAAptJ,YAAA,kBACF6B,EAAMqxH,KAASrxH,EAAMqxH,OAGnCsmC,EAAa/S,WAAAzmJ,QAASygD,QAC3Bv6C,SAAarE,EAAMo3D,KAAnB,QAA+Bp3D,EAAMmvB,GAArC,cACAhuB,OACCmqG,YAAatrG,EAAMsrG,eAGfogE,EAAAA,SAA2B1rK,EAAM2Z,KAAjC,2BAEAgyJ,EAAAA,oBAAkC3rK,EAAM2Z,KAAxC,aACAiyJ,GAAkB,EAAA1d,aAAA/vJ,SACvB,SACA,kBAEC0tK,oBAAqB7rK,EAAMgnK,QAC3B8E,oBAAqB9rK,EAAMgnK,QAC3B+E,gBAAiB/rK,EAAM+mK,UAInBiF,EAAchsK,EAAMssJ,OAAN,0BAAA,yBAId2f,GAAkB,EAAA/d,aAAA/vJ,SAAA,yBAGtB2tK,oBAAqB9rK,EAAMssJ,SAIvB4f,GAAmB,EAAAhe,aAAA/vJ,SACxB,0BAEC2tK,oBAAqB9rK,EAAM66I,UAGvBsxB,EAAgBnsK,EAAM66I,QAAU,WAAa,oBAC7CuxB,EAAepsK,EAAM66I,QAC1B,wBACA,uBAED,OACCp7I,SAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,4BACdrF,QAAAtB,QAAA4B,cAAAssK,cAAAluK,SACCi5D,KAAMp3D,EAAMo3D,KACZm4F,OAAQvvJ,EAAM8mK,YACdxhK,SAAUtF,EAAMsF,SAChBR,UAAU,iBAEXrF,QAAAtB,QAAA4B,cAAAusK,WAAAnuK,SAAU2G,UAAU,iBAAiB++H,MAAO,GAC3CpkI,QAAAtB,QAAA4B,cAAA,QAAM+E,UAAU,gBACd9E,EAAM2Z,MAERla,QAAAtB,QAAA4B,cAAA,SAAO+E,UAAU,mBACf9E,EAAM4lB,QAAN,IAAoB5lB,EAAM4lB,QAAY,IAGvC5lB,EAAMqxH,KACL5xH,QAAAtB,QAAA4B,cAAA,SAAO+E,UAAW2mK,GACjBhsK,QAAAtB,QAAA4B,cAAA6vJ,aAAAprJ,MACCghB,MAAA,6BAAoCxlB,EAAMqxH,KAC1CpwH,IACCoD,SAAUrE,EAAMsF,SAASjB,SACzBlD,OAAAA,EAAAA,UAAAA,YAAWnB,EAAMsF,SAASnE,OAAOsH,OAAAA,QAAgBzI,EAAMqxH,SAGvDrxH,EAAMqxH,OAGT,KAEDrxH,EAAMqkH,KAAKv9G,IAAI,SAAC2tB,EAAKr1B,GAAN,MACfK,SAAAtB,QAAA4B,cAAA,SAAOX,IAAKA,EAAK0F,UAAU,eAC1BrF,QAAAtB,QAAA4B,cAAA6vJ,aAAAprJ,MACCghB,MAAA,4BAAmCiP,EACnCxzB,IACCoD,SAAUrE,EAAMsF,SAASjB,SACzBlD,OAAAA,EAAAA,UAAAA,YAAWnB,EAAMsF,SAASnE,OAAOsH,OAAAA,OAAegsB,KAEjDr1B,IAAKA,GAEJq1B,MAKHz0B,EAAM6mK,WACLpnK,QAAAtB,QAAA4B,cAAA,SAAO+E,UAAU,kBAChBrF,QAAAtB,QAAA4B,cAAA,KACC4E,KAAM4nK,UACNttK,OAAO,SACPumB,MAAM,gDACNmyF,IAAI,YAJL,gBAWJl4G,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,2BACdrF,QAAAtB,QAAA4B,cAAA6vJ,aAAAprJ,MACCM,UAAW8mK,EACXpmJ,MAAOmmJ,EACP7oG,SAAU9iE,EAAMgnK,QAChBjiK,QAAS/E,EAAMgnK,QAAN1hB,QAAAjgI,KAAuBrlB,EAAMumK,cACtCtlK,IACCoD,SAAUrE,EAAMsF,SAASjB,SACzBlD,OAAAA,EAAAA,UAAAA,YACInB,EAAMsF,SAASnE,OAClBk3J,OAAQr4J,EAAMinK,eAIhBxnK,QAAAtB,QAAA4B,cAAA28J,OAAAv+J,SAAM2zG,OAAO,YAEdryG,QAAAtB,QAAA4B,cAAA6vJ,aAAAprJ,MACCM,UAAWmnK,EACXzmJ,MAAOwmJ,EACP/qK,IACCoD,SAAUrE,EAAMsF,SAASjB,SACzBlD,OAAAA,EAAAA,UAAAA,YACInB,EAAMsF,SAASnE,OAClBmrJ,QAAStsJ,EAAMssJ,WAIjB7sJ,QAAAtB,QAAA4B,cAAA28J,OAAAv+J,SAAM2zG,OAAO,YAEdryG,QAAAtB,QAAA4B,cAAA6vJ,aAAAprJ,MACCM,UAAWonK,EACX1mJ,MAAO4mJ,EACPnrK,IACCoD,SAAUrE,EAAMsF,SAASjB,SACzBlD,OAAAA,EAAAA,UAAAA,YACInB,EAAMsF,SAASnE,OAClB05I,SAAU76I,EAAM66I,YAIlBp7I,QAAAtB,QAAA4B,cAAA28J,OAAAv+J,SAAM2zG,OAAQq6D,KAEf1sK,QAAAtB,QAAA4B,cAAA,KACC+E,UAAU,oBACV7F,OAAO,SACP04G,IAAI,WACJhzG,KAAMgzJ,EACNnyI,MAAOkmJ,GAEPjsK,QAAAtB,QAAA4B,cAAA28J,OAAAv+J,SAAM2zG,OAAO,uTAzJM05D,aAZxB,IAAAhsK,QAAAnB,QAAA,gDACAuxJ,aAAAvxJ,QAAA,2BACAivJ,YAAAjvJ,QAAA,+DACAinJ,QAAAjnJ,QAAA,UAEAmuK,aAAAnuK,QAAA,sEACAouK,UAAApuK,QAAA,mEACA89J,MAAA99J,QAAA,uDACA6mJ,UAAA7mJ,QAAA,sEAEMkuK,UAAY,kGAgMlBf,eAAczhK,cACbs6G,QACAkiD,cAAAA,QAAAA;;;qFChGD,QAASmG,UAAS9uK,EAAQyiB,GACzB,OAAO,EAAAilI,QAAA3U,OAAMv2H,KAAKmqD,MAAM3mE,EAASyiB,IAC/BvZ,IAAI,SAACgiC,EAAGvrC,GAAJ,MAAcA,KAClBuJ,IAAI,SAAAygB,GACJ,GAAMyhF,GAAQzhF,EAAQ,IAAO,EAAIA,EAAQlH,EAAO,KAC1C6vB,GAAW,GAAI,GACflqC,GAAQ,EAAAs/I,QAAAuN,MAAK3iH,EAAS,SAAAz0B,GAAA,MAAK8L,GAAQ9L,GAAM,GAE/C,QAAQutF,MAAAA,EAAO66B,MADD79H,EAAQkqC,EAAQ3sC,QAAQyC,GAAS,EAAI,u1BAnHtDqnJ,mBAAAhvJ,QAAA,qFACAinJ,QAAAjnJ,QAAA,UACAg2J,qBAAAh2J,QAAA,4FACAmB,OAAAnB,QAAA,gDAEMirC,OAASiC,UAAW,wBAGLohI,6UAEnB,GAAM5kJ,GAA0B,eAApB9qB,KAAK+C,MAAMgK,MACrBuhC,UAAW,6BACXA,UAAW,4BAEPqhI,GAAatjI,MAAOvhB,GACpBnX,GAAWi7B,SAAU,IAC3B5uC,MAAK4vK,UAAY5vK,KAAK2uH,IAAIitB,QAAQ+zB,EAAWh8J,GAC7C3T,KAAK4vK,UAAUttB,QACftiJ,KAAK4vK,UAAUlqD,YAAc1lH,KAAK+C,MAAM4iD,OACxCroC,OAAO9C,EAAIxa,KAAK4vK,uDAIhB5vK,KAAK4vK,UAAUlqD,YAAc1lH,KAAK+C,MAAM4iD,uCAGjCgpE,GACP3uH,KAAK2uH,IAAMA,mCAGH,GACD5rH,GAAS/C,KAAT+C,MACDgK,EAAsB,eAAfhK,EAAMgK,KAAwB,aAAe,WACpD8iK,EAAwC,eAAf9sK,EAAMgK,KAAwB,OAAS,KAEtE,OACCvK,SAAAtB,QAAA4B,cAAA,OAAK+E,UAAA,gCAA2CkF,GAC/CvK,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,uBAAuB8mH,IAAK3uH,KAAKq4J,SAC/C71J,QAAAtB,QAAA4B,cAACgtK,YAAW/iK,KAAMhK,EAAMgK,KAAMpM,OAAQoC,EAAMpC,OAAQyiB,KAAMrgB,EAAMqgB,QAGhErgB,EAAMw0H,QAAQ1tH,IAAI,SAAA2d,GACjB,GAAMzf,IAAAA,EAAAA,iBAAAA,YAAU8nK,EAA4BroJ,EAAtC,KACN,OAAOhlB,SAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,wBAAwB1F,IAAKqlB,EAAQzf,MAAOA,yDAnCnD2nK,MAmDrBA,MAAM5iK,cACLnM,OAAQ,MAIHmvK,2UACI,GACD/sK,GAAS/C,KAAT+C,MACDgtK,EAAQN,SAAS1sK,EAAMpC,OAAQoC,EAAMqgB,MACrC4sJ,EAAgC,eAAfjtK,EAAMgK,KAAwB,aAAe,YAC9DkjK,EAA+B,eAAfltK,EAAMgK,KAAwB,SAAW,QACzDmjK,EAAgC,eAAfntK,EAAMgK,KAAwB,QAAU,QAE/D,OACCvK,SAAAtB,QAAA4B,cAAA,MAAI+E,UAAU,wBACZkoK,EAAMlmK,IAAI,SAACuZ,EAAM9iB,GAAU,GAAA4G,GACrBipK,GAAkB,OAAQ,OAAQ,OAAO/sJ,EAAKwjH,MAAQ,GACtDwpC,EAAS9vK,EAAQ,EAAIyC,EAAMqgB,KAAO,EAAI,CAE5C,OACC5gB,SAAAtB,QAAA4B,cAAA,MACCX,IAAK7B,EACLuH,UAAA,4CAAuDub,EAAKwjH,MAC5D7+H,OAAAb,MAAA,EAAAonJ,iBAAAptJ,SAAAgG,EACE8oK,EAAoBI,EADtB,OAAA,EAAA9hB,iBAAAptJ,SAAAgG,EAEEgpK,EAAiB,QAFnB,EAAA5hB,iBAAAptJ,SAAAgG,EAGE+oK,EAAgBE,GAHlBjpK,QAOuB,KAAfkc,EAAK2oF,OACXvpG,QAAAtB,QAAA4B,cAAA,QAAM+E,UAAU,wBACdub,EAAK2oF;;;;2xBC3FhBxpG,OAAAnB,QAAA,gDACAg2J,qBAAAh2J,QAAA,4FACAgvJ,mBAAAhvJ,QAAA,qFACAinJ,QAAAjnJ,QAAA,UAEAivK,SAAAjvK,QAAA,uEAIMkvK,uYAce,GAAAloK,GACapI,KAAK+C,MAA9BmvB,EADY9pB,EACZ8pB,GAAIioC,EADQ/xD,EACR+xD,KAAMk0C,EADEjmG,EACFimG,WACjBruG,MAAK+C,MAAM++J,cAAc5vI,GAAKm8E,YAAAA,IAAe07D,SAAS,EAAM5vG,KAAAA,sDAGnC9qD,GACzB,GAAMpP,IAAO,EAAAooJ,QAAAuB,MAAKv6I,GAAY,KAAM,gBAC9Bkb,GAAU,EAAA89H,QAAAuB,MAAK5pJ,KAAK+C,OAAQ,KAAM,gBAClCmB,GAASmqG,YAAapuG,EAAKouG,aAC3B16F,GAAWo2J,QAAS9pK,EAAKiyB,KAAO3H,EAAQ2H,GAAIioC,KAAM9qD,EAAU8qD,KAC3C,aAAnB9qD,EAAUtC,OAAuB,EAAAs7I,QAAAkoB,SAAQtwK,EAAMsqB,IAClDvqB,KAAK+C,MAAM++J,cAAc7hK,EAAKiyB,GAAIhuB,EAAOyP,6CAIzBue,EAAIhuB,EAAOyP,GAC5B3T,KAAK+C,MAAM++J,cAAc5vI,EAAIhuB,EAAOyP,oCAIpC,MACCnR,SAAAtB,QAAA4B,cAAA,WAAS+E,UAAU,mBAClBrF,QAAAtB,QAAA4B,cAAA0tK,UAAAtvK,SACCmH,SAAUrI,KAAK+C,MAAMsF,mBArCG7F,QAAAtB,QAAMoR,mBAS3BxF,cACNuhG,YAAa,QACbyzD,cAAe,8DAiCFwO;;qFC1Cf,QAASG,gBAAe1tK,GAAO,GACvB2tK,GAAW3tK,EAAX2tK,OACP,OACCluK,SAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,mBAEb6oK,EAAQ7mK,IAAI,SAAA3H,GAAA,MACXM,SAAAtB,QAAA4B,cAAC6tK,eACA/uE,OAAQ1/F,EAAO0/F,OACfo6B,OAAQ95H,EAAO85H,OACf7hE,KAAMp3D,EAAMo3D,KACZotF,QAASrlJ,EAAOqlJ,QAChB2kB,SAAUhqK,EAAOgqK,SACjB79D,YAAatrG,EAAMsrG,YACnB1C,QAASzpG,EAAOypG,QAChBz5E,GAAIhwB,EAAOgwB,GACXw6I,QAASxqK,EAAOwqK,QAChBvqK,IAAKD,EAAOwqK,QACZ12H,SAAU9zC,EAAO8zC,SACjB+zH,QAAS7nK,EAAO6nK,QAChB1hK,SAAUtF,EAAMsF,SAChBqU,KAAMxa,EAAOwa,KACb6sJ,gBAAiBxmK,EAAMwmK,gBACvB+B,cAAevoK,EAAMuoK,cACrB5B,aAAc3mK,EAAM2mK,aACpBxnK,OAAQA,EAAOA,OACf6K,KAAM7K,EAAO6K,KACbo/J,MAAOjqK,EAAOiqK,msBArCpB5pK,OAAAnB,QAAA,gDACAivJ,YAAAjvJ,QAAA,+DACAgvJ,mBAAAhvJ,QAAA,qFACAwvK,IAAAxvK,QAAA,wCAEAyvK,gBAAAzvK,QAAA,8EACA0vK,aAAA1vK,QAAA,qEACA2vK,sBAAA3vK,QAAA,gHAEeqvK,kBA0DTE,sVAwBe,GACZ5tK,GAAS/C,KAAT+C,KACHA,GAAMi5H,QACTj5H,EAAMuoK,eACLp5I,GAAInvB,EAAMmvB,GACVw6I,QAAS3pK,EAAM2pK,QACfr+D,YAAatrG,EAAMsrG,YACnBthG,KAAMhK,EAAMgK,KACZotD,KAAMp3D,EAAMo3D,mDAKKl6D,GACfA,EAAK+7H,QACR/7H,EAAKqrK,eACJp5I,GAAIlyB,KAAK+C,MAAMmvB,GACfw6I,QAAS1sK,KAAK+C,MAAM2pK,QACpBr+D,YAAaruG,KAAK+C,MAAMsrG,YACxBthG,KAAM/M,KAAK+C,MAAMgK,KACjBotD,KAAMn6D,KAAK+C,MAAMo3D,wCAKX,GACDp3D,GAAS/C,KAAT+C,MACD8E,GAAY,EAAAopJ,aAAA/vJ,SAAK,kBACtB8vK,0BAA2BjuK,EAAMgnK,UAE5BkH,EAAOluK,EAAM6+F,OAAN,QAAA,OACPr5E,EAAW0oJ,EAAX,IAAmBluK,EAAMwkJ,QAAUxkJ,EAAM4oG,OAC/C,OACCnpG,SAAAtB,QAAA4B,cAAA,OAAK+E,UAAWA,GACfrF,QAAAtB,QAAA4B,cAAAouK,iBAAAhwK,SACC0gG,OAAQ7+F,EAAM6+F,OACdznC,KAAMp3D,EAAMo3D,KACZ0L,SAAU9iE,EAAMgnK,QAChB0C,QAAA,EACAtqK,IAAKY,EAAMmvB,GACX7pB,SAAUtF,EAAMsF,SAChBqU,KAAM3Z,EAAM2Z,KACZgwJ,QAAS3pK,EAAMmvB,GACf3J,MAAOA,IAGPxlB,EAAM6+F,QAA6B,OAAnB7+F,EAAMizC,UACrBxzC,QAAAtB,QAAA4B,cAAAquK,uBAAAjwK,SACCi5D,KAAMp3D,EAAMo3D,KACZz9C,KAAM3Z,EAAM2Z,KACZxa,OAAQa,EAAMb,SAIhBa,EAAM6+F,QAA6B,OAAnB7+F,EAAMizC,UACrBxzC,QAAAtB,QAAA4B,cAAAsuK,cAAAlwK,SACCi5D,KAAMp3D,EAAMo3D,KACZotF,QAASxkJ,EAAMwkJ,QACf2kB,SAAUnpK,EAAMmpK,SAChBhhI,MAAA,EACAygE,QAAS5oG,EAAM4oG,QACfhqD,OAAQ5+C,EAAMizC,SACd6V,WAAA,EACA35B,IAAI,EAAAm/I,KAAAnwK,UAAK6B,EAAMmvB,GAAInvB,EAAMb,QAAQgoB,KAAK,MACtCxN,KAAM3Z,EAAM2Z,KACZ6sJ,gBAAiBxmK,EAAMwmK,gBACvBG,aAAc3mK,EAAM2mK,aACpBxnK,OAAQa,EAAMb,OACd6K,KAAMhK,EAAMgK,KACZo/J,MAAOppK,EAAMopK;;qFCzJpB,QAASmF,uBAAsBvuK,GAC9B,GAAM8E,IAAY,EAAAopJ,aAAA/vJ,SACjB,yDACC0gG,OAAQ7+F,EAAM6+F,SAGV59F,GACLoD,SAAUrE,EAAMsF,SAASjB,SACzBlD,OAAAA,EAAAA,UAAAA,YACInB,EAAMsF,SAASnE,OAClB4kJ,mBAAoB/lJ,EAAM6+F,OAC1B1/F,OAAU,OAIZ,OACCM,SAAAtB,QAAA4B,cAAA6vJ,aAAAprJ,MACCvD,GAAIA,EACJ6D,UAAWA,EACX0gB,MAAOxlB,EAAMwlB,OAEb/lB,QAAAtB,QAAA4B,cAAA28J,OAAAv+J,SACCi5D,KAAMp3D,EAAMo3D,KACZ06C,OAAO,OACPtH,YAAY,oKA/BhBhrG,OAAAnB,QAAA,gDACAuxJ,aAAAvxJ,QAAA,2BACAivJ,YAAAjvJ,QAAA,+DACA89J,MAAA99J,QAAA,uEAEekwK;;qFCIf,QAASC,sBAAqBxuK,GAAO,GACfyuK,GAA0BzuK,EAAxCsoK,aAAiC5iJ,EAAO1lB,EAApBsrG,YACrB+M,EAAWo2D,EAAKx/J,OAAO,SAAAnR,GAAA,MAAQA,GAAKqxB,KAAOzJ,IAAK,OAChD5gB,GAAY,EAAAopJ,aAAA/vJ,SAAKwb,MACtB+0J,0CAA2C1uK,EAAM8iE,WAG5Ct9C,EAAQmpJ,SAASt2D,EAAUo2D,EAEjC,OACChvK,SAAAtB,QAAA4B,cAAA,SAAO+E,UAAWA,GACjBrF,QAAAtB,QAAA4B,cAAA,QAAM+E,UAAU,wCAAhB,eAGArF,QAAAtB,QAAA4B,cAAA,QAAM+E,UAAU,wCACduzG,EAAS1+F,MAEXla,QAAAtB,QAAA4B,cAAA,UACC+E,UAAU,wCACVg+D,SAAU9iE,EAAM8iE,SAChBrlE,MAAOioB,EACPzX,SAAUjO,EAAMiO,SAChBuX,MAAOA,GAGNipJ,EAAK3nK,IAAI,SAAA4e,GACR,MACCjmB,SAAAtB,QAAA4B,cAAA,UACCX,IAAKsmB,EAAIyJ,GACT1xB,MAAOioB,EAAIyJ,IAEVzJ,EAAI/L,SAMVla,QAAAtB,QAAA4B,cAAA28J,OAAAv+J,SACCi5D,KAAMp3D,EAAMo3D,KACZtyD,UAAU,uCACVgtG,OAAO,iBAqBX,QAAS68D,YAAmC,GAA1Bt2D,GAA0Bt7G,UAAAa,OAAA,OAAAyE,KAAAtF,UAAA,GAAAA,UAAA,MAAX0xK,EAAW1xK,UAAAa,OAAA,OAAAyE,KAAAtF,UAAA,GAAAA,UAAA,KAC3CsoJ,UAAAlnJ,QAAOmhB,UAAP,KAAoB+4F,EAApB,aAAA,EAAA32F,SAAAvjB,SAAoBk6G,GAAU,SAAU,8BACxCgtC,SAAAlnJ,QAAOme,GAAG3f,MAAMiL,QAAQ6mK,GAAO,wBAC/B,IAAMG,GAAQH,EAAKx/J,OAAO,SAAAiP,GAAA,MAAKA,GAAEiR,KAAOkpF,EAASlpF,KAE3C0/I,EAAOD,EAAM,EAEnB,KAAKC,EACJ,MAAO,KAGR,IAAMx+I,GAAOu+I,EAAM/xK,MAAM,EAAG+xK,EAAMhxK,OAAS,GACrCw+D,EAAOwyG,EAAMA,EAAMhxK,OAAS,GAE5B0qK,EAAelsG,EACjB/rC,EAAKvpB,IAAI,SAAAoX,GAAA,MAAA,IAASA,EAAEvE,KAAX,MAAoBwN,KAAK,MADjB,QAC8Bi1C,EAAKziD,KADnC,IAEpBk1J,EAAKl1J,IAEN,OAAA,wCAA+C0+F,EAAS1+F,KAAxD,QAAoE2uJ,wJAxFrE7iB,QAAApnJ,QAAA,mDACAmB,OAAAnB,QAAA,gDACAivJ,YAAAjvJ,QAAA,+DACA89J,MAAA99J,QAAA,uEAEemwK,oBAEf,IAAM70J,MAAO,4CA2Db60J,sBAAqBzkK,cACpBkE,SAAU;;qFC5DX,QAAS6gK,sBAAqB9uK,GAC7B,GAAM+uK,GAAgB/uK,EAAM0jI,aAAa9lI,OAASoC,EAAMqoK,WAAWzqK,OAC7D4nB,EAAAA,uBAA+BxlB,EAAMmvB,GAArC,OAA8C4/I,EAA9C,iBACN,OACCtvK,SAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,wCACdrF,QAAAtB,QAAA4B,cAAAouK,iBAAAhwK,SACC0gG,OAAQ7+F,EAAM6+F,OACdznC,KAAMp3D,EAAMo3D,KACZ9xD,SAAUtF,EAAMsF,SAChBqkK,QAAQ,YACRx6I,GAAG,YACHxV,KAAK,YACL6L,MAAOA,GAEP/lB,QAAAtB,QAAA4B,cAAA28J,OAAAv+J,SACCi5D,KAAMp3D,EAAMo3D,KACZ06C,OAAO,eACPtH,YAAY,eAIbxqG,EAAM6+F,QACLp/F,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,kCACdrF,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,yBACdrF,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,sBAAf,cAEDrF,QAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,yBACdrF,QAAAtB,QAAA4B,cAAAivK,sBAAA7wK,SACCi5D,KAAMp3D,EAAMo3D,KACZssE,aAAc1jI,EAAM0jI,aACpB2kC,WAAYroK,EAAMqoK,WAClBl5I,GAAInvB,EAAMmvB,GACVxV,KAAM3Z,EAAM2Z,KACZrU,SAAUtF,EAAMsF,oEAxCxB,IAAA9F,QAAAnB,QAAA,gDACA89J,MAAA99J,QAAA,uDACAyvK,gBAAAzvK,QAAA,8EACA4wK,qBAAA5wK,QAAA,6GAEeywK;;qFCEf,QAASI,gBAAelvK,GACvB,GAAM8E,IAAY,EAAAopJ,aAAA/vJ,SAAK,mBACtBgxK,4BAA6BnvK,EAAMqsJ,UAGpC,OACC5sJ,SAAAtB,QAAA4B,cAAA,OAAK+E,UAAWA,GACfrF,QAAAtB,QAAA4B,cAAAqvK,iBAAAjxK,SACCi5D,KAAMp3D,EAAMo3D,KACZk0C,YAAatrG,EAAMsrG,YACnBhmG,SAAUtF,EAAMsF,SAChBkhK,gBAAiBxmK,EAAMwmK,gBACvB+B,cAAevoK,EAAMuoK,cACrB5B,aAAc3mK,EAAM2mK,aACpBgH,QAAS3tK,EAAMopC,OAEhB3pC,QAAAtB,QAAA4B,cAAAsvK,eAAAlxK,SACCiqK,aAAcpoK,EAAMooK,aACpBhxG,KAAMp3D,EAAMo3D,KACZssE,aAAc1jI,EAAM0jI,aACpB2kC,WAAYroK,EAAMqoK,WAClB/8D,YAAatrG,EAAMsrG,YACnBg9D,aAActoK,EAAMsoK,aACpBjc,SAAUrsJ,EAAMqsJ,SAChBijB,QAAStvK,EAAMopC,KAAKxrC,OAAS,EAC7BuxB,GAAInvB,EAAMmvB,GACVxV,KAAM3Z,EAAM2Z,KACZrU,SAAUtF,EAAMsF,SAChBohK,oBAAqB1mK,EAAM0mK,6EAnC/B,IAAAlnK,QAAAnB,QAAA,gDACAivJ,YAAAjvJ,QAAA,+DACAkxK,gBAAAlxK,QAAA,8EACAmxK,cAAAnxK,QAAA,wFAEe6wK;;qFCIf,QAASO,cAAazvK,GACrB,GAAM0vK,GAAkB1vK,EAAMsoK,aAAa1qK,OAAS,EAC9C+xK,EAAW/qB,WAAAzmJ,QAASupB,MAAM1nB,EAAMooK,cAAc/jK,SAC9Cw6F,EAAsB,cAAb8wE,CAEf,OACClwK,SAAAtB,QAAA4B,cAAA,OAAK+E,UAAU,iBAEb9E,EAAMsvK,SACL7vK,QAAAtB,QAAA4B,cAAA6vK,wBAAAzxK,SACC0gG,OAAQ7+F,EAAMqsJ,SACdj1F,KAAMp3D,EAAMo3D,KACZ9xD,SAAUtF,EAAMsF,WAIlBoqK,GACCjwK,QAAAtB,QAAA4B,cAAA8vK,kCAAA1xK,SACCi5D,KAAMp3D,EAAMo3D,KACZ0L,UAAW4sG,EACXpkE,YAAatrG,EAAMsrG,YACnBg9D,aAActoK,EAAMsoK,aACpBr6J,SAAUjO,EAAM0mK,sBAGnBjnK,QAAAtB,QAAA4B,cAAA+vK,uBAAA3xK,SACC0gG,OAAQA,EACRznC,KAAMp3D,EAAMo3D,KACZssE,aAAc1jI,EAAM0jI,aACpB2kC,WAAYroK,EAAMqoK,WAClBl5I,GAAInvB,EAAMmvB,GACV7pB,SAAUtF,EAAMsF,SAChBqU,KAAM3Z,EAAM2Z,8DAzChB,IAAAna,QAAAnB,QAAA,gDAEA0xK,uBAAA1xK,QAAA,qGACA2xK,iCAAA3xK,QAAA,mIACA4xK,sBAAA5xK,QAAA,iGACA6mJ,UAAA7mJ,QAAA,sFAEeoxK;;qFCCf,QAASS,UAAS9uK,EAAO4Y,GACxB,OACC20I,cAAevtJ,EAAM+tB,GACrBioC,KAAMh2D,EAAMg2D,KACZozC,YAAa2lE,kBAAkB/uK,GAC/BwgE,MAAOxgE,EAAMwgE,MACbyqF,SAAUjrJ,EAAMirJ,SAChBrhI,KAAM5pB,EAAM4pB,KACZ4jI,UAAWxtJ,EAAMogD,OAAOotG,UACxBhJ,MAAOxkJ,EAAMwkJ,MACbC,SAAUzkJ,EAAMykJ,SAChBiJ,KAAM1tJ,EAAMogD,OAAOstG,MAAQ,eAC3BV,YAAahtJ,EAAMgtJ,YACnBW,WAAY3tJ,EAAMqH,OAASrH,EAAMgvK,cAAgBC,iBAAiBjvK,GAClEiD,SAAU2V,EAAI1U,SAASjB,SACvBlD,MAAO6Y,EAAI1U,SAASnE,MACpBsH,OAAQuR,EAAI1U,SAASnE,MAAMsH,OAC3B+lJ,UAAWptJ,EAAMotJ,UACjBxhB,OAAQ5rI,EAAM4rI,OACd2f,MAAOvrJ,EAAMurJ,MACb2B,aAAcgiB,mBAAmBlvK,GACjCokB,MAAOpkB,EAAMogD,OAAOh8B,OAASpkB,EAAMmiD,OAAO5pC,KAC1CiM,QAAS2qJ,cAAcnvK,IAIzB,QAASovK,aAAYj8H,GACpB,OAAO,EAAAk8H,OAAAC,qBACN7iB,SAAAA,SAAAA,aACAI,SAAAA,SAAAA,OACAQ,cAAAA,SAAAA,YACAO,cAAAA,SAAAA,YACAC,kBAAmB,WAAA,OAAM,EAAA0hB,SAAAvoB,oBAAkB,KACzC7zG,GAGJ,QAAS87H,kBAAiBjvK,GACzB,MAAOwvK,6BAA4BrvK,SAAUH,EAAM2tJ,YAAa3tJ,EAAM4pB,MAGvE,QAASmlJ,mBAAkB/uK,GAC1B,MAAOyvK,cAAazvK,GAAOopG,aAAe,GAG3C,QAAS+lE,eAAcnvK,GACtB,MAAOyvK,cAAazvK,GAAOwkB,SAAW,GAGvC,QAASirJ,cAAazvK,GACrB,MAAOA,GAAMmiD,WAGd,QAAS+sH,oBAAmBlvK,GAC3B,MAAOA,GAAM4rI,OAAOpvI,OAAS,EAG9B,QAASgzK,4BAA2B1/I,EAAMlG,GACzC,MAAIkG,GAAKmlF,SACDrrF,IAAkC,IAA1BkG,EAAKmlF,SAAS9jF,QAAoB,KAAOrB,GAGlD,EAAAi1H,UAAAhoJ,SAAe+yB,EAAK3vB,UACzBuM,OAAO,SAAC27B,EAAS4R,GAAU,GAAAgrG,IAAA,EAAAC,gBAAAnoJ,SACLk9C,EADK,GACpB1hC,EADoB0sI,EAAA,GACdrvG,EADcqvG,EAAA,GAErByqB,EAAgBF,2BAA2B55H,EAAOhsB,EAIxD,OAHI8lJ,KAAiB,EAAApqB,OAAAvoJ,SAAY2yK,GAAelzK,OAAS,IACxD6rC,EAAQ9vB,GAAQq9B,GAEVvN,qXA5EV4gI,YAAAhsK,QAAA,eACAoyK,OAAApyK,QAAA,SACA0yK,aAAA1yK,QAAA,gFAEAsyK,SAAAtyK,QAAA,+BAEe,EAAAgsK,YAAAvF,SAAQoL,SAAUM,aAAlBQ,cAAA7yK;;qFCEf,QAAS+xK,UAAS9uK,GACjB,OACCg2D,KAAMh2D,EAAMg2D,KACZ9xD,SAAUlE,EAAMsjJ,QAAQC,0BACxBvjJ,OAAO,EAAA6vK,YAAA9yK,SAAeiD,EAAO,KAAM,MACnCurJ,MAAOvrJ,EAAMurJ,OAIf,QAAS6jB,aAAYj8H,GACpB,OAAO,EAAAk8H,OAAAC,qBACNlT,aAAAA,SAAAA,WACAC,QAAS,WAAA,OAAM,EAAAkT,SAAA9oB,gBAAc,KAC3BtzG,wKArBJk8H,OAAApyK,QAAA,SACAgsK,YAAAhsK,QAAA,eAEAmvJ,SAAAnvJ,QAAA,4EACAsyK,SAAAtyK,QAAA,+BAEe,EAAAgsK,YAAAvF,SAAQoL,SAAUM,aAAlBrhB,UAAAhxJ;;qFCCf,QAAS+yK,UAAS9vK,GAEjB,OAAQg2D,KAD0Dh2D,EAA3Dg2D,KACO5V,OADoDpgD,EAArDogD,OACSx2B,KAD4C5pB,EAA7C4pB,KACO+jI,WADsC3tJ,EAAvC2tJ,WACanpJ,QAD0BxE,EAA3BwE,QACUw7C,SADiBhgD,EAAlBggD,SACW+sF,KADO/sI,EAAR+sI,MAI3D,QAASqiC,aAAYj8H,GACpB,OAAO,EAAAk8H,OAAAC,qBACNrU,UAAAA,SAAAA,eACAtH,OAAAA,SAAAA,YACAuH,QAAAA,SAAAA,aACE/nH,yDAjBJ,IAAAk8H,QAAApyK,QAAA,SACAgsK,YAAAhsK,QAAA,eACAsyK,SAAAtyK,QAAA,cACA8yK,SAAA9yK,QAAA,qFAEe,EAAAgsK,YAAAvF,SAAQoM,SAAUV,aAAlBY,UAAAjzK;;qFCMf,QAASkzK,kBAAiBngJ,GACzB,MAAA,iTAaSA,EAAKvX,KAbd,8gBAgCD,QAAS23J,cAAalwK,GACrB,MAAIA,GAAMmiD,OAAO26G,QACT,EAAAqT,eAAApzK,SAAaiD,EAAMmiD,OAAO26G,QAE3BmT,kBACN13J,KAAMvY,EAAMogD,OAAOh8B,OAASpkB,EAAMmiD,OAAO5pC,KACzC6wF,YAAappG,EAAMmiD,OAAOinD,oEAlD5B,IAAA6/D,aAAAhsK,QAAA,eACAmzK,cAAAnzK,QAAA,sEACAozK,MAAApzK,QAAA,oFAEe,EAAAgsK,YAAAvF,SAAQ,SAAA1jK,GACtB,OACCg2D,KAAMh2D,EAAMg2D,KACZ8mG,OAAQoT,aAAalwK,MAHRswK,OAAAvzK;;qFCCf,QAAS+xK,UAAS9uK,GACjB,GAAMkE,GAAWlE,EAAMsjJ,QAAQC,yBAC/B,QACCvtF,KAAMh2D,EAAMg2D,KACZhzD,KAAMkB,EAASlB,KACfC,SAAUiB,EAASjB,SACnBlD,MAAOmE,EAASnE,OAIX,QAASqvK,aAAYj8H,GAC3B,OAAO,EAAAk8H,OAAAC,qBAAoB/oB,SAAAA,SAAAA,UAAWpzG,kEADvBi8H,YAAAA,WAfhB,IAAAC,QAAApyK,QAAA,SACAgsK,YAAAhsK,QAAA,eACAoyJ,UAAApyJ,QAAA,8EACAsyK,SAAAtyK,QAAA,+BAgBe,EAAAgsK,YAAAvF,SAAQoL,SAAUM,aAAlBrf,WAAAhzJ;;qFCTf,QAASmzK,cAAalwK,GAErB,MAAA,8JADYA,EAAMsjJ,QAAQC,0BAA0BtgJ,SACpD,gPAZD,IAAAgmK,aAAAhsK,QAAA,eACAozK,MAAApzK,QAAA,oFAEe,EAAAgsK,YAAAvF,SAAQ,SAAA1jK,GACtB,OACCg2D,KAAMh2D,EAAMg2D,KACZ8mG,OAAQoT,aAAalwK,MAHRswK,OAAAvzK;;qFCiBf,QAAS+yK,UAAS9vK,GACjB,OACCgnK,aAAchnK,EAAM2oJ,UAAY,GAChC8c,UAAW8K,gBAAgBvwK,GAC3Bg2D,KAAMh2D,EAAMg2D,KACZ0vG,YAAa8K,kBAAkBxwK,GAC/BgoC,KAAMyoI,WAAWzwK,GACjB0mK,OAAQgK,qBAAqB1wK,GAC7B2mK,OAAQgK,qBAAqB3wK,GAC7B4mK,aAAcgK,mBAAmB5wK,GACjC6mK,aAAcgK,mBAAmB7wK,GACjCimK,kBAAmB6K,wBAAwB9wK,GAC3CmmK,iBAAkB4K,uBAAuB/wK,GACzComK,WAAY4K,aAAahxK,GACzB8mK,UAAWmK,YAAYjxK,GACvBsiI,aAAc4uC,mBAAmBlxK,GACjCinK,WAAYkK,iBAAiBnxK,GAC7BmxB,QAASigJ,cAAcpxK,GACvBkqG,YAAalqG,EAAMkqG,YACnBg9D,aAAcmK,mBAAmBrxK,GACjC2lK,QAAS2L,qBAAqBtxK,GAC9BiwH,KAAMshD,WAAWvxK,GACjB+tB,GAAIyjJ,SAASxxK,GACb4lK,QAAS6L,cAAczxK,GACvBkE,SAAUwtK,eAAe1xK,GACzBuY,KAAMo5J,WAAW3xK,GACjBumK,YAAaqL,qBAAqB5xK,GAClCy5I,QAASz5I,EAAMy5I,QACfqsB,aAAc+L,mBAAmB7xK,GACjC6lK,WAAYiM,iBAAiB9xK,GAC7BkrJ,OAAQlrJ,EAAMkrJ,OACdkc,eAAgBpnK,EAAMonK,eACtBnkD,KAAM8uD,WAAW/xK,GACjBwkB,QAAS2qJ,cAAcnvK,IAIzB,QAASovK,aAAYj8H,GACpB,OAAO,EAAAk8H,OAAAC,qBACNlK,gBAAAA,SAAAA,cACAiB,YAAAA,mBAAAA,QACAE,YAAa,WAAA,OAAM,EAAAgJ,SAAAvpB,kBAAgB,IACnCwgB,oBAAAA,SAAAA,kBACAC,aAAAA,SAAAA,WACAnB,oBAAAA,SAAAA,kBACA6B,cAAAA,SAAAA,gBACAlQ,OAAAA,SAAAA,YACAzD,OAAAA,SAAAA,WACA+R,aAAAA,SAAAA,YACEpyH,GAGJ,QAAS89H,aAAYjxK,GACpB,GAAMggK,GAAMhgK,EAAMgyK,eAAehyK,EAAM+tB,OACvC,OAAO4H,OAAMqqI,EAAIlnJ,GAChBm5J,kBAAkBjyK,GAAS,EAC3BggK,EAAIlnJ,EAGN,QAASk4J,cAAahxK,GACrB,GAAMggK,GAAMhgK,EAAMgyK,eAAehyK,EAAM+tB,OACvC,OAAO4H,OAAMqqI,EAAIjnJ,GAChBm5J,mBAAmBlyK,GAAS,EAC5BggK,EAAIjnJ,EAGN,QAASg4J,wBAAuB/wK,GAE/B,OADYA,EAAMmyK,sBAAsBnyK,EAAM+tB,SACnCiqF,OAAS,EAGrB,QAAS84D,yBAAwB9wK,GAEhC,OADYA,EAAMmyK,sBAAsBnyK,EAAM+tB,SACnCwmF,QAAU,EAGtB,QAASm8D,sBAAqB1wK,GAC7B,GAAMxD,GAASo0K,mBAAmB5wK,EAElC,OADgBA,GAAMuqJ,YAAYzxI,GAChBtc,EAAS,KAG5B,QAASm0K,sBAAqB3wK,GAC7B,GAAMxD,GAASq0K,mBAAmB7wK,EAElC,OADgBA,GAAMyqJ,YAAY1xI,GAChBvc,EAAS,KAG5B,QAASo0K,oBAAmB5wK,GAC3B,GAAMg4G,GAAQ+4D,uBAAuB/wK,GAC/BoyK,EAAcH,kBAAkBjyK,EACtC,OAAe,GAARg4G,EAAYh/F,KAAKyxH,IAAI2nC,EAAcp6D,GAG3C,QAAS64D,oBAAmB7wK,GAC3B,GAAMu0G,GAASu8D,wBAAwB9wK,GACjCqyK,EAAeH,mBAAmBlyK,EACxC,OAAgB,GAATu0G,EAAav7F,KAAKyxH,IAAI4nC,EAAe99D,GAG7C,QAAS09D,mBAAkBjyK,GAC1B,OAAQA,EAAMiQ,YAAc+nG,OAAS,EAGtC,QAASk6D,oBAAmBlyK,GAC3B,OAAQA,EAAMiQ,YAAcskG,QAAU,EAGvC,QAASi8D,mBAAkBxwK,GAC1B,GAAMk9J,GAAYsU,SAASxxK,GAAOmiB,MAAM,KAClCje,EAAWwtK,eAAe1xK,EAEhC,OAAIk9J,GAAU1gK,OAAS,KAIhB0gK,EAAUx3J,IAAI,SAACgmC,EAAUvvC,GAC/B,GAAMm2K,GAAUpV,EAAUzhK,MAAM,EAAGU,EAAQ,GAAG4pB,KAAK,IACnD,QACCgI,GAAIukJ,EACJ/5J,KAAMmzB,EACN4iH,aAAcnyJ,EAAQ+gK,EAAU1gK,OAAS,EACzCqB,QACCoF,SAAajD,EAAMg2D,KAAnB,WAAkCs8G,EAClCvyK,MAAOmE,EAASnE,UAMpB,QAASwyK,eAAcvyK,GACtB,GAAMwyK,IAAS,EAAArV,WAAApgK,SAASiD,EAAM+tB,GAAI/tB,EAAM2tJ,WACxC,QAAO,EAAAzJ,QAAAE,UAAUouB,EAAQxyK,EAAMwE,SAGhC,QAASiuK,gBAAezyK,GAEvB,MADgBuyK,eAAcvyK,GACfi1G,aAGhB,QAASy9D,uBAAsB1yK,GAE9B,MADiByyK,gBAAezyK,GAChBwP,YAGjB,QAASmjK,mBAAkB3yK,GAE1B,MADgB0yK,uBAAsB1yK,GACvB,uBAGhB,QAAS4yK,0BAAyB5yK,GAEjC,MADe2yK,mBAAkB3yK,GACnBgnC,SAGf,QAASupI,iBAAgBvwK,GACxB,GAAMgnC,GAAO4rI,yBAAyB5yK,EACtC,OAAQ,aAAegnC,IAAQA,EAAKy+H,UAGrC,QAASoN,qBAAoBt6J,EAAM6/C,GAClC,MAAO,UAAAp4D,GACN,GAAMi1G,GAAWw9D,eAAezyK,GAC1B3D,EAAQ44G,EAAS18F,EACvB,YAAwB,KAAVlc,EAAwB+7D,EAAe/7D,GAIvD,QAASm1K,UAASxxK,GACjB,MAAOA,GAAM+tB,IAAMwkJ,cAAcvyK,GAAO+tB,GAGzC,QAAS4jJ,YAAW3xK,GACnB,GAAMwE,GAAU+tK,cAAcvyK,GACxBuY,EAAOs6J,oBAAoB,QAAQ7yK,EAEzC,OADoB6yK,qBAAoB,eAAe7yK,IACjCuY,GAAQ/T,EAAQupB,IAAM,GAG7C,QAASsjJ,oBAAmBrxK,GAE3B,OADqBuyK,cAAcvyK,GAAOknK,kBACtBxhK,IAAI,SAAA4e,GACvB,OACCyJ,GAAIzJ,EAAI/L,KACRA,KAAM+L,EAAI7lB,aAAe6lB,EAAI/L,QAKhC,QAASg5J,YAAWvxK,GACnB,MAAO6yK,qBAAoB,OAAQ,IAAI7yK,GAGxC,QAAS+xK,YAAW/xK,GACnB,MAAO6yK,qBAAoB,WAAY7yK,GAGxC,QAASmvK,eAAcnvK,GACtB,MAAO6yK,qBAAoB,UAAW,IAAI7yK,GAG3C,QAASoxK,eAAcpxK,GACtB,MAAO6yK,qBAAoB,WAAW,GAAM7yK,GAG7C,QAAS8yK,yBAAwB9yK,GAChC,MAAOuyK,eAAcvyK,GAAOinK,eAG7B,QAASkK,kBAAiBnxK,GACzB,OAAO,EAAAg+J,SAAAjhK,SAAc+1K,wBAAwB9yK,IAC3C6N,OAAO,SAAArJ,GAAA,MAAWA,GAAQ2sB,UAC1BzkB,OAAO,SAACs4I,EAAUxgJ,GAClB,GAAMuuK,IAAa,EAAA5V,WAAApgK,SAASyH,EAAQupB,GAAI/tB,EAAM2tJ,cAAgB14C,aACxD+9D,GAAiB,EAAAjuB,UAAAhoJ,SAAeg2K,EAAW99D,SAAS1H,cACpD0lE,EAAaD,EACjBnlK,OAAO,SAAAosC,GAAA,MAASA,GAAM,KAAOj6C,EAAM+tB,KACnCroB,IAAI,SAAAu0C,GAAA,MAASA,GAAM,KAEfikH,EAAQ+U,EAAWvtK,IAAI,SAAAm+J,GAC5B,OACC91I,GAAIvpB,EAAQupB,GACZxV,KAAM/T,EAAQ/F,aAAe+F,EAAQ+T,KACrCsrJ,UAAAA,EACAr/I,QAAShgB,EAAQggB,UAInB,UAAAlpB,QAAA,EAAA43K,oBAAAn2K,SAAWioJ,IAAX,EAAAkuB,oBAAAn2K,SAAwBmhK,SAI3B,QAASgT,oBAAmBlxK,GAC3B,GAAMmzK,GAAcZ,cAAcvyK,EAClC,QAAO,EAAA+kJ,UAAAhoJ,SAAeo2K,EAAY7wC,kBAChCz0H,OAAO,SAAAosC,GAAA,MAAsB,YAAbA,EAAM,KACtBpsC,OAAO,SAAAosC,GAAA,OAAuC,IAA9BA,EAAM,GAAGg7D,SAAS9jF,UAClCzrB,IAAI,SAAAu0C,GAAS,GAAAgrG,IAAA,EAAAC,gBAAAnoJ,SACgBk9C,EADhB,GACN4pH,EADM5e,EAAA,GACKzgJ,EADLygJ,EAAA,GAEP8tB,GAAa,EAAA5V,WAAApgK,SAASyH,EAAQupB,GAAI/tB,EAAM2tJ,cAAgB14C,YAE9D,QACClnF,GAAIvpB,EAAQupB,GACZxV,KAAMw6J,EAAW99D,SAASx2G,aAAes0K,EAAW99D,SAAS18F,KAC7DsrJ,UAAAA,EACAr/I,QAASuuJ,EAAW99D,SAASzwF,WAKjC,QAASitJ,eAAczxK,GACtB,GAAMwE,GAAU+tK,cAAcvyK,EAC9B,QACCwE,EAAQ4uK,YACR5uK,EAAQ6uK,YACR7uK,EAAQ8uK,eACP3kK,KAAK84C,SAGR,QAASqqH,kBAAiB9xK,GAEzB,MADgBuyK,eAAcvyK,GACf6lK,YAAc,KAG9B,QAASgM,oBAAmB7xK,GAE3B,MADgBuyK,eAAcvyK,GACf8lK,cAAgB,KAGhC,QAAS4L,gBAAe1xK,GACvB,MAAOA,GAAMsjJ,QAAQC,0BAGtB,QAASquB,sBAAqB5xK,GAE7B,MADgBuyK,eAAcvyK,GACfuzK,gBAARrvB,QAAAjgI,KAGR,QAASuvJ,qBAAoBxzK,GAC5B,MAAOuyK,eAAcvyK,GAAOyzK,WAG7B,QAASnC,sBAAqBtxK,GAC7B,GAAMwE,GAAU+tK,cAAcvyK,EAC9B,QACCwE,EAAQkvK,YACRlvK,EAAQmvK,YACRnvK,EAAQovK,eACPjlK,KAAK84C,SAGR,QAASgpH,YAAWzwK,GACnB,GAAMwE,GAAU+tK,cAAcvyK,GACxBusK,EAAU/nK,EAAQ+nK,YAClB5oB,EAAQn/I,EAAQm/I,UAChB8vB,EAASD,oBAAoBxzK,EAcnC,QAZgB,EAAAkkJ,QAAA2vB,QAAOlwB,EAAMj3I,OAAO,SAACs4I,EAAUjlG,GAC9C,SAAAzkD,QAAA,EAAA43K,oBAAAn2K,SAAWioJ,KACVj3H,IAAKvpB,EAAQupB,GAAIgyB,EAAKn3C,MAAMmd,KAAK,KACjCtnB,YAAashD,EAAKthD,YAClBq1K,UAAWrwB,OAAA1mJ,QAAKyqG,QAAQznD,EAAKx/C,MAC7BwzK,WAAAA,IAAgBh0H,EAAKliC,IACrBjV,KAAMm3C,EAAKn3C,KACXorK,GAAIj0H,EAAKi0H,GACTn2J,IAAKkiC,EAAKliC,YAEJ,MAEOnY,IAAI,SAAA83C,GAClB,GAAMy2H,GAActwB,EAAM91I,OAAO,SAAAkyC,GAAA,MAAQA,GAAKn3C,OAAS40C,EAAO50C,OACxDm/J,EAAWkM,EAAYvuK,IAAI,SAAAq6C,GAAA,MAAQA,GAAKqjG,UAExCM,GAAU,EAAAQ,QAAAC,UAAS4jB,EAAU,QAC7BmM,EAAiBxwB,EAAU,OAAS,QACpClgF,EAASggF,WAAAzmJ,QAASupB,MAAMtmB,EAAM2oJ,UAAY,IAE1CwrB,EAAgB1wB,OAAA1mJ,QAAKi1D,SAASwR,EAAOvgE,SAAUwgJ,OAAA1mJ,QAAKyqG,QAAQhkC,EAAOvgE,YACxEixK,EAEKE,GAAe,EAAAlwB,QAAAC,UAAS4jB,EAAUoM,GAElC/wB,EAAUgxB,EACfD,EACAD,EAEKtrB,EAA6B,kBAAhBprG,EAAO50C,KAA2B,SAAW5I,EAAM4oJ,WAChE/2G,EAA0B,WAAf+2G,EAA0BprG,EAAOw2H,GAAKx2H,EAAO3/B,IACxD2pF,EAAUhqD,EAAOs2H,UACjB7wK,GAAYuB,EAAQupB,GAAT,GAAgBq1H,EAAU57C,GAAWzhF,KAAK,KACrDiiJ,EAAQtkB,GAAuB,UAAZN,GAAuB,WAAa,SAAU,eACjEx6I,EAAO86I,GAAuB,UAAZN,EAAsB,SAAWwF,EAEnD76H,EAAKy1H,WAAAzmJ,QAASygD,QACnBv6C,SAAAA,EACAlD,OACC6I,KAAAA,EACAshG,YAAalqG,EAAMkqG,eAIfnsG,EAASwuK,EAAQx+I,GACjB0vE,EAASz9F,EAAM2oJ,WAAa56H,EAE5BsmJ,EAAaZ,EAAO5lK,OAAO,SAAAzR,GAChC,MAAOA,GAAM8mJ,QACZ9mJ,EAAM8mJ,QAAQn1H,KAAOA,EACrB3xB,EAAMk4K,cAAgBvmJ,GAQxB,QACC0vE,OAAAA,EACAo6B,OAPcp6B,IACb1/F,IACAyG,EAAQ8uK,gBACRe,EAAW73K,OAKZgrG,QAAAA,EACA47C,QAAAA,EACA2kB,SAAAA,EACAh6I,GAAAA,EACAw6I,SAAS,EAAAgM,UAAAx3K,SAAQgxB,GACjB8jB,SAAAA,EACAt5B,KAAMilC,EAAO/+C,YACbV,OAAQA,GAAU,GAClB6K,KAAAA,EACAo/J,MAAAA,kgBAnYHnkB,MAAA5mJ,QAAA,6CAEAinJ,QAAAjnJ,QAAA,UACAgsK,YAAAhsK,QAAA,eACAoyK,OAAApyK,QAAA,SACAu3K,SAAAv3K,QAAA,sDAEA6mJ,UAAA7mJ,QAAA,mEACAuhK,UAAAvhK,QAAA,kEACAivK,SAAAjvK,QAAA,oEAEAsyK,SAAAtyK,QAAA,cAKAw3K,kBAAAx3K,QAAA,+GAEe,EAAAgsK,YAAAvF,SAAQoM,SAAUV,aAAlB/C,UAAAtvK;;qFCbf,QAAS+xK,UAAS9uK,GACjB,OACCg2D,KAAMh2D,EAAMg2D,KACZh2D,OAAO,EAAA6vK,YAAA9yK,SAAeiD,EAAO,KAAM,MACnCurJ,MAAOvrJ,EAAMurJ,MACb/mI,QAASxkB,EAAMmiD,OAAOuyH,WACtB7V,cAAe7+J,EAAMmiD,OAAO08G,cAC5BC,cAAe9+J,EAAMmiD,OAAO28G,cAC5B56J,SAAUlE,EAAMsjJ,QAAQC,0BACxBoxB,YAAa30K,EAAMmiD,OAAOwyH,YAC1BC,WAAY50K,EAAMmiD,OAAOyyH,WACzBC,OAAQ70K,EAAMmiD,OAAO0yH,OACrBC,UAAW90K,EAAMmiD,OAAO2yH,UACxB/V,YAAa/+J,EAAMmiD,OAAO4yH,kBAC1B/V,eAAgBh/J,EAAMmiD,OAAO6yH,qBAC7B/V,YAAaj/J,EAAMmiD,OAAO8yH,kBAC1B/V,eAAgBl/J,EAAMmiD,OAAO+yH,qBAC7B/V,aAAcn/J,EAAMmiD,OAAOg9G,aAC3BC,gBAAiBp/J,EAAMmiD,OAAOi9G,gBAC9BC,aAAcr/J,EAAMmiD,OAAOk9G,aAC3BC,gBAAiBt/J,EAAMmiD,OAAOm9G,sLAzBhC2J,YAAAhsK,QAAA,eAEAovJ,SAAApvJ,QAAA,6FACe,EAAAgsK,YAAAvF,SAAQoL,UAAR7gB,UAAAlxJ;;qFCGf,QAAS+xK,UAAS9uK,GACjB,OACCg2D,KAAMh2D,EAAMg2D,KACZ9xD,SAAUlE,EAAMsjJ,QAAQC,iFAT1B,IAAA0lB,aAAAhsK,QAAA,eAEAqvJ,WAAArvJ,QAAA,mGAEe,EAAAgsK,YAAAvF,SAAQoL,UAAR9gB,YAAAjxJ;;4JCKA,SAAU+yB,EAAMzH,GAC9B,GAAMqL,IAAQ,EAAAyhJ,QAAAp4K,SAAAyxJ,aAAAl7I,eAA+Bwc,GACvCxyB,GAAU,EAAA4rJ,kBAAAksB,sBAAA5mB,aAAAl7I,eAAqCogB,GAC/CrwB,EACLhF,QAAAtB,QAAA4B,cAAAsqK,YAAAoM,UAAU3hJ,MAAOA,GAChBr1B,QAAAtB,QAAA4B,cAAA6vJ,aAAA1kJ,QAAQxM,QAASA,IACf,EAAAg4K,SAAAv4K,SAAO22B,IAKX,QAAO,EAAA6zF,UAAA7oH,QAAO2E,EAAQglB,GApBvB,IAAAjqB,QAAAnB,QAAA,gDACAsqH,UAAAtqH,QAAA,aACAuxJ,aAAAvxJ,QAAA,2BACAgsK,YAAAhsK,QAAA,eACAisJ,kBAAAjsJ,QAAA,sBAEAs4K,QAAAt4K,QAAA,qDACAsiD,OAAAtiD,QAAA;;4JCCe,SAAUy2B,GACxB,GAAM1zB,GAAQ0zB,EAAM2vH,UACpB,OACChlJ,SAAAtB,QAAA4B,cAAA6vJ,aAAAtmJ,OAAO3H,KAAMP,EAAMg2D,KAAMx1D,UAAAovK,cAAA7yK,SACxBsB,QAAAtB,QAAA4B,cAAA6vJ,aAAAluJ,YAAYE,UAAA8vK,OAAAvzK,UACZsB,QAAAtB,QAAA4B,cAAA6vJ,aAAAtmJ,OAAO3H,KAAK,YAAYC,UAAAwvK,UAAAjzK,UACxBsB,QAAAtB,QAAA4B,cAAA6vJ,aAAAtmJ,OAAO3H,KAAK,IAAIC,UAAAg1K,WAAAz4K,WAdnB,IAAAqB,QAAAnB,QAAA,gDACAuxJ,aAAAvxJ,QAAA,2BAEA0yK,aAAA1yK,QAAA,gFACA8yK,SAAA9yK,QAAA,oEACAw4K,UAAAx4K,QAAA,wEACAozK,MAAApzK,QAAA;;qFCGe,QAASy4K,gBAAep4K,EAASq4K,GAC/C,GAAMhwB,GAAUiwB,aAAY,EAAAC,+BAAA94K,UAAA,EAAAy+G,UAAAz+G,UAAUumJ,QAAAA,kBAAAA,eAAVwyB,WAAA/4K,SAAAg5K,UAAAzzC,eAEtB70H,GAAcuoK,aAAAj5K,QAAAk5K,eAAAl5K,SAAgC,EAAAmsJ,kBAAAgtB,kBAAiB54K,IAE/D+mI,EAAagrC,OAAA8G,gBAAAv6K,UAAAqF,GAAmBwM,EAGtC,QAFc,EAAA4hK,OAAA+G,aAAYzwB,EAASgwB,GAAS,EAAAtG,OAAAgH,SAAQhyC,IAKrD,QAASuxC,aAAYjwB,GACpB,MAAO,UAAC3lJ,EAAOsH,GACd,OAAQA,EAAOsB,MACd,IAAK,gBACJ,MAAO+8I,GAAQr+I,EAAO47I,QAAS57I,EAChC,SACC,MAAOq+I,GAAQ3lJ,EAAOsH,+KAjBFouK,cATxB,IAAArG,QAAApyK,QAAA,SACAisJ,kBAAAjsJ,QAAA,sBACAq5K,YAAAr5K,QAAA,gEACAs5K,8BAAAt5K,QAAA,uHACAu5K,cAAAv5K,QAAA,sEAGA84K,UAAA94K,QAAA;;0RCPA2nJ,cAAA3nJ,QAAA,iBACAisK,WAAAjsK,QAAA,wEAEMm7D,aAAe,KAEfq+G,iBAAmB,SAACz2K,EAAD+C,GAAsB,GAAbmgJ,GAAangJ,EAAbmgJ,QAC1BzlD,EAAcylD,EAAdzlD,OAAQ1vE,EAAMm1H,EAANn1H,EAEf,OAAI0vE,GACI1vE,EAGDqqC,cAGFs+G,sBAAwB,WAC7B,MAAOt+G,gCAGO,EAAAwsF,cAAAc,gBAAAixB,mBAAA,EAAAxsB,iBAAAptJ,SAAA45K,eAAAtN,YAAAtsK,QACD05K,mBADC,EAAAtsB,iBAAAptJ,SAAA45K,eAEd,2BAA4BD,uBAFdC,gBAGZv+G;;YCnBI,SAASw+G,SAAQ3zK,GACvB,GAAMu9D,IAAQ,EAAAq2G,OAAAC,UAAS7zK,EACvB,OAAOu9D,GAAQ,EAAR,IACFv9D,EACFkf,MAAM,KACNtU,OAAO45C,SACPhsD,MAAM,EAAG+kE,GACTz6C,KAAK,KALD,IAMN,mEARc6wJ,QAAAA,OAHhB,IAAAhyB,eAAA3nJ,QAAA,iBACA45K,OAAA55K,QAAA,4BAae,EAAA2nJ,cAAAmyB,cAAa,4BAC3Bj7K,KADuD,SAClD4rC,EADkD3kC,GAEtD,MAAO6zK,SADuB7zK,EAAtBmgJ,QAAUjgJ,YAGjB;;0WClBHihJ,QAAAjnJ,QAAA,UACAsyK,SAAAtyK,QAAA,cACAqtJ,wBAAArtJ,QAAA,gHAEMm7D,iCAES,EAAA8xF,yBAAAntJ,UAAA,EAAAotJ,iBAAAptJ,YAAAwyK,SAAA3pB,kBACO,SAAC5lJ,EAAD+C,EAAAw4G,GAAiC,GAAxB2nC,GAAwBngJ,EAAxBmgJ,QAAW1+I,EAAa+2G,EAAb/2G,QAClC4J,EAAWpO,EAAMwE,EAAQupB,IACzBjyB,GAAQk8G,MAAOkrC,EAAQlrC,MAAOzD,OAAQ2uC,EAAQ3uC,OACpD,QAAK,EAAA2vC,QAAAkoB,SAAQh+J,EAAUtS,GAMhBkE,GALN,EAAAy7G,UAAA1+G,YACIiD,GADJ,EAAAmqJ,iBAAAptJ,YAEEyH,EAAQupB,GAAKjyB,OAKds8D,aAAAA,aAAckqE,cAAe;;0WClBjC+7B,iBAAAphK,QAAA,0FACAqtJ,wBAAArtJ,QAAA,iIAEe,EAAAitJ,yBAAAntJ,UACdi6K,2BAA4B,SAACh3K,EAAOsH,EAARvE,GAA2B,GAAVizD,GAAUjzD,EAAVizD,KACtCjoC,GAAK,EAAAkvI,kBAAAlgK,SAAgBuK,EAAO47I,QAAQjgJ,SAAU+yD,IAAS,KACvDl9C,EAAIE,KAAKwc,IAAI,IAAKuuB,OAAOz8C,EAAO47I,QAAQnjJ,MAAMi4G,QAC9Cj/F,EAAIC,KAAKwc,IAAI,IAAKuuB,OAAOz8C,EAAO47I,QAAQnjJ,MAAMw0G,SAE9CnmG,EAAWpO,EAAM+tB,MAEvB,OAAI3f,GAAS0K,IAAMA,GAAK1K,EAAS2K,IAAMA,GACtC,EAAA0iG,UAAA1+G,YACIiD,GADJ,EAAAmqJ,iBAAAptJ,YAEEgxB,GAFF,EAAA0tF,UAAA1+G,YAGKiD,EAAM+tB,IACTjV,EAAAA,EACAC,EAAAA,MAII/Y,KAELo4D,gBAAkBkqE,cAAe;;YCrB9B,SAASw0C,UAAS7zK,GACxB,GAAMi6J,GAAYj6J,EAASkf,MAAM,KAAKtU,OAAO45C,SACvCwvH,EAAgB/Z,EAAU/6J,QAAQ,WAElChG,GAA2B,IAAnB86K,EACb/Z,EAAU1gK,OACVy6K,CAED,OAAO/Z,GAAUzhK,MAAM,EAAGU,GAAO0R,OAAO45C,SAASjrD,sEARlCs6K,SAAAA,QAFhB,IAAAlyB,eAAA3nJ,QAAA,kCAae,EAAA2nJ,cAAAmyB,cAAa,4BAC3Bj7K,KADuD,SAClD4rC,EADkD3kC,GAEtD,MAAO+zK,UADuB/zK,EAAtBmgJ,QAAUjgJ,YAGjB;;qFCZH,QAASi0K,gBAAej0K,GACvB,MAAOugJ,YAAAzmJ,QAASupB,MAAMrjB,GAAUlD,MAAMmqG,aAAe9xC,aAGtD,QAAS++G,6BAA4BzvI,EAAGpgC,GACvC,MAAO4vK,gBAAe5vK,EAAO47I,QAAQjgJ,gEAVtC,IAAA2hJ,eAAA3nJ,QAAA,iBACA6mJ,UAAA7mJ,QAAA,mEAEMm7D,aAAe,yBAUN,EAAAwsF,cAAAc,gBACdsxB,2BAA4BG,6BAC1B/+G;;YCXH,SAASg/G,0BAAyB1vI,EAAGpgC,GACpC,MAAyC,UAAlCA,EAAO47I,QAAQnjJ,MAAMkrJ,+DAL7B,IAAArG,eAAA3nJ,QAAA,iBAEMm7D,cAAe,mBAMN,EAAAwsF,cAAAc,gBACdsxB,2BAA4BI,0BAC1Bh/G;;YCNH,SAASi/G,cAAa3vI,EAAGpgC,GACxB,MAAqC,UAA9BA,EAAO47I,QAAQnjJ,MAAM6pB,2DAL7B,IAAAg7H,eAAA3nJ,QAAA,iBAEMm7D,cAAe,mBAMN,EAAAwsF,cAAAc,gBACdsxB,2BAA4BK,cAC1Bj/G;;qFCPH,QAAS3/B,SAAQiP,EAAjB3kC,EAAAw4G,GAAuC,GAAlB2nC,GAAkBngJ,EAAlBmgJ,QAAWltF,EAAOulD,EAAPvlD,IAC/B,QAAO,EAAAinG,kBAAAlgK,SAAgBmmJ,EAAQjgJ,SAAU+yD,IAAS,2DAJnD,IAAAqoG,kBAAAphK,QAAA,0FACAqtJ,wBAAArtJ,QAAA,iIAMe,EAAAitJ,yBAAAntJ,UACdi6K,2BAA4Bv+I,UAE5B6pG,cAAe;;uKCVhB,IAAAg1C,cAAAr6K,QAAA,qEACAs6K,MAAAt6K,QAAA,+CACA45K,OAAA55K,QAAA,kDACAu6K,uBAAAv6K,QAAA,oGACAw6K,gBAAAx6K,QAAA,8EACAy6K,aAAAz6K,QAAA,oEACA06K,UAAA16K,QAAA,2DACA49I,IAAA59I,QAAA,yCACA26K,OAAA36K,QAAA,kDACAi/J,UAAAj/J,QAAA,2DACA46K,aAAA56K,QAAA,qEACA66K,UAAA76K,QAAA,2DACAsvJ,YAAAtvJ,QAAA,iEACA86K,SAAA96K,QAAA,wDACAivK,SAAAjvK,QAAA,wDACA+6K,QAAA/6K,QAAA,qDACAg7K,QAAAh7K,QAAA,qDACAi7K,eAAAj7K,QAAA,2EACAk7K,aAAAl7K,QAAA,sEACAm7K,aAAAn7K,QAAA,sEACAo7K,gBAAAp7K,QAAA,8EACAq7K,UAAAr7K,QAAA,4DACAs7K,YAAAt7K,QAAA,kEACAu7K,QAAAv7K,QAAA,qDACAw7K,OAAAx7K,QAAA,kDACAy7K,MAAAz7K,QAAA,+CACA07K,QAAA17K,QAAA,qDAEM4sJ,MAAQ,WAAA,MAAAluJ,WAAAa,OAAA,OAAAyE,KAAAtF,UAAA,GAAAA,UAAA,OACRi9K,gBAAkB,WAAA,OAAAj9K,UAAAa,OAAA,OAAAyE,KAAAtF,UAAA,GAAAA,UAAA,OAA0B2mI,mCAGjDmhC,YAAAA,cAAAA,QACAztG,KAAAA,OAAAA,QACA5V,OAAQypG,MACRsoB,sBAAAA,wBAAAA,QACAH,eAAAA,iBAAAA,QACAxxG,MAAAA,QAAAA,QACA0pC,YAAAA,cAAAA,QACA+gD,SAAAA,WAAAA,QACArhI,KAAAA,OAAAA,QACAmE,GAAAA,KAAAA,QACAy2H,MAAAA,QAAAA,QACAC,SAAAA,WAAAA,QACAuI,YAAAA,cAAAA,QACAhtG,SAAAA,WAAAA,QACA2tG,WAAAA,aAAAA,QACAlU,QAAAA,UAAAA,QACAj1I,QAAAA,UAAAA,QACA0mJ,OAAAA,SAAAA,QACA/oG,OAAQ0nG,MACRU,YAAAA,cAAAA,QACAE,YAAAA,cAAAA,QACApjJ,OAAAA,SAAAA,QACA2nK,cAAAA,gBAAAA,QACA5H,eAAAA,iBAAAA,QACAze,SAAAA,WAAAA,QACAC,WAAAA,aAAAA,QACAwE,UAAWvD,MACXje,OAAAA,SAAAA,QACA2f,MAAAA,QAAAA,QACAt7I,OAAAA,SAAAA,QAGM,IAAMqyH,cAAAA,QAAAA,cACZ99H,QAASo0K,gBAAAA,UAAAA,SACT5J,cAAe4J,gBAAAA,gBAAAA,SACfhtC,OAAQgtC,gBAAAA,SAAAA,SACRnuB,YAAamuB,gBAAAA,cAAAA,SACbruB,YAAaquB,gBAAAA,cAAAA;;YCjEd,SAASC,uBAAsBnxI,EAAGpgC,GACjC,MAAsC,SAA/BA,EAAO47I,QAAQnjJ,MAAMykJ,4DAL7B,IAAAI,eAAA3nJ,QAAA,iBAEMm7D,cAAe,mBAMN,EAAAwsF,cAAAc,gBACdsxB,2BAA4B6B,uBAC1BzgH;;YCNH,SAAS0gH,0BAAyBpxI,EAAGpgC,GACpC,MAAOA,GAAO47I,QAAQnjJ,MAAM0kJ,+DAL7B,IAAAG,eAAA3nJ,QAAA,iBAEMm7D,aAAe,oBAMN,EAAAwsF,cAAAc,gBACdsxB,2BAA4B8B,0BAC1B1gH;;mECVH,IAAAwsF,eAAA3nJ,QAAA,iBAEMm7D,cAAe,EAEf2gH,iCAAmC,SAACrxI,EAAD3kC,GACxC,MAAyC,SADiBA,EAAbmgJ,QAC9BnjJ,MAAM,kCAGP,EAAA6kJ,cAAAc,gBACdsxB,2BAA4B+B,kCAC1B3gH;;qFCGH,QAAS4gH,eAAc58K,GAAiB,GAAVqjI,GAAU9jI,UAAAa,OAAA,OAAAyE,KAAAtF,UAAA,GAAAA,UAAA,GAAH,CACpCS,GAAMipB,IAAM,4DACZ,IAAMwiD,GAAQzrE,EAAM2V,QAAQoQ,MAAM,KAClC,QACCvZ,KAAM,QACNmlB,IAAI,EAAAm/I,KAAAnwK,UAAK0iI,GAADnkI,QAAA,EAAA43K,oBAAAn2K,SAAU8qE,IAAO9hD,KAAK,MAC9B+3I,QAASj2F,EAAM,GACf22D,MAAM,EAAAy6C,YAAAl8K,SAAM8qE,EAAMpsE,MAAM,EAAGosE,EAAMrrE,QAAQupB,KAAK,OAC9CnI,OAAO,EAAAq7J,YAAAl8K,SAAMX,EAAMwhB,OACnBpZ,QAASpI,EAAMoI,QACf22J,MAAO1zG,QAAQrrD,EAAMoI,SACrBu7C,KAAM3jD,EAAMipB,KAAOjpB,EAAM2jD,KAAO0jG,OAAA1mJ,QAAKiqG,SAAS5qG,EAAMipB,IAAKjpB,EAAM2jD,MAAMtkD,OAAO,IAAM,wMAxBpFooJ,MAAA5mJ,QAAA,6CACAi8K,WAAAj8K,QAAA,6DACAwvK,IAAAxvK,QAAA,wCACA2nJ,cAAA3nJ,QAAA,iBAEAsyK,SAAAtyK,QAAA,cAGA4qJ,oBAAA5qJ,QAAA,mCACAk8K,iBAAAl8K,QAAA,wFAEMm7D,iCAiBS,EAAAghH,kBAAAr8K,UACd,EAAA8qJ,oBAAAkC,0BAAAwlB,SAAAxpB,iBACCsE,QADyC,SACjCrqJ,EADiC+C,GACf,GAAVmgJ,GAAUngJ,EAAVmgJ,OACf,OAAOljJ,GAAM6N,OAAO,SAAAkE,GAAA,OAAYA,EAAQvN,SAAWuN,EAAQvN,UAAY0+I,EAAQn1H,MAEhFvP,OAJyC,SAIlCxe,EAJkCu7G,GAMxC,OADgBy9D,cADez9D,EAAjB2nC,QACuB,IACrC5nJ,QAAA,EAAA43K,oBAAAn2K,SAAoBiD,EAAMvE,MAAM,EAAG,QAEjC28D,aAAAA,gBACJ,EAAAyvF,oBAAAkC,0BAAAwlB,SAAAtpB,iBACCznI,OADyC,SAClCxe,EADkCujI,GAGxC,OADgBy1C,cADez1C,EAAjB2f,QACuB,IACrC5nJ,QAAA,EAAA43K,oBAAAn2K,SAAoBiD,EAAMvE,MAAM,EAAG,SAGrC,EAAAmpJ,cAAAmyB,cAAAxH,SAAA1pB,eAA6B,SAAC7lJ,EAADikI,GAA0B,GAARl2G,GAAQk2G,EAAjBif,OACrC,OAAOljJ,GAAM6N,OAAO,SAAAkE,GAAA,MAAWA,GAAQgc,KAAOA,MAC3CqqC,aAAAA,gBACJ,EAAAwsF,cAAAmyB,cAAAxH,SAAAhrB,mBAAiC,WAChC,MAAOnsF,gBACJA,aAAAA,gBACJ,EAAAwsF,cAAAmyB,cAAa,qBAAsB,SAAC/2K,EAAD4jI,GAElC,OADgBo1C,cAD+Cp1C,EAApBsf,QACN,IACrC5nJ,QAAA,EAAA43K,oBAAAn2K,SAAoBiD,EAAMvE,MAAM,EAAG;;uRCpDrCooJ,MAAA5mJ,QAAA,6CACAinJ,QAAAjnJ,QAAA,UAEAsyK,SAAAtyK,QAAA,cACA4qJ,oBAAA5qJ,QAAA,mCACAuhK,UAAAvhK,QAAA,kEAEMo8K,mBAAoB,EAAAxxB,oBAAAkC,0BAAAwlB,SAAAxpB,iBACzBsE,QADmE,SAC3DrqJ,EAD2D+C,GACzC,GAAVmgJ,GAAUngJ,EAAVmgJ,QACTt+I,GAAQ,EAAAu4J,WAAApgK,SAASmmJ,EAAQn1H,GAAI/tB,EACnC,IAAI4E,EAAO,CACV,GAAMs4J,GAAYha,EAAQn1H,GAAG5L,MAAM,KAE7B6pG,EAAWkxC,EAAUx3J,IAAI,SAACgmC,EAAUvvC,GACzC,OAAO,EAAAghK,WAAApgK,SAASmgK,EAAUzhK,MAAM,EAAGU,EAAQ,GAAG4pB,KAAK,KAAM/lB,KAGpDs5K,EAAattD,EAASt/G,OAAO,SAACs4I,EAAUt+G,GAC7C,GAAM3Y,GAAK01H,OAAA1mJ,QAAKi1D,SAAStrB,EAAO3Y,IAC1BmwI,EAAwB,WAAhBx3H,EAAO99B,MACnBmlB,EAAI,aACJA,EACF,UAAAzyB,QAAA,EAAA43K,oBAAAn2K,SAAWioJ,GAAakZ,QAClBn4I,KAAK,KAEN+J,GAAO,EAAAo0H,QAAAE,UAAUx/I,GACtB09H,aAAc4gB,EAAQ5gB,aACtB2kC,WAAY/jB,EAAQ+jB,WACpB91I,QAAS+xH,EAAQ/xH,QACjB+1I,aAAchkB,EAAQgkB,aACtBvjB,MAAOT,EAAQS,MACf51H,GAAIm1H,EAAQn1H,GACZknF,UACCx2G,YAAaykJ,EAAQjuC,SAASx2G,YAC9BwxH,KAAMizB,EAAQjuC,SAASgb,KACvBhN,KAAMigC,EAAQjuC,SAASgO,KACvB1qG,KAAM2qI,EAAQjuC,SAAS18F,KACvBiM,QAAS0+H,EAAQjuC,SAASzwF,WAGtB+0J,GAAW,EAAAr1B,QAAAs1B,gBAAeF,IAAcxpJ,GAC9C,QAAO,EAAAo0H,QAAAE,UAAUpkJ,EAAOu5K,GAEzB,MAAOv5K,yBAIMq5K;;YC3Cf,SAASI,yBAAwB/xI,EAAGpgC,GACnC,MAAwC,UAAjCA,EAAO47I,QAAQnjJ,MAAM05I,8DAL7B,IAAAmL,eAAA3nJ,QAAA,iBAEMm7D,cAAe,mBAMN,EAAAwsF,cAAAc,gBACdsxB,2BAA4ByC,yBAC1BrhH;;ifCVHwsF,cAAA3nJ,QAAA,iBAEAsyK,SAAAtyK,QAAA,cAIA4qJ,oBAAA5qJ,QAAA,mCACAk8K,iBAAAl8K,QAAA,wFAEMo8K,mBAAoB,EAAAxxB,oBAAAkC,0BAAAwlB,SAAAxpB,iBACzB79G,MADmE,SAC7DloC,GACL,OACCyzK,OAAQzzK,EAAMyzK,OACdC,aAAa,EACbC,aAAa,EACbC,eAAe,EACfR,aAAa,EACbC,YAAa5rH,QAAQznD,EAAM+tB,IAC3B2rJ,YAAajyH,QAAQznD,EAAM2oJ,UAC3Bkd,WAAY7lK,EAAM6lK,WAClBC,aAAc9lK,EAAM8lK,aACpByG,QAASvsK,EAAMusK,UAGjBliB,QAfmE,SAe3DrqJ,EAf2D+C,EAAAw4G,GAenC,GAAhB2nC,GAAgBngJ,EAAhBmgJ,QAAWn1H,EAAKwtF,EAALxtF,GACpBw+I,EAAUvsK,EAAQA,EAAMusK,WACxBkH,EAASzzK,EAAQA,EAAMyzK,aAE7B,OAAI1lJ,KAAOm1H,EAAQn1H,GACX/tB,GAGR,EAAAy7G,UAAA1+G,YACIiD,GACH+tB,GAAIm1H,EAAQn1H,GACZu0G,aAAc4gB,EAAQ5gB,aACtB4kC,aAAchkB,EAAQgkB,aACtBwM,aAAa,EACbN,aAAa,EACbzvB,MAAOT,EAAQS,MACf1uC,SAAUiuC,EAAQjuC,SAClBs3D,QAAAA,EACAkH,OAAAA,KAGFj1J,OApCmE,SAoC5Dxe,EApC4DujI,GAoC1C,GAAV2f,GAAU3f,EAAV2f,OACd,QACCkwB,aAAa,EACbK,UAAAA,QAAAA,EAAAA,oBAAAA,SAAazzK,EAAMyzK,cAAgB1zH,KAAM,KAAMhyB,GAAI/tB,EAAM+tB,GAAIm1H,QAAAA,KAC7DwwB,aAAa,MAIft7G,gBACAkqE,cAAe,QAGVq3C,kBAAmB,EAAA9xB,oBAAAkC,0BAAAwlB,SAAAtpB,iBACxB/9G,MADkE,SAC5DloC,GACL,OAAA,EAAAy7G,UAAA1+G,YACIiD,GACHszK,eAAe,EACfM,eAAe,KAGjBvpB,QARkE,SAQ1DrqJ,EAR0DikI,GAQxC,GAAVif,GAAUjf,EAAVif,OACf,QAAA,EAAAznC,UAAA1+G,YACIiD,GACHszK,eAAe,EACfM,eAAe,EACfrH,SAAAA,EAAAA,UAAAA,YACIvsK,EAAMusK,SADV,EAAApiB,iBAAAptJ,YAEEmmJ,EAAQn1H,GAAKm1H,EAAQnlJ,YAIzBygB,OAnBkE,SAmB3Dxe,EAnB2D4jI,GAmBlC,GAARxnI,GAAQwnI,EAAjBsf,OACd,QAAA,EAAAznC,UAAA1+G,YACIiD,GACHszK,eAAe,EACfM,eAAe,EACfH,UAAAA,QAAAA,EAAAA,oBAAAA,SAAYzzK,EAAMyzK,UAAS1lJ,GAAI/tB,EAAM+tB,GAAIm1H,QAAS9mJ,EAAM8mJ,gBAKrD02B,uBAAwB,EAAAh1B,cAAAmyB,cAAAxH,SAAAvpB,gBAA8B,SAAChmJ,EAAD65K,GAA+B,GAAbjU,GAAaiU,EAAtB32B,OACpE,QAAA,EAAAznC,UAAA1+G,YACIiD,GACH2zK,aAAa,EACbN,YAAazN,EACbC,WAAYD,EAAU3+H,KAAKlS,MAAQ/0B,EAAM6lK,eAIrCxjC,UAAW,EAAA+2C,kBAAAr8K,SAChBs8K,kBACAM,iBACAC,uCAGcv3C;;YCjGf,SAASy3C,wBAAuBpyI,EAAGpgC,GAClC,MAAuC,SAAhCA,EAAO47I,QAAQnjJ,MAAMmrJ,6DAL7B,IAAAtG,eAAA3nJ,QAAA,iBAEMm7D,cAAe,mBAMN,EAAAwsF,cAAAc,gBACdsxB,2BAA4B8C,wBAC1B1hH;;+OCVHkyF,wBAAArtJ,QAAA,iIAEe,EAAAitJ,yBAAAntJ,UACdi6K,2BAA4B,SAACh3K,EAAOsH,EAARvE,GAC3B,OAAQ+V,EAAG,EAAGtU,QAD2CzB,EAAbyB,UAG7Cu1K,cAAiB,SAAC/5K,EAADu7G,GAAsB,GAAb2nC,GAAa3nC,EAAb2nC,OACzB,QAAA,EAAA1nC,UAAAz+G,YAAWiD,GAAO8Y,EAAGoqI,OAEnB9qF,cAAet/C,EAAG,GAAIwpH,cAAe;;+OCTzCgoB,wBAAArtJ,QAAA,iIAEe,EAAAitJ,yBAAAntJ,UACdi6K,2BAA4B,SAACh3K,EAAOsH,EAARvE,GAC3B,OAAQgW,EAAG,EAAGvU,QAD2CzB,EAAbyB,UAG7Cw1K,cAAiB,SAACh6K,EAADu7G,GAAsB,GAAb2nC,GAAa3nC,EAAb2nC,OACzB,QAAA,EAAA1nC,UAAAz+G,YAAWiD,GAAO+Y,EAAGmqI,OAEnB9qF,cAAer/C,EAAG,GAAIupH,cAAe;;qFCLlC,QAAS23C,cAAa5yK,EAAQsmJ,GAAwB,GAAZvJ,GAAYzoJ,UAAAa,OAAA,OAAAyE,KAAAtF,UAAA,GAAAA,UAAA,KAC5D,IAAK0L,EAAL,CAIA,GAAM6yK,GAAM7yK,EAAO5L,MAAM,EAAG4L,EAAO7K,OAAS,GACtCoI,GAAQ,EAAAu4J,WAAApgK,SAASm9K,EAAKvsB,EAE5B,IAAK/oJ,KAASA,GAAyB,YAAfA,EAAMgE,MAI9B,MAAOuxK,QAAOD,EAAKt1K,EAAOw/I,IAG3B,QAAS+1B,QAAOpsJ,EAAI+B,EAAMs0H,GACzB,GAAM8Y,GAAYnvI,EAAG5L,MAAM,KAAKtU,OAAO45C,SACjC7pC,IAEN,OAAOs/I,GAAUxwJ,OAAO,SAACs4I,EAAUt5G,EAAUvvC,GAI5C,OAHYyhB,EAAMphB,OAAS,GAAI,EAAA2gK,WAAApgK,SAAS6gB,EAAMmI,KAAK,KAAMi/H,GAAYA,GACjEt5G,GAAYwxH,EAAU1gK,OAAS,IAAML,GAAzB,EAAAs/G,UAAA1+G,YAAqC+yB,EAASs0H,IAA9C,EAAA3oC,UAAA1+G,YAA2DqnJ,GAC3ExmI,EAAMtc,KAAKoqC,GACJs5G,OAIF,QAAS9/I,cAAaV,GAAwB,GAAf41K,GAAez+K,UAAAa,OAAA,OAAAyE,KAAAtF,UAAA,GAAAA,UAAA,KACpD,OAAqC,MAAjC,EAAA2pJ,OAAAvoJ,SAAYq9K,GAAU59K,SAInB,EAAAuoJ,UAAAhoJ,SAAeq9K,GACpB3xK,MAAM,SAAA/L,GAAQ,GAAA29K,IAAA,EAAAn1B,gBAAAnoJ,SACSL,EADT,GACP6b,EADO8hK,EAAA,GACD/9K,EADC+9K,EAAA,EAGd,IAAsB,IAAlB/9K,EAAOE,OACV,OAAO,CAGR,IAAa,SAAT+b,EAAiB,CACpB,GAAM0qG,GAAOz+G,EAAQywG,SAASgO,QAC9B,OAAO3mH,GAAOqS,KAAK,SAAA0kB,GAAA,OAAO,EAAA6wH,QAAAC,UAASlhC,EAAM5vF,KACnC,GAAa,UAAT9a,EAAkB,CAC5B,GAAM03G,GAAOzrH,EAAQywG,SAASgb,MAAQ,EACtC,OAAO3zH,GAAOqS,KAAK,SAAA2rK,GAAA,MAAaA,KAAcrqD,IACxC,GAAa,YAAT13G,EAAoB,CAC9B,GAAM+pH,IAAe,EAAAgjB,OAAAvoJ,SAAYyH,EAAQywG,SAAS1H,aAClD,OAAOjxG,GAAOqS,KAAK,SAAA62I,GAAA,OAAc,EAAAtB,QAAAC,UAAS7hB,EAAckjB,KAClD,GAAa,aAATjtI,EAAqB,CAC/B,GAAM0uJ,IAAa,EAAA3hB,OAAAvoJ,SAAYyH,EAAQywG,SAASslE,sBAChD,OAAOj+K,GAAOqS,KAAK,SAAA6rK,GAAA,OAAa,EAAAt2B,QAAAC,UAAS8iB,EAAYuT,KAGtD,OAAO,IAIH,QAASC,aAAYpzK,GAC3B,MAAOA,GAAO8a,MAAM,KAClBtU,OAAO6sK,QACP7sK,OAAO45C,SAGH,QAASkzH,cAAatzK,GAC5B,GAAM61J,GAAY71J,EAAO8a,MAAM,KACzBxd,EAASu4J,EAAUrvJ,OAAO+sK,QAMhC,QACC33D,MANY,EAAAihC,QAAAv9F,SAAQhiD,EAAOkJ,OAAOgtK,YAAYn1K,IAAIo1K,iBAM5Cp4J,OALO,EAAAwhI,QAAAv9F,SAAQhiD,EAAOkJ,OAAOktK,aAAar1K,IAAIo1K,iBAKvCE,SAJE,EAAA92B,QAAAv9F,SAAQhiD,EAAOkJ,OAAOotK,gBAAgBv1K,IAAIo1K,iBAInCI,UAHN,EAAAh3B,QAAAv9F,SAAQhiD,EAAOkJ,OAAOstK,iBAAiBz1K,IAAIo1K,kBAOtD,QAASM,aAAYC,GAAyB,GAAfjB,GAAez+K,UAAAa,OAAA,OAAAyE,KAAAtF,UAAA,GAAAA,UAAA,KACpD,QAAO,EAAAqiK,SAAAjhK,SAAcs+K,GACnB3uK,OAAO,SAACs4I,EAAUtoJ,GAClB,MAAkB,YAAdA,EAAKkM,KACD1D,aAAaxI,EAAM09K,MAAnB9+K,QAAA,EAAA43K,oBAAAn2K,SACFioJ,IAAUtoJ,IACdsoJ,EACuB,WAAdtoJ,EAAKkM,QACftN,QAAA,EAAA43K,oBAAAn2K,SAAWioJ,IAAX,EAAAkuB,oBAAAn2K,SAAwBq+K,YAAY1+K,EAAKyD,SAAUi6K,KAE7Cp1B,OAIH,QAASs2B,gBAAe/tE,EAAUguE,GACxC,MAAOH,aAAY7tE,GACjB1/F,OAAO,SAAA9K,GAAA,GAAEgrB,GAAFhrB,EAAEgrB,EAAF,QAAU,EAAAm2H,QAAAC,UAASo3B,EAAKxtJ,KAC/BrhB,OAAO,SAACs4I,EAAUtoJ,GAClB,GAAMwgK,GAAYxgK,EAAKqxB,GAAG5L,MAAM,KAC1BnkB,EAAMk/J,EAAUA,EAAU1gK,OAAS,EACzC,QAAA,EAAAi/G,UAAA1+G,YACIioJ,GADJ,EAAAmF,iBAAAptJ,YAEEiB,EAAMtB,SAOX,QAAS8+K,cAAax9K,EAAKqI,GAC1B,OAAO,EAAA69I,QAAAwN,YAAWrrJ,EAAUrI,EAArB,KAGD,QAAS48K,SAAQv0K,GACvB,MAAOo1K,WAAU9sK,KAAK,SAAA+sK,GAAA,MAAYF,cAAaE,EAAUr1K,KAGnD,QAASq0K,QAAOr0K,GACtB,OAAQu0K,QAAQv0K,GAGV,QAASw0K,YAAWx0K,GAC1B,MAAOm1K,cAAa,MAAOn1K,GAGrB,QAAS00K,aAAY10K,GAC3B,MAAOm1K,cAAa,OAAQn1K,GAGtB,QAAS40K,gBAAe50K,GAC9B,MAAOm1K,cAAa,UAAWn1K,GAGzB,QAAS80K,iBAAgB90K,GAC/B,MAAOm1K,cAAa,WAAYn1K,GAG1B,QAASy0K,gBAAez0K,GAC9B,MAAOA,GACL8b,MAAM,KACN1mB,MAAM,GACNsqB,KAAK,KACL5D,MAAM,KACNtU,OAAO45C,SACP/hD,IAAI,SAAAhJ,GAAA,MAAQA,GAAKopB,g0BA7IJm0J,aAAAA,qBA2BA/0K,aAAAA,qBA+BAu1K,YAAAA,oBAMAE,aAAAA,qBAaAS,YAAAA,oBAcAE,eAAAA,uBAmBAV,QAAAA,gBAIAF,OAAAA,eAIAG,WAAAA,mBAIAE,YAAAA,oBAIAE,eAAAA,uBAIAE,gBAAAA,wBAIAL,eAAAA,cA1IhB,IAAA52B,SAAAjnJ,QAAA,UAEAuhK,UAAAvhK,QAAA,qEA0GMw+K,WAAa,MAAO,OAAQ,UAAW;;oQC9F7C,QAAS/E,uBAAsB12K,EAAOsH,EAAQg7H,GAAc,GACpDqrB,GAAwBrrB,EAAxBqrB,WAAY1C,EAAY3oB,EAAZ2oB,SADwC0wB,EAErCr0K,EAAO47I,QAAQnjJ,MAA9BsH,OAAAA,MAFoDpG,KAAA06K,EAE3C,GAF2CA,CAI3D,KAAK1wB,EACJ,MAAO0C,EAWR,IAAMiuB,GAAQC,QAAQpB,YAAYpzK,GAC5B1C,EAASk3K,QAAQlB,aAAatzK,GAC9BkmG,EAAWsuE,QAAQT,YAAYztB,EAAYhpJ,GAE3C42K,EAAMK,EAAMp/K,OAAS,EAC1Bs/K,WAAWvuE,EAAUquE,GAAOv0K,OAAOu0K,EAAM71J,KAAK,MAC9CwnF,EAAS7nG,IAAI,SAAAlB,GAAA,MAAWA,GAAQupB,KAtB0BguJ,EAyB1CR,EAAI1tK,OAAO,SAAAkgB,GAAA,MAAMA,KAAO1mB,IAzBkB20K,GAAA,EAAA92B,gBAAAnoJ,SAAAg/K,EAAA,GAyBpDE,EAzBoDD,EAAA,GA0BrDltI,EAAUmtI,GAAUA,GAAUV,CAEpC,OAAOM,SAAQP,eAAe3tB,EAAY7+G,GAG3C,QAASgtI,YAAWvuE,GACnB,MAAO,IAAA2uE,QAAAn/K,QAASwwG,GACfx/E,GAAI,KACJouJ,UAAW,GACXj6K,MACC,KACA,gBACA,uBACA,gBACA,qMAtDHk6K,MAAAn/K,QAAA,gDAEAo/K,SAAAp/K,QAAA,aAAY4+K,0CACZvxB,wBAAArtJ,QAAA,mHAEMm7D,gBACAkqE,cAAgB,WAAY,cAE5Bg6C,oBAAqB,EAAApyB,yBAAAntJ,UAC1Bi6K,2BAA4BN,wBACzBt+G,aAAAA,aAAckqE,aAAAA,+BAEHg6C;;YCRf,SAASC,wBAAuB70I,EAAGpgC,GAClC,MAAOA,GAAO47I,QAAQnjJ,MAAMsH,6DAL7B,IAAAu9I,eAAA3nJ,QAAA,iBAEMm7D,aAAe,oBAMN,EAAAwsF,cAAAc,gBACdsxB,2BAA4BuF,wBAC1BnkH;;mECVH,IAAAwsF,eAAA3nJ,QAAA,iBAEMm7D,cAAe,EAEfs+G,sBAAwB,SAAChvI,EAAD3kC,GAC7B,MAA4C,SADGA,EAAbmgJ,QACnBnjJ,MAAM,qCAGP,EAAA6kJ,cAAAc,gBACdsxB,2BAA4BN,uBAC1Bt+G;;qFCLH,QAAS3/B,SAAQiP,EAAjB3kC,EAAAw4G,GAA8C,GAAzB2nC,GAAyBngJ,EAAzBmgJ,QAAWh5C,EAAcqR,EAAdrR,WAC/B,IAAIg5C,EAAQnjJ,MAAMhC,OAAQ,CACzB,GAAMylE,GAASggF,WAAAzmJ,QAASupB,MAAM48H,EAAQnjJ,MAAMhC,OAC5C,OAAOylJ,YAAAzmJ,QAASygD,QAAT,EAAAg+D,UAAAz+G,YACHymE,GACHzjE,OAAAA,EAAAA,UAAAA,YACIyjE,EAAOzjE,OACVmqG,YAAAA,OAIH,MAAO9xC,wKAhBRkyF,wBAAArtJ,QAAA,gHACA6mJ,UAAA7mJ,QAAA,mEAEMm7D,aAAe,sBAgBN,EAAA8xF,yBAAAntJ,UACdi6K,2BAA4Bv+I,UAE5B6pG,cAAe;;qFCjBhB,QAAS7pG,SAAQz4B,EAAjB+C,GAAmC,GAAVmgJ,GAAUngJ,EAAVmgJ,OACxB,OAAKA,GAAQnjJ,MAAMhC,OAIJylJ,WAAAzmJ,QAASupB,MAAM48H,EAAQnjJ,MAAMhC,QAAU,IACxCgC,MAAM6I,MAAQwvD,aAJpBp4D,wDAPT,IAAA4kJ,eAAA3nJ,QAAA,iBACA6mJ,UAAA7mJ,QAAA,mEAEMm7D,aAAe,0BAWN,EAAAwsF,cAAAmyB,cAAa,2BAA4Bt+I,QAAS2/B;;qFCDjE,QAASokH,kBAAiBx8K,EAAO0nC,EAAjC3kC,GAA6C,GAARwoJ,GAAQxoJ,EAARwoJ,KACpC,OAAIA,KAAUvrJ,EAAMA,EAAMxD,OAAS,GAC3BwD,KAGR1E,QAAA,EAAA43K,oBAAAn2K,SAAWiD,IAAOurJ,IAGnB,QAAS8B,eAAcrtJ,EAAOsH,GAC7B,OAAQA,EAAO47I,sUAtBhBoH,wBAAArtJ,QAAA,gHACAw/K,aAAAx/K,QAAA,8EAEMm7D,gBACAkqE,cAAgB,SAEhBo6C,eAAgB,EAAAxyB,yBAAAntJ,UAAA,EAAAotJ,iBAAAptJ,UACrBi6K,2BAA4BwF,kBADPG,cAAA5/K,QAENswJ,gBACZj1F,aAAAA,aAAckqE,aAAAA,+BAEHo6C;;mECXf,IAAA93B,eAAA3nJ,QAAA,iBAEMm7D,aAAe,QAEfs+G,sBAAwB,SAAChvI,EAAD3kC,GAC7B,MAD+CA,GAAbmgJ,QACnBnjJ,MAAMwrJ,OAASnzF,+BAGhB,EAAAwsF,cAAAc,gBACdsxB,2BAA4BN,uBAC1Bt+G;;qFCGH,QAASwkH,gBAAe58K,EAAxB+C,GAA0C,GAAVmgJ,GAAUngJ,EAAVmgJ,QACzBpnJ,GAAQk8G,MAAOkrC,EAAQlrC,MAAOzD,OAAQ2uC,EAAQ3uC,OACpD,QAAK,EAAA2vC,QAAAkoB,SAAQtwK,EAAMkE,GAGZA,EAFClE,wLAhBTooJ,QAAAjnJ,QAAA,UACA2nJ,cAAA3nJ,QAAA,iBACAsyK,SAAAtyK,QAAA,cAEMm7D,cACLm8C,OAAQ,EACRyD,MAAO,oBAGO,EAAA4sC,cAAAc,gBAAA,EAAAyE,iBAAAptJ,YAAAwyK,SAAAroB,aACE01B,gBACdxkH;;qFCTH,QAASykH,kBAAiBxmK,EAAGC,GAC5B,MAAQD,GAAEosH,QAAUnsH,EAAEmsH,MACrBpsH,EAAE5X,YAAYq+K,cAAcxmK,EAAE7X,aAC9B4X,EAAEosH,MAAQnsH,EAAEmsH,MAGd,QAASs6C,mBAAkBvvB,GAE1B,MAAO,UAAA8I,GACN,GAAM0mB,GAAS1mB,EAAOvoI,GAAG5L,MAAM,KACzBnkB,EAAMg/K,EAAOA,EAAOxgL,OAAS,GAE7BygL,GACLx6C,OAAQ,EACRhkI,YAAaT,EACbyvJ,KAAM,SACN0V,WAAY,eAGP+Z,EAAiB1vB,EAAU8I,EAAOvoI,GAExC,QAAO,EAAAm2H,QAAAtmJ,WAEN04J,EACA2mB,EACAC,IAKH,QAASC,sBACR,MAAO,UAAA34K,GAAA,OAAA,EAAAg3G,UAAAz+G,YACHyH,GACH/F,YAAa+F,EAAQywG,SAASx2G,aAAe+F,EAAQywG,SAAS18F,QAIzD,QAAS6iK,aAAYtrJ,EAAM09H,GACjC,OAAO,EAAAwQ,SAAAjhK,SAAc+yB,GAAMpjB,OAAO,SAAC0wK,EAAM1gL,GACxC,GAAMwhK,GAAsB,YAAdxhK,EAAKkM,MAAsBlM,KACzC,UAAApB,QAAA,EAAA43K,oBAAAn2K,SAAWqgL,GAASlf,GAApB,EAAAgV,oBAAAn2K,SAA8Bq+K,YAAY1+K,EAAKyD,aAAgBqtJ,UAIlD,QAAS6vB,sBAAqBvtJ,EAAM09H,GAWlD,OACCwV,SAXe,EAAAhF,SAAAjhK,SAAc+yB,GAC5BjiB,OAAO,SAAAnR,GAAA,MAAsB,WAAdA,EAAKkM,OACpBlD,IAAIq3K,kBAAkBvvB,IACtB9wI,KAAKmgK,kBASNtvE,UAPgB,EAAAywD,SAAAjhK,SAAc+yB,GAC7BjiB,OAAO,SAAAnR,GAAA,MAAsB,YAAdA,EAAKkM,OACpBlD,IAAIy3K,mBAAmB3vB,IACvB9wI,KAAKmgK,4ZAhBQzB,YAAAA,4BAOQiC,oBA9CxB,IAAAn5B,SAAAjnJ,QAAA;;qFCEe,QAASqgL,mBAAyB,IAAA,GAAAhxK,GAAA3Q,UAAAa,OAAN+P,EAAMhR,MAAA+Q,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAND,EAAMC,GAAA7Q,UAAA6Q,EAChD,IAAMgqG,GAAWjqG,EAAKG,OAAO,SAACs4I,EAAU9lI,GACvC,GAAMg/I,GAAQh/I,EAAIojH,gBAClB,UAAAhnI,QAAA,EAAA43K,oBAAAn2K,SAAWioJ,IAAX,EAAAkuB,oBAAAn2K,SAAwBmhK,SAGnBvY,EAAU,SAAC3lJ,EAAOsH,EAAQg7H,GAC/B,MAAO/1H,GAAKG,OAAO,SAAC1M,EAAOkf,GAC1B,MAAOA,GAAIlf,EAAOsH,GAAQ,EAAA48I,QAAAuB,MAAKnjB,EAAcpjH,EAAIojH,oBAC/CtiI,GAIJ,OADA2lJ,GAAQrjB,aAAe9rB,EAChBmvC,oNAbgB23B,eAFxB,IAAAp5B,SAAAjnJ,QAAA;;;YCUA,SAASsgL,OAAMhhD,EAAKihD,GACnB,GAAMlpE,IAA0B,IAAhBkpE,MAEf,EAAAt5B,QAAAE,UAAUo5B,EAAaC,eAExB,OAAOtkK,QAAOokK,MAAMhhD,EAAKjoB,0DAf1Br3G,QAAA,mBACA,IAAAinJ,SAAAjnJ,QAAA,0BAEesgL,KAEf,IAAME,iBACLnpE,SAAUrC,OAAQ,oBAClByrE,YAAa;;;;qFCJC,QAASC,iBAAgB16K,GAAsB,GAAZ+yD,GAAYr6D,UAAAa,OAAA,OAAAyE,KAAAtF,UAAA,GAAAA,UAAA,GAAL,IAClD6nE,EAASggF,WAAAzmJ,QAASupB,MAAMrjB,EAC9B,OAAOwgJ,QAAA1mJ,QAAKiqG,SAAYhxC,EAAjB,UAAgCwN,EAAOvgE,UAC5Ckf,MAAMshI,OAAA1mJ,QAAKsqG,KACXthF,KAAK,4EAJgB43J,eAHxB,IAAA95B,OAAA5mJ,QAAA,6CACA6mJ,UAAA7mJ,QAAA;;qFCDe,QAAS2gL,UAAS7vJ,EAAI4/H,GACpC,GAAI92C,GAAQ82C,EACNuP,EAAYnvI,EAAG5L,MAAM,KAFqB07J,GAAA,EAAAC,GAAA,EAAAC,MAAA98K,EAAA,KAIhD,IAAA,GAAA+8K,GAAAt8J,GAAA,EAAAZ,cAAA/jB,SAAuBmgK,KAAvB2gB,GAAAG,EAAAt8J,EAAA5lB,QAAAZ,MAAA2iL,GAAA,EAAkC,CAAA,GAAvBnyI,GAAuBsyI,EAAA3hL,KACjC,IAAIw6G,GAASnrE,IAAYmrE,GACxBA,EAAQA,EAAMnrE,OADf,CAKA,KAAImrE,GAASA,EAAM12G,UAAYurC,IAAYmrE,GAAM12G,UAKjD,MAAO,KAJN02G,GAAQA,EAAM12G,SAASurC,KAXuB,MAAAl0B,GAAAsmK,GAAA,EAAAC,EAAAvmK,EAAA,QAAA,KAAAqmK,GAAAn8J,EAAAu8J,QAAAv8J,EAAAu8J,SAAA,QAAA,GAAAH,EAAA,KAAAC,IAiBhD,MAAOlnE,8LAjBgB+mE;;YCExB,SAASM,QAAOr/J,EAAIte,GACnB,MAAO,UAAAuc,GAAA,MAAK+B,IAAG,EAAAqlI,QAAApwI,KAAIgJ,EAAGvc,2DAHvB,IAAA2jJ,SAAAjnJ,QAAA,0BAMeihL;;qFCFf,QAAS9xJ,KAAI/lB,GACZ,MAAO,UAAA3J,GAAA,OAAQ,EAAAwnJ,QAAAC,UAASznJ,EAAM2J,IAG/B,QAASk3H,KAAIl3H,GACZ,MAAO,UAAA3J,GAAA,MAAQA,GAAKylB,MAAM9b,GAAO5K,MAAM,EAAG,IAG3C,QAAS0iL,KAAIt/J,GACZ,MAAO,YAAA,OAAcA,EAAAA,UAAAA,GAAAA,YAGtB,QAASu/J,OAAM53J,GACd,GAAMrqB,GAAQqqB,EAAMhqB,OAAS,CAC7B,OAAqB,MAAjBgqB,EAAMrqB,GACFqqB,EAAM/qB,MAAM,EAAGU,GAEhBqqB,EAGD,QAASg3B,UAAoB,GAAbgmB,GAAa7nE,UAAAa,OAAA,OAAAyE,KAAAtF,UAAA,GAAAA,UAAA,MAC7BoE,GAAQ,EAAAglJ,UAAAhoJ,SAAeymE,EAAOzjE,WAClC2M,OAAO,SAACmF,EAAQooC,GAAT,SAAA3+C,QAAA,EAAA43K,oBAAAn2K,SAAuB8U,IAAQooC,EAAMl0B,KAAK,aAE7Cs4J,EAAY56B,OAAA1mJ,QAAKyqG,QAAQhkC,EAAOvgE,UAAY,IAE5Cu5D,EAAS6hH,EAAY56B,OAAA1mJ,QAAKuqG,QAAQ9jC,EAAOvgE,UAAYm7K,MAAM56G,EAAOvgE,UAClEw5D,EAAQ4hH,EAAY56B,OAAA1mJ,QAAKi1D,SAASwR,EAAOvgE,UAAY,EAE3D,QAAQu5D,GAADlhE,QAAA,EAAA43K,oBAAAn2K,SAAYgD,IAAO08D,IAAO5uD,OAAO45C,SAAS1hC,KAAK,KAGhD,QAASO,SAAoB,GAAdg4J,GAAc3iL,UAAAa,OAAA,OAAAyE,KAAAtF,UAAA,GAAAA,UAAA,GAAJ,GACzB6nE,EAASk1F,MAAA37J,QAAIupB,MAAMg4J,GACnBpyD,EAAM1oD,EAAOvgE,UAAY,EAe/B,QACCA,SAdgBipH,EAAI/pG,MAAM,KACzBtU,OAAOswK,IAAI/xJ,IAAI,QACfrG,KAAK,KAaNhmB,MAXamsH,EAAI/pG,MAAM,KACtBtU,OAAQue,IAAI,OACZ1mB,IAAI63H,IAAI,OACR7wH,OAAO,SAACs4I,EAAU/qG,GAAU,GAAAgrG,IAAA,EAAAC,gBAAAnoJ,SACPk9C,EADO,GACrBj8C,EADqBinJ,EAAA,GAChB5oJ,EADgB4oJ,EAAA,EAG5B,OADAD,GAAShnJ,GAAO3B,EACT2oJ,6aA1BMxnG,OAAAA,eAYAl3B,MAAAA,KApChB,IAAAu9H,OAAA5mJ,QAAA,6CACAu7J,KAAAv7J,QAAA,0CACAinJ,QAAAjnJ,QAAA,2BAyDgBqpB,MAAAA,MAAOk3B,OAAAA;;;oQChDvB,QAAS+gI,QACR,GAAMC,GAAQtuK,SAASnQ,MAAM,4BACvBm3G,EAAOhnG,SAASnQ,MAAM,sBACtB+vB,EAAO2uJ,QAAQD,EAIjB1uJ,GAAK4uJ,gBAAkBx6K,SAASjB,UACnC00B,MAAMu/E,GAGPj4E,MAAK,EAAA0/I,SAAA5hL,SAAO+yB,EAAMonF,IAGnB,QAASj4E,MAAK2/I,GAAK,GACHzrI,GAAayrI,EAArBlrJ,MAAQyf,QAEfh6B,QAAOic,iBAAiB,UAAW,SAAAtY,GAElC,GAAMwhD,GAAWxhD,EAAEpa,SAAWoa,EAAEra,OAC1BulC,EAAOlrB,EAAEgT,KAAOhT,EAAEgT,KAAKwhB,QAAUx0B,EAAEw0B,OAErCgtB,IAAqB,KAATt2B,GACfmL,EAASs1G,QAAQhC,iBAGdnoF,GAAqB,KAATt2B,GACfmL,EAASs1G,QAAQvC,qBAGd5nF,GAAqB,KAATt2B,GACfmL,EAASs1G,QAAQ/B,oBAGdpoF,GAAqB,KAATt2B,GACfmL,EAASs1G,QAAQtC,kBAGd7nF,GAAqB,KAATt2B,GACfmL,EAASs1G,QAAQ9B,cAGdroF,GAAqB,KAATt2B,GACfmL,EAASs1G,QAAQ7B,eAGdtoF,GAAqB,KAATt2B,GACfmL,EAASs1G,QAAQ3B,iBAGdxoF,GAAqB,KAATt2B,GACfmL,EAASs1G,QAAQ5B,2BAGdvoF,GAAqB,KAATt2B,GACfmL,EAASs1G,QAAQ1B,gBAGdzoF,GAAqB,KAATt2B,GACfmL,EAASs1G,QAAQ3C,eAGdxnF,GAAqB,KAATt2B,GACfmL,EAASs1G,QAAQzB,qBAGd1oF,GAAqB,KAATt2B,GACfmL,EAASs1G,QAAQxB,eAGL,KAATj/G,GACHmL,EAASs1G,QAAQnE,uBAKpB,QAASm6B,SAAQD,GAChB,GAAMK,GAAeC,kBACfC,EAAaC,gBACbC,EAAY73J,KAAKd,MAAMk4J,EAAMtzH,YACnC,QAAO,EAAAg5F,QAAAE,UAAU66B,EAAWF,GAAa58H,OAAQ08H,IAGlD,QAASC,mBACR,OACC/J,kBAAmBmK,WAAAniL,QAASwb,KAC5By8J,qBAAsBkK,WAAAniL,QAASynB,QAC/B26I,aAAc+f,WAAAniL,QAAS4qG,GAAGpvF,KAC1B6mJ,gBAAiB8f,WAAAniL,QAAS4qG,GAAGnjF,SAI/B,QAASw6J,iBACR,OACC/uK,QACC+nG,MAAO7+F,OAAOuzI,WACdn4C,OAAQp7F,OAAOwzI,cAKlB,QAASh1H,OAAMtP,GACd,KAAOA,EAAG82J,WACT92J,EAAG82J,UAAUn2I,SAlHf,GAAAo2I,WAAAniL,QAAA,yDACAinJ,QAAAjnJ,QAAA,SAEAA,SAAA,cACA,IAAAoiL,SAAApiL,QAAA,kFACAsyK,SAAAtyK,QAAA,6BAAYwrJ,kDAEiBtvI,OAAtBjJ,iBAAAA,SAAUhM,iBAAAA,QAEjBq6K;;;;;wLCTAthL,SAAA,QACAA,QAAA,oBACA,IAAA4iH,eAAA5iH,QAAA,sEACAqiL,YAAAriL,QAAA,+DAEKkc,QAAO0O,UACX1O,OAAO0O,QAAP03J,aAAAxiL,SAGGijB,SAAAjjB,UACHY,OAAOC,OAAPkiH,eAAA/iH","file":"bundle.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})","module.exports={\"nbsp\":\" \",\"iexcl\":\"¡\",\"cent\":\"¢\",\"pound\":\"£\",\"curren\":\"¤\",\"yen\":\"¥\",\"brvbar\":\"¦\",\"sect\":\"§\",\"uml\":\"¨\",\"copy\":\"©\",\"ordf\":\"ª\",\"laquo\":\"«\",\"not\":\"¬\",\"shy\":\"­\",\"reg\":\"®\",\"macr\":\"¯\",\"deg\":\"°\",\"plusmn\":\"±\",\"sup2\":\"²\",\"sup3\":\"³\",\"acute\":\"´\",\"micro\":\"µ\",\"para\":\"¶\",\"middot\":\"·\",\"cedil\":\"¸\",\"sup1\":\"¹\",\"ordm\":\"º\",\"raquo\":\"»\",\"frac14\":\"¼\",\"frac12\":\"½\",\"frac34\":\"¾\",\"iquest\":\"¿\",\"Agrave\":\"À\",\"Aacute\":\"Á\",\"Acirc\":\"Â\",\"Atilde\":\"Ã\",\"Auml\":\"Ä\",\"Aring\":\"Å\",\"AElig\":\"Æ\",\"Ccedil\":\"Ç\",\"Egrave\":\"È\",\"Eacute\":\"É\",\"Ecirc\":\"Ê\",\"Euml\":\"Ë\",\"Igrave\":\"Ì\",\"Iacute\":\"Í\",\"Icirc\":\"Î\",\"Iuml\":\"Ï\",\"ETH\":\"Ð\",\"Ntilde\":\"Ñ\",\"Ograve\":\"Ò\",\"Oacute\":\"Ó\",\"Ocirc\":\"Ô\",\"Otilde\":\"Õ\",\"Ouml\":\"Ö\",\"times\":\"×\",\"Oslash\":\"Ø\",\"Ugrave\":\"Ù\",\"Uacute\":\"Ú\",\"Ucirc\":\"Û\",\"Uuml\":\"Ü\",\"Yacute\":\"Ý\",\"THORN\":\"Þ\",\"szlig\":\"ß\",\"agrave\":\"à\",\"aacute\":\"á\",\"acirc\":\"â\",\"atilde\":\"ã\",\"auml\":\"ä\",\"aring\":\"å\",\"aelig\":\"æ\",\"ccedil\":\"ç\",\"egrave\":\"è\",\"eacute\":\"é\",\"ecirc\":\"ê\",\"euml\":\"ë\",\"igrave\":\"ì\",\"iacute\":\"í\",\"icirc\":\"î\",\"iuml\":\"ï\",\"eth\":\"ð\",\"ntilde\":\"ñ\",\"ograve\":\"ò\",\"oacute\":\"ó\",\"ocirc\":\"ô\",\"otilde\":\"õ\",\"ouml\":\"ö\",\"divide\":\"÷\",\"oslash\":\"ø\",\"ugrave\":\"ù\",\"uacute\":\"ú\",\"ucirc\":\"û\",\"uuml\":\"ü\",\"yacute\":\"ý\",\"thorn\":\"þ\",\"yuml\":\"ÿ\",\"fnof\":\"ƒ\",\"Alpha\":\"Α\",\"Beta\":\"Β\",\"Gamma\":\"Γ\",\"Delta\":\"Δ\",\"Epsilon\":\"Ε\",\"Zeta\":\"Ζ\",\"Eta\":\"Η\",\"Theta\":\"Θ\",\"Iota\":\"Ι\",\"Kappa\":\"Κ\",\"Lambda\":\"Λ\",\"Mu\":\"Μ\",\"Nu\":\"Ν\",\"Xi\":\"Ξ\",\"Omicron\":\"Ο\",\"Pi\":\"Π\",\"Rho\":\"Ρ\",\"Sigma\":\"Σ\",\"Tau\":\"Τ\",\"Upsilon\":\"Υ\",\"Phi\":\"Φ\",\"Chi\":\"Χ\",\"Psi\":\"Ψ\",\"Omega\":\"Ω\",\"alpha\":\"α\",\"beta\":\"β\",\"gamma\":\"γ\",\"delta\":\"δ\",\"epsilon\":\"ε\",\"zeta\":\"ζ\",\"eta\":\"η\",\"theta\":\"θ\",\"iota\":\"ι\",\"kappa\":\"κ\",\"lambda\":\"λ\",\"mu\":\"μ\",\"nu\":\"ν\",\"xi\":\"ξ\",\"omicron\":\"ο\",\"pi\":\"π\",\"rho\":\"ρ\",\"sigmaf\":\"ς\",\"sigma\":\"σ\",\"tau\":\"τ\",\"upsilon\":\"υ\",\"phi\":\"φ\",\"chi\":\"χ\",\"psi\":\"ψ\",\"omega\":\"ω\",\"thetasym\":\"ϑ\",\"upsih\":\"ϒ\",\"piv\":\"ϖ\",\"bull\":\"•\",\"hellip\":\"…\",\"prime\":\"′\",\"Prime\":\"″\",\"oline\":\"‾\",\"frasl\":\"⁄\",\"weierp\":\"℘\",\"image\":\"ℑ\",\"real\":\"ℜ\",\"trade\":\"™\",\"alefsym\":\"ℵ\",\"larr\":\"←\",\"uarr\":\"↑\",\"rarr\":\"→\",\"darr\":\"↓\",\"harr\":\"↔\",\"crarr\":\"↵\",\"lArr\":\"⇐\",\"uArr\":\"⇑\",\"rArr\":\"⇒\",\"dArr\":\"⇓\",\"hArr\":\"⇔\",\"forall\":\"∀\",\"part\":\"∂\",\"exist\":\"∃\",\"empty\":\"∅\",\"nabla\":\"∇\",\"isin\":\"∈\",\"notin\":\"∉\",\"ni\":\"∋\",\"prod\":\"∏\",\"sum\":\"∑\",\"minus\":\"−\",\"lowast\":\"∗\",\"radic\":\"√\",\"prop\":\"∝\",\"infin\":\"∞\",\"ang\":\"∠\",\"and\":\"∧\",\"or\":\"∨\",\"cap\":\"∩\",\"cup\":\"∪\",\"int\":\"∫\",\"there4\":\"∴\",\"sim\":\"∼\",\"cong\":\"≅\",\"asymp\":\"≈\",\"ne\":\"≠\",\"equiv\":\"≡\",\"le\":\"≤\",\"ge\":\"≥\",\"sub\":\"⊂\",\"sup\":\"⊃\",\"nsub\":\"⊄\",\"sube\":\"⊆\",\"supe\":\"⊇\",\"oplus\":\"⊕\",\"otimes\":\"⊗\",\"perp\":\"⊥\",\"sdot\":\"⋅\",\"lceil\":\"⌈\",\"rceil\":\"⌉\",\"lfloor\":\"⌊\",\"rfloor\":\"⌋\",\"lang\":\"〈\",\"rang\":\"〉\",\"loz\":\"◊\",\"spades\":\"♠\",\"clubs\":\"♣\",\"hearts\":\"♥\",\"diams\":\"♦\",\"quot\":\"\\\"\",\"amp\":\"&\",\"lt\":\"<\",\"gt\":\">\",\"OElig\":\"Œ\",\"oelig\":\"œ\",\"Scaron\":\"Š\",\"scaron\":\"š\",\"Yuml\":\"Ÿ\",\"circ\":\"ˆ\",\"tilde\":\"˜\",\"ensp\":\" \",\"emsp\":\" \",\"thinsp\":\" \",\"zwnj\":\"‌\",\"zwj\":\"‍\",\"lrm\":\"‎\",\"rlm\":\"‏\",\"ndash\":\"–\",\"mdash\":\"—\",\"lsquo\":\"‘\",\"rsquo\":\"’\",\"sbquo\":\"‚\",\"ldquo\":\"“\",\"rdquo\":\"”\",\"bdquo\":\"„\",\"dagger\":\"†\",\"Dagger\":\"‡\",\"permil\":\"‰\",\"lsaquo\":\"‹\",\"rsaquo\":\"›\",\"euro\":\"€\"}","module.exports={\"AElig\":\"Æ\",\"AMP\":\"&\",\"Aacute\":\"Á\",\"Acirc\":\"Â\",\"Agrave\":\"À\",\"Aring\":\"Å\",\"Atilde\":\"Ã\",\"Auml\":\"Ä\",\"COPY\":\"©\",\"Ccedil\":\"Ç\",\"ETH\":\"Ð\",\"Eacute\":\"É\",\"Ecirc\":\"Ê\",\"Egrave\":\"È\",\"Euml\":\"Ë\",\"GT\":\">\",\"Iacute\":\"Í\",\"Icirc\":\"Î\",\"Igrave\":\"Ì\",\"Iuml\":\"Ï\",\"LT\":\"<\",\"Ntilde\":\"Ñ\",\"Oacute\":\"Ó\",\"Ocirc\":\"Ô\",\"Ograve\":\"Ò\",\"Oslash\":\"Ø\",\"Otilde\":\"Õ\",\"Ouml\":\"Ö\",\"QUOT\":\"\\\"\",\"REG\":\"®\",\"THORN\":\"Þ\",\"Uacute\":\"Ú\",\"Ucirc\":\"Û\",\"Ugrave\":\"Ù\",\"Uuml\":\"Ü\",\"Yacute\":\"Ý\",\"aacute\":\"á\",\"acirc\":\"â\",\"acute\":\"´\",\"aelig\":\"æ\",\"agrave\":\"à\",\"amp\":\"&\",\"aring\":\"å\",\"atilde\":\"ã\",\"auml\":\"ä\",\"brvbar\":\"¦\",\"ccedil\":\"ç\",\"cedil\":\"¸\",\"cent\":\"¢\",\"copy\":\"©\",\"curren\":\"¤\",\"deg\":\"°\",\"divide\":\"÷\",\"eacute\":\"é\",\"ecirc\":\"ê\",\"egrave\":\"è\",\"eth\":\"ð\",\"euml\":\"ë\",\"frac12\":\"½\",\"frac14\":\"¼\",\"frac34\":\"¾\",\"gt\":\">\",\"iacute\":\"í\",\"icirc\":\"î\",\"iexcl\":\"¡\",\"igrave\":\"ì\",\"iquest\":\"¿\",\"iuml\":\"ï\",\"laquo\":\"«\",\"lt\":\"<\",\"macr\":\"¯\",\"micro\":\"µ\",\"middot\":\"·\",\"nbsp\":\" \",\"not\":\"¬\",\"ntilde\":\"ñ\",\"oacute\":\"ó\",\"ocirc\":\"ô\",\"ograve\":\"ò\",\"ordf\":\"ª\",\"ordm\":\"º\",\"oslash\":\"ø\",\"otilde\":\"õ\",\"ouml\":\"ö\",\"para\":\"¶\",\"plusmn\":\"±\",\"pound\":\"£\",\"quot\":\"\\\"\",\"raquo\":\"»\",\"reg\":\"®\",\"sect\":\"§\",\"shy\":\"­\",\"sup1\":\"¹\",\"sup2\":\"²\",\"sup3\":\"³\",\"szlig\":\"ß\",\"thorn\":\"þ\",\"times\":\"×\",\"uacute\":\"ú\",\"ucirc\":\"û\",\"ugrave\":\"ù\",\"uml\":\"¨\",\"uuml\":\"ü\",\"yacute\":\"ý\",\"yen\":\"¥\",\"yuml\":\"ÿ\"}","module.exports={\"AEli\":\"Æ\",\"AElig\":\"Æ\",\"AM\":\"&\",\"AMP\":\"&\",\"Aacut\":\"Á\",\"Aacute\":\"Á\",\"Abreve\":\"Ă\",\"Acir\":\"Â\",\"Acirc\":\"Â\",\"Acy\":\"А\",\"Afr\":\"𝔄\",\"Agrav\":\"À\",\"Agrave\":\"À\",\"Alpha\":\"Α\",\"Amacr\":\"Ā\",\"And\":\"⩓\",\"Aogon\":\"Ą\",\"Aopf\":\"𝔸\",\"ApplyFunction\":\"⁡\",\"Arin\":\"Å\",\"Aring\":\"Å\",\"Ascr\":\"𝒜\",\"Assign\":\"≔\",\"Atild\":\"Ã\",\"Atilde\":\"Ã\",\"Aum\":\"Ä\",\"Auml\":\"Ä\",\"Backslash\":\"∖\",\"Barv\":\"⫧\",\"Barwed\":\"⌆\",\"Bcy\":\"Б\",\"Because\":\"∵\",\"Bernoullis\":\"ℬ\",\"Beta\":\"Β\",\"Bfr\":\"𝔅\",\"Bopf\":\"𝔹\",\"Breve\":\"˘\",\"Bscr\":\"ℬ\",\"Bumpeq\":\"≎\",\"CHcy\":\"Ч\",\"COP\":\"©\",\"COPY\":\"©\",\"Cacute\":\"Ć\",\"Cap\":\"⋒\",\"CapitalDifferentialD\":\"ⅅ\",\"Cayleys\":\"ℭ\",\"Ccaron\":\"Č\",\"Ccedi\":\"Ç\",\"Ccedil\":\"Ç\",\"Ccirc\":\"Ĉ\",\"Cconint\":\"∰\",\"Cdot\":\"Ċ\",\"Cedilla\":\"¸\",\"CenterDot\":\"·\",\"Cfr\":\"ℭ\",\"Chi\":\"Χ\",\"CircleDot\":\"⊙\",\"CircleMinus\":\"⊖\",\"CirclePlus\":\"⊕\",\"CircleTimes\":\"⊗\",\"ClockwiseContourIntegral\":\"∲\",\"CloseCurlyDoubleQuote\":\"”\",\"CloseCurlyQuote\":\"’\",\"Colon\":\"∷\",\"Colone\":\"⩴\",\"Congruent\":\"≡\",\"Conint\":\"∯\",\"ContourIntegral\":\"∮\",\"Copf\":\"ℂ\",\"Coproduct\":\"∐\",\"CounterClockwiseContourIntegral\":\"∳\",\"Cross\":\"⨯\",\"Cscr\":\"𝒞\",\"Cup\":\"⋓\",\"CupCap\":\"≍\",\"DD\":\"ⅅ\",\"DDotrahd\":\"⤑\",\"DJcy\":\"Ђ\",\"DScy\":\"Ѕ\",\"DZcy\":\"Џ\",\"Dagger\":\"‡\",\"Darr\":\"↡\",\"Dashv\":\"⫤\",\"Dcaron\":\"Ď\",\"Dcy\":\"Д\",\"Del\":\"∇\",\"Delta\":\"Δ\",\"Dfr\":\"𝔇\",\"DiacriticalAcute\":\"´\",\"DiacriticalDot\":\"˙\",\"DiacriticalDoubleAcute\":\"˝\",\"DiacriticalGrave\":\"`\",\"DiacriticalTilde\":\"˜\",\"Diamond\":\"⋄\",\"DifferentialD\":\"ⅆ\",\"Dopf\":\"𝔻\",\"Dot\":\"¨\",\"DotDot\":\"⃜\",\"DotEqual\":\"≐\",\"DoubleContourIntegral\":\"∯\",\"DoubleDot\":\"¨\",\"DoubleDownArrow\":\"⇓\",\"DoubleLeftArrow\":\"⇐\",\"DoubleLeftRightArrow\":\"⇔\",\"DoubleLeftTee\":\"⫤\",\"DoubleLongLeftArrow\":\"⟸\",\"DoubleLongLeftRightArrow\":\"⟺\",\"DoubleLongRightArrow\":\"⟹\",\"DoubleRightArrow\":\"⇒\",\"DoubleRightTee\":\"⊨\",\"DoubleUpArrow\":\"⇑\",\"DoubleUpDownArrow\":\"⇕\",\"DoubleVerticalBar\":\"∥\",\"DownArrow\":\"↓\",\"DownArrowBar\":\"⤓\",\"DownArrowUpArrow\":\"⇵\",\"DownBreve\":\"̑\",\"DownLeftRightVector\":\"⥐\",\"DownLeftTeeVector\":\"⥞\",\"DownLeftVector\":\"↽\",\"DownLeftVectorBar\":\"⥖\",\"DownRightTeeVector\":\"⥟\",\"DownRightVector\":\"⇁\",\"DownRightVectorBar\":\"⥗\",\"DownTee\":\"⊤\",\"DownTeeArrow\":\"↧\",\"Downarrow\":\"⇓\",\"Dscr\":\"𝒟\",\"Dstrok\":\"Đ\",\"ENG\":\"Ŋ\",\"ET\":\"Ð\",\"ETH\":\"Ð\",\"Eacut\":\"É\",\"Eacute\":\"É\",\"Ecaron\":\"Ě\",\"Ecir\":\"Ê\",\"Ecirc\":\"Ê\",\"Ecy\":\"Э\",\"Edot\":\"Ė\",\"Efr\":\"𝔈\",\"Egrav\":\"È\",\"Egrave\":\"È\",\"Element\":\"∈\",\"Emacr\":\"Ē\",\"EmptySmallSquare\":\"◻\",\"EmptyVerySmallSquare\":\"▫\",\"Eogon\":\"Ę\",\"Eopf\":\"𝔼\",\"Epsilon\":\"Ε\",\"Equal\":\"⩵\",\"EqualTilde\":\"≂\",\"Equilibrium\":\"⇌\",\"Escr\":\"ℰ\",\"Esim\":\"⩳\",\"Eta\":\"Η\",\"Eum\":\"Ë\",\"Euml\":\"Ë\",\"Exists\":\"∃\",\"ExponentialE\":\"ⅇ\",\"Fcy\":\"Ф\",\"Ffr\":\"𝔉\",\"FilledSmallSquare\":\"◼\",\"FilledVerySmallSquare\":\"▪\",\"Fopf\":\"𝔽\",\"ForAll\":\"∀\",\"Fouriertrf\":\"ℱ\",\"Fscr\":\"ℱ\",\"GJcy\":\"Ѓ\",\"G\":\">\",\"GT\":\">\",\"Gamma\":\"Γ\",\"Gammad\":\"Ϝ\",\"Gbreve\":\"Ğ\",\"Gcedil\":\"Ģ\",\"Gcirc\":\"Ĝ\",\"Gcy\":\"Г\",\"Gdot\":\"Ġ\",\"Gfr\":\"𝔊\",\"Gg\":\"⋙\",\"Gopf\":\"𝔾\",\"GreaterEqual\":\"≥\",\"GreaterEqualLess\":\"⋛\",\"GreaterFullEqual\":\"≧\",\"GreaterGreater\":\"⪢\",\"GreaterLess\":\"≷\",\"GreaterSlantEqual\":\"⩾\",\"GreaterTilde\":\"≳\",\"Gscr\":\"𝒢\",\"Gt\":\"≫\",\"HARDcy\":\"Ъ\",\"Hacek\":\"ˇ\",\"Hat\":\"^\",\"Hcirc\":\"Ĥ\",\"Hfr\":\"ℌ\",\"HilbertSpace\":\"ℋ\",\"Hopf\":\"ℍ\",\"HorizontalLine\":\"─\",\"Hscr\":\"ℋ\",\"Hstrok\":\"Ħ\",\"HumpDownHump\":\"≎\",\"HumpEqual\":\"≏\",\"IEcy\":\"Е\",\"IJlig\":\"Ĳ\",\"IOcy\":\"Ё\",\"Iacut\":\"Í\",\"Iacute\":\"Í\",\"Icir\":\"Î\",\"Icirc\":\"Î\",\"Icy\":\"И\",\"Idot\":\"İ\",\"Ifr\":\"ℑ\",\"Igrav\":\"Ì\",\"Igrave\":\"Ì\",\"Im\":\"ℑ\",\"Imacr\":\"Ī\",\"ImaginaryI\":\"ⅈ\",\"Implies\":\"⇒\",\"Int\":\"∬\",\"Integral\":\"∫\",\"Intersection\":\"⋂\",\"InvisibleComma\":\"⁣\",\"InvisibleTimes\":\"⁢\",\"Iogon\":\"Į\",\"Iopf\":\"𝕀\",\"Iota\":\"Ι\",\"Iscr\":\"ℐ\",\"Itilde\":\"Ĩ\",\"Iukcy\":\"І\",\"Ium\":\"Ï\",\"Iuml\":\"Ï\",\"Jcirc\":\"Ĵ\",\"Jcy\":\"Й\",\"Jfr\":\"𝔍\",\"Jopf\":\"𝕁\",\"Jscr\":\"𝒥\",\"Jsercy\":\"Ј\",\"Jukcy\":\"Є\",\"KHcy\":\"Х\",\"KJcy\":\"Ќ\",\"Kappa\":\"Κ\",\"Kcedil\":\"Ķ\",\"Kcy\":\"К\",\"Kfr\":\"𝔎\",\"Kopf\":\"𝕂\",\"Kscr\":\"𝒦\",\"LJcy\":\"Љ\",\"L\":\"<\",\"LT\":\"<\",\"Lacute\":\"Ĺ\",\"Lambda\":\"Λ\",\"Lang\":\"⟪\",\"Laplacetrf\":\"ℒ\",\"Larr\":\"↞\",\"Lcaron\":\"Ľ\",\"Lcedil\":\"Ļ\",\"Lcy\":\"Л\",\"LeftAngleBracket\":\"⟨\",\"LeftArrow\":\"←\",\"LeftArrowBar\":\"⇤\",\"LeftArrowRightArrow\":\"⇆\",\"LeftCeiling\":\"⌈\",\"LeftDoubleBracket\":\"⟦\",\"LeftDownTeeVector\":\"⥡\",\"LeftDownVector\":\"⇃\",\"LeftDownVectorBar\":\"⥙\",\"LeftFloor\":\"⌊\",\"LeftRightArrow\":\"↔\",\"LeftRightVector\":\"⥎\",\"LeftTee\":\"⊣\",\"LeftTeeArrow\":\"↤\",\"LeftTeeVector\":\"⥚\",\"LeftTriangle\":\"⊲\",\"LeftTriangleBar\":\"⧏\",\"LeftTriangleEqual\":\"⊴\",\"LeftUpDownVector\":\"⥑\",\"LeftUpTeeVector\":\"⥠\",\"LeftUpVector\":\"↿\",\"LeftUpVectorBar\":\"⥘\",\"LeftVector\":\"↼\",\"LeftVectorBar\":\"⥒\",\"Leftarrow\":\"⇐\",\"Leftrightarrow\":\"⇔\",\"LessEqualGreater\":\"⋚\",\"LessFullEqual\":\"≦\",\"LessGreater\":\"≶\",\"LessLess\":\"⪡\",\"LessSlantEqual\":\"⩽\",\"LessTilde\":\"≲\",\"Lfr\":\"𝔏\",\"Ll\":\"⋘\",\"Lleftarrow\":\"⇚\",\"Lmidot\":\"Ŀ\",\"LongLeftArrow\":\"⟵\",\"LongLeftRightArrow\":\"⟷\",\"LongRightArrow\":\"⟶\",\"Longleftarrow\":\"⟸\",\"Longleftrightarrow\":\"⟺\",\"Longrightarrow\":\"⟹\",\"Lopf\":\"𝕃\",\"LowerLeftArrow\":\"↙\",\"LowerRightArrow\":\"↘\",\"Lscr\":\"ℒ\",\"Lsh\":\"↰\",\"Lstrok\":\"Ł\",\"Lt\":\"≪\",\"Map\":\"⤅\",\"Mcy\":\"М\",\"MediumSpace\":\" \",\"Mellintrf\":\"ℳ\",\"Mfr\":\"𝔐\",\"MinusPlus\":\"∓\",\"Mopf\":\"𝕄\",\"Mscr\":\"ℳ\",\"Mu\":\"Μ\",\"NJcy\":\"Њ\",\"Nacute\":\"Ń\",\"Ncaron\":\"Ň\",\"Ncedil\":\"Ņ\",\"Ncy\":\"Н\",\"NegativeMediumSpace\":\"​\",\"NegativeThickSpace\":\"​\",\"NegativeThinSpace\":\"​\",\"NegativeVeryThinSpace\":\"​\",\"NestedGreaterGreater\":\"≫\",\"NestedLessLess\":\"≪\",\"NewLine\":\"\\n\",\"Nfr\":\"𝔑\",\"NoBreak\":\"⁠\",\"NonBreakingSpace\":\" \",\"Nopf\":\"ℕ\",\"Not\":\"⫬\",\"NotCongruent\":\"≢\",\"NotCupCap\":\"≭\",\"NotDoubleVerticalBar\":\"∦\",\"NotElement\":\"∉\",\"NotEqual\":\"≠\",\"NotEqualTilde\":\"≂̸\",\"NotExists\":\"∄\",\"NotGreater\":\"≯\",\"NotGreaterEqual\":\"≱\",\"NotGreaterFullEqual\":\"≧̸\",\"NotGreaterGreater\":\"≫̸\",\"NotGreaterLess\":\"≹\",\"NotGreaterSlantEqual\":\"⩾̸\",\"NotGreaterTilde\":\"≵\",\"NotHumpDownHump\":\"≎̸\",\"NotHumpEqual\":\"≏̸\",\"NotLeftTriangle\":\"⋪\",\"NotLeftTriangleBar\":\"⧏̸\",\"NotLeftTriangleEqual\":\"⋬\",\"NotLess\":\"≮\",\"NotLessEqual\":\"≰\",\"NotLessGreater\":\"≸\",\"NotLessLess\":\"≪̸\",\"NotLessSlantEqual\":\"⩽̸\",\"NotLessTilde\":\"≴\",\"NotNestedGreaterGreater\":\"⪢̸\",\"NotNestedLessLess\":\"⪡̸\",\"NotPrecedes\":\"⊀\",\"NotPrecedesEqual\":\"⪯̸\",\"NotPrecedesSlantEqual\":\"⋠\",\"NotReverseElement\":\"∌\",\"NotRightTriangle\":\"⋫\",\"NotRightTriangleBar\":\"⧐̸\",\"NotRightTriangleEqual\":\"⋭\",\"NotSquareSubset\":\"⊏̸\",\"NotSquareSubsetEqual\":\"⋢\",\"NotSquareSuperset\":\"⊐̸\",\"NotSquareSupersetEqual\":\"⋣\",\"NotSubset\":\"⊂⃒\",\"NotSubsetEqual\":\"⊈\",\"NotSucceeds\":\"⊁\",\"NotSucceedsEqual\":\"⪰̸\",\"NotSucceedsSlantEqual\":\"⋡\",\"NotSucceedsTilde\":\"≿̸\",\"NotSuperset\":\"⊃⃒\",\"NotSupersetEqual\":\"⊉\",\"NotTilde\":\"≁\",\"NotTildeEqual\":\"≄\",\"NotTildeFullEqual\":\"≇\",\"NotTildeTilde\":\"≉\",\"NotVerticalBar\":\"∤\",\"Nscr\":\"𝒩\",\"Ntild\":\"Ñ\",\"Ntilde\":\"Ñ\",\"Nu\":\"Ν\",\"OElig\":\"Œ\",\"Oacut\":\"Ó\",\"Oacute\":\"Ó\",\"Ocir\":\"Ô\",\"Ocirc\":\"Ô\",\"Ocy\":\"О\",\"Odblac\":\"Ő\",\"Ofr\":\"𝔒\",\"Ograv\":\"Ò\",\"Ograve\":\"Ò\",\"Omacr\":\"Ō\",\"Omega\":\"Ω\",\"Omicron\":\"Ο\",\"Oopf\":\"𝕆\",\"OpenCurlyDoubleQuote\":\"“\",\"OpenCurlyQuote\":\"‘\",\"Or\":\"⩔\",\"Oscr\":\"𝒪\",\"Oslas\":\"Ø\",\"Oslash\":\"Ø\",\"Otild\":\"Õ\",\"Otilde\":\"Õ\",\"Otimes\":\"⨷\",\"Oum\":\"Ö\",\"Ouml\":\"Ö\",\"OverBar\":\"‾\",\"OverBrace\":\"⏞\",\"OverBracket\":\"⎴\",\"OverParenthesis\":\"⏜\",\"PartialD\":\"∂\",\"Pcy\":\"П\",\"Pfr\":\"𝔓\",\"Phi\":\"Φ\",\"Pi\":\"Π\",\"PlusMinus\":\"±\",\"Poincareplane\":\"ℌ\",\"Popf\":\"ℙ\",\"Pr\":\"⪻\",\"Precedes\":\"≺\",\"PrecedesEqual\":\"⪯\",\"PrecedesSlantEqual\":\"≼\",\"PrecedesTilde\":\"≾\",\"Prime\":\"″\",\"Product\":\"∏\",\"Proportion\":\"∷\",\"Proportional\":\"∝\",\"Pscr\":\"𝒫\",\"Psi\":\"Ψ\",\"QUO\":\"\\\"\",\"QUOT\":\"\\\"\",\"Qfr\":\"𝔔\",\"Qopf\":\"ℚ\",\"Qscr\":\"𝒬\",\"RBarr\":\"⤐\",\"RE\":\"®\",\"REG\":\"®\",\"Racute\":\"Ŕ\",\"Rang\":\"⟫\",\"Rarr\":\"↠\",\"Rarrtl\":\"⤖\",\"Rcaron\":\"Ř\",\"Rcedil\":\"Ŗ\",\"Rcy\":\"Р\",\"Re\":\"ℜ\",\"ReverseElement\":\"∋\",\"ReverseEquilibrium\":\"⇋\",\"ReverseUpEquilibrium\":\"⥯\",\"Rfr\":\"ℜ\",\"Rho\":\"Ρ\",\"RightAngleBracket\":\"⟩\",\"RightArrow\":\"→\",\"RightArrowBar\":\"⇥\",\"RightArrowLeftArrow\":\"⇄\",\"RightCeiling\":\"⌉\",\"RightDoubleBracket\":\"⟧\",\"RightDownTeeVector\":\"⥝\",\"RightDownVector\":\"⇂\",\"RightDownVectorBar\":\"⥕\",\"RightFloor\":\"⌋\",\"RightTee\":\"⊢\",\"RightTeeArrow\":\"↦\",\"RightTeeVector\":\"⥛\",\"RightTriangle\":\"⊳\",\"RightTriangleBar\":\"⧐\",\"RightTriangleEqual\":\"⊵\",\"RightUpDownVector\":\"⥏\",\"RightUpTeeVector\":\"⥜\",\"RightUpVector\":\"↾\",\"RightUpVectorBar\":\"⥔\",\"RightVector\":\"⇀\",\"RightVectorBar\":\"⥓\",\"Rightarrow\":\"⇒\",\"Ropf\":\"ℝ\",\"RoundImplies\":\"⥰\",\"Rrightarrow\":\"⇛\",\"Rscr\":\"ℛ\",\"Rsh\":\"↱\",\"RuleDelayed\":\"⧴\",\"SHCHcy\":\"Щ\",\"SHcy\":\"Ш\",\"SOFTcy\":\"Ь\",\"Sacute\":\"Ś\",\"Sc\":\"⪼\",\"Scaron\":\"Š\",\"Scedil\":\"Ş\",\"Scirc\":\"Ŝ\",\"Scy\":\"С\",\"Sfr\":\"𝔖\",\"ShortDownArrow\":\"↓\",\"ShortLeftArrow\":\"←\",\"ShortRightArrow\":\"→\",\"ShortUpArrow\":\"↑\",\"Sigma\":\"Σ\",\"SmallCircle\":\"∘\",\"Sopf\":\"𝕊\",\"Sqrt\":\"√\",\"Square\":\"□\",\"SquareIntersection\":\"⊓\",\"SquareSubset\":\"⊏\",\"SquareSubsetEqual\":\"⊑\",\"SquareSuperset\":\"⊐\",\"SquareSupersetEqual\":\"⊒\",\"SquareUnion\":\"⊔\",\"Sscr\":\"𝒮\",\"Star\":\"⋆\",\"Sub\":\"⋐\",\"Subset\":\"⋐\",\"SubsetEqual\":\"⊆\",\"Succeeds\":\"≻\",\"SucceedsEqual\":\"⪰\",\"SucceedsSlantEqual\":\"≽\",\"SucceedsTilde\":\"≿\",\"SuchThat\":\"∋\",\"Sum\":\"∑\",\"Sup\":\"⋑\",\"Superset\":\"⊃\",\"SupersetEqual\":\"⊇\",\"Supset\":\"⋑\",\"THOR\":\"Þ\",\"THORN\":\"Þ\",\"TRADE\":\"™\",\"TSHcy\":\"Ћ\",\"TScy\":\"Ц\",\"Tab\":\"\\t\",\"Tau\":\"Τ\",\"Tcaron\":\"Ť\",\"Tcedil\":\"Ţ\",\"Tcy\":\"Т\",\"Tfr\":\"𝔗\",\"Therefore\":\"∴\",\"Theta\":\"Θ\",\"ThickSpace\":\"  \",\"ThinSpace\":\" \",\"Tilde\":\"∼\",\"TildeEqual\":\"≃\",\"TildeFullEqual\":\"≅\",\"TildeTilde\":\"≈\",\"Topf\":\"𝕋\",\"TripleDot\":\"⃛\",\"Tscr\":\"𝒯\",\"Tstrok\":\"Ŧ\",\"Uacut\":\"Ú\",\"Uacute\":\"Ú\",\"Uarr\":\"↟\",\"Uarrocir\":\"⥉\",\"Ubrcy\":\"Ў\",\"Ubreve\":\"Ŭ\",\"Ucir\":\"Û\",\"Ucirc\":\"Û\",\"Ucy\":\"У\",\"Udblac\":\"Ű\",\"Ufr\":\"𝔘\",\"Ugrav\":\"Ù\",\"Ugrave\":\"Ù\",\"Umacr\":\"Ū\",\"UnderBar\":\"_\",\"UnderBrace\":\"⏟\",\"UnderBracket\":\"⎵\",\"UnderParenthesis\":\"⏝\",\"Union\":\"⋃\",\"UnionPlus\":\"⊎\",\"Uogon\":\"Ų\",\"Uopf\":\"𝕌\",\"UpArrow\":\"↑\",\"UpArrowBar\":\"⤒\",\"UpArrowDownArrow\":\"⇅\",\"UpDownArrow\":\"↕\",\"UpEquilibrium\":\"⥮\",\"UpTee\":\"⊥\",\"UpTeeArrow\":\"↥\",\"Uparrow\":\"⇑\",\"Updownarrow\":\"⇕\",\"UpperLeftArrow\":\"↖\",\"UpperRightArrow\":\"↗\",\"Upsi\":\"ϒ\",\"Upsilon\":\"Υ\",\"Uring\":\"Ů\",\"Uscr\":\"𝒰\",\"Utilde\":\"Ũ\",\"Uum\":\"Ü\",\"Uuml\":\"Ü\",\"VDash\":\"⊫\",\"Vbar\":\"⫫\",\"Vcy\":\"В\",\"Vdash\":\"⊩\",\"Vdashl\":\"⫦\",\"Vee\":\"⋁\",\"Verbar\":\"‖\",\"Vert\":\"‖\",\"VerticalBar\":\"∣\",\"VerticalLine\":\"|\",\"VerticalSeparator\":\"❘\",\"VerticalTilde\":\"≀\",\"VeryThinSpace\":\" \",\"Vfr\":\"𝔙\",\"Vopf\":\"𝕍\",\"Vscr\":\"𝒱\",\"Vvdash\":\"⊪\",\"Wcirc\":\"Ŵ\",\"Wedge\":\"⋀\",\"Wfr\":\"𝔚\",\"Wopf\":\"𝕎\",\"Wscr\":\"𝒲\",\"Xfr\":\"𝔛\",\"Xi\":\"Ξ\",\"Xopf\":\"𝕏\",\"Xscr\":\"𝒳\",\"YAcy\":\"Я\",\"YIcy\":\"Ї\",\"YUcy\":\"Ю\",\"Yacut\":\"Ý\",\"Yacute\":\"Ý\",\"Ycirc\":\"Ŷ\",\"Ycy\":\"Ы\",\"Yfr\":\"𝔜\",\"Yopf\":\"𝕐\",\"Yscr\":\"𝒴\",\"Yuml\":\"Ÿ\",\"ZHcy\":\"Ж\",\"Zacute\":\"Ź\",\"Zcaron\":\"Ž\",\"Zcy\":\"З\",\"Zdot\":\"Ż\",\"ZeroWidthSpace\":\"​\",\"Zeta\":\"Ζ\",\"Zfr\":\"ℨ\",\"Zopf\":\"ℤ\",\"Zscr\":\"𝒵\",\"aacut\":\"á\",\"aacute\":\"á\",\"abreve\":\"ă\",\"ac\":\"∾\",\"acE\":\"∾̳\",\"acd\":\"∿\",\"acir\":\"â\",\"acirc\":\"â\",\"acut\":\"´\",\"acute\":\"´\",\"acy\":\"а\",\"aeli\":\"æ\",\"aelig\":\"æ\",\"af\":\"⁡\",\"afr\":\"𝔞\",\"agrav\":\"à\",\"agrave\":\"à\",\"alefsym\":\"ℵ\",\"aleph\":\"ℵ\",\"alpha\":\"α\",\"amacr\":\"ā\",\"amalg\":\"⨿\",\"am\":\"&\",\"amp\":\"&\",\"and\":\"∧\",\"andand\":\"⩕\",\"andd\":\"⩜\",\"andslope\":\"⩘\",\"andv\":\"⩚\",\"ang\":\"∠\",\"ange\":\"⦤\",\"angle\":\"∠\",\"angmsd\":\"∡\",\"angmsdaa\":\"⦨\",\"angmsdab\":\"⦩\",\"angmsdac\":\"⦪\",\"angmsdad\":\"⦫\",\"angmsdae\":\"⦬\",\"angmsdaf\":\"⦭\",\"angmsdag\":\"⦮\",\"angmsdah\":\"⦯\",\"angrt\":\"∟\",\"angrtvb\":\"⊾\",\"angrtvbd\":\"⦝\",\"angsph\":\"∢\",\"angst\":\"Å\",\"angzarr\":\"⍼\",\"aogon\":\"ą\",\"aopf\":\"𝕒\",\"ap\":\"≈\",\"apE\":\"⩰\",\"apacir\":\"⩯\",\"ape\":\"≊\",\"apid\":\"≋\",\"apos\":\"'\",\"approx\":\"≈\",\"approxeq\":\"≊\",\"arin\":\"å\",\"aring\":\"å\",\"ascr\":\"𝒶\",\"ast\":\"*\",\"asymp\":\"≈\",\"asympeq\":\"≍\",\"atild\":\"ã\",\"atilde\":\"ã\",\"aum\":\"ä\",\"auml\":\"ä\",\"awconint\":\"∳\",\"awint\":\"⨑\",\"bNot\":\"⫭\",\"backcong\":\"≌\",\"backepsilon\":\"϶\",\"backprime\":\"‵\",\"backsim\":\"∽\",\"backsimeq\":\"⋍\",\"barvee\":\"⊽\",\"barwed\":\"⌅\",\"barwedge\":\"⌅\",\"bbrk\":\"⎵\",\"bbrktbrk\":\"⎶\",\"bcong\":\"≌\",\"bcy\":\"б\",\"bdquo\":\"„\",\"becaus\":\"∵\",\"because\":\"∵\",\"bemptyv\":\"⦰\",\"bepsi\":\"϶\",\"bernou\":\"ℬ\",\"beta\":\"β\",\"beth\":\"ℶ\",\"between\":\"≬\",\"bfr\":\"𝔟\",\"bigcap\":\"⋂\",\"bigcirc\":\"◯\",\"bigcup\":\"⋃\",\"bigodot\":\"⨀\",\"bigoplus\":\"⨁\",\"bigotimes\":\"⨂\",\"bigsqcup\":\"⨆\",\"bigstar\":\"★\",\"bigtriangledown\":\"▽\",\"bigtriangleup\":\"△\",\"biguplus\":\"⨄\",\"bigvee\":\"⋁\",\"bigwedge\":\"⋀\",\"bkarow\":\"⤍\",\"blacklozenge\":\"⧫\",\"blacksquare\":\"▪\",\"blacktriangle\":\"▴\",\"blacktriangledown\":\"▾\",\"blacktriangleleft\":\"◂\",\"blacktriangleright\":\"▸\",\"blank\":\"␣\",\"blk12\":\"▒\",\"blk14\":\"░\",\"blk34\":\"▓\",\"block\":\"█\",\"bne\":\"=⃥\",\"bnequiv\":\"≡⃥\",\"bnot\":\"⌐\",\"bopf\":\"𝕓\",\"bot\":\"⊥\",\"bottom\":\"⊥\",\"bowtie\":\"⋈\",\"boxDL\":\"╗\",\"boxDR\":\"╔\",\"boxDl\":\"╖\",\"boxDr\":\"╓\",\"boxH\":\"═\",\"boxHD\":\"╦\",\"boxHU\":\"╩\",\"boxHd\":\"╤\",\"boxHu\":\"╧\",\"boxUL\":\"╝\",\"boxUR\":\"╚\",\"boxUl\":\"╜\",\"boxUr\":\"╙\",\"boxV\":\"║\",\"boxVH\":\"╬\",\"boxVL\":\"╣\",\"boxVR\":\"╠\",\"boxVh\":\"╫\",\"boxVl\":\"╢\",\"boxVr\":\"╟\",\"boxbox\":\"⧉\",\"boxdL\":\"╕\",\"boxdR\":\"╒\",\"boxdl\":\"┐\",\"boxdr\":\"┌\",\"boxh\":\"─\",\"boxhD\":\"╥\",\"boxhU\":\"╨\",\"boxhd\":\"┬\",\"boxhu\":\"┴\",\"boxminus\":\"⊟\",\"boxplus\":\"⊞\",\"boxtimes\":\"⊠\",\"boxuL\":\"╛\",\"boxuR\":\"╘\",\"boxul\":\"┘\",\"boxur\":\"└\",\"boxv\":\"│\",\"boxvH\":\"╪\",\"boxvL\":\"╡\",\"boxvR\":\"╞\",\"boxvh\":\"┼\",\"boxvl\":\"┤\",\"boxvr\":\"├\",\"bprime\":\"‵\",\"breve\":\"˘\",\"brvba\":\"¦\",\"brvbar\":\"¦\",\"bscr\":\"𝒷\",\"bsemi\":\"⁏\",\"bsim\":\"∽\",\"bsime\":\"⋍\",\"bsol\":\"\\\\\",\"bsolb\":\"⧅\",\"bsolhsub\":\"⟈\",\"bull\":\"•\",\"bullet\":\"•\",\"bump\":\"≎\",\"bumpE\":\"⪮\",\"bumpe\":\"≏\",\"bumpeq\":\"≏\",\"cacute\":\"ć\",\"cap\":\"∩\",\"capand\":\"⩄\",\"capbrcup\":\"⩉\",\"capcap\":\"⩋\",\"capcup\":\"⩇\",\"capdot\":\"⩀\",\"caps\":\"∩︀\",\"caret\":\"⁁\",\"caron\":\"ˇ\",\"ccaps\":\"⩍\",\"ccaron\":\"č\",\"ccedi\":\"ç\",\"ccedil\":\"ç\",\"ccirc\":\"ĉ\",\"ccups\":\"⩌\",\"ccupssm\":\"⩐\",\"cdot\":\"ċ\",\"cedi\":\"¸\",\"cedil\":\"¸\",\"cemptyv\":\"⦲\",\"cen\":\"¢\",\"cent\":\"¢\",\"centerdot\":\"·\",\"cfr\":\"𝔠\",\"chcy\":\"ч\",\"check\":\"✓\",\"checkmark\":\"✓\",\"chi\":\"χ\",\"cir\":\"○\",\"cirE\":\"⧃\",\"circ\":\"ˆ\",\"circeq\":\"≗\",\"circlearrowleft\":\"↺\",\"circlearrowright\":\"↻\",\"circledR\":\"®\",\"circledS\":\"Ⓢ\",\"circledast\":\"⊛\",\"circledcirc\":\"⊚\",\"circleddash\":\"⊝\",\"cire\":\"≗\",\"cirfnint\":\"⨐\",\"cirmid\":\"⫯\",\"cirscir\":\"⧂\",\"clubs\":\"♣\",\"clubsuit\":\"♣\",\"colon\":\":\",\"colone\":\"≔\",\"coloneq\":\"≔\",\"comma\":\",\",\"commat\":\"@\",\"comp\":\"∁\",\"compfn\":\"∘\",\"complement\":\"∁\",\"complexes\":\"ℂ\",\"cong\":\"≅\",\"congdot\":\"⩭\",\"conint\":\"∮\",\"copf\":\"𝕔\",\"coprod\":\"∐\",\"cop\":\"©\",\"copy\":\"©\",\"copysr\":\"℗\",\"crarr\":\"↵\",\"cross\":\"✗\",\"cscr\":\"𝒸\",\"csub\":\"⫏\",\"csube\":\"⫑\",\"csup\":\"⫐\",\"csupe\":\"⫒\",\"ctdot\":\"⋯\",\"cudarrl\":\"⤸\",\"cudarrr\":\"⤵\",\"cuepr\":\"⋞\",\"cuesc\":\"⋟\",\"cularr\":\"↶\",\"cularrp\":\"⤽\",\"cup\":\"∪\",\"cupbrcap\":\"⩈\",\"cupcap\":\"⩆\",\"cupcup\":\"⩊\",\"cupdot\":\"⊍\",\"cupor\":\"⩅\",\"cups\":\"∪︀\",\"curarr\":\"↷\",\"curarrm\":\"⤼\",\"curlyeqprec\":\"⋞\",\"curlyeqsucc\":\"⋟\",\"curlyvee\":\"⋎\",\"curlywedge\":\"⋏\",\"curre\":\"¤\",\"curren\":\"¤\",\"curvearrowleft\":\"↶\",\"curvearrowright\":\"↷\",\"cuvee\":\"⋎\",\"cuwed\":\"⋏\",\"cwconint\":\"∲\",\"cwint\":\"∱\",\"cylcty\":\"⌭\",\"dArr\":\"⇓\",\"dHar\":\"⥥\",\"dagger\":\"†\",\"daleth\":\"ℸ\",\"darr\":\"↓\",\"dash\":\"‐\",\"dashv\":\"⊣\",\"dbkarow\":\"⤏\",\"dblac\":\"˝\",\"dcaron\":\"ď\",\"dcy\":\"д\",\"dd\":\"ⅆ\",\"ddagger\":\"‡\",\"ddarr\":\"⇊\",\"ddotseq\":\"⩷\",\"de\":\"°\",\"deg\":\"°\",\"delta\":\"δ\",\"demptyv\":\"⦱\",\"dfisht\":\"⥿\",\"dfr\":\"𝔡\",\"dharl\":\"⇃\",\"dharr\":\"⇂\",\"diam\":\"⋄\",\"diamond\":\"⋄\",\"diamondsuit\":\"♦\",\"diams\":\"♦\",\"die\":\"¨\",\"digamma\":\"ϝ\",\"disin\":\"⋲\",\"div\":\"÷\",\"divid\":\"÷\",\"divide\":\"÷\",\"divideontimes\":\"⋇\",\"divonx\":\"⋇\",\"djcy\":\"ђ\",\"dlcorn\":\"⌞\",\"dlcrop\":\"⌍\",\"dollar\":\"$\",\"dopf\":\"𝕕\",\"dot\":\"˙\",\"doteq\":\"≐\",\"doteqdot\":\"≑\",\"dotminus\":\"∸\",\"dotplus\":\"∔\",\"dotsquare\":\"⊡\",\"doublebarwedge\":\"⌆\",\"downarrow\":\"↓\",\"downdownarrows\":\"⇊\",\"downharpoonleft\":\"⇃\",\"downharpoonright\":\"⇂\",\"drbkarow\":\"⤐\",\"drcorn\":\"⌟\",\"drcrop\":\"⌌\",\"dscr\":\"𝒹\",\"dscy\":\"ѕ\",\"dsol\":\"⧶\",\"dstrok\":\"đ\",\"dtdot\":\"⋱\",\"dtri\":\"▿\",\"dtrif\":\"▾\",\"duarr\":\"⇵\",\"duhar\":\"⥯\",\"dwangle\":\"⦦\",\"dzcy\":\"џ\",\"dzigrarr\":\"⟿\",\"eDDot\":\"⩷\",\"eDot\":\"≑\",\"eacut\":\"é\",\"eacute\":\"é\",\"easter\":\"⩮\",\"ecaron\":\"ě\",\"ecir\":\"ê\",\"ecirc\":\"ê\",\"ecolon\":\"≕\",\"ecy\":\"э\",\"edot\":\"ė\",\"ee\":\"ⅇ\",\"efDot\":\"≒\",\"efr\":\"𝔢\",\"eg\":\"⪚\",\"egrav\":\"è\",\"egrave\":\"è\",\"egs\":\"⪖\",\"egsdot\":\"⪘\",\"el\":\"⪙\",\"elinters\":\"⏧\",\"ell\":\"ℓ\",\"els\":\"⪕\",\"elsdot\":\"⪗\",\"emacr\":\"ē\",\"empty\":\"∅\",\"emptyset\":\"∅\",\"emptyv\":\"∅\",\"emsp13\":\" \",\"emsp14\":\" \",\"emsp\":\" \",\"eng\":\"ŋ\",\"ensp\":\" \",\"eogon\":\"ę\",\"eopf\":\"𝕖\",\"epar\":\"⋕\",\"eparsl\":\"⧣\",\"eplus\":\"⩱\",\"epsi\":\"ε\",\"epsilon\":\"ε\",\"epsiv\":\"ϵ\",\"eqcirc\":\"≖\",\"eqcolon\":\"≕\",\"eqsim\":\"≂\",\"eqslantgtr\":\"⪖\",\"eqslantless\":\"⪕\",\"equals\":\"=\",\"equest\":\"≟\",\"equiv\":\"≡\",\"equivDD\":\"⩸\",\"eqvparsl\":\"⧥\",\"erDot\":\"≓\",\"erarr\":\"⥱\",\"escr\":\"ℯ\",\"esdot\":\"≐\",\"esim\":\"≂\",\"eta\":\"η\",\"et\":\"ð\",\"eth\":\"ð\",\"eum\":\"ë\",\"euml\":\"ë\",\"euro\":\"€\",\"excl\":\"!\",\"exist\":\"∃\",\"expectation\":\"ℰ\",\"exponentiale\":\"ⅇ\",\"fallingdotseq\":\"≒\",\"fcy\":\"ф\",\"female\":\"♀\",\"ffilig\":\"ﬃ\",\"fflig\":\"ﬀ\",\"ffllig\":\"ﬄ\",\"ffr\":\"𝔣\",\"filig\":\"ﬁ\",\"fjlig\":\"fj\",\"flat\":\"♭\",\"fllig\":\"ﬂ\",\"fltns\":\"▱\",\"fnof\":\"ƒ\",\"fopf\":\"𝕗\",\"forall\":\"∀\",\"fork\":\"⋔\",\"forkv\":\"⫙\",\"fpartint\":\"⨍\",\"frac1\":\"¼\",\"frac12\":\"½\",\"frac13\":\"⅓\",\"frac14\":\"¼\",\"frac15\":\"⅕\",\"frac16\":\"⅙\",\"frac18\":\"⅛\",\"frac23\":\"⅔\",\"frac25\":\"⅖\",\"frac3\":\"¾\",\"frac34\":\"¾\",\"frac35\":\"⅗\",\"frac38\":\"⅜\",\"frac45\":\"⅘\",\"frac56\":\"⅚\",\"frac58\":\"⅝\",\"frac78\":\"⅞\",\"frasl\":\"⁄\",\"frown\":\"⌢\",\"fscr\":\"𝒻\",\"gE\":\"≧\",\"gEl\":\"⪌\",\"gacute\":\"ǵ\",\"gamma\":\"γ\",\"gammad\":\"ϝ\",\"gap\":\"⪆\",\"gbreve\":\"ğ\",\"gcirc\":\"ĝ\",\"gcy\":\"г\",\"gdot\":\"ġ\",\"ge\":\"≥\",\"gel\":\"⋛\",\"geq\":\"≥\",\"geqq\":\"≧\",\"geqslant\":\"⩾\",\"ges\":\"⩾\",\"gescc\":\"⪩\",\"gesdot\":\"⪀\",\"gesdoto\":\"⪂\",\"gesdotol\":\"⪄\",\"gesl\":\"⋛︀\",\"gesles\":\"⪔\",\"gfr\":\"𝔤\",\"gg\":\"≫\",\"ggg\":\"⋙\",\"gimel\":\"ℷ\",\"gjcy\":\"ѓ\",\"gl\":\"≷\",\"glE\":\"⪒\",\"gla\":\"⪥\",\"glj\":\"⪤\",\"gnE\":\"≩\",\"gnap\":\"⪊\",\"gnapprox\":\"⪊\",\"gne\":\"⪈\",\"gneq\":\"⪈\",\"gneqq\":\"≩\",\"gnsim\":\"⋧\",\"gopf\":\"𝕘\",\"grave\":\"`\",\"gscr\":\"ℊ\",\"gsim\":\"≳\",\"gsime\":\"⪎\",\"gsiml\":\"⪐\",\"g\":\">\",\"gt\":\">\",\"gtcc\":\"⪧\",\"gtcir\":\"⩺\",\"gtdot\":\"⋗\",\"gtlPar\":\"⦕\",\"gtquest\":\"⩼\",\"gtrapprox\":\"⪆\",\"gtrarr\":\"⥸\",\"gtrdot\":\"⋗\",\"gtreqless\":\"⋛\",\"gtreqqless\":\"⪌\",\"gtrless\":\"≷\",\"gtrsim\":\"≳\",\"gvertneqq\":\"≩︀\",\"gvnE\":\"≩︀\",\"hArr\":\"⇔\",\"hairsp\":\" \",\"half\":\"½\",\"hamilt\":\"ℋ\",\"hardcy\":\"ъ\",\"harr\":\"↔\",\"harrcir\":\"⥈\",\"harrw\":\"↭\",\"hbar\":\"ℏ\",\"hcirc\":\"ĥ\",\"hearts\":\"♥\",\"heartsuit\":\"♥\",\"hellip\":\"…\",\"hercon\":\"⊹\",\"hfr\":\"𝔥\",\"hksearow\":\"⤥\",\"hkswarow\":\"⤦\",\"hoarr\":\"⇿\",\"homtht\":\"∻\",\"hookleftarrow\":\"↩\",\"hookrightarrow\":\"↪\",\"hopf\":\"𝕙\",\"horbar\":\"―\",\"hscr\":\"𝒽\",\"hslash\":\"ℏ\",\"hstrok\":\"ħ\",\"hybull\":\"⁃\",\"hyphen\":\"‐\",\"iacut\":\"í\",\"iacute\":\"í\",\"ic\":\"⁣\",\"icir\":\"î\",\"icirc\":\"î\",\"icy\":\"и\",\"iecy\":\"е\",\"iexc\":\"¡\",\"iexcl\":\"¡\",\"iff\":\"⇔\",\"ifr\":\"𝔦\",\"igrav\":\"ì\",\"igrave\":\"ì\",\"ii\":\"ⅈ\",\"iiiint\":\"⨌\",\"iiint\":\"∭\",\"iinfin\":\"⧜\",\"iiota\":\"℩\",\"ijlig\":\"ĳ\",\"imacr\":\"ī\",\"image\":\"ℑ\",\"imagline\":\"ℐ\",\"imagpart\":\"ℑ\",\"imath\":\"ı\",\"imof\":\"⊷\",\"imped\":\"Ƶ\",\"in\":\"∈\",\"incare\":\"℅\",\"infin\":\"∞\",\"infintie\":\"⧝\",\"inodot\":\"ı\",\"int\":\"∫\",\"intcal\":\"⊺\",\"integers\":\"ℤ\",\"intercal\":\"⊺\",\"intlarhk\":\"⨗\",\"intprod\":\"⨼\",\"iocy\":\"ё\",\"iogon\":\"į\",\"iopf\":\"𝕚\",\"iota\":\"ι\",\"iprod\":\"⨼\",\"iques\":\"¿\",\"iquest\":\"¿\",\"iscr\":\"𝒾\",\"isin\":\"∈\",\"isinE\":\"⋹\",\"isindot\":\"⋵\",\"isins\":\"⋴\",\"isinsv\":\"⋳\",\"isinv\":\"∈\",\"it\":\"⁢\",\"itilde\":\"ĩ\",\"iukcy\":\"і\",\"ium\":\"ï\",\"iuml\":\"ï\",\"jcirc\":\"ĵ\",\"jcy\":\"й\",\"jfr\":\"𝔧\",\"jmath\":\"ȷ\",\"jopf\":\"𝕛\",\"jscr\":\"𝒿\",\"jsercy\":\"ј\",\"jukcy\":\"є\",\"kappa\":\"κ\",\"kappav\":\"ϰ\",\"kcedil\":\"ķ\",\"kcy\":\"к\",\"kfr\":\"𝔨\",\"kgreen\":\"ĸ\",\"khcy\":\"х\",\"kjcy\":\"ќ\",\"kopf\":\"𝕜\",\"kscr\":\"𝓀\",\"lAarr\":\"⇚\",\"lArr\":\"⇐\",\"lAtail\":\"⤛\",\"lBarr\":\"⤎\",\"lE\":\"≦\",\"lEg\":\"⪋\",\"lHar\":\"⥢\",\"lacute\":\"ĺ\",\"laemptyv\":\"⦴\",\"lagran\":\"ℒ\",\"lambda\":\"λ\",\"lang\":\"⟨\",\"langd\":\"⦑\",\"langle\":\"⟨\",\"lap\":\"⪅\",\"laqu\":\"«\",\"laquo\":\"«\",\"larr\":\"←\",\"larrb\":\"⇤\",\"larrbfs\":\"⤟\",\"larrfs\":\"⤝\",\"larrhk\":\"↩\",\"larrlp\":\"↫\",\"larrpl\":\"⤹\",\"larrsim\":\"⥳\",\"larrtl\":\"↢\",\"lat\":\"⪫\",\"latail\":\"⤙\",\"late\":\"⪭\",\"lates\":\"⪭︀\",\"lbarr\":\"⤌\",\"lbbrk\":\"❲\",\"lbrace\":\"{\",\"lbrack\":\"[\",\"lbrke\":\"⦋\",\"lbrksld\":\"⦏\",\"lbrkslu\":\"⦍\",\"lcaron\":\"ľ\",\"lcedil\":\"ļ\",\"lceil\":\"⌈\",\"lcub\":\"{\",\"lcy\":\"л\",\"ldca\":\"⤶\",\"ldquo\":\"“\",\"ldquor\":\"„\",\"ldrdhar\":\"⥧\",\"ldrushar\":\"⥋\",\"ldsh\":\"↲\",\"le\":\"≤\",\"leftarrow\":\"←\",\"leftarrowtail\":\"↢\",\"leftharpoondown\":\"↽\",\"leftharpoonup\":\"↼\",\"leftleftarrows\":\"⇇\",\"leftrightarrow\":\"↔\",\"leftrightarrows\":\"⇆\",\"leftrightharpoons\":\"⇋\",\"leftrightsquigarrow\":\"↭\",\"leftthreetimes\":\"⋋\",\"leg\":\"⋚\",\"leq\":\"≤\",\"leqq\":\"≦\",\"leqslant\":\"⩽\",\"les\":\"⩽\",\"lescc\":\"⪨\",\"lesdot\":\"⩿\",\"lesdoto\":\"⪁\",\"lesdotor\":\"⪃\",\"lesg\":\"⋚︀\",\"lesges\":\"⪓\",\"lessapprox\":\"⪅\",\"lessdot\":\"⋖\",\"lesseqgtr\":\"⋚\",\"lesseqqgtr\":\"⪋\",\"lessgtr\":\"≶\",\"lesssim\":\"≲\",\"lfisht\":\"⥼\",\"lfloor\":\"⌊\",\"lfr\":\"𝔩\",\"lg\":\"≶\",\"lgE\":\"⪑\",\"lhard\":\"↽\",\"lharu\":\"↼\",\"lharul\":\"⥪\",\"lhblk\":\"▄\",\"ljcy\":\"љ\",\"ll\":\"≪\",\"llarr\":\"⇇\",\"llcorner\":\"⌞\",\"llhard\":\"⥫\",\"lltri\":\"◺\",\"lmidot\":\"ŀ\",\"lmoust\":\"⎰\",\"lmoustache\":\"⎰\",\"lnE\":\"≨\",\"lnap\":\"⪉\",\"lnapprox\":\"⪉\",\"lne\":\"⪇\",\"lneq\":\"⪇\",\"lneqq\":\"≨\",\"lnsim\":\"⋦\",\"loang\":\"⟬\",\"loarr\":\"⇽\",\"lobrk\":\"⟦\",\"longleftarrow\":\"⟵\",\"longleftrightarrow\":\"⟷\",\"longmapsto\":\"⟼\",\"longrightarrow\":\"⟶\",\"looparrowleft\":\"↫\",\"looparrowright\":\"↬\",\"lopar\":\"⦅\",\"lopf\":\"𝕝\",\"loplus\":\"⨭\",\"lotimes\":\"⨴\",\"lowast\":\"∗\",\"lowbar\":\"_\",\"loz\":\"◊\",\"lozenge\":\"◊\",\"lozf\":\"⧫\",\"lpar\":\"(\",\"lparlt\":\"⦓\",\"lrarr\":\"⇆\",\"lrcorner\":\"⌟\",\"lrhar\":\"⇋\",\"lrhard\":\"⥭\",\"lrm\":\"‎\",\"lrtri\":\"⊿\",\"lsaquo\":\"‹\",\"lscr\":\"𝓁\",\"lsh\":\"↰\",\"lsim\":\"≲\",\"lsime\":\"⪍\",\"lsimg\":\"⪏\",\"lsqb\":\"[\",\"lsquo\":\"‘\",\"lsquor\":\"‚\",\"lstrok\":\"ł\",\"l\":\"<\",\"lt\":\"<\",\"ltcc\":\"⪦\",\"ltcir\":\"⩹\",\"ltdot\":\"⋖\",\"lthree\":\"⋋\",\"ltimes\":\"⋉\",\"ltlarr\":\"⥶\",\"ltquest\":\"⩻\",\"ltrPar\":\"⦖\",\"ltri\":\"◃\",\"ltrie\":\"⊴\",\"ltrif\":\"◂\",\"lurdshar\":\"⥊\",\"luruhar\":\"⥦\",\"lvertneqq\":\"≨︀\",\"lvnE\":\"≨︀\",\"mDDot\":\"∺\",\"mac\":\"¯\",\"macr\":\"¯\",\"male\":\"♂\",\"malt\":\"✠\",\"maltese\":\"✠\",\"map\":\"↦\",\"mapsto\":\"↦\",\"mapstodown\":\"↧\",\"mapstoleft\":\"↤\",\"mapstoup\":\"↥\",\"marker\":\"▮\",\"mcomma\":\"⨩\",\"mcy\":\"м\",\"mdash\":\"—\",\"measuredangle\":\"∡\",\"mfr\":\"𝔪\",\"mho\":\"℧\",\"micr\":\"µ\",\"micro\":\"µ\",\"mid\":\"∣\",\"midast\":\"*\",\"midcir\":\"⫰\",\"middo\":\"·\",\"middot\":\"·\",\"minus\":\"−\",\"minusb\":\"⊟\",\"minusd\":\"∸\",\"minusdu\":\"⨪\",\"mlcp\":\"⫛\",\"mldr\":\"…\",\"mnplus\":\"∓\",\"models\":\"⊧\",\"mopf\":\"𝕞\",\"mp\":\"∓\",\"mscr\":\"𝓂\",\"mstpos\":\"∾\",\"mu\":\"μ\",\"multimap\":\"⊸\",\"mumap\":\"⊸\",\"nGg\":\"⋙̸\",\"nGt\":\"≫⃒\",\"nGtv\":\"≫̸\",\"nLeftarrow\":\"⇍\",\"nLeftrightarrow\":\"⇎\",\"nLl\":\"⋘̸\",\"nLt\":\"≪⃒\",\"nLtv\":\"≪̸\",\"nRightarrow\":\"⇏\",\"nVDash\":\"⊯\",\"nVdash\":\"⊮\",\"nabla\":\"∇\",\"nacute\":\"ń\",\"nang\":\"∠⃒\",\"nap\":\"≉\",\"napE\":\"⩰̸\",\"napid\":\"≋̸\",\"napos\":\"ŉ\",\"napprox\":\"≉\",\"natur\":\"♮\",\"natural\":\"♮\",\"naturals\":\"ℕ\",\"nbs\":\" \",\"nbsp\":\" \",\"nbump\":\"≎̸\",\"nbumpe\":\"≏̸\",\"ncap\":\"⩃\",\"ncaron\":\"ň\",\"ncedil\":\"ņ\",\"ncong\":\"≇\",\"ncongdot\":\"⩭̸\",\"ncup\":\"⩂\",\"ncy\":\"н\",\"ndash\":\"–\",\"ne\":\"≠\",\"neArr\":\"⇗\",\"nearhk\":\"⤤\",\"nearr\":\"↗\",\"nearrow\":\"↗\",\"nedot\":\"≐̸\",\"nequiv\":\"≢\",\"nesear\":\"⤨\",\"nesim\":\"≂̸\",\"nexist\":\"∄\",\"nexists\":\"∄\",\"nfr\":\"𝔫\",\"ngE\":\"≧̸\",\"nge\":\"≱\",\"ngeq\":\"≱\",\"ngeqq\":\"≧̸\",\"ngeqslant\":\"⩾̸\",\"nges\":\"⩾̸\",\"ngsim\":\"≵\",\"ngt\":\"≯\",\"ngtr\":\"≯\",\"nhArr\":\"⇎\",\"nharr\":\"↮\",\"nhpar\":\"⫲\",\"ni\":\"∋\",\"nis\":\"⋼\",\"nisd\":\"⋺\",\"niv\":\"∋\",\"njcy\":\"њ\",\"nlArr\":\"⇍\",\"nlE\":\"≦̸\",\"nlarr\":\"↚\",\"nldr\":\"‥\",\"nle\":\"≰\",\"nleftarrow\":\"↚\",\"nleftrightarrow\":\"↮\",\"nleq\":\"≰\",\"nleqq\":\"≦̸\",\"nleqslant\":\"⩽̸\",\"nles\":\"⩽̸\",\"nless\":\"≮\",\"nlsim\":\"≴\",\"nlt\":\"≮\",\"nltri\":\"⋪\",\"nltrie\":\"⋬\",\"nmid\":\"∤\",\"nopf\":\"𝕟\",\"no\":\"¬\",\"not\":\"¬\",\"notin\":\"∉\",\"notinE\":\"⋹̸\",\"notindot\":\"⋵̸\",\"notinva\":\"∉\",\"notinvb\":\"⋷\",\"notinvc\":\"⋶\",\"notni\":\"∌\",\"notniva\":\"∌\",\"notnivb\":\"⋾\",\"notnivc\":\"⋽\",\"npar\":\"∦\",\"nparallel\":\"∦\",\"nparsl\":\"⫽⃥\",\"npart\":\"∂̸\",\"npolint\":\"⨔\",\"npr\":\"⊀\",\"nprcue\":\"⋠\",\"npre\":\"⪯̸\",\"nprec\":\"⊀\",\"npreceq\":\"⪯̸\",\"nrArr\":\"⇏\",\"nrarr\":\"↛\",\"nrarrc\":\"⤳̸\",\"nrarrw\":\"↝̸\",\"nrightarrow\":\"↛\",\"nrtri\":\"⋫\",\"nrtrie\":\"⋭\",\"nsc\":\"⊁\",\"nsccue\":\"⋡\",\"nsce\":\"⪰̸\",\"nscr\":\"𝓃\",\"nshortmid\":\"∤\",\"nshortparallel\":\"∦\",\"nsim\":\"≁\",\"nsime\":\"≄\",\"nsimeq\":\"≄\",\"nsmid\":\"∤\",\"nspar\":\"∦\",\"nsqsube\":\"⋢\",\"nsqsupe\":\"⋣\",\"nsub\":\"⊄\",\"nsubE\":\"⫅̸\",\"nsube\":\"⊈\",\"nsubset\":\"⊂⃒\",\"nsubseteq\":\"⊈\",\"nsubseteqq\":\"⫅̸\",\"nsucc\":\"⊁\",\"nsucceq\":\"⪰̸\",\"nsup\":\"⊅\",\"nsupE\":\"⫆̸\",\"nsupe\":\"⊉\",\"nsupset\":\"⊃⃒\",\"nsupseteq\":\"⊉\",\"nsupseteqq\":\"⫆̸\",\"ntgl\":\"≹\",\"ntild\":\"ñ\",\"ntilde\":\"ñ\",\"ntlg\":\"≸\",\"ntriangleleft\":\"⋪\",\"ntrianglelefteq\":\"⋬\",\"ntriangleright\":\"⋫\",\"ntrianglerighteq\":\"⋭\",\"nu\":\"ν\",\"num\":\"#\",\"numero\":\"№\",\"numsp\":\" \",\"nvDash\":\"⊭\",\"nvHarr\":\"⤄\",\"nvap\":\"≍⃒\",\"nvdash\":\"⊬\",\"nvge\":\"≥⃒\",\"nvgt\":\">⃒\",\"nvinfin\":\"⧞\",\"nvlArr\":\"⤂\",\"nvle\":\"≤⃒\",\"nvlt\":\"<⃒\",\"nvltrie\":\"⊴⃒\",\"nvrArr\":\"⤃\",\"nvrtrie\":\"⊵⃒\",\"nvsim\":\"∼⃒\",\"nwArr\":\"⇖\",\"nwarhk\":\"⤣\",\"nwarr\":\"↖\",\"nwarrow\":\"↖\",\"nwnear\":\"⤧\",\"oS\":\"Ⓢ\",\"oacut\":\"ó\",\"oacute\":\"ó\",\"oast\":\"⊛\",\"ocir\":\"ô\",\"ocirc\":\"ô\",\"ocy\":\"о\",\"odash\":\"⊝\",\"odblac\":\"ő\",\"odiv\":\"⨸\",\"odot\":\"⊙\",\"odsold\":\"⦼\",\"oelig\":\"œ\",\"ofcir\":\"⦿\",\"ofr\":\"𝔬\",\"ogon\":\"˛\",\"ograv\":\"ò\",\"ograve\":\"ò\",\"ogt\":\"⧁\",\"ohbar\":\"⦵\",\"ohm\":\"Ω\",\"oint\":\"∮\",\"olarr\":\"↺\",\"olcir\":\"⦾\",\"olcross\":\"⦻\",\"oline\":\"‾\",\"olt\":\"⧀\",\"omacr\":\"ō\",\"omega\":\"ω\",\"omicron\":\"ο\",\"omid\":\"⦶\",\"ominus\":\"⊖\",\"oopf\":\"𝕠\",\"opar\":\"⦷\",\"operp\":\"⦹\",\"oplus\":\"⊕\",\"or\":\"∨\",\"orarr\":\"↻\",\"ord\":\"º\",\"order\":\"ℴ\",\"orderof\":\"ℴ\",\"ordf\":\"ª\",\"ordm\":\"º\",\"origof\":\"⊶\",\"oror\":\"⩖\",\"orslope\":\"⩗\",\"orv\":\"⩛\",\"oscr\":\"ℴ\",\"oslas\":\"ø\",\"oslash\":\"ø\",\"osol\":\"⊘\",\"otild\":\"õ\",\"otilde\":\"õ\",\"otimes\":\"⊗\",\"otimesas\":\"⨶\",\"oum\":\"ö\",\"ouml\":\"ö\",\"ovbar\":\"⌽\",\"par\":\"¶\",\"para\":\"¶\",\"parallel\":\"∥\",\"parsim\":\"⫳\",\"parsl\":\"⫽\",\"part\":\"∂\",\"pcy\":\"п\",\"percnt\":\"%\",\"period\":\".\",\"permil\":\"‰\",\"perp\":\"⊥\",\"pertenk\":\"‱\",\"pfr\":\"𝔭\",\"phi\":\"φ\",\"phiv\":\"ϕ\",\"phmmat\":\"ℳ\",\"phone\":\"☎\",\"pi\":\"π\",\"pitchfork\":\"⋔\",\"piv\":\"ϖ\",\"planck\":\"ℏ\",\"planckh\":\"ℎ\",\"plankv\":\"ℏ\",\"plus\":\"+\",\"plusacir\":\"⨣\",\"plusb\":\"⊞\",\"pluscir\":\"⨢\",\"plusdo\":\"∔\",\"plusdu\":\"⨥\",\"pluse\":\"⩲\",\"plusm\":\"±\",\"plusmn\":\"±\",\"plussim\":\"⨦\",\"plustwo\":\"⨧\",\"pm\":\"±\",\"pointint\":\"⨕\",\"popf\":\"𝕡\",\"poun\":\"£\",\"pound\":\"£\",\"pr\":\"≺\",\"prE\":\"⪳\",\"prap\":\"⪷\",\"prcue\":\"≼\",\"pre\":\"⪯\",\"prec\":\"≺\",\"precapprox\":\"⪷\",\"preccurlyeq\":\"≼\",\"preceq\":\"⪯\",\"precnapprox\":\"⪹\",\"precneqq\":\"⪵\",\"precnsim\":\"⋨\",\"precsim\":\"≾\",\"prime\":\"′\",\"primes\":\"ℙ\",\"prnE\":\"⪵\",\"prnap\":\"⪹\",\"prnsim\":\"⋨\",\"prod\":\"∏\",\"profalar\":\"⌮\",\"profline\":\"⌒\",\"profsurf\":\"⌓\",\"prop\":\"∝\",\"propto\":\"∝\",\"prsim\":\"≾\",\"prurel\":\"⊰\",\"pscr\":\"𝓅\",\"psi\":\"ψ\",\"puncsp\":\" \",\"qfr\":\"𝔮\",\"qint\":\"⨌\",\"qopf\":\"𝕢\",\"qprime\":\"⁗\",\"qscr\":\"𝓆\",\"quaternions\":\"ℍ\",\"quatint\":\"⨖\",\"quest\":\"?\",\"questeq\":\"≟\",\"quo\":\"\\\"\",\"quot\":\"\\\"\",\"rAarr\":\"⇛\",\"rArr\":\"⇒\",\"rAtail\":\"⤜\",\"rBarr\":\"⤏\",\"rHar\":\"⥤\",\"race\":\"∽̱\",\"racute\":\"ŕ\",\"radic\":\"√\",\"raemptyv\":\"⦳\",\"rang\":\"⟩\",\"rangd\":\"⦒\",\"range\":\"⦥\",\"rangle\":\"⟩\",\"raqu\":\"»\",\"raquo\":\"»\",\"rarr\":\"→\",\"rarrap\":\"⥵\",\"rarrb\":\"⇥\",\"rarrbfs\":\"⤠\",\"rarrc\":\"⤳\",\"rarrfs\":\"⤞\",\"rarrhk\":\"↪\",\"rarrlp\":\"↬\",\"rarrpl\":\"⥅\",\"rarrsim\":\"⥴\",\"rarrtl\":\"↣\",\"rarrw\":\"↝\",\"ratail\":\"⤚\",\"ratio\":\"∶\",\"rationals\":\"ℚ\",\"rbarr\":\"⤍\",\"rbbrk\":\"❳\",\"rbrace\":\"}\",\"rbrack\":\"]\",\"rbrke\":\"⦌\",\"rbrksld\":\"⦎\",\"rbrkslu\":\"⦐\",\"rcaron\":\"ř\",\"rcedil\":\"ŗ\",\"rceil\":\"⌉\",\"rcub\":\"}\",\"rcy\":\"р\",\"rdca\":\"⤷\",\"rdldhar\":\"⥩\",\"rdquo\":\"”\",\"rdquor\":\"”\",\"rdsh\":\"↳\",\"real\":\"ℜ\",\"realine\":\"ℛ\",\"realpart\":\"ℜ\",\"reals\":\"ℝ\",\"rect\":\"▭\",\"re\":\"®\",\"reg\":\"®\",\"rfisht\":\"⥽\",\"rfloor\":\"⌋\",\"rfr\":\"𝔯\",\"rhard\":\"⇁\",\"rharu\":\"⇀\",\"rharul\":\"⥬\",\"rho\":\"ρ\",\"rhov\":\"ϱ\",\"rightarrow\":\"→\",\"rightarrowtail\":\"↣\",\"rightharpoondown\":\"⇁\",\"rightharpoonup\":\"⇀\",\"rightleftarrows\":\"⇄\",\"rightleftharpoons\":\"⇌\",\"rightrightarrows\":\"⇉\",\"rightsquigarrow\":\"↝\",\"rightthreetimes\":\"⋌\",\"ring\":\"˚\",\"risingdotseq\":\"≓\",\"rlarr\":\"⇄\",\"rlhar\":\"⇌\",\"rlm\":\"‏\",\"rmoust\":\"⎱\",\"rmoustache\":\"⎱\",\"rnmid\":\"⫮\",\"roang\":\"⟭\",\"roarr\":\"⇾\",\"robrk\":\"⟧\",\"ropar\":\"⦆\",\"ropf\":\"𝕣\",\"roplus\":\"⨮\",\"rotimes\":\"⨵\",\"rpar\":\")\",\"rpargt\":\"⦔\",\"rppolint\":\"⨒\",\"rrarr\":\"⇉\",\"rsaquo\":\"›\",\"rscr\":\"𝓇\",\"rsh\":\"↱\",\"rsqb\":\"]\",\"rsquo\":\"’\",\"rsquor\":\"’\",\"rthree\":\"⋌\",\"rtimes\":\"⋊\",\"rtri\":\"▹\",\"rtrie\":\"⊵\",\"rtrif\":\"▸\",\"rtriltri\":\"⧎\",\"ruluhar\":\"⥨\",\"rx\":\"℞\",\"sacute\":\"ś\",\"sbquo\":\"‚\",\"sc\":\"≻\",\"scE\":\"⪴\",\"scap\":\"⪸\",\"scaron\":\"š\",\"sccue\":\"≽\",\"sce\":\"⪰\",\"scedil\":\"ş\",\"scirc\":\"ŝ\",\"scnE\":\"⪶\",\"scnap\":\"⪺\",\"scnsim\":\"⋩\",\"scpolint\":\"⨓\",\"scsim\":\"≿\",\"scy\":\"с\",\"sdot\":\"⋅\",\"sdotb\":\"⊡\",\"sdote\":\"⩦\",\"seArr\":\"⇘\",\"searhk\":\"⤥\",\"searr\":\"↘\",\"searrow\":\"↘\",\"sec\":\"§\",\"sect\":\"§\",\"semi\":\";\",\"seswar\":\"⤩\",\"setminus\":\"∖\",\"setmn\":\"∖\",\"sext\":\"✶\",\"sfr\":\"𝔰\",\"sfrown\":\"⌢\",\"sharp\":\"♯\",\"shchcy\":\"щ\",\"shcy\":\"ш\",\"shortmid\":\"∣\",\"shortparallel\":\"∥\",\"sh\":\"­\",\"shy\":\"­\",\"sigma\":\"σ\",\"sigmaf\":\"ς\",\"sigmav\":\"ς\",\"sim\":\"∼\",\"simdot\":\"⩪\",\"sime\":\"≃\",\"simeq\":\"≃\",\"simg\":\"⪞\",\"simgE\":\"⪠\",\"siml\":\"⪝\",\"simlE\":\"⪟\",\"simne\":\"≆\",\"simplus\":\"⨤\",\"simrarr\":\"⥲\",\"slarr\":\"←\",\"smallsetminus\":\"∖\",\"smashp\":\"⨳\",\"smeparsl\":\"⧤\",\"smid\":\"∣\",\"smile\":\"⌣\",\"smt\":\"⪪\",\"smte\":\"⪬\",\"smtes\":\"⪬︀\",\"softcy\":\"ь\",\"sol\":\"/\",\"solb\":\"⧄\",\"solbar\":\"⌿\",\"sopf\":\"𝕤\",\"spades\":\"♠\",\"spadesuit\":\"♠\",\"spar\":\"∥\",\"sqcap\":\"⊓\",\"sqcaps\":\"⊓︀\",\"sqcup\":\"⊔\",\"sqcups\":\"⊔︀\",\"sqsub\":\"⊏\",\"sqsube\":\"⊑\",\"sqsubset\":\"⊏\",\"sqsubseteq\":\"⊑\",\"sqsup\":\"⊐\",\"sqsupe\":\"⊒\",\"sqsupset\":\"⊐\",\"sqsupseteq\":\"⊒\",\"squ\":\"□\",\"square\":\"□\",\"squarf\":\"▪\",\"squf\":\"▪\",\"srarr\":\"→\",\"sscr\":\"𝓈\",\"ssetmn\":\"∖\",\"ssmile\":\"⌣\",\"sstarf\":\"⋆\",\"star\":\"☆\",\"starf\":\"★\",\"straightepsilon\":\"ϵ\",\"straightphi\":\"ϕ\",\"strns\":\"¯\",\"sub\":\"⊂\",\"subE\":\"⫅\",\"subdot\":\"⪽\",\"sube\":\"⊆\",\"subedot\":\"⫃\",\"submult\":\"⫁\",\"subnE\":\"⫋\",\"subne\":\"⊊\",\"subplus\":\"⪿\",\"subrarr\":\"⥹\",\"subset\":\"⊂\",\"subseteq\":\"⊆\",\"subseteqq\":\"⫅\",\"subsetneq\":\"⊊\",\"subsetneqq\":\"⫋\",\"subsim\":\"⫇\",\"subsub\":\"⫕\",\"subsup\":\"⫓\",\"succ\":\"≻\",\"succapprox\":\"⪸\",\"succcurlyeq\":\"≽\",\"succeq\":\"⪰\",\"succnapprox\":\"⪺\",\"succneqq\":\"⪶\",\"succnsim\":\"⋩\",\"succsim\":\"≿\",\"sum\":\"∑\",\"sung\":\"♪\",\"sup\":\"⊃\",\"sup1\":\"¹\",\"sup2\":\"²\",\"sup3\":\"³\",\"supE\":\"⫆\",\"supdot\":\"⪾\",\"supdsub\":\"⫘\",\"supe\":\"⊇\",\"supedot\":\"⫄\",\"suphsol\":\"⟉\",\"suphsub\":\"⫗\",\"suplarr\":\"⥻\",\"supmult\":\"⫂\",\"supnE\":\"⫌\",\"supne\":\"⊋\",\"supplus\":\"⫀\",\"supset\":\"⊃\",\"supseteq\":\"⊇\",\"supseteqq\":\"⫆\",\"supsetneq\":\"⊋\",\"supsetneqq\":\"⫌\",\"supsim\":\"⫈\",\"supsub\":\"⫔\",\"supsup\":\"⫖\",\"swArr\":\"⇙\",\"swarhk\":\"⤦\",\"swarr\":\"↙\",\"swarrow\":\"↙\",\"swnwar\":\"⤪\",\"szli\":\"ß\",\"szlig\":\"ß\",\"target\":\"⌖\",\"tau\":\"τ\",\"tbrk\":\"⎴\",\"tcaron\":\"ť\",\"tcedil\":\"ţ\",\"tcy\":\"т\",\"tdot\":\"⃛\",\"telrec\":\"⌕\",\"tfr\":\"𝔱\",\"there4\":\"∴\",\"therefore\":\"∴\",\"theta\":\"θ\",\"thetasym\":\"ϑ\",\"thetav\":\"ϑ\",\"thickapprox\":\"≈\",\"thicksim\":\"∼\",\"thinsp\":\" \",\"thkap\":\"≈\",\"thksim\":\"∼\",\"thor\":\"þ\",\"thorn\":\"þ\",\"tilde\":\"˜\",\"time\":\"×\",\"times\":\"×\",\"timesb\":\"⊠\",\"timesbar\":\"⨱\",\"timesd\":\"⨰\",\"tint\":\"∭\",\"toea\":\"⤨\",\"top\":\"⊤\",\"topbot\":\"⌶\",\"topcir\":\"⫱\",\"topf\":\"𝕥\",\"topfork\":\"⫚\",\"tosa\":\"⤩\",\"tprime\":\"‴\",\"trade\":\"™\",\"triangle\":\"▵\",\"triangledown\":\"▿\",\"triangleleft\":\"◃\",\"trianglelefteq\":\"⊴\",\"triangleq\":\"≜\",\"triangleright\":\"▹\",\"trianglerighteq\":\"⊵\",\"tridot\":\"◬\",\"trie\":\"≜\",\"triminus\":\"⨺\",\"triplus\":\"⨹\",\"trisb\":\"⧍\",\"tritime\":\"⨻\",\"trpezium\":\"⏢\",\"tscr\":\"𝓉\",\"tscy\":\"ц\",\"tshcy\":\"ћ\",\"tstrok\":\"ŧ\",\"twixt\":\"≬\",\"twoheadleftarrow\":\"↞\",\"twoheadrightarrow\":\"↠\",\"uArr\":\"⇑\",\"uHar\":\"⥣\",\"uacut\":\"ú\",\"uacute\":\"ú\",\"uarr\":\"↑\",\"ubrcy\":\"ў\",\"ubreve\":\"ŭ\",\"ucir\":\"û\",\"ucirc\":\"û\",\"ucy\":\"у\",\"udarr\":\"⇅\",\"udblac\":\"ű\",\"udhar\":\"⥮\",\"ufisht\":\"⥾\",\"ufr\":\"𝔲\",\"ugrav\":\"ù\",\"ugrave\":\"ù\",\"uharl\":\"↿\",\"uharr\":\"↾\",\"uhblk\":\"▀\",\"ulcorn\":\"⌜\",\"ulcorner\":\"⌜\",\"ulcrop\":\"⌏\",\"ultri\":\"◸\",\"umacr\":\"ū\",\"um\":\"¨\",\"uml\":\"¨\",\"uogon\":\"ų\",\"uopf\":\"𝕦\",\"uparrow\":\"↑\",\"updownarrow\":\"↕\",\"upharpoonleft\":\"↿\",\"upharpoonright\":\"↾\",\"uplus\":\"⊎\",\"upsi\":\"υ\",\"upsih\":\"ϒ\",\"upsilon\":\"υ\",\"upuparrows\":\"⇈\",\"urcorn\":\"⌝\",\"urcorner\":\"⌝\",\"urcrop\":\"⌎\",\"uring\":\"ů\",\"urtri\":\"◹\",\"uscr\":\"𝓊\",\"utdot\":\"⋰\",\"utilde\":\"ũ\",\"utri\":\"▵\",\"utrif\":\"▴\",\"uuarr\":\"⇈\",\"uum\":\"ü\",\"uuml\":\"ü\",\"uwangle\":\"⦧\",\"vArr\":\"⇕\",\"vBar\":\"⫨\",\"vBarv\":\"⫩\",\"vDash\":\"⊨\",\"vangrt\":\"⦜\",\"varepsilon\":\"ϵ\",\"varkappa\":\"ϰ\",\"varnothing\":\"∅\",\"varphi\":\"ϕ\",\"varpi\":\"ϖ\",\"varpropto\":\"∝\",\"varr\":\"↕\",\"varrho\":\"ϱ\",\"varsigma\":\"ς\",\"varsubsetneq\":\"⊊︀\",\"varsubsetneqq\":\"⫋︀\",\"varsupsetneq\":\"⊋︀\",\"varsupsetneqq\":\"⫌︀\",\"vartheta\":\"ϑ\",\"vartriangleleft\":\"⊲\",\"vartriangleright\":\"⊳\",\"vcy\":\"в\",\"vdash\":\"⊢\",\"vee\":\"∨\",\"veebar\":\"⊻\",\"veeeq\":\"≚\",\"vellip\":\"⋮\",\"verbar\":\"|\",\"vert\":\"|\",\"vfr\":\"𝔳\",\"vltri\":\"⊲\",\"vnsub\":\"⊂⃒\",\"vnsup\":\"⊃⃒\",\"vopf\":\"𝕧\",\"vprop\":\"∝\",\"vrtri\":\"⊳\",\"vscr\":\"𝓋\",\"vsubnE\":\"⫋︀\",\"vsubne\":\"⊊︀\",\"vsupnE\":\"⫌︀\",\"vsupne\":\"⊋︀\",\"vzigzag\":\"⦚\",\"wcirc\":\"ŵ\",\"wedbar\":\"⩟\",\"wedge\":\"∧\",\"wedgeq\":\"≙\",\"weierp\":\"℘\",\"wfr\":\"𝔴\",\"wopf\":\"𝕨\",\"wp\":\"℘\",\"wr\":\"≀\",\"wreath\":\"≀\",\"wscr\":\"𝓌\",\"xcap\":\"⋂\",\"xcirc\":\"◯\",\"xcup\":\"⋃\",\"xdtri\":\"▽\",\"xfr\":\"𝔵\",\"xhArr\":\"⟺\",\"xharr\":\"⟷\",\"xi\":\"ξ\",\"xlArr\":\"⟸\",\"xlarr\":\"⟵\",\"xmap\":\"⟼\",\"xnis\":\"⋻\",\"xodot\":\"⨀\",\"xopf\":\"𝕩\",\"xoplus\":\"⨁\",\"xotime\":\"⨂\",\"xrArr\":\"⟹\",\"xrarr\":\"⟶\",\"xscr\":\"𝓍\",\"xsqcup\":\"⨆\",\"xuplus\":\"⨄\",\"xutri\":\"△\",\"xvee\":\"⋁\",\"xwedge\":\"⋀\",\"yacut\":\"ý\",\"yacute\":\"ý\",\"yacy\":\"я\",\"ycirc\":\"ŷ\",\"ycy\":\"ы\",\"ye\":\"¥\",\"yen\":\"¥\",\"yfr\":\"𝔶\",\"yicy\":\"ї\",\"yopf\":\"𝕪\",\"yscr\":\"𝓎\",\"yucy\":\"ю\",\"yum\":\"ÿ\",\"yuml\":\"ÿ\",\"zacute\":\"ź\",\"zcaron\":\"ž\",\"zcy\":\"з\",\"zdot\":\"ż\",\"zeetrf\":\"ℨ\",\"zeta\":\"ζ\",\"zfr\":\"𝔷\",\"zhcy\":\"ж\",\"zigrarr\":\"⇝\",\"zopf\":\"𝕫\",\"zscr\":\"𝓏\",\"zwj\":\"‍\",\"zwnj\":\"‌\"}","module.exports={\"0\":\"�\",\"128\":\"€\",\"130\":\"‚\",\"131\":\"ƒ\",\"132\":\"„\",\"133\":\"…\",\"134\":\"†\",\"135\":\"‡\",\"136\":\"ˆ\",\"137\":\"‰\",\"138\":\"Š\",\"139\":\"‹\",\"140\":\"Œ\",\"142\":\"Ž\",\"145\":\"‘\",\"146\":\"’\",\"147\":\"“\",\"148\":\"”\",\"149\":\"•\",\"150\":\"–\",\"151\":\"—\",\"152\":\"˜\",\"153\":\"™\",\"154\":\"š\",\"155\":\"›\",\"156\":\"œ\",\"158\":\"ž\",\"159\":\"Ÿ\"}","module.exports={\"😀\":{\"category\":\"people\",\"description\":\"grinning face\",\"names\":[\"grinning\"],\"tags\":[\"smile\",\"happy\"]},\"😃\":{\"category\":\"people\",\"description\":\"smiling face with open mouth\",\"names\":[\"smiley\"],\"tags\":[\"happy\",\"joy\",\"haha\"]},\"😄\":{\"category\":\"people\",\"description\":\"smiling face with open mouth & smiling eyes\",\"names\":[\"smile\"],\"tags\":[\"happy\",\"joy\",\"laugh\",\"pleased\"]},\"😁\":{\"category\":\"people\",\"description\":\"grinning face with smiling eyes\",\"names\":[\"grin\"],\"tags\":[]},\"😆\":{\"category\":\"people\",\"description\":\"smiling face with open mouth & closed eyes\",\"names\":[\"laughing\",\"satisfied\"],\"tags\":[\"happy\",\"haha\"]},\"😅\":{\"category\":\"people\",\"description\":\"smiling face with open mouth & cold sweat\",\"names\":[\"sweat_smile\"],\"tags\":[\"hot\"]},\"😂\":{\"category\":\"people\",\"description\":\"face with tears of joy\",\"names\":[\"joy\"],\"tags\":[\"tears\"]},\"🤣\":{\"category\":\"people\",\"description\":\"rolling on the floor laughing\",\"names\":[\"rofl\"],\"tags\":[\"lol\",\"laughing\"]},\"☺️\":{\"category\":\"people\",\"description\":\"smiling face\",\"names\":[\"relaxed\"],\"tags\":[\"blush\",\"pleased\"]},\"😊\":{\"category\":\"people\",\"description\":\"smiling face with smiling eyes\",\"names\":[\"blush\"],\"tags\":[\"proud\"]},\"😇\":{\"category\":\"people\",\"description\":\"smiling face with halo\",\"names\":[\"innocent\"],\"tags\":[\"angel\"]},\"🙂\":{\"category\":\"people\",\"description\":\"slightly smiling face\",\"names\":[\"slightly_smiling_face\"],\"tags\":[]},\"🙃\":{\"category\":\"people\",\"description\":\"upside-down face\",\"names\":[\"upside_down_face\"],\"tags\":[]},\"😉\":{\"category\":\"people\",\"description\":\"winking face\",\"names\":[\"wink\"],\"tags\":[\"flirt\"]},\"😌\":{\"category\":\"people\",\"description\":\"relieved face\",\"names\":[\"relieved\"],\"tags\":[\"whew\"]},\"😍\":{\"category\":\"people\",\"description\":\"smiling face with heart-eyes\",\"names\":[\"heart_eyes\"],\"tags\":[\"love\",\"crush\"]},\"😘\":{\"category\":\"people\",\"description\":\"face blowing a kiss\",\"names\":[\"kissing_heart\"],\"tags\":[\"flirt\"]},\"😗\":{\"category\":\"people\",\"description\":\"kissing face\",\"names\":[\"kissing\"],\"tags\":[]},\"😙\":{\"category\":\"people\",\"description\":\"kissing face with smiling eyes\",\"names\":[\"kissing_smiling_eyes\"],\"tags\":[]},\"😚\":{\"category\":\"people\",\"description\":\"kissing face with closed eyes\",\"names\":[\"kissing_closed_eyes\"],\"tags\":[]},\"😋\":{\"category\":\"people\",\"description\":\"face savouring delicious food\",\"names\":[\"yum\"],\"tags\":[\"tongue\",\"lick\"]},\"😜\":{\"category\":\"people\",\"description\":\"face with stuck-out tongue & winking eye\",\"names\":[\"stuck_out_tongue_winking_eye\"],\"tags\":[\"prank\",\"silly\"]},\"😝\":{\"category\":\"people\",\"description\":\"face with stuck-out tongue & closed eyes\",\"names\":[\"stuck_out_tongue_closed_eyes\"],\"tags\":[\"prank\"]},\"😛\":{\"category\":\"people\",\"description\":\"face with stuck-out tongue\",\"names\":[\"stuck_out_tongue\"],\"tags\":[]},\"🤑\":{\"category\":\"people\",\"description\":\"money-mouth face\",\"names\":[\"money_mouth_face\"],\"tags\":[\"rich\"]},\"🤗\":{\"category\":\"people\",\"description\":\"hugging face\",\"names\":[\"hugs\"],\"tags\":[]},\"🤓\":{\"category\":\"people\",\"description\":\"nerd face\",\"names\":[\"nerd_face\"],\"tags\":[\"geek\",\"glasses\"]},\"😎\":{\"category\":\"people\",\"description\":\"smiling face with sunglasses\",\"names\":[\"sunglasses\"],\"tags\":[\"cool\"]},\"🤡\":{\"category\":\"people\",\"description\":\"clown face\",\"names\":[\"clown_face\"],\"tags\":[]},\"🤠\":{\"category\":\"people\",\"description\":\"cowboy hat face\",\"names\":[\"cowboy_hat_face\"],\"tags\":[]},\"😏\":{\"category\":\"people\",\"description\":\"smirking face\",\"names\":[\"smirk\"],\"tags\":[\"smug\"]},\"😒\":{\"category\":\"people\",\"description\":\"unamused face\",\"names\":[\"unamused\"],\"tags\":[\"meh\"]},\"😞\":{\"category\":\"people\",\"description\":\"disappointed face\",\"names\":[\"disappointed\"],\"tags\":[\"sad\"]},\"😔\":{\"category\":\"people\",\"description\":\"pensive face\",\"names\":[\"pensive\"],\"tags\":[]},\"😟\":{\"category\":\"people\",\"description\":\"worried face\",\"names\":[\"worried\"],\"tags\":[\"nervous\"]},\"😕\":{\"category\":\"people\",\"description\":\"confused face\",\"names\":[\"confused\"],\"tags\":[]},\"🙁\":{\"category\":\"people\",\"description\":\"slightly frowning face\",\"names\":[\"slightly_frowning_face\"],\"tags\":[]},\"☹️\":{\"category\":\"people\",\"description\":\"frowning face\",\"names\":[\"frowning_face\"],\"tags\":[]},\"😣\":{\"category\":\"people\",\"description\":\"persevering face\",\"names\":[\"persevere\"],\"tags\":[\"struggling\"]},\"😖\":{\"category\":\"people\",\"description\":\"confounded face\",\"names\":[\"confounded\"],\"tags\":[]},\"😫\":{\"category\":\"people\",\"description\":\"tired face\",\"names\":[\"tired_face\"],\"tags\":[\"upset\",\"whine\"]},\"😩\":{\"category\":\"people\",\"description\":\"weary face\",\"names\":[\"weary\"],\"tags\":[\"tired\"]},\"😤\":{\"category\":\"people\",\"description\":\"face with steam from nose\",\"names\":[\"triumph\"],\"tags\":[\"smug\"]},\"😠\":{\"category\":\"people\",\"description\":\"angry face\",\"names\":[\"angry\"],\"tags\":[\"mad\",\"annoyed\"]},\"😡\":{\"category\":\"people\",\"description\":\"pouting face\",\"names\":[\"rage\",\"pout\"],\"tags\":[\"angry\"]},\"😶\":{\"category\":\"people\",\"description\":\"face without mouth\",\"names\":[\"no_mouth\"],\"tags\":[\"mute\",\"silence\"]},\"😐\":{\"category\":\"people\",\"description\":\"neutral face\",\"names\":[\"neutral_face\"],\"tags\":[\"meh\"]},\"😑\":{\"category\":\"people\",\"description\":\"expressionless face\",\"names\":[\"expressionless\"],\"tags\":[]},\"😯\":{\"category\":\"people\",\"description\":\"hushed face\",\"names\":[\"hushed\"],\"tags\":[\"silence\",\"speechless\"]},\"😦\":{\"category\":\"people\",\"description\":\"frowning face with open mouth\",\"names\":[\"frowning\"],\"tags\":[]},\"😧\":{\"category\":\"people\",\"description\":\"anguished face\",\"names\":[\"anguished\"],\"tags\":[\"stunned\"]},\"😮\":{\"category\":\"people\",\"description\":\"face with open mouth\",\"names\":[\"open_mouth\"],\"tags\":[\"surprise\",\"impressed\",\"wow\"]},\"😲\":{\"category\":\"people\",\"description\":\"astonished face\",\"names\":[\"astonished\"],\"tags\":[\"amazed\",\"gasp\"]},\"😵\":{\"category\":\"people\",\"description\":\"dizzy face\",\"names\":[\"dizzy_face\"],\"tags\":[]},\"😳\":{\"category\":\"people\",\"description\":\"flushed face\",\"names\":[\"flushed\"],\"tags\":[]},\"😱\":{\"category\":\"people\",\"description\":\"face screaming in fear\",\"names\":[\"scream\"],\"tags\":[\"horror\",\"shocked\"]},\"😨\":{\"category\":\"people\",\"description\":\"fearful face\",\"names\":[\"fearful\"],\"tags\":[\"scared\",\"shocked\",\"oops\"]},\"😰\":{\"category\":\"people\",\"description\":\"face with open mouth & cold sweat\",\"names\":[\"cold_sweat\"],\"tags\":[\"nervous\"]},\"😢\":{\"category\":\"people\",\"description\":\"crying face\",\"names\":[\"cry\"],\"tags\":[\"sad\",\"tear\"]},\"😥\":{\"category\":\"people\",\"description\":\"disappointed but relieved face\",\"names\":[\"disappointed_relieved\"],\"tags\":[\"phew\",\"sweat\",\"nervous\"]},\"🤤\":{\"category\":\"people\",\"description\":\"drooling face\",\"names\":[\"drooling_face\"],\"tags\":[]},\"😭\":{\"category\":\"people\",\"description\":\"loudly crying face\",\"names\":[\"sob\"],\"tags\":[\"sad\",\"cry\",\"bawling\"]},\"😓\":{\"category\":\"people\",\"description\":\"face with cold sweat\",\"names\":[\"sweat\"],\"tags\":[]},\"😪\":{\"category\":\"people\",\"description\":\"sleepy face\",\"names\":[\"sleepy\"],\"tags\":[\"tired\"]},\"😴\":{\"category\":\"people\",\"description\":\"sleeping face\",\"names\":[\"sleeping\"],\"tags\":[\"zzz\"]},\"🙄\":{\"category\":\"people\",\"description\":\"face with rolling eyes\",\"names\":[\"roll_eyes\"],\"tags\":[]},\"🤔\":{\"category\":\"people\",\"description\":\"thinking face\",\"names\":[\"thinking\"],\"tags\":[]},\"🤥\":{\"category\":\"people\",\"description\":\"lying face\",\"names\":[\"lying_face\"],\"tags\":[\"liar\"]},\"😬\":{\"category\":\"people\",\"description\":\"grimacing face\",\"names\":[\"grimacing\"],\"tags\":[]},\"🤐\":{\"category\":\"people\",\"description\":\"zipper-mouth face\",\"names\":[\"zipper_mouth_face\"],\"tags\":[\"silence\",\"hush\"]},\"🤢\":{\"category\":\"people\",\"description\":\"nauseated face\",\"names\":[\"nauseated_face\"],\"tags\":[\"sick\",\"barf\",\"disgusted\"]},\"🤧\":{\"category\":\"people\",\"description\":\"sneezing face\",\"names\":[\"sneezing_face\"],\"tags\":[\"achoo\",\"sick\"]},\"😷\":{\"category\":\"people\",\"description\":\"face with medical mask\",\"names\":[\"mask\"],\"tags\":[\"sick\",\"ill\"]},\"🤒\":{\"category\":\"people\",\"description\":\"face with thermometer\",\"names\":[\"face_with_thermometer\"],\"tags\":[\"sick\"]},\"🤕\":{\"category\":\"people\",\"description\":\"face with head-bandage\",\"names\":[\"face_with_head_bandage\"],\"tags\":[\"hurt\"]},\"😈\":{\"category\":\"people\",\"description\":\"smiling face with horns\",\"names\":[\"smiling_imp\"],\"tags\":[\"devil\",\"evil\",\"horns\"]},\"👿\":{\"category\":\"people\",\"description\":\"angry face with horns\",\"names\":[\"imp\"],\"tags\":[\"angry\",\"devil\",\"evil\",\"horns\"]},\"👹\":{\"category\":\"people\",\"description\":\"ogre\",\"names\":[\"japanese_ogre\"],\"tags\":[\"monster\"]},\"👺\":{\"category\":\"people\",\"description\":\"goblin\",\"names\":[\"japanese_goblin\"],\"tags\":[]},\"💩\":{\"category\":\"people\",\"description\":\"pile of poo\",\"names\":[\"hankey\",\"poop\",\"shit\"],\"tags\":[\"crap\"]},\"👻\":{\"category\":\"people\",\"description\":\"ghost\",\"names\":[\"ghost\"],\"tags\":[\"halloween\"]},\"💀\":{\"category\":\"people\",\"description\":\"skull\",\"names\":[\"skull\"],\"tags\":[\"dead\",\"danger\",\"poison\"]},\"☠️\":{\"category\":\"people\",\"description\":\"skull and crossbones\",\"names\":[\"skull_and_crossbones\"],\"tags\":[\"danger\",\"pirate\"]},\"👽\":{\"category\":\"people\",\"description\":\"alien\",\"names\":[\"alien\"],\"tags\":[\"ufo\"]},\"👾\":{\"category\":\"people\",\"description\":\"alien monster\",\"names\":[\"space_invader\"],\"tags\":[\"game\",\"retro\"]},\"🤖\":{\"category\":\"people\",\"description\":\"robot face\",\"names\":[\"robot\"],\"tags\":[]},\"🎃\":{\"category\":\"people\",\"description\":\"jack-o-lantern\",\"names\":[\"jack_o_lantern\"],\"tags\":[\"halloween\"]},\"😺\":{\"category\":\"people\",\"description\":\"smiling cat face with open mouth\",\"names\":[\"smiley_cat\"],\"tags\":[]},\"😸\":{\"category\":\"people\",\"description\":\"grinning cat face with smiling eyes\",\"names\":[\"smile_cat\"],\"tags\":[]},\"😹\":{\"category\":\"people\",\"description\":\"cat face with tears of joy\",\"names\":[\"joy_cat\"],\"tags\":[]},\"😻\":{\"category\":\"people\",\"description\":\"smiling cat face with heart-eyes\",\"names\":[\"heart_eyes_cat\"],\"tags\":[]},\"😼\":{\"category\":\"people\",\"description\":\"cat face with wry smile\",\"names\":[\"smirk_cat\"],\"tags\":[]},\"😽\":{\"category\":\"people\",\"description\":\"kissing cat face with closed eyes\",\"names\":[\"kissing_cat\"],\"tags\":[]},\"🙀\":{\"category\":\"people\",\"description\":\"weary cat face\",\"names\":[\"scream_cat\"],\"tags\":[\"horror\"]},\"😿\":{\"category\":\"people\",\"description\":\"crying cat face\",\"names\":[\"crying_cat_face\"],\"tags\":[\"sad\",\"tear\"]},\"😾\":{\"category\":\"people\",\"description\":\"pouting cat face\",\"names\":[\"pouting_cat\"],\"tags\":[]},\"👐\":{\"category\":\"people\",\"description\":\"open hands\",\"names\":[\"open_hands\"],\"tags\":[]},\"🙌\":{\"category\":\"people\",\"description\":\"raising hands\",\"names\":[\"raised_hands\"],\"tags\":[\"hooray\"]},\"👏\":{\"category\":\"people\",\"description\":\"clapping hands\",\"names\":[\"clap\"],\"tags\":[\"praise\",\"applause\"]},\"🙏\":{\"category\":\"people\",\"description\":\"folded hands\",\"names\":[\"pray\"],\"tags\":[\"please\",\"hope\",\"wish\"]},\"🤝\":{\"category\":\"people\",\"description\":\"handshake\",\"names\":[\"handshake\"],\"tags\":[\"deal\"]},\"👍\":{\"category\":\"people\",\"description\":\"thumbs up\",\"names\":[\"+1\",\"thumbsup\"],\"tags\":[\"approve\",\"ok\"]},\"👎\":{\"category\":\"people\",\"description\":\"thumbs down\",\"names\":[\"-1\",\"thumbsdown\"],\"tags\":[\"disapprove\",\"bury\"]},\"👊\":{\"category\":\"people\",\"description\":\"oncoming fist\",\"names\":[\"fist_oncoming\",\"facepunch\",\"punch\"],\"tags\":[\"attack\"]},\"✊\":{\"category\":\"people\",\"description\":\"raised fist\",\"names\":[\"fist_raised\",\"fist\"],\"tags\":[\"power\"]},\"🤛\":{\"category\":\"people\",\"description\":\"left-facing fist\",\"names\":[\"fist_left\"],\"tags\":[]},\"🤜\":{\"category\":\"people\",\"description\":\"right-facing fist\",\"names\":[\"fist_right\"],\"tags\":[]},\"🤞\":{\"category\":\"people\",\"description\":\"crossed fingers\",\"names\":[\"crossed_fingers\"],\"tags\":[\"luck\",\"hopeful\"]},\"✌️\":{\"category\":\"people\",\"description\":\"victory hand\",\"names\":[\"v\"],\"tags\":[\"victory\",\"peace\"]},\"🤘\":{\"category\":\"people\",\"description\":\"sign of the horns\",\"names\":[\"metal\"],\"tags\":[]},\"👌\":{\"category\":\"people\",\"description\":\"OK hand\",\"names\":[\"ok_hand\"],\"tags\":[]},\"👈\":{\"category\":\"people\",\"description\":\"backhand index pointing left\",\"names\":[\"point_left\"],\"tags\":[]},\"👉\":{\"category\":\"people\",\"description\":\"backhand index pointing right\",\"names\":[\"point_right\"],\"tags\":[]},\"👆\":{\"category\":\"people\",\"description\":\"backhand index pointing up\",\"names\":[\"point_up_2\"],\"tags\":[]},\"👇\":{\"category\":\"people\",\"description\":\"backhand index pointing down\",\"names\":[\"point_down\"],\"tags\":[]},\"☝️\":{\"category\":\"people\",\"description\":\"index pointing up\",\"names\":[\"point_up\"],\"tags\":[]},\"✋\":{\"category\":\"people\",\"description\":\"raised hand\",\"names\":[\"hand\",\"raised_hand\"],\"tags\":[\"highfive\",\"stop\"]},\"🤚\":{\"category\":\"people\",\"description\":\"raised back of hand\",\"names\":[\"raised_back_of_hand\"],\"tags\":[]},\"🖐\":{\"category\":\"people\",\"description\":\"raised hand with fingers splayed\",\"names\":[\"raised_hand_with_fingers_splayed\"],\"tags\":[]},\"🖖\":{\"category\":\"people\",\"description\":\"vulcan salute\",\"names\":[\"vulcan_salute\"],\"tags\":[\"prosper\",\"spock\"]},\"👋\":{\"category\":\"people\",\"description\":\"waving hand\",\"names\":[\"wave\"],\"tags\":[\"goodbye\"]},\"🤙\":{\"category\":\"people\",\"description\":\"call me hand\",\"names\":[\"call_me_hand\"],\"tags\":[]},\"💪\":{\"category\":\"people\",\"description\":\"flexed biceps\",\"names\":[\"muscle\"],\"tags\":[\"flex\",\"bicep\",\"strong\",\"workout\"]},\"🖕\":{\"category\":\"people\",\"description\":\"middle finger\",\"names\":[\"middle_finger\",\"fu\"],\"tags\":[]},\"✍️\":{\"category\":\"people\",\"description\":\"writing hand\",\"names\":[\"writing_hand\"],\"tags\":[]},\"🤳\":{\"category\":\"people\",\"description\":\"selfie\",\"names\":[\"selfie\"],\"tags\":[]},\"💅\":{\"category\":\"people\",\"description\":\"nail polish\",\"names\":[\"nail_care\"],\"tags\":[\"beauty\",\"manicure\"]},\"💍\":{\"category\":\"people\",\"description\":\"ring\",\"names\":[\"ring\"],\"tags\":[\"wedding\",\"marriage\",\"engaged\"]},\"💄\":{\"category\":\"people\",\"description\":\"lipstick\",\"names\":[\"lipstick\"],\"tags\":[\"makeup\"]},\"💋\":{\"category\":\"people\",\"description\":\"kiss mark\",\"names\":[\"kiss\"],\"tags\":[\"lipstick\"]},\"👄\":{\"category\":\"people\",\"description\":\"mouth\",\"names\":[\"lips\"],\"tags\":[\"kiss\"]},\"👅\":{\"category\":\"people\",\"description\":\"tongue\",\"names\":[\"tongue\"],\"tags\":[\"taste\"]},\"👂\":{\"category\":\"people\",\"description\":\"ear\",\"names\":[\"ear\"],\"tags\":[\"hear\",\"sound\",\"listen\"]},\"👃\":{\"category\":\"people\",\"description\":\"nose\",\"names\":[\"nose\"],\"tags\":[\"smell\"]},\"👣\":{\"category\":\"people\",\"description\":\"footprints\",\"names\":[\"footprints\"],\"tags\":[\"feet\",\"tracks\"]},\"👁\":{\"category\":\"people\",\"description\":\"eye\",\"names\":[\"eye\"],\"tags\":[]},\"👀\":{\"category\":\"people\",\"description\":\"eyes\",\"names\":[\"eyes\"],\"tags\":[\"look\",\"see\",\"watch\"]},\"🗣\":{\"category\":\"people\",\"description\":\"speaking head\",\"names\":[\"speaking_head\"],\"tags\":[]},\"👤\":{\"category\":\"people\",\"description\":\"bust in silhouette\",\"names\":[\"bust_in_silhouette\"],\"tags\":[\"user\"]},\"👥\":{\"category\":\"people\",\"description\":\"busts in silhouette\",\"names\":[\"busts_in_silhouette\"],\"tags\":[\"users\",\"group\",\"team\"]},\"👶\":{\"category\":\"people\",\"description\":\"baby\",\"names\":[\"baby\"],\"tags\":[\"child\",\"newborn\"]},\"👦\":{\"category\":\"people\",\"description\":\"boy\",\"names\":[\"boy\"],\"tags\":[\"child\"]},\"👧\":{\"category\":\"people\",\"description\":\"girl\",\"names\":[\"girl\"],\"tags\":[\"child\"]},\"👨\":{\"category\":\"people\",\"description\":\"man\",\"names\":[\"man\"],\"tags\":[\"mustache\",\"father\",\"dad\"]},\"👩\":{\"category\":\"people\",\"description\":\"woman\",\"names\":[\"woman\"],\"tags\":[\"girls\"]},\"👱‍♀\":{\"category\":\"people\",\"description\":\"blond-haired woman\",\"names\":[\"blonde_woman\"],\"tags\":[]},\"👱\":{\"category\":\"people\",\"description\":\"blond-haired person\",\"names\":[\"blonde_man\",\"person_with_blond_hair\"],\"tags\":[\"boy\"]},\"👴\":{\"category\":\"people\",\"description\":\"old man\",\"names\":[\"older_man\"],\"tags\":[]},\"👵\":{\"category\":\"people\",\"description\":\"old woman\",\"names\":[\"older_woman\"],\"tags\":[]},\"👲\":{\"category\":\"people\",\"description\":\"man with Chinese cap\",\"names\":[\"man_with_gua_pi_mao\"],\"tags\":[]},\"👳‍♀\":{\"category\":\"people\",\"description\":\"woman wearing turban\",\"names\":[\"woman_with_turban\"],\"tags\":[]},\"👳\":{\"category\":\"people\",\"description\":\"person wearing turban\",\"names\":[\"man_with_turban\"],\"tags\":[]},\"👮‍♀\":{\"category\":\"people\",\"description\":\"woman police officer\",\"names\":[\"policewoman\"],\"tags\":[]},\"👮\":{\"category\":\"people\",\"description\":\"police officer\",\"names\":[\"policeman\",\"cop\"],\"tags\":[\"police\",\"law\"]},\"👷‍♀\":{\"category\":\"people\",\"description\":\"woman construction worker\",\"names\":[\"construction_worker_woman\"],\"tags\":[]},\"👷\":{\"category\":\"people\",\"description\":\"construction worker\",\"names\":[\"construction_worker_man\",\"construction_worker\"],\"tags\":[\"helmet\"]},\"💂‍♀\":{\"category\":\"people\",\"description\":\"woman guard\",\"names\":[\"guardswoman\"],\"tags\":[]},\"💂\":{\"category\":\"people\",\"description\":\"guard\",\"names\":[\"guardsman\"],\"tags\":[]},\"🕵️‍♀️\":{\"category\":\"people\",\"description\":\"woman detective\",\"names\":[\"female_detective\"],\"tags\":[\"sleuth\"]},\"🕵\":{\"category\":\"people\",\"description\":\"detective\",\"names\":[\"male_detective\",\"detective\"],\"tags\":[\"sleuth\"]},\"👩‍⚕\":{\"category\":\"people\",\"description\":\"woman health worker\",\"names\":[\"woman_health_worker\"],\"tags\":[\"doctor\",\"nurse\"]},\"👨‍⚕\":{\"category\":\"people\",\"description\":\"man health worker\",\"names\":[\"man_health_worker\"],\"tags\":[\"doctor\",\"nurse\"]},\"👩‍🌾\":{\"category\":\"people\",\"description\":\"woman farmer\",\"names\":[\"woman_farmer\"],\"tags\":[]},\"👨‍🌾\":{\"category\":\"people\",\"description\":\"man farmer\",\"names\":[\"man_farmer\"],\"tags\":[]},\"👩‍🍳\":{\"category\":\"people\",\"description\":\"woman cook\",\"names\":[\"woman_cook\"],\"tags\":[\"chef\"]},\"👨‍🍳\":{\"category\":\"people\",\"description\":\"man cook\",\"names\":[\"man_cook\"],\"tags\":[\"chef\"]},\"👩‍🎓\":{\"category\":\"people\",\"description\":\"woman student\",\"names\":[\"woman_student\"],\"tags\":[\"graduation\"]},\"👨‍🎓\":{\"category\":\"people\",\"description\":\"man student\",\"names\":[\"man_student\"],\"tags\":[\"graduation\"]},\"👩‍🎤\":{\"category\":\"people\",\"description\":\"woman singer\",\"names\":[\"woman_singer\"],\"tags\":[\"rockstar\"]},\"👨‍🎤\":{\"category\":\"people\",\"description\":\"man singer\",\"names\":[\"man_singer\"],\"tags\":[\"rockstar\"]},\"👩‍🏫\":{\"category\":\"people\",\"description\":\"woman teacher\",\"names\":[\"woman_teacher\"],\"tags\":[\"school\",\"professor\"]},\"👨‍🏫\":{\"category\":\"people\",\"description\":\"man teacher\",\"names\":[\"man_teacher\"],\"tags\":[\"school\",\"professor\"]},\"👩‍🏭\":{\"category\":\"people\",\"description\":\"woman factory worker\",\"names\":[\"woman_factory_worker\"],\"tags\":[]},\"👨‍🏭\":{\"category\":\"people\",\"description\":\"man factory worker\",\"names\":[\"man_factory_worker\"],\"tags\":[]},\"👩‍💻\":{\"category\":\"people\",\"description\":\"woman technologist\",\"names\":[\"woman_technologist\"],\"tags\":[\"coder\"]},\"👨‍💻\":{\"category\":\"people\",\"description\":\"man technologist\",\"names\":[\"man_technologist\"],\"tags\":[\"coder\"]},\"👩‍💼\":{\"category\":\"people\",\"description\":\"woman office worker\",\"names\":[\"woman_office_worker\"],\"tags\":[\"business\"]},\"👨‍💼\":{\"category\":\"people\",\"description\":\"man office worker\",\"names\":[\"man_office_worker\"],\"tags\":[\"business\"]},\"👩‍🔧\":{\"category\":\"people\",\"description\":\"woman mechanic\",\"names\":[\"woman_mechanic\"],\"tags\":[]},\"👨‍🔧\":{\"category\":\"people\",\"description\":\"man mechanic\",\"names\":[\"man_mechanic\"],\"tags\":[]},\"👩‍🔬\":{\"category\":\"people\",\"description\":\"woman scientist\",\"names\":[\"woman_scientist\"],\"tags\":[\"research\"]},\"👨‍🔬\":{\"category\":\"people\",\"description\":\"man scientist\",\"names\":[\"man_scientist\"],\"tags\":[\"research\"]},\"👩‍🎨\":{\"category\":\"people\",\"description\":\"woman artist\",\"names\":[\"woman_artist\"],\"tags\":[\"painter\"]},\"👨‍🎨\":{\"category\":\"people\",\"description\":\"man artist\",\"names\":[\"man_artist\"],\"tags\":[\"painter\"]},\"👩‍🚒\":{\"category\":\"people\",\"description\":\"woman firefighter\",\"names\":[\"woman_firefighter\"],\"tags\":[]},\"👨‍🚒\":{\"category\":\"people\",\"description\":\"man firefighter\",\"names\":[\"man_firefighter\"],\"tags\":[]},\"👩‍✈\":{\"category\":\"people\",\"description\":\"woman pilot\",\"names\":[\"woman_pilot\"],\"tags\":[]},\"👨‍✈\":{\"category\":\"people\",\"description\":\"man pilot\",\"names\":[\"man_pilot\"],\"tags\":[]},\"👩‍🚀\":{\"category\":\"people\",\"description\":\"woman astronaut\",\"names\":[\"woman_astronaut\"],\"tags\":[\"space\"]},\"👨‍🚀\":{\"category\":\"people\",\"description\":\"man astronaut\",\"names\":[\"man_astronaut\"],\"tags\":[\"space\"]},\"👩‍⚖\":{\"category\":\"people\",\"description\":\"woman judge\",\"names\":[\"woman_judge\"],\"tags\":[\"justice\"]},\"👨‍⚖\":{\"category\":\"people\",\"description\":\"man judge\",\"names\":[\"man_judge\"],\"tags\":[\"justice\"]},\"🤶\":{\"category\":\"people\",\"description\":\"Mrs. Claus\",\"names\":[\"mrs_claus\"],\"tags\":[\"santa\"]},\"🎅\":{\"category\":\"people\",\"description\":\"Santa Claus\",\"names\":[\"santa\"],\"tags\":[\"christmas\"]},\"👸\":{\"category\":\"people\",\"description\":\"princess\",\"names\":[\"princess\"],\"tags\":[\"blonde\",\"crown\",\"royal\"]},\"🤴\":{\"category\":\"people\",\"description\":\"prince\",\"names\":[\"prince\"],\"tags\":[\"crown\",\"royal\"]},\"👰\":{\"category\":\"people\",\"description\":\"bride with veil\",\"names\":[\"bride_with_veil\"],\"tags\":[\"marriage\",\"wedding\"]},\"🤵\":{\"category\":\"people\",\"description\":\"man in tuxedo\",\"names\":[\"man_in_tuxedo\"],\"tags\":[\"groom\",\"marriage\",\"wedding\"]},\"👼\":{\"category\":\"people\",\"description\":\"baby angel\",\"names\":[\"angel\"],\"tags\":[]},\"🤰\":{\"category\":\"people\",\"description\":\"pregnant woman\",\"names\":[\"pregnant_woman\"],\"tags\":[]},\"🙇‍♀\":{\"category\":\"people\",\"description\":\"woman bowing\",\"names\":[\"bowing_woman\"],\"tags\":[\"respect\",\"thanks\"]},\"🙇\":{\"category\":\"people\",\"description\":\"person bowing\",\"names\":[\"bowing_man\",\"bow\"],\"tags\":[\"respect\",\"thanks\"]},\"💁\":{\"category\":\"people\",\"description\":\"person tipping hand\",\"names\":[\"tipping_hand_woman\",\"information_desk_person\",\"sassy_woman\"],\"tags\":[]},\"💁‍♂\":{\"category\":\"people\",\"description\":\"man tipping hand\",\"names\":[\"tipping_hand_man\",\"sassy_man\"],\"tags\":[\"information\"]},\"🙅\":{\"category\":\"people\",\"description\":\"person gesturing NO\",\"names\":[\"no_good_woman\",\"no_good\",\"ng_woman\"],\"tags\":[\"stop\",\"halt\"]},\"🙅‍♂\":{\"category\":\"people\",\"description\":\"man gesturing NO\",\"names\":[\"no_good_man\",\"ng_man\"],\"tags\":[\"stop\",\"halt\"]},\"🙆\":{\"category\":\"people\",\"description\":\"person gesturing OK\",\"names\":[\"ok_woman\"],\"tags\":[]},\"🙆‍♂\":{\"category\":\"people\",\"description\":\"man gesturing OK\",\"names\":[\"ok_man\"],\"tags\":[]},\"🙋\":{\"category\":\"people\",\"description\":\"person raising hand\",\"names\":[\"raising_hand_woman\",\"raising_hand\"],\"tags\":[]},\"🙋‍♂\":{\"category\":\"people\",\"description\":\"man raising hand\",\"names\":[\"raising_hand_man\"],\"tags\":[]},\"🤦‍♀\":{\"category\":\"people\",\"description\":\"woman facepalming\",\"names\":[\"woman_facepalming\"],\"tags\":[]},\"🤦‍♂\":{\"category\":\"people\",\"description\":\"man facepalming\",\"names\":[\"man_facepalming\"],\"tags\":[]},\"🤷‍♀\":{\"category\":\"people\",\"description\":\"woman shrugging\",\"names\":[\"woman_shrugging\"],\"tags\":[]},\"🤷‍♂\":{\"category\":\"people\",\"description\":\"man shrugging\",\"names\":[\"man_shrugging\"],\"tags\":[]},\"🙎\":{\"category\":\"people\",\"description\":\"person pouting\",\"names\":[\"pouting_woman\",\"person_with_pouting_face\"],\"tags\":[]},\"🙎‍♂\":{\"category\":\"people\",\"description\":\"man pouting\",\"names\":[\"pouting_man\"],\"tags\":[]},\"🙍\":{\"category\":\"people\",\"description\":\"person frowning\",\"names\":[\"frowning_woman\",\"person_frowning\"],\"tags\":[\"sad\"]},\"🙍‍♂\":{\"category\":\"people\",\"description\":\"man frowning\",\"names\":[\"frowning_man\"],\"tags\":[]},\"💇\":{\"category\":\"people\",\"description\":\"person getting haircut\",\"names\":[\"haircut_woman\",\"haircut\"],\"tags\":[\"beauty\"]},\"💇‍♂\":{\"category\":\"people\",\"description\":\"man getting haircut\",\"names\":[\"haircut_man\"],\"tags\":[]},\"💆\":{\"category\":\"people\",\"description\":\"person getting massage\",\"names\":[\"massage_woman\",\"massage\"],\"tags\":[\"spa\"]},\"💆‍♂\":{\"category\":\"people\",\"description\":\"man getting massage\",\"names\":[\"massage_man\"],\"tags\":[\"spa\"]},\"🕴\":{\"category\":\"people\",\"description\":\"man in business suit levitating\",\"names\":[\"business_suit_levitating\"],\"tags\":[]},\"💃\":{\"category\":\"people\",\"description\":\"woman dancing\",\"names\":[\"dancer\"],\"tags\":[\"dress\"]},\"🕺\":{\"category\":\"people\",\"description\":\"man dancing\",\"names\":[\"man_dancing\"],\"tags\":[\"dancer\"]},\"👯\":{\"category\":\"people\",\"description\":\"people with bunny ears partying\",\"names\":[\"dancing_women\",\"dancers\"],\"tags\":[\"bunny\"]},\"👯‍♂\":{\"category\":\"people\",\"description\":\"men with bunny ears partying\",\"names\":[\"dancing_men\"],\"tags\":[\"bunny\"]},\"🚶‍♀\":{\"category\":\"people\",\"description\":\"woman walking\",\"names\":[\"walking_woman\"],\"tags\":[]},\"🚶\":{\"category\":\"people\",\"description\":\"person walking\",\"names\":[\"walking_man\",\"walking\"],\"tags\":[]},\"🏃‍♀\":{\"category\":\"people\",\"description\":\"woman running\",\"names\":[\"running_woman\"],\"tags\":[\"exercise\",\"workout\",\"marathon\"]},\"🏃\":{\"category\":\"people\",\"description\":\"person running\",\"names\":[\"running_man\",\"runner\",\"running\"],\"tags\":[\"exercise\",\"workout\",\"marathon\"]},\"👫\":{\"category\":\"people\",\"description\":\"man and woman holding hands\",\"names\":[\"couple\"],\"tags\":[\"date\"]},\"👭\":{\"category\":\"people\",\"description\":\"two women holding hands\",\"names\":[\"two_women_holding_hands\"],\"tags\":[\"couple\",\"date\"]},\"👬\":{\"category\":\"people\",\"description\":\"two men holding hands\",\"names\":[\"two_men_holding_hands\"],\"tags\":[\"couple\",\"date\"]},\"💑\":{\"category\":\"people\",\"description\":\"couple with heart\",\"names\":[\"couple_with_heart_woman_man\",\"couple_with_heart\"],\"tags\":[]},\"👩‍❤️‍👩\":{\"category\":\"people\",\"description\":\"couple with heart: woman, woman\",\"names\":[\"couple_with_heart_woman_woman\"],\"tags\":[]},\"👨‍❤️‍👨\":{\"category\":\"people\",\"description\":\"couple with heart: man, man\",\"names\":[\"couple_with_heart_man_man\"],\"tags\":[]},\"💏\":{\"category\":\"people\",\"description\":\"kiss\",\"names\":[\"couplekiss_man_woman\"],\"tags\":[]},\"👩‍❤️‍💋‍👩\":{\"category\":\"people\",\"description\":\"kiss: woman, woman\",\"names\":[\"couplekiss_woman_woman\"],\"tags\":[]},\"👨‍❤️‍💋‍👨\":{\"category\":\"people\",\"description\":\"kiss: man, man\",\"names\":[\"couplekiss_man_man\"],\"tags\":[]},\"👪\":{\"category\":\"people\",\"description\":\"family\",\"names\":[\"family_man_woman_boy\",\"family\"],\"tags\":[\"home\",\"parents\",\"child\"]},\"👨‍👩‍👧\":{\"category\":\"people\",\"description\":\"family: man, woman, girl\",\"names\":[\"family_man_woman_girl\"],\"tags\":[]},\"👨‍👩‍👧‍👦\":{\"category\":\"people\",\"description\":\"family: man, woman, girl, boy\",\"names\":[\"family_man_woman_girl_boy\"],\"tags\":[]},\"👨‍👩‍👦‍👦\":{\"category\":\"people\",\"description\":\"family: man, woman, boy, boy\",\"names\":[\"family_man_woman_boy_boy\"],\"tags\":[]},\"👨‍👩‍👧‍👧\":{\"category\":\"people\",\"description\":\"family: man, woman, girl, girl\",\"names\":[\"family_man_woman_girl_girl\"],\"tags\":[]},\"👩‍👩‍👦\":{\"category\":\"people\",\"description\":\"family: woman, woman, boy\",\"names\":[\"family_woman_woman_boy\"],\"tags\":[]},\"👩‍👩‍👧\":{\"category\":\"people\",\"description\":\"family: woman, woman, girl\",\"names\":[\"family_woman_woman_girl\"],\"tags\":[]},\"👩‍👩‍👧‍👦\":{\"category\":\"people\",\"description\":\"family: woman, woman, girl, boy\",\"names\":[\"family_woman_woman_girl_boy\"],\"tags\":[]},\"👩‍👩‍👦‍👦\":{\"category\":\"people\",\"description\":\"family: woman, woman, boy, boy\",\"names\":[\"family_woman_woman_boy_boy\"],\"tags\":[]},\"👩‍👩‍👧‍👧\":{\"category\":\"people\",\"description\":\"family: woman, woman, girl, girl\",\"names\":[\"family_woman_woman_girl_girl\"],\"tags\":[]},\"👨‍👨‍👦\":{\"category\":\"people\",\"description\":\"family: man, man, boy\",\"names\":[\"family_man_man_boy\"],\"tags\":[]},\"👨‍👨‍👧\":{\"category\":\"people\",\"description\":\"family: man, man, girl\",\"names\":[\"family_man_man_girl\"],\"tags\":[]},\"👨‍👨‍👧‍👦\":{\"category\":\"people\",\"description\":\"family: man, man, girl, boy\",\"names\":[\"family_man_man_girl_boy\"],\"tags\":[]},\"👨‍👨‍👦‍👦\":{\"category\":\"people\",\"description\":\"family: man, man, boy, boy\",\"names\":[\"family_man_man_boy_boy\"],\"tags\":[]},\"👨‍👨‍👧‍👧\":{\"category\":\"people\",\"description\":\"family: man, man, girl, girl\",\"names\":[\"family_man_man_girl_girl\"],\"tags\":[]},\"👩‍👦\":{\"category\":\"people\",\"description\":\"family: woman, boy\",\"names\":[\"family_woman_boy\"],\"tags\":[]},\"👩‍👧\":{\"category\":\"people\",\"description\":\"family: woman, girl\",\"names\":[\"family_woman_girl\"],\"tags\":[]},\"👩‍👧‍👦\":{\"category\":\"people\",\"description\":\"family: woman, girl, boy\",\"names\":[\"family_woman_girl_boy\"],\"tags\":[]},\"👩‍👦‍👦\":{\"category\":\"people\",\"description\":\"family: woman, boy, boy\",\"names\":[\"family_woman_boy_boy\"],\"tags\":[]},\"👩‍👧‍👧\":{\"category\":\"people\",\"description\":\"family: woman, girl, girl\",\"names\":[\"family_woman_girl_girl\"],\"tags\":[]},\"👨‍👦\":{\"category\":\"people\",\"description\":\"family: man, boy\",\"names\":[\"family_man_boy\"],\"tags\":[]},\"👨‍👧\":{\"category\":\"people\",\"description\":\"family: man, girl\",\"names\":[\"family_man_girl\"],\"tags\":[]},\"👨‍👧‍👦\":{\"category\":\"people\",\"description\":\"family: man, girl, boy\",\"names\":[\"family_man_girl_boy\"],\"tags\":[]},\"👨‍👦‍👦\":{\"category\":\"people\",\"description\":\"family: man, boy, boy\",\"names\":[\"family_man_boy_boy\"],\"tags\":[]},\"👨‍👧‍👧\":{\"category\":\"people\",\"description\":\"family: man, girl, girl\",\"names\":[\"family_man_girl_girl\"],\"tags\":[]},\"👚\":{\"category\":\"people\",\"description\":\"woman’s clothes\",\"names\":[\"womans_clothes\"],\"tags\":[]},\"👕\":{\"category\":\"people\",\"description\":\"t-shirt\",\"names\":[\"shirt\",\"tshirt\"],\"tags\":[]},\"👖\":{\"category\":\"people\",\"description\":\"jeans\",\"names\":[\"jeans\"],\"tags\":[\"pants\"]},\"👔\":{\"category\":\"people\",\"description\":\"necktie\",\"names\":[\"necktie\"],\"tags\":[\"shirt\",\"formal\"]},\"👗\":{\"category\":\"people\",\"description\":\"dress\",\"names\":[\"dress\"],\"tags\":[]},\"👙\":{\"category\":\"people\",\"description\":\"bikini\",\"names\":[\"bikini\"],\"tags\":[\"beach\"]},\"👘\":{\"category\":\"people\",\"description\":\"kimono\",\"names\":[\"kimono\"],\"tags\":[]},\"👠\":{\"category\":\"people\",\"description\":\"high-heeled shoe\",\"names\":[\"high_heel\"],\"tags\":[\"shoe\"]},\"👡\":{\"category\":\"people\",\"description\":\"woman’s sandal\",\"names\":[\"sandal\"],\"tags\":[\"shoe\"]},\"👢\":{\"category\":\"people\",\"description\":\"woman’s boot\",\"names\":[\"boot\"],\"tags\":[]},\"👞\":{\"category\":\"people\",\"description\":\"man’s shoe\",\"names\":[\"mans_shoe\",\"shoe\"],\"tags\":[]},\"👟\":{\"category\":\"people\",\"description\":\"running shoe\",\"names\":[\"athletic_shoe\"],\"tags\":[\"sneaker\",\"sport\",\"running\"]},\"👒\":{\"category\":\"people\",\"description\":\"woman’s hat\",\"names\":[\"womans_hat\"],\"tags\":[]},\"🎩\":{\"category\":\"people\",\"description\":\"top hat\",\"names\":[\"tophat\"],\"tags\":[\"hat\",\"classy\"]},\"🎓\":{\"category\":\"people\",\"description\":\"graduation cap\",\"names\":[\"mortar_board\"],\"tags\":[\"education\",\"college\",\"university\",\"graduation\"]},\"👑\":{\"category\":\"people\",\"description\":\"crown\",\"names\":[\"crown\"],\"tags\":[\"king\",\"queen\",\"royal\"]},\"⛑\":{\"category\":\"people\",\"description\":\"rescue worker’s helmet\",\"names\":[\"rescue_worker_helmet\"],\"tags\":[]},\"🎒\":{\"category\":\"people\",\"description\":\"school backpack\",\"names\":[\"school_satchel\"],\"tags\":[]},\"👝\":{\"category\":\"people\",\"description\":\"clutch bag\",\"names\":[\"pouch\"],\"tags\":[\"bag\"]},\"👛\":{\"category\":\"people\",\"description\":\"purse\",\"names\":[\"purse\"],\"tags\":[]},\"👜\":{\"category\":\"people\",\"description\":\"handbag\",\"names\":[\"handbag\"],\"tags\":[\"bag\"]},\"💼\":{\"category\":\"people\",\"description\":\"briefcase\",\"names\":[\"briefcase\"],\"tags\":[\"business\"]},\"👓\":{\"category\":\"people\",\"description\":\"glasses\",\"names\":[\"eyeglasses\"],\"tags\":[\"glasses\"]},\"🕶\":{\"category\":\"people\",\"description\":\"sunglasses\",\"names\":[\"dark_sunglasses\"],\"tags\":[]},\"🌂\":{\"category\":\"people\",\"description\":\"closed umbrella\",\"names\":[\"closed_umbrella\"],\"tags\":[\"weather\",\"rain\"]},\"☂️\":{\"category\":\"people\",\"description\":\"umbrella\",\"names\":[\"open_umbrella\"],\"tags\":[]},\"🐶\":{\"category\":\"nature\",\"description\":\"dog face\",\"names\":[\"dog\"],\"tags\":[\"pet\"]},\"🐱\":{\"category\":\"nature\",\"description\":\"cat face\",\"names\":[\"cat\"],\"tags\":[\"pet\"]},\"🐭\":{\"category\":\"nature\",\"description\":\"mouse face\",\"names\":[\"mouse\"],\"tags\":[]},\"🐹\":{\"category\":\"nature\",\"description\":\"hamster face\",\"names\":[\"hamster\"],\"tags\":[\"pet\"]},\"🐰\":{\"category\":\"nature\",\"description\":\"rabbit face\",\"names\":[\"rabbit\"],\"tags\":[\"bunny\"]},\"🦊\":{\"category\":\"nature\",\"description\":\"fox face\",\"names\":[\"fox_face\"],\"tags\":[]},\"🐻\":{\"category\":\"nature\",\"description\":\"bear face\",\"names\":[\"bear\"],\"tags\":[]},\"🐼\":{\"category\":\"nature\",\"description\":\"panda face\",\"names\":[\"panda_face\"],\"tags\":[]},\"🐨\":{\"category\":\"nature\",\"description\":\"koala\",\"names\":[\"koala\"],\"tags\":[]},\"🐯\":{\"category\":\"nature\",\"description\":\"tiger face\",\"names\":[\"tiger\"],\"tags\":[]},\"🦁\":{\"category\":\"nature\",\"description\":\"lion face\",\"names\":[\"lion\"],\"tags\":[]},\"🐮\":{\"category\":\"nature\",\"description\":\"cow face\",\"names\":[\"cow\"],\"tags\":[]},\"🐷\":{\"category\":\"nature\",\"description\":\"pig face\",\"names\":[\"pig\"],\"tags\":[]},\"🐽\":{\"category\":\"nature\",\"description\":\"pig nose\",\"names\":[\"pig_nose\"],\"tags\":[]},\"🐸\":{\"category\":\"nature\",\"description\":\"frog face\",\"names\":[\"frog\"],\"tags\":[]},\"🐵\":{\"category\":\"nature\",\"description\":\"monkey face\",\"names\":[\"monkey_face\"],\"tags\":[]},\"🙈\":{\"category\":\"nature\",\"description\":\"see-no-evil monkey\",\"names\":[\"see_no_evil\"],\"tags\":[\"monkey\",\"blind\",\"ignore\"]},\"🙉\":{\"category\":\"nature\",\"description\":\"hear-no-evil monkey\",\"names\":[\"hear_no_evil\"],\"tags\":[\"monkey\",\"deaf\"]},\"🙊\":{\"category\":\"nature\",\"description\":\"speak-no-evil monkey\",\"names\":[\"speak_no_evil\"],\"tags\":[\"monkey\",\"mute\",\"hush\"]},\"🐒\":{\"category\":\"nature\",\"description\":\"monkey\",\"names\":[\"monkey\"],\"tags\":[]},\"🐔\":{\"category\":\"nature\",\"description\":\"chicken\",\"names\":[\"chicken\"],\"tags\":[]},\"🐧\":{\"category\":\"nature\",\"description\":\"penguin\",\"names\":[\"penguin\"],\"tags\":[]},\"🐦\":{\"category\":\"nature\",\"description\":\"bird\",\"names\":[\"bird\"],\"tags\":[]},\"🐤\":{\"category\":\"nature\",\"description\":\"baby chick\",\"names\":[\"baby_chick\"],\"tags\":[]},\"🐣\":{\"category\":\"nature\",\"description\":\"hatching chick\",\"names\":[\"hatching_chick\"],\"tags\":[]},\"🐥\":{\"category\":\"nature\",\"description\":\"front-facing baby chick\",\"names\":[\"hatched_chick\"],\"tags\":[]},\"🦆\":{\"category\":\"nature\",\"description\":\"duck\",\"names\":[\"duck\"],\"tags\":[]},\"🦅\":{\"category\":\"nature\",\"description\":\"eagle\",\"names\":[\"eagle\"],\"tags\":[]},\"🦉\":{\"category\":\"nature\",\"description\":\"owl\",\"names\":[\"owl\"],\"tags\":[]},\"🦇\":{\"category\":\"nature\",\"description\":\"bat\",\"names\":[\"bat\"],\"tags\":[]},\"🐺\":{\"category\":\"nature\",\"description\":\"wolf face\",\"names\":[\"wolf\"],\"tags\":[]},\"🐗\":{\"category\":\"nature\",\"description\":\"boar\",\"names\":[\"boar\"],\"tags\":[]},\"🐴\":{\"category\":\"nature\",\"description\":\"horse face\",\"names\":[\"horse\"],\"tags\":[]},\"🦄\":{\"category\":\"nature\",\"description\":\"unicorn face\",\"names\":[\"unicorn\"],\"tags\":[]},\"🐝\":{\"category\":\"nature\",\"description\":\"honeybee\",\"names\":[\"bee\",\"honeybee\"],\"tags\":[]},\"🐛\":{\"category\":\"nature\",\"description\":\"bug\",\"names\":[\"bug\"],\"tags\":[]},\"🦋\":{\"category\":\"nature\",\"description\":\"butterfly\",\"names\":[\"butterfly\"],\"tags\":[]},\"🐌\":{\"category\":\"nature\",\"description\":\"snail\",\"names\":[\"snail\"],\"tags\":[\"slow\"]},\"🐚\":{\"category\":\"nature\",\"description\":\"spiral shell\",\"names\":[\"shell\"],\"tags\":[\"sea\",\"beach\"]},\"🐞\":{\"category\":\"nature\",\"description\":\"lady beetle\",\"names\":[\"beetle\"],\"tags\":[\"bug\"]},\"🐜\":{\"category\":\"nature\",\"description\":\"ant\",\"names\":[\"ant\"],\"tags\":[]},\"🕷\":{\"category\":\"nature\",\"description\":\"spider\",\"names\":[\"spider\"],\"tags\":[]},\"🕸\":{\"category\":\"nature\",\"description\":\"spider web\",\"names\":[\"spider_web\"],\"tags\":[]},\"🐢\":{\"category\":\"nature\",\"description\":\"turtle\",\"names\":[\"turtle\"],\"tags\":[\"slow\"]},\"🐍\":{\"category\":\"nature\",\"description\":\"snake\",\"names\":[\"snake\"],\"tags\":[]},\"🦎\":{\"category\":\"nature\",\"description\":\"lizard\",\"names\":[\"lizard\"],\"tags\":[]},\"🦂\":{\"category\":\"nature\",\"description\":\"scorpion\",\"names\":[\"scorpion\"],\"tags\":[]},\"🦀\":{\"category\":\"nature\",\"description\":\"crab\",\"names\":[\"crab\"],\"tags\":[]},\"🦑\":{\"category\":\"nature\",\"description\":\"squid\",\"names\":[\"squid\"],\"tags\":[]},\"🐙\":{\"category\":\"nature\",\"description\":\"octopus\",\"names\":[\"octopus\"],\"tags\":[]},\"🦐\":{\"category\":\"nature\",\"description\":\"shrimp\",\"names\":[\"shrimp\"],\"tags\":[]},\"🐠\":{\"category\":\"nature\",\"description\":\"tropical fish\",\"names\":[\"tropical_fish\"],\"tags\":[]},\"🐟\":{\"category\":\"nature\",\"description\":\"fish\",\"names\":[\"fish\"],\"tags\":[]},\"🐡\":{\"category\":\"nature\",\"description\":\"blowfish\",\"names\":[\"blowfish\"],\"tags\":[]},\"🐬\":{\"category\":\"nature\",\"description\":\"dolphin\",\"names\":[\"dolphin\",\"flipper\"],\"tags\":[]},\"🦈\":{\"category\":\"nature\",\"description\":\"shark\",\"names\":[\"shark\"],\"tags\":[]},\"🐳\":{\"category\":\"nature\",\"description\":\"spouting whale\",\"names\":[\"whale\"],\"tags\":[\"sea\"]},\"🐋\":{\"category\":\"nature\",\"description\":\"whale\",\"names\":[\"whale2\"],\"tags\":[]},\"🐊\":{\"category\":\"nature\",\"description\":\"crocodile\",\"names\":[\"crocodile\"],\"tags\":[]},\"🐆\":{\"category\":\"nature\",\"description\":\"leopard\",\"names\":[\"leopard\"],\"tags\":[]},\"🐅\":{\"category\":\"nature\",\"description\":\"tiger\",\"names\":[\"tiger2\"],\"tags\":[]},\"🐃\":{\"category\":\"nature\",\"description\":\"water buffalo\",\"names\":[\"water_buffalo\"],\"tags\":[]},\"🐂\":{\"category\":\"nature\",\"description\":\"ox\",\"names\":[\"ox\"],\"tags\":[]},\"🐄\":{\"category\":\"nature\",\"description\":\"cow\",\"names\":[\"cow2\"],\"tags\":[]},\"🦌\":{\"category\":\"nature\",\"description\":\"deer\",\"names\":[\"deer\"],\"tags\":[]},\"🐪\":{\"category\":\"nature\",\"description\":\"camel\",\"names\":[\"dromedary_camel\"],\"tags\":[\"desert\"]},\"🐫\":{\"category\":\"nature\",\"description\":\"two-hump camel\",\"names\":[\"camel\"],\"tags\":[]},\"🐘\":{\"category\":\"nature\",\"description\":\"elephant\",\"names\":[\"elephant\"],\"tags\":[]},\"🦏\":{\"category\":\"nature\",\"description\":\"rhinoceros\",\"names\":[\"rhinoceros\"],\"tags\":[]},\"🦍\":{\"category\":\"nature\",\"description\":\"gorilla\",\"names\":[\"gorilla\"],\"tags\":[]},\"🐎\":{\"category\":\"nature\",\"description\":\"horse\",\"names\":[\"racehorse\"],\"tags\":[\"speed\"]},\"🐖\":{\"category\":\"nature\",\"description\":\"pig\",\"names\":[\"pig2\"],\"tags\":[]},\"🐐\":{\"category\":\"nature\",\"description\":\"goat\",\"names\":[\"goat\"],\"tags\":[]},\"🐏\":{\"category\":\"nature\",\"description\":\"ram\",\"names\":[\"ram\"],\"tags\":[]},\"🐑\":{\"category\":\"nature\",\"description\":\"sheep\",\"names\":[\"sheep\"],\"tags\":[]},\"🐕\":{\"category\":\"nature\",\"description\":\"dog\",\"names\":[\"dog2\"],\"tags\":[]},\"🐩\":{\"category\":\"nature\",\"description\":\"poodle\",\"names\":[\"poodle\"],\"tags\":[\"dog\"]},\"🐈\":{\"category\":\"nature\",\"description\":\"cat\",\"names\":[\"cat2\"],\"tags\":[]},\"🐓\":{\"category\":\"nature\",\"description\":\"rooster\",\"names\":[\"rooster\"],\"tags\":[]},\"🦃\":{\"category\":\"nature\",\"description\":\"turkey\",\"names\":[\"turkey\"],\"tags\":[\"thanksgiving\"]},\"🕊\":{\"category\":\"nature\",\"description\":\"dove\",\"names\":[\"dove\"],\"tags\":[\"peace\"]},\"🐇\":{\"category\":\"nature\",\"description\":\"rabbit\",\"names\":[\"rabbit2\"],\"tags\":[]},\"🐁\":{\"category\":\"nature\",\"description\":\"mouse\",\"names\":[\"mouse2\"],\"tags\":[]},\"🐀\":{\"category\":\"nature\",\"description\":\"rat\",\"names\":[\"rat\"],\"tags\":[]},\"🐿\":{\"category\":\"nature\",\"description\":\"chipmunk\",\"names\":[\"chipmunk\"],\"tags\":[]},\"🐾\":{\"category\":\"nature\",\"description\":\"paw prints\",\"names\":[\"feet\",\"paw_prints\"],\"tags\":[]},\"🐉\":{\"category\":\"nature\",\"description\":\"dragon\",\"names\":[\"dragon\"],\"tags\":[]},\"🐲\":{\"category\":\"nature\",\"description\":\"dragon face\",\"names\":[\"dragon_face\"],\"tags\":[]},\"🌵\":{\"category\":\"nature\",\"description\":\"cactus\",\"names\":[\"cactus\"],\"tags\":[]},\"🎄\":{\"category\":\"nature\",\"description\":\"Christmas tree\",\"names\":[\"christmas_tree\"],\"tags\":[]},\"🌲\":{\"category\":\"nature\",\"description\":\"evergreen tree\",\"names\":[\"evergreen_tree\"],\"tags\":[\"wood\"]},\"🌳\":{\"category\":\"nature\",\"description\":\"deciduous tree\",\"names\":[\"deciduous_tree\"],\"tags\":[\"wood\"]},\"🌴\":{\"category\":\"nature\",\"description\":\"palm tree\",\"names\":[\"palm_tree\"],\"tags\":[]},\"🌱\":{\"category\":\"nature\",\"description\":\"seedling\",\"names\":[\"seedling\"],\"tags\":[\"plant\"]},\"🌿\":{\"category\":\"nature\",\"description\":\"herb\",\"names\":[\"herb\"],\"tags\":[]},\"☘️\":{\"category\":\"nature\",\"description\":\"shamrock\",\"names\":[\"shamrock\"],\"tags\":[]},\"🍀\":{\"category\":\"nature\",\"description\":\"four leaf clover\",\"names\":[\"four_leaf_clover\"],\"tags\":[\"luck\"]},\"🎍\":{\"category\":\"nature\",\"description\":\"pine decoration\",\"names\":[\"bamboo\"],\"tags\":[]},\"🎋\":{\"category\":\"nature\",\"description\":\"tanabata tree\",\"names\":[\"tanabata_tree\"],\"tags\":[]},\"🍃\":{\"category\":\"nature\",\"description\":\"leaf fluttering in wind\",\"names\":[\"leaves\"],\"tags\":[\"leaf\"]},\"🍂\":{\"category\":\"nature\",\"description\":\"fallen leaf\",\"names\":[\"fallen_leaf\"],\"tags\":[\"autumn\"]},\"🍁\":{\"category\":\"nature\",\"description\":\"maple leaf\",\"names\":[\"maple_leaf\"],\"tags\":[\"canada\"]},\"🍄\":{\"category\":\"nature\",\"description\":\"mushroom\",\"names\":[\"mushroom\"],\"tags\":[]},\"🌾\":{\"category\":\"nature\",\"description\":\"sheaf of rice\",\"names\":[\"ear_of_rice\"],\"tags\":[]},\"💐\":{\"category\":\"nature\",\"description\":\"bouquet\",\"names\":[\"bouquet\"],\"tags\":[\"flowers\"]},\"🌷\":{\"category\":\"nature\",\"description\":\"tulip\",\"names\":[\"tulip\"],\"tags\":[\"flower\"]},\"🌹\":{\"category\":\"nature\",\"description\":\"rose\",\"names\":[\"rose\"],\"tags\":[\"flower\"]},\"🥀\":{\"category\":\"nature\",\"description\":\"wilted flower\",\"names\":[\"wilted_flower\"],\"tags\":[]},\"🌻\":{\"category\":\"nature\",\"description\":\"sunflower\",\"names\":[\"sunflower\"],\"tags\":[]},\"🌼\":{\"category\":\"nature\",\"description\":\"blossom\",\"names\":[\"blossom\"],\"tags\":[]},\"🌸\":{\"category\":\"nature\",\"description\":\"cherry blossom\",\"names\":[\"cherry_blossom\"],\"tags\":[\"flower\",\"spring\"]},\"🌺\":{\"category\":\"nature\",\"description\":\"hibiscus\",\"names\":[\"hibiscus\"],\"tags\":[]},\"🌎\":{\"category\":\"nature\",\"description\":\"globe showing Americas\",\"names\":[\"earth_americas\"],\"tags\":[\"globe\",\"world\",\"international\"]},\"🌍\":{\"category\":\"nature\",\"description\":\"globe showing Europe-Africa\",\"names\":[\"earth_africa\"],\"tags\":[\"globe\",\"world\",\"international\"]},\"🌏\":{\"category\":\"nature\",\"description\":\"globe showing Asia-Australia\",\"names\":[\"earth_asia\"],\"tags\":[\"globe\",\"world\",\"international\"]},\"🌕\":{\"category\":\"nature\",\"description\":\"full moon\",\"names\":[\"full_moon\"],\"tags\":[]},\"🌖\":{\"category\":\"nature\",\"description\":\"waning gibbous moon\",\"names\":[\"waning_gibbous_moon\"],\"tags\":[]},\"🌗\":{\"category\":\"nature\",\"description\":\"last quarter moon\",\"names\":[\"last_quarter_moon\"],\"tags\":[]},\"🌘\":{\"category\":\"nature\",\"description\":\"waning crescent moon\",\"names\":[\"waning_crescent_moon\"],\"tags\":[]},\"🌑\":{\"category\":\"nature\",\"description\":\"new moon\",\"names\":[\"new_moon\"],\"tags\":[]},\"🌒\":{\"category\":\"nature\",\"description\":\"waxing crescent moon\",\"names\":[\"waxing_crescent_moon\"],\"tags\":[]},\"🌓\":{\"category\":\"nature\",\"description\":\"first quarter moon\",\"names\":[\"first_quarter_moon\"],\"tags\":[]},\"🌔\":{\"category\":\"nature\",\"description\":\"waxing gibbous moon\",\"names\":[\"moon\",\"waxing_gibbous_moon\"],\"tags\":[]},\"🌚\":{\"category\":\"nature\",\"description\":\"new moon face\",\"names\":[\"new_moon_with_face\"],\"tags\":[]},\"🌝\":{\"category\":\"nature\",\"description\":\"full moon with face\",\"names\":[\"full_moon_with_face\"],\"tags\":[]},\"🌞\":{\"category\":\"nature\",\"description\":\"sun with face\",\"names\":[\"sun_with_face\"],\"tags\":[\"summer\"]},\"🌛\":{\"category\":\"nature\",\"description\":\"first quarter moon with face\",\"names\":[\"first_quarter_moon_with_face\"],\"tags\":[]},\"🌜\":{\"category\":\"nature\",\"description\":\"last quarter moon with face\",\"names\":[\"last_quarter_moon_with_face\"],\"tags\":[]},\"🌙\":{\"category\":\"nature\",\"description\":\"crescent moon\",\"names\":[\"crescent_moon\"],\"tags\":[\"night\"]},\"💫\":{\"category\":\"nature\",\"description\":\"dizzy\",\"names\":[\"dizzy\"],\"tags\":[\"star\"]},\"⭐️\":{\"category\":\"nature\",\"description\":\"white medium star\",\"names\":[\"star\"],\"tags\":[]},\"🌟\":{\"category\":\"nature\",\"description\":\"glowing star\",\"names\":[\"star2\"],\"tags\":[]},\"✨\":{\"category\":\"nature\",\"description\":\"sparkles\",\"names\":[\"sparkles\"],\"tags\":[\"shiny\"]},\"⚡️\":{\"category\":\"nature\",\"description\":\"high voltage\",\"names\":[\"zap\"],\"tags\":[\"lightning\",\"thunder\"]},\"🔥\":{\"category\":\"nature\",\"description\":\"fire\",\"names\":[\"fire\"],\"tags\":[\"burn\"]},\"💥\":{\"category\":\"nature\",\"description\":\"collision\",\"names\":[\"boom\",\"collision\"],\"tags\":[\"explode\"]},\"☄\":{\"category\":\"nature\",\"description\":\"comet\",\"names\":[\"comet\"],\"tags\":[]},\"☀️\":{\"category\":\"nature\",\"description\":\"sun\",\"names\":[\"sunny\"],\"tags\":[\"weather\"]},\"🌤\":{\"category\":\"nature\",\"description\":\"sun behind small cloud\",\"names\":[\"sun_behind_small_cloud\"],\"tags\":[]},\"⛅️\":{\"category\":\"nature\",\"description\":\"sun behind cloud\",\"names\":[\"partly_sunny\"],\"tags\":[\"weather\",\"cloud\"]},\"🌥\":{\"category\":\"nature\",\"description\":\"sun behind large cloud\",\"names\":[\"sun_behind_large_cloud\"],\"tags\":[]},\"🌦\":{\"category\":\"nature\",\"description\":\"sun behind rain cloud\",\"names\":[\"sun_behind_rain_cloud\"],\"tags\":[]},\"🌈\":{\"category\":\"nature\",\"description\":\"rainbow\",\"names\":[\"rainbow\"],\"tags\":[]},\"☁️\":{\"category\":\"nature\",\"description\":\"cloud\",\"names\":[\"cloud\"],\"tags\":[]},\"🌧\":{\"category\":\"nature\",\"description\":\"cloud with rain\",\"names\":[\"cloud_with_rain\"],\"tags\":[]},\"⛈\":{\"category\":\"nature\",\"description\":\"cloud with lightning and rain\",\"names\":[\"cloud_with_lightning_and_rain\"],\"tags\":[]},\"🌩\":{\"category\":\"nature\",\"description\":\"cloud with lightning\",\"names\":[\"cloud_with_lightning\"],\"tags\":[]},\"🌨\":{\"category\":\"nature\",\"description\":\"cloud with snow\",\"names\":[\"cloud_with_snow\"],\"tags\":[]},\"☃️\":{\"category\":\"nature\",\"description\":\"snowman\",\"names\":[\"snowman_with_snow\"],\"tags\":[\"winter\",\"christmas\"]},\"⛄️\":{\"category\":\"nature\",\"description\":\"snowman without snow\",\"names\":[\"snowman\"],\"tags\":[\"winter\"]},\"❄️\":{\"category\":\"nature\",\"description\":\"snowflake\",\"names\":[\"snowflake\"],\"tags\":[\"winter\",\"cold\",\"weather\"]},\"🌬\":{\"category\":\"nature\",\"description\":\"wind face\",\"names\":[\"wind_face\"],\"tags\":[]},\"💨\":{\"category\":\"nature\",\"description\":\"dashing away\",\"names\":[\"dash\"],\"tags\":[\"wind\",\"blow\",\"fast\"]},\"🌪\":{\"category\":\"nature\",\"description\":\"tornado\",\"names\":[\"tornado\"],\"tags\":[]},\"🌫\":{\"category\":\"nature\",\"description\":\"fog\",\"names\":[\"fog\"],\"tags\":[]},\"🌊\":{\"category\":\"nature\",\"description\":\"water wave\",\"names\":[\"ocean\"],\"tags\":[\"sea\"]},\"💧\":{\"category\":\"nature\",\"description\":\"droplet\",\"names\":[\"droplet\"],\"tags\":[\"water\"]},\"💦\":{\"category\":\"nature\",\"description\":\"sweat droplets\",\"names\":[\"sweat_drops\"],\"tags\":[\"water\",\"workout\"]},\"☔️\":{\"category\":\"nature\",\"description\":\"umbrella with rain drops\",\"names\":[\"umbrella\"],\"tags\":[\"rain\",\"weather\"]},\"🍏\":{\"category\":\"foods\",\"description\":\"green apple\",\"names\":[\"green_apple\"],\"tags\":[\"fruit\"]},\"🍎\":{\"category\":\"foods\",\"description\":\"red apple\",\"names\":[\"apple\"],\"tags\":[]},\"🍐\":{\"category\":\"foods\",\"description\":\"pear\",\"names\":[\"pear\"],\"tags\":[]},\"🍊\":{\"category\":\"foods\",\"description\":\"tangerine\",\"names\":[\"tangerine\",\"orange\",\"mandarin\"],\"tags\":[]},\"🍋\":{\"category\":\"foods\",\"description\":\"lemon\",\"names\":[\"lemon\"],\"tags\":[]},\"🍌\":{\"category\":\"foods\",\"description\":\"banana\",\"names\":[\"banana\"],\"tags\":[\"fruit\"]},\"🍉\":{\"category\":\"foods\",\"description\":\"watermelon\",\"names\":[\"watermelon\"],\"tags\":[]},\"🍇\":{\"category\":\"foods\",\"description\":\"grapes\",\"names\":[\"grapes\"],\"tags\":[]},\"🍓\":{\"category\":\"foods\",\"description\":\"strawberry\",\"names\":[\"strawberry\"],\"tags\":[\"fruit\"]},\"🍈\":{\"category\":\"foods\",\"description\":\"melon\",\"names\":[\"melon\"],\"tags\":[]},\"🍒\":{\"category\":\"foods\",\"description\":\"cherries\",\"names\":[\"cherries\"],\"tags\":[\"fruit\"]},\"🍑\":{\"category\":\"foods\",\"description\":\"peach\",\"names\":[\"peach\"],\"tags\":[]},\"🍍\":{\"category\":\"foods\",\"description\":\"pineapple\",\"names\":[\"pineapple\"],\"tags\":[]},\"🥝\":{\"category\":\"foods\",\"description\":\"kiwi fruit\",\"names\":[\"kiwi_fruit\"],\"tags\":[]},\"🥑\":{\"category\":\"foods\",\"description\":\"avocado\",\"names\":[\"avocado\"],\"tags\":[]},\"🍅\":{\"category\":\"foods\",\"description\":\"tomato\",\"names\":[\"tomato\"],\"tags\":[]},\"🍆\":{\"category\":\"foods\",\"description\":\"eggplant\",\"names\":[\"eggplant\"],\"tags\":[\"aubergine\"]},\"🥒\":{\"category\":\"foods\",\"description\":\"cucumber\",\"names\":[\"cucumber\"],\"tags\":[]},\"🥕\":{\"category\":\"foods\",\"description\":\"carrot\",\"names\":[\"carrot\"],\"tags\":[]},\"🌽\":{\"category\":\"foods\",\"description\":\"ear of corn\",\"names\":[\"corn\"],\"tags\":[]},\"🌶\":{\"category\":\"foods\",\"description\":\"hot pepper\",\"names\":[\"hot_pepper\"],\"tags\":[\"spicy\"]},\"🥔\":{\"category\":\"foods\",\"description\":\"potato\",\"names\":[\"potato\"],\"tags\":[]},\"🍠\":{\"category\":\"foods\",\"description\":\"roasted sweet potato\",\"names\":[\"sweet_potato\"],\"tags\":[]},\"🌰\":{\"category\":\"foods\",\"description\":\"chestnut\",\"names\":[\"chestnut\"],\"tags\":[]},\"🥜\":{\"category\":\"foods\",\"description\":\"peanuts\",\"names\":[\"peanuts\"],\"tags\":[]},\"🍯\":{\"category\":\"foods\",\"description\":\"honey pot\",\"names\":[\"honey_pot\"],\"tags\":[]},\"🥐\":{\"category\":\"foods\",\"description\":\"croissant\",\"names\":[\"croissant\"],\"tags\":[]},\"🍞\":{\"category\":\"foods\",\"description\":\"bread\",\"names\":[\"bread\"],\"tags\":[\"toast\"]},\"🥖\":{\"category\":\"foods\",\"description\":\"baguette bread\",\"names\":[\"baguette_bread\"],\"tags\":[]},\"🧀\":{\"category\":\"foods\",\"description\":\"cheese wedge\",\"names\":[\"cheese\"],\"tags\":[]},\"🥚\":{\"category\":\"foods\",\"description\":\"egg\",\"names\":[\"egg\"],\"tags\":[]},\"🍳\":{\"category\":\"foods\",\"description\":\"cooking\",\"names\":[\"fried_egg\"],\"tags\":[\"breakfast\"]},\"🥓\":{\"category\":\"foods\",\"description\":\"bacon\",\"names\":[\"bacon\"],\"tags\":[]},\"🥞\":{\"category\":\"foods\",\"description\":\"pancakes\",\"names\":[\"pancakes\"],\"tags\":[]},\"🍤\":{\"category\":\"foods\",\"description\":\"fried shrimp\",\"names\":[\"fried_shrimp\"],\"tags\":[\"tempura\"]},\"🍗\":{\"category\":\"foods\",\"description\":\"poultry leg\",\"names\":[\"poultry_leg\"],\"tags\":[\"meat\",\"chicken\"]},\"🍖\":{\"category\":\"foods\",\"description\":\"meat on bone\",\"names\":[\"meat_on_bone\"],\"tags\":[]},\"🍕\":{\"category\":\"foods\",\"description\":\"pizza\",\"names\":[\"pizza\"],\"tags\":[]},\"🌭\":{\"category\":\"foods\",\"description\":\"hot dog\",\"names\":[\"hotdog\"],\"tags\":[]},\"🍔\":{\"category\":\"foods\",\"description\":\"hamburger\",\"names\":[\"hamburger\"],\"tags\":[\"burger\"]},\"🍟\":{\"category\":\"foods\",\"description\":\"french fries\",\"names\":[\"fries\"],\"tags\":[]},\"🥙\":{\"category\":\"foods\",\"description\":\"stuffed flatbread\",\"names\":[\"stuffed_flatbread\"],\"tags\":[]},\"🌮\":{\"category\":\"foods\",\"description\":\"taco\",\"names\":[\"taco\"],\"tags\":[]},\"🌯\":{\"category\":\"foods\",\"description\":\"burrito\",\"names\":[\"burrito\"],\"tags\":[]},\"🥗\":{\"category\":\"foods\",\"description\":\"green salad\",\"names\":[\"green_salad\"],\"tags\":[]},\"🥘\":{\"category\":\"foods\",\"description\":\"shallow pan of food\",\"names\":[\"shallow_pan_of_food\"],\"tags\":[\"paella\",\"curry\"]},\"🍝\":{\"category\":\"foods\",\"description\":\"spaghetti\",\"names\":[\"spaghetti\"],\"tags\":[\"pasta\"]},\"🍜\":{\"category\":\"foods\",\"description\":\"steaming bowl\",\"names\":[\"ramen\"],\"tags\":[\"noodle\"]},\"🍲\":{\"category\":\"foods\",\"description\":\"pot of food\",\"names\":[\"stew\"],\"tags\":[]},\"🍥\":{\"category\":\"foods\",\"description\":\"fish cake with swirl\",\"names\":[\"fish_cake\"],\"tags\":[]},\"🍣\":{\"category\":\"foods\",\"description\":\"sushi\",\"names\":[\"sushi\"],\"tags\":[]},\"🍱\":{\"category\":\"foods\",\"description\":\"bento box\",\"names\":[\"bento\"],\"tags\":[]},\"🍛\":{\"category\":\"foods\",\"description\":\"curry rice\",\"names\":[\"curry\"],\"tags\":[]},\"🍚\":{\"category\":\"foods\",\"description\":\"cooked rice\",\"names\":[\"rice\"],\"tags\":[]},\"🍙\":{\"category\":\"foods\",\"description\":\"rice ball\",\"names\":[\"rice_ball\"],\"tags\":[]},\"🍘\":{\"category\":\"foods\",\"description\":\"rice cracker\",\"names\":[\"rice_cracker\"],\"tags\":[]},\"🍢\":{\"category\":\"foods\",\"description\":\"oden\",\"names\":[\"oden\"],\"tags\":[]},\"🍡\":{\"category\":\"foods\",\"description\":\"dango\",\"names\":[\"dango\"],\"tags\":[]},\"🍧\":{\"category\":\"foods\",\"description\":\"shaved ice\",\"names\":[\"shaved_ice\"],\"tags\":[]},\"🍨\":{\"category\":\"foods\",\"description\":\"ice cream\",\"names\":[\"ice_cream\"],\"tags\":[]},\"🍦\":{\"category\":\"foods\",\"description\":\"soft ice cream\",\"names\":[\"icecream\"],\"tags\":[]},\"🍰\":{\"category\":\"foods\",\"description\":\"shortcake\",\"names\":[\"cake\"],\"tags\":[\"dessert\"]},\"🎂\":{\"category\":\"foods\",\"description\":\"birthday cake\",\"names\":[\"birthday\"],\"tags\":[\"party\"]},\"🍮\":{\"category\":\"foods\",\"description\":\"custard\",\"names\":[\"custard\"],\"tags\":[]},\"🍭\":{\"category\":\"foods\",\"description\":\"lollipop\",\"names\":[\"lollipop\"],\"tags\":[]},\"🍬\":{\"category\":\"foods\",\"description\":\"candy\",\"names\":[\"candy\"],\"tags\":[\"sweet\"]},\"🍫\":{\"category\":\"foods\",\"description\":\"chocolate bar\",\"names\":[\"chocolate_bar\"],\"tags\":[]},\"🍿\":{\"category\":\"foods\",\"description\":\"popcorn\",\"names\":[\"popcorn\"],\"tags\":[]},\"🍩\":{\"category\":\"foods\",\"description\":\"doughnut\",\"names\":[\"doughnut\"],\"tags\":[]},\"🍪\":{\"category\":\"foods\",\"description\":\"cookie\",\"names\":[\"cookie\"],\"tags\":[]},\"🥛\":{\"category\":\"foods\",\"description\":\"glass of milk\",\"names\":[\"milk_glass\"],\"tags\":[]},\"🍼\":{\"category\":\"foods\",\"description\":\"baby bottle\",\"names\":[\"baby_bottle\"],\"tags\":[\"milk\"]},\"☕️\":{\"category\":\"foods\",\"description\":\"hot beverage\",\"names\":[\"coffee\"],\"tags\":[\"cafe\",\"espresso\"]},\"🍵\":{\"category\":\"foods\",\"description\":\"teacup without handle\",\"names\":[\"tea\"],\"tags\":[\"green\",\"breakfast\"]},\"🍶\":{\"category\":\"foods\",\"description\":\"sake\",\"names\":[\"sake\"],\"tags\":[]},\"🍺\":{\"category\":\"foods\",\"description\":\"beer mug\",\"names\":[\"beer\"],\"tags\":[\"drink\"]},\"🍻\":{\"category\":\"foods\",\"description\":\"clinking beer mugs\",\"names\":[\"beers\"],\"tags\":[\"drinks\"]},\"🥂\":{\"category\":\"foods\",\"description\":\"clinking glasses\",\"names\":[\"clinking_glasses\"],\"tags\":[\"cheers\",\"toast\"]},\"🍷\":{\"category\":\"foods\",\"description\":\"wine glass\",\"names\":[\"wine_glass\"],\"tags\":[]},\"🥃\":{\"category\":\"foods\",\"description\":\"tumbler glass\",\"names\":[\"tumbler_glass\"],\"tags\":[\"whisky\"]},\"🍸\":{\"category\":\"foods\",\"description\":\"cocktail glass\",\"names\":[\"cocktail\"],\"tags\":[\"drink\"]},\"🍹\":{\"category\":\"foods\",\"description\":\"tropical drink\",\"names\":[\"tropical_drink\"],\"tags\":[\"summer\",\"vacation\"]},\"🍾\":{\"category\":\"foods\",\"description\":\"bottle with popping cork\",\"names\":[\"champagne\"],\"tags\":[\"bottle\",\"bubbly\",\"celebration\"]},\"🥄\":{\"category\":\"foods\",\"description\":\"spoon\",\"names\":[\"spoon\"],\"tags\":[]},\"🍴\":{\"category\":\"foods\",\"description\":\"fork and knife\",\"names\":[\"fork_and_knife\"],\"tags\":[\"cutlery\"]},\"🍽\":{\"category\":\"foods\",\"description\":\"fork and knife with plate\",\"names\":[\"plate_with_cutlery\"],\"tags\":[\"dining\",\"dinner\"]},\"⚽️\":{\"category\":\"activity\",\"description\":\"soccer ball\",\"names\":[\"soccer\"],\"tags\":[\"sports\"]},\"🏀\":{\"category\":\"activity\",\"description\":\"basketball\",\"names\":[\"basketball\"],\"tags\":[\"sports\"]},\"🏈\":{\"category\":\"activity\",\"description\":\"american football\",\"names\":[\"football\"],\"tags\":[\"sports\"]},\"⚾️\":{\"category\":\"activity\",\"description\":\"baseball\",\"names\":[\"baseball\"],\"tags\":[\"sports\"]},\"🎾\":{\"category\":\"activity\",\"description\":\"tennis\",\"names\":[\"tennis\"],\"tags\":[\"sports\"]},\"🏐\":{\"category\":\"activity\",\"description\":\"volleyball\",\"names\":[\"volleyball\"],\"tags\":[]},\"🏉\":{\"category\":\"activity\",\"description\":\"rugby football\",\"names\":[\"rugby_football\"],\"tags\":[]},\"🎱\":{\"category\":\"activity\",\"description\":\"pool 8 ball\",\"names\":[\"8ball\"],\"tags\":[\"pool\",\"billiards\"]},\"🏓\":{\"category\":\"activity\",\"description\":\"ping pong\",\"names\":[\"ping_pong\"],\"tags\":[]},\"🏸\":{\"category\":\"activity\",\"description\":\"badminton\",\"names\":[\"badminton\"],\"tags\":[]},\"🥅\":{\"category\":\"activity\",\"description\":\"goal net\",\"names\":[\"goal_net\"],\"tags\":[]},\"🏒\":{\"category\":\"activity\",\"description\":\"ice hockey\",\"names\":[\"ice_hockey\"],\"tags\":[]},\"🏑\":{\"category\":\"activity\",\"description\":\"field hockey\",\"names\":[\"field_hockey\"],\"tags\":[]},\"🏏\":{\"category\":\"activity\",\"description\":\"cricket\",\"names\":[\"cricket\"],\"tags\":[]},\"⛳️\":{\"category\":\"activity\",\"description\":\"flag in hole\",\"names\":[\"golf\"],\"tags\":[]},\"🏹\":{\"category\":\"activity\",\"description\":\"bow and arrow\",\"names\":[\"bow_and_arrow\"],\"tags\":[\"archery\"]},\"🎣\":{\"category\":\"activity\",\"description\":\"fishing pole\",\"names\":[\"fishing_pole_and_fish\"],\"tags\":[]},\"🥊\":{\"category\":\"activity\",\"description\":\"boxing glove\",\"names\":[\"boxing_glove\"],\"tags\":[]},\"🥋\":{\"category\":\"activity\",\"description\":\"martial arts uniform\",\"names\":[\"martial_arts_uniform\"],\"tags\":[]},\"⛸\":{\"category\":\"activity\",\"description\":\"ice skate\",\"names\":[\"ice_skate\"],\"tags\":[\"skating\"]},\"🎿\":{\"category\":\"activity\",\"description\":\"skis\",\"names\":[\"ski\"],\"tags\":[]},\"⛷\":{\"category\":\"activity\",\"description\":\"skier\",\"names\":[\"skier\"],\"tags\":[]},\"🏂\":{\"category\":\"activity\",\"description\":\"snowboarder\",\"names\":[\"snowboarder\"],\"tags\":[]},\"🏋️‍♀️\":{\"category\":\"activity\",\"description\":\"woman lifting weights\",\"names\":[\"weight_lifting_woman\"],\"tags\":[\"gym\",\"workout\"]},\"🏋\":{\"category\":\"activity\",\"description\":\"person lifting weights\",\"names\":[\"weight_lifting_man\"],\"tags\":[\"gym\",\"workout\"]},\"🤺\":{\"category\":\"activity\",\"description\":\"person fencing\",\"names\":[\"person_fencing\"],\"tags\":[]},\"🤼‍♀\":{\"category\":\"activity\",\"description\":\"women wrestling\",\"names\":[\"women_wrestling\"],\"tags\":[]},\"🤼‍♂\":{\"category\":\"activity\",\"description\":\"men wrestling\",\"names\":[\"men_wrestling\"],\"tags\":[]},\"🤸‍♀\":{\"category\":\"activity\",\"description\":\"woman cartwheeling\",\"names\":[\"woman_cartwheeling\"],\"tags\":[]},\"🤸‍♂\":{\"category\":\"activity\",\"description\":\"man cartwheeling\",\"names\":[\"man_cartwheeling\"],\"tags\":[]},\"⛹️‍♀️\":{\"category\":\"activity\",\"description\":\"woman bouncing ball\",\"names\":[\"basketball_woman\"],\"tags\":[]},\"⛹\":{\"category\":\"activity\",\"description\":\"person bouncing ball\",\"names\":[\"basketball_man\"],\"tags\":[]},\"🤾‍♀\":{\"category\":\"activity\",\"description\":\"woman playing handball\",\"names\":[\"woman_playing_handball\"],\"tags\":[]},\"🤾‍♂\":{\"category\":\"activity\",\"description\":\"man playing handball\",\"names\":[\"man_playing_handball\"],\"tags\":[]},\"🏌️‍♀️\":{\"category\":\"activity\",\"description\":\"woman golfing\",\"names\":[\"golfing_woman\"],\"tags\":[]},\"🏌\":{\"category\":\"activity\",\"description\":\"person golfing\",\"names\":[\"golfing_man\"],\"tags\":[]},\"🏄‍♀\":{\"category\":\"activity\",\"description\":\"woman surfing\",\"names\":[\"surfing_woman\"],\"tags\":[]},\"🏄\":{\"category\":\"activity\",\"description\":\"person surfing\",\"names\":[\"surfing_man\",\"surfer\"],\"tags\":[]},\"🏊‍♀\":{\"category\":\"activity\",\"description\":\"woman swimming\",\"names\":[\"swimming_woman\"],\"tags\":[]},\"🏊\":{\"category\":\"activity\",\"description\":\"person swimming\",\"names\":[\"swimming_man\",\"swimmer\"],\"tags\":[]},\"🤽‍♀\":{\"category\":\"activity\",\"description\":\"woman playing water polo\",\"names\":[\"woman_playing_water_polo\"],\"tags\":[]},\"🤽‍♂\":{\"category\":\"activity\",\"description\":\"man playing water polo\",\"names\":[\"man_playing_water_polo\"],\"tags\":[]},\"🚣‍♀\":{\"category\":\"activity\",\"description\":\"woman rowing boat\",\"names\":[\"rowing_woman\"],\"tags\":[]},\"🚣\":{\"category\":\"activity\",\"description\":\"person rowing boat\",\"names\":[\"rowing_man\",\"rowboat\"],\"tags\":[]},\"🏇\":{\"category\":\"activity\",\"description\":\"horse racing\",\"names\":[\"horse_racing\"],\"tags\":[]},\"🚴‍♀\":{\"category\":\"activity\",\"description\":\"woman biking\",\"names\":[\"biking_woman\"],\"tags\":[]},\"🚴\":{\"category\":\"activity\",\"description\":\"person biking\",\"names\":[\"biking_man\",\"bicyclist\"],\"tags\":[]},\"🚵‍♀\":{\"category\":\"activity\",\"description\":\"woman mountain biking\",\"names\":[\"mountain_biking_woman\"],\"tags\":[]},\"🚵\":{\"category\":\"activity\",\"description\":\"person mountain biking\",\"names\":[\"mountain_biking_man\",\"mountain_bicyclist\"],\"tags\":[]},\"🎽\":{\"category\":\"activity\",\"description\":\"running shirt\",\"names\":[\"running_shirt_with_sash\"],\"tags\":[\"marathon\"]},\"🏅\":{\"category\":\"activity\",\"description\":\"sports medal\",\"names\":[\"medal_sports\"],\"tags\":[\"gold\",\"winner\"]},\"🎖\":{\"category\":\"activity\",\"description\":\"military medal\",\"names\":[\"medal_military\"],\"tags\":[]},\"🥇\":{\"category\":\"activity\",\"description\":\"1st place medal\",\"names\":[\"1st_place_medal\"],\"tags\":[\"gold\"]},\"🥈\":{\"category\":\"activity\",\"description\":\"2nd place medal\",\"names\":[\"2nd_place_medal\"],\"tags\":[\"silver\"]},\"🥉\":{\"category\":\"activity\",\"description\":\"3rd place medal\",\"names\":[\"3rd_place_medal\"],\"tags\":[\"bronze\"]},\"🏆\":{\"category\":\"activity\",\"description\":\"trophy\",\"names\":[\"trophy\"],\"tags\":[\"award\",\"contest\",\"winner\"]},\"🏵\":{\"category\":\"activity\",\"description\":\"rosette\",\"names\":[\"rosette\"],\"tags\":[]},\"🎗\":{\"category\":\"activity\",\"description\":\"reminder ribbon\",\"names\":[\"reminder_ribbon\"],\"tags\":[]},\"🎫\":{\"category\":\"activity\",\"description\":\"ticket\",\"names\":[\"ticket\"],\"tags\":[]},\"🎟\":{\"category\":\"activity\",\"description\":\"admission tickets\",\"names\":[\"tickets\"],\"tags\":[]},\"🎪\":{\"category\":\"activity\",\"description\":\"circus tent\",\"names\":[\"circus_tent\"],\"tags\":[]},\"🤹‍♀\":{\"category\":\"activity\",\"description\":\"woman juggling\",\"names\":[\"woman_juggling\"],\"tags\":[]},\"🤹‍♂\":{\"category\":\"activity\",\"description\":\"man juggling\",\"names\":[\"man_juggling\"],\"tags\":[]},\"🎭\":{\"category\":\"activity\",\"description\":\"performing arts\",\"names\":[\"performing_arts\"],\"tags\":[\"theater\",\"drama\"]},\"🎨\":{\"category\":\"activity\",\"description\":\"artist palette\",\"names\":[\"art\"],\"tags\":[\"design\",\"paint\"]},\"🎬\":{\"category\":\"activity\",\"description\":\"clapper board\",\"names\":[\"clapper\"],\"tags\":[\"film\"]},\"🎤\":{\"category\":\"activity\",\"description\":\"microphone\",\"names\":[\"microphone\"],\"tags\":[\"sing\"]},\"🎧\":{\"category\":\"activity\",\"description\":\"headphone\",\"names\":[\"headphones\"],\"tags\":[\"music\",\"earphones\"]},\"🎼\":{\"category\":\"activity\",\"description\":\"musical score\",\"names\":[\"musical_score\"],\"tags\":[]},\"🎹\":{\"category\":\"activity\",\"description\":\"musical keyboard\",\"names\":[\"musical_keyboard\"],\"tags\":[\"piano\"]},\"🥁\":{\"category\":\"activity\",\"description\":\"drum\",\"names\":[\"drum\"],\"tags\":[]},\"🎷\":{\"category\":\"activity\",\"description\":\"saxophone\",\"names\":[\"saxophone\"],\"tags\":[]},\"🎺\":{\"category\":\"activity\",\"description\":\"trumpet\",\"names\":[\"trumpet\"],\"tags\":[]},\"🎸\":{\"category\":\"activity\",\"description\":\"guitar\",\"names\":[\"guitar\"],\"tags\":[\"rock\"]},\"🎻\":{\"category\":\"activity\",\"description\":\"violin\",\"names\":[\"violin\"],\"tags\":[]},\"🎲\":{\"category\":\"activity\",\"description\":\"game die\",\"names\":[\"game_die\"],\"tags\":[\"dice\",\"gambling\"]},\"🎯\":{\"category\":\"activity\",\"description\":\"direct hit\",\"names\":[\"dart\"],\"tags\":[\"target\"]},\"🎳\":{\"category\":\"activity\",\"description\":\"bowling\",\"names\":[\"bowling\"],\"tags\":[]},\"🎮\":{\"category\":\"activity\",\"description\":\"video game\",\"names\":[\"video_game\"],\"tags\":[\"play\",\"controller\",\"console\"]},\"🎰\":{\"category\":\"activity\",\"description\":\"slot machine\",\"names\":[\"slot_machine\"],\"tags\":[]},\"🚗\":{\"category\":\"places\",\"description\":\"automobile\",\"names\":[\"car\",\"red_car\"],\"tags\":[]},\"🚕\":{\"category\":\"places\",\"description\":\"taxi\",\"names\":[\"taxi\"],\"tags\":[]},\"🚙\":{\"category\":\"places\",\"description\":\"sport utility vehicle\",\"names\":[\"blue_car\"],\"tags\":[]},\"🚌\":{\"category\":\"places\",\"description\":\"bus\",\"names\":[\"bus\"],\"tags\":[]},\"🚎\":{\"category\":\"places\",\"description\":\"trolleybus\",\"names\":[\"trolleybus\"],\"tags\":[]},\"🏎\":{\"category\":\"places\",\"description\":\"racing car\",\"names\":[\"racing_car\"],\"tags\":[]},\"🚓\":{\"category\":\"places\",\"description\":\"police car\",\"names\":[\"police_car\"],\"tags\":[]},\"🚑\":{\"category\":\"places\",\"description\":\"ambulance\",\"names\":[\"ambulance\"],\"tags\":[]},\"🚒\":{\"category\":\"places\",\"description\":\"fire engine\",\"names\":[\"fire_engine\"],\"tags\":[]},\"🚐\":{\"category\":\"places\",\"description\":\"minibus\",\"names\":[\"minibus\"],\"tags\":[]},\"🚚\":{\"category\":\"places\",\"description\":\"delivery truck\",\"names\":[\"truck\"],\"tags\":[]},\"🚛\":{\"category\":\"places\",\"description\":\"articulated lorry\",\"names\":[\"articulated_lorry\"],\"tags\":[]},\"🚜\":{\"category\":\"places\",\"description\":\"tractor\",\"names\":[\"tractor\"],\"tags\":[]},\"🛴\":{\"category\":\"places\",\"description\":\"kick scooter\",\"names\":[\"kick_scooter\"],\"tags\":[]},\"🚲\":{\"category\":\"places\",\"description\":\"bicycle\",\"names\":[\"bike\"],\"tags\":[\"bicycle\"]},\"🛵\":{\"category\":\"places\",\"description\":\"motor scooter\",\"names\":[\"motor_scooter\"],\"tags\":[]},\"🏍\":{\"category\":\"places\",\"description\":\"motorcycle\",\"names\":[\"motorcycle\"],\"tags\":[]},\"🚨\":{\"category\":\"places\",\"description\":\"police car light\",\"names\":[\"rotating_light\"],\"tags\":[\"911\",\"emergency\"]},\"🚔\":{\"category\":\"places\",\"description\":\"oncoming police car\",\"names\":[\"oncoming_police_car\"],\"tags\":[]},\"🚍\":{\"category\":\"places\",\"description\":\"oncoming bus\",\"names\":[\"oncoming_bus\"],\"tags\":[]},\"🚘\":{\"category\":\"places\",\"description\":\"oncoming automobile\",\"names\":[\"oncoming_automobile\"],\"tags\":[]},\"🚖\":{\"category\":\"places\",\"description\":\"oncoming taxi\",\"names\":[\"oncoming_taxi\"],\"tags\":[]},\"🚡\":{\"category\":\"places\",\"description\":\"aerial tramway\",\"names\":[\"aerial_tramway\"],\"tags\":[]},\"🚠\":{\"category\":\"places\",\"description\":\"mountain cableway\",\"names\":[\"mountain_cableway\"],\"tags\":[]},\"🚟\":{\"category\":\"places\",\"description\":\"suspension railway\",\"names\":[\"suspension_railway\"],\"tags\":[]},\"🚃\":{\"category\":\"places\",\"description\":\"railway car\",\"names\":[\"railway_car\"],\"tags\":[]},\"🚋\":{\"category\":\"places\",\"description\":\"tram car\",\"names\":[\"train\"],\"tags\":[]},\"🚞\":{\"category\":\"places\",\"description\":\"mountain railway\",\"names\":[\"mountain_railway\"],\"tags\":[]},\"🚝\":{\"category\":\"places\",\"description\":\"monorail\",\"names\":[\"monorail\"],\"tags\":[]},\"🚄\":{\"category\":\"places\",\"description\":\"high-speed train\",\"names\":[\"bullettrain_side\"],\"tags\":[\"train\"]},\"🚅\":{\"category\":\"places\",\"description\":\"high-speed train with bullet nose\",\"names\":[\"bullettrain_front\"],\"tags\":[\"train\"]},\"🚈\":{\"category\":\"places\",\"description\":\"light rail\",\"names\":[\"light_rail\"],\"tags\":[]},\"🚂\":{\"category\":\"places\",\"description\":\"locomotive\",\"names\":[\"steam_locomotive\"],\"tags\":[\"train\"]},\"🚆\":{\"category\":\"places\",\"description\":\"train\",\"names\":[\"train2\"],\"tags\":[]},\"🚇\":{\"category\":\"places\",\"description\":\"metro\",\"names\":[\"metro\"],\"tags\":[]},\"🚊\":{\"category\":\"places\",\"description\":\"tram\",\"names\":[\"tram\"],\"tags\":[]},\"🚉\":{\"category\":\"places\",\"description\":\"station\",\"names\":[\"station\"],\"tags\":[]},\"🚁\":{\"category\":\"places\",\"description\":\"helicopter\",\"names\":[\"helicopter\"],\"tags\":[]},\"🛩\":{\"category\":\"places\",\"description\":\"small airplane\",\"names\":[\"small_airplane\"],\"tags\":[\"flight\"]},\"✈️\":{\"category\":\"places\",\"description\":\"airplane\",\"names\":[\"airplane\"],\"tags\":[\"flight\"]},\"🛫\":{\"category\":\"places\",\"description\":\"airplane departure\",\"names\":[\"flight_departure\"],\"tags\":[]},\"🛬\":{\"category\":\"places\",\"description\":\"airplane arrival\",\"names\":[\"flight_arrival\"],\"tags\":[]},\"🚀\":{\"category\":\"places\",\"description\":\"rocket\",\"names\":[\"rocket\"],\"tags\":[\"ship\",\"launch\"]},\"🛰\":{\"category\":\"places\",\"description\":\"satellite\",\"names\":[\"artificial_satellite\"],\"tags\":[\"orbit\",\"space\"]},\"💺\":{\"category\":\"places\",\"description\":\"seat\",\"names\":[\"seat\"],\"tags\":[]},\"🛶\":{\"category\":\"places\",\"description\":\"canoe\",\"names\":[\"canoe\"],\"tags\":[]},\"⛵️\":{\"category\":\"places\",\"description\":\"sailboat\",\"names\":[\"boat\",\"sailboat\"],\"tags\":[]},\"🛥\":{\"category\":\"places\",\"description\":\"motor boat\",\"names\":[\"motor_boat\"],\"tags\":[]},\"🚤\":{\"category\":\"places\",\"description\":\"speedboat\",\"names\":[\"speedboat\"],\"tags\":[\"ship\"]},\"🛳\":{\"category\":\"places\",\"description\":\"passenger ship\",\"names\":[\"passenger_ship\"],\"tags\":[\"cruise\"]},\"⛴\":{\"category\":\"places\",\"description\":\"ferry\",\"names\":[\"ferry\"],\"tags\":[]},\"🚢\":{\"category\":\"places\",\"description\":\"ship\",\"names\":[\"ship\"],\"tags\":[]},\"⚓️\":{\"category\":\"places\",\"description\":\"anchor\",\"names\":[\"anchor\"],\"tags\":[\"ship\"]},\"🚧\":{\"category\":\"places\",\"description\":\"construction\",\"names\":[\"construction\"],\"tags\":[\"wip\"]},\"⛽️\":{\"category\":\"places\",\"description\":\"fuel pump\",\"names\":[\"fuelpump\"],\"tags\":[]},\"🚏\":{\"category\":\"places\",\"description\":\"bus stop\",\"names\":[\"busstop\"],\"tags\":[]},\"🚦\":{\"category\":\"places\",\"description\":\"vertical traffic light\",\"names\":[\"vertical_traffic_light\"],\"tags\":[\"semaphore\"]},\"🚥\":{\"category\":\"places\",\"description\":\"horizontal traffic light\",\"names\":[\"traffic_light\"],\"tags\":[]},\"🗺\":{\"category\":\"places\",\"description\":\"world map\",\"names\":[\"world_map\"],\"tags\":[\"travel\"]},\"🗿\":{\"category\":\"places\",\"description\":\"moai\",\"names\":[\"moyai\"],\"tags\":[\"stone\"]},\"🗽\":{\"category\":\"places\",\"description\":\"Statue of Liberty\",\"names\":[\"statue_of_liberty\"],\"tags\":[]},\"⛲️\":{\"category\":\"places\",\"description\":\"fountain\",\"names\":[\"fountain\"],\"tags\":[]},\"🗼\":{\"category\":\"places\",\"description\":\"Tokyo tower\",\"names\":[\"tokyo_tower\"],\"tags\":[]},\"🏰\":{\"category\":\"places\",\"description\":\"castle\",\"names\":[\"european_castle\"],\"tags\":[]},\"🏯\":{\"category\":\"places\",\"description\":\"Japanese castle\",\"names\":[\"japanese_castle\"],\"tags\":[]},\"🏟\":{\"category\":\"places\",\"description\":\"stadium\",\"names\":[\"stadium\"],\"tags\":[]},\"🎡\":{\"category\":\"places\",\"description\":\"ferris wheel\",\"names\":[\"ferris_wheel\"],\"tags\":[]},\"🎢\":{\"category\":\"places\",\"description\":\"roller coaster\",\"names\":[\"roller_coaster\"],\"tags\":[]},\"🎠\":{\"category\":\"places\",\"description\":\"carousel horse\",\"names\":[\"carousel_horse\"],\"tags\":[]},\"⛱\":{\"category\":\"places\",\"description\":\"umbrella on ground\",\"names\":[\"parasol_on_ground\"],\"tags\":[\"beach_umbrella\"]},\"🏖\":{\"category\":\"places\",\"description\":\"beach with umbrella\",\"names\":[\"beach_umbrella\"],\"tags\":[]},\"🏝\":{\"category\":\"places\",\"description\":\"desert island\",\"names\":[\"desert_island\"],\"tags\":[]},\"⛰\":{\"category\":\"places\",\"description\":\"mountain\",\"names\":[\"mountain\"],\"tags\":[]},\"🏔\":{\"category\":\"places\",\"description\":\"snow-capped mountain\",\"names\":[\"mountain_snow\"],\"tags\":[]},\"🗻\":{\"category\":\"places\",\"description\":\"mount fuji\",\"names\":[\"mount_fuji\"],\"tags\":[]},\"🌋\":{\"category\":\"places\",\"description\":\"volcano\",\"names\":[\"volcano\"],\"tags\":[]},\"🏜\":{\"category\":\"places\",\"description\":\"desert\",\"names\":[\"desert\"],\"tags\":[]},\"🏕\":{\"category\":\"places\",\"description\":\"camping\",\"names\":[\"camping\"],\"tags\":[]},\"⛺️\":{\"category\":\"places\",\"description\":\"tent\",\"names\":[\"tent\"],\"tags\":[\"camping\"]},\"🛤\":{\"category\":\"places\",\"description\":\"railway track\",\"names\":[\"railway_track\"],\"tags\":[]},\"🛣\":{\"category\":\"places\",\"description\":\"motorway\",\"names\":[\"motorway\"],\"tags\":[]},\"🏗\":{\"category\":\"places\",\"description\":\"building construction\",\"names\":[\"building_construction\"],\"tags\":[]},\"🏭\":{\"category\":\"places\",\"description\":\"factory\",\"names\":[\"factory\"],\"tags\":[]},\"🏠\":{\"category\":\"places\",\"description\":\"house\",\"names\":[\"house\"],\"tags\":[]},\"🏡\":{\"category\":\"places\",\"description\":\"house with garden\",\"names\":[\"house_with_garden\"],\"tags\":[]},\"🏘\":{\"category\":\"places\",\"description\":\"house\",\"names\":[\"houses\"],\"tags\":[]},\"🏚\":{\"category\":\"places\",\"description\":\"derelict house\",\"names\":[\"derelict_house\"],\"tags\":[]},\"🏢\":{\"category\":\"places\",\"description\":\"office building\",\"names\":[\"office\"],\"tags\":[]},\"🏬\":{\"category\":\"places\",\"description\":\"department store\",\"names\":[\"department_store\"],\"tags\":[]},\"🏣\":{\"category\":\"places\",\"description\":\"Japanese post office\",\"names\":[\"post_office\"],\"tags\":[]},\"🏤\":{\"category\":\"places\",\"description\":\"post office\",\"names\":[\"european_post_office\"],\"tags\":[]},\"🏥\":{\"category\":\"places\",\"description\":\"hospital\",\"names\":[\"hospital\"],\"tags\":[]},\"🏦\":{\"category\":\"places\",\"description\":\"bank\",\"names\":[\"bank\"],\"tags\":[]},\"🏨\":{\"category\":\"places\",\"description\":\"hotel\",\"names\":[\"hotel\"],\"tags\":[]},\"🏪\":{\"category\":\"places\",\"description\":\"convenience store\",\"names\":[\"convenience_store\"],\"tags\":[]},\"🏫\":{\"category\":\"places\",\"description\":\"school\",\"names\":[\"school\"],\"tags\":[]},\"🏩\":{\"category\":\"places\",\"description\":\"love hotel\",\"names\":[\"love_hotel\"],\"tags\":[]},\"💒\":{\"category\":\"places\",\"description\":\"wedding\",\"names\":[\"wedding\"],\"tags\":[\"marriage\"]},\"🏛\":{\"category\":\"places\",\"description\":\"classical building\",\"names\":[\"classical_building\"],\"tags\":[]},\"⛪️\":{\"category\":\"places\",\"description\":\"church\",\"names\":[\"church\"],\"tags\":[]},\"🕌\":{\"category\":\"places\",\"description\":\"mosque\",\"names\":[\"mosque\"],\"tags\":[]},\"🕍\":{\"category\":\"places\",\"description\":\"synagogue\",\"names\":[\"synagogue\"],\"tags\":[]},\"🕋\":{\"category\":\"places\",\"description\":\"kaaba\",\"names\":[\"kaaba\"],\"tags\":[]},\"⛩\":{\"category\":\"places\",\"description\":\"shinto shrine\",\"names\":[\"shinto_shrine\"],\"tags\":[]},\"🗾\":{\"category\":\"places\",\"description\":\"map of Japan\",\"names\":[\"japan\"],\"tags\":[]},\"🎑\":{\"category\":\"places\",\"description\":\"moon viewing ceremony\",\"names\":[\"rice_scene\"],\"tags\":[]},\"🏞\":{\"category\":\"places\",\"description\":\"national park\",\"names\":[\"national_park\"],\"tags\":[]},\"🌅\":{\"category\":\"places\",\"description\":\"sunrise\",\"names\":[\"sunrise\"],\"tags\":[]},\"🌄\":{\"category\":\"places\",\"description\":\"sunrise over mountains\",\"names\":[\"sunrise_over_mountains\"],\"tags\":[]},\"🌠\":{\"category\":\"places\",\"description\":\"shooting star\",\"names\":[\"stars\"],\"tags\":[]},\"🎇\":{\"category\":\"places\",\"description\":\"sparkler\",\"names\":[\"sparkler\"],\"tags\":[]},\"🎆\":{\"category\":\"places\",\"description\":\"fireworks\",\"names\":[\"fireworks\"],\"tags\":[\"festival\",\"celebration\"]},\"🌇\":{\"category\":\"places\",\"description\":\"sunset\",\"names\":[\"city_sunrise\"],\"tags\":[]},\"🌆\":{\"category\":\"places\",\"description\":\"cityscape at dusk\",\"names\":[\"city_sunset\"],\"tags\":[]},\"🏙\":{\"category\":\"places\",\"description\":\"cityscape\",\"names\":[\"cityscape\"],\"tags\":[\"skyline\"]},\"🌃\":{\"category\":\"places\",\"description\":\"night with stars\",\"names\":[\"night_with_stars\"],\"tags\":[]},\"🌌\":{\"category\":\"places\",\"description\":\"milky way\",\"names\":[\"milky_way\"],\"tags\":[]},\"🌉\":{\"category\":\"places\",\"description\":\"bridge at night\",\"names\":[\"bridge_at_night\"],\"tags\":[]},\"🌁\":{\"category\":\"places\",\"description\":\"foggy\",\"names\":[\"foggy\"],\"tags\":[\"karl\"]},\"⌚️\":{\"category\":\"objects\",\"description\":\"watch\",\"names\":[\"watch\"],\"tags\":[\"time\"]},\"📱\":{\"category\":\"objects\",\"description\":\"mobile phone\",\"names\":[\"iphone\"],\"tags\":[\"smartphone\",\"mobile\"]},\"📲\":{\"category\":\"objects\",\"description\":\"mobile phone with arrow\",\"names\":[\"calling\"],\"tags\":[\"call\",\"incoming\"]},\"💻\":{\"category\":\"objects\",\"description\":\"laptop computer\",\"names\":[\"computer\"],\"tags\":[\"desktop\",\"screen\"]},\"⌨️\":{\"category\":\"objects\",\"description\":\"keyboard\",\"names\":[\"keyboard\"],\"tags\":[]},\"🖥\":{\"category\":\"objects\",\"description\":\"desktop computer\",\"names\":[\"desktop_computer\"],\"tags\":[]},\"🖨\":{\"category\":\"objects\",\"description\":\"printer\",\"names\":[\"printer\"],\"tags\":[]},\"🖱\":{\"category\":\"objects\",\"description\":\"computer mouse\",\"names\":[\"computer_mouse\"],\"tags\":[]},\"🖲\":{\"category\":\"objects\",\"description\":\"trackball\",\"names\":[\"trackball\"],\"tags\":[]},\"🕹\":{\"category\":\"objects\",\"description\":\"joystick\",\"names\":[\"joystick\"],\"tags\":[]},\"🗜\":{\"category\":\"objects\",\"description\":\"clamp\",\"names\":[\"clamp\"],\"tags\":[]},\"💽\":{\"category\":\"objects\",\"description\":\"computer disk\",\"names\":[\"minidisc\"],\"tags\":[]},\"💾\":{\"category\":\"objects\",\"description\":\"floppy disk\",\"names\":[\"floppy_disk\"],\"tags\":[\"save\"]},\"💿\":{\"category\":\"objects\",\"description\":\"optical disk\",\"names\":[\"cd\"],\"tags\":[]},\"📀\":{\"category\":\"objects\",\"description\":\"dvd\",\"names\":[\"dvd\"],\"tags\":[]},\"📼\":{\"category\":\"objects\",\"description\":\"videocassette\",\"names\":[\"vhs\"],\"tags\":[]},\"📷\":{\"category\":\"objects\",\"description\":\"camera\",\"names\":[\"camera\"],\"tags\":[\"photo\"]},\"📸\":{\"category\":\"objects\",\"description\":\"camera with flash\",\"names\":[\"camera_flash\"],\"tags\":[\"photo\"]},\"📹\":{\"category\":\"objects\",\"description\":\"video camera\",\"names\":[\"video_camera\"],\"tags\":[]},\"🎥\":{\"category\":\"objects\",\"description\":\"movie camera\",\"names\":[\"movie_camera\"],\"tags\":[\"film\",\"video\"]},\"📽\":{\"category\":\"objects\",\"description\":\"film projector\",\"names\":[\"film_projector\"],\"tags\":[]},\"🎞\":{\"category\":\"objects\",\"description\":\"film frames\",\"names\":[\"film_strip\"],\"tags\":[]},\"📞\":{\"category\":\"objects\",\"description\":\"telephone receiver\",\"names\":[\"telephone_receiver\"],\"tags\":[\"phone\",\"call\"]},\"☎️\":{\"category\":\"objects\",\"description\":\"telephone\",\"names\":[\"phone\",\"telephone\"],\"tags\":[]},\"📟\":{\"category\":\"objects\",\"description\":\"pager\",\"names\":[\"pager\"],\"tags\":[]},\"📠\":{\"category\":\"objects\",\"description\":\"fax machine\",\"names\":[\"fax\"],\"tags\":[]},\"📺\":{\"category\":\"objects\",\"description\":\"television\",\"names\":[\"tv\"],\"tags\":[]},\"📻\":{\"category\":\"objects\",\"description\":\"radio\",\"names\":[\"radio\"],\"tags\":[\"podcast\"]},\"🎙\":{\"category\":\"objects\",\"description\":\"studio microphone\",\"names\":[\"studio_microphone\"],\"tags\":[\"podcast\"]},\"🎚\":{\"category\":\"objects\",\"description\":\"level slider\",\"names\":[\"level_slider\"],\"tags\":[]},\"🎛\":{\"category\":\"objects\",\"description\":\"control knobs\",\"names\":[\"control_knobs\"],\"tags\":[]},\"⏱\":{\"category\":\"objects\",\"description\":\"stopwatch\",\"names\":[\"stopwatch\"],\"tags\":[]},\"⏲\":{\"category\":\"objects\",\"description\":\"timer clock\",\"names\":[\"timer_clock\"],\"tags\":[]},\"⏰\":{\"category\":\"objects\",\"description\":\"alarm clock\",\"names\":[\"alarm_clock\"],\"tags\":[\"morning\"]},\"🕰\":{\"category\":\"objects\",\"description\":\"mantelpiece clock\",\"names\":[\"mantelpiece_clock\"],\"tags\":[]},\"⌛️\":{\"category\":\"objects\",\"description\":\"hourglass\",\"names\":[\"hourglass\"],\"tags\":[\"time\"]},\"⏳\":{\"category\":\"objects\",\"description\":\"hourglass with flowing sand\",\"names\":[\"hourglass_flowing_sand\"],\"tags\":[\"time\"]},\"📡\":{\"category\":\"objects\",\"description\":\"satellite antenna\",\"names\":[\"satellite\"],\"tags\":[\"signal\"]},\"🔋\":{\"category\":\"objects\",\"description\":\"battery\",\"names\":[\"battery\"],\"tags\":[\"power\"]},\"🔌\":{\"category\":\"objects\",\"description\":\"electric plug\",\"names\":[\"electric_plug\"],\"tags\":[]},\"💡\":{\"category\":\"objects\",\"description\":\"light bulb\",\"names\":[\"bulb\"],\"tags\":[\"idea\",\"light\"]},\"🔦\":{\"category\":\"objects\",\"description\":\"flashlight\",\"names\":[\"flashlight\"],\"tags\":[]},\"🕯\":{\"category\":\"objects\",\"description\":\"candle\",\"names\":[\"candle\"],\"tags\":[]},\"🗑\":{\"category\":\"objects\",\"description\":\"wastebasket\",\"names\":[\"wastebasket\"],\"tags\":[\"trash\"]},\"🛢\":{\"category\":\"objects\",\"description\":\"oil drum\",\"names\":[\"oil_drum\"],\"tags\":[]},\"💸\":{\"category\":\"objects\",\"description\":\"money with wings\",\"names\":[\"money_with_wings\"],\"tags\":[\"dollar\"]},\"💵\":{\"category\":\"objects\",\"description\":\"dollar banknote\",\"names\":[\"dollar\"],\"tags\":[\"money\"]},\"💴\":{\"category\":\"objects\",\"description\":\"yen banknote\",\"names\":[\"yen\"],\"tags\":[]},\"💶\":{\"category\":\"objects\",\"description\":\"euro banknote\",\"names\":[\"euro\"],\"tags\":[]},\"💷\":{\"category\":\"objects\",\"description\":\"pound banknote\",\"names\":[\"pound\"],\"tags\":[]},\"💰\":{\"category\":\"objects\",\"description\":\"money bag\",\"names\":[\"moneybag\"],\"tags\":[\"dollar\",\"cream\"]},\"💳\":{\"category\":\"objects\",\"description\":\"credit card\",\"names\":[\"credit_card\"],\"tags\":[\"subscription\"]},\"💎\":{\"category\":\"objects\",\"description\":\"gem stone\",\"names\":[\"gem\"],\"tags\":[\"diamond\"]},\"⚖️\":{\"category\":\"objects\",\"description\":\"balance scale\",\"names\":[\"balance_scale\"],\"tags\":[]},\"🔧\":{\"category\":\"objects\",\"description\":\"wrench\",\"names\":[\"wrench\"],\"tags\":[\"tool\"]},\"🔨\":{\"category\":\"objects\",\"description\":\"hammer\",\"names\":[\"hammer\"],\"tags\":[\"tool\"]},\"⚒\":{\"category\":\"objects\",\"description\":\"hammer and pick\",\"names\":[\"hammer_and_pick\"],\"tags\":[]},\"🛠\":{\"category\":\"objects\",\"description\":\"hammer and wrench\",\"names\":[\"hammer_and_wrench\"],\"tags\":[]},\"⛏\":{\"category\":\"objects\",\"description\":\"pick\",\"names\":[\"pick\"],\"tags\":[]},\"🔩\":{\"category\":\"objects\",\"description\":\"nut and bolt\",\"names\":[\"nut_and_bolt\"],\"tags\":[]},\"⚙️\":{\"category\":\"objects\",\"description\":\"gear\",\"names\":[\"gear\"],\"tags\":[]},\"⛓\":{\"category\":\"objects\",\"description\":\"chains\",\"names\":[\"chains\"],\"tags\":[]},\"🔫\":{\"category\":\"objects\",\"description\":\"pistol\",\"names\":[\"gun\"],\"tags\":[\"shoot\",\"weapon\"]},\"💣\":{\"category\":\"objects\",\"description\":\"bomb\",\"names\":[\"bomb\"],\"tags\":[\"boom\"]},\"🔪\":{\"category\":\"objects\",\"description\":\"kitchen knife\",\"names\":[\"hocho\",\"knife\"],\"tags\":[\"cut\",\"chop\"]},\"🗡\":{\"category\":\"objects\",\"description\":\"dagger\",\"names\":[\"dagger\"],\"tags\":[]},\"⚔️\":{\"category\":\"objects\",\"description\":\"crossed swords\",\"names\":[\"crossed_swords\"],\"tags\":[]},\"🛡\":{\"category\":\"objects\",\"description\":\"shield\",\"names\":[\"shield\"],\"tags\":[]},\"🚬\":{\"category\":\"objects\",\"description\":\"cigarette\",\"names\":[\"smoking\"],\"tags\":[\"cigarette\"]},\"⚰️\":{\"category\":\"objects\",\"description\":\"coffin\",\"names\":[\"coffin\"],\"tags\":[\"funeral\"]},\"⚱️\":{\"category\":\"objects\",\"description\":\"funeral urn\",\"names\":[\"funeral_urn\"],\"tags\":[]},\"🏺\":{\"category\":\"objects\",\"description\":\"amphora\",\"names\":[\"amphora\"],\"tags\":[]},\"🔮\":{\"category\":\"objects\",\"description\":\"crystal ball\",\"names\":[\"crystal_ball\"],\"tags\":[\"fortune\"]},\"📿\":{\"category\":\"objects\",\"description\":\"prayer beads\",\"names\":[\"prayer_beads\"],\"tags\":[]},\"💈\":{\"category\":\"objects\",\"description\":\"barber pole\",\"names\":[\"barber\"],\"tags\":[]},\"⚗️\":{\"category\":\"objects\",\"description\":\"alembic\",\"names\":[\"alembic\"],\"tags\":[]},\"🔭\":{\"category\":\"objects\",\"description\":\"telescope\",\"names\":[\"telescope\"],\"tags\":[]},\"🔬\":{\"category\":\"objects\",\"description\":\"microscope\",\"names\":[\"microscope\"],\"tags\":[\"science\",\"laboratory\",\"investigate\"]},\"🕳\":{\"category\":\"objects\",\"description\":\"hole\",\"names\":[\"hole\"],\"tags\":[]},\"💊\":{\"category\":\"objects\",\"description\":\"pill\",\"names\":[\"pill\"],\"tags\":[\"health\",\"medicine\"]},\"💉\":{\"category\":\"objects\",\"description\":\"syringe\",\"names\":[\"syringe\"],\"tags\":[\"health\",\"hospital\",\"needle\"]},\"🌡\":{\"category\":\"objects\",\"description\":\"thermometer\",\"names\":[\"thermometer\"],\"tags\":[]},\"🚽\":{\"category\":\"objects\",\"description\":\"toilet\",\"names\":[\"toilet\"],\"tags\":[\"wc\"]},\"🚰\":{\"category\":\"objects\",\"description\":\"potable water\",\"names\":[\"potable_water\"],\"tags\":[]},\"🚿\":{\"category\":\"objects\",\"description\":\"shower\",\"names\":[\"shower\"],\"tags\":[\"bath\"]},\"🛁\":{\"category\":\"objects\",\"description\":\"bathtub\",\"names\":[\"bathtub\"],\"tags\":[]},\"🛀\":{\"category\":\"objects\",\"description\":\"person taking bath\",\"names\":[\"bath\"],\"tags\":[\"shower\"]},\"🛎\":{\"category\":\"objects\",\"description\":\"bellhop bell\",\"names\":[\"bellhop_bell\"],\"tags\":[]},\"🔑\":{\"category\":\"objects\",\"description\":\"key\",\"names\":[\"key\"],\"tags\":[\"lock\",\"password\"]},\"🗝\":{\"category\":\"objects\",\"description\":\"old key\",\"names\":[\"old_key\"],\"tags\":[]},\"🚪\":{\"category\":\"objects\",\"description\":\"door\",\"names\":[\"door\"],\"tags\":[]},\"🛋\":{\"category\":\"objects\",\"description\":\"couch and lamp\",\"names\":[\"couch_and_lamp\"],\"tags\":[]},\"🛏\":{\"category\":\"objects\",\"description\":\"bed\",\"names\":[\"bed\"],\"tags\":[]},\"🛌\":{\"category\":\"objects\",\"description\":\"person in bed\",\"names\":[\"sleeping_bed\"],\"tags\":[]},\"🖼\":{\"category\":\"objects\",\"description\":\"framed picture\",\"names\":[\"framed_picture\"],\"tags\":[]},\"🛍\":{\"category\":\"objects\",\"description\":\"shopping bags\",\"names\":[\"shopping\"],\"tags\":[\"bags\"]},\"🛒\":{\"category\":\"objects\",\"description\":\"shopping cart\",\"names\":[\"shopping_cart\"],\"tags\":[]},\"🎁\":{\"category\":\"objects\",\"description\":\"wrapped gift\",\"names\":[\"gift\"],\"tags\":[\"present\",\"birthday\",\"christmas\"]},\"🎈\":{\"category\":\"objects\",\"description\":\"balloon\",\"names\":[\"balloon\"],\"tags\":[\"party\",\"birthday\"]},\"🎏\":{\"category\":\"objects\",\"description\":\"carp streamer\",\"names\":[\"flags\"],\"tags\":[]},\"🎀\":{\"category\":\"objects\",\"description\":\"ribbon\",\"names\":[\"ribbon\"],\"tags\":[]},\"🎊\":{\"category\":\"objects\",\"description\":\"confetti ball\",\"names\":[\"confetti_ball\"],\"tags\":[]},\"🎉\":{\"category\":\"objects\",\"description\":\"party popper\",\"names\":[\"tada\"],\"tags\":[\"hooray\",\"party\"]},\"🎎\":{\"category\":\"objects\",\"description\":\"Japanese dolls\",\"names\":[\"dolls\"],\"tags\":[]},\"🏮\":{\"category\":\"objects\",\"description\":\"red paper lantern\",\"names\":[\"izakaya_lantern\",\"lantern\"],\"tags\":[]},\"🎐\":{\"category\":\"objects\",\"description\":\"wind chime\",\"names\":[\"wind_chime\"],\"tags\":[]},\"✉️\":{\"category\":\"objects\",\"description\":\"envelope\",\"names\":[\"email\",\"envelope\"],\"tags\":[\"letter\"]},\"📩\":{\"category\":\"objects\",\"description\":\"envelope with arrow\",\"names\":[\"envelope_with_arrow\"],\"tags\":[]},\"📨\":{\"category\":\"objects\",\"description\":\"incoming envelope\",\"names\":[\"incoming_envelope\"],\"tags\":[]},\"📧\":{\"category\":\"objects\",\"description\":\"e-mail\",\"names\":[\"e-mail\"],\"tags\":[]},\"💌\":{\"category\":\"objects\",\"description\":\"love letter\",\"names\":[\"love_letter\"],\"tags\":[\"email\",\"envelope\"]},\"📥\":{\"category\":\"objects\",\"description\":\"inbox tray\",\"names\":[\"inbox_tray\"],\"tags\":[]},\"📤\":{\"category\":\"objects\",\"description\":\"outbox tray\",\"names\":[\"outbox_tray\"],\"tags\":[]},\"📦\":{\"category\":\"objects\",\"description\":\"package\",\"names\":[\"package\"],\"tags\":[\"shipping\"]},\"🏷\":{\"category\":\"objects\",\"description\":\"label\",\"names\":[\"label\"],\"tags\":[\"tag\"]},\"📪\":{\"category\":\"objects\",\"description\":\"closed mailbox with lowered flag\",\"names\":[\"mailbox_closed\"],\"tags\":[]},\"📫\":{\"category\":\"objects\",\"description\":\"closed mailbox with raised flag\",\"names\":[\"mailbox\"],\"tags\":[]},\"📬\":{\"category\":\"objects\",\"description\":\"open mailbox with raised flag\",\"names\":[\"mailbox_with_mail\"],\"tags\":[]},\"📭\":{\"category\":\"objects\",\"description\":\"open mailbox with lowered flag\",\"names\":[\"mailbox_with_no_mail\"],\"tags\":[]},\"📮\":{\"category\":\"objects\",\"description\":\"postbox\",\"names\":[\"postbox\"],\"tags\":[]},\"📯\":{\"category\":\"objects\",\"description\":\"postal horn\",\"names\":[\"postal_horn\"],\"tags\":[]},\"📜\":{\"category\":\"objects\",\"description\":\"scroll\",\"names\":[\"scroll\"],\"tags\":[\"document\"]},\"📃\":{\"category\":\"objects\",\"description\":\"page with curl\",\"names\":[\"page_with_curl\"],\"tags\":[]},\"📄\":{\"category\":\"objects\",\"description\":\"page facing up\",\"names\":[\"page_facing_up\"],\"tags\":[\"document\"]},\"📑\":{\"category\":\"objects\",\"description\":\"bookmark tabs\",\"names\":[\"bookmark_tabs\"],\"tags\":[]},\"📊\":{\"category\":\"objects\",\"description\":\"bar chart\",\"names\":[\"bar_chart\"],\"tags\":[\"stats\",\"metrics\"]},\"📈\":{\"category\":\"objects\",\"description\":\"chart increasing\",\"names\":[\"chart_with_upwards_trend\"],\"tags\":[\"graph\",\"metrics\"]},\"📉\":{\"category\":\"objects\",\"description\":\"chart decreasing\",\"names\":[\"chart_with_downwards_trend\"],\"tags\":[\"graph\",\"metrics\"]},\"🗒\":{\"category\":\"objects\",\"description\":\"spiral notepad\",\"names\":[\"spiral_notepad\"],\"tags\":[]},\"🗓\":{\"category\":\"objects\",\"description\":\"spiral calendar\",\"names\":[\"spiral_calendar\"],\"tags\":[]},\"📆\":{\"category\":\"objects\",\"description\":\"tear-off calendar\",\"names\":[\"calendar\"],\"tags\":[\"schedule\"]},\"📅\":{\"category\":\"objects\",\"description\":\"calendar\",\"names\":[\"date\"],\"tags\":[\"calendar\",\"schedule\"]},\"📇\":{\"category\":\"objects\",\"description\":\"card index\",\"names\":[\"card_index\"],\"tags\":[]},\"🗃\":{\"category\":\"objects\",\"description\":\"card file box\",\"names\":[\"card_file_box\"],\"tags\":[]},\"🗳\":{\"category\":\"objects\",\"description\":\"ballot box with ballot\",\"names\":[\"ballot_box\"],\"tags\":[]},\"🗄\":{\"category\":\"objects\",\"description\":\"file cabinet\",\"names\":[\"file_cabinet\"],\"tags\":[]},\"📋\":{\"category\":\"objects\",\"description\":\"clipboard\",\"names\":[\"clipboard\"],\"tags\":[]},\"📁\":{\"category\":\"objects\",\"description\":\"file folder\",\"names\":[\"file_folder\"],\"tags\":[\"directory\"]},\"📂\":{\"category\":\"objects\",\"description\":\"open file folder\",\"names\":[\"open_file_folder\"],\"tags\":[]},\"🗂\":{\"category\":\"objects\",\"description\":\"card index dividers\",\"names\":[\"card_index_dividers\"],\"tags\":[]},\"🗞\":{\"category\":\"objects\",\"description\":\"rolled-up newspaper\",\"names\":[\"newspaper_roll\"],\"tags\":[\"press\"]},\"📰\":{\"category\":\"objects\",\"description\":\"newspaper\",\"names\":[\"newspaper\"],\"tags\":[\"press\"]},\"📓\":{\"category\":\"objects\",\"description\":\"notebook\",\"names\":[\"notebook\"],\"tags\":[]},\"📔\":{\"category\":\"objects\",\"description\":\"notebook with decorative cover\",\"names\":[\"notebook_with_decorative_cover\"],\"tags\":[]},\"📒\":{\"category\":\"objects\",\"description\":\"ledger\",\"names\":[\"ledger\"],\"tags\":[]},\"📕\":{\"category\":\"objects\",\"description\":\"closed book\",\"names\":[\"closed_book\"],\"tags\":[]},\"📗\":{\"category\":\"objects\",\"description\":\"green book\",\"names\":[\"green_book\"],\"tags\":[]},\"📘\":{\"category\":\"objects\",\"description\":\"blue book\",\"names\":[\"blue_book\"],\"tags\":[]},\"📙\":{\"category\":\"objects\",\"description\":\"orange book\",\"names\":[\"orange_book\"],\"tags\":[]},\"📚\":{\"category\":\"objects\",\"description\":\"books\",\"names\":[\"books\"],\"tags\":[\"library\"]},\"📖\":{\"category\":\"objects\",\"description\":\"open book\",\"names\":[\"book\",\"open_book\"],\"tags\":[]},\"🔖\":{\"category\":\"objects\",\"description\":\"bookmark\",\"names\":[\"bookmark\"],\"tags\":[]},\"🔗\":{\"category\":\"objects\",\"description\":\"link\",\"names\":[\"link\"],\"tags\":[]},\"📎\":{\"category\":\"objects\",\"description\":\"paperclip\",\"names\":[\"paperclip\"],\"tags\":[]},\"🖇\":{\"category\":\"objects\",\"description\":\"linked paperclips\",\"names\":[\"paperclips\"],\"tags\":[]},\"📐\":{\"category\":\"objects\",\"description\":\"triangular ruler\",\"names\":[\"triangular_ruler\"],\"tags\":[]},\"📏\":{\"category\":\"objects\",\"description\":\"straight ruler\",\"names\":[\"straight_ruler\"],\"tags\":[]},\"📌\":{\"category\":\"objects\",\"description\":\"pushpin\",\"names\":[\"pushpin\"],\"tags\":[\"location\"]},\"📍\":{\"category\":\"objects\",\"description\":\"round pushpin\",\"names\":[\"round_pushpin\"],\"tags\":[\"location\"]},\"✂️\":{\"category\":\"objects\",\"description\":\"scissors\",\"names\":[\"scissors\"],\"tags\":[\"cut\"]},\"🖊\":{\"category\":\"objects\",\"description\":\"pen\",\"names\":[\"pen\"],\"tags\":[]},\"🖋\":{\"category\":\"objects\",\"description\":\"fountain pen\",\"names\":[\"fountain_pen\"],\"tags\":[]},\"✒️\":{\"category\":\"objects\",\"description\":\"black nib\",\"names\":[\"black_nib\"],\"tags\":[]},\"🖌\":{\"category\":\"objects\",\"description\":\"paintbrush\",\"names\":[\"paintbrush\"],\"tags\":[]},\"🖍\":{\"category\":\"objects\",\"description\":\"crayon\",\"names\":[\"crayon\"],\"tags\":[]},\"📝\":{\"category\":\"objects\",\"description\":\"memo\",\"names\":[\"memo\",\"pencil\"],\"tags\":[\"document\",\"note\"]},\"✏️\":{\"category\":\"objects\",\"description\":\"pencil\",\"names\":[\"pencil2\"],\"tags\":[]},\"🔍\":{\"category\":\"objects\",\"description\":\"left-pointing magnifying glass\",\"names\":[\"mag\"],\"tags\":[\"search\",\"zoom\"]},\"🔎\":{\"category\":\"objects\",\"description\":\"right-pointing magnifying glass\",\"names\":[\"mag_right\"],\"tags\":[]},\"🔏\":{\"category\":\"objects\",\"description\":\"locked with pen\",\"names\":[\"lock_with_ink_pen\"],\"tags\":[]},\"🔐\":{\"category\":\"objects\",\"description\":\"locked with key\",\"names\":[\"closed_lock_with_key\"],\"tags\":[\"security\"]},\"🔒\":{\"category\":\"objects\",\"description\":\"locked\",\"names\":[\"lock\"],\"tags\":[\"security\",\"private\"]},\"🔓\":{\"category\":\"objects\",\"description\":\"unlocked\",\"names\":[\"unlock\"],\"tags\":[\"security\"]},\"❤️\":{\"category\":\"symbols\",\"description\":\"red heart\",\"names\":[\"heart\"],\"tags\":[\"love\"]},\"💛\":{\"category\":\"symbols\",\"description\":\"yellow heart\",\"names\":[\"yellow_heart\"],\"tags\":[]},\"💚\":{\"category\":\"symbols\",\"description\":\"green heart\",\"names\":[\"green_heart\"],\"tags\":[]},\"💙\":{\"category\":\"symbols\",\"description\":\"blue heart\",\"names\":[\"blue_heart\"],\"tags\":[]},\"💜\":{\"category\":\"symbols\",\"description\":\"purple heart\",\"names\":[\"purple_heart\"],\"tags\":[]},\"🖤\":{\"category\":\"symbols\",\"description\":\"black heart\",\"names\":[\"black_heart\"],\"tags\":[]},\"💔\":{\"category\":\"symbols\",\"description\":\"broken heart\",\"names\":[\"broken_heart\"],\"tags\":[]},\"❣️\":{\"category\":\"symbols\",\"description\":\"heavy heart exclamation\",\"names\":[\"heavy_heart_exclamation\"],\"tags\":[]},\"💕\":{\"category\":\"symbols\",\"description\":\"two hearts\",\"names\":[\"two_hearts\"],\"tags\":[]},\"💞\":{\"category\":\"symbols\",\"description\":\"revolving hearts\",\"names\":[\"revolving_hearts\"],\"tags\":[]},\"💓\":{\"category\":\"symbols\",\"description\":\"beating heart\",\"names\":[\"heartbeat\"],\"tags\":[]},\"💗\":{\"category\":\"symbols\",\"description\":\"growing heart\",\"names\":[\"heartpulse\"],\"tags\":[]},\"💖\":{\"category\":\"symbols\",\"description\":\"sparkling heart\",\"names\":[\"sparkling_heart\"],\"tags\":[]},\"💘\":{\"category\":\"symbols\",\"description\":\"heart with arrow\",\"names\":[\"cupid\"],\"tags\":[\"love\",\"heart\"]},\"💝\":{\"category\":\"symbols\",\"description\":\"heart with ribbon\",\"names\":[\"gift_heart\"],\"tags\":[\"chocolates\"]},\"💟\":{\"category\":\"symbols\",\"description\":\"heart decoration\",\"names\":[\"heart_decoration\"],\"tags\":[]},\"☮️\":{\"category\":\"symbols\",\"description\":\"peace symbol\",\"names\":[\"peace_symbol\"],\"tags\":[]},\"✝️\":{\"category\":\"symbols\",\"description\":\"latin cross\",\"names\":[\"latin_cross\"],\"tags\":[]},\"☪️\":{\"category\":\"symbols\",\"description\":\"star and crescent\",\"names\":[\"star_and_crescent\"],\"tags\":[]},\"🕉\":{\"category\":\"symbols\",\"description\":\"om\",\"names\":[\"om\"],\"tags\":[]},\"☸️\":{\"category\":\"symbols\",\"description\":\"wheel of dharma\",\"names\":[\"wheel_of_dharma\"],\"tags\":[]},\"✡️\":{\"category\":\"symbols\",\"description\":\"star of David\",\"names\":[\"star_of_david\"],\"tags\":[]},\"🔯\":{\"category\":\"symbols\",\"description\":\"dotted six-pointed star\",\"names\":[\"six_pointed_star\"],\"tags\":[]},\"🕎\":{\"category\":\"symbols\",\"description\":\"menorah\",\"names\":[\"menorah\"],\"tags\":[]},\"☯️\":{\"category\":\"symbols\",\"description\":\"yin yang\",\"names\":[\"yin_yang\"],\"tags\":[]},\"☦️\":{\"category\":\"symbols\",\"description\":\"orthodox cross\",\"names\":[\"orthodox_cross\"],\"tags\":[]},\"🛐\":{\"category\":\"symbols\",\"description\":\"place of worship\",\"names\":[\"place_of_worship\"],\"tags\":[]},\"⛎\":{\"category\":\"symbols\",\"description\":\"Ophiuchus\",\"names\":[\"ophiuchus\"],\"tags\":[]},\"♈️\":{\"category\":\"symbols\",\"description\":\"Aries\",\"names\":[\"aries\"],\"tags\":[]},\"♉️\":{\"category\":\"symbols\",\"description\":\"Taurus\",\"names\":[\"taurus\"],\"tags\":[]},\"♊️\":{\"category\":\"symbols\",\"description\":\"Gemini\",\"names\":[\"gemini\"],\"tags\":[]},\"♋️\":{\"category\":\"symbols\",\"description\":\"Cancer\",\"names\":[\"cancer\"],\"tags\":[]},\"♌️\":{\"category\":\"symbols\",\"description\":\"Leo\",\"names\":[\"leo\"],\"tags\":[]},\"♍️\":{\"category\":\"symbols\",\"description\":\"Virgo\",\"names\":[\"virgo\"],\"tags\":[]},\"♎️\":{\"category\":\"symbols\",\"description\":\"Libra\",\"names\":[\"libra\"],\"tags\":[]},\"♏️\":{\"category\":\"symbols\",\"description\":\"Scorpius\",\"names\":[\"scorpius\"],\"tags\":[]},\"♐️\":{\"category\":\"symbols\",\"description\":\"Sagittarius\",\"names\":[\"sagittarius\"],\"tags\":[]},\"♑️\":{\"category\":\"symbols\",\"description\":\"Capricorn\",\"names\":[\"capricorn\"],\"tags\":[]},\"♒️\":{\"category\":\"symbols\",\"description\":\"Aquarius\",\"names\":[\"aquarius\"],\"tags\":[]},\"♓️\":{\"category\":\"symbols\",\"description\":\"Pisces\",\"names\":[\"pisces\"],\"tags\":[]},\"🆔\":{\"category\":\"symbols\",\"description\":\"ID button\",\"names\":[\"id\"],\"tags\":[]},\"⚛️\":{\"category\":\"symbols\",\"description\":\"atom symbol\",\"names\":[\"atom_symbol\"],\"tags\":[]},\"🉑\":{\"category\":\"symbols\",\"description\":\"Japanese “acceptable” button\",\"names\":[\"accept\"],\"tags\":[]},\"☢️\":{\"category\":\"symbols\",\"description\":\"radioactive\",\"names\":[\"radioactive\"],\"tags\":[]},\"☣️\":{\"category\":\"symbols\",\"description\":\"biohazard\",\"names\":[\"biohazard\"],\"tags\":[]},\"📴\":{\"category\":\"symbols\",\"description\":\"mobile phone off\",\"names\":[\"mobile_phone_off\"],\"tags\":[\"mute\",\"off\"]},\"📳\":{\"category\":\"symbols\",\"description\":\"vibration mode\",\"names\":[\"vibration_mode\"],\"tags\":[]},\"🈶\":{\"category\":\"symbols\",\"description\":\"Japanese “not free of charge” button\",\"names\":[\"u6709\"],\"tags\":[]},\"🈚️\":{\"category\":\"symbols\",\"description\":\"Japanese “free of charge” button\",\"names\":[\"u7121\"],\"tags\":[]},\"🈸\":{\"category\":\"symbols\",\"description\":\"Japanese “application” button\",\"names\":[\"u7533\"],\"tags\":[]},\"🈺\":{\"category\":\"symbols\",\"description\":\"Japanese “open for business” button\",\"names\":[\"u55b6\"],\"tags\":[]},\"🈷️\":{\"category\":\"symbols\",\"description\":\"Japanese “monthly amount” button\",\"names\":[\"u6708\"],\"tags\":[]},\"✴️\":{\"category\":\"symbols\",\"description\":\"eight-pointed star\",\"names\":[\"eight_pointed_black_star\"],\"tags\":[]},\"🆚\":{\"category\":\"symbols\",\"description\":\"VS button\",\"names\":[\"vs\"],\"tags\":[]},\"💮\":{\"category\":\"symbols\",\"description\":\"white flower\",\"names\":[\"white_flower\"],\"tags\":[]},\"🉐\":{\"category\":\"symbols\",\"description\":\"Japanese “bargain” button\",\"names\":[\"ideograph_advantage\"],\"tags\":[]},\"㊙️\":{\"category\":\"symbols\",\"description\":\"Japanese “secret” button\",\"names\":[\"secret\"],\"tags\":[]},\"㊗️\":{\"category\":\"symbols\",\"description\":\"Japanese “congratulations” button\",\"names\":[\"congratulations\"],\"tags\":[]},\"🈴\":{\"category\":\"symbols\",\"description\":\"Japanese “passing grade” button\",\"names\":[\"u5408\"],\"tags\":[]},\"🈵\":{\"category\":\"symbols\",\"description\":\"Japanese “no vacancy” button\",\"names\":[\"u6e80\"],\"tags\":[]},\"🈹\":{\"category\":\"symbols\",\"description\":\"Japanese “discount” button\",\"names\":[\"u5272\"],\"tags\":[]},\"🈲\":{\"category\":\"symbols\",\"description\":\"Japanese “prohibited” button\",\"names\":[\"u7981\"],\"tags\":[]},\"🅰️\":{\"category\":\"symbols\",\"description\":\"A button (blood type)\",\"names\":[\"a\"],\"tags\":[]},\"🅱️\":{\"category\":\"symbols\",\"description\":\"B button (blood type)\",\"names\":[\"b\"],\"tags\":[]},\"🆎\":{\"category\":\"symbols\",\"description\":\"AB button (blood type)\",\"names\":[\"ab\"],\"tags\":[]},\"🆑\":{\"category\":\"symbols\",\"description\":\"CL button\",\"names\":[\"cl\"],\"tags\":[]},\"🅾️\":{\"category\":\"symbols\",\"description\":\"O button (blood type)\",\"names\":[\"o2\"],\"tags\":[]},\"🆘\":{\"category\":\"symbols\",\"description\":\"SOS button\",\"names\":[\"sos\"],\"tags\":[\"help\",\"emergency\"]},\"❌\":{\"category\":\"symbols\",\"description\":\"cross mark\",\"names\":[\"x\"],\"tags\":[]},\"⭕️\":{\"category\":\"symbols\",\"description\":\"heavy large circle\",\"names\":[\"o\"],\"tags\":[]},\"🛑\":{\"category\":\"symbols\",\"description\":\"stop sign\",\"names\":[\"stop_sign\"],\"tags\":[]},\"⛔️\":{\"category\":\"symbols\",\"description\":\"no entry\",\"names\":[\"no_entry\"],\"tags\":[\"limit\"]},\"📛\":{\"category\":\"symbols\",\"description\":\"name badge\",\"names\":[\"name_badge\"],\"tags\":[]},\"🚫\":{\"category\":\"symbols\",\"description\":\"prohibited\",\"names\":[\"no_entry_sign\"],\"tags\":[\"block\",\"forbidden\"]},\"💯\":{\"category\":\"symbols\",\"description\":\"hundred points\",\"names\":[\"100\"],\"tags\":[\"score\",\"perfect\"]},\"💢\":{\"category\":\"symbols\",\"description\":\"anger symbol\",\"names\":[\"anger\"],\"tags\":[\"angry\"]},\"♨️\":{\"category\":\"symbols\",\"description\":\"hot springs\",\"names\":[\"hotsprings\"],\"tags\":[]},\"🚷\":{\"category\":\"symbols\",\"description\":\"no pedestrians\",\"names\":[\"no_pedestrians\"],\"tags\":[]},\"🚯\":{\"category\":\"symbols\",\"description\":\"no littering\",\"names\":[\"do_not_litter\"],\"tags\":[]},\"🚳\":{\"category\":\"symbols\",\"description\":\"no bicycles\",\"names\":[\"no_bicycles\"],\"tags\":[]},\"🚱\":{\"category\":\"symbols\",\"description\":\"non-potable water\",\"names\":[\"non-potable_water\"],\"tags\":[]},\"🔞\":{\"category\":\"symbols\",\"description\":\"no one under eighteen\",\"names\":[\"underage\"],\"tags\":[]},\"📵\":{\"category\":\"symbols\",\"description\":\"no mobile phones\",\"names\":[\"no_mobile_phones\"],\"tags\":[]},\"🚭\":{\"category\":\"symbols\",\"description\":\"no smoking\",\"names\":[\"no_smoking\"],\"tags\":[]},\"❗️\":{\"category\":\"symbols\",\"description\":\"exclamation mark\",\"names\":[\"exclamation\",\"heavy_exclamation_mark\"],\"tags\":[\"bang\"]},\"❕\":{\"category\":\"symbols\",\"description\":\"white exclamation mark\",\"names\":[\"grey_exclamation\"],\"tags\":[]},\"❓\":{\"category\":\"symbols\",\"description\":\"question mark\",\"names\":[\"question\"],\"tags\":[\"confused\"]},\"❔\":{\"category\":\"symbols\",\"description\":\"white question mark\",\"names\":[\"grey_question\"],\"tags\":[]},\"‼️\":{\"category\":\"symbols\",\"description\":\"double exclamation mark\",\"names\":[\"bangbang\"],\"tags\":[]},\"⁉️\":{\"category\":\"symbols\",\"description\":\"exclamation question mark\",\"names\":[\"interrobang\"],\"tags\":[]},\"🔅\":{\"category\":\"symbols\",\"description\":\"dim button\",\"names\":[\"low_brightness\"],\"tags\":[]},\"🔆\":{\"category\":\"symbols\",\"description\":\"bright button\",\"names\":[\"high_brightness\"],\"tags\":[]},\"〽️\":{\"category\":\"symbols\",\"description\":\"part alternation mark\",\"names\":[\"part_alternation_mark\"],\"tags\":[]},\"⚠️\":{\"category\":\"symbols\",\"description\":\"warning\",\"names\":[\"warning\"],\"tags\":[\"wip\"]},\"🚸\":{\"category\":\"symbols\",\"description\":\"children crossing\",\"names\":[\"children_crossing\"],\"tags\":[]},\"🔱\":{\"category\":\"symbols\",\"description\":\"trident emblem\",\"names\":[\"trident\"],\"tags\":[]},\"⚜️\":{\"category\":\"symbols\",\"description\":\"fleur-de-lis\",\"names\":[\"fleur_de_lis\"],\"tags\":[]},\"🔰\":{\"category\":\"symbols\",\"description\":\"Japanese symbol for beginner\",\"names\":[\"beginner\"],\"tags\":[]},\"♻️\":{\"category\":\"symbols\",\"description\":\"recycling symbol\",\"names\":[\"recycle\"],\"tags\":[\"environment\",\"green\"]},\"✅\":{\"category\":\"symbols\",\"description\":\"white heavy check mark\",\"names\":[\"white_check_mark\"],\"tags\":[]},\"🈯️\":{\"category\":\"symbols\",\"description\":\"Japanese “reserved” button\",\"names\":[\"u6307\"],\"tags\":[]},\"💹\":{\"category\":\"symbols\",\"description\":\"chart increasing with yen\",\"names\":[\"chart\"],\"tags\":[]},\"❇️\":{\"category\":\"symbols\",\"description\":\"sparkle\",\"names\":[\"sparkle\"],\"tags\":[]},\"✳️\":{\"category\":\"symbols\",\"description\":\"eight-spoked asterisk\",\"names\":[\"eight_spoked_asterisk\"],\"tags\":[]},\"❎\":{\"category\":\"symbols\",\"description\":\"cross mark button\",\"names\":[\"negative_squared_cross_mark\"],\"tags\":[]},\"🌐\":{\"category\":\"symbols\",\"description\":\"globe with meridians\",\"names\":[\"globe_with_meridians\"],\"tags\":[\"world\",\"global\",\"international\"]},\"💠\":{\"category\":\"symbols\",\"description\":\"diamond with a dot\",\"names\":[\"diamond_shape_with_a_dot_inside\"],\"tags\":[]},\"Ⓜ️\":{\"category\":\"symbols\",\"description\":\"circled M\",\"names\":[\"m\"],\"tags\":[]},\"🌀\":{\"category\":\"symbols\",\"description\":\"cyclone\",\"names\":[\"cyclone\"],\"tags\":[\"swirl\"]},\"💤\":{\"category\":\"symbols\",\"description\":\"zzz\",\"names\":[\"zzz\"],\"tags\":[\"sleeping\"]},\"🏧\":{\"category\":\"symbols\",\"description\":\"ATM sign\",\"names\":[\"atm\"],\"tags\":[]},\"🚾\":{\"category\":\"symbols\",\"description\":\"water closet\",\"names\":[\"wc\"],\"tags\":[\"toilet\",\"restroom\"]},\"♿️\":{\"category\":\"symbols\",\"description\":\"wheelchair symbol\",\"names\":[\"wheelchair\"],\"tags\":[\"accessibility\"]},\"🅿️\":{\"category\":\"symbols\",\"description\":\"P button\",\"names\":[\"parking\"],\"tags\":[]},\"🈳\":{\"category\":\"symbols\",\"description\":\"Japanese “vacancy” button\",\"names\":[\"u7a7a\"],\"tags\":[]},\"🈂️\":{\"category\":\"symbols\",\"description\":\"Japanese “service charge” button\",\"names\":[\"sa\"],\"tags\":[]},\"🛂\":{\"category\":\"symbols\",\"description\":\"passport control\",\"names\":[\"passport_control\"],\"tags\":[]},\"🛃\":{\"category\":\"symbols\",\"description\":\"customs\",\"names\":[\"customs\"],\"tags\":[]},\"🛄\":{\"category\":\"symbols\",\"description\":\"baggage claim\",\"names\":[\"baggage_claim\"],\"tags\":[\"airport\"]},\"🛅\":{\"category\":\"symbols\",\"description\":\"left luggage\",\"names\":[\"left_luggage\"],\"tags\":[]},\"🚹\":{\"category\":\"symbols\",\"description\":\"men’s room\",\"names\":[\"mens\"],\"tags\":[]},\"🚺\":{\"category\":\"symbols\",\"description\":\"women’s room\",\"names\":[\"womens\"],\"tags\":[]},\"🚼\":{\"category\":\"symbols\",\"description\":\"baby symbol\",\"names\":[\"baby_symbol\"],\"tags\":[]},\"🚻\":{\"category\":\"symbols\",\"description\":\"restroom\",\"names\":[\"restroom\"],\"tags\":[\"toilet\"]},\"🚮\":{\"category\":\"symbols\",\"description\":\"litter in bin sign\",\"names\":[\"put_litter_in_its_place\"],\"tags\":[]},\"🎦\":{\"category\":\"symbols\",\"description\":\"cinema\",\"names\":[\"cinema\"],\"tags\":[\"film\",\"movie\"]},\"📶\":{\"category\":\"symbols\",\"description\":\"antenna bars\",\"names\":[\"signal_strength\"],\"tags\":[\"wifi\"]},\"🈁\":{\"category\":\"symbols\",\"description\":\"Japanese “here” button\",\"names\":[\"koko\"],\"tags\":[]},\"🔣\":{\"category\":\"symbols\",\"description\":\"input symbols\",\"names\":[\"symbols\"],\"tags\":[]},\"ℹ️\":{\"category\":\"symbols\",\"description\":\"information\",\"names\":[\"information_source\"],\"tags\":[]},\"🔤\":{\"category\":\"symbols\",\"description\":\"input latin letters\",\"names\":[\"abc\"],\"tags\":[\"alphabet\"]},\"🔡\":{\"category\":\"symbols\",\"description\":\"input latin lowercase\",\"names\":[\"abcd\"],\"tags\":[]},\"🔠\":{\"category\":\"symbols\",\"description\":\"input latin uppercase\",\"names\":[\"capital_abcd\"],\"tags\":[\"letters\"]},\"🆖\":{\"category\":\"symbols\",\"description\":\"NG button\",\"names\":[\"ng\"],\"tags\":[]},\"🆗\":{\"category\":\"symbols\",\"description\":\"OK button\",\"names\":[\"ok\"],\"tags\":[\"yes\"]},\"🆙\":{\"category\":\"symbols\",\"description\":\"UP! button\",\"names\":[\"up\"],\"tags\":[]},\"🆒\":{\"category\":\"symbols\",\"description\":\"COOL button\",\"names\":[\"cool\"],\"tags\":[]},\"🆕\":{\"category\":\"symbols\",\"description\":\"NEW button\",\"names\":[\"new\"],\"tags\":[\"fresh\"]},\"🆓\":{\"category\":\"symbols\",\"description\":\"FREE button\",\"names\":[\"free\"],\"tags\":[]},\"0️⃣\":{\"category\":\"symbols\",\"description\":\"keycap: 0\",\"names\":[\"zero\"],\"tags\":[]},\"1️⃣\":{\"category\":\"symbols\",\"description\":\"keycap: 1\",\"names\":[\"one\"],\"tags\":[]},\"2️⃣\":{\"category\":\"symbols\",\"description\":\"keycap: 2\",\"names\":[\"two\"],\"tags\":[]},\"3️⃣\":{\"category\":\"symbols\",\"description\":\"keycap: 3\",\"names\":[\"three\"],\"tags\":[]},\"4️⃣\":{\"category\":\"symbols\",\"description\":\"keycap: 4\",\"names\":[\"four\"],\"tags\":[]},\"5️⃣\":{\"category\":\"symbols\",\"description\":\"keycap: 5\",\"names\":[\"five\"],\"tags\":[]},\"6️⃣\":{\"category\":\"symbols\",\"description\":\"keycap: 6\",\"names\":[\"six\"],\"tags\":[]},\"7️⃣\":{\"category\":\"symbols\",\"description\":\"keycap: 7\",\"names\":[\"seven\"],\"tags\":[]},\"8️⃣\":{\"category\":\"symbols\",\"description\":\"keycap: 8\",\"names\":[\"eight\"],\"tags\":[]},\"9️⃣\":{\"category\":\"symbols\",\"description\":\"keycap: 9\",\"names\":[\"nine\"],\"tags\":[]},\"🔟\":{\"category\":\"symbols\",\"description\":\"keycap 10\",\"names\":[\"keycap_ten\"],\"tags\":[]},\"🔢\":{\"category\":\"symbols\",\"description\":\"input numbers\",\"names\":[\"1234\"],\"tags\":[\"numbers\"]},\"#️⃣\":{\"category\":\"symbols\",\"description\":\"keycap: #\",\"names\":[\"hash\"],\"tags\":[\"number\"]},\"*️⃣\":{\"category\":\"symbols\",\"description\":\"keycap: *\",\"names\":[\"asterisk\"],\"tags\":[]},\"▶️\":{\"category\":\"symbols\",\"description\":\"play button\",\"names\":[\"arrow_forward\"],\"tags\":[]},\"⏸\":{\"category\":\"symbols\",\"description\":\"pause button\",\"names\":[\"pause_button\"],\"tags\":[]},\"⏯\":{\"category\":\"symbols\",\"description\":\"play or pause button\",\"names\":[\"play_or_pause_button\"],\"tags\":[]},\"⏹\":{\"category\":\"symbols\",\"description\":\"stop button\",\"names\":[\"stop_button\"],\"tags\":[]},\"⏺\":{\"category\":\"symbols\",\"description\":\"record button\",\"names\":[\"record_button\"],\"tags\":[]},\"⏭\":{\"category\":\"symbols\",\"description\":\"next track button\",\"names\":[\"next_track_button\"],\"tags\":[]},\"⏮\":{\"category\":\"symbols\",\"description\":\"last track button\",\"names\":[\"previous_track_button\"],\"tags\":[]},\"⏩\":{\"category\":\"symbols\",\"description\":\"fast-forward button\",\"names\":[\"fast_forward\"],\"tags\":[]},\"⏪\":{\"category\":\"symbols\",\"description\":\"fast reverse button\",\"names\":[\"rewind\"],\"tags\":[]},\"⏫\":{\"category\":\"symbols\",\"description\":\"fast up button\",\"names\":[\"arrow_double_up\"],\"tags\":[]},\"⏬\":{\"category\":\"symbols\",\"description\":\"fast down button\",\"names\":[\"arrow_double_down\"],\"tags\":[]},\"◀️\":{\"category\":\"symbols\",\"description\":\"reverse button\",\"names\":[\"arrow_backward\"],\"tags\":[]},\"🔼\":{\"category\":\"symbols\",\"description\":\"up button\",\"names\":[\"arrow_up_small\"],\"tags\":[]},\"🔽\":{\"category\":\"symbols\",\"description\":\"down button\",\"names\":[\"arrow_down_small\"],\"tags\":[]},\"➡️\":{\"category\":\"symbols\",\"description\":\"right arrow\",\"names\":[\"arrow_right\"],\"tags\":[]},\"⬅️\":{\"category\":\"symbols\",\"description\":\"left arrow\",\"names\":[\"arrow_left\"],\"tags\":[]},\"⬆️\":{\"category\":\"symbols\",\"description\":\"up arrow\",\"names\":[\"arrow_up\"],\"tags\":[]},\"⬇️\":{\"category\":\"symbols\",\"description\":\"down arrow\",\"names\":[\"arrow_down\"],\"tags\":[]},\"↗️\":{\"category\":\"symbols\",\"description\":\"up-right arrow\",\"names\":[\"arrow_upper_right\"],\"tags\":[]},\"↘️\":{\"category\":\"symbols\",\"description\":\"down-right arrow\",\"names\":[\"arrow_lower_right\"],\"tags\":[]},\"↙️\":{\"category\":\"symbols\",\"description\":\"down-left arrow\",\"names\":[\"arrow_lower_left\"],\"tags\":[]},\"↖️\":{\"category\":\"symbols\",\"description\":\"up-left arrow\",\"names\":[\"arrow_upper_left\"],\"tags\":[]},\"↕️\":{\"category\":\"symbols\",\"description\":\"up-down arrow\",\"names\":[\"arrow_up_down\"],\"tags\":[]},\"↔️\":{\"category\":\"symbols\",\"description\":\"left-right arrow\",\"names\":[\"left_right_arrow\"],\"tags\":[]},\"↪️\":{\"category\":\"symbols\",\"description\":\"left arrow curving right\",\"names\":[\"arrow_right_hook\"],\"tags\":[]},\"↩️\":{\"category\":\"symbols\",\"description\":\"right arrow curving left\",\"names\":[\"leftwards_arrow_with_hook\"],\"tags\":[\"return\"]},\"⤴️\":{\"category\":\"symbols\",\"description\":\"right arrow curving up\",\"names\":[\"arrow_heading_up\"],\"tags\":[]},\"⤵️\":{\"category\":\"symbols\",\"description\":\"right arrow curving down\",\"names\":[\"arrow_heading_down\"],\"tags\":[]},\"🔀\":{\"category\":\"symbols\",\"description\":\"shuffle tracks button\",\"names\":[\"twisted_rightwards_arrows\"],\"tags\":[\"shuffle\"]},\"🔁\":{\"category\":\"symbols\",\"description\":\"repeat button\",\"names\":[\"repeat\"],\"tags\":[\"loop\"]},\"🔂\":{\"category\":\"symbols\",\"description\":\"repeat single button\",\"names\":[\"repeat_one\"],\"tags\":[]},\"🔄\":{\"category\":\"symbols\",\"description\":\"anticlockwise arrows button\",\"names\":[\"arrows_counterclockwise\"],\"tags\":[\"sync\"]},\"🔃\":{\"category\":\"symbols\",\"description\":\"clockwise vertical arrows\",\"names\":[\"arrows_clockwise\"],\"tags\":[]},\"🎵\":{\"category\":\"symbols\",\"description\":\"musical note\",\"names\":[\"musical_note\"],\"tags\":[]},\"🎶\":{\"category\":\"symbols\",\"description\":\"musical notes\",\"names\":[\"notes\"],\"tags\":[\"music\"]},\"➕\":{\"category\":\"symbols\",\"description\":\"heavy plus sign\",\"names\":[\"heavy_plus_sign\"],\"tags\":[]},\"➖\":{\"category\":\"symbols\",\"description\":\"heavy minus sign\",\"names\":[\"heavy_minus_sign\"],\"tags\":[]},\"➗\":{\"category\":\"symbols\",\"description\":\"heavy division sign\",\"names\":[\"heavy_division_sign\"],\"tags\":[]},\"✖️\":{\"category\":\"symbols\",\"description\":\"heavy multiplication x\",\"names\":[\"heavy_multiplication_x\"],\"tags\":[]},\"💲\":{\"category\":\"symbols\",\"description\":\"heavy dollar sign\",\"names\":[\"heavy_dollar_sign\"],\"tags\":[]},\"💱\":{\"category\":\"symbols\",\"description\":\"currency exchange\",\"names\":[\"currency_exchange\"],\"tags\":[]},\"™️\":{\"category\":\"symbols\",\"description\":\"trade mark\",\"names\":[\"tm\"],\"tags\":[\"trademark\"]},\"©️\":{\"category\":\"symbols\",\"description\":\"copyright\",\"names\":[\"copyright\"],\"tags\":[]},\"®️\":{\"category\":\"symbols\",\"description\":\"registered\",\"names\":[\"registered\"],\"tags\":[]},\"〰️\":{\"category\":\"symbols\",\"description\":\"wavy dash\",\"names\":[\"wavy_dash\"],\"tags\":[]},\"➰\":{\"category\":\"symbols\",\"description\":\"curly loop\",\"names\":[\"curly_loop\"],\"tags\":[]},\"➿\":{\"category\":\"symbols\",\"description\":\"double curly loop\",\"names\":[\"loop\"],\"tags\":[]},\"🔚\":{\"category\":\"symbols\",\"description\":\"END arrow\",\"names\":[\"end\"],\"tags\":[]},\"🔙\":{\"category\":\"symbols\",\"description\":\"BACK arrow\",\"names\":[\"back\"],\"tags\":[]},\"🔛\":{\"category\":\"symbols\",\"description\":\"ON! arrow\",\"names\":[\"on\"],\"tags\":[]},\"🔝\":{\"category\":\"symbols\",\"description\":\"TOP arrow\",\"names\":[\"top\"],\"tags\":[]},\"🔜\":{\"category\":\"symbols\",\"description\":\"SOON arrow\",\"names\":[\"soon\"],\"tags\":[]},\"✔️\":{\"category\":\"symbols\",\"description\":\"heavy check mark\",\"names\":[\"heavy_check_mark\"],\"tags\":[]},\"☑️\":{\"category\":\"symbols\",\"description\":\"ballot box with check\",\"names\":[\"ballot_box_with_check\"],\"tags\":[]},\"🔘\":{\"category\":\"symbols\",\"description\":\"radio button\",\"names\":[\"radio_button\"],\"tags\":[]},\"⚪️\":{\"category\":\"symbols\",\"description\":\"white circle\",\"names\":[\"white_circle\"],\"tags\":[]},\"⚫️\":{\"category\":\"symbols\",\"description\":\"black circle\",\"names\":[\"black_circle\"],\"tags\":[]},\"🔴\":{\"category\":\"symbols\",\"description\":\"red circle\",\"names\":[\"red_circle\"],\"tags\":[]},\"🔵\":{\"category\":\"symbols\",\"description\":\"blue circle\",\"names\":[\"large_blue_circle\"],\"tags\":[]},\"🔺\":{\"category\":\"symbols\",\"description\":\"red triangle pointed up\",\"names\":[\"small_red_triangle\"],\"tags\":[]},\"🔻\":{\"category\":\"symbols\",\"description\":\"red triangle pointed down\",\"names\":[\"small_red_triangle_down\"],\"tags\":[]},\"🔸\":{\"category\":\"symbols\",\"description\":\"small orange diamond\",\"names\":[\"small_orange_diamond\"],\"tags\":[]},\"🔹\":{\"category\":\"symbols\",\"description\":\"small blue diamond\",\"names\":[\"small_blue_diamond\"],\"tags\":[]},\"🔶\":{\"category\":\"symbols\",\"description\":\"large orange diamond\",\"names\":[\"large_orange_diamond\"],\"tags\":[]},\"🔷\":{\"category\":\"symbols\",\"description\":\"large blue diamond\",\"names\":[\"large_blue_diamond\"],\"tags\":[]},\"🔳\":{\"category\":\"symbols\",\"description\":\"white square button\",\"names\":[\"white_square_button\"],\"tags\":[]},\"🔲\":{\"category\":\"symbols\",\"description\":\"black square button\",\"names\":[\"black_square_button\"],\"tags\":[]},\"▪️\":{\"category\":\"symbols\",\"description\":\"black small square\",\"names\":[\"black_small_square\"],\"tags\":[]},\"▫️\":{\"category\":\"symbols\",\"description\":\"white small square\",\"names\":[\"white_small_square\"],\"tags\":[]},\"◾️\":{\"category\":\"symbols\",\"description\":\"black medium-small square\",\"names\":[\"black_medium_small_square\"],\"tags\":[]},\"◽️\":{\"category\":\"symbols\",\"description\":\"white medium-small square\",\"names\":[\"white_medium_small_square\"],\"tags\":[]},\"◼️\":{\"category\":\"symbols\",\"description\":\"black medium square\",\"names\":[\"black_medium_square\"],\"tags\":[]},\"◻️\":{\"category\":\"symbols\",\"description\":\"white medium square\",\"names\":[\"white_medium_square\"],\"tags\":[]},\"⬛️\":{\"category\":\"symbols\",\"description\":\"black large square\",\"names\":[\"black_large_square\"],\"tags\":[]},\"⬜️\":{\"category\":\"symbols\",\"description\":\"white large square\",\"names\":[\"white_large_square\"],\"tags\":[]},\"🔈\":{\"category\":\"symbols\",\"description\":\"speaker low volume\",\"names\":[\"speaker\"],\"tags\":[]},\"🔇\":{\"category\":\"symbols\",\"description\":\"muted speaker\",\"names\":[\"mute\"],\"tags\":[\"sound\",\"volume\"]},\"🔉\":{\"category\":\"symbols\",\"description\":\"speaker medium volume\",\"names\":[\"sound\"],\"tags\":[\"volume\"]},\"🔊\":{\"category\":\"symbols\",\"description\":\"speaker high volume\",\"names\":[\"loud_sound\"],\"tags\":[\"volume\"]},\"🔔\":{\"category\":\"symbols\",\"description\":\"bell\",\"names\":[\"bell\"],\"tags\":[\"sound\",\"notification\"]},\"🔕\":{\"category\":\"symbols\",\"description\":\"bell with slash\",\"names\":[\"no_bell\"],\"tags\":[\"volume\",\"off\"]},\"📣\":{\"category\":\"symbols\",\"description\":\"megaphone\",\"names\":[\"mega\"],\"tags\":[]},\"📢\":{\"category\":\"symbols\",\"description\":\"loudspeaker\",\"names\":[\"loudspeaker\"],\"tags\":[\"announcement\"]},\"👁‍🗨\":{\"category\":\"symbols\",\"description\":\"eye in speech bubble\",\"names\":[\"eye_speech_bubble\"],\"tags\":[]},\"💬\":{\"category\":\"symbols\",\"description\":\"speech balloon\",\"names\":[\"speech_balloon\"],\"tags\":[\"comment\"]},\"💭\":{\"category\":\"symbols\",\"description\":\"thought balloon\",\"names\":[\"thought_balloon\"],\"tags\":[\"thinking\"]},\"🗯\":{\"category\":\"symbols\",\"description\":\"right anger bubble\",\"names\":[\"right_anger_bubble\"],\"tags\":[]},\"♠️\":{\"category\":\"symbols\",\"description\":\"spade suit\",\"names\":[\"spades\"],\"tags\":[]},\"♣️\":{\"category\":\"symbols\",\"description\":\"club suit\",\"names\":[\"clubs\"],\"tags\":[]},\"♥️\":{\"category\":\"symbols\",\"description\":\"heart suit\",\"names\":[\"hearts\"],\"tags\":[]},\"♦️\":{\"category\":\"symbols\",\"description\":\"diamond suit\",\"names\":[\"diamonds\"],\"tags\":[]},\"🃏\":{\"category\":\"symbols\",\"description\":\"joker\",\"names\":[\"black_joker\"],\"tags\":[]},\"🎴\":{\"category\":\"symbols\",\"description\":\"flower playing cards\",\"names\":[\"flower_playing_cards\"],\"tags\":[]},\"🀄️\":{\"category\":\"symbols\",\"description\":\"mahjong red dragon\",\"names\":[\"mahjong\"],\"tags\":[]},\"🕐\":{\"category\":\"symbols\",\"description\":\"one o’clock\",\"names\":[\"clock1\"],\"tags\":[]},\"🕑\":{\"category\":\"symbols\",\"description\":\"two o’clock\",\"names\":[\"clock2\"],\"tags\":[]},\"🕒\":{\"category\":\"symbols\",\"description\":\"three o’clock\",\"names\":[\"clock3\"],\"tags\":[]},\"🕓\":{\"category\":\"symbols\",\"description\":\"four o’clock\",\"names\":[\"clock4\"],\"tags\":[]},\"🕔\":{\"category\":\"symbols\",\"description\":\"five o’clock\",\"names\":[\"clock5\"],\"tags\":[]},\"🕕\":{\"category\":\"symbols\",\"description\":\"six o’clock\",\"names\":[\"clock6\"],\"tags\":[]},\"🕖\":{\"category\":\"symbols\",\"description\":\"seven o’clock\",\"names\":[\"clock7\"],\"tags\":[]},\"🕗\":{\"category\":\"symbols\",\"description\":\"eight o’clock\",\"names\":[\"clock8\"],\"tags\":[]},\"🕘\":{\"category\":\"symbols\",\"description\":\"nine o’clock\",\"names\":[\"clock9\"],\"tags\":[]},\"🕙\":{\"category\":\"symbols\",\"description\":\"ten o’clock\",\"names\":[\"clock10\"],\"tags\":[]},\"🕚\":{\"category\":\"symbols\",\"description\":\"eleven o’clock\",\"names\":[\"clock11\"],\"tags\":[]},\"🕛\":{\"category\":\"symbols\",\"description\":\"twelve o’clock\",\"names\":[\"clock12\"],\"tags\":[]},\"🕜\":{\"category\":\"symbols\",\"description\":\"one-thirty\",\"names\":[\"clock130\"],\"tags\":[]},\"🕝\":{\"category\":\"symbols\",\"description\":\"two-thirty\",\"names\":[\"clock230\"],\"tags\":[]},\"🕞\":{\"category\":\"symbols\",\"description\":\"three-thirty\",\"names\":[\"clock330\"],\"tags\":[]},\"🕟\":{\"category\":\"symbols\",\"description\":\"four-thirty\",\"names\":[\"clock430\"],\"tags\":[]},\"🕠\":{\"category\":\"symbols\",\"description\":\"five-thirty\",\"names\":[\"clock530\"],\"tags\":[]},\"🕡\":{\"category\":\"symbols\",\"description\":\"six-thirty\",\"names\":[\"clock630\"],\"tags\":[]},\"🕢\":{\"category\":\"symbols\",\"description\":\"seven-thirty\",\"names\":[\"clock730\"],\"tags\":[]},\"🕣\":{\"category\":\"symbols\",\"description\":\"eight-thirty\",\"names\":[\"clock830\"],\"tags\":[]},\"🕤\":{\"category\":\"symbols\",\"description\":\"nine-thirty\",\"names\":[\"clock930\"],\"tags\":[]},\"🕥\":{\"category\":\"symbols\",\"description\":\"ten-thirty\",\"names\":[\"clock1030\"],\"tags\":[]},\"🕦\":{\"category\":\"symbols\",\"description\":\"eleven-thirty\",\"names\":[\"clock1130\"],\"tags\":[]},\"🕧\":{\"category\":\"symbols\",\"description\":\"twelve-thirty\",\"names\":[\"clock1230\"],\"tags\":[]},\"🏳️\":{\"category\":\"flags\",\"description\":\"white flag\",\"names\":[\"white_flag\"],\"tags\":[]},\"🏴\":{\"category\":\"flags\",\"description\":\"black flag\",\"names\":[\"black_flag\"],\"tags\":[]},\"🏁\":{\"category\":\"flags\",\"description\":\"chequered flag\",\"names\":[\"checkered_flag\"],\"tags\":[\"milestone\",\"finish\"]},\"🚩\":{\"category\":\"flags\",\"description\":\"triangular flag\",\"names\":[\"triangular_flag_on_post\"],\"tags\":[]},\"🏳️‍🌈\":{\"category\":\"flags\",\"description\":\"rainbow flag\",\"names\":[\"rainbow_flag\"],\"tags\":[\"pride\"]},\"🇦🇫\":{\"category\":\"flags\",\"description\":\"Afghanistan\",\"names\":[\"afghanistan\"],\"tags\":[]},\"🇦🇽\":{\"category\":\"flags\",\"description\":\"Åland Islands\",\"names\":[\"aland_islands\"],\"tags\":[]},\"🇦🇱\":{\"category\":\"flags\",\"description\":\"Albania\",\"names\":[\"albania\"],\"tags\":[]},\"🇩🇿\":{\"category\":\"flags\",\"description\":\"Algeria\",\"names\":[\"algeria\"],\"tags\":[]},\"🇦🇸\":{\"category\":\"flags\",\"description\":\"American Samoa\",\"names\":[\"american_samoa\"],\"tags\":[]},\"🇦🇩\":{\"category\":\"flags\",\"description\":\"Andorra\",\"names\":[\"andorra\"],\"tags\":[]},\"🇦🇴\":{\"category\":\"flags\",\"description\":\"Angola\",\"names\":[\"angola\"],\"tags\":[]},\"🇦🇮\":{\"category\":\"flags\",\"description\":\"Anguilla\",\"names\":[\"anguilla\"],\"tags\":[]},\"🇦🇶\":{\"category\":\"flags\",\"description\":\"Antarctica\",\"names\":[\"antarctica\"],\"tags\":[]},\"🇦🇬\":{\"category\":\"flags\",\"description\":\"Antigua & Barbuda\",\"names\":[\"antigua_barbuda\"],\"tags\":[]},\"🇦🇷\":{\"category\":\"flags\",\"description\":\"Argentina\",\"names\":[\"argentina\"],\"tags\":[]},\"🇦🇲\":{\"category\":\"flags\",\"description\":\"Armenia\",\"names\":[\"armenia\"],\"tags\":[]},\"🇦🇼\":{\"category\":\"flags\",\"description\":\"Aruba\",\"names\":[\"aruba\"],\"tags\":[]},\"🇦🇺\":{\"category\":\"flags\",\"description\":\"Australia\",\"names\":[\"australia\"],\"tags\":[]},\"🇦🇹\":{\"category\":\"flags\",\"description\":\"Austria\",\"names\":[\"austria\"],\"tags\":[]},\"🇦🇿\":{\"category\":\"flags\",\"description\":\"Azerbaijan\",\"names\":[\"azerbaijan\"],\"tags\":[]},\"🇧🇸\":{\"category\":\"flags\",\"description\":\"Bahamas\",\"names\":[\"bahamas\"],\"tags\":[]},\"🇧🇭\":{\"category\":\"flags\",\"description\":\"Bahrain\",\"names\":[\"bahrain\"],\"tags\":[]},\"🇧🇩\":{\"category\":\"flags\",\"description\":\"Bangladesh\",\"names\":[\"bangladesh\"],\"tags\":[]},\"🇧🇧\":{\"category\":\"flags\",\"description\":\"Barbados\",\"names\":[\"barbados\"],\"tags\":[]},\"🇧🇾\":{\"category\":\"flags\",\"description\":\"Belarus\",\"names\":[\"belarus\"],\"tags\":[]},\"🇧🇪\":{\"category\":\"flags\",\"description\":\"Belgium\",\"names\":[\"belgium\"],\"tags\":[]},\"🇧🇿\":{\"category\":\"flags\",\"description\":\"Belize\",\"names\":[\"belize\"],\"tags\":[]},\"🇧🇯\":{\"category\":\"flags\",\"description\":\"Benin\",\"names\":[\"benin\"],\"tags\":[]},\"🇧🇲\":{\"category\":\"flags\",\"description\":\"Bermuda\",\"names\":[\"bermuda\"],\"tags\":[]},\"🇧🇹\":{\"category\":\"flags\",\"description\":\"Bhutan\",\"names\":[\"bhutan\"],\"tags\":[]},\"🇧🇴\":{\"category\":\"flags\",\"description\":\"Bolivia\",\"names\":[\"bolivia\"],\"tags\":[]},\"🇧🇶\":{\"category\":\"flags\",\"description\":\"Caribbean Netherlands\",\"names\":[\"caribbean_netherlands\"],\"tags\":[]},\"🇧🇦\":{\"category\":\"flags\",\"description\":\"Bosnia & Herzegovina\",\"names\":[\"bosnia_herzegovina\"],\"tags\":[]},\"🇧🇼\":{\"category\":\"flags\",\"description\":\"Botswana\",\"names\":[\"botswana\"],\"tags\":[]},\"🇧🇷\":{\"category\":\"flags\",\"description\":\"Brazil\",\"names\":[\"brazil\"],\"tags\":[]},\"🇮🇴\":{\"category\":\"flags\",\"description\":\"British Indian Ocean Territory\",\"names\":[\"british_indian_ocean_territory\"],\"tags\":[]},\"🇻🇬\":{\"category\":\"flags\",\"description\":\"British Virgin Islands\",\"names\":[\"british_virgin_islands\"],\"tags\":[]},\"🇧🇳\":{\"category\":\"flags\",\"description\":\"Brunei\",\"names\":[\"brunei\"],\"tags\":[]},\"🇧🇬\":{\"category\":\"flags\",\"description\":\"Bulgaria\",\"names\":[\"bulgaria\"],\"tags\":[]},\"🇧🇫\":{\"category\":\"flags\",\"description\":\"Burkina Faso\",\"names\":[\"burkina_faso\"],\"tags\":[]},\"🇧🇮\":{\"category\":\"flags\",\"description\":\"Burundi\",\"names\":[\"burundi\"],\"tags\":[]},\"🇨🇻\":{\"category\":\"flags\",\"description\":\"Cape Verde\",\"names\":[\"cape_verde\"],\"tags\":[]},\"🇰🇭\":{\"category\":\"flags\",\"description\":\"Cambodia\",\"names\":[\"cambodia\"],\"tags\":[]},\"🇨🇲\":{\"category\":\"flags\",\"description\":\"Cameroon\",\"names\":[\"cameroon\"],\"tags\":[]},\"🇨🇦\":{\"category\":\"flags\",\"description\":\"Canada\",\"names\":[\"canada\"],\"tags\":[]},\"🇮🇨\":{\"category\":\"flags\",\"description\":\"Canary Islands\",\"names\":[\"canary_islands\"],\"tags\":[]},\"🇰🇾\":{\"category\":\"flags\",\"description\":\"Cayman Islands\",\"names\":[\"cayman_islands\"],\"tags\":[]},\"🇨🇫\":{\"category\":\"flags\",\"description\":\"Central African Republic\",\"names\":[\"central_african_republic\"],\"tags\":[]},\"🇹🇩\":{\"category\":\"flags\",\"description\":\"Chad\",\"names\":[\"chad\"],\"tags\":[]},\"🇨🇱\":{\"category\":\"flags\",\"description\":\"Chile\",\"names\":[\"chile\"],\"tags\":[]},\"🇨🇳\":{\"category\":\"flags\",\"description\":\"China\",\"names\":[\"cn\"],\"tags\":[\"china\"]},\"🇨🇽\":{\"category\":\"flags\",\"description\":\"Christmas Island\",\"names\":[\"christmas_island\"],\"tags\":[]},\"🇨🇨\":{\"category\":\"flags\",\"description\":\"Cocos (Keeling) Islands\",\"names\":[\"cocos_islands\"],\"tags\":[\"keeling\"]},\"🇨🇴\":{\"category\":\"flags\",\"description\":\"Colombia\",\"names\":[\"colombia\"],\"tags\":[]},\"🇰🇲\":{\"category\":\"flags\",\"description\":\"Comoros\",\"names\":[\"comoros\"],\"tags\":[]},\"🇨🇬\":{\"category\":\"flags\",\"description\":\"Congo - Brazzaville\",\"names\":[\"congo_brazzaville\"],\"tags\":[]},\"🇨🇩\":{\"category\":\"flags\",\"description\":\"Congo - Kinshasa\",\"names\":[\"congo_kinshasa\"],\"tags\":[]},\"🇨🇰\":{\"category\":\"flags\",\"description\":\"Cook Islands\",\"names\":[\"cook_islands\"],\"tags\":[]},\"🇨🇷\":{\"category\":\"flags\",\"description\":\"Costa Rica\",\"names\":[\"costa_rica\"],\"tags\":[]},\"🇨🇮\":{\"category\":\"flags\",\"description\":\"Côte d’Ivoire\",\"names\":[\"cote_divoire\"],\"tags\":[\"ivory\"]},\"🇭🇷\":{\"category\":\"flags\",\"description\":\"Croatia\",\"names\":[\"croatia\"],\"tags\":[]},\"🇨🇺\":{\"category\":\"flags\",\"description\":\"Cuba\",\"names\":[\"cuba\"],\"tags\":[]},\"🇨🇼\":{\"category\":\"flags\",\"description\":\"Curaçao\",\"names\":[\"curacao\"],\"tags\":[]},\"🇨🇾\":{\"category\":\"flags\",\"description\":\"Cyprus\",\"names\":[\"cyprus\"],\"tags\":[]},\"🇨🇿\":{\"category\":\"flags\",\"description\":\"Czech Republic\",\"names\":[\"czech_republic\"],\"tags\":[]},\"🇩🇰\":{\"category\":\"flags\",\"description\":\"Denmark\",\"names\":[\"denmark\"],\"tags\":[]},\"🇩🇯\":{\"category\":\"flags\",\"description\":\"Djibouti\",\"names\":[\"djibouti\"],\"tags\":[]},\"🇩🇲\":{\"category\":\"flags\",\"description\":\"Dominica\",\"names\":[\"dominica\"],\"tags\":[]},\"🇩🇴\":{\"category\":\"flags\",\"description\":\"Dominican Republic\",\"names\":[\"dominican_republic\"],\"tags\":[]},\"🇪🇨\":{\"category\":\"flags\",\"description\":\"Ecuador\",\"names\":[\"ecuador\"],\"tags\":[]},\"🇪🇬\":{\"category\":\"flags\",\"description\":\"Egypt\",\"names\":[\"egypt\"],\"tags\":[]},\"🇸🇻\":{\"category\":\"flags\",\"description\":\"El Salvador\",\"names\":[\"el_salvador\"],\"tags\":[]},\"🇬🇶\":{\"category\":\"flags\",\"description\":\"Equatorial Guinea\",\"names\":[\"equatorial_guinea\"],\"tags\":[]},\"🇪🇷\":{\"category\":\"flags\",\"description\":\"Eritrea\",\"names\":[\"eritrea\"],\"tags\":[]},\"🇪🇪\":{\"category\":\"flags\",\"description\":\"Estonia\",\"names\":[\"estonia\"],\"tags\":[]},\"🇪🇹\":{\"category\":\"flags\",\"description\":\"Ethiopia\",\"names\":[\"ethiopia\"],\"tags\":[]},\"🇪🇺\":{\"category\":\"flags\",\"description\":\"European Union\",\"names\":[\"eu\",\"european_union\"],\"tags\":[]},\"🇫🇰\":{\"category\":\"flags\",\"description\":\"Falkland Islands\",\"names\":[\"falkland_islands\"],\"tags\":[]},\"🇫🇴\":{\"category\":\"flags\",\"description\":\"Faroe Islands\",\"names\":[\"faroe_islands\"],\"tags\":[]},\"🇫🇯\":{\"category\":\"flags\",\"description\":\"Fiji\",\"names\":[\"fiji\"],\"tags\":[]},\"🇫🇮\":{\"category\":\"flags\",\"description\":\"Finland\",\"names\":[\"finland\"],\"tags\":[]},\"🇫🇷\":{\"category\":\"flags\",\"description\":\"France\",\"names\":[\"fr\"],\"tags\":[\"france\",\"french\"]},\"🇬🇫\":{\"category\":\"flags\",\"description\":\"French Guiana\",\"names\":[\"french_guiana\"],\"tags\":[]},\"🇵🇫\":{\"category\":\"flags\",\"description\":\"French Polynesia\",\"names\":[\"french_polynesia\"],\"tags\":[]},\"🇹🇫\":{\"category\":\"flags\",\"description\":\"French Southern Territories\",\"names\":[\"french_southern_territories\"],\"tags\":[]},\"🇬🇦\":{\"category\":\"flags\",\"description\":\"Gabon\",\"names\":[\"gabon\"],\"tags\":[]},\"🇬🇲\":{\"category\":\"flags\",\"description\":\"Gambia\",\"names\":[\"gambia\"],\"tags\":[]},\"🇬🇪\":{\"category\":\"flags\",\"description\":\"Georgia\",\"names\":[\"georgia\"],\"tags\":[]},\"🇩🇪\":{\"category\":\"flags\",\"description\":\"Germany\",\"names\":[\"de\"],\"tags\":[\"flag\",\"germany\"]},\"🇬🇭\":{\"category\":\"flags\",\"description\":\"Ghana\",\"names\":[\"ghana\"],\"tags\":[]},\"🇬🇮\":{\"category\":\"flags\",\"description\":\"Gibraltar\",\"names\":[\"gibraltar\"],\"tags\":[]},\"🇬🇷\":{\"category\":\"flags\",\"description\":\"Greece\",\"names\":[\"greece\"],\"tags\":[]},\"🇬🇱\":{\"category\":\"flags\",\"description\":\"Greenland\",\"names\":[\"greenland\"],\"tags\":[]},\"🇬🇩\":{\"category\":\"flags\",\"description\":\"Grenada\",\"names\":[\"grenada\"],\"tags\":[]},\"🇬🇵\":{\"category\":\"flags\",\"description\":\"Guadeloupe\",\"names\":[\"guadeloupe\"],\"tags\":[]},\"🇬🇺\":{\"category\":\"flags\",\"description\":\"Guam\",\"names\":[\"guam\"],\"tags\":[]},\"🇬🇹\":{\"category\":\"flags\",\"description\":\"Guatemala\",\"names\":[\"guatemala\"],\"tags\":[]},\"🇬🇬\":{\"category\":\"flags\",\"description\":\"Guernsey\",\"names\":[\"guernsey\"],\"tags\":[]},\"🇬🇳\":{\"category\":\"flags\",\"description\":\"Guinea\",\"names\":[\"guinea\"],\"tags\":[]},\"🇬🇼\":{\"category\":\"flags\",\"description\":\"Guinea-Bissau\",\"names\":[\"guinea_bissau\"],\"tags\":[]},\"🇬🇾\":{\"category\":\"flags\",\"description\":\"Guyana\",\"names\":[\"guyana\"],\"tags\":[]},\"🇭🇹\":{\"category\":\"flags\",\"description\":\"Haiti\",\"names\":[\"haiti\"],\"tags\":[]},\"🇭🇳\":{\"category\":\"flags\",\"description\":\"Honduras\",\"names\":[\"honduras\"],\"tags\":[]},\"🇭🇰\":{\"category\":\"flags\",\"description\":\"Hong Kong SAR China\",\"names\":[\"hong_kong\"],\"tags\":[]},\"🇭🇺\":{\"category\":\"flags\",\"description\":\"Hungary\",\"names\":[\"hungary\"],\"tags\":[]},\"🇮🇸\":{\"category\":\"flags\",\"description\":\"Iceland\",\"names\":[\"iceland\"],\"tags\":[]},\"🇮🇳\":{\"category\":\"flags\",\"description\":\"India\",\"names\":[\"india\"],\"tags\":[]},\"🇮🇩\":{\"category\":\"flags\",\"description\":\"Indonesia\",\"names\":[\"indonesia\"],\"tags\":[]},\"🇮🇷\":{\"category\":\"flags\",\"description\":\"Iran\",\"names\":[\"iran\"],\"tags\":[]},\"🇮🇶\":{\"category\":\"flags\",\"description\":\"Iraq\",\"names\":[\"iraq\"],\"tags\":[]},\"🇮🇪\":{\"category\":\"flags\",\"description\":\"Ireland\",\"names\":[\"ireland\"],\"tags\":[]},\"🇮🇲\":{\"category\":\"flags\",\"description\":\"Isle of Man\",\"names\":[\"isle_of_man\"],\"tags\":[]},\"🇮🇱\":{\"category\":\"flags\",\"description\":\"Israel\",\"names\":[\"israel\"],\"tags\":[]},\"🇮🇹\":{\"category\":\"flags\",\"description\":\"Italy\",\"names\":[\"it\"],\"tags\":[\"italy\"]},\"🇯🇲\":{\"category\":\"flags\",\"description\":\"Jamaica\",\"names\":[\"jamaica\"],\"tags\":[]},\"🇯🇵\":{\"category\":\"flags\",\"description\":\"Japan\",\"names\":[\"jp\"],\"tags\":[\"japan\"]},\"🎌\":{\"category\":\"flags\",\"description\":\"crossed flags\",\"names\":[\"crossed_flags\"],\"tags\":[]},\"🇯🇪\":{\"category\":\"flags\",\"description\":\"Jersey\",\"names\":[\"jersey\"],\"tags\":[]},\"🇯🇴\":{\"category\":\"flags\",\"description\":\"Jordan\",\"names\":[\"jordan\"],\"tags\":[]},\"🇰🇿\":{\"category\":\"flags\",\"description\":\"Kazakhstan\",\"names\":[\"kazakhstan\"],\"tags\":[]},\"🇰🇪\":{\"category\":\"flags\",\"description\":\"Kenya\",\"names\":[\"kenya\"],\"tags\":[]},\"🇰🇮\":{\"category\":\"flags\",\"description\":\"Kiribati\",\"names\":[\"kiribati\"],\"tags\":[]},\"🇽🇰\":{\"category\":\"flags\",\"description\":\"Kosovo\",\"names\":[\"kosovo\"],\"tags\":[]},\"🇰🇼\":{\"category\":\"flags\",\"description\":\"Kuwait\",\"names\":[\"kuwait\"],\"tags\":[]},\"🇰🇬\":{\"category\":\"flags\",\"description\":\"Kyrgyzstan\",\"names\":[\"kyrgyzstan\"],\"tags\":[]},\"🇱🇦\":{\"category\":\"flags\",\"description\":\"Laos\",\"names\":[\"laos\"],\"tags\":[]},\"🇱🇻\":{\"category\":\"flags\",\"description\":\"Latvia\",\"names\":[\"latvia\"],\"tags\":[]},\"🇱🇧\":{\"category\":\"flags\",\"description\":\"Lebanon\",\"names\":[\"lebanon\"],\"tags\":[]},\"🇱🇸\":{\"category\":\"flags\",\"description\":\"Lesotho\",\"names\":[\"lesotho\"],\"tags\":[]},\"🇱🇷\":{\"category\":\"flags\",\"description\":\"Liberia\",\"names\":[\"liberia\"],\"tags\":[]},\"🇱🇾\":{\"category\":\"flags\",\"description\":\"Libya\",\"names\":[\"libya\"],\"tags\":[]},\"🇱🇮\":{\"category\":\"flags\",\"description\":\"Liechtenstein\",\"names\":[\"liechtenstein\"],\"tags\":[]},\"🇱🇹\":{\"category\":\"flags\",\"description\":\"Lithuania\",\"names\":[\"lithuania\"],\"tags\":[]},\"🇱🇺\":{\"category\":\"flags\",\"description\":\"Luxembourg\",\"names\":[\"luxembourg\"],\"tags\":[]},\"🇲🇴\":{\"category\":\"flags\",\"description\":\"Macau SAR China\",\"names\":[\"macau\"],\"tags\":[]},\"🇲🇰\":{\"category\":\"flags\",\"description\":\"Macedonia\",\"names\":[\"macedonia\"],\"tags\":[]},\"🇲🇬\":{\"category\":\"flags\",\"description\":\"Madagascar\",\"names\":[\"madagascar\"],\"tags\":[]},\"🇲🇼\":{\"category\":\"flags\",\"description\":\"Malawi\",\"names\":[\"malawi\"],\"tags\":[]},\"🇲🇾\":{\"category\":\"flags\",\"description\":\"Malaysia\",\"names\":[\"malaysia\"],\"tags\":[]},\"🇲🇻\":{\"category\":\"flags\",\"description\":\"Maldives\",\"names\":[\"maldives\"],\"tags\":[]},\"🇲🇱\":{\"category\":\"flags\",\"description\":\"Mali\",\"names\":[\"mali\"],\"tags\":[]},\"🇲🇹\":{\"category\":\"flags\",\"description\":\"Malta\",\"names\":[\"malta\"],\"tags\":[]},\"🇲🇭\":{\"category\":\"flags\",\"description\":\"Marshall Islands\",\"names\":[\"marshall_islands\"],\"tags\":[]},\"🇲🇶\":{\"category\":\"flags\",\"description\":\"Martinique\",\"names\":[\"martinique\"],\"tags\":[]},\"🇲🇷\":{\"category\":\"flags\",\"description\":\"Mauritania\",\"names\":[\"mauritania\"],\"tags\":[]},\"🇲🇺\":{\"category\":\"flags\",\"description\":\"Mauritius\",\"names\":[\"mauritius\"],\"tags\":[]},\"🇾🇹\":{\"category\":\"flags\",\"description\":\"Mayotte\",\"names\":[\"mayotte\"],\"tags\":[]},\"🇲🇽\":{\"category\":\"flags\",\"description\":\"Mexico\",\"names\":[\"mexico\"],\"tags\":[]},\"🇫🇲\":{\"category\":\"flags\",\"description\":\"Micronesia\",\"names\":[\"micronesia\"],\"tags\":[]},\"🇲🇩\":{\"category\":\"flags\",\"description\":\"Moldova\",\"names\":[\"moldova\"],\"tags\":[]},\"🇲🇨\":{\"category\":\"flags\",\"description\":\"Monaco\",\"names\":[\"monaco\"],\"tags\":[]},\"🇲🇳\":{\"category\":\"flags\",\"description\":\"Mongolia\",\"names\":[\"mongolia\"],\"tags\":[]},\"🇲🇪\":{\"category\":\"flags\",\"description\":\"Montenegro\",\"names\":[\"montenegro\"],\"tags\":[]},\"🇲🇸\":{\"category\":\"flags\",\"description\":\"Montserrat\",\"names\":[\"montserrat\"],\"tags\":[]},\"🇲🇦\":{\"category\":\"flags\",\"description\":\"Morocco\",\"names\":[\"morocco\"],\"tags\":[]},\"🇲🇿\":{\"category\":\"flags\",\"description\":\"Mozambique\",\"names\":[\"mozambique\"],\"tags\":[]},\"🇲🇲\":{\"category\":\"flags\",\"description\":\"Myanmar (Burma)\",\"names\":[\"myanmar\"],\"tags\":[\"burma\"]},\"🇳🇦\":{\"category\":\"flags\",\"description\":\"Namibia\",\"names\":[\"namibia\"],\"tags\":[]},\"🇳🇷\":{\"category\":\"flags\",\"description\":\"Nauru\",\"names\":[\"nauru\"],\"tags\":[]},\"🇳🇵\":{\"category\":\"flags\",\"description\":\"Nepal\",\"names\":[\"nepal\"],\"tags\":[]},\"🇳🇱\":{\"category\":\"flags\",\"description\":\"Netherlands\",\"names\":[\"netherlands\"],\"tags\":[]},\"🇳🇨\":{\"category\":\"flags\",\"description\":\"New Caledonia\",\"names\":[\"new_caledonia\"],\"tags\":[]},\"🇳🇿\":{\"category\":\"flags\",\"description\":\"New Zealand\",\"names\":[\"new_zealand\"],\"tags\":[]},\"🇳🇮\":{\"category\":\"flags\",\"description\":\"Nicaragua\",\"names\":[\"nicaragua\"],\"tags\":[]},\"🇳🇪\":{\"category\":\"flags\",\"description\":\"Niger\",\"names\":[\"niger\"],\"tags\":[]},\"🇳🇬\":{\"category\":\"flags\",\"description\":\"Nigeria\",\"names\":[\"nigeria\"],\"tags\":[]},\"🇳🇺\":{\"category\":\"flags\",\"description\":\"Niue\",\"names\":[\"niue\"],\"tags\":[]},\"🇳🇫\":{\"category\":\"flags\",\"description\":\"Norfolk Island\",\"names\":[\"norfolk_island\"],\"tags\":[]},\"🇲🇵\":{\"category\":\"flags\",\"description\":\"Northern Mariana Islands\",\"names\":[\"northern_mariana_islands\"],\"tags\":[]},\"🇰🇵\":{\"category\":\"flags\",\"description\":\"North Korea\",\"names\":[\"north_korea\"],\"tags\":[]},\"🇳🇴\":{\"category\":\"flags\",\"description\":\"Norway\",\"names\":[\"norway\"],\"tags\":[]},\"🇴🇲\":{\"category\":\"flags\",\"description\":\"Oman\",\"names\":[\"oman\"],\"tags\":[]},\"🇵🇰\":{\"category\":\"flags\",\"description\":\"Pakistan\",\"names\":[\"pakistan\"],\"tags\":[]},\"🇵🇼\":{\"category\":\"flags\",\"description\":\"Palau\",\"names\":[\"palau\"],\"tags\":[]},\"🇵🇸\":{\"category\":\"flags\",\"description\":\"Palestinian Territories\",\"names\":[\"palestinian_territories\"],\"tags\":[]},\"🇵🇦\":{\"category\":\"flags\",\"description\":\"Panama\",\"names\":[\"panama\"],\"tags\":[]},\"🇵🇬\":{\"category\":\"flags\",\"description\":\"Papua New Guinea\",\"names\":[\"papua_new_guinea\"],\"tags\":[]},\"🇵🇾\":{\"category\":\"flags\",\"description\":\"Paraguay\",\"names\":[\"paraguay\"],\"tags\":[]},\"🇵🇪\":{\"category\":\"flags\",\"description\":\"Peru\",\"names\":[\"peru\"],\"tags\":[]},\"🇵🇭\":{\"category\":\"flags\",\"description\":\"Philippines\",\"names\":[\"philippines\"],\"tags\":[]},\"🇵🇳\":{\"category\":\"flags\",\"description\":\"Pitcairn Islands\",\"names\":[\"pitcairn_islands\"],\"tags\":[]},\"🇵🇱\":{\"category\":\"flags\",\"description\":\"Poland\",\"names\":[\"poland\"],\"tags\":[]},\"🇵🇹\":{\"category\":\"flags\",\"description\":\"Portugal\",\"names\":[\"portugal\"],\"tags\":[]},\"🇵🇷\":{\"category\":\"flags\",\"description\":\"Puerto Rico\",\"names\":[\"puerto_rico\"],\"tags\":[]},\"🇶🇦\":{\"category\":\"flags\",\"description\":\"Qatar\",\"names\":[\"qatar\"],\"tags\":[]},\"🇷🇪\":{\"category\":\"flags\",\"description\":\"Réunion\",\"names\":[\"reunion\"],\"tags\":[]},\"🇷🇴\":{\"category\":\"flags\",\"description\":\"Romania\",\"names\":[\"romania\"],\"tags\":[]},\"🇷🇺\":{\"category\":\"flags\",\"description\":\"Russia\",\"names\":[\"ru\"],\"tags\":[\"russia\"]},\"🇷🇼\":{\"category\":\"flags\",\"description\":\"Rwanda\",\"names\":[\"rwanda\"],\"tags\":[]},\"🇧🇱\":{\"category\":\"flags\",\"description\":\"St. Barthélemy\",\"names\":[\"st_barthelemy\"],\"tags\":[]},\"🇸🇭\":{\"category\":\"flags\",\"description\":\"St. Helena\",\"names\":[\"st_helena\"],\"tags\":[]},\"🇰🇳\":{\"category\":\"flags\",\"description\":\"St. Kitts & Nevis\",\"names\":[\"st_kitts_nevis\"],\"tags\":[]},\"🇱🇨\":{\"category\":\"flags\",\"description\":\"St. Lucia\",\"names\":[\"st_lucia\"],\"tags\":[]},\"🇵🇲\":{\"category\":\"flags\",\"description\":\"St. Pierre & Miquelon\",\"names\":[\"st_pierre_miquelon\"],\"tags\":[]},\"🇻🇨\":{\"category\":\"flags\",\"description\":\"St. Vincent & Grenadines\",\"names\":[\"st_vincent_grenadines\"],\"tags\":[]},\"🇼🇸\":{\"category\":\"flags\",\"description\":\"Samoa\",\"names\":[\"samoa\"],\"tags\":[]},\"🇸🇲\":{\"category\":\"flags\",\"description\":\"San Marino\",\"names\":[\"san_marino\"],\"tags\":[]},\"🇸🇹\":{\"category\":\"flags\",\"description\":\"São Tomé & Príncipe\",\"names\":[\"sao_tome_principe\"],\"tags\":[]},\"🇸🇦\":{\"category\":\"flags\",\"description\":\"Saudi Arabia\",\"names\":[\"saudi_arabia\"],\"tags\":[]},\"🇸🇳\":{\"category\":\"flags\",\"description\":\"Senegal\",\"names\":[\"senegal\"],\"tags\":[]},\"🇷🇸\":{\"category\":\"flags\",\"description\":\"Serbia\",\"names\":[\"serbia\"],\"tags\":[]},\"🇸🇨\":{\"category\":\"flags\",\"description\":\"Seychelles\",\"names\":[\"seychelles\"],\"tags\":[]},\"🇸🇱\":{\"category\":\"flags\",\"description\":\"Sierra Leone\",\"names\":[\"sierra_leone\"],\"tags\":[]},\"🇸🇬\":{\"category\":\"flags\",\"description\":\"Singapore\",\"names\":[\"singapore\"],\"tags\":[]},\"🇸🇽\":{\"category\":\"flags\",\"description\":\"Sint Maarten\",\"names\":[\"sint_maarten\"],\"tags\":[]},\"🇸🇰\":{\"category\":\"flags\",\"description\":\"Slovakia\",\"names\":[\"slovakia\"],\"tags\":[]},\"🇸🇮\":{\"category\":\"flags\",\"description\":\"Slovenia\",\"names\":[\"slovenia\"],\"tags\":[]},\"🇸🇧\":{\"category\":\"flags\",\"description\":\"Solomon Islands\",\"names\":[\"solomon_islands\"],\"tags\":[]},\"🇸🇴\":{\"category\":\"flags\",\"description\":\"Somalia\",\"names\":[\"somalia\"],\"tags\":[]},\"🇿🇦\":{\"category\":\"flags\",\"description\":\"South Africa\",\"names\":[\"south_africa\"],\"tags\":[]},\"🇬🇸\":{\"category\":\"flags\",\"description\":\"South Georgia & South Sandwich Islands\",\"names\":[\"south_georgia_south_sandwich_islands\"],\"tags\":[]},\"🇰🇷\":{\"category\":\"flags\",\"description\":\"South Korea\",\"names\":[\"kr\"],\"tags\":[\"korea\"]},\"🇸🇸\":{\"category\":\"flags\",\"description\":\"South Sudan\",\"names\":[\"south_sudan\"],\"tags\":[]},\"🇪🇸\":{\"category\":\"flags\",\"description\":\"Spain\",\"names\":[\"es\"],\"tags\":[\"spain\"]},\"🇱🇰\":{\"category\":\"flags\",\"description\":\"Sri Lanka\",\"names\":[\"sri_lanka\"],\"tags\":[]},\"🇸🇩\":{\"category\":\"flags\",\"description\":\"Sudan\",\"names\":[\"sudan\"],\"tags\":[]},\"🇸🇷\":{\"category\":\"flags\",\"description\":\"Suriname\",\"names\":[\"suriname\"],\"tags\":[]},\"🇸🇿\":{\"category\":\"flags\",\"description\":\"Swaziland\",\"names\":[\"swaziland\"],\"tags\":[]},\"🇸🇪\":{\"category\":\"flags\",\"description\":\"Sweden\",\"names\":[\"sweden\"],\"tags\":[]},\"🇨🇭\":{\"category\":\"flags\",\"description\":\"Switzerland\",\"names\":[\"switzerland\"],\"tags\":[]},\"🇸🇾\":{\"category\":\"flags\",\"description\":\"Syria\",\"names\":[\"syria\"],\"tags\":[]},\"🇹🇼\":{\"category\":\"flags\",\"description\":\"Taiwan\",\"names\":[\"taiwan\"],\"tags\":[]},\"🇹🇯\":{\"category\":\"flags\",\"description\":\"Tajikistan\",\"names\":[\"tajikistan\"],\"tags\":[]},\"🇹🇿\":{\"category\":\"flags\",\"description\":\"Tanzania\",\"names\":[\"tanzania\"],\"tags\":[]},\"🇹🇭\":{\"category\":\"flags\",\"description\":\"Thailand\",\"names\":[\"thailand\"],\"tags\":[]},\"🇹🇱\":{\"category\":\"flags\",\"description\":\"Timor-Leste\",\"names\":[\"timor_leste\"],\"tags\":[]},\"🇹🇬\":{\"category\":\"flags\",\"description\":\"Togo\",\"names\":[\"togo\"],\"tags\":[]},\"🇹🇰\":{\"category\":\"flags\",\"description\":\"Tokelau\",\"names\":[\"tokelau\"],\"tags\":[]},\"🇹🇴\":{\"category\":\"flags\",\"description\":\"Tonga\",\"names\":[\"tonga\"],\"tags\":[]},\"🇹🇹\":{\"category\":\"flags\",\"description\":\"Trinidad & Tobago\",\"names\":[\"trinidad_tobago\"],\"tags\":[]},\"🇹🇳\":{\"category\":\"flags\",\"description\":\"Tunisia\",\"names\":[\"tunisia\"],\"tags\":[]},\"🇹🇷\":{\"category\":\"flags\",\"description\":\"Turkey\",\"names\":[\"tr\"],\"tags\":[\"turkey\"]},\"🇹🇲\":{\"category\":\"flags\",\"description\":\"Turkmenistan\",\"names\":[\"turkmenistan\"],\"tags\":[]},\"🇹🇨\":{\"category\":\"flags\",\"description\":\"Turks & Caicos Islands\",\"names\":[\"turks_caicos_islands\"],\"tags\":[]},\"🇹🇻\":{\"category\":\"flags\",\"description\":\"Tuvalu\",\"names\":[\"tuvalu\"],\"tags\":[]},\"🇺🇬\":{\"category\":\"flags\",\"description\":\"Uganda\",\"names\":[\"uganda\"],\"tags\":[]},\"🇺🇦\":{\"category\":\"flags\",\"description\":\"Ukraine\",\"names\":[\"ukraine\"],\"tags\":[]},\"🇦🇪\":{\"category\":\"flags\",\"description\":\"United Arab Emirates\",\"names\":[\"united_arab_emirates\"],\"tags\":[]},\"🇬🇧\":{\"category\":\"flags\",\"description\":\"United Kingdom\",\"names\":[\"gb\",\"uk\"],\"tags\":[\"flag\",\"british\"]},\"🇺🇸\":{\"category\":\"flags\",\"description\":\"United States\",\"names\":[\"us\"],\"tags\":[\"flag\",\"united\",\"america\"]},\"🇻🇮\":{\"category\":\"flags\",\"description\":\"U.S. Virgin Islands\",\"names\":[\"us_virgin_islands\"],\"tags\":[]},\"🇺🇾\":{\"category\":\"flags\",\"description\":\"Uruguay\",\"names\":[\"uruguay\"],\"tags\":[]},\"🇺🇿\":{\"category\":\"flags\",\"description\":\"Uzbekistan\",\"names\":[\"uzbekistan\"],\"tags\":[]},\"🇻🇺\":{\"category\":\"flags\",\"description\":\"Vanuatu\",\"names\":[\"vanuatu\"],\"tags\":[]},\"🇻🇦\":{\"category\":\"flags\",\"description\":\"Vatican City\",\"names\":[\"vatican_city\"],\"tags\":[]},\"🇻🇪\":{\"category\":\"flags\",\"description\":\"Venezuela\",\"names\":[\"venezuela\"],\"tags\":[]},\"🇻🇳\":{\"category\":\"flags\",\"description\":\"Vietnam\",\"names\":[\"vietnam\"],\"tags\":[]},\"🇼🇫\":{\"category\":\"flags\",\"description\":\"Wallis & Futuna\",\"names\":[\"wallis_futuna\"],\"tags\":[]},\"🇪🇭\":{\"category\":\"flags\",\"description\":\"Western Sahara\",\"names\":[\"western_sahara\"],\"tags\":[]},\"🇾🇪\":{\"category\":\"flags\",\"description\":\"Yemen\",\"names\":[\"yemen\"],\"tags\":[]},\"🇿🇲\":{\"category\":\"flags\",\"description\":\"Zambia\",\"names\":[\"zambia\"],\"tags\":[]},\"🇿🇼\":{\"category\":\"flags\",\"description\":\"Zimbabwe\",\"names\":[\"zimbabwe\"],\"tags\":[]}}","module.exports={\"strip\":[\"script\"],\"clobberPrefix\":\"user-content-\",\"clobber\":[\"name\",\"id\"],\"ancestors\":{\"li\":[\"ol\",\"ul\"],\"tbody\":[\"table\"],\"tfoot\":[\"table\"],\"thead\":[\"table\"],\"td\":[\"table\"],\"th\":[\"table\"],\"tr\":[\"table\"]},\"protocols\":{\"href\":[\"http\",\"https\",\"mailto\"],\"cite\":[\"http\",\"https\"],\"src\":[\"http\",\"https\"],\"longDesc\":[\"http\",\"https\"]},\"tagNames\":[\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"h7\",\"h8\",\"br\",\"b\",\"i\",\"strong\",\"em\",\"a\",\"pre\",\"code\",\"img\",\"tt\",\"div\",\"ins\",\"del\",\"sup\",\"sub\",\"p\",\"ol\",\"ul\",\"table\",\"thead\",\"tbody\",\"tfoot\",\"blockquote\",\"dl\",\"dt\",\"dd\",\"kbd\",\"q\",\"samp\",\"var\",\"hr\",\"ruby\",\"rt\",\"rp\",\"li\",\"tr\",\"td\",\"th\",\"s\",\"strike\",\"summary\",\"details\"],\"attributes\":{\"a\":[\"href\"],\"img\":[\"src\",\"longDesc\"],\"div\":[\"itemScope\",\"itemType\"],\"blockquote\":[\"cite\"],\"del\":[\"cite\"],\"ins\":[\"cite\"],\"q\":[\"cite\"],\"*\":[\"abbr\",\"accept\",\"acceptCharset\",\"accessKey\",\"action\",\"align\",\"alt\",\"axis\",\"border\",\"cellPadding\",\"cellSpacing\",\"char\",\"charoff\",\"charSet\",\"checked\",\"clear\",\"cols\",\"colSpan\",\"color\",\"compact\",\"coords\",\"dateTime\",\"dir\",\"disabled\",\"encType\",\"htmlFor\",\"frame\",\"headers\",\"height\",\"hrefLang\",\"hspace\",\"isMap\",\"id\",\"label\",\"lang\",\"maxLength\",\"media\",\"method\",\"multiple\",\"name\",\"nohref\",\"noshade\",\"nowrap\",\"open\",\"prompt\",\"readOnly\",\"rel\",\"rev\",\"rows\",\"rowSpan\",\"rules\",\"scope\",\"selected\",\"shape\",\"size\",\"span\",\"start\",\"summary\",\"tabIndex\",\"target\",\"title\",\"type\",\"useMap\",\"valign\",\"value\",\"vspace\",\"width\",\"itemProp\"]}}","module.exports=[\"address\",\"article\",\"aside\",\"base\",\"basefont\",\"blockquote\",\"body\",\"caption\",\"center\",\"col\",\"colgroup\",\"dd\",\"details\",\"dialog\",\"dir\",\"div\",\"dl\",\"dt\",\"fieldset\",\"figcaption\",\"figure\",\"footer\",\"form\",\"frame\",\"frameset\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"head\",\"header\",\"hgroup\",\"hr\",\"html\",\"iframe\",\"legend\",\"li\",\"link\",\"main\",\"menu\",\"menuitem\",\"meta\",\"nav\",\"noframes\",\"ol\",\"optgroup\",\"option\",\"p\",\"param\",\"pre\",\"section\",\"source\",\"title\",\"summary\",\"table\",\"tbody\",\"td\",\"tfoot\",\"th\",\"thead\",\"title\",\"tr\",\"track\",\"ul\"]","module.exports=[\"cent\",\"copy\",\"divide\",\"gt\",\"lt\",\"not\",\"para\",\"times\"]","\"use strict\";\n\nexports.__esModule = true;\nexports.loopAsync = loopAsync;\nexports.mapAsync = mapAsync;\nfunction loopAsync(turns, work, callback) {\n  var currentTurn = 0,\n      isDone = false;\n  var sync = false,\n      hasNext = false,\n      doneArgs = void 0;\n\n  function done() {\n    isDone = true;\n    if (sync) {\n      // Iterate instead of recursing if possible.\n      doneArgs = [].concat(Array.prototype.slice.call(arguments));\n      return;\n    }\n\n    callback.apply(this, arguments);\n  }\n\n  function next() {\n    if (isDone) {\n      return;\n    }\n\n    hasNext = true;\n    if (sync) {\n      // Iterate instead of recursing if possible.\n      return;\n    }\n\n    sync = true;\n\n    while (!isDone && currentTurn < turns && hasNext) {\n      hasNext = false;\n      work.call(this, currentTurn++, next, done);\n    }\n\n    sync = false;\n\n    if (isDone) {\n      // This means the loop finished synchronously.\n      callback.apply(this, doneArgs);\n      return;\n    }\n\n    if (currentTurn >= turns && hasNext) {\n      isDone = true;\n      callback();\n    }\n  }\n\n  next();\n}\n\nfunction mapAsync(array, work, callback) {\n  var length = array.length;\n  var values = [];\n\n  if (length === 0) return callback(null, values);\n\n  var isDone = false,\n      doneCount = 0;\n\n  function done(index, error, value) {\n    if (isDone) return;\n\n    if (error) {\n      isDone = true;\n      callback(error);\n    } else {\n      values[index] = value;\n\n      isDone = ++doneCount === length;\n\n      if (isDone) callback(null, values);\n    }\n  }\n\n  array.forEach(function (item, index) {\n    work(item, index, function (error, value) {\n      done(index, error, value);\n    });\n  });\n}","'use strict';\n\nexports.__esModule = true;\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nvar _InternalPropTypes = require('./InternalPropTypes');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * A mixin that adds the \"history\" instance variable to components.\n */\nvar History = {\n\n  contextTypes: {\n    history: _InternalPropTypes.history\n  },\n\n  componentWillMount: function componentWillMount() {\n    \"production\" !== 'production' ? (0, _routerWarning2.default)(false, 'the `History` mixin is deprecated, please access `context.router` with your own `contextTypes`. http://tiny.cc/router-historymixin') : void 0;\n    this.history = this.context.history;\n  }\n};\n\nexports.default = History;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createReactClass = require('create-react-class');\n\nvar _createReactClass2 = _interopRequireDefault(_createReactClass);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _Link = require('./Link');\n\nvar _Link2 = _interopRequireDefault(_Link);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * An <IndexLink> is used to link to an <IndexRoute>.\n */\nvar IndexLink = (0, _createReactClass2.default)({\n  displayName: 'IndexLink',\n  render: function render() {\n    return _react2.default.createElement(_Link2.default, _extends({}, this.props, { onlyActiveOnIndex: true }));\n  }\n});\n\nexports.default = IndexLink;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _createReactClass = require('create-react-class');\n\nvar _createReactClass2 = _interopRequireDefault(_createReactClass);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _Redirect = require('./Redirect');\n\nvar _Redirect2 = _interopRequireDefault(_Redirect);\n\nvar _InternalPropTypes = require('./InternalPropTypes');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar string = _propTypes2.default.string,\n    object = _propTypes2.default.object;\n\n/**\n * An <IndexRedirect> is used to redirect from an indexRoute.\n */\n\nvar IndexRedirect = (0, _createReactClass2.default)({\n  displayName: 'IndexRedirect',\n\n\n  statics: {\n    createRouteFromReactElement: function createRouteFromReactElement(element, parentRoute) {\n      /* istanbul ignore else: sanity check */\n      if (parentRoute) {\n        parentRoute.indexRoute = _Redirect2.default.createRouteFromReactElement(element);\n      } else {\n        \"production\" !== 'production' ? (0, _routerWarning2.default)(false, 'An <IndexRedirect> does not make sense at the root of your route config') : void 0;\n      }\n    }\n  },\n\n  propTypes: {\n    to: string.isRequired,\n    query: object,\n    state: object,\n    onEnter: _InternalPropTypes.falsy,\n    children: _InternalPropTypes.falsy\n  },\n\n  /* istanbul ignore next: sanity check */\n  render: function render() {\n    !false ? \"production\" !== 'production' ? (0, _invariant2.default)(false, '<IndexRedirect> elements are for router configuration only and should not be rendered') : (0, _invariant2.default)(false) : void 0;\n  }\n});\n\nexports.default = IndexRedirect;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _createReactClass = require('create-react-class');\n\nvar _createReactClass2 = _interopRequireDefault(_createReactClass);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _RouteUtils = require('./RouteUtils');\n\nvar _InternalPropTypes = require('./InternalPropTypes');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar func = _propTypes2.default.func;\n\n/**\n * An <IndexRoute> is used to specify its parent's <Route indexRoute> in\n * a JSX route config.\n */\n\nvar IndexRoute = (0, _createReactClass2.default)({\n  displayName: 'IndexRoute',\n\n\n  statics: {\n    createRouteFromReactElement: function createRouteFromReactElement(element, parentRoute) {\n      /* istanbul ignore else: sanity check */\n      if (parentRoute) {\n        parentRoute.indexRoute = (0, _RouteUtils.createRouteFromReactElement)(element);\n      } else {\n        \"production\" !== 'production' ? (0, _routerWarning2.default)(false, 'An <IndexRoute> does not make sense at the root of your route config') : void 0;\n      }\n    }\n  },\n\n  propTypes: {\n    path: _InternalPropTypes.falsy,\n    component: _InternalPropTypes.component,\n    components: _InternalPropTypes.components,\n    getComponent: func,\n    getComponents: func\n  },\n\n  /* istanbul ignore next: sanity check */\n  render: function render() {\n    !false ? \"production\" !== 'production' ? (0, _invariant2.default)(false, '<IndexRoute> elements are for router configuration only and should not be rendered') : (0, _invariant2.default)(false) : void 0;\n  }\n});\n\nexports.default = IndexRoute;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports.routes = exports.route = exports.components = exports.component = exports.history = undefined;\nexports.falsy = falsy;\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar func = _propTypes2.default.func,\n    object = _propTypes2.default.object,\n    arrayOf = _propTypes2.default.arrayOf,\n    oneOfType = _propTypes2.default.oneOfType,\n    element = _propTypes2.default.element,\n    shape = _propTypes2.default.shape,\n    string = _propTypes2.default.string;\nfunction falsy(props, propName, componentName) {\n  if (props[propName]) return new Error('<' + componentName + '> should not have a \"' + propName + '\" prop');\n}\n\nvar history = exports.history = shape({\n  listen: func.isRequired,\n  push: func.isRequired,\n  replace: func.isRequired,\n  go: func.isRequired,\n  goBack: func.isRequired,\n  goForward: func.isRequired\n});\n\nvar component = exports.component = oneOfType([func, string]);\nvar components = exports.components = oneOfType([component, object]);\nvar route = exports.route = oneOfType([object, element]);\nvar routes = exports.routes = oneOfType([route, arrayOf(route)]);","'use strict';\n\nexports.__esModule = true;\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar object = _propTypes2.default.object;\n\n/**\n * The Lifecycle mixin adds the routerWillLeave lifecycle method to a\n * component that may be used to cancel a transition or prompt the user\n * for confirmation.\n *\n * On standard transitions, routerWillLeave receives a single argument: the\n * location we're transitioning to. To cancel the transition, return false.\n * To prompt the user for confirmation, return a prompt message (string).\n *\n * During the beforeunload event (assuming you're using the useBeforeUnload\n * history enhancer), routerWillLeave does not receive a location object\n * because it isn't possible for us to know the location we're transitioning\n * to. In this case routerWillLeave must return a prompt message to prevent\n * the user from closing the window/tab.\n */\n\nvar Lifecycle = {\n\n  contextTypes: {\n    history: object.isRequired,\n    // Nested children receive the route as context, either\n    // set by the route component using the RouteContext mixin\n    // or by some other ancestor.\n    route: object\n  },\n\n  propTypes: {\n    // Route components receive the route object as a prop.\n    route: object\n  },\n\n  componentDidMount: function componentDidMount() {\n    \"production\" !== 'production' ? (0, _routerWarning2.default)(false, 'the `Lifecycle` mixin is deprecated, please use `context.router.setRouteLeaveHook(route, hook)`. http://tiny.cc/router-lifecyclemixin') : void 0;\n    !this.routerWillLeave ? \"production\" !== 'production' ? (0, _invariant2.default)(false, 'The Lifecycle mixin requires you to define a routerWillLeave method') : (0, _invariant2.default)(false) : void 0;\n\n    var route = this.props.route || this.context.route;\n\n    !route ? \"production\" !== 'production' ? (0, _invariant2.default)(false, 'The Lifecycle mixin must be used on either a) a <Route component> or ' + 'b) a descendant of a <Route component> that uses the RouteContext mixin') : (0, _invariant2.default)(false) : void 0;\n\n    this._unlistenBeforeLeavingRoute = this.context.history.listenBeforeLeavingRoute(route, this.routerWillLeave);\n  },\n  componentWillUnmount: function componentWillUnmount() {\n    if (this._unlistenBeforeLeavingRoute) this._unlistenBeforeLeavingRoute();\n  }\n};\n\nexports.default = Lifecycle;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createReactClass = require('create-react-class');\n\nvar _createReactClass2 = _interopRequireDefault(_createReactClass);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _PropTypes = require('./PropTypes');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar bool = _propTypes2.default.bool,\n    object = _propTypes2.default.object,\n    string = _propTypes2.default.string,\n    func = _propTypes2.default.func,\n    oneOfType = _propTypes2.default.oneOfType;\n\n\nfunction isLeftClickEvent(event) {\n  return event.button === 0;\n}\n\nfunction isModifiedEvent(event) {\n  return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\n// TODO: De-duplicate against hasAnyProperties in createTransitionManager.\nfunction isEmptyObject(object) {\n  for (var p in object) {\n    if (Object.prototype.hasOwnProperty.call(object, p)) return false;\n  }return true;\n}\n\nfunction createLocationDescriptor(to, _ref) {\n  var query = _ref.query,\n      hash = _ref.hash,\n      state = _ref.state;\n\n  if (query || hash || state) {\n    return { pathname: to, query: query, hash: hash, state: state };\n  }\n\n  return to;\n}\n\n/**\n * A <Link> is used to create an <a> element that links to a route.\n * When that route is active, the link gets the value of its\n * activeClassName prop.\n *\n * For example, assuming you have the following route:\n *\n *   <Route path=\"/posts/:postID\" component={Post} />\n *\n * You could use the following component to link to that route:\n *\n *   <Link to={`/posts/${post.id}`} />\n *\n * Links may pass along location state and/or query string parameters\n * in the state/query props, respectively.\n *\n *   <Link ... query={{ show: true }} state={{ the: 'state' }} />\n */\nvar Link = (0, _createReactClass2.default)({\n  displayName: 'Link',\n\n\n  contextTypes: {\n    router: _PropTypes.routerShape\n  },\n\n  propTypes: {\n    to: oneOfType([string, object]).isRequired,\n    query: object,\n    hash: string,\n    href: string,\n    state: object,\n    activeStyle: object,\n    activeClassName: string,\n    className: string,\n    onlyActiveOnIndex: bool.isRequired,\n    onClick: func,\n    style: object,\n    target: string\n  },\n\n  getDefaultProps: function getDefaultProps() {\n    return {\n      onlyActiveOnIndex: false,\n      style: {}\n    };\n  },\n  handleClick: function handleClick(event) {\n    if (this.props.onClick) this.props.onClick(event);\n\n    if (event.defaultPrevented) return;\n\n    !this.context.router ? \"production\" !== 'production' ? (0, _invariant2.default)(false, '<Link>s rendered outside of a router context cannot navigate.') : (0, _invariant2.default)(false) : void 0;\n\n    if (isModifiedEvent(event) || !isLeftClickEvent(event)) return;\n\n    // If target prop is set (e.g. to \"_blank\"), let browser handle link.\n    /* istanbul ignore if: untestable with Karma */\n    if (this.props.target) return;\n\n    event.preventDefault();\n\n    var _props = this.props,\n        to = _props.to,\n        query = _props.query,\n        hash = _props.hash,\n        state = _props.state;\n\n    var location = createLocationDescriptor(to, { query: query, hash: hash, state: state });\n\n    this.context.router.push(location);\n  },\n  render: function render() {\n    var _props2 = this.props,\n        to = _props2.to,\n        query = _props2.query,\n        hash = _props2.hash,\n        state = _props2.state,\n        activeClassName = _props2.activeClassName,\n        activeStyle = _props2.activeStyle,\n        onlyActiveOnIndex = _props2.onlyActiveOnIndex,\n        props = _objectWithoutProperties(_props2, ['to', 'query', 'hash', 'state', 'activeClassName', 'activeStyle', 'onlyActiveOnIndex']);\n\n    \"production\" !== 'production' ? (0, _routerWarning2.default)(!(query || hash || state), 'the `query`, `hash`, and `state` props on `<Link>` are deprecated, use `<Link to={{ pathname, query, hash, state }}/>. http://tiny.cc/router-isActivedeprecated') : void 0;\n\n    // Ignore if rendered outside the context of router, simplifies unit testing.\n    var router = this.context.router;\n\n\n    if (router) {\n      var location = createLocationDescriptor(to, { query: query, hash: hash, state: state });\n      props.href = router.createHref(location);\n\n      if (activeClassName || activeStyle != null && !isEmptyObject(activeStyle)) {\n        if (router.isActive(location, onlyActiveOnIndex)) {\n          if (activeClassName) {\n            if (props.className) {\n              props.className += ' ' + activeClassName;\n            } else {\n              props.className = activeClassName;\n            }\n          }\n\n          if (activeStyle) props.style = _extends({}, props.style, activeStyle);\n        }\n      }\n    }\n\n    return _react2.default.createElement('a', _extends({}, props, { onClick: this.handleClick }));\n  }\n});\n\nexports.default = Link;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports.compilePattern = compilePattern;\nexports.matchPattern = matchPattern;\nexports.getParamNames = getParamNames;\nexports.getParams = getParams;\nexports.formatPattern = formatPattern;\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction escapeRegExp(string) {\n  return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nfunction _compilePattern(pattern) {\n  var regexpSource = '';\n  var paramNames = [];\n  var tokens = [];\n\n  var match = void 0,\n      lastIndex = 0,\n      matcher = /:([a-zA-Z_$][a-zA-Z0-9_$]*)|\\*\\*|\\*|\\(|\\)/g;\n  while (match = matcher.exec(pattern)) {\n    if (match.index !== lastIndex) {\n      tokens.push(pattern.slice(lastIndex, match.index));\n      regexpSource += escapeRegExp(pattern.slice(lastIndex, match.index));\n    }\n\n    if (match[1]) {\n      regexpSource += '([^/]+)';\n      paramNames.push(match[1]);\n    } else if (match[0] === '**') {\n      regexpSource += '(.*)';\n      paramNames.push('splat');\n    } else if (match[0] === '*') {\n      regexpSource += '(.*?)';\n      paramNames.push('splat');\n    } else if (match[0] === '(') {\n      regexpSource += '(?:';\n    } else if (match[0] === ')') {\n      regexpSource += ')?';\n    }\n\n    tokens.push(match[0]);\n\n    lastIndex = matcher.lastIndex;\n  }\n\n  if (lastIndex !== pattern.length) {\n    tokens.push(pattern.slice(lastIndex, pattern.length));\n    regexpSource += escapeRegExp(pattern.slice(lastIndex, pattern.length));\n  }\n\n  return {\n    pattern: pattern,\n    regexpSource: regexpSource,\n    paramNames: paramNames,\n    tokens: tokens\n  };\n}\n\nvar CompiledPatternsCache = Object.create(null);\n\nfunction compilePattern(pattern) {\n  if (!CompiledPatternsCache[pattern]) CompiledPatternsCache[pattern] = _compilePattern(pattern);\n\n  return CompiledPatternsCache[pattern];\n}\n\n/**\n * Attempts to match a pattern on the given pathname. Patterns may use\n * the following special characters:\n *\n * - :paramName     Matches a URL segment up to the next /, ?, or #. The\n *                  captured string is considered a \"param\"\n * - ()             Wraps a segment of the URL that is optional\n * - *              Consumes (non-greedy) all characters up to the next\n *                  character in the pattern, or to the end of the URL if\n *                  there is none\n * - **             Consumes (greedy) all characters up to the next character\n *                  in the pattern, or to the end of the URL if there is none\n *\n *  The function calls callback(error, matched) when finished.\n * The return value is an object with the following properties:\n *\n * - remainingPathname\n * - paramNames\n * - paramValues\n */\nfunction matchPattern(pattern, pathname) {\n  // Ensure pattern starts with leading slash for consistency with pathname.\n  if (pattern.charAt(0) !== '/') {\n    pattern = '/' + pattern;\n  }\n\n  var _compilePattern2 = compilePattern(pattern),\n      regexpSource = _compilePattern2.regexpSource,\n      paramNames = _compilePattern2.paramNames,\n      tokens = _compilePattern2.tokens;\n\n  if (pattern.charAt(pattern.length - 1) !== '/') {\n    regexpSource += '/?'; // Allow optional path separator at end.\n  }\n\n  // Special-case patterns like '*' for catch-all routes.\n  if (tokens[tokens.length - 1] === '*') {\n    regexpSource += '$';\n  }\n\n  var match = pathname.match(new RegExp('^' + regexpSource, 'i'));\n  if (match == null) {\n    return null;\n  }\n\n  var matchedPath = match[0];\n  var remainingPathname = pathname.substr(matchedPath.length);\n\n  if (remainingPathname) {\n    // Require that the match ends at a path separator, if we didn't match\n    // the full path, so any remaining pathname is a new path segment.\n    if (matchedPath.charAt(matchedPath.length - 1) !== '/') {\n      return null;\n    }\n\n    // If there is a remaining pathname, treat the path separator as part of\n    // the remaining pathname for properly continuing the match.\n    remainingPathname = '/' + remainingPathname;\n  }\n\n  return {\n    remainingPathname: remainingPathname,\n    paramNames: paramNames,\n    paramValues: match.slice(1).map(function (v) {\n      return v && decodeURIComponent(v);\n    })\n  };\n}\n\nfunction getParamNames(pattern) {\n  return compilePattern(pattern).paramNames;\n}\n\nfunction getParams(pattern, pathname) {\n  var match = matchPattern(pattern, pathname);\n  if (!match) {\n    return null;\n  }\n\n  var paramNames = match.paramNames,\n      paramValues = match.paramValues;\n\n  var params = {};\n\n  paramNames.forEach(function (paramName, index) {\n    params[paramName] = paramValues[index];\n  });\n\n  return params;\n}\n\n/**\n * Returns a version of the given pattern with params interpolated. Throws\n * if there is a dynamic segment of the pattern for which there is no param.\n */\nfunction formatPattern(pattern, params) {\n  params = params || {};\n\n  var _compilePattern3 = compilePattern(pattern),\n      tokens = _compilePattern3.tokens;\n\n  var parenCount = 0,\n      pathname = '',\n      splatIndex = 0;\n\n  var token = void 0,\n      paramName = void 0,\n      paramValue = void 0;\n  for (var i = 0, len = tokens.length; i < len; ++i) {\n    token = tokens[i];\n\n    if (token === '*' || token === '**') {\n      paramValue = Array.isArray(params.splat) ? params.splat[splatIndex++] : params.splat;\n\n      !(paramValue != null || parenCount > 0) ? \"production\" !== 'production' ? (0, _invariant2.default)(false, 'Missing splat #%s for path \"%s\"', splatIndex, pattern) : (0, _invariant2.default)(false) : void 0;\n\n      if (paramValue != null) pathname += encodeURI(paramValue);\n    } else if (token === '(') {\n      parenCount += 1;\n    } else if (token === ')') {\n      parenCount -= 1;\n    } else if (token.charAt(0) === ':') {\n      paramName = token.substring(1);\n      paramValue = params[paramName];\n\n      !(paramValue != null || parenCount > 0) ? \"production\" !== 'production' ? (0, _invariant2.default)(false, 'Missing \"%s\" parameter for path \"%s\"', paramName, pattern) : (0, _invariant2.default)(false) : void 0;\n\n      if (paramValue != null) pathname += encodeURIComponent(paramValue);\n    } else {\n      pathname += token;\n    }\n  }\n\n  return pathname.replace(/\\/+/g, '/');\n}","'use strict';\n\nexports.__esModule = true;\nexports.router = exports.routes = exports.route = exports.components = exports.component = exports.location = exports.history = exports.falsy = exports.locationShape = exports.routerShape = undefined;\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _deprecateObjectProperties = require('./deprecateObjectProperties');\n\nvar _deprecateObjectProperties2 = _interopRequireDefault(_deprecateObjectProperties);\n\nvar _InternalPropTypes = require('./InternalPropTypes');\n\nvar InternalPropTypes = _interopRequireWildcard(_InternalPropTypes);\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar func = _propTypes2.default.func,\n    object = _propTypes2.default.object,\n    shape = _propTypes2.default.shape,\n    string = _propTypes2.default.string;\nvar routerShape = exports.routerShape = shape({\n  push: func.isRequired,\n  replace: func.isRequired,\n  go: func.isRequired,\n  goBack: func.isRequired,\n  goForward: func.isRequired,\n  setRouteLeaveHook: func.isRequired,\n  isActive: func.isRequired\n});\n\nvar locationShape = exports.locationShape = shape({\n  pathname: string.isRequired,\n  search: string.isRequired,\n  state: object,\n  action: string.isRequired,\n  key: string\n});\n\n// Deprecated stuff below:\n\nvar falsy = exports.falsy = InternalPropTypes.falsy;\nvar history = exports.history = InternalPropTypes.history;\nvar location = exports.location = locationShape;\nvar component = exports.component = InternalPropTypes.component;\nvar components = exports.components = InternalPropTypes.components;\nvar route = exports.route = InternalPropTypes.route;\nvar routes = exports.routes = InternalPropTypes.routes;\nvar router = exports.router = routerShape;\n\nif (\"production\" !== 'production') {\n  var deprecatePropType = function deprecatePropType(propType, message) {\n    return function () {\n      \"production\" !== 'production' ? (0, _routerWarning2.default)(false, message) : void 0;\n      return propType.apply(undefined, arguments);\n    };\n  };\n\n  var deprecateInternalPropType = function deprecateInternalPropType(propType) {\n    return deprecatePropType(propType, 'This prop type is not intended for external use, and was previously exported by mistake. These internal prop types are deprecated for external use, and will be removed in a later version.');\n  };\n\n  var deprecateRenamedPropType = function deprecateRenamedPropType(propType, name) {\n    return deprecatePropType(propType, 'The `' + name + '` prop type is now exported as `' + name + 'Shape` to avoid name conflicts. This export is deprecated and will be removed in a later version.');\n  };\n\n  exports.falsy = falsy = deprecateInternalPropType(falsy);\n  exports.history = history = deprecateInternalPropType(history);\n  exports.component = component = deprecateInternalPropType(component);\n  exports.components = components = deprecateInternalPropType(components);\n  exports.route = route = deprecateInternalPropType(route);\n  exports.routes = routes = deprecateInternalPropType(routes);\n\n  exports.location = location = deprecateRenamedPropType(location, 'location');\n  exports.router = router = deprecateRenamedPropType(router, 'router');\n}\n\nvar defaultExport = {\n  falsy: falsy,\n  history: history,\n  location: location,\n  component: component,\n  components: components,\n  route: route,\n  // For some reason, routes was never here.\n  router: router\n};\n\nif (\"production\" !== 'production') {\n  defaultExport = (0, _deprecateObjectProperties2.default)(defaultExport, 'The default export from `react-router/lib/PropTypes` is deprecated. Please use the named exports instead.');\n}\n\nexports.default = defaultExport;","'use strict';\n\nexports.__esModule = true;\n\nvar _createReactClass = require('create-react-class');\n\nvar _createReactClass2 = _interopRequireDefault(_createReactClass);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _RouteUtils = require('./RouteUtils');\n\nvar _PatternUtils = require('./PatternUtils');\n\nvar _InternalPropTypes = require('./InternalPropTypes');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar string = _propTypes2.default.string,\n    object = _propTypes2.default.object;\n\n/**\n * A <Redirect> is used to declare another URL path a client should\n * be sent to when they request a given URL.\n *\n * Redirects are placed alongside routes in the route configuration\n * and are traversed in the same manner.\n */\n\nvar Redirect = (0, _createReactClass2.default)({\n  displayName: 'Redirect',\n\n\n  statics: {\n    createRouteFromReactElement: function createRouteFromReactElement(element) {\n      var route = (0, _RouteUtils.createRouteFromReactElement)(element);\n\n      if (route.from) route.path = route.from;\n\n      route.onEnter = function (nextState, replace) {\n        var location = nextState.location,\n            params = nextState.params;\n\n\n        var pathname = void 0;\n        if (route.to.charAt(0) === '/') {\n          pathname = (0, _PatternUtils.formatPattern)(route.to, params);\n        } else if (!route.to) {\n          pathname = location.pathname;\n        } else {\n          var routeIndex = nextState.routes.indexOf(route);\n          var parentPattern = Redirect.getRoutePattern(nextState.routes, routeIndex - 1);\n          var pattern = parentPattern.replace(/\\/*$/, '/') + route.to;\n          pathname = (0, _PatternUtils.formatPattern)(pattern, params);\n        }\n\n        replace({\n          pathname: pathname,\n          query: route.query || location.query,\n          state: route.state || location.state\n        });\n      };\n\n      return route;\n    },\n    getRoutePattern: function getRoutePattern(routes, routeIndex) {\n      var parentPattern = '';\n\n      for (var i = routeIndex; i >= 0; i--) {\n        var route = routes[i];\n        var pattern = route.path || '';\n\n        parentPattern = pattern.replace(/\\/*$/, '/') + parentPattern;\n\n        if (pattern.indexOf('/') === 0) break;\n      }\n\n      return '/' + parentPattern;\n    }\n  },\n\n  propTypes: {\n    path: string,\n    from: string, // Alias for path\n    to: string.isRequired,\n    query: object,\n    state: object,\n    onEnter: _InternalPropTypes.falsy,\n    children: _InternalPropTypes.falsy\n  },\n\n  /* istanbul ignore next: sanity check */\n  render: function render() {\n    !false ? \"production\" !== 'production' ? (0, _invariant2.default)(false, '<Redirect> elements are for router configuration only and should not be rendered') : (0, _invariant2.default)(false) : void 0;\n  }\n});\n\nexports.default = Redirect;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _createReactClass = require('create-react-class');\n\nvar _createReactClass2 = _interopRequireDefault(_createReactClass);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _RouteUtils = require('./RouteUtils');\n\nvar _InternalPropTypes = require('./InternalPropTypes');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar string = _propTypes2.default.string,\n    func = _propTypes2.default.func;\n\n/**\n * A <Route> is used to declare which components are rendered to the\n * page when the URL matches a given pattern.\n *\n * Routes are arranged in a nested tree structure. When a new URL is\n * requested, the tree is searched depth-first to find a route whose\n * path matches the URL.  When one is found, all routes in the tree\n * that lead to it are considered \"active\" and their components are\n * rendered into the DOM, nested in the same order as in the tree.\n */\n\nvar Route = (0, _createReactClass2.default)({\n  displayName: 'Route',\n\n\n  statics: {\n    createRouteFromReactElement: _RouteUtils.createRouteFromReactElement\n  },\n\n  propTypes: {\n    path: string,\n    component: _InternalPropTypes.component,\n    components: _InternalPropTypes.components,\n    getComponent: func,\n    getComponents: func\n  },\n\n  /* istanbul ignore next: sanity check */\n  render: function render() {\n    !false ? \"production\" !== 'production' ? (0, _invariant2.default)(false, '<Route> elements are for router configuration only and should not be rendered') : (0, _invariant2.default)(false) : void 0;\n  }\n});\n\nexports.default = Route;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar object = _propTypes2.default.object;\n\n/**\n * The RouteContext mixin provides a convenient way for route\n * components to set the route in context. This is needed for\n * routes that render elements that want to use the Lifecycle\n * mixin to prevent transitions.\n */\n\nvar RouteContext = {\n\n  propTypes: {\n    route: object.isRequired\n  },\n\n  childContextTypes: {\n    route: object.isRequired\n  },\n\n  getChildContext: function getChildContext() {\n    return {\n      route: this.props.route\n    };\n  },\n  componentWillMount: function componentWillMount() {\n    \"production\" !== 'production' ? (0, _routerWarning2.default)(false, 'The `RouteContext` mixin is deprecated. You can provide `this.props.route` on context with your own `contextTypes`. http://tiny.cc/router-routecontextmixin') : void 0;\n  }\n};\n\nexports.default = RouteContext;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.isReactChildren = isReactChildren;\nexports.createRouteFromReactElement = createRouteFromReactElement;\nexports.createRoutesFromReactChildren = createRoutesFromReactChildren;\nexports.createRoutes = createRoutes;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isValidChild(object) {\n  return object == null || _react2.default.isValidElement(object);\n}\n\nfunction isReactChildren(object) {\n  return isValidChild(object) || Array.isArray(object) && object.every(isValidChild);\n}\n\nfunction createRoute(defaultProps, props) {\n  return _extends({}, defaultProps, props);\n}\n\nfunction createRouteFromReactElement(element) {\n  var type = element.type;\n  var route = createRoute(type.defaultProps, element.props);\n\n  if (route.children) {\n    var childRoutes = createRoutesFromReactChildren(route.children, route);\n\n    if (childRoutes.length) route.childRoutes = childRoutes;\n\n    delete route.children;\n  }\n\n  return route;\n}\n\n/**\n * Creates and returns a routes object from the given ReactChildren. JSX\n * provides a convenient way to visualize how routes in the hierarchy are\n * nested.\n *\n *   import { Route, createRoutesFromReactChildren } from 'react-router'\n *\n *   const routes = createRoutesFromReactChildren(\n *     <Route component={App}>\n *       <Route path=\"home\" component={Dashboard}/>\n *       <Route path=\"news\" component={NewsFeed}/>\n *     </Route>\n *   )\n *\n * Note: This method is automatically used when you provide <Route> children\n * to a <Router> component.\n */\nfunction createRoutesFromReactChildren(children, parentRoute) {\n  var routes = [];\n\n  _react2.default.Children.forEach(children, function (element) {\n    if (_react2.default.isValidElement(element)) {\n      // Component classes may have a static create* method.\n      if (element.type.createRouteFromReactElement) {\n        var route = element.type.createRouteFromReactElement(element, parentRoute);\n\n        if (route) routes.push(route);\n      } else {\n        routes.push(createRouteFromReactElement(element));\n      }\n    }\n  });\n\n  return routes;\n}\n\n/**\n * Creates and returns an array of routes from the given object which\n * may be a JSX route, a plain object route, or an array of either.\n */\nfunction createRoutes(routes) {\n  if (isReactChildren(routes)) {\n    routes = createRoutesFromReactChildren(routes);\n  } else if (routes && !Array.isArray(routes)) {\n    routes = [routes];\n  }\n\n  return routes;\n}","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createReactClass = require('create-react-class');\n\nvar _createReactClass2 = _interopRequireDefault(_createReactClass);\n\nvar _createHashHistory = require('history/lib/createHashHistory');\n\nvar _createHashHistory2 = _interopRequireDefault(_createHashHistory);\n\nvar _useQueries = require('history/lib/useQueries');\n\nvar _useQueries2 = _interopRequireDefault(_useQueries);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _createTransitionManager = require('./createTransitionManager');\n\nvar _createTransitionManager2 = _interopRequireDefault(_createTransitionManager);\n\nvar _InternalPropTypes = require('./InternalPropTypes');\n\nvar _RouterContext = require('./RouterContext');\n\nvar _RouterContext2 = _interopRequireDefault(_RouterContext);\n\nvar _RouteUtils = require('./RouteUtils');\n\nvar _RouterUtils = require('./RouterUtils');\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction isDeprecatedHistory(history) {\n  return !history || !history.__v2_compatible__;\n}\n\n/* istanbul ignore next: sanity check */\nfunction isUnsupportedHistory(history) {\n  // v3 histories expose getCurrentLocation, but aren't currently supported.\n  return history && history.getCurrentLocation;\n}\n\nvar func = _propTypes2.default.func,\n    object = _propTypes2.default.object;\n\n/**\n * A <Router> is a high-level API for automatically setting up\n * a router that renders a <RouterContext> with all the props\n * it needs each time the URL changes.\n */\n\nvar Router = (0, _createReactClass2.default)({\n  displayName: 'Router',\n\n\n  propTypes: {\n    history: object,\n    children: _InternalPropTypes.routes,\n    routes: _InternalPropTypes.routes, // alias for children\n    render: func,\n    createElement: func,\n    onError: func,\n    onUpdate: func,\n\n    // Deprecated:\n    parseQueryString: func,\n    stringifyQuery: func,\n\n    // PRIVATE: For client-side rehydration of server match.\n    matchContext: object\n  },\n\n  getDefaultProps: function getDefaultProps() {\n    return {\n      render: function render(props) {\n        return _react2.default.createElement(_RouterContext2.default, props);\n      }\n    };\n  },\n  getInitialState: function getInitialState() {\n    return {\n      location: null,\n      routes: null,\n      params: null,\n      components: null\n    };\n  },\n  handleError: function handleError(error) {\n    if (this.props.onError) {\n      this.props.onError.call(this, error);\n    } else {\n      // Throw errors by default so we don't silently swallow them!\n      throw error; // This error probably occurred in getChildRoutes or getComponents.\n    }\n  },\n  componentWillMount: function componentWillMount() {\n    var _this = this;\n\n    var _props = this.props,\n        parseQueryString = _props.parseQueryString,\n        stringifyQuery = _props.stringifyQuery;\n\n    \"production\" !== 'production' ? (0, _routerWarning2.default)(!(parseQueryString || stringifyQuery), '`parseQueryString` and `stringifyQuery` are deprecated. Please create a custom history. http://tiny.cc/router-customquerystring') : void 0;\n\n    var _createRouterObjects = this.createRouterObjects(),\n        history = _createRouterObjects.history,\n        transitionManager = _createRouterObjects.transitionManager,\n        router = _createRouterObjects.router;\n\n    this._unlisten = transitionManager.listen(function (error, state) {\n      if (error) {\n        _this.handleError(error);\n      } else {\n        _this.setState(state, _this.props.onUpdate);\n      }\n    });\n\n    this.history = history;\n    this.router = router;\n  },\n  createRouterObjects: function createRouterObjects() {\n    var matchContext = this.props.matchContext;\n\n    if (matchContext) {\n      return matchContext;\n    }\n\n    var history = this.props.history;\n    var _props2 = this.props,\n        routes = _props2.routes,\n        children = _props2.children;\n\n\n    !!isUnsupportedHistory(history) ? \"production\" !== 'production' ? (0, _invariant2.default)(false, 'You have provided a history object created with history v3.x. ' + 'This version of React Router is not compatible with v3 history ' + 'objects. Please use history v2.x instead.') : (0, _invariant2.default)(false) : void 0;\n\n    if (isDeprecatedHistory(history)) {\n      history = this.wrapDeprecatedHistory(history);\n    }\n\n    var transitionManager = (0, _createTransitionManager2.default)(history, (0, _RouteUtils.createRoutes)(routes || children));\n    var router = (0, _RouterUtils.createRouterObject)(history, transitionManager);\n    var routingHistory = (0, _RouterUtils.createRoutingHistory)(history, transitionManager);\n\n    return { history: routingHistory, transitionManager: transitionManager, router: router };\n  },\n  wrapDeprecatedHistory: function wrapDeprecatedHistory(history) {\n    var _props3 = this.props,\n        parseQueryString = _props3.parseQueryString,\n        stringifyQuery = _props3.stringifyQuery;\n\n\n    var createHistory = void 0;\n    if (history) {\n      \"production\" !== 'production' ? (0, _routerWarning2.default)(false, 'It appears you have provided a deprecated history object to `<Router/>`, please use a history provided by ' + 'React Router with `import { browserHistory } from \\'react-router\\'` or `import { hashHistory } from \\'react-router\\'`. ' + 'If you are using a custom history please create it with `useRouterHistory`, see http://tiny.cc/router-usinghistory for details.') : void 0;\n      createHistory = function createHistory() {\n        return history;\n      };\n    } else {\n      \"production\" !== 'production' ? (0, _routerWarning2.default)(false, '`Router` no longer defaults the history prop to hash history. Please use the `hashHistory` singleton instead. http://tiny.cc/router-defaulthistory') : void 0;\n      createHistory = _createHashHistory2.default;\n    }\n\n    return (0, _useQueries2.default)(createHistory)({ parseQueryString: parseQueryString, stringifyQuery: stringifyQuery });\n  },\n\n\n  /* istanbul ignore next: sanity check */\n  componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n    \"production\" !== 'production' ? (0, _routerWarning2.default)(nextProps.history === this.props.history, 'You cannot change <Router history>; it will be ignored') : void 0;\n\n    \"production\" !== 'production' ? (0, _routerWarning2.default)((nextProps.routes || nextProps.children) === (this.props.routes || this.props.children), 'You cannot change <Router routes>; it will be ignored') : void 0;\n  },\n  componentWillUnmount: function componentWillUnmount() {\n    if (this._unlisten) this._unlisten();\n  },\n  render: function render() {\n    var _state = this.state,\n        location = _state.location,\n        routes = _state.routes,\n        params = _state.params,\n        components = _state.components;\n\n    var _props4 = this.props,\n        createElement = _props4.createElement,\n        render = _props4.render,\n        props = _objectWithoutProperties(_props4, ['createElement', 'render']);\n\n    if (location == null) return null; // Async match\n\n    // Only forward non-Router-specific props to routing context, as those are\n    // the only ones that might be custom routing context props.\n    Object.keys(Router.propTypes).forEach(function (propType) {\n      return delete props[propType];\n    });\n\n    return render(_extends({}, props, {\n      history: this.history,\n      router: this.router,\n      location: location,\n      routes: routes,\n      params: params,\n      components: components,\n      createElement: createElement\n    }));\n  }\n});\n\nexports.default = Router;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createReactClass = require('create-react-class');\n\nvar _createReactClass2 = _interopRequireDefault(_createReactClass);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _deprecateObjectProperties = require('./deprecateObjectProperties');\n\nvar _deprecateObjectProperties2 = _interopRequireDefault(_deprecateObjectProperties);\n\nvar _getRouteParams = require('./getRouteParams');\n\nvar _getRouteParams2 = _interopRequireDefault(_getRouteParams);\n\nvar _RouteUtils = require('./RouteUtils');\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar any = _propTypes2.default.any,\n    array = _propTypes2.default.array,\n    func = _propTypes2.default.func,\n    object = _propTypes2.default.object;\n\n/**\n * A <RouterContext> renders the component tree for a given router state\n * and sets the history object and the current location in context.\n */\n\nvar RouterContext = (0, _createReactClass2.default)({\n  displayName: 'RouterContext',\n\n\n  propTypes: {\n    children: any,\n    history: object,\n    router: object.isRequired,\n    location: object.isRequired,\n    routes: array.isRequired,\n    params: object.isRequired,\n    components: array.isRequired,\n    createElement: func.isRequired\n  },\n\n  getDefaultProps: function getDefaultProps() {\n    return {\n      createElement: _react2.default.createElement\n    };\n  },\n\n\n  childContextTypes: {\n    history: object,\n    location: object.isRequired,\n    router: object.isRequired\n  },\n\n  getChildContext: function getChildContext() {\n    var _props = this.props,\n        router = _props.router,\n        history = _props.history,\n        location = _props.location;\n\n    if (!router) {\n      \"production\" !== 'production' ? (0, _routerWarning2.default)(false, '`<RouterContext>` expects a `router` rather than a `history`') : void 0;\n\n      router = _extends({}, history, {\n        setRouteLeaveHook: history.listenBeforeLeavingRoute\n      });\n      delete router.listenBeforeLeavingRoute;\n    }\n\n    if (\"production\" !== 'production') {\n      location = (0, _deprecateObjectProperties2.default)(location, '`context.location` is deprecated, please use a route component\\'s `props.location` instead. http://tiny.cc/router-accessinglocation');\n    }\n\n    return { history: history, location: location, router: router };\n  },\n  createElement: function createElement(component, props) {\n    return component == null ? null : this.props.createElement(component, props);\n  },\n  render: function render() {\n    var _this = this;\n\n    var _props2 = this.props,\n        history = _props2.history,\n        location = _props2.location,\n        routes = _props2.routes,\n        params = _props2.params,\n        components = _props2.components;\n\n    var element = null;\n\n    if (components) {\n      element = components.reduceRight(function (element, components, index) {\n        if (components == null) return element; // Don't create new children; use the grandchildren.\n\n        var route = routes[index];\n        var routeParams = (0, _getRouteParams2.default)(route, params);\n        var props = {\n          history: history,\n          location: location,\n          params: params,\n          route: route,\n          routeParams: routeParams,\n          routes: routes\n        };\n\n        if ((0, _RouteUtils.isReactChildren)(element)) {\n          props.children = element;\n        } else if (element) {\n          for (var prop in element) {\n            if (Object.prototype.hasOwnProperty.call(element, prop)) props[prop] = element[prop];\n          }\n        }\n\n        if ((typeof components === 'undefined' ? 'undefined' : _typeof(components)) === 'object') {\n          var elements = {};\n\n          for (var key in components) {\n            if (Object.prototype.hasOwnProperty.call(components, key)) {\n              // Pass through the key as a prop to createElement to allow\n              // custom createElement functions to know which named component\n              // they're rendering, for e.g. matching up to fetched data.\n              elements[key] = _this.createElement(components[key], _extends({\n                key: key }, props));\n            }\n          }\n\n          return elements;\n        }\n\n        return _this.createElement(components, props);\n      }, element);\n    }\n\n    !(element === null || element === false || _react2.default.isValidElement(element)) ? \"production\" !== 'production' ? (0, _invariant2.default)(false, 'The root route must render a single element') : (0, _invariant2.default)(false) : void 0;\n\n    return element;\n  }\n});\n\nexports.default = RouterContext;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.createRouterObject = createRouterObject;\nexports.createRoutingHistory = createRoutingHistory;\n\nvar _deprecateObjectProperties = require('./deprecateObjectProperties');\n\nvar _deprecateObjectProperties2 = _interopRequireDefault(_deprecateObjectProperties);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction createRouterObject(history, transitionManager) {\n  return _extends({}, history, {\n    setRouteLeaveHook: transitionManager.listenBeforeLeavingRoute,\n    isActive: transitionManager.isActive\n  });\n}\n\n// deprecated\nfunction createRoutingHistory(history, transitionManager) {\n  history = _extends({}, history, transitionManager);\n\n  if (\"production\" !== 'production') {\n    history = (0, _deprecateObjectProperties2.default)(history, '`props.history` and `context.history` are deprecated. Please use `context.router`. http://tiny.cc/router-contextchanges');\n  }\n\n  return history;\n}","'use strict';\n\nexports.__esModule = true;\n\nvar _createReactClass = require('create-react-class');\n\nvar _createReactClass2 = _interopRequireDefault(_createReactClass);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _RouterContext = require('./RouterContext');\n\nvar _RouterContext2 = _interopRequireDefault(_RouterContext);\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar RoutingContext = (0, _createReactClass2.default)({\n  displayName: 'RoutingContext',\n  componentWillMount: function componentWillMount() {\n    \"production\" !== 'production' ? (0, _routerWarning2.default)(false, '`RoutingContext` has been renamed to `RouterContext`. Please use `import { RouterContext } from \\'react-router\\'`. http://tiny.cc/router-routercontext') : void 0;\n  },\n  render: function render() {\n    return _react2.default.createElement(_RouterContext2.default, this.props);\n  }\n});\n\nexports.default = RoutingContext;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports.runEnterHooks = runEnterHooks;\nexports.runChangeHooks = runChangeHooks;\nexports.runLeaveHooks = runLeaveHooks;\n\nvar _AsyncUtils = require('./AsyncUtils');\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction createTransitionHook(hook, route, asyncArity) {\n  return function () {\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    hook.apply(route, args);\n\n    if (hook.length < asyncArity) {\n      var callback = args[args.length - 1];\n      // Assume hook executes synchronously and\n      // automatically call the callback.\n      callback();\n    }\n  };\n}\n\nfunction getEnterHooks(routes) {\n  return routes.reduce(function (hooks, route) {\n    if (route.onEnter) hooks.push(createTransitionHook(route.onEnter, route, 3));\n\n    return hooks;\n  }, []);\n}\n\nfunction getChangeHooks(routes) {\n  return routes.reduce(function (hooks, route) {\n    if (route.onChange) hooks.push(createTransitionHook(route.onChange, route, 4));\n    return hooks;\n  }, []);\n}\n\nfunction runTransitionHooks(length, iter, callback) {\n  if (!length) {\n    callback();\n    return;\n  }\n\n  var redirectInfo = void 0;\n  function replace(location, deprecatedPathname, deprecatedQuery) {\n    if (deprecatedPathname) {\n      \"production\" !== 'production' ? (0, _routerWarning2.default)(false, '`replaceState(state, pathname, query) is deprecated; use `replace(location)` with a location descriptor instead. http://tiny.cc/router-isActivedeprecated') : void 0;\n      redirectInfo = {\n        pathname: deprecatedPathname,\n        query: deprecatedQuery,\n        state: location\n      };\n\n      return;\n    }\n\n    redirectInfo = location;\n  }\n\n  (0, _AsyncUtils.loopAsync)(length, function (index, next, done) {\n    iter(index, replace, function (error) {\n      if (error || redirectInfo) {\n        done(error, redirectInfo); // No need to continue.\n      } else {\n        next();\n      }\n    });\n  }, callback);\n}\n\n/**\n * Runs all onEnter hooks in the given array of routes in order\n * with onEnter(nextState, replace, callback) and calls\n * callback(error, redirectInfo) when finished. The first hook\n * to use replace short-circuits the loop.\n *\n * If a hook needs to run asynchronously, it may use the callback\n * function. However, doing so will cause the transition to pause,\n * which could lead to a non-responsive UI if the hook is slow.\n */\nfunction runEnterHooks(routes, nextState, callback) {\n  var hooks = getEnterHooks(routes);\n  return runTransitionHooks(hooks.length, function (index, replace, next) {\n    hooks[index](nextState, replace, next);\n  }, callback);\n}\n\n/**\n * Runs all onChange hooks in the given array of routes in order\n * with onChange(prevState, nextState, replace, callback) and calls\n * callback(error, redirectInfo) when finished. The first hook\n * to use replace short-circuits the loop.\n *\n * If a hook needs to run asynchronously, it may use the callback\n * function. However, doing so will cause the transition to pause,\n * which could lead to a non-responsive UI if the hook is slow.\n */\nfunction runChangeHooks(routes, state, nextState, callback) {\n  var hooks = getChangeHooks(routes);\n  return runTransitionHooks(hooks.length, function (index, replace, next) {\n    hooks[index](state, nextState, replace, next);\n  }, callback);\n}\n\n/**\n * Runs all onLeave hooks in the given array of routes in order.\n */\nfunction runLeaveHooks(routes, prevState) {\n  for (var i = 0, len = routes.length; i < len; ++i) {\n    if (routes[i].onLeave) routes[i].onLeave.call(routes[i], prevState);\n  }\n}","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _RouterContext = require('./RouterContext');\n\nvar _RouterContext2 = _interopRequireDefault(_RouterContext);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n  for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {\n    middlewares[_key] = arguments[_key];\n  }\n\n  var withContext = middlewares.map(function (m) {\n    return m.renderRouterContext;\n  }).filter(function (f) {\n    return f;\n  });\n  var withComponent = middlewares.map(function (m) {\n    return m.renderRouteComponent;\n  }).filter(function (f) {\n    return f;\n  });\n  var makeCreateElement = function makeCreateElement() {\n    var baseCreateElement = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _react.createElement;\n    return function (Component, props) {\n      return withComponent.reduceRight(function (previous, renderRouteComponent) {\n        return renderRouteComponent(previous, props);\n      }, baseCreateElement(Component, props));\n    };\n  };\n\n  return function (renderProps) {\n    return withContext.reduceRight(function (previous, renderRouterContext) {\n      return renderRouterContext(previous, renderProps);\n    }, _react2.default.createElement(_RouterContext2.default, _extends({}, renderProps, {\n      createElement: makeCreateElement(renderProps.createElement)\n    })));\n  };\n};\n\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _createBrowserHistory = require('history/lib/createBrowserHistory');\n\nvar _createBrowserHistory2 = _interopRequireDefault(_createBrowserHistory);\n\nvar _createRouterHistory = require('./createRouterHistory');\n\nvar _createRouterHistory2 = _interopRequireDefault(_createRouterHistory);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = (0, _createRouterHistory2.default)(_createBrowserHistory2.default);\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _PatternUtils = require('./PatternUtils');\n\nfunction routeParamsChanged(route, prevState, nextState) {\n  if (!route.path) return false;\n\n  var paramNames = (0, _PatternUtils.getParamNames)(route.path);\n\n  return paramNames.some(function (paramName) {\n    return prevState.params[paramName] !== nextState.params[paramName];\n  });\n}\n\n/**\n * Returns an object of { leaveRoutes, changeRoutes, enterRoutes } determined by\n * the change from prevState to nextState. We leave routes if either\n * 1) they are not in the next state or 2) they are in the next state\n * but their params have changed (i.e. /users/123 => /users/456).\n *\n * leaveRoutes are ordered starting at the leaf route of the tree\n * we're leaving up to the common parent route. enterRoutes are ordered\n * from the top of the tree we're entering down to the leaf route.\n *\n * changeRoutes are any routes that didn't leave or enter during\n * the transition.\n */\nfunction computeChangedRoutes(prevState, nextState) {\n  var prevRoutes = prevState && prevState.routes;\n  var nextRoutes = nextState.routes;\n\n  var leaveRoutes = void 0,\n      changeRoutes = void 0,\n      enterRoutes = void 0;\n  if (prevRoutes) {\n    var parentIsLeaving = false;\n    leaveRoutes = prevRoutes.filter(function (route) {\n      if (parentIsLeaving) {\n        return true;\n      } else {\n        var isLeaving = nextRoutes.indexOf(route) === -1 || routeParamsChanged(route, prevState, nextState);\n        if (isLeaving) parentIsLeaving = true;\n        return isLeaving;\n      }\n    });\n\n    // onLeave hooks start at the leaf route.\n    leaveRoutes.reverse();\n\n    enterRoutes = [];\n    changeRoutes = [];\n\n    nextRoutes.forEach(function (route) {\n      var isNew = prevRoutes.indexOf(route) === -1;\n      var paramsChanged = leaveRoutes.indexOf(route) !== -1;\n\n      if (isNew || paramsChanged) enterRoutes.push(route);else changeRoutes.push(route);\n    });\n  } else {\n    leaveRoutes = [];\n    changeRoutes = [];\n    enterRoutes = nextRoutes;\n  }\n\n  return {\n    leaveRoutes: leaveRoutes,\n    changeRoutes: changeRoutes,\n    enterRoutes: enterRoutes\n  };\n}\n\nexports.default = computeChangedRoutes;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports.default = createMemoryHistory;\n\nvar _useQueries = require('history/lib/useQueries');\n\nvar _useQueries2 = _interopRequireDefault(_useQueries);\n\nvar _useBasename = require('history/lib/useBasename');\n\nvar _useBasename2 = _interopRequireDefault(_useBasename);\n\nvar _createMemoryHistory = require('history/lib/createMemoryHistory');\n\nvar _createMemoryHistory2 = _interopRequireDefault(_createMemoryHistory);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction createMemoryHistory(options) {\n  // signatures and type checking differ between `useRoutes` and\n  // `createMemoryHistory`, have to create `memoryHistory` first because\n  // `useQueries` doesn't understand the signature\n  var memoryHistory = (0, _createMemoryHistory2.default)(options);\n  var createHistory = function createHistory() {\n    return memoryHistory;\n  };\n  var history = (0, _useQueries2.default)((0, _useBasename2.default)(createHistory))(options);\n  history.__v2_compatible__ = true;\n  return history;\n}\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nexports.default = function (createHistory) {\n  var history = void 0;\n  if (canUseDOM) history = (0, _useRouterHistory2.default)(createHistory)();\n  return history;\n};\n\nvar _useRouterHistory = require('./useRouterHistory');\n\nvar _useRouterHistory2 = _interopRequireDefault(_useRouterHistory);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.default = createTransitionManager;\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nvar _Actions = require('history/lib/Actions');\n\nvar _computeChangedRoutes2 = require('./computeChangedRoutes');\n\nvar _computeChangedRoutes3 = _interopRequireDefault(_computeChangedRoutes2);\n\nvar _TransitionUtils = require('./TransitionUtils');\n\nvar _isActive2 = require('./isActive');\n\nvar _isActive3 = _interopRequireDefault(_isActive2);\n\nvar _getComponents = require('./getComponents');\n\nvar _getComponents2 = _interopRequireDefault(_getComponents);\n\nvar _matchRoutes = require('./matchRoutes');\n\nvar _matchRoutes2 = _interopRequireDefault(_matchRoutes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction hasAnyProperties(object) {\n  for (var p in object) {\n    if (Object.prototype.hasOwnProperty.call(object, p)) return true;\n  }return false;\n}\n\nfunction createTransitionManager(history, routes) {\n  var state = {};\n\n  // Signature should be (location, indexOnly), but needs to support (path,\n  // query, indexOnly)\n  function isActive(location) {\n    var indexOnlyOrDeprecatedQuery = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n    var deprecatedIndexOnly = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n    var indexOnly = void 0;\n    if (indexOnlyOrDeprecatedQuery && indexOnlyOrDeprecatedQuery !== true || deprecatedIndexOnly !== null) {\n      \"production\" !== 'production' ? (0, _routerWarning2.default)(false, '`isActive(pathname, query, indexOnly) is deprecated; use `isActive(location, indexOnly)` with a location descriptor instead. http://tiny.cc/router-isActivedeprecated') : void 0;\n      location = { pathname: location, query: indexOnlyOrDeprecatedQuery };\n      indexOnly = deprecatedIndexOnly || false;\n    } else {\n      location = history.createLocation(location);\n      indexOnly = indexOnlyOrDeprecatedQuery;\n    }\n\n    return (0, _isActive3.default)(location, indexOnly, state.location, state.routes, state.params);\n  }\n\n  function createLocationFromRedirectInfo(location) {\n    return history.createLocation(location, _Actions.REPLACE);\n  }\n\n  var partialNextState = void 0;\n\n  function match(location, callback) {\n    if (partialNextState && partialNextState.location === location) {\n      // Continue from where we left off.\n      finishMatch(partialNextState, callback);\n    } else {\n      (0, _matchRoutes2.default)(routes, location, function (error, nextState) {\n        if (error) {\n          callback(error);\n        } else if (nextState) {\n          finishMatch(_extends({}, nextState, { location: location }), callback);\n        } else {\n          callback();\n        }\n      });\n    }\n  }\n\n  function finishMatch(nextState, callback) {\n    var _computeChangedRoutes = (0, _computeChangedRoutes3.default)(state, nextState),\n        leaveRoutes = _computeChangedRoutes.leaveRoutes,\n        changeRoutes = _computeChangedRoutes.changeRoutes,\n        enterRoutes = _computeChangedRoutes.enterRoutes;\n\n    (0, _TransitionUtils.runLeaveHooks)(leaveRoutes, state);\n\n    // Tear down confirmation hooks for left routes\n    leaveRoutes.filter(function (route) {\n      return enterRoutes.indexOf(route) === -1;\n    }).forEach(removeListenBeforeHooksForRoute);\n\n    // change and enter hooks are run in series\n    (0, _TransitionUtils.runChangeHooks)(changeRoutes, state, nextState, function (error, redirectInfo) {\n      if (error || redirectInfo) return handleErrorOrRedirect(error, redirectInfo);\n\n      (0, _TransitionUtils.runEnterHooks)(enterRoutes, nextState, finishEnterHooks);\n    });\n\n    function finishEnterHooks(error, redirectInfo) {\n      if (error || redirectInfo) return handleErrorOrRedirect(error, redirectInfo);\n\n      // TODO: Fetch components after state is updated.\n      (0, _getComponents2.default)(nextState, function (error, components) {\n        if (error) {\n          callback(error);\n        } else {\n          // TODO: Make match a pure function and have some other API\n          // for \"match and update state\".\n          callback(null, null, state = _extends({}, nextState, { components: components }));\n        }\n      });\n    }\n\n    function handleErrorOrRedirect(error, redirectInfo) {\n      if (error) callback(error);else callback(null, createLocationFromRedirectInfo(redirectInfo));\n    }\n  }\n\n  var RouteGuid = 1;\n\n  function getRouteID(route) {\n    var create = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n    return route.__id__ || create && (route.__id__ = RouteGuid++);\n  }\n\n  var RouteHooks = Object.create(null);\n\n  function getRouteHooksForRoutes(routes) {\n    return routes.reduce(function (hooks, route) {\n      hooks.push.apply(hooks, RouteHooks[getRouteID(route)]);\n      return hooks;\n    }, []);\n  }\n\n  function transitionHook(location, callback) {\n    (0, _matchRoutes2.default)(routes, location, function (error, nextState) {\n      if (nextState == null) {\n        // TODO: We didn't actually match anything, but hang\n        // onto error/nextState so we don't have to matchRoutes\n        // again in the listen callback.\n        callback();\n        return;\n      }\n\n      // Cache some state here so we don't have to\n      // matchRoutes() again in the listen callback.\n      partialNextState = _extends({}, nextState, { location: location });\n\n      var hooks = getRouteHooksForRoutes((0, _computeChangedRoutes3.default)(state, partialNextState).leaveRoutes);\n\n      var result = void 0;\n      for (var i = 0, len = hooks.length; result == null && i < len; ++i) {\n        // Passing the location arg here indicates to\n        // the user that this is a transition hook.\n        result = hooks[i](location);\n      }\n\n      callback(result);\n    });\n  }\n\n  /* istanbul ignore next: untestable with Karma */\n  function beforeUnloadHook() {\n    // Synchronously check to see if any route hooks want\n    // to prevent the current window/tab from closing.\n    if (state.routes) {\n      var hooks = getRouteHooksForRoutes(state.routes);\n\n      var message = void 0;\n      for (var i = 0, len = hooks.length; typeof message !== 'string' && i < len; ++i) {\n        // Passing no args indicates to the user that this is a\n        // beforeunload hook. We don't know the next location.\n        message = hooks[i]();\n      }\n\n      return message;\n    }\n  }\n\n  var unlistenBefore = void 0,\n      unlistenBeforeUnload = void 0;\n\n  function removeListenBeforeHooksForRoute(route) {\n    var routeID = getRouteID(route, false);\n    if (!routeID) {\n      return;\n    }\n\n    delete RouteHooks[routeID];\n\n    if (!hasAnyProperties(RouteHooks)) {\n      // teardown transition & beforeunload hooks\n      if (unlistenBefore) {\n        unlistenBefore();\n        unlistenBefore = null;\n      }\n\n      if (unlistenBeforeUnload) {\n        unlistenBeforeUnload();\n        unlistenBeforeUnload = null;\n      }\n    }\n  }\n\n  /**\n   * Registers the given hook function to run before leaving the given route.\n   *\n   * During a normal transition, the hook function receives the next location\n   * as its only argument and can return either a prompt message (string) to show the user,\n   * to make sure they want to leave the page; or `false`, to prevent the transition.\n   * Any other return value will have no effect.\n   *\n   * During the beforeunload event (in browsers) the hook receives no arguments.\n   * In this case it must return a prompt message to prevent the transition.\n   *\n   * Returns a function that may be used to unbind the listener.\n   */\n  function listenBeforeLeavingRoute(route, hook) {\n    // TODO: Warn if they register for a route that isn't currently\n    // active. They're probably doing something wrong, like re-creating\n    // route objects on every location change.\n    var routeID = getRouteID(route);\n    var hooks = RouteHooks[routeID];\n\n    if (!hooks) {\n      var thereWereNoRouteHooks = !hasAnyProperties(RouteHooks);\n\n      RouteHooks[routeID] = [hook];\n\n      if (thereWereNoRouteHooks) {\n        // setup transition & beforeunload hooks\n        unlistenBefore = history.listenBefore(transitionHook);\n\n        if (history.listenBeforeUnload) unlistenBeforeUnload = history.listenBeforeUnload(beforeUnloadHook);\n      }\n    } else {\n      if (hooks.indexOf(hook) === -1) {\n        \"production\" !== 'production' ? (0, _routerWarning2.default)(false, 'adding multiple leave hooks for the same route is deprecated; manage multiple confirmations in your own code instead') : void 0;\n\n        hooks.push(hook);\n      }\n    }\n\n    return function () {\n      var hooks = RouteHooks[routeID];\n\n      if (hooks) {\n        var newHooks = hooks.filter(function (item) {\n          return item !== hook;\n        });\n\n        if (newHooks.length === 0) {\n          removeListenBeforeHooksForRoute(route);\n        } else {\n          RouteHooks[routeID] = newHooks;\n        }\n      }\n    };\n  }\n\n  /**\n   * This is the API for stateful environments. As the location\n   * changes, we update state and call the listener. We can also\n   * gracefully handle errors and redirects.\n   */\n  function listen(listener) {\n    // TODO: Only use a single history listener. Otherwise we'll\n    // end up with multiple concurrent calls to match.\n    return history.listen(function (location) {\n      if (state.location === location) {\n        listener(null, state);\n      } else {\n        match(location, function (error, redirectLocation, nextState) {\n          if (error) {\n            listener(error);\n          } else if (redirectLocation) {\n            history.transitionTo(redirectLocation);\n          } else if (nextState) {\n            listener(null, nextState);\n          } else {\n            \"production\" !== 'production' ? (0, _routerWarning2.default)(false, 'Location \"%s\" did not match any routes', location.pathname + location.search + location.hash) : void 0;\n          }\n        });\n      }\n    });\n  }\n\n  return {\n    isActive: isActive,\n    match: match,\n    listenBeforeLeavingRoute: listenBeforeLeavingRoute,\n    listen: listen\n  };\n}\n\n//export default useRoutes\n\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports.canUseMembrane = undefined;\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar canUseMembrane = exports.canUseMembrane = false;\n\n// No-op by default.\nvar deprecateObjectProperties = function deprecateObjectProperties(object) {\n  return object;\n};\n\nif (\"production\" !== 'production') {\n  try {\n    if (Object.defineProperty({}, 'x', {\n      get: function get() {\n        return true;\n      }\n    }).x) {\n      exports.canUseMembrane = canUseMembrane = true;\n    }\n    /* eslint-disable no-empty */\n  } catch (e) {}\n  /* eslint-enable no-empty */\n\n  if (canUseMembrane) {\n    deprecateObjectProperties = function deprecateObjectProperties(object, message) {\n      // Wrap the deprecated object in a membrane to warn on property access.\n      var membrane = {};\n\n      var _loop = function _loop(prop) {\n        if (!Object.prototype.hasOwnProperty.call(object, prop)) {\n          return 'continue';\n        }\n\n        if (typeof object[prop] === 'function') {\n          // Can't use fat arrow here because of use of arguments below.\n          membrane[prop] = function () {\n            \"production\" !== 'production' ? (0, _routerWarning2.default)(false, message) : void 0;\n            return object[prop].apply(object, arguments);\n          };\n          return 'continue';\n        }\n\n        // These properties are non-enumerable to prevent React dev tools from\n        // seeing them and causing spurious warnings when accessing them. In\n        // principle this could be done with a proxy, but support for the\n        // ownKeys trap on proxies is not universal, even among browsers that\n        // otherwise support proxies.\n        Object.defineProperty(membrane, prop, {\n          get: function get() {\n            \"production\" !== 'production' ? (0, _routerWarning2.default)(false, message) : void 0;\n            return object[prop];\n          }\n        });\n      };\n\n      for (var prop in object) {\n        var _ret = _loop(prop);\n\n        if (_ret === 'continue') continue;\n      }\n\n      return membrane;\n    };\n  }\n}\n\nexports.default = deprecateObjectProperties;","'use strict';\n\nexports.__esModule = true;\n\nvar _AsyncUtils = require('./AsyncUtils');\n\nvar _makeStateWithLocation = require('./makeStateWithLocation');\n\nvar _makeStateWithLocation2 = _interopRequireDefault(_makeStateWithLocation);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getComponentsForRoute(nextState, route, callback) {\n  if (route.component || route.components) {\n    callback(null, route.component || route.components);\n    return;\n  }\n\n  var getComponent = route.getComponent || route.getComponents;\n  if (!getComponent) {\n    callback();\n    return;\n  }\n\n  var location = nextState.location;\n\n  var nextStateWithLocation = (0, _makeStateWithLocation2.default)(nextState, location);\n\n  getComponent.call(route, nextStateWithLocation, callback);\n}\n\n/**\n * Asynchronously fetches all components needed for the given router\n * state and calls callback(error, components) when finished.\n *\n * Note: This operation may finish synchronously if no routes have an\n * asynchronous getComponents method.\n */\nfunction getComponents(nextState, callback) {\n  (0, _AsyncUtils.mapAsync)(nextState.routes, function (route, index, callback) {\n    getComponentsForRoute(nextState, route, callback);\n  }, callback);\n}\n\nexports.default = getComponents;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _PatternUtils = require('./PatternUtils');\n\n/**\n * Extracts an object of params the given route cares about from\n * the given params object.\n */\nfunction getRouteParams(route, params) {\n  var routeParams = {};\n\n  if (!route.path) return routeParams;\n\n  (0, _PatternUtils.getParamNames)(route.path).forEach(function (p) {\n    if (Object.prototype.hasOwnProperty.call(params, p)) {\n      routeParams[p] = params[p];\n    }\n  });\n\n  return routeParams;\n}\n\nexports.default = getRouteParams;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _createHashHistory = require('history/lib/createHashHistory');\n\nvar _createHashHistory2 = _interopRequireDefault(_createHashHistory);\n\nvar _createRouterHistory = require('./createRouterHistory');\n\nvar _createRouterHistory2 = _interopRequireDefault(_createRouterHistory);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = (0, _createRouterHistory2.default)(_createHashHistory2.default);\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports.createMemoryHistory = exports.hashHistory = exports.browserHistory = exports.applyRouterMiddleware = exports.formatPattern = exports.useRouterHistory = exports.match = exports.routerShape = exports.locationShape = exports.PropTypes = exports.RoutingContext = exports.RouterContext = exports.createRoutes = exports.useRoutes = exports.RouteContext = exports.Lifecycle = exports.History = exports.Route = exports.Redirect = exports.IndexRoute = exports.IndexRedirect = exports.withRouter = exports.IndexLink = exports.Link = exports.Router = undefined;\n\nvar _RouteUtils = require('./RouteUtils');\n\nObject.defineProperty(exports, 'createRoutes', {\n  enumerable: true,\n  get: function get() {\n    return _RouteUtils.createRoutes;\n  }\n});\n\nvar _PropTypes2 = require('./PropTypes');\n\nObject.defineProperty(exports, 'locationShape', {\n  enumerable: true,\n  get: function get() {\n    return _PropTypes2.locationShape;\n  }\n});\nObject.defineProperty(exports, 'routerShape', {\n  enumerable: true,\n  get: function get() {\n    return _PropTypes2.routerShape;\n  }\n});\n\nvar _PatternUtils = require('./PatternUtils');\n\nObject.defineProperty(exports, 'formatPattern', {\n  enumerable: true,\n  get: function get() {\n    return _PatternUtils.formatPattern;\n  }\n});\n\nvar _Router2 = require('./Router');\n\nvar _Router3 = _interopRequireDefault(_Router2);\n\nvar _Link2 = require('./Link');\n\nvar _Link3 = _interopRequireDefault(_Link2);\n\nvar _IndexLink2 = require('./IndexLink');\n\nvar _IndexLink3 = _interopRequireDefault(_IndexLink2);\n\nvar _withRouter2 = require('./withRouter');\n\nvar _withRouter3 = _interopRequireDefault(_withRouter2);\n\nvar _IndexRedirect2 = require('./IndexRedirect');\n\nvar _IndexRedirect3 = _interopRequireDefault(_IndexRedirect2);\n\nvar _IndexRoute2 = require('./IndexRoute');\n\nvar _IndexRoute3 = _interopRequireDefault(_IndexRoute2);\n\nvar _Redirect2 = require('./Redirect');\n\nvar _Redirect3 = _interopRequireDefault(_Redirect2);\n\nvar _Route2 = require('./Route');\n\nvar _Route3 = _interopRequireDefault(_Route2);\n\nvar _History2 = require('./History');\n\nvar _History3 = _interopRequireDefault(_History2);\n\nvar _Lifecycle2 = require('./Lifecycle');\n\nvar _Lifecycle3 = _interopRequireDefault(_Lifecycle2);\n\nvar _RouteContext2 = require('./RouteContext');\n\nvar _RouteContext3 = _interopRequireDefault(_RouteContext2);\n\nvar _useRoutes2 = require('./useRoutes');\n\nvar _useRoutes3 = _interopRequireDefault(_useRoutes2);\n\nvar _RouterContext2 = require('./RouterContext');\n\nvar _RouterContext3 = _interopRequireDefault(_RouterContext2);\n\nvar _RoutingContext2 = require('./RoutingContext');\n\nvar _RoutingContext3 = _interopRequireDefault(_RoutingContext2);\n\nvar _PropTypes3 = _interopRequireDefault(_PropTypes2);\n\nvar _match2 = require('./match');\n\nvar _match3 = _interopRequireDefault(_match2);\n\nvar _useRouterHistory2 = require('./useRouterHistory');\n\nvar _useRouterHistory3 = _interopRequireDefault(_useRouterHistory2);\n\nvar _applyRouterMiddleware2 = require('./applyRouterMiddleware');\n\nvar _applyRouterMiddleware3 = _interopRequireDefault(_applyRouterMiddleware2);\n\nvar _browserHistory2 = require('./browserHistory');\n\nvar _browserHistory3 = _interopRequireDefault(_browserHistory2);\n\nvar _hashHistory2 = require('./hashHistory');\n\nvar _hashHistory3 = _interopRequireDefault(_hashHistory2);\n\nvar _createMemoryHistory2 = require('./createMemoryHistory');\n\nvar _createMemoryHistory3 = _interopRequireDefault(_createMemoryHistory2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.Router = _Router3.default; /* components */\n\nexports.Link = _Link3.default;\nexports.IndexLink = _IndexLink3.default;\nexports.withRouter = _withRouter3.default;\n\n/* components (configuration) */\n\nexports.IndexRedirect = _IndexRedirect3.default;\nexports.IndexRoute = _IndexRoute3.default;\nexports.Redirect = _Redirect3.default;\nexports.Route = _Route3.default;\n\n/* mixins */\n\nexports.History = _History3.default;\nexports.Lifecycle = _Lifecycle3.default;\nexports.RouteContext = _RouteContext3.default;\n\n/* utils */\n\nexports.useRoutes = _useRoutes3.default;\nexports.RouterContext = _RouterContext3.default;\nexports.RoutingContext = _RoutingContext3.default;\nexports.PropTypes = _PropTypes3.default;\nexports.match = _match3.default;\nexports.useRouterHistory = _useRouterHistory3.default;\nexports.applyRouterMiddleware = _applyRouterMiddleware3.default;\n\n/* histories */\n\nexports.browserHistory = _browserHistory3.default;\nexports.hashHistory = _hashHistory3.default;\nexports.createMemoryHistory = _createMemoryHistory3.default;","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.default = isActive;\n\nvar _PatternUtils = require('./PatternUtils');\n\nfunction deepEqual(a, b) {\n  if (a == b) return true;\n\n  if (a == null || b == null) return false;\n\n  if (Array.isArray(a)) {\n    return Array.isArray(b) && a.length === b.length && a.every(function (item, index) {\n      return deepEqual(item, b[index]);\n    });\n  }\n\n  if ((typeof a === 'undefined' ? 'undefined' : _typeof(a)) === 'object') {\n    for (var p in a) {\n      if (!Object.prototype.hasOwnProperty.call(a, p)) {\n        continue;\n      }\n\n      if (a[p] === undefined) {\n        if (b[p] !== undefined) {\n          return false;\n        }\n      } else if (!Object.prototype.hasOwnProperty.call(b, p)) {\n        return false;\n      } else if (!deepEqual(a[p], b[p])) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  return String(a) === String(b);\n}\n\n/**\n * Returns true if the current pathname matches the supplied one, net of\n * leading and trailing slash normalization. This is sufficient for an\n * indexOnly route match.\n */\nfunction pathIsActive(pathname, currentPathname) {\n  // Normalize leading slash for consistency. Leading slash on pathname has\n  // already been normalized in isActive. See caveat there.\n  if (currentPathname.charAt(0) !== '/') {\n    currentPathname = '/' + currentPathname;\n  }\n\n  // Normalize the end of both path names too. Maybe `/foo/` shouldn't show\n  // `/foo` as active, but in this case, we would already have failed the\n  // match.\n  if (pathname.charAt(pathname.length - 1) !== '/') {\n    pathname += '/';\n  }\n  if (currentPathname.charAt(currentPathname.length - 1) !== '/') {\n    currentPathname += '/';\n  }\n\n  return currentPathname === pathname;\n}\n\n/**\n * Returns true if the given pathname matches the active routes and params.\n */\nfunction routeIsActive(pathname, routes, params) {\n  var remainingPathname = pathname,\n      paramNames = [],\n      paramValues = [];\n\n  // for...of would work here but it's probably slower post-transpilation.\n  for (var i = 0, len = routes.length; i < len; ++i) {\n    var route = routes[i];\n    var pattern = route.path || '';\n\n    if (pattern.charAt(0) === '/') {\n      remainingPathname = pathname;\n      paramNames = [];\n      paramValues = [];\n    }\n\n    if (remainingPathname !== null && pattern) {\n      var matched = (0, _PatternUtils.matchPattern)(pattern, remainingPathname);\n      if (matched) {\n        remainingPathname = matched.remainingPathname;\n        paramNames = [].concat(paramNames, matched.paramNames);\n        paramValues = [].concat(paramValues, matched.paramValues);\n      } else {\n        remainingPathname = null;\n      }\n\n      if (remainingPathname === '') {\n        // We have an exact match on the route. Just check that all the params\n        // match.\n        // FIXME: This doesn't work on repeated params.\n        return paramNames.every(function (paramName, index) {\n          return String(paramValues[index]) === String(params[paramName]);\n        });\n      }\n    }\n  }\n\n  return false;\n}\n\n/**\n * Returns true if all key/value pairs in the given query are\n * currently active.\n */\nfunction queryIsActive(query, activeQuery) {\n  if (activeQuery == null) return query == null;\n\n  if (query == null) return true;\n\n  return deepEqual(query, activeQuery);\n}\n\n/**\n * Returns true if a <Link> to the given pathname/query combination is\n * currently active.\n */\nfunction isActive(_ref, indexOnly, currentLocation, routes, params) {\n  var pathname = _ref.pathname,\n      query = _ref.query;\n\n  if (currentLocation == null) return false;\n\n  // TODO: This is a bit ugly. It keeps around support for treating pathnames\n  // without preceding slashes as absolute paths, but possibly also works\n  // around the same quirks with basenames as in matchRoutes.\n  if (pathname.charAt(0) !== '/') {\n    pathname = '/' + pathname;\n  }\n\n  if (!pathIsActive(pathname, currentLocation.pathname)) {\n    // The path check is necessary and sufficient for indexOnly, but otherwise\n    // we still need to check the routes.\n    if (indexOnly || !routeIsActive(pathname, routes, params)) {\n      return false;\n    }\n  }\n\n  return queryIsActive(query, currentLocation.query);\n}\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.default = makeStateWithLocation;\n\nvar _deprecateObjectProperties = require('./deprecateObjectProperties');\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction makeStateWithLocation(state, location) {\n  if (\"production\" !== 'production' && _deprecateObjectProperties.canUseMembrane) {\n    var stateWithLocation = _extends({}, state);\n\n    // I don't use deprecateObjectProperties here because I want to keep the\n    // same code path between development and production, in that we just\n    // assign extra properties to the copy of the state object in both cases.\n\n    var _loop = function _loop(prop) {\n      if (!Object.prototype.hasOwnProperty.call(location, prop)) {\n        return 'continue';\n      }\n\n      Object.defineProperty(stateWithLocation, prop, {\n        get: function get() {\n          \"production\" !== 'production' ? (0, _routerWarning2.default)(false, 'Accessing location properties directly from the first argument to `getComponent`, `getComponents`, `getChildRoutes`, and `getIndexRoute` is deprecated. That argument is now the router state (`nextState` or `partialNextState`) rather than the location. To access the location, use `nextState.location` or `partialNextState.location`.') : void 0;\n          return location[prop];\n        }\n      });\n    };\n\n    for (var prop in location) {\n      var _ret = _loop(prop);\n\n      if (_ret === 'continue') continue;\n    }\n\n    return stateWithLocation;\n  }\n\n  return _extends({}, state, location);\n}\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _createMemoryHistory = require('./createMemoryHistory');\n\nvar _createMemoryHistory2 = _interopRequireDefault(_createMemoryHistory);\n\nvar _createTransitionManager = require('./createTransitionManager');\n\nvar _createTransitionManager2 = _interopRequireDefault(_createTransitionManager);\n\nvar _RouteUtils = require('./RouteUtils');\n\nvar _RouterUtils = require('./RouterUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\n/**\n * A high-level API to be used for server-side rendering.\n *\n * This function matches a location to a set of routes and calls\n * callback(error, redirectLocation, renderProps) when finished.\n *\n * Note: You probably don't want to use this in a browser unless you're using\n * server-side rendering with async routes.\n */\nfunction match(_ref, callback) {\n  var history = _ref.history,\n      routes = _ref.routes,\n      location = _ref.location,\n      options = _objectWithoutProperties(_ref, ['history', 'routes', 'location']);\n\n  !(history || location) ? \"production\" !== 'production' ? (0, _invariant2.default)(false, 'match needs a history or a location') : (0, _invariant2.default)(false) : void 0;\n\n  history = history ? history : (0, _createMemoryHistory2.default)(options);\n  var transitionManager = (0, _createTransitionManager2.default)(history, (0, _RouteUtils.createRoutes)(routes));\n\n  var unlisten = void 0;\n\n  if (location) {\n    // Allow match({ location: '/the/path', ... })\n    location = history.createLocation(location);\n  } else {\n    // Pick up the location from the history via synchronous history.listen\n    // call if needed.\n    unlisten = history.listen(function (historyLocation) {\n      location = historyLocation;\n    });\n  }\n\n  var router = (0, _RouterUtils.createRouterObject)(history, transitionManager);\n  history = (0, _RouterUtils.createRoutingHistory)(history, transitionManager);\n\n  transitionManager.match(location, function (error, redirectLocation, nextState) {\n    callback(error, redirectLocation, nextState && _extends({}, nextState, {\n      history: history,\n      router: router,\n      matchContext: { history: history, transitionManager: transitionManager, router: router }\n    }));\n\n    // Defer removing the listener to here to prevent DOM histories from having\n    // to unwind DOM event listeners unnecessarily, in case callback renders a\n    // <Router> and attaches another history listener.\n    if (unlisten) {\n      unlisten();\n    }\n  });\n}\n\nexports.default = match;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.default = matchRoutes;\n\nvar _AsyncUtils = require('./AsyncUtils');\n\nvar _makeStateWithLocation = require('./makeStateWithLocation');\n\nvar _makeStateWithLocation2 = _interopRequireDefault(_makeStateWithLocation);\n\nvar _PatternUtils = require('./PatternUtils');\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nvar _RouteUtils = require('./RouteUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getChildRoutes(route, location, paramNames, paramValues, callback) {\n  if (route.childRoutes) {\n    return [null, route.childRoutes];\n  }\n  if (!route.getChildRoutes) {\n    return [];\n  }\n\n  var sync = true,\n      result = void 0;\n\n  var partialNextState = {\n    location: location,\n    params: createParams(paramNames, paramValues)\n  };\n\n  var partialNextStateWithLocation = (0, _makeStateWithLocation2.default)(partialNextState, location);\n\n  route.getChildRoutes(partialNextStateWithLocation, function (error, childRoutes) {\n    childRoutes = !error && (0, _RouteUtils.createRoutes)(childRoutes);\n    if (sync) {\n      result = [error, childRoutes];\n      return;\n    }\n\n    callback(error, childRoutes);\n  });\n\n  sync = false;\n  return result; // Might be undefined.\n}\n\nfunction getIndexRoute(route, location, paramNames, paramValues, callback) {\n  if (route.indexRoute) {\n    callback(null, route.indexRoute);\n  } else if (route.getIndexRoute) {\n    var partialNextState = {\n      location: location,\n      params: createParams(paramNames, paramValues)\n    };\n\n    var partialNextStateWithLocation = (0, _makeStateWithLocation2.default)(partialNextState, location);\n\n    route.getIndexRoute(partialNextStateWithLocation, function (error, indexRoute) {\n      callback(error, !error && (0, _RouteUtils.createRoutes)(indexRoute)[0]);\n    });\n  } else if (route.childRoutes) {\n    var pathless = route.childRoutes.filter(function (childRoute) {\n      return !childRoute.path;\n    });\n\n    (0, _AsyncUtils.loopAsync)(pathless.length, function (index, next, done) {\n      getIndexRoute(pathless[index], location, paramNames, paramValues, function (error, indexRoute) {\n        if (error || indexRoute) {\n          var routes = [pathless[index]].concat(Array.isArray(indexRoute) ? indexRoute : [indexRoute]);\n          done(error, routes);\n        } else {\n          next();\n        }\n      });\n    }, function (err, routes) {\n      callback(null, routes);\n    });\n  } else {\n    callback();\n  }\n}\n\nfunction assignParams(params, paramNames, paramValues) {\n  return paramNames.reduce(function (params, paramName, index) {\n    var paramValue = paramValues && paramValues[index];\n\n    if (Array.isArray(params[paramName])) {\n      params[paramName].push(paramValue);\n    } else if (paramName in params) {\n      params[paramName] = [params[paramName], paramValue];\n    } else {\n      params[paramName] = paramValue;\n    }\n\n    return params;\n  }, params);\n}\n\nfunction createParams(paramNames, paramValues) {\n  return assignParams({}, paramNames, paramValues);\n}\n\nfunction matchRouteDeep(route, location, remainingPathname, paramNames, paramValues, callback) {\n  var pattern = route.path || '';\n\n  if (pattern.charAt(0) === '/') {\n    remainingPathname = location.pathname;\n    paramNames = [];\n    paramValues = [];\n  }\n\n  // Only try to match the path if the route actually has a pattern, and if\n  // we're not just searching for potential nested absolute paths.\n  if (remainingPathname !== null && pattern) {\n    try {\n      var matched = (0, _PatternUtils.matchPattern)(pattern, remainingPathname);\n      if (matched) {\n        remainingPathname = matched.remainingPathname;\n        paramNames = [].concat(paramNames, matched.paramNames);\n        paramValues = [].concat(paramValues, matched.paramValues);\n      } else {\n        remainingPathname = null;\n      }\n    } catch (error) {\n      callback(error);\n    }\n\n    // By assumption, pattern is non-empty here, which is the prerequisite for\n    // actually terminating a match.\n    if (remainingPathname === '') {\n      var match = {\n        routes: [route],\n        params: createParams(paramNames, paramValues)\n      };\n\n      getIndexRoute(route, location, paramNames, paramValues, function (error, indexRoute) {\n        if (error) {\n          callback(error);\n        } else {\n          if (Array.isArray(indexRoute)) {\n            var _match$routes;\n\n            \"production\" !== 'production' ? (0, _routerWarning2.default)(indexRoute.every(function (route) {\n              return !route.path;\n            }), 'Index routes should not have paths') : void 0;\n            (_match$routes = match.routes).push.apply(_match$routes, indexRoute);\n          } else if (indexRoute) {\n            \"production\" !== 'production' ? (0, _routerWarning2.default)(!indexRoute.path, 'Index routes should not have paths') : void 0;\n            match.routes.push(indexRoute);\n          }\n\n          callback(null, match);\n        }\n      });\n\n      return;\n    }\n  }\n\n  if (remainingPathname != null || route.childRoutes) {\n    // Either a) this route matched at least some of the path or b)\n    // we don't have to load this route's children asynchronously. In\n    // either case continue checking for matches in the subtree.\n    var onChildRoutes = function onChildRoutes(error, childRoutes) {\n      if (error) {\n        callback(error);\n      } else if (childRoutes) {\n        // Check the child routes to see if any of them match.\n        matchRoutes(childRoutes, location, function (error, match) {\n          if (error) {\n            callback(error);\n          } else if (match) {\n            // A child route matched! Augment the match and pass it up the stack.\n            match.routes.unshift(route);\n            callback(null, match);\n          } else {\n            callback();\n          }\n        }, remainingPathname, paramNames, paramValues);\n      } else {\n        callback();\n      }\n    };\n\n    var result = getChildRoutes(route, location, paramNames, paramValues, onChildRoutes);\n    if (result) {\n      onChildRoutes.apply(undefined, result);\n    }\n  } else {\n    callback();\n  }\n}\n\n/**\n * Asynchronously matches the given location to a set of routes and calls\n * callback(error, state) when finished. The state object will have the\n * following properties:\n *\n * - routes       An array of routes that matched, in hierarchical order\n * - params       An object of URL parameters\n *\n * Note: This operation may finish synchronously if no routes have an\n * asynchronous getChildRoutes method.\n */\nfunction matchRoutes(routes, location, callback, remainingPathname) {\n  var paramNames = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];\n  var paramValues = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : [];\n\n  if (remainingPathname === undefined) {\n    // TODO: This is a little bit ugly, but it works around a quirk in history\n    // that strips the leading slash from pathnames when using basenames with\n    // trailing slashes.\n    if (location.pathname.charAt(0) !== '/') {\n      location = _extends({}, location, {\n        pathname: '/' + location.pathname\n      });\n    }\n    remainingPathname = location.pathname;\n  }\n\n  (0, _AsyncUtils.loopAsync)(routes.length, function (index, next, done) {\n    matchRouteDeep(routes[index], location, remainingPathname, paramNames, paramValues, function (error, match) {\n      if (error || match) {\n        done(error, match);\n      } else {\n        next();\n      }\n    });\n  }, callback);\n}\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports.default = routerWarning;\nexports._resetWarned = _resetWarned;\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar warned = {};\n\nfunction routerWarning(falseToWarn, message) {\n  // Only issue deprecation warnings once.\n  if (message.indexOf('deprecated') !== -1) {\n    if (warned[message]) {\n      return;\n    }\n\n    warned[message] = true;\n  }\n\n  message = '[react-router] ' + message;\n\n  for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n    args[_key - 2] = arguments[_key];\n  }\n\n  _warning2.default.apply(undefined, [falseToWarn, message].concat(args));\n}\n\nfunction _resetWarned() {\n  warned = {};\n}","'use strict';\n\nexports.__esModule = true;\nexports.default = useRouterHistory;\n\nvar _useQueries = require('history/lib/useQueries');\n\nvar _useQueries2 = _interopRequireDefault(_useQueries);\n\nvar _useBasename = require('history/lib/useBasename');\n\nvar _useBasename2 = _interopRequireDefault(_useBasename);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction useRouterHistory(createHistory) {\n  return function (options) {\n    var history = (0, _useQueries2.default)((0, _useBasename2.default)(createHistory))(options);\n    history.__v2_compatible__ = true;\n    return history;\n  };\n}\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _useQueries = require('history/lib/useQueries');\n\nvar _useQueries2 = _interopRequireDefault(_useQueries);\n\nvar _createTransitionManager = require('./createTransitionManager');\n\nvar _createTransitionManager2 = _interopRequireDefault(_createTransitionManager);\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\n/**\n * Returns a new createHistory function that may be used to create\n * history objects that know about routing.\n *\n * Enhances history objects with the following methods:\n *\n * - listen((error, nextState) => {})\n * - listenBeforeLeavingRoute(route, (nextLocation) => {})\n * - match(location, (error, redirectLocation, nextState) => {})\n * - isActive(pathname, query, indexOnly=false)\n */\nfunction useRoutes(createHistory) {\n  \"production\" !== 'production' ? (0, _routerWarning2.default)(false, '`useRoutes` is deprecated. Please use `createTransitionManager` instead.') : void 0;\n\n  return function () {\n    var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    var routes = _ref.routes,\n        options = _objectWithoutProperties(_ref, ['routes']);\n\n    var history = (0, _useQueries2.default)(createHistory)(options);\n    var transitionManager = (0, _createTransitionManager2.default)(history, routes);\n    return _extends({}, history, transitionManager);\n  };\n}\n\nexports.default = useRoutes;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.default = withRouter;\n\nvar _createReactClass = require('create-react-class');\n\nvar _createReactClass2 = _interopRequireDefault(_createReactClass);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _hoistNonReactStatics = require('hoist-non-react-statics');\n\nvar _hoistNonReactStatics2 = _interopRequireDefault(_hoistNonReactStatics);\n\nvar _PropTypes = require('./PropTypes');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getDisplayName(WrappedComponent) {\n  return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n}\n\nfunction withRouter(WrappedComponent) {\n  var WithRouter = (0, _createReactClass2.default)({\n    displayName: 'WithRouter',\n\n    contextTypes: { router: _PropTypes.routerShape },\n    render: function render() {\n      return _react2.default.createElement(WrappedComponent, _extends({}, this.props, { router: this.context.router }));\n    }\n  });\n\n  WithRouter.displayName = 'withRouter(' + getDisplayName(WrappedComponent) + ')';\n  WithRouter.WrappedComponent = WrappedComponent;\n\n  return (0, _hoistNonReactStatics2.default)(WithRouter, WrappedComponent);\n}\nmodule.exports = exports['default'];","'use strict';\n\nmodule.exports = iterate;\n\nvar own = {}.hasOwnProperty;\n\nfunction iterate(values, callback, context) {\n  var index = -1;\n  var result;\n\n  if (!values) {\n    throw new Error('Iterate requires that |this| not be ' + values);\n  }\n\n  if (!own.call(values, 'length')) {\n    throw new Error('Iterate requires that |this| has a `length`');\n  }\n\n  if (typeof callback !== 'function') {\n    throw new Error('`callback` must be a function');\n  }\n\n  /* The length might change, so we do not cache it. */\n  while (++index < values.length) {\n    /* Skip missing values. */\n    if (!(index in values)) {\n      continue;\n    }\n\n    result = callback.call(context, values[index], index, values);\n\n    /* If `callback` returns a `number`, move `index` over to\n     * `number`. */\n    if (typeof result === 'number') {\n      /* Make sure that negative numbers do not break the loop. */\n      if (result < 0) {\n        index = 0;\n      }\n\n      index = result - 1;\n    }\n  }\n}\n","'use strict';\n\n// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license  MIT\n */\nfunction compare(a, b) {\n  if (a === b) {\n    return 0;\n  }\n\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) {\n    return -1;\n  }\n  if (y < x) {\n    return 1;\n  }\n  return 0;\n}\nfunction isBuffer(b) {\n  if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {\n    return global.Buffer.isBuffer(b);\n  }\n  return !!(b != null && b._isBuffer);\n}\n\n// based on node assert, original notice:\n\n// http://wiki.commonjs.org/wiki/Unit_Testing/1.0\n//\n// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!\n//\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar util = require('util/');\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar pSlice = Array.prototype.slice;\nvar functionsHaveNames = (function () {\n  return function foo() {}.name === 'foo';\n}());\nfunction pToString (obj) {\n  return Object.prototype.toString.call(obj);\n}\nfunction isView(arrbuf) {\n  if (isBuffer(arrbuf)) {\n    return false;\n  }\n  if (typeof global.ArrayBuffer !== 'function') {\n    return false;\n  }\n  if (typeof ArrayBuffer.isView === 'function') {\n    return ArrayBuffer.isView(arrbuf);\n  }\n  if (!arrbuf) {\n    return false;\n  }\n  if (arrbuf instanceof DataView) {\n    return true;\n  }\n  if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {\n    return true;\n  }\n  return false;\n}\n// 1. The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\n\n// 2. The AssertionError is defined in assert.\n// new assert.AssertionError({ message: message,\n//                             actual: actual,\n//                             expected: expected })\n\nvar regex = /\\s*function\\s+([^\\(\\s]*)\\s*/;\n// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js\nfunction getName(func) {\n  if (!util.isFunction(func)) {\n    return;\n  }\n  if (functionsHaveNames) {\n    return func.name;\n  }\n  var str = func.toString();\n  var match = str.match(regex);\n  return match && match[1];\n}\nassert.AssertionError = function AssertionError(options) {\n  this.name = 'AssertionError';\n  this.actual = options.actual;\n  this.expected = options.expected;\n  this.operator = options.operator;\n  if (options.message) {\n    this.message = options.message;\n    this.generatedMessage = false;\n  } else {\n    this.message = getMessage(this);\n    this.generatedMessage = true;\n  }\n  var stackStartFunction = options.stackStartFunction || fail;\n  if (Error.captureStackTrace) {\n    Error.captureStackTrace(this, stackStartFunction);\n  } else {\n    // non v8 browsers so we can have a stacktrace\n    var err = new Error();\n    if (err.stack) {\n      var out = err.stack;\n\n      // try to strip useless frames\n      var fn_name = getName(stackStartFunction);\n      var idx = out.indexOf('\\n' + fn_name);\n      if (idx >= 0) {\n        // once we have located the function frame\n        // we need to strip out everything before it (and its line)\n        var next_line = out.indexOf('\\n', idx + 1);\n        out = out.substring(next_line + 1);\n      }\n\n      this.stack = out;\n    }\n  }\n};\n\n// assert.AssertionError instanceof Error\nutil.inherits(assert.AssertionError, Error);\n\nfunction truncate(s, n) {\n  if (typeof s === 'string') {\n    return s.length < n ? s : s.slice(0, n);\n  } else {\n    return s;\n  }\n}\nfunction inspect(something) {\n  if (functionsHaveNames || !util.isFunction(something)) {\n    return util.inspect(something);\n  }\n  var rawname = getName(something);\n  var name = rawname ? ': ' + rawname : '';\n  return '[Function' +  name + ']';\n}\nfunction getMessage(self) {\n  return truncate(inspect(self.actual), 128) + ' ' +\n         self.operator + ' ' +\n         truncate(inspect(self.expected), 128);\n}\n\n// At present only the three keys mentioned above are used and\n// understood by the spec. Implementations or sub modules can pass\n// other keys to the AssertionError's constructor - they will be\n// ignored.\n\n// 3. All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided.  All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction fail(actual, expected, message, operator, stackStartFunction) {\n  throw new assert.AssertionError({\n    message: message,\n    actual: actual,\n    expected: expected,\n    operator: operator,\n    stackStartFunction: stackStartFunction\n  });\n}\n\n// EXTENSION! allows for well behaved errors defined elsewhere.\nassert.fail = fail;\n\n// 4. Pure assertion tests whether a value is truthy, as determined\n// by !!guard.\n// assert.ok(guard, message_opt);\n// This statement is equivalent to assert.equal(true, !!guard,\n// message_opt);. To test strictly for the value true, use\n// assert.strictEqual(true, guard, message_opt);.\n\nfunction ok(value, message) {\n  if (!value) fail(value, true, message, '==', assert.ok);\n}\nassert.ok = ok;\n\n// 5. The equality assertion tests shallow, coercive equality with\n// ==.\n// assert.equal(actual, expected, message_opt);\n\nassert.equal = function equal(actual, expected, message) {\n  if (actual != expected) fail(actual, expected, message, '==', assert.equal);\n};\n\n// 6. The non-equality assertion tests for whether two objects are not equal\n// with != assert.notEqual(actual, expected, message_opt);\n\nassert.notEqual = function notEqual(actual, expected, message) {\n  if (actual == expected) {\n    fail(actual, expected, message, '!=', assert.notEqual);\n  }\n};\n\n// 7. The equivalence assertion tests a deep equality relation.\n// assert.deepEqual(actual, expected, message_opt);\n\nassert.deepEqual = function deepEqual(actual, expected, message) {\n  if (!_deepEqual(actual, expected, false)) {\n    fail(actual, expected, message, 'deepEqual', assert.deepEqual);\n  }\n};\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n  if (!_deepEqual(actual, expected, true)) {\n    fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);\n  }\n};\n\nfunction _deepEqual(actual, expected, strict, memos) {\n  // 7.1. All identical values are equivalent, as determined by ===.\n  if (actual === expected) {\n    return true;\n  } else if (isBuffer(actual) && isBuffer(expected)) {\n    return compare(actual, expected) === 0;\n\n  // 7.2. If the expected value is a Date object, the actual value is\n  // equivalent if it is also a Date object that refers to the same time.\n  } else if (util.isDate(actual) && util.isDate(expected)) {\n    return actual.getTime() === expected.getTime();\n\n  // 7.3 If the expected value is a RegExp object, the actual value is\n  // equivalent if it is also a RegExp object with the same source and\n  // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).\n  } else if (util.isRegExp(actual) && util.isRegExp(expected)) {\n    return actual.source === expected.source &&\n           actual.global === expected.global &&\n           actual.multiline === expected.multiline &&\n           actual.lastIndex === expected.lastIndex &&\n           actual.ignoreCase === expected.ignoreCase;\n\n  // 7.4. Other pairs that do not both pass typeof value == 'object',\n  // equivalence is determined by ==.\n  } else if ((actual === null || typeof actual !== 'object') &&\n             (expected === null || typeof expected !== 'object')) {\n    return strict ? actual === expected : actual == expected;\n\n  // If both values are instances of typed arrays, wrap their underlying\n  // ArrayBuffers in a Buffer each to increase performance\n  // This optimization requires the arrays to have the same type as checked by\n  // Object.prototype.toString (aka pToString). Never perform binary\n  // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their\n  // bit patterns are not identical.\n  } else if (isView(actual) && isView(expected) &&\n             pToString(actual) === pToString(expected) &&\n             !(actual instanceof Float32Array ||\n               actual instanceof Float64Array)) {\n    return compare(new Uint8Array(actual.buffer),\n                   new Uint8Array(expected.buffer)) === 0;\n\n  // 7.5 For all other Object pairs, including Array objects, equivalence is\n  // determined by having the same number of owned properties (as verified\n  // with Object.prototype.hasOwnProperty.call), the same set of keys\n  // (although not necessarily the same order), equivalent values for every\n  // corresponding key, and an identical 'prototype' property. Note: this\n  // accounts for both named and indexed properties on Arrays.\n  } else if (isBuffer(actual) !== isBuffer(expected)) {\n    return false;\n  } else {\n    memos = memos || {actual: [], expected: []};\n\n    var actualIndex = memos.actual.indexOf(actual);\n    if (actualIndex !== -1) {\n      if (actualIndex === memos.expected.indexOf(expected)) {\n        return true;\n      }\n    }\n\n    memos.actual.push(actual);\n    memos.expected.push(expected);\n\n    return objEquiv(actual, expected, strict, memos);\n  }\n}\n\nfunction isArguments(object) {\n  return Object.prototype.toString.call(object) == '[object Arguments]';\n}\n\nfunction objEquiv(a, b, strict, actualVisitedObjects) {\n  if (a === null || a === undefined || b === null || b === undefined)\n    return false;\n  // if one is a primitive, the other must be same\n  if (util.isPrimitive(a) || util.isPrimitive(b))\n    return a === b;\n  if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))\n    return false;\n  var aIsArgs = isArguments(a);\n  var bIsArgs = isArguments(b);\n  if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))\n    return false;\n  if (aIsArgs) {\n    a = pSlice.call(a);\n    b = pSlice.call(b);\n    return _deepEqual(a, b, strict);\n  }\n  var ka = objectKeys(a);\n  var kb = objectKeys(b);\n  var key, i;\n  // having the same number of owned properties (keys incorporates\n  // hasOwnProperty)\n  if (ka.length !== kb.length)\n    return false;\n  //the same set of keys (although not necessarily the same order),\n  ka.sort();\n  kb.sort();\n  //~~~cheap key test\n  for (i = ka.length - 1; i >= 0; i--) {\n    if (ka[i] !== kb[i])\n      return false;\n  }\n  //equivalent values for every corresponding key, and\n  //~~~possibly expensive deep test\n  for (i = ka.length - 1; i >= 0; i--) {\n    key = ka[i];\n    if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))\n      return false;\n  }\n  return true;\n}\n\n// 8. The non-equivalence assertion tests for any deep inequality.\n// assert.notDeepEqual(actual, expected, message_opt);\n\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n  if (_deepEqual(actual, expected, false)) {\n    fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);\n  }\n};\n\nassert.notDeepStrictEqual = notDeepStrictEqual;\nfunction notDeepStrictEqual(actual, expected, message) {\n  if (_deepEqual(actual, expected, true)) {\n    fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);\n  }\n}\n\n\n// 9. The strict equality assertion tests strict equality, as determined by ===.\n// assert.strictEqual(actual, expected, message_opt);\n\nassert.strictEqual = function strictEqual(actual, expected, message) {\n  if (actual !== expected) {\n    fail(actual, expected, message, '===', assert.strictEqual);\n  }\n};\n\n// 10. The strict non-equality assertion tests for strict inequality, as\n// determined by !==.  assert.notStrictEqual(actual, expected, message_opt);\n\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n  if (actual === expected) {\n    fail(actual, expected, message, '!==', assert.notStrictEqual);\n  }\n};\n\nfunction expectedException(actual, expected) {\n  if (!actual || !expected) {\n    return false;\n  }\n\n  if (Object.prototype.toString.call(expected) == '[object RegExp]') {\n    return expected.test(actual);\n  }\n\n  try {\n    if (actual instanceof expected) {\n      return true;\n    }\n  } catch (e) {\n    // Ignore.  The instanceof check doesn't work for arrow functions.\n  }\n\n  if (Error.isPrototypeOf(expected)) {\n    return false;\n  }\n\n  return expected.call({}, actual) === true;\n}\n\nfunction _tryBlock(block) {\n  var error;\n  try {\n    block();\n  } catch (e) {\n    error = e;\n  }\n  return error;\n}\n\nfunction _throws(shouldThrow, block, expected, message) {\n  var actual;\n\n  if (typeof block !== 'function') {\n    throw new TypeError('\"block\" argument must be a function');\n  }\n\n  if (typeof expected === 'string') {\n    message = expected;\n    expected = null;\n  }\n\n  actual = _tryBlock(block);\n\n  message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +\n            (message ? ' ' + message : '.');\n\n  if (shouldThrow && !actual) {\n    fail(actual, expected, 'Missing expected exception' + message);\n  }\n\n  var userProvidedMessage = typeof message === 'string';\n  var isUnwantedException = !shouldThrow && util.isError(actual);\n  var isUnexpectedException = !shouldThrow && actual && !expected;\n\n  if ((isUnwantedException &&\n      userProvidedMessage &&\n      expectedException(actual, expected)) ||\n      isUnexpectedException) {\n    fail(actual, expected, 'Got unwanted exception' + message);\n  }\n\n  if ((shouldThrow && actual && expected &&\n      !expectedException(actual, expected)) || (!shouldThrow && actual)) {\n    throw actual;\n  }\n}\n\n// 11. Expected to throw an error:\n// assert.throws(block, Error_opt, message_opt);\n\nassert.throws = function(block, /*optional*/error, /*optional*/message) {\n  _throws(true, block, error, message);\n};\n\n// EXTENSION! This is annoying to write outside this module.\nassert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {\n  _throws(false, block, error, message);\n};\n\nassert.ifError = function(err) { if (err) throw err; };\n\nvar objectKeys = Object.keys || function (obj) {\n  var keys = [];\n  for (var key in obj) {\n    if (hasOwn.call(obj, key)) keys.push(key);\n  }\n  return keys;\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/array/from\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/get-iterator\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/is-iterable\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/json/stringify\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/create\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/entries\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/get-own-property-descriptor\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/get-prototype-of\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/keys\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/set-prototype-of\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/values\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/promise\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };","\"use strict\";\n\nexports.__esModule = true;\n\nvar _promise = require(\"../core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (fn) {\n  return function () {\n    var gen = fn.apply(this, arguments);\n    return new _promise2.default(function (resolve, reject) {\n      function step(key, arg) {\n        try {\n          var info = gen[key](arg);\n          var value = info.value;\n        } catch (error) {\n          reject(error);\n          return;\n        }\n\n        if (info.done) {\n          resolve(value);\n        } else {\n          return _promise2.default.resolve(value).then(function (value) {\n            step(\"next\", value);\n          }, function (err) {\n            step(\"throw\", err);\n          });\n        }\n      }\n\n      return step(\"next\");\n    });\n  };\n};","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = 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      (0, _defineProperty2.default)(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}();","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (obj, key, value) {\n  if (key in obj) {\n    (0, _defineProperty2.default)(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};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _assign = require(\"../core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _assign2.default || 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};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = require(\"../core-js/object/set-prototype-of\");\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = require(\"../core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (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 === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(superClass)));\n  }\n\n  subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (obj, keys) {\n  var target = {};\n\n  for (var i in obj) {\n    if (keys.indexOf(i) >= 0) continue;\n    if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n    target[i] = obj[i];\n  }\n\n  return target;\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (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 === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(call)) === \"object\" || typeof call === \"function\") ? call : self;\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _isIterable2 = require(\"../core-js/is-iterable\");\n\nvar _isIterable3 = _interopRequireDefault(_isIterable2);\n\nvar _getIterator2 = require(\"../core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = 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 = (0, _getIterator3.default)(arr), _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 ((0, _isIterable3.default)(Object(arr))) {\n      return sliceIterator(arr, i);\n    } else {\n      throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n    }\n  };\n}();","\"use strict\";\n\nexports.__esModule = true;\n\nvar _from = require(\"../core-js/array/from\");\n\nvar _from2 = _interopRequireDefault(_from);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (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 (0, _from2.default)(arr);\n  }\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n  return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n  return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};","module.exports = require(\"regenerator-runtime\");\n","'use strict';\n\nmodule.exports = bail;\n\nfunction bail(err) {\n  if (err) {\n    throw err;\n  }\n}\n","module.exports = {\n\ttrueFunc: function trueFunc(){\n\t\treturn true;\n\t},\n\tfalseFunc: function falseFunc(){\n\t\treturn false;\n\t}\n};","/*!\n * Cross-Browser Split 1.1.1\n * Copyright 2007-2012 Steven Levithan <stevenlevithan.com>\n * Available under the MIT License\n * ECMAScript compliant, uniform cross-browser split method\n */\n\n/**\n * Splits a string into an array of strings using a regex or string separator. Matches of the\n * separator are not included in the result array. However, if `separator` is a regex that contains\n * capturing groups, backreferences are spliced into the result each time `separator` is matched.\n * Fixes browser bugs compared to the native `String.prototype.split` and can be used reliably\n * cross-browser.\n * @param {String} str String to split.\n * @param {RegExp|String} separator Regex or string to use for separating the string.\n * @param {Number} [limit] Maximum number of items to include in the result array.\n * @returns {Array} Array of substrings.\n * @example\n *\n * // Basic use\n * split('a b c d', ' ');\n * // -> ['a', 'b', 'c', 'd']\n *\n * // With limit\n * split('a b c d', ' ', 2);\n * // -> ['a', 'b']\n *\n * // Backreferences in result array\n * split('..word1 word2..', /([a-z]+)(\\d+)/i);\n * // -> ['..', 'word', '1', ' ', 'word', '2', '..']\n */\nmodule.exports = (function split(undef) {\n\n  var nativeSplit = String.prototype.split,\n    compliantExecNpcg = /()??/.exec(\"\")[1] === undef,\n    // NPCG: nonparticipating capturing group\n    self;\n\n  self = function(str, separator, limit) {\n    // If `separator` is not a regex, use `nativeSplit`\n    if (Object.prototype.toString.call(separator) !== \"[object RegExp]\") {\n      return nativeSplit.call(str, separator, limit);\n    }\n    var output = [],\n      flags = (separator.ignoreCase ? \"i\" : \"\") + (separator.multiline ? \"m\" : \"\") + (separator.extended ? \"x\" : \"\") + // Proposed for ES6\n      (separator.sticky ? \"y\" : \"\"),\n      // Firefox 3+\n      lastLastIndex = 0,\n      // Make `global` and avoid `lastIndex` issues by working with a copy\n      separator = new RegExp(separator.source, flags + \"g\"),\n      separator2, match, lastIndex, lastLength;\n    str += \"\"; // Type-convert\n    if (!compliantExecNpcg) {\n      // Doesn't need flags gy, but they don't hurt\n      separator2 = new RegExp(\"^\" + separator.source + \"$(?!\\\\s)\", flags);\n    }\n    /* Values for `limit`, per the spec:\n     * If undefined: 4294967295 // Math.pow(2, 32) - 1\n     * If 0, Infinity, or NaN: 0\n     * If positive number: limit = Math.floor(limit); if (limit > 4294967295) limit -= 4294967296;\n     * If negative number: 4294967296 - Math.floor(Math.abs(limit))\n     * If other: Type-convert, then use the above rules\n     */\n    limit = limit === undef ? -1 >>> 0 : // Math.pow(2, 32) - 1\n    limit >>> 0; // ToUint32(limit)\n    while (match = separator.exec(str)) {\n      // `separator.lastIndex` is not reliable cross-browser\n      lastIndex = match.index + match[0].length;\n      if (lastIndex > lastLastIndex) {\n        output.push(str.slice(lastLastIndex, match.index));\n        // Fix browsers whose `exec` methods don't consistently return `undefined` for\n        // nonparticipating capturing groups\n        if (!compliantExecNpcg && match.length > 1) {\n          match[0].replace(separator2, function() {\n            for (var i = 1; i < arguments.length - 2; i++) {\n              if (arguments[i] === undef) {\n                match[i] = undef;\n              }\n            }\n          });\n        }\n        if (match.length > 1 && match.index < str.length) {\n          Array.prototype.push.apply(output, match.slice(1));\n        }\n        lastLength = match[0].length;\n        lastLastIndex = lastIndex;\n        if (output.length >= limit) {\n          break;\n        }\n      }\n      if (separator.lastIndex === match.index) {\n        separator.lastIndex++; // Avoid an infinite loop\n      }\n    }\n    if (lastLastIndex === str.length) {\n      if (lastLength || !separator.test(\"\")) {\n        output.push(\"\");\n      }\n    } else {\n      output.push(str.slice(lastLastIndex));\n    }\n    return output.length > limit ? output.slice(0, limit) : output;\n  };\n\n  return self;\n})();\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// 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}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\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    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\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\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\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\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\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    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\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) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","'use strict';\n\nfunction preserveCamelCase(str) {\n\tvar isLastCharLower = false;\n\n\tfor (var i = 0; i < str.length; i++) {\n\t\tvar c = str.charAt(i);\n\n\t\tif (isLastCharLower && (/[a-zA-Z]/).test(c) && c.toUpperCase() === c) {\n\t\t\tstr = str.substr(0, i) + '-' + str.substr(i);\n\t\t\tisLastCharLower = false;\n\t\t\ti++;\n\t\t} else {\n\t\t\tisLastCharLower = (c.toLowerCase() === c);\n\t\t}\n\t}\n\n\treturn str;\n}\n\nmodule.exports = function () {\n\tvar str = [].map.call(arguments, function (str) {\n\t\treturn str.trim();\n\t}).filter(function (str) {\n\t\treturn str.length;\n\t}).join('-');\n\n\tif (!str.length) {\n\t\treturn '';\n\t}\n\n\tif (str.length === 1) {\n\t\treturn str.toLowerCase();\n\t}\n\n\tif (!(/[_.\\- ]+/).test(str)) {\n\t\tif (str === str.toUpperCase()) {\n\t\t\treturn str.toLowerCase();\n\t\t}\n\n\t\tif (str[0] !== str[0].toLowerCase()) {\n\t\t\treturn str[0].toLowerCase() + str.slice(1);\n\t\t}\n\n\t\treturn str;\n\t}\n\n\tstr = preserveCamelCase(str);\n\n\treturn str\n\t.replace(/^[_.\\- ]+/, '')\n\t.toLowerCase()\n\t.replace(/[_.\\- ]+(\\w|$)/g, function (m, p1) {\n\t\treturn p1.toUpperCase();\n\t});\n};\n","'use strict';\n\nmodule.exports = ccount;\n\nfunction ccount(value, character) {\n  var count = 0;\n  var index;\n\n  value = String(value);\n\n  if (typeof character !== 'string' || character.length !== 1) {\n    throw new Error('Expected character');\n  }\n\n  index = value.indexOf(character);\n\n  while (index !== -1) {\n    count++;\n    index = value.indexOf(character, index + 1);\n  }\n\n  return count;\n}\n","\r\nmodule.exports = function chain(){\r\n  var len = arguments.length\r\n  var args = [];\r\n\r\n  for (var i = 0; i < len; i++)\r\n    args[i] = arguments[i]\r\n\r\n  args = args.filter(function(fn){ return fn != null })\r\n\r\n  if (args.length === 0) return undefined\r\n  if (args.length === 1) return args[0]\r\n\r\n  return args.reduce(function(current, next){\r\n    return function chainedFunction() {\r\n      current.apply(this, arguments);\r\n      next.apply(this, arguments);\r\n    };\r\n  })\r\n}\r\n","'use strict';\n\nmodule.exports = collapse;\n\n/* collapse(' \\t\\nbar \\nbaz\\t'); // ' bar baz ' */\nfunction collapse(value) {\n  return String(value).replace(/\\s+/g, ' ');\n}\n","'use strict';\n\nexports.parse = parse;\nexports.stringify = stringify;\n\nvar trim = require('trim');\n\nvar C_COMMA = ',';\nvar C_SPACE = ' ';\nvar EMPTY = '';\n\n/* Parse comma-separated tokens to an array. */\nfunction parse(value) {\n  var values = [];\n  var input = String(value || EMPTY);\n  var index = input.indexOf(C_COMMA);\n  var lastIndex = 0;\n  var end = false;\n  var val;\n\n  while (!end) {\n    if (index === -1) {\n      index = input.length;\n      end = true;\n    }\n\n    val = trim(input.slice(lastIndex, index));\n\n    if (val || !end) {\n      values.push(val);\n    }\n\n    lastIndex = index + 1;\n    index = input.indexOf(C_COMMA, lastIndex);\n  }\n\n  return values;\n}\n\n/* Compile an array to comma-separated tokens.\n * `options.padLeft` (default: `true`) pads a space left of each\n * token, and `options.padRight` (default: `false`) pads a space\n * to the right of each token. */\nfunction stringify(values, options) {\n  var settings = options || {};\n  var left = settings.padLeft;\n\n  /* Ensure the last empty entry is seen. */\n  if (values[values.length - 1] === EMPTY) {\n    values = values.concat(EMPTY);\n  }\n\n  return trim(values.join(\n    (settings.padRight ? C_SPACE : EMPTY) +\n    C_COMMA +\n    (left || left === undefined || left === null ? C_SPACE : EMPTY)\n  ));\n}\n","require('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/_core').Array.from;\n","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.get-iterator');\n","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.is-iterable');\n","var core = require('../../modules/_core');\nvar $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });\nmodule.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n  return $JSON.stringify.apply($JSON, arguments);\n};\n","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n","require('../../modules/es6.object.create');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function create(P, D) {\n  return $Object.create(P, D);\n};\n","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n  return $Object.defineProperty(it, key, desc);\n};\n","require('../../modules/es7.object.entries');\nmodule.exports = require('../../modules/_core').Object.entries;\n","require('../../modules/es6.object.get-own-property-descriptor');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function getOwnPropertyDescriptor(it, key) {\n  return $Object.getOwnPropertyDescriptor(it, key);\n};\n","require('../../modules/es6.object.get-prototype-of');\nmodule.exports = require('../../modules/_core').Object.getPrototypeOf;\n","require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;\n","require('../../modules/es6.object.set-prototype-of');\nmodule.exports = require('../../modules/_core').Object.setPrototypeOf;\n","require('../../modules/es7.object.values');\nmodule.exports = require('../../modules/_core').Object.values;\n","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.promise');\nrequire('../modules/es7.promise.finally');\nrequire('../modules/es7.promise.try');\nmodule.exports = require('../modules/_core').Promise;\n","require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n","require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n","module.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n","module.exports = function () { /* empty */ };\n","module.exports = function (it, Constructor, name, forbiddenField) {\n  if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n    throw TypeError(name + ': incorrect invocation!');\n  } return it;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n","// false -> Array#indexOf\n// true  -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIObject($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\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n      if (O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(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 (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n  var O, T, B;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n    // builtinTag case\n    : ARG ? cof(O)\n    // ES3 arguments fallback\n    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n","var core = module.exports = { version: '2.5.1' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n  if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n  else object[index] = value;\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\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","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on  \" + it);\n  return it;\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n  var result = getKeys(it);\n  var getSymbols = gOPS.f;\n  if (getSymbols) {\n    var symbols = getSymbols(it);\n    var isEnum = pIE.f;\n    var i = 0;\n    var key;\n    while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n  } return result;\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var IS_WRAP = type & $export.W;\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE];\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n  var key, own, out;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    if (own && key in exports) continue;\n    // export native or passed\n    out = own ? target[key] : source[key];\n    // prevent global pollution for namespaces\n    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n    // bind timers to global for call from export context\n    : IS_BIND && own ? ctx(out, global)\n    // wrap global constructors for prevent change them in library\n    : IS_WRAP && target[key] == out ? (function (C) {\n      var F = function (a, b, c) {\n        if (this instanceof C) {\n          switch (arguments.length) {\n            case 0: return new C();\n            case 1: return new C(a);\n            case 2: return new C(a, b);\n          } return new C(a, b, c);\n        } return C.apply(this, arguments);\n      };\n      F[PROTOTYPE] = C[PROTOTYPE];\n      return F;\n    // make static versions for prototype methods\n    })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n    if (IS_PROTO) {\n      (exports.virtual || (exports.virtual = {}))[key] = out;\n      // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n      if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n    }\n  }\n};\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n  var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n  var f = ctx(fn, that, entries ? 2 : 1);\n  var index = 0;\n  var length, step, iterator, result;\n  if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n  // fast case for arrays with default iterator\n  if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n    result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n    if (result === BREAK || result === RETURN) return result;\n  } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n    result = call(iterator, f, step.value, entries);\n    if (result === BREAK || result === RETURN) return result;\n  }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\n  // eslint-disable-next-line no-new-func\n  : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n  return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n  var un = that === undefined;\n  switch (args.length) {\n    case 0: return un ? fn()\n                      : fn.call(that);\n    case 1: return un ? fn(args[0])\n                      : fn.call(that, args[0]);\n    case 2: return un ? fn(args[0], args[1])\n                      : fn.call(that, args[0], args[1]);\n    case 3: return un ? fn(args[0], args[1], args[2])\n                      : fn.call(that, args[0], args[1], args[2]);\n    case 4: return un ? fn(args[0], args[1], args[2], args[3])\n                      : fn.call(that, args[0], args[1], args[2], args[3]);\n  } return fn.apply(that, args);\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n  return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n  return cof(arg) == 'Array';\n};\n","module.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\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 (e) {\n    var ret = iterator['return'];\n    if (ret !== undefined) anObject(ret.call(iterator));\n    throw e;\n  }\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n  setToStringTag(Constructor, NAME + ' Iterator');\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n  $iterCreate(Constructor, NAME, next);\n  var getMethod = function (kind) {\n    if (!BUGGY && kind in proto) return proto[kind];\n    switch (kind) {\n      case KEYS: return function keys() { return new Constructor(this, kind); };\n      case VALUES: return function values() { return new Constructor(this, kind); };\n    } return function entries() { return new Constructor(this, kind); };\n  };\n  var TAG = NAME + ' Iterator';\n  var DEF_VALUES = DEFAULT == VALUES;\n  var VALUES_BUG = false;\n  var proto = Base.prototype;\n  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n  var $default = $native || getMethod(DEFAULT);\n  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n  var methods, key, IteratorPrototype;\n  // Fix native\n  if ($anyNative) {\n    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n      // Set @@toStringTag to native iterators\n      setToStringTag(IteratorPrototype, TAG, true);\n      // fix for some old engines\n      if (!LIBRARY && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis);\n    }\n  }\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if (DEF_VALUES && $native && $native.name !== VALUES) {\n    VALUES_BUG = true;\n    $default = function values() { return $native.call(this); };\n  }\n  // Define iterator\n  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n    hide(proto, ITERATOR, $default);\n  }\n  // Plug for library\n  Iterators[NAME] = $default;\n  Iterators[TAG] = returnThis;\n  if (DEFAULT) {\n    methods = {\n      values: DEF_VALUES ? $default : getMethod(VALUES),\n      keys: IS_SET ? $default : getMethod(KEYS),\n      entries: $entries\n    };\n    if (FORCED) for (key in methods) {\n      if (!(key in proto)) redefine(proto, key, methods[key]);\n    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n  }\n  return methods;\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var riter = [7][ITERATOR]();\n  riter['return'] = function () { SAFE_CLOSING = true; };\n  // eslint-disable-next-line no-throw-literal\n  Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n  if (!skipClosing && !SAFE_CLOSING) return false;\n  var safe = false;\n  try {\n    var arr = [7];\n    var iter = arr[ITERATOR]();\n    iter.next = function () { return { done: safe = true }; };\n    arr[ITERATOR] = function () { return iter; };\n    exec(arr);\n  } catch (e) { /* empty */ }\n  return safe;\n};\n","module.exports = function (done, value) {\n  return { value: value, done: !!done };\n};\n","module.exports = {};\n","module.exports = true;\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n  return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n  return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n  setDesc(it, META, { value: {\n    i: 'O' + ++id, // object ID\n    w: {}          // weak collections IDs\n  } });\n};\nvar fastKey = function (it, create) {\n  // return primitive with prefix\n  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n  if (!has(it, META)) {\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    setMeta(it);\n  // return object ID\n  } return it[META].i;\n};\nvar getWeak = function (it, create) {\n  if (!has(it, META)) {\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    setMeta(it);\n  // return hash weak collections IDs\n  } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n  if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n  return it;\n};\nvar meta = module.exports = {\n  KEY: META,\n  NEED: false,\n  fastKey: fastKey,\n  getWeak: getWeak,\n  onFreeze: onFreeze\n};\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n  var head, last, notify;\n\n  var flush = function () {\n    var parent, fn;\n    if (isNode && (parent = process.domain)) parent.exit();\n    while (head) {\n      fn = head.fn;\n      head = head.next;\n      try {\n        fn();\n      } catch (e) {\n        if (head) notify();\n        else last = undefined;\n        throw e;\n      }\n    } last = undefined;\n    if (parent) parent.enter();\n  };\n\n  // Node.js\n  if (isNode) {\n    notify = function () {\n      process.nextTick(flush);\n    };\n  // browsers with MutationObserver\n  } else if (Observer) {\n    var toggle = true;\n    var node = document.createTextNode('');\n    new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\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    var promise = Promise.resolve();\n    notify = function () {\n      promise.then(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  return 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};\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(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\nmodule.exports.f = function (C) {\n  return new PromiseCapability(C);\n};\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n  var A = {};\n  var B = {};\n  // eslint-disable-next-line no-undef\n  var S = Symbol();\n  var K = 'abcdefghijklmnopqrst';\n  A[S] = 7;\n  K.split('').forEach(function (k) { B[k] = k; });\n  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n  var T = toObject(target);\n  var aLen = arguments.length;\n  var index = 1;\n  var getSymbols = gOPS.f;\n  var isEnum = pIE.f;\n  while (aLen > index) {\n    var S = IObject(arguments[index++]);\n    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n  } return T;\n} : $assign;\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = require('./_dom-create')('iframe');\n  var i = enumBugKeys.length;\n  var lt = '<';\n  var gt = '>';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  require('./_html').appendChild(iframe);\n  iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n  // createDict = iframe.contentWindow.Object;\n  // html.removeChild(iframe);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n  iframeDocument.close();\n  createDict = iframeDocument.F;\n  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n  return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    Empty[PROTOTYPE] = anObject(O);\n    result = new Empty();\n    Empty[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = createDict();\n  return Properties === undefined ? result : dPs(result, Properties);\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) { /* 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 dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = getKeys(Properties);\n  var length = keys.length;\n  var i = 0;\n  var P;\n  while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n  return O;\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n  O = toIObject(O);\n  P = toPrimitive(P, true);\n  if (IE8_DOM_DEFINE) try {\n    return gOPD(O, P);\n  } catch (e) { /* empty */ }\n  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\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 gOPN(it);\n  } catch (e) {\n    return windowNames.slice();\n  }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return $keys(O, hiddenKeys);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = 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 ? ObjectProto : null;\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n  var O = toIObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) if (key != IE_PROTO) 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    ~arrayIndexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n  return $keys(O, enumBugKeys);\n};\n","exports.f = {}.propertyIsEnumerable;\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n  var fn = (core.Object || {})[KEY] || Object[KEY];\n  var exp = {};\n  exp[KEY] = exec(fn);\n  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","var getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n  return function (it) {\n    var O = toIObject(it);\n    var keys = getKeys(O);\n    var length = keys.length;\n    var i = 0;\n    var result = [];\n    var key;\n    while (length > i) if (isEnum.call(O, key = keys[i++])) {\n      result.push(isEntries ? [key, O[key]] : O[key]);\n    } return result;\n  };\n};\n","module.exports = function (exec) {\n  try {\n    return { e: false, v: exec() };\n  } catch (e) {\n    return { e: true, v: e };\n  }\n};\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_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","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 hide = require('./_hide');\nmodule.exports = function (target, src, safe) {\n  for (var key in src) {\n    if (safe && target[key]) target[key] = src[key];\n    else hide(target, key, src[key]);\n  } return target;\n};\n","module.exports = require('./_hide');\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n  anObject(O);\n  if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n    function (test, buggy, set) {\n      try {\n        set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n        set(test, []);\n        buggy = !(test instanceof Array);\n      } catch (e) { buggy = true; }\n      return function setPrototypeOf(O, proto) {\n        check(O, proto);\n        if (buggy) O.__proto__ = proto;\n        else set(O, proto);\n        return O;\n      };\n    }({}, false) : undefined),\n  check: check\n};\n","'use strict';\nvar global = require('./_global');\nvar core = require('./_core');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n  var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];\n  if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n    configurable: true,\n    get: function () { return this; }\n  });\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n  return shared[key] || (shared[key] = uid(key));\n};\n","var global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\nmodule.exports = function (key) {\n  return store[key] || (store[key] = {});\n};\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n  var C = anObject(O).constructor;\n  var S;\n  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true  -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n  return function (that, pos) {\n    var s = String(defined(that));\n    var i = toInteger(pos);\n    var l = s.length;\n    var a, b;\n    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n    a = s.charCodeAt(i);\n    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n      ? TO_STRING ? s.charAt(i) : a\n      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n  };\n};\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n  var id = +this;\n  // eslint-disable-next-line no-prototype-builtins\n  if (queue.hasOwnProperty(id)) {\n    var fn = queue[id];\n    delete queue[id];\n    fn();\n  }\n};\nvar listener = function (event) {\n  run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n  setTask = 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\n      invoke(typeof fn == 'function' ? fn : Function(fn), args);\n    };\n    defer(counter);\n    return counter;\n  };\n  clearTask = function clearImmediate(id) {\n    delete queue[id];\n  };\n  // Node.js 0.8-\n  if (require('./_cof')(process) == 'process') {\n    defer = function (id) {\n      process.nextTick(ctx(run, id, 1));\n    };\n  // Sphere (JS game engine) Dispatch API\n  } else if (Dispatch && Dispatch.now) {\n    defer = function (id) {\n      Dispatch.now(ctx(run, id, 1));\n    };\n  // Browsers with MessageChannel, includes WebWorkers\n  } else if (MessageChannel) {\n    channel = new MessageChannel();\n    port = channel.port2;\n    channel.port1.onmessage = listener;\n    defer = ctx(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 (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n    defer = function (id) {\n      global.postMessage(id + '', '*');\n    };\n    global.addEventListener('message', listener, false);\n  // IE8-\n  } else if (ONREADYSTATECHANGE in cel('script')) {\n    defer = function (id) {\n      html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n        html.removeChild(this);\n        run.call(id);\n      };\n    };\n  // Rest old browsers\n  } else {\n    defer = function (id) {\n      setTimeout(ctx(run, id, 1), 0);\n    };\n  }\n}\nmodule.exports = {\n  set: setTask,\n  clear: clearTask\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n  index = toInteger(index);\n  return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n  return IObject(defined(it));\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n  return Object(defined(it));\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\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 (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","exports.f = require('./_wks');\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n  return store[name] || (store[name] =\n    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n  if (it != undefined) return it[ITERATOR]\n    || it['@@iterator']\n    || Iterators[classof(it)];\n};\n","var anObject = require('./_an-object');\nvar get = require('./core.get-iterator-method');\nmodule.exports = require('./_core').getIterator = function (it) {\n  var iterFn = get(it);\n  if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');\n  return anObject(iterFn.call(it));\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').isIterable = function (it) {\n  var O = Object(it);\n  return O[ITERATOR] !== undefined\n    || '@@iterator' in O\n    // eslint-disable-next-line no-prototype-builtins\n    || Iterators.hasOwnProperty(classof(O));\n};\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n  // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n  from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n    var O = toObject(arrayLike);\n    var C = typeof this == 'function' ? this : Array;\n    var aLen = arguments.length;\n    var mapfn = aLen > 1 ? arguments[1] : undefined;\n    var mapping = mapfn !== undefined;\n    var index = 0;\n    var iterFn = getIterFn(O);\n    var length, result, step, iterator;\n    if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n    // if object isn't iterable or it's array with default iterator - use simple case\n    if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n      for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n        createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n      }\n    } else {\n      length = toLength(O.length);\n      for (result = new C(length); length > index; index++) {\n        createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n      }\n    }\n    result.length = index;\n    return result;\n  }\n});\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n  this._t = toIObject(iterated); // target\n  this._i = 0;                   // next index\n  this._k = kind;                // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var kind = this._k;\n  var index = this._i++;\n  if (!O || index >= O.length) {\n    this._t = undefined;\n    return step(1);\n  }\n  if (kind == 'keys') return step(0, index);\n  if (kind == 'values') return step(0, O[index]);\n  return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject');\nvar $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function () {\n  return function getOwnPropertyDescriptor(it, key) {\n    return $getOwnPropertyDescriptor(toIObject(it), key);\n  };\n});\n","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n  return function getPrototypeOf(it) {\n    return $getPrototypeOf(toObject(it));\n  };\n});\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n  return function keys(it) {\n    return $keys(toObject(it));\n  };\n});\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n  try {\n    // correct subclassing with @@species support\n    var promise = $Promise.resolve(1);\n    var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n      exec(empty, empty);\n    };\n    // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n    return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise;\n  } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n  var then;\n  return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n  if (promise._n) return;\n  promise._n = true;\n  var chain = promise._c;\n  microtask(function () {\n    var value = promise._v;\n    var ok = promise._s == 1;\n    var i = 0;\n    var run = function (reaction) {\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;\n      try {\n        if (handler) {\n          if (!ok) {\n            if (promise._h == 2) onHandleUnhandled(promise);\n            promise._h = 1;\n          }\n          if (handler === true) result = value;\n          else {\n            if (domain) domain.enter();\n            result = handler(value);\n            if (domain) domain.exit();\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 (e) {\n        reject(e);\n      }\n    };\n    while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n    promise._c = [];\n    promise._n = false;\n    if (isReject && !promise._h) onUnhandled(promise);\n  });\n};\nvar onUnhandled = function (promise) {\n  task.call(global, function () {\n    var value = promise._v;\n    var unhandled = isUnhandled(promise);\n    var result, handler, console;\n    if (unhandled) {\n      result = perform(function () {\n        if (isNode) {\n          process.emit('unhandledRejection', value, promise);\n        } else if (handler = global.onunhandledrejection) {\n          handler({ promise: promise, reason: value });\n        } else if ((console = global.console) && console.error) {\n          console.error('Unhandled promise rejection', value);\n        }\n      });\n      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n      promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n    } promise._a = undefined;\n    if (unhandled && result.e) throw result.v;\n  });\n};\nvar isUnhandled = function (promise) {\n  if (promise._h == 1) return false;\n  var chain = promise._a || promise._c;\n  var i = 0;\n  var reaction;\n  while (chain.length > i) {\n    reaction = chain[i++];\n    if (reaction.fail || !isUnhandled(reaction.promise)) return false;\n  } return true;\n};\nvar onHandleUnhandled = function (promise) {\n  task.call(global, function () {\n    var handler;\n    if (isNode) {\n      process.emit('rejectionHandled', promise);\n    } else if (handler = global.onrejectionhandled) {\n      handler({ promise: promise, reason: promise._v });\n    }\n  });\n};\nvar $reject = function (value) {\n  var promise = this;\n  if (promise._d) return;\n  promise._d = true;\n  promise = promise._w || promise; // unwrap\n  promise._v = value;\n  promise._s = 2;\n  if (!promise._a) promise._a = promise._c.slice();\n  notify(promise, true);\n};\nvar $resolve = function (value) {\n  var promise = this;\n  var then;\n  if (promise._d) return;\n  promise._d = true;\n  promise = promise._w || promise; // unwrap\n  try {\n    if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n    if (then = isThenable(value)) {\n      microtask(function () {\n        var wrapper = { _w: promise, _d: false }; // wrap\n        try {\n          then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n        } catch (e) {\n          $reject.call(wrapper, e);\n        }\n      });\n    } else {\n      promise._v = value;\n      promise._s = 1;\n      notify(promise, false);\n    }\n  } catch (e) {\n    $reject.call({ _w: promise, _d: false }, e); // wrap\n  }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n  // 25.4.3.1 Promise(executor)\n  $Promise = function Promise(executor) {\n    anInstance(this, $Promise, PROMISE, '_h');\n    aFunction(executor);\n    Internal.call(this);\n    try {\n      executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n    } catch (err) {\n      $reject.call(this, err);\n    }\n  };\n  // eslint-disable-next-line no-unused-vars\n  Internal = function Promise(executor) {\n    this._c = [];             // <- awaiting reactions\n    this._a = undefined;      // <- checked in isUnhandled reactions\n    this._s = 0;              // <- state\n    this._d = false;          // <- done\n    this._v = undefined;      // <- value\n    this._h = 0;              // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n    this._n = false;          // <- notify\n  };\n  Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n    // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n    then: function then(onFulfilled, onRejected) {\n      var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n      reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n      reaction.fail = typeof onRejected == 'function' && onRejected;\n      reaction.domain = isNode ? process.domain : undefined;\n      this._c.push(reaction);\n      if (this._a) this._a.push(reaction);\n      if (this._s) notify(this, false);\n      return reaction.promise;\n    },\n    // 25.4.5.1 Promise.prototype.catch(onRejected)\n    'catch': function (onRejected) {\n      return this.then(undefined, onRejected);\n    }\n  });\n  OwnPromiseCapability = function () {\n    var promise = new Internal();\n    this.promise = promise;\n    this.resolve = ctx($resolve, promise, 1);\n    this.reject = ctx($reject, promise, 1);\n  };\n  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n    return C === $Promise || C === Wrapper\n      ? new OwnPromiseCapability(C)\n      : newGenericPromiseCapability(C);\n  };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n  // 25.4.4.5 Promise.reject(r)\n  reject: function reject(r) {\n    var capability = newPromiseCapability(this);\n    var $$reject = capability.reject;\n    $$reject(r);\n    return capability.promise;\n  }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n  // 25.4.4.6 Promise.resolve(x)\n  resolve: function resolve(x) {\n    return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n  }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n  $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n  // 25.4.4.1 Promise.all(iterable)\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 values = [];\n      var index = 0;\n      var remaining = 1;\n      forOf(iterable, false, function (promise) {\n        var $index = index++;\n        var alreadyCalled = false;\n        values.push(undefined);\n        remaining++;\n        C.resolve(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.e) reject(result.v);\n    return capability.promise;\n  },\n  // 25.4.4.4 Promise.race(iterable)\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      forOf(iterable, false, function (promise) {\n        C.resolve(promise).then(capability.resolve, reject);\n      });\n    });\n    if (result.e) reject(result.v);\n    return capability.promise;\n  }\n});\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n  this._t = String(iterated); // target\n  this._i = 0;                // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var index = this._i;\n  var point;\n  if (index >= O.length) return { value: undefined, done: true };\n  point = $at(O, index);\n  this._i += point.length;\n  return { value: point, done: false };\n});\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n  return _create(dP({}, 'a', {\n    get: function () { return dP(this, 'a', { value: 7 }).a; }\n  })).a != 7;\n}) ? function (it, key, D) {\n  var protoDesc = gOPD(ObjectProto, key);\n  if (protoDesc) delete ObjectProto[key];\n  dP(it, key, D);\n  if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n  sym._k = tag;\n  return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n  if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n  anObject(it);\n  key = toPrimitive(key, true);\n  anObject(D);\n  if (has(AllSymbols, key)) {\n    if (!D.enumerable) {\n      if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n      it[HIDDEN][key] = true;\n    } else {\n      if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n      D = _create(D, { enumerable: createDesc(0, false) });\n    } return setSymbolDesc(it, key, D);\n  } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n  anObject(it);\n  var keys = enumKeys(P = toIObject(P));\n  var i = 0;\n  var l = keys.length;\n  var key;\n  while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n  return it;\n};\nvar $create = function create(it, P) {\n  return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n  var E = isEnum.call(this, key = toPrimitive(key, true));\n  if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n  it = toIObject(it);\n  key = toPrimitive(key, true);\n  if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n  var D = gOPD(it, key);\n  if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n  return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n  var names = gOPN(toIObject(it));\n  var result = [];\n  var i = 0;\n  var key;\n  while (names.length > i) {\n    if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n  } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n  var IS_OP = it === ObjectProto;\n  var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n  var result = [];\n  var i = 0;\n  var key;\n  while (names.length > i) {\n    if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n  } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n  $Symbol = function Symbol() {\n    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n    var $set = function (value) {\n      if (this === ObjectProto) $set.call(OPSymbols, value);\n      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n      setSymbolDesc(this, tag, createDesc(1, value));\n    };\n    if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n    return wrap(tag);\n  };\n  redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n    return this._k;\n  });\n\n  $GOPD.f = $getOwnPropertyDescriptor;\n  $DP.f = $defineProperty;\n  require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n  require('./_object-pie').f = $propertyIsEnumerable;\n  require('./_object-gops').f = $getOwnPropertySymbols;\n\n  if (DESCRIPTORS && !require('./_library')) {\n    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n  }\n\n  wksExt.f = function (name) {\n    return wrap(wks(name));\n  };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n  // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n  'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n  // 19.4.2.1 Symbol.for(key)\n  'for': function (key) {\n    return has(SymbolRegistry, key += '')\n      ? SymbolRegistry[key]\n      : SymbolRegistry[key] = $Symbol(key);\n  },\n  // 19.4.2.5 Symbol.keyFor(sym)\n  keyFor: function keyFor(sym) {\n    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n    for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n  },\n  useSetter: function () { setter = true; },\n  useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n  // 19.1.2.2 Object.create(O [, Properties])\n  create: $create,\n  // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n  defineProperty: $defineProperty,\n  // 19.1.2.3 Object.defineProperties(O, Properties)\n  defineProperties: $defineProperties,\n  // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n  // 19.1.2.7 Object.getOwnPropertyNames(O)\n  getOwnPropertyNames: $getOwnPropertyNames,\n  // 19.1.2.8 Object.getOwnPropertySymbols(O)\n  getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n  var S = $Symbol();\n  // MS Edge converts symbol values to JSON as {}\n  // WebKit converts symbol values to JSON as null\n  // V8 throws on boxed symbols\n  return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n  stringify: function stringify(it) {\n    if (it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n    var args = [it];\n    var i = 1;\n    var replacer, $replacer;\n    while (arguments.length > i) args.push(arguments[i++]);\n    replacer = args[1];\n    if (typeof replacer == 'function') $replacer = replacer;\n    if ($replacer || !isArray(replacer)) replacer = function (key, value) {\n      if ($replacer) value = $replacer.call(this, key, value);\n      if (!isSymbol(value)) return value;\n    };\n    args[1] = replacer;\n    return _stringify.apply($JSON, args);\n  }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n  entries: function entries(it) {\n    return $entries(it);\n  }\n});\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $values = require('./_object-to-array')(false);\n\n$export($export.S, 'Object', {\n  values: function values(it) {\n    return $values(it);\n  }\n});\n","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n  var C = speciesConstructor(this, core.Promise || global.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","'use strict';\n// https://github.com/tc39/proposal-promise-try\nvar $export = require('./_export');\nvar newPromiseCapability = require('./_new-promise-capability');\nvar perform = require('./_perform');\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n  var promiseCapability = newPromiseCapability.f(this);\n  var result = perform(callbackfn);\n  (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n  return promiseCapability.promise;\n} });\n","require('./_wks-define')('asyncIterator');\n","require('./_wks-define')('observable');\n","require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n  'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n  'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n  'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n  'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n  var NAME = DOMIterables[i];\n  var Collection = global[NAME];\n  var proto = Collection && Collection.prototype;\n  if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n  Iterators[NAME] = Iterators.Array;\n}\n","/**\n * Copyright (c) 2013-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 */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar _invariant = require('fbjs/lib/invariant');\n\nif (\"production\" !== 'production') {\n  var warning = require('fbjs/lib/warning');\n}\n\nvar MIXINS_KEY = 'mixins';\n\n// Helper function to allow the creation of anonymous functions which do not\n// have .name set to the name of the variable being assigned to.\nfunction identity(fn) {\n  return fn;\n}\n\nvar ReactPropTypeLocationNames;\nif (\"production\" !== 'production') {\n  ReactPropTypeLocationNames = {\n    prop: 'prop',\n    context: 'context',\n    childContext: 'child context'\n  };\n} else {\n  ReactPropTypeLocationNames = {};\n}\n\nfunction factory(ReactComponent, isValidElement, ReactNoopUpdateQueue) {\n  /**\n   * Policies that describe methods in `ReactClassInterface`.\n   */\n\n  var injectedMixins = [];\n\n  /**\n   * Composite components are higher-level components that compose other composite\n   * or host 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  var ReactClassInterface = {\n    /**\n     * An array of Mixin objects to include when defining your component.\n     *\n     * @type {array}\n     * @optional\n     */\n    mixins: '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: 'DEFINE_MANY',\n\n    /**\n     * Definition of prop types for this component.\n     *\n     * @type {object}\n     * @optional\n     */\n    propTypes: 'DEFINE_MANY',\n\n    /**\n     * Definition of context types for this component.\n     *\n     * @type {object}\n     * @optional\n     */\n    contextTypes: 'DEFINE_MANY',\n\n    /**\n     * Definition of context types this component sets for its children.\n     *\n     * @type {object}\n     * @optional\n     */\n    childContextTypes: 'DEFINE_MANY',\n\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: '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: 'DEFINE_MANY_MERGED',\n\n    /**\n     * @return {object}\n     * @optional\n     */\n    getChildContext: '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     * @required\n     */\n    render: 'DEFINE_ONCE',\n\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: '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: '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: '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: '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: '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: '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: 'DEFINE_MANY',\n\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: 'OVERRIDE_BASE'\n  };\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  var RESERVED_SPEC_KEYS = {\n    displayName: function(Constructor, displayName) {\n      Constructor.displayName = displayName;\n    },\n    mixins: function(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(Constructor, childContextTypes) {\n      if (\"production\" !== 'production') {\n        validateTypeDef(Constructor, childContextTypes, 'childContext');\n      }\n      Constructor.childContextTypes = _assign(\n        {},\n        Constructor.childContextTypes,\n        childContextTypes\n      );\n    },\n    contextTypes: function(Constructor, contextTypes) {\n      if (\"production\" !== 'production') {\n        validateTypeDef(Constructor, contextTypes, 'context');\n      }\n      Constructor.contextTypes = _assign(\n        {},\n        Constructor.contextTypes,\n        contextTypes\n      );\n    },\n    /**\n     * Special case getDefaultProps which should move into statics but requires\n     * automatic merging.\n     */\n    getDefaultProps: function(Constructor, getDefaultProps) {\n      if (Constructor.getDefaultProps) {\n        Constructor.getDefaultProps = createMergedResultFunction(\n          Constructor.getDefaultProps,\n          getDefaultProps\n        );\n      } else {\n        Constructor.getDefaultProps = getDefaultProps;\n      }\n    },\n    propTypes: function(Constructor, propTypes) {\n      if (\"production\" !== 'production') {\n        validateTypeDef(Constructor, propTypes, 'prop');\n      }\n      Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);\n    },\n    statics: function(Constructor, statics) {\n      mixStaticSpecIntoComponent(Constructor, statics);\n    },\n    autobind: function() {}\n  };\n\n  function 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        if (\"production\" !== 'production') {\n          warning(\n            typeof typeDef[propName] === 'function',\n            '%s: %s type `%s` is invalid; it must be a function, usually from ' +\n              'React.PropTypes.',\n            Constructor.displayName || 'ReactClass',\n            ReactPropTypeLocationNames[location],\n            propName\n          );\n        }\n      }\n    }\n  }\n\n  function validateMethodOverride(isAlreadyDefined, name) {\n    var specPolicy = ReactClassInterface.hasOwnProperty(name)\n      ? ReactClassInterface[name]\n      : null;\n\n    // Disallow overriding of base class methods unless explicitly allowed.\n    if (ReactClassMixin.hasOwnProperty(name)) {\n      _invariant(\n        specPolicy === 'OVERRIDE_BASE',\n        'ReactClassInterface: You are attempting to override ' +\n          '`%s` from your class specification. Ensure that your method names ' +\n          'do not overlap with React methods.',\n        name\n      );\n    }\n\n    // Disallow defining methods more than once unless explicitly allowed.\n    if (isAlreadyDefined) {\n      _invariant(\n        specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED',\n        'ReactClassInterface: You are attempting to define ' +\n          '`%s` on your component more than once. This conflict may be due ' +\n          'to a mixin.',\n        name\n      );\n    }\n  }\n\n  /**\n   * Mixin helper which handles policy validation and reserved\n   * specification keys when building React classes.\n   */\n  function mixSpecIntoComponent(Constructor, spec) {\n    if (!spec) {\n      if (\"production\" !== 'production') {\n        var typeofSpec = typeof spec;\n        var isMixinValid = typeofSpec === 'object' && spec !== null;\n\n        if (\"production\" !== 'production') {\n          warning(\n            isMixinValid,\n            \"%s: You're attempting to include a mixin that is either null \" +\n              'or not an object. Check the mixins included by the component, ' +\n              'as well as any mixins they include themselves. ' +\n              'Expected object but got %s.',\n            Constructor.displayName || 'ReactClass',\n            spec === null ? null : typeofSpec\n          );\n        }\n      }\n\n      return;\n    }\n\n    _invariant(\n      typeof spec !== 'function',\n      \"ReactClass: You're attempting to \" +\n        'use a component class or function as a mixin. Instead, just use a ' +\n        'regular object.'\n    );\n    _invariant(\n      !isValidElement(spec),\n      \"ReactClass: You're attempting to \" +\n        'use a component as a mixin. Instead, just use a regular object.'\n    );\n\n    var proto = Constructor.prototype;\n    var autoBindPairs = proto.__reactAutoBindPairs;\n\n    // 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    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 =\n          isFunction &&\n          !isReactClassMethod &&\n          !isAlreadyDefined &&\n          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];\n\n            // These cases should already be caught by validateMethodOverride.\n            _invariant(\n              isReactClassMethod &&\n                (specPolicy === 'DEFINE_MANY_MERGED' ||\n                  specPolicy === 'DEFINE_MANY'),\n              'ReactClass: Unexpected spec policy %s for key %s ' +\n                'when mixing in component specs.',\n              specPolicy,\n              name\n            );\n\n            // For methods which are defined more than once, call the existing\n            // methods before calling the new property, merging if appropriate.\n            if (specPolicy === 'DEFINE_MANY_MERGED') {\n              proto[name] = createMergedResultFunction(proto[name], property);\n            } else if (specPolicy === 'DEFINE_MANY') {\n              proto[name] = createChainedFunction(proto[name], property);\n            }\n          } else {\n            proto[name] = property;\n            if (\"production\" !== '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\n  function mixStaticSpecIntoComponent(Constructor, statics) {\n    if (!statics) {\n      return;\n    }\n    for (var name in statics) {\n      var property = statics[name];\n      if (!statics.hasOwnProperty(name)) {\n        continue;\n      }\n\n      var isReserved = name in RESERVED_SPEC_KEYS;\n      _invariant(\n        !isReserved,\n        'ReactClass: You are attempting to define a reserved ' +\n          'property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it ' +\n          'as an instance property instead; it will still be accessible on the ' +\n          'constructor.',\n        name\n      );\n\n      var isInherited = name in Constructor;\n      _invariant(\n        !isInherited,\n        'ReactClass: You are attempting to define ' +\n          '`%s` on your component more than once. This conflict may be ' +\n          'due to a mixin.',\n        name\n      );\n      Constructor[name] = property;\n    }\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  function mergeIntoWithNoDuplicateKeys(one, two) {\n    _invariant(\n      one && two && typeof one === 'object' && typeof two === 'object',\n      'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.'\n    );\n\n    for (var key in two) {\n      if (two.hasOwnProperty(key)) {\n        _invariant(\n          one[key] === undefined,\n          'mergeIntoWithNoDuplicateKeys(): ' +\n            'Tried to merge two objects with the same key: `%s`. This conflict ' +\n            'may be due to a mixin; in particular, this may be caused by two ' +\n            'getInitialState() or getDefaultProps() methods returning objects ' +\n            'with clashing keys.',\n          key\n        );\n        one[key] = two[key];\n      }\n    }\n    return one;\n  }\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  function createMergedResultFunction(one, two) {\n    return function mergedResult() {\n      var a = one.apply(this, arguments);\n      var b = two.apply(this, arguments);\n      if (a == null) {\n        return b;\n      } else if (b == null) {\n        return a;\n      }\n      var c = {};\n      mergeIntoWithNoDuplicateKeys(c, a);\n      mergeIntoWithNoDuplicateKeys(c, b);\n      return c;\n    };\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  function createChainedFunction(one, two) {\n    return function chainedFunction() {\n      one.apply(this, arguments);\n      two.apply(this, arguments);\n    };\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  function bindAutoBindMethod(component, method) {\n    var boundMethod = method.bind(component);\n    if (\"production\" !== '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      boundMethod.bind = function(newThis) {\n        for (\n          var _len = arguments.length,\n            args = Array(_len > 1 ? _len - 1 : 0),\n            _key = 1;\n          _key < _len;\n          _key++\n        ) {\n          args[_key - 1] = arguments[_key];\n        }\n\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        if (newThis !== component && newThis !== null) {\n          if (\"production\" !== 'production') {\n            warning(\n              false,\n              'bind(): React component methods may only be bound to the ' +\n                'component instance. See %s',\n              componentName\n            );\n          }\n        } else if (!args.length) {\n          if (\"production\" !== 'production') {\n            warning(\n              false,\n              'bind(): You are binding a component method to the component. ' +\n                'React does this for you automatically in a high-performance ' +\n                'way, so you can safely remove this call. See %s',\n              componentName\n            );\n          }\n          return boundMethod;\n        }\n        var reboundMethod = _bind.apply(boundMethod, arguments);\n        reboundMethod.__reactBoundContext = component;\n        reboundMethod.__reactBoundMethod = method;\n        reboundMethod.__reactBoundArguments = args;\n        return reboundMethod;\n      };\n    }\n    return boundMethod;\n  }\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  function bindAutoBindMethods(component) {\n    var pairs = component.__reactAutoBindPairs;\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  var IsMountedPreMixin = {\n    componentDidMount: function() {\n      this.__isMounted = true;\n    }\n  };\n\n  var IsMountedPostMixin = {\n    componentWillUnmount: function() {\n      this.__isMounted = false;\n    }\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  var 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(newState, callback) {\n      this.updater.enqueueReplaceState(this, newState, callback);\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() {\n      if (\"production\" !== 'production') {\n        warning(\n          this.__didWarnIsMounted,\n          '%s: isMounted is deprecated. Instead, make sure to clean up ' +\n            'subscriptions and pending requests in componentWillUnmount to ' +\n            'prevent memory leaks.',\n          (this.constructor && this.constructor.displayName) ||\n            this.name ||\n            'Component'\n        );\n        this.__didWarnIsMounted = true;\n      }\n      return !!this.__isMounted;\n    }\n  };\n\n  var ReactClassComponent = function() {};\n  _assign(\n    ReactClassComponent.prototype,\n    ReactComponent.prototype,\n    ReactClassMixin\n  );\n\n  /**\n   * Creates a composite component class given a class specification.\n   * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass\n   *\n   * @param {object} spec Class specification (which must define `render`).\n   * @return {function} Component constructor function.\n   * @public\n   */\n  function createClass(spec) {\n    // To keep our warnings more understandable, we'll use a little hack here to\n    // ensure that Constructor.name !== 'Constructor'. This makes sure we don't\n    // unnecessarily identify a class without displayName as 'Constructor'.\n    var Constructor = identity(function(props, context, updater) {\n      // This constructor gets overridden by mocks. The argument is used\n      // by mocks to assert on what gets mounted.\n\n      if (\"production\" !== 'production') {\n        warning(\n          this instanceof Constructor,\n          'Something is calling a React component directly. Use a factory or ' +\n            'JSX instead. See: https://fb.me/react-legacyfactory'\n        );\n      }\n\n      // Wire up auto-binding\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\n      this.state = null;\n\n      // 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      if (\"production\" !== 'production') {\n        // We allow auto-mocks to proceed as if they're returning null.\n        if (\n          initialState === undefined &&\n          this.getInitialState._isMockFunction\n        ) {\n          // This is probably bad practice. Consider warning here and\n          // deprecating this convenience.\n          initialState = null;\n        }\n      }\n      _invariant(\n        typeof initialState === 'object' && !Array.isArray(initialState),\n        '%s.getInitialState(): must return an object or null',\n        Constructor.displayName || 'ReactCompositeComponent'\n      );\n\n      this.state = initialState;\n    });\n    Constructor.prototype = new ReactClassComponent();\n    Constructor.prototype.constructor = Constructor;\n    Constructor.prototype.__reactAutoBindPairs = [];\n\n    injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));\n\n    mixSpecIntoComponent(Constructor, IsMountedPreMixin);\n    mixSpecIntoComponent(Constructor, spec);\n    mixSpecIntoComponent(Constructor, IsMountedPostMixin);\n\n    // Initialize the defaultProps property after all mixins have been merged.\n    if (Constructor.getDefaultProps) {\n      Constructor.defaultProps = Constructor.getDefaultProps();\n    }\n\n    if (\"production\" !== '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      if (Constructor.prototype.getInitialState) {\n        Constructor.prototype.getInitialState.isReactClassApproved = {};\n      }\n    }\n\n    _invariant(\n      Constructor.prototype.render,\n      'createClass(...): Class specification must implement a `render` method.'\n    );\n\n    if (\"production\" !== 'production') {\n      warning(\n        !Constructor.prototype.componentShouldUpdate,\n        '%s has a method called ' +\n          'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' +\n          'The name is phrased as a question because the function is ' +\n          'expected to return a value.',\n        spec.displayName || 'A component'\n      );\n      warning(\n        !Constructor.prototype.componentWillRecieveProps,\n        '%s has a method called ' +\n          'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?',\n        spec.displayName || 'A component'\n      );\n    }\n\n    // Reduce time spent doing lookups by setting these on the prototype.\n    for (var methodName in ReactClassInterface) {\n      if (!Constructor.prototype[methodName]) {\n        Constructor.prototype[methodName] = null;\n      }\n    }\n\n    return Constructor;\n  }\n\n  return createClass;\n}\n\nmodule.exports = factory;\n","/**\n * Copyright (c) 2013-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 */\n\n'use strict';\n\nvar React = require('react');\nvar factory = require('./factory');\n\nif (typeof React === 'undefined') {\n  throw Error(\n    'create-react-class could not find the React object. If you are using script tags, ' +\n      'make sure that React is being loaded before create-react-class.'\n  );\n}\n\n// Hack to grab NoopUpdateQueue from isomorphic React\nvar ReactNoopUpdateQueue = new React.Component().updater;\n\nmodule.exports = factory(\n  React.Component,\n  React.isValidElement,\n  ReactNoopUpdateQueue\n);\n","module.exports = {\n  CssSelectorParser: require('./lib/css-selector-parser.js').CssSelectorParser\n};","function CssSelectorParser() {\n  this.pseudos = {};\n  this.attrEqualityMods = {};\n  this.ruleNestingOperators = {};\n  this.substitutesEnabled = false;\n}\n\nCssSelectorParser.prototype.registerSelectorPseudos = function(name) {\n  for (var j = 0, len = arguments.length; j < len; j++) {\n    name = arguments[j];\n    this.pseudos[name] = 'selector';\n  }\n  return this;\n};\n\nCssSelectorParser.prototype.unregisterSelectorPseudos = function(name) {\n  for (var j = 0, len = arguments.length; j < len; j++) {\n    name = arguments[j];\n    delete this.pseudos[name];\n  }\n  return this;\n};\n\nCssSelectorParser.prototype.registerNumericPseudos = function(name) {\n    for (var j = 0, len = arguments.length; j < len; j++) {\n        name = arguments[j];\n        this.pseudos[name] = 'numeric';\n    }\n    return this;\n};\n\nCssSelectorParser.prototype.unregisterNumericPseudos = function(name) {\n    for (var j = 0, len = arguments.length; j < len; j++) {\n        name = arguments[j];\n        delete this.pseudos[name];\n    }\n    return this;\n};\n\nCssSelectorParser.prototype.registerNestingOperators = function(operator) {\n  for (var j = 0, len = arguments.length; j < len; j++) {\n    operator = arguments[j];\n    this.ruleNestingOperators[operator] = true;\n  }\n  return this;\n};\n\nCssSelectorParser.prototype.unregisterNestingOperators = function(operator) {\n  for (var j = 0, len = arguments.length; j < len; j++) {\n    operator = arguments[j];\n    delete this.ruleNestingOperators[operator];\n  }\n  return this;\n};\n\nCssSelectorParser.prototype.registerAttrEqualityMods = function(mod) {\n  for (var j = 0, len = arguments.length; j < len; j++) {\n    mod = arguments[j];\n    this.attrEqualityMods[mod] = true;\n  }\n  return this;\n};\n\nCssSelectorParser.prototype.unregisterAttrEqualityMods = function(mod) {\n  for (var j = 0, len = arguments.length; j < len; j++) {\n    mod = arguments[j];\n    delete this.attrEqualityMods[mod];\n  }\n  return this;\n};\n\nCssSelectorParser.prototype.enableSubstitutes = function() {\n  this.substitutesEnabled = true;\n  return this;\n};\n\nCssSelectorParser.prototype.disableSubstitutes = function() {\n  this.substitutesEnabled = false;\n  return this;\n};\n\nfunction isIdentStart(c) {\n  return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c === '-') || (c === '_');\n}\n\nfunction isIdent(c) {\n  return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') || c === '-' || c === '_';\n}\n\nfunction isHex(c) {\n  return (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F') || (c >= '0' && c <= '9');\n}\n\nfunction isDecimal(c) {\n  return c >= '0' && c <= '9';\n}\n\nfunction isAttrMatchOperator(chr) {\n  return chr === '=' || chr === '^' || chr === '$' || chr === '*' || chr === '~';\n}\n\nvar identSpecialChars = {\n  '!': true,\n  '\"': true,\n  '#': true,\n  '$': true,\n  '%': true,\n  '&': true,\n  '\\'': true,\n  '(': true,\n  ')': true,\n  '*': true,\n  '+': true,\n  ',': true,\n  '.': true,\n  '/': true,\n  ';': true,\n  '<': true,\n  '=': true,\n  '>': true,\n  '?': true,\n  '@': true,\n  '[': true,\n  '\\\\': true,\n  ']': true,\n  '^': true,\n  '`': true,\n  '{': true,\n  '|': true,\n  '}': true,\n  '~': true\n};\n\nvar strReplacementsRev = {\n  '\\n': '\\\\n',\n  '\\r': '\\\\r',\n  '\\t': '\\\\t',\n  '\\f': '\\\\f',\n  '\\v': '\\\\v'\n};\n\nvar singleQuoteEscapeChars = {\n  n: '\\n',\n  r: '\\r',\n  t: '\\t',\n  f: '\\f',\n  '\\\\': '\\\\',\n  '\\'': '\\''\n};\n\nvar doubleQuotesEscapeChars = {\n  n: '\\n',\n  r: '\\r',\n  t: '\\t',\n  f: '\\f',\n  '\\\\': '\\\\',\n  '\"': '\"'\n};\n\nfunction ParseContext(str, pos, pseudos, attrEqualityMods, ruleNestingOperators, substitutesEnabled) {\n  var chr, getIdent, getStr, l, skipWhitespace;\n  l = str.length;\n  chr = null;\n  getStr = function(quote, escapeTable) {\n    var esc, hex, result;\n    result = '';\n    pos++;\n    chr = str.charAt(pos);\n    while (pos < l) {\n      if (chr === quote) {\n        pos++;\n        return result;\n      } else if (chr === '\\\\') {\n        pos++;\n        chr = str.charAt(pos);\n        if (chr === quote) {\n          result += quote;\n        } else if (esc = escapeTable[chr]) {\n          result += esc;\n        } else if (isHex(chr)) {\n          hex = chr;\n          pos++;\n          chr = str.charAt(pos);\n          while (isHex(chr)) {\n            hex += chr;\n            pos++;\n            chr = str.charAt(pos);\n          }\n          if (chr === ' ') {\n            pos++;\n            chr = str.charAt(pos);\n          }\n          result += String.fromCharCode(parseInt(hex, 16));\n          continue;\n        } else {\n          result += chr;\n        }\n      } else {\n        result += chr;\n      }\n      pos++;\n      chr = str.charAt(pos);\n    }\n    return result;\n  };\n  getIdent = function() {\n    var result = '';\n    chr = str.charAt(pos);\n    while (pos < l) {\n      if (isIdent(chr)) {\n        result += chr;\n      } else if (chr === '\\\\') {\n        pos++;\n        if (pos >= l) {\n          throw Error('Expected symbol but end of file reached.');\n        }\n        chr = str.charAt(pos);\n        if (identSpecialChars[chr]) {\n          result += chr;\n        } else if (isHex(chr)) {\n          var hex = chr;\n          pos++;\n          chr = str.charAt(pos);\n          while (isHex(chr)) {\n            hex += chr;\n            pos++;\n            chr = str.charAt(pos);\n          }\n          if (chr === ' ') {\n            pos++;\n            chr = str.charAt(pos);\n          }\n          result += String.fromCharCode(parseInt(hex, 16));\n          continue;\n        } else {\n          result += chr;\n        }\n      } else {\n        return result;\n      }\n      pos++;\n      chr = str.charAt(pos);\n    }\n    return result;\n  };\n  skipWhitespace = function() {\n    chr = str.charAt(pos);\n    var result = false;\n    while (chr === ' ' || chr === \"\\t\" || chr === \"\\n\" || chr === \"\\r\" || chr === \"\\f\") {\n      result = true;\n      pos++;\n      chr = str.charAt(pos);\n    }\n    return result;\n  };\n  this.parse = function() {\n    var res = this.parseSelector();\n    if (pos < l) {\n      throw Error('Rule expected but \"' + str.charAt(pos) + '\" found.');\n    }\n    return res;\n  };\n  this.parseSelector = function() {\n    var res;\n    var selector = res = this.parseSingleSelector();\n    chr = str.charAt(pos);\n    while (chr === ',') {\n      pos++;\n      skipWhitespace();\n      if (res.type !== 'selectors') {\n        res = {\n          type: 'selectors',\n          selectors: [selector]\n        };\n      }\n      selector = this.parseSingleSelector();\n      if (!selector) {\n        throw Error('Rule expected after \",\".');\n      }\n      res.selectors.push(selector);\n    }\n    return res;\n  };\n\n  this.parseSingleSelector = function() {\n    skipWhitespace();\n    var selector = {\n      type: 'ruleSet'\n    };\n    var rule = this.parseRule();\n    if (!rule) {\n      return null;\n    }\n    var currentRule = selector;\n    while (rule) {\n      rule.type = 'rule';\n      currentRule.rule = rule;\n      currentRule = rule;\n      skipWhitespace();\n      chr = str.charAt(pos);\n      if (pos >= l || chr === ',' || chr === ')') {\n        break;\n      }\n      if (ruleNestingOperators[chr]) {\n        var op = chr;\n        pos++;\n        skipWhitespace();\n        rule = this.parseRule();\n        if (!rule) {\n          throw Error('Rule expected after \"' + op + '\".');\n        }\n        rule.nestingOperator = op;\n      } else {\n        rule = this.parseRule();\n        if (rule) {\n          rule.nestingOperator = null;\n        }\n      }\n    }\n    return selector;\n  };\n\n  this.parseRule = function() {\n    var rule = null;\n    while (pos < l) {\n      chr = str.charAt(pos);\n      if (chr === '*') {\n        pos++;\n        (rule = rule || {}).tagName = '*';\n      } else if (isIdentStart(chr) || chr === '\\\\') {\n        (rule = rule || {}).tagName = getIdent();\n      } else if (chr === '.') {\n        pos++;\n        rule = rule || {};\n        (rule.classNames = rule.classNames || []).push(getIdent());\n      } else if (chr === '#') {\n        pos++;\n        (rule = rule || {}).id = getIdent();\n      } else if (chr === '[') {\n        pos++;\n        skipWhitespace();\n        var attr = {\n          name: getIdent()\n        };\n        skipWhitespace();\n        if (chr === ']') {\n          pos++;\n        } else {\n          var operator = '';\n          if (attrEqualityMods[chr]) {\n            operator = chr;\n            pos++;\n            chr = str.charAt(pos);\n          }\n          if (pos >= l) {\n            throw Error('Expected \"=\" but end of file reached.');\n          }\n          if (chr !== '=') {\n            throw Error('Expected \"=\" but \"' + chr + '\" found.');\n          }\n          attr.operator = operator + '=';\n          pos++;\n          skipWhitespace();\n          var attrValue = '';\n          attr.valueType = 'string';\n          if (chr === '\"') {\n            attrValue = getStr('\"', doubleQuotesEscapeChars);\n          } else if (chr === '\\'') {\n            attrValue = getStr('\\'', singleQuoteEscapeChars);\n          } else if (substitutesEnabled && chr === '$') {\n            pos++;\n            attrValue = getIdent();\n            attr.valueType = 'substitute';\n          } else {\n            while (pos < l) {\n              if (chr === ']') {\n                break;\n              }\n              attrValue += chr;\n              pos++;\n              chr = str.charAt(pos);\n            }\n            attrValue = attrValue.trim();\n          }\n          skipWhitespace();\n          if (pos >= l) {\n            throw Error('Expected \"]\" but end of file reached.');\n          }\n          if (chr !== ']') {\n            throw Error('Expected \"]\" but \"' + chr + '\" found.');\n          }\n          pos++;\n          attr.value = attrValue;\n        }\n        rule = rule || {};\n        (rule.attrs = rule.attrs || []).push(attr);\n      } else if (chr === ':') {\n        pos++;\n        var pseudoName = getIdent();\n        var pseudo = {\n          name: pseudoName\n        };\n        if (chr === '(') {\n          pos++;\n          var value = '';\n          skipWhitespace();\n          if (pseudos[pseudoName] === 'selector') {\n            pseudo.valueType = 'selector';\n            value = this.parseSelector();\n          } else {\n            pseudo.valueType = pseudos[pseudoName] || 'string';\n            if (chr === '\"') {\n              value = getStr('\"', doubleQuotesEscapeChars);\n            } else if (chr === '\\'') {\n              value = getStr('\\'', singleQuoteEscapeChars);\n            } else if (substitutesEnabled && chr === '$') {\n              pos++;\n              value = getIdent();\n              pseudo.valueType = 'substitute';\n            } else {\n              while (pos < l) {\n                if (chr === ')') {\n                  break;\n                }\n                value += chr;\n                pos++;\n                chr = str.charAt(pos);\n              }\n              value = value.trim();\n            }\n            skipWhitespace();\n          }\n          if (pos >= l) {\n            throw Error('Expected \")\" but end of file reached.');\n          }\n          if (chr !== ')') {\n            throw Error('Expected \")\" but \"' + chr + '\" found.');\n          }\n          pos++;\n          pseudo.value = value;\n        }\n        rule = rule || {};\n        (rule.pseudos = rule.pseudos || []).push(pseudo);\n      } else {\n        break;\n      }\n    }\n    return rule;\n  };\n  return this;\n}\n\nCssSelectorParser.prototype.parse = function(str) {\n  var context = new ParseContext(\n      str,\n      0,\n      this.pseudos,\n      this.attrEqualityMods,\n      this.ruleNestingOperators,\n      this.substitutesEnabled\n  );\n  return context.parse();\n};\n\nCssSelectorParser.prototype.escapeIdentifier = function(s) {\n  var result = '';\n  var i = 0;\n  var len = s.length;\n  while (i < len) {\n    var chr = s.charAt(i);\n    if (identSpecialChars[chr]) {\n      result += '\\\\' + chr;\n    } else {\n      if (\n          !(\n              chr === '_' || chr === '-' ||\n              (chr >= 'A' && chr <= 'Z') ||\n              (chr >= 'a' && chr <= 'z') ||\n              (i !== 0 && chr >= '0' && chr <= '9')\n          )\n      ) {\n        var charCode = chr.charCodeAt(0);\n        if ((charCode & 0xF800) === 0xD800) {\n          var extraCharCode = s.charCodeAt(i++);\n          if ((charCode & 0xFC00) !== 0xD800 || (extraCharCode & 0xFC00) !== 0xDC00) {\n            throw Error('UCS-2(decode): illegal sequence');\n          }\n          charCode = ((charCode & 0x3FF) << 10) + (extraCharCode & 0x3FF) + 0x10000;\n        }\n        result += '\\\\' + charCode.toString(16) + ' ';\n      } else {\n        result += chr;\n      }\n    }\n    i++;\n  }\n  return result;\n};\n\nCssSelectorParser.prototype.escapeStr = function(s) {\n  var result = '';\n  var i = 0;\n  var len = s.length;\n  var chr, replacement;\n  while (i < len) {\n    chr = s.charAt(i);\n    if (chr === '\"') {\n      chr = '\\\\\"';\n    } else if (chr === '\\\\') {\n      chr = '\\\\\\\\';\n    } else if (replacement = strReplacementsRev[chr]) {\n      chr = replacement;\n    }\n    result += chr;\n    i++;\n  }\n  return \"\\\"\" + result + \"\\\"\";\n};\n\nCssSelectorParser.prototype.render = function(path) {\n  return this._renderEntity(path).trim();\n};\n\nCssSelectorParser.prototype._renderEntity = function(entity) {\n  var currentEntity, parts, res;\n  res = '';\n  switch (entity.type) {\n    case 'ruleSet':\n      currentEntity = entity.rule;\n      parts = [];\n      while (currentEntity) {\n        if (currentEntity.nestingOperator) {\n          parts.push(currentEntity.nestingOperator);\n        }\n        parts.push(this._renderEntity(currentEntity));\n        currentEntity = currentEntity.rule;\n      }\n      res = parts.join(' ');\n      break;\n    case 'selectors':\n      res = entity.selectors.map(this._renderEntity, this).join(', ');\n      break;\n    case 'rule':\n      if (entity.tagName) {\n        if (entity.tagName === '*') {\n          res = '*';\n        } else {\n          res = this.escapeIdentifier(entity.tagName);\n        }\n      }\n      if (entity.id) {\n        res += \"#\" + this.escapeIdentifier(entity.id);\n      }\n      if (entity.classNames) {\n        res += entity.classNames.map(function(cn) {\n          return \".\" + (this.escapeIdentifier(cn));\n        }, this).join('');\n      }\n      if (entity.attrs) {\n        res += entity.attrs.map(function(attr) {\n          if (attr.operator) {\n            if (attr.valueType === 'substitute') {\n              return \"[\" + this.escapeIdentifier(attr.name) + attr.operator + \"$\" + attr.value + \"]\";\n            } else {\n              return \"[\" + this.escapeIdentifier(attr.name) + attr.operator + this.escapeStr(attr.value) + \"]\";\n            }\n          } else {\n            return \"[\" + this.escapeIdentifier(attr.name) + \"]\";\n          }\n        }, this).join('');\n      }\n      if (entity.pseudos) {\n        res += entity.pseudos.map(function(pseudo) {\n          if (pseudo.valueType) {\n            if (pseudo.valueType === 'selector') {\n              return \":\" + this.escapeIdentifier(pseudo.name) + \"(\" + this._renderEntity(pseudo.value) + \")\";\n            } else if (pseudo.valueType === 'substitute') {\n              return \":\" + this.escapeIdentifier(pseudo.name) + \"($\" + pseudo.value + \")\";\n            } else if (pseudo.valueType === 'numeric') {\n              return \":\" + this.escapeIdentifier(pseudo.name) + \"(\" + pseudo.value + \")\";\n            } else {\n              return \":\" + this.escapeIdentifier(pseudo.name) + \"(\" + this.escapeIdentifier(pseudo.value) + \")\";\n            }\n          } else {\n            return \":\" + this.escapeIdentifier(pseudo.name);\n          }\n        }, this).join('');\n      }\n      break;\n    default:\n      throw Error('Unknown entity type: \"' + entity.type(+'\".'));\n  }\n  return res;\n};\n\nexports.CssSelectorParser = CssSelectorParser;\n","var pSlice = Array.prototype.slice;\nvar objectKeys = require('./lib/keys.js');\nvar isArguments = require('./lib/is_arguments.js');\n\nvar deepEqual = module.exports = function (actual, expected, opts) {\n  if (!opts) opts = {};\n  // 7.1. All identical values are equivalent, as determined by ===.\n  if (actual === expected) {\n    return true;\n\n  } else if (actual instanceof Date && expected instanceof Date) {\n    return actual.getTime() === expected.getTime();\n\n  // 7.3. Other pairs that do not both pass typeof value == 'object',\n  // equivalence is determined by ==.\n  } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\n    return opts.strict ? actual === expected : actual == expected;\n\n  // 7.4. For all other Object pairs, including Array objects, equivalence is\n  // determined by having the same number of owned properties (as verified\n  // with Object.prototype.hasOwnProperty.call), the same set of keys\n  // (although not necessarily the same order), equivalent values for every\n  // corresponding key, and an identical 'prototype' property. Note: this\n  // accounts for both named and indexed properties on Arrays.\n  } else {\n    return objEquiv(actual, expected, opts);\n  }\n}\n\nfunction isUndefinedOrNull(value) {\n  return value === null || value === undefined;\n}\n\nfunction isBuffer (x) {\n  if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n  if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n    return false;\n  }\n  if (x.length > 0 && typeof x[0] !== 'number') return false;\n  return true;\n}\n\nfunction objEquiv(a, b, opts) {\n  var i, key;\n  if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n    return false;\n  // an identical 'prototype' property.\n  if (a.prototype !== b.prototype) return false;\n  //~~~I've managed to break Object.keys through screwy arguments passing.\n  //   Converting to array solves the problem.\n  if (isArguments(a)) {\n    if (!isArguments(b)) {\n      return false;\n    }\n    a = pSlice.call(a);\n    b = pSlice.call(b);\n    return deepEqual(a, b, opts);\n  }\n  if (isBuffer(a)) {\n    if (!isBuffer(b)) {\n      return false;\n    }\n    if (a.length !== b.length) return false;\n    for (i = 0; i < a.length; i++) {\n      if (a[i] !== b[i]) return false;\n    }\n    return true;\n  }\n  try {\n    var ka = objectKeys(a),\n        kb = objectKeys(b);\n  } catch (e) {//happens when one is a string literal and the other isn't\n    return false;\n  }\n  // having the same number of owned properties (keys incorporates\n  // hasOwnProperty)\n  if (ka.length != kb.length)\n    return false;\n  //the same set of keys (although not necessarily the same order),\n  ka.sort();\n  kb.sort();\n  //~~~cheap key test\n  for (i = ka.length - 1; i >= 0; i--) {\n    if (ka[i] != kb[i])\n      return false;\n  }\n  //equivalent values for every corresponding key, and\n  //~~~possibly expensive deep test\n  for (i = ka.length - 1; i >= 0; i--) {\n    key = ka[i];\n    if (!deepEqual(a[key], b[key], opts)) return false;\n  }\n  return typeof a === typeof b;\n}\n","var supportsArgumentsClass = (function(){\n  return Object.prototype.toString.call(arguments)\n})() == '[object Arguments]';\n\nexports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\nexports.supported = supported;\nfunction supported(object) {\n  return Object.prototype.toString.call(object) == '[object Arguments]';\n};\n\nexports.unsupported = unsupported;\nfunction unsupported(object){\n  return object &&\n    typeof object == 'object' &&\n    typeof object.length == 'number' &&\n    Object.prototype.hasOwnProperty.call(object, 'callee') &&\n    !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n    false;\n};\n","exports = module.exports = typeof Object.keys === 'function'\n  ? Object.keys : shim;\n\nexports.shim = shim;\nfunction shim (obj) {\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  return keys;\n}\n","'use strict';\n\nvar keys = require('object-keys');\nvar foreach = require('foreach');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol() === 'symbol';\n\nvar toStr = Object.prototype.toString;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\tObject.defineProperty(obj, 'x', { enumerable: false, value: obj });\n        /* eslint-disable no-unused-vars, no-restricted-syntax */\n        for (var _ in obj) { return false; }\n        /* eslint-enable no-unused-vars, no-restricted-syntax */\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = Object.defineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\tObject.defineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = props.concat(Object.getOwnPropertySymbols(map));\n\t}\n\tforeach(props, function (name) {\n\t\tdefineProperty(object, name, map[name], predicates[name]);\n\t});\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","'use strict';\n\nmodule.exports = detab;\n\nvar repeat = require('repeat-string');\n\nvar TAB = 0x09;\nvar LF = 0x0A;\nvar CR = 0x0D;\n\n/* Replace tabs with spaces, being smart about which\n * column the tab is at and which size should be used. */\nfunction detab(value, size) {\n  var string = typeof value === 'string';\n  var length = string && value.length;\n  var start = 0;\n  var index = -1;\n  var column = -1;\n  var tabSize = size || 4;\n  var results = [];\n  var code;\n  var add;\n\n  if (!string) {\n    throw new Error('detab expected string');\n  }\n\n  while (++index < length) {\n    code = value.charCodeAt(index);\n\n    if (code === TAB) {\n      add = tabSize - ((column + 1) % tabSize);\n      column += add;\n      results.push(value.slice(start, index) + repeat(' ', add));\n      start = index + 1;\n    } else if (code === LF || code === CR) {\n      column = -1;\n    } else {\n      column++;\n    }\n  }\n\n  results.push(value.slice(start));\n\n  return results.join('');\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = addClass;\n\nvar _hasClass = require('./hasClass');\n\nvar _hasClass2 = _interopRequireDefault(_hasClass);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction addClass(element, className) {\n  if (element.classList) element.classList.add(className);else if (!(0, _hasClass2.default)(element)) element.className = element.className + ' ' + className;\n}\nmodule.exports = exports['default'];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = hasClass;\nfunction hasClass(element, className) {\n  if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + element.className + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\nmodule.exports = exports[\"default\"];","'use strict';\n\nmodule.exports = function removeClass(element, className) {\n  if (element.classList) element.classList.remove(className);else element.className = element.className.replace(new RegExp('(^|\\\\s)' + className + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.animationEnd = exports.animationDelay = exports.animationTiming = exports.animationDuration = exports.animationName = exports.transitionEnd = exports.transitionDuration = exports.transitionDelay = exports.transitionTiming = exports.transitionProperty = exports.transform = undefined;\n\nvar _inDOM = require('../util/inDOM');\n\nvar _inDOM2 = _interopRequireDefault(_inDOM);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar transform = 'transform';\nvar prefix = void 0,\n    transitionEnd = void 0,\n    animationEnd = void 0;\nvar transitionProperty = void 0,\n    transitionDuration = void 0,\n    transitionTiming = void 0,\n    transitionDelay = void 0;\nvar animationName = void 0,\n    animationDuration = void 0,\n    animationTiming = void 0,\n    animationDelay = void 0;\n\nif (_inDOM2.default) {\n  var _getTransitionPropert = getTransitionProperties();\n\n  prefix = _getTransitionPropert.prefix;\n  exports.transitionEnd = transitionEnd = _getTransitionPropert.transitionEnd;\n  exports.animationEnd = animationEnd = _getTransitionPropert.animationEnd;\n\n\n  exports.transform = transform = prefix + '-' + transform;\n  exports.transitionProperty = transitionProperty = prefix + '-transition-property';\n  exports.transitionDuration = transitionDuration = prefix + '-transition-duration';\n  exports.transitionDelay = transitionDelay = prefix + '-transition-delay';\n  exports.transitionTiming = transitionTiming = prefix + '-transition-timing-function';\n\n  exports.animationName = animationName = prefix + '-animation-name';\n  exports.animationDuration = animationDuration = prefix + '-animation-duration';\n  exports.animationTiming = animationTiming = prefix + '-animation-delay';\n  exports.animationDelay = animationDelay = prefix + '-animation-timing-function';\n}\n\nexports.transform = transform;\nexports.transitionProperty = transitionProperty;\nexports.transitionTiming = transitionTiming;\nexports.transitionDelay = transitionDelay;\nexports.transitionDuration = transitionDuration;\nexports.transitionEnd = transitionEnd;\nexports.animationName = animationName;\nexports.animationDuration = animationDuration;\nexports.animationTiming = animationTiming;\nexports.animationDelay = animationDelay;\nexports.animationEnd = animationEnd;\nexports.default = {\n  transform: transform,\n  end: transitionEnd,\n  property: transitionProperty,\n  timing: transitionTiming,\n  delay: transitionDelay,\n  duration: transitionDuration\n};\n\n\nfunction getTransitionProperties() {\n  var style = document.createElement('div').style;\n\n  var vendorMap = {\n    O: function O(e) {\n      return 'o' + e.toLowerCase();\n    },\n    Moz: function Moz(e) {\n      return e.toLowerCase();\n    },\n    Webkit: function Webkit(e) {\n      return 'webkit' + e;\n    },\n    ms: function ms(e) {\n      return 'MS' + e;\n    }\n  };\n\n  var vendors = Object.keys(vendorMap);\n\n  var transitionEnd = void 0,\n      animationEnd = void 0;\n  var prefix = '';\n\n  for (var i = 0; i < vendors.length; i++) {\n    var vendor = vendors[i];\n\n    if (vendor + 'TransitionProperty' in style) {\n      prefix = '-' + vendor.toLowerCase();\n      transitionEnd = vendorMap[vendor]('TransitionEnd');\n      animationEnd = vendorMap[vendor]('AnimationEnd');\n      break;\n    }\n  }\n\n  if (!transitionEnd && 'transitionProperty' in style) transitionEnd = 'transitionend';\n\n  if (!animationEnd && 'animationName' in style) animationEnd = 'animationend';\n\n  style = null;\n\n  return { animationEnd: animationEnd, transitionEnd: transitionEnd, prefix: prefix };\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _inDOM = require('./inDOM');\n\nvar _inDOM2 = _interopRequireDefault(_inDOM);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar vendors = ['', 'webkit', 'moz', 'o', 'ms'];\nvar cancel = 'clearTimeout';\nvar raf = fallback;\nvar compatRaf = void 0;\n\nvar getKey = function getKey(vendor, k) {\n  return vendor + (!vendor ? k : k[0].toUpperCase() + k.substr(1)) + 'AnimationFrame';\n};\n\nif (_inDOM2.default) {\n  vendors.some(function (vendor) {\n    var rafKey = getKey(vendor, 'request');\n\n    if (rafKey in window) {\n      cancel = getKey(vendor, 'cancel');\n      return raf = function raf(cb) {\n        return window[rafKey](cb);\n      };\n    }\n  });\n}\n\n/* https://github.com/component/raf */\nvar prev = new Date().getTime();\nfunction fallback(fn) {\n  var curr = new Date().getTime(),\n      ms = Math.max(0, 16 - (curr - prev)),\n      req = setTimeout(fn, ms);\n\n  prev = curr;\n  return req;\n}\n\ncompatRaf = function compatRaf(cb) {\n  return raf(cb);\n};\ncompatRaf.cancel = function (id) {\n  window[cancel] && typeof window[cancel] === 'function' && window[cancel](id);\n};\nexports.default = compatRaf;\nmodule.exports = exports['default'];","/*!\nCopyright (C) 2013-2015 by Andrea Giammarchi - @WebReflection\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n*/\n(function(window){'use strict';\n  /* jshint loopfunc: true, noempty: false*/\n  // http://www.w3.org/TR/dom/#element\n\n  function createDocumentFragment() {\n    return document.createDocumentFragment();\n  }\n\n  function createElement(nodeName) {\n    return document.createElement(nodeName);\n  }\n\n  function enoughArguments(length, name) {\n    if (!length) throw new Error(\n      'Failed to construct ' +\n        name +\n      ': 1 argument required, but only 0 present.'\n    );\n  }\n\n  function mutationMacro(nodes) {\n    if (nodes.length === 1) {\n      return textNodeIfString(nodes[0]);\n    }\n    for (var\n      fragment = createDocumentFragment(),\n      list = slice.call(nodes),\n      i = 0; i < nodes.length; i++\n    ) {\n      fragment.appendChild(textNodeIfString(list[i]));\n    }\n    return fragment;\n  }\n\n  function textNodeIfString(node) {\n    return typeof node === 'string' ? document.createTextNode(node) : node;\n  }\n\n  for(var\n    head,\n    property,\n    TemporaryPrototype,\n    TemporaryTokenList,\n    wrapVerifyToken,\n    document = window.document,\n    hOP = Object.prototype.hasOwnProperty,\n    defineProperty = Object.defineProperty || function (object, property, descriptor) {\n      if (hOP.call(descriptor, 'value')) {\n        object[property] = descriptor.value;\n      } else {\n        if (hOP.call(descriptor, 'get'))\n          object.__defineGetter__(property, descriptor.get);\n        if (hOP.call(descriptor, 'set'))\n          object.__defineSetter__(property, descriptor.set);\n      }\n      return object;\n    },\n    indexOf = [].indexOf || function indexOf(value){\n      var length = this.length;\n      while(length--) {\n        if (this[length] === value) {\n          break;\n        }\n      }\n      return length;\n    },\n    // http://www.w3.org/TR/domcore/#domtokenlist\n    verifyToken = function (token) {\n      if (!token) {\n        throw 'SyntaxError';\n      } else if (spaces.test(token)) {\n        throw 'InvalidCharacterError';\n      }\n      return token;\n    },\n    DOMTokenList = function (node) {\n      var\n        noClassName = typeof node.className === 'undefined',\n        className = noClassName ?\n          (node.getAttribute('class') || '') : node.className,\n        isSVG = noClassName || typeof className === 'object',\n        value = (isSVG ?\n          (noClassName ? className : className.baseVal) :\n          className\n        ).replace(trim, '')\n      ;\n      if (value.length) {\n        properties.push.apply(\n          this,\n          value.split(spaces)\n        );\n      }\n      this._isSVG = isSVG;\n      this._ = node;\n    },\n    classListDescriptor = {\n      get: function get() {\n        return new DOMTokenList(this);\n      },\n      set: function(){}\n    },\n    uid = 'dom4-tmp-'.concat(Math.random() * +new Date()).replace('.','-'),\n    trim = /^\\s+|\\s+$/g,\n    spaces = /\\s+/,\n    SPACE = '\\x20',\n    CLASS_LIST = 'classList',\n    toggle = function toggle(token, force) {\n      if (this.contains(token)) {\n        if (!force) {\n          // force is not true (either false or omitted)\n          this.remove(token);\n        }\n      } else if(force === undefined || force) {\n        force = true;\n        this.add(token);\n      }\n      return !!force;\n    },\n    DocumentFragmentPrototype = window.DocumentFragment && DocumentFragment.prototype,\n    Node = window.Node,\n    NodePrototype = (Node || Element).prototype,\n    CharacterData = window.CharacterData || Node,\n    CharacterDataPrototype = CharacterData && CharacterData.prototype,\n    DocumentType = window.DocumentType,\n    DocumentTypePrototype = DocumentType && DocumentType.prototype,\n    ElementPrototype = (window.Element || Node || window.HTMLElement).prototype,\n    HTMLSelectElement = window.HTMLSelectElement || createElement('select').constructor,\n    selectRemove = HTMLSelectElement.prototype.remove,\n    ShadowRoot = window.ShadowRoot,\n    SVGElement = window.SVGElement,\n    // normalizes multiple ids as CSS query\n    idSpaceFinder = / /g,\n    idSpaceReplacer = '\\\\ ',\n    createQueryMethod = function (methodName) {\n      var createArray = methodName === 'querySelectorAll';\n      return function (css) {\n        var a, i, id, query, nl, selectors, node = this.parentNode;\n        if (node) {\n          for (\n            id = this.getAttribute('id') || uid,\n            query = id === uid ? id : id.replace(idSpaceFinder, idSpaceReplacer),\n            selectors = css.split(','),\n            i = 0; i < selectors.length; i++\n          ) {\n            selectors[i] = '#' + query + ' ' + selectors[i];\n          }\n          css = selectors.join(',');\n        }\n        if (id === uid) this.setAttribute('id', id);\n        nl = (node || this)[methodName](css);\n        if (id === uid) this.removeAttribute('id');\n        // return a list\n        if (createArray) {\n          i = nl.length;\n          a = new Array(i);\n          while (i--) a[i] = nl[i];\n        }\n        // return node or null\n        else {\n          a = nl;\n        }\n        return a;\n      };\n    },\n    addQueryAndAll = function (where) {\n      if (!('query' in where)) {\n        where.query = ElementPrototype.query;\n      }\n      if (!('queryAll' in where)) {\n        where.queryAll = ElementPrototype.queryAll;\n      }\n    },\n    properties = [\n      'matches', (\n        ElementPrototype.matchesSelector ||\n        ElementPrototype.webkitMatchesSelector ||\n        ElementPrototype.khtmlMatchesSelector ||\n        ElementPrototype.mozMatchesSelector ||\n        ElementPrototype.msMatchesSelector ||\n        ElementPrototype.oMatchesSelector ||\n        function matches(selector) {\n          var parentNode = this.parentNode;\n          return !!parentNode && -1 < indexOf.call(\n            parentNode.querySelectorAll(selector),\n            this\n          );\n        }\n      ),\n      'closest', function closest(selector) {\n        var parentNode = this, matches;\n        while (\n          // document has no .matches\n          (matches = parentNode && parentNode.matches) &&\n          !parentNode.matches(selector)\n        ) {\n          parentNode = parentNode.parentNode;\n        }\n        return matches ? parentNode : null;\n      },\n      'prepend', function prepend() {\n        var firstChild = this.firstChild,\n            node = mutationMacro(arguments);\n        if (firstChild) {\n          this.insertBefore(node, firstChild);\n        } else {\n          this.appendChild(node);\n        }\n      },\n      'append', function append() {\n        this.appendChild(mutationMacro(arguments));\n      },\n      'before', function before() {\n        var parentNode = this.parentNode;\n        if (parentNode) {\n          parentNode.insertBefore(\n            mutationMacro(arguments), this\n          );\n        }\n      },\n      'after', function after() {\n        var parentNode = this.parentNode,\n            nextSibling = this.nextSibling,\n            node = mutationMacro(arguments);\n        if (parentNode) {\n          if (nextSibling) {\n            parentNode.insertBefore(node, nextSibling);\n          } else {\n            parentNode.appendChild(node);\n          }\n        }\n      },\n      // WARNING - DEPRECATED - use .replaceWith() instead\n      'replace', function replace() {\n        this.replaceWith.apply(this, arguments);\n      },\n      'replaceWith', function replaceWith() {\n        var parentNode = this.parentNode;\n        if (parentNode) {\n          parentNode.replaceChild(\n            mutationMacro(arguments),\n            this\n          );\n        }\n      },\n      'remove', function remove() {\n        var parentNode = this.parentNode;\n        if (parentNode) {\n          parentNode.removeChild(this);\n        }\n      },\n      'query', createQueryMethod('querySelector'),\n      'queryAll', createQueryMethod('querySelectorAll')\n    ],\n    slice = properties.slice,\n    i = properties.length; i; i -= 2\n  ) {\n    property = properties[i - 2];\n    if (!(property in ElementPrototype)) {\n      ElementPrototype[property] = properties[i - 1];\n    }\n    if (property === 'remove') {\n      // see https://github.com/WebReflection/dom4/issues/19\n      HTMLSelectElement.prototype[property] = function () {\n        return 0 < arguments.length ?\n          selectRemove.apply(this, arguments) :\n          ElementPrototype.remove.call(this);\n      };\n    }\n    // see https://github.com/WebReflection/dom4/issues/18\n    if (/^(?:before|after|replace|replaceWith|remove)$/.test(property)) {\n      if (CharacterData && !(property in CharacterDataPrototype)) {\n        CharacterDataPrototype[property] = properties[i - 1];\n      }\n      if (DocumentType && !(property in DocumentTypePrototype)) {\n        DocumentTypePrototype[property] = properties[i - 1];\n      }\n    }\n    // see https://github.com/WebReflection/dom4/pull/26\n    if (/^(?:append|prepend)$/.test(property)) {\n      if (DocumentFragmentPrototype) {\n        if (!(property in DocumentFragmentPrototype)) {\n          DocumentFragmentPrototype[property] = properties[i - 1];\n        }\n      } else {\n        try {\n          createDocumentFragment().constructor.prototype[property] = properties[i - 1];\n        } catch(o_O) {}\n      }\n    }\n  }\n\n  // bring query and queryAll to the document too\n  addQueryAndAll(document);\n\n  // brings query and queryAll to fragments as well\n  if (DocumentFragmentPrototype) {\n    addQueryAndAll(DocumentFragmentPrototype);\n  } else {\n    try {\n      addQueryAndAll(createDocumentFragment().constructor.prototype);\n    } catch(o_O) {}\n  }\n\n  // bring query and queryAll to the ShadowRoot too\n  if (ShadowRoot) {\n    addQueryAndAll(ShadowRoot.prototype);\n  }\n\n  // most likely an IE9 only issue\n  // see https://github.com/WebReflection/dom4/issues/6\n  if (!createElement('a').matches('a')) {\n    ElementPrototype[property] = function(matches){\n      return function (selector) {\n        return matches.call(\n          this.parentNode ?\n            this :\n            createDocumentFragment().appendChild(this),\n          selector\n        );\n      };\n    }(ElementPrototype[property]);\n  }\n\n  // used to fix both old webkit and SVG\n  DOMTokenList.prototype = {\n    length: 0,\n    add: function add() {\n      for(var j = 0, token; j < arguments.length; j++) {\n        token = arguments[j];\n        if(!this.contains(token)) {\n          properties.push.call(this, property);\n        }\n      }\n      if (this._isSVG) {\n        this._.setAttribute('class', '' + this);\n      } else {\n        this._.className = '' + this;\n      }\n    },\n    contains: (function(indexOf){\n      return function contains(token) {\n        i = indexOf.call(this, property = verifyToken(token));\n        return -1 < i;\n      };\n    }([].indexOf || function (token) {\n      i = this.length;\n      while(i-- && this[i] !== token){}\n      return i;\n    })),\n    item: function item(i) {\n      return this[i] || null;\n    },\n    remove: function remove() {\n      for(var j = 0, token; j < arguments.length; j++) {\n        token = arguments[j];\n        if(this.contains(token)) {\n          properties.splice.call(this, i, 1);\n        }\n      }\n      if (this._isSVG) {\n        this._.setAttribute('class', '' + this);\n      } else {\n        this._.className = '' + this;\n      }\n    },\n    toggle: toggle,\n    toString: function toString() {\n      return properties.join.call(this, SPACE);\n    }\n  };\n\n  if (SVGElement && !(CLASS_LIST in SVGElement.prototype)) {\n    defineProperty(SVGElement.prototype, CLASS_LIST, classListDescriptor);\n  }\n\n  // http://www.w3.org/TR/dom/#domtokenlist\n  // iOS 5.1 has completely screwed this property\n  // classList in ElementPrototype is false\n  // but it's actually there as getter\n  if (!(CLASS_LIST in document.documentElement)) {\n    defineProperty(ElementPrototype, CLASS_LIST, classListDescriptor);\n  } else {\n    // iOS 5.1 and Nokia ASHA do not support multiple add or remove\n    // trying to detect and fix that in here\n    TemporaryTokenList = createElement('div')[CLASS_LIST];\n    TemporaryTokenList.add('a', 'b', 'a');\n    if ('a\\x20b' != TemporaryTokenList) {\n      // no other way to reach original methods in iOS 5.1\n      TemporaryPrototype = TemporaryTokenList.constructor.prototype;\n      if (!('add' in TemporaryPrototype)) {\n        // ASHA double fails in here\n        TemporaryPrototype = window.TemporaryTokenList.prototype;\n      }\n      wrapVerifyToken = function (original) {\n        return function () {\n          var i = 0;\n          while (i < arguments.length) {\n            original.call(this, arguments[i++]);\n          }\n        };\n      };\n      TemporaryPrototype.add = wrapVerifyToken(TemporaryPrototype.add);\n      TemporaryPrototype.remove = wrapVerifyToken(TemporaryPrototype.remove);\n      // toggle is broken too ^_^ ... let's fix it\n      TemporaryPrototype.toggle = toggle;\n    }\n  }\n\n  if (!('contains' in NodePrototype)) {\n    defineProperty(NodePrototype, 'contains', {\n      value: function (el) {\n        while (el && el !== this) el = el.parentNode;\n        return this === el;\n      }\n    });\n  }\n\n  if (!('head' in document)) {\n    defineProperty(document, 'head', {\n      get: function () {\n        return head || (\n          head = document.getElementsByTagName('head')[0]\n        );\n      }\n    });\n  }\n\n  // requestAnimationFrame partial polyfill\n  (function () {\n    for (var\n      raf,\n      rAF = window.requestAnimationFrame,\n      cAF = window.cancelAnimationFrame,\n      prefixes = ['o', 'ms', 'moz', 'webkit'],\n      i = prefixes.length;\n      !cAF && i--;\n    ) {\n      rAF = rAF || window[prefixes[i] + 'RequestAnimationFrame'];\n      cAF = window[prefixes[i] + 'CancelAnimationFrame'] ||\n            window[prefixes[i] + 'CancelRequestAnimationFrame'];\n    }\n    if (!cAF) {\n      // some FF apparently implemented rAF but no cAF \n      if (rAF) {\n        raf = rAF;\n        rAF = function (callback) {\n          var goOn = true;\n          raf(function () {\n            if (goOn) callback.apply(this, arguments);\n          });\n          return function () {\n            goOn = false;\n          };\n        };\n        cAF = function (id) {\n          id();\n        };\n      } else {\n        rAF = function (callback) {\n          return setTimeout(callback, 15, 15);\n        };\n        cAF = function (id) {\n          clearTimeout(id);\n        };\n      }\n    }\n    window.requestAnimationFrame = rAF;\n    window.cancelAnimationFrame = cAF;\n  }());\n\n  // http://www.w3.org/TR/dom/#customevent\n  try{new window.CustomEvent('?');}catch(o_O){\n    window.CustomEvent = function(\n      eventName,\n      defaultInitDict\n    ){\n\n      // the infamous substitute\n      function CustomEvent(type, eventInitDict) {\n        /*jshint eqnull:true */\n        var event = document.createEvent(eventName);\n        if (typeof type != 'string') {\n          throw new Error('An event name must be provided');\n        }\n        if (eventName == 'Event') {\n          event.initCustomEvent = initCustomEvent;\n        }\n        if (eventInitDict == null) {\n          eventInitDict = defaultInitDict;\n        }\n        event.initCustomEvent(\n          type,\n          eventInitDict.bubbles,\n          eventInitDict.cancelable,\n          eventInitDict.detail\n        );\n        return event;\n      }\n\n      // attached at runtime\n      function initCustomEvent(\n        type, bubbles, cancelable, detail\n      ) {\n        /*jshint validthis:true*/\n        this.initEvent(type, bubbles, cancelable);\n        this.detail = detail;\n      }\n\n      // that's it\n      return CustomEvent;\n    }(\n      // is this IE9 or IE10 ?\n      // where CustomEvent is there\n      // but not usable as construtor ?\n      window.CustomEvent ?\n        // use the CustomEvent interface in such case\n        'CustomEvent' : 'Event',\n        // otherwise the common compatible one\n      {\n        bubbles: false,\n        cancelable: false,\n        detail: null\n      }\n    );\n  }\n\n  // window.Event as constructor\n  try { new Event('_'); } catch (o_O) {\n    /* jshint -W022 */\n    o_O = (function ($Event) {\n      function Event(type, init) {\n        enoughArguments(arguments.length, 'Event');\n        var out = document.createEvent('Event');\n        if (!init) init = {};\n        out.initEvent(\n          type,\n          !!init.bubbles,\n          !!init.cancelable\n        );\n        return out;\n      }\n      Event.prototype = $Event.prototype;\n      return Event;\n    }(window.Event || function Event() {}));\n    defineProperty(window, 'Event', {value: o_O});\n    // Android 4 gotcha\n    if (Event !== o_O) Event = o_O;\n  }\n\n  // window.KeyboardEvent as constructor\n  try { new KeyboardEvent('_', {}); } catch (o_O) {\n    /* jshint -W022 */\n    o_O = (function ($KeyboardEvent) {\n      // code inspired by https://gist.github.com/termi/4654819\n      var\n        initType = 0,\n        defaults = {\n          char: '',\n          key: '',\n          location: 0,\n          ctrlKey: false,\n          shiftKey: false,\n          altKey: false,\n          metaKey: false,\n          altGraphKey: false,\n          repeat: false,\n          locale: navigator.language,\n          detail: 0,\n          bubbles: false,\n          cancelable: false,\n          keyCode: 0,\n          charCode: 0,\n          which: 0\n        },\n        eventType\n      ;\n      try {\n        var e = document.createEvent('KeyboardEvent');\n        e.initKeyboardEvent(\n          'keyup', false, false, window, '+', 3,\n          true, false, true, false, false\n        );\n        initType = (\n          (e.keyIdentifier || e.key) == '+' &&\n          (e.keyLocation || e.location) == 3\n        ) && (\n          e.ctrlKey ? e.altKey ? 1 : 3 : e.shiftKey ? 2 : 4\n        ) || 9;\n      } catch(o_O) {}\n      eventType = 0 < initType ? 'KeyboardEvent' : 'Event';\n\n      function getModifier(init) {\n        for (var\n          out = [],\n          keys = [\n            'ctrlKey',\n            'Control',\n            'shiftKey',\n            'Shift',\n            'altKey',\n            'Alt',\n            'metaKey',\n            'Meta',\n            'altGraphKey',\n            'AltGraph'\n          ],\n          i = 0; i < keys.length; i += 2\n        ) {\n          if (init[keys[i]])\n            out.push(keys[i + 1]);\n        }\n        return out.join(' ');\n      }\n\n      function withDefaults(target, source) {\n        for (var key in source) {\n          if (\n            source.hasOwnProperty(key) &&\n            !source.hasOwnProperty.call(target, key)\n          ) target[key] = source[key];\n        }\n        return target;\n      }\n\n      function withInitValues(key, out, init) {\n        try {\n          out[key] = init[key];\n        } catch(o_O) {}\n      }\n\n      function KeyboardEvent(type, init) {\n        enoughArguments(arguments.length, 'KeyboardEvent');\n        init = withDefaults(init || {}, defaults);\n        var\n          out = document.createEvent(eventType),\n          ctrlKey = init.ctrlKey,\n          shiftKey = init.shiftKey,\n          altKey = init.altKey,\n          metaKey = init.metaKey,\n          altGraphKey = init.altGraphKey,\n          modifiers = initType > 3 ? getModifier(init) : null,\n          key = String(init.key),\n          chr = String(init.char),\n          location = init.location,\n          keyCode = init.keyCode || (\n            (init.keyCode = key) &&\n            key.charCodeAt(0)\n          ) || 0,\n          charCode = init.charCode || (\n            (init.charCode = chr) &&\n            chr.charCodeAt(0)\n          ) || 0,\n          bubbles = init.bubbles,\n          cancelable = init.cancelable,\n          repeat = init.repeat,\n          locale = init.locale,\n          view = init.view || window,\n          args\n        ;\n        if (!init.which) init.which = init.keyCode;\n        if ('initKeyEvent' in out) {\n          out.initKeyEvent(\n            type, bubbles, cancelable, view,\n            ctrlKey, altKey, shiftKey, metaKey, keyCode, charCode\n          );\n        } else if (0 < initType && 'initKeyboardEvent' in out) {\n          args = [type, bubbles, cancelable, view];\n          switch (initType) {\n            case 1:\n              args.push(key, location, ctrlKey, shiftKey, altKey, metaKey, altGraphKey);\n              break;\n            case 2:\n              args.push(ctrlKey, altKey, shiftKey, metaKey, keyCode, charCode);\n              break;\n            case 3:\n              args.push(key, location, ctrlKey, altKey, shiftKey, metaKey, altGraphKey);\n              break;\n            case 4:\n              args.push(key, location, modifiers, repeat, locale);\n              break;\n            default:\n              args.push(char, key, location, modifiers, repeat, locale);\n          }\n          out.initKeyboardEvent.apply(out, args);\n        } else {\n          out.initEvent(type, bubbles, cancelable);\n        }\n        for (key in out) {\n          if (defaults.hasOwnProperty(key) && out[key] !== init[key]) {\n            withInitValues(key, out, init);\n          }\n        }\n        return out;\n      }\n      KeyboardEvent.prototype = $KeyboardEvent.prototype;\n      return KeyboardEvent;\n    }(window.KeyboardEvent || function KeyboardEvent() {}));\n    defineProperty(window, 'KeyboardEvent', {value: o_O});\n    // Android 4 gotcha\n    if (KeyboardEvent !== o_O) KeyboardEvent = o_O;\n  }\n\n  // window.MouseEvent as constructor\n  try { new MouseEvent('_', {}); } catch (o_O) {\n    /* jshint -W022 */\n    o_O = (function ($MouseEvent) {\n      function MouseEvent(type, init) {\n        enoughArguments(arguments.length, 'MouseEvent');\n        var out = document.createEvent('MouseEvent');\n        if (!init) init = {};\n        out.initMouseEvent(\n          type,\n          !!init.bubbles,\n          !!init.cancelable,\n          init.view || window,\n          init.detail || 1,\n          init.screenX || 0,\n          init.screenY || 0,\n          init.clientX || 0,\n          init.clientY || 0,\n          !!init.ctrlKey,\n          !!init.altKey,\n          !!init.shiftKey,\n          !!init.metaKey,\n          init.button || 0,\n          init.relatedTarget || null\n        );\n        return out;\n      }\n      MouseEvent.prototype = $MouseEvent.prototype;\n      return MouseEvent;\n    }(window.MouseEvent || function MouseEvent() {}));\n    defineProperty(window, 'MouseEvent', {value: o_O});\n    // Android 4 gotcha\n    if (MouseEvent !== o_O) MouseEvent = o_O;\n  }\n\n}(window));(function (global){'use strict';\n\n  // a WeakMap fallback for DOM nodes only used as key\n  var DOMMap = global.WeakMap || (function () {\n\n    var\n      counter = 0,\n      dispatched = false,\n      drop = false,\n      value\n    ;\n\n    function dispatch(key, ce, shouldDrop) {\n      drop = shouldDrop;\n      dispatched = false;\n      value = undefined;\n      key.dispatchEvent(ce);\n    }\n\n    function Handler(value) {\n      this.value = value;\n    }\n\n    Handler.prototype.handleEvent = function handleEvent(e) {\n      dispatched = true;\n      if (drop) {\n        e.currentTarget.removeEventListener(e.type, this, false);\n      } else {\n        value = this.value;\n      }\n    };\n\n    function DOMMap() {\n      counter++;  // make id clashing highly improbable\n      this.__ce__ = new Event(('@DOMMap:' + counter) + Math.random());\n    }\n\n    DOMMap.prototype = {\n      'constructor': DOMMap,\n      'delete': function del(key) {\n        return dispatch(key, this.__ce__, true), dispatched;\n      },\n      'get': function get(key) {\n        dispatch(key, this.__ce__, false);\n        var v = value;\n        value = undefined;\n        return v;\n      },\n      'has': function has(key) {\n        return dispatch(key, this.__ce__, false), dispatched;\n      },\n      'set': function set(key, value) {\n        dispatch(key, this.__ce__, true);\n        key.addEventListener(this.__ce__.type, new Handler(value), false);\n        return this;\n      },\n    };\n\n    return DOMMap;\n\n  }());\n\n  function Dict() {}\n  Dict.prototype = (Object.create || Object)(null);\n\n  // https://dom.spec.whatwg.org/#interface-eventtarget\n\n  function createEventListener(type, callback, options) {\n    function eventListener(e) {\n      if (eventListener.once) {\n        e.currentTarget.removeEventListener(\n          e.type,\n          callback,\n          eventListener\n        );\n        eventListener.removed = true;\n      }\n      if (eventListener.passive) {\n        e.preventDefault = createEventListener.preventDefault;\n      }\n      if (typeof eventListener.callback === 'function') {\n        /* jshint validthis: true */\n        eventListener.callback.call(this, e);\n      } else if (eventListener.callback) {\n        eventListener.callback.handleEvent(e);\n      }\n      if (eventListener.passive) {\n        delete e.preventDefault;\n      }\n    }\n    eventListener.type = type;\n    eventListener.callback = callback;\n    eventListener.capture = !!options.capture;\n    eventListener.passive = !!options.passive;\n    eventListener.once = !!options.once;\n    // currently pointless but specs say to use it, so ...\n    eventListener.removed = false;\n    return eventListener;\n  }\n\n  createEventListener.preventDefault = function preventDefault() {};\n\n  var\n    Event = global.CustomEvent,\n    hOP = Object.prototype.hasOwnProperty,\n    dE = global.dispatchEvent,\n    aEL = global.addEventListener,\n    rEL = global.removeEventListener,\n    counter = 0,\n    increment = function () { counter++; },\n    indexOf = [].indexOf || function indexOf(value){\n      var length = this.length;\n      while(length--) {\n        if (this[length] === value) {\n          break;\n        }\n      }\n      return length;\n    },\n    getListenerKey = function (options) {\n      return ''.concat(\n        options.capture ? '1' : '0',\n        options.passive ? '1' : '0',\n        options.once ? '1' : '0'\n      );\n    },\n    augment, proto\n  ;\n\n  try {\n    aEL('_', increment, {once: true});\n    dE(new Event('_'));\n    dE(new Event('_'));\n    rEL('_', increment, {once: true});\n  } catch(o_O) {}\n\n  if (counter !== 1) {\n    (function () {\n      var dm = new DOMMap();\n      function createAEL(aEL) {\n        return function addEventListener(type, handler, options) {\n          if (options && typeof options !== 'boolean') {\n            var\n              info = dm.get(this),\n              key = getListenerKey(options),\n              i, tmp, wrap\n            ;\n            if (!info) dm.set(this, (info = new Dict()));\n            if (!(type in info)) info[type] = {\n              handler: [],\n              wrap: []\n            };\n            tmp = info[type];\n            i = indexOf.call(tmp.handler, handler);\n            if (i < 0) {\n              i = tmp.handler.push(handler) - 1;\n              tmp.wrap[i] = (wrap = new Dict());\n            } else {\n              wrap = tmp.wrap[i];\n            }\n            if (!(key in wrap)) {\n              wrap[key] = createEventListener(type, handler, options);\n              aEL.call(this, type, wrap[key], wrap[key].capture);\n            }\n          } else {\n            aEL.call(this, type, handler, options);\n          }\n        };\n      }\n      function createREL(rEL) {\n        return function removeEventListener(type, handler, options) {\n          if (options && typeof options !== 'boolean') {\n            var\n              info = dm.get(this),\n              key, i, tmp, wrap\n            ;\n            if (info && (type in info)) {\n              tmp = info[type];\n              i = indexOf.call(tmp.handler, handler);\n              if (-1 < i) {\n                key = getListenerKey(options);\n                wrap = tmp.wrap[i];\n                if (key in wrap) {\n                  rEL.call(this, type, wrap[key], wrap[key].capture);\n                  delete wrap[key];\n                  // return if there are other wraps\n                  for (key in wrap) return;\n                  // otherwise remove all the things\n                  tmp.handler.splice(i, 1);\n                  tmp.wrap.splice(i, 1);\n                  // if there are no other handlers\n                  if (tmp.handler.length === 0)\n                    // drop the info[type] entirely\n                    delete info[type];\n                }\n              }\n            }\n          } else {\n            rEL.call(this, type, handler, options);\n          }\n        };\n      }\n\n      augment = function (Constructor) {\n        if (!Constructor) return;\n        var proto = Constructor.prototype;\n        proto.addEventListener = createAEL(proto.addEventListener);\n        proto.removeEventListener = createREL(proto.removeEventListener);\n      };\n\n      if (global.EventTarget) {\n        augment(EventTarget);\n      } else {\n        augment(global.Text);\n        augment(global.Element || global.HTMLElement);\n        augment(global.HTMLDocument);\n        augment(global.Window || {prototype:global});\n        augment(global.XMLHttpRequest);\n      }\n\n    }());\n  }\n\n}(self));","/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license   Licensed under MIT license\n *            See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version   4.1.1\n */\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.ES6Promise = factory());\n}(this, (function () { 'use strict';\n\nfunction objectOrFunction(x) {\n  var type = typeof x;\n  return x !== null && (type === 'object' || type === 'function');\n}\n\nfunction isFunction(x) {\n  return typeof x === 'function';\n}\n\nvar _isArray = undefined;\nif (Array.isArray) {\n  _isArray = Array.isArray;\n} else {\n  _isArray = function (x) {\n    return Object.prototype.toString.call(x) === '[object Array]';\n  };\n}\n\nvar isArray = _isArray;\n\nvar len = 0;\nvar vertxNext = undefined;\nvar customSchedulerFn = undefined;\n\nvar asap = function asap(callback, arg) {\n  queue[len] = callback;\n  queue[len + 1] = arg;\n  len += 2;\n  if (len === 2) {\n    // If len is 2, 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    if (customSchedulerFn) {\n      customSchedulerFn(flush);\n    } else {\n      scheduleFlush();\n    }\n  }\n};\n\nfunction setScheduler(scheduleFn) {\n  customSchedulerFn = scheduleFn;\n}\n\nfunction setAsap(asapFn) {\n  asap = asapFn;\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]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n  // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n  // see https://github.com/cujojs/when/issues/410 for details\n  return function () {\n    return process.nextTick(flush);\n  };\n}\n\n// vertx\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, { characterData: true });\n\n  return function () {\n    node.data = iterations = ++iterations % 2;\n  };\n}\n\n// web worker\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  // Store setTimeout reference so es6-promise will be unaffected by\n  // other code modifying setTimeout (like sinon.useFakeTimers())\n  var globalSetTimeout = setTimeout;\n  return function () {\n    return globalSetTimeout(flush, 1);\n  };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n  for (var i = 0; i < len; i += 2) {\n    var callback = queue[i];\n    var arg = queue[i + 1];\n\n    callback(arg);\n\n    queue[i] = undefined;\n    queue[i + 1] = undefined;\n  }\n\n  len = 0;\n}\n\nfunction attemptVertx() {\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 = undefined;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n  scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n  scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n  scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n  scheduleFlush = attemptVertx();\n} else {\n  scheduleFlush = useSetTimeout();\n}\n\nfunction then(onFulfillment, onRejection) {\n  var _arguments = arguments;\n\n  var parent = this;\n\n  var child = new this.constructor(noop);\n\n  if (child[PROMISE_ID] === undefined) {\n    makePromise(child);\n  }\n\n  var _state = parent._state;\n\n  if (_state) {\n    (function () {\n      var callback = _arguments[_state - 1];\n      asap(function () {\n        return invokeCallback(_state, child, callback, parent._result);\n      });\n    })();\n  } else {\n    subscribe(parent, child, onFulfillment, onRejection);\n  }\n\n  return child;\n}\n\n/**\n  `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 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 = Promise.resolve(1);\n\n  promise.then(function(value){\n    // value === 1\n  });\n  ```\n\n  @method resolve\n  @static\n  @param {Any} value value that the returned promise will be resolved with\n  Useful for tooling.\n  @return {Promise} a promise that will become fulfilled with the given\n  `value`\n*/\nfunction resolve$1(object) {\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);\n  resolve(promise, object);\n  return promise;\n}\n\nvar PROMISE_ID = Math.random().toString(36).substring(16);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nvar GET_THEN_ERROR = new ErrorObject();\n\nfunction selfFulfillment() {\n  return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n  return new TypeError('A promises callback cannot return that same promise.');\n}\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  asap(function (promise) {\n    var sealed = false;\n    var error = tryThen(then$$1, thenable, function (value) {\n      if (sealed) {\n        return;\n      }\n      sealed = true;\n      if (thenable !== value) {\n        resolve(promise, value);\n      } else {\n        fulfill(promise, value);\n      }\n    }, function (reason) {\n      if (sealed) {\n        return;\n      }\n      sealed = true;\n\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    reject(promise, thenable._result);\n  } else {\n    subscribe(thenable, undefined, function (value) {\n      return resolve(promise, value);\n    }, function (reason) {\n      return reject(promise, reason);\n    });\n  }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then$$1) {\n  if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {\n    handleOwnThenable(promise, maybeThenable);\n  } else {\n    if (then$$1 === GET_THEN_ERROR) {\n      reject(promise, GET_THEN_ERROR.error);\n      GET_THEN_ERROR.error = null;\n    } else if (then$$1 === undefined) {\n      fulfill(promise, maybeThenable);\n    } else if (isFunction(then$$1)) {\n      handleForeignThenable(promise, maybeThenable, then$$1);\n    } else {\n      fulfill(promise, maybeThenable);\n    }\n  }\n}\n\nfunction resolve(promise, value) {\n  if (promise === value) {\n    reject(promise, selfFulfillment());\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    asap(publish, promise);\n  }\n}\n\nfunction reject(promise, reason) {\n  if (promise._state !== PENDING) {\n    return;\n  }\n  promise._state = REJECTED;\n  promise._result = reason;\n\n  asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n  var _subscribers = parent._subscribers;\n  var length = _subscribers.length;\n\n  parent._onerror = null;\n\n  _subscribers[length] = child;\n  _subscribers[length + FULFILLED] = onFulfillment;\n  _subscribers[length + REJECTED] = onRejection;\n\n  if (length === 0 && parent._state) {\n    asap(publish, parent);\n  }\n}\n\nfunction publish(promise) {\n  var subscribers = promise._subscribers;\n  var settled = promise._state;\n\n  if (subscribers.length === 0) {\n    return;\n  }\n\n  var child = undefined,\n      callback = undefined,\n      detail = 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, detail);\n    } else {\n      callback(detail);\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, detail) {\n  try {\n    return callback(detail);\n  } catch (e) {\n    TRY_CATCH_ERROR.error = e;\n    return TRY_CATCH_ERROR;\n  }\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n  var hasCallback = isFunction(callback),\n      value = undefined,\n      error = undefined,\n      succeeded = undefined,\n      failed = undefined;\n\n  if (hasCallback) {\n    value = tryCatch(callback, detail);\n\n    if (value === TRY_CATCH_ERROR) {\n      failed = true;\n      error = value.error;\n      value.error = null;\n    } else {\n      succeeded = true;\n    }\n\n    if (promise === value) {\n      reject(promise, cannotReturnOwn());\n      return;\n    }\n  } else {\n    value = detail;\n    succeeded = true;\n  }\n\n  if (promise._state !== PENDING) {\n    // noop\n  } else if (hasCallback && succeeded) {\n      resolve(promise, value);\n    } else if (failed) {\n      reject(promise, error);\n    } else if (settled === FULFILLED) {\n      fulfill(promise, value);\n    } else if (settled === REJECTED) {\n      reject(promise, value);\n    }\n}\n\nfunction initializePromise(promise, resolver) {\n  try {\n    resolver(function resolvePromise(value) {\n      resolve(promise, value);\n    }, function rejectPromise(reason) {\n      reject(promise, reason);\n    });\n  } catch (e) {\n    reject(promise, e);\n  }\n}\n\nvar id = 0;\nfunction nextId() {\n  return id++;\n}\n\nfunction makePromise(promise) {\n  promise[PROMISE_ID] = id++;\n  promise._state = undefined;\n  promise._result = undefined;\n  promise._subscribers = [];\n}\n\nfunction Enumerator$1(Constructor, input) {\n  this._instanceConstructor = Constructor;\n  this.promise = new Constructor(noop);\n\n  if (!this.promise[PROMISE_ID]) {\n    makePromise(this.promise);\n  }\n\n  if (isArray(input)) {\n    this.length = input.length;\n    this._remaining = input.length;\n\n    this._result = new Array(this.length);\n\n    if (this.length === 0) {\n      fulfill(this.promise, this._result);\n    } else {\n      this.length = this.length || 0;\n      this._enumerate(input);\n      if (this._remaining === 0) {\n        fulfill(this.promise, this._result);\n      }\n    }\n  } else {\n    reject(this.promise, validationError());\n  }\n}\n\nfunction validationError() {\n  return new Error('Array Methods must be provided an Array');\n}\n\nEnumerator$1.prototype._enumerate = function (input) {\n  for (var i = 0; this._state === PENDING && i < input.length; i++) {\n    this._eachEntry(input[i], i);\n  }\n};\n\nEnumerator$1.prototype._eachEntry = function (entry, i) {\n  var c = this._instanceConstructor;\n  var resolve$$1 = c.resolve;\n\n  if (resolve$$1 === resolve$1) {\n    var _then = getThen(entry);\n\n    if (_then === then && entry._state !== PENDING) {\n      this._settledAt(entry._state, i, entry._result);\n    } else if (typeof _then !== 'function') {\n      this._remaining--;\n      this._result[i] = entry;\n    } else if (c === Promise$2) {\n      var promise = new c(noop);\n      handleMaybeThenable(promise, entry, _then);\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\nEnumerator$1.prototype._settledAt = function (state, i, value) {\n  var promise = this.promise;\n\n  if (promise._state === PENDING) {\n    this._remaining--;\n\n    if (state === REJECTED) {\n      reject(promise, value);\n    } else {\n      this._result[i] = value;\n    }\n  }\n\n  if (this._remaining === 0) {\n    fulfill(promise, this._result);\n  }\n};\n\nEnumerator$1.prototype._willSettleAt = function (promise, i) {\n  var enumerator = this;\n\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/**\n  `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 = resolve(1);\n  let promise2 = resolve(2);\n  let promise3 = resolve(3);\n  let promises = [ promise1, promise2, promise3 ];\n\n  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 `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 = resolve(1);\n  let promise2 = reject(new Error(\"2\"));\n  let promise3 = reject(new Error(\"3\"));\n  let promises = [ promise1, promise2, promise3 ];\n\n  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*/\nfunction all$1(entries) {\n  return new Enumerator$1(this, entries).promise;\n}\n\n/**\n  `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 Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 1');\n    }, 200);\n  });\n\n  let promise2 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 2');\n    }, 100);\n  });\n\n  Promise.race([promise1, promise2]).then(function(result){\n    // result === 'promise 2' because it was resolved before promise1\n    // was resolved.\n  });\n  ```\n\n  `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 Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 1');\n    }, 200);\n  });\n\n  let promise2 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      reject(new Error('promise 2'));\n    }, 100);\n  });\n\n  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  Promise.race([ajax('foo.json'), timeout(5000)])\n  ```\n\n  @method race\n  @static\n  @param {Array} promises array of promises to observe\n  Useful for tooling.\n  @return {Promise} a promise which settles in the same way as the first passed\n  promise to settle.\n*/\nfunction race$1(entries) {\n  /*jshint validthis:true */\n  var Constructor = this;\n\n  if (!isArray(entries)) {\n    return new Constructor(function (_, reject) {\n      return reject(new TypeError('You must pass an array to race.'));\n    });\n  } else {\n    return new Constructor(function (resolve, reject) {\n      var length = entries.length;\n      for (var i = 0; i < length; i++) {\n        Constructor.resolve(entries[i]).then(resolve, reject);\n      }\n    });\n  }\n}\n\n/**\n  `Promise.reject` returns a promise rejected with the passed `reason`.\n  It is shorthand for the following:\n\n  ```javascript\n  let promise = new 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 = 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 {Any} reason value that the returned promise will be rejected with.\n  Useful for tooling.\n  @return {Promise} a promise rejected with the given `reason`.\n*/\nfunction reject$1(reason) {\n  /*jshint validthis:true */\n  var Constructor = this;\n  var promise = new Constructor(noop);\n  reject(promise, reason);\n  return promise;\n}\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/**\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 Promise\n  @param {function} resolver\n  Useful for tooling.\n  @constructor\n*/\nfunction Promise$2(resolver) {\n  this[PROMISE_ID] = nextId();\n  this._result = this._state = undefined;\n  this._subscribers = [];\n\n  if (noop !== resolver) {\n    typeof resolver !== 'function' && needsResolver();\n    this instanceof Promise$2 ? initializePromise(this, resolver) : needsNew();\n  }\n}\n\nPromise$2.all = all$1;\nPromise$2.race = race$1;\nPromise$2.resolve = resolve$1;\nPromise$2.reject = reject$1;\nPromise$2._setScheduler = setScheduler;\nPromise$2._setAsap = setAsap;\nPromise$2._asap = asap;\n\nPromise$2.prototype = {\n  constructor: Promise$2,\n\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} onFulfilled\n    @param {Function} onRejected\n    Useful for tooling.\n    @return {Promise}\n  */\n  then: then,\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    Useful for tooling.\n    @return {Promise}\n  */\n  'catch': function _catch(onRejection) {\n    return this.then(null, onRejection);\n  }\n};\n\n/*global self*/\nfunction polyfill$1() {\n    var local = undefined;\n\n    if (typeof global !== 'undefined') {\n        local = global;\n    } else if (typeof self !== 'undefined') {\n        local = self;\n    } else {\n        try {\n            local = Function('return this')();\n        } catch (e) {\n            throw new Error('polyfill failed because global object is unavailable in this environment');\n        }\n    }\n\n    var P = local.Promise;\n\n    if (P) {\n        var promiseToString = null;\n        try {\n            promiseToString = Object.prototype.toString.call(P.resolve());\n        } catch (e) {\n            // silently ignored\n        }\n\n        if (promiseToString === '[object Promise]' && !P.cast) {\n            return;\n        }\n    }\n\n    local.Promise = Promise$2;\n}\n\n// Strange compat..\nPromise$2.polyfill = polyfill$1;\nPromise$2.Promise = Promise$2;\n\nreturn Promise$2;\n\n})));\n\n//# sourceMappingURL=es6-promise.map\n","'use strict';\n\nvar OneVersionConstraint = require('individual/one-version');\n\nvar MY_VERSION = '7';\nOneVersionConstraint('ev-store', MY_VERSION);\n\nvar hashKey = '__EV_STORE_KEY@' + MY_VERSION;\n\nmodule.exports = EvStore;\n\nfunction EvStore(elem) {\n    var hash = elem[hashKey];\n\n    if (!hash) {\n        hash = elem[hashKey] = {};\n    }\n\n    return hash;\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\nfunction EventEmitter() {\n  this._events = this._events || {};\n  this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// 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.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n  if (!isNumber(n) || n < 0 || isNaN(n))\n    throw TypeError('n must be a positive number');\n  this._maxListeners = n;\n  return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n  var er, handler, len, args, i, listeners;\n\n  if (!this._events)\n    this._events = {};\n\n  // If there is no 'error' event listener then throw.\n  if (type === 'error') {\n    if (!this._events.error ||\n        (isObject(this._events.error) && !this._events.error.length)) {\n      er = arguments[1];\n      if (er instanceof Error) {\n        throw er; // Unhandled 'error' event\n      } else {\n        // At least give some kind of context to the user\n        var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n        err.context = er;\n        throw err;\n      }\n    }\n  }\n\n  handler = this._events[type];\n\n  if (isUndefined(handler))\n    return false;\n\n  if (isFunction(handler)) {\n    switch (arguments.length) {\n      // fast cases\n      case 1:\n        handler.call(this);\n        break;\n      case 2:\n        handler.call(this, arguments[1]);\n        break;\n      case 3:\n        handler.call(this, arguments[1], arguments[2]);\n        break;\n      // slower\n      default:\n        args = Array.prototype.slice.call(arguments, 1);\n        handler.apply(this, args);\n    }\n  } else if (isObject(handler)) {\n    args = Array.prototype.slice.call(arguments, 1);\n    listeners = handler.slice();\n    len = listeners.length;\n    for (i = 0; i < len; i++)\n      listeners[i].apply(this, args);\n  }\n\n  return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n  var m;\n\n  if (!isFunction(listener))\n    throw TypeError('listener must be a function');\n\n  if (!this._events)\n    this._events = {};\n\n  // To avoid recursion in the case that type === \"newListener\"! Before\n  // adding it to the listeners, first emit \"newListener\".\n  if (this._events.newListener)\n    this.emit('newListener', type,\n              isFunction(listener.listener) ?\n              listener.listener : listener);\n\n  if (!this._events[type])\n    // Optimize the case of one listener. Don't need the extra array object.\n    this._events[type] = listener;\n  else if (isObject(this._events[type]))\n    // If we've already got an array, just append.\n    this._events[type].push(listener);\n  else\n    // Adding the second element, need to change to array.\n    this._events[type] = [this._events[type], listener];\n\n  // Check for listener leak\n  if (isObject(this._events[type]) && !this._events[type].warned) {\n    if (!isUndefined(this._maxListeners)) {\n      m = this._maxListeners;\n    } else {\n      m = EventEmitter.defaultMaxListeners;\n    }\n\n    if (m && m > 0 && this._events[type].length > m) {\n      this._events[type].warned = true;\n      console.error('(node) warning: possible EventEmitter memory ' +\n                    'leak detected. %d listeners added. ' +\n                    'Use emitter.setMaxListeners() to increase limit.',\n                    this._events[type].length);\n      if (typeof console.trace === 'function') {\n        // not supported in IE 10\n        console.trace();\n      }\n    }\n  }\n\n  return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n  if (!isFunction(listener))\n    throw TypeError('listener must be a function');\n\n  var fired = false;\n\n  function g() {\n    this.removeListener(type, g);\n\n    if (!fired) {\n      fired = true;\n      listener.apply(this, arguments);\n    }\n  }\n\n  g.listener = listener;\n  this.on(type, g);\n\n  return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n  var list, position, length, i;\n\n  if (!isFunction(listener))\n    throw TypeError('listener must be a function');\n\n  if (!this._events || !this._events[type])\n    return this;\n\n  list = this._events[type];\n  length = list.length;\n  position = -1;\n\n  if (list === listener ||\n      (isFunction(list.listener) && list.listener === listener)) {\n    delete this._events[type];\n    if (this._events.removeListener)\n      this.emit('removeListener', type, listener);\n\n  } else if (isObject(list)) {\n    for (i = length; i-- > 0;) {\n      if (list[i] === listener ||\n          (list[i].listener && list[i].listener === listener)) {\n        position = i;\n        break;\n      }\n    }\n\n    if (position < 0)\n      return this;\n\n    if (list.length === 1) {\n      list.length = 0;\n      delete this._events[type];\n    } else {\n      list.splice(position, 1);\n    }\n\n    if (this._events.removeListener)\n      this.emit('removeListener', type, listener);\n  }\n\n  return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n  var key, listeners;\n\n  if (!this._events)\n    return this;\n\n  // not listening for removeListener, no need to emit\n  if (!this._events.removeListener) {\n    if (arguments.length === 0)\n      this._events = {};\n    else if (this._events[type])\n      delete this._events[type];\n    return this;\n  }\n\n  // emit removeListener for all listeners on all events\n  if (arguments.length === 0) {\n    for (key in this._events) {\n      if (key === 'removeListener') continue;\n      this.removeAllListeners(key);\n    }\n    this.removeAllListeners('removeListener');\n    this._events = {};\n    return this;\n  }\n\n  listeners = this._events[type];\n\n  if (isFunction(listeners)) {\n    this.removeListener(type, listeners);\n  } else if (listeners) {\n    // LIFO order\n    while (listeners.length)\n      this.removeListener(type, listeners[listeners.length - 1]);\n  }\n  delete this._events[type];\n\n  return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n  var ret;\n  if (!this._events || !this._events[type])\n    ret = [];\n  else if (isFunction(this._events[type]))\n    ret = [this._events[type]];\n  else\n    ret = this._events[type].slice();\n  return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n  if (this._events) {\n    var evlistener = this._events[type];\n\n    if (isFunction(evlistener))\n      return 1;\n    else if (evlistener)\n      return evlistener.length;\n  }\n  return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n  return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\n","/*!\n  Copyright (c) 2015 Jed Watson.\n  Based on code that is Copyright 2013-2015, Facebook, Inc.\n  All rights reserved.\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar canUseDOM = !!(\n\t\ttypeof window !== 'undefined' &&\n\t\twindow.document &&\n\t\twindow.document.createElement\n\t);\n\n\tvar ExecutionEnvironment = {\n\n\t\tcanUseDOM: canUseDOM,\n\n\t\tcanUseWorkers: typeof Worker !== 'undefined',\n\n\t\tcanUseEventListeners:\n\t\t\tcanUseDOM && !!(window.addEventListener || window.attachEvent),\n\n\t\tcanUseViewport: canUseDOM && !!window.screen\n\n\t};\n\n\tif (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\tdefine(function () {\n\t\t\treturn ExecutionEnvironment;\n\t\t});\n\t} else if (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = ExecutionEnvironment;\n\t} else {\n\t\twindow.ExecutionEnvironment = ExecutionEnvironment;\n\t}\n\n}());\n","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = target[name];\n\t\t\t\tcopy = options[name];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\ttarget[name] = extend(deep, clone, copy);\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\ttarget[name] = copy;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","\"use strict\";\n\n/**\n * Copyright (c) 2013-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 * \n */\n\nfunction makeEmptyFunction(arg) {\n  return function () {\n    return arg;\n  };\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 */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n  return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n  return arg;\n};\n\nmodule.exports = emptyFunction;","/**\n * Copyright (c) 2013-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 */\n\n'use strict';\n\nvar emptyObject = {};\n\nif (\"production\" !== 'production') {\n  Object.freeze(emptyObject);\n}\n\nmodule.exports = emptyObject;","/**\n * Copyright (c) 2013-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 */\n\n'use strict';\n\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 (\"production\" !== '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    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    throw error;\n  }\n}\n\nmodule.exports = invariant;","\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nmodule.exports = function forEach (obj, fn, ctx) {\n    if (toString.call(fn) !== '[object Function]') {\n        throw new TypeError('iterator must be a function');\n    }\n    var l = obj.length;\n    if (l === +l) {\n        for (var i = 0; i < l; i++) {\n            fn.call(ctx, obj[i], i, obj);\n        }\n    } else {\n        for (var k in obj) {\n            if (hasOwn.call(obj, k)) {\n                fn.call(ctx, obj[k], k, obj);\n            }\n        }\n    }\n};\n\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n    var target = this;\n    if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n        throw new TypeError(ERROR_MESSAGE + target);\n    }\n    var args = slice.call(arguments, 1);\n\n    var bound;\n    var binder = function () {\n        if (this instanceof bound) {\n            var result = target.apply(\n                this,\n                args.concat(slice.call(arguments))\n            );\n            if (Object(result) === result) {\n                return result;\n            }\n            return this;\n        } else {\n            return target.apply(\n                that,\n                args.concat(slice.call(arguments))\n            );\n        }\n    };\n\n    var boundLength = Math.max(0, target.length - args.length);\n    var boundArgs = [];\n    for (var i = 0; i < boundLength; i++) {\n        boundArgs.push('$' + i);\n    }\n\n    bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n    if (target.prototype) {\n        var Empty = function Empty() {};\n        Empty.prototype = target.prototype;\n        bound.prototype = new Empty();\n        Empty.prototype = null;\n    }\n\n    return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar data = require('./index.json');\n\nexports.unicode = data;\nexports.name = {};\n\nvar emoji;\n\nfor (emoji in data) {\n  enhance(emoji);\n}\n\n/* Transform an emoji. */\nfunction enhance(character) {\n  var information = data[character];\n  var names = information.names;\n  var length = names.length;\n  var index = 0; /* First must be skipped. */\n\n  /* Add the main `name` and the emoji. */\n  information.name = names[0];\n  information.emoji = character;\n\n  /* Add names. */\n  exports.name[names[0]] = information;\n\n  while (++index < length) {\n    exports.name[names[index]] = information;\n  }\n}\n","var bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","'use strict';\n\n/* Dependencies. */\nvar trim = require('trim');\nvar paramCase = require('kebab-case');\nvar information = require('property-information');\nvar spaces = require('space-separated-tokens');\nvar commas = require('comma-separated-tokens');\nvar nan = require('is-nan');\nvar is = require('unist-util-is');\n\n/* Expose. */\nmodule.exports = wrapper;\n\n/* Wrapper around `toH`. */\nfunction wrapper(h, node, prefix) {\n  if (typeof h !== 'function') {\n    throw new Error('h is not a function');\n  }\n\n  if (!is('element', node)) {\n    throw new Error('Expected element, not `' + node + '`');\n  }\n\n  if (prefix === null || prefix === undefined) {\n    prefix = react(h) || vdom(h) ? 'h-' : false;\n  }\n\n  return toH(h, node, {\n    prefix: prefix,\n    key: 0,\n    react: react(h),\n    vdom: vdom(h),\n    hyperscript: hyperscript(h)\n  });\n}\n\n/* Transform a HAST node through a hyperscript interface\n * to *anything*! */\nfunction toH(h, node, ctx) {\n  var selector = node.tagName;\n  var properties;\n  var attributes;\n  var children;\n  var property;\n  var elements;\n  var length;\n  var index;\n  var value;\n\n  properties = node.properties;\n  attributes = {};\n\n  for (property in properties) {\n    addAttribute(attributes, property, properties[property], ctx);\n  }\n\n  if (ctx.vdom) {\n    selector = selector.toUpperCase();\n  }\n\n  if (ctx.hyperscript && attributes.id) {\n    selector += '#' + attributes.id;\n    delete attributes.id;\n  }\n\n  if ((ctx.hyperscript || ctx.vdom) && attributes.className) {\n    selector += '.' + spaces.parse(attributes.className).join('.');\n    delete attributes.className;\n  }\n\n  if (typeof attributes.style === 'string') {\n    /* VDOM expects a `string` style in `attributes`\n     * See https://github.com/Matt-Esch/virtual-dom/blob/947ecf9/\n     * docs/vnode.md#propertiesstyle-vs-propertiesattributesstyle */\n    if (ctx.vdom) {\n      if (!attributes.attributes) {\n        attributes.attributes = {};\n      }\n\n      attributes.attributes.style = attributes.style;\n      delete attributes.style;\n    /* React only accepts `style` as object. */\n    } else if (ctx.react) {\n      attributes.style = parseStyle(attributes.style);\n    }\n  }\n\n  if (ctx.prefix) {\n    ctx.key++;\n    attributes.key = ctx.prefix + ctx.key;\n  }\n\n  elements = [];\n  children = node.children || [];\n  length = children.length;\n  index = -1;\n\n  while (++index < length) {\n    value = children[index];\n\n    if (is('element', value)) {\n      elements.push(toH(h, value, ctx));\n    } else if (is('text', value)) {\n      elements.push(value.value);\n    }\n  }\n\n  /* Ensure no React warnings are triggered for\n   * void elements having children passed in. */\n  if (elements.length === 0) {\n    elements = undefined;\n  }\n\n  return h(selector, attributes, elements);\n}\n\n/* Add `name` and its `value` to `props`. */\nfunction addAttribute(props, name, value, ctx) {\n  var info = information(name) || {};\n\n  /* Ignore nully, `false`, `NaN`, and falsey known\n   * booleans. */\n  if (\n    value === null ||\n    value === undefined ||\n    value === false ||\n    nan(value) ||\n    (info.boolean && !value)\n  ) {\n    return;\n  }\n\n  name = info.name || paramCase(name);\n\n  if (info.boolean) {\n    /* Treat `true` and truthy known booleans. */\n    value = '';\n  } else if (typeof value === 'object' && 'length' in value) {\n    /* Accept `array`.  Most props are space-separater. */\n    value = (info.commaSeparated ? commas : spaces).stringify(value);\n  }\n\n  value = String(value || '');\n\n  if (\n    ctx.vdom &&\n    info.name !== 'class' &&\n    (info.mustUseAttribute || !info.name)\n  ) {\n    if (!props.attributes) {\n      props.attributes = {};\n    }\n\n    props.attributes[name] = value;\n\n    return;\n  }\n\n  props[info.propertyName || name] = value;\n}\n\n/* Check if `h` is `react.createElement`.  It doesn’t accept\n * `class` as an attribute, it must be added through the\n * `selector`. */\nfunction react(h) {\n  var node = h && h('div');\n  return node && node._store && node.key === null;\n}\n\n/* Check if `h` is `hyperscript`.  It doesn’t accept\n * `class` as an attribute, it must be added through the\n * `selector`. */\nfunction hyperscript(h) {\n  return h && h.context && h.cleanup;\n}\n\n/**\n * Check if `h` is `virtual-dom/h`.  It’s the only\n * hyperscript “compatible” interface needing `attributes`. */\nfunction vdom(h) {\n  try {\n    return h('div').type === 'VirtualNode';\n  } catch (err) { /* Empty */ }\n\n  /* istanbul ignore next */\n  return false;\n}\n\nfunction parseStyle(value) {\n  var result = {};\n  var declarations = value.split(';');\n  var length = declarations.length;\n  var index = -1;\n  var declaration;\n  var prop;\n  var pos;\n\n  while (++index < length) {\n    declaration = declarations[index];\n    pos = declaration.indexOf(':');\n    if (pos !== -1) {\n      prop = camelCase(trim(declaration.slice(0, pos)));\n      result[prop] = trim(declaration.slice(pos + 1));\n    }\n  }\n\n  return result;\n}\n\nfunction camelCase(val) {\n  if (val.slice(0, 4) === '-ms-') {\n    val = 'ms-' + val.slice(4);\n  }\n\n  return val.replace(/-([a-z])/g, replace);\n}\n\nfunction replace($0, $1) {\n  return $1.toUpperCase();\n}\n","/**\n * @author Titus Wormer\n * @copyright 2016 Titus Wormer\n * @license MIT\n * @module hast-util-from-parse5\n * @fileoverview Transform Parse5’s AST to HAST.\n */\n\n'use strict';\n\n/* Dependencies. */\nvar information = require('property-information');\nvar camelcase = require('camelcase');\nvar vfileLocation = require('vfile-location');\nvar has = require('has');\nvar h = require('hastscript');\n\n/* Expose. */\nmodule.exports = wrapper;\n\n/* Handlers. */\nvar map = {\n  '#document': root,\n  '#document-fragment': root,\n  '#text': text,\n  '#comment': comment,\n  '#documentType': doctype\n};\n\n/**\n * Wrapper to normalise options.\n *\n * @param {ASTNode} ast - Parse5 node.\n * @param {VFile|Object?} [options] - Configuration.\n * @return {HASTNode} - HAST node.\n */\nfunction wrapper(ast, options) {\n  var settings = options || {};\n  var file;\n\n  if (settings.messages) {\n    file = settings;\n    settings = {};\n  } else {\n    file = settings.file;\n  }\n\n  return transform(ast, {\n    file: file,\n    toPosition: file ? vfileLocation(file).toPosition : null,\n    verbose: settings.verbose,\n    location: false\n  });\n}\n\n/**\n * Transform a node.\n *\n * @param {ASTNode} ast - Parse5 node.\n * @param {Object} config - Configuration.\n * @return {HASTNode} - HAST node.\n */\nfunction transform(ast, config) {\n  var fn = has(map, ast.nodeName) ? map[ast.nodeName] : element;\n  var children;\n  var node;\n  var position;\n\n  if (ast.childNodes) {\n    children = nodes(ast.childNodes, config);\n  }\n\n  node = fn(ast, children, config);\n\n  if (ast.__location && config.toPosition) {\n    config.location = true;\n    position = location(ast.__location, ast, node, config);\n\n    if (position) {\n      node.position = position;\n    }\n  }\n\n  return node;\n}\n\n/**\n * Transform children.\n *\n * @param {Array.<ASTNode>} children - Parse5 nodes.\n * @param {Object} config - Configuration.\n * @return {Array.<HASTNode>} - HAST nodes.\n */\nfunction nodes(children, config) {\n  var length = children.length;\n  var index = -1;\n  var result = [];\n\n  while (++index < length) {\n    result[index] = transform(children[index], config);\n  }\n\n  return result;\n}\n\n/**\n * Transform a document.\n *\n * Stores `ast.quirksMode` in `node.data.quirksMode`.\n *\n * @param {ASTNode.<Document>} ast - Parse5 document.\n * @param {Array.<ASTNode>} children - Children of `ast`.\n * @param {Object} config - Configuration.\n * @return {HASTRoot} - Root node.\n */\nfunction root(ast, children, config) {\n  var node = {\n    type: 'root',\n    children: children,\n    data: {\n      quirksMode: ast.quirksMode\n    }\n  };\n\n  if (config.file && config.location) {\n    node.position = location({\n      startOffset: 0,\n      endOffset: String(config.file).length\n    }, ast, node, config);\n  }\n\n  return node;\n}\n\n/**\n * Transform a doctype.\n *\n * @param {ASTNode.<DocumentType>} ast - Parse5 doctype.\n * @return {HASTDoctype} - Doctype node.\n */\nfunction doctype(ast) {\n  return {\n    type: 'doctype',\n    name: ast.name || '',\n    public: ast.publicId || null,\n    system: ast.systemId || null\n  };\n}\n\n/**\n * Transform a text.\n *\n * @param {ASTNode.<Text>} ast - Parse5 text.\n * @return {HASTText} - Text node.\n */\nfunction text(ast) {\n  return {type: 'text', value: ast.value};\n}\n\n/**\n * Transform a comment.\n *\n * @param {ASTNode.<Comment>} ast - Parse5 comment.\n * @return {HASTComment} - Comment node.\n */\nfunction comment(ast) {\n  return {type: 'comment', value: ast.data};\n}\n\n/**\n * Transform an element.\n *\n * @param {ASTNode.<Element>} ast - Parse5 element.\n * @param {Array.<ASTNode>} children - Children of `ast`.\n * @return {HASTElement} - Element node.\n */\nfunction element(ast, children) {\n  var props = {};\n  var values = ast.attrs;\n  var length = values.length;\n  var index = -1;\n  var attr;\n\n  while (++index < length) {\n    attr = values[index];\n    props[(attr.prefix ? attr.prefix + ':' : '') + attr.name] = attr.value;\n  }\n\n  return h(ast.tagName, props, children);\n}\n\n/**\n * Create clean positional information.\n *\n * @param {Function} toPosition - Offset to position.\n * @param {Object?} [dirty] - Parse5 location information.\n * @return {Location} - Start and end positions.\n */\nfunction loc(toPosition, dirty) {\n  return {\n    start: toPosition(dirty.startOffset),\n    end: toPosition(dirty.endOffset)\n  };\n}\n\n/**\n * Create clean positional information.\n *\n * @param {Object} info - Parse5 location information.\n * @param {HASTNode} node - HAST node.\n * @param {Object} ast - Parse5 node.\n * @param {Object} config - Options.\n * @return {Location} - Start and end positions.\n */\nfunction location(info, ast, node, config) {\n  var start = info.startOffset;\n  var end = info.endOffset;\n  var values = info.attrs || {};\n  var propPositions = {};\n  var prop;\n  var name;\n  var reference;\n\n  for (prop in values) {\n    name = (information(prop) || {}).propertyName || camelcase(prop);\n    propPositions[name] = loc(config.toPosition, values[prop]);\n  }\n\n  /* Upstream: https://github.com/inikulin/parse5/issues/109 */\n  if (node.type === 'element' && !info.endTag) {\n    reference = node.children[node.children.length - 1];\n\n    /* Unclosed with children: */\n    if (reference && reference.position) {\n      if (reference.position.end) {\n        end = reference.position.end.offset;\n      } else {\n        end = null;\n      }\n    /* Unclosed without children: */\n    } else if (info.startTag) {\n      end = info.startTag.endOffset;\n    }\n  }\n\n  if (config.verbose && node.type === 'element') {\n    node.data = {\n      position: {\n        opening: loc(config.toPosition, info.startTag || info),\n        closing: info.endTag ? loc(config.toPosition, info.endTag) : null,\n        properties: propPositions\n      }\n    };\n  }\n\n  start = typeof start === 'number' ? config.toPosition(start) : null;\n  end = typeof end === 'number' ? config.toPosition(end) : null;\n\n  if (!start && !end) {\n    return undefined;\n  }\n\n  return {start: start, end: end};\n}\n","'use strict';\n\n/* Expose. */\nmodule.exports = parse;\n\n/* Characters */\nvar dot = '.'.charCodeAt(0);\nvar hash = '#'.charCodeAt(0);\n\n/* Parse a simple CSS selector into a HAST node. */\nfunction parse(selector) {\n  var id = null;\n  var className = [];\n  var value = selector || '';\n  var name = 'div';\n  var node;\n  var type = null;\n  var index = -1;\n  var code;\n  var length = value.length;\n  var subvalue;\n  var lastIndex;\n\n  node = {\n    type: 'element',\n    tagName: null,\n    properties: {},\n    children: []\n  };\n\n  type = null;\n\n  while (++index <= length) {\n    code = value.charCodeAt(index);\n\n    if (!code || code === dot || code === hash) {\n      subvalue = value.slice(lastIndex, index);\n\n      if (subvalue) {\n        if (type === dot) {\n          className.push(subvalue);\n        } else if (type === hash) {\n          id = subvalue;\n        } else {\n          name = subvalue;\n        }\n      }\n\n      lastIndex = index + 1;\n      type = code;\n    }\n  }\n\n  node.tagName = name;\n\n  if (id) {\n    node.properties.id = id;\n  }\n\n  if (className.length !== 0) {\n    node.properties.className = className;\n  }\n\n  return node;\n}\n","'use strict';\nmodule.exports = require('./lib/index');\n","'use strict';\n\n/* Dependencies. */\nvar xtend = require('xtend');\nvar defaults = require('./github.json');\n\n/* Expose. */\nmodule.exports = wrapper;\n\nvar own = {}.hasOwnProperty;\n\n/* Schema. */\nvar NODES = {\n  root: {children: all},\n  element: {\n    tagName: handleTagName,\n    properties: handleProperties,\n    children: all\n  },\n  text: {value: handleValue},\n  '*': {\n    data: allow,\n    position: allow\n  }\n};\n\n/* Sanitize `node`, according to `schema`. */\nfunction wrapper(node, schema) {\n  var ctx = {type: 'root', children: []};\n  var replace;\n\n  if (!node || typeof node !== 'object' || !node.type) {\n    return ctx;\n  }\n\n  replace = one(xtend(defaults, schema || {}), node, []);\n\n  if (!replace) {\n    return ctx;\n  }\n\n  if ('length' in replace) {\n    if (replace.length === 1) {\n      return replace[0];\n    }\n\n    ctx.children = replace;\n\n    return ctx;\n  }\n\n  return replace;\n}\n\n/* Sanitize `node`. */\nfunction one(schema, node, stack) {\n  var type = node && node.type;\n  var replacement = {type: node.type};\n  var replace = true;\n  var allowed;\n  var result;\n  var key;\n\n  if (!own.call(NODES, type)) {\n    replace = false;\n  } else {\n    allowed = xtend(NODES[type], NODES['*']);\n\n    for (key in allowed) {\n      result = allowed[key](schema, node[key], node, stack);\n\n      if (result === false) {\n        replace = false;\n\n        /* Set the non-safe value. */\n        replacement[key] = node[key];\n      } else if (result !== null && result !== undefined) {\n        replacement[key] = result;\n      }\n    }\n  }\n\n  if (!replace) {\n    if (\n      !replacement.children ||\n      replacement.children.length === 0 ||\n      schema.strip.indexOf(replacement.tagName) !== -1\n    ) {\n      return null;\n    }\n\n    return replacement.children;\n  }\n\n  return replacement;\n}\n\n/* Sanitize `children`. */\nfunction all(schema, children, node, stack) {\n  var nodes = children || [];\n  var length = nodes.length || 0;\n  var results = [];\n  var index = -1;\n  var result;\n\n  stack = stack.concat(node.tagName);\n\n  while (++index < length) {\n    result = one(schema, nodes[index], stack);\n\n    if (result) {\n      if ('length' in result) {\n        results = results.concat(result);\n      } else {\n        results.push(result);\n      }\n    }\n  }\n\n  return results;\n}\n\n/* Sanitize `properties`. */\nfunction handleProperties(schema, properties, node, stack) {\n  var name = handleTagName(schema, node.tagName, node, stack);\n  var attrs = schema.attributes;\n  var props = properties || {};\n  var result = {};\n  var allowed;\n  var prop;\n  var value;\n\n  allowed = own.call(attrs, name) ? attrs[name] : [];\n  allowed = [].concat(allowed, attrs['*']);\n\n  for (prop in props) {\n    value = props[prop];\n\n    if (\n      allowed.indexOf(prop) === -1 &&\n      !(data(prop) && allowed.indexOf('data*') !== -1)\n    ) {\n      continue;\n    }\n\n    if (value && typeof value === 'object' && 'length' in value) {\n      value = handlePropertyValues(schema, value, prop);\n    } else {\n      value = handlePropertyValue(schema, value, prop);\n    }\n\n    if (value !== null && value !== undefined) {\n      result[prop] = value;\n    }\n  }\n\n  return result;\n}\n\n/* Sanitize a property value which is a list. */\nfunction handlePropertyValues(schema, values, prop) {\n  var length = values.length;\n  var result = [];\n  var index = -1;\n  var value;\n\n  while (++index < length) {\n    value = handlePropertyValue(schema, values[index], prop);\n\n    if (value !== null && value !== undefined) {\n      result.push(value);\n    }\n  }\n\n  return result;\n}\n\n/* Sanitize a property value. */\nfunction handlePropertyValue(schema, value, prop) {\n  if (\n    typeof value !== 'boolean' &&\n    typeof value !== 'number' &&\n    typeof value !== 'string'\n  ) {\n    return null;\n  }\n\n  if (!handleProtocol(schema, value, prop)) {\n    return null;\n  }\n\n  if (schema.clobber.indexOf(prop) !== -1) {\n    value = schema.clobberPrefix + value;\n  }\n\n  return value;\n}\n\n/* Check whether `value` is a safe URL. */\nfunction handleProtocol(schema, value, prop) {\n  var protocols = schema.protocols;\n  var protocol;\n  var first;\n  var colon;\n  var length;\n  var index;\n\n  protocols = own.call(protocols, prop) ? protocols[prop].concat() : [];\n\n  if (protocols.length === 0) {\n    return true;\n  }\n\n  value = String(value);\n  first = value.charAt(0);\n\n  if (first === '#' || first === '/') {\n    return true;\n  }\n\n  colon = value.indexOf(':');\n\n  if (colon === -1) {\n    return true;\n  }\n\n  length = protocols.length;\n  index = -1;\n\n  while (++index < length) {\n    protocol = protocols[index];\n\n    if (\n      colon === protocol.length &&\n      value.slice(0, protocol.length) === protocol\n    ) {\n      return true;\n    }\n  }\n\n  index = value.indexOf('?');\n\n  if (index !== -1 && colon > index) {\n    return true;\n  }\n\n  index = value.indexOf('#');\n\n  if (index !== -1 && colon > index) {\n    return true;\n  }\n\n  return false;\n}\n\n/* Sanitize `tagName`. */\nfunction handleTagName(schema, tagName, node, stack) {\n  var name = typeof tagName === 'string' ? tagName : null;\n  var ancestors = schema.ancestors;\n  var length;\n  var index;\n\n  if (!name || name === '*' || schema.tagNames.indexOf(name) === -1) {\n    return false;\n  }\n\n  ancestors = own.call(ancestors, name) ? ancestors[name] : [];\n\n  /* Some nodes can break out of their context if they\n   * don’t have a certain ancestor. */\n  if (ancestors.length !== 0) {\n    length = ancestors.length + 1;\n    index = -1;\n\n    while (++index < length) {\n      if (!ancestors[index]) {\n        return false;\n      }\n\n      if (stack.indexOf(ancestors[index]) !== -1) {\n        break;\n      }\n    }\n  }\n\n  return name;\n}\n\n/* Sanitize `value`. */\nfunction handleValue(schema, value) {\n  return typeof value === 'string' ? value : '';\n}\n\n/* Allow `value`. */\nfunction allow(schema, value) {\n  return value;\n}\n\n/* Check if `prop` is a data property. */\nfunction data(prop) {\n  return prop.length > 4 && prop.slice(0, 4).toLowerCase() === 'data';\n}\n","'use strict';\n\nvar parseSelector = require('hast-util-parse-selector');\nvar camelcase = require('camelcase');\nvar propertyInformation = require('property-information');\nvar spaces = require('space-separated-tokens').parse;\nvar commas = require('comma-separated-tokens').parse;\n\nmodule.exports = h;\n\n/* Hyperscript compatible DSL for creating virtual HAST\n * trees. */\nfunction h(selector, properties, children) {\n  var node = parseSelector(selector);\n  var property;\n\n  if (\n    properties &&\n    !children &&\n    (\n      typeof properties === 'string' ||\n      'length' in properties ||\n      isNode(node.tagName, properties)\n    )\n  ) {\n    children = properties;\n    properties = null;\n  }\n\n  if (properties) {\n    for (property in properties) {\n      addProperty(node.properties, property, properties[property]);\n    }\n  }\n\n  addChild(node.children, children);\n\n  if (node.tagName === 'template') {\n    node.content = {type: 'root', children: node.children};\n    node.children = [];\n  }\n\n  return node;\n}\n\n/* Check if `value` is a valid child node of `tagName`. */\nfunction isNode(tagName, value) {\n  var type = value.type;\n\n  if (typeof type === 'string') {\n    type = type.toLowerCase();\n  }\n\n  if (tagName === 'input' || !type || typeof type !== 'string') {\n    return false;\n  }\n\n  if (typeof value.children === 'object' && 'length' in value.children) {\n    return true;\n  }\n\n  if (tagName === 'button') {\n    return type !== 'menu' &&\n      type !== 'submit' &&\n      type !== 'reset' &&\n      type !== 'button';\n  }\n\n  return 'value' in value;\n}\n\n/* Add `value` as a child to `nodes`. */\nfunction addChild(nodes, value) {\n  var index;\n  var length;\n\n  if (value === null || value === undefined) {\n    return;\n  }\n\n  if (typeof value === 'string' || typeof value === 'number') {\n    value = {type: 'text', value: String(value)};\n  }\n\n  if (typeof value === 'object' && 'length' in value) {\n    index = -1;\n    length = value.length;\n\n    while (++index < length) {\n      addChild(nodes, value[index]);\n    }\n\n    return;\n  }\n\n  if (typeof value !== 'object' || !('type' in value)) {\n    throw new Error('Expected node, nodes, or string, got `' + value + '`');\n  }\n\n  nodes.push(value);\n}\n\n/* Add `name` and its `value` to `properties`. `properties` can\n * be prefilled by `parseSelector`: it can have `id` and `className`\n * properties. */\nfunction addProperty(properties, name, value) {\n  var info = propertyInformation(name) || {};\n  var result = value;\n  var key;\n\n  /* Ignore nully and NaN values. */\n  if (value === null || value === undefined || value !== value) {\n    return;\n  }\n\n  /* Handle values. */\n  if (name === 'style') {\n    /* Accept `object`. */\n    if (typeof value !== 'string') {\n      result = [];\n\n      for (key in value) {\n        result.push([key, value[key]].join(': '));\n      }\n\n      result = result.join('; ');\n    }\n  } else if (info.spaceSeparated) {\n    /* Accept both `string` and `Array`. */\n    result = typeof value === 'string' ? spaces(result) : result;\n\n    /* Class-names (which can be added both on\n     * the `selector` and here). */\n    if (name === 'class' && properties.className) {\n      result = properties.className.concat(result);\n    }\n  } else if (info.commaSeparated) {\n    /* Accept both `string` and `Array`. */\n    result = typeof value === 'string' ? commas(result) : result;\n  }\n\n  result = parsePrimitive(info, name, result);\n\n  properties[info.propertyName || camelcase(name)] = result;\n}\n\n/* Parse a (list of) primitives. */\nfunction parsePrimitive(info, name, value) {\n  var result = value;\n  var index;\n  var length;\n\n  if (typeof value === 'object' && 'length' in value) {\n    length = value.length;\n    index = -1;\n    result = [];\n\n    while (++index < length) {\n      result[index] = parsePrimitive(info, name, value[index]);\n    }\n\n    return result;\n  }\n\n  if (info.numeric || info.positiveNumeric) {\n    if (!isNaN(result) && result !== '') {\n      result = Number(result);\n    }\n  } else if (info.boolean || info.overloadedBoolean) {\n    /* Accept `boolean` and `string`. */\n    if (\n      typeof result === 'string' &&\n      (result === '' || value.toLowerCase() === name)\n    ) {\n      result = true;\n    }\n  }\n\n  return result;\n}\n","/*\nSyntax highlighting with language autodetection.\nhttps://highlightjs.org/\n*/\n\n(function(factory) {\n\n  // Find the global object for export to both the browser and web workers.\n  var globalObject = typeof window === 'object' && window ||\n                     typeof self === 'object' && self;\n\n  // Setup highlight.js for different environments. First is Node.js or\n  // CommonJS.\n  if(typeof exports !== 'undefined') {\n    factory(exports);\n  } else if(globalObject) {\n    // Export hljs globally even when using AMD for cases when this script\n    // is loaded with others that may still expect a global hljs.\n    globalObject.hljs = factory({});\n\n    // Finally register the global hljs with AMD.\n    if(typeof define === 'function' && define.amd) {\n      define([], function() {\n        return globalObject.hljs;\n      });\n    }\n  }\n\n}(function(hljs) {\n  // Convenience variables for build-in objects\n  var ArrayProto = [],\n      objectKeys = Object.keys;\n\n  // Global internal variables used within the highlight.js library.\n  var languages = {},\n      aliases   = {};\n\n  // Regular expressions used throughout the highlight.js library.\n  var noHighlightRe    = /^(no-?highlight|plain|text)$/i,\n      languagePrefixRe = /\\blang(?:uage)?-([\\w-]+)\\b/i,\n      fixMarkupRe      = /((^(<[^>]+>|\\t|)+|(?:\\n)))/gm;\n\n  var spanEndTag = '</span>';\n\n  // Global options used when within external APIs. This is modified when\n  // calling the `hljs.configure` function.\n  var options = {\n    classPrefix: 'hljs-',\n    tabReplace: null,\n    useBR: false,\n    languages: undefined\n  };\n\n\n  /* Utility functions */\n\n  function escape(value) {\n    return value.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n  }\n\n  function tag(node) {\n    return node.nodeName.toLowerCase();\n  }\n\n  function testRe(re, lexeme) {\n    var match = re && re.exec(lexeme);\n    return match && match.index === 0;\n  }\n\n  function isNotHighlighted(language) {\n    return noHighlightRe.test(language);\n  }\n\n  function blockLanguage(block) {\n    var i, match, length, _class;\n    var classes = block.className + ' ';\n\n    classes += block.parentNode ? block.parentNode.className : '';\n\n    // language-* takes precedence over non-prefixed class names.\n    match = languagePrefixRe.exec(classes);\n    if (match) {\n      return getLanguage(match[1]) ? match[1] : 'no-highlight';\n    }\n\n    classes = classes.split(/\\s+/);\n\n    for (i = 0, length = classes.length; i < length; i++) {\n      _class = classes[i]\n\n      if (isNotHighlighted(_class) || getLanguage(_class)) {\n        return _class;\n      }\n    }\n  }\n\n  function inherit(parent) {  // inherit(parent, override_obj, override_obj, ...)\n    var key;\n    var result = {};\n    var objects = Array.prototype.slice.call(arguments, 1);\n\n    for (key in parent)\n      result[key] = parent[key];\n    objects.forEach(function(obj) {\n      for (key in obj)\n        result[key] = obj[key];\n    });\n    return result;\n  }\n\n  /* Stream merging */\n\n  function nodeStream(node) {\n    var result = [];\n    (function _nodeStream(node, offset) {\n      for (var child = node.firstChild; child; child = child.nextSibling) {\n        if (child.nodeType === 3)\n          offset += child.nodeValue.length;\n        else if (child.nodeType === 1) {\n          result.push({\n            event: 'start',\n            offset: offset,\n            node: child\n          });\n          offset = _nodeStream(child, offset);\n          // Prevent void elements from having an end tag that would actually\n          // double them in the output. There are more void elements in HTML\n          // but we list only those realistically expected in code display.\n          if (!tag(child).match(/br|hr|img|input/)) {\n            result.push({\n              event: 'stop',\n              offset: offset,\n              node: child\n            });\n          }\n        }\n      }\n      return offset;\n    })(node, 0);\n    return result;\n  }\n\n  function mergeStreams(original, highlighted, value) {\n    var processed = 0;\n    var result = '';\n    var nodeStack = [];\n\n    function selectStream() {\n      if (!original.length || !highlighted.length) {\n        return original.length ? original : highlighted;\n      }\n      if (original[0].offset !== highlighted[0].offset) {\n        return (original[0].offset < highlighted[0].offset) ? original : highlighted;\n      }\n\n      /*\n      To avoid starting the stream just before it should stop the order is\n      ensured that original always starts first and closes last:\n\n      if (event1 == 'start' && event2 == 'start')\n        return original;\n      if (event1 == 'start' && event2 == 'stop')\n        return highlighted;\n      if (event1 == 'stop' && event2 == 'start')\n        return original;\n      if (event1 == 'stop' && event2 == 'stop')\n        return highlighted;\n\n      ... which is collapsed to:\n      */\n      return highlighted[0].event === 'start' ? original : highlighted;\n    }\n\n    function open(node) {\n      function attr_str(a) {return ' ' + a.nodeName + '=\"' + escape(a.value).replace('\"', '&quot;') + '\"';}\n      result += '<' + tag(node) + ArrayProto.map.call(node.attributes, attr_str).join('') + '>';\n    }\n\n    function close(node) {\n      result += '</' + tag(node) + '>';\n    }\n\n    function render(event) {\n      (event.event === 'start' ? open : close)(event.node);\n    }\n\n    while (original.length || highlighted.length) {\n      var stream = selectStream();\n      result += escape(value.substring(processed, stream[0].offset));\n      processed = stream[0].offset;\n      if (stream === original) {\n        /*\n        On any opening or closing tag of the original markup we first close\n        the entire highlighted node stack, then render the original tag along\n        with all the following original tags at the same offset and then\n        reopen all the tags on the highlighted stack.\n        */\n        nodeStack.reverse().forEach(close);\n        do {\n          render(stream.splice(0, 1)[0]);\n          stream = selectStream();\n        } while (stream === original && stream.length && stream[0].offset === processed);\n        nodeStack.reverse().forEach(open);\n      } else {\n        if (stream[0].event === 'start') {\n          nodeStack.push(stream[0].node);\n        } else {\n          nodeStack.pop();\n        }\n        render(stream.splice(0, 1)[0]);\n      }\n    }\n    return result + escape(value.substr(processed));\n  }\n\n  /* Initialization */\n\n  function expand_mode(mode) {\n    if (mode.variants && !mode.cached_variants) {\n      mode.cached_variants = mode.variants.map(function(variant) {\n        return inherit(mode, {variants: null}, variant);\n      });\n    }\n    return mode.cached_variants || (mode.endsWithParent && [inherit(mode)]) || [mode];\n  }\n\n  function compileLanguage(language) {\n\n    function reStr(re) {\n        return (re && re.source) || re;\n    }\n\n    function langRe(value, global) {\n      return new RegExp(\n        reStr(value),\n        'm' + (language.case_insensitive ? 'i' : '') + (global ? 'g' : '')\n      );\n    }\n\n    function compileMode(mode, parent) {\n      if (mode.compiled)\n        return;\n      mode.compiled = true;\n\n      mode.keywords = mode.keywords || mode.beginKeywords;\n      if (mode.keywords) {\n        var compiled_keywords = {};\n\n        var flatten = function(className, str) {\n          if (language.case_insensitive) {\n            str = str.toLowerCase();\n          }\n          str.split(' ').forEach(function(kw) {\n            var pair = kw.split('|');\n            compiled_keywords[pair[0]] = [className, pair[1] ? Number(pair[1]) : 1];\n          });\n        };\n\n        if (typeof mode.keywords === 'string') { // string\n          flatten('keyword', mode.keywords);\n        } else {\n          objectKeys(mode.keywords).forEach(function (className) {\n            flatten(className, mode.keywords[className]);\n          });\n        }\n        mode.keywords = compiled_keywords;\n      }\n      mode.lexemesRe = langRe(mode.lexemes || /\\w+/, true);\n\n      if (parent) {\n        if (mode.beginKeywords) {\n          mode.begin = '\\\\b(' + mode.beginKeywords.split(' ').join('|') + ')\\\\b';\n        }\n        if (!mode.begin)\n          mode.begin = /\\B|\\b/;\n        mode.beginRe = langRe(mode.begin);\n        if (!mode.end && !mode.endsWithParent)\n          mode.end = /\\B|\\b/;\n        if (mode.end)\n          mode.endRe = langRe(mode.end);\n        mode.terminator_end = reStr(mode.end) || '';\n        if (mode.endsWithParent && parent.terminator_end)\n          mode.terminator_end += (mode.end ? '|' : '') + parent.terminator_end;\n      }\n      if (mode.illegal)\n        mode.illegalRe = langRe(mode.illegal);\n      if (mode.relevance == null)\n        mode.relevance = 1;\n      if (!mode.contains) {\n        mode.contains = [];\n      }\n      mode.contains = Array.prototype.concat.apply([], mode.contains.map(function(c) {\n        return expand_mode(c === 'self' ? mode : c)\n      }));\n      mode.contains.forEach(function(c) {compileMode(c, mode);});\n\n      if (mode.starts) {\n        compileMode(mode.starts, parent);\n      }\n\n      var terminators =\n        mode.contains.map(function(c) {\n          return c.beginKeywords ? '\\\\.?(' + c.begin + ')\\\\.?' : c.begin;\n        })\n        .concat([mode.terminator_end, mode.illegal])\n        .map(reStr)\n        .filter(Boolean);\n      mode.terminators = terminators.length ? langRe(terminators.join('|'), true) : {exec: function(/*s*/) {return null;}};\n    }\n\n    compileMode(language);\n  }\n\n  /*\n  Core highlighting function. Accepts a language name, or an alias, and a\n  string with the code to highlight. Returns an object with the following\n  properties:\n\n  - relevance (int)\n  - value (an HTML string with highlighting markup)\n\n  */\n  function highlight(name, value, ignore_illegals, continuation) {\n\n    function subMode(lexeme, mode) {\n      var i, length;\n\n      for (i = 0, length = mode.contains.length; i < length; i++) {\n        if (testRe(mode.contains[i].beginRe, lexeme)) {\n          return mode.contains[i];\n        }\n      }\n    }\n\n    function endOfMode(mode, lexeme) {\n      if (testRe(mode.endRe, lexeme)) {\n        while (mode.endsParent && mode.parent) {\n          mode = mode.parent;\n        }\n        return mode;\n      }\n      if (mode.endsWithParent) {\n        return endOfMode(mode.parent, lexeme);\n      }\n    }\n\n    function isIllegal(lexeme, mode) {\n      return !ignore_illegals && testRe(mode.illegalRe, lexeme);\n    }\n\n    function keywordMatch(mode, match) {\n      var match_str = language.case_insensitive ? match[0].toLowerCase() : match[0];\n      return mode.keywords.hasOwnProperty(match_str) && mode.keywords[match_str];\n    }\n\n    function buildSpan(classname, insideSpan, leaveOpen, noPrefix) {\n      var classPrefix = noPrefix ? '' : options.classPrefix,\n          openSpan    = '<span class=\"' + classPrefix,\n          closeSpan   = leaveOpen ? '' : spanEndTag\n\n      openSpan += classname + '\">';\n\n      return openSpan + insideSpan + closeSpan;\n    }\n\n    function processKeywords() {\n      var keyword_match, last_index, match, result;\n\n      if (!top.keywords)\n        return escape(mode_buffer);\n\n      result = '';\n      last_index = 0;\n      top.lexemesRe.lastIndex = 0;\n      match = top.lexemesRe.exec(mode_buffer);\n\n      while (match) {\n        result += escape(mode_buffer.substring(last_index, match.index));\n        keyword_match = keywordMatch(top, match);\n        if (keyword_match) {\n          relevance += keyword_match[1];\n          result += buildSpan(keyword_match[0], escape(match[0]));\n        } else {\n          result += escape(match[0]);\n        }\n        last_index = top.lexemesRe.lastIndex;\n        match = top.lexemesRe.exec(mode_buffer);\n      }\n      return result + escape(mode_buffer.substr(last_index));\n    }\n\n    function processSubLanguage() {\n      var explicit = typeof top.subLanguage === 'string';\n      if (explicit && !languages[top.subLanguage]) {\n        return escape(mode_buffer);\n      }\n\n      var result = explicit ?\n                   highlight(top.subLanguage, mode_buffer, true, continuations[top.subLanguage]) :\n                   highlightAuto(mode_buffer, top.subLanguage.length ? top.subLanguage : undefined);\n\n      // Counting embedded language score towards the host language may be disabled\n      // with zeroing the containing mode relevance. Usecase in point is Markdown that\n      // allows XML everywhere and makes every XML snippet to have a much larger Markdown\n      // score.\n      if (top.relevance > 0) {\n        relevance += result.relevance;\n      }\n      if (explicit) {\n        continuations[top.subLanguage] = result.top;\n      }\n      return buildSpan(result.language, result.value, false, true);\n    }\n\n    function processBuffer() {\n      result += (top.subLanguage != null ? processSubLanguage() : processKeywords());\n      mode_buffer = '';\n    }\n\n    function startNewMode(mode) {\n      result += mode.className? buildSpan(mode.className, '', true): '';\n      top = Object.create(mode, {parent: {value: top}});\n    }\n\n    function processLexeme(buffer, lexeme) {\n\n      mode_buffer += buffer;\n\n      if (lexeme == null) {\n        processBuffer();\n        return 0;\n      }\n\n      var new_mode = subMode(lexeme, top);\n      if (new_mode) {\n        if (new_mode.skip) {\n          mode_buffer += lexeme;\n        } else {\n          if (new_mode.excludeBegin) {\n            mode_buffer += lexeme;\n          }\n          processBuffer();\n          if (!new_mode.returnBegin && !new_mode.excludeBegin) {\n            mode_buffer = lexeme;\n          }\n        }\n        startNewMode(new_mode, lexeme);\n        return new_mode.returnBegin ? 0 : lexeme.length;\n      }\n\n      var end_mode = endOfMode(top, lexeme);\n      if (end_mode) {\n        var origin = top;\n        if (origin.skip) {\n          mode_buffer += lexeme;\n        } else {\n          if (!(origin.returnEnd || origin.excludeEnd)) {\n            mode_buffer += lexeme;\n          }\n          processBuffer();\n          if (origin.excludeEnd) {\n            mode_buffer = lexeme;\n          }\n        }\n        do {\n          if (top.className) {\n            result += spanEndTag;\n          }\n          if (!top.skip) {\n            relevance += top.relevance;\n          }\n          top = top.parent;\n        } while (top !== end_mode.parent);\n        if (end_mode.starts) {\n          startNewMode(end_mode.starts, '');\n        }\n        return origin.returnEnd ? 0 : lexeme.length;\n      }\n\n      if (isIllegal(lexeme, top))\n        throw new Error('Illegal lexeme \"' + lexeme + '\" for mode \"' + (top.className || '<unnamed>') + '\"');\n\n      /*\n      Parser should not reach this point as all types of lexemes should be caught\n      earlier, but if it does due to some bug make sure it advances at least one\n      character forward to prevent infinite looping.\n      */\n      mode_buffer += lexeme;\n      return lexeme.length || 1;\n    }\n\n    var language = getLanguage(name);\n    if (!language) {\n      throw new Error('Unknown language: \"' + name + '\"');\n    }\n\n    compileLanguage(language);\n    var top = continuation || language;\n    var continuations = {}; // keep continuations for sub-languages\n    var result = '', current;\n    for(current = top; current !== language; current = current.parent) {\n      if (current.className) {\n        result = buildSpan(current.className, '', true) + result;\n      }\n    }\n    var mode_buffer = '';\n    var relevance = 0;\n    try {\n      var match, count, index = 0;\n      while (true) {\n        top.terminators.lastIndex = index;\n        match = top.terminators.exec(value);\n        if (!match)\n          break;\n        count = processLexeme(value.substring(index, match.index), match[0]);\n        index = match.index + count;\n      }\n      processLexeme(value.substr(index));\n      for(current = top; current.parent; current = current.parent) { // close dangling modes\n        if (current.className) {\n          result += spanEndTag;\n        }\n      }\n      return {\n        relevance: relevance,\n        value: result,\n        language: name,\n        top: top\n      };\n    } catch (e) {\n      if (e.message && e.message.indexOf('Illegal') !== -1) {\n        return {\n          relevance: 0,\n          value: escape(value)\n        };\n      } else {\n        throw e;\n      }\n    }\n  }\n\n  /*\n  Highlighting with language detection. Accepts a string with the code to\n  highlight. Returns an object with the following properties:\n\n  - language (detected language)\n  - relevance (int)\n  - value (an HTML string with highlighting markup)\n  - second_best (object with the same structure for second-best heuristically\n    detected language, may be absent)\n\n  */\n  function highlightAuto(text, languageSubset) {\n    languageSubset = languageSubset || options.languages || objectKeys(languages);\n    var result = {\n      relevance: 0,\n      value: escape(text)\n    };\n    var second_best = result;\n    languageSubset.filter(getLanguage).forEach(function(name) {\n      var current = highlight(name, text, false);\n      current.language = name;\n      if (current.relevance > second_best.relevance) {\n        second_best = current;\n      }\n      if (current.relevance > result.relevance) {\n        second_best = result;\n        result = current;\n      }\n    });\n    if (second_best.language) {\n      result.second_best = second_best;\n    }\n    return result;\n  }\n\n  /*\n  Post-processing of the highlighted markup:\n\n  - replace TABs with something more useful\n  - replace real line-breaks with '<br>' for non-pre containers\n\n  */\n  function fixMarkup(value) {\n    return !(options.tabReplace || options.useBR)\n      ? value\n      : value.replace(fixMarkupRe, function(match, p1) {\n          if (options.useBR && match === '\\n') {\n            return '<br>';\n          } else if (options.tabReplace) {\n            return p1.replace(/\\t/g, options.tabReplace);\n          }\n          return '';\n      });\n  }\n\n  function buildClassName(prevClassName, currentLang, resultLang) {\n    var language = currentLang ? aliases[currentLang] : resultLang,\n        result   = [prevClassName.trim()];\n\n    if (!prevClassName.match(/\\bhljs\\b/)) {\n      result.push('hljs');\n    }\n\n    if (prevClassName.indexOf(language) === -1) {\n      result.push(language);\n    }\n\n    return result.join(' ').trim();\n  }\n\n  /*\n  Applies highlighting to a DOM node containing code. Accepts a DOM node and\n  two optional parameters for fixMarkup.\n  */\n  function highlightBlock(block) {\n    var node, originalStream, result, resultNode, text;\n    var language = blockLanguage(block);\n\n    if (isNotHighlighted(language))\n        return;\n\n    if (options.useBR) {\n      node = document.createElementNS('http://www.w3.org/1999/xhtml', 'div');\n      node.innerHTML = block.innerHTML.replace(/\\n/g, '').replace(/<br[ \\/]*>/g, '\\n');\n    } else {\n      node = block;\n    }\n    text = node.textContent;\n    result = language ? highlight(language, text, true) : highlightAuto(text);\n\n    originalStream = nodeStream(node);\n    if (originalStream.length) {\n      resultNode = document.createElementNS('http://www.w3.org/1999/xhtml', 'div');\n      resultNode.innerHTML = result.value;\n      result.value = mergeStreams(originalStream, nodeStream(resultNode), text);\n    }\n    result.value = fixMarkup(result.value);\n\n    block.innerHTML = result.value;\n    block.className = buildClassName(block.className, language, result.language);\n    block.result = {\n      language: result.language,\n      re: result.relevance\n    };\n    if (result.second_best) {\n      block.second_best = {\n        language: result.second_best.language,\n        re: result.second_best.relevance\n      };\n    }\n  }\n\n  /*\n  Updates highlight.js global options with values passed in the form of an object.\n  */\n  function configure(user_options) {\n    options = inherit(options, user_options);\n  }\n\n  /*\n  Applies highlighting to all <pre><code>..</code></pre> blocks on a page.\n  */\n  function initHighlighting() {\n    if (initHighlighting.called)\n      return;\n    initHighlighting.called = true;\n\n    var blocks = document.querySelectorAll('pre code');\n    ArrayProto.forEach.call(blocks, highlightBlock);\n  }\n\n  /*\n  Attaches highlighting to the page load event.\n  */\n  function initHighlightingOnLoad() {\n    addEventListener('DOMContentLoaded', initHighlighting, false);\n    addEventListener('load', initHighlighting, false);\n  }\n\n  function registerLanguage(name, language) {\n    var lang = languages[name] = language(hljs);\n    if (lang.aliases) {\n      lang.aliases.forEach(function(alias) {aliases[alias] = name;});\n    }\n  }\n\n  function listLanguages() {\n    return objectKeys(languages);\n  }\n\n  function getLanguage(name) {\n    name = (name || '').toLowerCase();\n    return languages[name] || languages[aliases[name]];\n  }\n\n  /* Interface definition */\n\n  hljs.highlight = highlight;\n  hljs.highlightAuto = highlightAuto;\n  hljs.fixMarkup = fixMarkup;\n  hljs.highlightBlock = highlightBlock;\n  hljs.configure = configure;\n  hljs.initHighlighting = initHighlighting;\n  hljs.initHighlightingOnLoad = initHighlightingOnLoad;\n  hljs.registerLanguage = registerLanguage;\n  hljs.listLanguages = listLanguages;\n  hljs.getLanguage = getLanguage;\n  hljs.inherit = inherit;\n\n  // Common regexps\n  hljs.IDENT_RE = '[a-zA-Z]\\\\w*';\n  hljs.UNDERSCORE_IDENT_RE = '[a-zA-Z_]\\\\w*';\n  hljs.NUMBER_RE = '\\\\b\\\\d+(\\\\.\\\\d+)?';\n  hljs.C_NUMBER_RE = '(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)'; // 0x..., 0..., decimal, float\n  hljs.BINARY_NUMBER_RE = '\\\\b(0b[01]+)'; // 0b...\n  hljs.RE_STARTERS_RE = '!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~';\n\n  // Common modes\n  hljs.BACKSLASH_ESCAPE = {\n    begin: '\\\\\\\\[\\\\s\\\\S]', relevance: 0\n  };\n  hljs.APOS_STRING_MODE = {\n    className: 'string',\n    begin: '\\'', end: '\\'',\n    illegal: '\\\\n',\n    contains: [hljs.BACKSLASH_ESCAPE]\n  };\n  hljs.QUOTE_STRING_MODE = {\n    className: 'string',\n    begin: '\"', end: '\"',\n    illegal: '\\\\n',\n    contains: [hljs.BACKSLASH_ESCAPE]\n  };\n  hljs.PHRASAL_WORDS_MODE = {\n    begin: /\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b/\n  };\n  hljs.COMMENT = function (begin, end, inherits) {\n    var mode = hljs.inherit(\n      {\n        className: 'comment',\n        begin: begin, end: end,\n        contains: []\n      },\n      inherits || {}\n    );\n    mode.contains.push(hljs.PHRASAL_WORDS_MODE);\n    mode.contains.push({\n      className: 'doctag',\n      begin: '(?:TODO|FIXME|NOTE|BUG|XXX):',\n      relevance: 0\n    });\n    return mode;\n  };\n  hljs.C_LINE_COMMENT_MODE = hljs.COMMENT('//', '$');\n  hljs.C_BLOCK_COMMENT_MODE = hljs.COMMENT('/\\\\*', '\\\\*/');\n  hljs.HASH_COMMENT_MODE = hljs.COMMENT('#', '$');\n  hljs.NUMBER_MODE = {\n    className: 'number',\n    begin: hljs.NUMBER_RE,\n    relevance: 0\n  };\n  hljs.C_NUMBER_MODE = {\n    className: 'number',\n    begin: hljs.C_NUMBER_RE,\n    relevance: 0\n  };\n  hljs.BINARY_NUMBER_MODE = {\n    className: 'number',\n    begin: hljs.BINARY_NUMBER_RE,\n    relevance: 0\n  };\n  hljs.CSS_NUMBER_MODE = {\n    className: 'number',\n    begin: hljs.NUMBER_RE + '(' +\n      '%|em|ex|ch|rem'  +\n      '|vw|vh|vmin|vmax' +\n      '|cm|mm|in|pt|pc|px' +\n      '|deg|grad|rad|turn' +\n      '|s|ms' +\n      '|Hz|kHz' +\n      '|dpi|dpcm|dppx' +\n      ')?',\n    relevance: 0\n  };\n  hljs.REGEXP_MODE = {\n    className: 'regexp',\n    begin: /\\//, end: /\\/[gimuy]*/,\n    illegal: /\\n/,\n    contains: [\n      hljs.BACKSLASH_ESCAPE,\n      {\n        begin: /\\[/, end: /\\]/,\n        relevance: 0,\n        contains: [hljs.BACKSLASH_ESCAPE]\n      }\n    ]\n  };\n  hljs.TITLE_MODE = {\n    className: 'title',\n    begin: hljs.IDENT_RE,\n    relevance: 0\n  };\n  hljs.UNDERSCORE_TITLE_MODE = {\n    className: 'title',\n    begin: hljs.UNDERSCORE_IDENT_RE,\n    relevance: 0\n  };\n  hljs.METHOD_GUARD = {\n    // excludes method names from keyword processing\n    begin: '\\\\.\\\\s*' + hljs.UNDERSCORE_IDENT_RE,\n    relevance: 0\n  };\n\n  return hljs;\n}));\n","module.exports = function(hljs) {\n  var VAR = {\n    className: 'variable',\n    variants: [\n      {begin: /\\$[\\w\\d#@][\\w\\d_]*/},\n      {begin: /\\$\\{(.*?)}/}\n    ]\n  };\n  var QUOTE_STRING = {\n    className: 'string',\n    begin: /\"/, end: /\"/,\n    contains: [\n      hljs.BACKSLASH_ESCAPE,\n      VAR,\n      {\n        className: 'variable',\n        begin: /\\$\\(/, end: /\\)/,\n        contains: [hljs.BACKSLASH_ESCAPE]\n      }\n    ]\n  };\n  var APOS_STRING = {\n    className: 'string',\n    begin: /'/, end: /'/\n  };\n\n  return {\n    aliases: ['sh', 'zsh'],\n    lexemes: /\\b-?[a-z\\._]+\\b/,\n    keywords: {\n      keyword:\n        'if then else elif fi for while in do done case esac function',\n      literal:\n        'true false',\n      built_in:\n        // Shell built-ins\n        // http://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html\n        'break cd continue eval exec exit export getopts hash pwd readonly return shift test times ' +\n        'trap umask unset ' +\n        // Bash built-ins\n        'alias bind builtin caller command declare echo enable help let local logout mapfile printf ' +\n        'read readarray source type typeset ulimit unalias ' +\n        // Shell modifiers\n        'set shopt ' +\n        // Zsh built-ins\n        'autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles ' +\n        'compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate ' +\n        'fc fg float functions getcap getln history integer jobs kill limit log noglob popd print ' +\n        'pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit ' +\n        'unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof ' +\n        'zpty zregexparse zsocket zstyle ztcp',\n      _:\n        '-ne -eq -lt -gt -f -d -e -s -l -a' // relevance booster\n    },\n    contains: [\n      {\n        className: 'meta',\n        begin: /^#![^\\n]+sh\\s*$/,\n        relevance: 10\n      },\n      {\n        className: 'function',\n        begin: /\\w[\\w\\d_]*\\s*\\(\\s*\\)\\s*\\{/,\n        returnBegin: true,\n        contains: [hljs.inherit(hljs.TITLE_MODE, {begin: /\\w[\\w\\d_]*/})],\n        relevance: 0\n      },\n      hljs.HASH_COMMENT_MODE,\n      QUOTE_STRING,\n      APOS_STRING,\n      VAR\n    ]\n  };\n};","module.exports = function(hljs) {\n  var IDENT_RE = '[a-zA-Z-][a-zA-Z0-9_-]*';\n  var RULE = {\n    begin: /[A-Z\\_\\.\\-]+\\s*:/, returnBegin: true, end: ';', endsWithParent: true,\n    contains: [\n      {\n        className: 'attribute',\n        begin: /\\S/, end: ':', excludeEnd: true,\n        starts: {\n          endsWithParent: true, excludeEnd: true,\n          contains: [\n            {\n              begin: /[\\w-]+\\(/, returnBegin: true,\n              contains: [\n                {\n                  className: 'built_in',\n                  begin: /[\\w-]+/\n                },\n                {\n                  begin: /\\(/, end: /\\)/,\n                  contains: [\n                    hljs.APOS_STRING_MODE,\n                    hljs.QUOTE_STRING_MODE\n                  ]\n                }\n              ]\n            },\n            hljs.CSS_NUMBER_MODE,\n            hljs.QUOTE_STRING_MODE,\n            hljs.APOS_STRING_MODE,\n            hljs.C_BLOCK_COMMENT_MODE,\n            {\n              className: 'number', begin: '#[0-9A-Fa-f]+'\n            },\n            {\n              className: 'meta', begin: '!important'\n            }\n          ]\n        }\n      }\n    ]\n  };\n\n  return {\n    case_insensitive: true,\n    illegal: /[=\\/|'\\$]/,\n    contains: [\n      hljs.C_BLOCK_COMMENT_MODE,\n      {\n        className: 'selector-id', begin: /#[A-Za-z0-9_-]+/\n      },\n      {\n        className: 'selector-class', begin: /\\.[A-Za-z0-9_-]+/\n      },\n      {\n        className: 'selector-attr',\n        begin: /\\[/, end: /\\]/,\n        illegal: '$'\n      },\n      {\n        className: 'selector-pseudo',\n        begin: /:(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\"'.]+/\n      },\n      {\n        begin: '@(font-face|page)',\n        lexemes: '[a-z-]+',\n        keywords: 'font-face page'\n      },\n      {\n        begin: '@', end: '[{;]', // at_rule eating first \"{\" is a good thing\n                                 // because it doesn’t let it to be parsed as\n                                 // a rule set but instead drops parser into\n                                 // the default mode which is how it should be.\n        illegal: /:/, // break on Less variables @var: ...\n        contains: [\n          {\n            className: 'keyword',\n            begin: /\\w+/\n          },\n          {\n            begin: /\\s/, endsWithParent: true, excludeEnd: true,\n            relevance: 0,\n            contains: [\n              hljs.APOS_STRING_MODE, hljs.QUOTE_STRING_MODE,\n              hljs.CSS_NUMBER_MODE\n            ]\n          }\n        ]\n      },\n      {\n        className: 'selector-tag', begin: IDENT_RE,\n        relevance: 0\n      },\n      {\n        begin: '{', end: '}',\n        illegal: /\\S/,\n        contains: [\n          hljs.C_BLOCK_COMMENT_MODE,\n          RULE,\n        ]\n      }\n    ]\n  };\n};","module.exports = function(hljs) {\n  var IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\n  var KEYWORDS = {\n    keyword:\n      'in of if for while finally var new function do return void else break catch ' +\n      'instanceof with throw case default try this switch continue typeof delete ' +\n      'let yield const export super debugger as async await static ' +\n      // ECMAScript 6 modules import\n      'import from as'\n    ,\n    literal:\n      'true false null undefined NaN Infinity',\n    built_in:\n      'eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent ' +\n      'encodeURI encodeURIComponent escape unescape Object Function Boolean Error ' +\n      'EvalError InternalError RangeError ReferenceError StopIteration SyntaxError ' +\n      'TypeError URIError Number Math Date String RegExp Array Float32Array ' +\n      'Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array ' +\n      'Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require ' +\n      'module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect ' +\n      'Promise'\n  };\n  var EXPRESSIONS;\n  var NUMBER = {\n    className: 'number',\n    variants: [\n      { begin: '\\\\b(0[bB][01]+)' },\n      { begin: '\\\\b(0[oO][0-7]+)' },\n      { begin: hljs.C_NUMBER_RE }\n    ],\n    relevance: 0\n  };\n  var SUBST = {\n    className: 'subst',\n    begin: '\\\\$\\\\{', end: '\\\\}',\n    keywords: KEYWORDS,\n    contains: []  // defined later\n  };\n  var TEMPLATE_STRING = {\n    className: 'string',\n    begin: '`', end: '`',\n    contains: [\n      hljs.BACKSLASH_ESCAPE,\n      SUBST\n    ]\n  };\n  SUBST.contains = [\n    hljs.APOS_STRING_MODE,\n    hljs.QUOTE_STRING_MODE,\n    TEMPLATE_STRING,\n    NUMBER,\n    hljs.REGEXP_MODE\n  ]\n  var PARAMS_CONTAINS = SUBST.contains.concat([\n    hljs.C_BLOCK_COMMENT_MODE,\n    hljs.C_LINE_COMMENT_MODE\n  ]);\n\n  return {\n    aliases: ['js', 'jsx'],\n    keywords: KEYWORDS,\n    contains: [\n      {\n        className: 'meta',\n        relevance: 10,\n        begin: /^\\s*['\"]use (strict|asm)['\"]/\n      },\n      {\n        className: 'meta',\n        begin: /^#!/, end: /$/\n      },\n      hljs.APOS_STRING_MODE,\n      hljs.QUOTE_STRING_MODE,\n      TEMPLATE_STRING,\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      NUMBER,\n      { // object attr container\n        begin: /[{,]\\s*/, relevance: 0,\n        contains: [\n          {\n            begin: IDENT_RE + '\\\\s*:', returnBegin: true,\n            relevance: 0,\n            contains: [{className: 'attr', begin: IDENT_RE, relevance: 0}]\n          }\n        ]\n      },\n      { // \"value\" container\n        begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\n        keywords: 'return throw case',\n        contains: [\n          hljs.C_LINE_COMMENT_MODE,\n          hljs.C_BLOCK_COMMENT_MODE,\n          hljs.REGEXP_MODE,\n          {\n            className: 'function',\n            begin: '(\\\\(.*?\\\\)|' + IDENT_RE + ')\\\\s*=>', returnBegin: true,\n            end: '\\\\s*=>',\n            contains: [\n              {\n                className: 'params',\n                variants: [\n                  {\n                    begin: IDENT_RE\n                  },\n                  {\n                    begin: /\\(\\s*\\)/,\n                  },\n                  {\n                    begin: /\\(/, end: /\\)/,\n                    excludeBegin: true, excludeEnd: true,\n                    keywords: KEYWORDS,\n                    contains: PARAMS_CONTAINS\n                  }\n                ]\n              }\n            ]\n          },\n          { // E4X / JSX\n            begin: /</, end: /(\\/\\w+|\\w+\\/)>/,\n            subLanguage: 'xml',\n            contains: [\n              {begin: /<\\w+\\s*\\/>/, skip: true},\n              {\n                begin: /<\\w+/, end: /(\\/\\w+|\\w+\\/)>/, skip: true,\n                contains: [\n                  {begin: /<\\w+\\s*\\/>/, skip: true},\n                  'self'\n                ]\n              }\n            ]\n          }\n        ],\n        relevance: 0\n      },\n      {\n        className: 'function',\n        beginKeywords: 'function', end: /\\{/, excludeEnd: true,\n        contains: [\n          hljs.inherit(hljs.TITLE_MODE, {begin: IDENT_RE}),\n          {\n            className: 'params',\n            begin: /\\(/, end: /\\)/,\n            excludeBegin: true,\n            excludeEnd: true,\n            contains: PARAMS_CONTAINS\n          }\n        ],\n        illegal: /\\[|%/\n      },\n      {\n        begin: /\\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`\n      },\n      hljs.METHOD_GUARD,\n      { // ES6 class\n        className: 'class',\n        beginKeywords: 'class', end: /[{;=]/, excludeEnd: true,\n        illegal: /[:\"\\[\\]]/,\n        contains: [\n          {beginKeywords: 'extends'},\n          hljs.UNDERSCORE_TITLE_MODE\n        ]\n      },\n      {\n        beginKeywords: 'constructor', end: /\\{/, excludeEnd: true\n      }\n    ],\n    illegal: /#(?!!)/\n  };\n};","module.exports = function(hljs) {\n  var LITERALS = {literal: 'true false null'};\n  var TYPES = [\n    hljs.QUOTE_STRING_MODE,\n    hljs.C_NUMBER_MODE\n  ];\n  var VALUE_CONTAINER = {\n    end: ',', endsWithParent: true, excludeEnd: true,\n    contains: TYPES,\n    keywords: LITERALS\n  };\n  var OBJECT = {\n    begin: '{', end: '}',\n    contains: [\n      {\n        className: 'attr',\n        begin: /\"/, end: /\"/,\n        contains: [hljs.BACKSLASH_ESCAPE],\n        illegal: '\\\\n',\n      },\n      hljs.inherit(VALUE_CONTAINER, {begin: /:/})\n    ],\n    illegal: '\\\\S'\n  };\n  var ARRAY = {\n    begin: '\\\\[', end: '\\\\]',\n    contains: [hljs.inherit(VALUE_CONTAINER)], // inherit is a workaround for a bug that makes shared modes with endsWithParent compile only the ending of one of the parents\n    illegal: '\\\\S'\n  };\n  TYPES.splice(TYPES.length, 0, OBJECT, ARRAY);\n  return {\n    contains: TYPES,\n    keywords: LITERALS,\n    illegal: '\\\\S'\n  };\n};","module.exports = function(hljs) {\n  var IDENT_RE        = '[\\\\w-]+'; // yes, Less identifiers may begin with a digit\n  var INTERP_IDENT_RE = '(' + IDENT_RE + '|@{' + IDENT_RE + '})';\n\n  /* Generic Modes */\n\n  var RULES = [], VALUE = []; // forward def. for recursive modes\n\n  var STRING_MODE = function(c) { return {\n    // Less strings are not multiline (also include '~' for more consistent coloring of \"escaped\" strings)\n    className: 'string', begin: '~?' + c + '.*?' + c\n  };};\n\n  var IDENT_MODE = function(name, begin, relevance) { return {\n    className: name, begin: begin, relevance: relevance\n  };};\n\n  var PARENS_MODE = {\n    // used only to properly balance nested parens inside mixin call, def. arg list\n    begin: '\\\\(', end: '\\\\)', contains: VALUE, relevance: 0\n  };\n\n  // generic Less highlighter (used almost everywhere except selectors):\n  VALUE.push(\n    hljs.C_LINE_COMMENT_MODE,\n    hljs.C_BLOCK_COMMENT_MODE,\n    STRING_MODE(\"'\"),\n    STRING_MODE('\"'),\n    hljs.CSS_NUMBER_MODE, // fixme: it does not include dot for numbers like .5em :(\n    {\n      begin: '(url|data-uri)\\\\(',\n      starts: {className: 'string', end: '[\\\\)\\\\n]', excludeEnd: true}\n    },\n    IDENT_MODE('number', '#[0-9A-Fa-f]+\\\\b'),\n    PARENS_MODE,\n    IDENT_MODE('variable', '@@?' + IDENT_RE, 10),\n    IDENT_MODE('variable', '@{'  + IDENT_RE + '}'),\n    IDENT_MODE('built_in', '~?`[^`]*?`'), // inline javascript (or whatever host language) *multiline* string\n    { // @media features (it’s here to not duplicate things in AT_RULE_MODE with extra PARENS_MODE overriding):\n      className: 'attribute', begin: IDENT_RE + '\\\\s*:', end: ':', returnBegin: true, excludeEnd: true\n    },\n    {\n      className: 'meta',\n      begin: '!important'\n    }\n  );\n\n  var VALUE_WITH_RULESETS = VALUE.concat({\n    begin: '{', end: '}', contains: RULES\n  });\n\n  var MIXIN_GUARD_MODE = {\n    beginKeywords: 'when', endsWithParent: true,\n    contains: [{beginKeywords: 'and not'}].concat(VALUE) // using this form to override VALUE’s 'function' match\n  };\n\n  /* Rule-Level Modes */\n\n  var RULE_MODE = {\n    begin: INTERP_IDENT_RE + '\\\\s*:', returnBegin: true, end: '[;}]',\n    relevance: 0,\n    contains: [\n      {\n        className: 'attribute',\n        begin: INTERP_IDENT_RE, end: ':', excludeEnd: true,\n        starts: {\n          endsWithParent: true, illegal: '[<=$]',\n          relevance: 0,\n          contains: VALUE\n        }\n      }\n    ]\n  };\n\n  var AT_RULE_MODE = {\n    className: 'keyword',\n    begin: '@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\\\b',\n    starts: {end: '[;{}]', returnEnd: true, contains: VALUE, relevance: 0}\n  };\n\n  // variable definitions and calls\n  var VAR_RULE_MODE = {\n    className: 'variable',\n    variants: [\n      // using more strict pattern for higher relevance to increase chances of Less detection.\n      // this is *the only* Less specific statement used in most of the sources, so...\n      // (we’ll still often loose to the css-parser unless there's '//' comment,\n      // simply because 1 variable just can't beat 99 properties :)\n      {begin: '@' + IDENT_RE + '\\\\s*:', relevance: 15},\n      {begin: '@' + IDENT_RE}\n    ],\n    starts: {end: '[;}]', returnEnd: true, contains: VALUE_WITH_RULESETS}\n  };\n\n  var SELECTOR_MODE = {\n    // first parse unambiguous selectors (i.e. those not starting with tag)\n    // then fall into the scary lookahead-discriminator variant.\n    // this mode also handles mixin definitions and calls\n    variants: [{\n      begin: '[\\\\.#:&\\\\[>]', end: '[;{}]'  // mixin calls end with ';'\n      }, {\n      begin: INTERP_IDENT_RE, end: '{'\n    }],\n    returnBegin: true,\n    returnEnd:   true,\n    illegal: '[<=\\'$\"]',\n    relevance: 0,\n    contains: [\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      MIXIN_GUARD_MODE,\n      IDENT_MODE('keyword',  'all\\\\b'),\n      IDENT_MODE('variable', '@{'  + IDENT_RE + '}'),     // otherwise it’s identified as tag\n      IDENT_MODE('selector-tag',  INTERP_IDENT_RE + '%?', 0), // '%' for more consistent coloring of @keyframes \"tags\"\n      IDENT_MODE('selector-id', '#' + INTERP_IDENT_RE),\n      IDENT_MODE('selector-class', '\\\\.' + INTERP_IDENT_RE, 0),\n      IDENT_MODE('selector-tag',  '&', 0),\n      {className: 'selector-attr', begin: '\\\\[', end: '\\\\]'},\n      {className: 'selector-pseudo', begin: /:(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\"'.]+/},\n      {begin: '\\\\(', end: '\\\\)', contains: VALUE_WITH_RULESETS}, // argument list of parametric mixins\n      {begin: '!important'} // eat !important after mixin call or it will be colored as tag\n    ]\n  };\n\n  RULES.push(\n    hljs.C_LINE_COMMENT_MODE,\n    hljs.C_BLOCK_COMMENT_MODE,\n    AT_RULE_MODE,\n    VAR_RULE_MODE,\n    RULE_MODE,\n    SELECTOR_MODE\n  );\n\n  return {\n    case_insensitive: true,\n    illegal: '[=>\\'/<($\"]',\n    contains: RULES\n  };\n};","module.exports = function(hljs) {\n  return {\n    aliases: ['md', 'mkdown', 'mkd'],\n    contains: [\n      // highlight headers\n      {\n        className: 'section',\n        variants: [\n          { begin: '^#{1,6}', end: '$' },\n          { begin: '^.+?\\\\n[=-]{2,}$' }\n        ]\n      },\n      // inline html\n      {\n        begin: '<', end: '>',\n        subLanguage: 'xml',\n        relevance: 0\n      },\n      // lists (indicators only)\n      {\n        className: 'bullet',\n        begin: '^([*+-]|(\\\\d+\\\\.))\\\\s+'\n      },\n      // strong segments\n      {\n        className: 'strong',\n        begin: '[*_]{2}.+?[*_]{2}'\n      },\n      // emphasis segments\n      {\n        className: 'emphasis',\n        variants: [\n          { begin: '\\\\*.+?\\\\*' },\n          { begin: '_.+?_'\n          , relevance: 0\n          }\n        ]\n      },\n      // blockquotes\n      {\n        className: 'quote',\n        begin: '^>\\\\s+', end: '$'\n      },\n      // code snippets\n      {\n        className: 'code',\n        variants: [\n          {\n            begin: '^```\\w*\\s*$', end: '^```\\s*$'\n          },\n          {\n            begin: '`.+?`'\n          },\n          {\n            begin: '^( {4}|\\t)', end: '$',\n            relevance: 0\n          }\n        ]\n      },\n      // horizontal rules\n      {\n        begin: '^[-\\\\*]{3,}', end: '$'\n      },\n      // using links - title and link\n      {\n        begin: '\\\\[.+?\\\\][\\\\(\\\\[].*?[\\\\)\\\\]]',\n        returnBegin: true,\n        contains: [\n          {\n            className: 'string',\n            begin: '\\\\[', end: '\\\\]',\n            excludeBegin: true,\n            returnEnd: true,\n            relevance: 0\n          },\n          {\n            className: 'link',\n            begin: '\\\\]\\\\(', end: '\\\\)',\n            excludeBegin: true, excludeEnd: true\n          },\n          {\n            className: 'symbol',\n            begin: '\\\\]\\\\[', end: '\\\\]',\n            excludeBegin: true, excludeEnd: true\n          }\n        ],\n        relevance: 10\n      },\n      {\n        begin: /^\\[[^\\n]+\\]:/,\n        returnBegin: true,\n        contains: [\n          {\n            className: 'symbol',\n            begin: /\\[/, end: /\\]/,\n            excludeBegin: true, excludeEnd: true\n          },\n          {\n            className: 'link',\n            begin: /:\\s*/, end: /$/,\n            excludeBegin: true\n          }\n        ]\n      }\n    ]\n  };\n};","module.exports = function(hljs) {\n  var IDENT_RE = '[a-zA-Z-][a-zA-Z0-9_-]*';\n  var VARIABLE = {\n    className: 'variable',\n    begin: '(\\\\$' + IDENT_RE + ')\\\\b'\n  };\n  var HEXCOLOR = {\n    className: 'number', begin: '#[0-9A-Fa-f]+'\n  };\n  var DEF_INTERNALS = {\n    className: 'attribute',\n    begin: '[A-Z\\\\_\\\\.\\\\-]+', end: ':',\n    excludeEnd: true,\n    illegal: '[^\\\\s]',\n    starts: {\n      endsWithParent: true, excludeEnd: true,\n      contains: [\n        HEXCOLOR,\n        hljs.CSS_NUMBER_MODE,\n        hljs.QUOTE_STRING_MODE,\n        hljs.APOS_STRING_MODE,\n        hljs.C_BLOCK_COMMENT_MODE,\n        {\n          className: 'meta', begin: '!important'\n        }\n      ]\n    }\n  };\n  return {\n    case_insensitive: true,\n    illegal: '[=/|\\']',\n    contains: [\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      {\n        className: 'selector-id', begin: '\\\\#[A-Za-z0-9_-]+',\n        relevance: 0\n      },\n      {\n        className: 'selector-class', begin: '\\\\.[A-Za-z0-9_-]+',\n        relevance: 0\n      },\n      {\n        className: 'selector-attr', begin: '\\\\[', end: '\\\\]',\n        illegal: '$'\n      },\n      {\n        className: 'selector-tag', // begin: IDENT_RE, end: '[,|\\\\s]'\n        begin: '\\\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\\\b',\n        relevance: 0\n      },\n      {\n        begin: ':(visited|valid|root|right|required|read-write|read-only|out-range|optional|only-of-type|only-child|nth-of-type|nth-last-of-type|nth-last-child|nth-child|not|link|left|last-of-type|last-child|lang|invalid|indeterminate|in-range|hover|focus|first-of-type|first-line|first-letter|first-child|first|enabled|empty|disabled|default|checked|before|after|active)'\n      },\n      {\n        begin: '::(after|before|choices|first-letter|first-line|repeat-index|repeat-item|selection|value)'\n      },\n      VARIABLE,\n      {\n        className: 'attribute',\n        begin: '\\\\b(z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|tab-size|table-layout|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-orientation|image-resolution|image-rendering|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|columns|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-attachment|background-blend-mode|background|backface-visibility|auto|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|align-self|align-items|align-content)\\\\b',\n        illegal: '[^\\\\s]'\n      },\n      {\n        begin: '\\\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\\\b'\n      },\n      {\n        begin: ':', end: ';',\n        contains: [\n          VARIABLE,\n          HEXCOLOR,\n          hljs.CSS_NUMBER_MODE,\n          hljs.QUOTE_STRING_MODE,\n          hljs.APOS_STRING_MODE,\n          {\n            className: 'meta', begin: '!important'\n          }\n        ]\n      },\n      {\n        begin: '@', end: '[{;]',\n        keywords: 'mixin include extend for if else each while charset import debug media page content font-face namespace warn',\n        contains: [\n          VARIABLE,\n          hljs.QUOTE_STRING_MODE,\n          hljs.APOS_STRING_MODE,\n          HEXCOLOR,\n          hljs.CSS_NUMBER_MODE,\n          {\n            begin: '\\\\s[A-Za-z0-9_.-]+',\n            relevance: 0\n          }\n        ]\n      }\n    ]\n  };\n};","module.exports = function(hljs) {\n\n  var VARIABLE = {\n    className: 'variable',\n    begin: '\\\\$' + hljs.IDENT_RE\n  };\n\n  var HEX_COLOR = {\n    className: 'number',\n    begin: '#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})'\n  };\n\n  var AT_KEYWORDS = [\n    'charset',\n    'css',\n    'debug',\n    'extend',\n    'font-face',\n    'for',\n    'import',\n    'include',\n    'media',\n    'mixin',\n    'page',\n    'warn',\n    'while'\n  ];\n\n  var PSEUDO_SELECTORS = [\n    'after',\n    'before',\n    'first-letter',\n    'first-line',\n    'active',\n    'first-child',\n    'focus',\n    'hover',\n    'lang',\n    'link',\n    'visited'\n  ];\n\n  var TAGS = [\n    'a',\n    'abbr',\n    'address',\n    'article',\n    'aside',\n    'audio',\n    'b',\n    'blockquote',\n    'body',\n    'button',\n    'canvas',\n    'caption',\n    'cite',\n    'code',\n    'dd',\n    'del',\n    'details',\n    'dfn',\n    'div',\n    'dl',\n    'dt',\n    'em',\n    'fieldset',\n    'figcaption',\n    'figure',\n    'footer',\n    'form',\n    'h1',\n    'h2',\n    'h3',\n    'h4',\n    'h5',\n    'h6',\n    'header',\n    'hgroup',\n    'html',\n    'i',\n    'iframe',\n    'img',\n    'input',\n    'ins',\n    'kbd',\n    'label',\n    'legend',\n    'li',\n    'mark',\n    'menu',\n    'nav',\n    'object',\n    'ol',\n    'p',\n    'q',\n    'quote',\n    'samp',\n    'section',\n    'span',\n    'strong',\n    'summary',\n    'sup',\n    'table',\n    'tbody',\n    'td',\n    'textarea',\n    'tfoot',\n    'th',\n    'thead',\n    'time',\n    'tr',\n    'ul',\n    'var',\n    'video'\n  ];\n\n  var TAG_END = '[\\\\.\\\\s\\\\n\\\\[\\\\:,]';\n\n  var ATTRIBUTES = [\n    'align-content',\n    'align-items',\n    'align-self',\n    'animation',\n    'animation-delay',\n    'animation-direction',\n    'animation-duration',\n    'animation-fill-mode',\n    'animation-iteration-count',\n    'animation-name',\n    'animation-play-state',\n    'animation-timing-function',\n    'auto',\n    'backface-visibility',\n    'background',\n    'background-attachment',\n    'background-clip',\n    'background-color',\n    'background-image',\n    'background-origin',\n    'background-position',\n    'background-repeat',\n    'background-size',\n    'border',\n    'border-bottom',\n    'border-bottom-color',\n    'border-bottom-left-radius',\n    'border-bottom-right-radius',\n    'border-bottom-style',\n    'border-bottom-width',\n    'border-collapse',\n    'border-color',\n    'border-image',\n    'border-image-outset',\n    'border-image-repeat',\n    'border-image-slice',\n    'border-image-source',\n    'border-image-width',\n    'border-left',\n    'border-left-color',\n    'border-left-style',\n    'border-left-width',\n    'border-radius',\n    'border-right',\n    'border-right-color',\n    'border-right-style',\n    'border-right-width',\n    'border-spacing',\n    'border-style',\n    'border-top',\n    'border-top-color',\n    'border-top-left-radius',\n    'border-top-right-radius',\n    'border-top-style',\n    'border-top-width',\n    'border-width',\n    'bottom',\n    'box-decoration-break',\n    'box-shadow',\n    'box-sizing',\n    'break-after',\n    'break-before',\n    'break-inside',\n    'caption-side',\n    'clear',\n    'clip',\n    'clip-path',\n    'color',\n    'column-count',\n    'column-fill',\n    'column-gap',\n    'column-rule',\n    'column-rule-color',\n    'column-rule-style',\n    'column-rule-width',\n    'column-span',\n    'column-width',\n    'columns',\n    'content',\n    'counter-increment',\n    'counter-reset',\n    'cursor',\n    'direction',\n    'display',\n    'empty-cells',\n    'filter',\n    'flex',\n    'flex-basis',\n    'flex-direction',\n    'flex-flow',\n    'flex-grow',\n    'flex-shrink',\n    'flex-wrap',\n    'float',\n    'font',\n    'font-family',\n    'font-feature-settings',\n    'font-kerning',\n    'font-language-override',\n    'font-size',\n    'font-size-adjust',\n    'font-stretch',\n    'font-style',\n    'font-variant',\n    'font-variant-ligatures',\n    'font-weight',\n    'height',\n    'hyphens',\n    'icon',\n    'image-orientation',\n    'image-rendering',\n    'image-resolution',\n    'ime-mode',\n    'inherit',\n    'initial',\n    'justify-content',\n    'left',\n    'letter-spacing',\n    'line-height',\n    'list-style',\n    'list-style-image',\n    'list-style-position',\n    'list-style-type',\n    'margin',\n    'margin-bottom',\n    'margin-left',\n    'margin-right',\n    'margin-top',\n    'marks',\n    'mask',\n    'max-height',\n    'max-width',\n    'min-height',\n    'min-width',\n    'nav-down',\n    'nav-index',\n    'nav-left',\n    'nav-right',\n    'nav-up',\n    'none',\n    'normal',\n    'object-fit',\n    'object-position',\n    'opacity',\n    'order',\n    'orphans',\n    'outline',\n    'outline-color',\n    'outline-offset',\n    'outline-style',\n    'outline-width',\n    'overflow',\n    'overflow-wrap',\n    'overflow-x',\n    'overflow-y',\n    'padding',\n    'padding-bottom',\n    'padding-left',\n    'padding-right',\n    'padding-top',\n    'page-break-after',\n    'page-break-before',\n    'page-break-inside',\n    'perspective',\n    'perspective-origin',\n    'pointer-events',\n    'position',\n    'quotes',\n    'resize',\n    'right',\n    'tab-size',\n    'table-layout',\n    'text-align',\n    'text-align-last',\n    'text-decoration',\n    'text-decoration-color',\n    'text-decoration-line',\n    'text-decoration-style',\n    'text-indent',\n    'text-overflow',\n    'text-rendering',\n    'text-shadow',\n    'text-transform',\n    'text-underline-position',\n    'top',\n    'transform',\n    'transform-origin',\n    'transform-style',\n    'transition',\n    'transition-delay',\n    'transition-duration',\n    'transition-property',\n    'transition-timing-function',\n    'unicode-bidi',\n    'vertical-align',\n    'visibility',\n    'white-space',\n    'widows',\n    'width',\n    'word-break',\n    'word-spacing',\n    'word-wrap',\n    'z-index'\n  ];\n\n  // illegals\n  var ILLEGAL = [\n    '\\\\?',\n    '(\\\\bReturn\\\\b)', // monkey\n    '(\\\\bEnd\\\\b)', // monkey\n    '(\\\\bend\\\\b)', // vbscript\n    '(\\\\bdef\\\\b)', // gradle\n    ';', // a whole lot of languages\n    '#\\\\s', // markdown\n    '\\\\*\\\\s', // markdown\n    '===\\\\s', // markdown\n    '\\\\|',\n    '%', // prolog\n  ];\n\n  return {\n    aliases: ['styl'],\n    case_insensitive: false,\n    keywords: 'if else for in',\n    illegal: '(' + ILLEGAL.join('|') + ')',\n    contains: [\n\n      // strings\n      hljs.QUOTE_STRING_MODE,\n      hljs.APOS_STRING_MODE,\n\n      // comments\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n\n      // hex colors\n      HEX_COLOR,\n\n      // class tag\n      {\n        begin: '\\\\.[a-zA-Z][a-zA-Z0-9_-]*' + TAG_END,\n        returnBegin: true,\n        contains: [\n          {className: 'selector-class', begin: '\\\\.[a-zA-Z][a-zA-Z0-9_-]*'}\n        ]\n      },\n\n      // id tag\n      {\n        begin: '\\\\#[a-zA-Z][a-zA-Z0-9_-]*' + TAG_END,\n        returnBegin: true,\n        contains: [\n          {className: 'selector-id', begin: '\\\\#[a-zA-Z][a-zA-Z0-9_-]*'}\n        ]\n      },\n\n      // tags\n      {\n        begin: '\\\\b(' + TAGS.join('|') + ')' + TAG_END,\n        returnBegin: true,\n        contains: [\n          {className: 'selector-tag', begin: '\\\\b[a-zA-Z][a-zA-Z0-9_-]*'}\n        ]\n      },\n\n      // psuedo selectors\n      {\n        begin: '&?:?:\\\\b(' + PSEUDO_SELECTORS.join('|') + ')' + TAG_END\n      },\n\n      // @ keywords\n      {\n        begin: '\\@(' + AT_KEYWORDS.join('|') + ')\\\\b'\n      },\n\n      // variables\n      VARIABLE,\n\n      // dimension\n      hljs.CSS_NUMBER_MODE,\n\n      // number\n      hljs.NUMBER_MODE,\n\n      // functions\n      //  - only from beginning of line + whitespace\n      {\n        className: 'function',\n        begin: '^[a-zA-Z][a-zA-Z0-9_\\-]*\\\\(.*\\\\)',\n        illegal: '[\\\\n]',\n        returnBegin: true,\n        contains: [\n          {className: 'title', begin: '\\\\b[a-zA-Z][a-zA-Z0-9_\\-]*'},\n          {\n            className: 'params',\n            begin: /\\(/,\n            end: /\\)/,\n            contains: [\n              HEX_COLOR,\n              VARIABLE,\n              hljs.APOS_STRING_MODE,\n              hljs.CSS_NUMBER_MODE,\n              hljs.NUMBER_MODE,\n              hljs.QUOTE_STRING_MODE\n            ]\n          }\n        ]\n      },\n\n      // attributes\n      //  - only from beginning of line + whitespace\n      //  - must have whitespace after it\n      {\n        className: 'attribute',\n        begin: '\\\\b(' + ATTRIBUTES.reverse().join('|') + ')\\\\b',\n        starts: {\n          // value container\n          end: /;|$/,\n          contains: [\n            HEX_COLOR,\n            VARIABLE,\n            hljs.APOS_STRING_MODE,\n            hljs.QUOTE_STRING_MODE,\n            hljs.CSS_NUMBER_MODE,\n            hljs.NUMBER_MODE,\n            hljs.C_BLOCK_COMMENT_MODE\n          ],\n          illegal: /\\./,\n          relevance: 0\n        }\n      }\n    ]\n  };\n};","module.exports = function(hljs) {\n  var KEYWORDS = {\n    keyword:\n      'in if for while finally var new function do return void else break catch ' +\n      'instanceof with throw case default try this switch continue typeof delete ' +\n      'let yield const class public private protected get set super ' +\n      'static implements enum export import declare type namespace abstract ' +\n      'as from extends async await',\n    literal:\n      'true false null undefined NaN Infinity',\n    built_in:\n      'eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent ' +\n      'encodeURI encodeURIComponent escape unescape Object Function Boolean Error ' +\n      'EvalError InternalError RangeError ReferenceError StopIteration SyntaxError ' +\n      'TypeError URIError Number Math Date String RegExp Array Float32Array ' +\n      'Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array ' +\n      'Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require ' +\n      'module console window document any number boolean string void Promise'\n  };\n\n  return {\n    aliases: ['ts'],\n    keywords: KEYWORDS,\n    contains: [\n      {\n        className: 'meta',\n        begin: /^\\s*['\"]use strict['\"]/\n      },\n      hljs.APOS_STRING_MODE,\n      hljs.QUOTE_STRING_MODE,\n      { // template string\n        className: 'string',\n        begin: '`', end: '`',\n        contains: [\n          hljs.BACKSLASH_ESCAPE,\n          {\n            className: 'subst',\n            begin: '\\\\$\\\\{', end: '\\\\}'\n          }\n        ]\n      },\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      {\n        className: 'number',\n        variants: [\n          { begin: '\\\\b(0[bB][01]+)' },\n          { begin: '\\\\b(0[oO][0-7]+)' },\n          { begin: hljs.C_NUMBER_RE }\n        ],\n        relevance: 0\n      },\n      { // \"value\" container\n        begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\n        keywords: 'return throw case',\n        contains: [\n          hljs.C_LINE_COMMENT_MODE,\n          hljs.C_BLOCK_COMMENT_MODE,\n          hljs.REGEXP_MODE,\n          {\n            className: 'function',\n            begin: '(\\\\(.*?\\\\)|' + hljs.IDENT_RE + ')\\\\s*=>', returnBegin: true,\n            end: '\\\\s*=>',\n            contains: [\n              {\n                className: 'params',\n                variants: [\n                  {\n                    begin: hljs.IDENT_RE\n                  },\n                  {\n                    begin: /\\(\\s*\\)/,\n                  },\n                  {\n                    begin: /\\(/, end: /\\)/,\n                    excludeBegin: true, excludeEnd: true,\n                    keywords: KEYWORDS,\n                    contains: [\n                      'self',\n                      hljs.C_LINE_COMMENT_MODE,\n                      hljs.C_BLOCK_COMMENT_MODE\n                    ]\n                  }\n                ]\n              }\n            ]\n          }\n        ],\n        relevance: 0\n      },\n      {\n        className: 'function',\n        begin: 'function', end: /[\\{;]/, excludeEnd: true,\n        keywords: KEYWORDS,\n        contains: [\n          'self',\n          hljs.inherit(hljs.TITLE_MODE, {begin: /[A-Za-z$_][0-9A-Za-z$_]*/}),\n          {\n            className: 'params',\n            begin: /\\(/, end: /\\)/,\n            excludeBegin: true,\n            excludeEnd: true,\n            keywords: KEYWORDS,\n            contains: [\n              hljs.C_LINE_COMMENT_MODE,\n              hljs.C_BLOCK_COMMENT_MODE\n            ],\n            illegal: /[\"'\\(]/\n          }\n        ],\n        illegal: /%/,\n        relevance: 0 // () => {} is more typical in TypeScript\n      },\n      {\n        beginKeywords: 'constructor', end: /\\{/, excludeEnd: true,\n        contains: [\n          'self',\n          {\n            className: 'params',\n            begin: /\\(/, end: /\\)/,\n            excludeBegin: true,\n            excludeEnd: true,\n            keywords: KEYWORDS,\n            contains: [\n              hljs.C_LINE_COMMENT_MODE,\n              hljs.C_BLOCK_COMMENT_MODE\n            ],\n            illegal: /[\"'\\(]/\n          }\n        ]\n      },\n      { // prevent references like module.id from being higlighted as module definitions\n        begin: /module\\./,\n        keywords: {built_in: 'module'},\n        relevance: 0\n      },\n      {\n        beginKeywords: 'module', end: /\\{/, excludeEnd: true\n      },\n      {\n        beginKeywords: 'interface', end: /\\{/, excludeEnd: true,\n        keywords: 'interface extends'\n      },\n      {\n        begin: /\\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`\n      },\n      {\n        begin: '\\\\.' + hljs.IDENT_RE, relevance: 0 // hack: prevents detection of keywords after dots\n      },\n      {\n        className: 'meta', begin: '@[A-Za-z]+'\n      }\n    ]\n  };\n};","module.exports = function(hljs) {\n  var XML_IDENT_RE = '[A-Za-z0-9\\\\._:-]+';\n  var TAG_INTERNALS = {\n    endsWithParent: true,\n    illegal: /</,\n    relevance: 0,\n    contains: [\n      {\n        className: 'attr',\n        begin: XML_IDENT_RE,\n        relevance: 0\n      },\n      {\n        begin: /=\\s*/,\n        relevance: 0,\n        contains: [\n          {\n            className: 'string',\n            endsParent: true,\n            variants: [\n              {begin: /\"/, end: /\"/},\n              {begin: /'/, end: /'/},\n              {begin: /[^\\s\"'=<>`]+/}\n            ]\n          }\n        ]\n      }\n    ]\n  };\n  return {\n    aliases: ['html', 'xhtml', 'rss', 'atom', 'xjb', 'xsd', 'xsl', 'plist'],\n    case_insensitive: true,\n    contains: [\n      {\n        className: 'meta',\n        begin: '<!DOCTYPE', end: '>',\n        relevance: 10,\n        contains: [{begin: '\\\\[', end: '\\\\]'}]\n      },\n      hljs.COMMENT(\n        '<!--',\n        '-->',\n        {\n          relevance: 10\n        }\n      ),\n      {\n        begin: '<\\\\!\\\\[CDATA\\\\[', end: '\\\\]\\\\]>',\n        relevance: 10\n      },\n      {\n        begin: /<\\?(php)?/, end: /\\?>/,\n        subLanguage: 'php',\n        contains: [{begin: '/\\\\*', end: '\\\\*/', skip: true}]\n      },\n      {\n        className: 'tag',\n        /*\n        The lookahead pattern (?=...) ensures that 'begin' only matches\n        '<style' as a single word, followed by a whitespace or an\n        ending braket. The '$' is needed for the lexeme to be recognized\n        by hljs.subMode() that tests lexemes outside the stream.\n        */\n        begin: '<style(?=\\\\s|>|$)', end: '>',\n        keywords: {name: 'style'},\n        contains: [TAG_INTERNALS],\n        starts: {\n          end: '</style>', returnEnd: true,\n          subLanguage: ['css', 'xml']\n        }\n      },\n      {\n        className: 'tag',\n        // See the comment in the <style tag about the lookahead pattern\n        begin: '<script(?=\\\\s|>|$)', end: '>',\n        keywords: {name: 'script'},\n        contains: [TAG_INTERNALS],\n        starts: {\n          end: '\\<\\/script\\>', returnEnd: true,\n          subLanguage: ['actionscript', 'javascript', 'handlebars', 'xml']\n        }\n      },\n      {\n        className: 'meta',\n        variants: [\n          {begin: /<\\?xml/, end: /\\?>/, relevance: 10},\n          {begin: /<\\?\\w+/, end: /\\?>/}\n        ]\n      },\n      {\n        className: 'tag',\n        begin: '</?', end: '/?>',\n        contains: [\n          {\n            className: 'name', begin: /[^\\/><\\s]+/, relevance: 0\n          },\n          TAG_INTERNALS\n        ]\n      }\n    ]\n  };\n};","/**\n * Indicates that navigation was caused by a call to history.push.\n */\n'use strict';\n\nexports.__esModule = true;\nvar PUSH = 'PUSH';\n\nexports.PUSH = PUSH;\n/**\n * Indicates that navigation was caused by a call to history.replace.\n */\nvar REPLACE = 'REPLACE';\n\nexports.REPLACE = REPLACE;\n/**\n * Indicates that navigation was caused by some other action such\n * as using a browser's back/forward buttons and/or manually manipulating\n * the URL in a browser's location bar. This is the default.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate\n * for more information.\n */\nvar POP = 'POP';\n\nexports.POP = POP;\nexports['default'] = {\n  PUSH: PUSH,\n  REPLACE: REPLACE,\n  POP: POP\n};","\"use strict\";\n\nexports.__esModule = true;\nvar _slice = Array.prototype.slice;\nexports.loopAsync = loopAsync;\n\nfunction loopAsync(turns, work, callback) {\n  var currentTurn = 0,\n      isDone = false;\n  var sync = false,\n      hasNext = false,\n      doneArgs = undefined;\n\n  function done() {\n    isDone = true;\n    if (sync) {\n      // Iterate instead of recursing if possible.\n      doneArgs = [].concat(_slice.call(arguments));\n      return;\n    }\n\n    callback.apply(this, arguments);\n  }\n\n  function next() {\n    if (isDone) {\n      return;\n    }\n\n    hasNext = true;\n    if (sync) {\n      // Iterate instead of recursing if possible.\n      return;\n    }\n\n    sync = true;\n\n    while (!isDone && currentTurn < turns && hasNext) {\n      hasNext = false;\n      work.call(this, currentTurn++, next, done);\n    }\n\n    sync = false;\n\n    if (isDone) {\n      // This means the loop finished synchronously.\n      callback.apply(this, doneArgs);\n      return;\n    }\n\n    if (currentTurn >= turns && hasNext) {\n      isDone = true;\n      callback();\n    }\n  }\n\n  next();\n}","/*eslint-disable no-empty */\n'use strict';\n\nexports.__esModule = true;\nexports.saveState = saveState;\nexports.readState = readState;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar KeyPrefix = '@@History/';\nvar QuotaExceededErrors = ['QuotaExceededError', 'QUOTA_EXCEEDED_ERR'];\n\nvar SecurityError = 'SecurityError';\n\nfunction createKey(key) {\n  return KeyPrefix + key;\n}\n\nfunction saveState(key, state) {\n  try {\n    if (state == null) {\n      window.sessionStorage.removeItem(createKey(key));\n    } else {\n      window.sessionStorage.setItem(createKey(key), JSON.stringify(state));\n    }\n  } catch (error) {\n    if (error.name === SecurityError) {\n      // Blocking cookies in Chrome/Firefox/Safari throws SecurityError on any\n      // attempt to access window.sessionStorage.\n      process.env.NODE_ENV !== 'production' ? _warning2['default'](false, '[history] Unable to save state; sessionStorage is not available due to security settings') : undefined;\n\n      return;\n    }\n\n    if (QuotaExceededErrors.indexOf(error.name) >= 0 && window.sessionStorage.length === 0) {\n      // Safari \"private mode\" throws QuotaExceededError.\n      process.env.NODE_ENV !== 'production' ? _warning2['default'](false, '[history] Unable to save state; sessionStorage is not available in Safari private mode') : undefined;\n\n      return;\n    }\n\n    throw error;\n  }\n}\n\nfunction readState(key) {\n  var json = undefined;\n  try {\n    json = window.sessionStorage.getItem(createKey(key));\n  } catch (error) {\n    if (error.name === SecurityError) {\n      // Blocking cookies in Chrome/Firefox/Safari throws SecurityError on any\n      // attempt to access window.sessionStorage.\n      process.env.NODE_ENV !== 'production' ? _warning2['default'](false, '[history] Unable to read state; sessionStorage is not available due to security settings') : undefined;\n\n      return null;\n    }\n  }\n\n  if (json) {\n    try {\n      return JSON.parse(json);\n    } catch (error) {\n      // Ignore invalid JSON.\n    }\n  }\n\n  return null;\n}","'use strict';\n\nexports.__esModule = true;\nexports.addEventListener = addEventListener;\nexports.removeEventListener = removeEventListener;\nexports.getHashPath = getHashPath;\nexports.replaceHashPath = replaceHashPath;\nexports.getWindowPath = getWindowPath;\nexports.go = go;\nexports.getUserConfirmation = getUserConfirmation;\nexports.supportsHistory = supportsHistory;\nexports.supportsGoWithoutReloadUsingHash = supportsGoWithoutReloadUsingHash;\n\nfunction addEventListener(node, event, listener) {\n  if (node.addEventListener) {\n    node.addEventListener(event, listener, false);\n  } else {\n    node.attachEvent('on' + event, listener);\n  }\n}\n\nfunction removeEventListener(node, event, listener) {\n  if (node.removeEventListener) {\n    node.removeEventListener(event, listener, false);\n  } else {\n    node.detachEvent('on' + event, listener);\n  }\n}\n\nfunction getHashPath() {\n  // We can't use window.location.hash here because it's not\n  // consistent across browsers - Firefox will pre-decode it!\n  return window.location.href.split('#')[1] || '';\n}\n\nfunction replaceHashPath(path) {\n  window.location.replace(window.location.pathname + window.location.search + '#' + path);\n}\n\nfunction getWindowPath() {\n  return window.location.pathname + window.location.search + window.location.hash;\n}\n\nfunction go(n) {\n  if (n) window.history.go(n);\n}\n\nfunction getUserConfirmation(message, callback) {\n  callback(window.confirm(message));\n}\n\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/rackt/react-router/issues/586\n */\n\nfunction supportsHistory() {\n  var ua = navigator.userAgent;\n  if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) {\n    return false;\n  }\n  return window.history && 'pushState' in window.history;\n}\n\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n  var ua = navigator.userAgent;\n  return ua.indexOf('Firefox') === -1;\n}","'use strict';\n\nexports.__esModule = true;\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nexports.canUseDOM = canUseDOM;","'use strict';\n\nexports.__esModule = true;\nexports.extractPath = extractPath;\nexports.parsePath = parsePath;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction extractPath(string) {\n  var match = string.match(/^https?:\\/\\/[^\\/]*/);\n\n  if (match == null) return string;\n\n  return string.substring(match[0].length);\n}\n\nfunction parsePath(path) {\n  var pathname = extractPath(path);\n  var search = '';\n  var hash = '';\n\n  process.env.NODE_ENV !== 'production' ? _warning2['default'](path === pathname, 'A path must be pathname + search + hash only, not a fully qualified URL like \"%s\"', path) : undefined;\n\n  var hashIndex = pathname.indexOf('#');\n  if (hashIndex !== -1) {\n    hash = pathname.substring(hashIndex);\n    pathname = pathname.substring(0, hashIndex);\n  }\n\n  var searchIndex = pathname.indexOf('?');\n  if (searchIndex !== -1) {\n    search = pathname.substring(searchIndex);\n    pathname = pathname.substring(0, searchIndex);\n  }\n\n  if (pathname === '') pathname = '/';\n\n  return {\n    pathname: pathname,\n    search: search,\n    hash: hash\n  };\n}","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _Actions = require('./Actions');\n\nvar _PathUtils = require('./PathUtils');\n\nvar _ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar _DOMUtils = require('./DOMUtils');\n\nvar _DOMStateStorage = require('./DOMStateStorage');\n\nvar _createDOMHistory = require('./createDOMHistory');\n\nvar _createDOMHistory2 = _interopRequireDefault(_createDOMHistory);\n\n/**\n * Creates and returns a history object that uses HTML5's history API\n * (pushState, replaceState, and the popstate event) to manage history.\n * This is the recommended method of managing history in browsers because\n * it provides the cleanest URLs.\n *\n * Note: In browsers that do not support the HTML5 history API full\n * page reloads will be used to preserve URLs.\n */\nfunction createBrowserHistory() {\n  var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n  !_ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? _invariant2['default'](false, 'Browser history needs a DOM') : _invariant2['default'](false) : undefined;\n\n  var forceRefresh = options.forceRefresh;\n\n  var isSupported = _DOMUtils.supportsHistory();\n  var useRefresh = !isSupported || forceRefresh;\n\n  function getCurrentLocation(historyState) {\n    try {\n      historyState = historyState || window.history.state || {};\n    } catch (e) {\n      historyState = {};\n    }\n\n    var path = _DOMUtils.getWindowPath();\n    var _historyState = historyState;\n    var key = _historyState.key;\n\n    var state = undefined;\n    if (key) {\n      state = _DOMStateStorage.readState(key);\n    } else {\n      state = null;\n      key = history.createKey();\n\n      if (isSupported) window.history.replaceState(_extends({}, historyState, { key: key }), null);\n    }\n\n    var location = _PathUtils.parsePath(path);\n\n    return history.createLocation(_extends({}, location, { state: state }), undefined, key);\n  }\n\n  function startPopStateListener(_ref) {\n    var transitionTo = _ref.transitionTo;\n\n    function popStateListener(event) {\n      if (event.state === undefined) return; // Ignore extraneous popstate events in WebKit.\n\n      transitionTo(getCurrentLocation(event.state));\n    }\n\n    _DOMUtils.addEventListener(window, 'popstate', popStateListener);\n\n    return function () {\n      _DOMUtils.removeEventListener(window, 'popstate', popStateListener);\n    };\n  }\n\n  function finishTransition(location) {\n    var basename = location.basename;\n    var pathname = location.pathname;\n    var search = location.search;\n    var hash = location.hash;\n    var state = location.state;\n    var action = location.action;\n    var key = location.key;\n\n    if (action === _Actions.POP) return; // Nothing to do.\n\n    _DOMStateStorage.saveState(key, state);\n\n    var path = (basename || '') + pathname + search + hash;\n    var historyState = {\n      key: key\n    };\n\n    if (action === _Actions.PUSH) {\n      if (useRefresh) {\n        window.location.href = path;\n        return false; // Prevent location update.\n      } else {\n          window.history.pushState(historyState, null, path);\n        }\n    } else {\n      // REPLACE\n      if (useRefresh) {\n        window.location.replace(path);\n        return false; // Prevent location update.\n      } else {\n          window.history.replaceState(historyState, null, path);\n        }\n    }\n  }\n\n  var history = _createDOMHistory2['default'](_extends({}, options, {\n    getCurrentLocation: getCurrentLocation,\n    finishTransition: finishTransition,\n    saveState: _DOMStateStorage.saveState\n  }));\n\n  var listenerCount = 0,\n      stopPopStateListener = undefined;\n\n  function listenBefore(listener) {\n    if (++listenerCount === 1) stopPopStateListener = startPopStateListener(history);\n\n    var unlisten = history.listenBefore(listener);\n\n    return function () {\n      unlisten();\n\n      if (--listenerCount === 0) stopPopStateListener();\n    };\n  }\n\n  function listen(listener) {\n    if (++listenerCount === 1) stopPopStateListener = startPopStateListener(history);\n\n    var unlisten = history.listen(listener);\n\n    return function () {\n      unlisten();\n\n      if (--listenerCount === 0) stopPopStateListener();\n    };\n  }\n\n  // deprecated\n  function registerTransitionHook(hook) {\n    if (++listenerCount === 1) stopPopStateListener = startPopStateListener(history);\n\n    history.registerTransitionHook(hook);\n  }\n\n  // deprecated\n  function unregisterTransitionHook(hook) {\n    history.unregisterTransitionHook(hook);\n\n    if (--listenerCount === 0) stopPopStateListener();\n  }\n\n  return _extends({}, history, {\n    listenBefore: listenBefore,\n    listen: listen,\n    registerTransitionHook: registerTransitionHook,\n    unregisterTransitionHook: unregisterTransitionHook\n  });\n}\n\nexports['default'] = createBrowserHistory;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar _DOMUtils = require('./DOMUtils');\n\nvar _createHistory = require('./createHistory');\n\nvar _createHistory2 = _interopRequireDefault(_createHistory);\n\nfunction createDOMHistory(options) {\n  var history = _createHistory2['default'](_extends({\n    getUserConfirmation: _DOMUtils.getUserConfirmation\n  }, options, {\n    go: _DOMUtils.go\n  }));\n\n  function listen(listener) {\n    !_ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? _invariant2['default'](false, 'DOM history needs a DOM') : _invariant2['default'](false) : undefined;\n\n    return history.listen(listener);\n  }\n\n  return _extends({}, history, {\n    listen: listen\n  });\n}\n\nexports['default'] = createDOMHistory;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _Actions = require('./Actions');\n\nvar _PathUtils = require('./PathUtils');\n\nvar _ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar _DOMUtils = require('./DOMUtils');\n\nvar _DOMStateStorage = require('./DOMStateStorage');\n\nvar _createDOMHistory = require('./createDOMHistory');\n\nvar _createDOMHistory2 = _interopRequireDefault(_createDOMHistory);\n\nfunction isAbsolutePath(path) {\n  return typeof path === 'string' && path.charAt(0) === '/';\n}\n\nfunction ensureSlash() {\n  var path = _DOMUtils.getHashPath();\n\n  if (isAbsolutePath(path)) return true;\n\n  _DOMUtils.replaceHashPath('/' + path);\n\n  return false;\n}\n\nfunction addQueryStringValueToPath(path, key, value) {\n  return path + (path.indexOf('?') === -1 ? '?' : '&') + (key + '=' + value);\n}\n\nfunction stripQueryStringValueFromPath(path, key) {\n  return path.replace(new RegExp('[?&]?' + key + '=[a-zA-Z0-9]+'), '');\n}\n\nfunction getQueryStringValueFromPath(path, key) {\n  var match = path.match(new RegExp('\\\\?.*?\\\\b' + key + '=(.+?)\\\\b'));\n  return match && match[1];\n}\n\nvar DefaultQueryKey = '_k';\n\nfunction createHashHistory() {\n  var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n  !_ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? _invariant2['default'](false, 'Hash history needs a DOM') : _invariant2['default'](false) : undefined;\n\n  var queryKey = options.queryKey;\n\n  if (queryKey === undefined || !!queryKey) queryKey = typeof queryKey === 'string' ? queryKey : DefaultQueryKey;\n\n  function getCurrentLocation() {\n    var path = _DOMUtils.getHashPath();\n\n    var key = undefined,\n        state = undefined;\n    if (queryKey) {\n      key = getQueryStringValueFromPath(path, queryKey);\n      path = stripQueryStringValueFromPath(path, queryKey);\n\n      if (key) {\n        state = _DOMStateStorage.readState(key);\n      } else {\n        state = null;\n        key = history.createKey();\n        _DOMUtils.replaceHashPath(addQueryStringValueToPath(path, queryKey, key));\n      }\n    } else {\n      key = state = null;\n    }\n\n    var location = _PathUtils.parsePath(path);\n\n    return history.createLocation(_extends({}, location, { state: state }), undefined, key);\n  }\n\n  function startHashChangeListener(_ref) {\n    var transitionTo = _ref.transitionTo;\n\n    function hashChangeListener() {\n      if (!ensureSlash()) return; // Always make sure hashes are preceeded with a /.\n\n      transitionTo(getCurrentLocation());\n    }\n\n    ensureSlash();\n    _DOMUtils.addEventListener(window, 'hashchange', hashChangeListener);\n\n    return function () {\n      _DOMUtils.removeEventListener(window, 'hashchange', hashChangeListener);\n    };\n  }\n\n  function finishTransition(location) {\n    var basename = location.basename;\n    var pathname = location.pathname;\n    var search = location.search;\n    var state = location.state;\n    var action = location.action;\n    var key = location.key;\n\n    if (action === _Actions.POP) return; // Nothing to do.\n\n    var path = (basename || '') + pathname + search;\n\n    if (queryKey) {\n      path = addQueryStringValueToPath(path, queryKey, key);\n      _DOMStateStorage.saveState(key, state);\n    } else {\n      // Drop key and state.\n      location.key = location.state = null;\n    }\n\n    var currentHash = _DOMUtils.getHashPath();\n\n    if (action === _Actions.PUSH) {\n      if (currentHash !== path) {\n        window.location.hash = path;\n      } else {\n        process.env.NODE_ENV !== 'production' ? _warning2['default'](false, 'You cannot PUSH the same path using hash history') : undefined;\n      }\n    } else if (currentHash !== path) {\n      // REPLACE\n      _DOMUtils.replaceHashPath(path);\n    }\n  }\n\n  var history = _createDOMHistory2['default'](_extends({}, options, {\n    getCurrentLocation: getCurrentLocation,\n    finishTransition: finishTransition,\n    saveState: _DOMStateStorage.saveState\n  }));\n\n  var listenerCount = 0,\n      stopHashChangeListener = undefined;\n\n  function listenBefore(listener) {\n    if (++listenerCount === 1) stopHashChangeListener = startHashChangeListener(history);\n\n    var unlisten = history.listenBefore(listener);\n\n    return function () {\n      unlisten();\n\n      if (--listenerCount === 0) stopHashChangeListener();\n    };\n  }\n\n  function listen(listener) {\n    if (++listenerCount === 1) stopHashChangeListener = startHashChangeListener(history);\n\n    var unlisten = history.listen(listener);\n\n    return function () {\n      unlisten();\n\n      if (--listenerCount === 0) stopHashChangeListener();\n    };\n  }\n\n  function push(location) {\n    process.env.NODE_ENV !== 'production' ? _warning2['default'](queryKey || location.state == null, 'You cannot use state without a queryKey it will be dropped') : undefined;\n\n    history.push(location);\n  }\n\n  function replace(location) {\n    process.env.NODE_ENV !== 'production' ? _warning2['default'](queryKey || location.state == null, 'You cannot use state without a queryKey it will be dropped') : undefined;\n\n    history.replace(location);\n  }\n\n  var goIsSupportedWithoutReload = _DOMUtils.supportsGoWithoutReloadUsingHash();\n\n  function go(n) {\n    process.env.NODE_ENV !== 'production' ? _warning2['default'](goIsSupportedWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : undefined;\n\n    history.go(n);\n  }\n\n  function createHref(path) {\n    return '#' + history.createHref(path);\n  }\n\n  // deprecated\n  function registerTransitionHook(hook) {\n    if (++listenerCount === 1) stopHashChangeListener = startHashChangeListener(history);\n\n    history.registerTransitionHook(hook);\n  }\n\n  // deprecated\n  function unregisterTransitionHook(hook) {\n    history.unregisterTransitionHook(hook);\n\n    if (--listenerCount === 0) stopHashChangeListener();\n  }\n\n  // deprecated\n  function pushState(state, path) {\n    process.env.NODE_ENV !== 'production' ? _warning2['default'](queryKey || state == null, 'You cannot use state without a queryKey it will be dropped') : undefined;\n\n    history.pushState(state, path);\n  }\n\n  // deprecated\n  function replaceState(state, path) {\n    process.env.NODE_ENV !== 'production' ? _warning2['default'](queryKey || state == null, 'You cannot use state without a queryKey it will be dropped') : undefined;\n\n    history.replaceState(state, path);\n  }\n\n  return _extends({}, history, {\n    listenBefore: listenBefore,\n    listen: listen,\n    push: push,\n    replace: replace,\n    go: go,\n    createHref: createHref,\n\n    registerTransitionHook: registerTransitionHook, // deprecated - warning is in createHistory\n    unregisterTransitionHook: unregisterTransitionHook, // deprecated - warning is in createHistory\n    pushState: pushState, // deprecated - warning is in createHistory\n    replaceState: replaceState // deprecated - warning is in createHistory\n  });\n}\n\nexports['default'] = createHashHistory;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _deepEqual = require('deep-equal');\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _PathUtils = require('./PathUtils');\n\nvar _AsyncUtils = require('./AsyncUtils');\n\nvar _Actions = require('./Actions');\n\nvar _createLocation2 = require('./createLocation');\n\nvar _createLocation3 = _interopRequireDefault(_createLocation2);\n\nvar _runTransitionHook = require('./runTransitionHook');\n\nvar _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);\n\nvar _deprecate = require('./deprecate');\n\nvar _deprecate2 = _interopRequireDefault(_deprecate);\n\nfunction createRandomKey(length) {\n  return Math.random().toString(36).substr(2, length);\n}\n\nfunction locationsAreEqual(a, b) {\n  return a.pathname === b.pathname && a.search === b.search &&\n  //a.action === b.action && // Different action !== location change.\n  a.key === b.key && _deepEqual2['default'](a.state, b.state);\n}\n\nvar DefaultKeyLength = 6;\n\nfunction createHistory() {\n  var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n  var getCurrentLocation = options.getCurrentLocation;\n  var finishTransition = options.finishTransition;\n  var saveState = options.saveState;\n  var go = options.go;\n  var getUserConfirmation = options.getUserConfirmation;\n  var keyLength = options.keyLength;\n\n  if (typeof keyLength !== 'number') keyLength = DefaultKeyLength;\n\n  var transitionHooks = [];\n\n  function listenBefore(hook) {\n    transitionHooks.push(hook);\n\n    return function () {\n      transitionHooks = transitionHooks.filter(function (item) {\n        return item !== hook;\n      });\n    };\n  }\n\n  var allKeys = [];\n  var changeListeners = [];\n  var location = undefined;\n\n  function getCurrent() {\n    if (pendingLocation && pendingLocation.action === _Actions.POP) {\n      return allKeys.indexOf(pendingLocation.key);\n    } else if (location) {\n      return allKeys.indexOf(location.key);\n    } else {\n      return -1;\n    }\n  }\n\n  function updateLocation(newLocation) {\n    var current = getCurrent();\n\n    location = newLocation;\n\n    if (location.action === _Actions.PUSH) {\n      allKeys = [].concat(allKeys.slice(0, current + 1), [location.key]);\n    } else if (location.action === _Actions.REPLACE) {\n      allKeys[current] = location.key;\n    }\n\n    changeListeners.forEach(function (listener) {\n      listener(location);\n    });\n  }\n\n  function listen(listener) {\n    changeListeners.push(listener);\n\n    if (location) {\n      listener(location);\n    } else {\n      var _location = getCurrentLocation();\n      allKeys = [_location.key];\n      updateLocation(_location);\n    }\n\n    return function () {\n      changeListeners = changeListeners.filter(function (item) {\n        return item !== listener;\n      });\n    };\n  }\n\n  function confirmTransitionTo(location, callback) {\n    _AsyncUtils.loopAsync(transitionHooks.length, function (index, next, done) {\n      _runTransitionHook2['default'](transitionHooks[index], location, function (result) {\n        if (result != null) {\n          done(result);\n        } else {\n          next();\n        }\n      });\n    }, function (message) {\n      if (getUserConfirmation && typeof message === 'string') {\n        getUserConfirmation(message, function (ok) {\n          callback(ok !== false);\n        });\n      } else {\n        callback(message !== false);\n      }\n    });\n  }\n\n  var pendingLocation = undefined;\n\n  function transitionTo(nextLocation) {\n    if (location && locationsAreEqual(location, nextLocation)) return; // Nothing to do.\n\n    pendingLocation = nextLocation;\n\n    confirmTransitionTo(nextLocation, function (ok) {\n      if (pendingLocation !== nextLocation) return; // Transition was interrupted.\n\n      if (ok) {\n        // treat PUSH to current path like REPLACE to be consistent with browsers\n        if (nextLocation.action === _Actions.PUSH) {\n          var prevPath = createPath(location);\n          var nextPath = createPath(nextLocation);\n\n          if (nextPath === prevPath && _deepEqual2['default'](location.state, nextLocation.state)) nextLocation.action = _Actions.REPLACE;\n        }\n\n        if (finishTransition(nextLocation) !== false) updateLocation(nextLocation);\n      } else if (location && nextLocation.action === _Actions.POP) {\n        var prevIndex = allKeys.indexOf(location.key);\n        var nextIndex = allKeys.indexOf(nextLocation.key);\n\n        if (prevIndex !== -1 && nextIndex !== -1) go(prevIndex - nextIndex); // Restore the URL.\n      }\n    });\n  }\n\n  function push(location) {\n    transitionTo(createLocation(location, _Actions.PUSH, createKey()));\n  }\n\n  function replace(location) {\n    transitionTo(createLocation(location, _Actions.REPLACE, createKey()));\n  }\n\n  function goBack() {\n    go(-1);\n  }\n\n  function goForward() {\n    go(1);\n  }\n\n  function createKey() {\n    return createRandomKey(keyLength);\n  }\n\n  function createPath(location) {\n    if (location == null || typeof location === 'string') return location;\n\n    var pathname = location.pathname;\n    var search = location.search;\n    var hash = location.hash;\n\n    var result = pathname;\n\n    if (search) result += search;\n\n    if (hash) result += hash;\n\n    return result;\n  }\n\n  function createHref(location) {\n    return createPath(location);\n  }\n\n  function createLocation(location, action) {\n    var key = arguments.length <= 2 || arguments[2] === undefined ? createKey() : arguments[2];\n\n    if (typeof action === 'object') {\n      process.env.NODE_ENV !== 'production' ? _warning2['default'](false, 'The state (2nd) argument to history.createLocation is deprecated; use a ' + 'location descriptor instead') : undefined;\n\n      if (typeof location === 'string') location = _PathUtils.parsePath(location);\n\n      location = _extends({}, location, { state: action });\n\n      action = key;\n      key = arguments[3] || createKey();\n    }\n\n    return _createLocation3['default'](location, action, key);\n  }\n\n  // deprecated\n  function setState(state) {\n    if (location) {\n      updateLocationState(location, state);\n      updateLocation(location);\n    } else {\n      updateLocationState(getCurrentLocation(), state);\n    }\n  }\n\n  function updateLocationState(location, state) {\n    location.state = _extends({}, location.state, state);\n    saveState(location.key, location.state);\n  }\n\n  // deprecated\n  function registerTransitionHook(hook) {\n    if (transitionHooks.indexOf(hook) === -1) transitionHooks.push(hook);\n  }\n\n  // deprecated\n  function unregisterTransitionHook(hook) {\n    transitionHooks = transitionHooks.filter(function (item) {\n      return item !== hook;\n    });\n  }\n\n  // deprecated\n  function pushState(state, path) {\n    if (typeof path === 'string') path = _PathUtils.parsePath(path);\n\n    push(_extends({ state: state }, path));\n  }\n\n  // deprecated\n  function replaceState(state, path) {\n    if (typeof path === 'string') path = _PathUtils.parsePath(path);\n\n    replace(_extends({ state: state }, path));\n  }\n\n  return {\n    listenBefore: listenBefore,\n    listen: listen,\n    transitionTo: transitionTo,\n    push: push,\n    replace: replace,\n    go: go,\n    goBack: goBack,\n    goForward: goForward,\n    createKey: createKey,\n    createPath: createPath,\n    createHref: createHref,\n    createLocation: createLocation,\n\n    setState: _deprecate2['default'](setState, 'setState is deprecated; use location.key to save state instead'),\n    registerTransitionHook: _deprecate2['default'](registerTransitionHook, 'registerTransitionHook is deprecated; use listenBefore instead'),\n    unregisterTransitionHook: _deprecate2['default'](unregisterTransitionHook, 'unregisterTransitionHook is deprecated; use the callback returned from listenBefore instead'),\n    pushState: _deprecate2['default'](pushState, 'pushState is deprecated; use push instead'),\n    replaceState: _deprecate2['default'](replaceState, 'replaceState is deprecated; use replace instead')\n  };\n}\n\nexports['default'] = createHistory;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _Actions = require('./Actions');\n\nvar _PathUtils = require('./PathUtils');\n\nfunction createLocation() {\n  var location = arguments.length <= 0 || arguments[0] === undefined ? '/' : arguments[0];\n  var action = arguments.length <= 1 || arguments[1] === undefined ? _Actions.POP : arguments[1];\n  var key = arguments.length <= 2 || arguments[2] === undefined ? null : arguments[2];\n\n  var _fourthArg = arguments.length <= 3 || arguments[3] === undefined ? null : arguments[3];\n\n  if (typeof location === 'string') location = _PathUtils.parsePath(location);\n\n  if (typeof action === 'object') {\n    process.env.NODE_ENV !== 'production' ? _warning2['default'](false, 'The state (2nd) argument to createLocation is deprecated; use a ' + 'location descriptor instead') : undefined;\n\n    location = _extends({}, location, { state: action });\n\n    action = key || _Actions.POP;\n    key = _fourthArg;\n  }\n\n  var pathname = location.pathname || '/';\n  var search = location.search || '';\n  var hash = location.hash || '';\n  var state = location.state || null;\n\n  return {\n    pathname: pathname,\n    search: search,\n    hash: hash,\n    state: state,\n    action: action,\n    key: key\n  };\n}\n\nexports['default'] = createLocation;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _PathUtils = require('./PathUtils');\n\nvar _Actions = require('./Actions');\n\nvar _createHistory = require('./createHistory');\n\nvar _createHistory2 = _interopRequireDefault(_createHistory);\n\nfunction createStateStorage(entries) {\n  return entries.filter(function (entry) {\n    return entry.state;\n  }).reduce(function (memo, entry) {\n    memo[entry.key] = entry.state;\n    return memo;\n  }, {});\n}\n\nfunction createMemoryHistory() {\n  var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n  if (Array.isArray(options)) {\n    options = { entries: options };\n  } else if (typeof options === 'string') {\n    options = { entries: [options] };\n  }\n\n  var history = _createHistory2['default'](_extends({}, options, {\n    getCurrentLocation: getCurrentLocation,\n    finishTransition: finishTransition,\n    saveState: saveState,\n    go: go\n  }));\n\n  var _options = options;\n  var entries = _options.entries;\n  var current = _options.current;\n\n  if (typeof entries === 'string') {\n    entries = [entries];\n  } else if (!Array.isArray(entries)) {\n    entries = ['/'];\n  }\n\n  entries = entries.map(function (entry) {\n    var key = history.createKey();\n\n    if (typeof entry === 'string') return { pathname: entry, key: key };\n\n    if (typeof entry === 'object' && entry) return _extends({}, entry, { key: key });\n\n    !false ? process.env.NODE_ENV !== 'production' ? _invariant2['default'](false, 'Unable to create history entry from %s', entry) : _invariant2['default'](false) : undefined;\n  });\n\n  if (current == null) {\n    current = entries.length - 1;\n  } else {\n    !(current >= 0 && current < entries.length) ? process.env.NODE_ENV !== 'production' ? _invariant2['default'](false, 'Current index must be >= 0 and < %s, was %s', entries.length, current) : _invariant2['default'](false) : undefined;\n  }\n\n  var storage = createStateStorage(entries);\n\n  function saveState(key, state) {\n    storage[key] = state;\n  }\n\n  function readState(key) {\n    return storage[key];\n  }\n\n  function getCurrentLocation() {\n    var entry = entries[current];\n    var basename = entry.basename;\n    var pathname = entry.pathname;\n    var search = entry.search;\n\n    var path = (basename || '') + pathname + (search || '');\n\n    var key = undefined,\n        state = undefined;\n    if (entry.key) {\n      key = entry.key;\n      state = readState(key);\n    } else {\n      key = history.createKey();\n      state = null;\n      entry.key = key;\n    }\n\n    var location = _PathUtils.parsePath(path);\n\n    return history.createLocation(_extends({}, location, { state: state }), undefined, key);\n  }\n\n  function canGo(n) {\n    var index = current + n;\n    return index >= 0 && index < entries.length;\n  }\n\n  function go(n) {\n    if (n) {\n      if (!canGo(n)) {\n        process.env.NODE_ENV !== 'production' ? _warning2['default'](false, 'Cannot go(%s) there is not enough history', n) : undefined;\n        return;\n      }\n\n      current += n;\n\n      var currentLocation = getCurrentLocation();\n\n      // change action to POP\n      history.transitionTo(_extends({}, currentLocation, { action: _Actions.POP }));\n    }\n  }\n\n  function finishTransition(location) {\n    switch (location.action) {\n      case _Actions.PUSH:\n        current += 1;\n\n        // if we are not on the top of stack\n        // remove rest and push new\n        if (current < entries.length) entries.splice(current);\n\n        entries.push(location);\n        saveState(location.key, location.state);\n        break;\n      case _Actions.REPLACE:\n        entries[current] = location;\n        saveState(location.key, location.state);\n        break;\n    }\n  }\n\n  return history;\n}\n\nexports['default'] = createMemoryHistory;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction deprecate(fn, message) {\n  return function () {\n    process.env.NODE_ENV !== 'production' ? _warning2['default'](false, '[history] ' + message) : undefined;\n    return fn.apply(this, arguments);\n  };\n}\n\nexports['default'] = deprecate;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction runTransitionHook(hook, location, callback) {\n  var result = hook(location, callback);\n\n  if (hook.length < 2) {\n    // Assume the hook runs synchronously and automatically\n    // call the callback with the return value.\n    callback(result);\n  } else {\n    process.env.NODE_ENV !== 'production' ? _warning2['default'](result === undefined, 'You should not \"return\" in a transition hook with a callback argument; call the callback instead') : undefined;\n  }\n}\n\nexports['default'] = runTransitionHook;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar _PathUtils = require('./PathUtils');\n\nvar _runTransitionHook = require('./runTransitionHook');\n\nvar _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);\n\nvar _deprecate = require('./deprecate');\n\nvar _deprecate2 = _interopRequireDefault(_deprecate);\n\nfunction useBasename(createHistory) {\n  return function () {\n    var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n    var history = createHistory(options);\n\n    var basename = options.basename;\n\n    var checkedBaseHref = false;\n\n    function checkBaseHref() {\n      if (checkedBaseHref) {\n        return;\n      }\n\n      // Automatically use the value of <base href> in HTML\n      // documents as basename if it's not explicitly given.\n      if (basename == null && _ExecutionEnvironment.canUseDOM) {\n        var base = document.getElementsByTagName('base')[0];\n        var baseHref = base && base.getAttribute('href');\n\n        if (baseHref != null) {\n          basename = baseHref;\n\n          process.env.NODE_ENV !== 'production' ? _warning2['default'](false, 'Automatically setting basename using <base href> is deprecated and will ' + 'be removed in the next major release. The semantics of <base href> are ' + 'subtly different from basename. Please pass the basename explicitly in ' + 'the options to createHistory') : undefined;\n        }\n      }\n\n      checkedBaseHref = true;\n    }\n\n    function addBasename(location) {\n      checkBaseHref();\n\n      if (basename && location.basename == null) {\n        if (location.pathname.indexOf(basename) === 0) {\n          location.pathname = location.pathname.substring(basename.length);\n          location.basename = basename;\n\n          if (location.pathname === '') location.pathname = '/';\n        } else {\n          location.basename = '';\n        }\n      }\n\n      return location;\n    }\n\n    function prependBasename(location) {\n      checkBaseHref();\n\n      if (!basename) return location;\n\n      if (typeof location === 'string') location = _PathUtils.parsePath(location);\n\n      var pname = location.pathname;\n      var normalizedBasename = basename.slice(-1) === '/' ? basename : basename + '/';\n      var normalizedPathname = pname.charAt(0) === '/' ? pname.slice(1) : pname;\n      var pathname = normalizedBasename + normalizedPathname;\n\n      return _extends({}, location, {\n        pathname: pathname\n      });\n    }\n\n    // Override all read methods with basename-aware versions.\n    function listenBefore(hook) {\n      return history.listenBefore(function (location, callback) {\n        _runTransitionHook2['default'](hook, addBasename(location), callback);\n      });\n    }\n\n    function listen(listener) {\n      return history.listen(function (location) {\n        listener(addBasename(location));\n      });\n    }\n\n    // Override all write methods with basename-aware versions.\n    function push(location) {\n      history.push(prependBasename(location));\n    }\n\n    function replace(location) {\n      history.replace(prependBasename(location));\n    }\n\n    function createPath(location) {\n      return history.createPath(prependBasename(location));\n    }\n\n    function createHref(location) {\n      return history.createHref(prependBasename(location));\n    }\n\n    function createLocation(location) {\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 addBasename(history.createLocation.apply(history, [prependBasename(location)].concat(args)));\n    }\n\n    // deprecated\n    function pushState(state, path) {\n      if (typeof path === 'string') path = _PathUtils.parsePath(path);\n\n      push(_extends({ state: state }, path));\n    }\n\n    // deprecated\n    function replaceState(state, path) {\n      if (typeof path === 'string') path = _PathUtils.parsePath(path);\n\n      replace(_extends({ state: state }, path));\n    }\n\n    return _extends({}, history, {\n      listenBefore: listenBefore,\n      listen: listen,\n      push: push,\n      replace: replace,\n      createPath: createPath,\n      createHref: createHref,\n      createLocation: createLocation,\n\n      pushState: _deprecate2['default'](pushState, 'pushState is deprecated; use push instead'),\n      replaceState: _deprecate2['default'](replaceState, 'replaceState is deprecated; use replace instead')\n    });\n  };\n}\n\nexports['default'] = useBasename;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _queryString = require('query-string');\n\nvar _runTransitionHook = require('./runTransitionHook');\n\nvar _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);\n\nvar _PathUtils = require('./PathUtils');\n\nvar _deprecate = require('./deprecate');\n\nvar _deprecate2 = _interopRequireDefault(_deprecate);\n\nvar SEARCH_BASE_KEY = '$searchBase';\n\nfunction defaultStringifyQuery(query) {\n  return _queryString.stringify(query).replace(/%20/g, '+');\n}\n\nvar defaultParseQueryString = _queryString.parse;\n\nfunction isNestedObject(object) {\n  for (var p in object) {\n    if (Object.prototype.hasOwnProperty.call(object, p) && typeof object[p] === 'object' && !Array.isArray(object[p]) && object[p] !== null) return true;\n  }return false;\n}\n\n/**\n * Returns a new createHistory function that may be used to create\n * history objects that know how to handle URL queries.\n */\nfunction useQueries(createHistory) {\n  return function () {\n    var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n    var history = createHistory(options);\n\n    var stringifyQuery = options.stringifyQuery;\n    var parseQueryString = options.parseQueryString;\n\n    if (typeof stringifyQuery !== 'function') stringifyQuery = defaultStringifyQuery;\n\n    if (typeof parseQueryString !== 'function') parseQueryString = defaultParseQueryString;\n\n    function addQuery(location) {\n      if (location.query == null) {\n        var search = location.search;\n\n        location.query = parseQueryString(search.substring(1));\n        location[SEARCH_BASE_KEY] = { search: search, searchBase: '' };\n      }\n\n      // TODO: Instead of all the book-keeping here, this should just strip the\n      // stringified query from the search.\n\n      return location;\n    }\n\n    function appendQuery(location, query) {\n      var _extends2;\n\n      var searchBaseSpec = location[SEARCH_BASE_KEY];\n      var queryString = query ? stringifyQuery(query) : '';\n      if (!searchBaseSpec && !queryString) {\n        return location;\n      }\n\n      process.env.NODE_ENV !== 'production' ? _warning2['default'](stringifyQuery !== defaultStringifyQuery || !isNestedObject(query), 'useQueries does not stringify nested query objects by default; ' + 'use a custom stringifyQuery function') : undefined;\n\n      if (typeof location === 'string') location = _PathUtils.parsePath(location);\n\n      var searchBase = undefined;\n      if (searchBaseSpec && location.search === searchBaseSpec.search) {\n        searchBase = searchBaseSpec.searchBase;\n      } else {\n        searchBase = location.search || '';\n      }\n\n      var search = searchBase;\n      if (queryString) {\n        search += (search ? '&' : '?') + queryString;\n      }\n\n      return _extends({}, location, (_extends2 = {\n        search: search\n      }, _extends2[SEARCH_BASE_KEY] = { search: search, searchBase: searchBase }, _extends2));\n    }\n\n    // Override all read methods with query-aware versions.\n    function listenBefore(hook) {\n      return history.listenBefore(function (location, callback) {\n        _runTransitionHook2['default'](hook, addQuery(location), callback);\n      });\n    }\n\n    function listen(listener) {\n      return history.listen(function (location) {\n        listener(addQuery(location));\n      });\n    }\n\n    // Override all write methods with query-aware versions.\n    function push(location) {\n      history.push(appendQuery(location, location.query));\n    }\n\n    function replace(location) {\n      history.replace(appendQuery(location, location.query));\n    }\n\n    function createPath(location, query) {\n      process.env.NODE_ENV !== 'production' ? _warning2['default'](!query, 'the query argument to createPath is deprecated; use a location descriptor instead') : undefined;\n\n      return history.createPath(appendQuery(location, query || location.query));\n    }\n\n    function createHref(location, query) {\n      process.env.NODE_ENV !== 'production' ? _warning2['default'](!query, 'the query argument to createHref is deprecated; use a location descriptor instead') : undefined;\n\n      return history.createHref(appendQuery(location, query || location.query));\n    }\n\n    function createLocation(location) {\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 fullLocation = history.createLocation.apply(history, [appendQuery(location, location.query)].concat(args));\n      if (location.query) {\n        fullLocation.query = location.query;\n      }\n      return addQuery(fullLocation);\n    }\n\n    // deprecated\n    function pushState(state, path, query) {\n      if (typeof path === 'string') path = _PathUtils.parsePath(path);\n\n      push(_extends({ state: state }, path, { query: query }));\n    }\n\n    // deprecated\n    function replaceState(state, path, query) {\n      if (typeof path === 'string') path = _PathUtils.parsePath(path);\n\n      replace(_extends({ state: state }, path, { query: query }));\n    }\n\n    return _extends({}, history, {\n      listenBefore: listenBefore,\n      listen: listen,\n      push: push,\n      replace: replace,\n      createPath: createPath,\n      createHref: createHref,\n      createLocation: createLocation,\n\n      pushState: _deprecate2['default'](pushState, 'pushState is deprecated; use push instead'),\n      replaceState: _deprecate2['default'](replaceState, 'replaceState is deprecated; use replace instead')\n    });\n  };\n}\n\nexports['default'] = useQueries;\nmodule.exports = exports['default'];","'use strict';\nvar strictUriEncode = require('strict-uri-encode');\n\nexports.extract = function (str) {\n\treturn str.split('?')[1] || '';\n};\n\nexports.parse = function (str) {\n\tif (typeof str !== 'string') {\n\t\treturn {};\n\t}\n\n\tstr = str.trim().replace(/^(\\?|#|&)/, '');\n\n\tif (!str) {\n\t\treturn {};\n\t}\n\n\treturn str.split('&').reduce(function (ret, param) {\n\t\tvar parts = param.replace(/\\+/g, ' ').split('=');\n\t\t// Firefox (pre 40) decodes `%3D` to `=`\n\t\t// https://github.com/sindresorhus/query-string/pull/37\n\t\tvar key = parts.shift();\n\t\tvar val = parts.length > 0 ? parts.join('=') : undefined;\n\n\t\tkey = decodeURIComponent(key);\n\n\t\t// missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tval = val === undefined ? null : decodeURIComponent(val);\n\n\t\tif (!ret.hasOwnProperty(key)) {\n\t\t\tret[key] = val;\n\t\t} else if (Array.isArray(ret[key])) {\n\t\t\tret[key].push(val);\n\t\t} else {\n\t\t\tret[key] = [ret[key], val];\n\t\t}\n\n\t\treturn ret;\n\t}, {});\n};\n\nexports.stringify = function (obj) {\n\treturn obj ? Object.keys(obj).sort().map(function (key) {\n\t\tvar val = obj[key];\n\n\t\tif (val === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (val === null) {\n\t\t\treturn key;\n\t\t}\n\n\t\tif (Array.isArray(val)) {\n\t\t\treturn val.slice().sort().map(function (val2) {\n\t\t\t\treturn strictUriEncode(key) + '=' + strictUriEncode(val2);\n\t\t\t}).join('&');\n\t\t}\n\n\t\treturn strictUriEncode(key) + '=' + strictUriEncode(val);\n\t}).filter(function (x) {\n\t\treturn x.length > 0;\n\t}).join('&') : '';\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\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\nvar warning = function() {};\n\nif (\"production\" !== 'production') {\n  warning = function(condition, format, args) {\n    var len = arguments.length;\n    args = new Array(len > 2 ? len - 2 : 0);\n    for (var key = 2; key < len; key++) {\n      args[key - 2] = arguments[key];\n    }\n    if (format === undefined) {\n      throw new Error(\n        '`warning(condition, format, ...args)` requires a warning ' +\n        'message argument'\n      );\n    }\n\n    if (format.length < 10 || (/^[s\\W]*$/).test(format)) {\n      throw new Error(\n        'The warning format should be able to uniquely identify this ' +\n        'warning. Please, use a more descriptive format than: ' + format\n      );\n    }\n\n    if (!condition) {\n      var argIndex = 0;\n      var message = 'Warning: ' +\n        format.replace(/%s/g, function() {\n          return args[argIndex++];\n        });\n      if (typeof console !== 'undefined') {\n        console.error(message);\n      }\n      try {\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}\n\nmodule.exports = warning;\n","/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n'use strict';\n\nvar REACT_STATICS = {\n    childContextTypes: true,\n    contextTypes: true,\n    defaultProps: true,\n    displayName: true,\n    getDefaultProps: true,\n    mixins: true,\n    propTypes: true,\n    type: true\n};\n\nvar KNOWN_STATICS = {\n    name: true,\n    length: true,\n    prototype: true,\n    caller: true,\n    arguments: true,\n    arity: true\n};\n\nvar isGetOwnPropertySymbolsAvailable = typeof Object.getOwnPropertySymbols === 'function';\n\nmodule.exports = function hoistNonReactStatics(targetComponent, sourceComponent, customStatics) {\n    if (typeof sourceComponent !== 'string') { // don't hoist over string (html) components\n        var keys = Object.getOwnPropertyNames(sourceComponent);\n\n        /* istanbul ignore else */\n        if (isGetOwnPropertySymbolsAvailable) {\n            keys = keys.concat(Object.getOwnPropertySymbols(sourceComponent));\n        }\n\n        for (var i = 0; i < keys.length; ++i) {\n            if (!REACT_STATICS[keys[i]] && !KNOWN_STATICS[keys[i]] && (!customStatics || !customStatics[keys[i]])) {\n                try {\n                    targetComponent[keys[i]] = sourceComponent[keys[i]];\n                } catch (error) {\n\n                }\n            }\n        }\n    }\n\n    return targetComponent;\n};\n","'use strict';\n\n/*global window, global*/\n\nvar root = typeof window !== 'undefined' ?\n    window : typeof global !== 'undefined' ?\n    global : {};\n\nmodule.exports = Individual;\n\nfunction Individual(key, value) {\n    if (key in root) {\n        return root[key];\n    }\n\n    root[key] = value;\n\n    return value;\n}\n","'use strict';\n\nvar Individual = require('./index.js');\n\nmodule.exports = OneVersion;\n\nfunction OneVersion(moduleName, version, defaultValue) {\n    var key = '__INDIVIDUAL_ONE_VERSION_' + moduleName;\n    var enforceKey = key + '_ENFORCE_SINGLETON';\n\n    var versionValue = Individual(enforceKey, version);\n\n    if (versionValue !== version) {\n        throw new Error('Can only have one copy of ' +\n            moduleName + '.\\n' +\n            'You already have version ' + versionValue +\n            ' installed.\\n' +\n            'This means you cannot install version ' + version);\n    }\n\n    return Individual(key, defaultValue);\n}\n","if (typeof Object.create === 'function') {\n  // implementation from standard node.js 'util' module\n  module.exports = function inherits(ctor, superCtor) {\n    ctor.super_ = superCtor\n    ctor.prototype = Object.create(superCtor.prototype, {\n      constructor: {\n        value: ctor,\n        enumerable: false,\n        writable: true,\n        configurable: true\n      }\n    });\n  };\n} else {\n  // old school shim for old browsers\n  module.exports = function inherits(ctor, superCtor) {\n    ctor.super_ = superCtor\n    var TempCtor = function () {}\n    TempCtor.prototype = superCtor.prototype\n    ctor.prototype = new TempCtor()\n    ctor.prototype.constructor = ctor\n  }\n}\n","/**\n * Copyright 2013-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\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 invariant = function(condition, format, a, b, c, d, e, f) {\n  if (\"production\" !== 'production') {\n    if (format === undefined) {\n      throw new Error('invariant requires an error message argument');\n    }\n  }\n\n  if (!condition) {\n    var error;\n    if (format === undefined) {\n      error = new Error(\n        'Minified exception occurred; use the non-minified dev environment ' +\n        'for the full error message and additional helpful warnings.'\n      );\n    } else {\n      var args = [a, b, c, d, e, f];\n      var argIndex = 0;\n      error = new Error(\n        format.replace(/%s/g, function() { 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    throw error;\n  }\n};\n\nmodule.exports = invariant;\n","'use strict';\n\nmodule.exports = alphabetical;\n\n/* Check if the given character code, or the character\n * code at the first character, is alphabetical. */\nfunction alphabetical(character) {\n  var code = typeof character === 'string' ?\n    character.charCodeAt(0) : character;\n\n  return (code >= 97 && code <= 122) || /* a-z */\n    (code >= 65 && code <= 90); /* A-Z */\n}\n","'use strict';\nmodule.exports = function (str) {\n\tif (typeof str !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\treturn !/[^0-9a-z\\xDF-\\xFF]/.test(str.toLowerCase());\n};\n","'use strict';\n\nvar alphabetical = require('is-alphabetical');\nvar decimal = require('is-decimal');\n\nmodule.exports = alphanumerical;\n\n/* Check if the given character code, or the character\n * code at the first character, is alphanumerical. */\nfunction alphanumerical(character) {\n  return alphabetical(character) || decimal(character);\n}\n","/*!\n * Determine if an object is a Buffer\n *\n * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license  MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n  return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n  return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n  return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n","'use strict';\n\nmodule.exports = decimal;\n\n/* Check if the given character code, or the character\n * code at the first character, is decimal. */\nfunction decimal(character) {\n  var code = typeof character === 'string' ?\n    character.charCodeAt(0) : character;\n\n  return code >= 48 && code <= 57; /* 0-9 */\n}\n","'use strict';\n\nmodule.exports = hexadecimal;\n\n/* Check if the given character code, or the character\n * code at the first character, is hexadecimal. */\nfunction hexadecimal(character) {\n  var code = typeof character === 'string' ?\n    character.charCodeAt(0) : character;\n\n  return (code >= 97 /* a */ && code <= 102 /* z */) ||\n    (code >= 65 /* A */ && code <= 70 /* Z */) ||\n    (code >= 48 /* A */ && code <= 57 /* Z */);\n}\n","'use strict';\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\nmodule.exports = function isNaN(value) {\n\treturn value !== value;\n};\n","'use strict';\n\nvar define = require('define-properties');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\ndefine(implementation, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = implementation;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\tif (Number.isNaN && Number.isNaN(NaN) && !Number.isNaN('a')) {\n\t\treturn Number.isNaN;\n\t}\n\treturn implementation;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\nmodule.exports = function shimNumberIsNaN() {\n\tvar polyfill = getPolyfill();\n\tdefine(Number, { isNaN: polyfill }, { isNaN: function () { return Number.isNaN !== polyfill; } });\n\treturn polyfill;\n};\n","'use strict';\n\nmodule.exports = whitespace;\n\nvar fromCode = String.fromCharCode;\nvar re = /\\s/;\n\n/* Check if the given character code, or the character\n * code at the first character, is a whitespace character. */\nfunction whitespace(character) {\n  return re.test(\n    typeof character === 'number' ? fromCode(character) : character.charAt(0)\n  );\n}\n","'use strict';\n\nmodule.exports = wordCharacter;\n\nvar fromCode = String.fromCharCode;\nvar re = /\\w/;\n\n/* Check if the given character code, or the character\n * code at the first character, is a word character. */\nfunction wordCharacter(character) {\n  return re.test(\n    typeof character === 'number' ? fromCode(character) : character.charAt(0)\n  );\n}\n","'use strict';\nvar KEBAB_REGEX = /[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g;\nvar REVERSE_REGEX = /-[a-z\\u00E0-\\u00F6\\u00F8-\\u00FE]/g;\n\nmodule.exports = exports = function kebabCase(str) {\n\treturn str.replace(KEBAB_REGEX, function (match) {\n\t\treturn '-' + match.toLowerCase();\n\t});\n};\n\nexports.reverse = function (str) {\n\treturn str.replace(REVERSE_REGEX, function (match) {\n\t\treturn match.slice(1).toUpperCase();\n\t});\n};\n","'use strict';\n\n/* Expose. */\nmodule.exports = longestStreak;\n\n/* Get the count of the longest repeating streak of\n * `character` in `value`. */\nfunction longestStreak(value, character) {\n  var count = 0;\n  var maximum = 0;\n  var expected;\n  var index;\n\n  if (typeof character !== 'string' || character.length !== 1) {\n    throw new Error('Expected character');\n  }\n\n  value = String(value);\n  expected = index = value.indexOf(character);\n\n  while (index !== -1) {\n    count++;\n\n    if (index === expected) {\n      if (count > maximum) {\n        maximum = count;\n      }\n    } else {\n      count = 1;\n    }\n\n    expected = index + 1;\n    index = value.indexOf(character, expected);\n  }\n\n  return maximum;\n}\n","'use strict';\n\nvar high = require('highlight.js/lib/highlight.js');\n\n/* The lowlight interface, which has to be compatible\n * with highlight.js, as this object is passed to\n * highlight.js syntaxes. */\n\nfunction High() {}\n\nHigh.prototype = high;\n\n/* Expose. */\nvar low = new High(); // Ha!\n\nmodule.exports = low;\n\nlow.highlight = highlight;\nlow.highlightAuto = autoHighlight;\nlow.registerLanguage = registerLanguage;\nlow.getLanguage = getLanguage;\n\nvar inherit = high.inherit;\nvar own = {}.hasOwnProperty;\n\nvar DEFAULT_PREFIX = 'hljs-';\nvar KEY_INSENSITIVE = 'case_insensitive';\nvar KEY_CACHED_VARIANTS = 'cached_variants';\nvar EMPTY = '';\n\nvar C_SPACE = ' ';\nvar C_PIPE = '|';\n\nvar T_ELEMENT = 'element';\nvar T_TEXT = 'text';\nvar T_SPAN = 'span';\n\n/* Maps of syntaxes. */\nvar languageNames = [];\nvar languages = {};\nvar aliases = {};\n\n/* Highlighting with language detection.  Accepts a string\n * with the code to highlight.  Returns an object with the\n * following properties:\n *\n * - language (detected language)\n * - relevance (int)\n * - value (an HTML string with highlighting markup)\n * - secondBest (object with the same structure for\n *   second-best heuristically detected language, may\n *   be absent) */\nfunction autoHighlight(value, options) {\n  var settings = options || {};\n  var prefix = settings.prefix;\n  var subset = settings.subset || languageNames;\n  var length = subset.length;\n  var index = -1;\n  var result;\n  var secondBest;\n  var current;\n  var name;\n\n  if (prefix === null || prefix === undefined) {\n    prefix = DEFAULT_PREFIX;\n  }\n\n  if (typeof value !== 'string') {\n    throw new Error('Expected `string` for value, got `' + value + '`');\n  }\n\n  secondBest = normalize({});\n  result = normalize({});\n\n  while (++index < length) {\n    name = subset[index];\n\n    if (!getLanguage(name)) {\n      continue;\n    }\n\n    current = normalize(coreHighlight(name, value, false, prefix));\n\n    current.language = name;\n\n    if (current.relevance > secondBest.relevance) {\n      secondBest = current;\n    }\n\n    if (current.relevance > result.relevance) {\n      secondBest = result;\n      result = current;\n    }\n  }\n\n  if (secondBest.language) {\n    result.secondBest = secondBest;\n  }\n\n  return result;\n}\n\n/* Highlighting `value` in the language `language`. */\nfunction highlight(language, value, options) {\n  var settings = options || {};\n  var prefix = settings.prefix;\n\n  if (prefix === null || prefix === undefined) {\n    prefix = DEFAULT_PREFIX;\n  }\n\n  return normalize(coreHighlight(language, value, true, prefix));\n}\n\n/* Register a language. */\nfunction registerLanguage(name, syntax) {\n  var lang = languages[name] = syntax(low);\n  var values = lang.aliases;\n  var length = values && values.length;\n  var index = -1;\n\n  languageNames.push(name);\n\n  while (++index < length) {\n    aliases[values[index]] = name;\n  }\n}\n\n/* Core highlighting function.  Accepts a language name, or\n * an alias, and a string with the code to highlight.\n * Returns an object with the following properties: */\nfunction coreHighlight(name, value, ignore, prefix, continuation) {\n  var continuations = {};\n  var stack = [];\n  var modeBuffer = EMPTY;\n  var relevance = 0;\n  var language;\n  var top;\n  var current;\n  var currentChildren;\n  var offset;\n  var count;\n  var match;\n  var children;\n\n  if (typeof name !== 'string') {\n    throw new Error('Expected `string` for name, got `' + name + '`');\n  }\n\n  if (typeof value !== 'string') {\n    throw new Error('Expected `string` for value, got `' + value + '`');\n  }\n\n  language = getLanguage(name);\n  current = top = continuation || language;\n  currentChildren = children = [];\n\n  if (!language) {\n    throw new Error('Unknown language: `' + name + '` is not registered');\n  }\n\n  compileLanguage(language);\n\n  try {\n    offset = top.terminators.lastIndex = 0;\n    match = top.terminators.exec(value);\n\n    while (match) {\n      count = processLexeme(value.substring(offset, match.index), match[0]);\n      offset = top.terminators.lastIndex = match.index + count;\n      match = top.terminators.exec(value);\n    }\n\n    processLexeme(value.substr(offset));\n    current = top;\n\n    while (current.parent) {\n      if (current.className) {\n        pop();\n      }\n\n      current = current.parent;\n    }\n\n    return {\n      relevance: relevance,\n      value: currentChildren,\n      language: name,\n      top: top\n    };\n  } catch (err) {\n    /* istanbul ignore if - Catch-all  */\n    if (err.message.indexOf('Illegal') === -1) {\n      throw err;\n    }\n\n    return {relevance: 0, value: addText(value, [])};\n  }\n\n  /* Process a lexeme.  Returns next position. */\n  function processLexeme(buffer, lexeme) {\n    var newMode;\n    var endMode;\n    var origin;\n\n    modeBuffer += buffer;\n\n    if (lexeme === undefined) {\n      addSiblings(processBuffer(), currentChildren);\n\n      return 0;\n    }\n\n    newMode = subMode(lexeme, top);\n\n    if (newMode) {\n      addSiblings(processBuffer(), currentChildren);\n\n      startNewMode(newMode, lexeme);\n\n      return newMode.returnBegin ? 0 : lexeme.length;\n    }\n\n    endMode = endOfMode(top, lexeme);\n\n    if (endMode) {\n      origin = top;\n\n      if (!(origin.returnEnd || origin.excludeEnd)) {\n        modeBuffer += lexeme;\n      }\n\n      addSiblings(processBuffer(), currentChildren);\n\n      /* Close open modes. */\n      do {\n        if (top.className) {\n          pop();\n        }\n\n        relevance += top.relevance;\n        top = top.parent;\n      } while (top !== endMode.parent);\n\n      if (origin.excludeEnd) {\n        addText(lexeme, currentChildren);\n      }\n\n      modeBuffer = EMPTY;\n\n      if (endMode.starts) {\n        startNewMode(endMode.starts, EMPTY);\n      }\n\n      return origin.returnEnd ? 0 : lexeme.length;\n    }\n\n    if (isIllegal(lexeme, top)) {\n      throw new Error(\n        'Illegal lexeme \"' + lexeme + '\" for mode \"' +\n        (top.className || '<unnamed>') + '\"'\n      );\n    }\n\n    /* Parser should not reach this point as all\n     * types of lexemes should be caught earlier,\n     * but if it does due to some bug make sure it\n     * advances at least one character forward to\n     * prevent infinite looping. */\n    modeBuffer += lexeme;\n\n    return lexeme.length || /* istanbul ignore next */ 1;\n  }\n\n  /* Start a new mode with a `lexeme` to process. */\n  function startNewMode(mode, lexeme) {\n    var node;\n\n    if (mode.className) {\n      node = build(mode.className, []);\n    }\n\n    if (mode.returnBegin) {\n      modeBuffer = EMPTY;\n    } else if (mode.excludeBegin) {\n      addText(lexeme, currentChildren);\n\n      modeBuffer = EMPTY;\n    } else {\n      modeBuffer = lexeme;\n    }\n\n    /* Enter a new mode. */\n    if (node) {\n      currentChildren.push(node);\n      stack.push(currentChildren);\n      currentChildren = node.children;\n    }\n\n    top = Object.create(mode, {parent: {value: top}});\n  }\n\n  /* Process the buffer. */\n  function processBuffer() {\n    var result = top.subLanguage === undefined ? processKeywords() : processSubLanguage();\n    modeBuffer = EMPTY;\n    return result;\n  }\n\n  /* Process a sublanguage (returns a list of nodes). */\n  function processSubLanguage() {\n    var explicit = typeof top.subLanguage === 'string';\n    var subvalue;\n\n    /* istanbul ignore if - support non-loaded sublanguages */\n    if (explicit && !languages[top.subLanguage]) {\n      return addText(modeBuffer, []);\n    }\n\n    if (explicit) {\n      subvalue = coreHighlight(\n        top.subLanguage,\n        modeBuffer,\n        true,\n        prefix,\n        continuations[top.subLanguage]\n      );\n    } else {\n      subvalue = autoHighlight(modeBuffer, {\n        subset: top.subLanguage.length ? top.subLanguage : undefined,\n        prefix: prefix\n      });\n    }\n\n    /* Counting embedded language score towards the\n     * host language may be disabled with zeroing the\n     * containing mode relevance.  Usecase in point is\n     * Markdown that allows XML everywhere and makes\n     * every XML snippet to have a much larger Markdown\n     * score. */\n    if (top.relevance > 0) {\n      relevance += subvalue.relevance;\n    }\n\n    if (explicit) {\n      continuations[top.subLanguage] = subvalue.top;\n    }\n\n    return [build(subvalue.language, subvalue.value, true)];\n  }\n\n  /* Process keywords. Returns nodes. */\n  function processKeywords() {\n    var nodes = [];\n    var lastIndex;\n    var keyword;\n    var node;\n    var submatch;\n\n    if (!top.keywords) {\n      return addText(modeBuffer, nodes);\n    }\n\n    lastIndex = 0;\n\n    top.lexemesRe.lastIndex = 0;\n\n    keyword = top.lexemesRe.exec(modeBuffer);\n\n    while (keyword) {\n      addText(modeBuffer.substring(lastIndex, keyword.index), nodes);\n\n      submatch = keywordMatch(top, keyword);\n\n      if (submatch) {\n        relevance += submatch[1];\n\n        node = build(submatch[0], []);\n\n        nodes.push(node);\n\n        addText(keyword[0], node.children);\n      } else {\n        addText(keyword[0], nodes);\n      }\n\n      lastIndex = top.lexemesRe.lastIndex;\n      keyword = top.lexemesRe.exec(modeBuffer);\n    }\n\n    addText(modeBuffer.substr(lastIndex), nodes);\n\n    return nodes;\n  }\n\n  /* Add siblings. */\n  function addSiblings(siblings, nodes) {\n    var length = siblings.length;\n    var index = -1;\n    var sibling;\n\n    while (++index < length) {\n      sibling = siblings[index];\n\n      if (sibling.type === T_TEXT) {\n        addText(sibling.value, nodes);\n      } else {\n        nodes.push(sibling);\n      }\n    }\n  }\n\n  /* Add a text. */\n  function addText(value, nodes) {\n    var tail;\n\n    if (value) {\n      tail = nodes[nodes.length - 1];\n\n      if (tail && tail.type === T_TEXT) {\n        tail.value += value;\n      } else {\n        nodes.push(buildText(value));\n      }\n    }\n\n    return nodes;\n  }\n\n  /* Build a text. */\n  function buildText(value) {\n    return {type: T_TEXT, value: value};\n  }\n\n  /* Build a span. */\n  function build(name, contents, noPrefix) {\n    return {\n      type: T_ELEMENT,\n      tagName: T_SPAN,\n      properties: {\n        className: [(noPrefix ? EMPTY : prefix) + name]\n      },\n      children: contents\n    };\n  }\n\n  /* Check if the first word in `keywords` is a keyword. */\n  function keywordMatch(mode, keywords) {\n    var keyword = keywords[0];\n\n    if (language[KEY_INSENSITIVE]) {\n      keyword = keyword.toLowerCase();\n    }\n\n    return own.call(mode.keywords, keyword) && mode.keywords[keyword];\n  }\n\n  /* Check if `lexeme` is illegal according to `mode`. */\n  function isIllegal(lexeme, mode) {\n    return !ignore && test(mode.illegalRe, lexeme);\n  }\n\n  /* Check if `lexeme` ends `mode`. */\n  function endOfMode(mode, lexeme) {\n    if (test(mode.endRe, lexeme)) {\n      while (mode.endsParent && mode.parent) {\n        mode = mode.parent;\n      }\n      return mode;\n    }\n\n    if (mode.endsWithParent) {\n      return endOfMode(mode.parent, lexeme);\n    }\n  }\n\n  /* Check a sub-mode. */\n  function subMode(lexeme, mode) {\n    var values = mode.contains;\n    var length = values.length;\n    var index = -1;\n\n    while (++index < length) {\n      if (test(values[index].beginRe, lexeme)) {\n        return values[index];\n      }\n    }\n  }\n\n  /* Exit the current context. */\n  function pop() {\n    /* istanbul ignore next - removed in hljs 9.3 */\n    currentChildren = stack.pop() || children;\n  }\n}\n\nfunction expandMode(mode) {\n  if (mode.variants && !mode[KEY_CACHED_VARIANTS]) {\n    mode[KEY_CACHED_VARIANTS] = mode.variants.map(function (variant) {\n      return inherit(mode, {variants: null}, variant);\n    });\n  }\n\n  return mode[KEY_CACHED_VARIANTS] || (mode.endsWithParent && [inherit(mode)]) || [mode];\n}\n\n/* Compile a language. */\nfunction compileLanguage(language) {\n  compileMode(language);\n\n  /* Compile a language mode, optionally with a parent. */\n  function compileMode(mode, parent) {\n    var compiledKeywords = {};\n    var terminators;\n\n    if (mode.compiled) {\n      return;\n    }\n\n    mode.compiled = true;\n\n    mode.keywords = mode.keywords || mode.beginKeywords;\n\n    if (mode.keywords) {\n      if (typeof mode.keywords === 'string') {\n        flatten('keyword', mode.keywords);\n      } else {\n        Object.keys(mode.keywords).forEach(function (className) {\n          flatten(className, mode.keywords[className]);\n        });\n      }\n\n      mode.keywords = compiledKeywords;\n    }\n\n    mode.lexemesRe = langRe(mode.lexemes || /\\w+/, true);\n\n    if (parent) {\n      if (mode.beginKeywords) {\n        mode.begin = '\\\\b(' + mode.beginKeywords.split(C_SPACE).join(C_PIPE) + ')\\\\b';\n      }\n\n      if (!mode.begin) {\n        mode.begin = /\\B|\\b/;\n      }\n\n      mode.beginRe = langRe(mode.begin);\n\n      if (!mode.end && !mode.endsWithParent) {\n        mode.end = /\\B|\\b/;\n      }\n\n      if (mode.end) {\n        mode.endRe = langRe(mode.end);\n      }\n\n      mode.terminatorEnd = source(mode.end) || EMPTY;\n\n      if (mode.endsWithParent && parent.terminatorEnd) {\n        mode.terminatorEnd += (mode.end ? C_PIPE : EMPTY) + parent.terminatorEnd;\n      }\n    }\n\n    if (mode.illegal) {\n      mode.illegalRe = langRe(mode.illegal);\n    }\n\n    if (mode.relevance === undefined) {\n      mode.relevance = 1;\n    }\n\n    if (!mode.contains) {\n      mode.contains = [];\n    }\n\n    mode.contains = Array.prototype.concat.apply([], mode.contains.map(function (c) {\n      return expandMode(c === 'self' ? mode : c);\n    }));\n\n    mode.contains.forEach(function (c) {\n      compileMode(c, mode);\n    });\n\n    if (mode.starts) {\n      compileMode(mode.starts, parent);\n    }\n\n    terminators =\n      mode.contains.map(function (c) {\n        return c.beginKeywords ? '\\\\.?(' + c.begin + ')\\\\.?' : c.begin;\n      })\n      .concat([mode.terminatorEnd, mode.illegal])\n      .map(source)\n      .filter(Boolean);\n\n    mode.terminators = terminators.length ?\n      langRe(terminators.join(C_PIPE), true) :\n      {exec: execNoop};\n\n    /* Flatten a classname. */\n    function flatten(className, value) {\n      var pairs;\n      var pair;\n      var index;\n      var length;\n\n      if (language[KEY_INSENSITIVE]) {\n        value = value.toLowerCase();\n      }\n\n      pairs = value.split(C_SPACE);\n      length = pairs.length;\n      index = -1;\n\n      while (++index < length) {\n        pair = pairs[index].split(C_PIPE);\n\n        compiledKeywords[pair[0]] = [\n          className,\n          pair[1] ? Number(pair[1]) : 1\n        ];\n      }\n    }\n  }\n\n  /* Create a regex for `value`. */\n  function langRe(value, global) {\n    return new RegExp(\n      source(value),\n      'm' + (language[KEY_INSENSITIVE] ? 'i' : '') +\n      (global ? 'g' : '')\n    );\n  }\n\n  /* Get the source of an expression or string. */\n  function source(re) {\n    return (re && re.source) || re;\n  }\n}\n\n/* Normalize a syntax result. */\nfunction normalize(result) {\n  return {\n    relevance: result.relevance || 0,\n    language: result.language || null,\n    value: result.value || []\n  };\n}\n\n/* Check if `expression` matches `lexeme`. */\nfunction test(expression, lexeme) {\n  var match = expression && expression.exec(lexeme);\n  return match && match.index === 0;\n}\n\n/* No-op exec. */\nfunction execNoop() {\n  return null;\n}\n\n/* Get a language by `name`. */\nfunction getLanguage(name) {\n  name = name.toLowerCase();\n\n  return languages[name] || languages[aliases[name]];\n}\n","'use strict';\n\nmodule.exports = escapes;\n\nvar defaults = [\n  '\\\\',\n  '`',\n  '*',\n  '{',\n  '}',\n  '[',\n  ']',\n  '(',\n  ')',\n  '#',\n  '+',\n  '-',\n  '.',\n  '!',\n  '_',\n  '>'\n];\n\nvar gfm = defaults.concat(['~', '|']);\n\nvar commonmark = gfm.concat([\n  '\\n',\n  '\"',\n  '$',\n  '%',\n  '&',\n  '\\'',\n  ',',\n  '/',\n  ':',\n  ';',\n  '<',\n  '=',\n  '?',\n  '@',\n  '^'\n]);\n\nescapes.default = defaults;\nescapes.gfm = gfm;\nescapes.commonmark = commonmark;\n\n/* Get markdown escapes. */\nfunction escapes(options) {\n  var settings = options || {};\n\n  if (settings.commonmark) {\n    return commonmark;\n  }\n\n  return settings.gfm ? gfm : defaults;\n}\n","'use strict';\n\n/* Expose. */\nmodule.exports = markdownTable;\n\n/* Expressions. */\nvar EXPRESSION_DOT = /\\./;\nvar EXPRESSION_LAST_DOT = /\\.[^.]*$/;\n\n/* Allowed alignment values. */\nvar LEFT = 'l';\nvar RIGHT = 'r';\nvar CENTER = 'c';\nvar DOT = '.';\nvar NULL = '';\n\nvar ALLIGNMENT = [LEFT, RIGHT, CENTER, DOT, NULL];\nvar MIN_CELL_SIZE = 3;\n\n/* Characters. */\nvar COLON = ':';\nvar DASH = '-';\nvar PIPE = '|';\nvar SPACE = ' ';\nvar NEW_LINE = '\\n';\n\n/* Create a table from a matrix of strings. */\nfunction markdownTable(table, options) {\n  var settings = options || {};\n  var delimiter = settings.delimiter;\n  var start = settings.start;\n  var end = settings.end;\n  var alignment = settings.align;\n  var calculateStringLength = settings.stringLength || lengthNoop;\n  var cellCount = 0;\n  var rowIndex = -1;\n  var rowLength = table.length;\n  var sizes = [];\n  var align;\n  var rule;\n  var rows;\n  var row;\n  var cells;\n  var index;\n  var position;\n  var size;\n  var value;\n  var spacing;\n  var before;\n  var after;\n\n  alignment = alignment ? alignment.concat() : [];\n\n  if (delimiter === null || delimiter === undefined) {\n    delimiter = SPACE + PIPE + SPACE;\n  }\n\n  if (start === null || start === undefined) {\n    start = PIPE + SPACE;\n  }\n\n  if (end === null || end === undefined) {\n    end = SPACE + PIPE;\n  }\n\n  while (++rowIndex < rowLength) {\n    row = table[rowIndex];\n\n    index = -1;\n\n    if (row.length > cellCount) {\n      cellCount = row.length;\n    }\n\n    while (++index < cellCount) {\n      position = row[index] ? dotindex(row[index]) : null;\n\n      if (!sizes[index]) {\n        sizes[index] = MIN_CELL_SIZE;\n      }\n\n      if (position > sizes[index]) {\n        sizes[index] = position;\n      }\n    }\n  }\n\n  if (typeof alignment === 'string') {\n    alignment = pad(cellCount, alignment).split('');\n  }\n\n  /* Make sure only valid alignments are used. */\n  index = -1;\n\n  while (++index < cellCount) {\n    align = alignment[index];\n\n    if (typeof align === 'string') {\n      align = align.charAt(0).toLowerCase();\n    }\n\n    if (ALLIGNMENT.indexOf(align) === -1) {\n      align = NULL;\n    }\n\n    alignment[index] = align;\n  }\n\n  rowIndex = -1;\n  rows = [];\n\n  while (++rowIndex < rowLength) {\n    row = table[rowIndex];\n\n    index = -1;\n    cells = [];\n\n    while (++index < cellCount) {\n      value = row[index];\n\n      value = stringify(value);\n\n      if (alignment[index] === DOT) {\n        position = dotindex(value);\n\n        size = sizes[index] +\n          (EXPRESSION_DOT.test(value) ? 0 : 1) -\n          (calculateStringLength(value) - position);\n\n        cells[index] = value + pad(size - 1);\n      } else {\n        cells[index] = value;\n      }\n    }\n\n    rows[rowIndex] = cells;\n  }\n\n  sizes = [];\n  rowIndex = -1;\n\n  while (++rowIndex < rowLength) {\n    cells = rows[rowIndex];\n\n    index = -1;\n\n    while (++index < cellCount) {\n      value = cells[index];\n\n      if (!sizes[index]) {\n        sizes[index] = MIN_CELL_SIZE;\n      }\n\n      size = calculateStringLength(value);\n\n      if (size > sizes[index]) {\n        sizes[index] = size;\n      }\n    }\n  }\n\n  rowIndex = -1;\n\n  while (++rowIndex < rowLength) {\n    cells = rows[rowIndex];\n\n    index = -1;\n\n    if (settings.pad !== false) {\n      while (++index < cellCount) {\n        value = cells[index];\n\n        position = sizes[index] - (calculateStringLength(value) || 0);\n        spacing = pad(position);\n\n        if (alignment[index] === RIGHT || alignment[index] === DOT) {\n          value = spacing + value;\n        } else if (alignment[index] === CENTER) {\n          position /= 2;\n\n          if (position % 1 === 0) {\n            before = position;\n            after = position;\n          } else {\n            before = position + 0.5;\n            after = position - 0.5;\n          }\n\n          value = pad(before) + value + pad(after);\n        } else {\n          value += spacing;\n        }\n\n        cells[index] = value;\n      }\n    }\n\n    rows[rowIndex] = cells.join(delimiter);\n  }\n\n  if (settings.rule !== false) {\n    index = -1;\n    rule = [];\n\n    while (++index < cellCount) {\n      /* When `pad` is false, make the rule the same size as the first row. */\n      if (settings.pad === false) {\n        value = table[0][index];\n        spacing = calculateStringLength(stringify(value));\n        spacing = spacing > MIN_CELL_SIZE ? spacing : MIN_CELL_SIZE;\n      } else {\n        spacing = sizes[index];\n      }\n\n      align = alignment[index];\n\n      /* When `align` is left, don't add colons. */\n      value = align === RIGHT || align === NULL ? DASH : COLON;\n      value += pad(spacing - 2, DASH);\n      value += align !== LEFT && align !== NULL ? COLON : DASH;\n\n      rule[index] = value;\n    }\n\n    rows.splice(1, 0, rule.join(delimiter));\n  }\n\n  return start + rows.join(end + NEW_LINE + start) + end;\n}\n\nfunction stringify(value) {\n  return (value === null || value === undefined) ? '' : String(value);\n}\n\n/* Get the length of `value`. */\nfunction lengthNoop(value) {\n  return String(value).length;\n}\n\n/* Get a string consisting of `length` `character`s. */\nfunction pad(length, character) {\n  return Array(length + 1).join(character || SPACE);\n}\n\n/* Get the position of the last dot in `value`. */\nfunction dotindex(value) {\n  var match = EXPRESSION_LAST_DOT.exec(value);\n\n  return match ? match.index + 1 : value.length;\n}\n","'use strict';\n\n/* Dependencies. */\nvar visit = require('unist-util-visit');\nvar modify = require('unist-util-modify-children');\n\n/* Expose. */\nmodule.exports = compact;\n\n/* Make an MDAST tree compact by merging adjacent text\n * nodes. */\nfunction compact(tree, commonmark) {\n  var modifier = modify(iterator);\n\n  visit(tree, visitor);\n\n  return tree;\n\n  function visitor(node) {\n    if (node.children) {\n      modifier(node);\n    }\n  }\n\n  function iterator(child, index, parent) {\n    var siblings = parent.children;\n    var prev = index && siblings[index - 1];\n\n    if (\n      prev &&\n      child.type === prev.type &&\n      mergeable(prev, commonmark) &&\n      mergeable(child, commonmark)\n    ) {\n      if (child.value) {\n        prev.value += child.value;\n      }\n\n      if (child.children) {\n        prev.children = prev.children.concat(child.children);\n      }\n\n      siblings.splice(index, 1);\n\n      if (prev.position && child.position) {\n        prev.position.end = child.position.end;\n      }\n\n      return index;\n    }\n  }\n}\n\nfunction mergeable(node, commonmark) {\n  var start;\n  var end;\n\n  if (node.type === 'text') {\n    if (!node.position) {\n      return true;\n    }\n\n    start = node.position.start;\n    end = node.position.end;\n\n    /* Only merge nodes which occupy the same size as their `value`. */\n    return start.line !== end.line ||\n      end.column - start.column === node.value.length;\n  }\n\n  return commonmark && node.type === 'blockquote';\n}\n","'use strict';\n\nvar visit = require('unist-util-visit');\n\nmodule.exports = getDefinitionFactory;\n\nvar own = {}.hasOwnProperty;\n\n/* Get a definition in `node` by `identifier`. */\nfunction getDefinitionFactory(node, options) {\n  return getterFactory(gather(node, options));\n}\n\n/* Gather all definitions in `node` */\nfunction gather(node, options) {\n  var cache = {};\n\n  if (!node || !node.type) {\n    throw new Error('mdast-util-definitions expected node');\n  }\n\n  visit(node, 'definition', options && options.commonmark ? commonmark : normal);\n\n  return cache;\n\n  function commonmark(definition) {\n    var id = normalise(definition.identifier);\n    if (!own.call(cache, id)) {\n      cache[id] = definition;\n    }\n  }\n\n  function normal(definition) {\n    cache[normalise(definition.identifier)] = definition;\n  }\n}\n\n/* Factory to get a node from the given definition-cache. */\nfunction getterFactory(cache) {\n  return getter;\n\n  /* Get a node from the bound definition-cache. */\n  function getter(identifier) {\n    var id = identifier && normalise(identifier);\n    return id && own.call(cache, id) ? cache[id] : null;\n  }\n}\n\nfunction normalise(identifier) {\n  return identifier.toUpperCase();\n}\n","'use strict';\nmodule.exports = require('./lib/index.js');\n","'use strict';\n\nmodule.exports = all;\n\nvar trim = require('trim');\nvar one = require('./one');\n\n/* Transform the children of `parent`. */\nfunction all(h, parent) {\n  var nodes = parent.children || [];\n  var length = nodes.length;\n  var values = [];\n  var index = -1;\n  var result;\n  var head;\n\n  while (++index < length) {\n    result = one(h, nodes[index], parent);\n\n    if (result) {\n      if (index && nodes[index - 1].type === 'break') {\n        if (result.value) {\n          result.value = trim.left(result.value);\n        }\n\n        head = result.children && result.children[0];\n\n        if (head && head.value) {\n          head.value = trim.left(head.value);\n        }\n      }\n\n      values = values.concat(result);\n    }\n  }\n\n  return values;\n}\n","'use strict';\n\nmodule.exports = failsafe;\n\nvar u = require('unist-builder');\nvar all = require('./all');\n\n/* Return the content of a reference without definition\n * as markdown. */\nfunction failsafe(h, node, definition) {\n  var subtype = node.referenceType;\n\n  if (subtype !== 'collapsed' && subtype !== 'full' && !definition) {\n    if (node.type === 'imageReference') {\n      return u('text', '![' + node.alt + ']');\n    }\n\n    return [u('text', '[')].concat(all(h, node), u('text', ']'));\n  }\n}\n","'use strict';\n\nmodule.exports = generateFootnotes;\n\nvar thematicBreak = require('./handlers/thematic-break');\nvar list = require('./handlers/list');\nvar wrap = require('./wrap');\n\n/* Transform all footnote definitions, if any. */\nfunction generateFootnotes(h) {\n  var footnotes = h.footnotes;\n  var length = footnotes.length;\n  var index = -1;\n  var listItems = [];\n  var def;\n\n  if (!length) {\n    return null;\n  }\n\n  while (++index < length) {\n    def = footnotes[index];\n\n    listItems[index] = {\n      type: 'listItem',\n      data: {hProperties: {id: 'fn-' + def.identifier}},\n      children: def.children.concat({\n        type: 'link',\n        url: '#fnref-' + def.identifier,\n        data: {hProperties: {className: ['footnote-backref']}},\n        children: [{\n          type: 'text',\n          value: '↩'\n        }]\n      }),\n      position: def.position\n    };\n  }\n\n  return h(null, 'div', {\n    className: ['footnotes']\n  }, wrap([\n    thematicBreak(h),\n    list(h, {\n      type: 'list',\n      ordered: true,\n      children: listItems\n    })\n  ], true));\n}\n","'use strict';\n\nmodule.exports = blockquote;\n\nvar wrap = require('../wrap');\nvar all = require('../all');\n\n/* Transform a block quote. */\nfunction blockquote(h, node) {\n  return h(node, 'blockquote', wrap(all(h, node), true));\n}\n","'use strict';\n\nmodule.exports = hardBreak;\n\nvar u = require('unist-builder');\n\n/* Transform an inline break. */\nfunction hardBreak(h, node) {\n  return [h(node, 'br'), u('text', '\\n')];\n}\n","'use strict';\n\nmodule.exports = code;\n\nvar detab = require('detab');\nvar u = require('unist-builder');\n\n/* Transform a code block. */\nfunction code(h, node) {\n  var value = node.value ? detab(node.value + '\\n') : '';\n  var lang = node.lang && node.lang.match(/^[^ \\t]+(?=[ \\t]|$)/);\n  var props = {};\n\n  if (lang) {\n    props.className = ['language-' + lang];\n  }\n\n  return h(node.position, 'pre', [\n    h(node, 'code', props, [u('text', value)])\n  ]);\n}\n","'use strict';\n\nmodule.exports = strikethrough;\n\nvar all = require('../all');\n\n/* Transform deletions. */\nfunction strikethrough(h, node) {\n  return h(node, 'del', all(h, node));\n}\n","'use strict';\n\nmodule.exports = emphasis;\n\nvar all = require('../all');\n\n/* Transform emphasis. */\nfunction emphasis(h, node) {\n  return h(node, 'em', all(h, node));\n}\n","'use strict';\n\nmodule.exports = footnoteReference;\n\nvar u = require('unist-builder');\n\n/* Transform a reference to a footnote. */\nfunction footnoteReference(h, node) {\n  var identifier = node.identifier;\n\n  return h(node.position, 'sup', {id: 'fnref-' + identifier}, [\n    h(node, 'a', {\n      href: '#fn-' + identifier,\n      className: ['footnote-ref']\n    }, [u('text', identifier)])\n  ]);\n}\n","'use strict';\n\nmodule.exports = footnote;\n\nvar footnoteReference = require('./footnote-reference');\n\n/* Transform an inline footnote. */\nfunction footnote(h, node) {\n  var identifiers = [];\n  var identifier = 1;\n  var footnotes = h.footnotes;\n  var length = footnotes.length;\n  var index = -1;\n\n  while (++index < length) {\n    identifiers[index] = footnotes[index].identifier;\n  }\n\n  while (identifiers.indexOf(String(identifier)) !== -1) {\n    identifier++;\n  }\n\n  identifier = String(identifier);\n\n  footnotes.push({\n    type: 'footnoteDefinition',\n    identifier: identifier,\n    children: node.children,\n    position: node.position\n  });\n\n  return footnoteReference(h, {\n    type: 'footnoteReference',\n    identifier: identifier,\n    position: node.position\n  });\n}\n","'use strict';\n\nmodule.exports = heading;\n\nvar all = require('../all');\n\n/* Transform a heading. */\nfunction heading(h, node) {\n  return h(node, 'h' + node.depth, all(h, node));\n}\n","'use strict';\n\nmodule.exports = html;\n\nvar u = require('unist-builder');\n\n/* Return either a `raw` node, in dangerous mode, or\n * nothing. */\nfunction html(h, node) {\n  return h.dangerous ? h.augment(node, u('raw', node.value)) : null;\n}\n","'use strict';\n\nmodule.exports = imageReference;\n\nvar normalize = require('mdurl/encode');\nvar failsafe = require('../failsafe');\n\n/* Transform a reference to an image. */\nfunction imageReference(h, node) {\n  var def = h.definition(node.identifier);\n  var props = {src: normalize((def && def.url) || ''), alt: node.alt};\n\n  if (def && def.title !== null && def.title !== undefined) {\n    props.title = def.title;\n  }\n\n  return failsafe(h, node, def) || h(node, 'img', props);\n}\n","'use strict';\n\nvar normalize = require('mdurl/encode');\n\nmodule.exports = image;\n\n/* Transform an image. */\nfunction image(h, node) {\n  var props = {src: normalize(node.url), alt: node.alt};\n\n  if (node.title !== null && node.title !== undefined) {\n    props.title = node.title;\n  }\n\n  return h(node, 'img', props);\n}\n","'use strict';\n\nmodule.exports = {\n  blockquote: require('./blockquote'),\n  break: require('./break'),\n  code: require('./code'),\n  delete: require('./delete'),\n  emphasis: require('./emphasis'),\n  footnoteReference: require('./footnote-reference'),\n  footnote: require('./footnote'),\n  heading: require('./heading'),\n  html: require('./html'),\n  imageReference: require('./image-reference'),\n  image: require('./image'),\n  inlineCode: require('./inline-code'),\n  linkReference: require('./link-reference'),\n  link: require('./link'),\n  listItem: require('./list-item'),\n  list: require('./list'),\n  paragraph: require('./paragraph'),\n  root: require('./root'),\n  strong: require('./strong'),\n  table: require('./table'),\n  text: require('./text'),\n  thematicBreak: require('./thematic-break'),\n  toml: ignore,\n  yaml: ignore,\n  definition: ignore,\n  footnoteDefinition: ignore\n};\n\n/* Return nothing for nodes which are ignored. */\nfunction ignore() {\n  return null;\n}\n","'use strict';\n\nmodule.exports = inlineCode;\n\nvar collapse = require('collapse-white-space');\nvar u = require('unist-builder');\n\n/* Transform inline code. */\nfunction inlineCode(h, node) {\n  return h(node, 'code', [u('text', collapse(node.value))]);\n}\n","'use strict';\n\nmodule.exports = linkReference;\n\nvar normalize = require('mdurl/encode');\nvar failsafe = require('../failsafe');\nvar all = require('../all');\n\n/* Transform a reference to a link. */\nfunction linkReference(h, node) {\n  var def = h.definition(node.identifier);\n  var props = {href: normalize((def && def.url) || '')};\n\n  if (def && def.title !== null && def.title !== undefined) {\n    props.title = def.title;\n  }\n\n  return failsafe(h, node, def) || h(node, 'a', props, all(h, node));\n}\n","'use strict';\n\nvar normalize = require('mdurl/encode');\nvar all = require('../all');\n\nmodule.exports = link;\n\n/* Transform a link. */\nfunction link(h, node) {\n  var props = {href: normalize(node.url)};\n\n  if (node.title !== null && node.title !== undefined) {\n    props.title = node.title;\n  }\n\n  return h(node, 'a', props, all(h, node));\n}\n","'use strict';\n\nmodule.exports = listItem;\n\nvar u = require('unist-builder');\nvar wrap = require('../wrap');\nvar all = require('../all');\n\n/* Transform a list-item. */\nfunction listItem(h, node, parent) {\n  var children = node.children;\n  var head = children[0];\n  var props = {};\n  var single = false;\n  var result;\n  var container;\n\n  if ((!parent || !parent.loose) && children.length === 1 && head.type === 'paragraph') {\n    single = true;\n  }\n\n  result = all(h, single ? head : node);\n\n  if (typeof node.checked === 'boolean') {\n    if (!single && (!head || head.type !== 'paragraph')) {\n      result.unshift(h(null, 'p', []));\n    }\n\n    container = single ? result : result[0].children;\n\n    if (container.length !== 0) {\n      container.unshift(u('text', ' '));\n    }\n\n    container.unshift(h(null, 'input', {\n      type: 'checkbox',\n      checked: node.checked,\n      disabled: true\n    }));\n\n    /* According to github-markdown-css, this class hides bullet. */\n    props.className = ['task-list-item'];\n  }\n\n  if (!single && result.length !== 0) {\n    result = wrap(result, true);\n  }\n\n  return h(node, 'li', props, result);\n}\n","'use strict';\n\nmodule.exports = list;\n\nvar wrap = require('../wrap');\nvar all = require('../all');\n\n/* Transform a list. */\nfunction list(h, node) {\n  var props = {};\n  var name = node.ordered ? 'ol' : 'ul';\n\n  if (typeof node.start === 'number' && node.start !== 1) {\n    props.start = node.start;\n  }\n\n  return h(node, name, props, wrap(all(h, node), true));\n}\n","'use strict';\n\nmodule.exports = paragraph;\n\nvar all = require('../all');\n\n/* Transform a paragraph. */\nfunction paragraph(h, node) {\n  return h(node, 'p', all(h, node));\n}\n","'use strict';\n\nmodule.exports = root;\n\nvar u = require('unist-builder');\nvar wrap = require('../wrap');\nvar all = require('../all');\n\n/* Transform a `root`. */\nfunction root(h, node) {\n  return h.augment(node, u('root', wrap(all(h, node))));\n}\n","'use strict';\n\nmodule.exports = strong;\n\nvar all = require('../all');\n\n/* Transform importance. */\nfunction strong(h, node) {\n  return h(node, 'strong', all(h, node));\n}\n","'use strict';\n\nmodule.exports = table;\n\nvar position = require('unist-util-position');\nvar wrap = require('../wrap');\nvar all = require('../all');\n\n/* Transform a table. */\nfunction table(h, node) {\n  var rows = node.children;\n  var index = rows.length;\n  var align = node.align;\n  var alignLength = align.length;\n  var result = [];\n  var pos;\n  var row;\n  var out;\n  var name;\n  var cell;\n\n  while (index--) {\n    row = rows[index].children;\n    name = index === 0 ? 'th' : 'td';\n    pos = alignLength;\n    out = [];\n\n    while (pos--) {\n      cell = row[pos];\n      out[pos] = h(cell, name, {\n        align: align[pos]\n      }, cell ? wrap(all(h, cell)) : []);\n    }\n\n    result[index] = h(rows[index], 'tr', wrap(out, true));\n  }\n\n  return h(node, 'table', wrap([\n    h(result[0].position, 'thead', wrap([result[0]], true)),\n    h({\n      start: position.start(result[1]),\n      end: position.end(result[result.length - 1])\n    }, 'tbody', wrap(result.slice(1), true))\n  ], true));\n}\n","'use strict';\n\nmodule.exports = text;\n\nvar u = require('unist-builder');\nvar trimLines = require('trim-lines');\n\n/* Transform text. */\nfunction text(h, node) {\n  return h.augment(node, u('text', trimLines(node.value)));\n}\n","'use strict';\n\nmodule.exports = thematicBreak;\n\n/* Transform a thematic break / horizontal rule. */\nfunction thematicBreak(h, node) {\n  return h(node, 'hr');\n}\n","'use strict';\n\nmodule.exports = toHAST;\n\nvar xtend = require('xtend');\nvar u = require('unist-builder');\nvar visit = require('unist-util-visit');\nvar position = require('unist-util-position');\nvar generated = require('unist-util-generated');\nvar definitions = require('mdast-util-definitions');\nvar one = require('./one');\nvar footer = require('./footer');\nvar handlers = require('./handlers');\n\n/* Factory to transform. */\nfunction factory(tree, options) {\n  var settings = options || {};\n  var dangerous = settings.allowDangerousHTML;\n\n  h.dangerous = dangerous;\n  h.definition = definitions(tree, settings);\n  h.footnotes = [];\n  h.augment = augment;\n  h.handlers = xtend(handlers, (settings.handlers || {}));\n\n  visit(tree, 'footnoteDefinition', visitor);\n\n  return h;\n\n  /* Finalise the created `right`, a HAST node, from\n   * `left`, an MDAST node.   */\n  function augment(left, right) {\n    var data;\n    var ctx;\n\n    /* Handle `data.hName`, `data.hProperties, `hChildren`. */\n    if (left && 'data' in left) {\n      data = left.data;\n\n      if (right.type === 'element' && data.hName) {\n        right.tagName = data.hName;\n      }\n\n      if (right.type === 'element' && data.hProperties) {\n        right.properties = xtend(right.properties, data.hProperties);\n      }\n\n      if (right.children && data.hChildren) {\n        right.children = data.hChildren;\n      }\n    }\n\n    ctx = left && left.position ? left : {position: left};\n\n    if (!generated(ctx)) {\n      right.position = {\n        start: position.start(ctx),\n        end: position.end(ctx)\n      };\n    }\n\n    return right;\n  }\n\n  /* Create an element for a `node`. */\n  function h(node, tagName, props, children) {\n    if (\n      (children === undefined || children === null) &&\n      typeof props === 'object' &&\n      'length' in props\n    ) {\n      children = props;\n      props = {};\n    }\n\n    return augment(node, {\n      type: 'element',\n      tagName: tagName,\n      properties: props || {},\n      children: children || []\n    });\n  }\n\n  function visitor(definition) {\n    h.footnotes.push(definition);\n  }\n}\n\n/* Transform `tree`, which is an MDAST node, to a HAST node. */\nfunction toHAST(tree, options) {\n  var h = factory(tree, options);\n  var node = one(h, tree);\n  var footnotes = footer(h);\n\n  if (node && node.children && footnotes) {\n    node.children = node.children.concat(u('text', '\\n'), footnotes);\n  }\n\n  return node;\n}\n","'use strict';\n\nmodule.exports = one;\n\nvar u = require('unist-builder');\nvar all = require('./all');\n\nvar own = {}.hasOwnProperty;\n\n/* Transform an unknown node. */\nfunction unknown(h, node) {\n  if (text(node)) {\n    return h.augment(node, u('text', node.value));\n  }\n\n  return h(node, 'div', all(h, node));\n}\n\n/* Visit a node. */\nfunction one(h, node, parent) {\n  var type = node && node.type;\n  var fn = own.call(h.handlers, type) ? h.handlers[type] : null;\n\n  /* Fail on non-nodes. */\n  if (!type) {\n    throw new Error('Expected node, got `' + node + '`');\n  }\n\n  return (typeof fn === 'function' ? fn : unknown)(h, node, parent);\n}\n\n/* Check if the node should be renderered a text node. */\nfunction text(node) {\n  var data = node.data || {};\n\n  if (own.call(data, 'hName') || own.call(data, 'hProperties') || own.call(data, 'hChildren')) {\n    return false;\n  }\n\n  return 'value' in node;\n}\n","'use strict';\n\nmodule.exports = wrap;\n\nvar u = require('unist-builder');\n\n/* Wrap `nodes` with newlines between each entry.\n * Optionally adds newlines at the start and end. */\nfunction wrap(nodes, loose) {\n  var result = [];\n  var index = -1;\n  var length = nodes.length;\n\n  if (loose) {\n    result.push(u('text', '\\n'));\n  }\n\n  while (++index < length) {\n    if (index) {\n      result.push(u('text', '\\n'));\n    }\n\n    result.push(nodes[index]);\n  }\n\n  if (loose && nodes.length !== 0) {\n    result.push(u('text', '\\n'));\n  }\n\n  return result;\n}\n","\n'use strict';\n\n\nvar encodeCache = {};\n\n\n// Create a lookup array where anything but characters in `chars` string\n// and alphanumeric chars is percent-encoded.\n//\nfunction getEncodeCache(exclude) {\n  var i, ch, cache = encodeCache[exclude];\n  if (cache) { return cache; }\n\n  cache = encodeCache[exclude] = [];\n\n  for (i = 0; i < 128; i++) {\n    ch = String.fromCharCode(i);\n\n    if (/^[0-9a-z]$/i.test(ch)) {\n      // always allow unencoded alphanumeric characters\n      cache.push(ch);\n    } else {\n      cache.push('%' + ('0' + i.toString(16).toUpperCase()).slice(-2));\n    }\n  }\n\n  for (i = 0; i < exclude.length; i++) {\n    cache[exclude.charCodeAt(i)] = exclude[i];\n  }\n\n  return cache;\n}\n\n\n// Encode unsafe characters with percent-encoding, skipping already\n// encoded sequences.\n//\n//  - string       - string to encode\n//  - exclude      - list of characters to ignore (in addition to a-zA-Z0-9)\n//  - keepEscaped  - don't encode '%' in a correct escape sequence (default: true)\n//\nfunction encode(string, exclude, keepEscaped) {\n  var i, l, code, nextCode, cache,\n      result = '';\n\n  if (typeof exclude !== 'string') {\n    // encode(string, keepEscaped)\n    keepEscaped  = exclude;\n    exclude = encode.defaultChars;\n  }\n\n  if (typeof keepEscaped === 'undefined') {\n    keepEscaped = true;\n  }\n\n  cache = getEncodeCache(exclude);\n\n  for (i = 0, l = string.length; i < l; i++) {\n    code = string.charCodeAt(i);\n\n    if (keepEscaped && code === 0x25 /* % */ && i + 2 < l) {\n      if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {\n        result += string.slice(i, i + 3);\n        i += 2;\n        continue;\n      }\n    }\n\n    if (code < 128) {\n      result += cache[code];\n      continue;\n    }\n\n    if (code >= 0xD800 && code <= 0xDFFF) {\n      if (code >= 0xD800 && code <= 0xDBFF && i + 1 < l) {\n        nextCode = string.charCodeAt(i + 1);\n        if (nextCode >= 0xDC00 && nextCode <= 0xDFFF) {\n          result += encodeURIComponent(string[i] + string[i + 1]);\n          i++;\n          continue;\n        }\n      }\n      result += '%EF%BF%BD';\n      continue;\n    }\n\n    result += encodeURIComponent(string[i]);\n  }\n\n  return result;\n}\n\nencode.defaultChars   = \";/?:@&=+$,-_.!~*'()#\";\nencode.componentChars = \"-_.!~*'()\";\n\n\nmodule.exports = encode;\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n *  - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n  options = options || {};\n  var type = typeof val;\n  if (type === 'string' && val.length > 0) {\n    return parse(val);\n  } else if (type === 'number' && isNaN(val) === false) {\n    return options.long ? fmtLong(val) : fmtShort(val);\n  }\n  throw new Error(\n    'val is not a non-empty string or a valid number. val=' +\n      JSON.stringify(val)\n  );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n  str = String(str);\n  if (str.length > 100) {\n    return;\n  }\n  var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n    str\n  );\n  if (!match) {\n    return;\n  }\n  var n = parseFloat(match[1]);\n  var type = (match[2] || 'ms').toLowerCase();\n  switch (type) {\n    case 'years':\n    case 'year':\n    case 'yrs':\n    case 'yr':\n    case 'y':\n      return n * y;\n    case 'days':\n    case 'day':\n    case 'd':\n      return n * d;\n    case 'hours':\n    case 'hour':\n    case 'hrs':\n    case 'hr':\n    case 'h':\n      return n * h;\n    case 'minutes':\n    case 'minute':\n    case 'mins':\n    case 'min':\n    case 'm':\n      return n * m;\n    case 'seconds':\n    case 'second':\n    case 'secs':\n    case 'sec':\n    case 's':\n      return n * s;\n    case 'milliseconds':\n    case 'millisecond':\n    case 'msecs':\n    case 'msec':\n    case 'ms':\n      return n;\n    default:\n      return undefined;\n  }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n  if (ms >= d) {\n    return Math.round(ms / d) + 'd';\n  }\n  if (ms >= h) {\n    return Math.round(ms / h) + 'h';\n  }\n  if (ms >= m) {\n    return Math.round(ms / m) + 'm';\n  }\n  if (ms >= s) {\n    return Math.round(ms / s) + 's';\n  }\n  return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n  return plural(ms, d, 'day') ||\n    plural(ms, h, 'hour') ||\n    plural(ms, m, 'minute') ||\n    plural(ms, s, 'second') ||\n    ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n  if (ms < n) {\n    return;\n  }\n  if (ms < n * 1.5) {\n    return Math.floor(ms / n) + ' ' + name;\n  }\n  return Math.ceil(ms / n) + ' ' + name + 's';\n}\n","module.exports = compile;\n\nvar BaseFuncs = require(\"boolbase\"),\n    trueFunc  = BaseFuncs.trueFunc,\n    falseFunc = BaseFuncs.falseFunc;\n\n/*\n\treturns a function that checks if an elements index matches the given rule\n\thighly optimized to return the fastest solution\n*/\nfunction compile(parsed){\n\tvar a = parsed[0],\n\t    b = parsed[1] - 1;\n\n\t//when b <= 0, a*n won't be possible for any matches when a < 0\n\t//besides, the specification says that no element is matched when a and b are 0\n\tif(b < 0 && a <= 0) return falseFunc;\n\n\t//when a is in the range -1..1, it matches any element (so only b is checked)\n\tif(a ===-1) return function(pos){ return pos <= b; };\n\tif(a === 0) return function(pos){ return pos === b; };\n\t//when b <= 0 and a === 1, they match any element\n\tif(a === 1) return b < 0 ? trueFunc : function(pos){ return pos >= b; };\n\n\t//when a > 0, modulo can be used to check if there is a match\n\tvar bMod = b % a;\n\tif(bMod < 0) bMod += a;\n\n\tif(a > 1){\n\t\treturn function(pos){\n\t\t\treturn pos >= b && pos % a === bMod;\n\t\t};\n\t}\n\n\ta *= -1; //make `a` positive\n\n\treturn function(pos){\n\t\treturn pos <= b && pos % a === bMod;\n\t};\n}","var parse = require(\"./parse.js\"),\n    compile = require(\"./compile.js\");\n\nmodule.exports = function nthCheck(formula){\n\treturn compile(parse(formula));\n};\n\nmodule.exports.parse = parse;\nmodule.exports.compile = compile;","module.exports = parse;\n\n//following http://www.w3.org/TR/css3-selectors/#nth-child-pseudo\n\n//[ ['-'|'+']? INTEGER? {N} [ S* ['-'|'+'] S* INTEGER ]?\nvar re_nthElement = /^([+\\-]?\\d*n)?\\s*(?:([+\\-]?)\\s*(\\d+))?$/;\n\n/*\n\tparses a nth-check formula, returns an array of two numbers\n*/\nfunction parse(formula){\n\tformula = formula.trim().toLowerCase();\n\n\tif(formula === \"even\"){\n\t\treturn [2, 0];\n\t} else if(formula === \"odd\"){\n\t\treturn [2, 1];\n\t} else {\n\t\tvar parsed = formula.match(re_nthElement);\n\n\t\tif(!parsed){\n\t\t\tthrow new SyntaxError(\"n-th rule couldn't be parsed ('\" + formula + \"')\");\n\t\t}\n\n\t\tvar a;\n\n\t\tif(parsed[1]){\n\t\t\ta = parseInt(parsed[1], 10);\n\t\t\tif(isNaN(a)){\n\t\t\t\tif(parsed[1].charAt(0) === \"-\") a = -1;\n\t\t\t\telse a = 1;\n\t\t\t}\n\t\t} else a = 0;\n\n\t\treturn [\n\t\t\ta,\n\t\t\tparsed[3] ? parseInt((parsed[2] || \"\") + parsed[3], 10) : 0\n\t\t];\n\t}\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","'use strict';\n\n// modified from https://github.com/es-shims/es5-shim\nvar has = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\nvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\nvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\nvar dontEnums = [\n\t'toString',\n\t'toLocaleString',\n\t'valueOf',\n\t'hasOwnProperty',\n\t'isPrototypeOf',\n\t'propertyIsEnumerable',\n\t'constructor'\n];\nvar equalsConstructorPrototype = function (o) {\n\tvar ctor = o.constructor;\n\treturn ctor && ctor.prototype === o;\n};\nvar excludedKeys = {\n\t$console: true,\n\t$external: true,\n\t$frame: true,\n\t$frameElement: true,\n\t$frames: true,\n\t$innerHeight: true,\n\t$innerWidth: true,\n\t$outerHeight: true,\n\t$outerWidth: true,\n\t$pageXOffset: true,\n\t$pageYOffset: true,\n\t$parent: true,\n\t$scrollLeft: true,\n\t$scrollTop: true,\n\t$scrollX: true,\n\t$scrollY: true,\n\t$self: true,\n\t$webkitIndexedDB: true,\n\t$webkitStorageInfo: true,\n\t$window: true\n};\nvar hasAutomationEqualityBug = (function () {\n\t/* global window */\n\tif (typeof window === 'undefined') { return false; }\n\tfor (var k in window) {\n\t\ttry {\n\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\ttry {\n\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}());\nvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t/* global window */\n\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\treturn equalsConstructorPrototype(o);\n\t}\n\ttry {\n\t\treturn equalsConstructorPrototype(o);\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar keysShim = function keys(object) {\n\tvar isObject = object !== null && typeof object === 'object';\n\tvar isFunction = toStr.call(object) === '[object Function]';\n\tvar isArguments = isArgs(object);\n\tvar isString = isObject && toStr.call(object) === '[object String]';\n\tvar theKeys = [];\n\n\tif (!isObject && !isFunction && !isArguments) {\n\t\tthrow new TypeError('Object.keys called on a non-object');\n\t}\n\n\tvar skipProto = hasProtoEnumBug && isFunction;\n\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\ttheKeys.push(String(i));\n\t\t}\n\t}\n\n\tif (isArguments && object.length > 0) {\n\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\ttheKeys.push(String(j));\n\t\t}\n\t} else {\n\t\tfor (var name in object) {\n\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\ttheKeys.push(String(name));\n\t\t\t}\n\t\t}\n\t}\n\n\tif (hasDontEnumBug) {\n\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t}\n\t\t}\n\t}\n\treturn theKeys;\n};\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\treturn (Object.keys(arguments) || '').length === 2;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tvar originalKeys = Object.keys;\n\t\t\tObject.keys = function keys(object) {\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t} else {\n\t\t\t\t\treturn originalKeys(object);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","var wrappy = require('wrappy')\nmodule.exports = wrappy(once)\nmodule.exports.strict = wrappy(onceStrict)\n\nonce.proto = once(function () {\n  Object.defineProperty(Function.prototype, 'once', {\n    value: function () {\n      return once(this)\n    },\n    configurable: true\n  })\n\n  Object.defineProperty(Function.prototype, 'onceStrict', {\n    value: function () {\n      return onceStrict(this)\n    },\n    configurable: true\n  })\n})\n\nfunction once (fn) {\n  var f = function () {\n    if (f.called) return f.value\n    f.called = true\n    return f.value = fn.apply(this, arguments)\n  }\n  f.called = false\n  return f\n}\n\nfunction onceStrict (fn) {\n  var f = function () {\n    if (f.called)\n      throw new Error(f.onceError)\n    f.called = true\n    return f.value = fn.apply(this, arguments)\n  }\n  var name = fn.name || 'Function wrapped with `once`'\n  f.onceError = name + \" shouldn't be called more than once\"\n  f.called = false\n  return f\n}\n","'use strict';\n\n/* Dependencies. */\nvar characterEntities = require('character-entities');\nvar legacy = require('character-entities-legacy');\nvar invalid = require('character-reference-invalid');\nvar decimal = require('is-decimal');\nvar hexadecimal = require('is-hexadecimal');\nvar alphanumerical = require('is-alphanumerical');\n\n/* Expose. */\nmodule.exports = wrapper;\n\n/* Methods. */\nvar own = {}.hasOwnProperty;\nvar fromCharCode = String.fromCharCode;\nvar noop = Function.prototype;\n\n/* Characters. */\nvar REPLACEMENT = '\\uFFFD';\nvar FORM_FEED = '\\f';\nvar AMPERSAND = '&';\nvar OCTOTHORP = '#';\nvar SEMICOLON = ';';\nvar NEWLINE = '\\n';\nvar X_LOWER = 'x';\nvar X_UPPER = 'X';\nvar SPACE = ' ';\nvar LESS_THAN = '<';\nvar EQUAL = '=';\nvar EMPTY = '';\nvar TAB = '\\t';\n\n/* Default settings. */\nvar defaults = {\n  warning: null,\n  reference: null,\n  text: null,\n  warningContext: null,\n  referenceContext: null,\n  textContext: null,\n  position: {},\n  additional: null,\n  attribute: false,\n  nonTerminated: true\n};\n\n/* Reference types. */\nvar NAMED = 'named';\nvar HEXADECIMAL = 'hexadecimal';\nvar DECIMAL = 'decimal';\n\n/* Map of bases. */\nvar BASE = {};\n\nBASE[HEXADECIMAL] = 16;\nBASE[DECIMAL] = 10;\n\n/* Map of types to tests. Each type of character reference\n * accepts different characters. This test is used to\n * detect whether a reference has ended (as the semicolon\n * is not strictly needed). */\nvar TESTS = {};\n\nTESTS[NAMED] = alphanumerical;\nTESTS[DECIMAL] = decimal;\nTESTS[HEXADECIMAL] = hexadecimal;\n\n/* Warning messages. */\nvar NAMED_NOT_TERMINATED = 1;\nvar NUMERIC_NOT_TERMINATED = 2;\nvar NAMED_EMPTY = 3;\nvar NUMERIC_EMPTY = 4;\nvar NAMED_UNKNOWN = 5;\nvar NUMERIC_DISALLOWED = 6;\nvar NUMERIC_PROHIBITED = 7;\n\nvar NUMERIC_REFERENCE = 'Numeric character references';\nvar NAMED_REFERENCE = 'Named character references';\nvar TERMINATED = ' must be terminated by a semicolon';\nvar VOID = ' cannot be empty';\n\nvar MESSAGES = {};\n\nMESSAGES[NAMED_NOT_TERMINATED] = NAMED_REFERENCE + TERMINATED;\nMESSAGES[NUMERIC_NOT_TERMINATED] = NUMERIC_REFERENCE + TERMINATED;\nMESSAGES[NAMED_EMPTY] = NAMED_REFERENCE + VOID;\nMESSAGES[NUMERIC_EMPTY] = NUMERIC_REFERENCE + VOID;\nMESSAGES[NAMED_UNKNOWN] = NAMED_REFERENCE + ' must be known';\nMESSAGES[NUMERIC_DISALLOWED] = NUMERIC_REFERENCE + ' cannot be disallowed';\nMESSAGES[NUMERIC_PROHIBITED] = NUMERIC_REFERENCE + ' cannot be outside the ' +\n    'permissible Unicode range';\n\n/* Wrap to ensure clean parameters are given to `parse`. */\nfunction wrapper(value, options) {\n  var settings = {};\n  var option;\n  var key;\n\n  if (!options) {\n    options = {};\n  }\n\n  for (key in defaults) {\n    option = options[key];\n    settings[key] = option === null || option === undefined ? defaults[key] : option;\n  }\n\n  if (settings.position.indent || settings.position.start) {\n    settings.indent = settings.position.indent || [];\n    settings.position = settings.position.start;\n  }\n\n  return parse(value, settings);\n}\n\n/* Parse entities. */\nfunction parse(value, settings) {\n  var additional = settings.additional;\n  var nonTerminated = settings.nonTerminated;\n  var handleText = settings.text;\n  var handleReference = settings.reference;\n  var handleWarning = settings.warning;\n  var textContext = settings.textContext;\n  var referenceContext = settings.referenceContext;\n  var warningContext = settings.warningContext;\n  var pos = settings.position;\n  var indent = settings.indent || [];\n  var length = value.length;\n  var index = 0;\n  var lines = -1;\n  var column = pos.column || 1;\n  var line = pos.line || 1;\n  var queue = EMPTY;\n  var result = [];\n  var entityCharacters;\n  var terminated;\n  var characters;\n  var character;\n  var reference;\n  var following;\n  var warning;\n  var reason;\n  var output;\n  var entity;\n  var begin;\n  var start;\n  var type;\n  var test;\n  var prev;\n  var next;\n  var diff;\n  var end;\n\n  /* Cache the current point. */\n  prev = now();\n\n  /* Wrap `handleWarning`. */\n  warning = handleWarning ? parseError : noop;\n\n  /* Ensure the algorithm walks over the first character\n   * and the end (inclusive). */\n  index--;\n  length++;\n\n  while (++index < length) {\n    /* If the previous character was a newline. */\n    if (character === NEWLINE) {\n      column = indent[lines] || 1;\n    }\n\n    character = at(index);\n\n    /* Handle anything other than an ampersand,\n     * including newlines and EOF. */\n    if (character !== AMPERSAND) {\n      if (character === NEWLINE) {\n        line++;\n        lines++;\n        column = 0;\n      }\n\n      if (character) {\n        queue += character;\n        column++;\n      } else {\n        flush();\n      }\n    } else {\n      following = at(index + 1);\n\n      /* The behaviour depends on the identity of the next\n       * character. */\n      if (\n        following === TAB ||\n        following === NEWLINE ||\n        following === FORM_FEED ||\n        following === SPACE ||\n        following === LESS_THAN ||\n        following === AMPERSAND ||\n        following === EMPTY ||\n        (additional && following === additional)\n      ) {\n        /* Not a character reference. No characters\n         * are consumed, and nothing is returned.\n         * This is not an error, either. */\n        queue += character;\n        column++;\n\n        continue;\n      }\n\n      start = index + 1;\n      begin = start;\n      end = start;\n\n      /* Numerical entity. */\n      if (following !== OCTOTHORP) {\n        type = NAMED;\n      } else {\n        end = ++begin;\n\n        /* The behaviour further depends on the\n         * character after the U+0023 NUMBER SIGN. */\n        following = at(end);\n\n        if (following === X_LOWER || following === X_UPPER) {\n          /* ASCII hex digits. */\n          type = HEXADECIMAL;\n          end = ++begin;\n        } else {\n          /* ASCII digits. */\n          type = DECIMAL;\n        }\n      }\n\n      entityCharacters = EMPTY;\n      entity = EMPTY;\n      characters = EMPTY;\n      test = TESTS[type];\n      end--;\n\n      while (++end < length) {\n        following = at(end);\n\n        if (!test(following)) {\n          break;\n        }\n\n        characters += following;\n\n        /* Check if we can match a legacy named\n         * reference.  If so, we cache that as the\n         * last viable named reference.  This\n         * ensures we do not need to walk backwards\n         * later. */\n        if (type === NAMED && own.call(legacy, characters)) {\n          entityCharacters = characters;\n          entity = legacy[characters];\n        }\n      }\n\n      terminated = at(end) === SEMICOLON;\n\n      if (terminated) {\n        end++;\n\n        if (type === NAMED && own.call(characterEntities, characters)) {\n          entityCharacters = characters;\n          entity = characterEntities[characters];\n        }\n      }\n\n      diff = 1 + end - start;\n\n      if (!terminated && !nonTerminated) {\n        /* Empty. */\n      } else if (!characters) {\n        /* An empty (possible) entity is valid, unless\n         * its numeric (thus an ampersand followed by\n         * an octothorp). */\n        if (type !== NAMED) {\n          warning(NUMERIC_EMPTY, diff);\n        }\n      } else if (type === NAMED) {\n        /* An ampersand followed by anything\n         * unknown, and not terminated, is invalid. */\n        if (terminated && !entity) {\n          warning(NAMED_UNKNOWN, 1);\n        } else {\n          /* If theres something after an entity\n           * name which is not known, cap the\n           * reference. */\n          if (entityCharacters !== characters) {\n            end = begin + entityCharacters.length;\n            diff = 1 + end - begin;\n            terminated = false;\n          }\n\n          /* If the reference is not terminated,\n           * warn. */\n          if (!terminated) {\n            reason = entityCharacters ?\n              NAMED_NOT_TERMINATED :\n              NAMED_EMPTY;\n\n            if (!settings.attribute) {\n              warning(reason, diff);\n            } else {\n              following = at(end);\n\n              if (following === EQUAL) {\n                warning(reason, diff);\n                entity = null;\n              } else if (alphanumerical(following)) {\n                entity = null;\n              } else {\n                warning(reason, diff);\n              }\n            }\n          }\n        }\n\n        reference = entity;\n      } else {\n        if (!terminated) {\n          /* All non-terminated numeric entities are\n           * not rendered, and trigger a warning. */\n          warning(NUMERIC_NOT_TERMINATED, diff);\n        }\n\n        /* When terminated and number, parse as\n         * either hexadecimal or decimal. */\n        reference = parseInt(characters, BASE[type]);\n\n        /* Trigger a warning when the parsed number\n         * is prohibited, and replace with\n         * replacement character. */\n        if (isProhibited(reference)) {\n          warning(NUMERIC_PROHIBITED, diff);\n\n          reference = REPLACEMENT;\n        } else if (reference in invalid) {\n          /* Trigger a warning when the parsed number\n           * is disallowed, and replace by an\n           * alternative. */\n          warning(NUMERIC_DISALLOWED, diff);\n\n          reference = invalid[reference];\n        } else {\n          /* Parse the number. */\n          output = EMPTY;\n\n          /* Trigger a warning when the parsed\n           * number should not be used. */\n          if (isWarning(reference)) {\n            warning(NUMERIC_DISALLOWED, diff);\n          }\n\n          /* Stringify the number. */\n          if (reference > 0xFFFF) {\n            reference -= 0x10000;\n            output += fromCharCode((reference >>> (10 & 0x3FF)) | 0xD800);\n            reference = 0xDC00 | (reference & 0x3FF);\n          }\n\n          reference = output + fromCharCode(reference);\n        }\n      }\n\n      /* If we could not find a reference, queue the\n       * checked characters (as normal characters),\n       * and move the pointer to their end. This is\n       * possible because we can be certain neither\n       * newlines nor ampersands are included. */\n      if (!reference) {\n        characters = value.slice(start - 1, end);\n        queue += characters;\n        column += characters.length;\n        index = end - 1;\n      } else {\n        /* Found it! First eat the queued\n         * characters as normal text, then eat\n         * an entity. */\n        flush();\n\n        prev = now();\n        index = end - 1;\n        column += end - start + 1;\n        result.push(reference);\n        next = now();\n        next.offset++;\n\n        if (handleReference) {\n          handleReference.call(referenceContext, reference, {\n            start: prev,\n            end: next\n          }, value.slice(start - 1, end));\n        }\n\n        prev = next;\n      }\n    }\n  }\n\n  /* Return the reduced nodes, and any possible warnings. */\n  return result.join(EMPTY);\n\n  /* Get current position. */\n  function now() {\n    return {\n      line: line,\n      column: column,\n      offset: index + (pos.offset || 0)\n    };\n  }\n\n  /* “Throw” a parse-error: a warning. */\n  function parseError(code, offset) {\n    var position = now();\n\n    position.column += offset;\n    position.offset += offset;\n\n    handleWarning.call(warningContext, MESSAGES[code], position, code);\n  }\n\n  /* Get character at position. */\n  function at(position) {\n    return value.charAt(position);\n  }\n\n  /* Flush `queue` (normal text). Macro invoked before\n   * each entity and at the end of `value`.\n   * Does nothing when `queue` is empty. */\n  function flush() {\n    if (queue) {\n      result.push(queue);\n\n      if (handleText) {\n        handleText.call(textContext, queue, {\n          start: prev,\n          end: now()\n        });\n      }\n\n      queue = EMPTY;\n    }\n  }\n}\n\n/* Check if `character` is outside the permissible\n * unicode range. */\nfunction isProhibited(code) {\n  return (code >= 0xD800 && code <= 0xDFFF) || (code > 0x10FFFF);\n}\n\n/* Check if `character` is disallowed. */\nfunction isWarning(code) {\n  if (\n    (code >= 0x0001 && code <= 0x0008) ||\n    code === 0x000B ||\n    (code >= 0x000D && code <= 0x001F) ||\n    (code >= 0x007F && code <= 0x009F) ||\n    (code >= 0xFDD0 && code <= 0xFDEF) ||\n    (code & 0xFFFF) === 0xFFFF ||\n    (code & 0xFFFF) === 0xFFFE\n  ) {\n    return true;\n  }\n\n  return false;\n}\n","'use strict';\r\n\r\n//Const\r\nvar VALID_DOCTYPE_NAME = 'html',\r\n    QUIRKS_MODE_SYSTEM_ID = 'http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd',\r\n    QUIRKS_MODE_PUBLIC_ID_PREFIXES = [\r\n        '+//silmaril//dtd html pro v0r11 19970101//en',\r\n        '-//advasoft ltd//dtd html 3.0 aswedit + extensions//en',\r\n        '-//as//dtd html 3.0 aswedit + extensions//en',\r\n        '-//ietf//dtd html 2.0 level 1//en',\r\n        '-//ietf//dtd html 2.0 level 2//en',\r\n        '-//ietf//dtd html 2.0 strict level 1//en',\r\n        '-//ietf//dtd html 2.0 strict level 2//en',\r\n        '-//ietf//dtd html 2.0 strict//en',\r\n        '-//ietf//dtd html 2.0//en',\r\n        '-//ietf//dtd html 2.1e//en',\r\n        '-//ietf//dtd html 3.0//en',\r\n        '-//ietf//dtd html 3.0//en//',\r\n        '-//ietf//dtd html 3.2 final//en',\r\n        '-//ietf//dtd html 3.2//en',\r\n        '-//ietf//dtd html 3//en',\r\n        '-//ietf//dtd html level 0//en',\r\n        '-//ietf//dtd html level 0//en//2.0',\r\n        '-//ietf//dtd html level 1//en',\r\n        '-//ietf//dtd html level 1//en//2.0',\r\n        '-//ietf//dtd html level 2//en',\r\n        '-//ietf//dtd html level 2//en//2.0',\r\n        '-//ietf//dtd html level 3//en',\r\n        '-//ietf//dtd html level 3//en//3.0',\r\n        '-//ietf//dtd html strict level 0//en',\r\n        '-//ietf//dtd html strict level 0//en//2.0',\r\n        '-//ietf//dtd html strict level 1//en',\r\n        '-//ietf//dtd html strict level 1//en//2.0',\r\n        '-//ietf//dtd html strict level 2//en',\r\n        '-//ietf//dtd html strict level 2//en//2.0',\r\n        '-//ietf//dtd html strict level 3//en',\r\n        '-//ietf//dtd html strict level 3//en//3.0',\r\n        '-//ietf//dtd html strict//en',\r\n        '-//ietf//dtd html strict//en//2.0',\r\n        '-//ietf//dtd html strict//en//3.0',\r\n        '-//ietf//dtd html//en',\r\n        '-//ietf//dtd html//en//2.0',\r\n        '-//ietf//dtd html//en//3.0',\r\n        '-//metrius//dtd metrius presentational//en',\r\n        '-//microsoft//dtd internet explorer 2.0 html strict//en',\r\n        '-//microsoft//dtd internet explorer 2.0 html//en',\r\n        '-//microsoft//dtd internet explorer 2.0 tables//en',\r\n        '-//microsoft//dtd internet explorer 3.0 html strict//en',\r\n        '-//microsoft//dtd internet explorer 3.0 html//en',\r\n        '-//microsoft//dtd internet explorer 3.0 tables//en',\r\n        '-//netscape comm. corp.//dtd html//en',\r\n        '-//netscape comm. corp.//dtd strict html//en',\r\n        '-//o\\'reilly and associates//dtd html 2.0//en',\r\n        '-//o\\'reilly and associates//dtd html extended 1.0//en',\r\n        '-//spyglass//dtd html 2.0 extended//en',\r\n        '-//sq//dtd html 2.0 hotmetal + extensions//en',\r\n        '-//sun microsystems corp.//dtd hotjava html//en',\r\n        '-//sun microsystems corp.//dtd hotjava strict html//en',\r\n        '-//w3c//dtd html 3 1995-03-24//en',\r\n        '-//w3c//dtd html 3.2 draft//en',\r\n        '-//w3c//dtd html 3.2 final//en',\r\n        '-//w3c//dtd html 3.2//en',\r\n        '-//w3c//dtd html 3.2s draft//en',\r\n        '-//w3c//dtd html 4.0 frameset//en',\r\n        '-//w3c//dtd html 4.0 transitional//en',\r\n        '-//w3c//dtd html experimental 19960712//en',\r\n        '-//w3c//dtd html experimental 970421//en',\r\n        '-//w3c//dtd w3 html//en',\r\n        '-//w3o//dtd w3 html 3.0//en',\r\n        '-//w3o//dtd w3 html 3.0//en//',\r\n        '-//webtechs//dtd mozilla html 2.0//en',\r\n        '-//webtechs//dtd mozilla html//en'\r\n    ],\r\n    QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES = [\r\n        '-//w3c//dtd html 4.01 frameset//',\r\n        '-//w3c//dtd html 4.01 transitional//'\r\n    ],\r\n    QUIRKS_MODE_PUBLIC_IDS = [\r\n        '-//w3o//dtd w3 html strict 3.0//en//',\r\n        '-/w3c/dtd html 4.0 transitional/en',\r\n        'html'\r\n    ];\r\n\r\n\r\n//Utils\r\nfunction enquoteDoctypeId(id) {\r\n    var quote = id.indexOf('\"') !== -1 ? '\\'' : '\"';\r\n\r\n    return quote + id + quote;\r\n}\r\n\r\n\r\n//API\r\nexports.isQuirks = function (name, publicId, systemId) {\r\n    if (name !== VALID_DOCTYPE_NAME)\r\n        return true;\r\n\r\n    if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID)\r\n        return true;\r\n\r\n    if (publicId !== null) {\r\n        publicId = publicId.toLowerCase();\r\n\r\n        if (QUIRKS_MODE_PUBLIC_IDS.indexOf(publicId) > -1)\r\n            return true;\r\n\r\n        var prefixes = QUIRKS_MODE_PUBLIC_ID_PREFIXES;\r\n\r\n        if (systemId === null)\r\n            prefixes = prefixes.concat(QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES);\r\n\r\n        for (var i = 0; i < prefixes.length; i++) {\r\n            if (publicId.indexOf(prefixes[i]) === 0)\r\n                return true;\r\n        }\r\n    }\r\n\r\n    return false;\r\n};\r\n\r\nexports.serializeContent = function (name, publicId, systemId) {\r\n    var str = '!DOCTYPE ';\r\n\r\n    if (name)\r\n        str += name;\r\n\r\n    if (publicId !== null)\r\n        str += ' PUBLIC ' + enquoteDoctypeId(publicId);\r\n\r\n    else if (systemId !== null)\r\n        str += ' SYSTEM';\r\n\r\n    if (systemId !== null)\r\n        str += ' ' + enquoteDoctypeId(systemId);\r\n\r\n    return str;\r\n};\r\n","'use strict';\n\nvar Tokenizer = require('../tokenizer'),\n    HTML = require('./html');\n\n//Aliases\nvar $ = HTML.TAG_NAMES,\n    NS = HTML.NAMESPACES,\n    ATTRS = HTML.ATTRS;\n\n\n//MIME types\nvar MIME_TYPES = {\n    TEXT_HTML: 'text/html',\n    APPLICATION_XML: 'application/xhtml+xml'\n};\n\n//Attributes\nvar DEFINITION_URL_ATTR = 'definitionurl',\n    ADJUSTED_DEFINITION_URL_ATTR = 'definitionURL',\n    SVG_ATTRS_ADJUSTMENT_MAP = {\n        'attributename': 'attributeName',\n        'attributetype': 'attributeType',\n        'basefrequency': 'baseFrequency',\n        'baseprofile': 'baseProfile',\n        'calcmode': 'calcMode',\n        'clippathunits': 'clipPathUnits',\n        'diffuseconstant': 'diffuseConstant',\n        'edgemode': 'edgeMode',\n        'filterunits': 'filterUnits',\n        'glyphref': 'glyphRef',\n        'gradienttransform': 'gradientTransform',\n        'gradientunits': 'gradientUnits',\n        'kernelmatrix': 'kernelMatrix',\n        'kernelunitlength': 'kernelUnitLength',\n        'keypoints': 'keyPoints',\n        'keysplines': 'keySplines',\n        'keytimes': 'keyTimes',\n        'lengthadjust': 'lengthAdjust',\n        'limitingconeangle': 'limitingConeAngle',\n        'markerheight': 'markerHeight',\n        'markerunits': 'markerUnits',\n        'markerwidth': 'markerWidth',\n        'maskcontentunits': 'maskContentUnits',\n        'maskunits': 'maskUnits',\n        'numoctaves': 'numOctaves',\n        'pathlength': 'pathLength',\n        'patterncontentunits': 'patternContentUnits',\n        'patterntransform': 'patternTransform',\n        'patternunits': 'patternUnits',\n        'pointsatx': 'pointsAtX',\n        'pointsaty': 'pointsAtY',\n        'pointsatz': 'pointsAtZ',\n        'preservealpha': 'preserveAlpha',\n        'preserveaspectratio': 'preserveAspectRatio',\n        'primitiveunits': 'primitiveUnits',\n        'refx': 'refX',\n        'refy': 'refY',\n        'repeatcount': 'repeatCount',\n        'repeatdur': 'repeatDur',\n        'requiredextensions': 'requiredExtensions',\n        'requiredfeatures': 'requiredFeatures',\n        'specularconstant': 'specularConstant',\n        'specularexponent': 'specularExponent',\n        'spreadmethod': 'spreadMethod',\n        'startoffset': 'startOffset',\n        'stddeviation': 'stdDeviation',\n        'stitchtiles': 'stitchTiles',\n        'surfacescale': 'surfaceScale',\n        'systemlanguage': 'systemLanguage',\n        'tablevalues': 'tableValues',\n        'targetx': 'targetX',\n        'targety': 'targetY',\n        'textlength': 'textLength',\n        'viewbox': 'viewBox',\n        'viewtarget': 'viewTarget',\n        'xchannelselector': 'xChannelSelector',\n        'ychannelselector': 'yChannelSelector',\n        'zoomandpan': 'zoomAndPan'\n    },\n    XML_ATTRS_ADJUSTMENT_MAP = {\n        'xlink:actuate': {prefix: 'xlink', name: 'actuate', namespace: NS.XLINK},\n        'xlink:arcrole': {prefix: 'xlink', name: 'arcrole', namespace: NS.XLINK},\n        'xlink:href': {prefix: 'xlink', name: 'href', namespace: NS.XLINK},\n        'xlink:role': {prefix: 'xlink', name: 'role', namespace: NS.XLINK},\n        'xlink:show': {prefix: 'xlink', name: 'show', namespace: NS.XLINK},\n        'xlink:title': {prefix: 'xlink', name: 'title', namespace: NS.XLINK},\n        'xlink:type': {prefix: 'xlink', name: 'type', namespace: NS.XLINK},\n        'xml:base': {prefix: 'xml', name: 'base', namespace: NS.XML},\n        'xml:lang': {prefix: 'xml', name: 'lang', namespace: NS.XML},\n        'xml:space': {prefix: 'xml', name: 'space', namespace: NS.XML},\n        'xmlns': {prefix: '', name: 'xmlns', namespace: NS.XMLNS},\n        'xmlns:xlink': {prefix: 'xmlns', name: 'xlink', namespace: NS.XMLNS}\n\n    };\n\n//SVG tag names adjustment map\nvar SVG_TAG_NAMES_ADJUSTMENT_MAP = exports.SVG_TAG_NAMES_ADJUSTMENT_MAP = {\n    'altglyph': 'altGlyph',\n    'altglyphdef': 'altGlyphDef',\n    'altglyphitem': 'altGlyphItem',\n    'animatecolor': 'animateColor',\n    'animatemotion': 'animateMotion',\n    'animatetransform': 'animateTransform',\n    'clippath': 'clipPath',\n    'feblend': 'feBlend',\n    'fecolormatrix': 'feColorMatrix',\n    'fecomponenttransfer': 'feComponentTransfer',\n    'fecomposite': 'feComposite',\n    'feconvolvematrix': 'feConvolveMatrix',\n    'fediffuselighting': 'feDiffuseLighting',\n    'fedisplacementmap': 'feDisplacementMap',\n    'fedistantlight': 'feDistantLight',\n    'feflood': 'feFlood',\n    'fefunca': 'feFuncA',\n    'fefuncb': 'feFuncB',\n    'fefuncg': 'feFuncG',\n    'fefuncr': 'feFuncR',\n    'fegaussianblur': 'feGaussianBlur',\n    'feimage': 'feImage',\n    'femerge': 'feMerge',\n    'femergenode': 'feMergeNode',\n    'femorphology': 'feMorphology',\n    'feoffset': 'feOffset',\n    'fepointlight': 'fePointLight',\n    'fespecularlighting': 'feSpecularLighting',\n    'fespotlight': 'feSpotLight',\n    'fetile': 'feTile',\n    'feturbulence': 'feTurbulence',\n    'foreignobject': 'foreignObject',\n    'glyphref': 'glyphRef',\n    'lineargradient': 'linearGradient',\n    'radialgradient': 'radialGradient',\n    'textpath': 'textPath'\n};\n\n//Tags that causes exit from foreign content\nvar EXITS_FOREIGN_CONTENT = {};\n\nEXITS_FOREIGN_CONTENT[$.B] = true;\nEXITS_FOREIGN_CONTENT[$.BIG] = true;\nEXITS_FOREIGN_CONTENT[$.BLOCKQUOTE] = true;\nEXITS_FOREIGN_CONTENT[$.BODY] = true;\nEXITS_FOREIGN_CONTENT[$.BR] = true;\nEXITS_FOREIGN_CONTENT[$.CENTER] = true;\nEXITS_FOREIGN_CONTENT[$.CODE] = true;\nEXITS_FOREIGN_CONTENT[$.DD] = true;\nEXITS_FOREIGN_CONTENT[$.DIV] = true;\nEXITS_FOREIGN_CONTENT[$.DL] = true;\nEXITS_FOREIGN_CONTENT[$.DT] = true;\nEXITS_FOREIGN_CONTENT[$.EM] = true;\nEXITS_FOREIGN_CONTENT[$.EMBED] = true;\nEXITS_FOREIGN_CONTENT[$.H1] = true;\nEXITS_FOREIGN_CONTENT[$.H2] = true;\nEXITS_FOREIGN_CONTENT[$.H3] = true;\nEXITS_FOREIGN_CONTENT[$.H4] = true;\nEXITS_FOREIGN_CONTENT[$.H5] = true;\nEXITS_FOREIGN_CONTENT[$.H6] = true;\nEXITS_FOREIGN_CONTENT[$.HEAD] = true;\nEXITS_FOREIGN_CONTENT[$.HR] = true;\nEXITS_FOREIGN_CONTENT[$.I] = true;\nEXITS_FOREIGN_CONTENT[$.IMG] = true;\nEXITS_FOREIGN_CONTENT[$.LI] = true;\nEXITS_FOREIGN_CONTENT[$.LISTING] = true;\nEXITS_FOREIGN_CONTENT[$.MENU] = true;\nEXITS_FOREIGN_CONTENT[$.META] = true;\nEXITS_FOREIGN_CONTENT[$.NOBR] = true;\nEXITS_FOREIGN_CONTENT[$.OL] = true;\nEXITS_FOREIGN_CONTENT[$.P] = true;\nEXITS_FOREIGN_CONTENT[$.PRE] = true;\nEXITS_FOREIGN_CONTENT[$.RUBY] = true;\nEXITS_FOREIGN_CONTENT[$.S] = true;\nEXITS_FOREIGN_CONTENT[$.SMALL] = true;\nEXITS_FOREIGN_CONTENT[$.SPAN] = true;\nEXITS_FOREIGN_CONTENT[$.STRONG] = true;\nEXITS_FOREIGN_CONTENT[$.STRIKE] = true;\nEXITS_FOREIGN_CONTENT[$.SUB] = true;\nEXITS_FOREIGN_CONTENT[$.SUP] = true;\nEXITS_FOREIGN_CONTENT[$.TABLE] = true;\nEXITS_FOREIGN_CONTENT[$.TT] = true;\nEXITS_FOREIGN_CONTENT[$.U] = true;\nEXITS_FOREIGN_CONTENT[$.UL] = true;\nEXITS_FOREIGN_CONTENT[$.VAR] = true;\n\n//Check exit from foreign content\nexports.causesExit = function (startTagToken) {\n    var tn = startTagToken.tagName;\n    var isFontWithAttrs = tn === $.FONT && (Tokenizer.getTokenAttr(startTagToken, ATTRS.COLOR) !== null ||\n                                            Tokenizer.getTokenAttr(startTagToken, ATTRS.SIZE) !== null ||\n                                            Tokenizer.getTokenAttr(startTagToken, ATTRS.FACE) !== null);\n\n    return isFontWithAttrs ? true : EXITS_FOREIGN_CONTENT[tn];\n};\n\n//Token adjustments\nexports.adjustTokenMathMLAttrs = function (token) {\n    for (var i = 0; i < token.attrs.length; i++) {\n        if (token.attrs[i].name === DEFINITION_URL_ATTR) {\n            token.attrs[i].name = ADJUSTED_DEFINITION_URL_ATTR;\n            break;\n        }\n    }\n};\n\nexports.adjustTokenSVGAttrs = function (token) {\n    for (var i = 0; i < token.attrs.length; i++) {\n        var adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP[token.attrs[i].name];\n\n        if (adjustedAttrName)\n            token.attrs[i].name = adjustedAttrName;\n    }\n};\n\nexports.adjustTokenXMLAttrs = function (token) {\n    for (var i = 0; i < token.attrs.length; i++) {\n        var adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP[token.attrs[i].name];\n\n        if (adjustedAttrEntry) {\n            token.attrs[i].prefix = adjustedAttrEntry.prefix;\n            token.attrs[i].name = adjustedAttrEntry.name;\n            token.attrs[i].namespace = adjustedAttrEntry.namespace;\n        }\n    }\n};\n\nexports.adjustTokenSVGTagName = function (token) {\n    var adjustedTagName = SVG_TAG_NAMES_ADJUSTMENT_MAP[token.tagName];\n\n    if (adjustedTagName)\n        token.tagName = adjustedTagName;\n};\n\n//Integration points\nfunction isMathMLTextIntegrationPoint(tn, ns) {\n    return ns === NS.MATHML && (tn === $.MI || tn === $.MO || tn === $.MN || tn === $.MS || tn === $.MTEXT);\n}\n\nfunction isHtmlIntegrationPoint(tn, ns, attrs) {\n    if (ns === NS.MATHML && tn === $.ANNOTATION_XML) {\n        for (var i = 0; i < attrs.length; i++) {\n            if (attrs[i].name === ATTRS.ENCODING) {\n                var value = attrs[i].value.toLowerCase();\n\n                return value === MIME_TYPES.TEXT_HTML || value === MIME_TYPES.APPLICATION_XML;\n            }\n        }\n    }\n\n    return ns === NS.SVG && (tn === $.FOREIGN_OBJECT || tn === $.DESC || tn === $.TITLE);\n}\n\nexports.isIntegrationPoint = function (tn, ns, attrs, foreignNS) {\n    if ((!foreignNS || foreignNS === NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs))\n        return true;\n\n    if ((!foreignNS || foreignNS === NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns))\n        return true;\n\n    return false;\n};\n","'use strict';\r\n\r\nvar NS = exports.NAMESPACES = {\r\n    HTML: 'http://www.w3.org/1999/xhtml',\r\n    MATHML: 'http://www.w3.org/1998/Math/MathML',\r\n    SVG: 'http://www.w3.org/2000/svg',\r\n    XLINK: 'http://www.w3.org/1999/xlink',\r\n    XML: 'http://www.w3.org/XML/1998/namespace',\r\n    XMLNS: 'http://www.w3.org/2000/xmlns/'\r\n};\r\n\r\nexports.ATTRS = {\r\n    TYPE: 'type',\r\n    ACTION: 'action',\r\n    ENCODING: 'encoding',\r\n    PROMPT: 'prompt',\r\n    NAME: 'name',\r\n    COLOR: 'color',\r\n    FACE: 'face',\r\n    SIZE: 'size'\r\n};\r\n\r\nvar $ = exports.TAG_NAMES = {\r\n    A: 'a',\r\n    ADDRESS: 'address',\r\n    ANNOTATION_XML: 'annotation-xml',\r\n    APPLET: 'applet',\r\n    AREA: 'area',\r\n    ARTICLE: 'article',\r\n    ASIDE: 'aside',\r\n\r\n    B: 'b',\r\n    BASE: 'base',\r\n    BASEFONT: 'basefont',\r\n    BGSOUND: 'bgsound',\r\n    BIG: 'big',\r\n    BLOCKQUOTE: 'blockquote',\r\n    BODY: 'body',\r\n    BR: 'br',\r\n    BUTTON: 'button',\r\n\r\n    CAPTION: 'caption',\r\n    CENTER: 'center',\r\n    CODE: 'code',\r\n    COL: 'col',\r\n    COLGROUP: 'colgroup',\r\n\r\n    DD: 'dd',\r\n    DESC: 'desc',\r\n    DETAILS: 'details',\r\n    DIALOG: 'dialog',\r\n    DIR: 'dir',\r\n    DIV: 'div',\r\n    DL: 'dl',\r\n    DT: 'dt',\r\n\r\n    EM: 'em',\r\n    EMBED: 'embed',\r\n\r\n    FIELDSET: 'fieldset',\r\n    FIGCAPTION: 'figcaption',\r\n    FIGURE: 'figure',\r\n    FONT: 'font',\r\n    FOOTER: 'footer',\r\n    FOREIGN_OBJECT: 'foreignObject',\r\n    FORM: 'form',\r\n    FRAME: 'frame',\r\n    FRAMESET: 'frameset',\r\n\r\n    H1: 'h1',\r\n    H2: 'h2',\r\n    H3: 'h3',\r\n    H4: 'h4',\r\n    H5: 'h5',\r\n    H6: 'h6',\r\n    HEAD: 'head',\r\n    HEADER: 'header',\r\n    HGROUP: 'hgroup',\r\n    HR: 'hr',\r\n    HTML: 'html',\r\n\r\n    I: 'i',\r\n    IMG: 'img',\r\n    IMAGE: 'image',\r\n    INPUT: 'input',\r\n    IFRAME: 'iframe',\r\n\r\n    KEYGEN: 'keygen',\r\n\r\n    LABEL: 'label',\r\n    LI: 'li',\r\n    LINK: 'link',\r\n    LISTING: 'listing',\r\n\r\n    MAIN: 'main',\r\n    MALIGNMARK: 'malignmark',\r\n    MARQUEE: 'marquee',\r\n    MATH: 'math',\r\n    MENU: 'menu',\r\n    MENUITEM: 'menuitem',\r\n    META: 'meta',\r\n    MGLYPH: 'mglyph',\r\n    MI: 'mi',\r\n    MO: 'mo',\r\n    MN: 'mn',\r\n    MS: 'ms',\r\n    MTEXT: 'mtext',\r\n\r\n    NAV: 'nav',\r\n    NOBR: 'nobr',\r\n    NOFRAMES: 'noframes',\r\n    NOEMBED: 'noembed',\r\n    NOSCRIPT: 'noscript',\r\n\r\n    OBJECT: 'object',\r\n    OL: 'ol',\r\n    OPTGROUP: 'optgroup',\r\n    OPTION: 'option',\r\n\r\n    P: 'p',\r\n    PARAM: 'param',\r\n    PLAINTEXT: 'plaintext',\r\n    PRE: 'pre',\r\n\r\n    RB: 'rb',\r\n    RP: 'rp',\r\n    RT: 'rt',\r\n    RTC: 'rtc',\r\n    RUBY: 'ruby',\r\n\r\n    S: 's',\r\n    SCRIPT: 'script',\r\n    SECTION: 'section',\r\n    SELECT: 'select',\r\n    SOURCE: 'source',\r\n    SMALL: 'small',\r\n    SPAN: 'span',\r\n    STRIKE: 'strike',\r\n    STRONG: 'strong',\r\n    STYLE: 'style',\r\n    SUB: 'sub',\r\n    SUMMARY: 'summary',\r\n    SUP: 'sup',\r\n\r\n    TABLE: 'table',\r\n    TBODY: 'tbody',\r\n    TEMPLATE: 'template',\r\n    TEXTAREA: 'textarea',\r\n    TFOOT: 'tfoot',\r\n    TD: 'td',\r\n    TH: 'th',\r\n    THEAD: 'thead',\r\n    TITLE: 'title',\r\n    TR: 'tr',\r\n    TRACK: 'track',\r\n    TT: 'tt',\r\n\r\n    U: 'u',\r\n    UL: 'ul',\r\n\r\n    SVG: 'svg',\r\n\r\n    VAR: 'var',\r\n\r\n    WBR: 'wbr',\r\n\r\n    XMP: 'xmp'\r\n};\r\n\r\nvar SPECIAL_ELEMENTS = exports.SPECIAL_ELEMENTS = {};\r\n\r\nSPECIAL_ELEMENTS[NS.HTML] = {};\r\nSPECIAL_ELEMENTS[NS.HTML][$.ADDRESS] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.APPLET] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.AREA] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.ARTICLE] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.ASIDE] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.BASE] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.BASEFONT] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.BGSOUND] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.BLOCKQUOTE] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.BODY] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.BR] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.BUTTON] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.CAPTION] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.CENTER] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.COL] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.COLGROUP] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.DD] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.DETAILS] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.DIR] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.DIV] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.DL] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.DT] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.EMBED] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.FIELDSET] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.FIGCAPTION] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.FIGURE] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.FOOTER] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.FORM] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.FRAME] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.FRAMESET] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.H1] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.H2] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.H3] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.H4] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.H5] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.H6] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.HEAD] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.HEADER] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.HGROUP] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.HR] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.HTML] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.IFRAME] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.IMG] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.INPUT] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.LI] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.LINK] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.LISTING] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.MAIN] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.MARQUEE] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.MENU] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.META] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.NAV] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.NOEMBED] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.NOFRAMES] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.NOSCRIPT] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.OBJECT] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.OL] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.P] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.PARAM] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.PLAINTEXT] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.PRE] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.SCRIPT] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.SECTION] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.SELECT] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.SOURCE] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.STYLE] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.SUMMARY] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.TABLE] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.TBODY] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.TD] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.TEMPLATE] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.TEXTAREA] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.TFOOT] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.TH] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.THEAD] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.TITLE] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.TR] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.TRACK] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.UL] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.WBR] = true;\r\nSPECIAL_ELEMENTS[NS.HTML][$.XMP] = true;\r\n\r\nSPECIAL_ELEMENTS[NS.MATHML] = {};\r\nSPECIAL_ELEMENTS[NS.MATHML][$.MI] = true;\r\nSPECIAL_ELEMENTS[NS.MATHML][$.MO] = true;\r\nSPECIAL_ELEMENTS[NS.MATHML][$.MN] = true;\r\nSPECIAL_ELEMENTS[NS.MATHML][$.MS] = true;\r\nSPECIAL_ELEMENTS[NS.MATHML][$.MTEXT] = true;\r\nSPECIAL_ELEMENTS[NS.MATHML][$.ANNOTATION_XML] = true;\r\n\r\nSPECIAL_ELEMENTS[NS.SVG] = {};\r\nSPECIAL_ELEMENTS[NS.SVG][$.TITLE] = true;\r\nSPECIAL_ELEMENTS[NS.SVG][$.FOREIGN_OBJECT] = true;\r\nSPECIAL_ELEMENTS[NS.SVG][$.DESC] = true;\r\n","'use strict';\r\n\r\nmodule.exports = function mergeOptions(defaults, options) {\r\n    options = options || {};\r\n\r\n    return [defaults, options].reduce(function (merged, optObj) {\r\n        Object.keys(optObj).forEach(function (key) {\r\n            merged[key] = optObj[key];\r\n        });\r\n\r\n        return merged;\r\n    }, {});\r\n};\r\n","'use strict';\r\n\r\nexports.REPLACEMENT_CHARACTER = '\\uFFFD';\r\n\r\nexports.CODE_POINTS = {\r\n    EOF: -1,\r\n    NULL: 0x00,\r\n    TABULATION: 0x09,\r\n    CARRIAGE_RETURN: 0x0D,\r\n    LINE_FEED: 0x0A,\r\n    FORM_FEED: 0x0C,\r\n    SPACE: 0x20,\r\n    EXCLAMATION_MARK: 0x21,\r\n    QUOTATION_MARK: 0x22,\r\n    NUMBER_SIGN: 0x23,\r\n    AMPERSAND: 0x26,\r\n    APOSTROPHE: 0x27,\r\n    HYPHEN_MINUS: 0x2D,\r\n    SOLIDUS: 0x2F,\r\n    DIGIT_0: 0x30,\r\n    DIGIT_9: 0x39,\r\n    SEMICOLON: 0x3B,\r\n    LESS_THAN_SIGN: 0x3C,\r\n    EQUALS_SIGN: 0x3D,\r\n    GREATER_THAN_SIGN: 0x3E,\r\n    QUESTION_MARK: 0x3F,\r\n    LATIN_CAPITAL_A: 0x41,\r\n    LATIN_CAPITAL_F: 0x46,\r\n    LATIN_CAPITAL_X: 0x58,\r\n    LATIN_CAPITAL_Z: 0x5A,\r\n    GRAVE_ACCENT: 0x60,\r\n    LATIN_SMALL_A: 0x61,\r\n    LATIN_SMALL_F: 0x66,\r\n    LATIN_SMALL_X: 0x78,\r\n    LATIN_SMALL_Z: 0x7A,\r\n    REPLACEMENT_CHARACTER: 0xFFFD\r\n};\r\n\r\nexports.CODE_POINT_SEQUENCES = {\r\n    DASH_DASH_STRING: [0x2D, 0x2D], //--\r\n    DOCTYPE_STRING: [0x44, 0x4F, 0x43, 0x54, 0x59, 0x50, 0x45], //DOCTYPE\r\n    CDATA_START_STRING: [0x5B, 0x43, 0x44, 0x41, 0x54, 0x41, 0x5B], //[CDATA[\r\n    CDATA_END_STRING: [0x5D, 0x5D, 0x3E], //]]>\r\n    SCRIPT_STRING: [0x73, 0x63, 0x72, 0x69, 0x70, 0x74], //script\r\n    PUBLIC_STRING: [0x50, 0x55, 0x42, 0x4C, 0x49, 0x43], //PUBLIC\r\n    SYSTEM_STRING: [0x53, 0x59, 0x53, 0x54, 0x45, 0x4D] //SYSTEM\r\n};\r\n","'use strict';\n\nvar OpenElementStack = require('../parser/open_element_stack'),\n    Tokenizer = require('../tokenizer'),\n    HTML = require('../common/html');\n\n\n//Aliases\nvar $ = HTML.TAG_NAMES;\n\n\nfunction setEndLocation(element, closingToken, treeAdapter) {\n    var loc = element.__location;\n\n    if (!loc)\n        return;\n\n    /**\n     * @typedef {Object} ElementLocationInfo\n     * @extends StartTagLocationInfo\n     *\n     * @property {StartTagLocationInfo} startTag - Element's start tag location info.\n     * @property {LocationInfo} endTag - Element's end tag location info.\n     */\n    if (!loc.startTag) {\n        loc.startTag = {\n            line: loc.line,\n            col: loc.col,\n            startOffset: loc.startOffset,\n            endOffset: loc.endOffset\n        };\n        if (loc.attrs)\n            loc.startTag.attrs = loc.attrs;\n    }\n\n    if (closingToken.location) {\n        var ctLocation = closingToken.location,\n            tn = treeAdapter.getTagName(element),\n        // NOTE: For cases like <p> <p> </p> - First 'p' closes without a closing tag and\n        // for cases like <td> <p> </td> - 'p' closes without a closing tag\n            isClosingEndTag = closingToken.type === Tokenizer.END_TAG_TOKEN &&\n                              tn === closingToken.tagName;\n\n        if (isClosingEndTag) {\n            loc.endTag = {\n                line: ctLocation.line,\n                col: ctLocation.col,\n                startOffset: ctLocation.startOffset,\n                endOffset: ctLocation.endOffset\n            };\n        }\n\n        if (isClosingEndTag)\n            loc.endOffset = ctLocation.endOffset;\n        else\n            loc.endOffset = ctLocation.startOffset;\n    }\n}\n\n\nexports.assign = function (parser) {\n    //NOTE: obtain Parser proto this way to avoid module circular references\n    var parserProto = Object.getPrototypeOf(parser),\n        treeAdapter = parser.treeAdapter,\n        attachableElementLocation = null,\n        lastFosterParentingLocation = null,\n        currentToken = null;\n\n\n    //NOTE: patch _bootstrap method\n    parser._bootstrap = function (document, fragmentContext) {\n        parserProto._bootstrap.call(this, document, fragmentContext);\n\n        attachableElementLocation = null;\n        lastFosterParentingLocation = null;\n        currentToken = null;\n\n        //OpenElementStack\n        parser.openElements.pop = function () {\n            setEndLocation(this.current, currentToken, treeAdapter);\n            OpenElementStack.prototype.pop.call(this);\n        };\n\n        parser.openElements.popAllUpToHtmlElement = function () {\n            for (var i = this.stackTop; i > 0; i--)\n                setEndLocation(this.items[i], currentToken, treeAdapter);\n\n            OpenElementStack.prototype.popAllUpToHtmlElement.call(this);\n        };\n\n        parser.openElements.remove = function (element) {\n            setEndLocation(element, currentToken, treeAdapter);\n            OpenElementStack.prototype.remove.call(this, element);\n        };\n    };\n\n\n    //Token processing\n    parser._processTokenInForeignContent = function (token) {\n        currentToken = token;\n        parserProto._processTokenInForeignContent.call(this, token);\n    };\n\n    parser._processToken = function (token) {\n        currentToken = token;\n        parserProto._processToken.call(this, token);\n\n        //NOTE: <body> and <html> are never popped from the stack, so we need to updated\n        //their end location explicitly.\n        if (token.type === Tokenizer.END_TAG_TOKEN &&\n            (token.tagName === $.HTML ||\n             token.tagName === $.BODY && this.openElements.hasInScope($.BODY))) {\n            for (var i = this.openElements.stackTop; i >= 0; i--) {\n                var element = this.openElements.items[i];\n\n                if (this.treeAdapter.getTagName(element) === token.tagName) {\n                    setEndLocation(element, token, treeAdapter);\n                    break;\n                }\n            }\n        }\n    };\n\n\n    //Doctype\n    parser._setDocumentType = function (token) {\n        parserProto._setDocumentType.call(this, token);\n\n        var documentChildren = this.treeAdapter.getChildNodes(this.document),\n            cnLength = documentChildren.length;\n\n        for (var i = 0; i < cnLength; i++) {\n            var node = documentChildren[i];\n\n            if (this.treeAdapter.isDocumentTypeNode(node)) {\n                node.__location = token.location;\n                break;\n            }\n        }\n    };\n\n\n    //Elements\n    parser._attachElementToTree = function (element) {\n        //NOTE: _attachElementToTree is called from _appendElement, _insertElement and _insertTemplate methods.\n        //So we will use token location stored in this methods for the element.\n        element.__location = attachableElementLocation || null;\n        attachableElementLocation = null;\n        parserProto._attachElementToTree.call(this, element);\n    };\n\n    parser._appendElement = function (token, namespaceURI) {\n        attachableElementLocation = token.location;\n        parserProto._appendElement.call(this, token, namespaceURI);\n    };\n\n    parser._insertElement = function (token, namespaceURI) {\n        attachableElementLocation = token.location;\n        parserProto._insertElement.call(this, token, namespaceURI);\n    };\n\n    parser._insertTemplate = function (token) {\n        attachableElementLocation = token.location;\n        parserProto._insertTemplate.call(this, token);\n\n        var tmplContent = this.treeAdapter.getTemplateContent(this.openElements.current);\n\n        tmplContent.__location = null;\n    };\n\n    parser._insertFakeRootElement = function () {\n        parserProto._insertFakeRootElement.call(this);\n        this.openElements.current.__location = null;\n    };\n\n\n    //Comments\n    parser._appendCommentNode = function (token, parent) {\n        parserProto._appendCommentNode.call(this, token, parent);\n\n        var children = this.treeAdapter.getChildNodes(parent),\n            commentNode = children[children.length - 1];\n\n        commentNode.__location = token.location;\n    };\n\n\n    //Text\n    parser._findFosterParentingLocation = function () {\n        //NOTE: store last foster parenting location, so we will be able to find inserted text\n        //in case of foster parenting\n        lastFosterParentingLocation = parserProto._findFosterParentingLocation.call(this);\n        return lastFosterParentingLocation;\n    };\n\n    parser._insertCharacters = function (token) {\n        parserProto._insertCharacters.call(this, token);\n\n        var hasFosterParent = this._shouldFosterParentOnInsertion(),\n            parent = hasFosterParent && lastFosterParentingLocation.parent ||\n                     this.openElements.currentTmplContent ||\n                     this.openElements.current,\n            siblings = this.treeAdapter.getChildNodes(parent),\n            textNodeIdx = hasFosterParent && lastFosterParentingLocation.beforeElement ?\n            siblings.indexOf(lastFosterParentingLocation.beforeElement) - 1 :\n            siblings.length - 1,\n            textNode = siblings[textNodeIdx];\n\n        //NOTE: if we have location assigned by another token, then just update end position\n        if (textNode.__location)\n            textNode.__location.endOffset = token.location.endOffset;\n\n        else\n            textNode.__location = token.location;\n    };\n};\n\n","'use strict';\n\nvar UNICODE = require('../common/unicode');\n\n//Aliases\nvar $ = UNICODE.CODE_POINTS;\n\n\nexports.assign = function (tokenizer) {\n    //NOTE: obtain Tokenizer proto this way to avoid module circular references\n    var tokenizerProto = Object.getPrototypeOf(tokenizer),\n        tokenStartOffset = -1,\n        tokenCol = -1,\n        tokenLine = 1,\n        isEol = false,\n        lineStartPosStack = [0],\n        lineStartPos = 0,\n        col = -1,\n        line = 1;\n\n    function attachLocationInfo(token) {\n        /**\n         * @typedef {Object} LocationInfo\n         *\n         * @property {Number} line - One-based line index\n         * @property {Number} col - One-based column index\n         * @property {Number} startOffset - Zero-based first character index\n         * @property {Number} endOffset - Zero-based last character index\n         */\n        token.location = {\n            line: tokenLine,\n            col: tokenCol,\n            startOffset: tokenStartOffset,\n            endOffset: -1\n        };\n    }\n\n    //NOTE: patch consumption method to track line/col information\n    tokenizer._consume = function () {\n        var cp = tokenizerProto._consume.call(this);\n\n        //NOTE: LF should be in the last column of the line\n        if (isEol) {\n            isEol = false;\n            line++;\n            lineStartPosStack.push(this.preprocessor.sourcePos);\n            lineStartPos = this.preprocessor.sourcePos;\n        }\n\n        if (cp === $.LINE_FEED)\n            isEol = true;\n\n        col = this.preprocessor.sourcePos - lineStartPos + 1;\n\n        return cp;\n    };\n\n    tokenizer._unconsume = function () {\n        tokenizerProto._unconsume.call(this);\n        isEol = false;\n\n        while (lineStartPos > this.preprocessor.sourcePos && lineStartPosStack.length > 1) {\n            lineStartPos = lineStartPosStack.pop();\n            line--;\n        }\n\n        col = this.preprocessor.sourcePos - lineStartPos + 1;\n    };\n\n    //NOTE: patch token creation methods and attach location objects\n    tokenizer._createStartTagToken = function () {\n        tokenizerProto._createStartTagToken.call(this);\n        attachLocationInfo(this.currentToken);\n    };\n\n    tokenizer._createEndTagToken = function () {\n        tokenizerProto._createEndTagToken.call(this);\n        attachLocationInfo(this.currentToken);\n    };\n\n    tokenizer._createCommentToken = function () {\n        tokenizerProto._createCommentToken.call(this);\n        attachLocationInfo(this.currentToken);\n    };\n\n    tokenizer._createDoctypeToken = function (initialName) {\n        tokenizerProto._createDoctypeToken.call(this, initialName);\n        attachLocationInfo(this.currentToken);\n    };\n\n    tokenizer._createCharacterToken = function (type, ch) {\n        tokenizerProto._createCharacterToken.call(this, type, ch);\n        attachLocationInfo(this.currentCharacterToken);\n    };\n\n    tokenizer._createAttr = function (attrNameFirstCh) {\n        tokenizerProto._createAttr.call(this, attrNameFirstCh);\n        this.currentAttrLocation = {\n            line: line,\n            col: col,\n            startOffset: this.preprocessor.sourcePos,\n            endOffset: -1\n        };\n    };\n\n    tokenizer._leaveAttrName = function (toState) {\n        tokenizerProto._leaveAttrName.call(this, toState);\n        this._attachCurrentAttrLocationInfo();\n    };\n\n    tokenizer._leaveAttrValue = function (toState) {\n        tokenizerProto._leaveAttrValue.call(this, toState);\n        this._attachCurrentAttrLocationInfo();\n    };\n\n    tokenizer._attachCurrentAttrLocationInfo = function () {\n        this.currentAttrLocation.endOffset = this.preprocessor.sourcePos;\n\n        if (!this.currentToken.location.attrs)\n            this.currentToken.location.attrs = {};\n\n        /**\n         * @typedef {Object} StartTagLocationInfo\n         * @extends LocationInfo\n         *\n         * @property {Dictionary<String, LocationInfo>} attrs - Start tag attributes' location info.\n         */\n        this.currentToken.location.attrs[this.currentAttr.name] = this.currentAttrLocation;\n    };\n\n    //NOTE: patch token emission methods to determine end location\n    tokenizer._emitCurrentToken = function () {\n        //NOTE: if we have pending character token make it's end location equal to the\n        //current token's start location.\n        if (this.currentCharacterToken)\n            this.currentCharacterToken.location.endOffset = this.currentToken.location.startOffset;\n\n        this.currentToken.location.endOffset = this.preprocessor.sourcePos + 1;\n        tokenizerProto._emitCurrentToken.call(this);\n    };\n\n    tokenizer._emitCurrentCharacterToken = function () {\n        //NOTE: if we have character token and it's location wasn't set in the _emitCurrentToken(),\n        //then set it's location at the current preprocessor position.\n        //We don't need to increment preprocessor position, since character token\n        //emission is always forced by the start of the next character token here.\n        //So, we already have advanced position.\n        if (this.currentCharacterToken && this.currentCharacterToken.location.endOffset === -1)\n            this.currentCharacterToken.location.endOffset = this.preprocessor.sourcePos;\n\n        tokenizerProto._emitCurrentCharacterToken.call(this);\n    };\n\n    //NOTE: patch initial states for each mode to obtain token start position\n    Object.keys(tokenizerProto.MODE)\n\n        .map(function (modeName) {\n            return tokenizerProto.MODE[modeName];\n        })\n\n        .forEach(function (state) {\n            tokenizer[state] = function (cp) {\n                tokenStartOffset = this.preprocessor.sourcePos;\n                tokenLine = line;\n                tokenCol = col;\n                tokenizerProto[state].call(this, cp);\n            };\n        });\n};\n","'use strict';\r\n\r\n//Const\r\nvar NOAH_ARK_CAPACITY = 3;\r\n\r\n//List of formatting elements\r\nvar FormattingElementList = module.exports = function (treeAdapter) {\r\n    this.length = 0;\r\n    this.entries = [];\r\n    this.treeAdapter = treeAdapter;\r\n    this.bookmark = null;\r\n};\r\n\r\n//Entry types\r\nFormattingElementList.MARKER_ENTRY = 'MARKER_ENTRY';\r\nFormattingElementList.ELEMENT_ENTRY = 'ELEMENT_ENTRY';\r\n\r\n//Noah Ark's condition\r\n//OPTIMIZATION: at first we try to find possible candidates for exclusion using\r\n//lightweight heuristics without thorough attributes check.\r\nFormattingElementList.prototype._getNoahArkConditionCandidates = function (newElement) {\r\n    var candidates = [];\r\n\r\n    if (this.length >= NOAH_ARK_CAPACITY) {\r\n        var neAttrsLength = this.treeAdapter.getAttrList(newElement).length,\r\n            neTagName = this.treeAdapter.getTagName(newElement),\r\n            neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement);\r\n\r\n        for (var i = this.length - 1; i >= 0; i--) {\r\n            var entry = this.entries[i];\r\n\r\n            if (entry.type === FormattingElementList.MARKER_ENTRY)\r\n                break;\r\n\r\n            var element = entry.element,\r\n                elementAttrs = this.treeAdapter.getAttrList(element),\r\n                isCandidate = this.treeAdapter.getTagName(element) === neTagName &&\r\n                              this.treeAdapter.getNamespaceURI(element) === neNamespaceURI &&\r\n                              elementAttrs.length === neAttrsLength;\r\n\r\n            if (isCandidate)\r\n                candidates.push({idx: i, attrs: elementAttrs});\r\n        }\r\n    }\r\n\r\n    return candidates.length < NOAH_ARK_CAPACITY ? [] : candidates;\r\n};\r\n\r\nFormattingElementList.prototype._ensureNoahArkCondition = function (newElement) {\r\n    var candidates = this._getNoahArkConditionCandidates(newElement),\r\n        cLength = candidates.length;\r\n\r\n    if (cLength) {\r\n        var neAttrs = this.treeAdapter.getAttrList(newElement),\r\n            neAttrsLength = neAttrs.length,\r\n            neAttrsMap = {};\r\n\r\n        //NOTE: build attrs map for the new element so we can perform fast lookups\r\n        for (var i = 0; i < neAttrsLength; i++) {\r\n            var neAttr = neAttrs[i];\r\n\r\n            neAttrsMap[neAttr.name] = neAttr.value;\r\n        }\r\n\r\n        for (i = 0; i < neAttrsLength; i++) {\r\n            for (var j = 0; j < cLength; j++) {\r\n                var cAttr = candidates[j].attrs[i];\r\n\r\n                if (neAttrsMap[cAttr.name] !== cAttr.value) {\r\n                    candidates.splice(j, 1);\r\n                    cLength--;\r\n                }\r\n\r\n                if (candidates.length < NOAH_ARK_CAPACITY)\r\n                    return;\r\n            }\r\n        }\r\n\r\n        //NOTE: remove bottommost candidates until Noah's Ark condition will not be met\r\n        for (i = cLength - 1; i >= NOAH_ARK_CAPACITY - 1; i--) {\r\n            this.entries.splice(candidates[i].idx, 1);\r\n            this.length--;\r\n        }\r\n    }\r\n};\r\n\r\n//Mutations\r\nFormattingElementList.prototype.insertMarker = function () {\r\n    this.entries.push({type: FormattingElementList.MARKER_ENTRY});\r\n    this.length++;\r\n};\r\n\r\nFormattingElementList.prototype.pushElement = function (element, token) {\r\n    this._ensureNoahArkCondition(element);\r\n\r\n    this.entries.push({\r\n        type: FormattingElementList.ELEMENT_ENTRY,\r\n        element: element,\r\n        token: token\r\n    });\r\n\r\n    this.length++;\r\n};\r\n\r\nFormattingElementList.prototype.insertElementAfterBookmark = function (element, token) {\r\n    var bookmarkIdx = this.length - 1;\r\n\r\n    for (; bookmarkIdx >= 0; bookmarkIdx--) {\r\n        if (this.entries[bookmarkIdx] === this.bookmark)\r\n            break;\r\n    }\r\n\r\n    this.entries.splice(bookmarkIdx + 1, 0, {\r\n        type: FormattingElementList.ELEMENT_ENTRY,\r\n        element: element,\r\n        token: token\r\n    });\r\n\r\n    this.length++;\r\n};\r\n\r\nFormattingElementList.prototype.removeEntry = function (entry) {\r\n    for (var i = this.length - 1; i >= 0; i--) {\r\n        if (this.entries[i] === entry) {\r\n            this.entries.splice(i, 1);\r\n            this.length--;\r\n            break;\r\n        }\r\n    }\r\n};\r\n\r\nFormattingElementList.prototype.clearToLastMarker = function () {\r\n    while (this.length) {\r\n        var entry = this.entries.pop();\r\n\r\n        this.length--;\r\n\r\n        if (entry.type === FormattingElementList.MARKER_ENTRY)\r\n            break;\r\n    }\r\n};\r\n\r\n//Search\r\nFormattingElementList.prototype.getElementEntryInScopeWithTagName = function (tagName) {\r\n    for (var i = this.length - 1; i >= 0; i--) {\r\n        var entry = this.entries[i];\r\n\r\n        if (entry.type === FormattingElementList.MARKER_ENTRY)\r\n            return null;\r\n\r\n        if (this.treeAdapter.getTagName(entry.element) === tagName)\r\n            return entry;\r\n    }\r\n\r\n    return null;\r\n};\r\n\r\nFormattingElementList.prototype.getElementEntry = function (element) {\r\n    for (var i = this.length - 1; i >= 0; i--) {\r\n        var entry = this.entries[i];\r\n\r\n        if (entry.type === FormattingElementList.ELEMENT_ENTRY && entry.element === element)\r\n            return entry;\r\n    }\r\n\r\n    return null;\r\n};\r\n","'use strict';\r\n\r\nvar Tokenizer = require('../tokenizer'),\r\n    OpenElementStack = require('./open_element_stack'),\r\n    FormattingElementList = require('./formatting_element_list'),\r\n    locationInfoMixin = require('../location_info/parser_mixin'),\r\n    defaultTreeAdapter = require('../tree_adapters/default'),\r\n    doctype = require('../common/doctype'),\r\n    foreignContent = require('../common/foreign_content'),\r\n    mergeOptions = require('../common/merge_options'),\r\n    UNICODE = require('../common/unicode'),\r\n    HTML = require('../common/html');\r\n\r\n//Aliases\r\nvar $ = HTML.TAG_NAMES,\r\n    NS = HTML.NAMESPACES,\r\n    ATTRS = HTML.ATTRS;\r\n\r\n/**\r\n * @typedef {Object} ParserOptions\r\n *\r\n * @property {Boolean} [locationInfo=false] - Enables source code location information for the nodes.\r\n * When enabled, each node (except root node) has the `__location` property. In case the node is not an empty element,\r\n * `__location` will be {@link ElementLocationInfo} object, otherwise it's {@link LocationInfo}.\r\n * If the element was implicitly created by the parser it's `__location` property will be `null`.\r\n *\r\n * @property {TreeAdapter} [treeAdapter=parse5.treeAdapters.default] - Specifies the resulting tree format.\r\n */\r\nvar DEFAULT_OPTIONS = {\r\n    locationInfo: false,\r\n    treeAdapter: defaultTreeAdapter\r\n};\r\n\r\n//Misc constants\r\nvar HIDDEN_INPUT_TYPE = 'hidden';\r\n\r\n//Adoption agency loops iteration count\r\nvar AA_OUTER_LOOP_ITER = 8,\r\n    AA_INNER_LOOP_ITER = 3;\r\n\r\n//Insertion modes\r\nvar INITIAL_MODE = 'INITIAL_MODE',\r\n    BEFORE_HTML_MODE = 'BEFORE_HTML_MODE',\r\n    BEFORE_HEAD_MODE = 'BEFORE_HEAD_MODE',\r\n    IN_HEAD_MODE = 'IN_HEAD_MODE',\r\n    AFTER_HEAD_MODE = 'AFTER_HEAD_MODE',\r\n    IN_BODY_MODE = 'IN_BODY_MODE',\r\n    TEXT_MODE = 'TEXT_MODE',\r\n    IN_TABLE_MODE = 'IN_TABLE_MODE',\r\n    IN_TABLE_TEXT_MODE = 'IN_TABLE_TEXT_MODE',\r\n    IN_CAPTION_MODE = 'IN_CAPTION_MODE',\r\n    IN_COLUMN_GROUP_MODE = 'IN_COLUMN_GROUP_MODE',\r\n    IN_TABLE_BODY_MODE = 'IN_TABLE_BODY_MODE',\r\n    IN_ROW_MODE = 'IN_ROW_MODE',\r\n    IN_CELL_MODE = 'IN_CELL_MODE',\r\n    IN_SELECT_MODE = 'IN_SELECT_MODE',\r\n    IN_SELECT_IN_TABLE_MODE = 'IN_SELECT_IN_TABLE_MODE',\r\n    IN_TEMPLATE_MODE = 'IN_TEMPLATE_MODE',\r\n    AFTER_BODY_MODE = 'AFTER_BODY_MODE',\r\n    IN_FRAMESET_MODE = 'IN_FRAMESET_MODE',\r\n    AFTER_FRAMESET_MODE = 'AFTER_FRAMESET_MODE',\r\n    AFTER_AFTER_BODY_MODE = 'AFTER_AFTER_BODY_MODE',\r\n    AFTER_AFTER_FRAMESET_MODE = 'AFTER_AFTER_FRAMESET_MODE';\r\n\r\n//Insertion mode reset map\r\nvar INSERTION_MODE_RESET_MAP = {};\r\n\r\nINSERTION_MODE_RESET_MAP[$.TR] = IN_ROW_MODE;\r\nINSERTION_MODE_RESET_MAP[$.TBODY] =\r\nINSERTION_MODE_RESET_MAP[$.THEAD] =\r\nINSERTION_MODE_RESET_MAP[$.TFOOT] = IN_TABLE_BODY_MODE;\r\nINSERTION_MODE_RESET_MAP[$.CAPTION] = IN_CAPTION_MODE;\r\nINSERTION_MODE_RESET_MAP[$.COLGROUP] = IN_COLUMN_GROUP_MODE;\r\nINSERTION_MODE_RESET_MAP[$.TABLE] = IN_TABLE_MODE;\r\nINSERTION_MODE_RESET_MAP[$.BODY] = IN_BODY_MODE;\r\nINSERTION_MODE_RESET_MAP[$.FRAMESET] = IN_FRAMESET_MODE;\r\n\r\n//Template insertion mode switch map\r\nvar TEMPLATE_INSERTION_MODE_SWITCH_MAP = {};\r\n\r\nTEMPLATE_INSERTION_MODE_SWITCH_MAP[$.CAPTION] =\r\nTEMPLATE_INSERTION_MODE_SWITCH_MAP[$.COLGROUP] =\r\nTEMPLATE_INSERTION_MODE_SWITCH_MAP[$.TBODY] =\r\nTEMPLATE_INSERTION_MODE_SWITCH_MAP[$.TFOOT] =\r\nTEMPLATE_INSERTION_MODE_SWITCH_MAP[$.THEAD] = IN_TABLE_MODE;\r\nTEMPLATE_INSERTION_MODE_SWITCH_MAP[$.COL] = IN_COLUMN_GROUP_MODE;\r\nTEMPLATE_INSERTION_MODE_SWITCH_MAP[$.TR] = IN_TABLE_BODY_MODE;\r\nTEMPLATE_INSERTION_MODE_SWITCH_MAP[$.TD] =\r\nTEMPLATE_INSERTION_MODE_SWITCH_MAP[$.TH] = IN_ROW_MODE;\r\n\r\n//Token handlers map for insertion modes\r\nvar _ = {};\r\n\r\n_[INITIAL_MODE] = {};\r\n_[INITIAL_MODE][Tokenizer.CHARACTER_TOKEN] =\r\n_[INITIAL_MODE][Tokenizer.NULL_CHARACTER_TOKEN] = tokenInInitialMode;\r\n_[INITIAL_MODE][Tokenizer.WHITESPACE_CHARACTER_TOKEN] = ignoreToken;\r\n_[INITIAL_MODE][Tokenizer.COMMENT_TOKEN] = appendComment;\r\n_[INITIAL_MODE][Tokenizer.DOCTYPE_TOKEN] = doctypeInInitialMode;\r\n_[INITIAL_MODE][Tokenizer.START_TAG_TOKEN] =\r\n_[INITIAL_MODE][Tokenizer.END_TAG_TOKEN] =\r\n_[INITIAL_MODE][Tokenizer.EOF_TOKEN] = tokenInInitialMode;\r\n\r\n_[BEFORE_HTML_MODE] = {};\r\n_[BEFORE_HTML_MODE][Tokenizer.CHARACTER_TOKEN] =\r\n_[BEFORE_HTML_MODE][Tokenizer.NULL_CHARACTER_TOKEN] = tokenBeforeHtml;\r\n_[BEFORE_HTML_MODE][Tokenizer.WHITESPACE_CHARACTER_TOKEN] = ignoreToken;\r\n_[BEFORE_HTML_MODE][Tokenizer.COMMENT_TOKEN] = appendComment;\r\n_[BEFORE_HTML_MODE][Tokenizer.DOCTYPE_TOKEN] = ignoreToken;\r\n_[BEFORE_HTML_MODE][Tokenizer.START_TAG_TOKEN] = startTagBeforeHtml;\r\n_[BEFORE_HTML_MODE][Tokenizer.END_TAG_TOKEN] = endTagBeforeHtml;\r\n_[BEFORE_HTML_MODE][Tokenizer.EOF_TOKEN] = tokenBeforeHtml;\r\n\r\n_[BEFORE_HEAD_MODE] = {};\r\n_[BEFORE_HEAD_MODE][Tokenizer.CHARACTER_TOKEN] =\r\n_[BEFORE_HEAD_MODE][Tokenizer.NULL_CHARACTER_TOKEN] = tokenBeforeHead;\r\n_[BEFORE_HEAD_MODE][Tokenizer.WHITESPACE_CHARACTER_TOKEN] = ignoreToken;\r\n_[BEFORE_HEAD_MODE][Tokenizer.COMMENT_TOKEN] = appendComment;\r\n_[BEFORE_HEAD_MODE][Tokenizer.DOCTYPE_TOKEN] = ignoreToken;\r\n_[BEFORE_HEAD_MODE][Tokenizer.START_TAG_TOKEN] = startTagBeforeHead;\r\n_[BEFORE_HEAD_MODE][Tokenizer.END_TAG_TOKEN] = endTagBeforeHead;\r\n_[BEFORE_HEAD_MODE][Tokenizer.EOF_TOKEN] = tokenBeforeHead;\r\n\r\n_[IN_HEAD_MODE] = {};\r\n_[IN_HEAD_MODE][Tokenizer.CHARACTER_TOKEN] =\r\n_[IN_HEAD_MODE][Tokenizer.NULL_CHARACTER_TOKEN] = tokenInHead;\r\n_[IN_HEAD_MODE][Tokenizer.WHITESPACE_CHARACTER_TOKEN] = insertCharacters;\r\n_[IN_HEAD_MODE][Tokenizer.COMMENT_TOKEN] = appendComment;\r\n_[IN_HEAD_MODE][Tokenizer.DOCTYPE_TOKEN] = ignoreToken;\r\n_[IN_HEAD_MODE][Tokenizer.START_TAG_TOKEN] = startTagInHead;\r\n_[IN_HEAD_MODE][Tokenizer.END_TAG_TOKEN] = endTagInHead;\r\n_[IN_HEAD_MODE][Tokenizer.EOF_TOKEN] = tokenInHead;\r\n\r\n_[AFTER_HEAD_MODE] = {};\r\n_[AFTER_HEAD_MODE][Tokenizer.CHARACTER_TOKEN] =\r\n_[AFTER_HEAD_MODE][Tokenizer.NULL_CHARACTER_TOKEN] = tokenAfterHead;\r\n_[AFTER_HEAD_MODE][Tokenizer.WHITESPACE_CHARACTER_TOKEN] = insertCharacters;\r\n_[AFTER_HEAD_MODE][Tokenizer.COMMENT_TOKEN] = appendComment;\r\n_[AFTER_HEAD_MODE][Tokenizer.DOCTYPE_TOKEN] = ignoreToken;\r\n_[AFTER_HEAD_MODE][Tokenizer.START_TAG_TOKEN] = startTagAfterHead;\r\n_[AFTER_HEAD_MODE][Tokenizer.END_TAG_TOKEN] = endTagAfterHead;\r\n_[AFTER_HEAD_MODE][Tokenizer.EOF_TOKEN] = tokenAfterHead;\r\n\r\n_[IN_BODY_MODE] = {};\r\n_[IN_BODY_MODE][Tokenizer.CHARACTER_TOKEN] = characterInBody;\r\n_[IN_BODY_MODE][Tokenizer.NULL_CHARACTER_TOKEN] = ignoreToken;\r\n_[IN_BODY_MODE][Tokenizer.WHITESPACE_CHARACTER_TOKEN] = whitespaceCharacterInBody;\r\n_[IN_BODY_MODE][Tokenizer.COMMENT_TOKEN] = appendComment;\r\n_[IN_BODY_MODE][Tokenizer.DOCTYPE_TOKEN] = ignoreToken;\r\n_[IN_BODY_MODE][Tokenizer.START_TAG_TOKEN] = startTagInBody;\r\n_[IN_BODY_MODE][Tokenizer.END_TAG_TOKEN] = endTagInBody;\r\n_[IN_BODY_MODE][Tokenizer.EOF_TOKEN] = eofInBody;\r\n\r\n_[TEXT_MODE] = {};\r\n_[TEXT_MODE][Tokenizer.CHARACTER_TOKEN] =\r\n_[TEXT_MODE][Tokenizer.NULL_CHARACTER_TOKEN] =\r\n_[TEXT_MODE][Tokenizer.WHITESPACE_CHARACTER_TOKEN] = insertCharacters;\r\n_[TEXT_MODE][Tokenizer.COMMENT_TOKEN] =\r\n_[TEXT_MODE][Tokenizer.DOCTYPE_TOKEN] =\r\n_[TEXT_MODE][Tokenizer.START_TAG_TOKEN] = ignoreToken;\r\n_[TEXT_MODE][Tokenizer.END_TAG_TOKEN] = endTagInText;\r\n_[TEXT_MODE][Tokenizer.EOF_TOKEN] = eofInText;\r\n\r\n_[IN_TABLE_MODE] = {};\r\n_[IN_TABLE_MODE][Tokenizer.CHARACTER_TOKEN] =\r\n_[IN_TABLE_MODE][Tokenizer.NULL_CHARACTER_TOKEN] =\r\n_[IN_TABLE_MODE][Tokenizer.WHITESPACE_CHARACTER_TOKEN] = characterInTable;\r\n_[IN_TABLE_MODE][Tokenizer.COMMENT_TOKEN] = appendComment;\r\n_[IN_TABLE_MODE][Tokenizer.DOCTYPE_TOKEN] = ignoreToken;\r\n_[IN_TABLE_MODE][Tokenizer.START_TAG_TOKEN] = startTagInTable;\r\n_[IN_TABLE_MODE][Tokenizer.END_TAG_TOKEN] = endTagInTable;\r\n_[IN_TABLE_MODE][Tokenizer.EOF_TOKEN] = eofInBody;\r\n\r\n_[IN_TABLE_TEXT_MODE] = {};\r\n_[IN_TABLE_TEXT_MODE][Tokenizer.CHARACTER_TOKEN] = characterInTableText;\r\n_[IN_TABLE_TEXT_MODE][Tokenizer.NULL_CHARACTER_TOKEN] = ignoreToken;\r\n_[IN_TABLE_TEXT_MODE][Tokenizer.WHITESPACE_CHARACTER_TOKEN] = whitespaceCharacterInTableText;\r\n_[IN_TABLE_TEXT_MODE][Tokenizer.COMMENT_TOKEN] =\r\n_[IN_TABLE_TEXT_MODE][Tokenizer.DOCTYPE_TOKEN] =\r\n_[IN_TABLE_TEXT_MODE][Tokenizer.START_TAG_TOKEN] =\r\n_[IN_TABLE_TEXT_MODE][Tokenizer.END_TAG_TOKEN] =\r\n_[IN_TABLE_TEXT_MODE][Tokenizer.EOF_TOKEN] = tokenInTableText;\r\n\r\n_[IN_CAPTION_MODE] = {};\r\n_[IN_CAPTION_MODE][Tokenizer.CHARACTER_TOKEN] = characterInBody;\r\n_[IN_CAPTION_MODE][Tokenizer.NULL_CHARACTER_TOKEN] = ignoreToken;\r\n_[IN_CAPTION_MODE][Tokenizer.WHITESPACE_CHARACTER_TOKEN] = whitespaceCharacterInBody;\r\n_[IN_CAPTION_MODE][Tokenizer.COMMENT_TOKEN] = appendComment;\r\n_[IN_CAPTION_MODE][Tokenizer.DOCTYPE_TOKEN] = ignoreToken;\r\n_[IN_CAPTION_MODE][Tokenizer.START_TAG_TOKEN] = startTagInCaption;\r\n_[IN_CAPTION_MODE][Tokenizer.END_TAG_TOKEN] = endTagInCaption;\r\n_[IN_CAPTION_MODE][Tokenizer.EOF_TOKEN] = eofInBody;\r\n\r\n_[IN_COLUMN_GROUP_MODE] = {};\r\n_[IN_COLUMN_GROUP_MODE][Tokenizer.CHARACTER_TOKEN] =\r\n_[IN_COLUMN_GROUP_MODE][Tokenizer.NULL_CHARACTER_TOKEN] = tokenInColumnGroup;\r\n_[IN_COLUMN_GROUP_MODE][Tokenizer.WHITESPACE_CHARACTER_TOKEN] = insertCharacters;\r\n_[IN_COLUMN_GROUP_MODE][Tokenizer.COMMENT_TOKEN] = appendComment;\r\n_[IN_COLUMN_GROUP_MODE][Tokenizer.DOCTYPE_TOKEN] = ignoreToken;\r\n_[IN_COLUMN_GROUP_MODE][Tokenizer.START_TAG_TOKEN] = startTagInColumnGroup;\r\n_[IN_COLUMN_GROUP_MODE][Tokenizer.END_TAG_TOKEN] = endTagInColumnGroup;\r\n_[IN_COLUMN_GROUP_MODE][Tokenizer.EOF_TOKEN] = eofInBody;\r\n\r\n_[IN_TABLE_BODY_MODE] = {};\r\n_[IN_TABLE_BODY_MODE][Tokenizer.CHARACTER_TOKEN] =\r\n_[IN_TABLE_BODY_MODE][Tokenizer.NULL_CHARACTER_TOKEN] =\r\n_[IN_TABLE_BODY_MODE][Tokenizer.WHITESPACE_CHARACTER_TOKEN] = characterInTable;\r\n_[IN_TABLE_BODY_MODE][Tokenizer.COMMENT_TOKEN] = appendComment;\r\n_[IN_TABLE_BODY_MODE][Tokenizer.DOCTYPE_TOKEN] = ignoreToken;\r\n_[IN_TABLE_BODY_MODE][Tokenizer.START_TAG_TOKEN] = startTagInTableBody;\r\n_[IN_TABLE_BODY_MODE][Tokenizer.END_TAG_TOKEN] = endTagInTableBody;\r\n_[IN_TABLE_BODY_MODE][Tokenizer.EOF_TOKEN] = eofInBody;\r\n\r\n_[IN_ROW_MODE] = {};\r\n_[IN_ROW_MODE][Tokenizer.CHARACTER_TOKEN] =\r\n_[IN_ROW_MODE][Tokenizer.NULL_CHARACTER_TOKEN] =\r\n_[IN_ROW_MODE][Tokenizer.WHITESPACE_CHARACTER_TOKEN] = characterInTable;\r\n_[IN_ROW_MODE][Tokenizer.COMMENT_TOKEN] = appendComment;\r\n_[IN_ROW_MODE][Tokenizer.DOCTYPE_TOKEN] = ignoreToken;\r\n_[IN_ROW_MODE][Tokenizer.START_TAG_TOKEN] = startTagInRow;\r\n_[IN_ROW_MODE][Tokenizer.END_TAG_TOKEN] = endTagInRow;\r\n_[IN_ROW_MODE][Tokenizer.EOF_TOKEN] = eofInBody;\r\n\r\n_[IN_CELL_MODE] = {};\r\n_[IN_CELL_MODE][Tokenizer.CHARACTER_TOKEN] = characterInBody;\r\n_[IN_CELL_MODE][Tokenizer.NULL_CHARACTER_TOKEN] = ignoreToken;\r\n_[IN_CELL_MODE][Tokenizer.WHITESPACE_CHARACTER_TOKEN] = whitespaceCharacterInBody;\r\n_[IN_CELL_MODE][Tokenizer.COMMENT_TOKEN] = appendComment;\r\n_[IN_CELL_MODE][Tokenizer.DOCTYPE_TOKEN] = ignoreToken;\r\n_[IN_CELL_MODE][Tokenizer.START_TAG_TOKEN] = startTagInCell;\r\n_[IN_CELL_MODE][Tokenizer.END_TAG_TOKEN] = endTagInCell;\r\n_[IN_CELL_MODE][Tokenizer.EOF_TOKEN] = eofInBody;\r\n\r\n_[IN_SELECT_MODE] = {};\r\n_[IN_SELECT_MODE][Tokenizer.CHARACTER_TOKEN] = insertCharacters;\r\n_[IN_SELECT_MODE][Tokenizer.NULL_CHARACTER_TOKEN] = ignoreToken;\r\n_[IN_SELECT_MODE][Tokenizer.WHITESPACE_CHARACTER_TOKEN] = insertCharacters;\r\n_[IN_SELECT_MODE][Tokenizer.COMMENT_TOKEN] = appendComment;\r\n_[IN_SELECT_MODE][Tokenizer.DOCTYPE_TOKEN] = ignoreToken;\r\n_[IN_SELECT_MODE][Tokenizer.START_TAG_TOKEN] = startTagInSelect;\r\n_[IN_SELECT_MODE][Tokenizer.END_TAG_TOKEN] = endTagInSelect;\r\n_[IN_SELECT_MODE][Tokenizer.EOF_TOKEN] = eofInBody;\r\n\r\n_[IN_SELECT_IN_TABLE_MODE] = {};\r\n_[IN_SELECT_IN_TABLE_MODE][Tokenizer.CHARACTER_TOKEN] = insertCharacters;\r\n_[IN_SELECT_IN_TABLE_MODE][Tokenizer.NULL_CHARACTER_TOKEN] = ignoreToken;\r\n_[IN_SELECT_IN_TABLE_MODE][Tokenizer.WHITESPACE_CHARACTER_TOKEN] = insertCharacters;\r\n_[IN_SELECT_IN_TABLE_MODE][Tokenizer.COMMENT_TOKEN] = appendComment;\r\n_[IN_SELECT_IN_TABLE_MODE][Tokenizer.DOCTYPE_TOKEN] = ignoreToken;\r\n_[IN_SELECT_IN_TABLE_MODE][Tokenizer.START_TAG_TOKEN] = startTagInSelectInTable;\r\n_[IN_SELECT_IN_TABLE_MODE][Tokenizer.END_TAG_TOKEN] = endTagInSelectInTable;\r\n_[IN_SELECT_IN_TABLE_MODE][Tokenizer.EOF_TOKEN] = eofInBody;\r\n\r\n_[IN_TEMPLATE_MODE] = {};\r\n_[IN_TEMPLATE_MODE][Tokenizer.CHARACTER_TOKEN] = characterInBody;\r\n_[IN_TEMPLATE_MODE][Tokenizer.NULL_CHARACTER_TOKEN] = ignoreToken;\r\n_[IN_TEMPLATE_MODE][Tokenizer.WHITESPACE_CHARACTER_TOKEN] = whitespaceCharacterInBody;\r\n_[IN_TEMPLATE_MODE][Tokenizer.COMMENT_TOKEN] = appendComment;\r\n_[IN_TEMPLATE_MODE][Tokenizer.DOCTYPE_TOKEN] = ignoreToken;\r\n_[IN_TEMPLATE_MODE][Tokenizer.START_TAG_TOKEN] = startTagInTemplate;\r\n_[IN_TEMPLATE_MODE][Tokenizer.END_TAG_TOKEN] = endTagInTemplate;\r\n_[IN_TEMPLATE_MODE][Tokenizer.EOF_TOKEN] = eofInTemplate;\r\n\r\n_[AFTER_BODY_MODE] = {};\r\n_[AFTER_BODY_MODE][Tokenizer.CHARACTER_TOKEN] =\r\n_[AFTER_BODY_MODE][Tokenizer.NULL_CHARACTER_TOKEN] = tokenAfterBody;\r\n_[AFTER_BODY_MODE][Tokenizer.WHITESPACE_CHARACTER_TOKEN] = whitespaceCharacterInBody;\r\n_[AFTER_BODY_MODE][Tokenizer.COMMENT_TOKEN] = appendCommentToRootHtmlElement;\r\n_[AFTER_BODY_MODE][Tokenizer.DOCTYPE_TOKEN] = ignoreToken;\r\n_[AFTER_BODY_MODE][Tokenizer.START_TAG_TOKEN] = startTagAfterBody;\r\n_[AFTER_BODY_MODE][Tokenizer.END_TAG_TOKEN] = endTagAfterBody;\r\n_[AFTER_BODY_MODE][Tokenizer.EOF_TOKEN] = stopParsing;\r\n\r\n_[IN_FRAMESET_MODE] = {};\r\n_[IN_FRAMESET_MODE][Tokenizer.CHARACTER_TOKEN] =\r\n_[IN_FRAMESET_MODE][Tokenizer.NULL_CHARACTER_TOKEN] = ignoreToken;\r\n_[IN_FRAMESET_MODE][Tokenizer.WHITESPACE_CHARACTER_TOKEN] = insertCharacters;\r\n_[IN_FRAMESET_MODE][Tokenizer.COMMENT_TOKEN] = appendComment;\r\n_[IN_FRAMESET_MODE][Tokenizer.DOCTYPE_TOKEN] = ignoreToken;\r\n_[IN_FRAMESET_MODE][Tokenizer.START_TAG_TOKEN] = startTagInFrameset;\r\n_[IN_FRAMESET_MODE][Tokenizer.END_TAG_TOKEN] = endTagInFrameset;\r\n_[IN_FRAMESET_MODE][Tokenizer.EOF_TOKEN] = stopParsing;\r\n\r\n_[AFTER_FRAMESET_MODE] = {};\r\n_[AFTER_FRAMESET_MODE][Tokenizer.CHARACTER_TOKEN] =\r\n_[AFTER_FRAMESET_MODE][Tokenizer.NULL_CHARACTER_TOKEN] = ignoreToken;\r\n_[AFTER_FRAMESET_MODE][Tokenizer.WHITESPACE_CHARACTER_TOKEN] = insertCharacters;\r\n_[AFTER_FRAMESET_MODE][Tokenizer.COMMENT_TOKEN] = appendComment;\r\n_[AFTER_FRAMESET_MODE][Tokenizer.DOCTYPE_TOKEN] = ignoreToken;\r\n_[AFTER_FRAMESET_MODE][Tokenizer.START_TAG_TOKEN] = startTagAfterFrameset;\r\n_[AFTER_FRAMESET_MODE][Tokenizer.END_TAG_TOKEN] = endTagAfterFrameset;\r\n_[AFTER_FRAMESET_MODE][Tokenizer.EOF_TOKEN] = stopParsing;\r\n\r\n_[AFTER_AFTER_BODY_MODE] = {};\r\n_[AFTER_AFTER_BODY_MODE][Tokenizer.CHARACTER_TOKEN] = tokenAfterAfterBody;\r\n_[AFTER_AFTER_BODY_MODE][Tokenizer.NULL_CHARACTER_TOKEN] = tokenAfterAfterBody;\r\n_[AFTER_AFTER_BODY_MODE][Tokenizer.WHITESPACE_CHARACTER_TOKEN] = whitespaceCharacterInBody;\r\n_[AFTER_AFTER_BODY_MODE][Tokenizer.COMMENT_TOKEN] = appendCommentToDocument;\r\n_[AFTER_AFTER_BODY_MODE][Tokenizer.DOCTYPE_TOKEN] = ignoreToken;\r\n_[AFTER_AFTER_BODY_MODE][Tokenizer.START_TAG_TOKEN] = startTagAfterAfterBody;\r\n_[AFTER_AFTER_BODY_MODE][Tokenizer.END_TAG_TOKEN] = tokenAfterAfterBody;\r\n_[AFTER_AFTER_BODY_MODE][Tokenizer.EOF_TOKEN] = stopParsing;\r\n\r\n_[AFTER_AFTER_FRAMESET_MODE] = {};\r\n_[AFTER_AFTER_FRAMESET_MODE][Tokenizer.CHARACTER_TOKEN] =\r\n_[AFTER_AFTER_FRAMESET_MODE][Tokenizer.NULL_CHARACTER_TOKEN] = ignoreToken;\r\n_[AFTER_AFTER_FRAMESET_MODE][Tokenizer.WHITESPACE_CHARACTER_TOKEN] = whitespaceCharacterInBody;\r\n_[AFTER_AFTER_FRAMESET_MODE][Tokenizer.COMMENT_TOKEN] = appendCommentToDocument;\r\n_[AFTER_AFTER_FRAMESET_MODE][Tokenizer.DOCTYPE_TOKEN] = ignoreToken;\r\n_[AFTER_AFTER_FRAMESET_MODE][Tokenizer.START_TAG_TOKEN] = startTagAfterAfterFrameset;\r\n_[AFTER_AFTER_FRAMESET_MODE][Tokenizer.END_TAG_TOKEN] = ignoreToken;\r\n_[AFTER_AFTER_FRAMESET_MODE][Tokenizer.EOF_TOKEN] = stopParsing;\r\n\r\n\r\n//Parser\r\nvar Parser = module.exports = function (options) {\r\n    this.options = mergeOptions(DEFAULT_OPTIONS, options);\r\n\r\n    this.treeAdapter = this.options.treeAdapter;\r\n    this.pendingScript = null;\r\n\r\n    if (this.options.locationInfo)\r\n        locationInfoMixin.assign(this);\r\n};\r\n\r\n// API\r\nParser.prototype.parse = function (html) {\r\n    var document = this.treeAdapter.createDocument();\r\n\r\n    this._bootstrap(document, null);\r\n    this.tokenizer.write(html, true);\r\n    this._runParsingLoop(null, null);\r\n\r\n    return document;\r\n};\r\n\r\nParser.prototype.parseFragment = function (html, fragmentContext) {\r\n    //NOTE: use <template> element as a fragment context if context element was not provided,\r\n    //so we will parse in \"forgiving\" manner\r\n    if (!fragmentContext)\r\n        fragmentContext = this.treeAdapter.createElement($.TEMPLATE, NS.HTML, []);\r\n\r\n    //NOTE: create fake element which will be used as 'document' for fragment parsing.\r\n    //This is important for jsdom there 'document' can't be recreated, therefore\r\n    //fragment parsing causes messing of the main `document`.\r\n    var documentMock = this.treeAdapter.createElement('documentmock', NS.HTML, []);\r\n\r\n    this._bootstrap(documentMock, fragmentContext);\r\n\r\n    if (this.treeAdapter.getTagName(fragmentContext) === $.TEMPLATE)\r\n        this._pushTmplInsertionMode(IN_TEMPLATE_MODE);\r\n\r\n    this._initTokenizerForFragmentParsing();\r\n    this._insertFakeRootElement();\r\n    this._resetInsertionMode();\r\n    this._findFormInFragmentContext();\r\n    this.tokenizer.write(html, true);\r\n    this._runParsingLoop(null, null);\r\n\r\n    var rootElement = this.treeAdapter.getFirstChild(documentMock),\r\n        fragment = this.treeAdapter.createDocumentFragment();\r\n\r\n    this._adoptNodes(rootElement, fragment);\r\n\r\n    return fragment;\r\n};\r\n\r\n//Bootstrap parser\r\nParser.prototype._bootstrap = function (document, fragmentContext) {\r\n    this.tokenizer = new Tokenizer(this.options);\r\n\r\n    this.stopped = false;\r\n\r\n    this.insertionMode = INITIAL_MODE;\r\n    this.originalInsertionMode = '';\r\n\r\n    this.document = document;\r\n    this.fragmentContext = fragmentContext;\r\n\r\n    this.headElement = null;\r\n    this.formElement = null;\r\n\r\n    this.openElements = new OpenElementStack(this.document, this.treeAdapter);\r\n    this.activeFormattingElements = new FormattingElementList(this.treeAdapter);\r\n\r\n    this.tmplInsertionModeStack = [];\r\n    this.tmplInsertionModeStackTop = -1;\r\n    this.currentTmplInsertionMode = null;\r\n\r\n    this.pendingCharacterTokens = [];\r\n    this.hasNonWhitespacePendingCharacterToken = false;\r\n\r\n    this.framesetOk = true;\r\n    this.skipNextNewLine = false;\r\n    this.fosterParentingEnabled = false;\r\n};\r\n\r\n//Parsing loop\r\nParser.prototype._runParsingLoop = function (writeCallback, scriptHandler) {\r\n    while (!this.stopped) {\r\n        this._setupTokenizerCDATAMode();\r\n\r\n        var token = this.tokenizer.getNextToken();\r\n\r\n        if (token.type === Tokenizer.HIBERNATION_TOKEN)\r\n            break;\r\n\r\n        if (this.skipNextNewLine) {\r\n            this.skipNextNewLine = false;\r\n\r\n            if (token.type === Tokenizer.WHITESPACE_CHARACTER_TOKEN && token.chars[0] === '\\n') {\r\n                if (token.chars.length === 1)\r\n                    continue;\r\n\r\n                token.chars = token.chars.substr(1);\r\n            }\r\n        }\r\n\r\n        this._processInputToken(token);\r\n\r\n        if (scriptHandler && this.pendingScript)\r\n            break;\r\n    }\r\n\r\n    if (scriptHandler && this.pendingScript) {\r\n        var script = this.pendingScript;\r\n\r\n        this.pendingScript = null;\r\n\r\n        scriptHandler(script);\r\n\r\n        return;\r\n    }\r\n\r\n    if (writeCallback)\r\n        writeCallback();\r\n};\r\n\r\n//Text parsing\r\nParser.prototype._setupTokenizerCDATAMode = function () {\r\n    var current = this._getAdjustedCurrentElement();\r\n\r\n    this.tokenizer.allowCDATA = current && current !== this.document &&\r\n                                this.treeAdapter.getNamespaceURI(current) !== NS.HTML &&\r\n                                !this._isIntegrationPoint(current);\r\n};\r\n\r\nParser.prototype._switchToTextParsing = function (currentToken, nextTokenizerState) {\r\n    this._insertElement(currentToken, NS.HTML);\r\n    this.tokenizer.state = nextTokenizerState;\r\n    this.originalInsertionMode = this.insertionMode;\r\n    this.insertionMode = TEXT_MODE;\r\n};\r\n\r\n//Fragment parsing\r\nParser.prototype._getAdjustedCurrentElement = function () {\r\n    return this.openElements.stackTop === 0 && this.fragmentContext ?\r\n           this.fragmentContext :\r\n           this.openElements.current;\r\n};\r\n\r\nParser.prototype._findFormInFragmentContext = function () {\r\n    var node = this.fragmentContext;\r\n\r\n    do {\r\n        if (this.treeAdapter.getTagName(node) === $.FORM) {\r\n            this.formElement = node;\r\n            break;\r\n        }\r\n\r\n        node = this.treeAdapter.getParentNode(node);\r\n    } while (node);\r\n};\r\n\r\nParser.prototype._initTokenizerForFragmentParsing = function () {\r\n    if (this.treeAdapter.getNamespaceURI(this.fragmentContext) === NS.HTML) {\r\n        var tn = this.treeAdapter.getTagName(this.fragmentContext);\r\n\r\n        if (tn === $.TITLE || tn === $.TEXTAREA)\r\n            this.tokenizer.state = Tokenizer.MODE.RCDATA;\r\n\r\n        else if (tn === $.STYLE || tn === $.XMP || tn === $.IFRAME ||\r\n                 tn === $.NOEMBED || tn === $.NOFRAMES || tn === $.NOSCRIPT)\r\n            this.tokenizer.state = Tokenizer.MODE.RAWTEXT;\r\n\r\n        else if (tn === $.SCRIPT)\r\n            this.tokenizer.state = Tokenizer.MODE.SCRIPT_DATA;\r\n\r\n        else if (tn === $.PLAINTEXT)\r\n            this.tokenizer.state = Tokenizer.MODE.PLAINTEXT;\r\n    }\r\n};\r\n\r\n//Tree mutation\r\nParser.prototype._setDocumentType = function (token) {\r\n    this.treeAdapter.setDocumentType(this.document, token.name, token.publicId, token.systemId);\r\n};\r\n\r\nParser.prototype._attachElementToTree = function (element) {\r\n    if (this._shouldFosterParentOnInsertion())\r\n        this._fosterParentElement(element);\r\n\r\n    else {\r\n        var parent = this.openElements.currentTmplContent || this.openElements.current;\r\n\r\n        this.treeAdapter.appendChild(parent, element);\r\n    }\r\n};\r\n\r\nParser.prototype._appendElement = function (token, namespaceURI) {\r\n    var element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\r\n\r\n    this._attachElementToTree(element);\r\n};\r\n\r\nParser.prototype._insertElement = function (token, namespaceURI) {\r\n    var element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\r\n\r\n    this._attachElementToTree(element);\r\n    this.openElements.push(element);\r\n};\r\n\r\nParser.prototype._insertFakeElement = function (tagName) {\r\n    var element = this.treeAdapter.createElement(tagName, NS.HTML, []);\r\n\r\n    this._attachElementToTree(element);\r\n    this.openElements.push(element);\r\n};\r\n\r\nParser.prototype._insertTemplate = function (token) {\r\n    var tmpl = this.treeAdapter.createElement(token.tagName, NS.HTML, token.attrs),\r\n        content = this.treeAdapter.createDocumentFragment();\r\n\r\n    this.treeAdapter.setTemplateContent(tmpl, content);\r\n    this._attachElementToTree(tmpl);\r\n    this.openElements.push(tmpl);\r\n};\r\n\r\nParser.prototype._insertFakeRootElement = function () {\r\n    var element = this.treeAdapter.createElement($.HTML, NS.HTML, []);\r\n\r\n    this.treeAdapter.appendChild(this.openElements.current, element);\r\n    this.openElements.push(element);\r\n};\r\n\r\nParser.prototype._appendCommentNode = function (token, parent) {\r\n    var commentNode = this.treeAdapter.createCommentNode(token.data);\r\n\r\n    this.treeAdapter.appendChild(parent, commentNode);\r\n};\r\n\r\nParser.prototype._insertCharacters = function (token) {\r\n    if (this._shouldFosterParentOnInsertion())\r\n        this._fosterParentText(token.chars);\r\n\r\n    else {\r\n        var parent = this.openElements.currentTmplContent || this.openElements.current;\r\n\r\n        this.treeAdapter.insertText(parent, token.chars);\r\n    }\r\n};\r\n\r\nParser.prototype._adoptNodes = function (donor, recipient) {\r\n    while (true) {\r\n        var child = this.treeAdapter.getFirstChild(donor);\r\n\r\n        if (!child)\r\n            break;\r\n\r\n        this.treeAdapter.detachNode(child);\r\n        this.treeAdapter.appendChild(recipient, child);\r\n    }\r\n};\r\n\r\n//Token processing\r\nParser.prototype._shouldProcessTokenInForeignContent = function (token) {\r\n    var current = this._getAdjustedCurrentElement();\r\n\r\n    if (!current || current === this.document)\r\n        return false;\r\n\r\n    var ns = this.treeAdapter.getNamespaceURI(current);\r\n\r\n    if (ns === NS.HTML)\r\n        return false;\r\n\r\n    if (this.treeAdapter.getTagName(current) === $.ANNOTATION_XML && ns === NS.MATHML &&\r\n        token.type === Tokenizer.START_TAG_TOKEN && token.tagName === $.SVG)\r\n        return false;\r\n\r\n    var isCharacterToken = token.type === Tokenizer.CHARACTER_TOKEN ||\r\n                           token.type === Tokenizer.NULL_CHARACTER_TOKEN ||\r\n                           token.type === Tokenizer.WHITESPACE_CHARACTER_TOKEN,\r\n        isMathMLTextStartTag = token.type === Tokenizer.START_TAG_TOKEN &&\r\n                               token.tagName !== $.MGLYPH &&\r\n                               token.tagName !== $.MALIGNMARK;\r\n\r\n    if ((isMathMLTextStartTag || isCharacterToken) && this._isIntegrationPoint(current, NS.MATHML))\r\n        return false;\r\n\r\n    if ((token.type === Tokenizer.START_TAG_TOKEN || isCharacterToken) && this._isIntegrationPoint(current, NS.HTML))\r\n        return false;\r\n\r\n    return token.type !== Tokenizer.EOF_TOKEN;\r\n};\r\n\r\nParser.prototype._processToken = function (token) {\r\n    _[this.insertionMode][token.type](this, token);\r\n};\r\n\r\nParser.prototype._processTokenInBodyMode = function (token) {\r\n    _[IN_BODY_MODE][token.type](this, token);\r\n};\r\n\r\nParser.prototype._processTokenInForeignContent = function (token) {\r\n    if (token.type === Tokenizer.CHARACTER_TOKEN)\r\n        characterInForeignContent(this, token);\r\n\r\n    else if (token.type === Tokenizer.NULL_CHARACTER_TOKEN)\r\n        nullCharacterInForeignContent(this, token);\r\n\r\n    else if (token.type === Tokenizer.WHITESPACE_CHARACTER_TOKEN)\r\n        insertCharacters(this, token);\r\n\r\n    else if (token.type === Tokenizer.COMMENT_TOKEN)\r\n        appendComment(this, token);\r\n\r\n    else if (token.type === Tokenizer.START_TAG_TOKEN)\r\n        startTagInForeignContent(this, token);\r\n\r\n    else if (token.type === Tokenizer.END_TAG_TOKEN)\r\n        endTagInForeignContent(this, token);\r\n};\r\n\r\nParser.prototype._processInputToken = function (token) {\r\n    if (this._shouldProcessTokenInForeignContent(token))\r\n        this._processTokenInForeignContent(token);\r\n\r\n    else\r\n        this._processToken(token);\r\n};\r\n\r\n//Integration points\r\nParser.prototype._isIntegrationPoint = function (element, foreignNS) {\r\n    var tn = this.treeAdapter.getTagName(element),\r\n        ns = this.treeAdapter.getNamespaceURI(element),\r\n        attrs = this.treeAdapter.getAttrList(element);\r\n\r\n    return foreignContent.isIntegrationPoint(tn, ns, attrs, foreignNS);\r\n};\r\n\r\n//Active formatting elements reconstruction\r\nParser.prototype._reconstructActiveFormattingElements = function () {\r\n    var listLength = this.activeFormattingElements.length;\r\n\r\n    if (listLength) {\r\n        var unopenIdx = listLength,\r\n            entry = null;\r\n\r\n        do {\r\n            unopenIdx--;\r\n            entry = this.activeFormattingElements.entries[unopenIdx];\r\n\r\n            if (entry.type === FormattingElementList.MARKER_ENTRY || this.openElements.contains(entry.element)) {\r\n                unopenIdx++;\r\n                break;\r\n            }\r\n        } while (unopenIdx > 0);\r\n\r\n        for (var i = unopenIdx; i < listLength; i++) {\r\n            entry = this.activeFormattingElements.entries[i];\r\n            this._insertElement(entry.token, this.treeAdapter.getNamespaceURI(entry.element));\r\n            entry.element = this.openElements.current;\r\n        }\r\n    }\r\n};\r\n\r\n//Close elements\r\nParser.prototype._closeTableCell = function () {\r\n    this.openElements.generateImpliedEndTags();\r\n    this.openElements.popUntilTableCellPopped();\r\n    this.activeFormattingElements.clearToLastMarker();\r\n    this.insertionMode = IN_ROW_MODE;\r\n};\r\n\r\nParser.prototype._closePElement = function () {\r\n    this.openElements.generateImpliedEndTagsWithExclusion($.P);\r\n    this.openElements.popUntilTagNamePopped($.P);\r\n};\r\n\r\n//Insertion modes\r\nParser.prototype._resetInsertionMode = function () {\r\n    for (var i = this.openElements.stackTop, last = false; i >= 0; i--) {\r\n        var element = this.openElements.items[i];\r\n\r\n        if (i === 0) {\r\n            last = true;\r\n\r\n            if (this.fragmentContext)\r\n                element = this.fragmentContext;\r\n        }\r\n\r\n        var tn = this.treeAdapter.getTagName(element),\r\n            newInsertionMode = INSERTION_MODE_RESET_MAP[tn];\r\n\r\n        if (newInsertionMode) {\r\n            this.insertionMode = newInsertionMode;\r\n            break;\r\n        }\r\n\r\n        else if (!last && (tn === $.TD || tn === $.TH)) {\r\n            this.insertionMode = IN_CELL_MODE;\r\n            break;\r\n        }\r\n\r\n        else if (!last && tn === $.HEAD) {\r\n            this.insertionMode = IN_HEAD_MODE;\r\n            break;\r\n        }\r\n\r\n        else if (tn === $.SELECT) {\r\n            this._resetInsertionModeForSelect(i);\r\n            break;\r\n        }\r\n\r\n        else if (tn === $.TEMPLATE) {\r\n            this.insertionMode = this.currentTmplInsertionMode;\r\n            break;\r\n        }\r\n\r\n        else if (tn === $.HTML) {\r\n            this.insertionMode = this.headElement ? AFTER_HEAD_MODE : BEFORE_HEAD_MODE;\r\n            break;\r\n        }\r\n\r\n        else if (last) {\r\n            this.insertionMode = IN_BODY_MODE;\r\n            break;\r\n        }\r\n    }\r\n};\r\n\r\nParser.prototype._resetInsertionModeForSelect = function (selectIdx) {\r\n    if (selectIdx > 0) {\r\n        for (var i = selectIdx - 1; i > 0; i--) {\r\n            var ancestor = this.openElements.items[i],\r\n                tn = this.treeAdapter.getTagName(ancestor);\r\n\r\n            if (tn === $.TEMPLATE)\r\n                break;\r\n\r\n            else if (tn === $.TABLE) {\r\n                this.insertionMode = IN_SELECT_IN_TABLE_MODE;\r\n                return;\r\n            }\r\n        }\r\n    }\r\n\r\n    this.insertionMode = IN_SELECT_MODE;\r\n};\r\n\r\nParser.prototype._pushTmplInsertionMode = function (mode) {\r\n    this.tmplInsertionModeStack.push(mode);\r\n    this.tmplInsertionModeStackTop++;\r\n    this.currentTmplInsertionMode = mode;\r\n};\r\n\r\nParser.prototype._popTmplInsertionMode = function () {\r\n    this.tmplInsertionModeStack.pop();\r\n    this.tmplInsertionModeStackTop--;\r\n    this.currentTmplInsertionMode = this.tmplInsertionModeStack[this.tmplInsertionModeStackTop];\r\n};\r\n\r\n//Foster parenting\r\nParser.prototype._isElementCausesFosterParenting = function (element) {\r\n    var tn = this.treeAdapter.getTagName(element);\r\n\r\n    return tn === $.TABLE || tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD || tn === $.TR;\r\n};\r\n\r\nParser.prototype._shouldFosterParentOnInsertion = function () {\r\n    return this.fosterParentingEnabled && this._isElementCausesFosterParenting(this.openElements.current);\r\n};\r\n\r\nParser.prototype._findFosterParentingLocation = function () {\r\n    var location = {\r\n        parent: null,\r\n        beforeElement: null\r\n    };\r\n\r\n    for (var i = this.openElements.stackTop; i >= 0; i--) {\r\n        var openElement = this.openElements.items[i],\r\n            tn = this.treeAdapter.getTagName(openElement),\r\n            ns = this.treeAdapter.getNamespaceURI(openElement);\r\n\r\n        if (tn === $.TEMPLATE && ns === NS.HTML) {\r\n            location.parent = this.treeAdapter.getTemplateContent(openElement);\r\n            break;\r\n        }\r\n\r\n        else if (tn === $.TABLE) {\r\n            location.parent = this.treeAdapter.getParentNode(openElement);\r\n\r\n            if (location.parent)\r\n                location.beforeElement = openElement;\r\n            else\r\n                location.parent = this.openElements.items[i - 1];\r\n\r\n            break;\r\n        }\r\n    }\r\n\r\n    if (!location.parent)\r\n        location.parent = this.openElements.items[0];\r\n\r\n    return location;\r\n};\r\n\r\nParser.prototype._fosterParentElement = function (element) {\r\n    var location = this._findFosterParentingLocation();\r\n\r\n    if (location.beforeElement)\r\n        this.treeAdapter.insertBefore(location.parent, element, location.beforeElement);\r\n    else\r\n        this.treeAdapter.appendChild(location.parent, element);\r\n};\r\n\r\nParser.prototype._fosterParentText = function (chars) {\r\n    var location = this._findFosterParentingLocation();\r\n\r\n    if (location.beforeElement)\r\n        this.treeAdapter.insertTextBefore(location.parent, chars, location.beforeElement);\r\n    else\r\n        this.treeAdapter.insertText(location.parent, chars);\r\n};\r\n\r\n//Special elements\r\nParser.prototype._isSpecialElement = function (element) {\r\n    var tn = this.treeAdapter.getTagName(element),\r\n        ns = this.treeAdapter.getNamespaceURI(element);\r\n\r\n    return HTML.SPECIAL_ELEMENTS[ns][tn];\r\n};\r\n\r\n//Adoption agency algorithm\r\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/tree-construction.html#adoptionAgency)\r\n//------------------------------------------------------------------\r\n\r\n//Steps 5-8 of the algorithm\r\nfunction aaObtainFormattingElementEntry(p, token) {\r\n    var formattingElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(token.tagName);\r\n\r\n    if (formattingElementEntry) {\r\n        if (!p.openElements.contains(formattingElementEntry.element)) {\r\n            p.activeFormattingElements.removeEntry(formattingElementEntry);\r\n            formattingElementEntry = null;\r\n        }\r\n\r\n        else if (!p.openElements.hasInScope(token.tagName))\r\n            formattingElementEntry = null;\r\n    }\r\n\r\n    else\r\n        genericEndTagInBody(p, token);\r\n\r\n    return formattingElementEntry;\r\n}\r\n\r\n//Steps 9 and 10 of the algorithm\r\nfunction aaObtainFurthestBlock(p, formattingElementEntry) {\r\n    var furthestBlock = null;\r\n\r\n    for (var i = p.openElements.stackTop; i >= 0; i--) {\r\n        var element = p.openElements.items[i];\r\n\r\n        if (element === formattingElementEntry.element)\r\n            break;\r\n\r\n        if (p._isSpecialElement(element))\r\n            furthestBlock = element;\r\n    }\r\n\r\n    if (!furthestBlock) {\r\n        p.openElements.popUntilElementPopped(formattingElementEntry.element);\r\n        p.activeFormattingElements.removeEntry(formattingElementEntry);\r\n    }\r\n\r\n    return furthestBlock;\r\n}\r\n\r\n//Step 13 of the algorithm\r\nfunction aaInnerLoop(p, furthestBlock, formattingElement) {\r\n    var lastElement = furthestBlock,\r\n        nextElement = p.openElements.getCommonAncestor(furthestBlock);\r\n\r\n    for (var i = 0, element = nextElement; element !== formattingElement; i++, element = nextElement) {\r\n        //NOTE: store next element for the next loop iteration (it may be deleted from the stack by step 9.5)\r\n        nextElement = p.openElements.getCommonAncestor(element);\r\n\r\n        var elementEntry = p.activeFormattingElements.getElementEntry(element),\r\n            counterOverflow = elementEntry && i >= AA_INNER_LOOP_ITER,\r\n            shouldRemoveFromOpenElements = !elementEntry || counterOverflow;\r\n\r\n        if (shouldRemoveFromOpenElements) {\r\n            if (counterOverflow)\r\n                p.activeFormattingElements.removeEntry(elementEntry);\r\n\r\n            p.openElements.remove(element);\r\n        }\r\n\r\n        else {\r\n            element = aaRecreateElementFromEntry(p, elementEntry);\r\n\r\n            if (lastElement === furthestBlock)\r\n                p.activeFormattingElements.bookmark = elementEntry;\r\n\r\n            p.treeAdapter.detachNode(lastElement);\r\n            p.treeAdapter.appendChild(element, lastElement);\r\n            lastElement = element;\r\n        }\r\n    }\r\n\r\n    return lastElement;\r\n}\r\n\r\n//Step 13.7 of the algorithm\r\nfunction aaRecreateElementFromEntry(p, elementEntry) {\r\n    var ns = p.treeAdapter.getNamespaceURI(elementEntry.element),\r\n        newElement = p.treeAdapter.createElement(elementEntry.token.tagName, ns, elementEntry.token.attrs);\r\n\r\n    p.openElements.replace(elementEntry.element, newElement);\r\n    elementEntry.element = newElement;\r\n\r\n    return newElement;\r\n}\r\n\r\n//Step 14 of the algorithm\r\nfunction aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement) {\r\n    if (p._isElementCausesFosterParenting(commonAncestor))\r\n        p._fosterParentElement(lastElement);\r\n\r\n    else {\r\n        var tn = p.treeAdapter.getTagName(commonAncestor),\r\n            ns = p.treeAdapter.getNamespaceURI(commonAncestor);\r\n\r\n        if (tn === $.TEMPLATE && ns === NS.HTML)\r\n            commonAncestor = p.treeAdapter.getTemplateContent(commonAncestor);\r\n\r\n        p.treeAdapter.appendChild(commonAncestor, lastElement);\r\n    }\r\n}\r\n\r\n//Steps 15-19 of the algorithm\r\nfunction aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry) {\r\n    var ns = p.treeAdapter.getNamespaceURI(formattingElementEntry.element),\r\n        token = formattingElementEntry.token,\r\n        newElement = p.treeAdapter.createElement(token.tagName, ns, token.attrs);\r\n\r\n    p._adoptNodes(furthestBlock, newElement);\r\n    p.treeAdapter.appendChild(furthestBlock, newElement);\r\n\r\n    p.activeFormattingElements.insertElementAfterBookmark(newElement, formattingElementEntry.token);\r\n    p.activeFormattingElements.removeEntry(formattingElementEntry);\r\n\r\n    p.openElements.remove(formattingElementEntry.element);\r\n    p.openElements.insertAfter(furthestBlock, newElement);\r\n}\r\n\r\n//Algorithm entry point\r\nfunction callAdoptionAgency(p, token) {\r\n    var formattingElementEntry;\r\n\r\n    for (var i = 0; i < AA_OUTER_LOOP_ITER; i++) {\r\n        formattingElementEntry = aaObtainFormattingElementEntry(p, token, formattingElementEntry);\r\n\r\n        if (!formattingElementEntry)\r\n            break;\r\n\r\n        var furthestBlock = aaObtainFurthestBlock(p, formattingElementEntry);\r\n\r\n        if (!furthestBlock)\r\n            break;\r\n\r\n        p.activeFormattingElements.bookmark = formattingElementEntry;\r\n\r\n        var lastElement = aaInnerLoop(p, furthestBlock, formattingElementEntry.element),\r\n            commonAncestor = p.openElements.getCommonAncestor(formattingElementEntry.element);\r\n\r\n        p.treeAdapter.detachNode(lastElement);\r\n        aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement);\r\n        aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry);\r\n    }\r\n}\r\n\r\n\r\n//Generic token handlers\r\n//------------------------------------------------------------------\r\nfunction ignoreToken() {\r\n    //NOTE: do nothing =)\r\n}\r\n\r\nfunction appendComment(p, token) {\r\n    p._appendCommentNode(token, p.openElements.currentTmplContent || p.openElements.current);\r\n}\r\n\r\nfunction appendCommentToRootHtmlElement(p, token) {\r\n    p._appendCommentNode(token, p.openElements.items[0]);\r\n}\r\n\r\nfunction appendCommentToDocument(p, token) {\r\n    p._appendCommentNode(token, p.document);\r\n}\r\n\r\nfunction insertCharacters(p, token) {\r\n    p._insertCharacters(token);\r\n}\r\n\r\nfunction stopParsing(p) {\r\n    p.stopped = true;\r\n}\r\n\r\n//12.2.5.4.1 The \"initial\" insertion mode\r\n//------------------------------------------------------------------\r\nfunction doctypeInInitialMode(p, token) {\r\n    p._setDocumentType(token);\r\n\r\n    if (token.forceQuirks || doctype.isQuirks(token.name, token.publicId, token.systemId))\r\n        p.treeAdapter.setQuirksMode(p.document);\r\n\r\n    p.insertionMode = BEFORE_HTML_MODE;\r\n}\r\n\r\nfunction tokenInInitialMode(p, token) {\r\n    p.treeAdapter.setQuirksMode(p.document);\r\n    p.insertionMode = BEFORE_HTML_MODE;\r\n    p._processToken(token);\r\n}\r\n\r\n\r\n//12.2.5.4.2 The \"before html\" insertion mode\r\n//------------------------------------------------------------------\r\nfunction startTagBeforeHtml(p, token) {\r\n    if (token.tagName === $.HTML) {\r\n        p._insertElement(token, NS.HTML);\r\n        p.insertionMode = BEFORE_HEAD_MODE;\r\n    }\r\n\r\n    else\r\n        tokenBeforeHtml(p, token);\r\n}\r\n\r\nfunction endTagBeforeHtml(p, token) {\r\n    var tn = token.tagName;\r\n\r\n    if (tn === $.HTML || tn === $.HEAD || tn === $.BODY || tn === $.BR)\r\n        tokenBeforeHtml(p, token);\r\n}\r\n\r\nfunction tokenBeforeHtml(p, token) {\r\n    p._insertFakeRootElement();\r\n    p.insertionMode = BEFORE_HEAD_MODE;\r\n    p._processToken(token);\r\n}\r\n\r\n\r\n//12.2.5.4.3 The \"before head\" insertion mode\r\n//------------------------------------------------------------------\r\nfunction startTagBeforeHead(p, token) {\r\n    var tn = token.tagName;\r\n\r\n    if (tn === $.HTML)\r\n        startTagInBody(p, token);\r\n\r\n    else if (tn === $.HEAD) {\r\n        p._insertElement(token, NS.HTML);\r\n        p.headElement = p.openElements.current;\r\n        p.insertionMode = IN_HEAD_MODE;\r\n    }\r\n\r\n    else\r\n        tokenBeforeHead(p, token);\r\n}\r\n\r\nfunction endTagBeforeHead(p, token) {\r\n    var tn = token.tagName;\r\n\r\n    if (tn === $.HEAD || tn === $.BODY || tn === $.HTML || tn === $.BR)\r\n        tokenBeforeHead(p, token);\r\n}\r\n\r\nfunction tokenBeforeHead(p, token) {\r\n    p._insertFakeElement($.HEAD);\r\n    p.headElement = p.openElements.current;\r\n    p.insertionMode = IN_HEAD_MODE;\r\n    p._processToken(token);\r\n}\r\n\r\n\r\n//12.2.5.4.4 The \"in head\" insertion mode\r\n//------------------------------------------------------------------\r\nfunction startTagInHead(p, token) {\r\n    var tn = token.tagName;\r\n\r\n    if (tn === $.HTML)\r\n        startTagInBody(p, token);\r\n\r\n    else if (tn === $.BASE || tn === $.BASEFONT || tn === $.BGSOUND || tn === $.LINK || tn === $.META)\r\n        p._appendElement(token, NS.HTML);\r\n\r\n    else if (tn === $.TITLE)\r\n        p._switchToTextParsing(token, Tokenizer.MODE.RCDATA);\r\n\r\n    //NOTE: here we assume that we always act as an interactive user agent with enabled scripting, so we parse\r\n    //<noscript> as a rawtext.\r\n    else if (tn === $.NOSCRIPT || tn === $.NOFRAMES || tn === $.STYLE)\r\n        p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\r\n\r\n    else if (tn === $.SCRIPT)\r\n        p._switchToTextParsing(token, Tokenizer.MODE.SCRIPT_DATA);\r\n\r\n    else if (tn === $.TEMPLATE) {\r\n        p._insertTemplate(token, NS.HTML);\r\n        p.activeFormattingElements.insertMarker();\r\n        p.framesetOk = false;\r\n        p.insertionMode = IN_TEMPLATE_MODE;\r\n        p._pushTmplInsertionMode(IN_TEMPLATE_MODE);\r\n    }\r\n\r\n    else if (tn !== $.HEAD)\r\n        tokenInHead(p, token);\r\n}\r\n\r\nfunction endTagInHead(p, token) {\r\n    var tn = token.tagName;\r\n\r\n    if (tn === $.HEAD) {\r\n        p.openElements.pop();\r\n        p.insertionMode = AFTER_HEAD_MODE;\r\n    }\r\n\r\n    else if (tn === $.BODY || tn === $.BR || tn === $.HTML)\r\n        tokenInHead(p, token);\r\n\r\n    else if (tn === $.TEMPLATE && p.openElements.tmplCount > 0) {\r\n        p.openElements.generateImpliedEndTags();\r\n        p.openElements.popUntilTagNamePopped($.TEMPLATE);\r\n        p.activeFormattingElements.clearToLastMarker();\r\n        p._popTmplInsertionMode();\r\n        p._resetInsertionMode();\r\n    }\r\n}\r\n\r\nfunction tokenInHead(p, token) {\r\n    p.openElements.pop();\r\n    p.insertionMode = AFTER_HEAD_MODE;\r\n    p._processToken(token);\r\n}\r\n\r\n\r\n//12.2.5.4.6 The \"after head\" insertion mode\r\n//------------------------------------------------------------------\r\nfunction startTagAfterHead(p, token) {\r\n    var tn = token.tagName;\r\n\r\n    if (tn === $.HTML)\r\n        startTagInBody(p, token);\r\n\r\n    else if (tn === $.BODY) {\r\n        p._insertElement(token, NS.HTML);\r\n        p.framesetOk = false;\r\n        p.insertionMode = IN_BODY_MODE;\r\n    }\r\n\r\n    else if (tn === $.FRAMESET) {\r\n        p._insertElement(token, NS.HTML);\r\n        p.insertionMode = IN_FRAMESET_MODE;\r\n    }\r\n\r\n    else if (tn === $.BASE || tn === $.BASEFONT || tn === $.BGSOUND || tn === $.LINK || tn === $.META ||\r\n             tn === $.NOFRAMES || tn === $.SCRIPT || tn === $.STYLE || tn === $.TEMPLATE || tn === $.TITLE) {\r\n        p.openElements.push(p.headElement);\r\n        startTagInHead(p, token);\r\n        p.openElements.remove(p.headElement);\r\n    }\r\n\r\n    else if (tn !== $.HEAD)\r\n        tokenAfterHead(p, token);\r\n}\r\n\r\nfunction endTagAfterHead(p, token) {\r\n    var tn = token.tagName;\r\n\r\n    if (tn === $.BODY || tn === $.HTML || tn === $.BR)\r\n        tokenAfterHead(p, token);\r\n\r\n    else if (tn === $.TEMPLATE)\r\n        endTagInHead(p, token);\r\n}\r\n\r\nfunction tokenAfterHead(p, token) {\r\n    p._insertFakeElement($.BODY);\r\n    p.insertionMode = IN_BODY_MODE;\r\n    p._processToken(token);\r\n}\r\n\r\n\r\n//12.2.5.4.7 The \"in body\" insertion mode\r\n//------------------------------------------------------------------\r\nfunction whitespaceCharacterInBody(p, token) {\r\n    p._reconstructActiveFormattingElements();\r\n    p._insertCharacters(token);\r\n}\r\n\r\nfunction characterInBody(p, token) {\r\n    p._reconstructActiveFormattingElements();\r\n    p._insertCharacters(token);\r\n    p.framesetOk = false;\r\n}\r\n\r\nfunction htmlStartTagInBody(p, token) {\r\n    if (p.openElements.tmplCount === 0)\r\n        p.treeAdapter.adoptAttributes(p.openElements.items[0], token.attrs);\r\n}\r\n\r\nfunction bodyStartTagInBody(p, token) {\r\n    var bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\r\n\r\n    if (bodyElement && p.openElements.tmplCount === 0) {\r\n        p.framesetOk = false;\r\n        p.treeAdapter.adoptAttributes(bodyElement, token.attrs);\r\n    }\r\n}\r\n\r\nfunction framesetStartTagInBody(p, token) {\r\n    var bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\r\n\r\n    if (p.framesetOk && bodyElement) {\r\n        p.treeAdapter.detachNode(bodyElement);\r\n        p.openElements.popAllUpToHtmlElement();\r\n        p._insertElement(token, NS.HTML);\r\n        p.insertionMode = IN_FRAMESET_MODE;\r\n    }\r\n}\r\n\r\nfunction addressStartTagInBody(p, token) {\r\n    if (p.openElements.hasInButtonScope($.P))\r\n        p._closePElement();\r\n\r\n    p._insertElement(token, NS.HTML);\r\n}\r\n\r\nfunction numberedHeaderStartTagInBody(p, token) {\r\n    if (p.openElements.hasInButtonScope($.P))\r\n        p._closePElement();\r\n\r\n    var tn = p.openElements.currentTagName;\r\n\r\n    if (tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6)\r\n        p.openElements.pop();\r\n\r\n    p._insertElement(token, NS.HTML);\r\n}\r\n\r\nfunction preStartTagInBody(p, token) {\r\n    if (p.openElements.hasInButtonScope($.P))\r\n        p._closePElement();\r\n\r\n    p._insertElement(token, NS.HTML);\r\n    //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\r\n    //on to the next one. (Newlines at the start of pre blocks are ignored as an authoring convenience.)\r\n    p.skipNextNewLine = true;\r\n    p.framesetOk = false;\r\n}\r\n\r\nfunction formStartTagInBody(p, token) {\r\n    var inTemplate = p.openElements.tmplCount > 0;\r\n\r\n    if (!p.formElement || inTemplate) {\r\n        if (p.openElements.hasInButtonScope($.P))\r\n            p._closePElement();\r\n\r\n        p._insertElement(token, NS.HTML);\r\n\r\n        if (!inTemplate)\r\n            p.formElement = p.openElements.current;\r\n    }\r\n}\r\n\r\nfunction listItemStartTagInBody(p, token) {\r\n    p.framesetOk = false;\r\n\r\n    var tn = token.tagName;\r\n\r\n    for (var i = p.openElements.stackTop; i >= 0; i--) {\r\n        var element = p.openElements.items[i],\r\n            elementTn = p.treeAdapter.getTagName(element),\r\n            closeTn = null;\r\n\r\n        if (tn === $.LI && elementTn === $.LI)\r\n            closeTn = $.LI;\r\n\r\n        else if ((tn === $.DD || tn === $.DT) && (elementTn === $.DD || elementTn === $.DT))\r\n            closeTn = elementTn;\r\n\r\n        if (closeTn) {\r\n            p.openElements.generateImpliedEndTagsWithExclusion(closeTn);\r\n            p.openElements.popUntilTagNamePopped(closeTn);\r\n            break;\r\n        }\r\n\r\n        if (elementTn !== $.ADDRESS && elementTn !== $.DIV && elementTn !== $.P && p._isSpecialElement(element))\r\n            break;\r\n    }\r\n\r\n    if (p.openElements.hasInButtonScope($.P))\r\n        p._closePElement();\r\n\r\n    p._insertElement(token, NS.HTML);\r\n}\r\n\r\nfunction plaintextStartTagInBody(p, token) {\r\n    if (p.openElements.hasInButtonScope($.P))\r\n        p._closePElement();\r\n\r\n    p._insertElement(token, NS.HTML);\r\n    p.tokenizer.state = Tokenizer.MODE.PLAINTEXT;\r\n}\r\n\r\nfunction buttonStartTagInBody(p, token) {\r\n    if (p.openElements.hasInScope($.BUTTON)) {\r\n        p.openElements.generateImpliedEndTags();\r\n        p.openElements.popUntilTagNamePopped($.BUTTON);\r\n    }\r\n\r\n    p._reconstructActiveFormattingElements();\r\n    p._insertElement(token, NS.HTML);\r\n    p.framesetOk = false;\r\n}\r\n\r\nfunction aStartTagInBody(p, token) {\r\n    var activeElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName($.A);\r\n\r\n    if (activeElementEntry) {\r\n        callAdoptionAgency(p, token);\r\n        p.openElements.remove(activeElementEntry.element);\r\n        p.activeFormattingElements.removeEntry(activeElementEntry);\r\n    }\r\n\r\n    p._reconstructActiveFormattingElements();\r\n    p._insertElement(token, NS.HTML);\r\n    p.activeFormattingElements.pushElement(p.openElements.current, token);\r\n}\r\n\r\nfunction bStartTagInBody(p, token) {\r\n    p._reconstructActiveFormattingElements();\r\n    p._insertElement(token, NS.HTML);\r\n    p.activeFormattingElements.pushElement(p.openElements.current, token);\r\n}\r\n\r\nfunction nobrStartTagInBody(p, token) {\r\n    p._reconstructActiveFormattingElements();\r\n\r\n    if (p.openElements.hasInScope($.NOBR)) {\r\n        callAdoptionAgency(p, token);\r\n        p._reconstructActiveFormattingElements();\r\n    }\r\n\r\n    p._insertElement(token, NS.HTML);\r\n    p.activeFormattingElements.pushElement(p.openElements.current, token);\r\n}\r\n\r\nfunction appletStartTagInBody(p, token) {\r\n    p._reconstructActiveFormattingElements();\r\n    p._insertElement(token, NS.HTML);\r\n    p.activeFormattingElements.insertMarker();\r\n    p.framesetOk = false;\r\n}\r\n\r\nfunction tableStartTagInBody(p, token) {\r\n    if (!p.treeAdapter.isQuirksMode(p.document) && p.openElements.hasInButtonScope($.P))\r\n        p._closePElement();\r\n\r\n    p._insertElement(token, NS.HTML);\r\n    p.framesetOk = false;\r\n    p.insertionMode = IN_TABLE_MODE;\r\n}\r\n\r\nfunction areaStartTagInBody(p, token) {\r\n    p._reconstructActiveFormattingElements();\r\n    p._appendElement(token, NS.HTML);\r\n    p.framesetOk = false;\r\n}\r\n\r\nfunction inputStartTagInBody(p, token) {\r\n    p._reconstructActiveFormattingElements();\r\n    p._appendElement(token, NS.HTML);\r\n\r\n    var inputType = Tokenizer.getTokenAttr(token, ATTRS.TYPE);\r\n\r\n    if (!inputType || inputType.toLowerCase() !== HIDDEN_INPUT_TYPE)\r\n        p.framesetOk = false;\r\n\r\n}\r\n\r\nfunction paramStartTagInBody(p, token) {\r\n    p._appendElement(token, NS.HTML);\r\n}\r\n\r\nfunction hrStartTagInBody(p, token) {\r\n    if (p.openElements.hasInButtonScope($.P))\r\n        p._closePElement();\r\n\r\n    if (p.openElements.currentTagName === $.MENUITEM)\r\n        p.openElements.pop();\r\n\r\n    p._appendElement(token, NS.HTML);\r\n    p.framesetOk = false;\r\n}\r\n\r\nfunction imageStartTagInBody(p, token) {\r\n    token.tagName = $.IMG;\r\n    areaStartTagInBody(p, token);\r\n}\r\n\r\nfunction textareaStartTagInBody(p, token) {\r\n    p._insertElement(token, NS.HTML);\r\n    //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\r\n    //on to the next one. (Newlines at the start of textarea elements are ignored as an authoring convenience.)\r\n    p.skipNextNewLine = true;\r\n    p.tokenizer.state = Tokenizer.MODE.RCDATA;\r\n    p.originalInsertionMode = p.insertionMode;\r\n    p.framesetOk = false;\r\n    p.insertionMode = TEXT_MODE;\r\n}\r\n\r\nfunction xmpStartTagInBody(p, token) {\r\n    if (p.openElements.hasInButtonScope($.P))\r\n        p._closePElement();\r\n\r\n    p._reconstructActiveFormattingElements();\r\n    p.framesetOk = false;\r\n    p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\r\n}\r\n\r\nfunction iframeStartTagInBody(p, token) {\r\n    p.framesetOk = false;\r\n    p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\r\n}\r\n\r\n//NOTE: here we assume that we always act as an user agent with enabled plugins, so we parse\r\n//<noembed> as a rawtext.\r\nfunction noembedStartTagInBody(p, token) {\r\n    p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\r\n}\r\n\r\nfunction selectStartTagInBody(p, token) {\r\n    p._reconstructActiveFormattingElements();\r\n    p._insertElement(token, NS.HTML);\r\n    p.framesetOk = false;\r\n\r\n    if (p.insertionMode === IN_TABLE_MODE ||\r\n        p.insertionMode === IN_CAPTION_MODE ||\r\n        p.insertionMode === IN_TABLE_BODY_MODE ||\r\n        p.insertionMode === IN_ROW_MODE ||\r\n        p.insertionMode === IN_CELL_MODE)\r\n\r\n        p.insertionMode = IN_SELECT_IN_TABLE_MODE;\r\n\r\n    else\r\n        p.insertionMode = IN_SELECT_MODE;\r\n}\r\n\r\nfunction optgroupStartTagInBody(p, token) {\r\n    if (p.openElements.currentTagName === $.OPTION)\r\n        p.openElements.pop();\r\n\r\n    p._reconstructActiveFormattingElements();\r\n    p._insertElement(token, NS.HTML);\r\n}\r\n\r\nfunction rbStartTagInBody(p, token) {\r\n    if (p.openElements.hasInScope($.RUBY))\r\n        p.openElements.generateImpliedEndTags();\r\n\r\n    p._insertElement(token, NS.HTML);\r\n}\r\n\r\nfunction rtStartTagInBody(p, token) {\r\n    if (p.openElements.hasInScope($.RUBY))\r\n        p.openElements.generateImpliedEndTagsWithExclusion($.RTC);\r\n\r\n    p._insertElement(token, NS.HTML);\r\n}\r\n\r\nfunction menuitemStartTagInBody(p, token) {\r\n    if (p.openElements.currentTagName === $.MENUITEM)\r\n        p.openElements.pop();\r\n\r\n    // TODO needs clarification, see https://github.com/whatwg/html/pull/907/files#r73505877\r\n    p._reconstructActiveFormattingElements();\r\n\r\n    p._insertElement(token, NS.HTML);\r\n}\r\n\r\nfunction menuStartTagInBody(p, token) {\r\n    if (p.openElements.hasInButtonScope($.P))\r\n        p._closePElement();\r\n\r\n    if (p.openElements.currentTagName === $.MENUITEM)\r\n        p.openElements.pop();\r\n\r\n    p._insertElement(token, NS.HTML);\r\n}\r\n\r\nfunction mathStartTagInBody(p, token) {\r\n    p._reconstructActiveFormattingElements();\r\n\r\n    foreignContent.adjustTokenMathMLAttrs(token);\r\n    foreignContent.adjustTokenXMLAttrs(token);\r\n\r\n    if (token.selfClosing)\r\n        p._appendElement(token, NS.MATHML);\r\n    else\r\n        p._insertElement(token, NS.MATHML);\r\n}\r\n\r\nfunction svgStartTagInBody(p, token) {\r\n    p._reconstructActiveFormattingElements();\r\n\r\n    foreignContent.adjustTokenSVGAttrs(token);\r\n    foreignContent.adjustTokenXMLAttrs(token);\r\n\r\n    if (token.selfClosing)\r\n        p._appendElement(token, NS.SVG);\r\n    else\r\n        p._insertElement(token, NS.SVG);\r\n}\r\n\r\nfunction genericStartTagInBody(p, token) {\r\n    p._reconstructActiveFormattingElements();\r\n    p._insertElement(token, NS.HTML);\r\n}\r\n\r\n//OPTIMIZATION: Integer comparisons are low-cost, so we can use very fast tag name length filters here.\r\n//It's faster than using dictionary.\r\nfunction startTagInBody(p, token) {\r\n    var tn = token.tagName;\r\n\r\n    switch (tn.length) {\r\n        case 1:\r\n            if (tn === $.I || tn === $.S || tn === $.B || tn === $.U)\r\n                bStartTagInBody(p, token);\r\n\r\n            else if (tn === $.P)\r\n                addressStartTagInBody(p, token);\r\n\r\n            else if (tn === $.A)\r\n                aStartTagInBody(p, token);\r\n\r\n            else\r\n                genericStartTagInBody(p, token);\r\n\r\n            break;\r\n\r\n        case 2:\r\n            if (tn === $.DL || tn === $.OL || tn === $.UL)\r\n                addressStartTagInBody(p, token);\r\n\r\n            else if (tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6)\r\n                numberedHeaderStartTagInBody(p, token);\r\n\r\n            else if (tn === $.LI || tn === $.DD || tn === $.DT)\r\n                listItemStartTagInBody(p, token);\r\n\r\n            else if (tn === $.EM || tn === $.TT)\r\n                bStartTagInBody(p, token);\r\n\r\n            else if (tn === $.BR)\r\n                areaStartTagInBody(p, token);\r\n\r\n            else if (tn === $.HR)\r\n                hrStartTagInBody(p, token);\r\n\r\n            else if (tn === $.RB)\r\n                rbStartTagInBody(p, token);\r\n\r\n            else if (tn === $.RT || tn === $.RP)\r\n                rtStartTagInBody(p, token);\r\n\r\n            else if (tn !== $.TH && tn !== $.TD && tn !== $.TR)\r\n                genericStartTagInBody(p, token);\r\n\r\n            break;\r\n\r\n        case 3:\r\n            if (tn === $.DIV || tn === $.DIR || tn === $.NAV)\r\n                addressStartTagInBody(p, token);\r\n\r\n            else if (tn === $.PRE)\r\n                preStartTagInBody(p, token);\r\n\r\n            else if (tn === $.BIG)\r\n                bStartTagInBody(p, token);\r\n\r\n            else if (tn === $.IMG || tn === $.WBR)\r\n                areaStartTagInBody(p, token);\r\n\r\n            else if (tn === $.XMP)\r\n                xmpStartTagInBody(p, token);\r\n\r\n            else if (tn === $.SVG)\r\n                svgStartTagInBody(p, token);\r\n\r\n            else if (tn === $.RTC)\r\n                rbStartTagInBody(p, token);\r\n\r\n            else if (tn !== $.COL)\r\n                genericStartTagInBody(p, token);\r\n\r\n            break;\r\n\r\n        case 4:\r\n            if (tn === $.HTML)\r\n                htmlStartTagInBody(p, token);\r\n\r\n            else if (tn === $.BASE || tn === $.LINK || tn === $.META)\r\n                startTagInHead(p, token);\r\n\r\n            else if (tn === $.BODY)\r\n                bodyStartTagInBody(p, token);\r\n\r\n            else if (tn === $.MAIN)\r\n                addressStartTagInBody(p, token);\r\n\r\n            else if (tn === $.FORM)\r\n                formStartTagInBody(p, token);\r\n\r\n            else if (tn === $.CODE || tn === $.FONT)\r\n                bStartTagInBody(p, token);\r\n\r\n            else if (tn === $.NOBR)\r\n                nobrStartTagInBody(p, token);\r\n\r\n            else if (tn === $.AREA)\r\n                areaStartTagInBody(p, token);\r\n\r\n            else if (tn === $.MATH)\r\n                mathStartTagInBody(p, token);\r\n\r\n            else if (tn === $.MENU)\r\n                menuStartTagInBody(p, token);\r\n\r\n            else if (tn !== $.HEAD)\r\n                genericStartTagInBody(p, token);\r\n\r\n            break;\r\n\r\n        case 5:\r\n            if (tn === $.STYLE || tn === $.TITLE)\r\n                startTagInHead(p, token);\r\n\r\n            else if (tn === $.ASIDE)\r\n                addressStartTagInBody(p, token);\r\n\r\n            else if (tn === $.SMALL)\r\n                bStartTagInBody(p, token);\r\n\r\n            else if (tn === $.TABLE)\r\n                tableStartTagInBody(p, token);\r\n\r\n            else if (tn === $.EMBED)\r\n                areaStartTagInBody(p, token);\r\n\r\n            else if (tn === $.INPUT)\r\n                inputStartTagInBody(p, token);\r\n\r\n            else if (tn === $.PARAM || tn === $.TRACK)\r\n                paramStartTagInBody(p, token);\r\n\r\n            else if (tn === $.IMAGE)\r\n                imageStartTagInBody(p, token);\r\n\r\n            else if (tn !== $.FRAME && tn !== $.TBODY && tn !== $.TFOOT && tn !== $.THEAD)\r\n                genericStartTagInBody(p, token);\r\n\r\n            break;\r\n\r\n        case 6:\r\n            if (tn === $.SCRIPT)\r\n                startTagInHead(p, token);\r\n\r\n            else if (tn === $.CENTER || tn === $.FIGURE || tn === $.FOOTER || tn === $.HEADER || tn === $.HGROUP)\r\n                addressStartTagInBody(p, token);\r\n\r\n            else if (tn === $.BUTTON)\r\n                buttonStartTagInBody(p, token);\r\n\r\n            else if (tn === $.STRIKE || tn === $.STRONG)\r\n                bStartTagInBody(p, token);\r\n\r\n            else if (tn === $.APPLET || tn === $.OBJECT)\r\n                appletStartTagInBody(p, token);\r\n\r\n            else if (tn === $.KEYGEN)\r\n                areaStartTagInBody(p, token);\r\n\r\n            else if (tn === $.SOURCE)\r\n                paramStartTagInBody(p, token);\r\n\r\n            else if (tn === $.IFRAME)\r\n                iframeStartTagInBody(p, token);\r\n\r\n            else if (tn === $.SELECT)\r\n                selectStartTagInBody(p, token);\r\n\r\n            else if (tn === $.OPTION)\r\n                optgroupStartTagInBody(p, token);\r\n\r\n            else\r\n                genericStartTagInBody(p, token);\r\n\r\n            break;\r\n\r\n        case 7:\r\n            if (tn === $.BGSOUND)\r\n                startTagInHead(p, token);\r\n\r\n            else if (tn === $.DETAILS || tn === $.ADDRESS || tn === $.ARTICLE || tn === $.SECTION || tn === $.SUMMARY)\r\n                addressStartTagInBody(p, token);\r\n\r\n            else if (tn === $.LISTING)\r\n                preStartTagInBody(p, token);\r\n\r\n            else if (tn === $.MARQUEE)\r\n                appletStartTagInBody(p, token);\r\n\r\n            else if (tn === $.NOEMBED)\r\n                noembedStartTagInBody(p, token);\r\n\r\n            else if (tn !== $.CAPTION)\r\n                genericStartTagInBody(p, token);\r\n\r\n            break;\r\n\r\n        case 8:\r\n            if (tn === $.BASEFONT)\r\n                startTagInHead(p, token);\r\n\r\n            else if (tn === $.MENUITEM)\r\n                menuitemStartTagInBody(p, token);\r\n\r\n            else if (tn === $.FRAMESET)\r\n                framesetStartTagInBody(p, token);\r\n\r\n            else if (tn === $.FIELDSET)\r\n                addressStartTagInBody(p, token);\r\n\r\n            else if (tn === $.TEXTAREA)\r\n                textareaStartTagInBody(p, token);\r\n\r\n            else if (tn === $.TEMPLATE)\r\n                startTagInHead(p, token);\r\n\r\n            else if (tn === $.NOSCRIPT)\r\n                noembedStartTagInBody(p, token);\r\n\r\n            else if (tn === $.OPTGROUP)\r\n                optgroupStartTagInBody(p, token);\r\n\r\n            else if (tn !== $.COLGROUP)\r\n                genericStartTagInBody(p, token);\r\n\r\n            break;\r\n\r\n        case 9:\r\n            if (tn === $.PLAINTEXT)\r\n                plaintextStartTagInBody(p, token);\r\n\r\n            else\r\n                genericStartTagInBody(p, token);\r\n\r\n            break;\r\n\r\n        case 10:\r\n            if (tn === $.BLOCKQUOTE || tn === $.FIGCAPTION)\r\n                addressStartTagInBody(p, token);\r\n\r\n            else\r\n                genericStartTagInBody(p, token);\r\n\r\n            break;\r\n\r\n        default:\r\n            genericStartTagInBody(p, token);\r\n    }\r\n}\r\n\r\nfunction bodyEndTagInBody(p) {\r\n    if (p.openElements.hasInScope($.BODY))\r\n        p.insertionMode = AFTER_BODY_MODE;\r\n}\r\n\r\nfunction htmlEndTagInBody(p, token) {\r\n    if (p.openElements.hasInScope($.BODY)) {\r\n        p.insertionMode = AFTER_BODY_MODE;\r\n        p._processToken(token);\r\n    }\r\n}\r\n\r\nfunction addressEndTagInBody(p, token) {\r\n    var tn = token.tagName;\r\n\r\n    if (p.openElements.hasInScope(tn)) {\r\n        p.openElements.generateImpliedEndTags();\r\n        p.openElements.popUntilTagNamePopped(tn);\r\n    }\r\n}\r\n\r\nfunction formEndTagInBody(p) {\r\n    var inTemplate = p.openElements.tmplCount > 0,\r\n        formElement = p.formElement;\r\n\r\n    if (!inTemplate)\r\n        p.formElement = null;\r\n\r\n    if ((formElement || inTemplate) && p.openElements.hasInScope($.FORM)) {\r\n        p.openElements.generateImpliedEndTags();\r\n\r\n        if (inTemplate)\r\n            p.openElements.popUntilTagNamePopped($.FORM);\r\n\r\n        else\r\n            p.openElements.remove(formElement);\r\n    }\r\n}\r\n\r\nfunction pEndTagInBody(p) {\r\n    if (!p.openElements.hasInButtonScope($.P))\r\n        p._insertFakeElement($.P);\r\n\r\n    p._closePElement();\r\n}\r\n\r\nfunction liEndTagInBody(p) {\r\n    if (p.openElements.hasInListItemScope($.LI)) {\r\n        p.openElements.generateImpliedEndTagsWithExclusion($.LI);\r\n        p.openElements.popUntilTagNamePopped($.LI);\r\n    }\r\n}\r\n\r\nfunction ddEndTagInBody(p, token) {\r\n    var tn = token.tagName;\r\n\r\n    if (p.openElements.hasInScope(tn)) {\r\n        p.openElements.generateImpliedEndTagsWithExclusion(tn);\r\n        p.openElements.popUntilTagNamePopped(tn);\r\n    }\r\n}\r\n\r\nfunction numberedHeaderEndTagInBody(p) {\r\n    if (p.openElements.hasNumberedHeaderInScope()) {\r\n        p.openElements.generateImpliedEndTags();\r\n        p.openElements.popUntilNumberedHeaderPopped();\r\n    }\r\n}\r\n\r\nfunction appletEndTagInBody(p, token) {\r\n    var tn = token.tagName;\r\n\r\n    if (p.openElements.hasInScope(tn)) {\r\n        p.openElements.generateImpliedEndTags();\r\n        p.openElements.popUntilTagNamePopped(tn);\r\n        p.activeFormattingElements.clearToLastMarker();\r\n    }\r\n}\r\n\r\nfunction brEndTagInBody(p) {\r\n    p._reconstructActiveFormattingElements();\r\n    p._insertFakeElement($.BR);\r\n    p.openElements.pop();\r\n    p.framesetOk = false;\r\n}\r\n\r\nfunction genericEndTagInBody(p, token) {\r\n    var tn = token.tagName;\r\n\r\n    for (var i = p.openElements.stackTop; i > 0; i--) {\r\n        var element = p.openElements.items[i];\r\n\r\n        if (p.treeAdapter.getTagName(element) === tn) {\r\n            p.openElements.generateImpliedEndTagsWithExclusion(tn);\r\n            p.openElements.popUntilElementPopped(element);\r\n            break;\r\n        }\r\n\r\n        if (p._isSpecialElement(element))\r\n            break;\r\n    }\r\n}\r\n\r\n//OPTIMIZATION: Integer comparisons are low-cost, so we can use very fast tag name length filters here.\r\n//It's faster than using dictionary.\r\nfunction endTagInBody(p, token) {\r\n    var tn = token.tagName;\r\n\r\n    switch (tn.length) {\r\n        case 1:\r\n            if (tn === $.A || tn === $.B || tn === $.I || tn === $.S || tn === $.U)\r\n                callAdoptionAgency(p, token);\r\n\r\n            else if (tn === $.P)\r\n                pEndTagInBody(p, token);\r\n\r\n            else\r\n                genericEndTagInBody(p, token);\r\n\r\n            break;\r\n\r\n        case 2:\r\n            if (tn === $.DL || tn === $.UL || tn === $.OL)\r\n                addressEndTagInBody(p, token);\r\n\r\n            else if (tn === $.LI)\r\n                liEndTagInBody(p, token);\r\n\r\n            else if (tn === $.DD || tn === $.DT)\r\n                ddEndTagInBody(p, token);\r\n\r\n            else if (tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6)\r\n                numberedHeaderEndTagInBody(p, token);\r\n\r\n            else if (tn === $.BR)\r\n                brEndTagInBody(p, token);\r\n\r\n            else if (tn === $.EM || tn === $.TT)\r\n                callAdoptionAgency(p, token);\r\n\r\n            else\r\n                genericEndTagInBody(p, token);\r\n\r\n            break;\r\n\r\n        case 3:\r\n            if (tn === $.BIG)\r\n                callAdoptionAgency(p, token);\r\n\r\n            else if (tn === $.DIR || tn === $.DIV || tn === $.NAV)\r\n                addressEndTagInBody(p, token);\r\n\r\n            else\r\n                genericEndTagInBody(p, token);\r\n\r\n            break;\r\n\r\n        case 4:\r\n            if (tn === $.BODY)\r\n                bodyEndTagInBody(p, token);\r\n\r\n            else if (tn === $.HTML)\r\n                htmlEndTagInBody(p, token);\r\n\r\n            else if (tn === $.FORM)\r\n                formEndTagInBody(p, token);\r\n\r\n            else if (tn === $.CODE || tn === $.FONT || tn === $.NOBR)\r\n                callAdoptionAgency(p, token);\r\n\r\n            else if (tn === $.MAIN || tn === $.MENU)\r\n                addressEndTagInBody(p, token);\r\n\r\n            else\r\n                genericEndTagInBody(p, token);\r\n\r\n            break;\r\n\r\n        case 5:\r\n            if (tn === $.ASIDE)\r\n                addressEndTagInBody(p, token);\r\n\r\n            else if (tn === $.SMALL)\r\n                callAdoptionAgency(p, token);\r\n\r\n            else\r\n                genericEndTagInBody(p, token);\r\n\r\n            break;\r\n\r\n        case 6:\r\n            if (tn === $.CENTER || tn === $.FIGURE || tn === $.FOOTER || tn === $.HEADER || tn === $.HGROUP)\r\n                addressEndTagInBody(p, token);\r\n\r\n            else if (tn === $.APPLET || tn === $.OBJECT)\r\n                appletEndTagInBody(p, token);\r\n\r\n            else if (tn === $.STRIKE || tn === $.STRONG)\r\n                callAdoptionAgency(p, token);\r\n\r\n            else\r\n                genericEndTagInBody(p, token);\r\n\r\n            break;\r\n\r\n        case 7:\r\n            if (tn === $.ADDRESS || tn === $.ARTICLE || tn === $.DETAILS || tn === $.SECTION || tn === $.SUMMARY)\r\n                addressEndTagInBody(p, token);\r\n\r\n            else if (tn === $.MARQUEE)\r\n                appletEndTagInBody(p, token);\r\n\r\n            else\r\n                genericEndTagInBody(p, token);\r\n\r\n            break;\r\n\r\n        case 8:\r\n            if (tn === $.FIELDSET)\r\n                addressEndTagInBody(p, token);\r\n\r\n            else if (tn === $.TEMPLATE)\r\n                endTagInHead(p, token);\r\n\r\n            else\r\n                genericEndTagInBody(p, token);\r\n\r\n            break;\r\n\r\n        case 10:\r\n            if (tn === $.BLOCKQUOTE || tn === $.FIGCAPTION)\r\n                addressEndTagInBody(p, token);\r\n\r\n            else\r\n                genericEndTagInBody(p, token);\r\n\r\n            break;\r\n\r\n        default :\r\n            genericEndTagInBody(p, token);\r\n    }\r\n}\r\n\r\nfunction eofInBody(p, token) {\r\n    if (p.tmplInsertionModeStackTop > -1)\r\n        eofInTemplate(p, token);\r\n\r\n    else\r\n        p.stopped = true;\r\n}\r\n\r\n//12.2.5.4.8 The \"text\" insertion mode\r\n//------------------------------------------------------------------\r\nfunction endTagInText(p, token) {\r\n    if (token.tagName === $.SCRIPT)\r\n        p.pendingScript = p.openElements.current;\r\n\r\n    p.openElements.pop();\r\n    p.insertionMode = p.originalInsertionMode;\r\n}\r\n\r\n\r\nfunction eofInText(p, token) {\r\n    p.openElements.pop();\r\n    p.insertionMode = p.originalInsertionMode;\r\n    p._processToken(token);\r\n}\r\n\r\n\r\n//12.2.5.4.9 The \"in table\" insertion mode\r\n//------------------------------------------------------------------\r\nfunction characterInTable(p, token) {\r\n    var curTn = p.openElements.currentTagName;\r\n\r\n    if (curTn === $.TABLE || curTn === $.TBODY || curTn === $.TFOOT || curTn === $.THEAD || curTn === $.TR) {\r\n        p.pendingCharacterTokens = [];\r\n        p.hasNonWhitespacePendingCharacterToken = false;\r\n        p.originalInsertionMode = p.insertionMode;\r\n        p.insertionMode = IN_TABLE_TEXT_MODE;\r\n        p._processToken(token);\r\n    }\r\n\r\n    else\r\n        tokenInTable(p, token);\r\n}\r\n\r\nfunction captionStartTagInTable(p, token) {\r\n    p.openElements.clearBackToTableContext();\r\n    p.activeFormattingElements.insertMarker();\r\n    p._insertElement(token, NS.HTML);\r\n    p.insertionMode = IN_CAPTION_MODE;\r\n}\r\n\r\nfunction colgroupStartTagInTable(p, token) {\r\n    p.openElements.clearBackToTableContext();\r\n    p._insertElement(token, NS.HTML);\r\n    p.insertionMode = IN_COLUMN_GROUP_MODE;\r\n}\r\n\r\nfunction colStartTagInTable(p, token) {\r\n    p.openElements.clearBackToTableContext();\r\n    p._insertFakeElement($.COLGROUP);\r\n    p.insertionMode = IN_COLUMN_GROUP_MODE;\r\n    p._processToken(token);\r\n}\r\n\r\nfunction tbodyStartTagInTable(p, token) {\r\n    p.openElements.clearBackToTableContext();\r\n    p._insertElement(token, NS.HTML);\r\n    p.insertionMode = IN_TABLE_BODY_MODE;\r\n}\r\n\r\nfunction tdStartTagInTable(p, token) {\r\n    p.openElements.clearBackToTableContext();\r\n    p._insertFakeElement($.TBODY);\r\n    p.insertionMode = IN_TABLE_BODY_MODE;\r\n    p._processToken(token);\r\n}\r\n\r\nfunction tableStartTagInTable(p, token) {\r\n    if (p.openElements.hasInTableScope($.TABLE)) {\r\n        p.openElements.popUntilTagNamePopped($.TABLE);\r\n        p._resetInsertionMode();\r\n        p._processToken(token);\r\n    }\r\n}\r\n\r\nfunction inputStartTagInTable(p, token) {\r\n    var inputType = Tokenizer.getTokenAttr(token, ATTRS.TYPE);\r\n\r\n    if (inputType && inputType.toLowerCase() === HIDDEN_INPUT_TYPE)\r\n        p._appendElement(token, NS.HTML);\r\n\r\n    else\r\n        tokenInTable(p, token);\r\n}\r\n\r\nfunction formStartTagInTable(p, token) {\r\n    if (!p.formElement && p.openElements.tmplCount === 0) {\r\n        p._insertElement(token, NS.HTML);\r\n        p.formElement = p.openElements.current;\r\n        p.openElements.pop();\r\n    }\r\n}\r\n\r\nfunction startTagInTable(p, token) {\r\n    var tn = token.tagName;\r\n\r\n    switch (tn.length) {\r\n        case 2:\r\n            if (tn === $.TD || tn === $.TH || tn === $.TR)\r\n                tdStartTagInTable(p, token);\r\n\r\n            else\r\n                tokenInTable(p, token);\r\n\r\n            break;\r\n\r\n        case 3:\r\n            if (tn === $.COL)\r\n                colStartTagInTable(p, token);\r\n\r\n            else\r\n                tokenInTable(p, token);\r\n\r\n            break;\r\n\r\n        case 4:\r\n            if (tn === $.FORM)\r\n                formStartTagInTable(p, token);\r\n\r\n            else\r\n                tokenInTable(p, token);\r\n\r\n            break;\r\n\r\n        case 5:\r\n            if (tn === $.TABLE)\r\n                tableStartTagInTable(p, token);\r\n\r\n            else if (tn === $.STYLE)\r\n                startTagInHead(p, token);\r\n\r\n            else if (tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD)\r\n                tbodyStartTagInTable(p, token);\r\n\r\n            else if (tn === $.INPUT)\r\n                inputStartTagInTable(p, token);\r\n\r\n            else\r\n                tokenInTable(p, token);\r\n\r\n            break;\r\n\r\n        case 6:\r\n            if (tn === $.SCRIPT)\r\n                startTagInHead(p, token);\r\n\r\n            else\r\n                tokenInTable(p, token);\r\n\r\n            break;\r\n\r\n        case 7:\r\n            if (tn === $.CAPTION)\r\n                captionStartTagInTable(p, token);\r\n\r\n            else\r\n                tokenInTable(p, token);\r\n\r\n            break;\r\n\r\n        case 8:\r\n            if (tn === $.COLGROUP)\r\n                colgroupStartTagInTable(p, token);\r\n\r\n            else if (tn === $.TEMPLATE)\r\n                startTagInHead(p, token);\r\n\r\n            else\r\n                tokenInTable(p, token);\r\n\r\n            break;\r\n\r\n        default:\r\n            tokenInTable(p, token);\r\n    }\r\n\r\n}\r\n\r\nfunction endTagInTable(p, token) {\r\n    var tn = token.tagName;\r\n\r\n    if (tn === $.TABLE) {\r\n        if (p.openElements.hasInTableScope($.TABLE)) {\r\n            p.openElements.popUntilTagNamePopped($.TABLE);\r\n            p._resetInsertionMode();\r\n        }\r\n    }\r\n\r\n    else if (tn === $.TEMPLATE)\r\n        endTagInHead(p, token);\r\n\r\n    else if (tn !== $.BODY && tn !== $.CAPTION && tn !== $.COL && tn !== $.COLGROUP && tn !== $.HTML &&\r\n             tn !== $.TBODY && tn !== $.TD && tn !== $.TFOOT && tn !== $.TH && tn !== $.THEAD && tn !== $.TR)\r\n        tokenInTable(p, token);\r\n}\r\n\r\nfunction tokenInTable(p, token) {\r\n    var savedFosterParentingState = p.fosterParentingEnabled;\r\n\r\n    p.fosterParentingEnabled = true;\r\n    p._processTokenInBodyMode(token);\r\n    p.fosterParentingEnabled = savedFosterParentingState;\r\n}\r\n\r\n\r\n//12.2.5.4.10 The \"in table text\" insertion mode\r\n//------------------------------------------------------------------\r\nfunction whitespaceCharacterInTableText(p, token) {\r\n    p.pendingCharacterTokens.push(token);\r\n}\r\n\r\nfunction characterInTableText(p, token) {\r\n    p.pendingCharacterTokens.push(token);\r\n    p.hasNonWhitespacePendingCharacterToken = true;\r\n}\r\n\r\nfunction tokenInTableText(p, token) {\r\n    var i = 0;\r\n\r\n    if (p.hasNonWhitespacePendingCharacterToken) {\r\n        for (; i < p.pendingCharacterTokens.length; i++)\r\n            tokenInTable(p, p.pendingCharacterTokens[i]);\r\n    }\r\n\r\n    else {\r\n        for (; i < p.pendingCharacterTokens.length; i++)\r\n            p._insertCharacters(p.pendingCharacterTokens[i]);\r\n    }\r\n\r\n    p.insertionMode = p.originalInsertionMode;\r\n    p._processToken(token);\r\n}\r\n\r\n\r\n//12.2.5.4.11 The \"in caption\" insertion mode\r\n//------------------------------------------------------------------\r\nfunction startTagInCaption(p, token) {\r\n    var tn = token.tagName;\r\n\r\n    if (tn === $.CAPTION || tn === $.COL || tn === $.COLGROUP || tn === $.TBODY ||\r\n        tn === $.TD || tn === $.TFOOT || tn === $.TH || tn === $.THEAD || tn === $.TR) {\r\n        if (p.openElements.hasInTableScope($.CAPTION)) {\r\n            p.openElements.generateImpliedEndTags();\r\n            p.openElements.popUntilTagNamePopped($.CAPTION);\r\n            p.activeFormattingElements.clearToLastMarker();\r\n            p.insertionMode = IN_TABLE_MODE;\r\n            p._processToken(token);\r\n        }\r\n    }\r\n\r\n    else\r\n        startTagInBody(p, token);\r\n}\r\n\r\nfunction endTagInCaption(p, token) {\r\n    var tn = token.tagName;\r\n\r\n    if (tn === $.CAPTION || tn === $.TABLE) {\r\n        if (p.openElements.hasInTableScope($.CAPTION)) {\r\n            p.openElements.generateImpliedEndTags();\r\n            p.openElements.popUntilTagNamePopped($.CAPTION);\r\n            p.activeFormattingElements.clearToLastMarker();\r\n            p.insertionMode = IN_TABLE_MODE;\r\n\r\n            if (tn === $.TABLE)\r\n                p._processToken(token);\r\n        }\r\n    }\r\n\r\n    else if (tn !== $.BODY && tn !== $.COL && tn !== $.COLGROUP && tn !== $.HTML && tn !== $.TBODY &&\r\n             tn !== $.TD && tn !== $.TFOOT && tn !== $.TH && tn !== $.THEAD && tn !== $.TR)\r\n        endTagInBody(p, token);\r\n}\r\n\r\n\r\n//12.2.5.4.12 The \"in column group\" insertion mode\r\n//------------------------------------------------------------------\r\nfunction startTagInColumnGroup(p, token) {\r\n    var tn = token.tagName;\r\n\r\n    if (tn === $.HTML)\r\n        startTagInBody(p, token);\r\n\r\n    else if (tn === $.COL)\r\n        p._appendElement(token, NS.HTML);\r\n\r\n    else if (tn === $.TEMPLATE)\r\n        startTagInHead(p, token);\r\n\r\n    else\r\n        tokenInColumnGroup(p, token);\r\n}\r\n\r\nfunction endTagInColumnGroup(p, token) {\r\n    var tn = token.tagName;\r\n\r\n    if (tn === $.COLGROUP) {\r\n        if (p.openElements.currentTagName === $.COLGROUP) {\r\n            p.openElements.pop();\r\n            p.insertionMode = IN_TABLE_MODE;\r\n        }\r\n    }\r\n\r\n    else if (tn === $.TEMPLATE)\r\n        endTagInHead(p, token);\r\n\r\n    else if (tn !== $.COL)\r\n        tokenInColumnGroup(p, token);\r\n}\r\n\r\nfunction tokenInColumnGroup(p, token) {\r\n    if (p.openElements.currentTagName === $.COLGROUP) {\r\n        p.openElements.pop();\r\n        p.insertionMode = IN_TABLE_MODE;\r\n        p._processToken(token);\r\n    }\r\n}\r\n\r\n//12.2.5.4.13 The \"in table body\" insertion mode\r\n//------------------------------------------------------------------\r\nfunction startTagInTableBody(p, token) {\r\n    var tn = token.tagName;\r\n\r\n    if (tn === $.TR) {\r\n        p.openElements.clearBackToTableBodyContext();\r\n        p._insertElement(token, NS.HTML);\r\n        p.insertionMode = IN_ROW_MODE;\r\n    }\r\n\r\n    else if (tn === $.TH || tn === $.TD) {\r\n        p.openElements.clearBackToTableBodyContext();\r\n        p._insertFakeElement($.TR);\r\n        p.insertionMode = IN_ROW_MODE;\r\n        p._processToken(token);\r\n    }\r\n\r\n    else if (tn === $.CAPTION || tn === $.COL || tn === $.COLGROUP ||\r\n             tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD) {\r\n\r\n        if (p.openElements.hasTableBodyContextInTableScope()) {\r\n            p.openElements.clearBackToTableBodyContext();\r\n            p.openElements.pop();\r\n            p.insertionMode = IN_TABLE_MODE;\r\n            p._processToken(token);\r\n        }\r\n    }\r\n\r\n    else\r\n        startTagInTable(p, token);\r\n}\r\n\r\nfunction endTagInTableBody(p, token) {\r\n    var tn = token.tagName;\r\n\r\n    if (tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD) {\r\n        if (p.openElements.hasInTableScope(tn)) {\r\n            p.openElements.clearBackToTableBodyContext();\r\n            p.openElements.pop();\r\n            p.insertionMode = IN_TABLE_MODE;\r\n        }\r\n    }\r\n\r\n    else if (tn === $.TABLE) {\r\n        if (p.openElements.hasTableBodyContextInTableScope()) {\r\n            p.openElements.clearBackToTableBodyContext();\r\n            p.openElements.pop();\r\n            p.insertionMode = IN_TABLE_MODE;\r\n            p._processToken(token);\r\n        }\r\n    }\r\n\r\n    else if (tn !== $.BODY && tn !== $.CAPTION && tn !== $.COL && tn !== $.COLGROUP ||\r\n             tn !== $.HTML && tn !== $.TD && tn !== $.TH && tn !== $.TR)\r\n        endTagInTable(p, token);\r\n}\r\n\r\n//12.2.5.4.14 The \"in row\" insertion mode\r\n//------------------------------------------------------------------\r\nfunction startTagInRow(p, token) {\r\n    var tn = token.tagName;\r\n\r\n    if (tn === $.TH || tn === $.TD) {\r\n        p.openElements.clearBackToTableRowContext();\r\n        p._insertElement(token, NS.HTML);\r\n        p.insertionMode = IN_CELL_MODE;\r\n        p.activeFormattingElements.insertMarker();\r\n    }\r\n\r\n    else if (tn === $.CAPTION || tn === $.COL || tn === $.COLGROUP || tn === $.TBODY ||\r\n             tn === $.TFOOT || tn === $.THEAD || tn === $.TR) {\r\n        if (p.openElements.hasInTableScope($.TR)) {\r\n            p.openElements.clearBackToTableRowContext();\r\n            p.openElements.pop();\r\n            p.insertionMode = IN_TABLE_BODY_MODE;\r\n            p._processToken(token);\r\n        }\r\n    }\r\n\r\n    else\r\n        startTagInTable(p, token);\r\n}\r\n\r\nfunction endTagInRow(p, token) {\r\n    var tn = token.tagName;\r\n\r\n    if (tn === $.TR) {\r\n        if (p.openElements.hasInTableScope($.TR)) {\r\n            p.openElements.clearBackToTableRowContext();\r\n            p.openElements.pop();\r\n            p.insertionMode = IN_TABLE_BODY_MODE;\r\n        }\r\n    }\r\n\r\n    else if (tn === $.TABLE) {\r\n        if (p.openElements.hasInTableScope($.TR)) {\r\n            p.openElements.clearBackToTableRowContext();\r\n            p.openElements.pop();\r\n            p.insertionMode = IN_TABLE_BODY_MODE;\r\n            p._processToken(token);\r\n        }\r\n    }\r\n\r\n    else if (tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD) {\r\n        if (p.openElements.hasInTableScope(tn) || p.openElements.hasInTableScope($.TR)) {\r\n            p.openElements.clearBackToTableRowContext();\r\n            p.openElements.pop();\r\n            p.insertionMode = IN_TABLE_BODY_MODE;\r\n            p._processToken(token);\r\n        }\r\n    }\r\n\r\n    else if (tn !== $.BODY && tn !== $.CAPTION && tn !== $.COL && tn !== $.COLGROUP ||\r\n             tn !== $.HTML && tn !== $.TD && tn !== $.TH)\r\n        endTagInTable(p, token);\r\n}\r\n\r\n\r\n//12.2.5.4.15 The \"in cell\" insertion mode\r\n//------------------------------------------------------------------\r\nfunction startTagInCell(p, token) {\r\n    var tn = token.tagName;\r\n\r\n    if (tn === $.CAPTION || tn === $.COL || tn === $.COLGROUP || tn === $.TBODY ||\r\n        tn === $.TD || tn === $.TFOOT || tn === $.TH || tn === $.THEAD || tn === $.TR) {\r\n\r\n        if (p.openElements.hasInTableScope($.TD) || p.openElements.hasInTableScope($.TH)) {\r\n            p._closeTableCell();\r\n            p._processToken(token);\r\n        }\r\n    }\r\n\r\n    else\r\n        startTagInBody(p, token);\r\n}\r\n\r\nfunction endTagInCell(p, token) {\r\n    var tn = token.tagName;\r\n\r\n    if (tn === $.TD || tn === $.TH) {\r\n        if (p.openElements.hasInTableScope(tn)) {\r\n            p.openElements.generateImpliedEndTags();\r\n            p.openElements.popUntilTagNamePopped(tn);\r\n            p.activeFormattingElements.clearToLastMarker();\r\n            p.insertionMode = IN_ROW_MODE;\r\n        }\r\n    }\r\n\r\n    else if (tn === $.TABLE || tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD || tn === $.TR) {\r\n        if (p.openElements.hasInTableScope(tn)) {\r\n            p._closeTableCell();\r\n            p._processToken(token);\r\n        }\r\n    }\r\n\r\n    else if (tn !== $.BODY && tn !== $.CAPTION && tn !== $.COL && tn !== $.COLGROUP && tn !== $.HTML)\r\n        endTagInBody(p, token);\r\n}\r\n\r\n//12.2.5.4.16 The \"in select\" insertion mode\r\n//------------------------------------------------------------------\r\nfunction startTagInSelect(p, token) {\r\n    var tn = token.tagName;\r\n\r\n    if (tn === $.HTML)\r\n        startTagInBody(p, token);\r\n\r\n    else if (tn === $.OPTION) {\r\n        if (p.openElements.currentTagName === $.OPTION)\r\n            p.openElements.pop();\r\n\r\n        p._insertElement(token, NS.HTML);\r\n    }\r\n\r\n    else if (tn === $.OPTGROUP) {\r\n        if (p.openElements.currentTagName === $.OPTION)\r\n            p.openElements.pop();\r\n\r\n        if (p.openElements.currentTagName === $.OPTGROUP)\r\n            p.openElements.pop();\r\n\r\n        p._insertElement(token, NS.HTML);\r\n    }\r\n\r\n    else if (tn === $.INPUT || tn === $.KEYGEN || tn === $.TEXTAREA || tn === $.SELECT) {\r\n        if (p.openElements.hasInSelectScope($.SELECT)) {\r\n            p.openElements.popUntilTagNamePopped($.SELECT);\r\n            p._resetInsertionMode();\r\n\r\n            if (tn !== $.SELECT)\r\n                p._processToken(token);\r\n        }\r\n    }\r\n\r\n    else if (tn === $.SCRIPT || tn === $.TEMPLATE)\r\n        startTagInHead(p, token);\r\n}\r\n\r\nfunction endTagInSelect(p, token) {\r\n    var tn = token.tagName;\r\n\r\n    if (tn === $.OPTGROUP) {\r\n        var prevOpenElement = p.openElements.items[p.openElements.stackTop - 1],\r\n            prevOpenElementTn = prevOpenElement && p.treeAdapter.getTagName(prevOpenElement);\r\n\r\n        if (p.openElements.currentTagName === $.OPTION && prevOpenElementTn === $.OPTGROUP)\r\n            p.openElements.pop();\r\n\r\n        if (p.openElements.currentTagName === $.OPTGROUP)\r\n            p.openElements.pop();\r\n    }\r\n\r\n    else if (tn === $.OPTION) {\r\n        if (p.openElements.currentTagName === $.OPTION)\r\n            p.openElements.pop();\r\n    }\r\n\r\n    else if (tn === $.SELECT && p.openElements.hasInSelectScope($.SELECT)) {\r\n        p.openElements.popUntilTagNamePopped($.SELECT);\r\n        p._resetInsertionMode();\r\n    }\r\n\r\n    else if (tn === $.TEMPLATE)\r\n        endTagInHead(p, token);\r\n}\r\n\r\n//12.2.5.4.17 The \"in select in table\" insertion mode\r\n//------------------------------------------------------------------\r\nfunction startTagInSelectInTable(p, token) {\r\n    var tn = token.tagName;\r\n\r\n    if (tn === $.CAPTION || tn === $.TABLE || tn === $.TBODY || tn === $.TFOOT ||\r\n        tn === $.THEAD || tn === $.TR || tn === $.TD || tn === $.TH) {\r\n        p.openElements.popUntilTagNamePopped($.SELECT);\r\n        p._resetInsertionMode();\r\n        p._processToken(token);\r\n    }\r\n\r\n    else\r\n        startTagInSelect(p, token);\r\n}\r\n\r\nfunction endTagInSelectInTable(p, token) {\r\n    var tn = token.tagName;\r\n\r\n    if (tn === $.CAPTION || tn === $.TABLE || tn === $.TBODY || tn === $.TFOOT ||\r\n        tn === $.THEAD || tn === $.TR || tn === $.TD || tn === $.TH) {\r\n        if (p.openElements.hasInTableScope(tn)) {\r\n            p.openElements.popUntilTagNamePopped($.SELECT);\r\n            p._resetInsertionMode();\r\n            p._processToken(token);\r\n        }\r\n    }\r\n\r\n    else\r\n        endTagInSelect(p, token);\r\n}\r\n\r\n//12.2.5.4.18 The \"in template\" insertion mode\r\n//------------------------------------------------------------------\r\nfunction startTagInTemplate(p, token) {\r\n    var tn = token.tagName;\r\n\r\n    if (tn === $.BASE || tn === $.BASEFONT || tn === $.BGSOUND || tn === $.LINK || tn === $.META ||\r\n        tn === $.NOFRAMES || tn === $.SCRIPT || tn === $.STYLE || tn === $.TEMPLATE || tn === $.TITLE)\r\n        startTagInHead(p, token);\r\n\r\n    else {\r\n        var newInsertionMode = TEMPLATE_INSERTION_MODE_SWITCH_MAP[tn] || IN_BODY_MODE;\r\n\r\n        p._popTmplInsertionMode();\r\n        p._pushTmplInsertionMode(newInsertionMode);\r\n        p.insertionMode = newInsertionMode;\r\n        p._processToken(token);\r\n    }\r\n}\r\n\r\nfunction endTagInTemplate(p, token) {\r\n    if (token.tagName === $.TEMPLATE)\r\n        endTagInHead(p, token);\r\n}\r\n\r\nfunction eofInTemplate(p, token) {\r\n    if (p.openElements.tmplCount > 0) {\r\n        p.openElements.popUntilTagNamePopped($.TEMPLATE);\r\n        p.activeFormattingElements.clearToLastMarker();\r\n        p._popTmplInsertionMode();\r\n        p._resetInsertionMode();\r\n        p._processToken(token);\r\n    }\r\n\r\n    else\r\n        p.stopped = true;\r\n}\r\n\r\n\r\n//12.2.5.4.19 The \"after body\" insertion mode\r\n//------------------------------------------------------------------\r\nfunction startTagAfterBody(p, token) {\r\n    if (token.tagName === $.HTML)\r\n        startTagInBody(p, token);\r\n\r\n    else\r\n        tokenAfterBody(p, token);\r\n}\r\n\r\nfunction endTagAfterBody(p, token) {\r\n    if (token.tagName === $.HTML) {\r\n        if (!p.fragmentContext)\r\n            p.insertionMode = AFTER_AFTER_BODY_MODE;\r\n    }\r\n\r\n    else\r\n        tokenAfterBody(p, token);\r\n}\r\n\r\nfunction tokenAfterBody(p, token) {\r\n    p.insertionMode = IN_BODY_MODE;\r\n    p._processToken(token);\r\n}\r\n\r\n//12.2.5.4.20 The \"in frameset\" insertion mode\r\n//------------------------------------------------------------------\r\nfunction startTagInFrameset(p, token) {\r\n    var tn = token.tagName;\r\n\r\n    if (tn === $.HTML)\r\n        startTagInBody(p, token);\r\n\r\n    else if (tn === $.FRAMESET)\r\n        p._insertElement(token, NS.HTML);\r\n\r\n    else if (tn === $.FRAME)\r\n        p._appendElement(token, NS.HTML);\r\n\r\n    else if (tn === $.NOFRAMES)\r\n        startTagInHead(p, token);\r\n}\r\n\r\nfunction endTagInFrameset(p, token) {\r\n    if (token.tagName === $.FRAMESET && !p.openElements.isRootHtmlElementCurrent()) {\r\n        p.openElements.pop();\r\n\r\n        if (!p.fragmentContext && p.openElements.currentTagName !== $.FRAMESET)\r\n            p.insertionMode = AFTER_FRAMESET_MODE;\r\n    }\r\n}\r\n\r\n//12.2.5.4.21 The \"after frameset\" insertion mode\r\n//------------------------------------------------------------------\r\nfunction startTagAfterFrameset(p, token) {\r\n    var tn = token.tagName;\r\n\r\n    if (tn === $.HTML)\r\n        startTagInBody(p, token);\r\n\r\n    else if (tn === $.NOFRAMES)\r\n        startTagInHead(p, token);\r\n}\r\n\r\nfunction endTagAfterFrameset(p, token) {\r\n    if (token.tagName === $.HTML)\r\n        p.insertionMode = AFTER_AFTER_FRAMESET_MODE;\r\n}\r\n\r\n//12.2.5.4.22 The \"after after body\" insertion mode\r\n//------------------------------------------------------------------\r\nfunction startTagAfterAfterBody(p, token) {\r\n    if (token.tagName === $.HTML)\r\n        startTagInBody(p, token);\r\n\r\n    else\r\n        tokenAfterAfterBody(p, token);\r\n}\r\n\r\nfunction tokenAfterAfterBody(p, token) {\r\n    p.insertionMode = IN_BODY_MODE;\r\n    p._processToken(token);\r\n}\r\n\r\n//12.2.5.4.23 The \"after after frameset\" insertion mode\r\n//------------------------------------------------------------------\r\nfunction startTagAfterAfterFrameset(p, token) {\r\n    var tn = token.tagName;\r\n\r\n    if (tn === $.HTML)\r\n        startTagInBody(p, token);\r\n\r\n    else if (tn === $.NOFRAMES)\r\n        startTagInHead(p, token);\r\n}\r\n\r\n\r\n//12.2.5.5 The rules for parsing tokens in foreign content\r\n//------------------------------------------------------------------\r\nfunction nullCharacterInForeignContent(p, token) {\r\n    token.chars = UNICODE.REPLACEMENT_CHARACTER;\r\n    p._insertCharacters(token);\r\n}\r\n\r\nfunction characterInForeignContent(p, token) {\r\n    p._insertCharacters(token);\r\n    p.framesetOk = false;\r\n}\r\n\r\nfunction startTagInForeignContent(p, token) {\r\n    if (foreignContent.causesExit(token) && !p.fragmentContext) {\r\n        while (p.treeAdapter.getNamespaceURI(p.openElements.current) !== NS.HTML && !p._isIntegrationPoint(p.openElements.current))\r\n            p.openElements.pop();\r\n\r\n        p._processToken(token);\r\n    }\r\n\r\n    else {\r\n        var current = p._getAdjustedCurrentElement(),\r\n            currentNs = p.treeAdapter.getNamespaceURI(current);\r\n\r\n        if (currentNs === NS.MATHML)\r\n            foreignContent.adjustTokenMathMLAttrs(token);\r\n\r\n        else if (currentNs === NS.SVG) {\r\n            foreignContent.adjustTokenSVGTagName(token);\r\n            foreignContent.adjustTokenSVGAttrs(token);\r\n        }\r\n\r\n        foreignContent.adjustTokenXMLAttrs(token);\r\n\r\n        if (token.selfClosing)\r\n            p._appendElement(token, currentNs);\r\n        else\r\n            p._insertElement(token, currentNs);\r\n    }\r\n}\r\n\r\nfunction endTagInForeignContent(p, token) {\r\n    for (var i = p.openElements.stackTop; i > 0; i--) {\r\n        var element = p.openElements.items[i];\r\n\r\n        if (p.treeAdapter.getNamespaceURI(element) === NS.HTML) {\r\n            p._processToken(token);\r\n            break;\r\n        }\r\n\r\n        if (p.treeAdapter.getTagName(element).toLowerCase() === token.tagName) {\r\n            p.openElements.popUntilElementPopped(element);\r\n            break;\r\n        }\r\n    }\r\n}\r\n","'use strict';\r\n\r\nvar HTML = require('../common/html');\r\n\r\n//Aliases\r\nvar $ = HTML.TAG_NAMES,\r\n    NS = HTML.NAMESPACES;\r\n\r\n//Element utils\r\n\r\n//OPTIMIZATION: Integer comparisons are low-cost, so we can use very fast tag name length filters here.\r\n//It's faster than using dictionary.\r\nfunction isImpliedEndTagRequired(tn) {\r\n    switch (tn.length) {\r\n        case 1:\r\n            return tn === $.P;\r\n\r\n        case 2:\r\n            return tn === $.RB || tn === $.RP || tn === $.RT || tn === $.DD || tn === $.DT || tn === $.LI;\r\n\r\n        case 3:\r\n            return tn === $.RTC;\r\n\r\n        case 6:\r\n            return tn === $.OPTION;\r\n\r\n        case 8:\r\n            return tn === $.OPTGROUP || tn === $.MENUITEM;\r\n    }\r\n\r\n    return false;\r\n}\r\n\r\nfunction isScopingElement(tn, ns) {\r\n    switch (tn.length) {\r\n        case 2:\r\n            if (tn === $.TD || tn === $.TH)\r\n                return ns === NS.HTML;\r\n\r\n            else if (tn === $.MI || tn === $.MO || tn === $.MN || tn === $.MS)\r\n                return ns === NS.MATHML;\r\n\r\n            break;\r\n\r\n        case 4:\r\n            if (tn === $.HTML)\r\n                return ns === NS.HTML;\r\n\r\n            else if (tn === $.DESC)\r\n                return ns === NS.SVG;\r\n\r\n            break;\r\n\r\n        case 5:\r\n            if (tn === $.TABLE)\r\n                return ns === NS.HTML;\r\n\r\n            else if (tn === $.MTEXT)\r\n                return ns === NS.MATHML;\r\n\r\n            else if (tn === $.TITLE)\r\n                return ns === NS.SVG;\r\n\r\n            break;\r\n\r\n        case 6:\r\n            return (tn === $.APPLET || tn === $.OBJECT) && ns === NS.HTML;\r\n\r\n        case 7:\r\n            return (tn === $.CAPTION || tn === $.MARQUEE) && ns === NS.HTML;\r\n\r\n        case 8:\r\n            return tn === $.TEMPLATE && ns === NS.HTML;\r\n\r\n        case 13:\r\n            return tn === $.FOREIGN_OBJECT && ns === NS.SVG;\r\n\r\n        case 14:\r\n            return tn === $.ANNOTATION_XML && ns === NS.MATHML;\r\n    }\r\n\r\n    return false;\r\n}\r\n\r\n//Stack of open elements\r\nvar OpenElementStack = module.exports = function (document, treeAdapter) {\r\n    this.stackTop = -1;\r\n    this.items = [];\r\n    this.current = document;\r\n    this.currentTagName = null;\r\n    this.currentTmplContent = null;\r\n    this.tmplCount = 0;\r\n    this.treeAdapter = treeAdapter;\r\n};\r\n\r\n//Index of element\r\nOpenElementStack.prototype._indexOf = function (element) {\r\n    var idx = -1;\r\n\r\n    for (var i = this.stackTop; i >= 0; i--) {\r\n        if (this.items[i] === element) {\r\n            idx = i;\r\n            break;\r\n        }\r\n    }\r\n    return idx;\r\n};\r\n\r\n//Update current element\r\nOpenElementStack.prototype._isInTemplate = function () {\r\n    return this.currentTagName === $.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === NS.HTML;\r\n};\r\n\r\nOpenElementStack.prototype._updateCurrentElement = function () {\r\n    this.current = this.items[this.stackTop];\r\n    this.currentTagName = this.current && this.treeAdapter.getTagName(this.current);\r\n\r\n    this.currentTmplContent = this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : null;\r\n};\r\n\r\n//Mutations\r\nOpenElementStack.prototype.push = function (element) {\r\n    this.items[++this.stackTop] = element;\r\n    this._updateCurrentElement();\r\n\r\n    if (this._isInTemplate())\r\n        this.tmplCount++;\r\n\r\n};\r\n\r\nOpenElementStack.prototype.pop = function () {\r\n    this.stackTop--;\r\n\r\n    if (this.tmplCount > 0 && this._isInTemplate())\r\n        this.tmplCount--;\r\n\r\n    this._updateCurrentElement();\r\n};\r\n\r\nOpenElementStack.prototype.replace = function (oldElement, newElement) {\r\n    var idx = this._indexOf(oldElement);\r\n\r\n    this.items[idx] = newElement;\r\n\r\n    if (idx === this.stackTop)\r\n        this._updateCurrentElement();\r\n};\r\n\r\nOpenElementStack.prototype.insertAfter = function (referenceElement, newElement) {\r\n    var insertionIdx = this._indexOf(referenceElement) + 1;\r\n\r\n    this.items.splice(insertionIdx, 0, newElement);\r\n\r\n    if (insertionIdx === ++this.stackTop)\r\n        this._updateCurrentElement();\r\n};\r\n\r\nOpenElementStack.prototype.popUntilTagNamePopped = function (tagName) {\r\n    while (this.stackTop > -1) {\r\n        var tn = this.currentTagName,\r\n            ns = this.treeAdapter.getNamespaceURI(this.current);\r\n\r\n        this.pop();\r\n\r\n        if (tn === tagName && ns === NS.HTML)\r\n            break;\r\n    }\r\n};\r\n\r\nOpenElementStack.prototype.popUntilElementPopped = function (element) {\r\n    while (this.stackTop > -1) {\r\n        var poppedElement = this.current;\r\n\r\n        this.pop();\r\n\r\n        if (poppedElement === element)\r\n            break;\r\n    }\r\n};\r\n\r\nOpenElementStack.prototype.popUntilNumberedHeaderPopped = function () {\r\n    while (this.stackTop > -1) {\r\n        var tn = this.currentTagName,\r\n            ns = this.treeAdapter.getNamespaceURI(this.current);\r\n\r\n        this.pop();\r\n\r\n        if (tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6 && ns === NS.HTML)\r\n            break;\r\n    }\r\n};\r\n\r\nOpenElementStack.prototype.popUntilTableCellPopped = function () {\r\n    while (this.stackTop > -1) {\r\n        var tn = this.currentTagName,\r\n            ns = this.treeAdapter.getNamespaceURI(this.current);\r\n\r\n        this.pop();\r\n\r\n        if (tn === $.TD || tn === $.TH && ns === NS.HTML)\r\n            break;\r\n    }\r\n};\r\n\r\nOpenElementStack.prototype.popAllUpToHtmlElement = function () {\r\n    //NOTE: here we assume that root <html> element is always first in the open element stack, so\r\n    //we perform this fast stack clean up.\r\n    this.stackTop = 0;\r\n    this._updateCurrentElement();\r\n};\r\n\r\nOpenElementStack.prototype.clearBackToTableContext = function () {\r\n    while (this.currentTagName !== $.TABLE &&\r\n           this.currentTagName !== $.TEMPLATE &&\r\n           this.currentTagName !== $.HTML ||\r\n           this.treeAdapter.getNamespaceURI(this.current) !== NS.HTML)\r\n        this.pop();\r\n};\r\n\r\nOpenElementStack.prototype.clearBackToTableBodyContext = function () {\r\n    while (this.currentTagName !== $.TBODY &&\r\n           this.currentTagName !== $.TFOOT &&\r\n           this.currentTagName !== $.THEAD &&\r\n           this.currentTagName !== $.TEMPLATE &&\r\n           this.currentTagName !== $.HTML ||\r\n           this.treeAdapter.getNamespaceURI(this.current) !== NS.HTML)\r\n        this.pop();\r\n};\r\n\r\nOpenElementStack.prototype.clearBackToTableRowContext = function () {\r\n    while (this.currentTagName !== $.TR &&\r\n           this.currentTagName !== $.TEMPLATE &&\r\n           this.currentTagName !== $.HTML ||\r\n           this.treeAdapter.getNamespaceURI(this.current) !== NS.HTML)\r\n        this.pop();\r\n};\r\n\r\nOpenElementStack.prototype.remove = function (element) {\r\n    for (var i = this.stackTop; i >= 0; i--) {\r\n        if (this.items[i] === element) {\r\n            this.items.splice(i, 1);\r\n            this.stackTop--;\r\n            this._updateCurrentElement();\r\n            break;\r\n        }\r\n    }\r\n};\r\n\r\n//Search\r\nOpenElementStack.prototype.tryPeekProperlyNestedBodyElement = function () {\r\n    //Properly nested <body> element (should be second element in stack).\r\n    var element = this.items[1];\r\n\r\n    return element && this.treeAdapter.getTagName(element) === $.BODY ? element : null;\r\n};\r\n\r\nOpenElementStack.prototype.contains = function (element) {\r\n    return this._indexOf(element) > -1;\r\n};\r\n\r\nOpenElementStack.prototype.getCommonAncestor = function (element) {\r\n    var elementIdx = this._indexOf(element);\r\n\r\n    return --elementIdx >= 0 ? this.items[elementIdx] : null;\r\n};\r\n\r\nOpenElementStack.prototype.isRootHtmlElementCurrent = function () {\r\n    return this.stackTop === 0 && this.currentTagName === $.HTML;\r\n};\r\n\r\n//Element in scope\r\nOpenElementStack.prototype.hasInScope = function (tagName) {\r\n    for (var i = this.stackTop; i >= 0; i--) {\r\n        var tn = this.treeAdapter.getTagName(this.items[i]),\r\n            ns = this.treeAdapter.getNamespaceURI(this.items[i]);\r\n\r\n        if (tn === tagName && ns === NS.HTML)\r\n            return true;\r\n\r\n        if (isScopingElement(tn, ns))\r\n            return false;\r\n    }\r\n\r\n    return true;\r\n};\r\n\r\nOpenElementStack.prototype.hasNumberedHeaderInScope = function () {\r\n    for (var i = this.stackTop; i >= 0; i--) {\r\n        var tn = this.treeAdapter.getTagName(this.items[i]),\r\n            ns = this.treeAdapter.getNamespaceURI(this.items[i]);\r\n\r\n        if ((tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6) && ns === NS.HTML)\r\n            return true;\r\n\r\n        if (isScopingElement(tn, ns))\r\n            return false;\r\n    }\r\n\r\n    return true;\r\n};\r\n\r\nOpenElementStack.prototype.hasInListItemScope = function (tagName) {\r\n    for (var i = this.stackTop; i >= 0; i--) {\r\n        var tn = this.treeAdapter.getTagName(this.items[i]),\r\n            ns = this.treeAdapter.getNamespaceURI(this.items[i]);\r\n\r\n        if (tn === tagName && ns === NS.HTML)\r\n            return true;\r\n\r\n        if ((tn === $.UL || tn === $.OL) && ns === NS.HTML || isScopingElement(tn, ns))\r\n            return false;\r\n    }\r\n\r\n    return true;\r\n};\r\n\r\nOpenElementStack.prototype.hasInButtonScope = function (tagName) {\r\n    for (var i = this.stackTop; i >= 0; i--) {\r\n        var tn = this.treeAdapter.getTagName(this.items[i]),\r\n            ns = this.treeAdapter.getNamespaceURI(this.items[i]);\r\n\r\n        if (tn === tagName && ns === NS.HTML)\r\n            return true;\r\n\r\n        if (tn === $.BUTTON && ns === NS.HTML || isScopingElement(tn, ns))\r\n            return false;\r\n    }\r\n\r\n    return true;\r\n};\r\n\r\nOpenElementStack.prototype.hasInTableScope = function (tagName) {\r\n    for (var i = this.stackTop; i >= 0; i--) {\r\n        var tn = this.treeAdapter.getTagName(this.items[i]),\r\n            ns = this.treeAdapter.getNamespaceURI(this.items[i]);\r\n\r\n        if (ns !== NS.HTML)\r\n            continue;\r\n\r\n        if (tn === tagName)\r\n            return true;\r\n\r\n        if (tn === $.TABLE || tn === $.TEMPLATE || tn === $.HTML)\r\n            return false;\r\n    }\r\n\r\n    return true;\r\n};\r\n\r\nOpenElementStack.prototype.hasTableBodyContextInTableScope = function () {\r\n    for (var i = this.stackTop; i >= 0; i--) {\r\n        var tn = this.treeAdapter.getTagName(this.items[i]),\r\n            ns = this.treeAdapter.getNamespaceURI(this.items[i]);\r\n\r\n        if (ns !== NS.HTML)\r\n            continue;\r\n\r\n        if (tn === $.TBODY || tn === $.THEAD || tn === $.TFOOT)\r\n            return true;\r\n\r\n        if (tn === $.TABLE || tn === $.HTML)\r\n            return false;\r\n    }\r\n\r\n    return true;\r\n};\r\n\r\nOpenElementStack.prototype.hasInSelectScope = function (tagName) {\r\n    for (var i = this.stackTop; i >= 0; i--) {\r\n        var tn = this.treeAdapter.getTagName(this.items[i]),\r\n            ns = this.treeAdapter.getNamespaceURI(this.items[i]);\r\n\r\n        if (ns !== NS.HTML)\r\n            continue;\r\n\r\n        if (tn === tagName)\r\n            return true;\r\n\r\n        if (tn !== $.OPTION && tn !== $.OPTGROUP)\r\n            return false;\r\n    }\r\n\r\n    return true;\r\n};\r\n\r\n//Implied end tags\r\nOpenElementStack.prototype.generateImpliedEndTags = function () {\r\n    while (isImpliedEndTagRequired(this.currentTagName))\r\n        this.pop();\r\n};\r\n\r\nOpenElementStack.prototype.generateImpliedEndTagsWithExclusion = function (exclusionTagName) {\r\n    while (isImpliedEndTagRequired(this.currentTagName) && this.currentTagName !== exclusionTagName)\r\n        this.pop();\r\n};\r\n","'use strict';\n\nvar Preprocessor = require('./preprocessor'),\n    locationInfoMixin = require('../location_info/tokenizer_mixin'),\n    UNICODE = require('../common/unicode'),\n    NAMED_ENTITY_TRIE = require('./named_entity_trie');\n\n//Aliases\nvar $ = UNICODE.CODE_POINTS,\n    $$ = UNICODE.CODE_POINT_SEQUENCES;\n\n//Replacement code points for numeric entities\nvar NUMERIC_ENTITY_REPLACEMENTS = {\n    0x00: 0xFFFD, 0x0D: 0x000D, 0x80: 0x20AC, 0x81: 0x0081, 0x82: 0x201A, 0x83: 0x0192, 0x84: 0x201E,\n    0x85: 0x2026, 0x86: 0x2020, 0x87: 0x2021, 0x88: 0x02C6, 0x89: 0x2030, 0x8A: 0x0160, 0x8B: 0x2039,\n    0x8C: 0x0152, 0x8D: 0x008D, 0x8E: 0x017D, 0x8F: 0x008F, 0x90: 0x0090, 0x91: 0x2018, 0x92: 0x2019,\n    0x93: 0x201C, 0x94: 0x201D, 0x95: 0x2022, 0x96: 0x2013, 0x97: 0x2014, 0x98: 0x02DC, 0x99: 0x2122,\n    0x9A: 0x0161, 0x9B: 0x203A, 0x9C: 0x0153, 0x9D: 0x009D, 0x9E: 0x017E, 0x9F: 0x0178\n};\n\n//States\nvar DATA_STATE = 'DATA_STATE',\n    CHARACTER_REFERENCE_IN_DATA_STATE = 'CHARACTER_REFERENCE_IN_DATA_STATE',\n    RCDATA_STATE = 'RCDATA_STATE',\n    CHARACTER_REFERENCE_IN_RCDATA_STATE = 'CHARACTER_REFERENCE_IN_RCDATA_STATE',\n    RAWTEXT_STATE = 'RAWTEXT_STATE',\n    SCRIPT_DATA_STATE = 'SCRIPT_DATA_STATE',\n    PLAINTEXT_STATE = 'PLAINTEXT_STATE',\n    TAG_OPEN_STATE = 'TAG_OPEN_STATE',\n    END_TAG_OPEN_STATE = 'END_TAG_OPEN_STATE',\n    TAG_NAME_STATE = 'TAG_NAME_STATE',\n    RCDATA_LESS_THAN_SIGN_STATE = 'RCDATA_LESS_THAN_SIGN_STATE',\n    RCDATA_END_TAG_OPEN_STATE = 'RCDATA_END_TAG_OPEN_STATE',\n    RCDATA_END_TAG_NAME_STATE = 'RCDATA_END_TAG_NAME_STATE',\n    RAWTEXT_LESS_THAN_SIGN_STATE = 'RAWTEXT_LESS_THAN_SIGN_STATE',\n    RAWTEXT_END_TAG_OPEN_STATE = 'RAWTEXT_END_TAG_OPEN_STATE',\n    RAWTEXT_END_TAG_NAME_STATE = 'RAWTEXT_END_TAG_NAME_STATE',\n    SCRIPT_DATA_LESS_THAN_SIGN_STATE = 'SCRIPT_DATA_LESS_THAN_SIGN_STATE',\n    SCRIPT_DATA_END_TAG_OPEN_STATE = 'SCRIPT_DATA_END_TAG_OPEN_STATE',\n    SCRIPT_DATA_END_TAG_NAME_STATE = 'SCRIPT_DATA_END_TAG_NAME_STATE',\n    SCRIPT_DATA_ESCAPE_START_STATE = 'SCRIPT_DATA_ESCAPE_START_STATE',\n    SCRIPT_DATA_ESCAPE_START_DASH_STATE = 'SCRIPT_DATA_ESCAPE_START_DASH_STATE',\n    SCRIPT_DATA_ESCAPED_STATE = 'SCRIPT_DATA_ESCAPED_STATE',\n    SCRIPT_DATA_ESCAPED_DASH_STATE = 'SCRIPT_DATA_ESCAPED_DASH_STATE',\n    SCRIPT_DATA_ESCAPED_DASH_DASH_STATE = 'SCRIPT_DATA_ESCAPED_DASH_DASH_STATE',\n    SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE = 'SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE',\n    SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE = 'SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE',\n    SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE = 'SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE',\n    SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE',\n    SCRIPT_DATA_DOUBLE_ESCAPED_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPED_STATE',\n    SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE',\n    SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE',\n    SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE',\n    SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE',\n    BEFORE_ATTRIBUTE_NAME_STATE = 'BEFORE_ATTRIBUTE_NAME_STATE',\n    ATTRIBUTE_NAME_STATE = 'ATTRIBUTE_NAME_STATE',\n    AFTER_ATTRIBUTE_NAME_STATE = 'AFTER_ATTRIBUTE_NAME_STATE',\n    BEFORE_ATTRIBUTE_VALUE_STATE = 'BEFORE_ATTRIBUTE_VALUE_STATE',\n    ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE = 'ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE',\n    ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE = 'ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE',\n    ATTRIBUTE_VALUE_UNQUOTED_STATE = 'ATTRIBUTE_VALUE_UNQUOTED_STATE',\n    CHARACTER_REFERENCE_IN_ATTRIBUTE_VALUE_STATE = 'CHARACTER_REFERENCE_IN_ATTRIBUTE_VALUE_STATE',\n    AFTER_ATTRIBUTE_VALUE_QUOTED_STATE = 'AFTER_ATTRIBUTE_VALUE_QUOTED_STATE',\n    SELF_CLOSING_START_TAG_STATE = 'SELF_CLOSING_START_TAG_STATE',\n    BOGUS_COMMENT_STATE = 'BOGUS_COMMENT_STATE',\n    BOGUS_COMMENT_STATE_CONTINUATION = 'BOGUS_COMMENT_STATE_CONTINUATION',\n    MARKUP_DECLARATION_OPEN_STATE = 'MARKUP_DECLARATION_OPEN_STATE',\n    COMMENT_START_STATE = 'COMMENT_START_STATE',\n    COMMENT_START_DASH_STATE = 'COMMENT_START_DASH_STATE',\n    COMMENT_STATE = 'COMMENT_STATE',\n    COMMENT_END_DASH_STATE = 'COMMENT_END_DASH_STATE',\n    COMMENT_END_STATE = 'COMMENT_END_STATE',\n    COMMENT_END_BANG_STATE = 'COMMENT_END_BANG_STATE',\n    DOCTYPE_STATE = 'DOCTYPE_STATE',\n    DOCTYPE_NAME_STATE = 'DOCTYPE_NAME_STATE',\n    AFTER_DOCTYPE_NAME_STATE = 'AFTER_DOCTYPE_NAME_STATE',\n    BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE = 'BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE',\n    DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE = 'DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE',\n    DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE = 'DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE',\n    BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE = 'BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE',\n    BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE = 'BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE',\n    DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE = 'DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE',\n    DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE = 'DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE',\n    AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE = 'AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE',\n    BOGUS_DOCTYPE_STATE = 'BOGUS_DOCTYPE_STATE',\n    CDATA_SECTION_STATE = 'CDATA_SECTION_STATE';\n\n//Utils\n\n//OPTIMIZATION: these utility functions should not be moved out of this module. V8 Crankshaft will not inline\n//this functions if they will be situated in another module due to context switch.\n//Always perform inlining check before modifying this functions ('node --trace-inlining').\nfunction isWhitespace(cp) {\n    return cp === $.SPACE || cp === $.LINE_FEED || cp === $.TABULATION || cp === $.FORM_FEED;\n}\n\nfunction isAsciiDigit(cp) {\n    return cp >= $.DIGIT_0 && cp <= $.DIGIT_9;\n}\n\nfunction isAsciiUpper(cp) {\n    return cp >= $.LATIN_CAPITAL_A && cp <= $.LATIN_CAPITAL_Z;\n}\n\nfunction isAsciiLower(cp) {\n    return cp >= $.LATIN_SMALL_A && cp <= $.LATIN_SMALL_Z;\n}\n\nfunction isAsciiLetter(cp) {\n    return isAsciiLower(cp) || isAsciiUpper(cp);\n}\n\nfunction isAsciiAlphaNumeric(cp) {\n    return isAsciiLetter(cp) || isAsciiDigit(cp);\n}\n\nfunction isDigit(cp, isHex) {\n    return isAsciiDigit(cp) || isHex && (cp >= $.LATIN_CAPITAL_A && cp <= $.LATIN_CAPITAL_F ||\n                                         cp >= $.LATIN_SMALL_A && cp <= $.LATIN_SMALL_F);\n}\n\nfunction isReservedCodePoint(cp) {\n    return cp >= 0xD800 && cp <= 0xDFFF || cp > 0x10FFFF;\n}\n\nfunction toAsciiLowerCodePoint(cp) {\n    return cp + 0x0020;\n}\n\n//NOTE: String.fromCharCode() function can handle only characters from BMP subset.\n//So, we need to workaround this manually.\n//(see: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/fromCharCode#Getting_it_to_work_with_higher_values)\nfunction toChar(cp) {\n    if (cp <= 0xFFFF)\n        return String.fromCharCode(cp);\n\n    cp -= 0x10000;\n    return String.fromCharCode(cp >>> 10 & 0x3FF | 0xD800) + String.fromCharCode(0xDC00 | cp & 0x3FF);\n}\n\nfunction toAsciiLowerChar(cp) {\n    return String.fromCharCode(toAsciiLowerCodePoint(cp));\n}\n\n//Tokenizer\nvar Tokenizer = module.exports = function (options) {\n    this.preprocessor = new Preprocessor();\n\n    this.tokenQueue = [];\n\n    this.allowCDATA = false;\n\n    this.state = DATA_STATE;\n    this.returnState = '';\n\n    this.tempBuff = [];\n    this.additionalAllowedCp = void 0;\n    this.lastStartTagName = '';\n\n    this.consumedAfterSnapshot = -1;\n    this.active = false;\n\n    this.currentCharacterToken = null;\n    this.currentToken = null;\n    this.currentAttr = null;\n\n    if (options && options.locationInfo)\n        locationInfoMixin.assign(this);\n};\n\n//Token types\nTokenizer.CHARACTER_TOKEN = 'CHARACTER_TOKEN';\nTokenizer.NULL_CHARACTER_TOKEN = 'NULL_CHARACTER_TOKEN';\nTokenizer.WHITESPACE_CHARACTER_TOKEN = 'WHITESPACE_CHARACTER_TOKEN';\nTokenizer.START_TAG_TOKEN = 'START_TAG_TOKEN';\nTokenizer.END_TAG_TOKEN = 'END_TAG_TOKEN';\nTokenizer.COMMENT_TOKEN = 'COMMENT_TOKEN';\nTokenizer.DOCTYPE_TOKEN = 'DOCTYPE_TOKEN';\nTokenizer.EOF_TOKEN = 'EOF_TOKEN';\nTokenizer.HIBERNATION_TOKEN = 'HIBERNATION_TOKEN';\n\n//Tokenizer initial states for different modes\nTokenizer.MODE = Tokenizer.prototype.MODE = {\n    DATA: DATA_STATE,\n    RCDATA: RCDATA_STATE,\n    RAWTEXT: RAWTEXT_STATE,\n    SCRIPT_DATA: SCRIPT_DATA_STATE,\n    PLAINTEXT: PLAINTEXT_STATE\n};\n\n//Static\nTokenizer.getTokenAttr = function (token, attrName) {\n    for (var i = token.attrs.length - 1; i >= 0; i--) {\n        if (token.attrs[i].name === attrName)\n            return token.attrs[i].value;\n    }\n\n    return null;\n};\n\n//API\nTokenizer.prototype.getNextToken = function () {\n    while (!this.tokenQueue.length && this.active) {\n        this._hibernationSnapshot();\n\n        var cp = this._consume();\n\n        if (!this._ensureHibernation())\n            this[this.state](cp);\n    }\n\n    return this.tokenQueue.shift();\n};\n\nTokenizer.prototype.write = function (chunk, isLastChunk) {\n    this.active = true;\n    this.preprocessor.write(chunk, isLastChunk);\n};\n\nTokenizer.prototype.insertHtmlAtCurrentPos = function (chunk) {\n    this.active = true;\n    this.preprocessor.insertHtmlAtCurrentPos(chunk);\n};\n\n//Hibernation\nTokenizer.prototype._hibernationSnapshot = function () {\n    this.consumedAfterSnapshot = 0;\n};\n\nTokenizer.prototype._ensureHibernation = function () {\n    if (this.preprocessor.endOfChunkHit) {\n        for (; this.consumedAfterSnapshot > 0; this.consumedAfterSnapshot--)\n            this.preprocessor.retreat();\n\n        this.active = false;\n        this.tokenQueue.push({type: Tokenizer.HIBERNATION_TOKEN});\n\n        return true;\n    }\n\n    return false;\n};\n\n\n//Consumption\nTokenizer.prototype._consume = function () {\n    this.consumedAfterSnapshot++;\n    return this.preprocessor.advance();\n};\n\nTokenizer.prototype._unconsume = function () {\n    this.consumedAfterSnapshot--;\n    this.preprocessor.retreat();\n};\n\nTokenizer.prototype._unconsumeSeveral = function (count) {\n    while (count--)\n        this._unconsume();\n};\n\nTokenizer.prototype._reconsumeInState = function (state) {\n    this.state = state;\n    this._unconsume();\n};\n\nTokenizer.prototype._consumeSubsequentIfMatch = function (pattern, startCp, caseSensitive) {\n    var consumedCount = 0,\n        isMatch = true,\n        patternLength = pattern.length,\n        patternPos = 0,\n        cp = startCp,\n        patternCp = void 0;\n\n    for (; patternPos < patternLength; patternPos++) {\n        if (patternPos > 0) {\n            cp = this._consume();\n            consumedCount++;\n        }\n\n        if (cp === $.EOF) {\n            isMatch = false;\n            break;\n        }\n\n        patternCp = pattern[patternPos];\n\n        if (cp !== patternCp && (caseSensitive || cp !== toAsciiLowerCodePoint(patternCp))) {\n            isMatch = false;\n            break;\n        }\n    }\n\n    if (!isMatch)\n        this._unconsumeSeveral(consumedCount);\n\n    return isMatch;\n};\n\n//Lookahead\nTokenizer.prototype._lookahead = function () {\n    var cp = this._consume();\n\n    this._unconsume();\n\n    return cp;\n};\n\n//Temp buffer\nTokenizer.prototype.isTempBufferEqualToScriptString = function () {\n    if (this.tempBuff.length !== $$.SCRIPT_STRING.length)\n        return false;\n\n    for (var i = 0; i < this.tempBuff.length; i++) {\n        if (this.tempBuff[i] !== $$.SCRIPT_STRING[i])\n            return false;\n    }\n\n    return true;\n};\n\n//Token creation\nTokenizer.prototype._createStartTagToken = function () {\n    this.currentToken = {\n        type: Tokenizer.START_TAG_TOKEN,\n        tagName: '',\n        selfClosing: false,\n        attrs: []\n    };\n};\n\nTokenizer.prototype._createEndTagToken = function () {\n    this.currentToken = {\n        type: Tokenizer.END_TAG_TOKEN,\n        tagName: '',\n        attrs: []\n    };\n};\n\nTokenizer.prototype._createCommentToken = function () {\n    this.currentToken = {\n        type: Tokenizer.COMMENT_TOKEN,\n        data: ''\n    };\n};\n\nTokenizer.prototype._createDoctypeToken = function (initialName) {\n    this.currentToken = {\n        type: Tokenizer.DOCTYPE_TOKEN,\n        name: initialName,\n        forceQuirks: false,\n        publicId: null,\n        systemId: null\n    };\n};\n\nTokenizer.prototype._createCharacterToken = function (type, ch) {\n    this.currentCharacterToken = {\n        type: type,\n        chars: ch\n    };\n};\n\n//Tag attributes\nTokenizer.prototype._createAttr = function (attrNameFirstCh) {\n    this.currentAttr = {\n        name: attrNameFirstCh,\n        value: ''\n    };\n};\n\nTokenizer.prototype._isDuplicateAttr = function () {\n    return Tokenizer.getTokenAttr(this.currentToken, this.currentAttr.name) !== null;\n};\n\nTokenizer.prototype._leaveAttrName = function (toState) {\n    this.state = toState;\n\n    if (!this._isDuplicateAttr())\n        this.currentToken.attrs.push(this.currentAttr);\n};\n\nTokenizer.prototype._leaveAttrValue = function (toState) {\n    this.state = toState;\n};\n\n//Appropriate end tag token\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html#appropriate-end-tag-token)\nTokenizer.prototype._isAppropriateEndTagToken = function () {\n    return this.lastStartTagName === this.currentToken.tagName;\n};\n\n//Token emission\nTokenizer.prototype._emitCurrentToken = function () {\n    this._emitCurrentCharacterToken();\n\n    //NOTE: store emited start tag's tagName to determine is the following end tag token is appropriate.\n    if (this.currentToken.type === Tokenizer.START_TAG_TOKEN)\n        this.lastStartTagName = this.currentToken.tagName;\n\n    this.tokenQueue.push(this.currentToken);\n    this.currentToken = null;\n};\n\nTokenizer.prototype._emitCurrentCharacterToken = function () {\n    if (this.currentCharacterToken) {\n        this.tokenQueue.push(this.currentCharacterToken);\n        this.currentCharacterToken = null;\n    }\n};\n\nTokenizer.prototype._emitEOFToken = function () {\n    this._emitCurrentCharacterToken();\n    this.tokenQueue.push({type: Tokenizer.EOF_TOKEN});\n};\n\n//Characters emission\n\n//OPTIMIZATION: specification uses only one type of character tokens (one token per character).\n//This causes a huge memory overhead and a lot of unnecessary parser loops. parse5 uses 3 groups of characters.\n//If we have a sequence of characters that belong to the same group, parser can process it\n//as a single solid character token.\n//So, there are 3 types of character tokens in parse5:\n//1)NULL_CHARACTER_TOKEN - \\u0000-character sequences (e.g. '\\u0000\\u0000\\u0000')\n//2)WHITESPACE_CHARACTER_TOKEN - any whitespace/new-line character sequences (e.g. '\\n  \\r\\t   \\f')\n//3)CHARACTER_TOKEN - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^')\nTokenizer.prototype._appendCharToCurrentCharacterToken = function (type, ch) {\n    if (this.currentCharacterToken && this.currentCharacterToken.type !== type)\n        this._emitCurrentCharacterToken();\n\n    if (this.currentCharacterToken)\n        this.currentCharacterToken.chars += ch;\n\n    else\n        this._createCharacterToken(type, ch);\n};\n\nTokenizer.prototype._emitCodePoint = function (cp) {\n    var type = Tokenizer.CHARACTER_TOKEN;\n\n    if (isWhitespace(cp))\n        type = Tokenizer.WHITESPACE_CHARACTER_TOKEN;\n\n    else if (cp === $.NULL)\n        type = Tokenizer.NULL_CHARACTER_TOKEN;\n\n    this._appendCharToCurrentCharacterToken(type, toChar(cp));\n};\n\nTokenizer.prototype._emitSeveralCodePoints = function (codePoints) {\n    for (var i = 0; i < codePoints.length; i++)\n        this._emitCodePoint(codePoints[i]);\n};\n\n//NOTE: used then we emit character explicitly. This is always a non-whitespace and a non-null character.\n//So we can avoid additional checks here.\nTokenizer.prototype._emitChar = function (ch) {\n    this._appendCharToCurrentCharacterToken(Tokenizer.CHARACTER_TOKEN, ch);\n};\n\n//Character reference tokenization\nTokenizer.prototype._consumeNumericEntity = function (isHex) {\n    var digits = '',\n        nextCp = void 0;\n\n    do {\n        digits += toChar(this._consume());\n        nextCp = this._lookahead();\n    } while (nextCp !== $.EOF && isDigit(nextCp, isHex));\n\n    if (this._lookahead() === $.SEMICOLON)\n        this._consume();\n\n    var referencedCp = parseInt(digits, isHex ? 16 : 10),\n        replacement = NUMERIC_ENTITY_REPLACEMENTS[referencedCp];\n\n    if (replacement)\n        return replacement;\n\n    if (isReservedCodePoint(referencedCp))\n        return $.REPLACEMENT_CHARACTER;\n\n    return referencedCp;\n};\n\nTokenizer.prototype._consumeNamedEntity = function (startCp, inAttr) {\n    var referencedCodePoints = null,\n        entityCodePointsCount = 0,\n        cp = startCp,\n        leaf = NAMED_ENTITY_TRIE[cp],\n        consumedCount = 1,\n        semicolonTerminated = false;\n\n    for (; leaf && cp !== $.EOF; cp = this._consume(), consumedCount++, leaf = leaf.l && leaf.l[cp]) {\n        if (leaf.c) {\n            //NOTE: we have at least one named reference match. But we don't stop lookup at this point,\n            //because longer matches still can be found (e.g. '&not' and '&notin;') except the case\n            //then found match is terminated by semicolon.\n            referencedCodePoints = leaf.c;\n            entityCodePointsCount = consumedCount;\n\n            if (cp === $.SEMICOLON) {\n                semicolonTerminated = true;\n                break;\n            }\n        }\n    }\n\n    if (referencedCodePoints) {\n        if (!semicolonTerminated) {\n            //NOTE: unconsume excess (e.g. 'it' in '&notit')\n            this._unconsumeSeveral(consumedCount - entityCodePointsCount);\n\n            //NOTE: If the character reference is being consumed as part of an attribute and the next character\n            //is either a U+003D EQUALS SIGN character (=) or an alphanumeric ASCII character, then, for historical\n            //reasons, all the characters that were matched after the U+0026 AMPERSAND character (&) must be\n            //unconsumed, and nothing is returned.\n            //However, if this next character is in fact a U+003D EQUALS SIGN character (=), then this is a\n            //parse error, because some legacy user agents will misinterpret the markup in those cases.\n            //(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html#tokenizing-character-references)\n            if (inAttr) {\n                var nextCp = this._lookahead();\n\n                if (nextCp === $.EQUALS_SIGN || isAsciiAlphaNumeric(nextCp)) {\n                    this._unconsumeSeveral(entityCodePointsCount);\n                    return null;\n                }\n            }\n        }\n\n        return referencedCodePoints;\n    }\n\n    this._unconsumeSeveral(consumedCount);\n\n    return null;\n};\n\nTokenizer.prototype._consumeCharacterReference = function (startCp, inAttr) {\n    if (isWhitespace(startCp) || startCp === $.GREATER_THAN_SIGN ||\n        startCp === $.AMPERSAND || startCp === this.additionalAllowedCp || startCp === $.EOF) {\n        //NOTE: not a character reference. No characters are consumed, and nothing is returned.\n        this._unconsume();\n        return null;\n    }\n\n    if (startCp === $.NUMBER_SIGN) {\n        //NOTE: we have a numeric entity candidate, now we should determine if it's hex or decimal\n        var isHex = false,\n            nextCp = this._lookahead();\n\n        if (nextCp === $.LATIN_SMALL_X || nextCp === $.LATIN_CAPITAL_X) {\n            this._consume();\n            isHex = true;\n        }\n\n        nextCp = this._lookahead();\n\n        //NOTE: if we have at least one digit this is a numeric entity for sure, so we consume it\n        if (nextCp !== $.EOF && isDigit(nextCp, isHex))\n            return [this._consumeNumericEntity(isHex)];\n\n        //NOTE: otherwise this is a bogus number entity and a parse error. Unconsume the number sign\n        //and the 'x'-character if appropriate.\n        this._unconsumeSeveral(isHex ? 2 : 1);\n        return null;\n    }\n\n    return this._consumeNamedEntity(startCp, inAttr);\n};\n\n//State machine\nvar _ = Tokenizer.prototype;\n\n//12.2.4.1 Data state\n//------------------------------------------------------------------\n_[DATA_STATE] = function dataState(cp) {\n    this.preprocessor.dropParsedChunk();\n\n    if (cp === $.AMPERSAND)\n        this.state = CHARACTER_REFERENCE_IN_DATA_STATE;\n\n    else if (cp === $.LESS_THAN_SIGN)\n        this.state = TAG_OPEN_STATE;\n\n    else if (cp === $.NULL)\n        this._emitCodePoint(cp);\n\n    else if (cp === $.EOF)\n        this._emitEOFToken();\n\n    else\n        this._emitCodePoint(cp);\n};\n\n\n//12.2.4.2 Character reference in data state\n//------------------------------------------------------------------\n_[CHARACTER_REFERENCE_IN_DATA_STATE] = function characterReferenceInDataState(cp) {\n    this.additionalAllowedCp = void 0;\n\n    var referencedCodePoints = this._consumeCharacterReference(cp, false);\n\n    if (!this._ensureHibernation()) {\n        if (referencedCodePoints)\n            this._emitSeveralCodePoints(referencedCodePoints);\n\n        else\n            this._emitChar('&');\n\n        this.state = DATA_STATE;\n    }\n};\n\n\n//12.2.4.3 RCDATA state\n//------------------------------------------------------------------\n_[RCDATA_STATE] = function rcdataState(cp) {\n    this.preprocessor.dropParsedChunk();\n\n    if (cp === $.AMPERSAND)\n        this.state = CHARACTER_REFERENCE_IN_RCDATA_STATE;\n\n    else if (cp === $.LESS_THAN_SIGN)\n        this.state = RCDATA_LESS_THAN_SIGN_STATE;\n\n    else if (cp === $.NULL)\n        this._emitChar(UNICODE.REPLACEMENT_CHARACTER);\n\n    else if (cp === $.EOF)\n        this._emitEOFToken();\n\n    else\n        this._emitCodePoint(cp);\n};\n\n\n//12.2.4.4 Character reference in RCDATA state\n//------------------------------------------------------------------\n_[CHARACTER_REFERENCE_IN_RCDATA_STATE] = function characterReferenceInRcdataState(cp) {\n    this.additionalAllowedCp = void 0;\n\n    var referencedCodePoints = this._consumeCharacterReference(cp, false);\n\n    if (!this._ensureHibernation()) {\n        if (referencedCodePoints)\n            this._emitSeveralCodePoints(referencedCodePoints);\n\n        else\n            this._emitChar('&');\n\n        this.state = RCDATA_STATE;\n    }\n};\n\n\n//12.2.4.5 RAWTEXT state\n//------------------------------------------------------------------\n_[RAWTEXT_STATE] = function rawtextState(cp) {\n    this.preprocessor.dropParsedChunk();\n\n    if (cp === $.LESS_THAN_SIGN)\n        this.state = RAWTEXT_LESS_THAN_SIGN_STATE;\n\n    else if (cp === $.NULL)\n        this._emitChar(UNICODE.REPLACEMENT_CHARACTER);\n\n    else if (cp === $.EOF)\n        this._emitEOFToken();\n\n    else\n        this._emitCodePoint(cp);\n};\n\n\n//12.2.4.6 Script data state\n//------------------------------------------------------------------\n_[SCRIPT_DATA_STATE] = function scriptDataState(cp) {\n    this.preprocessor.dropParsedChunk();\n\n    if (cp === $.LESS_THAN_SIGN)\n        this.state = SCRIPT_DATA_LESS_THAN_SIGN_STATE;\n\n    else if (cp === $.NULL)\n        this._emitChar(UNICODE.REPLACEMENT_CHARACTER);\n\n    else if (cp === $.EOF)\n        this._emitEOFToken();\n\n    else\n        this._emitCodePoint(cp);\n};\n\n\n//12.2.4.7 PLAINTEXT state\n//------------------------------------------------------------------\n_[PLAINTEXT_STATE] = function plaintextState(cp) {\n    this.preprocessor.dropParsedChunk();\n\n    if (cp === $.NULL)\n        this._emitChar(UNICODE.REPLACEMENT_CHARACTER);\n\n    else if (cp === $.EOF)\n        this._emitEOFToken();\n\n    else\n        this._emitCodePoint(cp);\n};\n\n\n//12.2.4.8 Tag open state\n//------------------------------------------------------------------\n_[TAG_OPEN_STATE] = function tagOpenState(cp) {\n    if (cp === $.EXCLAMATION_MARK)\n        this.state = MARKUP_DECLARATION_OPEN_STATE;\n\n    else if (cp === $.SOLIDUS)\n        this.state = END_TAG_OPEN_STATE;\n\n    else if (isAsciiLetter(cp)) {\n        this._createStartTagToken();\n        this._reconsumeInState(TAG_NAME_STATE);\n    }\n\n    else if (cp === $.QUESTION_MARK)\n        this._reconsumeInState(BOGUS_COMMENT_STATE);\n\n    else {\n        this._emitChar('<');\n        this._reconsumeInState(DATA_STATE);\n    }\n};\n\n\n//12.2.4.9 End tag open state\n//------------------------------------------------------------------\n_[END_TAG_OPEN_STATE] = function endTagOpenState(cp) {\n    if (isAsciiLetter(cp)) {\n        this._createEndTagToken();\n        this._reconsumeInState(TAG_NAME_STATE);\n    }\n\n    else if (cp === $.GREATER_THAN_SIGN)\n        this.state = DATA_STATE;\n\n    else if (cp === $.EOF) {\n        this._reconsumeInState(DATA_STATE);\n        this._emitChar('<');\n        this._emitChar('/');\n    }\n\n    else\n        this._reconsumeInState(BOGUS_COMMENT_STATE);\n};\n\n\n//12.2.4.10 Tag name state\n//------------------------------------------------------------------\n_[TAG_NAME_STATE] = function tagNameState(cp) {\n    if (isWhitespace(cp))\n        this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n\n    else if (cp === $.SOLIDUS)\n        this.state = SELF_CLOSING_START_TAG_STATE;\n\n    else if (cp === $.GREATER_THAN_SIGN) {\n        this.state = DATA_STATE;\n        this._emitCurrentToken();\n    }\n\n    else if (isAsciiUpper(cp))\n        this.currentToken.tagName += toAsciiLowerChar(cp);\n\n    else if (cp === $.NULL)\n        this.currentToken.tagName += UNICODE.REPLACEMENT_CHARACTER;\n\n    else if (cp === $.EOF)\n        this._reconsumeInState(DATA_STATE);\n\n    else\n        this.currentToken.tagName += toChar(cp);\n};\n\n\n//12.2.4.11 RCDATA less-than sign state\n//------------------------------------------------------------------\n_[RCDATA_LESS_THAN_SIGN_STATE] = function rcdataLessThanSignState(cp) {\n    if (cp === $.SOLIDUS) {\n        this.tempBuff = [];\n        this.state = RCDATA_END_TAG_OPEN_STATE;\n    }\n\n    else {\n        this._emitChar('<');\n        this._reconsumeInState(RCDATA_STATE);\n    }\n};\n\n\n//12.2.4.12 RCDATA end tag open state\n//------------------------------------------------------------------\n_[RCDATA_END_TAG_OPEN_STATE] = function rcdataEndTagOpenState(cp) {\n    if (isAsciiLetter(cp)) {\n        this._createEndTagToken();\n        this._reconsumeInState(RCDATA_END_TAG_NAME_STATE);\n    }\n\n    else {\n        this._emitChar('<');\n        this._emitChar('/');\n        this._reconsumeInState(RCDATA_STATE);\n    }\n};\n\n\n//12.2.4.13 RCDATA end tag name state\n//------------------------------------------------------------------\n_[RCDATA_END_TAG_NAME_STATE] = function rcdataEndTagNameState(cp) {\n    if (isAsciiUpper(cp)) {\n        this.currentToken.tagName += toAsciiLowerChar(cp);\n        this.tempBuff.push(cp);\n    }\n\n    else if (isAsciiLower(cp)) {\n        this.currentToken.tagName += toChar(cp);\n        this.tempBuff.push(cp);\n    }\n\n    else {\n        if (this._isAppropriateEndTagToken()) {\n            if (isWhitespace(cp)) {\n                this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n                return;\n            }\n\n            if (cp === $.SOLIDUS) {\n                this.state = SELF_CLOSING_START_TAG_STATE;\n                return;\n            }\n\n            if (cp === $.GREATER_THAN_SIGN) {\n                this.state = DATA_STATE;\n                this._emitCurrentToken();\n                return;\n            }\n        }\n\n        this._emitChar('<');\n        this._emitChar('/');\n        this._emitSeveralCodePoints(this.tempBuff);\n        this._reconsumeInState(RCDATA_STATE);\n    }\n};\n\n\n//12.2.4.14 RAWTEXT less-than sign state\n//------------------------------------------------------------------\n_[RAWTEXT_LESS_THAN_SIGN_STATE] = function rawtextLessThanSignState(cp) {\n    if (cp === $.SOLIDUS) {\n        this.tempBuff = [];\n        this.state = RAWTEXT_END_TAG_OPEN_STATE;\n    }\n\n    else {\n        this._emitChar('<');\n        this._reconsumeInState(RAWTEXT_STATE);\n    }\n};\n\n\n//12.2.4.15 RAWTEXT end tag open state\n//------------------------------------------------------------------\n_[RAWTEXT_END_TAG_OPEN_STATE] = function rawtextEndTagOpenState(cp) {\n    if (isAsciiLetter(cp)) {\n        this._createEndTagToken();\n        this._reconsumeInState(RAWTEXT_END_TAG_NAME_STATE);\n    }\n\n    else {\n        this._emitChar('<');\n        this._emitChar('/');\n        this._reconsumeInState(RAWTEXT_STATE);\n    }\n};\n\n\n//12.2.4.16 RAWTEXT end tag name state\n//------------------------------------------------------------------\n_[RAWTEXT_END_TAG_NAME_STATE] = function rawtextEndTagNameState(cp) {\n    if (isAsciiUpper(cp)) {\n        this.currentToken.tagName += toAsciiLowerChar(cp);\n        this.tempBuff.push(cp);\n    }\n\n    else if (isAsciiLower(cp)) {\n        this.currentToken.tagName += toChar(cp);\n        this.tempBuff.push(cp);\n    }\n\n    else {\n        if (this._isAppropriateEndTagToken()) {\n            if (isWhitespace(cp)) {\n                this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n                return;\n            }\n\n            if (cp === $.SOLIDUS) {\n                this.state = SELF_CLOSING_START_TAG_STATE;\n                return;\n            }\n\n            if (cp === $.GREATER_THAN_SIGN) {\n                this._emitCurrentToken();\n                this.state = DATA_STATE;\n                return;\n            }\n        }\n\n        this._emitChar('<');\n        this._emitChar('/');\n        this._emitSeveralCodePoints(this.tempBuff);\n        this._reconsumeInState(RAWTEXT_STATE);\n    }\n};\n\n\n//12.2.4.17 Script data less-than sign state\n//------------------------------------------------------------------\n_[SCRIPT_DATA_LESS_THAN_SIGN_STATE] = function scriptDataLessThanSignState(cp) {\n    if (cp === $.SOLIDUS) {\n        this.tempBuff = [];\n        this.state = SCRIPT_DATA_END_TAG_OPEN_STATE;\n    }\n\n    else if (cp === $.EXCLAMATION_MARK) {\n        this.state = SCRIPT_DATA_ESCAPE_START_STATE;\n        this._emitChar('<');\n        this._emitChar('!');\n    }\n\n    else {\n        this._emitChar('<');\n        this._reconsumeInState(SCRIPT_DATA_STATE);\n    }\n};\n\n\n//12.2.4.18 Script data end tag open state\n//------------------------------------------------------------------\n_[SCRIPT_DATA_END_TAG_OPEN_STATE] = function scriptDataEndTagOpenState(cp) {\n    if (isAsciiLetter(cp)) {\n        this._createEndTagToken();\n        this._reconsumeInState(SCRIPT_DATA_END_TAG_NAME_STATE);\n    }\n\n    else {\n        this._emitChar('<');\n        this._emitChar('/');\n        this._reconsumeInState(SCRIPT_DATA_STATE);\n    }\n};\n\n\n//12.2.4.19 Script data end tag name state\n//------------------------------------------------------------------\n_[SCRIPT_DATA_END_TAG_NAME_STATE] = function scriptDataEndTagNameState(cp) {\n    if (isAsciiUpper(cp)) {\n        this.currentToken.tagName += toAsciiLowerChar(cp);\n        this.tempBuff.push(cp);\n    }\n\n    else if (isAsciiLower(cp)) {\n        this.currentToken.tagName += toChar(cp);\n        this.tempBuff.push(cp);\n    }\n\n    else {\n        if (this._isAppropriateEndTagToken()) {\n            if (isWhitespace(cp)) {\n                this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n                return;\n            }\n\n            else if (cp === $.SOLIDUS) {\n                this.state = SELF_CLOSING_START_TAG_STATE;\n                return;\n            }\n\n            else if (cp === $.GREATER_THAN_SIGN) {\n                this._emitCurrentToken();\n                this.state = DATA_STATE;\n                return;\n            }\n        }\n\n        this._emitChar('<');\n        this._emitChar('/');\n        this._emitSeveralCodePoints(this.tempBuff);\n        this._reconsumeInState(SCRIPT_DATA_STATE);\n    }\n};\n\n\n//12.2.4.20 Script data escape start state\n//------------------------------------------------------------------\n_[SCRIPT_DATA_ESCAPE_START_STATE] = function scriptDataEscapeStartState(cp) {\n    if (cp === $.HYPHEN_MINUS) {\n        this.state = SCRIPT_DATA_ESCAPE_START_DASH_STATE;\n        this._emitChar('-');\n    }\n\n    else\n        this._reconsumeInState(SCRIPT_DATA_STATE);\n};\n\n\n//12.2.4.21 Script data escape start dash state\n//------------------------------------------------------------------\n_[SCRIPT_DATA_ESCAPE_START_DASH_STATE] = function scriptDataEscapeStartDashState(cp) {\n    if (cp === $.HYPHEN_MINUS) {\n        this.state = SCRIPT_DATA_ESCAPED_DASH_DASH_STATE;\n        this._emitChar('-');\n    }\n\n    else\n        this._reconsumeInState(SCRIPT_DATA_STATE);\n};\n\n\n//12.2.4.22 Script data escaped state\n//------------------------------------------------------------------\n_[SCRIPT_DATA_ESCAPED_STATE] = function scriptDataEscapedState(cp) {\n    if (cp === $.HYPHEN_MINUS) {\n        this.state = SCRIPT_DATA_ESCAPED_DASH_STATE;\n        this._emitChar('-');\n    }\n\n    else if (cp === $.LESS_THAN_SIGN)\n        this.state = SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE;\n\n    else if (cp === $.NULL)\n        this._emitChar(UNICODE.REPLACEMENT_CHARACTER);\n\n    else if (cp === $.EOF)\n        this._reconsumeInState(DATA_STATE);\n\n    else\n        this._emitCodePoint(cp);\n};\n\n\n//12.2.4.23 Script data escaped dash state\n//------------------------------------------------------------------\n_[SCRIPT_DATA_ESCAPED_DASH_STATE] = function scriptDataEscapedDashState(cp) {\n    if (cp === $.HYPHEN_MINUS) {\n        this.state = SCRIPT_DATA_ESCAPED_DASH_DASH_STATE;\n        this._emitChar('-');\n    }\n\n    else if (cp === $.LESS_THAN_SIGN)\n        this.state = SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE;\n\n    else if (cp === $.NULL) {\n        this.state = SCRIPT_DATA_ESCAPED_STATE;\n        this._emitChar(UNICODE.REPLACEMENT_CHARACTER);\n    }\n\n    else if (cp === $.EOF)\n        this._reconsumeInState(DATA_STATE);\n\n    else {\n        this.state = SCRIPT_DATA_ESCAPED_STATE;\n        this._emitCodePoint(cp);\n    }\n};\n\n\n//12.2.4.24 Script data escaped dash dash state\n//------------------------------------------------------------------\n_[SCRIPT_DATA_ESCAPED_DASH_DASH_STATE] = function scriptDataEscapedDashDashState(cp) {\n    if (cp === $.HYPHEN_MINUS)\n        this._emitChar('-');\n\n    else if (cp === $.LESS_THAN_SIGN)\n        this.state = SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE;\n\n    else if (cp === $.GREATER_THAN_SIGN) {\n        this.state = SCRIPT_DATA_STATE;\n        this._emitChar('>');\n    }\n\n    else if (cp === $.NULL) {\n        this.state = SCRIPT_DATA_ESCAPED_STATE;\n        this._emitChar(UNICODE.REPLACEMENT_CHARACTER);\n    }\n\n    else if (cp === $.EOF)\n        this._reconsumeInState(DATA_STATE);\n\n    else {\n        this.state = SCRIPT_DATA_ESCAPED_STATE;\n        this._emitCodePoint(cp);\n    }\n};\n\n\n//12.2.4.25 Script data escaped less-than sign state\n//------------------------------------------------------------------\n_[SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE] = function scriptDataEscapedLessThanSignState(cp) {\n    if (cp === $.SOLIDUS) {\n        this.tempBuff = [];\n        this.state = SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE;\n    }\n\n    else if (isAsciiLetter(cp)) {\n        this.tempBuff = [];\n        this._emitChar('<');\n        this._reconsumeInState(SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE);\n    }\n\n    else {\n        this._emitChar('<');\n        this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);\n    }\n};\n\n\n//12.2.4.26 Script data escaped end tag open state\n//------------------------------------------------------------------\n_[SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE] = function scriptDataEscapedEndTagOpenState(cp) {\n    if (isAsciiLetter(cp)) {\n        this._createEndTagToken();\n        this._reconsumeInState(SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE);\n    }\n\n    else {\n        this._emitChar('<');\n        this._emitChar('/');\n        this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);\n    }\n};\n\n\n//12.2.4.27 Script data escaped end tag name state\n//------------------------------------------------------------------\n_[SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE] = function scriptDataEscapedEndTagNameState(cp) {\n    if (isAsciiUpper(cp)) {\n        this.currentToken.tagName += toAsciiLowerChar(cp);\n        this.tempBuff.push(cp);\n    }\n\n    else if (isAsciiLower(cp)) {\n        this.currentToken.tagName += toChar(cp);\n        this.tempBuff.push(cp);\n    }\n\n    else {\n        if (this._isAppropriateEndTagToken()) {\n            if (isWhitespace(cp)) {\n                this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n                return;\n            }\n\n            if (cp === $.SOLIDUS) {\n                this.state = SELF_CLOSING_START_TAG_STATE;\n                return;\n            }\n\n            if (cp === $.GREATER_THAN_SIGN) {\n                this._emitCurrentToken();\n                this.state = DATA_STATE;\n                return;\n            }\n        }\n\n        this._emitChar('<');\n        this._emitChar('/');\n        this._emitSeveralCodePoints(this.tempBuff);\n        this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);\n    }\n};\n\n\n//12.2.4.28 Script data double escape start state\n//------------------------------------------------------------------\n_[SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE] = function scriptDataDoubleEscapeStartState(cp) {\n    if (isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN) {\n        this.state = this.isTempBufferEqualToScriptString() ? SCRIPT_DATA_DOUBLE_ESCAPED_STATE : SCRIPT_DATA_ESCAPED_STATE;\n        this._emitCodePoint(cp);\n    }\n\n    else if (isAsciiUpper(cp)) {\n        this.tempBuff.push(toAsciiLowerCodePoint(cp));\n        this._emitCodePoint(cp);\n    }\n\n    else if (isAsciiLower(cp)) {\n        this.tempBuff.push(cp);\n        this._emitCodePoint(cp);\n    }\n\n    else\n        this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);\n};\n\n\n//12.2.4.29 Script data double escaped state\n//------------------------------------------------------------------\n_[SCRIPT_DATA_DOUBLE_ESCAPED_STATE] = function scriptDataDoubleEscapedState(cp) {\n    if (cp === $.HYPHEN_MINUS) {\n        this.state = SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE;\n        this._emitChar('-');\n    }\n\n    else if (cp === $.LESS_THAN_SIGN) {\n        this.state = SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE;\n        this._emitChar('<');\n    }\n\n    else if (cp === $.NULL)\n        this._emitChar(UNICODE.REPLACEMENT_CHARACTER);\n\n    else if (cp === $.EOF)\n        this._reconsumeInState(DATA_STATE);\n\n    else\n        this._emitCodePoint(cp);\n};\n\n\n//12.2.4.30 Script data double escaped dash state\n//------------------------------------------------------------------\n_[SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE] = function scriptDataDoubleEscapedDashState(cp) {\n    if (cp === $.HYPHEN_MINUS) {\n        this.state = SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE;\n        this._emitChar('-');\n    }\n\n    else if (cp === $.LESS_THAN_SIGN) {\n        this.state = SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE;\n        this._emitChar('<');\n    }\n\n    else if (cp === $.NULL) {\n        this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n        this._emitChar(UNICODE.REPLACEMENT_CHARACTER);\n    }\n\n    else if (cp === $.EOF)\n        this._reconsumeInState(DATA_STATE);\n\n    else {\n        this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n        this._emitCodePoint(cp);\n    }\n};\n\n\n//12.2.4.31 Script data double escaped dash dash state\n//------------------------------------------------------------------\n_[SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE] = function scriptDataDoubleEscapedDashDashState(cp) {\n    if (cp === $.HYPHEN_MINUS)\n        this._emitChar('-');\n\n    else if (cp === $.LESS_THAN_SIGN) {\n        this.state = SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE;\n        this._emitChar('<');\n    }\n\n    else if (cp === $.GREATER_THAN_SIGN) {\n        this.state = SCRIPT_DATA_STATE;\n        this._emitChar('>');\n    }\n\n    else if (cp === $.NULL) {\n        this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n        this._emitChar(UNICODE.REPLACEMENT_CHARACTER);\n    }\n\n    else if (cp === $.EOF)\n        this._reconsumeInState(DATA_STATE);\n\n    else {\n        this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n        this._emitCodePoint(cp);\n    }\n};\n\n\n//12.2.4.32 Script data double escaped less-than sign state\n//------------------------------------------------------------------\n_[SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE] = function scriptDataDoubleEscapedLessThanSignState(cp) {\n    if (cp === $.SOLIDUS) {\n        this.tempBuff = [];\n        this.state = SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE;\n        this._emitChar('/');\n    }\n\n    else\n        this._reconsumeInState(SCRIPT_DATA_DOUBLE_ESCAPED_STATE);\n};\n\n\n//12.2.4.33 Script data double escape end state\n//------------------------------------------------------------------\n_[SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE] = function scriptDataDoubleEscapeEndState(cp) {\n    if (isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN) {\n        this.state = this.isTempBufferEqualToScriptString() ? SCRIPT_DATA_ESCAPED_STATE : SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n\n        this._emitCodePoint(cp);\n    }\n\n    else if (isAsciiUpper(cp)) {\n        this.tempBuff.push(toAsciiLowerCodePoint(cp));\n        this._emitCodePoint(cp);\n    }\n\n    else if (isAsciiLower(cp)) {\n        this.tempBuff.push(cp);\n        this._emitCodePoint(cp);\n    }\n\n    else\n        this._reconsumeInState(SCRIPT_DATA_DOUBLE_ESCAPED_STATE);\n};\n\n\n//12.2.4.34 Before attribute name state\n//------------------------------------------------------------------\n_[BEFORE_ATTRIBUTE_NAME_STATE] = function beforeAttributeNameState(cp) {\n    if (isWhitespace(cp))\n        return;\n\n    if (cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN || cp === $.EOF)\n        this._reconsumeInState(AFTER_ATTRIBUTE_NAME_STATE);\n\n    else if (cp === $.EQUALS_SIGN) {\n        this._createAttr('=');\n        this.state = ATTRIBUTE_NAME_STATE;\n    }\n\n    else {\n        this._createAttr('');\n        this._reconsumeInState(ATTRIBUTE_NAME_STATE);\n    }\n};\n\n\n//12.2.4.35 Attribute name state\n//------------------------------------------------------------------\n_[ATTRIBUTE_NAME_STATE] = function attributeNameState(cp) {\n    if (isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN || cp === $.EOF) {\n        this._leaveAttrName(AFTER_ATTRIBUTE_NAME_STATE);\n        this._unconsume();\n    }\n\n    else if (cp === $.EQUALS_SIGN)\n        this._leaveAttrName(BEFORE_ATTRIBUTE_VALUE_STATE);\n\n    else if (isAsciiUpper(cp))\n        this.currentAttr.name += toAsciiLowerChar(cp);\n\n    else if (cp === $.QUOTATION_MARK || cp === $.APOSTROPHE || cp === $.LESS_THAN_SIGN)\n        this.currentAttr.name += toChar(cp);\n\n    else if (cp === $.NULL)\n        this.currentAttr.name += UNICODE.REPLACEMENT_CHARACTER;\n\n    else\n        this.currentAttr.name += toChar(cp);\n};\n\n\n//12.2.4.36 After attribute name state\n//------------------------------------------------------------------\n_[AFTER_ATTRIBUTE_NAME_STATE] = function afterAttributeNameState(cp) {\n    if (isWhitespace(cp))\n        return;\n\n    if (cp === $.SOLIDUS)\n        this.state = SELF_CLOSING_START_TAG_STATE;\n\n    else if (cp === $.EQUALS_SIGN)\n        this.state = BEFORE_ATTRIBUTE_VALUE_STATE;\n\n    else if (cp === $.GREATER_THAN_SIGN) {\n        this.state = DATA_STATE;\n        this._emitCurrentToken();\n    }\n\n    else if (cp === $.EOF)\n        this._reconsumeInState(DATA_STATE);\n\n    else {\n        this._createAttr('');\n        this._reconsumeInState(ATTRIBUTE_NAME_STATE);\n    }\n};\n\n\n//12.2.4.37 Before attribute value state\n//------------------------------------------------------------------\n_[BEFORE_ATTRIBUTE_VALUE_STATE] = function beforeAttributeValueState(cp) {\n    if (isWhitespace(cp))\n        return;\n\n    if (cp === $.QUOTATION_MARK)\n        this.state = ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE;\n\n    else if (cp === $.APOSTROPHE)\n        this.state = ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE;\n\n    else\n        this._reconsumeInState(ATTRIBUTE_VALUE_UNQUOTED_STATE);\n};\n\n\n//12.2.4.38 Attribute value (double-quoted) state\n//------------------------------------------------------------------\n_[ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE] = function attributeValueDoubleQuotedState(cp) {\n    if (cp === $.QUOTATION_MARK)\n        this.state = AFTER_ATTRIBUTE_VALUE_QUOTED_STATE;\n\n    else if (cp === $.AMPERSAND) {\n        this.additionalAllowedCp = $.QUOTATION_MARK;\n        this.returnState = this.state;\n        this.state = CHARACTER_REFERENCE_IN_ATTRIBUTE_VALUE_STATE;\n    }\n\n    else if (cp === $.NULL)\n        this.currentAttr.value += UNICODE.REPLACEMENT_CHARACTER;\n\n    else if (cp === $.EOF)\n        this._reconsumeInState(DATA_STATE);\n\n    else\n        this.currentAttr.value += toChar(cp);\n};\n\n\n//12.2.4.39 Attribute value (single-quoted) state\n//------------------------------------------------------------------\n_[ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE] = function attributeValueSingleQuotedState(cp) {\n    if (cp === $.APOSTROPHE)\n        this.state = AFTER_ATTRIBUTE_VALUE_QUOTED_STATE;\n\n    else if (cp === $.AMPERSAND) {\n        this.additionalAllowedCp = $.APOSTROPHE;\n        this.returnState = this.state;\n        this.state = CHARACTER_REFERENCE_IN_ATTRIBUTE_VALUE_STATE;\n    }\n\n    else if (cp === $.NULL)\n        this.currentAttr.value += UNICODE.REPLACEMENT_CHARACTER;\n\n    else if (cp === $.EOF)\n        this._reconsumeInState(DATA_STATE);\n\n    else\n        this.currentAttr.value += toChar(cp);\n};\n\n\n//12.2.4.40 Attribute value (unquoted) state\n//------------------------------------------------------------------\n_[ATTRIBUTE_VALUE_UNQUOTED_STATE] = function attributeValueUnquotedState(cp) {\n    if (isWhitespace(cp))\n        this._leaveAttrValue(BEFORE_ATTRIBUTE_NAME_STATE);\n\n    else if (cp === $.AMPERSAND) {\n        this.additionalAllowedCp = $.GREATER_THAN_SIGN;\n        this.returnState = this.state;\n        this.state = CHARACTER_REFERENCE_IN_ATTRIBUTE_VALUE_STATE;\n    }\n\n    else if (cp === $.GREATER_THAN_SIGN) {\n        this._leaveAttrValue(DATA_STATE);\n        this._emitCurrentToken();\n    }\n\n    else if (cp === $.NULL)\n        this.currentAttr.value += UNICODE.REPLACEMENT_CHARACTER;\n\n    else if (cp === $.QUOTATION_MARK || cp === $.APOSTROPHE || cp === $.LESS_THAN_SIGN ||\n             cp === $.EQUALS_SIGN || cp === $.GRAVE_ACCENT)\n        this.currentAttr.value += toChar(cp);\n\n    else if (cp === $.EOF)\n        this._reconsumeInState(DATA_STATE);\n\n    else\n        this.currentAttr.value += toChar(cp);\n};\n\n\n//12.2.4.41 Character reference in attribute value state\n//------------------------------------------------------------------\n_[CHARACTER_REFERENCE_IN_ATTRIBUTE_VALUE_STATE] = function characterReferenceInAttributeValueState(cp) {\n    var referencedCodePoints = this._consumeCharacterReference(cp, true);\n\n    if (!this._ensureHibernation()) {\n        if (referencedCodePoints) {\n            for (var i = 0; i < referencedCodePoints.length; i++)\n                this.currentAttr.value += toChar(referencedCodePoints[i]);\n        }\n        else\n            this.currentAttr.value += '&';\n\n        this.state = this.returnState;\n    }\n};\n\n\n//12.2.4.42 After attribute value (quoted) state\n//------------------------------------------------------------------\n_[AFTER_ATTRIBUTE_VALUE_QUOTED_STATE] = function afterAttributeValueQuotedState(cp) {\n    if (isWhitespace(cp))\n        this._leaveAttrValue(BEFORE_ATTRIBUTE_NAME_STATE);\n\n    else if (cp === $.SOLIDUS)\n        this._leaveAttrValue(SELF_CLOSING_START_TAG_STATE);\n\n    else if (cp === $.GREATER_THAN_SIGN) {\n        this._leaveAttrValue(DATA_STATE);\n        this._emitCurrentToken();\n    }\n\n    else if (cp === $.EOF)\n        this._reconsumeInState(DATA_STATE);\n\n    else\n        this._reconsumeInState(BEFORE_ATTRIBUTE_NAME_STATE);\n};\n\n\n//12.2.4.43 Self-closing start tag state\n//------------------------------------------------------------------\n_[SELF_CLOSING_START_TAG_STATE] = function selfClosingStartTagState(cp) {\n    if (cp === $.GREATER_THAN_SIGN) {\n        this.currentToken.selfClosing = true;\n        this.state = DATA_STATE;\n        this._emitCurrentToken();\n    }\n\n    else if (cp === $.EOF)\n        this._reconsumeInState(DATA_STATE);\n\n    else\n        this._reconsumeInState(BEFORE_ATTRIBUTE_NAME_STATE);\n};\n\n\n//12.2.4.44 Bogus comment state\n//------------------------------------------------------------------\n_[BOGUS_COMMENT_STATE] = function bogusCommentState() {\n    this._createCommentToken();\n    this._reconsumeInState(BOGUS_COMMENT_STATE_CONTINUATION);\n};\n\n//HACK: to support streaming and make BOGUS_COMMENT_STATE reentrant we've\n//introduced BOGUS_COMMENT_STATE_CONTINUATION state which will not produce\n//comment token on each call.\n_[BOGUS_COMMENT_STATE_CONTINUATION] = function bogusCommentStateContinuation(cp) {\n    while (true) {\n        if (cp === $.GREATER_THAN_SIGN) {\n            this.state = DATA_STATE;\n            break;\n        }\n\n        else if (cp === $.EOF) {\n            this._reconsumeInState(DATA_STATE);\n            break;\n        }\n\n        else {\n            this.currentToken.data += cp === $.NULL ? UNICODE.REPLACEMENT_CHARACTER : toChar(cp);\n\n            this._hibernationSnapshot();\n            cp = this._consume();\n\n            if (this._ensureHibernation())\n                return;\n        }\n    }\n\n    this._emitCurrentToken();\n};\n\n//12.2.4.45 Markup declaration open state\n//------------------------------------------------------------------\n_[MARKUP_DECLARATION_OPEN_STATE] = function markupDeclarationOpenState(cp) {\n    var dashDashMatch = this._consumeSubsequentIfMatch($$.DASH_DASH_STRING, cp, true),\n        doctypeMatch = !dashDashMatch && this._consumeSubsequentIfMatch($$.DOCTYPE_STRING, cp, false),\n        cdataMatch = !dashDashMatch && !doctypeMatch &&\n                     this.allowCDATA &&\n                     this._consumeSubsequentIfMatch($$.CDATA_START_STRING, cp, true);\n\n    if (!this._ensureHibernation()) {\n        if (dashDashMatch) {\n            this._createCommentToken();\n            this.state = COMMENT_START_STATE;\n        }\n\n        else if (doctypeMatch)\n            this.state = DOCTYPE_STATE;\n\n        else if (cdataMatch)\n            this.state = CDATA_SECTION_STATE;\n\n        else\n            this._reconsumeInState(BOGUS_COMMENT_STATE);\n    }\n};\n\n\n//12.2.4.46 Comment start state\n//------------------------------------------------------------------\n_[COMMENT_START_STATE] = function commentStartState(cp) {\n    if (cp === $.HYPHEN_MINUS)\n        this.state = COMMENT_START_DASH_STATE;\n\n    else if (cp === $.NULL) {\n        this.currentToken.data += UNICODE.REPLACEMENT_CHARACTER;\n        this.state = COMMENT_STATE;\n    }\n\n    else if (cp === $.GREATER_THAN_SIGN) {\n        this.state = DATA_STATE;\n        this._emitCurrentToken();\n    }\n\n    else if (cp === $.EOF) {\n        this._emitCurrentToken();\n        this._reconsumeInState(DATA_STATE);\n    }\n\n    else {\n        this.currentToken.data += toChar(cp);\n        this.state = COMMENT_STATE;\n    }\n};\n\n\n//12.2.4.47 Comment start dash state\n//------------------------------------------------------------------\n_[COMMENT_START_DASH_STATE] = function commentStartDashState(cp) {\n    if (cp === $.HYPHEN_MINUS)\n        this.state = COMMENT_END_STATE;\n\n    else if (cp === $.NULL) {\n        this.currentToken.data += '-';\n        this.currentToken.data += UNICODE.REPLACEMENT_CHARACTER;\n        this.state = COMMENT_STATE;\n    }\n\n    else if (cp === $.GREATER_THAN_SIGN) {\n        this.state = DATA_STATE;\n        this._emitCurrentToken();\n    }\n\n    else if (cp === $.EOF) {\n        this._emitCurrentToken();\n        this._reconsumeInState(DATA_STATE);\n    }\n\n    else {\n        this.currentToken.data += '-';\n        this.currentToken.data += toChar(cp);\n        this.state = COMMENT_STATE;\n    }\n};\n\n\n//12.2.4.48 Comment state\n//------------------------------------------------------------------\n_[COMMENT_STATE] = function commentState(cp) {\n    if (cp === $.HYPHEN_MINUS)\n        this.state = COMMENT_END_DASH_STATE;\n\n    else if (cp === $.NULL)\n        this.currentToken.data += UNICODE.REPLACEMENT_CHARACTER;\n\n    else if (cp === $.EOF) {\n        this._emitCurrentToken();\n        this._reconsumeInState(DATA_STATE);\n    }\n\n    else\n        this.currentToken.data += toChar(cp);\n};\n\n\n//12.2.4.49 Comment end dash state\n//------------------------------------------------------------------\n_[COMMENT_END_DASH_STATE] = function commentEndDashState(cp) {\n    if (cp === $.HYPHEN_MINUS)\n        this.state = COMMENT_END_STATE;\n\n    else if (cp === $.NULL) {\n        this.currentToken.data += '-';\n        this.currentToken.data += UNICODE.REPLACEMENT_CHARACTER;\n        this.state = COMMENT_STATE;\n    }\n\n    else if (cp === $.EOF) {\n        this._emitCurrentToken();\n        this._reconsumeInState(DATA_STATE);\n    }\n\n    else {\n        this.currentToken.data += '-';\n        this.currentToken.data += toChar(cp);\n        this.state = COMMENT_STATE;\n    }\n};\n\n\n//12.2.4.50 Comment end state\n//------------------------------------------------------------------\n_[COMMENT_END_STATE] = function commentEndState(cp) {\n    if (cp === $.GREATER_THAN_SIGN) {\n        this.state = DATA_STATE;\n        this._emitCurrentToken();\n    }\n\n    else if (cp === $.EXCLAMATION_MARK)\n        this.state = COMMENT_END_BANG_STATE;\n\n    else if (cp === $.HYPHEN_MINUS)\n        this.currentToken.data += '-';\n\n    else if (cp === $.NULL) {\n        this.currentToken.data += '--';\n        this.currentToken.data += UNICODE.REPLACEMENT_CHARACTER;\n        this.state = COMMENT_STATE;\n    }\n\n    else if (cp === $.EOF) {\n        this._reconsumeInState(DATA_STATE);\n        this._emitCurrentToken();\n    }\n\n    else {\n        this.currentToken.data += '--';\n        this.currentToken.data += toChar(cp);\n        this.state = COMMENT_STATE;\n    }\n};\n\n\n//12.2.4.51 Comment end bang state\n//------------------------------------------------------------------\n_[COMMENT_END_BANG_STATE] = function commentEndBangState(cp) {\n    if (cp === $.HYPHEN_MINUS) {\n        this.currentToken.data += '--!';\n        this.state = COMMENT_END_DASH_STATE;\n    }\n\n    else if (cp === $.GREATER_THAN_SIGN) {\n        this.state = DATA_STATE;\n        this._emitCurrentToken();\n    }\n\n    else if (cp === $.NULL) {\n        this.currentToken.data += '--!';\n        this.currentToken.data += UNICODE.REPLACEMENT_CHARACTER;\n        this.state = COMMENT_STATE;\n    }\n\n    else if (cp === $.EOF) {\n        this._emitCurrentToken();\n        this._reconsumeInState(DATA_STATE);\n    }\n\n    else {\n        this.currentToken.data += '--!';\n        this.currentToken.data += toChar(cp);\n        this.state = COMMENT_STATE;\n    }\n};\n\n\n//12.2.4.52 DOCTYPE state\n//------------------------------------------------------------------\n_[DOCTYPE_STATE] = function doctypeState(cp) {\n    if (isWhitespace(cp))\n        return;\n\n    else if (cp === $.GREATER_THAN_SIGN) {\n        this._createDoctypeToken(null);\n        this.currentToken.forceQuirks = true;\n        this._emitCurrentToken();\n        this.state = DATA_STATE;\n    }\n\n    else if (cp === $.EOF) {\n        this._createDoctypeToken(null);\n        this.currentToken.forceQuirks = true;\n        this._emitCurrentToken();\n        this._reconsumeInState(DATA_STATE);\n    }\n    else {\n        this._createDoctypeToken('');\n        this._reconsumeInState(DOCTYPE_NAME_STATE);\n    }\n};\n\n\n//12.2.4.54 DOCTYPE name state\n//------------------------------------------------------------------\n_[DOCTYPE_NAME_STATE] = function doctypeNameState(cp) {\n    if (isWhitespace(cp) || cp === $.GREATER_THAN_SIGN || cp === $.EOF)\n        this._reconsumeInState(AFTER_DOCTYPE_NAME_STATE);\n\n    else if (isAsciiUpper(cp))\n        this.currentToken.name += toAsciiLowerChar(cp);\n\n    else if (cp === $.NULL)\n        this.currentToken.name += UNICODE.REPLACEMENT_CHARACTER;\n\n    else\n        this.currentToken.name += toChar(cp);\n};\n\n\n//12.2.4.55 After DOCTYPE name state\n//------------------------------------------------------------------\n_[AFTER_DOCTYPE_NAME_STATE] = function afterDoctypeNameState(cp) {\n    if (isWhitespace(cp))\n        return;\n\n    if (cp === $.GREATER_THAN_SIGN) {\n        this.state = DATA_STATE;\n        this._emitCurrentToken();\n    }\n\n    else {\n        var publicMatch = this._consumeSubsequentIfMatch($$.PUBLIC_STRING, cp, false),\n            systemMatch = !publicMatch && this._consumeSubsequentIfMatch($$.SYSTEM_STRING, cp, false);\n\n        if (!this._ensureHibernation()) {\n            if (publicMatch)\n                this.state = BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE;\n\n            else if (systemMatch)\n                this.state = BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE;\n\n            else {\n                this.currentToken.forceQuirks = true;\n                this.state = BOGUS_DOCTYPE_STATE;\n            }\n        }\n    }\n};\n\n\n//12.2.4.57 Before DOCTYPE public identifier state\n//------------------------------------------------------------------\n_[BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE] = function beforeDoctypePublicIdentifierState(cp) {\n    if (isWhitespace(cp))\n        return;\n\n    if (cp === $.QUOTATION_MARK) {\n        this.currentToken.publicId = '';\n        this.state = DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE;\n    }\n\n    else if (cp === $.APOSTROPHE) {\n        this.currentToken.publicId = '';\n        this.state = DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE;\n    }\n\n    else {\n        this.currentToken.forceQuirks = true;\n        this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n    }\n};\n\n\n//12.2.4.58 DOCTYPE public identifier (double-quoted) state\n//------------------------------------------------------------------\n_[DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE] = function doctypePublicIdentifierDoubleQuotedState(cp) {\n    if (cp === $.QUOTATION_MARK)\n        this.state = BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE;\n\n    else if (cp === $.NULL)\n        this.currentToken.publicId += UNICODE.REPLACEMENT_CHARACTER;\n\n    else if (cp === $.GREATER_THAN_SIGN) {\n        this.currentToken.forceQuirks = true;\n        this._emitCurrentToken();\n        this.state = DATA_STATE;\n    }\n\n    else if (cp === $.EOF) {\n        this.currentToken.forceQuirks = true;\n        this._emitCurrentToken();\n        this._reconsumeInState(DATA_STATE);\n    }\n\n    else\n        this.currentToken.publicId += toChar(cp);\n};\n\n\n//12.2.4.59 DOCTYPE public identifier (single-quoted) state\n//------------------------------------------------------------------\n_[DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE] = function doctypePublicIdentifierSingleQuotedState(cp) {\n    if (cp === $.APOSTROPHE)\n        this.state = BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE;\n\n    else if (cp === $.NULL)\n        this.currentToken.publicId += UNICODE.REPLACEMENT_CHARACTER;\n\n    else if (cp === $.GREATER_THAN_SIGN) {\n        this.currentToken.forceQuirks = true;\n        this._emitCurrentToken();\n        this.state = DATA_STATE;\n    }\n\n    else if (cp === $.EOF) {\n        this.currentToken.forceQuirks = true;\n        this._emitCurrentToken();\n        this._reconsumeInState(DATA_STATE);\n    }\n\n    else\n        this.currentToken.publicId += toChar(cp);\n};\n\n\n//12.2.4.61 Between DOCTYPE public and system identifiers state\n//------------------------------------------------------------------\n_[BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE] = function betweenDoctypePublicAndSystemIdentifiersState(cp) {\n    if (isWhitespace(cp))\n        return;\n\n    if (cp === $.GREATER_THAN_SIGN) {\n        this._emitCurrentToken();\n        this.state = DATA_STATE;\n    }\n\n    else if (cp === $.QUOTATION_MARK) {\n        this.currentToken.systemId = '';\n        this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;\n    }\n\n\n    else if (cp === $.APOSTROPHE) {\n        this.currentToken.systemId = '';\n        this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;\n    }\n\n    else {\n        this.currentToken.forceQuirks = true;\n        this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n    }\n};\n\n\n//12.2.4.63 Before DOCTYPE system identifier state\n//------------------------------------------------------------------\n_[BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE] = function beforeDoctypeSystemIdentifierState(cp) {\n    if (isWhitespace(cp))\n        return;\n\n    if (cp === $.QUOTATION_MARK) {\n        this.currentToken.systemId = '';\n        this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;\n    }\n\n    else if (cp === $.APOSTROPHE) {\n        this.currentToken.systemId = '';\n        this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;\n    }\n\n    else {\n        this.currentToken.forceQuirks = true;\n        this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n    }\n};\n\n\n//12.2.4.64 DOCTYPE system identifier (double-quoted) state\n//------------------------------------------------------------------\n_[DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE] = function doctypeSystemIdentifierDoubleQuotedState(cp) {\n    if (cp === $.QUOTATION_MARK)\n        this.state = AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE;\n\n    else if (cp === $.GREATER_THAN_SIGN) {\n        this.currentToken.forceQuirks = true;\n        this._emitCurrentToken();\n        this.state = DATA_STATE;\n    }\n\n    else if (cp === $.NULL)\n        this.currentToken.systemId += UNICODE.REPLACEMENT_CHARACTER;\n\n    else if (cp === $.EOF) {\n        this.currentToken.forceQuirks = true;\n        this._emitCurrentToken();\n        this._reconsumeInState(DATA_STATE);\n    }\n\n    else\n        this.currentToken.systemId += toChar(cp);\n};\n\n\n//12.2.4.65 DOCTYPE system identifier (single-quoted) state\n//------------------------------------------------------------------\n_[DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE] = function doctypeSystemIdentifierSingleQuotedState(cp) {\n    if (cp === $.APOSTROPHE)\n        this.state = AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE;\n\n    else if (cp === $.GREATER_THAN_SIGN) {\n        this.currentToken.forceQuirks = true;\n        this._emitCurrentToken();\n        this.state = DATA_STATE;\n    }\n\n    else if (cp === $.NULL)\n        this.currentToken.systemId += UNICODE.REPLACEMENT_CHARACTER;\n\n    else if (cp === $.EOF) {\n        this.currentToken.forceQuirks = true;\n        this._emitCurrentToken();\n        this._reconsumeInState(DATA_STATE);\n    }\n\n    else\n        this.currentToken.systemId += toChar(cp);\n};\n\n\n//12.2.4.66 After DOCTYPE system identifier state\n//------------------------------------------------------------------\n_[AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE] = function afterDoctypeSystemIdentifierState(cp) {\n    if (isWhitespace(cp))\n        return;\n\n    if (cp === $.GREATER_THAN_SIGN) {\n        this._emitCurrentToken();\n        this.state = DATA_STATE;\n    }\n\n    else if (cp === $.EOF) {\n        this.currentToken.forceQuirks = true;\n        this._emitCurrentToken();\n        this._reconsumeInState(DATA_STATE);\n    }\n\n    else\n        this.state = BOGUS_DOCTYPE_STATE;\n};\n\n\n//12.2.4.67 Bogus DOCTYPE state\n//------------------------------------------------------------------\n_[BOGUS_DOCTYPE_STATE] = function bogusDoctypeState(cp) {\n    if (cp === $.GREATER_THAN_SIGN) {\n        this._emitCurrentToken();\n        this.state = DATA_STATE;\n    }\n\n    else if (cp === $.EOF) {\n        this._emitCurrentToken();\n        this._reconsumeInState(DATA_STATE);\n    }\n};\n\n\n//12.2.4.68 CDATA section state\n//------------------------------------------------------------------\n_[CDATA_SECTION_STATE] = function cdataSectionState(cp) {\n    while (true) {\n        if (cp === $.EOF) {\n            this._reconsumeInState(DATA_STATE);\n            break;\n        }\n\n        else {\n            var cdataEndMatch = this._consumeSubsequentIfMatch($$.CDATA_END_STRING, cp, true);\n\n            if (this._ensureHibernation())\n                break;\n\n            if (cdataEndMatch) {\n                this.state = DATA_STATE;\n                break;\n            }\n\n            this._emitCodePoint(cp);\n\n            this._hibernationSnapshot();\n            cp = this._consume();\n\n            if (this._ensureHibernation())\n                break;\n        }\n    }\n};\n","'use strict';\r\n\r\n//NOTE: this file contains auto-generated trie structure that is used for named entity references consumption\r\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html#tokenizing-character-references and\r\n//http://www.whatwg.org/specs/web-apps/current-work/multipage/named-character-references.html#named-character-references)\r\nmodule.exports = {65:{l:{69:{l:{108:{l:{105:{l:{103:{l:{59:{c:[198]}},c:[198]}}}}}}},77:{l:{80:{l:{59:{c:[38]}},c:[38]}}},97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[193]}},c:[193]}}}}}}}}},98:{l:{114:{l:{101:{l:{118:{l:{101:{l:{59:{c:[258]}}}}}}}}}}},99:{l:{105:{l:{114:{l:{99:{l:{59:{c:[194]}},c:[194]}}}}},121:{l:{59:{c:[1040]}}}}},102:{l:{114:{l:{59:{c:[120068]}}}}},103:{l:{114:{l:{97:{l:{118:{l:{101:{l:{59:{c:[192]}},c:[192]}}}}}}}}},108:{l:{112:{l:{104:{l:{97:{l:{59:{c:[913]}}}}}}}}},109:{l:{97:{l:{99:{l:{114:{l:{59:{c:[256]}}}}}}}}},110:{l:{100:{l:{59:{c:[10835]}}}}},111:{l:{103:{l:{111:{l:{110:{l:{59:{c:[260]}}}}}}},112:{l:{102:{l:{59:{c:[120120]}}}}}}},112:{l:{112:{l:{108:{l:{121:{l:{70:{l:{117:{l:{110:{l:{99:{l:{116:{l:{105:{l:{111:{l:{110:{l:{59:{c:[8289]}}}}}}}}}}}}}}}}}}}}}}}}},114:{l:{105:{l:{110:{l:{103:{l:{59:{c:[197]}},c:[197]}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119964]}}}}},115:{l:{105:{l:{103:{l:{110:{l:{59:{c:[8788]}}}}}}}}}}},116:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[195]}},c:[195]}}}}}}}}},117:{l:{109:{l:{108:{l:{59:{c:[196]}},c:[196]}}}}}}},66:{l:{97:{l:{99:{l:{107:{l:{115:{l:{108:{l:{97:{l:{115:{l:{104:{l:{59:{c:[8726]}}}}}}}}}}}}}}},114:{l:{118:{l:{59:{c:[10983]}}},119:{l:{101:{l:{100:{l:{59:{c:[8966]}}}}}}}}}}},99:{l:{121:{l:{59:{c:[1041]}}}}},101:{l:{99:{l:{97:{l:{117:{l:{115:{l:{101:{l:{59:{c:[8757]}}}}}}}}}}},114:{l:{110:{l:{111:{l:{117:{l:{108:{l:{108:{l:{105:{l:{115:{l:{59:{c:[8492]}}}}}}}}}}}}}}}}},116:{l:{97:{l:{59:{c:[914]}}}}}}},102:{l:{114:{l:{59:{c:[120069]}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120121]}}}}}}},114:{l:{101:{l:{118:{l:{101:{l:{59:{c:[728]}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[8492]}}}}}}},117:{l:{109:{l:{112:{l:{101:{l:{113:{l:{59:{c:[8782]}}}}}}}}}}}}},67:{l:{72:{l:{99:{l:{121:{l:{59:{c:[1063]}}}}}}},79:{l:{80:{l:{89:{l:{59:{c:[169]}},c:[169]}}}}},97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[262]}}}}}}}}},112:{l:{59:{c:[8914]},105:{l:{116:{l:{97:{l:{108:{l:{68:{l:{105:{l:{102:{l:{102:{l:{101:{l:{114:{l:{101:{l:{110:{l:{116:{l:{105:{l:{97:{l:{108:{l:{68:{l:{59:{c:[8517]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},121:{l:{108:{l:{101:{l:{121:{l:{115:{l:{59:{c:[8493]}}}}}}}}}}}}},99:{l:{97:{l:{114:{l:{111:{l:{110:{l:{59:{c:[268]}}}}}}}}},101:{l:{100:{l:{105:{l:{108:{l:{59:{c:[199]}},c:[199]}}}}}}},105:{l:{114:{l:{99:{l:{59:{c:[264]}}}}}}},111:{l:{110:{l:{105:{l:{110:{l:{116:{l:{59:{c:[8752]}}}}}}}}}}}}},100:{l:{111:{l:{116:{l:{59:{c:[266]}}}}}}},101:{l:{100:{l:{105:{l:{108:{l:{108:{l:{97:{l:{59:{c:[184]}}}}}}}}}}},110:{l:{116:{l:{101:{l:{114:{l:{68:{l:{111:{l:{116:{l:{59:{c:[183]}}}}}}}}}}}}}}}}},102:{l:{114:{l:{59:{c:[8493]}}}}},104:{l:{105:{l:{59:{c:[935]}}}}},105:{l:{114:{l:{99:{l:{108:{l:{101:{l:{68:{l:{111:{l:{116:{l:{59:{c:[8857]}}}}}}},77:{l:{105:{l:{110:{l:{117:{l:{115:{l:{59:{c:[8854]}}}}}}}}}}},80:{l:{108:{l:{117:{l:{115:{l:{59:{c:[8853]}}}}}}}}},84:{l:{105:{l:{109:{l:{101:{l:{115:{l:{59:{c:[8855]}}}}}}}}}}}}}}}}}}}}},108:{l:{111:{l:{99:{l:{107:{l:{119:{l:{105:{l:{115:{l:{101:{l:{67:{l:{111:{l:{110:{l:{116:{l:{111:{l:{117:{l:{114:{l:{73:{l:{110:{l:{116:{l:{101:{l:{103:{l:{114:{l:{97:{l:{108:{l:{59:{c:[8754]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},115:{l:{101:{l:{67:{l:{117:{l:{114:{l:{108:{l:{121:{l:{68:{l:{111:{l:{117:{l:{98:{l:{108:{l:{101:{l:{81:{l:{117:{l:{111:{l:{116:{l:{101:{l:{59:{c:[8221]}}}}}}}}}}}}}}}}}}}}}}},81:{l:{117:{l:{111:{l:{116:{l:{101:{l:{59:{c:[8217]}}}}}}}}}}}}}}}}}}}}}}}}}}}}},111:{l:{108:{l:{111:{l:{110:{l:{59:{c:[8759]},101:{l:{59:{c:[10868]}}}}}}}}},110:{l:{103:{l:{114:{l:{117:{l:{101:{l:{110:{l:{116:{l:{59:{c:[8801]}}}}}}}}}}}}},105:{l:{110:{l:{116:{l:{59:{c:[8751]}}}}}}},116:{l:{111:{l:{117:{l:{114:{l:{73:{l:{110:{l:{116:{l:{101:{l:{103:{l:{114:{l:{97:{l:{108:{l:{59:{c:[8750]}}}}}}}}}}}}}}}}}}}}}}}}}}},112:{l:{102:{l:{59:{c:[8450]}}},114:{l:{111:{l:{100:{l:{117:{l:{99:{l:{116:{l:{59:{c:[8720]}}}}}}}}}}}}}}},117:{l:{110:{l:{116:{l:{101:{l:{114:{l:{67:{l:{108:{l:{111:{l:{99:{l:{107:{l:{119:{l:{105:{l:{115:{l:{101:{l:{67:{l:{111:{l:{110:{l:{116:{l:{111:{l:{117:{l:{114:{l:{73:{l:{110:{l:{116:{l:{101:{l:{103:{l:{114:{l:{97:{l:{108:{l:{59:{c:[8755]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},114:{l:{111:{l:{115:{l:{115:{l:{59:{c:[10799]}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119966]}}}}}}},117:{l:{112:{l:{59:{c:[8915]},67:{l:{97:{l:{112:{l:{59:{c:[8781]}}}}}}}}}}}}},68:{l:{68:{l:{59:{c:[8517]},111:{l:{116:{l:{114:{l:{97:{l:{104:{l:{100:{l:{59:{c:[10513]}}}}}}}}}}}}}}},74:{l:{99:{l:{121:{l:{59:{c:[1026]}}}}}}},83:{l:{99:{l:{121:{l:{59:{c:[1029]}}}}}}},90:{l:{99:{l:{121:{l:{59:{c:[1039]}}}}}}},97:{l:{103:{l:{103:{l:{101:{l:{114:{l:{59:{c:[8225]}}}}}}}}},114:{l:{114:{l:{59:{c:[8609]}}}}},115:{l:{104:{l:{118:{l:{59:{c:[10980]}}}}}}}}},99:{l:{97:{l:{114:{l:{111:{l:{110:{l:{59:{c:[270]}}}}}}}}},121:{l:{59:{c:[1044]}}}}},101:{l:{108:{l:{59:{c:[8711]},116:{l:{97:{l:{59:{c:[916]}}}}}}}}},102:{l:{114:{l:{59:{c:[120071]}}}}},105:{l:{97:{l:{99:{l:{114:{l:{105:{l:{116:{l:{105:{l:{99:{l:{97:{l:{108:{l:{65:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[180]}}}}}}}}}}},68:{l:{111:{l:{116:{l:{59:{c:[729]}}},117:{l:{98:{l:{108:{l:{101:{l:{65:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[733]}}}}}}}}}}}}}}}}}}}}}}},71:{l:{114:{l:{97:{l:{118:{l:{101:{l:{59:{c:[96]}}}}}}}}}}},84:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[732]}}}}}}}}}}}}}}}}}}}}}}}}}}},109:{l:{111:{l:{110:{l:{100:{l:{59:{c:[8900]}}}}}}}}}}},102:{l:{102:{l:{101:{l:{114:{l:{101:{l:{110:{l:{116:{l:{105:{l:{97:{l:{108:{l:{68:{l:{59:{c:[8518]}}}}}}}}}}}}}}}}}}}}}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120123]}}}}},116:{l:{59:{c:[168]},68:{l:{111:{l:{116:{l:{59:{c:[8412]}}}}}}},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8784]}}}}}}}}}}}}},117:{l:{98:{l:{108:{l:{101:{l:{67:{l:{111:{l:{110:{l:{116:{l:{111:{l:{117:{l:{114:{l:{73:{l:{110:{l:{116:{l:{101:{l:{103:{l:{114:{l:{97:{l:{108:{l:{59:{c:[8751]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},68:{l:{111:{l:{116:{l:{59:{c:[168]}}},119:{l:{110:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8659]}}}}}}}}}}}}}}}}}}},76:{l:{101:{l:{102:{l:{116:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8656]}}}}}}}}}}},82:{l:{105:{l:{103:{l:{104:{l:{116:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8660]}}}}}}}}}}}}}}}}}}}}},84:{l:{101:{l:{101:{l:{59:{c:[10980]}}}}}}}}}}}}},111:{l:{110:{l:{103:{l:{76:{l:{101:{l:{102:{l:{116:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[10232]}}}}}}}}}}},82:{l:{105:{l:{103:{l:{104:{l:{116:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[10234]}}}}}}}}}}}}}}}}}}}}}}}}}}}}},82:{l:{105:{l:{103:{l:{104:{l:{116:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[10233]}}}}}}}}}}}}}}}}}}}}}}}}}}}}},82:{l:{105:{l:{103:{l:{104:{l:{116:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8658]}}}}}}}}}}},84:{l:{101:{l:{101:{l:{59:{c:[8872]}}}}}}}}}}}}}}}}},85:{l:{112:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8657]}}}}}}}}}}},68:{l:{111:{l:{119:{l:{110:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8661]}}}}}}}}}}}}}}}}}}}}}}},86:{l:{101:{l:{114:{l:{116:{l:{105:{l:{99:{l:{97:{l:{108:{l:{66:{l:{97:{l:{114:{l:{59:{c:[8741]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},119:{l:{110:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8595]},66:{l:{97:{l:{114:{l:{59:{c:[10515]}}}}}}},85:{l:{112:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8693]}}}}}}}}}}}}}}}}}}}}}}}}},66:{l:{114:{l:{101:{l:{118:{l:{101:{l:{59:{c:[785]}}}}}}}}}}},76:{l:{101:{l:{102:{l:{116:{l:{82:{l:{105:{l:{103:{l:{104:{l:{116:{l:{86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[10576]}}}}}}}}}}}}}}}}}}}}}}},84:{l:{101:{l:{101:{l:{86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[10590]}}}}}}}}}}}}}}}}}}},86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[8637]},66:{l:{97:{l:{114:{l:{59:{c:[10582]}}}}}}}}}}}}}}}}}}}}}}}}}}},82:{l:{105:{l:{103:{l:{104:{l:{116:{l:{84:{l:{101:{l:{101:{l:{86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[10591]}}}}}}}}}}}}}}}}}}},86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[8641]},66:{l:{97:{l:{114:{l:{59:{c:[10583]}}}}}}}}}}}}}}}}}}}}}}}}}}}}},84:{l:{101:{l:{101:{l:{59:{c:[8868]},65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8615]}}}}}}}}}}}}}}}}},97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8659]}}}}}}}}}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119967]}}}}},116:{l:{114:{l:{111:{l:{107:{l:{59:{c:[272]}}}}}}}}}}}}},69:{l:{78:{l:{71:{l:{59:{c:[330]}}}}},84:{l:{72:{l:{59:{c:[208]}},c:[208]}}},97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[201]}},c:[201]}}}}}}}}},99:{l:{97:{l:{114:{l:{111:{l:{110:{l:{59:{c:[282]}}}}}}}}},105:{l:{114:{l:{99:{l:{59:{c:[202]}},c:[202]}}}}},121:{l:{59:{c:[1069]}}}}},100:{l:{111:{l:{116:{l:{59:{c:[278]}}}}}}},102:{l:{114:{l:{59:{c:[120072]}}}}},103:{l:{114:{l:{97:{l:{118:{l:{101:{l:{59:{c:[200]}},c:[200]}}}}}}}}},108:{l:{101:{l:{109:{l:{101:{l:{110:{l:{116:{l:{59:{c:[8712]}}}}}}}}}}}}},109:{l:{97:{l:{99:{l:{114:{l:{59:{c:[274]}}}}}}},112:{l:{116:{l:{121:{l:{83:{l:{109:{l:{97:{l:{108:{l:{108:{l:{83:{l:{113:{l:{117:{l:{97:{l:{114:{l:{101:{l:{59:{c:[9723]}}}}}}}}}}}}}}}}}}}}}}},86:{l:{101:{l:{114:{l:{121:{l:{83:{l:{109:{l:{97:{l:{108:{l:{108:{l:{83:{l:{113:{l:{117:{l:{97:{l:{114:{l:{101:{l:{59:{c:[9643]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},111:{l:{103:{l:{111:{l:{110:{l:{59:{c:[280]}}}}}}},112:{l:{102:{l:{59:{c:[120124]}}}}}}},112:{l:{115:{l:{105:{l:{108:{l:{111:{l:{110:{l:{59:{c:[917]}}}}}}}}}}}}},113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[10869]},84:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[8770]}}}}}}}}}}}}}}},105:{l:{108:{l:{105:{l:{98:{l:{114:{l:{105:{l:{117:{l:{109:{l:{59:{c:[8652]}}}}}}}}}}}}}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[8496]}}}}},105:{l:{109:{l:{59:{c:[10867]}}}}}}},116:{l:{97:{l:{59:{c:[919]}}}}},117:{l:{109:{l:{108:{l:{59:{c:[203]}},c:[203]}}}}},120:{l:{105:{l:{115:{l:{116:{l:{115:{l:{59:{c:[8707]}}}}}}}}},112:{l:{111:{l:{110:{l:{101:{l:{110:{l:{116:{l:{105:{l:{97:{l:{108:{l:{69:{l:{59:{c:[8519]}}}}}}}}}}}}}}}}}}}}}}}}},70:{l:{99:{l:{121:{l:{59:{c:[1060]}}}}},102:{l:{114:{l:{59:{c:[120073]}}}}},105:{l:{108:{l:{108:{l:{101:{l:{100:{l:{83:{l:{109:{l:{97:{l:{108:{l:{108:{l:{83:{l:{113:{l:{117:{l:{97:{l:{114:{l:{101:{l:{59:{c:[9724]}}}}}}}}}}}}}}}}}}}}}}},86:{l:{101:{l:{114:{l:{121:{l:{83:{l:{109:{l:{97:{l:{108:{l:{108:{l:{83:{l:{113:{l:{117:{l:{97:{l:{114:{l:{101:{l:{59:{c:[9642]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120125]}}}}},114:{l:{65:{l:{108:{l:{108:{l:{59:{c:[8704]}}}}}}}}},117:{l:{114:{l:{105:{l:{101:{l:{114:{l:{116:{l:{114:{l:{102:{l:{59:{c:[8497]}}}}}}}}}}}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[8497]}}}}}}}}},71:{l:{74:{l:{99:{l:{121:{l:{59:{c:[1027]}}}}}}},84:{l:{59:{c:[62]}},c:[62]},97:{l:{109:{l:{109:{l:{97:{l:{59:{c:[915]},100:{l:{59:{c:[988]}}}}}}}}}}},98:{l:{114:{l:{101:{l:{118:{l:{101:{l:{59:{c:[286]}}}}}}}}}}},99:{l:{101:{l:{100:{l:{105:{l:{108:{l:{59:{c:[290]}}}}}}}}},105:{l:{114:{l:{99:{l:{59:{c:[284]}}}}}}},121:{l:{59:{c:[1043]}}}}},100:{l:{111:{l:{116:{l:{59:{c:[288]}}}}}}},102:{l:{114:{l:{59:{c:[120074]}}}}},103:{l:{59:{c:[8921]}}},111:{l:{112:{l:{102:{l:{59:{c:[120126]}}}}}}},114:{l:{101:{l:{97:{l:{116:{l:{101:{l:{114:{l:{69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8805]},76:{l:{101:{l:{115:{l:{115:{l:{59:{c:[8923]}}}}}}}}}}}}}}}}}}},70:{l:{117:{l:{108:{l:{108:{l:{69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8807]}}}}}}}}}}}}}}}}}}},71:{l:{114:{l:{101:{l:{97:{l:{116:{l:{101:{l:{114:{l:{59:{c:[10914]}}}}}}}}}}}}}}},76:{l:{101:{l:{115:{l:{115:{l:{59:{c:[8823]}}}}}}}}},83:{l:{108:{l:{97:{l:{110:{l:{116:{l:{69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[10878]}}}}}}}}}}}}}}}}}}}}},84:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[8819]}}}}}}}}}}}}}}}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119970]}}}}}}},116:{l:{59:{c:[8811]}}}}},72:{l:{65:{l:{82:{l:{68:{l:{99:{l:{121:{l:{59:{c:[1066]}}}}}}}}}}},97:{l:{99:{l:{101:{l:{107:{l:{59:{c:[711]}}}}}}},116:{l:{59:{c:[94]}}}}},99:{l:{105:{l:{114:{l:{99:{l:{59:{c:[292]}}}}}}}}},102:{l:{114:{l:{59:{c:[8460]}}}}},105:{l:{108:{l:{98:{l:{101:{l:{114:{l:{116:{l:{83:{l:{112:{l:{97:{l:{99:{l:{101:{l:{59:{c:[8459]}}}}}}}}}}}}}}}}}}}}}}},111:{l:{112:{l:{102:{l:{59:{c:[8461]}}}}},114:{l:{105:{l:{122:{l:{111:{l:{110:{l:{116:{l:{97:{l:{108:{l:{76:{l:{105:{l:{110:{l:{101:{l:{59:{c:[9472]}}}}}}}}}}}}}}}}}}}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[8459]}}}}},116:{l:{114:{l:{111:{l:{107:{l:{59:{c:[294]}}}}}}}}}}},117:{l:{109:{l:{112:{l:{68:{l:{111:{l:{119:{l:{110:{l:{72:{l:{117:{l:{109:{l:{112:{l:{59:{c:[8782]}}}}}}}}}}}}}}}}},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8783]}}}}}}}}}}}}}}}}}}},73:{l:{69:{l:{99:{l:{121:{l:{59:{c:[1045]}}}}}}},74:{l:{108:{l:{105:{l:{103:{l:{59:{c:[306]}}}}}}}}},79:{l:{99:{l:{121:{l:{59:{c:[1025]}}}}}}},97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[205]}},c:[205]}}}}}}}}},99:{l:{105:{l:{114:{l:{99:{l:{59:{c:[206]}},c:[206]}}}}},121:{l:{59:{c:[1048]}}}}},100:{l:{111:{l:{116:{l:{59:{c:[304]}}}}}}},102:{l:{114:{l:{59:{c:[8465]}}}}},103:{l:{114:{l:{97:{l:{118:{l:{101:{l:{59:{c:[204]}},c:[204]}}}}}}}}},109:{l:{59:{c:[8465]},97:{l:{99:{l:{114:{l:{59:{c:[298]}}}}},103:{l:{105:{l:{110:{l:{97:{l:{114:{l:{121:{l:{73:{l:{59:{c:[8520]}}}}}}}}}}}}}}}}},112:{l:{108:{l:{105:{l:{101:{l:{115:{l:{59:{c:[8658]}}}}}}}}}}}}},110:{l:{116:{l:{59:{c:[8748]},101:{l:{103:{l:{114:{l:{97:{l:{108:{l:{59:{c:[8747]}}}}}}}}},114:{l:{115:{l:{101:{l:{99:{l:{116:{l:{105:{l:{111:{l:{110:{l:{59:{c:[8898]}}}}}}}}}}}}}}}}}}}}},118:{l:{105:{l:{115:{l:{105:{l:{98:{l:{108:{l:{101:{l:{67:{l:{111:{l:{109:{l:{109:{l:{97:{l:{59:{c:[8291]}}}}}}}}}}},84:{l:{105:{l:{109:{l:{101:{l:{115:{l:{59:{c:[8290]}}}}}}}}}}}}}}}}}}}}}}}}}}},111:{l:{103:{l:{111:{l:{110:{l:{59:{c:[302]}}}}}}},112:{l:{102:{l:{59:{c:[120128]}}}}},116:{l:{97:{l:{59:{c:[921]}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[8464]}}}}}}},116:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[296]}}}}}}}}}}},117:{l:{107:{l:{99:{l:{121:{l:{59:{c:[1030]}}}}}}},109:{l:{108:{l:{59:{c:[207]}},c:[207]}}}}}}},74:{l:{99:{l:{105:{l:{114:{l:{99:{l:{59:{c:[308]}}}}}}},121:{l:{59:{c:[1049]}}}}},102:{l:{114:{l:{59:{c:[120077]}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120129]}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119973]}}}}},101:{l:{114:{l:{99:{l:{121:{l:{59:{c:[1032]}}}}}}}}}}},117:{l:{107:{l:{99:{l:{121:{l:{59:{c:[1028]}}}}}}}}}}},75:{l:{72:{l:{99:{l:{121:{l:{59:{c:[1061]}}}}}}},74:{l:{99:{l:{121:{l:{59:{c:[1036]}}}}}}},97:{l:{112:{l:{112:{l:{97:{l:{59:{c:[922]}}}}}}}}},99:{l:{101:{l:{100:{l:{105:{l:{108:{l:{59:{c:[310]}}}}}}}}},121:{l:{59:{c:[1050]}}}}},102:{l:{114:{l:{59:{c:[120078]}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120130]}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119974]}}}}}}}}},76:{l:{74:{l:{99:{l:{121:{l:{59:{c:[1033]}}}}}}},84:{l:{59:{c:[60]}},c:[60]},97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[313]}}}}}}}}},109:{l:{98:{l:{100:{l:{97:{l:{59:{c:[923]}}}}}}}}},110:{l:{103:{l:{59:{c:[10218]}}}}},112:{l:{108:{l:{97:{l:{99:{l:{101:{l:{116:{l:{114:{l:{102:{l:{59:{c:[8466]}}}}}}}}}}}}}}}}},114:{l:{114:{l:{59:{c:[8606]}}}}}}},99:{l:{97:{l:{114:{l:{111:{l:{110:{l:{59:{c:[317]}}}}}}}}},101:{l:{100:{l:{105:{l:{108:{l:{59:{c:[315]}}}}}}}}},121:{l:{59:{c:[1051]}}}}},101:{l:{102:{l:{116:{l:{65:{l:{110:{l:{103:{l:{108:{l:{101:{l:{66:{l:{114:{l:{97:{l:{99:{l:{107:{l:{101:{l:{116:{l:{59:{c:[10216]}}}}}}}}}}}}}}}}}}}}}}},114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8592]},66:{l:{97:{l:{114:{l:{59:{c:[8676]}}}}}}},82:{l:{105:{l:{103:{l:{104:{l:{116:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8646]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},67:{l:{101:{l:{105:{l:{108:{l:{105:{l:{110:{l:{103:{l:{59:{c:[8968]}}}}}}}}}}}}}}},68:{l:{111:{l:{117:{l:{98:{l:{108:{l:{101:{l:{66:{l:{114:{l:{97:{l:{99:{l:{107:{l:{101:{l:{116:{l:{59:{c:[10214]}}}}}}}}}}}}}}}}}}}}}}},119:{l:{110:{l:{84:{l:{101:{l:{101:{l:{86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[10593]}}}}}}}}}}}}}}}}}}},86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[8643]},66:{l:{97:{l:{114:{l:{59:{c:[10585]}}}}}}}}}}}}}}}}}}}}}}}}}}},70:{l:{108:{l:{111:{l:{111:{l:{114:{l:{59:{c:[8970]}}}}}}}}}}},82:{l:{105:{l:{103:{l:{104:{l:{116:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8596]}}}}}}}}}}},86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[10574]}}}}}}}}}}}}}}}}}}}}}}},84:{l:{101:{l:{101:{l:{59:{c:[8867]},65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8612]}}}}}}}}}}},86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[10586]}}}}}}}}}}}}}}}}},114:{l:{105:{l:{97:{l:{110:{l:{103:{l:{108:{l:{101:{l:{59:{c:[8882]},66:{l:{97:{l:{114:{l:{59:{c:[10703]}}}}}}},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8884]}}}}}}}}}}}}}}}}}}}}}}}}}}},85:{l:{112:{l:{68:{l:{111:{l:{119:{l:{110:{l:{86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[10577]}}}}}}}}}}}}}}}}}}}}},84:{l:{101:{l:{101:{l:{86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[10592]}}}}}}}}}}}}}}}}}}},86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[8639]},66:{l:{97:{l:{114:{l:{59:{c:[10584]}}}}}}}}}}}}}}}}}}}}}}},86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[8636]},66:{l:{97:{l:{114:{l:{59:{c:[10578]}}}}}}}}}}}}}}}}}}},97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8656]}}}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8660]}}}}}}}}}}}}}}}}}}}}}}}}},115:{l:{115:{l:{69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{71:{l:{114:{l:{101:{l:{97:{l:{116:{l:{101:{l:{114:{l:{59:{c:[8922]}}}}}}}}}}}}}}}}}}}}}}}}},70:{l:{117:{l:{108:{l:{108:{l:{69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8806]}}}}}}}}}}}}}}}}}}},71:{l:{114:{l:{101:{l:{97:{l:{116:{l:{101:{l:{114:{l:{59:{c:[8822]}}}}}}}}}}}}}}},76:{l:{101:{l:{115:{l:{115:{l:{59:{c:[10913]}}}}}}}}},83:{l:{108:{l:{97:{l:{110:{l:{116:{l:{69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[10877]}}}}}}}}}}}}}}}}}}}}},84:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[8818]}}}}}}}}}}}}}}}}},102:{l:{114:{l:{59:{c:[120079]}}}}},108:{l:{59:{c:[8920]},101:{l:{102:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8666]}}}}}}}}}}}}}}}}}}},109:{l:{105:{l:{100:{l:{111:{l:{116:{l:{59:{c:[319]}}}}}}}}}}},111:{l:{110:{l:{103:{l:{76:{l:{101:{l:{102:{l:{116:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[10229]}}}}}}}}}}},82:{l:{105:{l:{103:{l:{104:{l:{116:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[10231]}}}}}}}}}}}}}}}}}}}}}}}}}}}}},82:{l:{105:{l:{103:{l:{104:{l:{116:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[10230]}}}}}}}}}}}}}}}}}}}}},108:{l:{101:{l:{102:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[10232]}}}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[10234]}}}}}}}}}}}}}}}}}}}}}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[10233]}}}}}}}}}}}}}}}}}}}}}}}}},112:{l:{102:{l:{59:{c:[120131]}}}}},119:{l:{101:{l:{114:{l:{76:{l:{101:{l:{102:{l:{116:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8601]}}}}}}}}}}}}}}}}}}},82:{l:{105:{l:{103:{l:{104:{l:{116:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8600]}}}}}}}}}}}}}}}}}}}}}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[8466]}}}}},104:{l:{59:{c:[8624]}}},116:{l:{114:{l:{111:{l:{107:{l:{59:{c:[321]}}}}}}}}}}},116:{l:{59:{c:[8810]}}}}},77:{l:{97:{l:{112:{l:{59:{c:[10501]}}}}},99:{l:{121:{l:{59:{c:[1052]}}}}},101:{l:{100:{l:{105:{l:{117:{l:{109:{l:{83:{l:{112:{l:{97:{l:{99:{l:{101:{l:{59:{c:[8287]}}}}}}}}}}}}}}}}}}},108:{l:{108:{l:{105:{l:{110:{l:{116:{l:{114:{l:{102:{l:{59:{c:[8499]}}}}}}}}}}}}}}}}},102:{l:{114:{l:{59:{c:[120080]}}}}},105:{l:{110:{l:{117:{l:{115:{l:{80:{l:{108:{l:{117:{l:{115:{l:{59:{c:[8723]}}}}}}}}}}}}}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120132]}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[8499]}}}}}}},117:{l:{59:{c:[924]}}}}},78:{l:{74:{l:{99:{l:{121:{l:{59:{c:[1034]}}}}}}},97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[323]}}}}}}}}}}},99:{l:{97:{l:{114:{l:{111:{l:{110:{l:{59:{c:[327]}}}}}}}}},101:{l:{100:{l:{105:{l:{108:{l:{59:{c:[325]}}}}}}}}},121:{l:{59:{c:[1053]}}}}},101:{l:{103:{l:{97:{l:{116:{l:{105:{l:{118:{l:{101:{l:{77:{l:{101:{l:{100:{l:{105:{l:{117:{l:{109:{l:{83:{l:{112:{l:{97:{l:{99:{l:{101:{l:{59:{c:[8203]}}}}}}}}}}}}}}}}}}}}}}},84:{l:{104:{l:{105:{l:{99:{l:{107:{l:{83:{l:{112:{l:{97:{l:{99:{l:{101:{l:{59:{c:[8203]}}}}}}}}}}}}}}},110:{l:{83:{l:{112:{l:{97:{l:{99:{l:{101:{l:{59:{c:[8203]}}}}}}}}}}}}}}}}}}},86:{l:{101:{l:{114:{l:{121:{l:{84:{l:{104:{l:{105:{l:{110:{l:{83:{l:{112:{l:{97:{l:{99:{l:{101:{l:{59:{c:[8203]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},115:{l:{116:{l:{101:{l:{100:{l:{71:{l:{114:{l:{101:{l:{97:{l:{116:{l:{101:{l:{114:{l:{71:{l:{114:{l:{101:{l:{97:{l:{116:{l:{101:{l:{114:{l:{59:{c:[8811]}}}}}}}}}}}}}}}}}}}}}}}}}}}}},76:{l:{101:{l:{115:{l:{115:{l:{76:{l:{101:{l:{115:{l:{115:{l:{59:{c:[8810]}}}}}}}}}}}}}}}}}}}}}}}}},119:{l:{76:{l:{105:{l:{110:{l:{101:{l:{59:{c:[10]}}}}}}}}}}}}},102:{l:{114:{l:{59:{c:[120081]}}}}},111:{l:{66:{l:{114:{l:{101:{l:{97:{l:{107:{l:{59:{c:[8288]}}}}}}}}}}},110:{l:{66:{l:{114:{l:{101:{l:{97:{l:{107:{l:{105:{l:{110:{l:{103:{l:{83:{l:{112:{l:{97:{l:{99:{l:{101:{l:{59:{c:[160]}}}}}}}}}}}}}}}}}}}}}}}}}}}}},112:{l:{102:{l:{59:{c:[8469]}}}}},116:{l:{59:{c:[10988]},67:{l:{111:{l:{110:{l:{103:{l:{114:{l:{117:{l:{101:{l:{110:{l:{116:{l:{59:{c:[8802]}}}}}}}}}}}}}}}}},117:{l:{112:{l:{67:{l:{97:{l:{112:{l:{59:{c:[8813]}}}}}}}}}}}}},68:{l:{111:{l:{117:{l:{98:{l:{108:{l:{101:{l:{86:{l:{101:{l:{114:{l:{116:{l:{105:{l:{99:{l:{97:{l:{108:{l:{66:{l:{97:{l:{114:{l:{59:{c:[8742]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},69:{l:{108:{l:{101:{l:{109:{l:{101:{l:{110:{l:{116:{l:{59:{c:[8713]}}}}}}}}}}}}},113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8800]},84:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[8770,824]}}}}}}}}}}}}}}}}}}},120:{l:{105:{l:{115:{l:{116:{l:{115:{l:{59:{c:[8708]}}}}}}}}}}}}},71:{l:{114:{l:{101:{l:{97:{l:{116:{l:{101:{l:{114:{l:{59:{c:[8815]},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8817]}}}}}}}}}}},70:{l:{117:{l:{108:{l:{108:{l:{69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8807,824]}}}}}}}}}}}}}}}}}}},71:{l:{114:{l:{101:{l:{97:{l:{116:{l:{101:{l:{114:{l:{59:{c:[8811,824]}}}}}}}}}}}}}}},76:{l:{101:{l:{115:{l:{115:{l:{59:{c:[8825]}}}}}}}}},83:{l:{108:{l:{97:{l:{110:{l:{116:{l:{69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[10878,824]}}}}}}}}}}}}}}}}}}}}},84:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[8821]}}}}}}}}}}}}}}}}}}}}}}}}},72:{l:{117:{l:{109:{l:{112:{l:{68:{l:{111:{l:{119:{l:{110:{l:{72:{l:{117:{l:{109:{l:{112:{l:{59:{c:[8782,824]}}}}}}}}}}}}}}}}},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8783,824]}}}}}}}}}}}}}}}}}}},76:{l:{101:{l:{102:{l:{116:{l:{84:{l:{114:{l:{105:{l:{97:{l:{110:{l:{103:{l:{108:{l:{101:{l:{59:{c:[8938]},66:{l:{97:{l:{114:{l:{59:{c:[10703,824]}}}}}}},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8940]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},115:{l:{115:{l:{59:{c:[8814]},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8816]}}}}}}}}}}},71:{l:{114:{l:{101:{l:{97:{l:{116:{l:{101:{l:{114:{l:{59:{c:[8824]}}}}}}}}}}}}}}},76:{l:{101:{l:{115:{l:{115:{l:{59:{c:[8810,824]}}}}}}}}},83:{l:{108:{l:{97:{l:{110:{l:{116:{l:{69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[10877,824]}}}}}}}}}}}}}}}}}}}}},84:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[8820]}}}}}}}}}}}}}}}}}}},78:{l:{101:{l:{115:{l:{116:{l:{101:{l:{100:{l:{71:{l:{114:{l:{101:{l:{97:{l:{116:{l:{101:{l:{114:{l:{71:{l:{114:{l:{101:{l:{97:{l:{116:{l:{101:{l:{114:{l:{59:{c:[10914,824]}}}}}}}}}}}}}}}}}}}}}}}}}}}}},76:{l:{101:{l:{115:{l:{115:{l:{76:{l:{101:{l:{115:{l:{115:{l:{59:{c:[10913,824]}}}}}}}}}}}}}}}}}}}}}}}}}}}}},80:{l:{114:{l:{101:{l:{99:{l:{101:{l:{100:{l:{101:{l:{115:{l:{59:{c:[8832]},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[10927,824]}}}}}}}}}}},83:{l:{108:{l:{97:{l:{110:{l:{116:{l:{69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8928]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},82:{l:{101:{l:{118:{l:{101:{l:{114:{l:{115:{l:{101:{l:{69:{l:{108:{l:{101:{l:{109:{l:{101:{l:{110:{l:{116:{l:{59:{c:[8716]}}}}}}}}}}}}}}}}}}}}}}}}}}},105:{l:{103:{l:{104:{l:{116:{l:{84:{l:{114:{l:{105:{l:{97:{l:{110:{l:{103:{l:{108:{l:{101:{l:{59:{c:[8939]},66:{l:{97:{l:{114:{l:{59:{c:[10704,824]}}}}}}},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8941]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},83:{l:{113:{l:{117:{l:{97:{l:{114:{l:{101:{l:{83:{l:{117:{l:{98:{l:{115:{l:{101:{l:{116:{l:{59:{c:[8847,824]},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8930]}}}}}}}}}}}}}}}}}}},112:{l:{101:{l:{114:{l:{115:{l:{101:{l:{116:{l:{59:{c:[8848,824]},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8931]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},117:{l:{98:{l:{115:{l:{101:{l:{116:{l:{59:{c:[8834,8402]},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8840]}}}}}}}}}}}}}}}}}}},99:{l:{99:{l:{101:{l:{101:{l:{100:{l:{115:{l:{59:{c:[8833]},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[10928,824]}}}}}}}}}}},83:{l:{108:{l:{97:{l:{110:{l:{116:{l:{69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8929]}}}}}}}}}}}}}}}}}}}}},84:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[8831,824]}}}}}}}}}}}}}}}}}}}}}}},112:{l:{101:{l:{114:{l:{115:{l:{101:{l:{116:{l:{59:{c:[8835,8402]},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8841]}}}}}}}}}}}}}}}}}}}}}}}}}}},84:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[8769]},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8772]}}}}}}}}}}},70:{l:{117:{l:{108:{l:{108:{l:{69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8775]}}}}}}}}}}}}}}}}}}},84:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[8777]}}}}}}}}}}}}}}}}}}}}},86:{l:{101:{l:{114:{l:{116:{l:{105:{l:{99:{l:{97:{l:{108:{l:{66:{l:{97:{l:{114:{l:{59:{c:[8740]}}}}}}}}}}}}}}}}}}}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119977]}}}}}}},116:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[209]}},c:[209]}}}}}}}}},117:{l:{59:{c:[925]}}}}},79:{l:{69:{l:{108:{l:{105:{l:{103:{l:{59:{c:[338]}}}}}}}}},97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[211]}},c:[211]}}}}}}}}},99:{l:{105:{l:{114:{l:{99:{l:{59:{c:[212]}},c:[212]}}}}},121:{l:{59:{c:[1054]}}}}},100:{l:{98:{l:{108:{l:{97:{l:{99:{l:{59:{c:[336]}}}}}}}}}}},102:{l:{114:{l:{59:{c:[120082]}}}}},103:{l:{114:{l:{97:{l:{118:{l:{101:{l:{59:{c:[210]}},c:[210]}}}}}}}}},109:{l:{97:{l:{99:{l:{114:{l:{59:{c:[332]}}}}}}},101:{l:{103:{l:{97:{l:{59:{c:[937]}}}}}}},105:{l:{99:{l:{114:{l:{111:{l:{110:{l:{59:{c:[927]}}}}}}}}}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120134]}}}}}}},112:{l:{101:{l:{110:{l:{67:{l:{117:{l:{114:{l:{108:{l:{121:{l:{68:{l:{111:{l:{117:{l:{98:{l:{108:{l:{101:{l:{81:{l:{117:{l:{111:{l:{116:{l:{101:{l:{59:{c:[8220]}}}}}}}}}}}}}}}}}}}}}}},81:{l:{117:{l:{111:{l:{116:{l:{101:{l:{59:{c:[8216]}}}}}}}}}}}}}}}}}}}}}}}}}}},114:{l:{59:{c:[10836]}}},115:{l:{99:{l:{114:{l:{59:{c:[119978]}}}}},108:{l:{97:{l:{115:{l:{104:{l:{59:{c:[216]}},c:[216]}}}}}}}}},116:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[213]}},c:[213]}}}}},109:{l:{101:{l:{115:{l:{59:{c:[10807]}}}}}}}}}}},117:{l:{109:{l:{108:{l:{59:{c:[214]}},c:[214]}}}}},118:{l:{101:{l:{114:{l:{66:{l:{97:{l:{114:{l:{59:{c:[8254]}}}}},114:{l:{97:{l:{99:{l:{101:{l:{59:{c:[9182]}}},107:{l:{101:{l:{116:{l:{59:{c:[9140]}}}}}}}}}}}}}}},80:{l:{97:{l:{114:{l:{101:{l:{110:{l:{116:{l:{104:{l:{101:{l:{115:{l:{105:{l:{115:{l:{59:{c:[9180]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},80:{l:{97:{l:{114:{l:{116:{l:{105:{l:{97:{l:{108:{l:{68:{l:{59:{c:[8706]}}}}}}}}}}}}}}},99:{l:{121:{l:{59:{c:[1055]}}}}},102:{l:{114:{l:{59:{c:[120083]}}}}},104:{l:{105:{l:{59:{c:[934]}}}}},105:{l:{59:{c:[928]}}},108:{l:{117:{l:{115:{l:{77:{l:{105:{l:{110:{l:{117:{l:{115:{l:{59:{c:[177]}}}}}}}}}}}}}}}}},111:{l:{105:{l:{110:{l:{99:{l:{97:{l:{114:{l:{101:{l:{112:{l:{108:{l:{97:{l:{110:{l:{101:{l:{59:{c:[8460]}}}}}}}}}}}}}}}}}}}}}}},112:{l:{102:{l:{59:{c:[8473]}}}}}}},114:{l:{59:{c:[10939]},101:{l:{99:{l:{101:{l:{100:{l:{101:{l:{115:{l:{59:{c:[8826]},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[10927]}}}}}}}}}}},83:{l:{108:{l:{97:{l:{110:{l:{116:{l:{69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8828]}}}}}}}}}}}}}}}}}}}}},84:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[8830]}}}}}}}}}}}}}}}}}}}}}}},105:{l:{109:{l:{101:{l:{59:{c:[8243]}}}}}}},111:{l:{100:{l:{117:{l:{99:{l:{116:{l:{59:{c:[8719]}}}}}}}}},112:{l:{111:{l:{114:{l:{116:{l:{105:{l:{111:{l:{110:{l:{59:{c:[8759]},97:{l:{108:{l:{59:{c:[8733]}}}}}}}}}}}}}}}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119979]}}}}},105:{l:{59:{c:[936]}}}}}}},81:{l:{85:{l:{79:{l:{84:{l:{59:{c:[34]}},c:[34]}}}}},102:{l:{114:{l:{59:{c:[120084]}}}}},111:{l:{112:{l:{102:{l:{59:{c:[8474]}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119980]}}}}}}}}},82:{l:{66:{l:{97:{l:{114:{l:{114:{l:{59:{c:[10512]}}}}}}}}},69:{l:{71:{l:{59:{c:[174]}},c:[174]}}},97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[340]}}}}}}}}},110:{l:{103:{l:{59:{c:[10219]}}}}},114:{l:{114:{l:{59:{c:[8608]},116:{l:{108:{l:{59:{c:[10518]}}}}}}}}}}},99:{l:{97:{l:{114:{l:{111:{l:{110:{l:{59:{c:[344]}}}}}}}}},101:{l:{100:{l:{105:{l:{108:{l:{59:{c:[342]}}}}}}}}},121:{l:{59:{c:[1056]}}}}},101:{l:{59:{c:[8476]},118:{l:{101:{l:{114:{l:{115:{l:{101:{l:{69:{l:{108:{l:{101:{l:{109:{l:{101:{l:{110:{l:{116:{l:{59:{c:[8715]}}}}}}}}}}}}},113:{l:{117:{l:{105:{l:{108:{l:{105:{l:{98:{l:{114:{l:{105:{l:{117:{l:{109:{l:{59:{c:[8651]}}}}}}}}}}}}}}}}}}}}}}},85:{l:{112:{l:{69:{l:{113:{l:{117:{l:{105:{l:{108:{l:{105:{l:{98:{l:{114:{l:{105:{l:{117:{l:{109:{l:{59:{c:[10607]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},102:{l:{114:{l:{59:{c:[8476]}}}}},104:{l:{111:{l:{59:{c:[929]}}}}},105:{l:{103:{l:{104:{l:{116:{l:{65:{l:{110:{l:{103:{l:{108:{l:{101:{l:{66:{l:{114:{l:{97:{l:{99:{l:{107:{l:{101:{l:{116:{l:{59:{c:[10217]}}}}}}}}}}}}}}}}}}}}}}},114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8594]},66:{l:{97:{l:{114:{l:{59:{c:[8677]}}}}}}},76:{l:{101:{l:{102:{l:{116:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8644]}}}}}}}}}}}}}}}}}}}}}}}}}}}}},67:{l:{101:{l:{105:{l:{108:{l:{105:{l:{110:{l:{103:{l:{59:{c:[8969]}}}}}}}}}}}}}}},68:{l:{111:{l:{117:{l:{98:{l:{108:{l:{101:{l:{66:{l:{114:{l:{97:{l:{99:{l:{107:{l:{101:{l:{116:{l:{59:{c:[10215]}}}}}}}}}}}}}}}}}}}}}}},119:{l:{110:{l:{84:{l:{101:{l:{101:{l:{86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[10589]}}}}}}}}}}}}}}}}}}},86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[8642]},66:{l:{97:{l:{114:{l:{59:{c:[10581]}}}}}}}}}}}}}}}}}}}}}}}}}}},70:{l:{108:{l:{111:{l:{111:{l:{114:{l:{59:{c:[8971]}}}}}}}}}}},84:{l:{101:{l:{101:{l:{59:{c:[8866]},65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8614]}}}}}}}}}}},86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[10587]}}}}}}}}}}}}}}}}},114:{l:{105:{l:{97:{l:{110:{l:{103:{l:{108:{l:{101:{l:{59:{c:[8883]},66:{l:{97:{l:{114:{l:{59:{c:[10704]}}}}}}},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8885]}}}}}}}}}}}}}}}}}}}}}}}}}}},85:{l:{112:{l:{68:{l:{111:{l:{119:{l:{110:{l:{86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[10575]}}}}}}}}}}}}}}}}}}}}},84:{l:{101:{l:{101:{l:{86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[10588]}}}}}}}}}}}}}}}}}}},86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[8638]},66:{l:{97:{l:{114:{l:{59:{c:[10580]}}}}}}}}}}}}}}}}}}}}}}},86:{l:{101:{l:{99:{l:{116:{l:{111:{l:{114:{l:{59:{c:[8640]},66:{l:{97:{l:{114:{l:{59:{c:[10579]}}}}}}}}}}}}}}}}}}},97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8658]}}}}}}}}}}}}}}}}}}},111:{l:{112:{l:{102:{l:{59:{c:[8477]}}}}},117:{l:{110:{l:{100:{l:{73:{l:{109:{l:{112:{l:{108:{l:{105:{l:{101:{l:{115:{l:{59:{c:[10608]}}}}}}}}}}}}}}}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8667]}}}}}}}}}}}}}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[8475]}}}}},104:{l:{59:{c:[8625]}}}}},117:{l:{108:{l:{101:{l:{68:{l:{101:{l:{108:{l:{97:{l:{121:{l:{101:{l:{100:{l:{59:{c:[10740]}}}}}}}}}}}}}}}}}}}}}}},83:{l:{72:{l:{67:{l:{72:{l:{99:{l:{121:{l:{59:{c:[1065]}}}}}}}}},99:{l:{121:{l:{59:{c:[1064]}}}}}}},79:{l:{70:{l:{84:{l:{99:{l:{121:{l:{59:{c:[1068]}}}}}}}}}}},97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[346]}}}}}}}}}}},99:{l:{59:{c:[10940]},97:{l:{114:{l:{111:{l:{110:{l:{59:{c:[352]}}}}}}}}},101:{l:{100:{l:{105:{l:{108:{l:{59:{c:[350]}}}}}}}}},105:{l:{114:{l:{99:{l:{59:{c:[348]}}}}}}},121:{l:{59:{c:[1057]}}}}},102:{l:{114:{l:{59:{c:[120086]}}}}},104:{l:{111:{l:{114:{l:{116:{l:{68:{l:{111:{l:{119:{l:{110:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8595]}}}}}}}}}}}}}}}}}}},76:{l:{101:{l:{102:{l:{116:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8592]}}}}}}}}}}}}}}}}}}},82:{l:{105:{l:{103:{l:{104:{l:{116:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8594]}}}}}}}}}}}}}}}}}}}}},85:{l:{112:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8593]}}}}}}}}}}}}}}}}}}}}}}},105:{l:{103:{l:{109:{l:{97:{l:{59:{c:[931]}}}}}}}}},109:{l:{97:{l:{108:{l:{108:{l:{67:{l:{105:{l:{114:{l:{99:{l:{108:{l:{101:{l:{59:{c:[8728]}}}}}}}}}}}}}}}}}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120138]}}}}}}},113:{l:{114:{l:{116:{l:{59:{c:[8730]}}}}},117:{l:{97:{l:{114:{l:{101:{l:{59:{c:[9633]},73:{l:{110:{l:{116:{l:{101:{l:{114:{l:{115:{l:{101:{l:{99:{l:{116:{l:{105:{l:{111:{l:{110:{l:{59:{c:[8851]}}}}}}}}}}}}}}}}}}}}}}}}},83:{l:{117:{l:{98:{l:{115:{l:{101:{l:{116:{l:{59:{c:[8847]},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8849]}}}}}}}}}}}}}}}}}}},112:{l:{101:{l:{114:{l:{115:{l:{101:{l:{116:{l:{59:{c:[8848]},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8850]}}}}}}}}}}}}}}}}}}}}}}}}}}},85:{l:{110:{l:{105:{l:{111:{l:{110:{l:{59:{c:[8852]}}}}}}}}}}}}}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119982]}}}}}}},116:{l:{97:{l:{114:{l:{59:{c:[8902]}}}}}}},117:{l:{98:{l:{59:{c:[8912]},115:{l:{101:{l:{116:{l:{59:{c:[8912]},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8838]}}}}}}}}}}}}}}}}}}},99:{l:{99:{l:{101:{l:{101:{l:{100:{l:{115:{l:{59:{c:[8827]},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[10928]}}}}}}}}}}},83:{l:{108:{l:{97:{l:{110:{l:{116:{l:{69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8829]}}}}}}}}}}}}}}}}}}}}},84:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[8831]}}}}}}}}}}}}}}}}}}}}},104:{l:{84:{l:{104:{l:{97:{l:{116:{l:{59:{c:[8715]}}}}}}}}}}}}},109:{l:{59:{c:[8721]}}},112:{l:{59:{c:[8913]},101:{l:{114:{l:{115:{l:{101:{l:{116:{l:{59:{c:[8835]},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8839]}}}}}}}}}}}}}}}}}}}}},115:{l:{101:{l:{116:{l:{59:{c:[8913]}}}}}}}}}}}}},84:{l:{72:{l:{79:{l:{82:{l:{78:{l:{59:{c:[222]}},c:[222]}}}}}}},82:{l:{65:{l:{68:{l:{69:{l:{59:{c:[8482]}}}}}}}}},83:{l:{72:{l:{99:{l:{121:{l:{59:{c:[1035]}}}}}}},99:{l:{121:{l:{59:{c:[1062]}}}}}}},97:{l:{98:{l:{59:{c:[9]}}},117:{l:{59:{c:[932]}}}}},99:{l:{97:{l:{114:{l:{111:{l:{110:{l:{59:{c:[356]}}}}}}}}},101:{l:{100:{l:{105:{l:{108:{l:{59:{c:[354]}}}}}}}}},121:{l:{59:{c:[1058]}}}}},102:{l:{114:{l:{59:{c:[120087]}}}}},104:{l:{101:{l:{114:{l:{101:{l:{102:{l:{111:{l:{114:{l:{101:{l:{59:{c:[8756]}}}}}}}}}}}}},116:{l:{97:{l:{59:{c:[920]}}}}}}},105:{l:{99:{l:{107:{l:{83:{l:{112:{l:{97:{l:{99:{l:{101:{l:{59:{c:[8287,8202]}}}}}}}}}}}}}}},110:{l:{83:{l:{112:{l:{97:{l:{99:{l:{101:{l:{59:{c:[8201]}}}}}}}}}}}}}}}}},105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[8764]},69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8771]}}}}}}}}}}},70:{l:{117:{l:{108:{l:{108:{l:{69:{l:{113:{l:{117:{l:{97:{l:{108:{l:{59:{c:[8773]}}}}}}}}}}}}}}}}}}},84:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[8776]}}}}}}}}}}}}}}}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120139]}}}}}}},114:{l:{105:{l:{112:{l:{108:{l:{101:{l:{68:{l:{111:{l:{116:{l:{59:{c:[8411]}}}}}}}}}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119983]}}}}},116:{l:{114:{l:{111:{l:{107:{l:{59:{c:[358]}}}}}}}}}}}}},85:{l:{97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[218]}},c:[218]}}}}}}},114:{l:{114:{l:{59:{c:[8607]},111:{l:{99:{l:{105:{l:{114:{l:{59:{c:[10569]}}}}}}}}}}}}}}},98:{l:{114:{l:{99:{l:{121:{l:{59:{c:[1038]}}}}},101:{l:{118:{l:{101:{l:{59:{c:[364]}}}}}}}}}}},99:{l:{105:{l:{114:{l:{99:{l:{59:{c:[219]}},c:[219]}}}}},121:{l:{59:{c:[1059]}}}}},100:{l:{98:{l:{108:{l:{97:{l:{99:{l:{59:{c:[368]}}}}}}}}}}},102:{l:{114:{l:{59:{c:[120088]}}}}},103:{l:{114:{l:{97:{l:{118:{l:{101:{l:{59:{c:[217]}},c:[217]}}}}}}}}},109:{l:{97:{l:{99:{l:{114:{l:{59:{c:[362]}}}}}}}}},110:{l:{100:{l:{101:{l:{114:{l:{66:{l:{97:{l:{114:{l:{59:{c:[95]}}}}},114:{l:{97:{l:{99:{l:{101:{l:{59:{c:[9183]}}},107:{l:{101:{l:{116:{l:{59:{c:[9141]}}}}}}}}}}}}}}},80:{l:{97:{l:{114:{l:{101:{l:{110:{l:{116:{l:{104:{l:{101:{l:{115:{l:{105:{l:{115:{l:{59:{c:[9181]}}}}}}}}}}}}}}}}}}}}}}}}}}}}},105:{l:{111:{l:{110:{l:{59:{c:[8899]},80:{l:{108:{l:{117:{l:{115:{l:{59:{c:[8846]}}}}}}}}}}}}}}}}},111:{l:{103:{l:{111:{l:{110:{l:{59:{c:[370]}}}}}}},112:{l:{102:{l:{59:{c:[120140]}}}}}}},112:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8593]},66:{l:{97:{l:{114:{l:{59:{c:[10514]}}}}}}},68:{l:{111:{l:{119:{l:{110:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8645]}}}}}}}}}}}}}}}}}}}}}}}}}}}}},68:{l:{111:{l:{119:{l:{110:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8597]}}}}}}}}}}}}}}}}}}},69:{l:{113:{l:{117:{l:{105:{l:{108:{l:{105:{l:{98:{l:{114:{l:{105:{l:{117:{l:{109:{l:{59:{c:[10606]}}}}}}}}}}}}}}}}}}}}}}},84:{l:{101:{l:{101:{l:{59:{c:[8869]},65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8613]}}}}}}}}}}}}}}}}},97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8657]}}}}}}}}}}},100:{l:{111:{l:{119:{l:{110:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8661]}}}}}}}}}}}}}}}}}}},112:{l:{101:{l:{114:{l:{76:{l:{101:{l:{102:{l:{116:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8598]}}}}}}}}}}}}}}}}}}},82:{l:{105:{l:{103:{l:{104:{l:{116:{l:{65:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8599]}}}}}}}}}}}}}}}}}}}}}}}}}}},115:{l:{105:{l:{59:{c:[978]},108:{l:{111:{l:{110:{l:{59:{c:[933]}}}}}}}}}}}}},114:{l:{105:{l:{110:{l:{103:{l:{59:{c:[366]}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119984]}}}}}}},116:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[360]}}}}}}}}}}},117:{l:{109:{l:{108:{l:{59:{c:[220]}},c:[220]}}}}}}},86:{l:{68:{l:{97:{l:{115:{l:{104:{l:{59:{c:[8875]}}}}}}}}},98:{l:{97:{l:{114:{l:{59:{c:[10987]}}}}}}},99:{l:{121:{l:{59:{c:[1042]}}}}},100:{l:{97:{l:{115:{l:{104:{l:{59:{c:[8873]},108:{l:{59:{c:[10982]}}}}}}}}}}},101:{l:{101:{l:{59:{c:[8897]}}},114:{l:{98:{l:{97:{l:{114:{l:{59:{c:[8214]}}}}}}},116:{l:{59:{c:[8214]},105:{l:{99:{l:{97:{l:{108:{l:{66:{l:{97:{l:{114:{l:{59:{c:[8739]}}}}}}},76:{l:{105:{l:{110:{l:{101:{l:{59:{c:[124]}}}}}}}}},83:{l:{101:{l:{112:{l:{97:{l:{114:{l:{97:{l:{116:{l:{111:{l:{114:{l:{59:{c:[10072]}}}}}}}}}}}}}}}}}}},84:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[8768]}}}}}}}}}}}}}}}}}}}}},121:{l:{84:{l:{104:{l:{105:{l:{110:{l:{83:{l:{112:{l:{97:{l:{99:{l:{101:{l:{59:{c:[8202]}}}}}}}}}}}}}}}}}}}}}}}}},102:{l:{114:{l:{59:{c:[120089]}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120141]}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119985]}}}}}}},118:{l:{100:{l:{97:{l:{115:{l:{104:{l:{59:{c:[8874]}}}}}}}}}}}}},87:{l:{99:{l:{105:{l:{114:{l:{99:{l:{59:{c:[372]}}}}}}}}},101:{l:{100:{l:{103:{l:{101:{l:{59:{c:[8896]}}}}}}}}},102:{l:{114:{l:{59:{c:[120090]}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120142]}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119986]}}}}}}}}},88:{l:{102:{l:{114:{l:{59:{c:[120091]}}}}},105:{l:{59:{c:[926]}}},111:{l:{112:{l:{102:{l:{59:{c:[120143]}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119987]}}}}}}}}},89:{l:{65:{l:{99:{l:{121:{l:{59:{c:[1071]}}}}}}},73:{l:{99:{l:{121:{l:{59:{c:[1031]}}}}}}},85:{l:{99:{l:{121:{l:{59:{c:[1070]}}}}}}},97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[221]}},c:[221]}}}}}}}}},99:{l:{105:{l:{114:{l:{99:{l:{59:{c:[374]}}}}}}},121:{l:{59:{c:[1067]}}}}},102:{l:{114:{l:{59:{c:[120092]}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120144]}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119988]}}}}}}},117:{l:{109:{l:{108:{l:{59:{c:[376]}}}}}}}}},90:{l:{72:{l:{99:{l:{121:{l:{59:{c:[1046]}}}}}}},97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[377]}}}}}}}}}}},99:{l:{97:{l:{114:{l:{111:{l:{110:{l:{59:{c:[381]}}}}}}}}},121:{l:{59:{c:[1047]}}}}},100:{l:{111:{l:{116:{l:{59:{c:[379]}}}}}}},101:{l:{114:{l:{111:{l:{87:{l:{105:{l:{100:{l:{116:{l:{104:{l:{83:{l:{112:{l:{97:{l:{99:{l:{101:{l:{59:{c:[8203]}}}}}}}}}}}}}}}}}}}}}}}}},116:{l:{97:{l:{59:{c:[918]}}}}}}},102:{l:{114:{l:{59:{c:[8488]}}}}},111:{l:{112:{l:{102:{l:{59:{c:[8484]}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119989]}}}}}}}}},97:{l:{97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[225]}},c:[225]}}}}}}}}},98:{l:{114:{l:{101:{l:{118:{l:{101:{l:{59:{c:[259]}}}}}}}}}}},99:{l:{59:{c:[8766]},69:{l:{59:{c:[8766,819]}}},100:{l:{59:{c:[8767]}}},105:{l:{114:{l:{99:{l:{59:{c:[226]}},c:[226]}}}}},117:{l:{116:{l:{101:{l:{59:{c:[180]}},c:[180]}}}}},121:{l:{59:{c:[1072]}}}}},101:{l:{108:{l:{105:{l:{103:{l:{59:{c:[230]}},c:[230]}}}}}}},102:{l:{59:{c:[8289]},114:{l:{59:{c:[120094]}}}}},103:{l:{114:{l:{97:{l:{118:{l:{101:{l:{59:{c:[224]}},c:[224]}}}}}}}}},108:{l:{101:{l:{102:{l:{115:{l:{121:{l:{109:{l:{59:{c:[8501]}}}}}}}}},112:{l:{104:{l:{59:{c:[8501]}}}}}}},112:{l:{104:{l:{97:{l:{59:{c:[945]}}}}}}}}},109:{l:{97:{l:{99:{l:{114:{l:{59:{c:[257]}}}}},108:{l:{103:{l:{59:{c:[10815]}}}}}}},112:{l:{59:{c:[38]}},c:[38]}}},110:{l:{100:{l:{59:{c:[8743]},97:{l:{110:{l:{100:{l:{59:{c:[10837]}}}}}}},100:{l:{59:{c:[10844]}}},115:{l:{108:{l:{111:{l:{112:{l:{101:{l:{59:{c:[10840]}}}}}}}}}}},118:{l:{59:{c:[10842]}}}}},103:{l:{59:{c:[8736]},101:{l:{59:{c:[10660]}}},108:{l:{101:{l:{59:{c:[8736]}}}}},109:{l:{115:{l:{100:{l:{59:{c:[8737]},97:{l:{97:{l:{59:{c:[10664]}}},98:{l:{59:{c:[10665]}}},99:{l:{59:{c:[10666]}}},100:{l:{59:{c:[10667]}}},101:{l:{59:{c:[10668]}}},102:{l:{59:{c:[10669]}}},103:{l:{59:{c:[10670]}}},104:{l:{59:{c:[10671]}}}}}}}}}}},114:{l:{116:{l:{59:{c:[8735]},118:{l:{98:{l:{59:{c:[8894]},100:{l:{59:{c:[10653]}}}}}}}}}}},115:{l:{112:{l:{104:{l:{59:{c:[8738]}}}}},116:{l:{59:{c:[197]}}}}},122:{l:{97:{l:{114:{l:{114:{l:{59:{c:[9084]}}}}}}}}}}}}},111:{l:{103:{l:{111:{l:{110:{l:{59:{c:[261]}}}}}}},112:{l:{102:{l:{59:{c:[120146]}}}}}}},112:{l:{59:{c:[8776]},69:{l:{59:{c:[10864]}}},97:{l:{99:{l:{105:{l:{114:{l:{59:{c:[10863]}}}}}}}}},101:{l:{59:{c:[8778]}}},105:{l:{100:{l:{59:{c:[8779]}}}}},111:{l:{115:{l:{59:{c:[39]}}}}},112:{l:{114:{l:{111:{l:{120:{l:{59:{c:[8776]},101:{l:{113:{l:{59:{c:[8778]}}}}}}}}}}}}}}},114:{l:{105:{l:{110:{l:{103:{l:{59:{c:[229]}},c:[229]}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119990]}}}}},116:{l:{59:{c:[42]}}},121:{l:{109:{l:{112:{l:{59:{c:[8776]},101:{l:{113:{l:{59:{c:[8781]}}}}}}}}}}}}},116:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[227]}},c:[227]}}}}}}}}},117:{l:{109:{l:{108:{l:{59:{c:[228]}},c:[228]}}}}},119:{l:{99:{l:{111:{l:{110:{l:{105:{l:{110:{l:{116:{l:{59:{c:[8755]}}}}}}}}}}}}},105:{l:{110:{l:{116:{l:{59:{c:[10769]}}}}}}}}}}},98:{l:{78:{l:{111:{l:{116:{l:{59:{c:[10989]}}}}}}},97:{l:{99:{l:{107:{l:{99:{l:{111:{l:{110:{l:{103:{l:{59:{c:[8780]}}}}}}}}},101:{l:{112:{l:{115:{l:{105:{l:{108:{l:{111:{l:{110:{l:{59:{c:[1014]}}}}}}}}}}}}}}},112:{l:{114:{l:{105:{l:{109:{l:{101:{l:{59:{c:[8245]}}}}}}}}}}},115:{l:{105:{l:{109:{l:{59:{c:[8765]},101:{l:{113:{l:{59:{c:[8909]}}}}}}}}}}}}}}},114:{l:{118:{l:{101:{l:{101:{l:{59:{c:[8893]}}}}}}},119:{l:{101:{l:{100:{l:{59:{c:[8965]},103:{l:{101:{l:{59:{c:[8965]}}}}}}}}}}}}}}},98:{l:{114:{l:{107:{l:{59:{c:[9141]},116:{l:{98:{l:{114:{l:{107:{l:{59:{c:[9142]}}}}}}}}}}}}}}},99:{l:{111:{l:{110:{l:{103:{l:{59:{c:[8780]}}}}}}},121:{l:{59:{c:[1073]}}}}},100:{l:{113:{l:{117:{l:{111:{l:{59:{c:[8222]}}}}}}}}},101:{l:{99:{l:{97:{l:{117:{l:{115:{l:{59:{c:[8757]},101:{l:{59:{c:[8757]}}}}}}}}}}},109:{l:{112:{l:{116:{l:{121:{l:{118:{l:{59:{c:[10672]}}}}}}}}}}},112:{l:{115:{l:{105:{l:{59:{c:[1014]}}}}}}},114:{l:{110:{l:{111:{l:{117:{l:{59:{c:[8492]}}}}}}}}},116:{l:{97:{l:{59:{c:[946]}}},104:{l:{59:{c:[8502]}}},119:{l:{101:{l:{101:{l:{110:{l:{59:{c:[8812]}}}}}}}}}}}}},102:{l:{114:{l:{59:{c:[120095]}}}}},105:{l:{103:{l:{99:{l:{97:{l:{112:{l:{59:{c:[8898]}}}}},105:{l:{114:{l:{99:{l:{59:{c:[9711]}}}}}}},117:{l:{112:{l:{59:{c:[8899]}}}}}}},111:{l:{100:{l:{111:{l:{116:{l:{59:{c:[10752]}}}}}}},112:{l:{108:{l:{117:{l:{115:{l:{59:{c:[10753]}}}}}}}}},116:{l:{105:{l:{109:{l:{101:{l:{115:{l:{59:{c:[10754]}}}}}}}}}}}}},115:{l:{113:{l:{99:{l:{117:{l:{112:{l:{59:{c:[10758]}}}}}}}}},116:{l:{97:{l:{114:{l:{59:{c:[9733]}}}}}}}}},116:{l:{114:{l:{105:{l:{97:{l:{110:{l:{103:{l:{108:{l:{101:{l:{100:{l:{111:{l:{119:{l:{110:{l:{59:{c:[9661]}}}}}}}}},117:{l:{112:{l:{59:{c:[9651]}}}}}}}}}}}}}}}}}}}}},117:{l:{112:{l:{108:{l:{117:{l:{115:{l:{59:{c:[10756]}}}}}}}}}}},118:{l:{101:{l:{101:{l:{59:{c:[8897]}}}}}}},119:{l:{101:{l:{100:{l:{103:{l:{101:{l:{59:{c:[8896]}}}}}}}}}}}}}}},107:{l:{97:{l:{114:{l:{111:{l:{119:{l:{59:{c:[10509]}}}}}}}}}}},108:{l:{97:{l:{99:{l:{107:{l:{108:{l:{111:{l:{122:{l:{101:{l:{110:{l:{103:{l:{101:{l:{59:{c:[10731]}}}}}}}}}}}}}}},115:{l:{113:{l:{117:{l:{97:{l:{114:{l:{101:{l:{59:{c:[9642]}}}}}}}}}}}}},116:{l:{114:{l:{105:{l:{97:{l:{110:{l:{103:{l:{108:{l:{101:{l:{59:{c:[9652]},100:{l:{111:{l:{119:{l:{110:{l:{59:{c:[9662]}}}}}}}}},108:{l:{101:{l:{102:{l:{116:{l:{59:{c:[9666]}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{59:{c:[9656]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},110:{l:{107:{l:{59:{c:[9251]}}}}}}},107:{l:{49:{l:{50:{l:{59:{c:[9618]}}},52:{l:{59:{c:[9617]}}}}},51:{l:{52:{l:{59:{c:[9619]}}}}}}},111:{l:{99:{l:{107:{l:{59:{c:[9608]}}}}}}}}},110:{l:{101:{l:{59:{c:[61,8421]},113:{l:{117:{l:{105:{l:{118:{l:{59:{c:[8801,8421]}}}}}}}}}}},111:{l:{116:{l:{59:{c:[8976]}}}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120147]}}}}},116:{l:{59:{c:[8869]},116:{l:{111:{l:{109:{l:{59:{c:[8869]}}}}}}}}},119:{l:{116:{l:{105:{l:{101:{l:{59:{c:[8904]}}}}}}}}},120:{l:{68:{l:{76:{l:{59:{c:[9559]}}},82:{l:{59:{c:[9556]}}},108:{l:{59:{c:[9558]}}},114:{l:{59:{c:[9555]}}}}},72:{l:{59:{c:[9552]},68:{l:{59:{c:[9574]}}},85:{l:{59:{c:[9577]}}},100:{l:{59:{c:[9572]}}},117:{l:{59:{c:[9575]}}}}},85:{l:{76:{l:{59:{c:[9565]}}},82:{l:{59:{c:[9562]}}},108:{l:{59:{c:[9564]}}},114:{l:{59:{c:[9561]}}}}},86:{l:{59:{c:[9553]},72:{l:{59:{c:[9580]}}},76:{l:{59:{c:[9571]}}},82:{l:{59:{c:[9568]}}},104:{l:{59:{c:[9579]}}},108:{l:{59:{c:[9570]}}},114:{l:{59:{c:[9567]}}}}},98:{l:{111:{l:{120:{l:{59:{c:[10697]}}}}}}},100:{l:{76:{l:{59:{c:[9557]}}},82:{l:{59:{c:[9554]}}},108:{l:{59:{c:[9488]}}},114:{l:{59:{c:[9484]}}}}},104:{l:{59:{c:[9472]},68:{l:{59:{c:[9573]}}},85:{l:{59:{c:[9576]}}},100:{l:{59:{c:[9516]}}},117:{l:{59:{c:[9524]}}}}},109:{l:{105:{l:{110:{l:{117:{l:{115:{l:{59:{c:[8863]}}}}}}}}}}},112:{l:{108:{l:{117:{l:{115:{l:{59:{c:[8862]}}}}}}}}},116:{l:{105:{l:{109:{l:{101:{l:{115:{l:{59:{c:[8864]}}}}}}}}}}},117:{l:{76:{l:{59:{c:[9563]}}},82:{l:{59:{c:[9560]}}},108:{l:{59:{c:[9496]}}},114:{l:{59:{c:[9492]}}}}},118:{l:{59:{c:[9474]},72:{l:{59:{c:[9578]}}},76:{l:{59:{c:[9569]}}},82:{l:{59:{c:[9566]}}},104:{l:{59:{c:[9532]}}},108:{l:{59:{c:[9508]}}},114:{l:{59:{c:[9500]}}}}}}}}},112:{l:{114:{l:{105:{l:{109:{l:{101:{l:{59:{c:[8245]}}}}}}}}}}},114:{l:{101:{l:{118:{l:{101:{l:{59:{c:[728]}}}}}}},118:{l:{98:{l:{97:{l:{114:{l:{59:{c:[166]}},c:[166]}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119991]}}}}},101:{l:{109:{l:{105:{l:{59:{c:[8271]}}}}}}},105:{l:{109:{l:{59:{c:[8765]},101:{l:{59:{c:[8909]}}}}}}},111:{l:{108:{l:{59:{c:[92]},98:{l:{59:{c:[10693]}}},104:{l:{115:{l:{117:{l:{98:{l:{59:{c:[10184]}}}}}}}}}}}}}}},117:{l:{108:{l:{108:{l:{59:{c:[8226]},101:{l:{116:{l:{59:{c:[8226]}}}}}}}}},109:{l:{112:{l:{59:{c:[8782]},69:{l:{59:{c:[10926]}}},101:{l:{59:{c:[8783]},113:{l:{59:{c:[8783]}}}}}}}}}}}}},99:{l:{97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[263]}}}}}}}}},112:{l:{59:{c:[8745]},97:{l:{110:{l:{100:{l:{59:{c:[10820]}}}}}}},98:{l:{114:{l:{99:{l:{117:{l:{112:{l:{59:{c:[10825]}}}}}}}}}}},99:{l:{97:{l:{112:{l:{59:{c:[10827]}}}}},117:{l:{112:{l:{59:{c:[10823]}}}}}}},100:{l:{111:{l:{116:{l:{59:{c:[10816]}}}}}}},115:{l:{59:{c:[8745,65024]}}}}},114:{l:{101:{l:{116:{l:{59:{c:[8257]}}}}},111:{l:{110:{l:{59:{c:[711]}}}}}}}}},99:{l:{97:{l:{112:{l:{115:{l:{59:{c:[10829]}}}}},114:{l:{111:{l:{110:{l:{59:{c:[269]}}}}}}}}},101:{l:{100:{l:{105:{l:{108:{l:{59:{c:[231]}},c:[231]}}}}}}},105:{l:{114:{l:{99:{l:{59:{c:[265]}}}}}}},117:{l:{112:{l:{115:{l:{59:{c:[10828]},115:{l:{109:{l:{59:{c:[10832]}}}}}}}}}}}}},100:{l:{111:{l:{116:{l:{59:{c:[267]}}}}}}},101:{l:{100:{l:{105:{l:{108:{l:{59:{c:[184]}},c:[184]}}}}},109:{l:{112:{l:{116:{l:{121:{l:{118:{l:{59:{c:[10674]}}}}}}}}}}},110:{l:{116:{l:{59:{c:[162]},101:{l:{114:{l:{100:{l:{111:{l:{116:{l:{59:{c:[183]}}}}}}}}}}}},c:[162]}}}}},102:{l:{114:{l:{59:{c:[120096]}}}}},104:{l:{99:{l:{121:{l:{59:{c:[1095]}}}}},101:{l:{99:{l:{107:{l:{59:{c:[10003]},109:{l:{97:{l:{114:{l:{107:{l:{59:{c:[10003]}}}}}}}}}}}}}}},105:{l:{59:{c:[967]}}}}},105:{l:{114:{l:{59:{c:[9675]},69:{l:{59:{c:[10691]}}},99:{l:{59:{c:[710]},101:{l:{113:{l:{59:{c:[8791]}}}}},108:{l:{101:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{108:{l:{101:{l:{102:{l:{116:{l:{59:{c:[8634]}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{59:{c:[8635]}}}}}}}}}}}}}}}}}}}}},100:{l:{82:{l:{59:{c:[174]}}},83:{l:{59:{c:[9416]}}},97:{l:{115:{l:{116:{l:{59:{c:[8859]}}}}}}},99:{l:{105:{l:{114:{l:{99:{l:{59:{c:[8858]}}}}}}}}},100:{l:{97:{l:{115:{l:{104:{l:{59:{c:[8861]}}}}}}}}}}}}}}}}},101:{l:{59:{c:[8791]}}},102:{l:{110:{l:{105:{l:{110:{l:{116:{l:{59:{c:[10768]}}}}}}}}}}},109:{l:{105:{l:{100:{l:{59:{c:[10991]}}}}}}},115:{l:{99:{l:{105:{l:{114:{l:{59:{c:[10690]}}}}}}}}}}}}},108:{l:{117:{l:{98:{l:{115:{l:{59:{c:[9827]},117:{l:{105:{l:{116:{l:{59:{c:[9827]}}}}}}}}}}}}}}},111:{l:{108:{l:{111:{l:{110:{l:{59:{c:[58]},101:{l:{59:{c:[8788]},113:{l:{59:{c:[8788]}}}}}}}}}}},109:{l:{109:{l:{97:{l:{59:{c:[44]},116:{l:{59:{c:[64]}}}}}}},112:{l:{59:{c:[8705]},102:{l:{110:{l:{59:{c:[8728]}}}}},108:{l:{101:{l:{109:{l:{101:{l:{110:{l:{116:{l:{59:{c:[8705]}}}}}}}}},120:{l:{101:{l:{115:{l:{59:{c:[8450]}}}}}}}}}}}}}}},110:{l:{103:{l:{59:{c:[8773]},100:{l:{111:{l:{116:{l:{59:{c:[10861]}}}}}}}}},105:{l:{110:{l:{116:{l:{59:{c:[8750]}}}}}}}}},112:{l:{102:{l:{59:{c:[120148]}}},114:{l:{111:{l:{100:{l:{59:{c:[8720]}}}}}}},121:{l:{59:{c:[169]},115:{l:{114:{l:{59:{c:[8471]}}}}}},c:[169]}}}}},114:{l:{97:{l:{114:{l:{114:{l:{59:{c:[8629]}}}}}}},111:{l:{115:{l:{115:{l:{59:{c:[10007]}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119992]}}}}},117:{l:{98:{l:{59:{c:[10959]},101:{l:{59:{c:[10961]}}}}},112:{l:{59:{c:[10960]},101:{l:{59:{c:[10962]}}}}}}}}},116:{l:{100:{l:{111:{l:{116:{l:{59:{c:[8943]}}}}}}}}},117:{l:{100:{l:{97:{l:{114:{l:{114:{l:{108:{l:{59:{c:[10552]}}},114:{l:{59:{c:[10549]}}}}}}}}}}},101:{l:{112:{l:{114:{l:{59:{c:[8926]}}}}},115:{l:{99:{l:{59:{c:[8927]}}}}}}},108:{l:{97:{l:{114:{l:{114:{l:{59:{c:[8630]},112:{l:{59:{c:[10557]}}}}}}}}}}},112:{l:{59:{c:[8746]},98:{l:{114:{l:{99:{l:{97:{l:{112:{l:{59:{c:[10824]}}}}}}}}}}},99:{l:{97:{l:{112:{l:{59:{c:[10822]}}}}},117:{l:{112:{l:{59:{c:[10826]}}}}}}},100:{l:{111:{l:{116:{l:{59:{c:[8845]}}}}}}},111:{l:{114:{l:{59:{c:[10821]}}}}},115:{l:{59:{c:[8746,65024]}}}}},114:{l:{97:{l:{114:{l:{114:{l:{59:{c:[8631]},109:{l:{59:{c:[10556]}}}}}}}}},108:{l:{121:{l:{101:{l:{113:{l:{112:{l:{114:{l:{101:{l:{99:{l:{59:{c:[8926]}}}}}}}}},115:{l:{117:{l:{99:{l:{99:{l:{59:{c:[8927]}}}}}}}}}}}}},118:{l:{101:{l:{101:{l:{59:{c:[8910]}}}}}}},119:{l:{101:{l:{100:{l:{103:{l:{101:{l:{59:{c:[8911]}}}}}}}}}}}}}}},114:{l:{101:{l:{110:{l:{59:{c:[164]}},c:[164]}}}}},118:{l:{101:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{108:{l:{101:{l:{102:{l:{116:{l:{59:{c:[8630]}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{59:{c:[8631]}}}}}}}}}}}}}}}}}}}}}}}}}}},118:{l:{101:{l:{101:{l:{59:{c:[8910]}}}}}}},119:{l:{101:{l:{100:{l:{59:{c:[8911]}}}}}}}}},119:{l:{99:{l:{111:{l:{110:{l:{105:{l:{110:{l:{116:{l:{59:{c:[8754]}}}}}}}}}}}}},105:{l:{110:{l:{116:{l:{59:{c:[8753]}}}}}}}}},121:{l:{108:{l:{99:{l:{116:{l:{121:{l:{59:{c:[9005]}}}}}}}}}}}}},100:{l:{65:{l:{114:{l:{114:{l:{59:{c:[8659]}}}}}}},72:{l:{97:{l:{114:{l:{59:{c:[10597]}}}}}}},97:{l:{103:{l:{103:{l:{101:{l:{114:{l:{59:{c:[8224]}}}}}}}}},108:{l:{101:{l:{116:{l:{104:{l:{59:{c:[8504]}}}}}}}}},114:{l:{114:{l:{59:{c:[8595]}}}}},115:{l:{104:{l:{59:{c:[8208]},118:{l:{59:{c:[8867]}}}}}}}}},98:{l:{107:{l:{97:{l:{114:{l:{111:{l:{119:{l:{59:{c:[10511]}}}}}}}}}}},108:{l:{97:{l:{99:{l:{59:{c:[733]}}}}}}}}},99:{l:{97:{l:{114:{l:{111:{l:{110:{l:{59:{c:[271]}}}}}}}}},121:{l:{59:{c:[1076]}}}}},100:{l:{59:{c:[8518]},97:{l:{103:{l:{103:{l:{101:{l:{114:{l:{59:{c:[8225]}}}}}}}}},114:{l:{114:{l:{59:{c:[8650]}}}}}}},111:{l:{116:{l:{115:{l:{101:{l:{113:{l:{59:{c:[10871]}}}}}}}}}}}}},101:{l:{103:{l:{59:{c:[176]}},c:[176]},108:{l:{116:{l:{97:{l:{59:{c:[948]}}}}}}},109:{l:{112:{l:{116:{l:{121:{l:{118:{l:{59:{c:[10673]}}}}}}}}}}}}},102:{l:{105:{l:{115:{l:{104:{l:{116:{l:{59:{c:[10623]}}}}}}}}},114:{l:{59:{c:[120097]}}}}},104:{l:{97:{l:{114:{l:{108:{l:{59:{c:[8643]}}},114:{l:{59:{c:[8642]}}}}}}}}},105:{l:{97:{l:{109:{l:{59:{c:[8900]},111:{l:{110:{l:{100:{l:{59:{c:[8900]},115:{l:{117:{l:{105:{l:{116:{l:{59:{c:[9830]}}}}}}}}}}}}}}},115:{l:{59:{c:[9830]}}}}}}},101:{l:{59:{c:[168]}}},103:{l:{97:{l:{109:{l:{109:{l:{97:{l:{59:{c:[989]}}}}}}}}}}},115:{l:{105:{l:{110:{l:{59:{c:[8946]}}}}}}},118:{l:{59:{c:[247]},105:{l:{100:{l:{101:{l:{59:{c:[247]},111:{l:{110:{l:{116:{l:{105:{l:{109:{l:{101:{l:{115:{l:{59:{c:[8903]}}}}}}}}}}}}}}}},c:[247]}}}}},111:{l:{110:{l:{120:{l:{59:{c:[8903]}}}}}}}}}}},106:{l:{99:{l:{121:{l:{59:{c:[1106]}}}}}}},108:{l:{99:{l:{111:{l:{114:{l:{110:{l:{59:{c:[8990]}}}}}}},114:{l:{111:{l:{112:{l:{59:{c:[8973]}}}}}}}}}}},111:{l:{108:{l:{108:{l:{97:{l:{114:{l:{59:{c:[36]}}}}}}}}},112:{l:{102:{l:{59:{c:[120149]}}}}},116:{l:{59:{c:[729]},101:{l:{113:{l:{59:{c:[8784]},100:{l:{111:{l:{116:{l:{59:{c:[8785]}}}}}}}}}}},109:{l:{105:{l:{110:{l:{117:{l:{115:{l:{59:{c:[8760]}}}}}}}}}}},112:{l:{108:{l:{117:{l:{115:{l:{59:{c:[8724]}}}}}}}}},115:{l:{113:{l:{117:{l:{97:{l:{114:{l:{101:{l:{59:{c:[8865]}}}}}}}}}}}}}}},117:{l:{98:{l:{108:{l:{101:{l:{98:{l:{97:{l:{114:{l:{119:{l:{101:{l:{100:{l:{103:{l:{101:{l:{59:{c:[8966]}}}}}}}}}}}}}}}}}}}}}}}}},119:{l:{110:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8595]}}}}}}}}}}},100:{l:{111:{l:{119:{l:{110:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{115:{l:{59:{c:[8650]}}}}}}}}}}}}}}}}}}}}},104:{l:{97:{l:{114:{l:{112:{l:{111:{l:{111:{l:{110:{l:{108:{l:{101:{l:{102:{l:{116:{l:{59:{c:[8643]}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{59:{c:[8642]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},114:{l:{98:{l:{107:{l:{97:{l:{114:{l:{111:{l:{119:{l:{59:{c:[10512]}}}}}}}}}}}}},99:{l:{111:{l:{114:{l:{110:{l:{59:{c:[8991]}}}}}}},114:{l:{111:{l:{112:{l:{59:{c:[8972]}}}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119993]}}},121:{l:{59:{c:[1109]}}}}},111:{l:{108:{l:{59:{c:[10742]}}}}},116:{l:{114:{l:{111:{l:{107:{l:{59:{c:[273]}}}}}}}}}}},116:{l:{100:{l:{111:{l:{116:{l:{59:{c:[8945]}}}}}}},114:{l:{105:{l:{59:{c:[9663]},102:{l:{59:{c:[9662]}}}}}}}}},117:{l:{97:{l:{114:{l:{114:{l:{59:{c:[8693]}}}}}}},104:{l:{97:{l:{114:{l:{59:{c:[10607]}}}}}}}}},119:{l:{97:{l:{110:{l:{103:{l:{108:{l:{101:{l:{59:{c:[10662]}}}}}}}}}}}}},122:{l:{99:{l:{121:{l:{59:{c:[1119]}}}}},105:{l:{103:{l:{114:{l:{97:{l:{114:{l:{114:{l:{59:{c:[10239]}}}}}}}}}}}}}}}}},101:{l:{68:{l:{68:{l:{111:{l:{116:{l:{59:{c:[10871]}}}}}}},111:{l:{116:{l:{59:{c:[8785]}}}}}}},97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[233]}},c:[233]}}}}}}},115:{l:{116:{l:{101:{l:{114:{l:{59:{c:[10862]}}}}}}}}}}},99:{l:{97:{l:{114:{l:{111:{l:{110:{l:{59:{c:[283]}}}}}}}}},105:{l:{114:{l:{59:{c:[8790]},99:{l:{59:{c:[234]}},c:[234]}}}}},111:{l:{108:{l:{111:{l:{110:{l:{59:{c:[8789]}}}}}}}}},121:{l:{59:{c:[1101]}}}}},100:{l:{111:{l:{116:{l:{59:{c:[279]}}}}}}},101:{l:{59:{c:[8519]}}},102:{l:{68:{l:{111:{l:{116:{l:{59:{c:[8786]}}}}}}},114:{l:{59:{c:[120098]}}}}},103:{l:{59:{c:[10906]},114:{l:{97:{l:{118:{l:{101:{l:{59:{c:[232]}},c:[232]}}}}}}},115:{l:{59:{c:[10902]},100:{l:{111:{l:{116:{l:{59:{c:[10904]}}}}}}}}}}},108:{l:{59:{c:[10905]},105:{l:{110:{l:{116:{l:{101:{l:{114:{l:{115:{l:{59:{c:[9191]}}}}}}}}}}}}},108:{l:{59:{c:[8467]}}},115:{l:{59:{c:[10901]},100:{l:{111:{l:{116:{l:{59:{c:[10903]}}}}}}}}}}},109:{l:{97:{l:{99:{l:{114:{l:{59:{c:[275]}}}}}}},112:{l:{116:{l:{121:{l:{59:{c:[8709]},115:{l:{101:{l:{116:{l:{59:{c:[8709]}}}}}}},118:{l:{59:{c:[8709]}}}}}}}}},115:{l:{112:{l:{49:{l:{51:{l:{59:{c:[8196]}}},52:{l:{59:{c:[8197]}}}}},59:{c:[8195]}}}}}}},110:{l:{103:{l:{59:{c:[331]}}},115:{l:{112:{l:{59:{c:[8194]}}}}}}},111:{l:{103:{l:{111:{l:{110:{l:{59:{c:[281]}}}}}}},112:{l:{102:{l:{59:{c:[120150]}}}}}}},112:{l:{97:{l:{114:{l:{59:{c:[8917]},115:{l:{108:{l:{59:{c:[10723]}}}}}}}}},108:{l:{117:{l:{115:{l:{59:{c:[10865]}}}}}}},115:{l:{105:{l:{59:{c:[949]},108:{l:{111:{l:{110:{l:{59:{c:[949]}}}}}}},118:{l:{59:{c:[1013]}}}}}}}}},113:{l:{99:{l:{105:{l:{114:{l:{99:{l:{59:{c:[8790]}}}}}}},111:{l:{108:{l:{111:{l:{110:{l:{59:{c:[8789]}}}}}}}}}}},115:{l:{105:{l:{109:{l:{59:{c:[8770]}}}}},108:{l:{97:{l:{110:{l:{116:{l:{103:{l:{116:{l:{114:{l:{59:{c:[10902]}}}}}}},108:{l:{101:{l:{115:{l:{115:{l:{59:{c:[10901]}}}}}}}}}}}}}}}}}}},117:{l:{97:{l:{108:{l:{115:{l:{59:{c:[61]}}}}}}},101:{l:{115:{l:{116:{l:{59:{c:[8799]}}}}}}},105:{l:{118:{l:{59:{c:[8801]},68:{l:{68:{l:{59:{c:[10872]}}}}}}}}}}},118:{l:{112:{l:{97:{l:{114:{l:{115:{l:{108:{l:{59:{c:[10725]}}}}}}}}}}}}}}},114:{l:{68:{l:{111:{l:{116:{l:{59:{c:[8787]}}}}}}},97:{l:{114:{l:{114:{l:{59:{c:[10609]}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[8495]}}}}},100:{l:{111:{l:{116:{l:{59:{c:[8784]}}}}}}},105:{l:{109:{l:{59:{c:[8770]}}}}}}},116:{l:{97:{l:{59:{c:[951]}}},104:{l:{59:{c:[240]}},c:[240]}}},117:{l:{109:{l:{108:{l:{59:{c:[235]}},c:[235]}}},114:{l:{111:{l:{59:{c:[8364]}}}}}}},120:{l:{99:{l:{108:{l:{59:{c:[33]}}}}},105:{l:{115:{l:{116:{l:{59:{c:[8707]}}}}}}},112:{l:{101:{l:{99:{l:{116:{l:{97:{l:{116:{l:{105:{l:{111:{l:{110:{l:{59:{c:[8496]}}}}}}}}}}}}}}}}},111:{l:{110:{l:{101:{l:{110:{l:{116:{l:{105:{l:{97:{l:{108:{l:{101:{l:{59:{c:[8519]}}}}}}}}}}}}}}}}}}}}}}}}},102:{l:{97:{l:{108:{l:{108:{l:{105:{l:{110:{l:{103:{l:{100:{l:{111:{l:{116:{l:{115:{l:{101:{l:{113:{l:{59:{c:[8786]}}}}}}}}}}}}}}}}}}}}}}}}},99:{l:{121:{l:{59:{c:[1092]}}}}},101:{l:{109:{l:{97:{l:{108:{l:{101:{l:{59:{c:[9792]}}}}}}}}}}},102:{l:{105:{l:{108:{l:{105:{l:{103:{l:{59:{c:[64259]}}}}}}}}},108:{l:{105:{l:{103:{l:{59:{c:[64256]}}}}},108:{l:{105:{l:{103:{l:{59:{c:[64260]}}}}}}}}},114:{l:{59:{c:[120099]}}}}},105:{l:{108:{l:{105:{l:{103:{l:{59:{c:[64257]}}}}}}}}},106:{l:{108:{l:{105:{l:{103:{l:{59:{c:[102,106]}}}}}}}}},108:{l:{97:{l:{116:{l:{59:{c:[9837]}}}}},108:{l:{105:{l:{103:{l:{59:{c:[64258]}}}}}}},116:{l:{110:{l:{115:{l:{59:{c:[9649]}}}}}}}}},110:{l:{111:{l:{102:{l:{59:{c:[402]}}}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120151]}}}}},114:{l:{97:{l:{108:{l:{108:{l:{59:{c:[8704]}}}}}}},107:{l:{59:{c:[8916]},118:{l:{59:{c:[10969]}}}}}}}}},112:{l:{97:{l:{114:{l:{116:{l:{105:{l:{110:{l:{116:{l:{59:{c:[10765]}}}}}}}}}}}}}}},114:{l:{97:{l:{99:{l:{49:{l:{50:{l:{59:{c:[189]}},c:[189]},51:{l:{59:{c:[8531]}}},52:{l:{59:{c:[188]}},c:[188]},53:{l:{59:{c:[8533]}}},54:{l:{59:{c:[8537]}}},56:{l:{59:{c:[8539]}}}}},50:{l:{51:{l:{59:{c:[8532]}}},53:{l:{59:{c:[8534]}}}}},51:{l:{52:{l:{59:{c:[190]}},c:[190]},53:{l:{59:{c:[8535]}}},56:{l:{59:{c:[8540]}}}}},52:{l:{53:{l:{59:{c:[8536]}}}}},53:{l:{54:{l:{59:{c:[8538]}}},56:{l:{59:{c:[8541]}}}}},55:{l:{56:{l:{59:{c:[8542]}}}}}}},115:{l:{108:{l:{59:{c:[8260]}}}}}}},111:{l:{119:{l:{110:{l:{59:{c:[8994]}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119995]}}}}}}}}},103:{l:{69:{l:{59:{c:[8807]},108:{l:{59:{c:[10892]}}}}},97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[501]}}}}}}}}},109:{l:{109:{l:{97:{l:{59:{c:[947]},100:{l:{59:{c:[989]}}}}}}}}},112:{l:{59:{c:[10886]}}}}},98:{l:{114:{l:{101:{l:{118:{l:{101:{l:{59:{c:[287]}}}}}}}}}}},99:{l:{105:{l:{114:{l:{99:{l:{59:{c:[285]}}}}}}},121:{l:{59:{c:[1075]}}}}},100:{l:{111:{l:{116:{l:{59:{c:[289]}}}}}}},101:{l:{59:{c:[8805]},108:{l:{59:{c:[8923]}}},113:{l:{59:{c:[8805]},113:{l:{59:{c:[8807]}}},115:{l:{108:{l:{97:{l:{110:{l:{116:{l:{59:{c:[10878]}}}}}}}}}}}}},115:{l:{59:{c:[10878]},99:{l:{99:{l:{59:{c:[10921]}}}}},100:{l:{111:{l:{116:{l:{59:{c:[10880]},111:{l:{59:{c:[10882]},108:{l:{59:{c:[10884]}}}}}}}}}}},108:{l:{59:{c:[8923,65024]},101:{l:{115:{l:{59:{c:[10900]}}}}}}}}}}},102:{l:{114:{l:{59:{c:[120100]}}}}},103:{l:{59:{c:[8811]},103:{l:{59:{c:[8921]}}}}},105:{l:{109:{l:{101:{l:{108:{l:{59:{c:[8503]}}}}}}}}},106:{l:{99:{l:{121:{l:{59:{c:[1107]}}}}}}},108:{l:{59:{c:[8823]},69:{l:{59:{c:[10898]}}},97:{l:{59:{c:[10917]}}},106:{l:{59:{c:[10916]}}}}},110:{l:{69:{l:{59:{c:[8809]}}},97:{l:{112:{l:{59:{c:[10890]},112:{l:{114:{l:{111:{l:{120:{l:{59:{c:[10890]}}}}}}}}}}}}},101:{l:{59:{c:[10888]},113:{l:{59:{c:[10888]},113:{l:{59:{c:[8809]}}}}}}},115:{l:{105:{l:{109:{l:{59:{c:[8935]}}}}}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120152]}}}}}}},114:{l:{97:{l:{118:{l:{101:{l:{59:{c:[96]}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[8458]}}}}},105:{l:{109:{l:{59:{c:[8819]},101:{l:{59:{c:[10894]}}},108:{l:{59:{c:[10896]}}}}}}}}},116:{l:{59:{c:[62]},99:{l:{99:{l:{59:{c:[10919]}}},105:{l:{114:{l:{59:{c:[10874]}}}}}}},100:{l:{111:{l:{116:{l:{59:{c:[8919]}}}}}}},108:{l:{80:{l:{97:{l:{114:{l:{59:{c:[10645]}}}}}}}}},113:{l:{117:{l:{101:{l:{115:{l:{116:{l:{59:{c:[10876]}}}}}}}}}}},114:{l:{97:{l:{112:{l:{112:{l:{114:{l:{111:{l:{120:{l:{59:{c:[10886]}}}}}}}}}}},114:{l:{114:{l:{59:{c:[10616]}}}}}}},100:{l:{111:{l:{116:{l:{59:{c:[8919]}}}}}}},101:{l:{113:{l:{108:{l:{101:{l:{115:{l:{115:{l:{59:{c:[8923]}}}}}}}}},113:{l:{108:{l:{101:{l:{115:{l:{115:{l:{59:{c:[10892]}}}}}}}}}}}}}}},108:{l:{101:{l:{115:{l:{115:{l:{59:{c:[8823]}}}}}}}}},115:{l:{105:{l:{109:{l:{59:{c:[8819]}}}}}}}}}},c:[62]},118:{l:{101:{l:{114:{l:{116:{l:{110:{l:{101:{l:{113:{l:{113:{l:{59:{c:[8809,65024]}}}}}}}}}}}}}}},110:{l:{69:{l:{59:{c:[8809,65024]}}}}}}}}},104:{l:{65:{l:{114:{l:{114:{l:{59:{c:[8660]}}}}}}},97:{l:{105:{l:{114:{l:{115:{l:{112:{l:{59:{c:[8202]}}}}}}}}},108:{l:{102:{l:{59:{c:[189]}}}}},109:{l:{105:{l:{108:{l:{116:{l:{59:{c:[8459]}}}}}}}}},114:{l:{100:{l:{99:{l:{121:{l:{59:{c:[1098]}}}}}}},114:{l:{59:{c:[8596]},99:{l:{105:{l:{114:{l:{59:{c:[10568]}}}}}}},119:{l:{59:{c:[8621]}}}}}}}}},98:{l:{97:{l:{114:{l:{59:{c:[8463]}}}}}}},99:{l:{105:{l:{114:{l:{99:{l:{59:{c:[293]}}}}}}}}},101:{l:{97:{l:{114:{l:{116:{l:{115:{l:{59:{c:[9829]},117:{l:{105:{l:{116:{l:{59:{c:[9829]}}}}}}}}}}}}}}},108:{l:{108:{l:{105:{l:{112:{l:{59:{c:[8230]}}}}}}}}},114:{l:{99:{l:{111:{l:{110:{l:{59:{c:[8889]}}}}}}}}}}},102:{l:{114:{l:{59:{c:[120101]}}}}},107:{l:{115:{l:{101:{l:{97:{l:{114:{l:{111:{l:{119:{l:{59:{c:[10533]}}}}}}}}}}},119:{l:{97:{l:{114:{l:{111:{l:{119:{l:{59:{c:[10534]}}}}}}}}}}}}}}},111:{l:{97:{l:{114:{l:{114:{l:{59:{c:[8703]}}}}}}},109:{l:{116:{l:{104:{l:{116:{l:{59:{c:[8763]}}}}}}}}},111:{l:{107:{l:{108:{l:{101:{l:{102:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8617]}}}}}}}}}}}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8618]}}}}}}}}}}}}}}}}}}}}}}}}},112:{l:{102:{l:{59:{c:[120153]}}}}},114:{l:{98:{l:{97:{l:{114:{l:{59:{c:[8213]}}}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119997]}}}}},108:{l:{97:{l:{115:{l:{104:{l:{59:{c:[8463]}}}}}}}}},116:{l:{114:{l:{111:{l:{107:{l:{59:{c:[295]}}}}}}}}}}},121:{l:{98:{l:{117:{l:{108:{l:{108:{l:{59:{c:[8259]}}}}}}}}},112:{l:{104:{l:{101:{l:{110:{l:{59:{c:[8208]}}}}}}}}}}}}},105:{l:{97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[237]}},c:[237]}}}}}}}}},99:{l:{59:{c:[8291]},105:{l:{114:{l:{99:{l:{59:{c:[238]}},c:[238]}}}}},121:{l:{59:{c:[1080]}}}}},101:{l:{99:{l:{121:{l:{59:{c:[1077]}}}}},120:{l:{99:{l:{108:{l:{59:{c:[161]}},c:[161]}}}}}}},102:{l:{102:{l:{59:{c:[8660]}}},114:{l:{59:{c:[120102]}}}}},103:{l:{114:{l:{97:{l:{118:{l:{101:{l:{59:{c:[236]}},c:[236]}}}}}}}}},105:{l:{59:{c:[8520]},105:{l:{105:{l:{110:{l:{116:{l:{59:{c:[10764]}}}}}}},110:{l:{116:{l:{59:{c:[8749]}}}}}}},110:{l:{102:{l:{105:{l:{110:{l:{59:{c:[10716]}}}}}}}}},111:{l:{116:{l:{97:{l:{59:{c:[8489]}}}}}}}}},106:{l:{108:{l:{105:{l:{103:{l:{59:{c:[307]}}}}}}}}},109:{l:{97:{l:{99:{l:{114:{l:{59:{c:[299]}}}}},103:{l:{101:{l:{59:{c:[8465]}}},108:{l:{105:{l:{110:{l:{101:{l:{59:{c:[8464]}}}}}}}}},112:{l:{97:{l:{114:{l:{116:{l:{59:{c:[8465]}}}}}}}}}}},116:{l:{104:{l:{59:{c:[305]}}}}}}},111:{l:{102:{l:{59:{c:[8887]}}}}},112:{l:{101:{l:{100:{l:{59:{c:[437]}}}}}}}}},110:{l:{59:{c:[8712]},99:{l:{97:{l:{114:{l:{101:{l:{59:{c:[8453]}}}}}}}}},102:{l:{105:{l:{110:{l:{59:{c:[8734]},116:{l:{105:{l:{101:{l:{59:{c:[10717]}}}}}}}}}}}}},111:{l:{100:{l:{111:{l:{116:{l:{59:{c:[305]}}}}}}}}},116:{l:{59:{c:[8747]},99:{l:{97:{l:{108:{l:{59:{c:[8890]}}}}}}},101:{l:{103:{l:{101:{l:{114:{l:{115:{l:{59:{c:[8484]}}}}}}}}},114:{l:{99:{l:{97:{l:{108:{l:{59:{c:[8890]}}}}}}}}}}},108:{l:{97:{l:{114:{l:{104:{l:{107:{l:{59:{c:[10775]}}}}}}}}}}},112:{l:{114:{l:{111:{l:{100:{l:{59:{c:[10812]}}}}}}}}}}}}},111:{l:{99:{l:{121:{l:{59:{c:[1105]}}}}},103:{l:{111:{l:{110:{l:{59:{c:[303]}}}}}}},112:{l:{102:{l:{59:{c:[120154]}}}}},116:{l:{97:{l:{59:{c:[953]}}}}}}},112:{l:{114:{l:{111:{l:{100:{l:{59:{c:[10812]}}}}}}}}},113:{l:{117:{l:{101:{l:{115:{l:{116:{l:{59:{c:[191]}},c:[191]}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119998]}}}}},105:{l:{110:{l:{59:{c:[8712]},69:{l:{59:{c:[8953]}}},100:{l:{111:{l:{116:{l:{59:{c:[8949]}}}}}}},115:{l:{59:{c:[8948]},118:{l:{59:{c:[8947]}}}}},118:{l:{59:{c:[8712]}}}}}}}}},116:{l:{59:{c:[8290]},105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[297]}}}}}}}}}}},117:{l:{107:{l:{99:{l:{121:{l:{59:{c:[1110]}}}}}}},109:{l:{108:{l:{59:{c:[239]}},c:[239]}}}}}}},106:{l:{99:{l:{105:{l:{114:{l:{99:{l:{59:{c:[309]}}}}}}},121:{l:{59:{c:[1081]}}}}},102:{l:{114:{l:{59:{c:[120103]}}}}},109:{l:{97:{l:{116:{l:{104:{l:{59:{c:[567]}}}}}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120155]}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[119999]}}}}},101:{l:{114:{l:{99:{l:{121:{l:{59:{c:[1112]}}}}}}}}}}},117:{l:{107:{l:{99:{l:{121:{l:{59:{c:[1108]}}}}}}}}}}},107:{l:{97:{l:{112:{l:{112:{l:{97:{l:{59:{c:[954]},118:{l:{59:{c:[1008]}}}}}}}}}}},99:{l:{101:{l:{100:{l:{105:{l:{108:{l:{59:{c:[311]}}}}}}}}},121:{l:{59:{c:[1082]}}}}},102:{l:{114:{l:{59:{c:[120104]}}}}},103:{l:{114:{l:{101:{l:{101:{l:{110:{l:{59:{c:[312]}}}}}}}}}}},104:{l:{99:{l:{121:{l:{59:{c:[1093]}}}}}}},106:{l:{99:{l:{121:{l:{59:{c:[1116]}}}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120156]}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[120000]}}}}}}}}},108:{l:{65:{l:{97:{l:{114:{l:{114:{l:{59:{c:[8666]}}}}}}},114:{l:{114:{l:{59:{c:[8656]}}}}},116:{l:{97:{l:{105:{l:{108:{l:{59:{c:[10523]}}}}}}}}}}},66:{l:{97:{l:{114:{l:{114:{l:{59:{c:[10510]}}}}}}}}},69:{l:{59:{c:[8806]},103:{l:{59:{c:[10891]}}}}},72:{l:{97:{l:{114:{l:{59:{c:[10594]}}}}}}},97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[314]}}}}}}}}},101:{l:{109:{l:{112:{l:{116:{l:{121:{l:{118:{l:{59:{c:[10676]}}}}}}}}}}}}},103:{l:{114:{l:{97:{l:{110:{l:{59:{c:[8466]}}}}}}}}},109:{l:{98:{l:{100:{l:{97:{l:{59:{c:[955]}}}}}}}}},110:{l:{103:{l:{59:{c:[10216]},100:{l:{59:{c:[10641]}}},108:{l:{101:{l:{59:{c:[10216]}}}}}}}}},112:{l:{59:{c:[10885]}}},113:{l:{117:{l:{111:{l:{59:{c:[171]}},c:[171]}}}}},114:{l:{114:{l:{59:{c:[8592]},98:{l:{59:{c:[8676]},102:{l:{115:{l:{59:{c:[10527]}}}}}}},102:{l:{115:{l:{59:{c:[10525]}}}}},104:{l:{107:{l:{59:{c:[8617]}}}}},108:{l:{112:{l:{59:{c:[8619]}}}}},112:{l:{108:{l:{59:{c:[10553]}}}}},115:{l:{105:{l:{109:{l:{59:{c:[10611]}}}}}}},116:{l:{108:{l:{59:{c:[8610]}}}}}}}}},116:{l:{59:{c:[10923]},97:{l:{105:{l:{108:{l:{59:{c:[10521]}}}}}}},101:{l:{59:{c:[10925]},115:{l:{59:{c:[10925,65024]}}}}}}}}},98:{l:{97:{l:{114:{l:{114:{l:{59:{c:[10508]}}}}}}},98:{l:{114:{l:{107:{l:{59:{c:[10098]}}}}}}},114:{l:{97:{l:{99:{l:{101:{l:{59:{c:[123]}}},107:{l:{59:{c:[91]}}}}}}},107:{l:{101:{l:{59:{c:[10635]}}},115:{l:{108:{l:{100:{l:{59:{c:[10639]}}},117:{l:{59:{c:[10637]}}}}}}}}}}}}},99:{l:{97:{l:{114:{l:{111:{l:{110:{l:{59:{c:[318]}}}}}}}}},101:{l:{100:{l:{105:{l:{108:{l:{59:{c:[316]}}}}}}},105:{l:{108:{l:{59:{c:[8968]}}}}}}},117:{l:{98:{l:{59:{c:[123]}}}}},121:{l:{59:{c:[1083]}}}}},100:{l:{99:{l:{97:{l:{59:{c:[10550]}}}}},113:{l:{117:{l:{111:{l:{59:{c:[8220]},114:{l:{59:{c:[8222]}}}}}}}}},114:{l:{100:{l:{104:{l:{97:{l:{114:{l:{59:{c:[10599]}}}}}}}}},117:{l:{115:{l:{104:{l:{97:{l:{114:{l:{59:{c:[10571]}}}}}}}}}}}}},115:{l:{104:{l:{59:{c:[8626]}}}}}}},101:{l:{59:{c:[8804]},102:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8592]},116:{l:{97:{l:{105:{l:{108:{l:{59:{c:[8610]}}}}}}}}}}}}}}}}}}},104:{l:{97:{l:{114:{l:{112:{l:{111:{l:{111:{l:{110:{l:{100:{l:{111:{l:{119:{l:{110:{l:{59:{c:[8637]}}}}}}}}},117:{l:{112:{l:{59:{c:[8636]}}}}}}}}}}}}}}}}}}},108:{l:{101:{l:{102:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{115:{l:{59:{c:[8647]}}}}}}}}}}}}}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8596]},115:{l:{59:{c:[8646]}}}}}}}}}}}}},104:{l:{97:{l:{114:{l:{112:{l:{111:{l:{111:{l:{110:{l:{115:{l:{59:{c:[8651]}}}}}}}}}}}}}}}}},115:{l:{113:{l:{117:{l:{105:{l:{103:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8621]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},116:{l:{104:{l:{114:{l:{101:{l:{101:{l:{116:{l:{105:{l:{109:{l:{101:{l:{115:{l:{59:{c:[8907]}}}}}}}}}}}}}}}}}}}}}}}}},103:{l:{59:{c:[8922]}}},113:{l:{59:{c:[8804]},113:{l:{59:{c:[8806]}}},115:{l:{108:{l:{97:{l:{110:{l:{116:{l:{59:{c:[10877]}}}}}}}}}}}}},115:{l:{59:{c:[10877]},99:{l:{99:{l:{59:{c:[10920]}}}}},100:{l:{111:{l:{116:{l:{59:{c:[10879]},111:{l:{59:{c:[10881]},114:{l:{59:{c:[10883]}}}}}}}}}}},103:{l:{59:{c:[8922,65024]},101:{l:{115:{l:{59:{c:[10899]}}}}}}},115:{l:{97:{l:{112:{l:{112:{l:{114:{l:{111:{l:{120:{l:{59:{c:[10885]}}}}}}}}}}}}},100:{l:{111:{l:{116:{l:{59:{c:[8918]}}}}}}},101:{l:{113:{l:{103:{l:{116:{l:{114:{l:{59:{c:[8922]}}}}}}},113:{l:{103:{l:{116:{l:{114:{l:{59:{c:[10891]}}}}}}}}}}}}},103:{l:{116:{l:{114:{l:{59:{c:[8822]}}}}}}},115:{l:{105:{l:{109:{l:{59:{c:[8818]}}}}}}}}}}}}},102:{l:{105:{l:{115:{l:{104:{l:{116:{l:{59:{c:[10620]}}}}}}}}},108:{l:{111:{l:{111:{l:{114:{l:{59:{c:[8970]}}}}}}}}},114:{l:{59:{c:[120105]}}}}},103:{l:{59:{c:[8822]},69:{l:{59:{c:[10897]}}}}},104:{l:{97:{l:{114:{l:{100:{l:{59:{c:[8637]}}},117:{l:{59:{c:[8636]},108:{l:{59:{c:[10602]}}}}}}}}},98:{l:{108:{l:{107:{l:{59:{c:[9604]}}}}}}}}},106:{l:{99:{l:{121:{l:{59:{c:[1113]}}}}}}},108:{l:{59:{c:[8810]},97:{l:{114:{l:{114:{l:{59:{c:[8647]}}}}}}},99:{l:{111:{l:{114:{l:{110:{l:{101:{l:{114:{l:{59:{c:[8990]}}}}}}}}}}}}},104:{l:{97:{l:{114:{l:{100:{l:{59:{c:[10603]}}}}}}}}},116:{l:{114:{l:{105:{l:{59:{c:[9722]}}}}}}}}},109:{l:{105:{l:{100:{l:{111:{l:{116:{l:{59:{c:[320]}}}}}}}}},111:{l:{117:{l:{115:{l:{116:{l:{59:{c:[9136]},97:{l:{99:{l:{104:{l:{101:{l:{59:{c:[9136]}}}}}}}}}}}}}}}}}}},110:{l:{69:{l:{59:{c:[8808]}}},97:{l:{112:{l:{59:{c:[10889]},112:{l:{114:{l:{111:{l:{120:{l:{59:{c:[10889]}}}}}}}}}}}}},101:{l:{59:{c:[10887]},113:{l:{59:{c:[10887]},113:{l:{59:{c:[8808]}}}}}}},115:{l:{105:{l:{109:{l:{59:{c:[8934]}}}}}}}}},111:{l:{97:{l:{110:{l:{103:{l:{59:{c:[10220]}}}}},114:{l:{114:{l:{59:{c:[8701]}}}}}}},98:{l:{114:{l:{107:{l:{59:{c:[10214]}}}}}}},110:{l:{103:{l:{108:{l:{101:{l:{102:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[10229]}}}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[10231]}}}}}}}}}}}}}}}}}}}}}}}}}}}}},109:{l:{97:{l:{112:{l:{115:{l:{116:{l:{111:{l:{59:{c:[10236]}}}}}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[10230]}}}}}}}}}}}}}}}}}}}}}}}}},111:{l:{112:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{108:{l:{101:{l:{102:{l:{116:{l:{59:{c:[8619]}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{59:{c:[8620]}}}}}}}}}}}}}}}}}}}}}}}}},112:{l:{97:{l:{114:{l:{59:{c:[10629]}}}}},102:{l:{59:{c:[120157]}}},108:{l:{117:{l:{115:{l:{59:{c:[10797]}}}}}}}}},116:{l:{105:{l:{109:{l:{101:{l:{115:{l:{59:{c:[10804]}}}}}}}}}}},119:{l:{97:{l:{115:{l:{116:{l:{59:{c:[8727]}}}}}}},98:{l:{97:{l:{114:{l:{59:{c:[95]}}}}}}}}},122:{l:{59:{c:[9674]},101:{l:{110:{l:{103:{l:{101:{l:{59:{c:[9674]}}}}}}}}},102:{l:{59:{c:[10731]}}}}}}},112:{l:{97:{l:{114:{l:{59:{c:[40]},108:{l:{116:{l:{59:{c:[10643]}}}}}}}}}}},114:{l:{97:{l:{114:{l:{114:{l:{59:{c:[8646]}}}}}}},99:{l:{111:{l:{114:{l:{110:{l:{101:{l:{114:{l:{59:{c:[8991]}}}}}}}}}}}}},104:{l:{97:{l:{114:{l:{59:{c:[8651]},100:{l:{59:{c:[10605]}}}}}}}}},109:{l:{59:{c:[8206]}}},116:{l:{114:{l:{105:{l:{59:{c:[8895]}}}}}}}}},115:{l:{97:{l:{113:{l:{117:{l:{111:{l:{59:{c:[8249]}}}}}}}}},99:{l:{114:{l:{59:{c:[120001]}}}}},104:{l:{59:{c:[8624]}}},105:{l:{109:{l:{59:{c:[8818]},101:{l:{59:{c:[10893]}}},103:{l:{59:{c:[10895]}}}}}}},113:{l:{98:{l:{59:{c:[91]}}},117:{l:{111:{l:{59:{c:[8216]},114:{l:{59:{c:[8218]}}}}}}}}},116:{l:{114:{l:{111:{l:{107:{l:{59:{c:[322]}}}}}}}}}}},116:{l:{59:{c:[60]},99:{l:{99:{l:{59:{c:[10918]}}},105:{l:{114:{l:{59:{c:[10873]}}}}}}},100:{l:{111:{l:{116:{l:{59:{c:[8918]}}}}}}},104:{l:{114:{l:{101:{l:{101:{l:{59:{c:[8907]}}}}}}}}},105:{l:{109:{l:{101:{l:{115:{l:{59:{c:[8905]}}}}}}}}},108:{l:{97:{l:{114:{l:{114:{l:{59:{c:[10614]}}}}}}}}},113:{l:{117:{l:{101:{l:{115:{l:{116:{l:{59:{c:[10875]}}}}}}}}}}},114:{l:{80:{l:{97:{l:{114:{l:{59:{c:[10646]}}}}}}},105:{l:{59:{c:[9667]},101:{l:{59:{c:[8884]}}},102:{l:{59:{c:[9666]}}}}}}}},c:[60]},117:{l:{114:{l:{100:{l:{115:{l:{104:{l:{97:{l:{114:{l:{59:{c:[10570]}}}}}}}}}}},117:{l:{104:{l:{97:{l:{114:{l:{59:{c:[10598]}}}}}}}}}}}}},118:{l:{101:{l:{114:{l:{116:{l:{110:{l:{101:{l:{113:{l:{113:{l:{59:{c:[8808,65024]}}}}}}}}}}}}}}},110:{l:{69:{l:{59:{c:[8808,65024]}}}}}}}}},109:{l:{68:{l:{68:{l:{111:{l:{116:{l:{59:{c:[8762]}}}}}}}}},97:{l:{99:{l:{114:{l:{59:{c:[175]}},c:[175]}}},108:{l:{101:{l:{59:{c:[9794]}}},116:{l:{59:{c:[10016]},101:{l:{115:{l:{101:{l:{59:{c:[10016]}}}}}}}}}}},112:{l:{59:{c:[8614]},115:{l:{116:{l:{111:{l:{59:{c:[8614]},100:{l:{111:{l:{119:{l:{110:{l:{59:{c:[8615]}}}}}}}}},108:{l:{101:{l:{102:{l:{116:{l:{59:{c:[8612]}}}}}}}}},117:{l:{112:{l:{59:{c:[8613]}}}}}}}}}}}}},114:{l:{107:{l:{101:{l:{114:{l:{59:{c:[9646]}}}}}}}}}}},99:{l:{111:{l:{109:{l:{109:{l:{97:{l:{59:{c:[10793]}}}}}}}}},121:{l:{59:{c:[1084]}}}}},100:{l:{97:{l:{115:{l:{104:{l:{59:{c:[8212]}}}}}}}}},101:{l:{97:{l:{115:{l:{117:{l:{114:{l:{101:{l:{100:{l:{97:{l:{110:{l:{103:{l:{108:{l:{101:{l:{59:{c:[8737]}}}}}}}}}}}}}}}}}}}}}}}}},102:{l:{114:{l:{59:{c:[120106]}}}}},104:{l:{111:{l:{59:{c:[8487]}}}}},105:{l:{99:{l:{114:{l:{111:{l:{59:{c:[181]}},c:[181]}}}}},100:{l:{59:{c:[8739]},97:{l:{115:{l:{116:{l:{59:{c:[42]}}}}}}},99:{l:{105:{l:{114:{l:{59:{c:[10992]}}}}}}},100:{l:{111:{l:{116:{l:{59:{c:[183]}},c:[183]}}}}}}},110:{l:{117:{l:{115:{l:{59:{c:[8722]},98:{l:{59:{c:[8863]}}},100:{l:{59:{c:[8760]},117:{l:{59:{c:[10794]}}}}}}}}}}}}},108:{l:{99:{l:{112:{l:{59:{c:[10971]}}}}},100:{l:{114:{l:{59:{c:[8230]}}}}}}},110:{l:{112:{l:{108:{l:{117:{l:{115:{l:{59:{c:[8723]}}}}}}}}}}},111:{l:{100:{l:{101:{l:{108:{l:{115:{l:{59:{c:[8871]}}}}}}}}},112:{l:{102:{l:{59:{c:[120158]}}}}}}},112:{l:{59:{c:[8723]}}},115:{l:{99:{l:{114:{l:{59:{c:[120002]}}}}},116:{l:{112:{l:{111:{l:{115:{l:{59:{c:[8766]}}}}}}}}}}},117:{l:{59:{c:[956]},108:{l:{116:{l:{105:{l:{109:{l:{97:{l:{112:{l:{59:{c:[8888]}}}}}}}}}}}}},109:{l:{97:{l:{112:{l:{59:{c:[8888]}}}}}}}}}}},110:{l:{71:{l:{103:{l:{59:{c:[8921,824]}}},116:{l:{59:{c:[8811,8402]},118:{l:{59:{c:[8811,824]}}}}}}},76:{l:{101:{l:{102:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8653]}}}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8654]}}}}}}}}}}}}}}}}}}}}}}}}}}},108:{l:{59:{c:[8920,824]}}},116:{l:{59:{c:[8810,8402]},118:{l:{59:{c:[8810,824]}}}}}}},82:{l:{105:{l:{103:{l:{104:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8655]}}}}}}}}}}}}}}}}}}}}},86:{l:{68:{l:{97:{l:{115:{l:{104:{l:{59:{c:[8879]}}}}}}}}},100:{l:{97:{l:{115:{l:{104:{l:{59:{c:[8878]}}}}}}}}}}},97:{l:{98:{l:{108:{l:{97:{l:{59:{c:[8711]}}}}}}},99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[324]}}}}}}}}},110:{l:{103:{l:{59:{c:[8736,8402]}}}}},112:{l:{59:{c:[8777]},69:{l:{59:{c:[10864,824]}}},105:{l:{100:{l:{59:{c:[8779,824]}}}}},111:{l:{115:{l:{59:{c:[329]}}}}},112:{l:{114:{l:{111:{l:{120:{l:{59:{c:[8777]}}}}}}}}}}},116:{l:{117:{l:{114:{l:{59:{c:[9838]},97:{l:{108:{l:{59:{c:[9838]},115:{l:{59:{c:[8469]}}}}}}}}}}}}}}},98:{l:{115:{l:{112:{l:{59:{c:[160]}},c:[160]}}},117:{l:{109:{l:{112:{l:{59:{c:[8782,824]},101:{l:{59:{c:[8783,824]}}}}}}}}}}},99:{l:{97:{l:{112:{l:{59:{c:[10819]}}},114:{l:{111:{l:{110:{l:{59:{c:[328]}}}}}}}}},101:{l:{100:{l:{105:{l:{108:{l:{59:{c:[326]}}}}}}}}},111:{l:{110:{l:{103:{l:{59:{c:[8775]},100:{l:{111:{l:{116:{l:{59:{c:[10861,824]}}}}}}}}}}}}},117:{l:{112:{l:{59:{c:[10818]}}}}},121:{l:{59:{c:[1085]}}}}},100:{l:{97:{l:{115:{l:{104:{l:{59:{c:[8211]}}}}}}}}},101:{l:{59:{c:[8800]},65:{l:{114:{l:{114:{l:{59:{c:[8663]}}}}}}},97:{l:{114:{l:{104:{l:{107:{l:{59:{c:[10532]}}}}},114:{l:{59:{c:[8599]},111:{l:{119:{l:{59:{c:[8599]}}}}}}}}}}},100:{l:{111:{l:{116:{l:{59:{c:[8784,824]}}}}}}},113:{l:{117:{l:{105:{l:{118:{l:{59:{c:[8802]}}}}}}}}},115:{l:{101:{l:{97:{l:{114:{l:{59:{c:[10536]}}}}}}},105:{l:{109:{l:{59:{c:[8770,824]}}}}}}},120:{l:{105:{l:{115:{l:{116:{l:{59:{c:[8708]},115:{l:{59:{c:[8708]}}}}}}}}}}}}},102:{l:{114:{l:{59:{c:[120107]}}}}},103:{l:{69:{l:{59:{c:[8807,824]}}},101:{l:{59:{c:[8817]},113:{l:{59:{c:[8817]},113:{l:{59:{c:[8807,824]}}},115:{l:{108:{l:{97:{l:{110:{l:{116:{l:{59:{c:[10878,824]}}}}}}}}}}}}},115:{l:{59:{c:[10878,824]}}}}},115:{l:{105:{l:{109:{l:{59:{c:[8821]}}}}}}},116:{l:{59:{c:[8815]},114:{l:{59:{c:[8815]}}}}}}},104:{l:{65:{l:{114:{l:{114:{l:{59:{c:[8654]}}}}}}},97:{l:{114:{l:{114:{l:{59:{c:[8622]}}}}}}},112:{l:{97:{l:{114:{l:{59:{c:[10994]}}}}}}}}},105:{l:{59:{c:[8715]},115:{l:{59:{c:[8956]},100:{l:{59:{c:[8954]}}}}},118:{l:{59:{c:[8715]}}}}},106:{l:{99:{l:{121:{l:{59:{c:[1114]}}}}}}},108:{l:{65:{l:{114:{l:{114:{l:{59:{c:[8653]}}}}}}},69:{l:{59:{c:[8806,824]}}},97:{l:{114:{l:{114:{l:{59:{c:[8602]}}}}}}},100:{l:{114:{l:{59:{c:[8229]}}}}},101:{l:{59:{c:[8816]},102:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8602]}}}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8622]}}}}}}}}}}}}}}}}}}}}}}}}},113:{l:{59:{c:[8816]},113:{l:{59:{c:[8806,824]}}},115:{l:{108:{l:{97:{l:{110:{l:{116:{l:{59:{c:[10877,824]}}}}}}}}}}}}},115:{l:{59:{c:[10877,824]},115:{l:{59:{c:[8814]}}}}}}},115:{l:{105:{l:{109:{l:{59:{c:[8820]}}}}}}},116:{l:{59:{c:[8814]},114:{l:{105:{l:{59:{c:[8938]},101:{l:{59:{c:[8940]}}}}}}}}}}},109:{l:{105:{l:{100:{l:{59:{c:[8740]}}}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120159]}}}}},116:{l:{59:{c:[172]},105:{l:{110:{l:{59:{c:[8713]},69:{l:{59:{c:[8953,824]}}},100:{l:{111:{l:{116:{l:{59:{c:[8949,824]}}}}}}},118:{l:{97:{l:{59:{c:[8713]}}},98:{l:{59:{c:[8951]}}},99:{l:{59:{c:[8950]}}}}}}}}},110:{l:{105:{l:{59:{c:[8716]},118:{l:{97:{l:{59:{c:[8716]}}},98:{l:{59:{c:[8958]}}},99:{l:{59:{c:[8957]}}}}}}}}}},c:[172]}}},112:{l:{97:{l:{114:{l:{59:{c:[8742]},97:{l:{108:{l:{108:{l:{101:{l:{108:{l:{59:{c:[8742]}}}}}}}}}}},115:{l:{108:{l:{59:{c:[11005,8421]}}}}},116:{l:{59:{c:[8706,824]}}}}}}},111:{l:{108:{l:{105:{l:{110:{l:{116:{l:{59:{c:[10772]}}}}}}}}}}},114:{l:{59:{c:[8832]},99:{l:{117:{l:{101:{l:{59:{c:[8928]}}}}}}},101:{l:{59:{c:[10927,824]},99:{l:{59:{c:[8832]},101:{l:{113:{l:{59:{c:[10927,824]}}}}}}}}}}}}},114:{l:{65:{l:{114:{l:{114:{l:{59:{c:[8655]}}}}}}},97:{l:{114:{l:{114:{l:{59:{c:[8603]},99:{l:{59:{c:[10547,824]}}},119:{l:{59:{c:[8605,824]}}}}}}}}},105:{l:{103:{l:{104:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8603]}}}}}}}}}}}}}}}}}}},116:{l:{114:{l:{105:{l:{59:{c:[8939]},101:{l:{59:{c:[8941]}}}}}}}}}}},115:{l:{99:{l:{59:{c:[8833]},99:{l:{117:{l:{101:{l:{59:{c:[8929]}}}}}}},101:{l:{59:{c:[10928,824]}}},114:{l:{59:{c:[120003]}}}}},104:{l:{111:{l:{114:{l:{116:{l:{109:{l:{105:{l:{100:{l:{59:{c:[8740]}}}}}}},112:{l:{97:{l:{114:{l:{97:{l:{108:{l:{108:{l:{101:{l:{108:{l:{59:{c:[8742]}}}}}}}}}}}}}}}}}}}}}}}}},105:{l:{109:{l:{59:{c:[8769]},101:{l:{59:{c:[8772]},113:{l:{59:{c:[8772]}}}}}}}}},109:{l:{105:{l:{100:{l:{59:{c:[8740]}}}}}}},112:{l:{97:{l:{114:{l:{59:{c:[8742]}}}}}}},113:{l:{115:{l:{117:{l:{98:{l:{101:{l:{59:{c:[8930]}}}}},112:{l:{101:{l:{59:{c:[8931]}}}}}}}}}}},117:{l:{98:{l:{59:{c:[8836]},69:{l:{59:{c:[10949,824]}}},101:{l:{59:{c:[8840]}}},115:{l:{101:{l:{116:{l:{59:{c:[8834,8402]},101:{l:{113:{l:{59:{c:[8840]},113:{l:{59:{c:[10949,824]}}}}}}}}}}}}}}},99:{l:{99:{l:{59:{c:[8833]},101:{l:{113:{l:{59:{c:[10928,824]}}}}}}}}},112:{l:{59:{c:[8837]},69:{l:{59:{c:[10950,824]}}},101:{l:{59:{c:[8841]}}},115:{l:{101:{l:{116:{l:{59:{c:[8835,8402]},101:{l:{113:{l:{59:{c:[8841]},113:{l:{59:{c:[10950,824]}}}}}}}}}}}}}}}}}}},116:{l:{103:{l:{108:{l:{59:{c:[8825]}}}}},105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[241]}},c:[241]}}}}}}},108:{l:{103:{l:{59:{c:[8824]}}}}},114:{l:{105:{l:{97:{l:{110:{l:{103:{l:{108:{l:{101:{l:{108:{l:{101:{l:{102:{l:{116:{l:{59:{c:[8938]},101:{l:{113:{l:{59:{c:[8940]}}}}}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{59:{c:[8939]},101:{l:{113:{l:{59:{c:[8941]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},117:{l:{59:{c:[957]},109:{l:{59:{c:[35]},101:{l:{114:{l:{111:{l:{59:{c:[8470]}}}}}}},115:{l:{112:{l:{59:{c:[8199]}}}}}}}}},118:{l:{68:{l:{97:{l:{115:{l:{104:{l:{59:{c:[8877]}}}}}}}}},72:{l:{97:{l:{114:{l:{114:{l:{59:{c:[10500]}}}}}}}}},97:{l:{112:{l:{59:{c:[8781,8402]}}}}},100:{l:{97:{l:{115:{l:{104:{l:{59:{c:[8876]}}}}}}}}},103:{l:{101:{l:{59:{c:[8805,8402]}}},116:{l:{59:{c:[62,8402]}}}}},105:{l:{110:{l:{102:{l:{105:{l:{110:{l:{59:{c:[10718]}}}}}}}}}}},108:{l:{65:{l:{114:{l:{114:{l:{59:{c:[10498]}}}}}}},101:{l:{59:{c:[8804,8402]}}},116:{l:{59:{c:[60,8402]},114:{l:{105:{l:{101:{l:{59:{c:[8884,8402]}}}}}}}}}}},114:{l:{65:{l:{114:{l:{114:{l:{59:{c:[10499]}}}}}}},116:{l:{114:{l:{105:{l:{101:{l:{59:{c:[8885,8402]}}}}}}}}}}},115:{l:{105:{l:{109:{l:{59:{c:[8764,8402]}}}}}}}}},119:{l:{65:{l:{114:{l:{114:{l:{59:{c:[8662]}}}}}}},97:{l:{114:{l:{104:{l:{107:{l:{59:{c:[10531]}}}}},114:{l:{59:{c:[8598]},111:{l:{119:{l:{59:{c:[8598]}}}}}}}}}}},110:{l:{101:{l:{97:{l:{114:{l:{59:{c:[10535]}}}}}}}}}}}}},111:{l:{83:{l:{59:{c:[9416]}}},97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[243]}},c:[243]}}}}}}},115:{l:{116:{l:{59:{c:[8859]}}}}}}},99:{l:{105:{l:{114:{l:{59:{c:[8858]},99:{l:{59:{c:[244]}},c:[244]}}}}},121:{l:{59:{c:[1086]}}}}},100:{l:{97:{l:{115:{l:{104:{l:{59:{c:[8861]}}}}}}},98:{l:{108:{l:{97:{l:{99:{l:{59:{c:[337]}}}}}}}}},105:{l:{118:{l:{59:{c:[10808]}}}}},111:{l:{116:{l:{59:{c:[8857]}}}}},115:{l:{111:{l:{108:{l:{100:{l:{59:{c:[10684]}}}}}}}}}}},101:{l:{108:{l:{105:{l:{103:{l:{59:{c:[339]}}}}}}}}},102:{l:{99:{l:{105:{l:{114:{l:{59:{c:[10687]}}}}}}},114:{l:{59:{c:[120108]}}}}},103:{l:{111:{l:{110:{l:{59:{c:[731]}}}}},114:{l:{97:{l:{118:{l:{101:{l:{59:{c:[242]}},c:[242]}}}}}}},116:{l:{59:{c:[10689]}}}}},104:{l:{98:{l:{97:{l:{114:{l:{59:{c:[10677]}}}}}}},109:{l:{59:{c:[937]}}}}},105:{l:{110:{l:{116:{l:{59:{c:[8750]}}}}}}},108:{l:{97:{l:{114:{l:{114:{l:{59:{c:[8634]}}}}}}},99:{l:{105:{l:{114:{l:{59:{c:[10686]}}}}},114:{l:{111:{l:{115:{l:{115:{l:{59:{c:[10683]}}}}}}}}}}},105:{l:{110:{l:{101:{l:{59:{c:[8254]}}}}}}},116:{l:{59:{c:[10688]}}}}},109:{l:{97:{l:{99:{l:{114:{l:{59:{c:[333]}}}}}}},101:{l:{103:{l:{97:{l:{59:{c:[969]}}}}}}},105:{l:{99:{l:{114:{l:{111:{l:{110:{l:{59:{c:[959]}}}}}}}}},100:{l:{59:{c:[10678]}}},110:{l:{117:{l:{115:{l:{59:{c:[8854]}}}}}}}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120160]}}}}}}},112:{l:{97:{l:{114:{l:{59:{c:[10679]}}}}},101:{l:{114:{l:{112:{l:{59:{c:[10681]}}}}}}},108:{l:{117:{l:{115:{l:{59:{c:[8853]}}}}}}}}},114:{l:{59:{c:[8744]},97:{l:{114:{l:{114:{l:{59:{c:[8635]}}}}}}},100:{l:{59:{c:[10845]},101:{l:{114:{l:{59:{c:[8500]},111:{l:{102:{l:{59:{c:[8500]}}}}}}}}},102:{l:{59:{c:[170]}},c:[170]},109:{l:{59:{c:[186]}},c:[186]}}},105:{l:{103:{l:{111:{l:{102:{l:{59:{c:[8886]}}}}}}}}},111:{l:{114:{l:{59:{c:[10838]}}}}},115:{l:{108:{l:{111:{l:{112:{l:{101:{l:{59:{c:[10839]}}}}}}}}}}},118:{l:{59:{c:[10843]}}}}},115:{l:{99:{l:{114:{l:{59:{c:[8500]}}}}},108:{l:{97:{l:{115:{l:{104:{l:{59:{c:[248]}},c:[248]}}}}}}},111:{l:{108:{l:{59:{c:[8856]}}}}}}},116:{l:{105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[245]}},c:[245]}}}}},109:{l:{101:{l:{115:{l:{59:{c:[8855]},97:{l:{115:{l:{59:{c:[10806]}}}}}}}}}}}}}}},117:{l:{109:{l:{108:{l:{59:{c:[246]}},c:[246]}}}}},118:{l:{98:{l:{97:{l:{114:{l:{59:{c:[9021]}}}}}}}}}}},112:{l:{97:{l:{114:{l:{59:{c:[8741]},97:{l:{59:{c:[182]},108:{l:{108:{l:{101:{l:{108:{l:{59:{c:[8741]}}}}}}}}}},c:[182]},115:{l:{105:{l:{109:{l:{59:{c:[10995]}}}}},108:{l:{59:{c:[11005]}}}}},116:{l:{59:{c:[8706]}}}}}}},99:{l:{121:{l:{59:{c:[1087]}}}}},101:{l:{114:{l:{99:{l:{110:{l:{116:{l:{59:{c:[37]}}}}}}},105:{l:{111:{l:{100:{l:{59:{c:[46]}}}}}}},109:{l:{105:{l:{108:{l:{59:{c:[8240]}}}}}}},112:{l:{59:{c:[8869]}}},116:{l:{101:{l:{110:{l:{107:{l:{59:{c:[8241]}}}}}}}}}}}}},102:{l:{114:{l:{59:{c:[120109]}}}}},104:{l:{105:{l:{59:{c:[966]},118:{l:{59:{c:[981]}}}}},109:{l:{109:{l:{97:{l:{116:{l:{59:{c:[8499]}}}}}}}}},111:{l:{110:{l:{101:{l:{59:{c:[9742]}}}}}}}}},105:{l:{59:{c:[960]},116:{l:{99:{l:{104:{l:{102:{l:{111:{l:{114:{l:{107:{l:{59:{c:[8916]}}}}}}}}}}}}}}},118:{l:{59:{c:[982]}}}}},108:{l:{97:{l:{110:{l:{99:{l:{107:{l:{59:{c:[8463]},104:{l:{59:{c:[8462]}}}}}}},107:{l:{118:{l:{59:{c:[8463]}}}}}}}}},117:{l:{115:{l:{59:{c:[43]},97:{l:{99:{l:{105:{l:{114:{l:{59:{c:[10787]}}}}}}}}},98:{l:{59:{c:[8862]}}},99:{l:{105:{l:{114:{l:{59:{c:[10786]}}}}}}},100:{l:{111:{l:{59:{c:[8724]}}},117:{l:{59:{c:[10789]}}}}},101:{l:{59:{c:[10866]}}},109:{l:{110:{l:{59:{c:[177]}},c:[177]}}},115:{l:{105:{l:{109:{l:{59:{c:[10790]}}}}}}},116:{l:{119:{l:{111:{l:{59:{c:[10791]}}}}}}}}}}}}},109:{l:{59:{c:[177]}}},111:{l:{105:{l:{110:{l:{116:{l:{105:{l:{110:{l:{116:{l:{59:{c:[10773]}}}}}}}}}}}}},112:{l:{102:{l:{59:{c:[120161]}}}}},117:{l:{110:{l:{100:{l:{59:{c:[163]}},c:[163]}}}}}}},114:{l:{59:{c:[8826]},69:{l:{59:{c:[10931]}}},97:{l:{112:{l:{59:{c:[10935]}}}}},99:{l:{117:{l:{101:{l:{59:{c:[8828]}}}}}}},101:{l:{59:{c:[10927]},99:{l:{59:{c:[8826]},97:{l:{112:{l:{112:{l:{114:{l:{111:{l:{120:{l:{59:{c:[10935]}}}}}}}}}}}}},99:{l:{117:{l:{114:{l:{108:{l:{121:{l:{101:{l:{113:{l:{59:{c:[8828]}}}}}}}}}}}}}}},101:{l:{113:{l:{59:{c:[10927]}}}}},110:{l:{97:{l:{112:{l:{112:{l:{114:{l:{111:{l:{120:{l:{59:{c:[10937]}}}}}}}}}}}}},101:{l:{113:{l:{113:{l:{59:{c:[10933]}}}}}}},115:{l:{105:{l:{109:{l:{59:{c:[8936]}}}}}}}}},115:{l:{105:{l:{109:{l:{59:{c:[8830]}}}}}}}}}}},105:{l:{109:{l:{101:{l:{59:{c:[8242]},115:{l:{59:{c:[8473]}}}}}}}}},110:{l:{69:{l:{59:{c:[10933]}}},97:{l:{112:{l:{59:{c:[10937]}}}}},115:{l:{105:{l:{109:{l:{59:{c:[8936]}}}}}}}}},111:{l:{100:{l:{59:{c:[8719]}}},102:{l:{97:{l:{108:{l:{97:{l:{114:{l:{59:{c:[9006]}}}}}}}}},108:{l:{105:{l:{110:{l:{101:{l:{59:{c:[8978]}}}}}}}}},115:{l:{117:{l:{114:{l:{102:{l:{59:{c:[8979]}}}}}}}}}}},112:{l:{59:{c:[8733]},116:{l:{111:{l:{59:{c:[8733]}}}}}}}}},115:{l:{105:{l:{109:{l:{59:{c:[8830]}}}}}}},117:{l:{114:{l:{101:{l:{108:{l:{59:{c:[8880]}}}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[120005]}}}}},105:{l:{59:{c:[968]}}}}},117:{l:{110:{l:{99:{l:{115:{l:{112:{l:{59:{c:[8200]}}}}}}}}}}}}},113:{l:{102:{l:{114:{l:{59:{c:[120110]}}}}},105:{l:{110:{l:{116:{l:{59:{c:[10764]}}}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120162]}}}}}}},112:{l:{114:{l:{105:{l:{109:{l:{101:{l:{59:{c:[8279]}}}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[120006]}}}}}}},117:{l:{97:{l:{116:{l:{101:{l:{114:{l:{110:{l:{105:{l:{111:{l:{110:{l:{115:{l:{59:{c:[8461]}}}}}}}}}}}}}}},105:{l:{110:{l:{116:{l:{59:{c:[10774]}}}}}}}}}}},101:{l:{115:{l:{116:{l:{59:{c:[63]},101:{l:{113:{l:{59:{c:[8799]}}}}}}}}}}},111:{l:{116:{l:{59:{c:[34]}},c:[34]}}}}}}},114:{l:{65:{l:{97:{l:{114:{l:{114:{l:{59:{c:[8667]}}}}}}},114:{l:{114:{l:{59:{c:[8658]}}}}},116:{l:{97:{l:{105:{l:{108:{l:{59:{c:[10524]}}}}}}}}}}},66:{l:{97:{l:{114:{l:{114:{l:{59:{c:[10511]}}}}}}}}},72:{l:{97:{l:{114:{l:{59:{c:[10596]}}}}}}},97:{l:{99:{l:{101:{l:{59:{c:[8765,817]}}},117:{l:{116:{l:{101:{l:{59:{c:[341]}}}}}}}}},100:{l:{105:{l:{99:{l:{59:{c:[8730]}}}}}}},101:{l:{109:{l:{112:{l:{116:{l:{121:{l:{118:{l:{59:{c:[10675]}}}}}}}}}}}}},110:{l:{103:{l:{59:{c:[10217]},100:{l:{59:{c:[10642]}}},101:{l:{59:{c:[10661]}}},108:{l:{101:{l:{59:{c:[10217]}}}}}}}}},113:{l:{117:{l:{111:{l:{59:{c:[187]}},c:[187]}}}}},114:{l:{114:{l:{59:{c:[8594]},97:{l:{112:{l:{59:{c:[10613]}}}}},98:{l:{59:{c:[8677]},102:{l:{115:{l:{59:{c:[10528]}}}}}}},99:{l:{59:{c:[10547]}}},102:{l:{115:{l:{59:{c:[10526]}}}}},104:{l:{107:{l:{59:{c:[8618]}}}}},108:{l:{112:{l:{59:{c:[8620]}}}}},112:{l:{108:{l:{59:{c:[10565]}}}}},115:{l:{105:{l:{109:{l:{59:{c:[10612]}}}}}}},116:{l:{108:{l:{59:{c:[8611]}}}}},119:{l:{59:{c:[8605]}}}}}}},116:{l:{97:{l:{105:{l:{108:{l:{59:{c:[10522]}}}}}}},105:{l:{111:{l:{59:{c:[8758]},110:{l:{97:{l:{108:{l:{115:{l:{59:{c:[8474]}}}}}}}}}}}}}}}}},98:{l:{97:{l:{114:{l:{114:{l:{59:{c:[10509]}}}}}}},98:{l:{114:{l:{107:{l:{59:{c:[10099]}}}}}}},114:{l:{97:{l:{99:{l:{101:{l:{59:{c:[125]}}},107:{l:{59:{c:[93]}}}}}}},107:{l:{101:{l:{59:{c:[10636]}}},115:{l:{108:{l:{100:{l:{59:{c:[10638]}}},117:{l:{59:{c:[10640]}}}}}}}}}}}}},99:{l:{97:{l:{114:{l:{111:{l:{110:{l:{59:{c:[345]}}}}}}}}},101:{l:{100:{l:{105:{l:{108:{l:{59:{c:[343]}}}}}}},105:{l:{108:{l:{59:{c:[8969]}}}}}}},117:{l:{98:{l:{59:{c:[125]}}}}},121:{l:{59:{c:[1088]}}}}},100:{l:{99:{l:{97:{l:{59:{c:[10551]}}}}},108:{l:{100:{l:{104:{l:{97:{l:{114:{l:{59:{c:[10601]}}}}}}}}}}},113:{l:{117:{l:{111:{l:{59:{c:[8221]},114:{l:{59:{c:[8221]}}}}}}}}},115:{l:{104:{l:{59:{c:[8627]}}}}}}},101:{l:{97:{l:{108:{l:{59:{c:[8476]},105:{l:{110:{l:{101:{l:{59:{c:[8475]}}}}}}},112:{l:{97:{l:{114:{l:{116:{l:{59:{c:[8476]}}}}}}}}},115:{l:{59:{c:[8477]}}}}}}},99:{l:{116:{l:{59:{c:[9645]}}}}},103:{l:{59:{c:[174]}},c:[174]}}},102:{l:{105:{l:{115:{l:{104:{l:{116:{l:{59:{c:[10621]}}}}}}}}},108:{l:{111:{l:{111:{l:{114:{l:{59:{c:[8971]}}}}}}}}},114:{l:{59:{c:[120111]}}}}},104:{l:{97:{l:{114:{l:{100:{l:{59:{c:[8641]}}},117:{l:{59:{c:[8640]},108:{l:{59:{c:[10604]}}}}}}}}},111:{l:{59:{c:[961]},118:{l:{59:{c:[1009]}}}}}}},105:{l:{103:{l:{104:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8594]},116:{l:{97:{l:{105:{l:{108:{l:{59:{c:[8611]}}}}}}}}}}}}}}}}}}},104:{l:{97:{l:{114:{l:{112:{l:{111:{l:{111:{l:{110:{l:{100:{l:{111:{l:{119:{l:{110:{l:{59:{c:[8641]}}}}}}}}},117:{l:{112:{l:{59:{c:[8640]}}}}}}}}}}}}}}}}}}},108:{l:{101:{l:{102:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{115:{l:{59:{c:[8644]}}}}}}}}}}}}},104:{l:{97:{l:{114:{l:{112:{l:{111:{l:{111:{l:{110:{l:{115:{l:{59:{c:[8652]}}}}}}}}}}}}}}}}}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{115:{l:{59:{c:[8649]}}}}}}}}}}}}}}}}}}}}}}},115:{l:{113:{l:{117:{l:{105:{l:{103:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8605]}}}}}}}}}}}}}}}}}}}}},116:{l:{104:{l:{114:{l:{101:{l:{101:{l:{116:{l:{105:{l:{109:{l:{101:{l:{115:{l:{59:{c:[8908]}}}}}}}}}}}}}}}}}}}}}}}}}}},110:{l:{103:{l:{59:{c:[730]}}}}},115:{l:{105:{l:{110:{l:{103:{l:{100:{l:{111:{l:{116:{l:{115:{l:{101:{l:{113:{l:{59:{c:[8787]}}}}}}}}}}}}}}}}}}}}}}},108:{l:{97:{l:{114:{l:{114:{l:{59:{c:[8644]}}}}}}},104:{l:{97:{l:{114:{l:{59:{c:[8652]}}}}}}},109:{l:{59:{c:[8207]}}}}},109:{l:{111:{l:{117:{l:{115:{l:{116:{l:{59:{c:[9137]},97:{l:{99:{l:{104:{l:{101:{l:{59:{c:[9137]}}}}}}}}}}}}}}}}}}},110:{l:{109:{l:{105:{l:{100:{l:{59:{c:[10990]}}}}}}}}},111:{l:{97:{l:{110:{l:{103:{l:{59:{c:[10221]}}}}},114:{l:{114:{l:{59:{c:[8702]}}}}}}},98:{l:{114:{l:{107:{l:{59:{c:[10215]}}}}}}},112:{l:{97:{l:{114:{l:{59:{c:[10630]}}}}},102:{l:{59:{c:[120163]}}},108:{l:{117:{l:{115:{l:{59:{c:[10798]}}}}}}}}},116:{l:{105:{l:{109:{l:{101:{l:{115:{l:{59:{c:[10805]}}}}}}}}}}}}},112:{l:{97:{l:{114:{l:{59:{c:[41]},103:{l:{116:{l:{59:{c:[10644]}}}}}}}}},112:{l:{111:{l:{108:{l:{105:{l:{110:{l:{116:{l:{59:{c:[10770]}}}}}}}}}}}}}}},114:{l:{97:{l:{114:{l:{114:{l:{59:{c:[8649]}}}}}}}}},115:{l:{97:{l:{113:{l:{117:{l:{111:{l:{59:{c:[8250]}}}}}}}}},99:{l:{114:{l:{59:{c:[120007]}}}}},104:{l:{59:{c:[8625]}}},113:{l:{98:{l:{59:{c:[93]}}},117:{l:{111:{l:{59:{c:[8217]},114:{l:{59:{c:[8217]}}}}}}}}}}},116:{l:{104:{l:{114:{l:{101:{l:{101:{l:{59:{c:[8908]}}}}}}}}},105:{l:{109:{l:{101:{l:{115:{l:{59:{c:[8906]}}}}}}}}},114:{l:{105:{l:{59:{c:[9657]},101:{l:{59:{c:[8885]}}},102:{l:{59:{c:[9656]}}},108:{l:{116:{l:{114:{l:{105:{l:{59:{c:[10702]}}}}}}}}}}}}}}},117:{l:{108:{l:{117:{l:{104:{l:{97:{l:{114:{l:{59:{c:[10600]}}}}}}}}}}}}},120:{l:{59:{c:[8478]}}}}},115:{l:{97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[347]}}}}}}}}}}},98:{l:{113:{l:{117:{l:{111:{l:{59:{c:[8218]}}}}}}}}},99:{l:{59:{c:[8827]},69:{l:{59:{c:[10932]}}},97:{l:{112:{l:{59:{c:[10936]}}},114:{l:{111:{l:{110:{l:{59:{c:[353]}}}}}}}}},99:{l:{117:{l:{101:{l:{59:{c:[8829]}}}}}}},101:{l:{59:{c:[10928]},100:{l:{105:{l:{108:{l:{59:{c:[351]}}}}}}}}},105:{l:{114:{l:{99:{l:{59:{c:[349]}}}}}}},110:{l:{69:{l:{59:{c:[10934]}}},97:{l:{112:{l:{59:{c:[10938]}}}}},115:{l:{105:{l:{109:{l:{59:{c:[8937]}}}}}}}}},112:{l:{111:{l:{108:{l:{105:{l:{110:{l:{116:{l:{59:{c:[10771]}}}}}}}}}}}}},115:{l:{105:{l:{109:{l:{59:{c:[8831]}}}}}}},121:{l:{59:{c:[1089]}}}}},100:{l:{111:{l:{116:{l:{59:{c:[8901]},98:{l:{59:{c:[8865]}}},101:{l:{59:{c:[10854]}}}}}}}}},101:{l:{65:{l:{114:{l:{114:{l:{59:{c:[8664]}}}}}}},97:{l:{114:{l:{104:{l:{107:{l:{59:{c:[10533]}}}}},114:{l:{59:{c:[8600]},111:{l:{119:{l:{59:{c:[8600]}}}}}}}}}}},99:{l:{116:{l:{59:{c:[167]}},c:[167]}}},109:{l:{105:{l:{59:{c:[59]}}}}},115:{l:{119:{l:{97:{l:{114:{l:{59:{c:[10537]}}}}}}}}},116:{l:{109:{l:{105:{l:{110:{l:{117:{l:{115:{l:{59:{c:[8726]}}}}}}}}},110:{l:{59:{c:[8726]}}}}}}},120:{l:{116:{l:{59:{c:[10038]}}}}}}},102:{l:{114:{l:{59:{c:[120112]},111:{l:{119:{l:{110:{l:{59:{c:[8994]}}}}}}}}}}},104:{l:{97:{l:{114:{l:{112:{l:{59:{c:[9839]}}}}}}},99:{l:{104:{l:{99:{l:{121:{l:{59:{c:[1097]}}}}}}},121:{l:{59:{c:[1096]}}}}},111:{l:{114:{l:{116:{l:{109:{l:{105:{l:{100:{l:{59:{c:[8739]}}}}}}},112:{l:{97:{l:{114:{l:{97:{l:{108:{l:{108:{l:{101:{l:{108:{l:{59:{c:[8741]}}}}}}}}}}}}}}}}}}}}}}},121:{l:{59:{c:[173]}},c:[173]}}},105:{l:{103:{l:{109:{l:{97:{l:{59:{c:[963]},102:{l:{59:{c:[962]}}},118:{l:{59:{c:[962]}}}}}}}}},109:{l:{59:{c:[8764]},100:{l:{111:{l:{116:{l:{59:{c:[10858]}}}}}}},101:{l:{59:{c:[8771]},113:{l:{59:{c:[8771]}}}}},103:{l:{59:{c:[10910]},69:{l:{59:{c:[10912]}}}}},108:{l:{59:{c:[10909]},69:{l:{59:{c:[10911]}}}}},110:{l:{101:{l:{59:{c:[8774]}}}}},112:{l:{108:{l:{117:{l:{115:{l:{59:{c:[10788]}}}}}}}}},114:{l:{97:{l:{114:{l:{114:{l:{59:{c:[10610]}}}}}}}}}}}}},108:{l:{97:{l:{114:{l:{114:{l:{59:{c:[8592]}}}}}}}}},109:{l:{97:{l:{108:{l:{108:{l:{115:{l:{101:{l:{116:{l:{109:{l:{105:{l:{110:{l:{117:{l:{115:{l:{59:{c:[8726]}}}}}}}}}}}}}}}}}}}}},115:{l:{104:{l:{112:{l:{59:{c:[10803]}}}}}}}}},101:{l:{112:{l:{97:{l:{114:{l:{115:{l:{108:{l:{59:{c:[10724]}}}}}}}}}}}}},105:{l:{100:{l:{59:{c:[8739]}}},108:{l:{101:{l:{59:{c:[8995]}}}}}}},116:{l:{59:{c:[10922]},101:{l:{59:{c:[10924]},115:{l:{59:{c:[10924,65024]}}}}}}}}},111:{l:{102:{l:{116:{l:{99:{l:{121:{l:{59:{c:[1100]}}}}}}}}},108:{l:{59:{c:[47]},98:{l:{59:{c:[10692]},97:{l:{114:{l:{59:{c:[9023]}}}}}}}}},112:{l:{102:{l:{59:{c:[120164]}}}}}}},112:{l:{97:{l:{100:{l:{101:{l:{115:{l:{59:{c:[9824]},117:{l:{105:{l:{116:{l:{59:{c:[9824]}}}}}}}}}}}}},114:{l:{59:{c:[8741]}}}}}}},113:{l:{99:{l:{97:{l:{112:{l:{59:{c:[8851]},115:{l:{59:{c:[8851,65024]}}}}}}},117:{l:{112:{l:{59:{c:[8852]},115:{l:{59:{c:[8852,65024]}}}}}}}}},115:{l:{117:{l:{98:{l:{59:{c:[8847]},101:{l:{59:{c:[8849]}}},115:{l:{101:{l:{116:{l:{59:{c:[8847]},101:{l:{113:{l:{59:{c:[8849]}}}}}}}}}}}}},112:{l:{59:{c:[8848]},101:{l:{59:{c:[8850]}}},115:{l:{101:{l:{116:{l:{59:{c:[8848]},101:{l:{113:{l:{59:{c:[8850]}}}}}}}}}}}}}}}}},117:{l:{59:{c:[9633]},97:{l:{114:{l:{101:{l:{59:{c:[9633]}}},102:{l:{59:{c:[9642]}}}}}}},102:{l:{59:{c:[9642]}}}}}}},114:{l:{97:{l:{114:{l:{114:{l:{59:{c:[8594]}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[120008]}}}}},101:{l:{116:{l:{109:{l:{110:{l:{59:{c:[8726]}}}}}}}}},109:{l:{105:{l:{108:{l:{101:{l:{59:{c:[8995]}}}}}}}}},116:{l:{97:{l:{114:{l:{102:{l:{59:{c:[8902]}}}}}}}}}}},116:{l:{97:{l:{114:{l:{59:{c:[9734]},102:{l:{59:{c:[9733]}}}}}}},114:{l:{97:{l:{105:{l:{103:{l:{104:{l:{116:{l:{101:{l:{112:{l:{115:{l:{105:{l:{108:{l:{111:{l:{110:{l:{59:{c:[1013]}}}}}}}}}}}}}}},112:{l:{104:{l:{105:{l:{59:{c:[981]}}}}}}}}}}}}}}}}},110:{l:{115:{l:{59:{c:[175]}}}}}}}}},117:{l:{98:{l:{59:{c:[8834]},69:{l:{59:{c:[10949]}}},100:{l:{111:{l:{116:{l:{59:{c:[10941]}}}}}}},101:{l:{59:{c:[8838]},100:{l:{111:{l:{116:{l:{59:{c:[10947]}}}}}}}}},109:{l:{117:{l:{108:{l:{116:{l:{59:{c:[10945]}}}}}}}}},110:{l:{69:{l:{59:{c:[10955]}}},101:{l:{59:{c:[8842]}}}}},112:{l:{108:{l:{117:{l:{115:{l:{59:{c:[10943]}}}}}}}}},114:{l:{97:{l:{114:{l:{114:{l:{59:{c:[10617]}}}}}}}}},115:{l:{101:{l:{116:{l:{59:{c:[8834]},101:{l:{113:{l:{59:{c:[8838]},113:{l:{59:{c:[10949]}}}}}}},110:{l:{101:{l:{113:{l:{59:{c:[8842]},113:{l:{59:{c:[10955]}}}}}}}}}}}}},105:{l:{109:{l:{59:{c:[10951]}}}}},117:{l:{98:{l:{59:{c:[10965]}}},112:{l:{59:{c:[10963]}}}}}}}}},99:{l:{99:{l:{59:{c:[8827]},97:{l:{112:{l:{112:{l:{114:{l:{111:{l:{120:{l:{59:{c:[10936]}}}}}}}}}}}}},99:{l:{117:{l:{114:{l:{108:{l:{121:{l:{101:{l:{113:{l:{59:{c:[8829]}}}}}}}}}}}}}}},101:{l:{113:{l:{59:{c:[10928]}}}}},110:{l:{97:{l:{112:{l:{112:{l:{114:{l:{111:{l:{120:{l:{59:{c:[10938]}}}}}}}}}}}}},101:{l:{113:{l:{113:{l:{59:{c:[10934]}}}}}}},115:{l:{105:{l:{109:{l:{59:{c:[8937]}}}}}}}}},115:{l:{105:{l:{109:{l:{59:{c:[8831]}}}}}}}}}}},109:{l:{59:{c:[8721]}}},110:{l:{103:{l:{59:{c:[9834]}}}}},112:{l:{49:{l:{59:{c:[185]}},c:[185]},50:{l:{59:{c:[178]}},c:[178]},51:{l:{59:{c:[179]}},c:[179]},59:{c:[8835]},69:{l:{59:{c:[10950]}}},100:{l:{111:{l:{116:{l:{59:{c:[10942]}}}}},115:{l:{117:{l:{98:{l:{59:{c:[10968]}}}}}}}}},101:{l:{59:{c:[8839]},100:{l:{111:{l:{116:{l:{59:{c:[10948]}}}}}}}}},104:{l:{115:{l:{111:{l:{108:{l:{59:{c:[10185]}}}}},117:{l:{98:{l:{59:{c:[10967]}}}}}}}}},108:{l:{97:{l:{114:{l:{114:{l:{59:{c:[10619]}}}}}}}}},109:{l:{117:{l:{108:{l:{116:{l:{59:{c:[10946]}}}}}}}}},110:{l:{69:{l:{59:{c:[10956]}}},101:{l:{59:{c:[8843]}}}}},112:{l:{108:{l:{117:{l:{115:{l:{59:{c:[10944]}}}}}}}}},115:{l:{101:{l:{116:{l:{59:{c:[8835]},101:{l:{113:{l:{59:{c:[8839]},113:{l:{59:{c:[10950]}}}}}}},110:{l:{101:{l:{113:{l:{59:{c:[8843]},113:{l:{59:{c:[10956]}}}}}}}}}}}}},105:{l:{109:{l:{59:{c:[10952]}}}}},117:{l:{98:{l:{59:{c:[10964]}}},112:{l:{59:{c:[10966]}}}}}}}}}}},119:{l:{65:{l:{114:{l:{114:{l:{59:{c:[8665]}}}}}}},97:{l:{114:{l:{104:{l:{107:{l:{59:{c:[10534]}}}}},114:{l:{59:{c:[8601]},111:{l:{119:{l:{59:{c:[8601]}}}}}}}}}}},110:{l:{119:{l:{97:{l:{114:{l:{59:{c:[10538]}}}}}}}}}}},122:{l:{108:{l:{105:{l:{103:{l:{59:{c:[223]}},c:[223]}}}}}}}}},116:{l:{97:{l:{114:{l:{103:{l:{101:{l:{116:{l:{59:{c:[8982]}}}}}}}}},117:{l:{59:{c:[964]}}}}},98:{l:{114:{l:{107:{l:{59:{c:[9140]}}}}}}},99:{l:{97:{l:{114:{l:{111:{l:{110:{l:{59:{c:[357]}}}}}}}}},101:{l:{100:{l:{105:{l:{108:{l:{59:{c:[355]}}}}}}}}},121:{l:{59:{c:[1090]}}}}},100:{l:{111:{l:{116:{l:{59:{c:[8411]}}}}}}},101:{l:{108:{l:{114:{l:{101:{l:{99:{l:{59:{c:[8981]}}}}}}}}}}},102:{l:{114:{l:{59:{c:[120113]}}}}},104:{l:{101:{l:{114:{l:{101:{l:{52:{l:{59:{c:[8756]}}},102:{l:{111:{l:{114:{l:{101:{l:{59:{c:[8756]}}}}}}}}}}}}},116:{l:{97:{l:{59:{c:[952]},115:{l:{121:{l:{109:{l:{59:{c:[977]}}}}}}},118:{l:{59:{c:[977]}}}}}}}}},105:{l:{99:{l:{107:{l:{97:{l:{112:{l:{112:{l:{114:{l:{111:{l:{120:{l:{59:{c:[8776]}}}}}}}}}}}}},115:{l:{105:{l:{109:{l:{59:{c:[8764]}}}}}}}}}}},110:{l:{115:{l:{112:{l:{59:{c:[8201]}}}}}}}}},107:{l:{97:{l:{112:{l:{59:{c:[8776]}}}}},115:{l:{105:{l:{109:{l:{59:{c:[8764]}}}}}}}}},111:{l:{114:{l:{110:{l:{59:{c:[254]}},c:[254]}}}}}}},105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[732]}}}}}}},109:{l:{101:{l:{115:{l:{59:{c:[215]},98:{l:{59:{c:[8864]},97:{l:{114:{l:{59:{c:[10801]}}}}}}},100:{l:{59:{c:[10800]}}}},c:[215]}}}}},110:{l:{116:{l:{59:{c:[8749]}}}}}}},111:{l:{101:{l:{97:{l:{59:{c:[10536]}}}}},112:{l:{59:{c:[8868]},98:{l:{111:{l:{116:{l:{59:{c:[9014]}}}}}}},99:{l:{105:{l:{114:{l:{59:{c:[10993]}}}}}}},102:{l:{59:{c:[120165]},111:{l:{114:{l:{107:{l:{59:{c:[10970]}}}}}}}}}}},115:{l:{97:{l:{59:{c:[10537]}}}}}}},112:{l:{114:{l:{105:{l:{109:{l:{101:{l:{59:{c:[8244]}}}}}}}}}}},114:{l:{97:{l:{100:{l:{101:{l:{59:{c:[8482]}}}}}}},105:{l:{97:{l:{110:{l:{103:{l:{108:{l:{101:{l:{59:{c:[9653]},100:{l:{111:{l:{119:{l:{110:{l:{59:{c:[9663]}}}}}}}}},108:{l:{101:{l:{102:{l:{116:{l:{59:{c:[9667]},101:{l:{113:{l:{59:{c:[8884]}}}}}}}}}}}}},113:{l:{59:{c:[8796]}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{59:{c:[9657]},101:{l:{113:{l:{59:{c:[8885]}}}}}}}}}}}}}}}}}}}}}}}}},100:{l:{111:{l:{116:{l:{59:{c:[9708]}}}}}}},101:{l:{59:{c:[8796]}}},109:{l:{105:{l:{110:{l:{117:{l:{115:{l:{59:{c:[10810]}}}}}}}}}}},112:{l:{108:{l:{117:{l:{115:{l:{59:{c:[10809]}}}}}}}}},115:{l:{98:{l:{59:{c:[10701]}}}}},116:{l:{105:{l:{109:{l:{101:{l:{59:{c:[10811]}}}}}}}}}}},112:{l:{101:{l:{122:{l:{105:{l:{117:{l:{109:{l:{59:{c:[9186]}}}}}}}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[120009]}}},121:{l:{59:{c:[1094]}}}}},104:{l:{99:{l:{121:{l:{59:{c:[1115]}}}}}}},116:{l:{114:{l:{111:{l:{107:{l:{59:{c:[359]}}}}}}}}}}},119:{l:{105:{l:{120:{l:{116:{l:{59:{c:[8812]}}}}}}},111:{l:{104:{l:{101:{l:{97:{l:{100:{l:{108:{l:{101:{l:{102:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8606]}}}}}}}}}}}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8608]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},117:{l:{65:{l:{114:{l:{114:{l:{59:{c:[8657]}}}}}}},72:{l:{97:{l:{114:{l:{59:{c:[10595]}}}}}}},97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[250]}},c:[250]}}}}}}},114:{l:{114:{l:{59:{c:[8593]}}}}}}},98:{l:{114:{l:{99:{l:{121:{l:{59:{c:[1118]}}}}},101:{l:{118:{l:{101:{l:{59:{c:[365]}}}}}}}}}}},99:{l:{105:{l:{114:{l:{99:{l:{59:{c:[251]}},c:[251]}}}}},121:{l:{59:{c:[1091]}}}}},100:{l:{97:{l:{114:{l:{114:{l:{59:{c:[8645]}}}}}}},98:{l:{108:{l:{97:{l:{99:{l:{59:{c:[369]}}}}}}}}},104:{l:{97:{l:{114:{l:{59:{c:[10606]}}}}}}}}},102:{l:{105:{l:{115:{l:{104:{l:{116:{l:{59:{c:[10622]}}}}}}}}},114:{l:{59:{c:[120114]}}}}},103:{l:{114:{l:{97:{l:{118:{l:{101:{l:{59:{c:[249]}},c:[249]}}}}}}}}},104:{l:{97:{l:{114:{l:{108:{l:{59:{c:[8639]}}},114:{l:{59:{c:[8638]}}}}}}},98:{l:{108:{l:{107:{l:{59:{c:[9600]}}}}}}}}},108:{l:{99:{l:{111:{l:{114:{l:{110:{l:{59:{c:[8988]},101:{l:{114:{l:{59:{c:[8988]}}}}}}}}}}},114:{l:{111:{l:{112:{l:{59:{c:[8975]}}}}}}}}},116:{l:{114:{l:{105:{l:{59:{c:[9720]}}}}}}}}},109:{l:{97:{l:{99:{l:{114:{l:{59:{c:[363]}}}}}}},108:{l:{59:{c:[168]}},c:[168]}}},111:{l:{103:{l:{111:{l:{110:{l:{59:{c:[371]}}}}}}},112:{l:{102:{l:{59:{c:[120166]}}}}}}},112:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8593]}}}}}}}}}}},100:{l:{111:{l:{119:{l:{110:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{59:{c:[8597]}}}}}}}}}}}}}}}}}}},104:{l:{97:{l:{114:{l:{112:{l:{111:{l:{111:{l:{110:{l:{108:{l:{101:{l:{102:{l:{116:{l:{59:{c:[8639]}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{59:{c:[8638]}}}}}}}}}}}}}}}}}}}}}}}}},108:{l:{117:{l:{115:{l:{59:{c:[8846]}}}}}}},115:{l:{105:{l:{59:{c:[965]},104:{l:{59:{c:[978]}}},108:{l:{111:{l:{110:{l:{59:{c:[965]}}}}}}}}}}},117:{l:{112:{l:{97:{l:{114:{l:{114:{l:{111:{l:{119:{l:{115:{l:{59:{c:[8648]}}}}}}}}}}}}}}}}}}},114:{l:{99:{l:{111:{l:{114:{l:{110:{l:{59:{c:[8989]},101:{l:{114:{l:{59:{c:[8989]}}}}}}}}}}},114:{l:{111:{l:{112:{l:{59:{c:[8974]}}}}}}}}},105:{l:{110:{l:{103:{l:{59:{c:[367]}}}}}}},116:{l:{114:{l:{105:{l:{59:{c:[9721]}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[120010]}}}}}}},116:{l:{100:{l:{111:{l:{116:{l:{59:{c:[8944]}}}}}}},105:{l:{108:{l:{100:{l:{101:{l:{59:{c:[361]}}}}}}}}},114:{l:{105:{l:{59:{c:[9653]},102:{l:{59:{c:[9652]}}}}}}}}},117:{l:{97:{l:{114:{l:{114:{l:{59:{c:[8648]}}}}}}},109:{l:{108:{l:{59:{c:[252]}},c:[252]}}}}},119:{l:{97:{l:{110:{l:{103:{l:{108:{l:{101:{l:{59:{c:[10663]}}}}}}}}}}}}}}},118:{l:{65:{l:{114:{l:{114:{l:{59:{c:[8661]}}}}}}},66:{l:{97:{l:{114:{l:{59:{c:[10984]},118:{l:{59:{c:[10985]}}}}}}}}},68:{l:{97:{l:{115:{l:{104:{l:{59:{c:[8872]}}}}}}}}},97:{l:{110:{l:{103:{l:{114:{l:{116:{l:{59:{c:[10652]}}}}}}}}},114:{l:{101:{l:{112:{l:{115:{l:{105:{l:{108:{l:{111:{l:{110:{l:{59:{c:[1013]}}}}}}}}}}}}}}},107:{l:{97:{l:{112:{l:{112:{l:{97:{l:{59:{c:[1008]}}}}}}}}}}},110:{l:{111:{l:{116:{l:{104:{l:{105:{l:{110:{l:{103:{l:{59:{c:[8709]}}}}}}}}}}}}}}},112:{l:{104:{l:{105:{l:{59:{c:[981]}}}}},105:{l:{59:{c:[982]}}},114:{l:{111:{l:{112:{l:{116:{l:{111:{l:{59:{c:[8733]}}}}}}}}}}}}},114:{l:{59:{c:[8597]},104:{l:{111:{l:{59:{c:[1009]}}}}}}},115:{l:{105:{l:{103:{l:{109:{l:{97:{l:{59:{c:[962]}}}}}}}}},117:{l:{98:{l:{115:{l:{101:{l:{116:{l:{110:{l:{101:{l:{113:{l:{59:{c:[8842,65024]},113:{l:{59:{c:[10955,65024]}}}}}}}}}}}}}}}}},112:{l:{115:{l:{101:{l:{116:{l:{110:{l:{101:{l:{113:{l:{59:{c:[8843,65024]},113:{l:{59:{c:[10956,65024]}}}}}}}}}}}}}}}}}}}}},116:{l:{104:{l:{101:{l:{116:{l:{97:{l:{59:{c:[977]}}}}}}}}},114:{l:{105:{l:{97:{l:{110:{l:{103:{l:{108:{l:{101:{l:{108:{l:{101:{l:{102:{l:{116:{l:{59:{c:[8882]}}}}}}}}},114:{l:{105:{l:{103:{l:{104:{l:{116:{l:{59:{c:[8883]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},99:{l:{121:{l:{59:{c:[1074]}}}}},100:{l:{97:{l:{115:{l:{104:{l:{59:{c:[8866]}}}}}}}}},101:{l:{101:{l:{59:{c:[8744]},98:{l:{97:{l:{114:{l:{59:{c:[8891]}}}}}}},101:{l:{113:{l:{59:{c:[8794]}}}}}}},108:{l:{108:{l:{105:{l:{112:{l:{59:{c:[8942]}}}}}}}}},114:{l:{98:{l:{97:{l:{114:{l:{59:{c:[124]}}}}}}},116:{l:{59:{c:[124]}}}}}}},102:{l:{114:{l:{59:{c:[120115]}}}}},108:{l:{116:{l:{114:{l:{105:{l:{59:{c:[8882]}}}}}}}}},110:{l:{115:{l:{117:{l:{98:{l:{59:{c:[8834,8402]}}},112:{l:{59:{c:[8835,8402]}}}}}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120167]}}}}}}},112:{l:{114:{l:{111:{l:{112:{l:{59:{c:[8733]}}}}}}}}},114:{l:{116:{l:{114:{l:{105:{l:{59:{c:[8883]}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[120011]}}}}},117:{l:{98:{l:{110:{l:{69:{l:{59:{c:[10955,65024]}}},101:{l:{59:{c:[8842,65024]}}}}}}},112:{l:{110:{l:{69:{l:{59:{c:[10956,65024]}}},101:{l:{59:{c:[8843,65024]}}}}}}}}}}},122:{l:{105:{l:{103:{l:{122:{l:{97:{l:{103:{l:{59:{c:[10650]}}}}}}}}}}}}}}},119:{l:{99:{l:{105:{l:{114:{l:{99:{l:{59:{c:[373]}}}}}}}}},101:{l:{100:{l:{98:{l:{97:{l:{114:{l:{59:{c:[10847]}}}}}}},103:{l:{101:{l:{59:{c:[8743]},113:{l:{59:{c:[8793]}}}}}}}}},105:{l:{101:{l:{114:{l:{112:{l:{59:{c:[8472]}}}}}}}}}}},102:{l:{114:{l:{59:{c:[120116]}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120168]}}}}}}},112:{l:{59:{c:[8472]}}},114:{l:{59:{c:[8768]},101:{l:{97:{l:{116:{l:{104:{l:{59:{c:[8768]}}}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[120012]}}}}}}}}},120:{l:{99:{l:{97:{l:{112:{l:{59:{c:[8898]}}}}},105:{l:{114:{l:{99:{l:{59:{c:[9711]}}}}}}},117:{l:{112:{l:{59:{c:[8899]}}}}}}},100:{l:{116:{l:{114:{l:{105:{l:{59:{c:[9661]}}}}}}}}},102:{l:{114:{l:{59:{c:[120117]}}}}},104:{l:{65:{l:{114:{l:{114:{l:{59:{c:[10234]}}}}}}},97:{l:{114:{l:{114:{l:{59:{c:[10231]}}}}}}}}},105:{l:{59:{c:[958]}}},108:{l:{65:{l:{114:{l:{114:{l:{59:{c:[10232]}}}}}}},97:{l:{114:{l:{114:{l:{59:{c:[10229]}}}}}}}}},109:{l:{97:{l:{112:{l:{59:{c:[10236]}}}}}}},110:{l:{105:{l:{115:{l:{59:{c:[8955]}}}}}}},111:{l:{100:{l:{111:{l:{116:{l:{59:{c:[10752]}}}}}}},112:{l:{102:{l:{59:{c:[120169]}}},108:{l:{117:{l:{115:{l:{59:{c:[10753]}}}}}}}}},116:{l:{105:{l:{109:{l:{101:{l:{59:{c:[10754]}}}}}}}}}}},114:{l:{65:{l:{114:{l:{114:{l:{59:{c:[10233]}}}}}}},97:{l:{114:{l:{114:{l:{59:{c:[10230]}}}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[120013]}}}}},113:{l:{99:{l:{117:{l:{112:{l:{59:{c:[10758]}}}}}}}}}}},117:{l:{112:{l:{108:{l:{117:{l:{115:{l:{59:{c:[10756]}}}}}}}}},116:{l:{114:{l:{105:{l:{59:{c:[9651]}}}}}}}}},118:{l:{101:{l:{101:{l:{59:{c:[8897]}}}}}}},119:{l:{101:{l:{100:{l:{103:{l:{101:{l:{59:{c:[8896]}}}}}}}}}}}}},121:{l:{97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[253]}},c:[253]}}}}},121:{l:{59:{c:[1103]}}}}}}},99:{l:{105:{l:{114:{l:{99:{l:{59:{c:[375]}}}}}}},121:{l:{59:{c:[1099]}}}}},101:{l:{110:{l:{59:{c:[165]}},c:[165]}}},102:{l:{114:{l:{59:{c:[120118]}}}}},105:{l:{99:{l:{121:{l:{59:{c:[1111]}}}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120170]}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[120014]}}}}}}},117:{l:{99:{l:{121:{l:{59:{c:[1102]}}}}},109:{l:{108:{l:{59:{c:[255]}},c:[255]}}}}}}},122:{l:{97:{l:{99:{l:{117:{l:{116:{l:{101:{l:{59:{c:[378]}}}}}}}}}}},99:{l:{97:{l:{114:{l:{111:{l:{110:{l:{59:{c:[382]}}}}}}}}},121:{l:{59:{c:[1079]}}}}},100:{l:{111:{l:{116:{l:{59:{c:[380]}}}}}}},101:{l:{101:{l:{116:{l:{114:{l:{102:{l:{59:{c:[8488]}}}}}}}}},116:{l:{97:{l:{59:{c:[950]}}}}}}},102:{l:{114:{l:{59:{c:[120119]}}}}},104:{l:{99:{l:{121:{l:{59:{c:[1078]}}}}}}},105:{l:{103:{l:{114:{l:{97:{l:{114:{l:{114:{l:{59:{c:[8669]}}}}}}}}}}}}},111:{l:{112:{l:{102:{l:{59:{c:[120171]}}}}}}},115:{l:{99:{l:{114:{l:{59:{c:[120015]}}}}}}},119:{l:{106:{l:{59:{c:[8205]}}},110:{l:{106:{l:{59:{c:[8204]}}}}}}}}}};\r\n","'use strict';\n\nvar UNICODE = require('../common/unicode');\n\n//Aliases\nvar $ = UNICODE.CODE_POINTS;\n\n//Utils\n\n//OPTIMIZATION: these utility functions should not be moved out of this module. V8 Crankshaft will not inline\n//this functions if they will be situated in another module due to context switch.\n//Always perform inlining check before modifying this functions ('node --trace-inlining').\nfunction isSurrogatePair(cp1, cp2) {\n    return cp1 >= 0xD800 && cp1 <= 0xDBFF && cp2 >= 0xDC00 && cp2 <= 0xDFFF;\n}\n\nfunction getSurrogatePairCodePoint(cp1, cp2) {\n    return (cp1 - 0xD800) * 0x400 + 0x2400 + cp2;\n}\n\n\n//Const\nvar DEFAULT_BUFFER_WATERLINE = 1 << 16;\n\n\n//Preprocessor\n//NOTE: HTML input preprocessing\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#preprocessing-the-input-stream)\nvar Preprocessor = module.exports = function () {\n    this.html = null;\n\n    this.pos = -1;\n    this.lastGapPos = -1;\n    this.lastCharPos = -1;\n    this.droppedBufferSize = 0;\n\n    this.gapStack = [];\n\n    this.skipNextNewLine = false;\n\n    this.lastChunkWritten = false;\n    this.endOfChunkHit = false;\n    this.bufferWaterline = DEFAULT_BUFFER_WATERLINE;\n};\n\nObject.defineProperty(Preprocessor.prototype, 'sourcePos', {\n    get: function () {\n        return this.droppedBufferSize + this.pos;\n    }\n});\n\nPreprocessor.prototype.dropParsedChunk = function () {\n    if (this.pos > this.bufferWaterline) {\n        this.lastCharPos -= this.pos;\n        this.droppedBufferSize += this.pos;\n        this.html = this.html.substring(this.pos);\n        this.pos = 0;\n        this.lastGapPos = -1;\n        this.gapStack = [];\n    }\n};\n\nPreprocessor.prototype._addGap = function () {\n    this.gapStack.push(this.lastGapPos);\n    this.lastGapPos = this.pos;\n};\n\nPreprocessor.prototype._processHighRangeCodePoint = function (cp) {\n    //NOTE: try to peek a surrogate pair\n    if (this.pos !== this.lastCharPos) {\n        var nextCp = this.html.charCodeAt(this.pos + 1);\n\n        if (isSurrogatePair(cp, nextCp)) {\n            //NOTE: we have a surrogate pair. Peek pair character and recalculate code point.\n            this.pos++;\n            cp = getSurrogatePairCodePoint(cp, nextCp);\n\n            //NOTE: add gap that should be avoided during retreat\n            this._addGap();\n        }\n    }\n\n    // NOTE: we've hit the end of chunk, stop processing at this point\n    else if (!this.lastChunkWritten) {\n        this.endOfChunkHit = true;\n        return $.EOF;\n    }\n\n    return cp;\n};\n\nPreprocessor.prototype.write = function (chunk, isLastChunk) {\n    if (this.html)\n        this.html += chunk;\n\n    else\n        this.html = chunk;\n\n    this.lastCharPos = this.html.length - 1;\n    this.endOfChunkHit = false;\n    this.lastChunkWritten = isLastChunk;\n};\n\nPreprocessor.prototype.insertHtmlAtCurrentPos = function (chunk) {\n    this.html = this.html.substring(0, this.pos + 1) +\n                chunk +\n                this.html.substring(this.pos + 1, this.html.length);\n\n    this.lastCharPos = this.html.length - 1;\n    this.endOfChunkHit = false;\n};\n\n\nPreprocessor.prototype.advance = function () {\n    this.pos++;\n\n    if (this.pos > this.lastCharPos) {\n        if (!this.lastChunkWritten)\n            this.endOfChunkHit = true;\n\n        return $.EOF;\n    }\n\n    var cp = this.html.charCodeAt(this.pos);\n\n    //NOTE: any U+000A LINE FEED (LF) characters that immediately follow a U+000D CARRIAGE RETURN (CR) character\n    //must be ignored.\n    if (this.skipNextNewLine && cp === $.LINE_FEED) {\n        this.skipNextNewLine = false;\n        this._addGap();\n        return this.advance();\n    }\n\n    //NOTE: all U+000D CARRIAGE RETURN (CR) characters must be converted to U+000A LINE FEED (LF) characters\n    if (cp === $.CARRIAGE_RETURN) {\n        this.skipNextNewLine = true;\n        return $.LINE_FEED;\n    }\n\n    this.skipNextNewLine = false;\n\n    //OPTIMIZATION: first perform check if the code point in the allowed range that covers most common\n    //HTML input (e.g. ASCII codes) to avoid performance-cost operations for high-range code points.\n    return cp >= 0xD800 ? this._processHighRangeCodePoint(cp) : cp;\n};\n\nPreprocessor.prototype.retreat = function () {\n    if (this.pos === this.lastGapPos) {\n        this.lastGapPos = this.gapStack.pop();\n        this.pos--;\n    }\n\n    this.pos--;\n};\n\n","'use strict';\r\n\r\n/**\r\n * @typedef {Object} TreeAdapter\r\n */\r\n\r\n//Node construction\r\n\r\n/**\r\n * Creates a document node.\r\n *\r\n * @function createDocument\r\n * @memberof TreeAdapter\r\n *\r\n * @returns {ASTNode<Document>} document\r\n *\r\n * @see {@link https://github.com/inikulin/parse5/blob/tree-adapter-docs-rev/lib/tree_adapters/default.js#L19|default implementation.}\r\n */\r\nexports.createDocument = function () {\r\n    return {\r\n        nodeName: '#document',\r\n        quirksMode: false,\r\n        childNodes: []\r\n    };\r\n};\r\n\r\n/**\r\n * Creates a document fragment node.\r\n *\r\n * @function createDocumentFragment\r\n * @memberof TreeAdapter\r\n *\r\n * @returns {ASTNode<DocumentFragment>} fragment\r\n *\r\n * @see {@link https://github.com/inikulin/parse5/blob/tree-adapter-docs-rev/lib/tree_adapters/default.js#L37|default implementation.}\r\n */\r\nexports.createDocumentFragment = function () {\r\n    return {\r\n        nodeName: '#document-fragment',\r\n        quirksMode: false,\r\n        childNodes: []\r\n    };\r\n};\r\n\r\n\r\n/**\r\n * Creates an element node.\r\n *\r\n * @function createElement\r\n * @memberof TreeAdapter\r\n *\r\n * @param {String} tagName - Tag name of the element.\r\n * @param {String} namespaceURI - Namespace of the element.\r\n * @param {Array}  attrs - Attribute name-value pair array.\r\n *                         Foreign attributes may contain `namespace` and `prefix` fields as well.\r\n *\r\n * @returns {ASTNode<Element>} element\r\n *\r\n * @see {@link https://github.com/inikulin/parse5/blob/tree-adapter-docs-rev/lib/tree_adapters/default.js#L61|default implementation.}\r\n */\r\nexports.createElement = function (tagName, namespaceURI, attrs) {\r\n    return {\r\n        nodeName: tagName,\r\n        tagName: tagName,\r\n        attrs: attrs,\r\n        namespaceURI: namespaceURI,\r\n        childNodes: [],\r\n        parentNode: null\r\n    };\r\n};\r\n\r\n\r\n/**\r\n * Creates a comment node.\r\n *\r\n * @function createCommentNode\r\n * @memberof TreeAdapter\r\n *\r\n * @param {String} data - Comment text.\r\n *\r\n * @returns {ASTNode<CommentNode>} comment\r\n *\r\n * @see {@link https://github.com/inikulin/parse5/blob/tree-adapter-docs-rev/lib/tree_adapters/default.js#L85|default implementation.}\r\n */\r\nexports.createCommentNode = function (data) {\r\n    return {\r\n        nodeName: '#comment',\r\n        data: data,\r\n        parentNode: null\r\n    };\r\n};\r\n\r\nvar createTextNode = function (value) {\r\n    return {\r\n        nodeName: '#text',\r\n        value: value,\r\n        parentNode: null\r\n    };\r\n};\r\n\r\n\r\n//Tree mutation\r\n/**\r\n * Appends a child node to the given parent node.\r\n *\r\n * @function appendChild\r\n * @memberof TreeAdapter\r\n *\r\n * @param {ASTNode} parentNode - Parent node.\r\n * @param {ASTNode} newNode -  Child node.\r\n *\r\n * @see {@link https://github.com/inikulin/parse5/blob/tree-adapter-docs-rev/lib/tree_adapters/default.js#L114|default implementation.}\r\n */\r\nvar appendChild = exports.appendChild = function (parentNode, newNode) {\r\n    parentNode.childNodes.push(newNode);\r\n    newNode.parentNode = parentNode;\r\n};\r\n\r\n/**\r\n * Inserts a child node to the given parent node before the given reference node.\r\n *\r\n * @function insertBefore\r\n * @memberof TreeAdapter\r\n *\r\n * @param {ASTNode} parentNode - Parent node.\r\n * @param {ASTNode} newNode -  Child node.\r\n * @param {ASTNode} referenceNode -  Reference node.\r\n *\r\n * @see {@link https://github.com/inikulin/parse5/blob/tree-adapter-docs-rev/lib/tree_adapters/default.js#L131|default implementation.}\r\n */\r\nvar insertBefore = exports.insertBefore = function (parentNode, newNode, referenceNode) {\r\n    var insertionIdx = parentNode.childNodes.indexOf(referenceNode);\r\n\r\n    parentNode.childNodes.splice(insertionIdx, 0, newNode);\r\n    newNode.parentNode = parentNode;\r\n};\r\n\r\n/**\r\n * Sets the `<template>` element content element.\r\n *\r\n * @function setTemplateContent\r\n * @memberof TreeAdapter\r\n *\r\n * @param {ASTNode<TemplateElement>} templateElement - `<template>` element.\r\n * @param {ASTNode<DocumentFragment>} contentTemplate -  Content element.\r\n *\r\n * @see {@link https://github.com/inikulin/parse5/blob/tree-adapter-docs-rev/lib/tree_adapters/default.js#L149|default implementation.}\r\n */\r\nexports.setTemplateContent = function (templateElement, contentElement) {\r\n    templateElement.content = contentElement;\r\n};\r\n\r\n\r\n/**\r\n * Returns the `<template>` element content element.\r\n *\r\n * @function getTemplateContent\r\n * @memberof TreeAdapter\r\n *\r\n * @param {ASTNode<TemplateElement>} templateElement - `<template>` element.\r\n\r\n * @returns {ASTNode<DocumentFragment>}\r\n *\r\n * @see {@link https://github.com/inikulin/parse5/blob/tree-adapter-docs-rev/lib/tree_adapters/default.js#L166|default implementation.}\r\n */\r\nexports.getTemplateContent = function (templateElement) {\r\n    return templateElement.content;\r\n};\r\n\r\n/**\r\n * Sets the document type. If the `document` already contains a document type node, the `name`, `publicId` and `systemId`\r\n * properties of this node will be updated with the provided values. Otherwise, creates a new document type node\r\n * with the given properties and inserts it into the `document`.\r\n *\r\n * @function setDocumentType\r\n * @memberof TreeAdapter\r\n *\r\n * @param {ASTNode<Document>} document - Document node.\r\n * @param {String} name -  Document type name.\r\n * @param {String} publicId - Document type public identifier.\r\n * @param {String} systemId - Document type system identifier.\r\n *\r\n * @see {@link https://github.com/inikulin/parse5/blob/tree-adapter-docs-rev/lib/tree_adapters/default.js#L185|default implementation.}\r\n */\r\nexports.setDocumentType = function (document, name, publicId, systemId) {\r\n    var doctypeNode = null;\r\n\r\n    for (var i = 0; i < document.childNodes.length; i++) {\r\n        if (document.childNodes[i].nodeName === '#documentType') {\r\n            doctypeNode = document.childNodes[i];\r\n            break;\r\n        }\r\n    }\r\n\r\n    if (doctypeNode) {\r\n        doctypeNode.name = name;\r\n        doctypeNode.publicId = publicId;\r\n        doctypeNode.systemId = systemId;\r\n    }\r\n\r\n    else {\r\n        appendChild(document, {\r\n            nodeName: '#documentType',\r\n            name: name,\r\n            publicId: publicId,\r\n            systemId: systemId\r\n        });\r\n    }\r\n};\r\n\r\n/**\r\n * Sets the document's quirks mode flag.\r\n *\r\n * @function setQuirksMode\r\n * @memberof TreeAdapter\r\n *\r\n * @param {ASTNode<Document>} document - Document node.\r\n *\r\n * @see {@link https://github.com/inikulin/parse5/blob/tree-adapter-docs-rev/lib/tree_adapters/default.js#L221|default implementation.}\r\n */\r\nexports.setQuirksMode = function (document) {\r\n    document.quirksMode = true;\r\n};\r\n\r\n/**\r\n * Determines if the document's quirks mode flag is set.\r\n *\r\n * @function isQuirksMode\r\n * @memberof TreeAdapter\r\n *\r\n * @param {ASTNode<Document>} document - Document node.\r\n\r\n * @returns {Boolean}\r\n *\r\n * @see {@link https://github.com/inikulin/parse5/blob/tree-adapter-docs-rev/lib/tree_adapters/default.js#L237|default implementation.}\r\n */\r\nexports.isQuirksMode = function (document) {\r\n    return document.quirksMode;\r\n};\r\n\r\n/**\r\n * Removes a node from its parent.\r\n *\r\n * @function detachNode\r\n * @memberof TreeAdapter\r\n *\r\n * @param {ASTNode} node - Node.\r\n\r\n * @see {@link https://github.com/inikulin/parse5/blob/tree-adapter-docs-rev/lib/tree_adapters/default.js#L251|default implementation.}\r\n */\r\nexports.detachNode = function (node) {\r\n    if (node.parentNode) {\r\n        var idx = node.parentNode.childNodes.indexOf(node);\r\n\r\n        node.parentNode.childNodes.splice(idx, 1);\r\n        node.parentNode = null;\r\n    }\r\n};\r\n\r\n/**\r\n * Inserts text into a node. If the last child of the node is a text node, the provided text will be appended to the\r\n * text node content. Otherwise, inserts a new text node with the given text.\r\n *\r\n *\r\n * @function insertText\r\n * @memberof TreeAdapter\r\n *\r\n * @param {ASTNode} parentNode - Node to insert text into.\r\n * @param {String} text - Text to insert.\r\n\r\n * @see {@link https://github.com/inikulin/parse5/blob/tree-adapter-docs-rev/lib/tree_adapters/default.js#L273|default implementation.}\r\n */\r\nexports.insertText = function (parentNode, text) {\r\n    if (parentNode.childNodes.length) {\r\n        var prevNode = parentNode.childNodes[parentNode.childNodes.length - 1];\r\n\r\n        if (prevNode.nodeName === '#text') {\r\n            prevNode.value += text;\r\n            return;\r\n        }\r\n    }\r\n\r\n    appendChild(parentNode, createTextNode(text));\r\n};\r\n\r\n/**\r\n * Inserts text into a sibling node that goes before the reference node. If this sibling node is the text node,\r\n * the provided text will be appended to the text node content. Otherwise, inserts a new sibling text node with\r\n * the given text before the reference node.\r\n *\r\n *\r\n * @function insertTextBefore\r\n * @memberof TreeAdapter\r\n *\r\n * @param {ASTNode} parentNode - Node to insert text into.\r\n * @param {String} text - Text to insert.\r\n * @param {ASTNode} referenceNode - Node to insert text before.\r\n *\r\n * @see {@link https://github.com/inikulin/parse5/blob/tree-adapter-docs-rev/lib/tree_adapters/default.js#L301|default implementation.}\r\n */\r\nexports.insertTextBefore = function (parentNode, text, referenceNode) {\r\n    var prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1];\r\n\r\n    if (prevNode && prevNode.nodeName === '#text')\r\n        prevNode.value += text;\r\n    else\r\n        insertBefore(parentNode, createTextNode(text), referenceNode);\r\n};\r\n\r\n/**\r\n * Copies attributes to the given node. Only attributes that are not yet present in the node are copied.\r\n *\r\n * @function adoptAttributes\r\n * @memberof TreeAdapter\r\n *\r\n * @param {ASTNode} recipientNode - Node to copy attributes into.\r\n * @param {Array} attrs - Attributes to copy.\r\n\r\n * @see {@link https://github.com/inikulin/parse5/blob/tree-adapter-docs-rev/lib/tree_adapters/default.js#L321|default implementation.}\r\n */\r\nexports.adoptAttributes = function (recipientNode, attrs) {\r\n    var recipientAttrsMap = [];\r\n\r\n    for (var i = 0; i < recipientNode.attrs.length; i++)\r\n        recipientAttrsMap.push(recipientNode.attrs[i].name);\r\n\r\n    for (var j = 0; j < attrs.length; j++) {\r\n        if (recipientAttrsMap.indexOf(attrs[j].name) === -1)\r\n            recipientNode.attrs.push(attrs[j]);\r\n    }\r\n};\r\n\r\n\r\n//Tree traversing\r\n\r\n/**\r\n * Returns the first child of the given node.\r\n *\r\n * @function getFirstChild\r\n * @memberof TreeAdapter\r\n *\r\n * @param {ASTNode} node - Node.\r\n *\r\n * @returns {ASTNode} firstChild\r\n *\r\n * @see {@link https://github.com/inikulin/parse5/blob/tree-adapter-docs-rev/lib/tree_adapters/default.js#L348|default implementation.}\r\n */\r\nexports.getFirstChild = function (node) {\r\n    return node.childNodes[0];\r\n};\r\n\r\n/**\r\n * Returns the given node's children in an array.\r\n *\r\n * @function getChildNodes\r\n * @memberof TreeAdapter\r\n *\r\n * @param {ASTNode} node - Node.\r\n *\r\n * @returns {Array} children\r\n *\r\n * @see {@link https://github.com/inikulin/parse5/blob/tree-adapter-docs-rev/lib/tree_adapters/default.js#L364|default implementation.}\r\n */\r\nexports.getChildNodes = function (node) {\r\n    return node.childNodes;\r\n};\r\n\r\n/**\r\n * Returns the given node's parent.\r\n *\r\n * @function getParentNode\r\n * @memberof TreeAdapter\r\n *\r\n * @param {ASTNode} node - Node.\r\n *\r\n * @returns {ASTNode} parent\r\n *\r\n * @see {@link https://github.com/inikulin/parse5/blob/tree-adapter-docs-rev/lib/tree_adapters/default.js#L380|default implementation.}\r\n */\r\nexports.getParentNode = function (node) {\r\n    return node.parentNode;\r\n};\r\n\r\n/**\r\n * Returns the given node's attributes in an array, in the form of name-value pairs.\r\n * Foreign attributes may contain `namespace` and `prefix` fields as well.\r\n *\r\n * @function getAttrList\r\n * @memberof TreeAdapter\r\n *\r\n * @param {ASTNode} node - Node.\r\n *\r\n * @returns {Array} attributes\r\n *\r\n * @see {@link https://github.com/inikulin/parse5/blob/tree-adapter-docs-rev/lib/tree_adapters/default.js#L397|default implementation.}\r\n */\r\nexports.getAttrList = function (node) {\r\n    return node.attrs;\r\n};\r\n\r\n//Node data\r\n\r\n/**\r\n * Returns the given element's tag name.\r\n *\r\n * @function getTagName\r\n * @memberof TreeAdapter\r\n *\r\n * @param {ASTNode<Element>} element - Element.\r\n *\r\n * @returns {String} tagName\r\n *\r\n * @see {@link https://github.com/inikulin/parse5/blob/tree-adapter-docs-rev/lib/tree_adapters/default.js#L415|default implementation.}\r\n */\r\nexports.getTagName = function (element) {\r\n    return element.tagName;\r\n};\r\n\r\n/**\r\n * Returns the given element's namespace.\r\n *\r\n * @function getNamespaceURI\r\n * @memberof TreeAdapter\r\n *\r\n * @param {ASTNode<Element>} element - Element.\r\n *\r\n * @returns {String} namespaceURI\r\n *\r\n * @see {@link https://github.com/inikulin/parse5/blob/tree-adapter-docs-rev/lib/tree_adapters/default.js#L431|default implementation.}\r\n */\r\nexports.getNamespaceURI = function (element) {\r\n    return element.namespaceURI;\r\n};\r\n\r\n/**\r\n * Returns the given text node's content.\r\n *\r\n * @function getTextNodeContent\r\n * @memberof TreeAdapter\r\n *\r\n * @param {ASTNode<Text>} textNode - Text node.\r\n *\r\n * @returns {String} text\r\n *\r\n * @see {@link https://github.com/inikulin/parse5/blob/tree-adapter-docs-rev/lib/tree_adapters/default.js#L447|default implementation.}\r\n */\r\nexports.getTextNodeContent = function (textNode) {\r\n    return textNode.value;\r\n};\r\n\r\n/**\r\n * Returns the given comment node's content.\r\n *\r\n * @function getCommentNodeContent\r\n * @memberof TreeAdapter\r\n *\r\n * @param {ASTNode<Comment>} commentNode - Comment node.\r\n *\r\n * @returns {String} commentText\r\n *\r\n * @see {@link https://github.com/inikulin/parse5/blob/tree-adapter-docs-rev/lib/tree_adapters/default.js#L463|default implementation.}\r\n */\r\nexports.getCommentNodeContent = function (commentNode) {\r\n    return commentNode.data;\r\n};\r\n\r\n/**\r\n * Returns the given document type node's name.\r\n *\r\n * @function getDocumentTypeNodeName\r\n * @memberof TreeAdapter\r\n *\r\n * @param {ASTNode<DocumentType>} doctypeNode - Document type node.\r\n *\r\n * @returns {String} name\r\n *\r\n * @see {@link https://github.com/inikulin/parse5/blob/tree-adapter-docs-rev/lib/tree_adapters/default.js#L479|default implementation.}\r\n */\r\nexports.getDocumentTypeNodeName = function (doctypeNode) {\r\n    return doctypeNode.name;\r\n};\r\n\r\n/**\r\n * Returns the given document type node's public identifier.\r\n *\r\n * @function getDocumentTypeNodePublicId\r\n * @memberof TreeAdapter\r\n *\r\n * @param {ASTNode<DocumentType>} doctypeNode - Document type node.\r\n *\r\n * @returns {String} publicId\r\n *\r\n * @see {@link https://github.com/inikulin/parse5/blob/tree-adapter-docs-rev/lib/tree_adapters/default.js#L495|default implementation.}\r\n */\r\nexports.getDocumentTypeNodePublicId = function (doctypeNode) {\r\n    return doctypeNode.publicId;\r\n};\r\n\r\n/**\r\n * Returns the given document type node's system identifier.\r\n *\r\n * @function getDocumentTypeNodeSystemId\r\n * @memberof TreeAdapter\r\n *\r\n * @param {ASTNode<DocumentType>} doctypeNode - Document type node.\r\n *\r\n * @returns {String} systemId\r\n *\r\n * @see {@link https://github.com/inikulin/parse5/blob/tree-adapter-docs-rev/lib/tree_adapters/default.js#L511|default implementation.}\r\n */\r\nexports.getDocumentTypeNodeSystemId = function (doctypeNode) {\r\n    return doctypeNode.systemId;\r\n};\r\n\r\n//Node types\r\n/**\r\n * Determines if the given node is a text node.\r\n *\r\n * @function isTextNode\r\n * @memberof TreeAdapter\r\n *\r\n * @param {ASTNode} node - Node.\r\n *\r\n * @returns {Boolean}\r\n *\r\n * @see {@link https://github.com/inikulin/parse5/blob/tree-adapter-docs-rev/lib/tree_adapters/default.js#L526|default implementation.}\r\n */\r\nexports.isTextNode = function (node) {\r\n    return node.nodeName === '#text';\r\n};\r\n\r\n/**\r\n * Determines if the given node is a comment node.\r\n *\r\n * @function isCommentNode\r\n * @memberof TreeAdapter\r\n *\r\n * @param {ASTNode} node - Node.\r\n *\r\n * @returns {Boolean}\r\n *\r\n * @see {@link https://github.com/inikulin/parse5/blob/tree-adapter-docs-rev/lib/tree_adapters/default.js#L544|default implementation.}\r\n */\r\nexports.isCommentNode = function (node) {\r\n    return node.nodeName === '#comment';\r\n};\r\n\r\n/**\r\n * Determines if the given node is a document type node.\r\n *\r\n * @function isDocumentTypeNode\r\n * @memberof TreeAdapter\r\n *\r\n * @param {ASTNode} node - Node.\r\n *\r\n * @returns {Boolean}\r\n *\r\n * @see {@link https://github.com/inikulin/parse5/blob/tree-adapter-docs-rev/lib/tree_adapters/default.js#L560|default implementation.}\r\n */\r\nexports.isDocumentTypeNode = function (node) {\r\n    return node.nodeName === '#documentType';\r\n};\r\n\r\n/**\r\n * Determines if the given node is an element.\r\n *\r\n * @function isElementNode\r\n * @memberof TreeAdapter\r\n *\r\n * @param {ASTNode} node - Node.\r\n *\r\n * @returns {Boolean}\r\n *\r\n * @see {@link https://github.com/inikulin/parse5/blob/tree-adapter-docs-rev/lib/tree_adapters/default.js#L576|default implementation.}\r\n */\r\nexports.isElementNode = function (node) {\r\n    return !!node.tagName;\r\n};\r\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\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n  // if the path tries to go above the root, `up` ends up > 0\n  var up = 0;\n  for (var i = parts.length - 1; i >= 0; i--) {\n    var last = parts[i];\n    if (last === '.') {\n      parts.splice(i, 1);\n    } else if (last === '..') {\n      parts.splice(i, 1);\n      up++;\n    } else if (up) {\n      parts.splice(i, 1);\n      up--;\n    }\n  }\n\n  // if the path is allowed to go above the root, restore leading ..s\n  if (allowAboveRoot) {\n    for (; up--; up) {\n      parts.unshift('..');\n    }\n  }\n\n  return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n    /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar splitPath = function(filename) {\n  return splitPathRe.exec(filename).slice(1);\n};\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n  var resolvedPath = '',\n      resolvedAbsolute = false;\n\n  for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n    var path = (i >= 0) ? arguments[i] : process.cwd();\n\n    // Skip empty and invalid entries\n    if (typeof path !== 'string') {\n      throw new TypeError('Arguments to path.resolve must be strings');\n    } else if (!path) {\n      continue;\n    }\n\n    resolvedPath = path + '/' + resolvedPath;\n    resolvedAbsolute = path.charAt(0) === '/';\n  }\n\n  // At this point the path should be resolved to a full absolute path, but\n  // handle relative paths to be safe (might happen when process.cwd() fails)\n\n  // Normalize the path\n  resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n    return !!p;\n  }), !resolvedAbsolute).join('/');\n\n  return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n  var isAbsolute = exports.isAbsolute(path),\n      trailingSlash = substr(path, -1) === '/';\n\n  // Normalize the path\n  path = normalizeArray(filter(path.split('/'), function(p) {\n    return !!p;\n  }), !isAbsolute).join('/');\n\n  if (!path && !isAbsolute) {\n    path = '.';\n  }\n  if (path && trailingSlash) {\n    path += '/';\n  }\n\n  return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n  return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n  var paths = Array.prototype.slice.call(arguments, 0);\n  return exports.normalize(filter(paths, function(p, index) {\n    if (typeof p !== 'string') {\n      throw new TypeError('Arguments to path.join must be strings');\n    }\n    return p;\n  }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n  from = exports.resolve(from).substr(1);\n  to = exports.resolve(to).substr(1);\n\n  function trim(arr) {\n    var start = 0;\n    for (; start < arr.length; start++) {\n      if (arr[start] !== '') break;\n    }\n\n    var end = arr.length - 1;\n    for (; end >= 0; end--) {\n      if (arr[end] !== '') break;\n    }\n\n    if (start > end) return [];\n    return arr.slice(start, end - start + 1);\n  }\n\n  var fromParts = trim(from.split('/'));\n  var toParts = trim(to.split('/'));\n\n  var length = Math.min(fromParts.length, toParts.length);\n  var samePartsLength = length;\n  for (var i = 0; i < length; i++) {\n    if (fromParts[i] !== toParts[i]) {\n      samePartsLength = i;\n      break;\n    }\n  }\n\n  var outputParts = [];\n  for (var i = samePartsLength; i < fromParts.length; i++) {\n    outputParts.push('..');\n  }\n\n  outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n  return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function(path) {\n  var result = splitPath(path),\n      root = result[0],\n      dir = result[1];\n\n  if (!root && !dir) {\n    // No dirname whatsoever\n    return '.';\n  }\n\n  if (dir) {\n    // It has a dirname, strip trailing slash\n    dir = dir.substr(0, dir.length - 1);\n  }\n\n  return root + dir;\n};\n\n\nexports.basename = function(path, ext) {\n  var f = splitPath(path)[2];\n  // TODO: make this comparison case-insensitive on windows?\n  if (ext && f.substr(-1 * ext.length) === ext) {\n    f = f.substr(0, f.length - ext.length);\n  }\n  return f;\n};\n\n\nexports.extname = function(path) {\n  return splitPath(path)[3];\n};\n\nfunction filter (xs, f) {\n    if (xs.filter) return xs.filter(f);\n    var res = [];\n    for (var i = 0; i < xs.length; i++) {\n        if (f(xs[i], i, xs)) res.push(xs[i]);\n    }\n    return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n    ? function (str, start, len) { return str.substr(start, len) }\n    : function (str, start, len) {\n        if (start < 0) start = str.length + start;\n        return str.substr(start, len);\n    }\n;\n","/*!\n * Platform.js <https://mths.be/platform>\n * Copyright 2014-2016 Benjamin Tan <https://demoneaux.github.io/>\n * Copyright 2011-2013 John-David Dalton <http://allyoucanleet.com/>\n * Available under MIT license <https://mths.be/mit>\n */\n;(function() {\n  'use strict';\n\n  /** Used to determine if values are of the language type `Object`. */\n  var objectTypes = {\n    'function': true,\n    'object': true\n  };\n\n  /** Used as a reference to the global object. */\n  var root = (objectTypes[typeof window] && window) || this;\n\n  /** Backup possible global object. */\n  var oldRoot = root;\n\n  /** Detect free variable `exports`. */\n  var freeExports = objectTypes[typeof exports] && exports;\n\n  /** Detect free variable `module`. */\n  var freeModule = objectTypes[typeof module] && module && !module.nodeType && module;\n\n  /** Detect free variable `global` from Node.js or Browserified code and use it as `root`. */\n  var freeGlobal = freeExports && freeModule && typeof global == 'object' && global;\n  if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal)) {\n    root = freeGlobal;\n  }\n\n  /**\n   * Used as the maximum length of an array-like object.\n   * See the [ES6 spec](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength)\n   * for more details.\n   */\n  var maxSafeInteger = Math.pow(2, 53) - 1;\n\n  /** Regular expression to detect Opera. */\n  var reOpera = /\\bOpera/;\n\n  /** Possible global object. */\n  var thisBinding = this;\n\n  /** Used for native method references. */\n  var objectProto = Object.prototype;\n\n  /** Used to check for own properties of an object. */\n  var hasOwnProperty = objectProto.hasOwnProperty;\n\n  /** Used to resolve the internal `[[Class]]` of values. */\n  var toString = objectProto.toString;\n\n  /*--------------------------------------------------------------------------*/\n\n  /**\n   * Capitalizes a string value.\n   *\n   * @private\n   * @param {string} string The string to capitalize.\n   * @returns {string} The capitalized string.\n   */\n  function capitalize(string) {\n    string = String(string);\n    return string.charAt(0).toUpperCase() + string.slice(1);\n  }\n\n  /**\n   * A utility function to clean up the OS name.\n   *\n   * @private\n   * @param {string} os The OS name to clean up.\n   * @param {string} [pattern] A `RegExp` pattern matching the OS name.\n   * @param {string} [label] A label for the OS.\n   */\n  function cleanupOS(os, pattern, label) {\n    // Platform tokens are defined at:\n    // http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx\n    // http://web.archive.org/web/20081122053950/http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx\n    var data = {\n      '10.0': '10',\n      '6.4':  '10 Technical Preview',\n      '6.3':  '8.1',\n      '6.2':  '8',\n      '6.1':  'Server 2008 R2 / 7',\n      '6.0':  'Server 2008 / Vista',\n      '5.2':  'Server 2003 / XP 64-bit',\n      '5.1':  'XP',\n      '5.01': '2000 SP1',\n      '5.0':  '2000',\n      '4.0':  'NT',\n      '4.90': 'ME'\n    };\n    // Detect Windows version from platform tokens.\n    if (pattern && label && /^Win/i.test(os) && !/^Windows Phone /i.test(os) &&\n        (data = data[/[\\d.]+$/.exec(os)])) {\n      os = 'Windows ' + data;\n    }\n    // Correct character case and cleanup string.\n    os = String(os);\n\n    if (pattern && label) {\n      os = os.replace(RegExp(pattern, 'i'), label);\n    }\n\n    os = format(\n      os.replace(/ ce$/i, ' CE')\n        .replace(/\\bhpw/i, 'web')\n        .replace(/\\bMacintosh\\b/, 'Mac OS')\n        .replace(/_PowerPC\\b/i, ' OS')\n        .replace(/\\b(OS X) [^ \\d]+/i, '$1')\n        .replace(/\\bMac (OS X)\\b/, '$1')\n        .replace(/\\/(\\d)/, ' $1')\n        .replace(/_/g, '.')\n        .replace(/(?: BePC|[ .]*fc[ \\d.]+)$/i, '')\n        .replace(/\\bx86\\.64\\b/gi, 'x86_64')\n        .replace(/\\b(Windows Phone) OS\\b/, '$1')\n        .replace(/\\b(Chrome OS \\w+) [\\d.]+\\b/, '$1')\n        .split(' on ')[0]\n    );\n\n    return os;\n  }\n\n  /**\n   * An iteration utility for arrays and objects.\n   *\n   * @private\n   * @param {Array|Object} object The object to iterate over.\n   * @param {Function} callback The function called per iteration.\n   */\n  function each(object, callback) {\n    var index = -1,\n        length = object ? object.length : 0;\n\n    if (typeof length == 'number' && length > -1 && length <= maxSafeInteger) {\n      while (++index < length) {\n        callback(object[index], index, object);\n      }\n    } else {\n      forOwn(object, callback);\n    }\n  }\n\n  /**\n   * Trim and conditionally capitalize string values.\n   *\n   * @private\n   * @param {string} string The string to format.\n   * @returns {string} The formatted string.\n   */\n  function format(string) {\n    string = trim(string);\n    return /^(?:webOS|i(?:OS|P))/.test(string)\n      ? string\n      : capitalize(string);\n  }\n\n  /**\n   * Iterates over an object's own properties, executing the `callback` for each.\n   *\n   * @private\n   * @param {Object} object The object to iterate over.\n   * @param {Function} callback The function executed per own property.\n   */\n  function forOwn(object, callback) {\n    for (var key in object) {\n      if (hasOwnProperty.call(object, key)) {\n        callback(object[key], key, object);\n      }\n    }\n  }\n\n  /**\n   * Gets the internal `[[Class]]` of a value.\n   *\n   * @private\n   * @param {*} value The value.\n   * @returns {string} The `[[Class]]`.\n   */\n  function getClassOf(value) {\n    return value == null\n      ? capitalize(value)\n      : toString.call(value).slice(8, -1);\n  }\n\n  /**\n   * Host objects can return type values that are different from their actual\n   * data type. The objects we are concerned with usually return non-primitive\n   * types of \"object\", \"function\", or \"unknown\".\n   *\n   * @private\n   * @param {*} object The owner of the property.\n   * @param {string} property The property to check.\n   * @returns {boolean} Returns `true` if the property value is a non-primitive, else `false`.\n   */\n  function isHostType(object, property) {\n    var type = object != null ? typeof object[property] : 'number';\n    return !/^(?:boolean|number|string|undefined)$/.test(type) &&\n      (type == 'object' ? !!object[property] : true);\n  }\n\n  /**\n   * Prepares a string for use in a `RegExp` by making hyphens and spaces optional.\n   *\n   * @private\n   * @param {string} string The string to qualify.\n   * @returns {string} The qualified string.\n   */\n  function qualify(string) {\n    return String(string).replace(/([ -])(?!$)/g, '$1?');\n  }\n\n  /**\n   * A bare-bones `Array#reduce` like utility function.\n   *\n   * @private\n   * @param {Array} array The array to iterate over.\n   * @param {Function} callback The function called per iteration.\n   * @returns {*} The accumulated result.\n   */\n  function reduce(array, callback) {\n    var accumulator = null;\n    each(array, function(value, index) {\n      accumulator = callback(accumulator, value, index, array);\n    });\n    return accumulator;\n  }\n\n  /**\n   * Removes leading and trailing whitespace from a string.\n   *\n   * @private\n   * @param {string} string The string to trim.\n   * @returns {string} The trimmed string.\n   */\n  function trim(string) {\n    return String(string).replace(/^ +| +$/g, '');\n  }\n\n  /*--------------------------------------------------------------------------*/\n\n  /**\n   * Creates a new platform object.\n   *\n   * @memberOf platform\n   * @param {Object|string} [ua=navigator.userAgent] The user agent string or\n   *  context object.\n   * @returns {Object} A platform object.\n   */\n  function parse(ua) {\n\n    /** The environment context object. */\n    var context = root;\n\n    /** Used to flag when a custom context is provided. */\n    var isCustomContext = ua && typeof ua == 'object' && getClassOf(ua) != 'String';\n\n    // Juggle arguments.\n    if (isCustomContext) {\n      context = ua;\n      ua = null;\n    }\n\n    /** Browser navigator object. */\n    var nav = context.navigator || {};\n\n    /** Browser user agent string. */\n    var userAgent = nav.userAgent || '';\n\n    ua || (ua = userAgent);\n\n    /** Used to flag when `thisBinding` is the [ModuleScope]. */\n    var isModuleScope = isCustomContext || thisBinding == oldRoot;\n\n    /** Used to detect if browser is like Chrome. */\n    var likeChrome = isCustomContext\n      ? !!nav.likeChrome\n      : /\\bChrome\\b/.test(ua) && !/internal|\\n/i.test(toString.toString());\n\n    /** Internal `[[Class]]` value shortcuts. */\n    var objectClass = 'Object',\n        airRuntimeClass = isCustomContext ? objectClass : 'ScriptBridgingProxyObject',\n        enviroClass = isCustomContext ? objectClass : 'Environment',\n        javaClass = (isCustomContext && context.java) ? 'JavaPackage' : getClassOf(context.java),\n        phantomClass = isCustomContext ? objectClass : 'RuntimeObject';\n\n    /** Detect Java environments. */\n    var java = /\\bJava/.test(javaClass) && context.java;\n\n    /** Detect Rhino. */\n    var rhino = java && getClassOf(context.environment) == enviroClass;\n\n    /** A character to represent alpha. */\n    var alpha = java ? 'a' : '\\u03b1';\n\n    /** A character to represent beta. */\n    var beta = java ? 'b' : '\\u03b2';\n\n    /** Browser document object. */\n    var doc = context.document || {};\n\n    /**\n     * Detect Opera browser (Presto-based).\n     * http://www.howtocreate.co.uk/operaStuff/operaObject.html\n     * http://dev.opera.com/articles/view/opera-mini-web-content-authoring-guidelines/#operamini\n     */\n    var opera = context.operamini || context.opera;\n\n    /** Opera `[[Class]]`. */\n    var operaClass = reOpera.test(operaClass = (isCustomContext && opera) ? opera['[[Class]]'] : getClassOf(opera))\n      ? operaClass\n      : (opera = null);\n\n    /*------------------------------------------------------------------------*/\n\n    /** Temporary variable used over the script's lifetime. */\n    var data;\n\n    /** The CPU architecture. */\n    var arch = ua;\n\n    /** Platform description array. */\n    var description = [];\n\n    /** Platform alpha/beta indicator. */\n    var prerelease = null;\n\n    /** A flag to indicate that environment features should be used to resolve the platform. */\n    var useFeatures = ua == userAgent;\n\n    /** The browser/environment version. */\n    var version = useFeatures && opera && typeof opera.version == 'function' && opera.version();\n\n    /** A flag to indicate if the OS ends with \"/ Version\" */\n    var isSpecialCasedOS;\n\n    /* Detectable layout engines (order is important). */\n    var layout = getLayout([\n      { 'label': 'EdgeHTML', 'pattern': 'Edge' },\n      'Trident',\n      { 'label': 'WebKit', 'pattern': 'AppleWebKit' },\n      'iCab',\n      'Presto',\n      'NetFront',\n      'Tasman',\n      'KHTML',\n      'Gecko'\n    ]);\n\n    /* Detectable browser names (order is important). */\n    var name = getName([\n      'Adobe AIR',\n      'Arora',\n      'Avant Browser',\n      'Breach',\n      'Camino',\n      'Electron',\n      'Epiphany',\n      'Fennec',\n      'Flock',\n      'Galeon',\n      'GreenBrowser',\n      'iCab',\n      'Iceweasel',\n      'K-Meleon',\n      'Konqueror',\n      'Lunascape',\n      'Maxthon',\n      { 'label': 'Microsoft Edge', 'pattern': 'Edge' },\n      'Midori',\n      'Nook Browser',\n      'PaleMoon',\n      'PhantomJS',\n      'Raven',\n      'Rekonq',\n      'RockMelt',\n      { 'label': 'Samsung Internet', 'pattern': 'SamsungBrowser' },\n      'SeaMonkey',\n      { 'label': 'Silk', 'pattern': '(?:Cloud9|Silk-Accelerated)' },\n      'Sleipnir',\n      'SlimBrowser',\n      { 'label': 'SRWare Iron', 'pattern': 'Iron' },\n      'Sunrise',\n      'Swiftfox',\n      'Waterfox',\n      'WebPositive',\n      'Opera Mini',\n      { 'label': 'Opera Mini', 'pattern': 'OPiOS' },\n      'Opera',\n      { 'label': 'Opera', 'pattern': 'OPR' },\n      'Chrome',\n      { 'label': 'Chrome Mobile', 'pattern': '(?:CriOS|CrMo)' },\n      { 'label': 'Firefox', 'pattern': '(?:Firefox|Minefield)' },\n      { 'label': 'Firefox for iOS', 'pattern': 'FxiOS' },\n      { 'label': 'IE', 'pattern': 'IEMobile' },\n      { 'label': 'IE', 'pattern': 'MSIE' },\n      'Safari'\n    ]);\n\n    /* Detectable products (order is important). */\n    var product = getProduct([\n      { 'label': 'BlackBerry', 'pattern': 'BB10' },\n      'BlackBerry',\n      { 'label': 'Galaxy S', 'pattern': 'GT-I9000' },\n      { 'label': 'Galaxy S2', 'pattern': 'GT-I9100' },\n      { 'label': 'Galaxy S3', 'pattern': 'GT-I9300' },\n      { 'label': 'Galaxy S4', 'pattern': 'GT-I9500' },\n      { 'label': 'Galaxy S5', 'pattern': 'SM-G900' },\n      { 'label': 'Galaxy S6', 'pattern': 'SM-G920' },\n      { 'label': 'Galaxy S6 Edge', 'pattern': 'SM-G925' },\n      { 'label': 'Galaxy S7', 'pattern': 'SM-G930' },\n      { 'label': 'Galaxy S7 Edge', 'pattern': 'SM-G935' },\n      'Google TV',\n      'Lumia',\n      'iPad',\n      'iPod',\n      'iPhone',\n      'Kindle',\n      { 'label': 'Kindle Fire', 'pattern': '(?:Cloud9|Silk-Accelerated)' },\n      'Nexus',\n      'Nook',\n      'PlayBook',\n      'PlayStation Vita',\n      'PlayStation',\n      'TouchPad',\n      'Transformer',\n      { 'label': 'Wii U', 'pattern': 'WiiU' },\n      'Wii',\n      'Xbox One',\n      { 'label': 'Xbox 360', 'pattern': 'Xbox' },\n      'Xoom'\n    ]);\n\n    /* Detectable manufacturers. */\n    var manufacturer = getManufacturer({\n      'Apple': { 'iPad': 1, 'iPhone': 1, 'iPod': 1 },\n      'Archos': {},\n      'Amazon': { 'Kindle': 1, 'Kindle Fire': 1 },\n      'Asus': { 'Transformer': 1 },\n      'Barnes & Noble': { 'Nook': 1 },\n      'BlackBerry': { 'PlayBook': 1 },\n      'Google': { 'Google TV': 1, 'Nexus': 1 },\n      'HP': { 'TouchPad': 1 },\n      'HTC': {},\n      'LG': {},\n      'Microsoft': { 'Xbox': 1, 'Xbox One': 1 },\n      'Motorola': { 'Xoom': 1 },\n      'Nintendo': { 'Wii U': 1,  'Wii': 1 },\n      'Nokia': { 'Lumia': 1 },\n      'Samsung': { 'Galaxy S': 1, 'Galaxy S2': 1, 'Galaxy S3': 1, 'Galaxy S4': 1 },\n      'Sony': { 'PlayStation': 1, 'PlayStation Vita': 1 }\n    });\n\n    /* Detectable operating systems (order is important). */\n    var os = getOS([\n      'Windows Phone',\n      'Android',\n      'CentOS',\n      { 'label': 'Chrome OS', 'pattern': 'CrOS' },\n      'Debian',\n      'Fedora',\n      'FreeBSD',\n      'Gentoo',\n      'Haiku',\n      'Kubuntu',\n      'Linux Mint',\n      'OpenBSD',\n      'Red Hat',\n      'SuSE',\n      'Ubuntu',\n      'Xubuntu',\n      'Cygwin',\n      'Symbian OS',\n      'hpwOS',\n      'webOS ',\n      'webOS',\n      'Tablet OS',\n      'Tizen',\n      'Linux',\n      'Mac OS X',\n      'Macintosh',\n      'Mac',\n      'Windows 98;',\n      'Windows '\n    ]);\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Picks the layout engine from an array of guesses.\n     *\n     * @private\n     * @param {Array} guesses An array of guesses.\n     * @returns {null|string} The detected layout engine.\n     */\n    function getLayout(guesses) {\n      return reduce(guesses, function(result, guess) {\n        return result || RegExp('\\\\b' + (\n          guess.pattern || qualify(guess)\n        ) + '\\\\b', 'i').exec(ua) && (guess.label || guess);\n      });\n    }\n\n    /**\n     * Picks the manufacturer from an array of guesses.\n     *\n     * @private\n     * @param {Array} guesses An object of guesses.\n     * @returns {null|string} The detected manufacturer.\n     */\n    function getManufacturer(guesses) {\n      return reduce(guesses, function(result, value, key) {\n        // Lookup the manufacturer by product or scan the UA for the manufacturer.\n        return result || (\n          value[product] ||\n          value[/^[a-z]+(?: +[a-z]+\\b)*/i.exec(product)] ||\n          RegExp('\\\\b' + qualify(key) + '(?:\\\\b|\\\\w*\\\\d)', 'i').exec(ua)\n        ) && key;\n      });\n    }\n\n    /**\n     * Picks the browser name from an array of guesses.\n     *\n     * @private\n     * @param {Array} guesses An array of guesses.\n     * @returns {null|string} The detected browser name.\n     */\n    function getName(guesses) {\n      return reduce(guesses, function(result, guess) {\n        return result || RegExp('\\\\b' + (\n          guess.pattern || qualify(guess)\n        ) + '\\\\b', 'i').exec(ua) && (guess.label || guess);\n      });\n    }\n\n    /**\n     * Picks the OS name from an array of guesses.\n     *\n     * @private\n     * @param {Array} guesses An array of guesses.\n     * @returns {null|string} The detected OS name.\n     */\n    function getOS(guesses) {\n      return reduce(guesses, function(result, guess) {\n        var pattern = guess.pattern || qualify(guess);\n        if (!result && (result =\n              RegExp('\\\\b' + pattern + '(?:/[\\\\d.]+|[ \\\\w.]*)', 'i').exec(ua)\n            )) {\n          result = cleanupOS(result, pattern, guess.label || guess);\n        }\n        return result;\n      });\n    }\n\n    /**\n     * Picks the product name from an array of guesses.\n     *\n     * @private\n     * @param {Array} guesses An array of guesses.\n     * @returns {null|string} The detected product name.\n     */\n    function getProduct(guesses) {\n      return reduce(guesses, function(result, guess) {\n        var pattern = guess.pattern || qualify(guess);\n        if (!result && (result =\n              RegExp('\\\\b' + pattern + ' *\\\\d+[.\\\\w_]*', 'i').exec(ua) ||\n              RegExp('\\\\b' + pattern + ' *\\\\w+-[\\\\w]*', 'i').exec(ua) ||\n              RegExp('\\\\b' + pattern + '(?:; *(?:[a-z]+[_-])?[a-z]+\\\\d+|[^ ();-]*)', 'i').exec(ua)\n            )) {\n          // Split by forward slash and append product version if needed.\n          if ((result = String((guess.label && !RegExp(pattern, 'i').test(guess.label)) ? guess.label : result).split('/'))[1] && !/[\\d.]+/.test(result[0])) {\n            result[0] += ' ' + result[1];\n          }\n          // Correct character case and cleanup string.\n          guess = guess.label || guess;\n          result = format(result[0]\n            .replace(RegExp(pattern, 'i'), guess)\n            .replace(RegExp('; *(?:' + guess + '[_-])?', 'i'), ' ')\n            .replace(RegExp('(' + guess + ')[-_.]?(\\\\w)', 'i'), '$1 $2'));\n        }\n        return result;\n      });\n    }\n\n    /**\n     * Resolves the version using an array of UA patterns.\n     *\n     * @private\n     * @param {Array} patterns An array of UA patterns.\n     * @returns {null|string} The detected version.\n     */\n    function getVersion(patterns) {\n      return reduce(patterns, function(result, pattern) {\n        return result || (RegExp(pattern +\n          '(?:-[\\\\d.]+/|(?: for [\\\\w-]+)?[ /-])([\\\\d.]+[^ ();/_-]*)', 'i').exec(ua) || 0)[1] || null;\n      });\n    }\n\n    /**\n     * Returns `platform.description` when the platform object is coerced to a string.\n     *\n     * @name toString\n     * @memberOf platform\n     * @returns {string} Returns `platform.description` if available, else an empty string.\n     */\n    function toStringPlatform() {\n      return this.description || '';\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    // Convert layout to an array so we can add extra details.\n    layout && (layout = [layout]);\n\n    // Detect product names that contain their manufacturer's name.\n    if (manufacturer && !product) {\n      product = getProduct([manufacturer]);\n    }\n    // Clean up Google TV.\n    if ((data = /\\bGoogle TV\\b/.exec(product))) {\n      product = data[0];\n    }\n    // Detect simulators.\n    if (/\\bSimulator\\b/i.test(ua)) {\n      product = (product ? product + ' ' : '') + 'Simulator';\n    }\n    // Detect Opera Mini 8+ running in Turbo/Uncompressed mode on iOS.\n    if (name == 'Opera Mini' && /\\bOPiOS\\b/.test(ua)) {\n      description.push('running in Turbo/Uncompressed mode');\n    }\n    // Detect IE Mobile 11.\n    if (name == 'IE' && /\\blike iPhone OS\\b/.test(ua)) {\n      data = parse(ua.replace(/like iPhone OS/, ''));\n      manufacturer = data.manufacturer;\n      product = data.product;\n    }\n    // Detect iOS.\n    else if (/^iP/.test(product)) {\n      name || (name = 'Safari');\n      os = 'iOS' + ((data = / OS ([\\d_]+)/i.exec(ua))\n        ? ' ' + data[1].replace(/_/g, '.')\n        : '');\n    }\n    // Detect Kubuntu.\n    else if (name == 'Konqueror' && !/buntu/i.test(os)) {\n      os = 'Kubuntu';\n    }\n    // Detect Android browsers.\n    else if ((manufacturer && manufacturer != 'Google' &&\n        ((/Chrome/.test(name) && !/\\bMobile Safari\\b/i.test(ua)) || /\\bVita\\b/.test(product))) ||\n        (/\\bAndroid\\b/.test(os) && /^Chrome/.test(name) && /\\bVersion\\//i.test(ua))) {\n      name = 'Android Browser';\n      os = /\\bAndroid\\b/.test(os) ? os : 'Android';\n    }\n    // Detect Silk desktop/accelerated modes.\n    else if (name == 'Silk') {\n      if (!/\\bMobi/i.test(ua)) {\n        os = 'Android';\n        description.unshift('desktop mode');\n      }\n      if (/Accelerated *= *true/i.test(ua)) {\n        description.unshift('accelerated');\n      }\n    }\n    // Detect PaleMoon identifying as Firefox.\n    else if (name == 'PaleMoon' && (data = /\\bFirefox\\/([\\d.]+)\\b/.exec(ua))) {\n      description.push('identifying as Firefox ' + data[1]);\n    }\n    // Detect Firefox OS and products running Firefox.\n    else if (name == 'Firefox' && (data = /\\b(Mobile|Tablet|TV)\\b/i.exec(ua))) {\n      os || (os = 'Firefox OS');\n      product || (product = data[1]);\n    }\n    // Detect false positives for Firefox/Safari.\n    else if (!name || (data = !/\\bMinefield\\b/i.test(ua) && /\\b(?:Firefox|Safari)\\b/.exec(name))) {\n      // Escape the `/` for Firefox 1.\n      if (name && !product && /[\\/,]|^[^(]+?\\)/.test(ua.slice(ua.indexOf(data + '/') + 8))) {\n        // Clear name of false positives.\n        name = null;\n      }\n      // Reassign a generic name.\n      if ((data = product || manufacturer || os) &&\n          (product || manufacturer || /\\b(?:Android|Symbian OS|Tablet OS|webOS)\\b/.test(os))) {\n        name = /[a-z]+(?: Hat)?/i.exec(/\\bAndroid\\b/.test(os) ? os : data) + ' Browser';\n      }\n    }\n    // Add Chrome version to description for Electron.\n    else if (name == 'Electron' && (data = (/\\bChrome\\/([\\d.]+)\\b/.exec(ua) || 0)[1])) {\n      description.push('Chromium ' + data);\n    }\n    // Detect non-Opera (Presto-based) versions (order is important).\n    if (!version) {\n      version = getVersion([\n        '(?:Cloud9|CriOS|CrMo|Edge|FxiOS|IEMobile|Iron|Opera ?Mini|OPiOS|OPR|Raven|SamsungBrowser|Silk(?!/[\\\\d.]+$))',\n        'Version',\n        qualify(name),\n        '(?:Firefox|Minefield|NetFront)'\n      ]);\n    }\n    // Detect stubborn layout engines.\n    if ((data =\n          layout == 'iCab' && parseFloat(version) > 3 && 'WebKit' ||\n          /\\bOpera\\b/.test(name) && (/\\bOPR\\b/.test(ua) ? 'Blink' : 'Presto') ||\n          /\\b(?:Midori|Nook|Safari)\\b/i.test(ua) && !/^(?:Trident|EdgeHTML)$/.test(layout) && 'WebKit' ||\n          !layout && /\\bMSIE\\b/i.test(ua) && (os == 'Mac OS' ? 'Tasman' : 'Trident') ||\n          layout == 'WebKit' && /\\bPlayStation\\b(?! Vita\\b)/i.test(name) && 'NetFront'\n        )) {\n      layout = [data];\n    }\n    // Detect Windows Phone 7 desktop mode.\n    if (name == 'IE' && (data = (/; *(?:XBLWP|ZuneWP)(\\d+)/i.exec(ua) || 0)[1])) {\n      name += ' Mobile';\n      os = 'Windows Phone ' + (/\\+$/.test(data) ? data : data + '.x');\n      description.unshift('desktop mode');\n    }\n    // Detect Windows Phone 8.x desktop mode.\n    else if (/\\bWPDesktop\\b/i.test(ua)) {\n      name = 'IE Mobile';\n      os = 'Windows Phone 8.x';\n      description.unshift('desktop mode');\n      version || (version = (/\\brv:([\\d.]+)/.exec(ua) || 0)[1]);\n    }\n    // Detect IE 11 identifying as other browsers.\n    else if (name != 'IE' && layout == 'Trident' && (data = /\\brv:([\\d.]+)/.exec(ua))) {\n      if (name) {\n        description.push('identifying as ' + name + (version ? ' ' + version : ''));\n      }\n      name = 'IE';\n      version = data[1];\n    }\n    // Leverage environment features.\n    if (useFeatures) {\n      // Detect server-side environments.\n      // Rhino has a global function while others have a global object.\n      if (isHostType(context, 'global')) {\n        if (java) {\n          data = java.lang.System;\n          arch = data.getProperty('os.arch');\n          os = os || data.getProperty('os.name') + ' ' + data.getProperty('os.version');\n        }\n        if (isModuleScope && isHostType(context, 'system') && (data = [context.system])[0]) {\n          os || (os = data[0].os || null);\n          try {\n            data[1] = context.require('ringo/engine').version;\n            version = data[1].join('.');\n            name = 'RingoJS';\n          } catch(e) {\n            if (data[0].global.system == context.system) {\n              name = 'Narwhal';\n            }\n          }\n        }\n        else if (\n          typeof context.process == 'object' && !context.process.browser &&\n          (data = context.process)\n        ) {\n          if (typeof data.versions == 'object') {\n            if (typeof data.versions.electron == 'string') {\n              description.push('Node ' + data.versions.node);\n              name = 'Electron';\n              version = data.versions.electron;\n            } else if (typeof data.versions.nw == 'string') {\n              description.push('Chromium ' + version, 'Node ' + data.versions.node);\n              name = 'NW.js';\n              version = data.versions.nw;\n            }\n          } else {\n            name = 'Node.js';\n            arch = data.arch;\n            os = data.platform;\n            version = /[\\d.]+/.exec(data.version)\n            version = version ? version[0] : 'unknown';\n          }\n        }\n        else if (rhino) {\n          name = 'Rhino';\n        }\n      }\n      // Detect Adobe AIR.\n      else if (getClassOf((data = context.runtime)) == airRuntimeClass) {\n        name = 'Adobe AIR';\n        os = data.flash.system.Capabilities.os;\n      }\n      // Detect PhantomJS.\n      else if (getClassOf((data = context.phantom)) == phantomClass) {\n        name = 'PhantomJS';\n        version = (data = data.version || null) && (data.major + '.' + data.minor + '.' + data.patch);\n      }\n      // Detect IE compatibility modes.\n      else if (typeof doc.documentMode == 'number' && (data = /\\bTrident\\/(\\d+)/i.exec(ua))) {\n        // We're in compatibility mode when the Trident version + 4 doesn't\n        // equal the document mode.\n        version = [version, doc.documentMode];\n        if ((data = +data[1] + 4) != version[1]) {\n          description.push('IE ' + version[1] + ' mode');\n          layout && (layout[1] = '');\n          version[1] = data;\n        }\n        version = name == 'IE' ? String(version[1].toFixed(1)) : version[0];\n      }\n      // Detect IE 11 masking as other browsers.\n      else if (typeof doc.documentMode == 'number' && /^(?:Chrome|Firefox)\\b/.test(name)) {\n        description.push('masking as ' + name + ' ' + version);\n        name = 'IE';\n        version = '11.0';\n        layout = ['Trident'];\n        os = 'Windows';\n      }\n      os = os && format(os);\n    }\n    // Detect prerelease phases.\n    if (version && (data =\n          /(?:[ab]|dp|pre|[ab]\\d+pre)(?:\\d+\\+?)?$/i.exec(version) ||\n          /(?:alpha|beta)(?: ?\\d)?/i.exec(ua + ';' + (useFeatures && nav.appMinorVersion)) ||\n          /\\bMinefield\\b/i.test(ua) && 'a'\n        )) {\n      prerelease = /b/i.test(data) ? 'beta' : 'alpha';\n      version = version.replace(RegExp(data + '\\\\+?$'), '') +\n        (prerelease == 'beta' ? beta : alpha) + (/\\d+\\+?/.exec(data) || '');\n    }\n    // Detect Firefox Mobile.\n    if (name == 'Fennec' || name == 'Firefox' && /\\b(?:Android|Firefox OS)\\b/.test(os)) {\n      name = 'Firefox Mobile';\n    }\n    // Obscure Maxthon's unreliable version.\n    else if (name == 'Maxthon' && version) {\n      version = version.replace(/\\.[\\d.]+/, '.x');\n    }\n    // Detect Xbox 360 and Xbox One.\n    else if (/\\bXbox\\b/i.test(product)) {\n      if (product == 'Xbox 360') {\n        os = null;\n      }\n      if (product == 'Xbox 360' && /\\bIEMobile\\b/.test(ua)) {\n        description.unshift('mobile mode');\n      }\n    }\n    // Add mobile postfix.\n    else if ((/^(?:Chrome|IE|Opera)$/.test(name) || name && !product && !/Browser|Mobi/.test(name)) &&\n        (os == 'Windows CE' || /Mobi/i.test(ua))) {\n      name += ' Mobile';\n    }\n    // Detect IE platform preview.\n    else if (name == 'IE' && useFeatures) {\n      try {\n        if (context.external === null) {\n          description.unshift('platform preview');\n        }\n      } catch(e) {\n        description.unshift('embedded');\n      }\n    }\n    // Detect BlackBerry OS version.\n    // http://docs.blackberry.com/en/developers/deliverables/18169/HTTP_headers_sent_by_BB_Browser_1234911_11.jsp\n    else if ((/\\bBlackBerry\\b/.test(product) || /\\bBB10\\b/.test(ua)) && (data =\n          (RegExp(product.replace(/ +/g, ' *') + '/([.\\\\d]+)', 'i').exec(ua) || 0)[1] ||\n          version\n        )) {\n      data = [data, /BB10/.test(ua)];\n      os = (data[1] ? (product = null, manufacturer = 'BlackBerry') : 'Device Software') + ' ' + data[0];\n      version = null;\n    }\n    // Detect Opera identifying/masking itself as another browser.\n    // http://www.opera.com/support/kb/view/843/\n    else if (this != forOwn && product != 'Wii' && (\n          (useFeatures && opera) ||\n          (/Opera/.test(name) && /\\b(?:MSIE|Firefox)\\b/i.test(ua)) ||\n          (name == 'Firefox' && /\\bOS X (?:\\d+\\.){2,}/.test(os)) ||\n          (name == 'IE' && (\n            (os && !/^Win/.test(os) && version > 5.5) ||\n            /\\bWindows XP\\b/.test(os) && version > 8 ||\n            version == 8 && !/\\bTrident\\b/.test(ua)\n          ))\n        ) && !reOpera.test((data = parse.call(forOwn, ua.replace(reOpera, '') + ';'))) && data.name) {\n      // When \"identifying\", the UA contains both Opera and the other browser's name.\n      data = 'ing as ' + data.name + ((data = data.version) ? ' ' + data : '');\n      if (reOpera.test(name)) {\n        if (/\\bIE\\b/.test(data) && os == 'Mac OS') {\n          os = null;\n        }\n        data = 'identify' + data;\n      }\n      // When \"masking\", the UA contains only the other browser's name.\n      else {\n        data = 'mask' + data;\n        if (operaClass) {\n          name = format(operaClass.replace(/([a-z])([A-Z])/g, '$1 $2'));\n        } else {\n          name = 'Opera';\n        }\n        if (/\\bIE\\b/.test(data)) {\n          os = null;\n        }\n        if (!useFeatures) {\n          version = null;\n        }\n      }\n      layout = ['Presto'];\n      description.push(data);\n    }\n    // Detect WebKit Nightly and approximate Chrome/Safari versions.\n    if ((data = (/\\bAppleWebKit\\/([\\d.]+\\+?)/i.exec(ua) || 0)[1])) {\n      // Correct build number for numeric comparison.\n      // (e.g. \"532.5\" becomes \"532.05\")\n      data = [parseFloat(data.replace(/\\.(\\d)$/, '.0$1')), data];\n      // Nightly builds are postfixed with a \"+\".\n      if (name == 'Safari' && data[1].slice(-1) == '+') {\n        name = 'WebKit Nightly';\n        prerelease = 'alpha';\n        version = data[1].slice(0, -1);\n      }\n      // Clear incorrect browser versions.\n      else if (version == data[1] ||\n          version == (data[2] = (/\\bSafari\\/([\\d.]+\\+?)/i.exec(ua) || 0)[1])) {\n        version = null;\n      }\n      // Use the full Chrome version when available.\n      data[1] = (/\\bChrome\\/([\\d.]+)/i.exec(ua) || 0)[1];\n      // Detect Blink layout engine.\n      if (data[0] == 537.36 && data[2] == 537.36 && parseFloat(data[1]) >= 28 && layout == 'WebKit') {\n        layout = ['Blink'];\n      }\n      // Detect JavaScriptCore.\n      // http://stackoverflow.com/questions/6768474/how-can-i-detect-which-javascript-engine-v8-or-jsc-is-used-at-runtime-in-androi\n      if (!useFeatures || (!likeChrome && !data[1])) {\n        layout && (layout[1] = 'like Safari');\n        data = (data = data[0], data < 400 ? 1 : data < 500 ? 2 : data < 526 ? 3 : data < 533 ? 4 : data < 534 ? '4+' : data < 535 ? 5 : data < 537 ? 6 : data < 538 ? 7 : data < 601 ? 8 : '8');\n      } else {\n        layout && (layout[1] = 'like Chrome');\n        data = data[1] || (data = data[0], data < 530 ? 1 : data < 532 ? 2 : data < 532.05 ? 3 : data < 533 ? 4 : data < 534.03 ? 5 : data < 534.07 ? 6 : data < 534.10 ? 7 : data < 534.13 ? 8 : data < 534.16 ? 9 : data < 534.24 ? 10 : data < 534.30 ? 11 : data < 535.01 ? 12 : data < 535.02 ? '13+' : data < 535.07 ? 15 : data < 535.11 ? 16 : data < 535.19 ? 17 : data < 536.05 ? 18 : data < 536.10 ? 19 : data < 537.01 ? 20 : data < 537.11 ? '21+' : data < 537.13 ? 23 : data < 537.18 ? 24 : data < 537.24 ? 25 : data < 537.36 ? 26 : layout != 'Blink' ? '27' : '28');\n      }\n      // Add the postfix of \".x\" or \"+\" for approximate versions.\n      layout && (layout[1] += ' ' + (data += typeof data == 'number' ? '.x' : /[.+]/.test(data) ? '' : '+'));\n      // Obscure version for some Safari 1-2 releases.\n      if (name == 'Safari' && (!version || parseInt(version) > 45)) {\n        version = data;\n      }\n    }\n    // Detect Opera desktop modes.\n    if (name == 'Opera' &&  (data = /\\bzbov|zvav$/.exec(os))) {\n      name += ' ';\n      description.unshift('desktop mode');\n      if (data == 'zvav') {\n        name += 'Mini';\n        version = null;\n      } else {\n        name += 'Mobile';\n      }\n      os = os.replace(RegExp(' *' + data + '$'), '');\n    }\n    // Detect Chrome desktop mode.\n    else if (name == 'Safari' && /\\bChrome\\b/.exec(layout && layout[1])) {\n      description.unshift('desktop mode');\n      name = 'Chrome Mobile';\n      version = null;\n\n      if (/\\bOS X\\b/.test(os)) {\n        manufacturer = 'Apple';\n        os = 'iOS 4.3+';\n      } else {\n        os = null;\n      }\n    }\n    // Strip incorrect OS versions.\n    if (version && version.indexOf((data = /[\\d.]+$/.exec(os))) == 0 &&\n        ua.indexOf('/' + data + '-') > -1) {\n      os = trim(os.replace(data, ''));\n    }\n    // Add layout engine.\n    if (layout && !/\\b(?:Avant|Nook)\\b/.test(name) && (\n        /Browser|Lunascape|Maxthon/.test(name) ||\n        name != 'Safari' && /^iOS/.test(os) && /\\bSafari\\b/.test(layout[1]) ||\n        /^(?:Adobe|Arora|Breach|Midori|Opera|Phantom|Rekonq|Rock|Samsung Internet|Sleipnir|Web)/.test(name) && layout[1])) {\n      // Don't add layout details to description if they are falsey.\n      (data = layout[layout.length - 1]) && description.push(data);\n    }\n    // Combine contextual information.\n    if (description.length) {\n      description = ['(' + description.join('; ') + ')'];\n    }\n    // Append manufacturer to description.\n    if (manufacturer && product && product.indexOf(manufacturer) < 0) {\n      description.push('on ' + manufacturer);\n    }\n    // Append product to description.\n    if (product) {\n      description.push((/^on /.test(description[description.length - 1]) ? '' : 'on ') + product);\n    }\n    // Parse the OS into an object.\n    if (os) {\n      data = / ([\\d.+]+)$/.exec(os);\n      isSpecialCasedOS = data && os.charAt(os.length - data[0].length - 1) == '/';\n      os = {\n        'architecture': 32,\n        'family': (data && !isSpecialCasedOS) ? os.replace(data[0], '') : os,\n        'version': data ? data[1] : null,\n        'toString': function() {\n          var version = this.version;\n          return this.family + ((version && !isSpecialCasedOS) ? ' ' + version : '') + (this.architecture == 64 ? ' 64-bit' : '');\n        }\n      };\n    }\n    // Add browser/OS architecture.\n    if ((data = /\\b(?:AMD|IA|Win|WOW|x86_|x)64\\b/i.exec(arch)) && !/\\bi686\\b/i.test(arch)) {\n      if (os) {\n        os.architecture = 64;\n        os.family = os.family.replace(RegExp(' *' + data), '');\n      }\n      if (\n          name && (/\\bWOW64\\b/i.test(ua) ||\n          (useFeatures && /\\w(?:86|32)$/.test(nav.cpuClass || nav.platform) && !/\\bWin64; x64\\b/i.test(ua)))\n      ) {\n        description.unshift('32-bit');\n      }\n    }\n    // Chrome 39 and above on OS X is always 64-bit.\n    else if (\n        os && /^OS X/.test(os.family) &&\n        name == 'Chrome' && parseFloat(version) >= 39\n    ) {\n      os.architecture = 64;\n    }\n\n    ua || (ua = null);\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * The platform object.\n     *\n     * @name platform\n     * @type Object\n     */\n    var platform = {};\n\n    /**\n     * The platform description.\n     *\n     * @memberOf platform\n     * @type string|null\n     */\n    platform.description = ua;\n\n    /**\n     * The name of the browser's layout engine.\n     *\n     * The list of common layout engines include:\n     * \"Blink\", \"EdgeHTML\", \"Gecko\", \"Trident\" and \"WebKit\"\n     *\n     * @memberOf platform\n     * @type string|null\n     */\n    platform.layout = layout && layout[0];\n\n    /**\n     * The name of the product's manufacturer.\n     *\n     * The list of manufacturers include:\n     * \"Apple\", \"Archos\", \"Amazon\", \"Asus\", \"Barnes & Noble\", \"BlackBerry\",\n     * \"Google\", \"HP\", \"HTC\", \"LG\", \"Microsoft\", \"Motorola\", \"Nintendo\",\n     * \"Nokia\", \"Samsung\" and \"Sony\"\n     *\n     * @memberOf platform\n     * @type string|null\n     */\n    platform.manufacturer = manufacturer;\n\n    /**\n     * The name of the browser/environment.\n     *\n     * The list of common browser names include:\n     * \"Chrome\", \"Electron\", \"Firefox\", \"Firefox for iOS\", \"IE\",\n     * \"Microsoft Edge\", \"PhantomJS\", \"Safari\", \"SeaMonkey\", \"Silk\",\n     * \"Opera Mini\" and \"Opera\"\n     *\n     * Mobile versions of some browsers have \"Mobile\" appended to their name:\n     * eg. \"Chrome Mobile\", \"Firefox Mobile\", \"IE Mobile\" and \"Opera Mobile\"\n     *\n     * @memberOf platform\n     * @type string|null\n     */\n    platform.name = name;\n\n    /**\n     * The alpha/beta release indicator.\n     *\n     * @memberOf platform\n     * @type string|null\n     */\n    platform.prerelease = prerelease;\n\n    /**\n     * The name of the product hosting the browser.\n     *\n     * The list of common products include:\n     *\n     * \"BlackBerry\", \"Galaxy S4\", \"Lumia\", \"iPad\", \"iPod\", \"iPhone\", \"Kindle\",\n     * \"Kindle Fire\", \"Nexus\", \"Nook\", \"PlayBook\", \"TouchPad\" and \"Transformer\"\n     *\n     * @memberOf platform\n     * @type string|null\n     */\n    platform.product = product;\n\n    /**\n     * The browser's user agent string.\n     *\n     * @memberOf platform\n     * @type string|null\n     */\n    platform.ua = ua;\n\n    /**\n     * The browser/environment version.\n     *\n     * @memberOf platform\n     * @type string|null\n     */\n    platform.version = name && version;\n\n    /**\n     * The name of the operating system.\n     *\n     * @memberOf platform\n     * @type Object\n     */\n    platform.os = os || {\n\n      /**\n       * The CPU architecture the OS is built for.\n       *\n       * @memberOf platform.os\n       * @type number|null\n       */\n      'architecture': null,\n\n      /**\n       * The family of the OS.\n       *\n       * Common values include:\n       * \"Windows\", \"Windows Server 2008 R2 / 7\", \"Windows Server 2008 / Vista\",\n       * \"Windows XP\", \"OS X\", \"Ubuntu\", \"Debian\", \"Fedora\", \"Red Hat\", \"SuSE\",\n       * \"Android\", \"iOS\" and \"Windows Phone\"\n       *\n       * @memberOf platform.os\n       * @type string|null\n       */\n      'family': null,\n\n      /**\n       * The version of the OS.\n       *\n       * @memberOf platform.os\n       * @type string|null\n       */\n      'version': null,\n\n      /**\n       * Returns the OS string.\n       *\n       * @memberOf platform.os\n       * @returns {string} The OS string.\n       */\n      'toString': function() { return 'null'; }\n    };\n\n    platform.parse = parse;\n    platform.toString = toStringPlatform;\n\n    if (platform.version) {\n      description.unshift(version);\n    }\n    if (platform.name) {\n      description.unshift(name);\n    }\n    if (os && name && !(os == String(os).split(' ')[0] && (os == name.split(' ')[0] || product))) {\n      description.push(product ? '(' + os + ')' : 'on ' + os);\n    }\n    if (description.length) {\n      platform.description = description.join(' ');\n    }\n    return platform;\n  }\n\n  /*--------------------------------------------------------------------------*/\n\n  // Export platform.\n  var platform = parse();\n\n  // Some AMD build optimizers, like r.js, check for condition patterns like the following:\n  if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n    // Expose platform on the global object to prevent errors when platform is\n    // loaded by a script tag in the presence of an AMD loader.\n    // See http://requirejs.org/docs/errors.html#mismatch for more details.\n    root.platform = platform;\n\n    // Define as an anonymous module so platform can be aliased through path mapping.\n    define(function() {\n      return platform;\n    });\n  }\n  // Check for `exports` after `define` in case a build optimizer adds an `exports` object.\n  else if (freeExports && freeModule) {\n    // Export for CommonJS support.\n    forOwn(platform, function(value, key) {\n      freeExports[key] = value;\n    });\n  }\n  else {\n    // Export to the global object.\n    root.platform = platform;\n  }\n}.call(this));\n","/**\n* pretty-data - nodejs plugin to pretty-print or minify data in XML, JSON and CSS formats.\n*  \n* Version - 0.40.0\n* Copyright (c) 2012 Vadim Kiryukhin\n* vkiryukhin @ gmail.com\n* http://www.eslinstructor.net/pretty-data/\n* \n* Dual licensed under the MIT and GPL licenses:\n*   http://www.opensource.org/licenses/mit-license.php\n*   http://www.gnu.org/licenses/gpl.html\n*\n*\tpd.xml(data ) - pretty print XML;\n*\tpd.json(data) - pretty print JSON;\n*\tpd.css(data ) - pretty print CSS;\n*\tpd.sql(data)  - pretty print SQL;\n*\n*\tpd.xmlmin(data [, preserveComments] ) - minify XML; \n*\tpd.jsonmin(data)                      - minify JSON; \n*\tpd.cssmin(data [, preserveComments] ) - minify CSS; \n*\tpd.sqlmin(data)                       - minify SQL; \n*\n* PARAMETERS:\n*\n*\t@data  \t\t\t- String; XML, JSON, CSS or SQL text to beautify;\n* \t@preserveComments\t- Bool (optional, used in minxml and mincss only); \n*\t\t\t\t  Set this flag to true to prevent removing comments from @text; \n*\t@Return \t\t- String;\n*\t\n* USAGE:\n*\t\n*\tvar pd  = require('pretty-data').pd;\n*\n*\tvar xml_pp   = pd.xml(xml_text);\n*\tvar xml_min  = pd.xmlmin(xml_text [,true]);\n*\tvar json_pp  = pd.json(json_text);\n*\tvar json_min = pd.jsonmin(json_text);\n*\tvar css_pp   = pd.css(css_text);\n*\tvar css_min  = pd.cssmin(css_text [, true]);\n*\tvar sql_pp   = pd.sql(sql_text);\n*\tvar sql_min  = pd.sqlmin(sql_text);\n*\n* TEST:\n*\tcomp-name:pretty-data$ node ./test/test_xml\n*\tcomp-name:pretty-data$ node ./test/test_json\n*\tcomp-name:pretty-data$ node ./test/test_css\n*\tcomp-name:pretty-data$ node ./test/test_sql\n*/\n\n\nfunction pp() {\n\tthis.shift = ['\\n']; // array of shifts\n\tthis.step = '  ', // 2 spaces\n\t\tmaxdeep = 100, // nesting level\n\t\tix = 0;\n\n\t// initialize array with shifts //\n\tfor(ix=0;ix<maxdeep;ix++){\n\t\tthis.shift.push(this.shift[ix]+this.step); \n\t}\n\n};\t\n\t\n// ----------------------- XML section ----------------------------------------------------\n\npp.prototype.xml = function(text) {\n\n\tvar ar = text.replace(/>\\s{0,}</g,\"><\")\n\t\t\t\t .replace(/</g,\"~::~<\")\n\t\t\t\t .replace(/xmlns\\:/g,\"~::~xmlns:\")\n\t\t\t\t .replace(/xmlns\\=/g,\"~::~xmlns=\")\n\t\t\t\t .split('~::~'),\n\t\tlen = ar.length,\n\t\tinComment = false,\n\t\tdeep = 0,\n\t\tstr = '',\n\t\tix = 0;\n\n\t\tfor(ix=0;ix<len;ix++) {\n\t\t\t// start comment or <![CDATA[...]]> or <!DOCTYPE //\n\t\t\tif(ar[ix].search(/<!/) > -1) { \n\t\t\t\tstr += this.shift[deep]+ar[ix];\n\t\t\t\tinComment = true; \n\t\t\t\t// end comment  or <![CDATA[...]]> //\n\t\t\t\tif(ar[ix].search(/-->/) > -1 || ar[ix].search(/\\]>/) > -1 || ar[ix].search(/!DOCTYPE/) > -1 ) { \n\t\t\t\t\tinComment = false; \n\t\t\t\t}\n\t\t\t} else \n\t\t\t// end comment  or <![CDATA[...]]> //\n\t\t\tif(ar[ix].search(/-->/) > -1 || ar[ix].search(/\\]>/) > -1) { \n\t\t\t\tstr += ar[ix];\n\t\t\t\tinComment = false; \n\t\t\t} else \n\t\t\t// <elm></elm> //\n\t\t\tif( /^<\\w/.exec(ar[ix-1]) && /^<\\/\\w/.exec(ar[ix]) &&\n\t\t\t\t/^<[\\w:\\-\\.\\,]+/.exec(ar[ix-1]) == /^<\\/[\\w:\\-\\.\\,]+/.exec(ar[ix])[0].replace('/','')) { \n\t\t\t\tstr += ar[ix];\n\t\t\t\tif(!inComment) deep--;\n\t\t\t} else\n\t\t\t // <elm> //\n\t\t\tif(ar[ix].search(/<\\w/) > -1 && ar[ix].search(/<\\//) == -1 && ar[ix].search(/\\/>/) == -1 ) {\n\t\t\t\tstr = !inComment ? str += this.shift[deep++]+ar[ix] : str += ar[ix];\n\t\t\t} else \n\t\t\t // <elm>...</elm> //\n\t\t\tif(ar[ix].search(/<\\w/) > -1 && ar[ix].search(/<\\//) > -1) {\n\t\t\t\tstr = !inComment ? str += this.shift[deep]+ar[ix] : str += ar[ix];\n\t\t\t} else \n\t\t\t// </elm> //\n\t\t\tif(ar[ix].search(/<\\//) > -1) { \n\t\t\t\tstr = !inComment ? str += this.shift[--deep]+ar[ix] : str += ar[ix];\n\t\t\t} else \n\t\t\t// <elm/> //\n\t\t\tif(ar[ix].search(/\\/>/) > -1 ) { \n\t\t\t\tstr = !inComment ? str += this.shift[deep]+ar[ix] : str += ar[ix];\n\t\t\t} else \n\t\t\t// <? xml ... ?> //\n\t\t\tif(ar[ix].search(/<\\?/) > -1) { \n\t\t\t\tstr += this.shift[deep]+ar[ix];\n\t\t\t} else \n\t\t\t// xmlns //\n\t\t\tif( ar[ix].search(/xmlns\\:/) > -1  || ar[ix].search(/xmlns\\=/) > -1) { \n\t\t\t\tstr += this.shift[deep]+ar[ix];\n\t\t\t} \n\t\t\t\n\t\t\telse {\n\t\t\t\tstr += ar[ix];\n\t\t\t}\n\t\t}\n\t\t\n\treturn  (str[0] == '\\n') ? str.slice(1) : str;\n}\n\n// ----------------------- JSON section ----------------------------------------------------\n\npp.prototype.json = function(text) {\n\n\tif ( typeof text === \"string\" ) {\n\t\treturn JSON.stringify(JSON.parse(text), null, this.step);\n\t}\n\tif ( typeof text === \"object\" ) {\n\t\treturn JSON.stringify(text, null, this.step);\n\t}\n\treturn null;\n}\n\n// ----------------------- CSS section ----------------------------------------------------\n\npp.prototype.css = function(text) {\n\n\tvar ar = text.replace(/\\s{1,}/g,' ')\n\t\t\t\t.replace(/\\{/g,\"{~::~\")\n\t\t\t\t.replace(/\\}/g,\"~::~}~::~\")\n\t\t\t\t.replace(/\\;/g,\";~::~\")\n\t\t\t\t.replace(/\\/\\*/g,\"~::~/*\")\n\t\t\t\t.replace(/\\*\\//g,\"*/~::~\")\n\t\t\t\t.replace(/~::~\\s{0,}~::~/g,\"~::~\")\n\t\t\t\t.split('~::~'),\n\t\tlen = ar.length,\n\t\tdeep = 0,\n\t\tstr = '',\n\t\tix = 0;\n\t\t\n\t\tfor(ix=0;ix<len;ix++) {\n\n\t\t\tif( /\\{/.exec(ar[ix]))  { \n\t\t\t\tstr += this.shift[deep++]+ar[ix];\n\t\t\t} else \n\t\t\tif( /\\}/.exec(ar[ix]))  { \n\t\t\t\tstr += this.shift[--deep]+ar[ix];\n\t\t\t} else\n\t\t\tif( /\\*\\\\/.exec(ar[ix]))  { \n\t\t\t\tstr += this.shift[deep]+ar[ix];\n\t\t\t}\n\t\t\telse {\n\t\t\t\tstr += this.shift[deep]+ar[ix];\n\t\t\t}\n\t\t}\n\t\treturn str.replace(/^\\n{1,}/,'');\n}\n\n// ----------------------- SQL section ----------------------------------------------------\n\nfunction isSubquery(str, parenthesisLevel) {\n  return  parenthesisLevel - (str.replace(/\\(/g,'').length - str.replace(/\\)/g,'').length )\n}\n\nfunction split_sql(str, tab) {\n\n    return str.replace(/\\s{1,}/g,\" \")\n\n        .replace(/ AND /ig,\"~::~\"+tab+tab+\"AND \")\n        .replace(/ BETWEEN /ig,\"~::~\"+tab+\"BETWEEN \")\n        .replace(/ CASE /ig,\"~::~\"+tab+\"CASE \")\n        .replace(/ ELSE /ig,\"~::~\"+tab+\"ELSE \")\n        .replace(/ END /ig,\"~::~\"+tab+\"END \")\n        .replace(/ FROM /ig,\"~::~FROM \")\n        .replace(/ GROUP\\s{1,}BY/ig,\"~::~GROUP BY \")\n        .replace(/ HAVING /ig,\"~::~HAVING \")\n        //.replace(/ IN /ig,\"~::~\"+tab+\"IN \")\n        .replace(/ IN /ig,\" IN \")\n        .replace(/ JOIN /ig,\"~::~JOIN \")\n        .replace(/ CROSS~::~{1,}JOIN /ig,\"~::~CROSS JOIN \")\n        .replace(/ INNER~::~{1,}JOIN /ig,\"~::~INNER JOIN \")\n        .replace(/ LEFT~::~{1,}JOIN /ig,\"~::~LEFT JOIN \")\n        .replace(/ RIGHT~::~{1,}JOIN /ig,\"~::~RIGHT JOIN \")\n        .replace(/ ON /ig,\"~::~\"+tab+\"ON \")\n        .replace(/ OR /ig,\"~::~\"+tab+tab+\"OR \")\n        .replace(/ ORDER\\s{1,}BY/ig,\"~::~ORDER BY \")\n        .replace(/ OVER /ig,\"~::~\"+tab+\"OVER \")\n        .replace(/\\(\\s{0,}SELECT /ig,\"~::~(SELECT \")\n        .replace(/\\)\\s{0,}SELECT /ig,\")~::~SELECT \")\n        .replace(/ THEN /ig,\" THEN~::~\"+tab+\"\")\n        .replace(/ UNION /ig,\"~::~UNION~::~\")\n        .replace(/ USING /ig,\"~::~USING \")\n        .replace(/ WHEN /ig,\"~::~\"+tab+\"WHEN \")\n        .replace(/ WHERE /ig,\"~::~WHERE \")\n        .replace(/ WITH /ig,\"~::~WITH \")\n        //.replace(/\\,\\s{0,}\\(/ig,\",~::~( \")\n        //.replace(/\\,/ig,\",~::~\"+tab+tab+\"\")\n        .replace(/ ALL /ig,\" ALL \")\n        .replace(/ AS /ig,\" AS \")\n        .replace(/ ASC /ig,\" ASC \") \n        .replace(/ DESC /ig,\" DESC \") \n        .replace(/ DISTINCT /ig,\" DISTINCT \")\n        .replace(/ EXISTS /ig,\" EXISTS \")\n        .replace(/ NOT /ig,\" NOT \")\n        .replace(/ NULL /ig,\" NULL \")\n        .replace(/ LIKE /ig,\" LIKE \")\n        .replace(/\\s{0,}SELECT /ig,\"SELECT \")\n        .replace(/~::~{1,}/g,\"~::~\")\n        .split('~::~');\n}\n\npp.prototype.sql = function(text) {\n\n    var ar_by_quote = text.replace(/\\s{1,}/g,\" \")\n                        .replace(/\\'/ig,\"~::~\\'\")\n                        .split('~::~'),\n        len = ar_by_quote.length,\n        ar = [],\n        deep = 0,\n        tab = this.step,//+this.step,\n        inComment = true,\n        inQuote = false,\n        parenthesisLevel = 0,\n        str = '',\n        ix = 0;\n\n    for(ix=0;ix<len;ix++) {\n\n        if(ix%2) {\n            ar = ar.concat(ar_by_quote[ix]);\n        } else {\n            ar = ar.concat(split_sql(ar_by_quote[ix], tab) );\n        }\n    }\n\n    len = ar.length;\n    for(ix=0;ix<len;ix++) {\n\n        parenthesisLevel = isSubquery(ar[ix], parenthesisLevel);\n\n        if( /\\s{0,}\\s{0,}SELECT\\s{0,}/.exec(ar[ix]))  { \n            ar[ix] = ar[ix].replace(/\\,/g,\",\\n\"+tab+tab+\"\")\n        } \n\n        if( /\\s{0,}\\(\\s{0,}SELECT\\s{0,}/.exec(ar[ix]))  { \n            deep++;\n            str += this.shift[deep]+ar[ix];\n        } else \n        if( /\\'/.exec(ar[ix]) )  { \n            if(parenthesisLevel<1 && deep) {\n                deep--;\n            }\n            str += ar[ix];\n        }\n        else  { \n            str += this.shift[deep]+ar[ix];\n            if(parenthesisLevel<1 && deep) {\n                deep--;\n            }\n        } \n    }\n\n    str = str.replace(/^\\n{1,}/,'').replace(/\\n{1,}/g,\"\\n\");\n    return str;\n}\n\n// ----------------------- min section ----------------------------------------------------\n\npp.prototype.xmlmin = function(text, preserveComments) {\n\n\tvar str = preserveComments ? text\n\t\t\t\t   : text.replace(/\\<![ \\r\\n\\t]*(--([^\\-]|[\\r\\n]|-[^\\-])*--[ \\r\\n\\t]*)\\>/g,\"\");\n\treturn  str.replace(/>\\s{0,}</g,\"><\"); \n}\n\npp.prototype.jsonmin = function(text) {\n\t\t\t\t\t\t\t\t  \n    return  text.replace(/\\s{0,}\\{\\s{0,}/g,\"{\")\n                .replace(/\\s{0,}\\[$/g,\"[\")\n                .replace(/\\[\\s{0,}/g,\"[\")\n                .replace(/:\\s{0,}\\[/g,':[')\n                .replace(/\\s{0,}\\}\\s{0,}/g,\"}\")\n                .replace(/\\s{0,}\\]\\s{0,}/g,\"]\")\n                .replace(/\\\"\\s{0,}\\,/g,'\",')\n                .replace(/\\,\\s{0,}\\\"/g,',\"')\n                .replace(/\\\"\\s{0,}:/g,'\":')\n                .replace(/:\\s{0,}\\\"/g,':\"')\n                .replace(/:\\s{0,}\\[/g,':[')\n                .replace(/\\,\\s{0,}\\[/g,',[')\n                .replace(/\\,\\s{2,}/g,', ')\n                .replace(/\\]\\s{0,},\\s{0,}\\[/g,'],[');   \n}\n\npp.prototype.cssmin = function(text, preserveComments) {\n\t\n\tvar str = preserveComments ? text\n\t\t\t\t   : text.replace(/\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*+\\//g,\"\") ;\n\treturn str.replace(/\\s{1,}/g,' ')\n\t\t\t  .replace(/\\{\\s{1,}/g,\"{\")\n\t\t\t  .replace(/\\}\\s{1,}/g,\"}\")\n\t\t\t  .replace(/\\;\\s{1,}/g,\";\")\n\t\t\t  .replace(/\\/\\*\\s{1,}/g,\"/*\")\n\t\t\t  .replace(/\\*\\/\\s{1,}/g,\"*/\");\n}\t\n\npp.prototype.sqlmin = function(text) {\n    return text.replace(/\\s{1,}/g,\" \").replace(/\\s{1,}\\(/,\"(\").replace(/\\s{1,}\\)/,\")\");\n}\n\n// --------------------------------------------------------------------------------------------\n\nexports.pd= new pp;\t\n\n\n\n\n\n\n\n\n\n\n","/**\n * Copyright (c) 2013-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\n'use strict';\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    invariant(\n      false,\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim\n  };\n\n  ReactPropTypes.checkPropTypes = emptyFunction;\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-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\nif (\"production\" !== 'production') {\n  var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n    Symbol.for &&\n    Symbol.for('react.element')) ||\n    0xeac7;\n\n  var isValidElement = function(object) {\n    return typeof object === 'object' &&\n      object !== null &&\n      object.$$typeof === REACT_ELEMENT_TYPE;\n  };\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(isValidElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-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\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","'use strict';\n\n/* Expose. */\nmodule.exports = getPropertyInformation;\n\n/* Constants. */\nvar USE_ATTRIBUTE = 0x1;\nvar USE_PROPERTY = 0x2;\nvar BOOLEAN_VALUE = 0x8;\nvar NUMERIC_VALUE = 0x10;\nvar POSITIVE_NUMERIC_VALUE = 0x20 | 0x10;\nvar OVERLOADED_BOOLEAN_VALUE = 0x40;\nvar SPACE_SEPARATED = 0x80;\nvar COMMA_SEPARATED = 0x100;\n\n/* Map of properties. Names are camel-cased properties. */\nvar propertyConfig = {\n  /* Standard Properties. */\n  abbr: null,\n  accept: COMMA_SEPARATED,\n  acceptCharset: SPACE_SEPARATED,\n  accessKey: SPACE_SEPARATED,\n  action: null,\n  allowFullScreen: USE_ATTRIBUTE | BOOLEAN_VALUE,\n  allowTransparency: USE_ATTRIBUTE,\n  alt: null,\n  /* https://html.spec.whatwg.org/#attr-link-as */\n  as: null,\n  async: BOOLEAN_VALUE,\n  autoComplete: SPACE_SEPARATED,\n  autoFocus: BOOLEAN_VALUE,\n  autoPlay: BOOLEAN_VALUE,\n  capture: USE_ATTRIBUTE | BOOLEAN_VALUE,\n  cellPadding: null,\n  cellSpacing: null,\n  challenge: USE_ATTRIBUTE,\n  charSet: USE_ATTRIBUTE,\n  checked: USE_PROPERTY | BOOLEAN_VALUE,\n  cite: null,\n  /* To set className on SVG elements, it's necessary to\n   * use .setAttribute; this works on HTML elements too\n   * in all browsers except IE8. */\n  className: USE_ATTRIBUTE | SPACE_SEPARATED,\n  cols: USE_ATTRIBUTE | POSITIVE_NUMERIC_VALUE,\n  colSpan: null,\n  command: null,\n  content: null,\n  contentEditable: null,\n  contextMenu: USE_ATTRIBUTE,\n  controls: USE_PROPERTY | BOOLEAN_VALUE,\n  /* https://github.com/WICG/controls-list/blob/gh-pages/explainer.md */\n  controlsList: SPACE_SEPARATED,\n  coords: NUMERIC_VALUE | COMMA_SEPARATED,\n  crossOrigin: null,\n  /* For `<object />` acts as `src`. */\n  data: null,\n  dateTime: USE_ATTRIBUTE,\n  default: BOOLEAN_VALUE,\n  defer: BOOLEAN_VALUE,\n  dir: null,\n  dirName: null,\n  disabled: USE_ATTRIBUTE | BOOLEAN_VALUE,\n  download: OVERLOADED_BOOLEAN_VALUE,\n  draggable: null,\n  dropzone: SPACE_SEPARATED,\n  encType: null,\n  form: USE_ATTRIBUTE,\n  formAction: USE_ATTRIBUTE,\n  formEncType: USE_ATTRIBUTE,\n  formMethod: USE_ATTRIBUTE,\n  formNoValidate: BOOLEAN_VALUE,\n  formTarget: USE_ATTRIBUTE,\n  frameBorder: USE_ATTRIBUTE,\n  headers: SPACE_SEPARATED,\n  height: USE_ATTRIBUTE | POSITIVE_NUMERIC_VALUE,\n  hidden: USE_ATTRIBUTE | BOOLEAN_VALUE,\n  high: NUMERIC_VALUE,\n  href: null,\n  hrefLang: null,\n  htmlFor: SPACE_SEPARATED,\n  httpEquiv: SPACE_SEPARATED,\n  id: USE_PROPERTY,\n  inputMode: USE_ATTRIBUTE,\n  /* Web Components */\n  is: USE_ATTRIBUTE,\n  isMap: BOOLEAN_VALUE,\n  keyParams: USE_ATTRIBUTE,\n  keyType: USE_ATTRIBUTE,\n  kind: null,\n  label: null,\n  lang: null,\n  list: USE_ATTRIBUTE,\n  loop: USE_PROPERTY | BOOLEAN_VALUE,\n  low: NUMERIC_VALUE,\n  manifest: USE_ATTRIBUTE,\n  marginHeight: NUMERIC_VALUE,\n  marginWidth: NUMERIC_VALUE,\n  max: null,\n  maxLength: USE_ATTRIBUTE | POSITIVE_NUMERIC_VALUE,\n  media: USE_ATTRIBUTE,\n  mediaGroup: null,\n  menu: null,\n  method: null,\n  min: null,\n  minLength: USE_ATTRIBUTE | POSITIVE_NUMERIC_VALUE,\n  multiple: USE_PROPERTY | BOOLEAN_VALUE,\n  muted: USE_PROPERTY | BOOLEAN_VALUE,\n  name: null,\n  nonce: null,\n  noValidate: BOOLEAN_VALUE,\n  open: BOOLEAN_VALUE,\n  optimum: NUMERIC_VALUE,\n  pattern: null,\n  ping: SPACE_SEPARATED,\n  placeholder: null,\n  /* https://html.spec.whatwg.org/#attr-video-playsinline */\n  playsInline: BOOLEAN_VALUE,\n  poster: null,\n  preload: null,\n  /* https://html.spec.whatwg.org/#dom-head-profile */\n  profile: null,\n  radioGroup: null,\n  readOnly: USE_PROPERTY | BOOLEAN_VALUE,\n  /* https://html.spec.whatwg.org/#attr-link-referrerpolicy */\n  referrerPolicy: null,\n  /* `rel` is `relList` in DOM */\n  rel: SPACE_SEPARATED | USE_ATTRIBUTE,\n  required: BOOLEAN_VALUE,\n  reversed: BOOLEAN_VALUE,\n  role: USE_ATTRIBUTE,\n  rows: USE_ATTRIBUTE | POSITIVE_NUMERIC_VALUE,\n  rowSpan: POSITIVE_NUMERIC_VALUE,\n  sandbox: SPACE_SEPARATED,\n  scope: null,\n  scoped: BOOLEAN_VALUE,\n  scrolling: null,\n  seamless: USE_ATTRIBUTE | BOOLEAN_VALUE,\n  selected: USE_PROPERTY | BOOLEAN_VALUE,\n  shape: null,\n  size: USE_ATTRIBUTE | POSITIVE_NUMERIC_VALUE,\n  sizes: USE_ATTRIBUTE | SPACE_SEPARATED,\n  /* https://html.spec.whatwg.org/#attr-slot */\n  slot: null,\n  sortable: BOOLEAN_VALUE,\n  sorted: SPACE_SEPARATED,\n  span: POSITIVE_NUMERIC_VALUE,\n  spellCheck: null,\n  src: null,\n  srcDoc: USE_PROPERTY,\n  srcLang: null,\n  srcSet: USE_ATTRIBUTE | COMMA_SEPARATED,\n  start: NUMERIC_VALUE,\n  step: null,\n  style: null,\n  summary: null,\n  tabIndex: NUMERIC_VALUE,\n  target: null,\n  title: null,\n  translate: null,\n  type: null,\n  typeMustMatch: BOOLEAN_VALUE,\n  useMap: null,\n  value: USE_PROPERTY,\n  volume: POSITIVE_NUMERIC_VALUE,\n  width: USE_ATTRIBUTE | NUMERIC_VALUE,\n  wmode: USE_ATTRIBUTE,\n  wrap: null,\n\n  /* Non-standard Properties. */\n\n  /* `autoCapitalize` and `autoCorrect` are supported in\n   * Mobile Safari for keyboard hints. */\n  autoCapitalize: null,\n  autoCorrect: null,\n  /* `autoSave` allows WebKit/Blink to persist values of\n   * input fields on page reloads */\n  autoSave: null,\n  /* `itemProp`, `itemScope`, `itemType` are for Microdata\n   * support. See http://schema.org/docs/gs.html */\n  itemProp: USE_ATTRIBUTE | SPACE_SEPARATED,\n  itemScope: USE_ATTRIBUTE | BOOLEAN_VALUE,\n  itemType: USE_ATTRIBUTE | SPACE_SEPARATED,\n  /* `itemID` and `itemRef` are for Microdata support as well\n   * but only specified in the the WHATWG spec document.\n   * See https://html.spec.whatwg.org/multipage/\n   * microdata.html#microdata-dom-api */\n  itemID: USE_ATTRIBUTE,\n  itemRef: USE_ATTRIBUTE | SPACE_SEPARATED,\n  /* `property` is supported for OpenGraph in meta tags. */\n  property: null,\n  /* `results` show looking glass icon and recent searches\n   * on input search fields in WebKit/Blink */\n  results: null,\n  /* IE-only attribute that specifies security\n   * restrictions on an iframe as an alternative to the\n   * sandbox attribute on IE < 10 */\n  security: USE_ATTRIBUTE,\n  /* IE-only attribute that controls focus behavior */\n  unselectable: USE_ATTRIBUTE,\n\n  /* Ancient. */\n  xmlLang: USE_ATTRIBUTE,\n  xmlBase: USE_ATTRIBUTE\n};\n\n/* Map of properties to attributes.\n * Names are lower-case properties.\n * Values are HTML attributes. */\nvar propertyToAttributeMapping = {\n  xmlbase: 'xml:base',\n  xmllang: 'xml:lang',\n  classname: 'class',\n  htmlfor: 'for',\n  httpequiv: 'http-equiv',\n  acceptcharset: 'accept-charset'\n};\n\n/* Expand config. */\nvar information = {};\nvar property;\nvar name;\nvar config;\n\ngetPropertyInformation.all = information;\n\nfor (property in propertyConfig) {\n  name = lower(property);\n  name = propertyToAttributeMapping[name] || name;\n  config = propertyConfig[property];\n\n  information[name] = {\n    name: name,\n    propertyName: property,\n    mustUseAttribute: check(config, USE_ATTRIBUTE),\n    mustUseProperty: check(config, USE_PROPERTY),\n    boolean: check(config, BOOLEAN_VALUE),\n    overloadedBoolean: check(config, OVERLOADED_BOOLEAN_VALUE),\n    numeric: check(config, NUMERIC_VALUE),\n    positiveNumeric: check(config, POSITIVE_NUMERIC_VALUE),\n    commaSeparated: check(config, COMMA_SEPARATED),\n    spaceSeparated: check(config, SPACE_SEPARATED)\n  };\n}\n\n/* Get a config for a property. */\nfunction getPropertyInformation(propertyName) {\n  var insensitive = lower(propertyName);\n\n  return information[propertyToAttributeMapping[insensitive] || insensitive];\n}\n\n/* Check a mask. */\nfunction check(value, bitmask) {\n  return (value & bitmask) === bitmask;\n}\n\n/* Lower-case a string. */\nfunction lower(value) {\n  return value.toLowerCase();\n}\n","'use strict';\nvar strictUriEncode = require('strict-uri-encode');\nvar objectAssign = require('object-assign');\n\nfunction encoderForArrayFormat(opts) {\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, index) {\n\t\t\t\treturn value === null ? [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tindex,\n\t\t\t\t\t']'\n\t\t\t\t].join('') : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tencode(index, opts),\n\t\t\t\t\t']=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[]=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(opts) {\n\tvar result;\n\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t} else if (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction encode(value, opts) {\n\tif (opts.encode) {\n\t\treturn opts.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t} else if (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input)).sort(function (a, b) {\n\t\t\treturn Number(a) - Number(b);\n\t\t}).map(function (key) {\n\t\t\treturn input[key];\n\t\t});\n\t}\n\n\treturn input;\n}\n\nexports.extract = function (str) {\n\treturn str.split('?')[1] || '';\n};\n\nexports.parse = function (str, opts) {\n\topts = objectAssign({arrayFormat: 'none'}, opts);\n\n\tvar formatter = parserForArrayFormat(opts);\n\n\t// Create an object with no prototype\n\t// https://github.com/sindresorhus/query-string/issues/47\n\tvar ret = Object.create(null);\n\n\tif (typeof str !== 'string') {\n\t\treturn ret;\n\t}\n\n\tstr = str.trim().replace(/^(\\?|#|&)/, '');\n\n\tif (!str) {\n\t\treturn ret;\n\t}\n\n\tstr.split('&').forEach(function (param) {\n\t\tvar parts = param.replace(/\\+/g, ' ').split('=');\n\t\t// Firefox (pre 40) decodes `%3D` to `=`\n\t\t// https://github.com/sindresorhus/query-string/pull/37\n\t\tvar key = parts.shift();\n\t\tvar val = parts.length > 0 ? parts.join('=') : undefined;\n\n\t\t// missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tval = val === undefined ? null : decodeURIComponent(val);\n\n\t\tformatter(decodeURIComponent(key), val, ret);\n\t});\n\n\treturn Object.keys(ret).sort().reduce(function (result, key) {\n\t\tvar val = ret[key];\n\t\tif (Boolean(val) && typeof val === 'object' && !Array.isArray(val)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(val);\n\t\t} else {\n\t\t\tresult[key] = val;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n};\n\nexports.stringify = function (obj, opts) {\n\tvar defaults = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none'\n\t};\n\n\topts = objectAssign(defaults, opts);\n\n\tvar formatter = encoderForArrayFormat(opts);\n\n\treturn obj ? Object.keys(obj).sort().map(function (key) {\n\t\tvar val = obj[key];\n\n\t\tif (val === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (val === null) {\n\t\t\treturn encode(key, opts);\n\t\t}\n\n\t\tif (Array.isArray(val)) {\n\t\t\tvar result = [];\n\n\t\t\tval.slice().forEach(function (val2) {\n\t\t\t\tif (val2 === undefined) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresult.push(formatter(key, val2, result.length));\n\t\t\t});\n\n\t\t\treturn result.join('&');\n\t\t}\n\n\t\treturn encode(key, opts) + '=' + encode(val, opts);\n\t}).filter(function (x) {\n\t\treturn x.length > 0;\n\t}).join('&') : '';\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\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n  sep = sep || '&';\n  eq = eq || '=';\n  var obj = {};\n\n  if (typeof qs !== 'string' || qs.length === 0) {\n    return obj;\n  }\n\n  var regexp = /\\+/g;\n  qs = qs.split(sep);\n\n  var maxKeys = 1000;\n  if (options && typeof options.maxKeys === 'number') {\n    maxKeys = options.maxKeys;\n  }\n\n  var len = qs.length;\n  // maxKeys <= 0 means that we should not limit keys count\n  if (maxKeys > 0 && len > maxKeys) {\n    len = maxKeys;\n  }\n\n  for (var i = 0; i < len; ++i) {\n    var x = qs[i].replace(regexp, '%20'),\n        idx = x.indexOf(eq),\n        kstr, vstr, k, v;\n\n    if (idx >= 0) {\n      kstr = x.substr(0, idx);\n      vstr = x.substr(idx + 1);\n    } else {\n      kstr = x;\n      vstr = '';\n    }\n\n    k = decodeURIComponent(kstr);\n    v = decodeURIComponent(vstr);\n\n    if (!hasOwnProperty(obj, k)) {\n      obj[k] = v;\n    } else if (isArray(obj[k])) {\n      obj[k].push(v);\n    } else {\n      obj[k] = [obj[k], v];\n    }\n  }\n\n  return obj;\n};\n\nvar isArray = Array.isArray || function (xs) {\n  return Object.prototype.toString.call(xs) === '[object Array]';\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\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n  switch (typeof v) {\n    case 'string':\n      return v;\n\n    case 'boolean':\n      return v ? 'true' : 'false';\n\n    case 'number':\n      return isFinite(v) ? v : '';\n\n    default:\n      return '';\n  }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n  sep = sep || '&';\n  eq = eq || '=';\n  if (obj === null) {\n    obj = undefined;\n  }\n\n  if (typeof obj === 'object') {\n    return map(objectKeys(obj), function(k) {\n      var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n      if (isArray(obj[k])) {\n        return map(obj[k], function(v) {\n          return ks + encodeURIComponent(stringifyPrimitive(v));\n        }).join(sep);\n      } else {\n        return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n      }\n    }).join(sep);\n\n  }\n\n  if (!name) return '';\n  return encodeURIComponent(stringifyPrimitive(name)) + eq +\n         encodeURIComponent(stringifyPrimitive(obj));\n};\n\nvar isArray = Array.isArray || function (xs) {\n  return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nfunction map (xs, f) {\n  if (xs.map) return xs.map(f);\n  var res = [];\n  for (var i = 0; i < xs.length; i++) {\n    res.push(f(xs[i], i));\n  }\n  return res;\n}\n\nvar objectKeys = Object.keys || function (obj) {\n  var res = [];\n  for (var key in obj) {\n    if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);\n  }\n  return res;\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","exports.__esModule = true;\nexports.Helmet = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactSideEffect = require(\"react-side-effect\");\n\nvar _reactSideEffect2 = _interopRequireDefault(_reactSideEffect);\n\nvar _deepEqual = require(\"deep-equal\");\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _HelmetUtils = require(\"./HelmetUtils.js\");\n\nvar _HelmetConstants = require(\"./HelmetConstants.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Helmet = function Helmet(Component) {\n    var _class, _temp;\n\n    return _temp = _class = function (_React$Component) {\n        _inherits(HelmetWrapper, _React$Component);\n\n        function HelmetWrapper() {\n            _classCallCheck(this, HelmetWrapper);\n\n            return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n        }\n\n        HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n            return !(0, _deepEqual2.default)(this.props, nextProps);\n        };\n\n        HelmetWrapper.prototype.mapNestedChildrenToProps = function mapNestedChildrenToProps(child, nestedChildren) {\n            if (!nestedChildren) {\n                return null;\n            }\n\n            switch (child.type) {\n                case _HelmetConstants.TAG_NAMES.SCRIPT:\n                case _HelmetConstants.TAG_NAMES.NOSCRIPT:\n                    return {\n                        innerHTML: nestedChildren\n                    };\n\n                case _HelmetConstants.TAG_NAMES.STYLE:\n                    return {\n                        cssText: nestedChildren\n                    };\n            }\n\n            throw new Error(\"<\" + child.type + \" /> elements are self-closing and can not contain children. Refer to our API for more information.\");\n        };\n\n        HelmetWrapper.prototype.flattenArrayTypeChildren = function flattenArrayTypeChildren(_ref) {\n            var _extends2;\n\n            var child = _ref.child,\n                arrayTypeChildren = _ref.arrayTypeChildren,\n                newChildProps = _ref.newChildProps,\n                nestedChildren = _ref.nestedChildren;\n\n            return _extends({}, arrayTypeChildren, (_extends2 = {}, _extends2[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _extends2));\n        };\n\n        HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {\n            var _extends3, _extends4;\n\n            var child = _ref2.child,\n                newProps = _ref2.newProps,\n                newChildProps = _ref2.newChildProps,\n                nestedChildren = _ref2.nestedChildren;\n\n            switch (child.type) {\n                case _HelmetConstants.TAG_NAMES.TITLE:\n                    return _extends({}, newProps, (_extends3 = {}, _extends3[child.type] = nestedChildren, _extends3.titleAttributes = _extends({}, newChildProps), _extends3));\n\n                case _HelmetConstants.TAG_NAMES.BODY:\n                    return _extends({}, newProps, {\n                        bodyAttributes: _extends({}, newChildProps)\n                    });\n\n                case _HelmetConstants.TAG_NAMES.HTML:\n                    return _extends({}, newProps, {\n                        htmlAttributes: _extends({}, newChildProps)\n                    });\n            }\n\n            return _extends({}, newProps, (_extends4 = {}, _extends4[child.type] = _extends({}, newChildProps), _extends4));\n        };\n\n        HelmetWrapper.prototype.mapArrayTypeChildrenToProps = function mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n            var newFlattenedProps = _extends({}, newProps);\n\n            Object.keys(arrayTypeChildren).forEach(function (arrayChildName) {\n                var _extends5;\n\n                newFlattenedProps = _extends({}, newFlattenedProps, (_extends5 = {}, _extends5[arrayChildName] = arrayTypeChildren[arrayChildName], _extends5));\n            });\n\n            return newFlattenedProps;\n        };\n\n        HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {\n            if (process.env.NODE_ENV !== \"production\") {\n                if (!_HelmetConstants.VALID_TAG_NAMES.some(function (name) {\n                    return child.type === name;\n                })) {\n                    if (typeof child.type === \"function\") {\n                        return (0, _HelmetUtils.warn)(\"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.\");\n                    }\n\n                    return (0, _HelmetUtils.warn)(\"Only elements types \" + _HelmetConstants.VALID_TAG_NAMES.join(\", \") + \" are allowed. Helmet does not support rendering <\" + child.type + \"> elements. Refer to our API for more information.\");\n                }\n\n                if (nestedChildren && typeof nestedChildren !== \"string\" && (!Array.isArray(nestedChildren) || nestedChildren.some(function (nestedChild) {\n                    return typeof nestedChild !== \"string\";\n                }))) {\n                    throw new Error(\"Helmet expects a string as a child of <\" + child.type + \">. Did you forget to wrap your children in braces? ( <\" + child.type + \">{``}</\" + child.type + \"> ) Refer to our API for more information.\");\n                }\n            }\n\n            return true;\n        };\n\n        HelmetWrapper.prototype.mapChildrenToProps = function mapChildrenToProps(children, newProps) {\n            var _this2 = this;\n\n            var arrayTypeChildren = {};\n\n            _react2.default.Children.forEach(children, function (child) {\n                if (!child || !child.props) {\n                    return;\n                }\n\n                var _child$props = child.props,\n                    nestedChildren = _child$props.children,\n                    childProps = _objectWithoutProperties(_child$props, [\"children\"]);\n\n                var newChildProps = (0, _HelmetUtils.convertReactPropstoHtmlAttributes)(childProps);\n\n                _this2.warnOnInvalidChildren(child, nestedChildren);\n\n                switch (child.type) {\n                    case _HelmetConstants.TAG_NAMES.LINK:\n                    case _HelmetConstants.TAG_NAMES.META:\n                    case _HelmetConstants.TAG_NAMES.NOSCRIPT:\n                    case _HelmetConstants.TAG_NAMES.SCRIPT:\n                    case _HelmetConstants.TAG_NAMES.STYLE:\n                        arrayTypeChildren = _this2.flattenArrayTypeChildren({\n                            child: child,\n                            arrayTypeChildren: arrayTypeChildren,\n                            newChildProps: newChildProps,\n                            nestedChildren: nestedChildren\n                        });\n                        break;\n\n                    default:\n                        newProps = _this2.mapObjectTypeChildren({\n                            child: child,\n                            newProps: newProps,\n                            newChildProps: newChildProps,\n                            nestedChildren: nestedChildren\n                        });\n                        break;\n                }\n            });\n\n            newProps = this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n            return newProps;\n        };\n\n        HelmetWrapper.prototype.render = function render() {\n            var _props = this.props,\n                children = _props.children,\n                props = _objectWithoutProperties(_props, [\"children\"]);\n\n            var newProps = _extends({}, props);\n\n            if (children) {\n                newProps = this.mapChildrenToProps(children, newProps);\n            }\n\n            return _react2.default.createElement(Component, newProps);\n        };\n\n        _createClass(HelmetWrapper, null, [{\n            key: \"canUseDOM\",\n\n\n            // Component.peek comes from react-side-effect:\n            // For testing, you may use a static peek() method available on the returned component.\n            // It lets you get the current state without resetting the mounted instance stack.\n            // Don’t use it for anything other than testing.\n\n            /**\n            * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n            * @param {Object} bodyAttributes: {\"className\": \"root\"}\n            * @param {String} defaultTitle: \"Default Title\"\n            * @param {Boolean} defer: true\n            * @param {Boolean} encodeSpecialCharacters: true\n            * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n            * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n            * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n            * @param {Array} noscript: [{\"innerHTML\": \"<img src='http://mysite.com/js/test.js'\"}]\n            * @param {Function} onChangeClientState: \"(newState) => console.log(newState)\"\n            * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n            * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n            * @param {String} title: \"Title\"\n            * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n            * @param {String} titleTemplate: \"MySite.com - %s\"\n            */\n            set: function set(canUseDOM) {\n                Component.canUseDOM = canUseDOM;\n            }\n        }]);\n\n        return HelmetWrapper;\n    }(_react2.default.Component), _class.propTypes = {\n        base: _propTypes2.default.object,\n        bodyAttributes: _propTypes2.default.object,\n        children: _propTypes2.default.oneOfType([_propTypes2.default.arrayOf(_propTypes2.default.node), _propTypes2.default.node]),\n        defaultTitle: _propTypes2.default.string,\n        defer: _propTypes2.default.bool,\n        encodeSpecialCharacters: _propTypes2.default.bool,\n        htmlAttributes: _propTypes2.default.object,\n        link: _propTypes2.default.arrayOf(_propTypes2.default.object),\n        meta: _propTypes2.default.arrayOf(_propTypes2.default.object),\n        noscript: _propTypes2.default.arrayOf(_propTypes2.default.object),\n        onChangeClientState: _propTypes2.default.func,\n        script: _propTypes2.default.arrayOf(_propTypes2.default.object),\n        style: _propTypes2.default.arrayOf(_propTypes2.default.object),\n        title: _propTypes2.default.string,\n        titleAttributes: _propTypes2.default.object,\n        titleTemplate: _propTypes2.default.string\n    }, _class.defaultProps = {\n        defer: true,\n        encodeSpecialCharacters: true\n    }, _class.peek = Component.peek, _class.rewind = function () {\n        var mappedState = Component.rewind();\n        if (!mappedState) {\n            // provide fallback if mappedState is undefined\n            mappedState = (0, _HelmetUtils.mapStateOnServer)({\n                baseTag: [],\n                bodyAttributes: {},\n                encodeSpecialCharacters: true,\n                htmlAttributes: {},\n                linkTags: [],\n                metaTags: [],\n                noscriptTags: [],\n                scriptTags: [],\n                styleTags: [],\n                title: \"\",\n                titleAttributes: {}\n            });\n        }\n\n        return mappedState;\n    }, _temp;\n};\n\nvar NullComponent = function NullComponent() {\n    return null;\n};\n\nvar HelmetSideEffects = (0, _reactSideEffect2.default)(_HelmetUtils.reducePropsToState, _HelmetUtils.handleClientStateChange, _HelmetUtils.mapStateOnServer)(NullComponent);\n\nvar HelmetExport = Helmet(HelmetSideEffects);\nHelmetExport.renderStatic = HelmetExport.rewind;\n\nexports.Helmet = HelmetExport;\nexports.default = HelmetExport;","exports.__esModule = true;\nvar ATTRIBUTE_NAMES = exports.ATTRIBUTE_NAMES = {\n    BODY: \"bodyAttributes\",\n    HTML: \"htmlAttributes\",\n    TITLE: \"titleAttributes\"\n};\n\nvar TAG_NAMES = exports.TAG_NAMES = {\n    BASE: \"base\",\n    BODY: \"body\",\n    HEAD: \"head\",\n    HTML: \"html\",\n    LINK: \"link\",\n    META: \"meta\",\n    NOSCRIPT: \"noscript\",\n    SCRIPT: \"script\",\n    STYLE: \"style\",\n    TITLE: \"title\"\n};\n\nvar VALID_TAG_NAMES = exports.VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(function (name) {\n    return TAG_NAMES[name];\n});\n\nvar TAG_PROPERTIES = exports.TAG_PROPERTIES = {\n    CHARSET: \"charset\",\n    CSS_TEXT: \"cssText\",\n    HREF: \"href\",\n    HTTPEQUIV: \"http-equiv\",\n    INNER_HTML: \"innerHTML\",\n    ITEM_PROP: \"itemprop\",\n    NAME: \"name\",\n    PROPERTY: \"property\",\n    REL: \"rel\",\n    SRC: \"src\"\n};\n\nvar REACT_TAG_MAP = exports.REACT_TAG_MAP = {\n    accesskey: \"accessKey\",\n    charset: \"charSet\",\n    class: \"className\",\n    contenteditable: \"contentEditable\",\n    contextmenu: \"contextMenu\",\n    \"http-equiv\": \"httpEquiv\",\n    itemprop: \"itemProp\",\n    tabindex: \"tabIndex\"\n};\n\nvar HELMET_PROPS = exports.HELMET_PROPS = {\n    DEFAULT_TITLE: \"defaultTitle\",\n    DEFER: \"defer\",\n    ENCODE_SPECIAL_CHARACTERS: \"encodeSpecialCharacters\",\n    ON_CHANGE_CLIENT_STATE: \"onChangeClientState\",\n    TITLE_TEMPLATE: \"titleTemplate\"\n};\n\nvar HTML_TAG_MAP = exports.HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce(function (obj, key) {\n    obj[REACT_TAG_MAP[key]] = key;\n    return obj;\n}, {});\n\nvar SELF_CLOSING_TAGS = exports.SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\n\nvar HELMET_ATTRIBUTE = exports.HELMET_ATTRIBUTE = \"data-react-helmet\";","exports.__esModule = true;\nexports.warn = exports.requestAnimationFrame = exports.reducePropsToState = exports.mapStateOnServer = exports.handleClientStateChange = exports.convertReactPropstoHtmlAttributes = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _objectAssign = require(\"object-assign\");\n\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\n\nvar _HelmetConstants = require(\"./HelmetConstants.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar encodeSpecialCharacters = function encodeSpecialCharacters(str) {\n    var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n    if (encode === false) {\n        return String(str);\n    }\n\n    return String(str).replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\").replace(/\"/g, \"&quot;\").replace(/'/g, \"&#x27;\");\n};\n\nvar getTitleFromPropsList = function getTitleFromPropsList(propsList) {\n    var innermostTitle = getInnermostProperty(propsList, _HelmetConstants.TAG_NAMES.TITLE);\n    var innermostTemplate = getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.TITLE_TEMPLATE);\n\n    if (innermostTemplate && innermostTitle) {\n        // use function arg to avoid need to escape $ characters\n        return innermostTemplate.replace(/%s/g, function () {\n            return innermostTitle;\n        });\n    }\n\n    var innermostDefaultTitle = getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.DEFAULT_TITLE);\n\n    return innermostTitle || innermostDefaultTitle || undefined;\n};\n\nvar getOnChangeClientState = function getOnChangeClientState(propsList) {\n    return getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || function () {};\n};\n\nvar getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {\n    return propsList.filter(function (props) {\n        return typeof props[tagType] !== \"undefined\";\n    }).map(function (props) {\n        return props[tagType];\n    }).reduce(function (tagAttrs, current) {\n        return _extends({}, tagAttrs, current);\n    }, {});\n};\n\nvar getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {\n    return propsList.filter(function (props) {\n        return typeof props[_HelmetConstants.TAG_NAMES.BASE] !== \"undefined\";\n    }).map(function (props) {\n        return props[_HelmetConstants.TAG_NAMES.BASE];\n    }).reverse().reduce(function (innermostBaseTag, tag) {\n        if (!innermostBaseTag.length) {\n            var keys = Object.keys(tag);\n\n            for (var i = 0; i < keys.length; i++) {\n                var attributeKey = keys[i];\n                var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n                if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n                    return innermostBaseTag.concat(tag);\n                }\n            }\n        }\n\n        return innermostBaseTag;\n    }, []);\n};\n\nvar getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {\n    // Calculate list of tags, giving priority innermost component (end of the propslist)\n    var approvedSeenTags = {};\n\n    return propsList.filter(function (props) {\n        if (Array.isArray(props[tagName])) {\n            return true;\n        }\n        if (typeof props[tagName] !== \"undefined\") {\n            warn(\"Helmet: \" + tagName + \" should be of type \\\"Array\\\". Instead found type \\\"\" + _typeof(props[tagName]) + \"\\\"\");\n        }\n        return false;\n    }).map(function (props) {\n        return props[tagName];\n    }).reverse().reduce(function (approvedTags, instanceTags) {\n        var instanceSeenTags = {};\n\n        instanceTags.filter(function (tag) {\n            var primaryAttributeKey = void 0;\n            var keys = Object.keys(tag);\n            for (var i = 0; i < keys.length; i++) {\n                var attributeKey = keys[i];\n                var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n                // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n                if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === _HelmetConstants.TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === _HelmetConstants.TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n                    primaryAttributeKey = lowerCaseAttributeKey;\n                }\n                // Special case for innerHTML which doesn't work lowercased\n                if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === _HelmetConstants.TAG_PROPERTIES.INNER_HTML || attributeKey === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT || attributeKey === _HelmetConstants.TAG_PROPERTIES.ITEM_PROP)) {\n                    primaryAttributeKey = attributeKey;\n                }\n            }\n\n            if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n                return false;\n            }\n\n            var value = tag[primaryAttributeKey].toLowerCase();\n\n            if (!approvedSeenTags[primaryAttributeKey]) {\n                approvedSeenTags[primaryAttributeKey] = {};\n            }\n\n            if (!instanceSeenTags[primaryAttributeKey]) {\n                instanceSeenTags[primaryAttributeKey] = {};\n            }\n\n            if (!approvedSeenTags[primaryAttributeKey][value]) {\n                instanceSeenTags[primaryAttributeKey][value] = true;\n                return true;\n            }\n\n            return false;\n        }).reverse().forEach(function (tag) {\n            return approvedTags.push(tag);\n        });\n\n        // Update seen tags with tags from this instance\n        var keys = Object.keys(instanceSeenTags);\n        for (var i = 0; i < keys.length; i++) {\n            var attributeKey = keys[i];\n            var tagUnion = (0, _objectAssign2.default)({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);\n\n            approvedSeenTags[attributeKey] = tagUnion;\n        }\n\n        return approvedTags;\n    }, []).reverse();\n};\n\nvar getInnermostProperty = function getInnermostProperty(propsList, property) {\n    for (var i = propsList.length - 1; i >= 0; i--) {\n        var props = propsList[i];\n\n        if (props.hasOwnProperty(property)) {\n            return props[property];\n        }\n    }\n\n    return null;\n};\n\nvar reducePropsToState = function reducePropsToState(propsList) {\n    return {\n        baseTag: getBaseTagFromPropsList([_HelmetConstants.TAG_PROPERTIES.HREF], propsList),\n        bodyAttributes: getAttributesFromPropsList(_HelmetConstants.ATTRIBUTE_NAMES.BODY, propsList),\n        defer: getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.DEFER),\n        encode: getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n        htmlAttributes: getAttributesFromPropsList(_HelmetConstants.ATTRIBUTE_NAMES.HTML, propsList),\n        linkTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.LINK, [_HelmetConstants.TAG_PROPERTIES.REL, _HelmetConstants.TAG_PROPERTIES.HREF], propsList),\n        metaTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.META, [_HelmetConstants.TAG_PROPERTIES.NAME, _HelmetConstants.TAG_PROPERTIES.CHARSET, _HelmetConstants.TAG_PROPERTIES.HTTPEQUIV, _HelmetConstants.TAG_PROPERTIES.PROPERTY, _HelmetConstants.TAG_PROPERTIES.ITEM_PROP], propsList),\n        noscriptTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.NOSCRIPT, [_HelmetConstants.TAG_PROPERTIES.INNER_HTML], propsList),\n        onChangeClientState: getOnChangeClientState(propsList),\n        scriptTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.SCRIPT, [_HelmetConstants.TAG_PROPERTIES.SRC, _HelmetConstants.TAG_PROPERTIES.INNER_HTML], propsList),\n        styleTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.STYLE, [_HelmetConstants.TAG_PROPERTIES.CSS_TEXT], propsList),\n        title: getTitleFromPropsList(propsList),\n        titleAttributes: getAttributesFromPropsList(_HelmetConstants.ATTRIBUTE_NAMES.TITLE, propsList)\n    };\n};\n\nvar rafPolyfill = function () {\n    var clock = Date.now();\n\n    return function (callback) {\n        var currentTime = Date.now();\n\n        if (currentTime - clock > 16) {\n            clock = currentTime;\n            callback(currentTime);\n        } else {\n            setTimeout(function () {\n                rafPolyfill(callback);\n            }, 0);\n        }\n    };\n}();\n\nvar cafPolyfill = function cafPolyfill(id) {\n    return clearTimeout(id);\n};\n\nvar requestAnimationFrame = typeof window !== \"undefined\" ? window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || rafPolyfill : global.requestAnimationFrame || rafPolyfill;\n\nvar cancelAnimationFrame = typeof window !== \"undefined\" ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || cafPolyfill : global.cancelAnimationFrame || cafPolyfill;\n\nvar warn = function warn(msg) {\n    return console && typeof console.warn === \"function\" && console.warn(msg);\n};\n\nvar _helmetCallback = null;\n\nvar handleClientStateChange = function handleClientStateChange(newState) {\n    if (_helmetCallback) {\n        cancelAnimationFrame(_helmetCallback);\n    }\n\n    if (newState.defer) {\n        _helmetCallback = requestAnimationFrame(function () {\n            commitTagChanges(newState, function () {\n                _helmetCallback = null;\n            });\n        });\n    } else {\n        commitTagChanges(newState);\n        _helmetCallback = null;\n    }\n};\n\nvar commitTagChanges = function commitTagChanges(newState, cb) {\n    var baseTag = newState.baseTag,\n        bodyAttributes = newState.bodyAttributes,\n        htmlAttributes = newState.htmlAttributes,\n        linkTags = newState.linkTags,\n        metaTags = newState.metaTags,\n        noscriptTags = newState.noscriptTags,\n        onChangeClientState = newState.onChangeClientState,\n        scriptTags = newState.scriptTags,\n        styleTags = newState.styleTags,\n        title = newState.title,\n        titleAttributes = newState.titleAttributes;\n\n    updateAttributes(_HelmetConstants.TAG_NAMES.BODY, bodyAttributes);\n    updateAttributes(_HelmetConstants.TAG_NAMES.HTML, htmlAttributes);\n\n    updateTitle(title, titleAttributes);\n\n    var tagUpdates = {\n        baseTag: updateTags(_HelmetConstants.TAG_NAMES.BASE, baseTag),\n        linkTags: updateTags(_HelmetConstants.TAG_NAMES.LINK, linkTags),\n        metaTags: updateTags(_HelmetConstants.TAG_NAMES.META, metaTags),\n        noscriptTags: updateTags(_HelmetConstants.TAG_NAMES.NOSCRIPT, noscriptTags),\n        scriptTags: updateTags(_HelmetConstants.TAG_NAMES.SCRIPT, scriptTags),\n        styleTags: updateTags(_HelmetConstants.TAG_NAMES.STYLE, styleTags)\n    };\n\n    var addedTags = {};\n    var removedTags = {};\n\n    Object.keys(tagUpdates).forEach(function (tagType) {\n        var _tagUpdates$tagType = tagUpdates[tagType],\n            newTags = _tagUpdates$tagType.newTags,\n            oldTags = _tagUpdates$tagType.oldTags;\n\n\n        if (newTags.length) {\n            addedTags[tagType] = newTags;\n        }\n        if (oldTags.length) {\n            removedTags[tagType] = tagUpdates[tagType].oldTags;\n        }\n    });\n\n    cb && cb();\n\n    onChangeClientState(newState, addedTags, removedTags);\n};\n\nvar flattenArray = function flattenArray(possibleArray) {\n    return Array.isArray(possibleArray) ? possibleArray.join(\"\") : possibleArray;\n};\n\nvar updateTitle = function updateTitle(title, attributes) {\n    if (typeof title !== \"undefined\" && document.title !== title) {\n        document.title = flattenArray(title);\n    }\n\n    updateAttributes(_HelmetConstants.TAG_NAMES.TITLE, attributes);\n};\n\nvar updateAttributes = function updateAttributes(tagName, attributes) {\n    var elementTag = document.getElementsByTagName(tagName)[0];\n\n    if (!elementTag) {\n        return;\n    }\n\n    var helmetAttributeString = elementTag.getAttribute(_HelmetConstants.HELMET_ATTRIBUTE);\n    var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(\",\") : [];\n    var attributesToRemove = [].concat(helmetAttributes);\n    var attributeKeys = Object.keys(attributes);\n\n    for (var i = 0; i < attributeKeys.length; i++) {\n        var attribute = attributeKeys[i];\n        var value = attributes[attribute] || \"\";\n\n        if (elementTag.getAttribute(attribute) !== value) {\n            elementTag.setAttribute(attribute, value);\n        }\n\n        if (helmetAttributes.indexOf(attribute) === -1) {\n            helmetAttributes.push(attribute);\n        }\n\n        var indexToSave = attributesToRemove.indexOf(attribute);\n        if (indexToSave !== -1) {\n            attributesToRemove.splice(indexToSave, 1);\n        }\n    }\n\n    for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {\n        elementTag.removeAttribute(attributesToRemove[_i]);\n    }\n\n    if (helmetAttributes.length === attributesToRemove.length) {\n        elementTag.removeAttribute(_HelmetConstants.HELMET_ATTRIBUTE);\n    } else if (elementTag.getAttribute(_HelmetConstants.HELMET_ATTRIBUTE) !== attributeKeys.join(\",\")) {\n        elementTag.setAttribute(_HelmetConstants.HELMET_ATTRIBUTE, attributeKeys.join(\",\"));\n    }\n};\n\nvar updateTags = function updateTags(type, tags) {\n    var headElement = document.head || document.querySelector(_HelmetConstants.TAG_NAMES.HEAD);\n    var tagNodes = headElement.querySelectorAll(type + \"[\" + _HelmetConstants.HELMET_ATTRIBUTE + \"]\");\n    var oldTags = Array.prototype.slice.call(tagNodes);\n    var newTags = [];\n    var indexToDelete = void 0;\n\n    if (tags && tags.length) {\n        tags.forEach(function (tag) {\n            var newElement = document.createElement(type);\n\n            for (var attribute in tag) {\n                if (tag.hasOwnProperty(attribute)) {\n                    if (attribute === _HelmetConstants.TAG_PROPERTIES.INNER_HTML) {\n                        newElement.innerHTML = tag.innerHTML;\n                    } else if (attribute === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT) {\n                        if (newElement.styleSheet) {\n                            newElement.styleSheet.cssText = tag.cssText;\n                        } else {\n                            newElement.appendChild(document.createTextNode(tag.cssText));\n                        }\n                    } else {\n                        var value = typeof tag[attribute] === \"undefined\" ? \"\" : tag[attribute];\n                        newElement.setAttribute(attribute, value);\n                    }\n                }\n            }\n\n            newElement.setAttribute(_HelmetConstants.HELMET_ATTRIBUTE, \"true\");\n\n            // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n            if (oldTags.some(function (existingTag, index) {\n                indexToDelete = index;\n                return newElement.isEqualNode(existingTag);\n            })) {\n                oldTags.splice(indexToDelete, 1);\n            } else {\n                newTags.push(newElement);\n            }\n        });\n    }\n\n    oldTags.forEach(function (tag) {\n        return tag.parentNode.removeChild(tag);\n    });\n    newTags.forEach(function (tag) {\n        return headElement.appendChild(tag);\n    });\n\n    return {\n        oldTags: oldTags,\n        newTags: newTags\n    };\n};\n\nvar generateElementAttributesAsString = function generateElementAttributesAsString(attributes) {\n    return Object.keys(attributes).reduce(function (str, key) {\n        var attr = typeof attributes[key] !== \"undefined\" ? key + \"=\\\"\" + attributes[key] + \"\\\"\" : \"\" + key;\n        return str ? str + \" \" + attr : attr;\n    }, \"\");\n};\n\nvar generateTitleAsString = function generateTitleAsString(type, title, attributes, encode) {\n    var attributeString = generateElementAttributesAsString(attributes);\n    var flattenedTitle = flattenArray(title);\n    return attributeString ? \"<\" + type + \" \" + _HelmetConstants.HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeString + \">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"</\" + type + \">\" : \"<\" + type + \" \" + _HelmetConstants.HELMET_ATTRIBUTE + \"=\\\"true\\\">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"</\" + type + \">\";\n};\n\nvar generateTagsAsString = function generateTagsAsString(type, tags, encode) {\n    return tags.reduce(function (str, tag) {\n        var attributeHtml = Object.keys(tag).filter(function (attribute) {\n            return !(attribute === _HelmetConstants.TAG_PROPERTIES.INNER_HTML || attribute === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT);\n        }).reduce(function (string, attribute) {\n            var attr = typeof tag[attribute] === \"undefined\" ? attribute : attribute + \"=\\\"\" + encodeSpecialCharacters(tag[attribute], encode) + \"\\\"\";\n            return string ? string + \" \" + attr : attr;\n        }, \"\");\n\n        var tagContent = tag.innerHTML || tag.cssText || \"\";\n\n        var isSelfClosing = _HelmetConstants.SELF_CLOSING_TAGS.indexOf(type) === -1;\n\n        return str + \"<\" + type + \" \" + _HelmetConstants.HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeHtml + (isSelfClosing ? \"/>\" : \">\" + tagContent + \"</\" + type + \">\");\n    }, \"\");\n};\n\nvar convertElementAttributestoReactProps = function convertElementAttributestoReactProps(attributes) {\n    var initProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    return Object.keys(attributes).reduce(function (obj, key) {\n        obj[_HelmetConstants.REACT_TAG_MAP[key] || key] = attributes[key];\n        return obj;\n    }, initProps);\n};\n\nvar convertReactPropstoHtmlAttributes = function convertReactPropstoHtmlAttributes(props) {\n    var initAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    return Object.keys(props).reduce(function (obj, key) {\n        obj[_HelmetConstants.HTML_TAG_MAP[key] || key] = props[key];\n        return obj;\n    }, initAttributes);\n};\n\nvar generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {\n    var _initProps;\n\n    // assigning into an array to define toString function on it\n    var initProps = (_initProps = {\n        key: title\n    }, _initProps[_HelmetConstants.HELMET_ATTRIBUTE] = true, _initProps);\n    var props = convertElementAttributestoReactProps(attributes, initProps);\n\n    return [_react2.default.createElement(_HelmetConstants.TAG_NAMES.TITLE, props, title)];\n};\n\nvar generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {\n    return tags.map(function (tag, i) {\n        var _mappedTag;\n\n        var mappedTag = (_mappedTag = {\n            key: i\n        }, _mappedTag[_HelmetConstants.HELMET_ATTRIBUTE] = true, _mappedTag);\n\n        Object.keys(tag).forEach(function (attribute) {\n            var mappedAttribute = _HelmetConstants.REACT_TAG_MAP[attribute] || attribute;\n\n            if (mappedAttribute === _HelmetConstants.TAG_PROPERTIES.INNER_HTML || mappedAttribute === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT) {\n                var content = tag.innerHTML || tag.cssText;\n                mappedTag.dangerouslySetInnerHTML = { __html: content };\n            } else {\n                mappedTag[mappedAttribute] = tag[attribute];\n            }\n        });\n\n        return _react2.default.createElement(type, mappedTag);\n    });\n};\n\nvar getMethodsForTag = function getMethodsForTag(type, tags, encode) {\n    switch (type) {\n        case _HelmetConstants.TAG_NAMES.TITLE:\n            return {\n                toComponent: function toComponent() {\n                    return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode);\n                },\n                toString: function toString() {\n                    return generateTitleAsString(type, tags.title, tags.titleAttributes, encode);\n                }\n            };\n        case _HelmetConstants.ATTRIBUTE_NAMES.BODY:\n        case _HelmetConstants.ATTRIBUTE_NAMES.HTML:\n            return {\n                toComponent: function toComponent() {\n                    return convertElementAttributestoReactProps(tags);\n                },\n                toString: function toString() {\n                    return generateElementAttributesAsString(tags);\n                }\n            };\n        default:\n            return {\n                toComponent: function toComponent() {\n                    return generateTagsAsReactComponent(type, tags);\n                },\n                toString: function toString() {\n                    return generateTagsAsString(type, tags, encode);\n                }\n            };\n    }\n};\n\nvar mapStateOnServer = function mapStateOnServer(_ref) {\n    var baseTag = _ref.baseTag,\n        bodyAttributes = _ref.bodyAttributes,\n        encode = _ref.encode,\n        htmlAttributes = _ref.htmlAttributes,\n        linkTags = _ref.linkTags,\n        metaTags = _ref.metaTags,\n        noscriptTags = _ref.noscriptTags,\n        scriptTags = _ref.scriptTags,\n        styleTags = _ref.styleTags,\n        _ref$title = _ref.title,\n        title = _ref$title === undefined ? \"\" : _ref$title,\n        titleAttributes = _ref.titleAttributes;\n    return {\n        base: getMethodsForTag(_HelmetConstants.TAG_NAMES.BASE, baseTag, encode),\n        bodyAttributes: getMethodsForTag(_HelmetConstants.ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n        htmlAttributes: getMethodsForTag(_HelmetConstants.ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n        link: getMethodsForTag(_HelmetConstants.TAG_NAMES.LINK, linkTags, encode),\n        meta: getMethodsForTag(_HelmetConstants.TAG_NAMES.META, metaTags, encode),\n        noscript: getMethodsForTag(_HelmetConstants.TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n        script: getMethodsForTag(_HelmetConstants.TAG_NAMES.SCRIPT, scriptTags, encode),\n        style: getMethodsForTag(_HelmetConstants.TAG_NAMES.STYLE, styleTags, encode),\n        title: getMethodsForTag(_HelmetConstants.TAG_NAMES.TITLE, { title: title, titleAttributes: titleAttributes }, encode)\n    };\n};\n\nexports.convertReactPropstoHtmlAttributes = convertReactPropstoHtmlAttributes;\nexports.handleClientStateChange = handleClientStateChange;\nexports.mapStateOnServer = mapStateOnServer;\nexports.reducePropsToState = reducePropsToState;\nexports.requestAnimationFrame = requestAnimationFrame;\nexports.warn = warn;","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _exenv = require('exenv');\n\nvar _exenv2 = _interopRequireDefault(_exenv);\n\nvar _shallowequal = require('shallowequal');\n\nvar _shallowequal2 = _interopRequireDefault(_shallowequal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nmodule.exports = function withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer) {\n  if (typeof reducePropsToState !== 'function') {\n    throw new Error('Expected reducePropsToState to be a function.');\n  }\n  if (typeof handleStateChangeOnClient !== 'function') {\n    throw new Error('Expected handleStateChangeOnClient to be a function.');\n  }\n  if (typeof mapStateOnServer !== 'undefined' && typeof mapStateOnServer !== 'function') {\n    throw new Error('Expected mapStateOnServer to either be undefined or a function.');\n  }\n\n  function getDisplayName(WrappedComponent) {\n    return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n  }\n\n  return function wrap(WrappedComponent) {\n    if (typeof WrappedComponent !== 'function') {\n      throw new Error('Expected WrappedComponent to be a React component.');\n    }\n\n    var mountedInstances = [];\n    var state = void 0;\n\n    function emitChange() {\n      state = reducePropsToState(mountedInstances.map(function (instance) {\n        return instance.props;\n      }));\n\n      if (SideEffect.canUseDOM) {\n        handleStateChangeOnClient(state);\n      } else if (mapStateOnServer) {\n        state = mapStateOnServer(state);\n      }\n    }\n\n    var SideEffect = function (_Component) {\n      _inherits(SideEffect, _Component);\n\n      function SideEffect() {\n        _classCallCheck(this, SideEffect);\n\n        return _possibleConstructorReturn(this, _Component.apply(this, arguments));\n      }\n\n      // Try to use displayName of wrapped component\n      SideEffect.peek = function peek() {\n        return state;\n      };\n\n      // Expose canUseDOM so tests can monkeypatch it\n\n\n      SideEffect.rewind = function rewind() {\n        if (SideEffect.canUseDOM) {\n          throw new Error('You may only call rewind() on the server. Call peek() to read the current state.');\n        }\n\n        var recordedState = state;\n        state = undefined;\n        mountedInstances = [];\n        return recordedState;\n      };\n\n      SideEffect.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n        return !(0, _shallowequal2.default)(nextProps, this.props);\n      };\n\n      SideEffect.prototype.componentWillMount = function componentWillMount() {\n        mountedInstances.push(this);\n        emitChange();\n      };\n\n      SideEffect.prototype.componentDidUpdate = function componentDidUpdate() {\n        emitChange();\n      };\n\n      SideEffect.prototype.componentWillUnmount = function componentWillUnmount() {\n        var index = mountedInstances.indexOf(this);\n        mountedInstances.splice(index, 1);\n        emitChange();\n      };\n\n      SideEffect.prototype.render = function render() {\n        return _react2.default.createElement(WrappedComponent, this.props);\n      };\n\n      return SideEffect;\n    }(_react.Component);\n\n    SideEffect.displayName = 'SideEffect(' + getDisplayName(WrappedComponent) + ')';\n    SideEffect.canUseDOM = _exenv2.default.canUseDOM;\n\n\n    return SideEffect;\n  };\n};","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _TransitionGroup = require('./TransitionGroup');\n\nvar _TransitionGroup2 = _interopRequireDefault(_TransitionGroup);\n\nvar _CSSTransitionGroupChild = require('./CSSTransitionGroupChild');\n\nvar _CSSTransitionGroupChild2 = _interopRequireDefault(_CSSTransitionGroupChild);\n\nvar _PropTypes = require('./utils/PropTypes');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar propTypes = {\n  transitionName: _PropTypes.nameShape.isRequired,\n\n  transitionAppear: _propTypes2.default.bool,\n  transitionEnter: _propTypes2.default.bool,\n  transitionLeave: _propTypes2.default.bool,\n  transitionAppearTimeout: (0, _PropTypes.transitionTimeout)('Appear'),\n  transitionEnterTimeout: (0, _PropTypes.transitionTimeout)('Enter'),\n  transitionLeaveTimeout: (0, _PropTypes.transitionTimeout)('Leave')\n};\n\nvar defaultProps = {\n  transitionAppear: false,\n  transitionEnter: true,\n  transitionLeave: true\n};\n\nvar CSSTransitionGroup = function (_React$Component) {\n  _inherits(CSSTransitionGroup, _React$Component);\n\n  function CSSTransitionGroup() {\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, CSSTransitionGroup);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this._wrapChild = function (child) {\n      return _react2.default.createElement(_CSSTransitionGroupChild2.default, {\n        name: _this.props.transitionName,\n        appear: _this.props.transitionAppear,\n        enter: _this.props.transitionEnter,\n        leave: _this.props.transitionLeave,\n        appearTimeout: _this.props.transitionAppearTimeout,\n        enterTimeout: _this.props.transitionEnterTimeout,\n        leaveTimeout: _this.props.transitionLeaveTimeout\n      }, child);\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  // We need to provide this childFactory so that\n  // ReactCSSTransitionGroupChild can receive updates to name, enter, and\n  // leave while it is leaving.\n\n\n  CSSTransitionGroup.prototype.render = function render() {\n    return _react2.default.createElement(_TransitionGroup2.default, _extends({}, this.props, { childFactory: this._wrapChild }));\n  };\n\n  return CSSTransitionGroup;\n}(_react2.default.Component);\n\nCSSTransitionGroup.displayName = 'CSSTransitionGroup';\n\n\nCSSTransitionGroup.propTypes = \"production\" !== \"production\" ? propTypes : {};\nCSSTransitionGroup.defaultProps = defaultProps;\n\nexports.default = CSSTransitionGroup;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _addClass = require('dom-helpers/class/addClass');\n\nvar _addClass2 = _interopRequireDefault(_addClass);\n\nvar _removeClass = require('dom-helpers/class/removeClass');\n\nvar _removeClass2 = _interopRequireDefault(_removeClass);\n\nvar _requestAnimationFrame = require('dom-helpers/util/requestAnimationFrame');\n\nvar _requestAnimationFrame2 = _interopRequireDefault(_requestAnimationFrame);\n\nvar _properties = require('dom-helpers/transition/properties');\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactDom = require('react-dom');\n\nvar _PropTypes = require('./utils/PropTypes');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar events = [];\nif (_properties.transitionEnd) events.push(_properties.transitionEnd);\nif (_properties.animationEnd) events.push(_properties.animationEnd);\n\nfunction addEndListener(node, listener) {\n  if (events.length) {\n    events.forEach(function (e) {\n      return node.addEventListener(e, listener, false);\n    });\n  } else {\n    setTimeout(listener, 0);\n  }\n\n  return function () {\n    if (!events.length) return;\n    events.forEach(function (e) {\n      return node.removeEventListener(e, listener, false);\n    });\n  };\n}\n\nvar propTypes = {\n  children: _propTypes2.default.node,\n  name: _PropTypes.nameShape.isRequired,\n\n  // Once we require timeouts to be specified, we can remove the\n  // boolean flags (appear etc.) and just accept a number\n  // or a bool for the timeout flags (appearTimeout etc.)\n  appear: _propTypes2.default.bool,\n  enter: _propTypes2.default.bool,\n  leave: _propTypes2.default.bool,\n  appearTimeout: _propTypes2.default.number,\n  enterTimeout: _propTypes2.default.number,\n  leaveTimeout: _propTypes2.default.number\n};\n\nvar CSSTransitionGroupChild = function (_React$Component) {\n  _inherits(CSSTransitionGroupChild, _React$Component);\n\n  function CSSTransitionGroupChild() {\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, CSSTransitionGroupChild);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.componentWillAppear = function (done) {\n      if (_this.props.appear) {\n        _this.transition('appear', done, _this.props.appearTimeout);\n      } else {\n        done();\n      }\n    }, _this.componentWillEnter = function (done) {\n      if (_this.props.enter) {\n        _this.transition('enter', done, _this.props.enterTimeout);\n      } else {\n        done();\n      }\n    }, _this.componentWillLeave = function (done) {\n      if (_this.props.leave) {\n        _this.transition('leave', done, _this.props.leaveTimeout);\n      } else {\n        done();\n      }\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  CSSTransitionGroupChild.prototype.componentWillMount = function componentWillMount() {\n    this.classNameAndNodeQueue = [];\n    this.transitionTimeouts = [];\n  };\n\n  CSSTransitionGroupChild.prototype.componentWillUnmount = function componentWillUnmount() {\n    this.unmounted = true;\n\n    if (this.timeout) {\n      clearTimeout(this.timeout);\n    }\n    this.transitionTimeouts.forEach(function (timeout) {\n      clearTimeout(timeout);\n    });\n\n    this.classNameAndNodeQueue.length = 0;\n  };\n\n  CSSTransitionGroupChild.prototype.transition = function transition(animationType, finishCallback, timeout) {\n    var node = (0, _reactDom.findDOMNode)(this);\n\n    if (!node) {\n      if (finishCallback) {\n        finishCallback();\n      }\n      return;\n    }\n\n    var className = this.props.name[animationType] || this.props.name + '-' + animationType;\n    var activeClassName = this.props.name[animationType + 'Active'] || className + '-active';\n    var timer = null;\n    var removeListeners = void 0;\n\n    (0, _addClass2.default)(node, className);\n\n    // Need to do this to actually trigger a transition.\n    this.queueClassAndNode(activeClassName, node);\n\n    // Clean-up the animation after the specified delay\n    var finish = function finish(e) {\n      if (e && e.target !== node) {\n        return;\n      }\n\n      clearTimeout(timer);\n      if (removeListeners) removeListeners();\n\n      (0, _removeClass2.default)(node, className);\n      (0, _removeClass2.default)(node, activeClassName);\n\n      if (removeListeners) removeListeners();\n\n      // Usually this optional callback is used for informing an owner of\n      // a leave animation and telling it to remove the child.\n      if (finishCallback) {\n        finishCallback();\n      }\n    };\n\n    if (timeout) {\n      timer = setTimeout(finish, timeout);\n      this.transitionTimeouts.push(timer);\n    } else if (_properties.transitionEnd) {\n      removeListeners = addEndListener(node, finish);\n    }\n  };\n\n  CSSTransitionGroupChild.prototype.queueClassAndNode = function queueClassAndNode(className, node) {\n    var _this2 = this;\n\n    this.classNameAndNodeQueue.push({\n      className: className,\n      node: node\n    });\n\n    if (!this.rafHandle) {\n      this.rafHandle = (0, _requestAnimationFrame2.default)(function () {\n        return _this2.flushClassNameAndNodeQueue();\n      });\n    }\n  };\n\n  CSSTransitionGroupChild.prototype.flushClassNameAndNodeQueue = function flushClassNameAndNodeQueue() {\n    if (!this.unmounted) {\n      this.classNameAndNodeQueue.forEach(function (obj) {\n        // This is for to force a repaint,\n        // which is necessary in order to transition styles when adding a class name.\n        /* eslint-disable no-unused-expressions */\n        obj.node.scrollTop;\n        /* eslint-enable no-unused-expressions */\n        (0, _addClass2.default)(obj.node, obj.className);\n      });\n    }\n    this.classNameAndNodeQueue.length = 0;\n    this.rafHandle = null;\n  };\n\n  CSSTransitionGroupChild.prototype.render = function render() {\n    var props = _extends({}, this.props);\n    delete props.name;\n    delete props.appear;\n    delete props.enter;\n    delete props.leave;\n    delete props.appearTimeout;\n    delete props.enterTimeout;\n    delete props.leaveTimeout;\n    delete props.children;\n    return _react2.default.cloneElement(_react2.default.Children.only(this.props.children), props);\n  };\n\n  return CSSTransitionGroupChild;\n}(_react2.default.Component);\n\nCSSTransitionGroupChild.displayName = 'CSSTransitionGroupChild';\n\n\nCSSTransitionGroupChild.propTypes = \"production\" !== \"production\" ? propTypes : {};\n\nexports.default = CSSTransitionGroupChild;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _chainFunction = require('chain-function');\n\nvar _chainFunction2 = _interopRequireDefault(_chainFunction);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _ChildMapping = require('./utils/ChildMapping');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar propTypes = {\n  component: _propTypes2.default.any,\n  childFactory: _propTypes2.default.func,\n  children: _propTypes2.default.node\n};\n\nvar defaultProps = {\n  component: 'span',\n  childFactory: function childFactory(child) {\n    return child;\n  }\n};\n\nvar TransitionGroup = function (_React$Component) {\n  _inherits(TransitionGroup, _React$Component);\n\n  function TransitionGroup(props, context) {\n    _classCallCheck(this, TransitionGroup);\n\n    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n\n    _this.performAppear = function (key, component) {\n      _this.currentlyTransitioningKeys[key] = true;\n\n      if (component.componentWillAppear) {\n        component.componentWillAppear(_this._handleDoneAppearing.bind(_this, key, component));\n      } else {\n        _this._handleDoneAppearing(key, component);\n      }\n    };\n\n    _this._handleDoneAppearing = function (key, component) {\n      if (component.componentDidAppear) {\n        component.componentDidAppear();\n      }\n\n      delete _this.currentlyTransitioningKeys[key];\n\n      var currentChildMapping = (0, _ChildMapping.getChildMapping)(_this.props.children);\n\n      if (!currentChildMapping || !currentChildMapping.hasOwnProperty(key)) {\n        // This was removed before it had fully appeared. Remove it.\n        _this.performLeave(key, component);\n      }\n    };\n\n    _this.performEnter = function (key, component) {\n      _this.currentlyTransitioningKeys[key] = true;\n\n      if (component.componentWillEnter) {\n        component.componentWillEnter(_this._handleDoneEntering.bind(_this, key, component));\n      } else {\n        _this._handleDoneEntering(key, component);\n      }\n    };\n\n    _this._handleDoneEntering = function (key, component) {\n      if (component.componentDidEnter) {\n        component.componentDidEnter();\n      }\n\n      delete _this.currentlyTransitioningKeys[key];\n\n      var currentChildMapping = (0, _ChildMapping.getChildMapping)(_this.props.children);\n\n      if (!currentChildMapping || !currentChildMapping.hasOwnProperty(key)) {\n        // This was removed before it had fully entered. Remove it.\n        _this.performLeave(key, component);\n      }\n    };\n\n    _this.performLeave = function (key, component) {\n      _this.currentlyTransitioningKeys[key] = true;\n\n      if (component.componentWillLeave) {\n        component.componentWillLeave(_this._handleDoneLeaving.bind(_this, key, component));\n      } else {\n        // Note that this is somewhat dangerous b/c it calls setState()\n        // again, effectively mutating the component before all the work\n        // is done.\n        _this._handleDoneLeaving(key, component);\n      }\n    };\n\n    _this._handleDoneLeaving = function (key, component) {\n      if (component.componentDidLeave) {\n        component.componentDidLeave();\n      }\n\n      delete _this.currentlyTransitioningKeys[key];\n\n      var currentChildMapping = (0, _ChildMapping.getChildMapping)(_this.props.children);\n\n      if (currentChildMapping && currentChildMapping.hasOwnProperty(key)) {\n        // This entered again before it fully left. Add it again.\n        _this.keysToEnter.push(key);\n      } else {\n        _this.setState(function (state) {\n          var newChildren = _extends({}, state.children);\n          delete newChildren[key];\n          return { children: newChildren };\n        });\n      }\n    };\n\n    _this.childRefs = Object.create(null);\n\n    _this.state = {\n      children: (0, _ChildMapping.getChildMapping)(props.children)\n    };\n    return _this;\n  }\n\n  TransitionGroup.prototype.componentWillMount = function componentWillMount() {\n    this.currentlyTransitioningKeys = {};\n    this.keysToEnter = [];\n    this.keysToLeave = [];\n  };\n\n  TransitionGroup.prototype.componentDidMount = function componentDidMount() {\n    var initialChildMapping = this.state.children;\n    for (var key in initialChildMapping) {\n      if (initialChildMapping[key]) {\n        this.performAppear(key, this.childRefs[key]);\n      }\n    }\n  };\n\n  TransitionGroup.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n    var nextChildMapping = (0, _ChildMapping.getChildMapping)(nextProps.children);\n    var prevChildMapping = this.state.children;\n\n    this.setState({\n      children: (0, _ChildMapping.mergeChildMappings)(prevChildMapping, nextChildMapping)\n    });\n\n    for (var key in nextChildMapping) {\n      var hasPrev = prevChildMapping && prevChildMapping.hasOwnProperty(key);\n      if (nextChildMapping[key] && !hasPrev && !this.currentlyTransitioningKeys[key]) {\n        this.keysToEnter.push(key);\n      }\n    }\n\n    for (var _key in prevChildMapping) {\n      var hasNext = nextChildMapping && nextChildMapping.hasOwnProperty(_key);\n      if (prevChildMapping[_key] && !hasNext && !this.currentlyTransitioningKeys[_key]) {\n        this.keysToLeave.push(_key);\n      }\n    }\n\n    // If we want to someday check for reordering, we could do it here.\n  };\n\n  TransitionGroup.prototype.componentDidUpdate = function componentDidUpdate() {\n    var _this2 = this;\n\n    var keysToEnter = this.keysToEnter;\n    this.keysToEnter = [];\n    keysToEnter.forEach(function (key) {\n      return _this2.performEnter(key, _this2.childRefs[key]);\n    });\n\n    var keysToLeave = this.keysToLeave;\n    this.keysToLeave = [];\n    keysToLeave.forEach(function (key) {\n      return _this2.performLeave(key, _this2.childRefs[key]);\n    });\n  };\n\n  TransitionGroup.prototype.render = function render() {\n    var _this3 = this;\n\n    // TODO: we could get rid of the need for the wrapper node\n    // by cloning a single child\n    var childrenToRender = [];\n\n    var _loop = function _loop(key) {\n      var child = _this3.state.children[key];\n      if (child) {\n        var isCallbackRef = typeof child.ref !== 'string';\n        var factoryChild = _this3.props.childFactory(child);\n        var ref = function ref(r) {\n          _this3.childRefs[key] = r;\n        };\n\n        \"production\" !== 'production' ? (0, _warning2.default)(isCallbackRef, 'string refs are not supported on children of TransitionGroup and will be ignored. ' + 'Please use a callback ref instead: https://facebook.github.io/react/docs/refs-and-the-dom.html#the-ref-callback-attribute') : void 0;\n\n        // Always chaining the refs leads to problems when the childFactory\n        // wraps the child. The child ref callback gets called twice with the\n        // wrapper and the child. So we only need to chain the ref if the\n        // factoryChild is not different from child.\n        if (factoryChild === child && isCallbackRef) {\n          ref = (0, _chainFunction2.default)(child.ref, ref);\n        }\n\n        // You may need to apply reactive updates to a child as it is leaving.\n        // The normal React way to do it won't work since the child will have\n        // already been removed. In case you need this behavior you can provide\n        // a childFactory function to wrap every child, even the ones that are\n        // leaving.\n        childrenToRender.push(_react2.default.cloneElement(factoryChild, {\n          key: key,\n          ref: ref\n        }));\n      }\n    };\n\n    for (var key in this.state.children) {\n      _loop(key);\n    }\n\n    // Do not forward TransitionGroup props to primitive DOM nodes\n    var props = _extends({}, this.props);\n    delete props.transitionLeave;\n    delete props.transitionName;\n    delete props.transitionAppear;\n    delete props.transitionEnter;\n    delete props.childFactory;\n    delete props.transitionLeaveTimeout;\n    delete props.transitionEnterTimeout;\n    delete props.transitionAppearTimeout;\n    delete props.component;\n\n    return _react2.default.createElement(this.props.component, props, childrenToRender);\n  };\n\n  return TransitionGroup;\n}(_react2.default.Component);\n\nTransitionGroup.displayName = 'TransitionGroup';\n\n\nTransitionGroup.propTypes = \"production\" !== \"production\" ? propTypes : {};\nTransitionGroup.defaultProps = defaultProps;\n\nexports.default = TransitionGroup;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports.getChildMapping = getChildMapping;\nexports.mergeChildMappings = mergeChildMappings;\n\nvar _react = require('react');\n\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\nfunction getChildMapping(children) {\n  if (!children) {\n    return children;\n  }\n  var result = {};\n  _react.Children.map(children, function (child) {\n    return child;\n  }).forEach(function (child) {\n    result[child.key] = child;\n  });\n  return result;\n}\n\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\nfunction mergeChildMappings(prev, next) {\n  prev = prev || {};\n  next = next || {};\n\n  function getValueForKey(key) {\n    if (next.hasOwnProperty(key)) {\n      return next[key];\n    }\n\n    return prev[key];\n  }\n\n  // For each key of `next`, the list of keys to insert before that key in\n  // the combined list\n  var nextKeysPending = {};\n\n  var pendingKeys = [];\n  for (var prevKey in prev) {\n    if (next.hasOwnProperty(prevKey)) {\n      if (pendingKeys.length) {\n        nextKeysPending[prevKey] = pendingKeys;\n        pendingKeys = [];\n      }\n    } else {\n      pendingKeys.push(prevKey);\n    }\n  }\n\n  var i = void 0;\n  var childMapping = {};\n  for (var nextKey in next) {\n    if (nextKeysPending.hasOwnProperty(nextKey)) {\n      for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n        var pendingNextKey = nextKeysPending[nextKey][i];\n        childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n      }\n    }\n    childMapping[nextKey] = getValueForKey(nextKey);\n  }\n\n  // Finally, add the keys which didn't appear before any key in `next`\n  for (i = 0; i < pendingKeys.length; i++) {\n    childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n  }\n\n  return childMapping;\n}","'use strict';\n\nexports.__esModule = true;\nexports.nameShape = undefined;\nexports.transitionTimeout = transitionTimeout;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction transitionTimeout(transitionType) {\n  var timeoutPropName = 'transition' + transitionType + 'Timeout';\n  var enabledPropName = 'transition' + transitionType;\n\n  return function (props) {\n    // If the transition is enabled\n    if (props[enabledPropName]) {\n      // If no timeout duration is provided\n      if (props[timeoutPropName] == null) {\n        return new Error(timeoutPropName + ' wasn\\'t supplied to CSSTransitionGroup: ' + 'this can cause unreliable animations and won\\'t be supported in ' + 'a future version of React. See ' + 'https://fb.me/react-animation-transition-group-timeout for more ' + 'information.');\n\n        // If the duration isn't a number\n      } else if (typeof props[timeoutPropName] !== 'number') {\n        return new Error(timeoutPropName + ' must be a number (in milliseconds)');\n      }\n    }\n\n    return null;\n  };\n}\n\nvar nameShape = exports.nameShape = _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.shape({\n  enter: _propTypes2.default.string,\n  leave: _propTypes2.default.string,\n  active: _propTypes2.default.string\n}), _propTypes2.default.shape({\n  enter: _propTypes2.default.string,\n  enterActive: _propTypes2.default.string,\n  leave: _propTypes2.default.string,\n  leaveActive: _propTypes2.default.string,\n  appear: _propTypes2.default.string,\n  appearActive: _propTypes2.default.string\n})]);","/**\n * @author Titus Wormer\n * @copyright 2016 Titus Wormer\n * @license MIT\n * @module rehype:parse\n * @fileoverview HTML parser.\n */\n\n'use strict';\n\n/* Dependencies. */\nvar Parser = require('./lib/parser.js');\n\n/* Expose */\nmodule.exports = exports = parse;\nexports.Parser = Parser;\n\n/**\n * Attacher.\n *\n * @param {unified} processor - Unified processor.\n */\nfunction parse(processor) {\n  processor.Parser = Parser;\n}\n","/**\n * @author Titus Wormer\n * @copyright 2016 Titus Wormer\n * @license MIT\n * @module rehype:parser\n * @fileoverview HTML parser.\n */\n\n'use strict';\n\n/* Dependencies. */\nvar fromParse5 = require('hast-util-from-parse5');\nvar Parser5 = require('parse5/lib/parser');\n\n/* Expose. */\nmodule.exports = Parser;\n\n/* Parse5 Configuration. */\nvar config = {locationInfo: true};\n\n/* Methods. */\nParser.prototype.parse = parse;\n\n/**\n * Construct a new parser.\n *\n * @param {File} file - Virtual file.\n * @param {Object?} options - Configuration.\n */\nfunction Parser(file, options) {\n  this.parser = new Parser5(config);\n  this.file = file;\n  this.options = options;\n}\n\n/**\n * Parse the bound virtual file.\n *\n * @this {Parser}\n * @return {HastRoot} - Hast root-node.\n */\nfunction parse() {\n  var settings = this.options || {};\n  var fn = settings.fragment ? 'parseFragment' : 'parse';\n\n  return fromParse5(this.parser[fn](String(this.file)), {\n    file: this.file,\n    verbose: settings.verbose\n  });\n}\n","'use strict';\n\nvar visit = require('unist-util-visit');\nvar gemoji = require('gemoji');\n\nmodule.exports = gemojiToEmoji;\n\nvar has = Object.prototype.hasOwnProperty;\n\nfunction gemojiToEmoji() {\n  return transformer;\n}\n\nfunction transformer(tree) {\n  visit(tree, 'text', visitor);\n}\n\nfunction visitor(node) {\n  var value = node.value;\n  var index = value.indexOf(':');\n  var lastIndex = 0;\n  var result = '';\n  var subvalue;\n  var next;\n\n  while (index !== -1) {\n    next = value.indexOf(':', index + 1);\n\n    if (next !== -1) {\n      subvalue = value.slice(index + 1, next);\n\n      if (has.call(gemoji.name, subvalue)) {\n        result += value.slice(lastIndex, index) + gemoji.name[subvalue].emoji;\n        lastIndex = next + 1;\n      }\n    }\n\n    index = next;\n  }\n\n  if (lastIndex !== value.length) {\n    result += value.slice(lastIndex);\n  }\n\n  node.value = result;\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse\n * @fileoverview Markdown parser.\n */\n\n'use strict';\n\nvar unherit = require('unherit');\nvar Parser = require('./lib/parser.js');\n\nmodule.exports = exports = parse;\nexports.Parser = Parser;\n\nfunction parse(processor) {\n  processor.Parser = unherit(Parser);\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:decode\n * @fileoverview Decode entities.\n */\n\n'use strict';\n\nvar entities = require('parse-entities');\n\nmodule.exports = factory;\n\n/* Factory to create an entity decoder. */\nfunction factory(ctx) {\n  decoder.raw = decodeRaw;\n\n  return decoder;\n\n  /* Normalize `position` to add an `indent`. */\n  function normalize(position) {\n    var offsets = ctx.offset;\n    var line = position.line;\n    var result = [];\n\n    while (++line) {\n      if (!(line in offsets)) {\n        break;\n      }\n\n      result.push((offsets[line] || 0) + 1);\n    }\n\n    return {\n      start: position,\n      indent: result\n    };\n  }\n\n  /* Handle a warning.\n   * See https://github.com/wooorm/parse-entities\n   * for the warnings. */\n  function handleWarning(reason, position, code) {\n    if (code === 3) {\n      return;\n    }\n\n    ctx.file.message(reason, position);\n  }\n\n  /* Decode `value` (at `position`) into text-nodes. */\n  function decoder(value, position, handler) {\n    entities(value, {\n      position: normalize(position),\n      warning: handleWarning,\n      text: handler,\n      reference: handler,\n      textContext: ctx,\n      referenceContext: ctx\n    });\n  }\n\n  /* Decode `value` (at `position`) into a string. */\n  function decodeRaw(value, position) {\n    return entities(value, {\n      position: normalize(position),\n      warning: handleWarning\n    });\n  }\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:defaults\n * @fileoverview Default options for `parse`.\n */\n\n'use strict';\n\n/* Expose. */\nmodule.exports = {\n  position: true,\n  gfm: true,\n  yaml: true,\n  commonmark: false,\n  footnotes: false,\n  pedantic: false,\n  blocks: require('./block-elements'),\n  breaks: false\n};\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:locate:break\n * @fileoverview Locate a break.\n */\n\n'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n  var index = value.indexOf('\\n', fromIndex);\n\n  while (index > fromIndex) {\n    if (value.charAt(index - 1) !== ' ') {\n      break;\n    }\n\n    index--;\n  }\n\n  return index;\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:locate:code-inline\n * @fileoverview Locate inline code.\n */\n\n'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n  return value.indexOf('`', fromIndex);\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:locate:delete\n * @fileoverview Locate strikethrough.\n */\n\n'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n  return value.indexOf('~~', fromIndex);\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:locate:emphasis\n * @fileoverview Locate italics / emphasis.\n */\n\n'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n  var asterisk = value.indexOf('*', fromIndex);\n  var underscore = value.indexOf('_', fromIndex);\n\n  if (underscore === -1) {\n    return asterisk;\n  }\n\n  if (asterisk === -1) {\n    return underscore;\n  }\n\n  return underscore < asterisk ? underscore : asterisk;\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:locate:escape\n * @fileoverview Locate an escape.\n */\n\n'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n  return value.indexOf('\\\\', fromIndex);\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:locate:link\n * @fileoverview Locate a link.\n */\n\n'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n  var link = value.indexOf('[', fromIndex);\n  var image = value.indexOf('![', fromIndex);\n\n  if (image === -1) {\n    return link;\n  }\n\n  /* Link can never be `-1` if an image is found, so we don’t need\n   * to check for that :) */\n  return link < image ? link : image;\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:locate:strong\n * @fileoverview Locate bold / strong / importance.\n */\n\n'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n  var asterisk = value.indexOf('**', fromIndex);\n  var underscore = value.indexOf('__', fromIndex);\n\n  if (underscore === -1) {\n    return asterisk;\n  }\n\n  if (asterisk === -1) {\n    return underscore;\n  }\n\n  return underscore < asterisk ? underscore : asterisk;\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:locate:tag\n * @fileoverview Locate a tag.\n */\n\n'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n  return value.indexOf('<', fromIndex);\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:locate:url\n * @fileoverview Locate a URL.\n */\n\n'use strict';\n\nmodule.exports = locate;\n\nvar PROTOCOLS = ['https://', 'http://', 'mailto:'];\n\nfunction locate(value, fromIndex) {\n  var length = PROTOCOLS.length;\n  var index = -1;\n  var min = -1;\n  var position;\n\n  if (!this.options.gfm) {\n    return -1;\n  }\n\n  while (++index < length) {\n    position = value.indexOf(PROTOCOLS[index], fromIndex);\n\n    if (position !== -1 && (position < min || min === -1)) {\n      min = position;\n    }\n  }\n\n  return min;\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:parse\n * @fileoverview Parse the document\n */\n\n'use strict';\n\nvar xtend = require('xtend');\nvar removePosition = require('unist-util-remove-position');\n\nmodule.exports = parse;\n\nvar C_NEWLINE = '\\n';\nvar EXPRESSION_LINE_BREAKS = /\\r\\n|\\r/g;\n\n/* Parse the bound file. */\nfunction parse() {\n  var self = this;\n  var value = String(self.file);\n  var start = {line: 1, column: 1, offset: 0};\n  var content = xtend(start);\n  var node;\n\n  /* Clean non-unix newlines: `\\r\\n` and `\\r` are all\n   * changed to `\\n`.  This should not affect positional\n   * information. */\n  value = value.replace(EXPRESSION_LINE_BREAKS, C_NEWLINE);\n\n  if (value.charCodeAt(0) === 0xFEFF) {\n    value = value.slice(1);\n\n    content.column++;\n    content.offset++;\n  }\n\n  node = {\n    type: 'root',\n    children: self.tokenizeBlock(value, content),\n    position: {\n      start: start,\n      end: self.eof || xtend(start)\n    }\n  };\n\n  if (!self.options.position) {\n    removePosition(node, true);\n  }\n\n  return node;\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse\n * @fileoverview Markdown parser.\n */\n\n'use strict';\n\nvar xtend = require('xtend');\nvar toggle = require('state-toggle');\nvar vfileLocation = require('vfile-location');\nvar unescape = require('./unescape');\nvar decode = require('./decode');\nvar tokenizer = require('./tokenizer');\n\nmodule.exports = Parser;\n\n/* Construct a new parser. */\nfunction Parser(file, options) {\n  this.file = file;\n  this.offset = {};\n  this.options = xtend(this.options);\n  this.setOptions(options);\n\n  this.inList = this.inBlock = this.inLink = false;\n  this.atStart = true;\n\n  this.toOffset = vfileLocation(file).toOffset;\n  this.unescape = unescape(this, 'escape');\n  this.decode = decode(this);\n}\n\n/* Prototype. */\nvar proto = Parser.prototype;\n\n/* Expose core. */\nproto.setOptions = require('./set-options');\nproto.parse = require('./parse');\n\n/* Expose `defaults`. */\nproto.options = require('./defaults');\n\n/* Enter and exit helpers. */\nproto.exitStart = toggle('atStart', true);\nproto.enterList = toggle('inList', false);\nproto.enterLink = toggle('inLink', false);\nproto.enterBlock = toggle('inBlock', false);\n\n/* Nodes that can interupt a paragraph:\n *\n * ```markdown\n * A paragraph, followed by a thematic break.\n * ___\n * ```\n *\n * In the above example, the thematic break “interupts”\n * the paragraph. */\nproto.interruptParagraph = [\n  ['thematicBreak'],\n  ['atxHeading'],\n  ['fencedCode'],\n  ['blockquote'],\n  ['html'],\n  ['setextHeading', {commonmark: false}],\n  ['definition', {commonmark: false}],\n  ['footnote', {commonmark: false}]\n];\n\n/* Nodes that can interupt a list:\n *\n * ```markdown\n * - One\n * ___\n * ```\n *\n * In the above example, the thematic break “interupts”\n * the list. */\nproto.interruptList = [\n  ['fencedCode', {pedantic: false}],\n  ['thematicBreak', {pedantic: false}],\n  ['definition', {commonmark: false}],\n  ['footnote', {commonmark: false}]\n];\n\n/* Nodes that can interupt a blockquote:\n *\n * ```markdown\n * > A paragraph.\n * ___\n * ```\n *\n * In the above example, the thematic break “interupts”\n * the blockquote. */\nproto.interruptBlockquote = [\n  ['indentedCode', {commonmark: true}],\n  ['fencedCode', {commonmark: true}],\n  ['atxHeading', {commonmark: true}],\n  ['setextHeading', {commonmark: true}],\n  ['thematicBreak', {commonmark: true}],\n  ['html', {commonmark: true}],\n  ['list', {commonmark: true}],\n  ['definition', {commonmark: false}],\n  ['footnote', {commonmark: false}]\n];\n\n/* Handlers. */\nproto.blockTokenizers = {\n  yamlFrontMatter: require('./tokenize/yaml'),\n  newline: require('./tokenize/newline'),\n  indentedCode: require('./tokenize/code-indented'),\n  fencedCode: require('./tokenize/code-fenced'),\n  blockquote: require('./tokenize/blockquote'),\n  atxHeading: require('./tokenize/heading-atx'),\n  thematicBreak: require('./tokenize/thematic-break'),\n  list: require('./tokenize/list'),\n  setextHeading: require('./tokenize/heading-setext'),\n  html: require('./tokenize/html-block'),\n  footnote: require('./tokenize/footnote-definition'),\n  definition: require('./tokenize/definition'),\n  table: require('./tokenize/table'),\n  paragraph: require('./tokenize/paragraph')\n};\n\nproto.inlineTokenizers = {\n  escape: require('./tokenize/escape'),\n  autoLink: require('./tokenize/auto-link'),\n  url: require('./tokenize/url'),\n  html: require('./tokenize/html-inline'),\n  link: require('./tokenize/link'),\n  reference: require('./tokenize/reference'),\n  strong: require('./tokenize/strong'),\n  emphasis: require('./tokenize/emphasis'),\n  deletion: require('./tokenize/delete'),\n  code: require('./tokenize/code-inline'),\n  break: require('./tokenize/break'),\n  text: require('./tokenize/text')\n};\n\n/* Expose precedence. */\nproto.blockMethods = keys(proto.blockTokenizers);\nproto.inlineMethods = keys(proto.inlineTokenizers);\n\n/* Tokenizers. */\nproto.tokenizeBlock = tokenizer('block');\nproto.tokenizeInline = tokenizer('inline');\nproto.tokenizeFactory = tokenizer;\n\n/* Get all keys in `value`. */\nfunction keys(value) {\n  var result = [];\n  var key;\n\n  for (key in value) {\n    result.push(key);\n  }\n\n  return result;\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse\n * @fileoverview Markdown parser.\n */\n\n'use strict';\n\nvar xtend = require('xtend');\nvar escapes = require('markdown-escapes');\nvar defaults = require('./defaults');\n\nmodule.exports = setOptions;\n\n/* Set options. */\nfunction setOptions(options) {\n  var self = this;\n  var current = self.options;\n  var key;\n  var value;\n\n  if (options == null) {\n    options = {};\n  } else if (typeof options === 'object') {\n    options = xtend(options);\n  } else {\n    throw new Error(\n      'Invalid value `' + options + '` ' +\n      'for setting `options`'\n    );\n  }\n\n  for (key in defaults) {\n    value = options[key];\n\n    if (value == null) {\n      value = current[key];\n    }\n\n    if (\n      (key !== 'blocks' && typeof value !== 'boolean') ||\n      (key === 'blocks' && typeof value !== 'object')\n    ) {\n      throw new Error(\n        'Invalid value `' + value + '` ' +\n        'for setting `options.' + key + '`'\n      );\n    }\n\n    options[key] = value;\n  }\n\n  self.options = options;\n  self.escape = escapes(options);\n\n  return self;\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:tokenize:auto-link\n * @fileoverview Tokenise an auto-link.\n */\n\n'use strict';\n\nvar decode = require('parse-entities');\nvar locate = require('../locate/tag');\n\nmodule.exports = autoLink;\nautoLink.locator = locate;\nautoLink.notInLink = true;\n\nvar C_LT = '<';\nvar C_GT = '>';\nvar C_AT_SIGN = '@';\nvar C_SLASH = '/';\nvar MAILTO = 'mailto:';\nvar MAILTO_LENGTH = MAILTO.length;\n\n/* Tokenise a link. */\nfunction autoLink(eat, value, silent) {\n  var self;\n  var subvalue;\n  var length;\n  var index;\n  var queue;\n  var character;\n  var hasAtCharacter;\n  var link;\n  var now;\n  var content;\n  var tokenize;\n  var exit;\n\n  if (value.charAt(0) !== C_LT) {\n    return;\n  }\n\n  self = this;\n  subvalue = '';\n  length = value.length;\n  index = 0;\n  queue = '';\n  hasAtCharacter = false;\n  link = '';\n\n  index++;\n  subvalue = C_LT;\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (\n      character === ' ' ||\n      character === C_GT ||\n      character === C_AT_SIGN ||\n      (character === ':' && value.charAt(index + 1) === C_SLASH)\n    ) {\n      break;\n    }\n\n    queue += character;\n    index++;\n  }\n\n  if (!queue) {\n    return;\n  }\n\n  link += queue;\n  queue = '';\n\n  character = value.charAt(index);\n  link += character;\n  index++;\n\n  if (character === C_AT_SIGN) {\n    hasAtCharacter = true;\n  } else {\n    if (\n      character !== ':' ||\n      value.charAt(index + 1) !== C_SLASH\n    ) {\n      return;\n    }\n\n    link += C_SLASH;\n    index++;\n  }\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character === ' ' || character === C_GT) {\n      break;\n    }\n\n    queue += character;\n    index++;\n  }\n\n  character = value.charAt(index);\n\n  if (!queue || character !== C_GT) {\n    return;\n  }\n\n  /* istanbul ignore if - never used (yet) */\n  if (silent) {\n    return true;\n  }\n\n  link += queue;\n  content = link;\n  subvalue += link + character;\n  now = eat.now();\n  now.column++;\n  now.offset++;\n\n  if (hasAtCharacter) {\n    if (link.slice(0, MAILTO_LENGTH).toLowerCase() === MAILTO) {\n      content = content.substr(MAILTO_LENGTH);\n      now.column += MAILTO_LENGTH;\n      now.offset += MAILTO_LENGTH;\n    } else {\n      link = MAILTO + link;\n    }\n  }\n\n  /* Temporarily remove support for escapes in autolinks. */\n  tokenize = self.inlineTokenizers.escape;\n  self.inlineTokenizers.escape = null;\n  exit = self.enterLink();\n\n  content = self.tokenizeInline(content, now);\n\n  self.inlineTokenizers.escape = tokenize;\n  exit();\n\n  return eat(subvalue)({\n    type: 'link',\n    title: null,\n    url: decode(link),\n    children: content\n  });\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:tokenize:blockquote\n * @fileoverview Tokenise blockquote.\n */\n\n'use strict';\n\nvar trim = require('trim');\nvar interrupt = require('../util/interrupt');\n\nmodule.exports = blockquote;\n\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_GT = '>';\n\n/* Tokenise a blockquote. */\nfunction blockquote(eat, value, silent) {\n  var self = this;\n  var offsets = self.offset;\n  var tokenizers = self.blockTokenizers;\n  var interruptors = self.interruptBlockquote;\n  var now = eat.now();\n  var currentLine = now.line;\n  var length = value.length;\n  var values = [];\n  var contents = [];\n  var indents = [];\n  var add;\n  var index = 0;\n  var character;\n  var rest;\n  var nextIndex;\n  var content;\n  var line;\n  var startIndex;\n  var prefixed;\n  var exit;\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_SPACE && character !== C_TAB) {\n      break;\n    }\n\n    index++;\n  }\n\n  if (value.charAt(index) !== C_GT) {\n    return;\n  }\n\n  if (silent) {\n    return true;\n  }\n\n  index = 0;\n\n  while (index < length) {\n    nextIndex = value.indexOf(C_NEWLINE, index);\n    startIndex = index;\n    prefixed = false;\n\n    if (nextIndex === -1) {\n      nextIndex = length;\n    }\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (character !== C_SPACE && character !== C_TAB) {\n        break;\n      }\n\n      index++;\n    }\n\n    if (value.charAt(index) === C_GT) {\n      index++;\n      prefixed = true;\n\n      if (value.charAt(index) === C_SPACE) {\n        index++;\n      }\n    } else {\n      index = startIndex;\n    }\n\n    content = value.slice(index, nextIndex);\n\n    if (!prefixed && !trim(content)) {\n      index = startIndex;\n      break;\n    }\n\n    if (!prefixed) {\n      rest = value.slice(index);\n\n      /* Check if the following code contains a possible\n       * block. */\n      if (interrupt(interruptors, tokenizers, self, [eat, rest, true])) {\n        break;\n      }\n    }\n\n    line = startIndex === index ? content : value.slice(startIndex, nextIndex);\n\n    indents.push(index - startIndex);\n    values.push(line);\n    contents.push(content);\n\n    index = nextIndex + 1;\n  }\n\n  index = -1;\n  length = indents.length;\n  add = eat(values.join(C_NEWLINE));\n\n  while (++index < length) {\n    offsets[currentLine] = (offsets[currentLine] || 0) + indents[index];\n    currentLine++;\n  }\n\n  exit = self.enterBlock();\n  contents = self.tokenizeBlock(contents.join(C_NEWLINE), now);\n  exit();\n\n  return add({\n    type: 'blockquote',\n    children: contents\n  });\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:tokenize:break\n * @fileoverview Tokenise a break.\n */\n\n'use strict';\n\nvar locate = require('../locate/break');\n\nmodule.exports = hardBreak;\nhardBreak.locator = locate;\n\nvar MIN_BREAK_LENGTH = 2;\n\n/* Tokenise a break. */\nfunction hardBreak(eat, value, silent) {\n  var self = this;\n  var breaks = self.options.breaks;\n  var length = value.length;\n  var index = -1;\n  var queue = '';\n  var character;\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (character === '\\n') {\n      if (!breaks && index < MIN_BREAK_LENGTH) {\n        return;\n      }\n\n      /* istanbul ignore if - never used (yet) */\n      if (silent) {\n        return true;\n      }\n\n      queue += character;\n\n      return eat(queue)({type: 'break'});\n    }\n\n    if (character !== ' ') {\n      return;\n    }\n\n    queue += character;\n  }\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:tokenize:code-fenced\n * @fileoverview Tokenise fenced code.\n */\n\n'use strict';\n\nvar trim = require('trim-trailing-lines');\n\nmodule.exports = fencedCode;\n\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_TILDE = '~';\nvar C_TICK = '`';\n\nvar MIN_FENCE_COUNT = 3;\nvar CODE_INDENT_COUNT = 4;\n\n/* Tokenise fenced code. */\nfunction fencedCode(eat, value, silent) {\n  var self = this;\n  var settings = self.options;\n  var length = value.length + 1;\n  var index = 0;\n  var subvalue = '';\n  var fenceCount;\n  var marker;\n  var character;\n  var flag;\n  var queue;\n  var content;\n  var exdentedContent;\n  var closing;\n  var exdentedClosing;\n  var indent;\n  var now;\n\n  if (!settings.gfm) {\n    return;\n  }\n\n  /* Eat initial spacing. */\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_SPACE && character !== C_TAB) {\n      break;\n    }\n\n    subvalue += character;\n    index++;\n  }\n\n  indent = index;\n\n  /* Eat the fence. */\n  character = value.charAt(index);\n\n  if (character !== C_TILDE && character !== C_TICK) {\n    return;\n  }\n\n  index++;\n  marker = character;\n  fenceCount = 1;\n  subvalue += character;\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character !== marker) {\n      break;\n    }\n\n    subvalue += character;\n    fenceCount++;\n    index++;\n  }\n\n  if (fenceCount < MIN_FENCE_COUNT) {\n    return;\n  }\n\n  /* Eat spacing before flag. */\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_SPACE && character !== C_TAB) {\n      break;\n    }\n\n    subvalue += character;\n    index++;\n  }\n\n  /* Eat flag. */\n  flag = queue = '';\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (\n      character === C_NEWLINE ||\n      character === C_TILDE ||\n      character === C_TICK\n    ) {\n      break;\n    }\n\n    if (character === C_SPACE || character === C_TAB) {\n      queue += character;\n    } else {\n      flag += queue + character;\n      queue = '';\n    }\n\n    index++;\n  }\n\n  character = value.charAt(index);\n\n  if (character && character !== C_NEWLINE) {\n    return;\n  }\n\n  if (silent) {\n    return true;\n  }\n\n  now = eat.now();\n  now.column += subvalue.length;\n  now.offset += subvalue.length;\n\n  subvalue += flag;\n  flag = self.decode.raw(self.unescape(flag), now);\n\n  if (queue) {\n    subvalue += queue;\n  }\n\n  queue = closing = exdentedClosing = content = exdentedContent = '';\n\n  /* Eat content. */\n  while (index < length) {\n    character = value.charAt(index);\n    content += closing;\n    exdentedContent += exdentedClosing;\n    closing = exdentedClosing = '';\n\n    if (character !== C_NEWLINE) {\n      content += character;\n      exdentedClosing += character;\n      index++;\n      continue;\n    }\n\n    /* Add the newline to `subvalue` if its the first\n     * character.  Otherwise, add it to the `closing`\n     * queue. */\n    if (content) {\n      closing += character;\n      exdentedClosing += character;\n    } else {\n      subvalue += character;\n    }\n\n    queue = '';\n    index++;\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (character !== C_SPACE) {\n        break;\n      }\n\n      queue += character;\n      index++;\n    }\n\n    closing += queue;\n    exdentedClosing += queue.slice(indent);\n\n    if (queue.length >= CODE_INDENT_COUNT) {\n      continue;\n    }\n\n    queue = '';\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (character !== marker) {\n        break;\n      }\n\n      queue += character;\n      index++;\n    }\n\n    closing += queue;\n    exdentedClosing += queue;\n\n    if (queue.length < fenceCount) {\n      continue;\n    }\n\n    queue = '';\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (character !== C_SPACE && character !== C_TAB) {\n        break;\n      }\n\n      closing += character;\n      exdentedClosing += character;\n      index++;\n    }\n\n    if (!character || character === C_NEWLINE) {\n      break;\n    }\n  }\n\n  subvalue += content + closing;\n\n  return eat(subvalue)({\n    type: 'code',\n    lang: flag || null,\n    value: trim(exdentedContent)\n  });\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:tokenize:code-indented\n * @fileoverview Tokenise indented code.\n */\n\n'use strict';\n\nvar repeat = require('repeat-string');\nvar trim = require('trim-trailing-lines');\n\nmodule.exports = indentedCode;\n\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\n\nvar CODE_INDENT_COUNT = 4;\nvar CODE_INDENT = repeat(C_SPACE, CODE_INDENT_COUNT);\n\n/* Tokenise indented code. */\nfunction indentedCode(eat, value, silent) {\n  var index = -1;\n  var length = value.length;\n  var subvalue = '';\n  var content = '';\n  var subvalueQueue = '';\n  var contentQueue = '';\n  var character;\n  var blankQueue;\n  var indent;\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (indent) {\n      indent = false;\n\n      subvalue += subvalueQueue;\n      content += contentQueue;\n      subvalueQueue = contentQueue = '';\n\n      if (character === C_NEWLINE) {\n        subvalueQueue = contentQueue = character;\n      } else {\n        subvalue += character;\n        content += character;\n\n        while (++index < length) {\n          character = value.charAt(index);\n\n          if (!character || character === C_NEWLINE) {\n            contentQueue = subvalueQueue = character;\n            break;\n          }\n\n          subvalue += character;\n          content += character;\n        }\n      }\n    } else if (\n      character === C_SPACE &&\n      value.charAt(index + 1) === character &&\n      value.charAt(index + 2) === character &&\n      value.charAt(index + 3) === character\n    ) {\n      subvalueQueue += CODE_INDENT;\n      index += 3;\n      indent = true;\n    } else if (character === C_TAB) {\n      subvalueQueue += character;\n      indent = true;\n    } else {\n      blankQueue = '';\n\n      while (character === C_TAB || character === C_SPACE) {\n        blankQueue += character;\n        character = value.charAt(++index);\n      }\n\n      if (character !== C_NEWLINE) {\n        break;\n      }\n\n      subvalueQueue += blankQueue + character;\n      contentQueue += character;\n    }\n  }\n\n  if (content) {\n    if (silent) {\n      return true;\n    }\n\n    return eat(subvalue)({\n      type: 'code',\n      lang: null,\n      value: trim(content)\n    });\n  }\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:tokenize:code-inline\n * @fileoverview Tokenise inline code.\n */\n\n'use strict';\n\nvar whitespace = require('is-whitespace-character');\nvar locate = require('../locate/code-inline');\n\nmodule.exports = inlineCode;\ninlineCode.locator = locate;\n\nvar C_TICK = '`';\n\n/* Tokenise inline code. */\nfunction inlineCode(eat, value, silent) {\n  var length = value.length;\n  var index = 0;\n  var queue = '';\n  var tickQueue = '';\n  var contentQueue;\n  var subqueue;\n  var count;\n  var openingCount;\n  var subvalue;\n  var character;\n  var found;\n  var next;\n\n  while (index < length) {\n    if (value.charAt(index) !== C_TICK) {\n      break;\n    }\n\n    queue += C_TICK;\n    index++;\n  }\n\n  if (!queue) {\n    return;\n  }\n\n  subvalue = queue;\n  openingCount = index;\n  queue = '';\n  next = value.charAt(index);\n  count = 0;\n\n  while (index < length) {\n    character = next;\n    next = value.charAt(index + 1);\n\n    if (character === C_TICK) {\n      count++;\n      tickQueue += character;\n    } else {\n      count = 0;\n      queue += character;\n    }\n\n    if (count && next !== C_TICK) {\n      if (count === openingCount) {\n        subvalue += queue + tickQueue;\n        found = true;\n        break;\n      }\n\n      queue += tickQueue;\n      tickQueue = '';\n    }\n\n    index++;\n  }\n\n  if (!found) {\n    if (openingCount % 2 !== 0) {\n      return;\n    }\n\n    queue = '';\n  }\n\n  /* istanbul ignore if - never used (yet) */\n  if (silent) {\n    return true;\n  }\n\n  contentQueue = subqueue = '';\n  length = queue.length;\n  index = -1;\n\n  while (++index < length) {\n    character = queue.charAt(index);\n\n    if (whitespace(character)) {\n      subqueue += character;\n      continue;\n    }\n\n    if (subqueue) {\n      if (contentQueue) {\n        contentQueue += subqueue;\n      }\n\n      subqueue = '';\n    }\n\n    contentQueue += character;\n  }\n\n  return eat(subvalue)({\n    type: 'inlineCode',\n    value: contentQueue\n  });\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:tokenize:definition\n * @fileoverview Tokenise a definition.\n */\n\n'use strict';\n\nvar whitespace = require('is-whitespace-character');\nvar normalize = require('../util/normalize');\n\nmodule.exports = definition;\ndefinition.notInList = true;\ndefinition.notInBlock = true;\n\nvar C_DOUBLE_QUOTE = '\"';\nvar C_SINGLE_QUOTE = '\\'';\nvar C_BACKSLASH = '\\\\';\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_BRACKET_OPEN = '[';\nvar C_BRACKET_CLOSE = ']';\nvar C_PAREN_OPEN = '(';\nvar C_PAREN_CLOSE = ')';\nvar C_COLON = ':';\nvar C_LT = '<';\nvar C_GT = '>';\n\n/* Tokenise a definition. */\nfunction definition(eat, value, silent) {\n  var self = this;\n  var commonmark = self.options.commonmark;\n  var index = 0;\n  var length = value.length;\n  var subvalue = '';\n  var beforeURL;\n  var beforeTitle;\n  var queue;\n  var character;\n  var test;\n  var identifier;\n  var url;\n  var title;\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_SPACE && character !== C_TAB) {\n      break;\n    }\n\n    subvalue += character;\n    index++;\n  }\n\n  character = value.charAt(index);\n\n  if (character !== C_BRACKET_OPEN) {\n    return;\n  }\n\n  index++;\n  subvalue += character;\n  queue = '';\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character === C_BRACKET_CLOSE) {\n      break;\n    } else if (character === C_BACKSLASH) {\n      queue += character;\n      index++;\n      character = value.charAt(index);\n    }\n\n    queue += character;\n    index++;\n  }\n\n  if (\n    !queue ||\n    value.charAt(index) !== C_BRACKET_CLOSE ||\n    value.charAt(index + 1) !== C_COLON\n  ) {\n    return;\n  }\n\n  identifier = queue;\n  subvalue += queue + C_BRACKET_CLOSE + C_COLON;\n  index = subvalue.length;\n  queue = '';\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (\n      character !== C_TAB &&\n      character !== C_SPACE &&\n      character !== C_NEWLINE\n    ) {\n      break;\n    }\n\n    subvalue += character;\n    index++;\n  }\n\n  character = value.charAt(index);\n  queue = '';\n  beforeURL = subvalue;\n\n  if (character === C_LT) {\n    index++;\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (!isEnclosedURLCharacter(character)) {\n        break;\n      }\n\n      queue += character;\n      index++;\n    }\n\n    character = value.charAt(index);\n\n    if (character === isEnclosedURLCharacter.delimiter) {\n      subvalue += C_LT + queue + character;\n      index++;\n    } else {\n      if (commonmark) {\n        return;\n      }\n\n      index -= queue.length + 1;\n      queue = '';\n    }\n  }\n\n  if (!queue) {\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (!isUnclosedURLCharacter(character)) {\n        break;\n      }\n\n      queue += character;\n      index++;\n    }\n\n    subvalue += queue;\n  }\n\n  if (!queue) {\n    return;\n  }\n\n  url = queue;\n  queue = '';\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (\n      character !== C_TAB &&\n      character !== C_SPACE &&\n      character !== C_NEWLINE\n    ) {\n      break;\n    }\n\n    queue += character;\n    index++;\n  }\n\n  character = value.charAt(index);\n  test = null;\n\n  if (character === C_DOUBLE_QUOTE) {\n    test = C_DOUBLE_QUOTE;\n  } else if (character === C_SINGLE_QUOTE) {\n    test = C_SINGLE_QUOTE;\n  } else if (character === C_PAREN_OPEN) {\n    test = C_PAREN_CLOSE;\n  }\n\n  if (!test) {\n    queue = '';\n    index = subvalue.length;\n  } else if (queue) {\n    subvalue += queue + character;\n    index = subvalue.length;\n    queue = '';\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (character === test) {\n        break;\n      }\n\n      if (character === C_NEWLINE) {\n        index++;\n        character = value.charAt(index);\n\n        if (character === C_NEWLINE || character === test) {\n          return;\n        }\n\n        queue += C_NEWLINE;\n      }\n\n      queue += character;\n      index++;\n    }\n\n    character = value.charAt(index);\n\n    if (character !== test) {\n      return;\n    }\n\n    beforeTitle = subvalue;\n    subvalue += queue + character;\n    index++;\n    title = queue;\n    queue = '';\n  } else {\n    return;\n  }\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_TAB && character !== C_SPACE) {\n      break;\n    }\n\n    subvalue += character;\n    index++;\n  }\n\n  character = value.charAt(index);\n\n  if (!character || character === C_NEWLINE) {\n    if (silent) {\n      return true;\n    }\n\n    beforeURL = eat(beforeURL).test().end;\n    url = self.decode.raw(self.unescape(url), beforeURL);\n\n    if (title) {\n      beforeTitle = eat(beforeTitle).test().end;\n      title = self.decode.raw(self.unescape(title), beforeTitle);\n    }\n\n    return eat(subvalue)({\n      type: 'definition',\n      identifier: normalize(identifier),\n      title: title || null,\n      url: url\n    });\n  }\n}\n\n/* Check if `character` can be inside an enclosed URI. */\nfunction isEnclosedURLCharacter(character) {\n  return character !== C_GT &&\n    character !== C_BRACKET_OPEN &&\n    character !== C_BRACKET_CLOSE;\n}\n\nisEnclosedURLCharacter.delimiter = C_GT;\n\n/* Check if `character` can be inside an unclosed URI. */\nfunction isUnclosedURLCharacter(character) {\n  return character !== C_BRACKET_OPEN &&\n    character !== C_BRACKET_CLOSE &&\n    !whitespace(character);\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:tokenize:delete\n * @fileoverview Tokenise strikethrough.\n */\n\n'use strict';\n\nvar whitespace = require('is-whitespace-character');\nvar locate = require('../locate/delete');\n\nmodule.exports = strikethrough;\nstrikethrough.locator = locate;\n\nvar C_TILDE = '~';\nvar DOUBLE = '~~';\n\n/* Tokenise strikethrough. */\nfunction strikethrough(eat, value, silent) {\n  var self = this;\n  var character = '';\n  var previous = '';\n  var preceding = '';\n  var subvalue = '';\n  var index;\n  var length;\n  var now;\n\n  if (\n    !self.options.gfm ||\n    value.charAt(0) !== C_TILDE ||\n    value.charAt(1) !== C_TILDE ||\n    whitespace(value.charAt(2))\n  ) {\n    return;\n  }\n\n  index = 1;\n  length = value.length;\n  now = eat.now();\n  now.column += 2;\n  now.offset += 2;\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (\n      character === C_TILDE &&\n      previous === C_TILDE &&\n      (!preceding || !whitespace(preceding))\n    ) {\n      /* istanbul ignore if - never used (yet) */\n      if (silent) {\n        return true;\n      }\n\n      return eat(DOUBLE + subvalue + DOUBLE)({\n        type: 'delete',\n        children: self.tokenizeInline(subvalue, now)\n      });\n    }\n\n    subvalue += previous;\n    preceding = previous;\n    previous = character;\n  }\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:tokenize:emphasis\n * @fileoverview Tokenise emphasis.\n */\n\n'use strict';\n\nvar trim = require('trim');\nvar word = require('is-word-character');\nvar whitespace = require('is-whitespace-character');\nvar locate = require('../locate/emphasis');\n\nmodule.exports = emphasis;\nemphasis.locator = locate;\n\nvar C_ASTERISK = '*';\nvar C_UNDERSCORE = '_';\n\n/* Tokenise emphasis. */\nfunction emphasis(eat, value, silent) {\n  var self = this;\n  var index = 0;\n  var character = value.charAt(index);\n  var now;\n  var pedantic;\n  var marker;\n  var queue;\n  var subvalue;\n  var length;\n  var prev;\n\n  if (character !== C_ASTERISK && character !== C_UNDERSCORE) {\n    return;\n  }\n\n  pedantic = self.options.pedantic;\n  subvalue = marker = character;\n  length = value.length;\n  index++;\n  queue = character = '';\n\n  if (pedantic && whitespace(value.charAt(index))) {\n    return;\n  }\n\n  while (index < length) {\n    prev = character;\n    character = value.charAt(index);\n\n    if (character === marker && (!pedantic || !whitespace(prev))) {\n      character = value.charAt(++index);\n\n      if (character !== marker) {\n        if (!trim(queue) || prev === marker) {\n          return;\n        }\n\n        if (!pedantic && marker === C_UNDERSCORE && word(character)) {\n          queue += marker;\n          continue;\n        }\n\n        /* istanbul ignore if - never used (yet) */\n        if (silent) {\n          return true;\n        }\n\n        now = eat.now();\n        now.column++;\n        now.offset++;\n\n        return eat(subvalue + queue + marker)({\n          type: 'emphasis',\n          children: self.tokenizeInline(queue, now)\n        });\n      }\n\n      queue += marker;\n    }\n\n    if (!pedantic && character === '\\\\') {\n      queue += character;\n      character = value.charAt(++index);\n    }\n\n    queue += character;\n    index++;\n  }\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:tokenize:escape\n * @fileoverview Tokenise an escape.\n */\n\n'use strict';\n\nvar locate = require('../locate/escape');\n\nmodule.exports = escape;\nescape.locator = locate;\n\n/* Tokenise an escape. */\nfunction escape(eat, value, silent) {\n  var self = this;\n  var character;\n  var node;\n\n  if (value.charAt(0) === '\\\\') {\n    character = value.charAt(1);\n\n    if (self.escape.indexOf(character) !== -1) {\n      /* istanbul ignore if - never used (yet) */\n      if (silent) {\n        return true;\n      }\n\n      if (character === '\\n') {\n        node = {type: 'break'};\n      } else {\n        node = {\n          type: 'text',\n          value: character\n        };\n      }\n\n      return eat('\\\\' + character)(node);\n    }\n  }\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:tokenize:footnote-definition\n * @fileoverview Tokenise footnote definition.\n */\n\n'use strict';\n\nvar whitespace = require('is-whitespace-character');\nvar normalize = require('../util/normalize');\n\nmodule.exports = footnoteDefinition;\nfootnoteDefinition.notInList = true;\nfootnoteDefinition.notInBlock = true;\n\nvar C_BACKSLASH = '\\\\';\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_BRACKET_OPEN = '[';\nvar C_BRACKET_CLOSE = ']';\nvar C_CARET = '^';\nvar C_COLON = ':';\n\nvar EXPRESSION_INITIAL_TAB = /^( {4}|\\t)?/gm;\n\n/* Tokenise a footnote definition. */\nfunction footnoteDefinition(eat, value, silent) {\n  var self = this;\n  var offsets = self.offset;\n  var index;\n  var length;\n  var subvalue;\n  var now;\n  var currentLine;\n  var content;\n  var queue;\n  var subqueue;\n  var character;\n  var identifier;\n  var add;\n  var exit;\n\n  if (!self.options.footnotes) {\n    return;\n  }\n\n  index = 0;\n  length = value.length;\n  subvalue = '';\n  now = eat.now();\n  currentLine = now.line;\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (!whitespace(character)) {\n      break;\n    }\n\n    subvalue += character;\n    index++;\n  }\n\n  if (\n    value.charAt(index) !== C_BRACKET_OPEN ||\n    value.charAt(index + 1) !== C_CARET\n  ) {\n    return;\n  }\n\n  subvalue += C_BRACKET_OPEN + C_CARET;\n  index = subvalue.length;\n  queue = '';\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character === C_BRACKET_CLOSE) {\n      break;\n    } else if (character === C_BACKSLASH) {\n      queue += character;\n      index++;\n      character = value.charAt(index);\n    }\n\n    queue += character;\n    index++;\n  }\n\n  if (\n    !queue ||\n    value.charAt(index) !== C_BRACKET_CLOSE ||\n    value.charAt(index + 1) !== C_COLON\n  ) {\n    return;\n  }\n\n  if (silent) {\n    return true;\n  }\n\n  identifier = normalize(queue);\n  subvalue += queue + C_BRACKET_CLOSE + C_COLON;\n  index = subvalue.length;\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_TAB && character !== C_SPACE) {\n      break;\n    }\n\n    subvalue += character;\n    index++;\n  }\n\n  now.column += subvalue.length;\n  now.offset += subvalue.length;\n  queue = content = subqueue = '';\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character === C_NEWLINE) {\n      subqueue = character;\n      index++;\n\n      while (index < length) {\n        character = value.charAt(index);\n\n        if (character !== C_NEWLINE) {\n          break;\n        }\n\n        subqueue += character;\n        index++;\n      }\n\n      queue += subqueue;\n      subqueue = '';\n\n      while (index < length) {\n        character = value.charAt(index);\n\n        if (character !== C_SPACE) {\n          break;\n        }\n\n        subqueue += character;\n        index++;\n      }\n\n      if (subqueue.length === 0) {\n        break;\n      }\n\n      queue += subqueue;\n    }\n\n    if (queue) {\n      content += queue;\n      queue = '';\n    }\n\n    content += character;\n    index++;\n  }\n\n  subvalue += content;\n\n  content = content.replace(EXPRESSION_INITIAL_TAB, function (line) {\n    offsets[currentLine] = (offsets[currentLine] || 0) + line.length;\n    currentLine++;\n\n    return '';\n  });\n\n  add = eat(subvalue);\n\n  exit = self.enterBlock();\n  content = self.tokenizeBlock(content, now);\n  exit();\n\n  return add({\n    type: 'footnoteDefinition',\n    identifier: identifier,\n    children: content\n  });\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:tokenize:heading-atx\n * @fileoverview Tokenise an ATX-style heading.\n */\n\n'use strict';\n\nmodule.exports = atxHeading;\n\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_HASH = '#';\n\nvar MAX_ATX_COUNT = 6;\n\n/* Tokenise an ATX-style heading. */\nfunction atxHeading(eat, value, silent) {\n  var self = this;\n  var settings = self.options;\n  var length = value.length + 1;\n  var index = -1;\n  var now = eat.now();\n  var subvalue = '';\n  var content = '';\n  var character;\n  var queue;\n  var depth;\n\n  /* Eat initial spacing. */\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_SPACE && character !== C_TAB) {\n      index--;\n      break;\n    }\n\n    subvalue += character;\n  }\n\n  /* Eat hashes. */\n  depth = 0;\n\n  while (++index <= length) {\n    character = value.charAt(index);\n\n    if (character !== C_HASH) {\n      index--;\n      break;\n    }\n\n    subvalue += character;\n    depth++;\n  }\n\n  if (depth > MAX_ATX_COUNT) {\n    return;\n  }\n\n  if (\n    !depth ||\n    (!settings.pedantic && value.charAt(index + 1) === C_HASH)\n  ) {\n    return;\n  }\n\n  length = value.length + 1;\n\n  /* Eat intermediate white-space. */\n  queue = '';\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_SPACE && character !== C_TAB) {\n      index--;\n      break;\n    }\n\n    queue += character;\n  }\n\n  /* Exit when not in pedantic mode without spacing. */\n  if (\n    !settings.pedantic &&\n    queue.length === 0 &&\n    character &&\n    character !== C_NEWLINE\n  ) {\n    return;\n  }\n\n  if (silent) {\n    return true;\n  }\n\n  /* Eat content. */\n  subvalue += queue;\n  queue = content = '';\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (!character || character === C_NEWLINE) {\n      break;\n    }\n\n    if (\n      character !== C_SPACE &&\n      character !== C_TAB &&\n      character !== C_HASH\n    ) {\n      content += queue + character;\n      queue = '';\n      continue;\n    }\n\n    while (character === C_SPACE || character === C_TAB) {\n      queue += character;\n      character = value.charAt(++index);\n    }\n\n    while (character === C_HASH) {\n      queue += character;\n      character = value.charAt(++index);\n    }\n\n    while (character === C_SPACE || character === C_TAB) {\n      queue += character;\n      character = value.charAt(++index);\n    }\n\n    index--;\n  }\n\n  now.column += subvalue.length;\n  now.offset += subvalue.length;\n  subvalue += content + queue;\n\n  return eat(subvalue)({\n    type: 'heading',\n    depth: depth,\n    children: self.tokenizeInline(content, now)\n  });\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:tokenize:heading-setext\n * @fileoverview Tokenise an setext-style heading.\n */\n\n'use strict';\n\nmodule.exports = setextHeading;\n\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_EQUALS = '=';\nvar C_DASH = '-';\n\nvar MAX_HEADING_INDENT = 3;\n\n/* Map of characters which can be used to mark setext\n * headers, mapping to their corresponding depth. */\nvar SETEXT_MARKERS = {};\n\nSETEXT_MARKERS[C_EQUALS] = 1;\nSETEXT_MARKERS[C_DASH] = 2;\n\n/* Tokenise an setext-style heading. */\nfunction setextHeading(eat, value, silent) {\n  var self = this;\n  var now = eat.now();\n  var length = value.length;\n  var index = -1;\n  var subvalue = '';\n  var content;\n  var queue;\n  var character;\n  var marker;\n  var depth;\n\n  /* Eat initial indentation. */\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_SPACE || index >= MAX_HEADING_INDENT) {\n      index--;\n      break;\n    }\n\n    subvalue += character;\n  }\n\n  /* Eat content. */\n  content = queue = '';\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (character === C_NEWLINE) {\n      index--;\n      break;\n    }\n\n    if (character === C_SPACE || character === C_TAB) {\n      queue += character;\n    } else {\n      content += queue + character;\n      queue = '';\n    }\n  }\n\n  now.column += subvalue.length;\n  now.offset += subvalue.length;\n  subvalue += content + queue;\n\n  /* Ensure the content is followed by a newline and a\n   * valid marker. */\n  character = value.charAt(++index);\n  marker = value.charAt(++index);\n\n  if (character !== C_NEWLINE || !SETEXT_MARKERS[marker]) {\n    return;\n  }\n\n  subvalue += character;\n\n  /* Eat Setext-line. */\n  queue = marker;\n  depth = SETEXT_MARKERS[marker];\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (character !== marker) {\n      if (character !== C_NEWLINE) {\n        return;\n      }\n\n      index--;\n      break;\n    }\n\n    queue += character;\n  }\n\n  if (silent) {\n    return true;\n  }\n\n  return eat(subvalue + queue)({\n    type: 'heading',\n    depth: depth,\n    children: self.tokenizeInline(content, now)\n  });\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:tokenize:html-block\n * @fileoverview Tokenise block HTML.\n */\n\n'use strict';\n\nvar openCloseTag = require('../util/html').openCloseTag;\n\nmodule.exports = blockHTML;\n\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_NEWLINE = '\\n';\nvar C_LT = '<';\n\n/* Tokenise block HTML. */\nfunction blockHTML(eat, value, silent) {\n  var self = this;\n  var blocks = self.options.blocks;\n  var length = value.length;\n  var index = 0;\n  var next;\n  var line;\n  var offset;\n  var character;\n  var count;\n  var sequence;\n  var subvalue;\n\n  var sequences = [\n    [/^<(script|pre|style)(?=(\\s|>|$))/i, /<\\/(script|pre|style)>/i, true],\n    [/^<!--/, /-->/, true],\n    [/^<\\?/, /\\?>/, true],\n    [/^<![A-Za-z]/, />/, true],\n    [/^<!\\[CDATA\\[/, /\\]\\]>/, true],\n    [new RegExp('^</?(' + blocks.join('|') + ')(?=(\\\\s|/?>|$))', 'i'), /^$/, true],\n    [new RegExp(openCloseTag.source + '\\\\s*$'), /^$/, false]\n  ];\n\n  /* Eat initial spacing. */\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_TAB && character !== C_SPACE) {\n      break;\n    }\n\n    index++;\n  }\n\n  if (value.charAt(index) !== C_LT) {\n    return;\n  }\n\n  next = value.indexOf(C_NEWLINE, index + 1);\n  next = next === -1 ? length : next;\n  line = value.slice(index, next);\n  offset = -1;\n  count = sequences.length;\n\n  while (++offset < count) {\n    if (sequences[offset][0].test(line)) {\n      sequence = sequences[offset];\n      break;\n    }\n  }\n\n  if (!sequence) {\n    return;\n  }\n\n  if (silent) {\n    return sequence[2];\n  }\n\n  index = next;\n\n  if (!sequence[1].test(line)) {\n    while (index < length) {\n      next = value.indexOf(C_NEWLINE, index + 1);\n      next = next === -1 ? length : next;\n      line = value.slice(index + 1, next);\n\n      if (sequence[1].test(line)) {\n        if (line) {\n          index = next;\n        }\n\n        break;\n      }\n\n      index = next;\n    }\n  }\n\n  subvalue = value.slice(0, index);\n\n  return eat(subvalue)({type: 'html', value: subvalue});\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:tokenize:html-inline\n * @fileoverview Tokenise inline HTML.\n */\n\n'use strict';\n\nvar alphabetical = require('is-alphabetical');\nvar locate = require('../locate/tag');\nvar tag = require('../util/html').tag;\n\nmodule.exports = inlineHTML;\ninlineHTML.locator = locate;\n\nvar EXPRESSION_HTML_LINK_OPEN = /^<a /i;\nvar EXPRESSION_HTML_LINK_CLOSE = /^<\\/a>/i;\n\n/* Tokenise inline HTML. */\nfunction inlineHTML(eat, value, silent) {\n  var self = this;\n  var length = value.length;\n  var character;\n  var subvalue;\n\n  if (value.charAt(0) !== '<' || length < 3) {\n    return;\n  }\n\n  character = value.charAt(1);\n\n  if (\n    !alphabetical(character) &&\n    character !== '?' &&\n    character !== '!' &&\n    character !== '/'\n  ) {\n    return;\n  }\n\n  subvalue = value.match(tag);\n\n  if (!subvalue) {\n    return;\n  }\n\n  /* istanbul ignore if - not used yet. */\n  if (silent) {\n    return true;\n  }\n\n  subvalue = subvalue[0];\n\n  if (!self.inLink && EXPRESSION_HTML_LINK_OPEN.test(subvalue)) {\n    self.inLink = true;\n  } else if (self.inLink && EXPRESSION_HTML_LINK_CLOSE.test(subvalue)) {\n    self.inLink = false;\n  }\n\n  return eat(subvalue)({type: 'html', value: subvalue});\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:tokenize:link\n * @fileoverview Tokenise a link.\n */\n\n'use strict';\n\nvar has = require('has');\nvar whitespace = require('is-whitespace-character');\nvar locate = require('../locate/link');\n\nmodule.exports = link;\nlink.locator = locate;\n\nvar C_BACKSLASH = '\\\\';\nvar C_BRACKET_OPEN = '[';\nvar C_BRACKET_CLOSE = ']';\nvar C_PAREN_OPEN = '(';\nvar C_PAREN_CLOSE = ')';\nvar C_LT = '<';\nvar C_GT = '>';\nvar C_TICK = '`';\nvar C_DOUBLE_QUOTE = '\"';\nvar C_SINGLE_QUOTE = '\\'';\n\n/* Map of characters, which can be used to mark link\n * and image titles. */\nvar LINK_MARKERS = {};\n\nLINK_MARKERS[C_DOUBLE_QUOTE] = C_DOUBLE_QUOTE;\nLINK_MARKERS[C_SINGLE_QUOTE] = C_SINGLE_QUOTE;\n\n/* Map of characters, which can be used to mark link\n * and image titles in commonmark-mode. */\nvar COMMONMARK_LINK_MARKERS = {};\n\nCOMMONMARK_LINK_MARKERS[C_DOUBLE_QUOTE] = C_DOUBLE_QUOTE;\nCOMMONMARK_LINK_MARKERS[C_SINGLE_QUOTE] = C_SINGLE_QUOTE;\nCOMMONMARK_LINK_MARKERS[C_PAREN_OPEN] = C_PAREN_CLOSE;\n\n/* Tokenise a link. */\nfunction link(eat, value, silent) {\n  var self = this;\n  var subvalue = '';\n  var index = 0;\n  var character = value.charAt(0);\n  var commonmark = self.options.commonmark;\n  var gfm = self.options.gfm;\n  var closed;\n  var count;\n  var opening;\n  var beforeURL;\n  var beforeTitle;\n  var subqueue;\n  var hasMarker;\n  var markers;\n  var isImage;\n  var content;\n  var marker;\n  var length;\n  var title;\n  var depth;\n  var queue;\n  var url;\n  var now;\n  var exit;\n  var node;\n\n  /* Detect whether this is an image. */\n  if (character === '!') {\n    isImage = true;\n    subvalue = character;\n    character = value.charAt(++index);\n  }\n\n  /* Eat the opening. */\n  if (character !== C_BRACKET_OPEN) {\n    return;\n  }\n\n  /* Exit when this is a link and we’re already inside\n   * a link. */\n  if (!isImage && self.inLink) {\n    return;\n  }\n\n  subvalue += character;\n  queue = '';\n  index++;\n\n  /* Eat the content. */\n  length = value.length;\n  now = eat.now();\n  depth = 0;\n\n  now.column += index;\n  now.offset += index;\n\n  while (index < length) {\n    subqueue = character = value.charAt(index);\n\n    if (character === C_TICK) {\n      /* Inline-code in link content. */\n      count = 1;\n\n      while (value.charAt(index + 1) === C_TICK) {\n        subqueue += character;\n        index++;\n        count++;\n      }\n\n      if (!opening) {\n        opening = count;\n      } else if (count >= opening) {\n        opening = 0;\n      }\n    } else if (character === C_BACKSLASH) {\n      /* Allow brackets to be escaped. */\n      index++;\n      subqueue += value.charAt(index);\n    /* In GFM mode, brackets in code still count.\n     * In all other modes, they don’t.  This empty\n     * block prevents the next statements are\n     * entered. */\n    } else if ((!opening || gfm) && character === C_BRACKET_OPEN) {\n      depth++;\n    } else if ((!opening || gfm) && character === C_BRACKET_CLOSE) {\n      if (depth) {\n        depth--;\n      } else {\n        /* Allow white-space between content and\n         * url in GFM mode. */\n        if (gfm) {\n          while (index < length) {\n            character = value.charAt(index + 1);\n\n            if (!whitespace(character)) {\n              break;\n            }\n\n            subqueue += character;\n            index++;\n          }\n        }\n\n        if (value.charAt(index + 1) !== C_PAREN_OPEN) {\n          return;\n        }\n\n        subqueue += C_PAREN_OPEN;\n        closed = true;\n        index++;\n\n        break;\n      }\n    }\n\n    queue += subqueue;\n    subqueue = '';\n    index++;\n  }\n\n  /* Eat the content closing. */\n  if (!closed) {\n    return;\n  }\n\n  content = queue;\n  subvalue += queue + subqueue;\n  index++;\n\n  /* Eat white-space. */\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (!whitespace(character)) {\n      break;\n    }\n\n    subvalue += character;\n    index++;\n  }\n\n  /* Eat the URL. */\n  character = value.charAt(index);\n  markers = commonmark ? COMMONMARK_LINK_MARKERS : LINK_MARKERS;\n  queue = '';\n  beforeURL = subvalue;\n\n  if (character === C_LT) {\n    index++;\n    beforeURL += C_LT;\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (character === C_GT) {\n        break;\n      }\n\n      if (commonmark && character === '\\n') {\n        return;\n      }\n\n      queue += character;\n      index++;\n    }\n\n    if (value.charAt(index) !== C_GT) {\n      return;\n    }\n\n    subvalue += C_LT + queue + C_GT;\n    url = queue;\n    index++;\n  } else {\n    character = null;\n    subqueue = '';\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (subqueue && has(markers, character)) {\n        break;\n      }\n\n      if (whitespace(character)) {\n        if (commonmark) {\n          break;\n        }\n\n        subqueue += character;\n      } else {\n        if (character === C_PAREN_OPEN) {\n          depth++;\n        } else if (character === C_PAREN_CLOSE) {\n          if (depth === 0) {\n            break;\n          }\n\n          depth--;\n        }\n\n        queue += subqueue;\n        subqueue = '';\n\n        if (character === C_BACKSLASH) {\n          queue += C_BACKSLASH;\n          character = value.charAt(++index);\n        }\n\n        queue += character;\n      }\n\n      index++;\n    }\n\n    subvalue += queue;\n    url = queue;\n    index = subvalue.length;\n  }\n\n  /* Eat white-space. */\n  queue = '';\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (!whitespace(character)) {\n      break;\n    }\n\n    queue += character;\n    index++;\n  }\n\n  character = value.charAt(index);\n  subvalue += queue;\n\n  /* Eat the title. */\n  if (queue && has(markers, character)) {\n    index++;\n    subvalue += character;\n    queue = '';\n    marker = markers[character];\n    beforeTitle = subvalue;\n\n    /* In commonmark-mode, things are pretty easy: the\n     * marker cannot occur inside the title.\n     *\n     * Non-commonmark does, however, support nested\n     * delimiters. */\n    if (commonmark) {\n      while (index < length) {\n        character = value.charAt(index);\n\n        if (character === marker) {\n          break;\n        }\n\n        if (character === C_BACKSLASH) {\n          queue += C_BACKSLASH;\n          character = value.charAt(++index);\n        }\n\n        index++;\n        queue += character;\n      }\n\n      character = value.charAt(index);\n\n      if (character !== marker) {\n        return;\n      }\n\n      title = queue;\n      subvalue += queue + character;\n      index++;\n\n      while (index < length) {\n        character = value.charAt(index);\n\n        if (!whitespace(character)) {\n          break;\n        }\n\n        subvalue += character;\n        index++;\n      }\n    } else {\n      subqueue = '';\n\n      while (index < length) {\n        character = value.charAt(index);\n\n        if (character === marker) {\n          if (hasMarker) {\n            queue += marker + subqueue;\n            subqueue = '';\n          }\n\n          hasMarker = true;\n        } else if (!hasMarker) {\n          queue += character;\n        } else if (character === C_PAREN_CLOSE) {\n          subvalue += queue + marker + subqueue;\n          title = queue;\n          break;\n        } else if (whitespace(character)) {\n          subqueue += character;\n        } else {\n          queue += marker + subqueue + character;\n          subqueue = '';\n          hasMarker = false;\n        }\n\n        index++;\n      }\n    }\n  }\n\n  if (value.charAt(index) !== C_PAREN_CLOSE) {\n    return;\n  }\n\n  /* istanbul ignore if - never used (yet) */\n  if (silent) {\n    return true;\n  }\n\n  subvalue += C_PAREN_CLOSE;\n\n  url = self.decode.raw(self.unescape(url), eat(beforeURL).test().end);\n\n  if (title) {\n    beforeTitle = eat(beforeTitle).test().end;\n    title = self.decode.raw(self.unescape(title), beforeTitle);\n  }\n\n  node = {\n    type: isImage ? 'image' : 'link',\n    title: title || null,\n    url: url\n  };\n\n  if (isImage) {\n    node.alt = self.decode.raw(self.unescape(content), now) || null;\n  } else {\n    exit = self.enterLink();\n    node.children = self.tokenizeInline(content, now);\n    exit();\n  }\n\n  return eat(subvalue)(node);\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:tokenize:list\n * @fileoverview Tokenise a list.\n */\n\n'use strict';\n\n/* eslint-disable max-params */\n\nvar trim = require('trim');\nvar repeat = require('repeat-string');\nvar decimal = require('is-decimal');\nvar getIndent = require('../util/get-indentation');\nvar removeIndent = require('../util/remove-indentation');\nvar interrupt = require('../util/interrupt');\n\nmodule.exports = list;\n\nvar C_ASTERISK = '*';\nvar C_UNDERSCORE = '_';\nvar C_PLUS = '+';\nvar C_DASH = '-';\nvar C_DOT = '.';\nvar C_SPACE = ' ';\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_PAREN_CLOSE = ')';\nvar C_X_LOWER = 'x';\n\nvar TAB_SIZE = 4;\nvar EXPRESSION_LOOSE_LIST_ITEM = /\\n\\n(?!\\s*$)/;\nvar EXPRESSION_TASK_ITEM = /^\\[([ \\t]|x|X)][ \\t]/;\nvar EXPRESSION_BULLET = /^([ \\t]*)([*+-]|\\d+[.)])( {1,4}(?! )| |\\t|$|(?=\\n))([^\\n]*)/;\nvar EXPRESSION_PEDANTIC_BULLET = /^([ \\t]*)([*+-]|\\d+[.)])([ \\t]+)/;\nvar EXPRESSION_INITIAL_INDENT = /^( {1,4}|\\t)?/gm;\n\n/* Map of characters which can be used to mark\n * list-items. */\nvar LIST_UNORDERED_MARKERS = {};\n\nLIST_UNORDERED_MARKERS[C_ASTERISK] = true;\nLIST_UNORDERED_MARKERS[C_PLUS] = true;\nLIST_UNORDERED_MARKERS[C_DASH] = true;\n\n/* Map of characters which can be used to mark\n * list-items after a digit. */\nvar LIST_ORDERED_MARKERS = {};\n\nLIST_ORDERED_MARKERS[C_DOT] = true;\n\n/* Map of characters which can be used to mark\n * list-items after a digit. */\nvar LIST_ORDERED_COMMONMARK_MARKERS = {};\n\nLIST_ORDERED_COMMONMARK_MARKERS[C_DOT] = true;\nLIST_ORDERED_COMMONMARK_MARKERS[C_PAREN_CLOSE] = true;\n\n/* Tokenise a list. */\nfunction list(eat, value, silent) {\n  var self = this;\n  var commonmark = self.options.commonmark;\n  var pedantic = self.options.pedantic;\n  var tokenizers = self.blockTokenizers;\n  var interuptors = self.interruptList;\n  var markers;\n  var index = 0;\n  var length = value.length;\n  var start = null;\n  var size = 0;\n  var queue;\n  var ordered;\n  var character;\n  var marker;\n  var nextIndex;\n  var startIndex;\n  var prefixed;\n  var currentMarker;\n  var content;\n  var line;\n  var prevEmpty;\n  var empty;\n  var items;\n  var allLines;\n  var emptyLines;\n  var item;\n  var enterTop;\n  var exitBlockquote;\n  var isLoose;\n  var node;\n  var now;\n  var end;\n  var indented;\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character === C_TAB) {\n      size += TAB_SIZE - (size % TAB_SIZE);\n    } else if (character === C_SPACE) {\n      size++;\n    } else {\n      break;\n    }\n\n    index++;\n  }\n\n  if (size >= TAB_SIZE) {\n    return;\n  }\n\n  character = value.charAt(index);\n\n  markers = commonmark ?\n    LIST_ORDERED_COMMONMARK_MARKERS :\n    LIST_ORDERED_MARKERS;\n\n  if (LIST_UNORDERED_MARKERS[character] === true) {\n    marker = character;\n    ordered = false;\n  } else {\n    ordered = true;\n    queue = '';\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (!decimal(character)) {\n        break;\n      }\n\n      queue += character;\n      index++;\n    }\n\n    character = value.charAt(index);\n\n    if (!queue || markers[character] !== true) {\n      return;\n    }\n\n    start = parseInt(queue, 10);\n    marker = character;\n  }\n\n  character = value.charAt(++index);\n\n  if (character !== C_SPACE && character !== C_TAB) {\n    return;\n  }\n\n  if (silent) {\n    return true;\n  }\n\n  index = 0;\n  items = [];\n  allLines = [];\n  emptyLines = [];\n\n  while (index < length) {\n    nextIndex = value.indexOf(C_NEWLINE, index);\n    startIndex = index;\n    prefixed = false;\n    indented = false;\n\n    if (nextIndex === -1) {\n      nextIndex = length;\n    }\n\n    end = index + TAB_SIZE;\n    size = 0;\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (character === C_TAB) {\n        size += TAB_SIZE - (size % TAB_SIZE);\n      } else if (character === C_SPACE) {\n        size++;\n      } else {\n        break;\n      }\n\n      index++;\n    }\n\n    if (size >= TAB_SIZE) {\n      indented = true;\n    }\n\n    if (item && size >= item.indent) {\n      indented = true;\n    }\n\n    character = value.charAt(index);\n    currentMarker = null;\n\n    if (!indented) {\n      if (LIST_UNORDERED_MARKERS[character] === true) {\n        currentMarker = character;\n        index++;\n        size++;\n      } else {\n        queue = '';\n\n        while (index < length) {\n          character = value.charAt(index);\n\n          if (!decimal(character)) {\n            break;\n          }\n\n          queue += character;\n          index++;\n        }\n\n        character = value.charAt(index);\n        index++;\n\n        if (queue && markers[character] === true) {\n          currentMarker = character;\n          size += queue.length + 1;\n        }\n      }\n\n      if (currentMarker) {\n        character = value.charAt(index);\n\n        if (character === C_TAB) {\n          size += TAB_SIZE - (size % TAB_SIZE);\n          index++;\n        } else if (character === C_SPACE) {\n          end = index + TAB_SIZE;\n\n          while (index < end) {\n            if (value.charAt(index) !== C_SPACE) {\n              break;\n            }\n\n            index++;\n            size++;\n          }\n\n          if (index === end && value.charAt(index) === C_SPACE) {\n            index -= TAB_SIZE - 1;\n            size -= TAB_SIZE - 1;\n          }\n        } else if (character !== C_NEWLINE && character !== '') {\n          currentMarker = null;\n        }\n      }\n    }\n\n    if (currentMarker) {\n      if (!pedantic && marker !== currentMarker) {\n        break;\n      }\n\n      prefixed = true;\n    } else {\n      if (!commonmark && !indented && value.charAt(startIndex) === C_SPACE) {\n        indented = true;\n      } else if (commonmark && item) {\n        indented = size >= item.indent || size > TAB_SIZE;\n      }\n\n      prefixed = false;\n      index = startIndex;\n    }\n\n    line = value.slice(startIndex, nextIndex);\n    content = startIndex === index ? line : value.slice(index, nextIndex);\n\n    if (\n      currentMarker === C_ASTERISK ||\n      currentMarker === C_UNDERSCORE ||\n      currentMarker === C_DASH\n    ) {\n      if (tokenizers.thematicBreak.call(self, eat, line, true)) {\n        break;\n      }\n    }\n\n    prevEmpty = empty;\n    empty = !trim(content).length;\n\n    if (indented && item) {\n      item.value = item.value.concat(emptyLines, line);\n      allLines = allLines.concat(emptyLines, line);\n      emptyLines = [];\n    } else if (prefixed) {\n      if (emptyLines.length !== 0) {\n        item.value.push('');\n        item.trail = emptyLines.concat();\n      }\n\n      item = {\n        value: [line],\n        indent: size,\n        trail: []\n      };\n\n      items.push(item);\n      allLines = allLines.concat(emptyLines, line);\n      emptyLines = [];\n    } else if (empty) {\n      if (prevEmpty) {\n        break;\n      }\n\n      emptyLines.push(line);\n    } else {\n      if (prevEmpty) {\n        break;\n      }\n\n      if (interrupt(interuptors, tokenizers, self, [eat, line, true])) {\n        break;\n      }\n\n      item.value = item.value.concat(emptyLines, line);\n      allLines = allLines.concat(emptyLines, line);\n      emptyLines = [];\n    }\n\n    index = nextIndex + 1;\n  }\n\n  node = eat(allLines.join(C_NEWLINE)).reset({\n    type: 'list',\n    ordered: ordered,\n    start: start,\n    loose: null,\n    children: []\n  });\n\n  enterTop = self.enterList();\n  exitBlockquote = self.enterBlock();\n  isLoose = false;\n  index = -1;\n  length = items.length;\n\n  while (++index < length) {\n    item = items[index].value.join(C_NEWLINE);\n    now = eat.now();\n\n    item = eat(item)(listItem(self, item, now), node);\n\n    if (item.loose) {\n      isLoose = true;\n    }\n\n    item = items[index].trail.join(C_NEWLINE);\n\n    if (index !== length - 1) {\n      item += C_NEWLINE;\n    }\n\n    eat(item);\n  }\n\n  enterTop();\n  exitBlockquote();\n\n  node.loose = isLoose;\n\n  return node;\n}\n\n/**\n * Create a list-item node.\n *\n * @example\n *   listItem('- _foo_', now());\n *\n * @param {Object} ctx - Parser.\n * @param {Object} value - List-item.\n * @param {Object} position - List-item location.\n * @return {Object} - `listItem` node.\n */\nfunction listItem(ctx, value, position) {\n  var offsets = ctx.offset;\n  var fn = ctx.options.pedantic ? pedanticListItem : normalListItem;\n  var checked = null;\n  var task;\n  var indent;\n\n  value = fn.apply(null, arguments);\n\n  if (ctx.options.gfm) {\n    task = value.match(EXPRESSION_TASK_ITEM);\n\n    if (task) {\n      indent = task[0].length;\n      checked = task[1].toLowerCase() === C_X_LOWER;\n      offsets[position.line] += indent;\n      value = value.slice(indent);\n    }\n  }\n\n  return {\n    type: 'listItem',\n    loose: EXPRESSION_LOOSE_LIST_ITEM.test(value) ||\n      value.charAt(value.length - 1) === C_NEWLINE,\n    checked: checked,\n    children: ctx.tokenizeBlock(value, position)\n  };\n}\n\n/* Create a list-item using overly simple mechanics. */\nfunction pedanticListItem(ctx, value, position) {\n  var offsets = ctx.offset;\n  var line = position.line;\n\n  /* Remove the list-item’s bullet. */\n  value = value.replace(EXPRESSION_PEDANTIC_BULLET, replacer);\n\n  /* The initial line was also matched by the below, so\n   * we reset the `line`. */\n  line = position.line;\n\n  return value.replace(EXPRESSION_INITIAL_INDENT, replacer);\n\n  /* A simple replacer which removed all matches,\n   * and adds their length to `offset`. */\n  function replacer($0) {\n    offsets[line] = (offsets[line] || 0) + $0.length;\n    line++;\n\n    return '';\n  }\n}\n\n/* Create a list-item using sane mechanics. */\nfunction normalListItem(ctx, value, position) {\n  var offsets = ctx.offset;\n  var line = position.line;\n  var max;\n  var bullet;\n  var rest;\n  var lines;\n  var trimmedLines;\n  var index;\n  var length;\n\n  /* Remove the list-item’s bullet. */\n  value = value.replace(EXPRESSION_BULLET, replacer);\n\n  lines = value.split(C_NEWLINE);\n\n  trimmedLines = removeIndent(value, getIndent(max).indent).split(C_NEWLINE);\n\n  /* We replaced the initial bullet with something\n   * else above, which was used to trick\n   * `removeIndentation` into removing some more\n   * characters when possible.  However, that could\n   * result in the initial line to be stripped more\n   * than it should be. */\n  trimmedLines[0] = rest;\n\n  offsets[line] = (offsets[line] || 0) + bullet.length;\n  line++;\n\n  index = 0;\n  length = lines.length;\n\n  while (++index < length) {\n    offsets[line] = (offsets[line] || 0) +\n      lines[index].length - trimmedLines[index].length;\n    line++;\n  }\n\n  return trimmedLines.join(C_NEWLINE);\n\n  function replacer($0, $1, $2, $3, $4) {\n    bullet = $1 + $2 + $3;\n    rest = $4;\n\n    /* Make sure that the first nine numbered list items\n     * can indent with an extra space.  That is, when\n     * the bullet did not receive an extra final space. */\n    if (Number($2) < 10 && bullet.length % 2 === 1) {\n      $2 = C_SPACE + $2;\n    }\n\n    max = $1 + repeat(C_SPACE, $2.length) + $3;\n\n    return max + rest;\n  }\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:tokenize:newline\n * @fileoverview Tokenise a newline.\n */\n\n'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nmodule.exports = newline;\n\n/* Tokenise newline. */\nfunction newline(eat, value, silent) {\n  var character = value.charAt(0);\n  var length;\n  var subvalue;\n  var queue;\n  var index;\n\n  if (character !== '\\n') {\n    return;\n  }\n\n  /* istanbul ignore if - never used (yet) */\n  if (silent) {\n    return true;\n  }\n\n  index = 1;\n  length = value.length;\n  subvalue = character;\n  queue = '';\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (!whitespace(character)) {\n      break;\n    }\n\n    queue += character;\n\n    if (character === '\\n') {\n      subvalue += queue;\n      queue = '';\n    }\n\n    index++;\n  }\n\n  eat(subvalue);\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:tokenize:paragraph\n * @fileoverview Tokenise a paragraph.\n */\n\n'use strict';\n\nvar trim = require('trim');\nvar decimal = require('is-decimal');\nvar trimTrailingLines = require('trim-trailing-lines');\nvar interrupt = require('../util/interrupt');\n\nmodule.exports = paragraph;\n\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\n\nvar TAB_SIZE = 4;\n\n/* Tokenise paragraph. */\nfunction paragraph(eat, value, silent) {\n  var self = this;\n  var settings = self.options;\n  var commonmark = settings.commonmark;\n  var gfm = settings.gfm;\n  var tokenizers = self.blockTokenizers;\n  var interruptors = self.interruptParagraph;\n  var index = value.indexOf(C_NEWLINE);\n  var length = value.length;\n  var position;\n  var subvalue;\n  var character;\n  var size;\n  var now;\n\n  while (index < length) {\n    /* Eat everything if there’s no following newline. */\n    if (index === -1) {\n      index = length;\n      break;\n    }\n\n    /* Stop if the next character is NEWLINE. */\n    if (value.charAt(index + 1) === C_NEWLINE) {\n      break;\n    }\n\n    /* In commonmark-mode, following indented lines\n     * are part of the paragraph. */\n    if (commonmark) {\n      size = 0;\n      position = index + 1;\n\n      while (position < length) {\n        character = value.charAt(position);\n\n        if (character === C_TAB) {\n          size = TAB_SIZE;\n          break;\n        } else if (character === C_SPACE) {\n          size++;\n        } else {\n          break;\n        }\n\n        position++;\n      }\n\n      if (size >= TAB_SIZE) {\n        index = value.indexOf(C_NEWLINE, index + 1);\n        continue;\n      }\n    }\n\n    subvalue = value.slice(index + 1);\n\n    /* Check if the following code contains a possible\n     * block. */\n    if (interrupt(interruptors, tokenizers, self, [eat, subvalue, true])) {\n      break;\n    }\n\n    /* Break if the following line starts a list, when\n     * already in a list, or when in commonmark, or when\n     * in gfm mode and the bullet is *not* numeric. */\n    if (\n      tokenizers.list.call(self, eat, subvalue, true) &&\n      (\n        self.inList ||\n        commonmark ||\n        (gfm && !decimal(trim.left(subvalue).charAt(0)))\n      )\n    ) {\n      break;\n    }\n\n    position = index;\n    index = value.indexOf(C_NEWLINE, index + 1);\n\n    if (index !== -1 && trim(value.slice(position, index)) === '') {\n      index = position;\n      break;\n    }\n  }\n\n  subvalue = value.slice(0, index);\n\n  if (trim(subvalue) === '') {\n    eat(subvalue);\n\n    return null;\n  }\n\n  /* istanbul ignore if - never used (yet) */\n  if (silent) {\n    return true;\n  }\n\n  now = eat.now();\n  subvalue = trimTrailingLines(subvalue);\n\n  return eat(subvalue)({\n    type: 'paragraph',\n    children: self.tokenizeInline(subvalue, now)\n  });\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:tokenize:reference\n * @fileoverview Tokenise a reference.\n */\n\n'use strict';\n\nvar whitespace = require('is-whitespace-character');\nvar locate = require('../locate/link');\nvar normalize = require('../util/normalize');\n\nmodule.exports = reference;\nreference.locator = locate;\n\nvar T_LINK = 'link';\nvar T_IMAGE = 'image';\nvar T_FOOTNOTE = 'footnote';\nvar REFERENCE_TYPE_SHORTCUT = 'shortcut';\nvar REFERENCE_TYPE_COLLAPSED = 'collapsed';\nvar REFERENCE_TYPE_FULL = 'full';\nvar C_CARET = '^';\nvar C_BACKSLASH = '\\\\';\nvar C_BRACKET_OPEN = '[';\nvar C_BRACKET_CLOSE = ']';\n\n/* Tokenise a reference. */\nfunction reference(eat, value, silent) {\n  var self = this;\n  var character = value.charAt(0);\n  var index = 0;\n  var length = value.length;\n  var subvalue = '';\n  var intro = '';\n  var type = T_LINK;\n  var referenceType = REFERENCE_TYPE_SHORTCUT;\n  var content;\n  var identifier;\n  var now;\n  var node;\n  var exit;\n  var queue;\n  var bracketed;\n  var depth;\n\n  /* Check whether we’re eating an image. */\n  if (character === '!') {\n    type = T_IMAGE;\n    intro = character;\n    character = value.charAt(++index);\n  }\n\n  if (character !== C_BRACKET_OPEN) {\n    return;\n  }\n\n  index++;\n  intro += character;\n  queue = '';\n\n  /* Check whether we’re eating a footnote. */\n  if (\n    self.options.footnotes &&\n    type === T_LINK &&\n    value.charAt(index) === C_CARET\n  ) {\n    intro += C_CARET;\n    index++;\n    type = T_FOOTNOTE;\n  }\n\n  /* Eat the text. */\n  depth = 0;\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character === C_BRACKET_OPEN) {\n      bracketed = true;\n      depth++;\n    } else if (character === C_BRACKET_CLOSE) {\n      if (!depth) {\n        break;\n      }\n\n      depth--;\n    }\n\n    if (character === C_BACKSLASH) {\n      queue += C_BACKSLASH;\n      character = value.charAt(++index);\n    }\n\n    queue += character;\n    index++;\n  }\n\n  subvalue = content = queue;\n  character = value.charAt(index);\n\n  if (character !== C_BRACKET_CLOSE) {\n    return;\n  }\n\n  index++;\n  subvalue += character;\n  queue = '';\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (!whitespace(character)) {\n      break;\n    }\n\n    queue += character;\n    index++;\n  }\n\n  character = value.charAt(index);\n\n  if (character === C_BRACKET_OPEN) {\n    identifier = '';\n    queue += character;\n    index++;\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (character === C_BRACKET_OPEN || character === C_BRACKET_CLOSE) {\n        break;\n      }\n\n      if (character === C_BACKSLASH) {\n        identifier += C_BACKSLASH;\n        character = value.charAt(++index);\n      }\n\n      identifier += character;\n      index++;\n    }\n\n    character = value.charAt(index);\n\n    if (character === C_BRACKET_CLOSE) {\n      referenceType = identifier ? REFERENCE_TYPE_FULL : REFERENCE_TYPE_COLLAPSED;\n      queue += identifier + character;\n      index++;\n    } else {\n      identifier = '';\n    }\n\n    subvalue += queue;\n    queue = '';\n  } else {\n    if (!content) {\n      return;\n    }\n\n    identifier = content;\n  }\n\n  /* Brackets cannot be inside the identifier. */\n  if (referenceType !== REFERENCE_TYPE_FULL && bracketed) {\n    return;\n  }\n\n  /* Inline footnotes cannot have an identifier. */\n  if (type === T_FOOTNOTE && referenceType !== REFERENCE_TYPE_SHORTCUT) {\n    type = T_LINK;\n    intro = C_BRACKET_OPEN + C_CARET;\n    content = C_CARET + content;\n  }\n\n  subvalue = intro + subvalue;\n\n  if (type === T_LINK && self.inLink) {\n    return null;\n  }\n\n  /* istanbul ignore if - never used (yet) */\n  if (silent) {\n    return true;\n  }\n\n  if (type === T_FOOTNOTE && content.indexOf(' ') !== -1) {\n    return eat(subvalue)({\n      type: 'footnote',\n      children: this.tokenizeInline(content, eat.now())\n    });\n  }\n\n  now = eat.now();\n  now.column += intro.length;\n  now.offset += intro.length;\n  identifier = referenceType === REFERENCE_TYPE_FULL ? identifier : content;\n\n  node = {\n    type: type + 'Reference',\n    identifier: normalize(identifier)\n  };\n\n  if (type === T_LINK || type === T_IMAGE) {\n    node.referenceType = referenceType;\n  }\n\n  if (type === T_LINK) {\n    exit = self.enterLink();\n    node.children = self.tokenizeInline(content, now);\n    exit();\n  } else if (type === T_IMAGE) {\n    node.alt = self.decode.raw(self.unescape(content), now) || null;\n  }\n\n  return eat(subvalue)(node);\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:tokenize:strong\n * @fileoverview Tokenise strong.\n */\n\n'use strict';\n\nvar trim = require('trim');\nvar whitespace = require('is-whitespace-character');\nvar locate = require('../locate/strong');\n\nmodule.exports = strong;\nstrong.locator = locate;\n\nvar C_ASTERISK = '*';\nvar C_UNDERSCORE = '_';\n\n/* Tokenise strong. */\nfunction strong(eat, value, silent) {\n  var self = this;\n  var index = 0;\n  var character = value.charAt(index);\n  var now;\n  var pedantic;\n  var marker;\n  var queue;\n  var subvalue;\n  var length;\n  var prev;\n\n  if (\n    (character !== C_ASTERISK && character !== C_UNDERSCORE) ||\n    value.charAt(++index) !== character\n  ) {\n    return;\n  }\n\n  pedantic = self.options.pedantic;\n  marker = character;\n  subvalue = marker + marker;\n  length = value.length;\n  index++;\n  queue = character = '';\n\n  if (pedantic && whitespace(value.charAt(index))) {\n    return;\n  }\n\n  while (index < length) {\n    prev = character;\n    character = value.charAt(index);\n\n    if (\n      character === marker &&\n      value.charAt(index + 1) === marker &&\n      (!pedantic || !whitespace(prev))\n    ) {\n      character = value.charAt(index + 2);\n\n      if (character !== marker) {\n        if (!trim(queue)) {\n          return;\n        }\n\n        /* istanbul ignore if - never used (yet) */\n        if (silent) {\n          return true;\n        }\n\n        now = eat.now();\n        now.column += 2;\n        now.offset += 2;\n\n        return eat(subvalue + queue + subvalue)({\n          type: 'strong',\n          children: self.tokenizeInline(queue, now)\n        });\n      }\n    }\n\n    if (!pedantic && character === '\\\\') {\n      queue += character;\n      character = value.charAt(++index);\n    }\n\n    queue += character;\n    index++;\n  }\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:tokenize:table\n * @fileoverview Tokenise a table.\n */\n\n'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nmodule.exports = table;\ntable.notInList = true;\n\nvar C_BACKSLASH = '\\\\';\nvar C_TICK = '`';\nvar C_DASH = '-';\nvar C_PIPE = '|';\nvar C_COLON = ':';\nvar C_SPACE = ' ';\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\n\nvar MIN_TABLE_COLUMNS = 2;\nvar MIN_TABLE_ROWS = 2;\n\nvar TABLE_ALIGN_LEFT = 'left';\nvar TABLE_ALIGN_CENTER = 'center';\nvar TABLE_ALIGN_RIGHT = 'right';\nvar TABLE_ALIGN_NONE = null;\n\n/* Tokenise a table. */\nfunction table(eat, value, silent) {\n  var self = this;\n  var index;\n  var alignments;\n  var alignment;\n  var subvalue;\n  var row;\n  var length;\n  var lines;\n  var queue;\n  var character;\n  var hasDash;\n  var align;\n  var cell;\n  var preamble;\n  var count;\n  var opening;\n  var now;\n  var position;\n  var lineCount;\n  var line;\n  var rows;\n  var table;\n  var lineIndex;\n  var pipeIndex;\n  var first;\n\n  /* Exit when not in gfm-mode. */\n  if (!self.options.gfm) {\n    return;\n  }\n\n  /* Get the rows.\n   * Detecting tables soon is hard, so there are some\n   * checks for performance here, such as the minimum\n   * number of rows, and allowed characters in the\n   * alignment row. */\n  index = lineCount = 0;\n  length = value.length + 1;\n  lines = [];\n\n  while (index < length) {\n    lineIndex = value.indexOf(C_NEWLINE, index);\n    pipeIndex = value.indexOf(C_PIPE, index + 1);\n\n    if (lineIndex === -1) {\n      lineIndex = value.length;\n    }\n\n    if (pipeIndex === -1 || pipeIndex > lineIndex) {\n      if (lineCount < MIN_TABLE_ROWS) {\n        return;\n      }\n\n      break;\n    }\n\n    lines.push(value.slice(index, lineIndex));\n    lineCount++;\n    index = lineIndex + 1;\n  }\n\n  /* Parse the alignment row. */\n  subvalue = lines.join(C_NEWLINE);\n  alignments = lines.splice(1, 1)[0] || [];\n  index = 0;\n  length = alignments.length;\n  lineCount--;\n  alignment = false;\n  align = [];\n\n  while (index < length) {\n    character = alignments.charAt(index);\n\n    if (character === C_PIPE) {\n      hasDash = null;\n\n      if (alignment === false) {\n        if (first === false) {\n          return;\n        }\n      } else {\n        align.push(alignment);\n        alignment = false;\n      }\n\n      first = false;\n    } else if (character === C_DASH) {\n      hasDash = true;\n      alignment = alignment || TABLE_ALIGN_NONE;\n    } else if (character === C_COLON) {\n      if (alignment === TABLE_ALIGN_LEFT) {\n        alignment = TABLE_ALIGN_CENTER;\n      } else if (hasDash && alignment === TABLE_ALIGN_NONE) {\n        alignment = TABLE_ALIGN_RIGHT;\n      } else {\n        alignment = TABLE_ALIGN_LEFT;\n      }\n    } else if (!whitespace(character)) {\n      return;\n    }\n\n    index++;\n  }\n\n  if (alignment !== false) {\n    align.push(alignment);\n  }\n\n  /* Exit when without enough columns. */\n  if (align.length < MIN_TABLE_COLUMNS) {\n    return;\n  }\n\n  /* istanbul ignore if - never used (yet) */\n  if (silent) {\n    return true;\n  }\n\n  /* Parse the rows. */\n  position = -1;\n  rows = [];\n\n  table = eat(subvalue).reset({\n    type: 'table',\n    align: align,\n    children: rows\n  });\n\n  while (++position < lineCount) {\n    line = lines[position];\n    row = {type: 'tableRow', children: []};\n\n    /* Eat a newline character when this is not the\n     * first row. */\n    if (position) {\n      eat(C_NEWLINE);\n    }\n\n    /* Eat the row. */\n    eat(line).reset(row, table);\n\n    length = line.length + 1;\n    index = 0;\n    queue = cell = '';\n    preamble = true;\n    count = opening = null;\n\n    while (index < length) {\n      character = line.charAt(index);\n\n      if (character === C_TAB || character === C_SPACE) {\n        if (cell) {\n          queue += character;\n        } else {\n          eat(character);\n        }\n\n        index++;\n        continue;\n      }\n\n      if (character === '' || character === C_PIPE) {\n        if (preamble) {\n          eat(character);\n        } else {\n          if (character && opening) {\n            queue += character;\n            index++;\n            continue;\n          }\n\n          if ((cell || character) && !preamble) {\n            subvalue = cell;\n\n            if (queue.length > 1) {\n              if (character) {\n                subvalue += queue.slice(0, queue.length - 1);\n                queue = queue.charAt(queue.length - 1);\n              } else {\n                subvalue += queue;\n                queue = '';\n              }\n            }\n\n            now = eat.now();\n\n            eat(subvalue)({\n              type: 'tableCell',\n              children: self.tokenizeInline(cell, now)\n            }, row);\n          }\n\n          eat(queue + character);\n\n          queue = cell = '';\n        }\n      } else {\n        if (queue) {\n          cell += queue;\n          queue = '';\n        }\n\n        cell += character;\n\n        if (character === C_BACKSLASH && index !== length - 2) {\n          cell += line.charAt(index + 1);\n          index++;\n        }\n\n        if (character === C_TICK) {\n          count = 1;\n\n          while (line.charAt(index + 1) === character) {\n            cell += character;\n            index++;\n            count++;\n          }\n\n          if (!opening) {\n            opening = count;\n          } else if (count >= opening) {\n            opening = 0;\n          }\n        }\n      }\n\n      preamble = false;\n      index++;\n    }\n\n    /* Eat the alignment row. */\n    if (!position) {\n      eat(C_NEWLINE + alignments);\n    }\n  }\n\n  return table;\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:tokenize:text\n * @fileoverview Tokenise text.\n */\n\n'use strict';\n\nmodule.exports = text;\n\n/* Tokenise text. */\nfunction text(eat, value, silent) {\n  var self = this;\n  var methods;\n  var tokenizers;\n  var index;\n  var length;\n  var subvalue;\n  var position;\n  var tokenizer;\n  var name;\n  var min;\n  var now;\n\n  /* istanbul ignore if - never used (yet) */\n  if (silent) {\n    return true;\n  }\n\n  methods = self.inlineMethods;\n  length = methods.length;\n  tokenizers = self.inlineTokenizers;\n  index = -1;\n  min = value.length;\n\n  while (++index < length) {\n    name = methods[index];\n\n    if (name === 'text' || !tokenizers[name]) {\n      continue;\n    }\n\n    tokenizer = tokenizers[name].locator;\n\n    if (!tokenizer) {\n      eat.file.fail('Missing locator: `' + name + '`');\n    }\n\n    position = tokenizer.call(self, value, 1);\n\n    if (position !== -1 && position < min) {\n      min = position;\n    }\n  }\n\n  subvalue = value.slice(0, min);\n  now = eat.now();\n\n  self.decode(subvalue, now, function (content, position, source) {\n    eat(source || content)({\n      type: 'text',\n      value: content\n    });\n  });\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:tokenize:thematic-break\n * @fileoverview Tokenise a thematic break.\n */\n\n'use strict';\n\nmodule.exports = thematicBreak;\n\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_ASTERISK = '*';\nvar C_UNDERSCORE = '_';\nvar C_DASH = '-';\n\nvar THEMATIC_BREAK_MARKER_COUNT = 3;\n\n/* Tokenise a thematic break. */\nfunction thematicBreak(eat, value, silent) {\n  var index = -1;\n  var length = value.length + 1;\n  var subvalue = '';\n  var character;\n  var marker;\n  var markerCount;\n  var queue;\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_TAB && character !== C_SPACE) {\n      break;\n    }\n\n    subvalue += character;\n  }\n\n  if (\n    character !== C_ASTERISK &&\n    character !== C_DASH &&\n    character !== C_UNDERSCORE\n  ) {\n    return;\n  }\n\n  marker = character;\n  subvalue += character;\n  markerCount = 1;\n  queue = '';\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (character === marker) {\n      markerCount++;\n      subvalue += queue + marker;\n      queue = '';\n    } else if (character === C_SPACE) {\n      queue += character;\n    } else if (\n      markerCount >= THEMATIC_BREAK_MARKER_COUNT &&\n      (!character || character === C_NEWLINE)\n    ) {\n      subvalue += queue;\n\n      if (silent) {\n        return true;\n      }\n\n      return eat(subvalue)({type: 'thematicBreak'});\n    } else {\n      return;\n    }\n  }\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:tokenize:url\n * @fileoverview Tokenise a URL.\n */\n\n'use strict';\n\nvar decode = require('parse-entities');\nvar whitespace = require('is-whitespace-character');\nvar locate = require('../locate/url');\n\nmodule.exports = url;\nurl.locator = locate;\nurl.notInLink = true;\n\nvar C_BRACKET_OPEN = '[';\nvar C_BRACKET_CLOSE = ']';\nvar C_PAREN_OPEN = '(';\nvar C_PAREN_CLOSE = ')';\nvar C_LT = '<';\nvar C_AT_SIGN = '@';\n\nvar HTTP_PROTOCOL = 'http://';\nvar HTTPS_PROTOCOL = 'https://';\nvar MAILTO_PROTOCOL = 'mailto:';\n\nvar PROTOCOLS = [\n  HTTP_PROTOCOL,\n  HTTPS_PROTOCOL,\n  MAILTO_PROTOCOL\n];\n\nvar PROTOCOLS_LENGTH = PROTOCOLS.length;\n\n/* Tokenise a URL. */\nfunction url(eat, value, silent) {\n  var self = this;\n  var subvalue;\n  var content;\n  var character;\n  var index;\n  var position;\n  var protocol;\n  var match;\n  var length;\n  var queue;\n  var parenCount;\n  var nextCharacter;\n  var exit;\n\n  if (!self.options.gfm) {\n    return;\n  }\n\n  subvalue = '';\n  index = -1;\n  length = PROTOCOLS_LENGTH;\n\n  while (++index < length) {\n    protocol = PROTOCOLS[index];\n    match = value.slice(0, protocol.length);\n\n    if (match.toLowerCase() === protocol) {\n      subvalue = match;\n      break;\n    }\n  }\n\n  if (!subvalue) {\n    return;\n  }\n\n  index = subvalue.length;\n  length = value.length;\n  queue = '';\n  parenCount = 0;\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (whitespace(character) || character === C_LT) {\n      break;\n    }\n\n    if (\n      character === '.' ||\n      character === ',' ||\n      character === ':' ||\n      character === ';' ||\n      character === '\"' ||\n      character === '\\'' ||\n      character === ')' ||\n      character === ']'\n    ) {\n      nextCharacter = value.charAt(index + 1);\n\n      if (!nextCharacter || whitespace(nextCharacter)) {\n        break;\n      }\n    }\n\n    if (character === C_PAREN_OPEN || character === C_BRACKET_OPEN) {\n      parenCount++;\n    }\n\n    if (character === C_PAREN_CLOSE || character === C_BRACKET_CLOSE) {\n      parenCount--;\n\n      if (parenCount < 0) {\n        break;\n      }\n    }\n\n    queue += character;\n    index++;\n  }\n\n  if (!queue) {\n    return;\n  }\n\n  subvalue += queue;\n  content = subvalue;\n\n  if (protocol === MAILTO_PROTOCOL) {\n    position = queue.indexOf(C_AT_SIGN);\n\n    if (position === -1 || position === length - 1) {\n      return;\n    }\n\n    content = content.substr(MAILTO_PROTOCOL.length);\n  }\n\n  /* istanbul ignore if - never used (yet) */\n  if (silent) {\n    return true;\n  }\n\n  exit = self.enterLink();\n  content = self.tokenizeInline(content, eat.now());\n  exit();\n\n  return eat(subvalue)({\n    type: 'link',\n    title: null,\n    url: decode(subvalue),\n    children: content\n  });\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:tokenize:yaml\n * @fileoverview Tokenise YAML.\n */\n\n'use strict';\n\nmodule.exports = yaml;\nyaml.onlyAtStart = true;\n\nvar FENCE = '---';\nvar C_DASH = '-';\nvar C_NEWLINE = '\\n';\n\n/* Tokenise YAML. */\nfunction yaml(eat, value, silent) {\n  var self = this;\n  var subvalue;\n  var content;\n  var index;\n  var length;\n  var character;\n  var queue;\n\n  if (\n    !self.options.yaml ||\n    value.charAt(0) !== C_DASH ||\n    value.charAt(1) !== C_DASH ||\n    value.charAt(2) !== C_DASH ||\n    value.charAt(3) !== C_NEWLINE\n  ) {\n    return;\n  }\n\n  subvalue = FENCE + C_NEWLINE;\n  content = queue = '';\n  index = 3;\n  length = value.length;\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (\n      character === C_DASH &&\n      (queue || !content) &&\n      value.charAt(index + 1) === C_DASH &&\n      value.charAt(index + 2) === C_DASH\n    ) {\n      /* istanbul ignore if - never used (yet) */\n      if (silent) {\n        return true;\n      }\n\n      subvalue += queue + FENCE;\n\n      return eat(subvalue)({\n        type: 'yaml',\n        value: content\n      });\n    }\n\n    if (character === C_NEWLINE) {\n      queue += character;\n    } else {\n      subvalue += queue + character;\n      content += queue + character;\n      queue = '';\n    }\n  }\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:tokenizer\n * @fileoverview Markdown tokenizer.\n */\n\n'use strict';\n\nmodule.exports = factory;\n\nvar MERGEABLE_NODES = {\n  text: mergeText,\n  blockquote: mergeBlockquote\n};\n\n/* Check whether a node is mergeable with adjacent nodes. */\nfunction mergeable(node) {\n  var start;\n  var end;\n\n  if (node.type !== 'text' || !node.position) {\n    return true;\n  }\n\n  start = node.position.start;\n  end = node.position.end;\n\n  /* Only merge nodes which occupy the same size as their\n   * `value`. */\n  return start.line !== end.line ||\n      end.column - start.column === node.value.length;\n}\n\n/* Merge two text nodes: `node` into `prev`. */\nfunction mergeText(prev, node) {\n  prev.value += node.value;\n\n  return prev;\n}\n\n/* Merge two blockquotes: `node` into `prev`, unless in\n * CommonMark mode. */\nfunction mergeBlockquote(prev, node) {\n  if (this.options.commonmark) {\n    return node;\n  }\n\n  prev.children = prev.children.concat(node.children);\n\n  return prev;\n}\n\n/* Construct a tokenizer.  This creates both\n * `tokenizeInline` and `tokenizeBlock`. */\nfunction factory(type) {\n  return tokenize;\n\n  /* Tokenizer for a bound `type`. */\n  function tokenize(value, location) {\n    var self = this;\n    var offset = self.offset;\n    var tokens = [];\n    var methods = self[type + 'Methods'];\n    var tokenizers = self[type + 'Tokenizers'];\n    var line = location.line;\n    var column = location.column;\n    var index;\n    var length;\n    var method;\n    var name;\n    var matched;\n    var valueLength;\n\n    /* Trim white space only lines. */\n    if (!value) {\n      return tokens;\n    }\n\n    /* Expose on `eat`. */\n    eat.now = now;\n    eat.file = self.file;\n\n    /* Sync initial offset. */\n    updatePosition('');\n\n    /* Iterate over `value`, and iterate over all\n     * tokenizers.  When one eats something, re-iterate\n     * with the remaining value.  If no tokenizer eats,\n     * something failed (should not happen) and an\n     * exception is thrown. */\n    while (value) {\n      index = -1;\n      length = methods.length;\n      matched = false;\n\n      while (++index < length) {\n        name = methods[index];\n        method = tokenizers[name];\n\n        if (\n          method &&\n          (!method.onlyAtStart || self.atStart) &&\n          (!method.notInList || !self.inList) &&\n          (!method.notInBlock || !self.inBlock) &&\n          (!method.notInLink || !self.inLink)\n        ) {\n          valueLength = value.length;\n\n          method.apply(self, [eat, value]);\n\n          matched = valueLength !== value.length;\n\n          if (matched) {\n            break;\n          }\n        }\n      }\n\n      /* istanbul ignore if */\n      if (!matched) {\n        self.file.fail(new Error('Infinite loop'), eat.now());\n      }\n    }\n\n    self.eof = now();\n\n    return tokens;\n\n    /**\n     * Update line, column, and offset based on\n     * `value`.\n     *\n     * @example\n     *   updatePosition('foo');\n     *\n     * @param {string} subvalue - Subvalue to eat.\n     */\n    function updatePosition(subvalue) {\n      var lastIndex = -1;\n      var index = subvalue.indexOf('\\n');\n\n      while (index !== -1) {\n        line++;\n        lastIndex = index;\n        index = subvalue.indexOf('\\n', index + 1);\n      }\n\n      if (lastIndex === -1) {\n        column += subvalue.length;\n      } else {\n        column = subvalue.length - lastIndex;\n      }\n\n      if (line in offset) {\n        if (lastIndex !== -1) {\n          column += offset[line];\n        } else if (column <= offset[line]) {\n          column = offset[line] + 1;\n        }\n      }\n    }\n\n    /**\n     * Get offset.  Called before the first character is\n     * eaten to retrieve the range's offsets.\n     *\n     * @return {Function} - `done`, to be called when\n     *   the last character is eaten.\n     */\n    function getOffset() {\n      var indentation = [];\n      var pos = line + 1;\n\n      /**\n       * Done.  Called when the last character is\n       * eaten to retrieve the range’s offsets.\n       *\n       * @return {Array.<number>} - Offset.\n       */\n      return function () {\n        var last = line + 1;\n\n        while (pos < last) {\n          indentation.push((offset[pos] || 0) + 1);\n\n          pos++;\n        }\n\n        return indentation;\n      };\n    }\n\n    /**\n     * Get the current position.\n     *\n     * @example\n     *   position = now(); // {line: 1, column: 1, offset: 0}\n     *\n     * @return {Object} - Current Position.\n     */\n    function now() {\n      var pos = {line: line, column: column};\n\n      pos.offset = self.toOffset(pos);\n\n      return pos;\n    }\n\n    /**\n     * Store position information for a node.\n     *\n     * @example\n     *   start = now();\n     *   updatePosition('foo');\n     *   location = new Position(start);\n     *   // {\n     *   //   start: {line: 1, column: 1, offset: 0},\n     *   //   end: {line: 1, column: 3, offset: 2}\n     *   // }\n     *\n     * @param {Object} start - Starting position.\n     */\n    function Position(start) {\n      this.start = start;\n      this.end = now();\n    }\n\n    /**\n     * Throw when a value is incorrectly eaten.\n     * This shouldn’t happen but will throw on new,\n     * incorrect rules.\n     *\n     * @example\n     *   // When the current value is set to `foo bar`.\n     *   validateEat('foo');\n     *   eat('foo');\n     *\n     *   validateEat('bar');\n     *   // throws, because the space is not eaten.\n     *\n     * @param {string} subvalue - Value to be eaten.\n     * @throws {Error} - When `subvalue` cannot be eaten.\n     */\n    function validateEat(subvalue) {\n      /* istanbul ignore if */\n      if (value.substring(0, subvalue.length) !== subvalue) {\n        /* Capture stack-trace. */\n        self.file.fail(\n          new Error(\n            'Incorrectly eaten value: please report this ' +\n            'warning on http://git.io/vg5Ft'\n          ),\n          now()\n        );\n      }\n    }\n\n    /**\n     * Mark position and patch `node.position`.\n     *\n     * @example\n     *   var update = position();\n     *   updatePosition('foo');\n     *   update({});\n     *   // {\n     *   //   position: {\n     *   //     start: {line: 1, column: 1, offset: 0},\n     *   //     end: {line: 1, column: 3, offset: 2}\n     *   //   }\n     *   // }\n     *\n     * @returns {Function} - Updater.\n     */\n    function position() {\n      var before = now();\n\n      return update;\n\n      /**\n       * Add the position to a node.\n       *\n       * @example\n       *   update({type: 'text', value: 'foo'});\n       *\n       * @param {Node} node - Node to attach position\n       *   on.\n       * @param {Array} [indent] - Indentation for\n       *   `node`.\n       * @return {Node} - `node`.\n       */\n      function update(node, indent) {\n        var prev = node.position;\n        var start = prev ? prev.start : before;\n        var combined = [];\n        var n = prev && prev.end.line;\n        var l = before.line;\n\n        node.position = new Position(start);\n\n        /* If there was already a `position`, this\n         * node was merged.  Fixing `start` wasn’t\n         * hard, but the indent is different.\n         * Especially because some information, the\n         * indent between `n` and `l` wasn’t\n         * tracked.  Luckily, that space is\n         * (should be?) empty, so we can safely\n         * check for it now. */\n        if (prev && indent && prev.indent) {\n          combined = prev.indent;\n\n          if (n < l) {\n            while (++n < l) {\n              combined.push((offset[n] || 0) + 1);\n            }\n\n            combined.push(before.column);\n          }\n\n          indent = combined.concat(indent);\n        }\n\n        node.position.indent = indent || [];\n\n        return node;\n      }\n    }\n\n    /**\n     * Add `node` to `parent`s children or to `tokens`.\n     * Performs merges where possible.\n     *\n     * @example\n     *   add({});\n     *\n     *   add({}, {children: []});\n     *\n     * @param {Object} node - Node to add.\n     * @param {Object} [parent] - Parent to insert into.\n     * @return {Object} - Added or merged into node.\n     */\n    function add(node, parent) {\n      var children = parent ? parent.children : tokens;\n      var prev = children[children.length - 1];\n\n      if (\n        prev &&\n        node.type === prev.type &&\n        node.type in MERGEABLE_NODES &&\n        mergeable(prev) &&\n        mergeable(node)\n      ) {\n        node = MERGEABLE_NODES[node.type].call(self, prev, node);\n      }\n\n      if (node !== prev) {\n        children.push(node);\n      }\n\n      if (self.atStart && tokens.length !== 0) {\n        self.exitStart();\n      }\n\n      return node;\n    }\n\n    /**\n     * Remove `subvalue` from `value`.\n     * `subvalue` must be at the start of `value`.\n     *\n     * @example\n     *   eat('foo')({type: 'text', value: 'foo'});\n     *\n     * @param {string} subvalue - Removed from `value`,\n     *   and passed to `updatePosition`.\n     * @return {Function} - Wrapper around `add`, which\n     *   also adds `position` to node.\n     */\n    function eat(subvalue) {\n      var indent = getOffset();\n      var pos = position();\n      var current = now();\n\n      validateEat(subvalue);\n\n      apply.reset = reset;\n      apply.test = reset.test = test;\n\n      value = value.substring(subvalue.length);\n\n      updatePosition(subvalue);\n\n      indent = indent();\n\n      return apply;\n\n      /**\n       * Add the given arguments, add `position` to\n       * the returned node, and return the node.\n       *\n       * @param {Object} node - Node to add.\n       * @param {Object} [parent] - Node to insert into.\n       * @return {Node} - Added node.\n       */\n      function apply(node, parent) {\n        return pos(add(pos(node), parent), indent);\n      }\n\n      /**\n       * Functions just like apply, but resets the\n       * content:  the line and column are reversed,\n       * and the eaten value is re-added.\n       *\n       * This is useful for nodes with a single\n       * type of content, such as lists and tables.\n       *\n       * See `apply` above for what parameters are\n       * expected.\n       *\n       * @return {Node} - Added node.\n       */\n      function reset() {\n        var node = apply.apply(null, arguments);\n\n        line = current.line;\n        column = current.column;\n        value = subvalue + value;\n\n        return node;\n      }\n\n      /**\n       * Test the position, after eating, and reverse\n       * to a not-eaten state.\n       *\n       * @return {Position} - Position after eating `subvalue`.\n       */\n      function test() {\n        var result = pos({});\n\n        line = current.line;\n        column = current.column;\n        value = subvalue + value;\n\n        return result.position;\n      }\n    }\n  }\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:unescape\n * @fileoverview Unescape escapes.\n */\n\n'use strict';\n\n/* Expose. */\nmodule.exports = factory;\n\n/* Factory to de-escape a value, based on a list at `key`\n * in `ctx`. */\nfunction factory(ctx, key) {\n  return unescape;\n\n  /* De-escape a string using the expression at `key`\n   * in `ctx`. */\n  function unescape(value) {\n    var prev = 0;\n    var index = value.indexOf('\\\\');\n    var escape = ctx[key];\n    var queue = [];\n    var character;\n\n    while (index !== -1) {\n      queue.push(value.slice(prev, index));\n      prev = index + 1;\n      character = value.charAt(prev);\n\n      /* If the following character is not a valid escape,\n       * add the slash. */\n      if (!character || escape.indexOf(character) === -1) {\n        queue.push('\\\\');\n      }\n\n      index = value.indexOf('\\\\', prev);\n    }\n\n    queue.push(value.slice(prev));\n\n    return queue.join('');\n  }\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:util:get-indentation\n * @fileoverview Get indentation.\n */\n\n'use strict';\n\n/* Expose. */\nmodule.exports = indentation;\n\n/* Map of characters, and their column length,\n * which can be used as indentation. */\nvar characters = {' ': 1, '\\t': 4};\n\n/**\n * Gets indentation information for a line.\n *\n * @param {string} value - Indented line.\n * @return {Object} - Indetation information.\n */\nfunction indentation(value) {\n  var index = 0;\n  var indent = 0;\n  var character = value.charAt(index);\n  var stops = {};\n  var size;\n\n  while (character in characters) {\n    size = characters[character];\n\n    indent += size;\n\n    if (size > 1) {\n      indent = Math.floor(indent / size) * size;\n    }\n\n    stops[indent] = index;\n\n    character = value.charAt(++index);\n  }\n\n  return {indent: indent, stops: stops};\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:util:html\n * @fileoverview HTML regexes.\n */\n\n'use strict';\n\nvar attributeName = '[a-zA-Z_:][a-zA-Z0-9:._-]*';\nvar unquoted = '[^\"\\'=<>`\\\\x00-\\\\x20]+';\nvar singleQuoted = '\\'[^\\']*\\'';\nvar doubleQuoted = '\"[^\"]*\"';\nvar attributeValue = '(?:' + unquoted + '|' + singleQuoted + '|' + doubleQuoted + ')';\nvar attribute = '(?:\\\\s+' + attributeName + '(?:\\\\s*=\\\\s*' + attributeValue + ')?)';\nvar openTag = '<[A-Za-z][A-Za-z0-9\\\\-]*' + attribute + '*\\\\s*\\\\/?>';\nvar closeTag = '<\\\\/[A-Za-z][A-Za-z0-9\\\\-]*\\\\s*>';\nvar comment = '<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->';\nvar processing = '<[?].*?[?]>';\nvar declaration = '<![A-Za-z]+\\\\s+[^>]*>';\nvar cdata = '<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>';\n\nexports.openCloseTag = new RegExp('^(?:' + openTag + '|' + closeTag + ')');\n\nexports.tag = new RegExp('^(?:' +\n  openTag + '|' +\n  closeTag + '|' +\n  comment + '|' +\n  processing + '|' +\n  declaration + '|' +\n  cdata +\n')');\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:util:get-indentation\n * @fileoverview Get indentation.\n */\n\n'use strict';\n\nmodule.exports = interrupt;\n\nfunction interrupt(interruptors, tokenizers, ctx, params) {\n  var bools = ['pedantic', 'commonmark'];\n  var count = bools.length;\n  var length = interruptors.length;\n  var index = -1;\n  var interruptor;\n  var config;\n  var fn;\n  var offset;\n  var bool;\n  var ignore;\n\n  while (++index < length) {\n    interruptor = interruptors[index];\n    config = interruptor[1] || {};\n    fn = interruptor[0];\n    offset = -1;\n    ignore = false;\n\n    while (++offset < count) {\n      bool = bools[offset];\n\n      if (config[bool] !== undefined && config[bool] !== ctx.options[bool]) {\n        ignore = true;\n        break;\n      }\n    }\n\n    if (ignore) {\n      continue;\n    }\n\n    if (tokenizers[fn].apply(ctx, params)) {\n      return true;\n    }\n  }\n\n  return false;\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:util:normalize\n * @fileoverview Normalize an identifier.\n */\n\n'use strict';\n\n/* Dependencies. */\nvar collapseWhiteSpace = require('collapse-white-space');\n\n/* Expose. */\nmodule.exports = normalize;\n\n/**\n * Normalize an identifier.  Collapses multiple white space\n * characters into a single space, and removes casing.\n *\n * @example\n *   normalizeIdentifier('FOO\\t bar'); // 'foo bar'\n *\n * @param {string} value - Content to normalize.\n * @return {string} - Normalized content.\n */\nfunction normalize(value) {\n  return collapseWhiteSpace(value).toLowerCase();\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:parse:util:remove-indentation\n * @fileoverview Remove indentation.\n */\n\n'use strict';\n\n/* Dependencies. */\nvar trim = require('trim');\nvar repeat = require('repeat-string');\nvar getIndent = require('./get-indentation');\n\n/* Expose. */\nmodule.exports = indentation;\n\n/* Characters. */\nvar C_SPACE = ' ';\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\n\n/**\n * Remove the minimum indent from every line in `value`.\n * Supports both tab, spaced, and mixed indentation (as\n * well as possible).\n *\n * @example\n *   removeIndentation('  foo'); // 'foo'\n *   removeIndentation('    foo', 2); // '  foo'\n *   removeIndentation('\\tfoo', 2); // '  foo'\n *   removeIndentation('  foo\\n bar'); // ' foo\\n bar'\n *\n * @param {string} value - Value to trim.\n * @param {number?} [maximum] - Maximum indentation\n *   to remove.\n * @return {string} - Unindented `value`.\n */\nfunction indentation(value, maximum) {\n  var values = value.split(C_NEWLINE);\n  var position = values.length + 1;\n  var minIndent = Infinity;\n  var matrix = [];\n  var index;\n  var indentation;\n  var stops;\n  var padding;\n\n  values.unshift(repeat(C_SPACE, maximum) + '!');\n\n  while (position--) {\n    indentation = getIndent(values[position]);\n\n    matrix[position] = indentation.stops;\n\n    if (trim(values[position]).length === 0) {\n      continue;\n    }\n\n    if (indentation.indent) {\n      if (indentation.indent > 0 && indentation.indent < minIndent) {\n        minIndent = indentation.indent;\n      }\n    } else {\n      minIndent = Infinity;\n\n      break;\n    }\n  }\n\n  if (minIndent !== Infinity) {\n    position = values.length;\n\n    while (position--) {\n      stops = matrix[position];\n      index = minIndent;\n\n      while (index && !(index in stops)) {\n        index--;\n      }\n\n      if (\n        trim(values[position]).length !== 0 &&\n        minIndent &&\n        index !== minIndent\n      ) {\n        padding = C_TAB;\n      } else {\n        padding = '';\n      }\n\n      values[position] = padding + values[position].slice(\n        index in stops ? stops[index] + 1 : 0\n      );\n    }\n  }\n\n  values.shift();\n\n  return values.join(C_NEWLINE);\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify\n * @fileoverview Markdown Compiler.\n */\n\n'use strict';\n\n/* Dependencies. */\nvar unherit = require('unherit');\nvar Compiler = require('./lib/compiler.js');\n\n/* Expose. */\nmodule.exports = stringify;\n\n/**\n * Attacher.\n *\n * @param {unified} processor - Unified processor.\n */\nfunction stringify(processor) {\n  processor.Compiler = unherit(Compiler);\n}\n\n/* Patch `Compiler`. */\nstringify.Compiler = Compiler;\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify\n * @fileoverview Markdown compiler\n */\n\n'use strict';\n\n/* Dependencies. */\nvar xtend = require('xtend');\nvar toggle = require('state-toggle');\n\n/* Expose. */\nmodule.exports = Compiler;\n\n/**\n * Construct a new compiler.\n *\n * @constructor\n * @class {Compiler}\n * @param {File} file - Virtual file.\n * @param {Object?} [options] - Passed to\n *   `Compiler#setOptions()`.\n */\nfunction Compiler(file, options) {\n  this.inLink = this.inTable = false;\n  this.file = file;\n  this.options = xtend(this.options);\n  this.setOptions(options);\n}\n\n/* Cache prototype. */\nvar proto = Compiler.prototype;\n\n/* Enter and exit helpers. */\nproto.enterLink = toggle('inLink', false);\nproto.enterTable = toggle('inTable', false);\nproto.enterLinkReference = require('./util/enter-link-reference');\n\n/* Configuration. */\nproto.options = require('./defaults');\nproto.setOptions = require('./set-options');\n\nproto.compile = require('./macro/compile');\nproto.visit = require('./macro/one');\nproto.all = require('./macro/all');\nproto.block = require('./macro/block');\nproto.visitOrderedItems = require('./macro/ordered-items');\nproto.visitUnorderedItems = require('./macro/unordered-items');\n\n/* Expose visitors. */\nproto.visitors = {\n  root: require('./visitors/root'),\n  text: require('./visitors/text'),\n  heading: require('./visitors/heading'),\n  paragraph: require('./visitors/paragraph'),\n  blockquote: require('./visitors/blockquote'),\n  list: require('./visitors/list'),\n  listItem: require('./visitors/list-item'),\n  inlineCode: require('./visitors/inline-code'),\n  yaml: require('./visitors/yaml'),\n  code: require('./visitors/code'),\n  html: require('./visitors/html'),\n  thematicBreak: require('./visitors/thematic-break'),\n  strong: require('./visitors/strong'),\n  emphasis: require('./visitors/emphasis'),\n  break: require('./visitors/break'),\n  delete: require('./visitors/delete'),\n  link: require('./visitors/link'),\n  linkReference: require('./visitors/link-reference'),\n  imageReference: require('./visitors/image-reference'),\n  definition: require('./visitors/definition'),\n  image: require('./visitors/image'),\n  footnote: require('./visitors/footnote'),\n  footnoteReference: require('./visitors/footnote-reference'),\n  footnoteDefinition: require('./visitors/footnote-definition'),\n  table: require('./visitors/table'),\n  tableCell: require('./visitors/table-cell')\n};\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:defaults\n * @fileoverview Default options for `stringify`.\n */\n\n'use strict';\n\nmodule.exports = {\n  gfm: true,\n  commonmark: false,\n  pedantic: false,\n  entities: 'false',\n  setext: false,\n  closeAtx: false,\n  looseTable: false,\n  spacedTable: true,\n  paddedTable: true,\n  incrementListMarker: true,\n  fences: false,\n  fence: '`',\n  bullet: '-',\n  listItemIndent: 'tab',\n  rule: '*',\n  ruleSpaces: true,\n  ruleRepetition: 3,\n  strong: '*',\n  emphasis: '_'\n};\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:escape\n * @fileoverview Escape text to prevent it turning\n *   into markdown syntax.\n */\n\n'use strict';\n\n/* Dependencies. */\nvar decimal = require('is-decimal');\nvar alphanumeric = require('is-alphanumeric');\nvar whitespace = require('is-whitespace-character');\nvar escapes = require('markdown-escapes');\nvar prefix = require('./util/entity-prefix-length');\n\n/* Expose. */\nmodule.exports = factory;\n\n/* Constants. */\nvar BACKSLASH = '\\\\';\nvar BULLETS = ['*', '-', '+'];\nvar ALLIGNMENT = [':', '-', ' ', '|'];\nvar entities = {'<': '&lt;', ':': '&#x3A;', '&': '&amp;', '|': '&#x7C;', '~': '&#x7E;'};\n\n/**\n * Factory to escape characters.\n *\n * @example\n *   var escape = escapeFactory({ commonmark: true });\n *   escape('x*x', { type: 'text', value: 'x*x' }) // 'x\\\\*x'\n *\n * @param {Object} options - Compiler options.\n * @return {function(value, node, parent): string} - Function which\n *   takes a value and a node and (optionally) its parent and returns\n *   its escaped value.\n */\nfunction factory(options) {\n  return escape;\n\n  /**\n   * Escape punctuation characters in a node's value.\n   *\n   * @param {string} value - Value to escape.\n   * @param {Object} node - Node in which `value` exists.\n   * @param {Object} [parent] - Parent of `node`.\n   * @return {string} - Escaped `value`.\n   */\n  function escape(value, node, parent) {\n    var self = this;\n    var gfm = options.gfm;\n    var commonmark = options.commonmark;\n    var pedantic = options.pedantic;\n    var markers = commonmark ? ['.', ')'] : ['.'];\n    var siblings = parent && parent.children;\n    var index = siblings && siblings.indexOf(node);\n    var prev = siblings && siblings[index - 1];\n    var next = siblings && siblings[index + 1];\n    var length = value.length;\n    var escapable = escapes(options);\n    var position = -1;\n    var queue = [];\n    var escaped = queue;\n    var afterNewLine;\n    var character;\n    var wordCharBefore;\n    var wordCharAfter;\n    var offset;\n    var replace;\n\n    if (prev) {\n      afterNewLine = text(prev) && /\\n\\s*$/.test(prev.value);\n    } else {\n      afterNewLine = !parent || parent.type === 'root' || parent.type === 'paragraph';\n    }\n\n    function one(character) {\n      return escapable.indexOf(character) === -1 ?\n        entities[character] : BACKSLASH + character;\n    }\n\n    while (++position < length) {\n      character = value.charAt(position);\n      replace = false;\n\n      if (character === '\\n') {\n        afterNewLine = true;\n      } else if (\n        character === BACKSLASH ||\n        character === '`' ||\n        character === '*' ||\n        character === '[' ||\n        character === '<' ||\n        (character === '&' && prefix(value.slice(position)) > 0) ||\n        (character === ']' && self.inLink) ||\n        (gfm && character === '~' && value.charAt(position + 1) === '~') ||\n        (gfm && character === '|' && (self.inTable || alignment(value, position))) ||\n        (\n          character === '_' &&\n          /* Delegate leading/trailing underscores\n           * to the multinode version below. */\n          position > 0 &&\n          position < length - 1 &&\n          (\n              pedantic ||\n              !alphanumeric(value.charAt(position - 1)) ||\n              !alphanumeric(value.charAt(position + 1))\n          )\n        ) ||\n        (gfm && !self.inLink && character === ':' && protocol(queue.join('')))\n      ) {\n        replace = true;\n      } else if (afterNewLine) {\n        if (\n          character === '>' ||\n          character === '#' ||\n          BULLETS.indexOf(character) !== -1\n        ) {\n          replace = true;\n        } else if (decimal(character)) {\n          offset = position + 1;\n\n          while (offset < length) {\n            if (!decimal(value.charAt(offset))) {\n              break;\n            }\n\n            offset++;\n          }\n\n          if (markers.indexOf(value.charAt(offset)) !== -1) {\n            next = value.charAt(offset + 1);\n\n            if (!next || next === ' ' || next === '\\t' || next === '\\n') {\n              queue.push(value.slice(position, offset));\n              position = offset;\n              character = value.charAt(position);\n              replace = true;\n            }\n          }\n        }\n      }\n\n      if (afterNewLine && !whitespace(character)) {\n        afterNewLine = false;\n      }\n\n      queue.push(replace ? one(character) : character);\n    }\n\n    /* Multi-node versions. */\n    if (siblings && text(node)) {\n      /* Check for an opening parentheses after a\n       * link-reference (which can be joined by\n       * white-space). */\n      if (prev && prev.referenceType === 'shortcut') {\n        position = -1;\n        length = escaped.length;\n\n        while (++position < length) {\n          character = escaped[position];\n\n          if (character === ' ' || character === '\\t') {\n            continue;\n          }\n\n          if (character === '(' || character === ':') {\n            escaped[position] = one(character);\n          }\n\n          break;\n        }\n\n        /* If the current node is all spaces / tabs,\n         * preceded by a shortcut, and followed by\n         * a text starting with `(`, escape it. */\n        if (\n          text(next) &&\n          position === length &&\n          next.value.charAt(0) === '('\n        ) {\n          escaped.push(BACKSLASH);\n        }\n      }\n\n      /* Ensure non-auto-links are not seen as links.\n       * This pattern needs to check the preceding\n       * nodes too. */\n      if (\n        gfm &&\n        !self.inLink &&\n        text(prev) &&\n        value.charAt(0) === ':' &&\n        protocol(prev.value.slice(-6))\n      ) {\n        escaped[0] = one(':');\n      }\n\n      /* Escape ampersand if it would otherwise\n       * start an entity. */\n      if (\n        text(next) &&\n        value.charAt(length - 1) === '&' &&\n        prefix('&' + next.value) !== 0\n      ) {\n        escaped[escaped.length - 1] = one('&');\n      }\n\n      /* Escape double tildes in GFM. */\n      if (\n        gfm &&\n        text(next) &&\n        value.charAt(length - 1) === '~' &&\n        next.value.charAt(0) === '~'\n      ) {\n        escaped.splice(escaped.length - 1, 0, BACKSLASH);\n      }\n\n      /* Escape underscores, but not mid-word (unless\n       * in pedantic mode). */\n      wordCharBefore = text(prev) && alphanumeric(prev.value.slice(-1));\n      wordCharAfter = text(next) && alphanumeric(next.value.charAt(0));\n\n      if (length === 1) {\n        if (value === '_' && (pedantic || !wordCharBefore || !wordCharAfter)) {\n          escaped.unshift(BACKSLASH);\n        }\n      } else {\n        if (\n          value.charAt(0) === '_' &&\n          (pedantic || !wordCharBefore || !alphanumeric(value.charAt(1)))\n        ) {\n          escaped.unshift(BACKSLASH);\n        }\n\n        if (\n          value.charAt(length - 1) === '_' &&\n          (pedantic || !wordCharAfter || !alphanumeric(value.charAt(length - 2)))\n        ) {\n          escaped.splice(escaped.length - 1, 0, BACKSLASH);\n        }\n      }\n    }\n\n    return escaped.join('');\n  }\n}\n\n/**\n * Check if `index` in `value` is inside an alignment row.\n */\nfunction alignment(value, index) {\n  var start = value.lastIndexOf('\\n', index);\n  var end = value.indexOf('\\n', index);\n\n  start = start === -1 ? -1 : start;\n  end = end === -1 ? value.length : end;\n\n  while (++start < end) {\n    if (ALLIGNMENT.indexOf(value.charAt(start)) === -1) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\n/**\n * Check if `node` is a text node.\n */\nfunction text(node) {\n  return node && node.type === 'text';\n}\n\n/**\n * Check if `value` ends in a protocol.\n */\nfunction protocol(value) {\n  var val = value.slice(-6).toLowerCase();\n  return val === 'mailto' || val.slice(-5) === 'https' || val.slice(-4) === 'http';\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:macro:all\n * @fileoverview Stringify children in a node.\n */\n\n'use strict';\n\n/* Expose. */\nmodule.exports = all;\n\n/**\n * Visit all children of `parent`.\n *\n * @param {Object} parent - Parent node of children.\n * @return {Array.<string>} - List of compiled children.\n */\nfunction all(parent) {\n  var self = this;\n  var children = parent.children;\n  var length = children.length;\n  var results = [];\n  var index = -1;\n\n  while (++index < length) {\n    results[index] = self.visit(children[index], parent);\n  }\n\n  return results;\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:macro:block\n * @fileoverview Stringify a block.\n */\n\n'use strict';\n\n/* Expose. */\nmodule.exports = block;\n\n/**\n * Stringify a block node with block children (e.g., `root`\n * or `blockquote`).\n *\n * Knows about code following a list, or adjacent lists\n * with similar bullets, and places an extra newline\n * between them.\n *\n * @param {Object} node\n * @return {string} - Compiled children.\n */\nfunction block(node) {\n  var self = this;\n  var values = [];\n  var children = node.children;\n  var length = children.length;\n  var index = -1;\n  var child;\n  var prev;\n\n  while (++index < length) {\n    child = children[index];\n\n    if (prev) {\n      /* Duplicate nodes, such as a list\n       * directly following another list,\n       * often need multiple new lines.\n       *\n       * Additionally, code blocks following a list\n       * might easily be mistaken for a paragraph\n       * in the list itself. */\n      if (child.type === prev.type && prev.type === 'list') {\n        values.push(prev.ordered === child.ordered ? '\\n\\n\\n' : '\\n\\n');\n      } else if (prev.type === 'list' && child.type === 'code' && !child.lang) {\n        values.push('\\n\\n\\n');\n      } else {\n        values.push('\\n\\n');\n      }\n    }\n\n    values.push(self.visit(child, node));\n\n    prev = child;\n  }\n\n  return values.join('');\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:macro:compile\n * @fileoverview Compile the given node.\n */\n\n'use strict';\n\n/* Dependencies. */\nvar compact = require('mdast-util-compact');\n\n/* Expose. */\nmodule.exports = compile;\n\n/**\n * Stringify the given tree.\n *\n * @param {Node} node - Syntax tree.\n * @return {string} - Markdown document.\n */\nfunction compile(node) {\n  return this.visit(compact(node, this.options.commonmark));\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:macro:one\n * @fileoverview Stringify a node.\n */\n\n'use strict';\n\n/* Expose. */\nmodule.exports = one;\n\n/**\n * Visit a node.\n *\n * @param {Object} node - Node.\n * @param {Object?} [parent] - `node`s parent.\n * @return {string} - Compiled `node`.\n */\nfunction one(node, parent) {\n  var self = this;\n  var visitors = self.visitors;\n\n  /* Fail on unknown nodes. */\n  if (typeof visitors[node.type] !== 'function') {\n    self.file.fail(\n      new Error(\n        'Missing compiler for node of type `' +\n        node.type + '`: `' + node + '`'\n      ),\n      node\n    );\n  }\n\n  return visitors[node.type].call(self, node, parent);\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:macro:ordered-items\n * @fileoverview Stringify ordered list items.\n */\n\n'use strict';\n\n/* Expose. */\nmodule.exports = orderedItems;\n\n/**\n * Visit ordered list items.\n *\n * Starts the list with\n * `node.start` and increments each following list item\n * bullet by one:\n *\n *     2. foo\n *     3. bar\n *\n * In `incrementListMarker: false` mode, does not increment\n * each marker and stays on `node.start`:\n *\n *     1. foo\n *     1. bar\n *\n * Adds an extra line after an item if it has\n * `loose: true`.\n *\n * @param {Object} node - `list` node with\n *   `ordered: true`.\n * @return {string} - Compiled children.\n */\nfunction orderedItems(node) {\n  var self = this;\n  var fn = self.visitors.listItem;\n  var increment = self.options.incrementListMarker;\n  var values = [];\n  var start = node.start;\n  var children = node.children;\n  var length = children.length;\n  var index = -1;\n  var bullet;\n\n  while (++index < length) {\n    bullet = (increment ? start + index : start) + '.';\n    values[index] = fn.call(self, children[index], node, index, bullet);\n  }\n\n  return values.join('\\n');\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:macro:unordered-items\n * @fileoverview Stringify unordered list items.\n */\n\n'use strict';\n\n/* Expose. */\nmodule.exports = unorderedItems;\n\n/**\n * Visit unordered list items.\n *\n * Uses `options.bullet` as each item's bullet.\n *\n * @param {Object} node - `list` node with\n *   `ordered: false`.\n * @return {string} - Compiled children.\n */\nfunction unorderedItems(node) {\n  var self = this;\n  var bullet = self.options.bullet;\n  var fn = self.visitors.listItem;\n  var children = node.children;\n  var length = children.length;\n  var index = -1;\n  var values = [];\n\n  while (++index < length) {\n    values[index] = fn.call(self, children[index], node, index, bullet);\n  }\n\n  return values.join('\\n');\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:set-options\n * @fileoverview Set configuration.\n */\n\n'use strict';\n\n/* Dependencies. */\nvar xtend = require('xtend');\nvar encode = require('stringify-entities');\nvar defaults = require('./defaults');\nvar escapeFactory = require('./escape');\nvar returner = require('./util/returner');\n\n/* Expose. */\nmodule.exports = setOptions;\n\n/* Map of applicable enum's. */\nvar maps = {\n  entities: {true: true, false: true, numbers: true, escape: true},\n  bullet: {'*': true, '-': true, '+': true},\n  rule: {'-': true, _: true, '*': true},\n  listItemIndent: {tab: true, mixed: true, 1: true},\n  emphasis: {_: true, '*': true},\n  strong: {_: true, '*': true},\n  fence: {'`': true, '~': true}\n};\n\n/* Expose `validate`. */\nvar validate = {\n  boolean: validateBoolean,\n  string: validateString,\n  number: validateNumber\n};\n\n/**\n * Set options.  Does not overwrite previously set\n * options.\n *\n * @this {Compiler}\n * @throws {Error} - When an option is invalid.\n * @param {Object?} [options] - Stringify settings.\n * @return {Compiler} - `self`.\n */\nfunction setOptions(options) {\n  var self = this;\n  var current = self.options;\n  var ruleRepetition;\n  var key;\n\n  if (options == null) {\n    options = {};\n  } else if (typeof options === 'object') {\n    options = xtend(options);\n  } else {\n    throw new Error('Invalid value `' + options + '` for setting `options`');\n  }\n\n  for (key in defaults) {\n    validate[typeof current[key]](options, key, current[key], maps[key]);\n  }\n\n  ruleRepetition = options.ruleRepetition;\n\n  if (ruleRepetition && ruleRepetition < 3) {\n    raise(ruleRepetition, 'options.ruleRepetition');\n  }\n\n  self.encode = encodeFactory(String(options.entities));\n  self.escape = escapeFactory(options);\n\n  self.options = options;\n\n  return self;\n}\n\n/**\n * Throw an exception with in its `message` `value`\n * and `name`.\n *\n * @param {*} value - Invalid value.\n * @param {string} name - Setting name.\n */\nfunction raise(value, name) {\n  throw new Error('Invalid value `' + value + '` for setting `' + name + '`');\n}\n\n/**\n * Validate a value to be boolean. Defaults to `def`.\n * Raises an exception with `context[name]` when not\n * a boolean.\n *\n * @throws {Error} - When a setting is neither omitted nor\n *   a boolean.\n * @param {Object} context - Settings.\n * @param {string} name - Setting name.\n * @param {boolean} def - Default value.\n */\nfunction validateBoolean(context, name, def) {\n  var value = context[name];\n\n  if (value == null) {\n    value = def;\n  }\n\n  if (typeof value !== 'boolean') {\n    raise(value, 'options.' + name);\n  }\n\n  context[name] = value;\n}\n\n/**\n * Validate a value to be boolean. Defaults to `def`.\n * Raises an exception with `context[name]` when not\n * a boolean.\n *\n * @throws {Error} - When a setting is neither omitted nor\n *   a number.\n * @param {Object} context - Settings.\n * @param {string} name - Setting name.\n * @param {number} def - Default value.\n */\nfunction validateNumber(context, name, def) {\n  var value = context[name];\n\n  if (value == null) {\n    value = def;\n  }\n\n  if (isNaN(value)) {\n    raise(value, 'options.' + name);\n  }\n\n  context[name] = value;\n}\n\n/**\n * Validate a value to be in `map`. Defaults to `def`.\n * Raises an exception with `context[name]` when not\n * in `map`.\n *\n * @throws {Error} - When a setting is neither omitted nor\n *   in `map`.\n * @param {Object} context - Settings.\n * @param {string} name - Setting name.\n * @param {string} def - Default value.\n * @param {Object} map - Enum.\n */\nfunction validateString(context, name, def, map) {\n  var value = context[name];\n\n  if (value == null) {\n    value = def;\n  }\n\n  value = String(value);\n\n  if (!(value in map)) {\n    raise(value, 'options.' + name);\n  }\n\n  context[name] = value;\n}\n\n/**\n * Factory to encode HTML entities.\n * Creates a no-operation function when `type` is\n * `'false'`, a function which encodes using named\n * references when `type` is `'true'`, and a function\n * which encodes using numbered references when `type` is\n * `'numbers'`.\n *\n * @param {string} type - Either `'true'`, `'false'`, or\n *   `'numbers'`.\n * @return {function(string): string} - Function which\n *   takes a value and returns its encoded version.\n */\nfunction encodeFactory(type) {\n  var options = {};\n\n  if (type === 'false') {\n    return returner;\n  }\n\n  if (type === 'true') {\n    options.useNamedReferences = true;\n  }\n\n  if (type === 'escape') {\n    options.escapeOnly = options.useNamedReferences = true;\n  }\n\n  return wrapped;\n\n  /**\n   * Encode HTML entities using the bound options.\n   *\n   * @param {string} value - Content.\n   * @param {Object} [node] - Node which is compiled.\n   * @return {string} - Encoded content.\n   */\n  function wrapped(value) {\n    return encode(value, options);\n  }\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:util:copy-identifier-encoding\n * @fileoverview Encode based on the identifier.\n */\n\n'use strict';\n\n/* Dependencies. */\nvar entityPrefixLength = require('./entity-prefix-length');\n\n/* Expose. */\nmodule.exports = copy;\n\n/* Punctuation characters. */\nvar PUNCTUATION = /[-!\"#$%&'()*+,./:;<=>?@[\\\\\\]^`{|}~_]/;\n\n/**\n * For shortcut and collapsed reference links, the contents\n * is also an identifier, so we need to restore the original\n * encoding and escaping that were present in the source\n * string.\n *\n * This function takes the unescaped & unencoded value from\n * shortcut's child nodes and the identifier and encodes\n * the former according to the latter.\n *\n * @example\n *   copyIdentifierEncoding('a*b', 'a\\\\*b*c')\n *   // 'a\\\\*b*c'\n *\n * @param {string} value - Unescaped and unencoded stringified\n *   link value.\n * @param {string} identifier - Link identifier.\n * @return {string} - Encoded link value.\n */\nfunction copy(value, identifier) {\n  var length = value.length;\n  var count = identifier.length;\n  var result = [];\n  var position = 0;\n  var index = 0;\n  var start;\n\n  while (index < length) {\n    /* Take next non-punctuation characters from `value`. */\n    start = index;\n\n    while (index < length && !PUNCTUATION.test(value.charAt(index))) {\n      index += 1;\n    }\n\n    result.push(value.slice(start, index));\n\n    /* Advance `position` to the next punctuation character. */\n    while (position < count && !PUNCTUATION.test(identifier.charAt(position))) {\n      position += 1;\n    }\n\n    /* Take next punctuation characters from `identifier`. */\n    start = position;\n\n    while (position < count && PUNCTUATION.test(identifier.charAt(position))) {\n      if (identifier.charAt(position) === '&') {\n        position += entityPrefixLength(identifier.slice(position));\n      }\n\n      position += 1;\n    }\n\n    result.push(identifier.slice(start, position));\n\n    /* Advance `index` to the next non-punctuation character. */\n    while (index < length && PUNCTUATION.test(value.charAt(index))) {\n      index += 1;\n    }\n  }\n\n  return result.join('');\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:util:enclose-title\n * @fileoverview Quote a `title` the best way possible.\n */\n\n'use strict';\n\n/* Expose. */\nmodule.exports = enclose;\n\n/**\n * There is currently no way to support nested delimiters\n * across Markdown.pl, CommonMark, and GitHub (RedCarpet).\n * The following code supports Markdown.pl and GitHub.\n * CommonMark is not supported when mixing double- and\n * single quotes inside a title.\n *\n * @see https://github.com/vmg/redcarpet/issues/473\n * @see https://github.com/jgm/CommonMark/issues/308\n *\n * @example\n *   encloseTitle('foo') // '\"foo\"'\n *   encloseTitle('foo \\'bar\\' baz') // '\"foo \\'bar\\' baz\"'\n *   encloseTitle('foo \"bar\" baz') // '\\'foo \"bar\" baz\\''\n *   encloseTitle('foo \"bar\" \\'baz\\'') // '\"foo \"bar\" \\'baz\\'\"'\n *\n * @param {string} title - Content.\n * @return {string} - Properly enclosed title.\n */\nfunction enclose(title) {\n  var delimiter = title.indexOf('\"') === -1 ? '\"' : '\\'';\n  return delimiter + title + delimiter;\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:util:enclose-uri\n * @fileoverview Wrap `url` in angle brackets when needed.\n */\n\n'use strict';\n\n/* Dependencies. */\nvar count = require('ccount');\n\n/* Expose. */\nmodule.exports = enclose;\n\n/* Constants. */\nvar re = /\\s/;\n\n/**\n * Wrap `url` in angle brackets when needed, or when\n * forced.\n *\n * In links, images, and definitions, the URL part needs\n * to be enclosed when it:\n *\n * - has a length of `0`;\n * - contains white-space;\n * - has more or less opening than closing parentheses.\n *\n * @example\n *   encloseURI('foo bar') // '<foo bar>'\n *   encloseURI('foo(bar(baz)') // '<foo(bar(baz)>'\n *   encloseURI('') // '<>'\n *   encloseURI('example.com') // 'example.com'\n *   encloseURI('example.com', true) // '<example.com>'\n *\n * @param {string} uri - URI to enclose.\n * @param {boolean?} [always] - Force enclosing.\n * @return {boolean} - Properly enclosed `uri`.\n */\nfunction enclose(uri, always) {\n  if (always || uri.length === 0 || re.test(uri) || count(uri, '(') !== count(uri, ')')) {\n    return '<' + uri + '>';\n  }\n\n  return uri;\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:util:enter-link-reference\n * @fileoverview Enter a reference.\n */\n\n'use strict';\n\n/* Dependencies. */\nvar returner = require('./returner');\n\n/* Expose. */\nmodule.exports = enter;\n\n/**\n * Shortcut and collapsed link references need no escaping\n * and encoding during the processing of child nodes (it\n * must be implied from identifier).\n *\n * This toggler turns encoding and escaping off for shortcut\n * and collapsed references.\n *\n * Implies `enterLink`.\n *\n * @param {Compiler} compiler - Compiler instance.\n * @param {LinkReference} node - LinkReference node.\n * @return {Function} - Exit state.\n */\nfunction enter(compiler, node) {\n  var encode = compiler.encode;\n  var escape = compiler.escape;\n  var exit = compiler.enterLink();\n\n  if (\n    node.referenceType !== 'shortcut' &&\n    node.referenceType !== 'collapsed'\n  ) {\n    return exit;\n  }\n\n  compiler.encode = compiler.escape = returner;\n\n  return function () {\n    compiler.encode = encode;\n    compiler.escape = escape;\n    exit();\n  };\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:util:entity-prefix-length\n * @fileoverview Encode based on the identifier.\n */\n\n'use strict';\n\n/* Dependencies. */\nvar decode = require('parse-entities');\n\n/* Expose. */\nmodule.exports = length;\n\n/**\n * Returns the length of HTML entity that is a prefix of\n * the given string (excluding the ampersand), 0 if it\n * does not start with an entity.\n *\n * @example\n *   entityPrefixLength('&copycat') // 4\n *   entityPrefixLength('&foo &amp &bar') // 0\n *\n * @param {string} value - Input string.\n * @return {number} - Length of an entity.\n */\nfunction length(value) {\n  var prefix;\n\n  /* istanbul ignore if - Currently also tested for at\n   * implemention, but we keep it here because that’s\n   * proper. */\n  if (value.charAt(0) !== '&') {\n    return 0;\n  }\n\n  prefix = value.split('&', 2).join('&');\n\n  return prefix.length - decode(prefix).length;\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:util:label\n * @fileoverview Stringify a reference label.\n */\n\n'use strict';\n\n/* Expose. */\nmodule.exports = label;\n\n/**\n * Stringify a reference label.\n *\n * Because link references are easily, mistakingly,\n * created (for example, `[foo]`), reference nodes have\n * an extra property depicting how it looked in the\n * original document, so stringification can cause minimal\n * changes.\n *\n * @param {Object} node - `linkReference` or\n *   `imageReference` node.\n * @return {string} - Markdown label reference.\n */\nfunction label(node) {\n  var type = node.referenceType;\n  var value = type === 'full' ? node.identifier : '';\n\n  return type === 'shortcut' ? value : '[' + value + ']';\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:util:pad\n * @fileoverview Pad a given value.\n */\n\n'use strict';\n\n/* Dependencies. */\nvar repeat = require('repeat-string');\n\n/* Expose. */\nmodule.exports = pad;\n\n/* Constants. */\nvar INDENT = 4;\n\n/**\n * Pad `value` with `level * INDENT` spaces.  Respects\n * lines. Ignores empty lines.\n *\n * @example\n *   pad('foo', 1) // '    foo'\n *\n * @param {string} value - Content.\n * @param {number} level - Indentation level.\n * @return {string} - Padded `value`.\n */\nfunction pad(value, level) {\n  var index;\n  var padding;\n\n  value = value.split('\\n');\n\n  index = value.length;\n  padding = repeat(' ', level * INDENT);\n\n  while (index--) {\n    if (value[index].length !== 0) {\n      value[index] = padding + value[index];\n    }\n  }\n\n  return value.join('\\n');\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:util:returner\n * @fileoverview Return the given value.\n */\n\n'use strict';\n\n/* Expose. */\nmodule.exports = returner;\n\n/**\n * @param {*} value - Anything.\n * @return {*} - Given `value`.\n */\nfunction returner(value) {\n  return value;\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:visitors:blockquote\n * @fileoverview Stringify a blockquote.\n */\n\n'use strict';\n\n/* Expose. */\nmodule.exports = blockquote;\n\n/**\n * Stringify a blockquote.\n *\n * @param {Object} node - `blockquote` node.\n * @return {string} - Markdown blockquote.\n */\nfunction blockquote(node) {\n  var values = this.block(node).split('\\n');\n  var result = [];\n  var length = values.length;\n  var index = -1;\n  var value;\n\n  while (++index < length) {\n    value = values[index];\n    result[index] = (value ? ' ' : '') + value;\n  }\n\n  return '>' + result.join('\\n>');\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:visitors:break\n * @fileoverview Stringify a break.\n */\n\n'use strict';\n\n/* Expose. */\nmodule.exports = lineBreak;\n\n/* Constants. */\nvar map = {true: '\\\\\\n', false: '  \\n'};\n\n/**\n * Stringify a hard break.\n *\n * In Commonmark mode, trailing backslash form is used in order\n * to preserve trailing whitespace that the line may end with,\n * and also for better visibility.\n *\n * @return {string} - Markdown break.\n */\nfunction lineBreak() {\n  return map[this.options.commonmark];\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:visitors:code\n * @fileoverview Stringify code.\n */\n\n'use strict';\n\n/* Dependencies. */\nvar streak = require('longest-streak');\nvar repeat = require('repeat-string');\nvar pad = require('../util/pad');\n\n/* Expose. */\nmodule.exports = code;\n\n/* Constants. */\nvar FENCE = /([`~])\\1{2}/;\n\n/**\n * Stringify code.\n *\n * Creates indented code when:\n *\n * - No language tag exists;\n * - Not in `fences: true` mode;\n * - A non-empty value exists.\n *\n * Otherwise, GFM fenced code is created:\n *\n *     ```js\n *     foo();\n *     ```\n *\n * When in ``fence: `~` `` mode, uses tildes as fences:\n *\n *     ~~~js\n *     foo();\n *     ~~~\n *\n * Knows about internal fences (Note: GitHub/Kramdown does\n * not support this):\n *\n *     ````javascript\n *     ```markdown\n *     foo\n *     ```\n *     ````\n *\n * Supports named entities in the language flag with\n * `settings.encode` mode.\n *\n * @param {Object} node - `code` node.\n * @param {Object} parent - Parent of `node`.\n * @return {string} - Markdown code.\n */\nfunction code(node, parent) {\n  var self = this;\n  var value = node.value;\n  var options = self.options;\n  var marker = options.fence;\n  var language = self.encode(node.lang || '', node);\n  var fence;\n\n  /* Without (needed) fences. */\n  if (!language && !options.fences && value) {\n    /* Throw when pedantic, in a list item which\n     * isn’t compiled using a tab. */\n    if (\n      parent &&\n      parent.type === 'listItem' &&\n      options.listItemIndent !== 'tab' &&\n      options.pedantic\n    ) {\n      self.file.fail(\n        'Cannot indent code properly. See http://git.io/vgFvT',\n        node.position\n      );\n    }\n\n    return pad(value, 1);\n  }\n\n  fence = streak(value, marker) + 1;\n\n  /* Fix GFM / RedCarpet bug, where fence-like characters\n   * inside fenced code can exit a code-block.\n   * Yes, even when the outer fence uses different\n   * characters, or is longer.\n   * Thus, we can only pad the code to make it work. */\n  if (FENCE.test(value)) {\n    value = pad(value, 1);\n  }\n\n  fence = repeat(marker, Math.max(fence, 3));\n\n  return fence + language + '\\n' + value + '\\n' + fence;\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:visitors:definition\n * @fileoverview Stringify a definition.\n */\n\n'use strict';\n\n/* Dependencies. */\nvar uri = require('../util/enclose-uri');\nvar title = require('../util/enclose-title');\n\n/* Expose. */\nmodule.exports = definition;\n\n/**\n * Stringify an URL definition.\n *\n * Is smart about enclosing `url` (see `encloseURI()`) and\n * `title` (see `encloseTitle()`).\n *\n *    [foo]: <foo at bar dot com> 'An \"example\" e-mail'\n *\n * @param {Object} node - `definition` node.\n * @return {string} - Markdown definition.\n */\nfunction definition(node) {\n  var content = uri(node.url);\n\n  if (node.title) {\n    content += ' ' + title(node.title);\n  }\n\n  return '[' + node.identifier + ']: ' + content;\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:visitors:delete\n * @fileoverview Stringify a delete.\n */\n\n'use strict';\n\n/* Expose. */\nmodule.exports = strikethrough;\n\n/**\n * Stringify a `delete`.\n *\n * @param {Object} node - `delete` node.\n * @return {string} - Markdown strikethrough.\n */\nfunction strikethrough(node) {\n  return '~~' + this.all(node).join('') + '~~';\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:visitors:emphasis\n * @fileoverview Stringify a emphasis.\n */\n\n'use strict';\n\n/* Expose. */\nmodule.exports = emphasis;\n\n/**\n * Stringify a `emphasis`.\n *\n * The marker used is configurable through `emphasis`, which\n * defaults to an underscore (`'_'`) but also accepts an\n * asterisk (`'*'`):\n *\n *     *foo*\n *\n * @param {Object} node - `emphasis` node.\n * @return {string} - Markdown emphasis.\n */\nfunction emphasis(node) {\n  var marker = this.options.emphasis;\n  return marker + this.all(node).join('') + marker;\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:visitors:footnote-definition\n * @fileoverview Stringify a footnote-definition.\n */\n\n'use strict';\n\n/* Dependencies. */\nvar repeat = require('repeat-string');\n\n/* Expose. */\nmodule.exports = footnoteDefinition;\n\n/**\n * Stringify a footnote definition.\n *\n * @param {Object} node - `footnoteDefinition` node.\n * @return {string} - Markdown footnote definition.\n */\nfunction footnoteDefinition(node) {\n  var id = node.identifier.toLowerCase();\n  var content = this.all(node).join('\\n\\n' + repeat(' ', 4));\n\n  return '[^' + id + ']: ' + content;\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:visitors:footnote-reference\n * @fileoverview Stringify a footnote reference.\n */\n\n'use strict';\n\n/* Expose. */\nmodule.exports = footnoteReference;\n\n/**\n * Stringify a footnote reference.\n *\n * @param {Object} node - `footnoteReference` node.\n * @return {string} - Markdown footnote reference.\n */\nfunction footnoteReference(node) {\n  return '[^' + node.identifier + ']';\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:visitors:footnote\n * @fileoverview Stringify a footnote.\n */\n\n'use strict';\n\n/* Expose. */\nmodule.exports = footnote;\n\n/**\n * Stringify a footnote.\n *\n * @param {Object} node - `footnote` node.\n * @return {string} - Markdown footnote.\n */\nfunction footnote(node) {\n  return '[^' + this.all(node).join('') + ']';\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:visitors:heading\n * @fileoverview Stringify a heading.\n */\n\n'use strict';\n\n/* Dependencies. */\nvar repeat = require('repeat-string');\n\n/* Expose. */\nmodule.exports = heading;\n\n/**\n * Stringify heading.\n *\n * In `setext: true` mode and when `depth` is smaller than\n * three, creates a setext header:\n *\n *     Foo\n *     ===\n *\n * Otherwise, an ATX header is generated:\n *\n *     ### Foo\n *\n * In `closeAtx: true` mode, the header is closed with\n * hashes:\n *\n *     ### Foo ###\n *\n * @param {Object} node - `heading` node.\n * @return {string} - Markdown heading.\n */\nfunction heading(node) {\n  var self = this;\n  var depth = node.depth;\n  var setext = self.options.setext;\n  var closeAtx = self.options.closeAtx;\n  var content = self.all(node).join('');\n  var prefix;\n\n  if (setext && depth < 3) {\n    return content + '\\n' + repeat(depth === 1 ? '=' : '-', content.length);\n  }\n\n  prefix = repeat('#', node.depth);\n\n  return prefix + ' ' + content + (closeAtx ? ' ' + prefix : '');\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:visitors:html\n * @fileoverview Stringify html.\n */\n\n'use strict';\n\n/* Expose. */\nmodule.exports = html;\n\n/**\n * Stringify html.\n *\n * @param {Object} node - `html` node.\n * @return {string} - html.\n */\nfunction html(node) {\n  return node.value;\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:visitors:image-reference\n * @fileoverview Stringify an image reference.\n */\n\n'use strict';\n\n/* Dependencies. */\nvar label = require('../util/label');\n\n/* Expose. */\nmodule.exports = imageReference;\n\n/**\n * Stringify an image reference.\n *\n * @param {Object} node - `imageReference` node.\n * @return {string} - Markdown image reference.\n */\nfunction imageReference(node) {\n  return '![' + (this.encode(node.alt, node) || '') + ']' + label(node);\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:visitors:image\n * @fileoverview Stringify an image.\n */\n\n'use strict';\n\n/* Dependencies. */\nvar uri = require('../util/enclose-uri');\nvar title = require('../util/enclose-title');\n\n/* Expose. */\nmodule.exports = image;\n\n/**\n * Stringify an image.\n *\n * Is smart about enclosing `url` (see `encloseURI()`) and\n * `title` (see `encloseTitle()`).\n *\n *    ![foo](</fav icon.png> 'My \"favourite\" icon')\n *\n * Supports named entities in `url`, `alt`, and `title`\n * when in `settings.encode` mode.\n *\n * @param {Object} node - `image` node.\n * @return {string} - Markdown image.\n */\nfunction image(node) {\n  var self = this;\n  var content = uri(self.encode(node.url || '', node));\n  var exit = self.enterLink();\n  var alt = self.encode(self.escape(node.alt || '', node));\n\n  exit();\n\n  if (node.title) {\n    content += ' ' + title(self.encode(node.title, node));\n  }\n\n  return '![' + alt + '](' + content + ')';\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:visitors:inline-code\n * @fileoverview Stringify inline code.\n */\n\n'use strict';\n\n/* Dependencies. */\nvar streak = require('longest-streak');\nvar repeat = require('repeat-string');\n\n/* Expose. */\nmodule.exports = inlineCode;\n\n/**\n * Stringify inline code.\n *\n * Knows about internal ticks (`\\``), and ensures one more\n * tick is used to enclose the inline code:\n *\n *     ```foo ``bar`` baz```\n *\n * Even knows about inital and final ticks:\n *\n *     `` `foo ``\n *     `` foo` ``\n *\n * @param {Object} node - `inlineCode` node.\n * @return {string} - Markdown inline code.\n */\nfunction inlineCode(node) {\n  var value = node.value;\n  var ticks = repeat('`', streak(value, '`') + 1);\n  var start = ticks;\n  var end = ticks;\n\n  if (value.charAt(0) === '`') {\n    start += ' ';\n  }\n\n  if (value.charAt(value.length - 1) === '`') {\n    end = ' ' + end;\n  }\n\n  return start + value + end;\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:visitors:link-reference\n * @fileoverview Stringify a link reference.\n */\n\n'use strict';\n\n/* Dependencies. */\nvar copy = require('../util/copy-identifier-encoding');\nvar label = require('../util/label');\n\n/* Expose. */\nmodule.exports = linkReference;\n\n/**\n * Stringify a link reference.\n *\n * @param {Object} node - `linkReference` node.\n * @return {string} - Markdown link reference.\n */\nfunction linkReference(node) {\n  var self = this;\n  var type = node.referenceType;\n  var exit = self.enterLinkReference(self, node);\n  var value = self.all(node).join('');\n\n  exit();\n\n  if (type === 'shortcut' || type === 'collapsed') {\n    value = copy(value, node.identifier);\n  }\n\n  return '[' + value + ']' + label(node);\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:visitors:link\n * @fileoverview Stringify a link.\n */\n\n'use strict';\n\n/* Dependencies. */\nvar uri = require('../util/enclose-uri');\nvar title = require('../util/enclose-title');\n\n/* Expose. */\nmodule.exports = link;\n\n/* Expression for a protocol:\n * http://en.wikipedia.org/wiki/URI_scheme#Generic_syntax */\nvar PROTOCOL = /^[a-z][a-z+.-]+:\\/?/i;\n\n/**\n * Stringify a link.\n *\n * When no title exists, the compiled `children` equal\n * `url`, and `url` starts with a protocol, an auto\n * link is created:\n *\n *     <http://example.com>\n *\n * Otherwise, is smart about enclosing `url` (see\n * `encloseURI()`) and `title` (see `encloseTitle()`).\n *\n *    [foo](<foo at bar dot com> 'An \"example\" e-mail')\n *\n * Supports named entities in the `url` and `title` when\n * in `settings.encode` mode.\n *\n * @param {Object} node - `link` node.\n * @return {string} - Markdown link.\n */\nfunction link(node) {\n  var self = this;\n  var content = self.encode(node.url || '', node);\n  var exit = self.enterLink();\n  var escaped = self.encode(self.escape(node.url || '', node));\n  var value = self.all(node).join('');\n\n  exit();\n\n  if (\n    node.title == null &&\n    PROTOCOL.test(content) &&\n    (escaped === value || escaped === 'mailto:' + value)\n  ) {\n    /* Backslash escapes do not work in autolinks,\n     * so we do not escape. */\n    return uri(self.encode(node.url), true);\n  }\n\n  content = uri(content);\n\n  if (node.title) {\n    content += ' ' + title(self.encode(self.escape(node.title, node), node));\n  }\n\n  return '[' + value + '](' + content + ')';\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:visitors:list-item\n * @fileoverview Stringify a list item.\n */\n\n'use strict';\n\n/* Dependencies. */\nvar repeat = require('repeat-string');\nvar pad = require('../util/pad');\n\n/* Expose. */\nmodule.exports = listItem;\n\n/* Which checkbox to use. */\nvar CHECKBOX_MAP = {};\n\nCHECKBOX_MAP.undefined = CHECKBOX_MAP.null = '';\nCHECKBOX_MAP.true = '[x] ';\nCHECKBOX_MAP.false = '[ ] ';\n\n/**\n * Stringify a list item.\n *\n * Prefixes the content with a checked checkbox when\n * `checked: true`:\n *\n *     [x] foo\n *\n * Prefixes the content with an unchecked checkbox when\n * `checked: false`:\n *\n *     [ ] foo\n *\n * @param {Object} node - `listItem` node.\n * @param {Object} parent - `list` node.\n * @param {number} position - Index of `node` in `parent`.\n * @param {string} bullet - Bullet to use.  This, and the\n *   `listItemIndent` setting define the used indent.\n * @return {string} - Markdown list item.\n */\nfunction listItem(node, parent, position, bullet) {\n  var self = this;\n  var style = self.options.listItemIndent;\n  var loose = node.loose;\n  var children = node.children;\n  var length = children.length;\n  var values = [];\n  var index = -1;\n  var value;\n  var indent;\n  var spacing;\n\n  while (++index < length) {\n    values[index] = self.visit(children[index], node);\n  }\n\n  value = CHECKBOX_MAP[node.checked] + values.join(loose ? '\\n\\n' : '\\n');\n\n  if (style === '1' || (style === 'mixed' && value.indexOf('\\n') === -1)) {\n    indent = bullet.length + 1;\n    spacing = ' ';\n  } else {\n    indent = Math.ceil((bullet.length + 1) / 4) * 4;\n    spacing = repeat(' ', indent - bullet.length);\n  }\n\n  value = bullet + spacing + pad(value, indent / 4).slice(indent);\n\n  if (loose && parent.children.length - 1 !== position) {\n    value += '\\n';\n  }\n\n  return value;\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:visitors:list\n * @fileoverview Stringify a list.\n */\n\n'use strict';\n\n/* Expose. */\nmodule.exports = list;\n\n/* Which method to use based on `list.ordered`. */\nvar ORDERED_MAP = {\n  true: 'visitOrderedItems',\n  false: 'visitUnorderedItems'\n};\n\n/**\n * Stringify a list. See `Compiler#visitOrderedList()` and\n * `Compiler#visitUnorderedList()` for internal working.\n *\n * @param {Object} node - `list` node.\n * @return {string} - Markdown list.\n */\nfunction list(node) {\n  return this[ORDERED_MAP[node.ordered]](node);\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:visitors:paragraph\n * @fileoverview Stringify a paragraph.\n */\n\n'use strict';\n\n/* Expose. */\nmodule.exports = paragraph;\n\n/**\n * Stringify a paragraph.\n *\n * @param {Object} node - `paragraph` node.\n * @return {string} - Markdown paragraph.\n */\nfunction paragraph(node) {\n  return this.all(node).join('');\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:visitors:root\n * @fileoverview Stringify a root.\n */\n\n'use strict';\n\n/* Expose. */\nmodule.exports = root;\n\n/**\n * Stringify a root.\n *\n * Adds a final newline to ensure valid POSIX files.\n *\n * @param {Object} node - `root` node.\n * @return {string} - Document.\n */\nfunction root(node) {\n  return this.block(node) + '\\n';\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:visitors:strong\n * @fileoverview Stringify a strong.\n */\n\n'use strict';\n\n/* Dependencies. */\nvar repeat = require('repeat-string');\n\n/* Expose. */\nmodule.exports = strong;\n\n/**\n * Stringify a `strong`.\n *\n * The marker used is configurable by `strong`, which\n * defaults to an asterisk (`'*'`) but also accepts an\n * underscore (`'_'`):\n *\n *     __foo__\n *\n * @param {Object} node - `strong` node.\n * @return {string} - Markdown strong.\n */\nfunction strong(node) {\n  var marker = repeat(this.options.strong, 2);\n  return marker + this.all(node).join('') + marker;\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:visitors:table-cell\n * @fileoverview Stringify a table-cell.\n */\n\n'use strict';\n\n/* Expose. */\nmodule.exports = tableCell;\n\n/**\n * Stringify a table cell.\n *\n * @param {Object} node - `tableCell` node.\n * @return {string} - Markdown table cell.\n */\nfunction tableCell(node) {\n  return this.all(node).join('');\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:visitors:table\n * @fileoverview Stringify a table.\n */\n\n'use strict';\n\n/* Dependencies. */\nvar markdownTable = require('markdown-table');\n\n/* Expose. */\nmodule.exports = table;\n\n/**\n * Stringify table.\n *\n * Creates a fenced table by default, but not in\n * `looseTable: true` mode:\n *\n *     Foo | Bar\n *     :-: | ---\n *     Baz | Qux\n *\n * NOTE: Be careful with `looseTable: true` mode, as a\n * loose table inside an indented code block on GitHub\n * renders as an actual table!\n *\n * Creates a spaced table by default, but not in\n * `spacedTable: false`:\n *\n *     |Foo|Bar|\n *     |:-:|---|\n *     |Baz|Qux|\n *\n * @param {Object} node - `table` node.\n * @return {string} - Markdown table.\n */\nfunction table(node) {\n  var self = this;\n  var loose = self.options.looseTable;\n  var spaced = self.options.spacedTable;\n  var pad = self.options.paddedTable;\n  var rows = node.children;\n  var index = rows.length;\n  var exit = self.enterTable();\n  var result = [];\n  var start;\n  var end;\n\n  while (index--) {\n    result[index] = self.all(rows[index]);\n  }\n\n  exit();\n\n  if (loose) {\n    start = end = '';\n  } else if (spaced) {\n    start = '| ';\n    end = ' |';\n  } else {\n    start = end = '|';\n  }\n\n  return markdownTable(result, {\n    align: node.align,\n    pad: pad,\n    start: start,\n    end: end,\n    delimiter: spaced ? ' | ' : '|'\n  });\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:visitors:text\n * @fileoverview Stringify a text.\n */\n\n'use strict';\n\n/* Expose. */\nmodule.exports = text;\n\n/**\n * Stringify text.\n *\n * Supports named entities in `settings.encode: true` mode:\n *\n *     AT&amp;T\n *\n * Supports numbered entities in `settings.encode: numbers`\n * mode:\n *\n *     AT&#x26;T\n *\n * @param {Object} node - `text` node.\n * @param {Object?} [parent] - Parent of `node`.\n * @return {string} - Markdown text.\n */\nfunction text(node, parent) {\n  return this.encode(this.escape(node.value, node, parent), node);\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:visitors:thematic-break\n * @fileoverview Stringify a thematic-break.\n */\n\n'use strict';\n\n/* Dependencies. */\nvar repeat = require('repeat-string');\n\n/* Expose. */\nmodule.exports = thematic;\n\n/**\n * Stringify a `thematic-break`.\n *\n * The character used is configurable through `rule`: (`'_'`)\n *\n *     ___\n *\n * The number of repititions is defined through\n * `ruleRepetition`: (`6`)\n *\n *     ******\n *\n * Whether spaces delimit each character, is configured\n * through `ruleSpaces`: (`true`)\n *\n *     * * *\n *\n * @return {string} - Markdown thematic break.\n */\nfunction thematic() {\n  var options = this.options;\n  var rule = repeat(options.rule, options.ruleRepetition);\n  return options.ruleSpaces ? rule.split('').join(' ') : rule;\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark:stringify:visitors:yaml\n * @fileoverview Stringify yaml.\n */\n\n'use strict';\n\n/* Dependencies. */\nvar repeat = require('repeat-string');\n\n/* Expose. */\nmodule.exports = yaml;\n\n/**\n * Stringify `yaml`.\n *\n * @param {Object} node - `yaml` node.\n * @return {string} - Markdown yaml.\n */\nfunction yaml(node) {\n  var marker = repeat('-', 3);\n  return marker + (node.value ? '\\n' + node.value : '') + '\\n' + marker;\n}\n","'use strict';\n\nvar toHAST = require('mdast-util-to-hast');\nvar sanitize = require('hast-util-sanitize');\nvar toH = require('hast-to-hyperscript');\nvar hyperscript = require('virtual-dom/h');\nvar has = require('has');\n\nmodule.exports = plugin;\n\n/* Attach a VDOM compiler. */\nfunction plugin(processor, options) {\n  var settings = options || {};\n  var info = settings.sanitize;\n  var clean = info !== false;\n  var schema = info && typeof info === 'object' ? info : null;\n  var components = settings.components || {};\n  var h = settings.h || hyperscript;\n\n  Compiler.prototype.compile = compile;\n\n  processor.Compiler = Compiler;\n\n  return;\n\n  function Compiler() {}\n\n  /* Compile MDAST to VDOM. */\n  function compile(node) {\n    var hast = div(toHAST(node).children);\n\n    if (clean) {\n      hast = sanitize(hast, schema);\n\n      /* If `div` is removed by sanitation, add it back. */\n      if (hast.type === 'root') {\n        hast = div(hast.children);\n      }\n    }\n\n    return toH(w, hast, settings.prefix);\n  }\n\n  /* Wrapper around `h` to pass components in. */\n  function w(name, props, children) {\n    var id = name.toLowerCase();\n    var fn = has(components, id) ? components[id] : h;\n    return fn(name, props, children);\n  }\n\n  /* Wrap `children` in a HAST div. */\n  function div(children) {\n    return {\n      type: 'element',\n      tagName: 'div',\n      properties: {},\n      children: children\n    };\n  }\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module remark\n * @fileoverview Markdown processor powered by plugins.\n */\n\n'use strict';\n\n/* Dependencies. */\nvar unified = require('unified');\nvar parse = require('remark-parse');\nvar stringify = require('remark-stringify');\n\n/* Expose. */\nmodule.exports = unified().use(parse).use(stringify).abstract();\n","/*!\n * repeat-string <https://github.com/jonschlinkert/repeat-string>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\n/**\n * Results cache\n */\n\nvar res = '';\nvar cache;\n\n/**\n * Expose `repeat`\n */\n\nmodule.exports = repeat;\n\n/**\n * Repeat the given `string` the specified `number`\n * of times.\n *\n * **Example:**\n *\n * ```js\n * var repeat = require('repeat-string');\n * repeat('A', 5);\n * //=> AAAAA\n * ```\n *\n * @param {String} `string` The string to repeat\n * @param {Number} `number` The number of times to repeat the string\n * @return {String} Repeated string\n * @api public\n */\n\nfunction repeat(str, num) {\n  if (typeof str !== 'string') {\n    throw new TypeError('expected a string');\n  }\n\n  // cover common, quick use cases\n  if (num === 1) return str;\n  if (num === 2) return str + str;\n\n  var max = str.length * num;\n  if (cache !== str || typeof cache === 'undefined') {\n    cache = str;\n    res = '';\n  } else if (res.length >= max) {\n    return res.substr(0, max);\n  }\n\n  while (max > res.length && num > 1) {\n    if (num & 1) {\n      res += str;\n    }\n\n    num >>= 1;\n    str += str;\n  }\n\n  res += str;\n  res = res.substr(0, max);\n  return res;\n}\n","'use strict';\n\nvar path = require('path');\n\nfunction replaceExt(npath, ext) {\n  if (typeof npath !== 'string') {\n    return npath;\n  }\n\n  if (npath.length === 0) {\n    return npath;\n  }\n\n  var nFileName = path.basename(npath, path.extname(npath)) + ext;\n  return path.join(path.dirname(npath), nFileName);\n}\n\nmodule.exports = replaceExt;\n","(function (root, factory) {\n  if (typeof define === \"function\" && define.amd) {\n    define([], factory);\n  } else if (typeof module === \"object\" && module.exports) {\n    module.exports = factory();\n  } else {\n    root.Scrollparent = factory();\n  }\n}(this, function () {\n  var regex = /(auto|scroll)/;\n\n  var parents = function (node, ps) {\n    if (node.parentNode === null) { return ps; }\n\n    return parents(node.parentNode, ps.concat([node]));\n  };\n\n  var style = function (node, prop) {\n    return getComputedStyle(node, null).getPropertyValue(prop);\n  };\n\n  var overflow = function (node) {\n    return style(node, \"overflow\") + style(node, \"overflow-y\") + style(node, \"overflow-x\");\n  };\n\n  var scroll = function (node) {\n   return regex.test(overflow(node));\n  };\n\n  var scrollParent = function (node) {\n    if (!(node instanceof HTMLElement || node instanceof SVGElement)) {\n      return ;\n    }\n\n    var ps = parents(node.parentNode, []);\n\n    for (var i = 0; i < ps.length; i += 1) {\n      if (scroll(ps[i])) {\n        return ps[i];\n      }\n    }\n\n    return document.body;\n  };\n\n  return scrollParent;\n}));\n","module.exports = function shallowEqual(objA, objB, compare, compareContext) {\n\n    var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n    if(ret !== void 0) {\n        return !!ret;\n    }\n\n    if(objA === objB) {\n        return true;\n    }\n\n    if(typeof objA !== 'object' || !objA ||\n       typeof objB !== 'object' || !objB) {\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    }\n\n    var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n    // Test for A's keys different from B.\n    for(var idx = 0; idx < keysA.length; idx++) {\n\n        var key = keysA[idx];\n\n        if(!bHasOwnProperty(key)) {\n            return false;\n        }\n\n        var valueA = objA[key];\n        var valueB = objB[key];\n\n        ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n        if(ret === false ||\n           ret === void 0 && valueA !== valueB) {\n            return false;\n        }\n\n    }\n\n    return true;\n\n};\n","'use strict';\n\nvar randomFromSeed = require('./random/random-from-seed');\n\nvar ORIGINAL = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-';\nvar alphabet;\nvar previousSeed;\n\nvar shuffled;\n\nfunction reset() {\n    shuffled = false;\n}\n\nfunction setCharacters(_alphabet_) {\n    if (!_alphabet_) {\n        if (alphabet !== ORIGINAL) {\n            alphabet = ORIGINAL;\n            reset();\n        }\n        return;\n    }\n\n    if (_alphabet_ === alphabet) {\n        return;\n    }\n\n    if (_alphabet_.length !== ORIGINAL.length) {\n        throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. You submitted ' + _alphabet_.length + ' characters: ' + _alphabet_);\n    }\n\n    var unique = _alphabet_.split('').filter(function(item, ind, arr){\n       return ind !== arr.lastIndexOf(item);\n    });\n\n    if (unique.length) {\n        throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. These characters were not unique: ' + unique.join(', '));\n    }\n\n    alphabet = _alphabet_;\n    reset();\n}\n\nfunction characters(_alphabet_) {\n    setCharacters(_alphabet_);\n    return alphabet;\n}\n\nfunction setSeed(seed) {\n    randomFromSeed.seed(seed);\n    if (previousSeed !== seed) {\n        reset();\n        previousSeed = seed;\n    }\n}\n\nfunction shuffle() {\n    if (!alphabet) {\n        setCharacters(ORIGINAL);\n    }\n\n    var sourceArray = alphabet.split('');\n    var targetArray = [];\n    var r = randomFromSeed.nextValue();\n    var characterIndex;\n\n    while (sourceArray.length > 0) {\n        r = randomFromSeed.nextValue();\n        characterIndex = Math.floor(r * sourceArray.length);\n        targetArray.push(sourceArray.splice(characterIndex, 1)[0]);\n    }\n    return targetArray.join('');\n}\n\nfunction getShuffled() {\n    if (shuffled) {\n        return shuffled;\n    }\n    shuffled = shuffle();\n    return shuffled;\n}\n\n/**\n * lookup shuffled letter\n * @param index\n * @returns {string}\n */\nfunction lookup(index) {\n    var alphabetShuffled = getShuffled();\n    return alphabetShuffled[index];\n}\n\nmodule.exports = {\n    characters: characters,\n    seed: setSeed,\n    lookup: lookup,\n    shuffled: getShuffled\n};\n","'use strict';\n\nvar encode = require('./encode');\nvar alphabet = require('./alphabet');\n\n// Ignore all milliseconds before a certain time to reduce the size of the date entropy without sacrificing uniqueness.\n// This number should be updated every year or so to keep the generated id short.\n// To regenerate `new Date() - 0` and bump the version. Always bump the version!\nvar REDUCE_TIME = 1459707606518;\n\n// don't change unless we change the algos or REDUCE_TIME\n// must be an integer and less than 16\nvar version = 6;\n\n// Counter is used when shortid is called multiple times in one second.\nvar counter;\n\n// Remember the last time shortid was called in case counter is needed.\nvar previousSeconds;\n\n/**\n * Generate unique id\n * Returns string id\n */\nfunction build(clusterWorkerId) {\n\n    var str = '';\n\n    var seconds = Math.floor((Date.now() - REDUCE_TIME) * 0.001);\n\n    if (seconds === previousSeconds) {\n        counter++;\n    } else {\n        counter = 0;\n        previousSeconds = seconds;\n    }\n\n    str = str + encode(alphabet.lookup, version);\n    str = str + encode(alphabet.lookup, clusterWorkerId);\n    if (counter > 0) {\n        str = str + encode(alphabet.lookup, counter);\n    }\n    str = str + encode(alphabet.lookup, seconds);\n\n    return str;\n}\n\nmodule.exports = build;\n","'use strict';\nvar alphabet = require('./alphabet');\n\n/**\n * Decode the id to get the version and worker\n * Mainly for debugging and testing.\n * @param id - the shortid-generated id.\n */\nfunction decode(id) {\n    var characters = alphabet.shuffled();\n    return {\n        version: characters.indexOf(id.substr(0, 1)) & 0x0f,\n        worker: characters.indexOf(id.substr(1, 1)) & 0x0f\n    };\n}\n\nmodule.exports = decode;\n","'use strict';\n\nvar randomByte = require('./random/random-byte');\n\nfunction encode(lookup, number) {\n    var loopCounter = 0;\n    var done;\n\n    var str = '';\n\n    while (!done) {\n        str = str + lookup( ( (number >> (4 * loopCounter)) & 0x0f ) | randomByte() );\n        done = number < (Math.pow(16, loopCounter + 1 ) );\n        loopCounter++;\n    }\n    return str;\n}\n\nmodule.exports = encode;\n","'use strict';\n\nvar alphabet = require('./alphabet');\nvar encode = require('./encode');\nvar decode = require('./decode');\nvar build = require('./build');\nvar isValid = require('./is-valid');\n\n// if you are using cluster or multiple servers use this to make each instance\n// has a unique value for worker\n// Note: I don't know if this is automatically set when using third\n// party cluster solutions such as pm2.\nvar clusterWorkerId = require('./util/cluster-worker-id') || 0;\n\n/**\n * Set the seed.\n * Highly recommended if you don't want people to try to figure out your id schema.\n * exposed as shortid.seed(int)\n * @param seed Integer value to seed the random alphabet.  ALWAYS USE THE SAME SEED or you might get overlaps.\n */\nfunction seed(seedValue) {\n    alphabet.seed(seedValue);\n    return module.exports;\n}\n\n/**\n * Set the cluster worker or machine id\n * exposed as shortid.worker(int)\n * @param workerId worker must be positive integer.  Number less than 16 is recommended.\n * returns shortid module so it can be chained.\n */\nfunction worker(workerId) {\n    clusterWorkerId = workerId;\n    return module.exports;\n}\n\n/**\n *\n * sets new characters to use in the alphabet\n * returns the shuffled alphabet\n */\nfunction characters(newCharacters) {\n    if (newCharacters !== undefined) {\n        alphabet.characters(newCharacters);\n    }\n\n    return alphabet.shuffled();\n}\n\n/**\n * Generate unique id\n * Returns string id\n */\nfunction generate() {\n  return build(clusterWorkerId);\n}\n\n// Export all other functions as properties of the generate function\nmodule.exports = generate;\nmodule.exports.generate = generate;\nmodule.exports.seed = seed;\nmodule.exports.worker = worker;\nmodule.exports.characters = characters;\nmodule.exports.decode = decode;\nmodule.exports.isValid = isValid;\n","'use strict';\nvar alphabet = require('./alphabet');\n\nfunction isShortId(id) {\n    if (!id || typeof id !== 'string' || id.length < 6 ) {\n        return false;\n    }\n\n    var characters = alphabet.characters();\n    var len = id.length;\n    for(var i = 0; i < len;i++) {\n        if (characters.indexOf(id[i]) === -1) {\n            return false;\n        }\n    }\n    return true;\n}\n\nmodule.exports = isShortId;\n","'use strict';\n\nvar crypto = typeof window === 'object' && (window.crypto || window.msCrypto); // IE 11 uses window.msCrypto\n\nfunction randomByte() {\n    if (!crypto || !crypto.getRandomValues) {\n        return Math.floor(Math.random() * 256) & 0x30;\n    }\n    var dest = new Uint8Array(1);\n    crypto.getRandomValues(dest);\n    return dest[0] & 0x30;\n}\n\nmodule.exports = randomByte;\n","'use strict';\n\n// Found this seed-based random generator somewhere\n// Based on The Central Randomizer 1.3 (C) 1997 by Paul Houle (houle@msc.cornell.edu)\n\nvar seed = 1;\n\n/**\n * return a random number based on a seed\n * @param seed\n * @returns {number}\n */\nfunction getNextValue() {\n    seed = (seed * 9301 + 49297) % 233280;\n    return seed/(233280.0);\n}\n\nfunction setSeed(_seed_) {\n    seed = _seed_;\n}\n\nmodule.exports = {\n    nextValue: getNextValue,\n    seed: setSeed\n};\n","'use strict';\n\nmodule.exports = 0;\n","'use strict';\n\nvar trim = require('trim');\n\nexports.parse = parse;\nexports.stringify = stringify;\n\nvar empty = '';\nvar space = ' ';\nvar whiteSpace = /[ \\t\\n\\r\\f]+/g;\n\nfunction parse(value) {\n  var input = trim(String(value || empty));\n\n  if (input === empty) {\n    return [];\n  }\n\n  return input.split(whiteSpace);\n}\n\nfunction stringify(values) {\n  return trim(values.join(space));\n}\n","/**\n * @author Titus Wormer\n * @copyright 2016 Titus Wormer\n * @license MIT\n * @module state-toggle\n * @fileoverview Enter/exit a state.\n */\n\n'use strict';\n\n/* eslint-env commonjs */\n\n/* Expose. */\nmodule.exports = factory;\n\n/**\n * Construct a state `toggler`: a function which inverses\n * `property` in context based on its current value.\n * The by `toggler` returned function restores that value.\n *\n * @param {string} key - Property to toggle.\n * @param {boolean} state - Default state.\n * @param {Object?} [ctx] - Context object.\n * @return {Function} - Enter.\n */\nfunction factory(key, state, ctx) {\n  /**\n   * Enter a state.\n   *\n   * @return {Function} - Exit state.\n   */\n  return function () {\n    var context = ctx || this;\n    var current = context[key];\n\n    context[key] = !state;\n\n    /**\n     * Cancel state to its value before entering.\n     */\n    return function () {\n      context[key] = current;\n    };\n  };\n}\n","'use strict';\nmodule.exports = function (str) {\n\treturn encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n\t\treturn '%' + c.charCodeAt(0).toString(16).toUpperCase();\n\t});\n};\n","'use strict';\n\nvar entities = require('character-entities-html4');\nvar legacy = require('character-entities-legacy');\nvar hexadecimal = require('is-hexadecimal');\nvar alphanumerical = require('is-alphanumerical');\nvar dangerous = require('./dangerous.json');\n\n/* Expose. */\nmodule.exports = encode;\n\nencode.escape = escape;\n\nvar own = {}.hasOwnProperty;\n\n/* List of enforced escapes. */\nvar escapes = ['\"', '\\'', '<', '>', '&', '`'];\n\n/* Map of characters to names. */\nvar characters = construct();\n\n/* Default escapes. */\nvar EXPRESSION_ESCAPE = toExpression(escapes);\n\n/* Surrogate pairs. */\nvar EXPRESSION_SURROGATE_PAIR = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n\n/* Non-ASCII characters. */\n// eslint-disable-next-line no-control-regex\nvar EXPRESSION_BMP = /[\\x01-\\t\\x0B\\f\\x0E-\\x1F\\x7F\\x81\\x8D\\x8F\\x90\\x9D\\xA0-\\uFFFF]/g;\n\n/* Encode special characters in `value`. */\nfunction encode(value, options) {\n  var settings = options || {};\n  var subset = settings.subset;\n  var set = subset ? toExpression(subset) : EXPRESSION_ESCAPE;\n  var escapeOnly = settings.escapeOnly;\n  var omit = settings.omitOptionalSemicolons;\n\n  value = value.replace(set, function (char, pos, val) {\n    return one(char, val.charAt(pos + 1), settings);\n  });\n\n  if (subset || escapeOnly) {\n    return value;\n  }\n\n  return value\n    .replace(EXPRESSION_SURROGATE_PAIR, function (pair, pos, val) {\n      return toHexReference(\n        ((pair.charCodeAt(0) - 0xD800) * 0x400) +\n        pair.charCodeAt(1) - 0xDC00 + 0x10000,\n        val.charAt(pos + 2),\n        omit\n      );\n    })\n    .replace(EXPRESSION_BMP, function (char, pos, val) {\n      return one(char, val.charAt(pos + 1), settings);\n    });\n}\n\n/* Shortcut to escape special characters in HTML. */\nfunction escape(value) {\n  return encode(value, {\n    escapeOnly: true,\n    useNamedReferences: true\n  });\n}\n\n/* Encode `char` according to `options`. */\nfunction one(char, next, options) {\n  var shortest = options.useShortestReferences;\n  var omit = options.omitOptionalSemicolons;\n  var named;\n  var numeric;\n\n  if (\n    (shortest || options.useNamedReferences) &&\n    own.call(characters, char)\n  ) {\n    named = toNamed(characters[char], next, omit, options.attribute);\n  }\n\n  if (shortest || !named) {\n    numeric = toHexReference(char.charCodeAt(0), next, omit);\n  }\n\n  if (named && (!shortest || named.length < numeric.length)) {\n    return named;\n  }\n\n  return numeric;\n}\n\n/* Transform `code` into an entity. */\nfunction toNamed(name, next, omit, attribute) {\n  var value = '&' + name;\n\n  if (\n    omit &&\n    own.call(legacy, name) &&\n    dangerous.indexOf(name) === -1 &&\n    (!attribute || (next && next !== '=' && !alphanumerical(next)))\n  ) {\n    return value;\n  }\n\n  return value + ';';\n}\n\n/* Transform `code` into a hexadecimal character reference. */\nfunction toHexReference(code, next, omit) {\n  var value = '&#x' + code.toString(16).toUpperCase();\n  return omit && next && !hexadecimal(next) ? value : value + ';';\n}\n\n/* Create an expression for `characters`. */\nfunction toExpression(characters) {\n  return new RegExp('[' + characters.join('') + ']', 'g');\n}\n\n/* Construct the map. */\nfunction construct() {\n  var chars = {};\n  var name;\n\n  for (name in entities) {\n    chars[entities[name]] = name;\n  }\n\n  return chars;\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.default = topologicallyCombineReducers;\n\nvar _toposortClass = require('toposort-class');\n\nvar _toposortClass2 = _interopRequireDefault(_toposortClass);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction topologicallyCombineReducers(reducers) {\n    var dependencies = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n    // create the toposort class\n    var ts = new _toposortClass2.default();\n\n    // add the dependencies into toposort class\n    Object.keys(reducers).forEach(function (key) {\n        ts = ts.add(key, dependencies[key] || []);\n    });\n\n    // create the processing order\n    var order = ts.sort().reverse();\n\n    // return the combined reducer\n    return function () {\n        var state = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n        var action = arguments[1];\n\n\n        // process the reducers and return the newly combined state\n        return order.reduce(function (state, key) {\n            var oldChildState = state[key];\n            var newChildState = reducers[key](oldChildState, action, state);\n\n            // only create a new combined state if the child state changed\n            if (oldChildState !== newChildState) {\n                return _extends({}, state, _defineProperty({}, key, newChildState));\n            }\n\n            // otherwise return the old state object\n            return state;\n        }, state);\n    };\n}","/****\n * The MIT License (MIT)\n *\n * Copyright (c) 2015 Gustavo Henke and Aaron Trent\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n ****/\n(function( global, factory ) {\n    if( typeof define === \"function\" && define.amd ) {\n        define( \"Toposort\", [\"exports\", \"module\"], factory );\n    } else if( typeof exports !== \"undefined\" && typeof module !== \"undefined\" ) {\n        factory( exports, module );\n    } else {\n        var mod = {\n            exports: {}\n        };\n        factory( mod.exports, mod );\n        global.Toposort = mod.exports;\n    }\n})( this, function( exports, module ) {\n    \"use strict\";\n\n    function _classCallCheck( instance, Constructor ) {\n        if( !(instance instanceof Constructor) ) {\n            throw new TypeError( \"Cannot call a class as a function\" );\n        }\n    }\n\n    var Toposort = (function() {\n        function Toposort() {\n            _classCallCheck( this, Toposort );\n\n            this.edges = [];\n            this.Toposort = Toposort;\n        }\n\n        /**\n         * Adds dependency edges.\n         *\n         * @since   0.1.0\n         * @param   {String} item               An dependent name. Must be an string and not empty\n         * @param   {String[]|String} [deps]    An dependency or array of dependencies\n         * @returns {Toposort}                  The Toposort instance\n         */\n\n        Toposort.prototype.add = function add( item, deps ) {\n            if( typeof item !== \"string\" || !item ) {\n                throw new TypeError( \"Dependent name must be given as a not empty string\" );\n            }\n\n            deps = Array.isArray( deps ) ? deps : [deps];\n\n            if( deps.length > 0 ) {\n                for( var _iterator = deps, _isArray = Array.isArray( _iterator ), _i = 0, _iterator = _isArray ?\n                                                                                                      _iterator :\n                                                                                                      _iterator[Symbol.iterator](); ; ) {\n                    var _ref;\n\n                    if( _isArray ) {\n                        if( _i >= _iterator.length ) {\n                            break;\n                        }\n                        _ref = _iterator[_i++];\n                    } else {\n                        _i = _iterator.next();\n                        if( _i.done ) {\n                            break;\n                        }\n                        _ref = _i.value;\n                    }\n\n                    var dep = _ref;\n\n                    if( typeof dep !== \"string\" || !dep ) {\n                        throw new TypeError( \"Dependency name must be given as a not empty string\" );\n                    }\n\n                    this.edges.push( [item, dep] );\n                }\n            } else {\n                this.edges.push( [item] );\n            }\n\n            return this;\n        };\n\n        /**\n         * Runs the toposorting and return an ordered array of strings\n         *\n         * @since   0.1.0\n         * @returns {String[]}  The list of items topologically sorted.\n         */\n\n        Toposort.prototype.sort = function sort() {\n            var _this = this;\n\n            var nodes = [];\n\n            //accumulate unique nodes into a large list\n            for( var _iterator2 = this.edges, _isArray2 = Array.isArray( _iterator2 ), _i2 = 0, _iterator2 = _isArray2 ?\n                                                                                                             _iterator2 :\n                                                                                                             _iterator2[Symbol.iterator](); ; ) {\n                var _ref2;\n\n                if( _isArray2 ) {\n                    if( _i2 >= _iterator2.length ) {\n                        break;\n                    }\n                    _ref2 = _iterator2[_i2++];\n                } else {\n                    _i2 = _iterator2.next();\n                    if( _i2.done ) {\n                        break;\n                    }\n                    _ref2 = _i2.value;\n                }\n\n                var edge = _ref2;\n\n                for( var _iterator3 = edge, _isArray3 = Array.isArray( _iterator3 ), _i3 = 0, _iterator3 = _isArray3 ?\n                                                                                                           _iterator3 :\n                                                                                                           _iterator3[Symbol.iterator](); ; ) {\n                    var _ref3;\n\n                    if( _isArray3 ) {\n                        if( _i3 >= _iterator3.length ) {\n                            break;\n                        }\n                        _ref3 = _iterator3[_i3++];\n                    } else {\n                        _i3 = _iterator3.next();\n                        if( _i3.done ) {\n                            break;\n                        }\n                        _ref3 = _i3.value;\n                    }\n\n                    var node = _ref3;\n\n                    if( nodes.indexOf( node ) === -1 ) {\n                        nodes.push( node );\n                    }\n                }\n            }\n\n            //initialize the placement of nodes into the sorted array at the end\n            var place = nodes.length;\n\n            //initialize the sorted array with the same length as the unique nodes array\n            var sorted = new Array( nodes.length );\n\n            //define a visitor function that recursively traverses dependencies.\n            var visit = function visit( node, predecessors ) {\n                //check if a node is dependent of itself\n                if( predecessors.length !== 0 && predecessors.indexOf( node ) !== -1 ) {\n                    throw new Error( \"Cyclic dependency found. \" + node + \" is dependent of itself.\\nDependency chain: \"\n                                     + predecessors.join( \" -> \" ) + \" => \" + node );\n                }\n\n                var index = nodes.indexOf( node );\n\n                //if the node still exists, traverse its dependencies\n                if( index !== -1 ) {\n                    var copy = false;\n\n                    //mark the node as false to exclude it from future iterations\n                    nodes[index] = false;\n\n                    //loop through all edges and follow dependencies of the current node\n                    for( var _iterator4 = _this.edges, _isArray4 = Array.isArray( _iterator4 ), _i4 = 0, _iterator4 = _isArray4 ?\n                                                                                                                      _iterator4 :\n                                                                                                                      _iterator4[Symbol.iterator](); ; ) {\n                        var _ref4;\n\n                        if( _isArray4 ) {\n                            if( _i4 >= _iterator4.length ) {\n                                break;\n                            }\n                            _ref4 = _iterator4[_i4++];\n                        } else {\n                            _i4 = _iterator4.next();\n                            if( _i4.done ) {\n                                break;\n                            }\n                            _ref4 = _i4.value;\n                        }\n\n                        var edge = _ref4;\n\n                        if( edge[0] === node ) {\n                            //lazily create a copy of predecessors with the current node concatenated onto it\n                            copy = copy || predecessors.concat( [node] );\n\n                            //recurse to node dependencies\n                            visit( edge[1], copy );\n                        }\n                    }\n\n                    //add the node to the next place in the sorted array\n                    sorted[--place] = node;\n                }\n            };\n\n            for( var i = 0; i < nodes.length; i++ ) {\n                var node = nodes[i];\n\n                //ignore nodes that have been excluded\n                if( node !== false ) {\n                    //mark the node as false to exclude it from future iterations\n                    nodes[i] = false;\n\n                    //loop through all edges and follow dependencies of the current node\n                    for( var _iterator5 = this.edges, _isArray5 = Array.isArray( _iterator5 ), _i5 = 0, _iterator5 = _isArray5 ?\n                                                                                                                     _iterator5 :\n                                                                                                                     _iterator5[Symbol.iterator](); ; ) {\n                        var _ref5;\n\n                        if( _isArray5 ) {\n                            if( _i5 >= _iterator5.length ) {\n                                break;\n                            }\n                            _ref5 = _iterator5[_i5++];\n                        } else {\n                            _i5 = _iterator5.next();\n                            if( _i5.done ) {\n                                break;\n                            }\n                            _ref5 = _i5.value;\n                        }\n\n                        var edge = _ref5;\n\n                        if( edge[0] === node ) {\n                            //recurse to node dependencies\n                            visit( edge[1], [node] );\n                        }\n                    }\n\n                    //add the node to the next place in the sorted array\n                    sorted[--place] = node;\n                }\n            }\n\n            return sorted;\n        };\n\n        /**\n         * Clears edges\n         *\n         * @since   0.4.0\n         * @returns {Toposort}                  The Toposort instance\n         */\n\n        Toposort.prototype.clear = function clear() {\n            this.edges = [];\n\n            return this;\n        };\n\n        return Toposort;\n    })();\n\n    module.exports = Toposort;\n} );\n","module.exports = require( './build/toposort.js' );\n","'use strict';\n\nmodule.exports = trimLines;\n\nvar ws = /[ \\t]*\\n+[ \\t]*/g;\nvar newline = '\\n';\n\nfunction trimLines(value) {\n  return String(value).replace(ws, newline);\n}\n","'use strict';\n\nmodule.exports = trimTrailingLines;\n\nvar line = '\\n';\n\n/* Remove final newline characters from `value`. */\nfunction trimTrailingLines(value) {\n  var val = String(value);\n  var index = val.length;\n\n  while (val.charAt(--index) === line) { /* empty */ }\n\n  return val.slice(0, index + 1);\n}\n","\nexports = 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};\n","'use strict';\n\n/* Expose. */\nmodule.exports = trough;\n\n/* Methods. */\nvar slice = [].slice;\n\n/* Create new middleware. */\nfunction trough() {\n  var fns = [];\n  var middleware = {};\n\n  middleware.run = run;\n  middleware.use = use;\n\n  return middleware;\n\n  /* Run `fns`.  Last argument must be\n   * a completion handler. */\n  function run() {\n    var index = -1;\n    var input = slice.call(arguments, 0, -1);\n    var done = arguments[arguments.length - 1];\n\n    if (typeof done !== 'function') {\n      throw new Error('Expected function as last argument, not ' + done);\n    }\n\n    next.apply(null, [null].concat(input));\n\n    /* Run the next `fn`, if any. */\n    function next(err) {\n      var fn = fns[++index];\n      var params = slice.call(arguments, 0);\n      var values = params.slice(1);\n      var length = input.length;\n      var pos = -1;\n\n      if (err) {\n        done(err);\n        return;\n      }\n\n      /* Copy non-nully input into values. */\n      while (++pos < length) {\n        if (values[pos] === null || values[pos] === undefined) {\n          values[pos] = input[pos];\n        }\n      }\n\n      input = values;\n\n      /* Next or done. */\n      if (fn) {\n        wrap(fn, next).apply(null, input);\n      } else {\n        done.apply(null, [null].concat(input));\n      }\n    }\n  }\n\n  /* Add `fn` to the list. */\n  function use(fn) {\n    if (typeof fn !== 'function') {\n      throw new Error('Expected `fn` to be a function, not ' + fn);\n    }\n\n    fns.push(fn);\n\n    return middleware;\n  }\n}\n\n/* Wrap `fn`.  Can be sync or async; return a promise,\n * receive a completion handler, return new values and\n * errors. */\nfunction wrap(fn, next) {\n  var invoked;\n\n  return wrapped;\n\n  function wrapped() {\n    var params = slice.call(arguments, 0);\n    var callback = fn.length > params.length;\n    var result;\n\n    if (callback) {\n      params.push(done);\n    }\n\n    try {\n      result = fn.apply(null, params);\n    } catch (err) {\n      /* Well, this is quite the pickle.  `fn` received\n       * a callback and invoked it (thus continuing the\n       * pipeline), but later also threw an error.\n       * We’re not about to restart the pipeline again,\n       * so the only thing left to do is to throw the\n       * thing instea. */\n      if (callback && invoked) {\n        throw err;\n      }\n\n      return done(err);\n    }\n\n    if (!callback) {\n      if (result && typeof result.then === 'function') {\n        result.then(then, done);\n      } else if (result instanceof Error) {\n        done(result);\n      } else {\n        then(result);\n      }\n    }\n  }\n\n  /* Invoke `next`, only once. */\n  function done() {\n    if (!invoked) {\n      invoked = true;\n\n      next.apply(null, arguments);\n    }\n  }\n\n  /* Invoke `done` with one value.\n   * Tracks if an error is passed, too. */\n  function then(value) {\n    done(null, value);\n  }\n}\n","'use strict'\n\n/**\n * un-escape special characters in the given string of html.\n *\n * @param  {String} html\n * @return {String}\n */\n\nmodule.exports = function (html) {\n  return String(html)\n    .replace(/&quot;/g, '\"')\n    .replace(/&#39;/g, '\\'')\n    .replace(/&#x3A;/g, ':')\n    .replace(/&lt;/g, '<')\n    .replace(/&gt;/g, '>')\n    .replace(/&amp;/g, '&')\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module unherit\n * @fileoverview Create a custom constructor which can be modified\n *   without affecting the original class.\n */\n\n'use strict';\n\n/* Dependencies. */\nvar xtend = require('xtend');\nvar inherits = require('inherits');\n\n/* Expose. */\nmodule.exports = unherit;\n\n/**\n * Create a custom constructor which can be modified\n * without affecting the original class.\n *\n * @param {Function} Super - Super-class.\n * @return {Function} - Constructor acting like `Super`,\n *   which can be modified without affecting the original\n *   class.\n */\nfunction unherit(Super) {\n  var result;\n  var key;\n  var value;\n\n  inherits(Of, Super);\n  inherits(From, Of);\n\n  /* Clone values. */\n  result = Of.prototype;\n\n  for (key in result) {\n    value = result[key];\n\n    if (value && typeof value === 'object') {\n      result[key] = 'concat' in value ? value.concat() : xtend(value);\n    }\n  }\n\n  return Of;\n\n  /**\n   * Constructor accepting a single argument,\n   * which itself is an `arguments` object.\n   */\n  function From(parameters) {\n    return Super.apply(this, parameters);\n  }\n\n  /**\n   * Constructor accepting variadic arguments.\n   */\n  function Of() {\n    if (!(this instanceof Of)) {\n      return new From(arguments);\n    }\n\n    return Super.apply(this, arguments);\n  }\n}\n","/**\n * @author Titus Wormer\n * @copyright 2015 Titus Wormer\n * @license MIT\n * @module unified\n * @fileoverview Pluggable text processing interface.\n */\n\n'use strict';\n\n/* Dependencies. */\nvar events = require('events');\nvar has = require('has');\nvar once = require('once');\nvar extend = require('extend');\nvar bail = require('bail');\nvar vfile = require('vfile');\nvar trough = require('trough');\nvar buffer = require('is-buffer');\nvar string = require('x-is-string');\n\n/* Expose an abstract processor. */\nmodule.exports = unified().abstract();\n\n/* Methods. */\nvar slice = [].slice;\n\n/* Process pipeline. */\nvar pipeline = trough()\n  .use(function (p, ctx) {\n    ctx.tree = p.parse(ctx.file, ctx.options);\n  })\n  .use(function (p, ctx, next) {\n    p.run(ctx.tree, ctx.file, function (err, tree, file) {\n      if (err) {\n        next(err);\n      } else {\n        ctx.tree = tree;\n        ctx.file = file;\n        next();\n      }\n    });\n  })\n  .use(function (p, ctx) {\n    ctx.file.contents = p.stringify(ctx.tree, ctx.file, ctx.options);\n  });\n\n/**\n * Function to create the first processor.\n *\n * @return {Function} - First processor.\n */\nfunction unified() {\n  var attachers = [];\n  var transformers = trough();\n  var namespace = {};\n  var chunks = [];\n  var emitter = new events.EventEmitter();\n  var ended = false;\n  var concrete = true;\n  var settings;\n  var key;\n\n  /* Mix in methods. */\n  for (key in emitter) {\n    processor[key] = emitter[key];\n  }\n\n  /* Throw as early as possible.\n   * As events are triggered synchroneously, the stack\n   * is preserved. */\n  processor.on('pipe', function () {\n    assertConcrete();\n  });\n\n  /* Data management. */\n  processor.data = data;\n\n  /* Lock. */\n  processor.abstract = abstract;\n\n  /* Plug-ins. */\n  processor.attachers = attachers;\n  processor.use = use;\n\n  /* Streaming. */\n  processor.writable = true;\n  processor.readable = true;\n  processor.write = write;\n  processor.end = end;\n  processor.pipe = pipe;\n\n  /* API. */\n  processor.parse = parse;\n  processor.stringify = stringify;\n  processor.run = run;\n  processor.process = process;\n\n  /* Expose. */\n  return processor;\n\n  /**\n   * Create a new processor based on the processor\n   * in the current scope.\n   *\n   * @return {Processor} - New concrete processor based\n   *   on the descendant processor.\n   */\n  function processor() {\n    var destination = unified();\n    var length = attachers.length;\n    var index = -1;\n\n    while (++index < length) {\n      destination.use.apply(null, attachers[index]);\n    }\n\n    destination.data(extend(true, {}, namespace));\n\n    return destination;\n  }\n\n  /* Helpers. */\n\n  /**\n   * Assert a parser is available.\n   *\n   * @param {string} name - Name of callee.\n   */\n  function assertParser(name) {\n    if (!isParser(processor.Parser)) {\n      throw new Error('Cannot `' + name + '` without `Parser`');\n    }\n  }\n\n  /**\n   * Assert a compiler is available.\n   *\n   * @param {string} name - Name of callee.\n   */\n  function assertCompiler(name) {\n    if (!isCompiler(processor.Compiler)) {\n      throw new Error('Cannot `' + name + '` without `Compiler`');\n    }\n  }\n\n  /**\n   * Assert the processor is concrete.\n   *\n   * @param {string} name - Name of callee.\n   */\n  function assertConcrete(name) {\n    if (!concrete) {\n      throw new Error(\n        'Cannot ' +\n        (name ? 'invoke `' + name + '` on' : 'pipe into') +\n        ' abstract processor.\\n' +\n        'To make the processor concrete, invoke it: ' +\n        'use `processor()` instead of `processor`.'\n      );\n    }\n  }\n\n  /**\n   * Assert `node` is a Unist node.\n   *\n   * @param {*} node - Value to check.\n   */\n  function assertNode(node) {\n    if (!isNode(node)) {\n      throw new Error('Expected node, got `' + node + '`');\n    }\n  }\n\n  /**\n   * Assert, if no `done` is given, that `complete` is\n   * `true`.\n   *\n   * @param {string} name - Name of callee.\n   * @param {boolean} complete - Whether an async process\n   *   is complete.\n   * @param {Function?} done - Optional handler of async\n   *   results.\n   */\n  function assertDone(name, complete, done) {\n    if (!complete && !done) {\n      throw new Error(\n        'Expected `done` to be given to `' + name + '` ' +\n        'as async plug-ins are used'\n      );\n    }\n  }\n\n  /**\n   * Abstract: used to signal an abstract processor which\n   * should made concrete before using.\n   *\n   * For example, take unified itself.  It’s abstract.\n   * Plug-ins should not be added to it.  Rather, it should\n   * be made concrete (by invoking it) before modifying it.\n   *\n   * In essence, always invoke this when exporting a\n   * processor.\n   *\n   * @return {Processor} - The operated on processor.\n   */\n  function abstract() {\n    concrete = false;\n\n    return processor;\n  }\n\n  /**\n   * Data management.\n   *\n   * Getter / setter for processor-specific informtion.\n   *\n   * @param {string} key - Key to get or set.\n   * @param {*} value - Value to set.\n   * @return {*} - Either the operator on processor in\n   *   setter mode; or the value stored as `key` in\n   *   getter mode.\n   */\n  function data(key, value) {\n    assertConcrete('data');\n\n    if (string(key)) {\n      /* Set `key`. */\n      if (arguments.length === 2) {\n        namespace[key] = value;\n\n        return processor;\n      }\n\n      /* Get `key`. */\n      return (has(namespace, key) && namespace[key]) || null;\n    }\n\n    /* Get space. */\n    if (!key) {\n      return namespace;\n    }\n\n    /* Set space. */\n    namespace = key;\n\n    return processor;\n  }\n\n  /**\n   * Plug-in management.\n   *\n   * Pass it:\n   * *   an attacher and options,\n   * *   a list of attachers and options for all of them;\n   * *   a tuple of one attacher and options.\n   * *   a matrix: list containing any of the above and\n   *     matrices.\n   * *   a processor: another processor to use all its\n   *     plugins (except parser if there’s already one).\n   *\n   * @param {...*} value - See description.\n   * @return {Processor} - The operated on processor.\n   */\n  function use(value) {\n    var args = slice.call(arguments, 0);\n    var params = args.slice(1);\n    var parser;\n    var index;\n    var length;\n    var transformer;\n    var result;\n\n    assertConcrete('use');\n\n    /* Multiple attachers. */\n    if ('length' in value && !isFunction(value)) {\n      index = -1;\n      length = value.length;\n\n      if (!isFunction(value[0])) {\n        /* Matrix of things. */\n        while (++index < length) {\n          use(value[index]);\n        }\n      } else if (isFunction(value[1])) {\n        /* List of things. */\n        while (++index < length) {\n          use.apply(null, [value[index]].concat(params));\n        }\n      } else {\n        /* Arguments. */\n        use.apply(null, value);\n      }\n\n      return processor;\n    }\n\n    /* Store attacher. */\n    attachers.push(args);\n\n    /* Use a processor (except its parser if there’s already one.\n     * Note that the processor is stored on `attachers`, making\n     * it possibly mutating in the future, but also ensuring\n     * the parser isn’t overwritten in the future either. */\n    if (isProcessor(value)) {\n      parser = processor.Parser;\n      result = use(value.attachers);\n\n      if (parser) {\n        processor.Parser = parser;\n      }\n\n      return result;\n    }\n\n    /* Single attacher. */\n    transformer = value.apply(null, [processor].concat(params));\n\n    if (isFunction(transformer)) {\n      transformers.use(transformer);\n    }\n\n    return processor;\n  }\n\n  /**\n   * Parse a file (in string or VFile representation)\n   * into a Unist node using the `Parser` on the\n   * processor.\n   *\n   * @param {VFile?} [file] - File to process.\n   * @param {Object?} [options] - Configuration.\n   * @return {Node} - Unist node.\n   */\n  function parse(file, options) {\n    assertConcrete('parse');\n    assertParser('parse');\n\n    return new processor.Parser(vfile(file), options, processor).parse();\n  }\n\n  /**\n   * Run transforms on a Unist node representation of a file\n   * (in string or VFile representation).\n   *\n   * @param {Node} node - Unist node.\n   * @param {(string|VFile)?} [file] - File representation.\n   * @param {Function?} [done] - Callback.\n   * @return {Node} - The given or resulting Unist node.\n   */\n  function run(node, file, done) {\n    var complete = false;\n    var result;\n\n    assertConcrete('run');\n    assertNode(node);\n\n    result = node;\n\n    if (!done && isFunction(file)) {\n      done = file;\n      file = null;\n    }\n\n    transformers.run(node, vfile(file), function (err, tree, file) {\n      complete = true;\n      result = tree || node;\n\n      (done || bail)(err, tree, file);\n    });\n\n    assertDone('run', complete, done);\n\n    return result;\n  }\n\n  /**\n   * Stringify a Unist node representation of a file\n   * (in string or VFile representation) into a string\n   * using the `Compiler` on the processor.\n   *\n   * @param {Node} node - Unist node.\n   * @param {(string|VFile)?} [file] - File representation.\n   * @param {Object?} [options] - Configuration.\n   * @return {string} - String representation.\n   */\n  function stringify(node, file, options) {\n    assertConcrete('stringify');\n    assertCompiler('stringify');\n    assertNode(node);\n\n    if (\n      !options &&\n      !string(file) &&\n      !buffer(file) &&\n      !(typeof file === 'object' && 'messages' in file)\n    ) {\n      options = file;\n      file = null;\n    }\n\n    return new processor.Compiler(vfile(file), options, processor).compile(node);\n  }\n\n  /**\n   * Parse a file (in string or VFile representation)\n   * into a Unist node using the `Parser` on the processor,\n   * then run transforms on that node, and compile the\n   * resulting node using the `Compiler` on the processor,\n   * and store that result on the VFile.\n   *\n   * @param {(string|VFile)?} file - File representation.\n   * @param {Object?} [options] - Configuration.\n   * @param {Function?} [done] - Callback.\n   * @return {VFile} - The given or resulting VFile.\n   */\n  function process(file, options, done) {\n    var complete = false;\n\n    assertConcrete('process');\n    assertParser('process');\n    assertCompiler('process');\n\n    if (!done && isFunction(options)) {\n      done = options;\n      options = null;\n    }\n\n    file = vfile(file);\n\n    pipeline.run(processor, {\n      file: file,\n      options: options || {}\n    }, function (err) {\n      complete = true;\n\n      if (done) {\n        done(err, file);\n      } else {\n        bail(err);\n      }\n    });\n\n    assertDone('process', complete, done);\n\n    return file;\n  }\n\n  /* Streams. */\n\n  /**\n   * Write a chunk into memory.\n   *\n   * @param {(Buffer|string)?} chunk - Value to write.\n   * @param {string?} [encoding] - Encoding.\n   * @param {Function?} [callback] - Callback.\n   * @return {boolean} - Whether the write was succesful.\n   */\n  function write(chunk, encoding, callback) {\n    assertConcrete('write');\n\n    if (isFunction(encoding)) {\n      callback = encoding;\n      encoding = null;\n    }\n\n    if (ended) {\n      throw new Error('Did not expect `write` after `end`');\n    }\n\n    chunks.push((chunk || '').toString(encoding || 'utf8'));\n\n    if (callback) {\n      callback();\n    }\n\n    /* Signal succesful write. */\n    return true;\n  }\n\n  /**\n   * End the writing.  Passes all arguments to a final\n   * `write`.  Starts the process, which will trigger\n   * `error`, with a fatal error, if any; `data`, with\n   * the generated document in `string` form, if\n   * succesful.  If messages are triggered during the\n   * process, those are triggerd as `warning`s.\n   *\n   * @return {boolean} - Whether the last write was\n   *   succesful.\n   */\n  function end() {\n    assertConcrete('end');\n    assertParser('end');\n    assertCompiler('end');\n\n    write.apply(null, arguments);\n\n    ended = true;\n\n    process(chunks.join(''), settings, function (err, file) {\n      var messages = file.messages;\n      var length = messages.length;\n      var index = -1;\n\n      chunks = settings = null;\n\n      /* Trigger messages as warnings, except for fatal error. */\n      while (++index < length) {\n        if (messages[index] !== err) {\n          processor.emit('warning', messages[index]);\n        }\n      }\n\n      if (err) {\n        /* Don’t enter an infinite error throwing loop. */\n        global.setTimeout(function () {\n          processor.emit('error', err);\n        }, 4);\n      } else {\n        processor.emit('data', file.contents);\n        processor.emit('end');\n      }\n    });\n\n    return true;\n  }\n\n  /**\n   * Pipe the processor into a writable stream.\n   *\n   * Basically `Stream#pipe`, but inlined and\n   * simplified to keep the bundled size down.\n   *\n   * @see https://github.com/nodejs/node/blob/master/lib/stream.js#L26\n   *\n   * @param {Stream} dest - Writable stream.\n   * @param {Object?} [options] - Processing\n   *   configuration.\n   * @return {Stream} - The destination stream.\n   */\n  function pipe(dest, options) {\n    var onend = once(onended);\n\n    assertConcrete('pipe');\n\n    settings = options || {};\n\n    processor.on('data', ondata);\n    processor.on('error', onerror);\n    processor.on('end', cleanup);\n    processor.on('close', cleanup);\n\n    /* If the 'end' option is not supplied, dest.end() will be\n     * called when the 'end' or 'close' events are received.\n     * Only dest.end() once. */\n    if (!dest._isStdio && settings.end !== false) {\n      processor.on('end', onend);\n    }\n\n    dest.on('error', onerror);\n    dest.on('close', cleanup);\n\n    dest.emit('pipe', processor);\n\n    return dest;\n\n    /** End destination. */\n    function onended() {\n      if (dest.end) {\n        dest.end();\n      }\n    }\n\n    /**\n     * Handle data.\n     *\n     * @param {*} chunk - Data to pass through.\n     */\n    function ondata(chunk) {\n      if (dest.writable) {\n        dest.write(chunk);\n      }\n    }\n\n    /**\n     * Clean listeners.\n     */\n    function cleanup() {\n      processor.removeListener('data', ondata);\n      processor.removeListener('end', onend);\n      processor.removeListener('error', onerror);\n      processor.removeListener('end', cleanup);\n      processor.removeListener('close', cleanup);\n\n      dest.removeListener('error', onerror);\n      dest.removeListener('close', cleanup);\n    }\n\n    /**\n     * Close dangling pipes and handle unheard errors.\n     *\n     * @param {Error} err - Exception.\n     */\n    function onerror(err) {\n      var handlers = processor._events.error;\n\n      cleanup();\n\n      /* Cannot use `listenerCount` in node <= 0.12. */\n      if (!handlers || !handlers.length || handlers === onerror) {\n        throw err; /* Unhandled stream error in pipe. */\n      }\n    }\n  }\n}\n\n/**\n * Check if `node` is a Unist node.\n *\n * @param {*} node - Value.\n * @return {boolean} - Whether `node` is a Unist node.\n */\nfunction isNode(node) {\n  return node && string(node.type) && node.type.length !== 0;\n}\n\n/**\n * Check if `fn` is a function.\n *\n * @param {*} fn - Value.\n * @return {boolean} - Whether `fn` is a function.\n */\nfunction isFunction(fn) {\n  return typeof fn === 'function';\n}\n\n/**\n * Check if `compiler` is a Compiler.\n *\n * @param {*} compiler - Value.\n * @return {boolean} - Whether `compiler` is a Compiler.\n */\nfunction isCompiler(compiler) {\n  return isFunction(compiler) && compiler.prototype && isFunction(compiler.prototype.compile);\n}\n\n/**\n * Check if `parser` is a Parser.\n *\n * @param {*} parser - Value.\n * @return {boolean} - Whether `parser` is a Parser.\n */\nfunction isParser(parser) {\n  return isFunction(parser) && parser.prototype && isFunction(parser.prototype.parse);\n}\n\n/**\n * Check if `processor` is a unified processor.\n *\n * @param {*} processor - Value.\n * @return {boolean} - Whether `processor` is a processor.\n */\nfunction isProcessor(processor) {\n  return isFunction(processor) && isFunction(processor.use) && isFunction(processor.process);\n}\n","'use strict';\n\nvar assign = require('object-assign');\n\n\nmodule.exports = function u (type, props, value) {\n  if (value == null && (typeof props != 'object' || Array.isArray(props))) {\n    value = props;\n    props = {};\n  }\n\n  return assign({}, props, { type: String(type) },\n                value != null && (Array.isArray(value)\n                                  ? { children: value }\n                                  : { value: String(value) }));\n};\n","'use strict';\n\n/* Expose. */\nmodule.exports = generated;\n\n/* Detect if a node was available in the original document. */\nfunction generated(node) {\n  var position = optional(optional(node).position);\n  var start = optional(position.start);\n  var end = optional(position.end);\n\n  return !start.line || !start.column || !end.line || !end.column;\n}\n\n/* Return `value` if it’s an object, an empty object\n * otherwise. */\nfunction optional(value) {\n  return value && typeof value === 'object' ? value : {};\n}\n","'use strict';\n\n/* eslint-disable max-params */\n\n/* Expose. */\nmodule.exports = is;\n\n/* Assert if `test` passes for `node`.\n * When a `parent` node is known the `index` of node */\nfunction is(test, node, index, parent, context) {\n  var hasParent = parent !== null && parent !== undefined;\n  var hasIndex = index !== null && index !== undefined;\n  var check = convert(test);\n\n  if (\n    hasIndex &&\n    (typeof index !== 'number' || index < 0 || index === Infinity)\n  ) {\n    throw new Error('Expected positive finite index or child node');\n  }\n\n  if (hasParent && (!is(null, parent) || !parent.children)) {\n    throw new Error('Expected parent node');\n  }\n\n  if (!node || !node.type || typeof node.type !== 'string') {\n    return false;\n  }\n\n  if (hasParent !== hasIndex) {\n    throw new Error('Expected both parent and index');\n  }\n\n  return Boolean(check.call(context, node, index, parent));\n}\n\nfunction convert(test) {\n  if (typeof test === 'string') {\n    return typeFactory(test);\n  }\n\n  if (test === null || test === undefined) {\n    return ok;\n  }\n\n  if (typeof test === 'object') {\n    return ('length' in test ? anyFactory : matchesFactory)(test);\n  }\n\n  if (typeof test === 'function') {\n    return test;\n  }\n\n  throw new Error('Expected function, string, or object as test');\n}\n\nfunction convertAll(tests) {\n  var results = [];\n  var length = tests.length;\n  var index = -1;\n\n  while (++index < length) {\n    results[index] = convert(tests[index]);\n  }\n\n  return results;\n}\n\n/* Utility assert each property in `test` is represented\n * in `node`, and each values are strictly equal. */\nfunction matchesFactory(test) {\n  return matches;\n\n  function matches(node) {\n    var key;\n\n    for (key in test) {\n      if (node[key] !== test[key]) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n}\n\nfunction anyFactory(tests) {\n  var checks = convertAll(tests);\n  var length = checks.length;\n\n  return matches;\n\n  function matches() {\n    var index = -1;\n\n    while (++index < length) {\n      if (checks[index].apply(this, arguments)) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n}\n\n/* Utility to convert a string into a function which checks\n * a given node’s type for said string. */\nfunction typeFactory(test) {\n  return type;\n\n  function type(node) {\n    return Boolean(node && node.type === test);\n  }\n}\n\n/* Utility to return true. */\nfunction ok() {\n  return true;\n}\n","'use strict';\n\nvar iterate = require('array-iterate');\n\nmodule.exports = modifierFactory;\n\n/* Turn `callback` into a child-modifier accepting a parent.\n * See `array-iterate` for more info. */\nfunction modifierFactory(callback) {\n  return iteratorFactory(wrapperFactory(callback));\n}\n\n/* Turn `callback` into a `iterator' accepting a parent. */\nfunction iteratorFactory(callback) {\n  return iterator;\n\n  function iterator(parent) {\n    var children = parent && parent.children;\n\n    if (!children) {\n      throw new Error('Missing children in `parent` for `modifier`');\n    }\n\n    return iterate(children, callback, parent);\n  }\n}\n\n/* Pass the context as the third argument to `callback`. */\nfunction wrapperFactory(callback) {\n  return wrapper;\n\n  function wrapper(value, index) {\n    return callback(value, index, this);\n  }\n}\n","'use strict';\n\n/* Expose. */\nvar position = exports;\n\nposition.start = positionFactory('start');\nposition.end = positionFactory('end');\n\n/* Factory to get a position at `type`. */\nfunction positionFactory(type) {\n  return pos;\n\n  /* Get a position in `node` at a bound `type`. */\n  function pos(node) {\n    var pos = (node && node.position && node.position[type]) || {};\n\n    return {\n      line: pos.line || null,\n      column: pos.column || null,\n      offset: isNaN(pos.offset) ? null : pos.offset\n    };\n  }\n}\n","'use strict';\n\nvar visit = require('unist-util-visit');\n\nmodule.exports = removePosition;\n\n/* Remove `position`s from `tree`. */\nfunction removePosition(node, force) {\n  visit(node, force ? hard : soft);\n  return node;\n}\n\nfunction hard(node) {\n  delete node.position;\n}\n\nfunction soft(node) {\n  node.position = undefined;\n}\n","'use strict';\n\nvar parseSelector = require('./lib/selector'),\n    matchSelector = require('./lib/select');\n\nvar debug = require('debug')('unist-util-select');\n\n\nvar select = function select (ast, selector) {\n  if (arguments.length == 1) {\n    return select.bind(this, ast);\n  }\n\n  debug('Selector: %j', selector);\n  selector = parseSelector(selector);\n  debug('AST: %s',\n        JSON.stringify(selector, null, 2).replace(/(^|\\n)/g, '\\n    '));\n  return selector ? matchSelector[selector.type](selector, ast) : [];\n};\n\n\nselect.one = function selectOne (ast, selector) {\n  if (arguments.length == 1) {\n    return selectOne.bind(this, ast);\n  }\n\n  var nodes = select(ast, selector);\n\n  if (!nodes.length) {\n    throw Error('Node not found by ' + JSON.stringify(selector));\n  }\n  if (nodes.length > 1) {\n    throw Error('Node matched by ' + JSON.stringify(selector) + ' is not unique');\n  }\n\n  return nodes[0];\n};\n\n\nmodule.exports = select;\n","'use strict';\n\nvar TypeIndex = require('./type-index');\n\nvar walkers = exports;\n\n\n// All walkers accept `opts` arguments (occasionally referred to as\n// `searchOpts`) which is an object with the following fields:\n//\n//   - iterator: function(node, nodeIndex, parent, [props]))\n//         function running once for each node being walked over, in order\n//\n//   - [typeIndex]: boolean=false\n//         if true, `props` will have an integer `typeIndex` field which\n//         represents a node index among all its sibling of the same type\n//\n//   - [typeCount]: boolean=false\n//         if true, `props` will have an integer `typeCount` field which\n//         is equal to number of siblings sharing the same type with this node\n//\n\n\nwalkers.topScan = function (node, nodeIndex, parent, opts) {\n  if (parent) {\n    // We would like to avoid spinning an extra loop through the starting\n    // node's siblings just to count its typeIndex.\n    throw Error('topScan is supposed to be called from the root node');\n  }\n\n  if (!opts.typeIndex && !opts.typeCount) {\n    opts.iterator(node, nodeIndex, parent);\n  }\n  walkers.descendant.apply(this, arguments);\n};\n\n\nwalkers.descendant = function (node, nodeIndex, parent, opts) {\n  var iterator = opts.iterator;\n\n  opts.iterator = function (node, nodeIndex, parent) {\n    iterator.apply(this, arguments);\n    walkers.child(node, nodeIndex, node, opts);\n  };\n\n  return walkers.child(node, nodeIndex, parent, opts);\n};\n\n\nwalkers.child = function (node, nodeIndex, parent, opts) {\n  if (!node.children || !node.children.length) {\n    return;\n  }\n\n  walkIterator(node, opts)\n    .each()\n    .finally();\n};\n\n\nwalkers.adjacentSibling = function (node, nodeIndex, parent, opts) {\n  if (!parent) {\n    return;\n  }\n\n  walkIterator(parent, opts)\n    .prefillTypeIndex(0, ++nodeIndex)\n    .each(nodeIndex, ++nodeIndex)\n    .prefillTypeIndex(nodeIndex)\n    .finally();\n};\n\n\nwalkers.generalSibling = function (node, nodeIndex, parent, opts) {\n  if (!parent) {\n    return;\n  }\n\n  walkIterator(parent, opts)\n    .prefillTypeIndex(0, ++nodeIndex)\n    .each(nodeIndex)\n    .finally();\n};\n\n\n// Handles typeIndex and typeCount properties for every walker.\nfunction walkIterator (parent, opts) {\n  var hasTypeIndex = opts.typeIndex || opts.typeCount;\n  var typeIndex = hasTypeIndex ? TypeIndex() : Function.prototype;\n  var nodeThunks = [];\n\n  var rangeDefaults = function (iter) {\n    return function (start, end) {\n      if (start == null || start < 0) {\n        start = 0;\n      }\n      if (end == null || end > parent.children.length) {\n        end = parent.children.length;\n      }\n      return iter.call(this, start, end);\n    };\n  };\n\n  return {\n    prefillTypeIndex: rangeDefaults(function (start, end) {\n      if (hasTypeIndex) {\n        for (var nodeIndex = start; nodeIndex < end; ++nodeIndex) {\n          typeIndex(parent.children[nodeIndex]);\n        }\n      }\n      return this;\n    }),\n\n    each: rangeDefaults(function each (start, end) {\n      if (start >= end) {\n        return this;\n      }\n\n      var nodeIndex = start;\n      var node = parent.children[nodeIndex];\n      var props = {};\n      var nodeTypeIndex = typeIndex(node);\n\n      if (opts.typeIndex) {\n        props.typeIndex = nodeTypeIndex;\n      }\n\n      if (opts.typeCount) {\n        nodeThunks.push(function () {\n          props.typeCount = typeIndex.count(node);\n          pushNode();\n        });\n      }\n      else {\n        pushNode();\n      }\n\n      return each.call(this, start + 1, end);\n\n      function pushNode () {\n        opts.iterator(node, nodeIndex, parent, props);\n      }\n    }),\n\n    finally: function () {\n      nodeThunks.forEach(Function.call.bind(Function.call));\n      return this;\n    }\n  };\n}\n","'use strict';\n\n\n// @example\n//   var collect = Collector();\n//   collect('foo');\n//   collect(['foo', 'bar', 'baz']);\n//   collect.result\n//   //=> ['foo', 'bar', 'baz']\n//\nmodule.exports = function Collector () {\n  var result = [];\n\n  // Append elements to array, filtering out duplicates.\n  function collect (source) {\n    if (Array.isArray(source)) {\n      source.forEach(collectOne);\n    }\n    else {\n      collectOne(source);\n    }\n\n    function collectOne (element) {\n      if (result.indexOf(element) < 0) {\n        result.push(element);\n      }\n    }\n  }\n\n  collect.result = result;\n  return collect;\n};\n","'use strict';\n\nmodule.exports = matchNode;\n\n\n// Match node against a simple selector.\nfunction matchNode (rule, node, nodeIndex, parent, props) {\n  return matchType(rule, node) &&\n    matchAttrs(rule, node) &&\n    matchPseudos(rule, node, nodeIndex, parent, props);\n}\n\n\nfunction matchType (rule, node) {\n  return !rule.tagName || rule.tagName == '*' || rule.tagName == node.type;\n}\n\n\nfunction matchAttrs (rule, node) {\n  return !rule.attrs || rule.attrs.every(function (attr) {\n    switch (attr.operator) {\n      case undefined:\n        return attr.name in node;\n\n      case '=':\n        // First, check for special values.\n        switch (attr.value) {\n          case 'null':\n            if (attr.name in node && node[attr.name] == null) return true;\n            break;\n\n          case 'true':\n            if (node[attr.name] === true) return true;\n            break;\n\n          case 'false':\n            if (node[attr.name] === false) return true;\n            break;\n        }\n        return node[attr.name] == attr.value;\n\n      case '^=':\n        return typeof node[attr.name] == 'string' &&\n          node[attr.name].slice(0, attr.value.length) == attr.value;\n\n      case '*=':\n        return typeof node[attr.name] == 'string' &&\n          node[attr.name].indexOf(attr.value) >= 0;\n\n      case '$=':\n        return typeof node[attr.name] == 'string' &&\n          node[attr.name].slice(-attr.value.length) == attr.value;\n\n      default:\n        throw Error('Undefined attribute operator: ' + attr.operator);\n    }\n  });\n}\n\n\nfunction matchPseudos (rule, node, nodeIndex, parent, props) {\n  return !rule.pseudos || rule.pseudos.every(function (pseudo) {\n    switch (pseudo.name) {\n      case 'root':\n        return parent == null;\n\n      case 'nth-child':\n        return parent && pseudo.value(nodeIndex);\n\n      case 'nth-last-child':\n        return parent && pseudo.value(parent.children.length - 1 - nodeIndex);\n\n      case 'nth-of-type':\n        return parent && pseudo.value(props.typeIndex);\n\n      case 'nth-last-of-type':\n        return parent && pseudo.value(props.typeCount - 1 - props.typeIndex);\n\n      case 'first-child':\n        return parent && nodeIndex == 0;\n\n      case 'last-child':\n        return parent && nodeIndex == parent.children.length - 1;\n\n      case 'first-of-type':\n        return parent && props.typeIndex == 0;\n\n      case 'last-of-type':\n        return parent && props.typeIndex == props.typeCount - 1;\n\n      case 'only-child':\n        return parent && parent.children.length == 1;\n\n      case 'only-of-type':\n        return parent && props.typeCount == 1;\n\n      case 'empty':\n        return node.children && !node.children.length;\n\n      case 'not':\n        return !matchNode(pseudo.value.rule, node, nodeIndex, parent, props);\n\n      default:\n        throw Error('Undefined pseudo-class: ' + pseudo.name);\n    }\n  });\n}\n","'use strict';\n\nvar walkers = require('./ast-walkers'),\n    matchNode = require('./match-node'),\n    Collector = require('./collector');\n\nvar select = exports;\n\n\nselect.selectors = function (selectors, ast) {\n  var collect = Collector();\n  selectors.selectors.forEach(function (ruleSet) {\n    collect(select.ruleSet(ruleSet, ast));\n  });\n  return collect.result;\n};\n\n\nselect.ruleSet = function (ruleSet, ast) {\n  return select.rule(ruleSet.rule, ast);\n};\n\n\nselect.rule = function (rule, ast) {\n  var collect = Collector();\n  search(rule, ast, 0, null);\n  return collect.result;\n\n  function search (rule, node, nodeIndex, parent) {\n    ({\n      // `undefined` is the operator on the top rule selector.\n      undefined: walkers.topScan,\n      // `null` stands for the descendant combinator.\n      null: walkers.descendant,\n      '>': walkers.child,\n      '+': walkers.adjacentSibling,\n      '~': walkers.generalSibling\n    })[rule.nestingOperator](\n      node,\n      nodeIndex,\n      parent,\n      searchOpts({ iterator: match.bind(null, rule) }, rule)\n    );\n  }\n\n  function match (rule, node, nodeIndex, parent, props) {\n    if (matchNode.apply(this, arguments)) {\n      if (rule.rule) {\n        search(rule.rule, node, nodeIndex, parent);\n      }\n      else {\n        collect(node);\n      }\n    }\n  }\n};\n\n\nfunction searchOpts (opts, rule) {\n  rule.pseudos && rule.pseudos.forEach(function (pseudo) {\n    switch (pseudo.name) {\n      case 'nth-last-of-type':\n      case 'last-of-type':\n      case 'only-of-type':\n        opts.typeCount = true;\n\n      case 'nth-of-type':\n      case 'first-of-type':\n        opts.typeIndex = true;\n    }\n  });\n\n  return opts;\n}\n","'use strict';\n\nvar Parser = require('css-selector-parser').CssSelectorParser,\n    nthCheck = require('nth-check');\n\n\nmodule.exports = function parseSelector (selector) {\n  var parser = new Parser;\n  parser.registerNestingOperators('>', '+', '~');\n  parser.registerAttrEqualityMods('^', '*', '$');\n  parser.registerSelectorPseudos('not');\n  return compileNthChecks(parser.parse(selector));\n};\n\n\nfunction compileNthChecks (ast) {\n  if (ast == null) {\n    return ast;\n  }\n\n  switch (ast.type) {\n    case 'selectors':\n      ast.selectors.forEach(compileNthChecks);\n      break;\n\n    case 'ruleSet':\n      compileNthChecks(ast.rule);\n      break;\n\n    case 'rule':\n      if (ast.pseudos) {\n        ast.pseudos.forEach(function (pseudo) {\n          if (pseudo.name == 'nth-child' ||\n              pseudo.name == 'nth-last-child' ||\n              pseudo.name == 'nth-of-type' ||\n              pseudo.name == 'nth-last-of-type') {\n            pseudo.value = nthCheck(pseudo.value);\n            pseudo.valueType = 'function';\n          }\n        });\n      }\n      if (ast.rule) {\n        compileNthChecks(ast.rule);\n      }\n      break;\n\n    default:\n      throw Error('Undefined AST node: ' + ast.type);\n  }\n\n  return ast;\n}\n","'use strict';\n\n\nmodule.exports = function TypeIndex () {\n  var typeLists = Object.create(null);\n\n  var index = function (node) {\n    var type = node.type;\n\n    if (!typeLists[type]) {\n      typeLists[type] = [];\n    }\n\n    return typeLists[type].push(node) - 1;\n  };\n\n  index.count = function (node) {\n    var typeList = typeLists[node.type];\n    return typeList ? typeList.length : 0;\n  };\n\n  return index;\n};\n","/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n               && 'undefined' != typeof chrome.storage\n                  ? chrome.storage.local\n                  : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n  'lightseagreen',\n  'forestgreen',\n  'goldenrod',\n  'dodgerblue',\n  'darkorchid',\n  'crimson'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n  // NB: In an Electron preload script, document will be defined but not fully\n  // initialized. Since we know we're in Chrome, we'll just detect this case\n  // explicitly\n  if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n    return true;\n  }\n\n  // is webkit? http://stackoverflow.com/a/16459606/376773\n  // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n  return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n    // is firebug? http://stackoverflow.com/a/398120/376773\n    (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n    // is firefox >= v31?\n    // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n    (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n    // double check webkit in userAgent just in case we are in a worker\n    (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n  try {\n    return JSON.stringify(v);\n  } catch (err) {\n    return '[UnexpectedJSONParseError]: ' + err.message;\n  }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n  var useColors = this.useColors;\n\n  args[0] = (useColors ? '%c' : '')\n    + this.namespace\n    + (useColors ? ' %c' : ' ')\n    + args[0]\n    + (useColors ? '%c ' : ' ')\n    + '+' + exports.humanize(this.diff);\n\n  if (!useColors) return;\n\n  var c = 'color: ' + this.color;\n  args.splice(1, 0, c, 'color: inherit')\n\n  // the final \"%c\" is somewhat tricky, because there could be other\n  // arguments passed either before or after the %c, so we need to\n  // figure out the correct index to insert the CSS into\n  var index = 0;\n  var lastC = 0;\n  args[0].replace(/%[a-zA-Z%]/g, function(match) {\n    if ('%%' === match) return;\n    index++;\n    if ('%c' === match) {\n      // we only are interested in the *last* %c\n      // (the user may have provided their own)\n      lastC = index;\n    }\n  });\n\n  args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n  // this hackery is required for IE8/9, where\n  // the `console.log` function doesn't have 'apply'\n  return 'object' === typeof console\n    && console.log\n    && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n  try {\n    if (null == namespaces) {\n      exports.storage.removeItem('debug');\n    } else {\n      exports.storage.debug = namespaces;\n    }\n  } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n  var r;\n  try {\n    r = exports.storage.debug;\n  } catch(e) {}\n\n  // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n  if (!r && typeof process !== 'undefined' && 'env' in process) {\n    r = process.env.DEBUG;\n  }\n\n  return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n  try {\n    return window.localStorage;\n  } catch (e) {}\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n  var hash = 0, i;\n\n  for (i in namespace) {\n    hash  = ((hash << 5) - hash) + namespace.charCodeAt(i);\n    hash |= 0; // Convert to 32bit integer\n  }\n\n  return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n  function debug() {\n    // disabled?\n    if (!debug.enabled) return;\n\n    var self = debug;\n\n    // set `diff` timestamp\n    var curr = +new Date();\n    var ms = curr - (prevTime || curr);\n    self.diff = ms;\n    self.prev = prevTime;\n    self.curr = curr;\n    prevTime = curr;\n\n    // turn the `arguments` into a proper Array\n    var args = new Array(arguments.length);\n    for (var i = 0; i < args.length; i++) {\n      args[i] = arguments[i];\n    }\n\n    args[0] = exports.coerce(args[0]);\n\n    if ('string' !== typeof args[0]) {\n      // anything else let's inspect with %O\n      args.unshift('%O');\n    }\n\n    // apply any `formatters` transformations\n    var index = 0;\n    args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n      // if we encounter an escaped % then don't increase the array index\n      if (match === '%%') return match;\n      index++;\n      var formatter = exports.formatters[format];\n      if ('function' === typeof formatter) {\n        var val = args[index];\n        match = formatter.call(self, val);\n\n        // now we need to remove `args[index]` since it's inlined in the `format`\n        args.splice(index, 1);\n        index--;\n      }\n      return match;\n    });\n\n    // apply env-specific formatting (colors, etc.)\n    exports.formatArgs.call(self, args);\n\n    var logFn = debug.log || exports.log || console.log.bind(console);\n    logFn.apply(self, args);\n  }\n\n  debug.namespace = namespace;\n  debug.enabled = exports.enabled(namespace);\n  debug.useColors = exports.useColors();\n  debug.color = selectColor(namespace);\n\n  // env-specific initialization logic for debug instances\n  if ('function' === typeof exports.init) {\n    exports.init(debug);\n  }\n\n  return debug;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n  exports.save(namespaces);\n\n  exports.names = [];\n  exports.skips = [];\n\n  var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n  var len = split.length;\n\n  for (var i = 0; i < len; i++) {\n    if (!split[i]) continue; // ignore empty strings\n    namespaces = split[i].replace(/\\*/g, '.*?');\n    if (namespaces[0] === '-') {\n      exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n    } else {\n      exports.names.push(new RegExp('^' + namespaces + '$'));\n    }\n  }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n  exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n  var i, len;\n  for (i = 0, len = exports.skips.length; i < len; i++) {\n    if (exports.skips[i].test(name)) {\n      return false;\n    }\n  }\n  for (i = 0, len = exports.names.length; i < len; i++) {\n    if (exports.names[i].test(name)) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n  if (val instanceof Error) return val.stack || val.message;\n  return val;\n}\n","'use strict';\n\nvar own = {}.hasOwnProperty;\n\nmodule.exports = stringify;\n\nfunction stringify(value) {\n  /* Nothing. */\n  if (!value || typeof value !== 'object') {\n    return null;\n  }\n\n  /* Node. */\n  if (own.call(value, 'position') || own.call(value, 'type')) {\n    return location(value.position);\n  }\n\n  /* Location. */\n  if (own.call(value, 'start') || own.call(value, 'end')) {\n    return location(value);\n  }\n\n  /* Position. */\n  if (own.call(value, 'line') || own.call(value, 'column')) {\n    return position(value);\n  }\n\n  /* ? */\n  return null;\n}\n\nfunction position(pos) {\n  if (!pos || typeof pos !== 'object') {\n    pos = {};\n  }\n\n  return index(pos.line) + ':' + index(pos.column);\n}\n\nfunction location(loc) {\n  if (!loc || typeof loc !== 'object') {\n    loc = {};\n  }\n\n  return position(loc.start) + '-' + position(loc.end);\n}\n\nfunction index(value) {\n  return value && typeof value === 'number' ? value : 1;\n}\n","'use strict';\n\n/* Expose. */\nmodule.exports = visit;\n\n/* Visit. */\nfunction visit(tree, type, visitor, reverse) {\n  if (typeof type === 'function') {\n    reverse = visitor;\n    visitor = type;\n    type = null;\n  }\n\n  one(tree);\n\n  /* Visit a single node. */\n  function one(node, index, parent) {\n    var result;\n\n    index = index || (parent ? 0 : null);\n\n    if (!type || node.type === type) {\n      result = visitor(node, index, parent || null);\n    }\n\n    if (node.children && result !== false) {\n      return all(node.children, node);\n    }\n\n    return result;\n  }\n\n  /* Visit children in `parent`. */\n  function all(children, parent) {\n    var step = reverse ? -1 : 1;\n    var max = children.length;\n    var min = -1;\n    var index = (reverse ? max : min) + step;\n    var child;\n\n    while (index > min && index < max) {\n      child = children[index];\n\n      if (child && one(child, index, parent) === false) {\n        return false;\n      }\n\n      index += step;\n    }\n\n    return true;\n  }\n}\n","module.exports = function isBuffer(arg) {\n  return arg && typeof arg === 'object'\n    && typeof arg.copy === 'function'\n    && typeof arg.fill === 'function'\n    && typeof arg.readUInt8 === 'function';\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\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n  if (!isString(f)) {\n    var objects = [];\n    for (var i = 0; i < arguments.length; i++) {\n      objects.push(inspect(arguments[i]));\n    }\n    return objects.join(' ');\n  }\n\n  var i = 1;\n  var args = arguments;\n  var len = args.length;\n  var str = String(f).replace(formatRegExp, function(x) {\n    if (x === '%%') return '%';\n    if (i >= len) return x;\n    switch (x) {\n      case '%s': return String(args[i++]);\n      case '%d': return Number(args[i++]);\n      case '%j':\n        try {\n          return JSON.stringify(args[i++]);\n        } catch (_) {\n          return '[Circular]';\n        }\n      default:\n        return x;\n    }\n  });\n  for (var x = args[i]; i < len; x = args[++i]) {\n    if (isNull(x) || !isObject(x)) {\n      str += ' ' + x;\n    } else {\n      str += ' ' + inspect(x);\n    }\n  }\n  return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n  // Allow for deprecating things in the process of starting up.\n  if (isUndefined(global.process)) {\n    return function() {\n      return exports.deprecate(fn, msg).apply(this, arguments);\n    };\n  }\n\n  if (process.noDeprecation === true) {\n    return fn;\n  }\n\n  var warned = false;\n  function deprecated() {\n    if (!warned) {\n      if (process.throwDeprecation) {\n        throw new Error(msg);\n      } else if (process.traceDeprecation) {\n        console.trace(msg);\n      } else {\n        console.error(msg);\n      }\n      warned = true;\n    }\n    return fn.apply(this, arguments);\n  }\n\n  return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n  if (isUndefined(debugEnviron))\n    debugEnviron = process.env.NODE_DEBUG || '';\n  set = set.toUpperCase();\n  if (!debugs[set]) {\n    if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n      var pid = process.pid;\n      debugs[set] = function() {\n        var msg = exports.format.apply(exports, arguments);\n        console.error('%s %d: %s', set, pid, msg);\n      };\n    } else {\n      debugs[set] = function() {};\n    }\n  }\n  return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n  // default options\n  var ctx = {\n    seen: [],\n    stylize: stylizeNoColor\n  };\n  // legacy...\n  if (arguments.length >= 3) ctx.depth = arguments[2];\n  if (arguments.length >= 4) ctx.colors = arguments[3];\n  if (isBoolean(opts)) {\n    // legacy...\n    ctx.showHidden = opts;\n  } else if (opts) {\n    // got an \"options\" object\n    exports._extend(ctx, opts);\n  }\n  // set default options\n  if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n  if (isUndefined(ctx.depth)) ctx.depth = 2;\n  if (isUndefined(ctx.colors)) ctx.colors = false;\n  if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n  if (ctx.colors) ctx.stylize = stylizeWithColor;\n  return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n  'bold' : [1, 22],\n  'italic' : [3, 23],\n  'underline' : [4, 24],\n  'inverse' : [7, 27],\n  'white' : [37, 39],\n  'grey' : [90, 39],\n  'black' : [30, 39],\n  'blue' : [34, 39],\n  'cyan' : [36, 39],\n  'green' : [32, 39],\n  'magenta' : [35, 39],\n  'red' : [31, 39],\n  'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n  'special': 'cyan',\n  'number': 'yellow',\n  'boolean': 'yellow',\n  'undefined': 'grey',\n  'null': 'bold',\n  'string': 'green',\n  'date': 'magenta',\n  // \"name\": intentionally not styling\n  'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n  var style = inspect.styles[styleType];\n\n  if (style) {\n    return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n           '\\u001b[' + inspect.colors[style][1] + 'm';\n  } else {\n    return str;\n  }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n  return str;\n}\n\n\nfunction arrayToHash(array) {\n  var hash = {};\n\n  array.forEach(function(val, idx) {\n    hash[val] = true;\n  });\n\n  return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n  // Provide a hook for user-specified inspect functions.\n  // Check that value is an object with an inspect function on it\n  if (ctx.customInspect &&\n      value &&\n      isFunction(value.inspect) &&\n      // Filter out the util module, it's inspect function is special\n      value.inspect !== exports.inspect &&\n      // Also filter out any prototype objects using the circular check.\n      !(value.constructor && value.constructor.prototype === value)) {\n    var ret = value.inspect(recurseTimes, ctx);\n    if (!isString(ret)) {\n      ret = formatValue(ctx, ret, recurseTimes);\n    }\n    return ret;\n  }\n\n  // Primitive types cannot have properties\n  var primitive = formatPrimitive(ctx, value);\n  if (primitive) {\n    return primitive;\n  }\n\n  // Look up the keys of the object.\n  var keys = Object.keys(value);\n  var visibleKeys = arrayToHash(keys);\n\n  if (ctx.showHidden) {\n    keys = Object.getOwnPropertyNames(value);\n  }\n\n  // IE doesn't make error fields non-enumerable\n  // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n  if (isError(value)\n      && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n    return formatError(value);\n  }\n\n  // Some type of object without properties can be shortcutted.\n  if (keys.length === 0) {\n    if (isFunction(value)) {\n      var name = value.name ? ': ' + value.name : '';\n      return ctx.stylize('[Function' + name + ']', 'special');\n    }\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    }\n    if (isDate(value)) {\n      return ctx.stylize(Date.prototype.toString.call(value), 'date');\n    }\n    if (isError(value)) {\n      return formatError(value);\n    }\n  }\n\n  var base = '', array = false, braces = ['{', '}'];\n\n  // Make Array say that they are Array\n  if (isArray(value)) {\n    array = true;\n    braces = ['[', ']'];\n  }\n\n  // Make functions say that they are functions\n  if (isFunction(value)) {\n    var n = value.name ? ': ' + value.name : '';\n    base = ' [Function' + n + ']';\n  }\n\n  // Make RegExps say that they are RegExps\n  if (isRegExp(value)) {\n    base = ' ' + RegExp.prototype.toString.call(value);\n  }\n\n  // Make dates with properties first say the date\n  if (isDate(value)) {\n    base = ' ' + Date.prototype.toUTCString.call(value);\n  }\n\n  // Make error with message first say the error\n  if (isError(value)) {\n    base = ' ' + formatError(value);\n  }\n\n  if (keys.length === 0 && (!array || value.length == 0)) {\n    return braces[0] + base + braces[1];\n  }\n\n  if (recurseTimes < 0) {\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    } else {\n      return ctx.stylize('[Object]', 'special');\n    }\n  }\n\n  ctx.seen.push(value);\n\n  var output;\n  if (array) {\n    output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n  } else {\n    output = keys.map(function(key) {\n      return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n    });\n  }\n\n  ctx.seen.pop();\n\n  return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n  if (isUndefined(value))\n    return ctx.stylize('undefined', 'undefined');\n  if (isString(value)) {\n    var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n                                             .replace(/'/g, \"\\\\'\")\n                                             .replace(/\\\\\"/g, '\"') + '\\'';\n    return ctx.stylize(simple, 'string');\n  }\n  if (isNumber(value))\n    return ctx.stylize('' + value, 'number');\n  if (isBoolean(value))\n    return ctx.stylize('' + value, 'boolean');\n  // For some reason typeof null is \"object\", so special case here.\n  if (isNull(value))\n    return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n  return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n  var output = [];\n  for (var i = 0, l = value.length; i < l; ++i) {\n    if (hasOwnProperty(value, String(i))) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          String(i), true));\n    } else {\n      output.push('');\n    }\n  }\n  keys.forEach(function(key) {\n    if (!key.match(/^\\d+$/)) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          key, true));\n    }\n  });\n  return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n  var name, str, desc;\n  desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n  if (desc.get) {\n    if (desc.set) {\n      str = ctx.stylize('[Getter/Setter]', 'special');\n    } else {\n      str = ctx.stylize('[Getter]', 'special');\n    }\n  } else {\n    if (desc.set) {\n      str = ctx.stylize('[Setter]', 'special');\n    }\n  }\n  if (!hasOwnProperty(visibleKeys, key)) {\n    name = '[' + key + ']';\n  }\n  if (!str) {\n    if (ctx.seen.indexOf(desc.value) < 0) {\n      if (isNull(recurseTimes)) {\n        str = formatValue(ctx, desc.value, null);\n      } else {\n        str = formatValue(ctx, desc.value, recurseTimes - 1);\n      }\n      if (str.indexOf('\\n') > -1) {\n        if (array) {\n          str = str.split('\\n').map(function(line) {\n            return '  ' + line;\n          }).join('\\n').substr(2);\n        } else {\n          str = '\\n' + str.split('\\n').map(function(line) {\n            return '   ' + line;\n          }).join('\\n');\n        }\n      }\n    } else {\n      str = ctx.stylize('[Circular]', 'special');\n    }\n  }\n  if (isUndefined(name)) {\n    if (array && key.match(/^\\d+$/)) {\n      return str;\n    }\n    name = JSON.stringify('' + key);\n    if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n      name = name.substr(1, name.length - 2);\n      name = ctx.stylize(name, 'name');\n    } else {\n      name = name.replace(/'/g, \"\\\\'\")\n                 .replace(/\\\\\"/g, '\"')\n                 .replace(/(^\"|\"$)/g, \"'\");\n      name = ctx.stylize(name, 'string');\n    }\n  }\n\n  return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n  var numLinesEst = 0;\n  var length = output.reduce(function(prev, cur) {\n    numLinesEst++;\n    if (cur.indexOf('\\n') >= 0) numLinesEst++;\n    return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n  }, 0);\n\n  if (length > 60) {\n    return braces[0] +\n           (base === '' ? '' : base + '\\n ') +\n           ' ' +\n           output.join(',\\n  ') +\n           ' ' +\n           braces[1];\n  }\n\n  return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n  return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n  return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n  return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n  return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n  return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n  return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n  return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n  return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n  return isObject(e) &&\n      (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n  return arg === null ||\n         typeof arg === 'boolean' ||\n         typeof arg === 'number' ||\n         typeof arg === 'string' ||\n         typeof arg === 'symbol' ||  // ES6 symbol\n         typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n  return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n  return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n              'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n  var d = new Date();\n  var time = [pad(d.getHours()),\n              pad(d.getMinutes()),\n              pad(d.getSeconds())].join(':');\n  return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n  console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n *     prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n  // Don't do anything if add isn't an object\n  if (!add || !isObject(add)) return origin;\n\n  var keys = Object.keys(add);\n  var i = keys.length;\n  while (i--) {\n    origin[keys[i]] = add[keys[i]];\n  }\n  return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n","'use strict';\n\n/* Expose. */\nmodule.exports = factory;\n\n/* Factory. */\nfunction factory(file) {\n  var contents = indices(String(file));\n\n  return {\n    toPosition: offsetToPositionFactory(contents),\n    toOffset: positionToOffsetFactory(contents)\n  };\n}\n\n/* Factory to get the line and column-based `position` for\n * `offset` in the bound indices. */\nfunction offsetToPositionFactory(indices) {\n  return offsetToPosition;\n\n  /* Get the line and column-based `position` for\n   * `offset` in the bound indices. */\n  function offsetToPosition(offset) {\n    var index = -1;\n    var length = indices.length;\n\n    if (offset < 0) {\n      return {};\n    }\n\n    while (++index < length) {\n      if (indices[index] > offset) {\n        return {\n          line: index + 1,\n          column: (offset - (indices[index - 1] || 0)) + 1,\n          offset: offset\n        };\n      }\n    }\n\n    return {};\n  }\n}\n\n/* Factory to get the `offset` for a line and column-based\n * `position` in the bound indices. */\nfunction positionToOffsetFactory(indices) {\n  return positionToOffset;\n\n  /* Get the `offset` for a line and column-based\n   * `position` in the bound indices. */\n  function positionToOffset(position) {\n    var line = position && position.line;\n    var column = position && position.column;\n\n    if (!isNaN(line) && !isNaN(column) && line - 1 in indices) {\n      return ((indices[line - 2] || 0) + column - 1) || 0;\n    }\n\n    return -1;\n  }\n}\n\n/* Get indices of line-breaks in `value`. */\nfunction indices(value) {\n  var result = [];\n  var index = value.indexOf('\\n');\n\n  while (index !== -1) {\n    result.push(index + 1);\n    index = value.indexOf('\\n', index + 1);\n  }\n\n  result.push(value.length + 1);\n\n  return result;\n}\n","'use strict';\n\nvar path = require('path');\nvar replace = require('replace-ext');\nvar stringify = require('unist-util-stringify-position');\nvar buffer = require('is-buffer');\n\nmodule.exports = VFile;\n\nvar own = {}.hasOwnProperty;\nvar proto = VFile.prototype;\n\nproto.toString = toString;\nproto.message = message;\nproto.info = info;\nproto.fail = fail;\n\n/* Slight backwards compatibility.  Remove in the future. */\nproto.warn = message;\n\n/* Order of setting (least specific to most), we need this because\n * otherwise `{stem: 'a', path: '~/b.js'}` would throw, as a path\n * is needed before a stem can be set. */\nvar order = [\n  'history',\n  'path',\n  'basename',\n  'stem',\n  'extname',\n  'dirname'\n];\n\n/* Construct a new file. */\nfunction VFile(options) {\n  var prop;\n  var index;\n  var length;\n\n  if (!options) {\n    options = {};\n  } else if (typeof options === 'string' || buffer(options)) {\n    options = {contents: options};\n  } else if ('message' in options && 'messages' in options) {\n    return options;\n  }\n\n  if (!(this instanceof VFile)) {\n    return new VFile(options);\n  }\n\n  this.data = {};\n  this.messages = [];\n  this.history = [];\n  this.cwd = process.cwd();\n\n  /* Set path related properties in the correct order. */\n  index = -1;\n  length = order.length;\n\n  while (++index < length) {\n    prop = order[index];\n\n    if (own.call(options, prop)) {\n      this[prop] = options[prop];\n    }\n  }\n\n  /* Set non-path related properties. */\n  for (prop in options) {\n    if (order.indexOf(prop) === -1) {\n      this[prop] = options[prop];\n    }\n  }\n}\n\n/* Access full path (`~/index.min.js`). */\nObject.defineProperty(proto, 'path', {\n  get: function () {\n    return this.history[this.history.length - 1];\n  },\n  set: function (path) {\n    assertNonEmpty(path, 'path');\n\n    if (path !== this.path) {\n      this.history.push(path);\n    }\n  }\n});\n\n/* Access parent path (`~`). */\nObject.defineProperty(proto, 'dirname', {\n  get: function () {\n    return typeof this.path === 'string' ? path.dirname(this.path) : undefined;\n  },\n  set: function (dirname) {\n    assertPath(this.path, 'dirname');\n    this.path = path.join(dirname || '', this.basename);\n  }\n});\n\n/* Access basename (`index.min.js`). */\nObject.defineProperty(proto, 'basename', {\n  get: function () {\n    return typeof this.path === 'string' ? path.basename(this.path) : undefined;\n  },\n  set: function (basename) {\n    assertNonEmpty(basename, 'basename');\n    assertPart(basename, 'basename');\n    this.path = path.join(this.dirname || '', basename);\n  }\n});\n\n/* Access extname (`.js`). */\nObject.defineProperty(proto, 'extname', {\n  get: function () {\n    return typeof this.path === 'string' ? path.extname(this.path) : undefined;\n  },\n  set: function (extname) {\n    var ext = extname || '';\n\n    assertPart(ext, 'extname');\n    assertPath(this.path, 'extname');\n\n    if (ext) {\n      if (ext.charAt(0) !== '.') {\n        throw new Error('`extname` must start with `.`');\n      }\n\n      if (ext.indexOf('.', 1) !== -1) {\n        throw new Error('`extname` cannot contain multiple dots');\n      }\n    }\n\n    this.path = replace(this.path, ext);\n  }\n});\n\n/* Access stem (`index.min`). */\nObject.defineProperty(proto, 'stem', {\n  get: function () {\n    return typeof this.path === 'string' ? path.basename(this.path, this.extname) : undefined;\n  },\n  set: function (stem) {\n    assertNonEmpty(stem, 'stem');\n    assertPart(stem, 'stem');\n    this.path = path.join(this.dirname || '', stem + (this.extname || ''));\n  }\n});\n\n/* Get the value of the file. */\nfunction toString(encoding) {\n  var value = this.contents || '';\n  return buffer(value) ? value.toString(encoding) : String(value);\n}\n\n/* Create a message with `reason` at `position`.\n * When an error is passed in as `reason`, copies the stack. */\nfunction message(reason, position, ruleId) {\n  var filePath = this.path;\n  var range = stringify(position) || '1:1';\n  var location;\n  var err;\n\n  location = {\n    start: {line: null, column: null},\n    end: {line: null, column: null}\n  };\n\n  if (position && position.position) {\n    position = position.position;\n  }\n\n  if (position) {\n    /* Location. */\n    if (position.start) {\n      location = position;\n      position = position.start;\n    } else {\n      /* Position. */\n      location.start = position;\n    }\n  }\n\n  err = new VMessage(reason.message || reason);\n\n  err.name = (filePath ? filePath + ':' : '') + range;\n  err.file = filePath || '';\n  err.reason = reason.message || reason;\n  err.line = position ? position.line : null;\n  err.column = position ? position.column : null;\n  err.location = location;\n  err.ruleId = ruleId || null;\n  err.source = null;\n  err.fatal = false;\n\n  if (reason.stack) {\n    err.stack = reason.stack;\n  }\n\n  this.messages.push(err);\n\n  return err;\n}\n\n/* Fail. Creates a vmessage, associates it with the file,\n * and throws it. */\nfunction fail() {\n  var message = this.message.apply(this, arguments);\n\n  message.fatal = true;\n\n  throw message;\n}\n\n/* Info. Creates a vmessage, associates it with the file,\n * and marks the fatality as null. */\nfunction info() {\n  var message = this.message.apply(this, arguments);\n\n  message.fatal = null;\n\n  return message;\n}\n\n/* Inherit from `Error#`. */\nfunction VMessagePrototype() {}\nVMessagePrototype.prototype = Error.prototype;\nVMessage.prototype = new VMessagePrototype();\n\n/* Message properties. */\nproto = VMessage.prototype;\n\nproto.file = '';\nproto.name = '';\nproto.reason = '';\nproto.message = '';\nproto.stack = '';\nproto.fatal = null;\nproto.column = null;\nproto.line = null;\n\n/* Construct a new file message.\n *\n * Note: We cannot invoke `Error` on the created context,\n * as that adds readonly `line` and `column` attributes on\n * Safari 9, thus throwing and failing the data. */\nfunction VMessage(reason) {\n  this.message = reason;\n}\n\n/* Assert that `part` is not a path (i.e., does\n * not contain `path.sep`). */\nfunction assertPart(part, name) {\n  if (part.indexOf(path.sep) !== -1) {\n    throw new Error('`' + name + '` cannot be a path: did not expect `' + path.sep + '`');\n  }\n}\n\n/* Assert that `part` is not empty. */\nfunction assertNonEmpty(part, name) {\n  if (!part) {\n    throw new Error('`' + name + '` cannot be empty');\n  }\n}\n\n/* Assert `path` exists. */\nfunction assertPath(path, name) {\n  if (!path) {\n    throw new Error('Setting `' + name + '` requires `path` to be set too');\n  }\n}\n","var h = require(\"./virtual-hyperscript/index.js\")\n\nmodule.exports = h\n","'use strict';\n\nvar EvStore = require('ev-store');\n\nmodule.exports = EvHook;\n\nfunction EvHook(value) {\n    if (!(this instanceof EvHook)) {\n        return new EvHook(value);\n    }\n\n    this.value = value;\n}\n\nEvHook.prototype.hook = function (node, propertyName) {\n    var es = EvStore(node);\n    var propName = propertyName.substr(3);\n\n    es[propName] = this.value;\n};\n\nEvHook.prototype.unhook = function(node, propertyName) {\n    var es = EvStore(node);\n    var propName = propertyName.substr(3);\n\n    es[propName] = undefined;\n};\n","'use strict';\n\nmodule.exports = SoftSetHook;\n\nfunction SoftSetHook(value) {\n    if (!(this instanceof SoftSetHook)) {\n        return new SoftSetHook(value);\n    }\n\n    this.value = value;\n}\n\nSoftSetHook.prototype.hook = function (node, propertyName) {\n    if (node[propertyName] !== this.value) {\n        node[propertyName] = this.value;\n    }\n};\n","'use strict';\n\nvar isArray = require('x-is-array');\n\nvar VNode = require('../vnode/vnode.js');\nvar VText = require('../vnode/vtext.js');\nvar isVNode = require('../vnode/is-vnode');\nvar isVText = require('../vnode/is-vtext');\nvar isWidget = require('../vnode/is-widget');\nvar isHook = require('../vnode/is-vhook');\nvar isVThunk = require('../vnode/is-thunk');\n\nvar parseTag = require('./parse-tag.js');\nvar softSetHook = require('./hooks/soft-set-hook.js');\nvar evHook = require('./hooks/ev-hook.js');\n\nmodule.exports = h;\n\nfunction h(tagName, properties, children) {\n    var childNodes = [];\n    var tag, props, key, namespace;\n\n    if (!children && isChildren(properties)) {\n        children = properties;\n        props = {};\n    }\n\n    props = props || properties || {};\n    tag = parseTag(tagName, props);\n\n    // support keys\n    if (props.hasOwnProperty('key')) {\n        key = props.key;\n        props.key = undefined;\n    }\n\n    // support namespace\n    if (props.hasOwnProperty('namespace')) {\n        namespace = props.namespace;\n        props.namespace = undefined;\n    }\n\n    // fix cursor bug\n    if (tag === 'INPUT' &&\n        !namespace &&\n        props.hasOwnProperty('value') &&\n        props.value !== undefined &&\n        !isHook(props.value)\n    ) {\n        props.value = softSetHook(props.value);\n    }\n\n    transformProperties(props);\n\n    if (children !== undefined && children !== null) {\n        addChild(children, childNodes, tag, props);\n    }\n\n\n    return new VNode(tag, props, childNodes, key, namespace);\n}\n\nfunction addChild(c, childNodes, tag, props) {\n    if (typeof c === 'string') {\n        childNodes.push(new VText(c));\n    } else if (typeof c === 'number') {\n        childNodes.push(new VText(String(c)));\n    } else if (isChild(c)) {\n        childNodes.push(c);\n    } else if (isArray(c)) {\n        for (var i = 0; i < c.length; i++) {\n            addChild(c[i], childNodes, tag, props);\n        }\n    } else if (c === null || c === undefined) {\n        return;\n    } else {\n        throw UnexpectedVirtualElement({\n            foreignObject: c,\n            parentVnode: {\n                tagName: tag,\n                properties: props\n            }\n        });\n    }\n}\n\nfunction transformProperties(props) {\n    for (var propName in props) {\n        if (props.hasOwnProperty(propName)) {\n            var value = props[propName];\n\n            if (isHook(value)) {\n                continue;\n            }\n\n            if (propName.substr(0, 3) === 'ev-') {\n                // add ev-foo support\n                props[propName] = evHook(value);\n            }\n        }\n    }\n}\n\nfunction isChild(x) {\n    return isVNode(x) || isVText(x) || isWidget(x) || isVThunk(x);\n}\n\nfunction isChildren(x) {\n    return typeof x === 'string' || isArray(x) || isChild(x);\n}\n\nfunction UnexpectedVirtualElement(data) {\n    var err = new Error();\n\n    err.type = 'virtual-hyperscript.unexpected.virtual-element';\n    err.message = 'Unexpected virtual child passed to h().\\n' +\n        'Expected a VNode / Vthunk / VWidget / string but:\\n' +\n        'got:\\n' +\n        errorString(data.foreignObject) +\n        '.\\n' +\n        'The parent vnode is:\\n' +\n        errorString(data.parentVnode)\n        '\\n' +\n        'Suggested fix: change your `h(..., [ ... ])` callsite.';\n    err.foreignObject = data.foreignObject;\n    err.parentVnode = data.parentVnode;\n\n    return err;\n}\n\nfunction errorString(obj) {\n    try {\n        return JSON.stringify(obj, null, '    ');\n    } catch (e) {\n        return String(obj);\n    }\n}\n","'use strict';\n\nvar split = require('browser-split');\n\nvar classIdSplit = /([\\.#]?[a-zA-Z0-9\\u007F-\\uFFFF_:-]+)/;\nvar notClassId = /^\\.|#/;\n\nmodule.exports = parseTag;\n\nfunction parseTag(tag, props) {\n    if (!tag) {\n        return 'DIV';\n    }\n\n    var noId = !(props.hasOwnProperty('id'));\n\n    var tagParts = split(tag, classIdSplit);\n    var tagName = null;\n\n    if (notClassId.test(tagParts[1])) {\n        tagName = 'DIV';\n    }\n\n    var classes, part, type, i;\n\n    for (i = 0; i < tagParts.length; i++) {\n        part = tagParts[i];\n\n        if (!part) {\n            continue;\n        }\n\n        type = part.charAt(0);\n\n        if (!tagName) {\n            tagName = part;\n        } else if (type === '.') {\n            classes = classes || [];\n            classes.push(part.substring(1, part.length));\n        } else if (type === '#' && noId) {\n            props.id = part.substring(1, part.length);\n        }\n    }\n\n    if (classes) {\n        if (props.className) {\n            classes.push(props.className);\n        }\n\n        props.className = classes.join(' ');\n    }\n\n    return props.namespace ? tagName : tagName.toUpperCase();\n}\n","module.exports = isThunk\r\n\r\nfunction isThunk(t) {\r\n    return t && t.type === \"Thunk\"\r\n}\r\n","module.exports = isHook\n\nfunction isHook(hook) {\n    return hook &&\n      (typeof hook.hook === \"function\" && !hook.hasOwnProperty(\"hook\") ||\n       typeof hook.unhook === \"function\" && !hook.hasOwnProperty(\"unhook\"))\n}\n","var version = require(\"./version\")\n\nmodule.exports = isVirtualNode\n\nfunction isVirtualNode(x) {\n    return x && x.type === \"VirtualNode\" && x.version === version\n}\n","var version = require(\"./version\")\n\nmodule.exports = isVirtualText\n\nfunction isVirtualText(x) {\n    return x && x.type === \"VirtualText\" && x.version === version\n}\n","module.exports = isWidget\n\nfunction isWidget(w) {\n    return w && w.type === \"Widget\"\n}\n","module.exports = \"2\"\n","var version = require(\"./version\")\nvar isVNode = require(\"./is-vnode\")\nvar isWidget = require(\"./is-widget\")\nvar isThunk = require(\"./is-thunk\")\nvar isVHook = require(\"./is-vhook\")\n\nmodule.exports = VirtualNode\n\nvar noProperties = {}\nvar noChildren = []\n\nfunction VirtualNode(tagName, properties, children, key, namespace) {\n    this.tagName = tagName\n    this.properties = properties || noProperties\n    this.children = children || noChildren\n    this.key = key != null ? String(key) : undefined\n    this.namespace = (typeof namespace === \"string\") ? namespace : null\n\n    var count = (children && children.length) || 0\n    var descendants = 0\n    var hasWidgets = false\n    var hasThunks = false\n    var descendantHooks = false\n    var hooks\n\n    for (var propName in properties) {\n        if (properties.hasOwnProperty(propName)) {\n            var property = properties[propName]\n            if (isVHook(property) && property.unhook) {\n                if (!hooks) {\n                    hooks = {}\n                }\n\n                hooks[propName] = property\n            }\n        }\n    }\n\n    for (var i = 0; i < count; i++) {\n        var child = children[i]\n        if (isVNode(child)) {\n            descendants += child.count || 0\n\n            if (!hasWidgets && child.hasWidgets) {\n                hasWidgets = true\n            }\n\n            if (!hasThunks && child.hasThunks) {\n                hasThunks = true\n            }\n\n            if (!descendantHooks && (child.hooks || child.descendantHooks)) {\n                descendantHooks = true\n            }\n        } else if (!hasWidgets && isWidget(child)) {\n            if (typeof child.destroy === \"function\") {\n                hasWidgets = true\n            }\n        } else if (!hasThunks && isThunk(child)) {\n            hasThunks = true;\n        }\n    }\n\n    this.count = count + descendants\n    this.hasWidgets = hasWidgets\n    this.hasThunks = hasThunks\n    this.hooks = hooks\n    this.descendantHooks = descendantHooks\n}\n\nVirtualNode.prototype.version = version\nVirtualNode.prototype.type = \"VirtualNode\"\n","var version = require(\"./version\")\n\nmodule.exports = VirtualText\n\nfunction VirtualText(text) {\n    this.text = String(text)\n}\n\nVirtualText.prototype.version = version\nVirtualText.prototype.type = \"VirtualText\"\n","// Copyright 2014 Google Inc. All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n//     You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n//     See the License for the specific language governing permissions and\n// limitations under the License.\n\n!function(a,b){var c={},d={};!function(a,b){function c(a){if(\"number\"==typeof a)return a;var b={};for(var c in a)b[c]=a[c];return b}function d(){this._delay=0,this._endDelay=0,this._fill=\"none\",this._iterationStart=0,this._iterations=1,this._duration=0,this._playbackRate=1,this._direction=\"normal\",this._easing=\"linear\",this._easingFunction=x}function e(){return a.isDeprecated(\"Invalid timing inputs\",\"2016-03-02\",\"TypeError exceptions will be thrown instead.\",!0)}function f(b,c,e){var f=new d;return c&&(f.fill=\"both\",f.duration=\"auto\"),\"number\"!=typeof b||isNaN(b)?void 0!==b&&Object.getOwnPropertyNames(b).forEach(function(c){if(\"auto\"!=b[c]){if((\"number\"==typeof f[c]||\"duration\"==c)&&(\"number\"!=typeof b[c]||isNaN(b[c])))return;if(\"fill\"==c&&-1==v.indexOf(b[c]))return;if(\"direction\"==c&&-1==w.indexOf(b[c]))return;if(\"playbackRate\"==c&&1!==b[c]&&a.isDeprecated(\"AnimationEffectTiming.playbackRate\",\"2014-11-28\",\"Use Animation.playbackRate instead.\"))return;f[c]=b[c]}}):f.duration=b,f}function g(a){return\"number\"==typeof a&&(a=isNaN(a)?{duration:0}:{duration:a}),a}function h(b,c){return b=a.numericTimingToObject(b),f(b,c)}function i(a,b,c,d){return a<0||a>1||c<0||c>1?x:function(e){function f(a,b,c){return 3*a*(1-c)*(1-c)*c+3*b*(1-c)*c*c+c*c*c}if(e<=0){var g=0;return a>0?g=b/a:!b&&c>0&&(g=d/c),g*e}if(e>=1){var h=0;return c<1?h=(d-1)/(c-1):1==c&&a<1&&(h=(b-1)/(a-1)),1+h*(e-1)}for(var i=0,j=1;i<j;){var k=(i+j)/2,l=f(a,c,k);if(Math.abs(e-l)<1e-5)return f(b,d,k);l<e?i=k:j=k}return f(b,d,k)}}function j(a,b){return function(c){if(c>=1)return 1;var d=1/a;return(c+=b*d)-c%d}}function k(a){C||(C=document.createElement(\"div\").style),C.animationTimingFunction=\"\",C.animationTimingFunction=a;var b=C.animationTimingFunction;if(\"\"==b&&e())throw new TypeError(a+\" is not a valid value for easing\");return b}function l(a){if(\"linear\"==a)return x;var b=E.exec(a);if(b)return i.apply(this,b.slice(1).map(Number));var c=F.exec(a);return c?j(Number(c[1]),{start:y,middle:z,end:A}[c[2]]):B[a]||x}function m(a){return Math.abs(n(a)/a.playbackRate)}function n(a){return 0===a.duration||0===a.iterations?0:a.duration*a.iterations}function o(a,b,c){if(null==b)return G;var d=c.delay+a+c.endDelay;return b<Math.min(c.delay,d)?H:b>=Math.min(c.delay+a,d)?I:J}function p(a,b,c,d,e){switch(d){case H:return\"backwards\"==b||\"both\"==b?0:null;case J:return c-e;case I:return\"forwards\"==b||\"both\"==b?a:null;case G:return null}}function q(a,b,c,d,e){var f=e;return 0===a?b!==H&&(f+=c):f+=d/a,f}function r(a,b,c,d,e,f){var g=a===1/0?b%1:a%1;return 0!==g||c!==I||0===d||0===e&&0!==f||(g=1),g}function s(a,b,c,d){return a===I&&b===1/0?1/0:1===c?Math.floor(d)-1:Math.floor(d)}function t(a,b,c){var d=a;if(\"normal\"!==a&&\"reverse\"!==a){var e=b;\"alternate-reverse\"===a&&(e+=1),d=\"normal\",e!==1/0&&e%2!=0&&(d=\"reverse\")}return\"normal\"===d?c:1-c}function u(a,b,c){var d=o(a,b,c),e=p(a,c.fill,b,d,c.delay);if(null===e)return null;var f=q(c.duration,d,c.iterations,e,c.iterationStart),g=r(f,c.iterationStart,d,c.iterations,e,c.duration),h=s(d,c.iterations,g,f),i=t(c.direction,h,g);return c._easingFunction(i)}var v=\"backwards|forwards|both|none\".split(\"|\"),w=\"reverse|alternate|alternate-reverse\".split(\"|\"),x=function(a){return a};d.prototype={_setMember:function(b,c){this[\"_\"+b]=c,this._effect&&(this._effect._timingInput[b]=c,this._effect._timing=a.normalizeTimingInput(this._effect._timingInput),this._effect.activeDuration=a.calculateActiveDuration(this._effect._timing),this._effect._animation&&this._effect._animation._rebuildUnderlyingAnimation())},get playbackRate(){return this._playbackRate},set delay(a){this._setMember(\"delay\",a)},get delay(){return this._delay},set endDelay(a){this._setMember(\"endDelay\",a)},get endDelay(){return this._endDelay},set fill(a){this._setMember(\"fill\",a)},get fill(){return this._fill},set iterationStart(a){if((isNaN(a)||a<0)&&e())throw new TypeError(\"iterationStart must be a non-negative number, received: \"+timing.iterationStart);this._setMember(\"iterationStart\",a)},get iterationStart(){return this._iterationStart},set duration(a){if(\"auto\"!=a&&(isNaN(a)||a<0)&&e())throw new TypeError(\"duration must be non-negative or auto, received: \"+a);this._setMember(\"duration\",a)},get duration(){return this._duration},set direction(a){this._setMember(\"direction\",a)},get direction(){return this._direction},set easing(a){this._easingFunction=l(k(a)),this._setMember(\"easing\",a)},get easing(){return this._easing},set iterations(a){if((isNaN(a)||a<0)&&e())throw new TypeError(\"iterations must be non-negative, received: \"+a);this._setMember(\"iterations\",a)},get iterations(){return this._iterations}};var y=1,z=.5,A=0,B={ease:i(.25,.1,.25,1),\"ease-in\":i(.42,0,1,1),\"ease-out\":i(0,0,.58,1),\"ease-in-out\":i(.42,0,.58,1),\"step-start\":j(1,y),\"step-middle\":j(1,z),\"step-end\":j(1,A)},C=null,D=\"\\\\s*(-?\\\\d+\\\\.?\\\\d*|-?\\\\.\\\\d+)\\\\s*\",E=new RegExp(\"cubic-bezier\\\\(\"+D+\",\"+D+\",\"+D+\",\"+D+\"\\\\)\"),F=/steps\\(\\s*(\\d+)\\s*,\\s*(start|middle|end)\\s*\\)/,G=0,H=1,I=2,J=3;a.cloneTimingInput=c,a.makeTiming=f,a.numericTimingToObject=g,a.normalizeTimingInput=h,a.calculateActiveDuration=m,a.calculateIterationProgress=u,a.calculatePhase=o,a.normalizeEasing=k,a.parseEasingFunction=l}(c),function(a,b){function c(a,b){return a in k?k[a][b]||b:b}function d(a){return\"display\"===a||0===a.lastIndexOf(\"animation\",0)||0===a.lastIndexOf(\"transition\",0)}function e(a,b,e){if(!d(a)){var f=h[a];if(f){i.style[a]=b;for(var g in f){var j=f[g],k=i.style[j];e[j]=c(j,k)}}else e[a]=c(a,b)}}function f(a){var b=[];for(var c in a)if(!(c in[\"easing\",\"offset\",\"composite\"])){var d=a[c];Array.isArray(d)||(d=[d]);for(var e,f=d.length,g=0;g<f;g++)e={},e.offset=\"offset\"in a?a.offset:1==f?1:g/(f-1),\"easing\"in a&&(e.easing=a.easing),\"composite\"in a&&(e.composite=a.composite),e[c]=d[g],b.push(e)}return b.sort(function(a,b){return a.offset-b.offset}),b}function g(b){function c(){var a=d.length;null==d[a-1].offset&&(d[a-1].offset=1),a>1&&null==d[0].offset&&(d[0].offset=0);for(var b=0,c=d[0].offset,e=1;e<a;e++){var f=d[e].offset;if(null!=f){for(var g=1;g<e-b;g++)d[b+g].offset=c+(f-c)*g/(e-b);b=e,c=f}}}if(null==b)return[];window.Symbol&&Symbol.iterator&&Array.prototype.from&&b[Symbol.iterator]&&(b=Array.from(b)),Array.isArray(b)||(b=f(b));for(var d=b.map(function(b){var c={};for(var d in b){var f=b[d];if(\"offset\"==d){if(null!=f){if(f=Number(f),!isFinite(f))throw new TypeError(\"Keyframe offsets must be numbers.\");if(f<0||f>1)throw new TypeError(\"Keyframe offsets must be between 0 and 1.\")}}else if(\"composite\"==d){if(\"add\"==f||\"accumulate\"==f)throw{type:DOMException.NOT_SUPPORTED_ERR,name:\"NotSupportedError\",message:\"add compositing is not supported\"};if(\"replace\"!=f)throw new TypeError(\"Invalid composite mode \"+f+\".\")}else f=\"easing\"==d?a.normalizeEasing(f):\"\"+f;e(d,f,c)}return void 0==c.offset&&(c.offset=null),void 0==c.easing&&(c.easing=\"linear\"),c}),g=!0,h=-1/0,i=0;i<d.length;i++){var j=d[i].offset;if(null!=j){if(j<h)throw new TypeError(\"Keyframes are not loosely sorted by offset. Sort or specify offsets.\");h=j}else g=!1}return d=d.filter(function(a){return a.offset>=0&&a.offset<=1}),g||c(),d}var h={background:[\"backgroundImage\",\"backgroundPosition\",\"backgroundSize\",\"backgroundRepeat\",\"backgroundAttachment\",\"backgroundOrigin\",\"backgroundClip\",\"backgroundColor\"],border:[\"borderTopColor\",\"borderTopStyle\",\"borderTopWidth\",\"borderRightColor\",\"borderRightStyle\",\"borderRightWidth\",\"borderBottomColor\",\"borderBottomStyle\",\"borderBottomWidth\",\"borderLeftColor\",\"borderLeftStyle\",\"borderLeftWidth\"],borderBottom:[\"borderBottomWidth\",\"borderBottomStyle\",\"borderBottomColor\"],borderColor:[\"borderTopColor\",\"borderRightColor\",\"borderBottomColor\",\"borderLeftColor\"],borderLeft:[\"borderLeftWidth\",\"borderLeftStyle\",\"borderLeftColor\"],borderRadius:[\"borderTopLeftRadius\",\"borderTopRightRadius\",\"borderBottomRightRadius\",\"borderBottomLeftRadius\"],borderRight:[\"borderRightWidth\",\"borderRightStyle\",\"borderRightColor\"],borderTop:[\"borderTopWidth\",\"borderTopStyle\",\"borderTopColor\"],borderWidth:[\"borderTopWidth\",\"borderRightWidth\",\"borderBottomWidth\",\"borderLeftWidth\"],flex:[\"flexGrow\",\"flexShrink\",\"flexBasis\"],font:[\"fontFamily\",\"fontSize\",\"fontStyle\",\"fontVariant\",\"fontWeight\",\"lineHeight\"],margin:[\"marginTop\",\"marginRight\",\"marginBottom\",\"marginLeft\"],outline:[\"outlineColor\",\"outlineStyle\",\"outlineWidth\"],padding:[\"paddingTop\",\"paddingRight\",\"paddingBottom\",\"paddingLeft\"]},i=document.createElementNS(\"http://www.w3.org/1999/xhtml\",\"div\"),j={thin:\"1px\",medium:\"3px\",thick:\"5px\"},k={borderBottomWidth:j,borderLeftWidth:j,borderRightWidth:j,borderTopWidth:j,fontSize:{\"xx-small\":\"60%\",\"x-small\":\"75%\",small:\"89%\",medium:\"100%\",large:\"120%\",\"x-large\":\"150%\",\"xx-large\":\"200%\"},fontWeight:{normal:\"400\",bold:\"700\"},outlineWidth:j,textShadow:{none:\"0px 0px 0px transparent\"},boxShadow:{none:\"0px 0px 0px 0px transparent\"}};a.convertToArrayForm=f,a.normalizeKeyframes=g}(c),function(a){var b={};a.isDeprecated=function(a,c,d,e){var f=e?\"are\":\"is\",g=new Date,h=new Date(c);return h.setMonth(h.getMonth()+3),!(g<h&&(a in b||console.warn(\"Web Animations: \"+a+\" \"+f+\" deprecated and will stop working on \"+h.toDateString()+\". \"+d),b[a]=!0,1))},a.deprecated=function(b,c,d,e){var f=e?\"are\":\"is\";if(a.isDeprecated(b,c,d,e))throw new Error(b+\" \"+f+\" no longer supported. \"+d)}}(c),function(){if(document.documentElement.animate){var a=document.documentElement.animate([],0),b=!0;if(a&&(b=!1,\"play|currentTime|pause|reverse|playbackRate|cancel|finish|startTime|playState\".split(\"|\").forEach(function(c){void 0===a[c]&&(b=!0)})),!b)return}!function(a,b,c){function d(a){for(var b={},c=0;c<a.length;c++)for(var d in a[c])if(\"offset\"!=d&&\"easing\"!=d&&\"composite\"!=d){var e={offset:a[c].offset,easing:a[c].easing,value:a[c][d]};b[d]=b[d]||[],b[d].push(e)}for(var f in b){var g=b[f];if(0!=g[0].offset||1!=g[g.length-1].offset)throw{type:DOMException.NOT_SUPPORTED_ERR,name:\"NotSupportedError\",message:\"Partial keyframes are not supported\"}}return b}function e(c){var d=[];for(var e in c)for(var f=c[e],g=0;g<f.length-1;g++){var h=g,i=g+1,j=f[h].offset,k=f[i].offset,l=j,m=k;0==g&&(l=-1/0,0==k&&(i=h)),g==f.length-2&&(m=1/0,1==j&&(h=i)),d.push({applyFrom:l,applyTo:m,startOffset:f[h].offset,endOffset:f[i].offset,easingFunction:a.parseEasingFunction(f[h].easing),property:e,interpolation:b.propertyInterpolation(e,f[h].value,f[i].value)})}return d.sort(function(a,b){return a.startOffset-b.startOffset}),d}b.convertEffectInput=function(c){var f=a.normalizeKeyframes(c),g=d(f),h=e(g);return function(a,c){if(null!=c)h.filter(function(a){return c>=a.applyFrom&&c<a.applyTo}).forEach(function(d){var e=c-d.startOffset,f=d.endOffset-d.startOffset,g=0==f?0:d.easingFunction(e/f);b.apply(a,d.property,d.interpolation(g))});else for(var d in g)\"offset\"!=d&&\"easing\"!=d&&\"composite\"!=d&&b.clear(a,d)}}}(c,d),function(a,b,c){function d(a){return a.replace(/-(.)/g,function(a,b){return b.toUpperCase()})}function e(a,b,c){h[c]=h[c]||[],h[c].push([a,b])}function f(a,b,c){for(var f=0;f<c.length;f++){e(a,b,d(c[f]))}}function g(c,e,f){var g=c;/-/.test(c)&&!a.isDeprecated(\"Hyphenated property names\",\"2016-03-22\",\"Use camelCase instead.\",!0)&&(g=d(c)),\"initial\"!=e&&\"initial\"!=f||(\"initial\"==e&&(e=i[g]),\"initial\"==f&&(f=i[g]));for(var j=e==f?[]:h[g],k=0;j&&k<j.length;k++){var l=j[k][0](e),m=j[k][0](f);if(void 0!==l&&void 0!==m){var n=j[k][1](l,m);if(n){var o=b.Interpolation.apply(null,n);return function(a){return 0==a?e:1==a?f:o(a)}}}}return b.Interpolation(!1,!0,function(a){return a?f:e})}var h={};b.addPropertiesHandler=f;var i={backgroundColor:\"transparent\",backgroundPosition:\"0% 0%\",borderBottomColor:\"currentColor\",borderBottomLeftRadius:\"0px\",borderBottomRightRadius:\"0px\",borderBottomWidth:\"3px\",borderLeftColor:\"currentColor\",borderLeftWidth:\"3px\",borderRightColor:\"currentColor\",borderRightWidth:\"3px\",borderSpacing:\"2px\",borderTopColor:\"currentColor\",borderTopLeftRadius:\"0px\",borderTopRightRadius:\"0px\",borderTopWidth:\"3px\",bottom:\"auto\",clip:\"rect(0px, 0px, 0px, 0px)\",color:\"black\",fontSize:\"100%\",fontWeight:\"400\",height:\"auto\",left:\"auto\",letterSpacing:\"normal\",lineHeight:\"120%\",marginBottom:\"0px\",marginLeft:\"0px\",marginRight:\"0px\",marginTop:\"0px\",maxHeight:\"none\",maxWidth:\"none\",minHeight:\"0px\",minWidth:\"0px\",opacity:\"1.0\",outlineColor:\"invert\",outlineOffset:\"0px\",outlineWidth:\"3px\",paddingBottom:\"0px\",paddingLeft:\"0px\",paddingRight:\"0px\",paddingTop:\"0px\",right:\"auto\",strokeDasharray:\"none\",strokeDashoffset:\"0px\",textIndent:\"0px\",textShadow:\"0px 0px 0px transparent\",top:\"auto\",transform:\"\",verticalAlign:\"0px\",visibility:\"visible\",width:\"auto\",wordSpacing:\"normal\",zIndex:\"auto\"};b.propertyInterpolation=g}(c,d),function(a,b,c){function d(b){var c=a.calculateActiveDuration(b),d=function(d){return a.calculateIterationProgress(c,d,b)};return d._totalDuration=b.delay+c+b.endDelay,d}b.KeyframeEffect=function(c,e,f,g){var h,i=d(a.normalizeTimingInput(f)),j=b.convertEffectInput(e),k=function(){j(c,h)};return k._update=function(a){return null!==(h=i(a))},k._clear=function(){j(c,null)},k._hasSameTarget=function(a){return c===a},k._target=c,k._totalDuration=i._totalDuration,k._id=g,k}}(c,d),function(a,b){function c(a,b){return!(!b.namespaceURI||-1==b.namespaceURI.indexOf(\"/svg\"))&&(g in a||(a[g]=/Trident|MSIE|IEMobile|Edge|Android 4/i.test(a.navigator.userAgent)),a[g])}function d(a,b,c){c.enumerable=!0,c.configurable=!0,Object.defineProperty(a,b,c)}function e(a){this._element=a,this._surrogateStyle=document.createElementNS(\"http://www.w3.org/1999/xhtml\",\"div\").style,this._style=a.style,this._length=0,this._isAnimatedProperty={},this._updateSvgTransformAttr=c(window,a),this._savedTransformAttr=null;for(var b=0;b<this._style.length;b++){var d=this._style[b];this._surrogateStyle[d]=this._style[d]}this._updateIndices()}function f(a){if(!a._webAnimationsPatchedStyle){var b=new e(a);try{d(a,\"style\",{get:function(){return b}})}catch(b){a.style._set=function(b,c){a.style[b]=c},a.style._clear=function(b){a.style[b]=\"\"}}a._webAnimationsPatchedStyle=a.style}}var g=\"_webAnimationsUpdateSvgTransformAttr\",h={cssText:1,length:1,parentRule:1},i={getPropertyCSSValue:1,getPropertyPriority:1,getPropertyValue:1,item:1,removeProperty:1,setProperty:1},j={removeProperty:1,setProperty:1};e.prototype={get cssText(){return this._surrogateStyle.cssText},set cssText(a){for(var b={},c=0;c<this._surrogateStyle.length;c++)b[this._surrogateStyle[c]]=!0;this._surrogateStyle.cssText=a,this._updateIndices();for(var c=0;c<this._surrogateStyle.length;c++)b[this._surrogateStyle[c]]=!0;for(var d in b)this._isAnimatedProperty[d]||this._style.setProperty(d,this._surrogateStyle.getPropertyValue(d))},get length(){return this._surrogateStyle.length},get parentRule(){return this._style.parentRule},_updateIndices:function(){for(;this._length<this._surrogateStyle.length;)Object.defineProperty(this,this._length,{configurable:!0,enumerable:!1,get:function(a){return function(){return this._surrogateStyle[a]}}(this._length)}),this._length++;for(;this._length>this._surrogateStyle.length;)this._length--,Object.defineProperty(this,this._length,{configurable:!0,enumerable:!1,value:void 0})},_set:function(b,c){this._style[b]=c,this._isAnimatedProperty[b]=!0,this._updateSvgTransformAttr&&\"transform\"==a.unprefixedPropertyName(b)&&(null==this._savedTransformAttr&&(this._savedTransformAttr=this._element.getAttribute(\"transform\")),this._element.setAttribute(\"transform\",a.transformToSvgMatrix(c)))},_clear:function(b){this._style[b]=this._surrogateStyle[b],this._updateSvgTransformAttr&&\"transform\"==a.unprefixedPropertyName(b)&&(this._savedTransformAttr?this._element.setAttribute(\"transform\",this._savedTransformAttr):this._element.removeAttribute(\"transform\"),this._savedTransformAttr=null),delete this._isAnimatedProperty[b]}};for(var k in i)e.prototype[k]=function(a,b){return function(){var c=this._surrogateStyle[a].apply(this._surrogateStyle,arguments);return b&&(this._isAnimatedProperty[arguments[0]]||this._style[a].apply(this._style,arguments),this._updateIndices()),c}}(k,k in j);for(var l in document.documentElement.style)l in h||l in i||function(a){d(e.prototype,a,{get:function(){return this._surrogateStyle[a]},set:function(b){this._surrogateStyle[a]=b,this._updateIndices(),this._isAnimatedProperty[a]||(this._style[a]=b)}})}(l);a.apply=function(b,c,d){f(b),b.style._set(a.propertyName(c),d)},a.clear=function(b,c){b._webAnimationsPatchedStyle&&b.style._clear(a.propertyName(c))}}(d),function(a){window.Element.prototype.animate=function(b,c){var d=\"\";return c&&c.id&&(d=c.id),a.timeline._play(a.KeyframeEffect(this,b,c,d))}}(d),function(a,b){function c(a,b,d){if(\"number\"==typeof a&&\"number\"==typeof b)return a*(1-d)+b*d;if(\"boolean\"==typeof a&&\"boolean\"==typeof b)return d<.5?a:b;if(a.length==b.length){for(var e=[],f=0;f<a.length;f++)e.push(c(a[f],b[f],d));return e}throw\"Mismatched interpolation arguments \"+a+\":\"+b}a.Interpolation=function(a,b,d){return function(e){return d(c(a,b,e))}}}(d),function(a,b){function c(a,b,c){return Math.max(Math.min(a,c),b)}function d(b,d,e){var f=a.dot(b,d);f=c(f,-1,1);var g=[];if(1===f)g=b;else for(var h=Math.acos(f),i=1*Math.sin(e*h)/Math.sqrt(1-f*f),j=0;j<4;j++)g.push(b[j]*(Math.cos(e*h)-f*i)+d[j]*i);return g}var e=function(){function a(a,b){for(var c=[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]],d=0;d<4;d++)for(var e=0;e<4;e++)for(var f=0;f<4;f++)c[d][e]+=b[d][f]*a[f][e];return c}function b(a){return 0==a[0][2]&&0==a[0][3]&&0==a[1][2]&&0==a[1][3]&&0==a[2][0]&&0==a[2][1]&&1==a[2][2]&&0==a[2][3]&&0==a[3][2]&&1==a[3][3]}function c(c,d,e,f,g){for(var h=[[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]],i=0;i<4;i++)h[i][3]=g[i];for(var i=0;i<3;i++)for(var j=0;j<3;j++)h[3][i]+=c[j]*h[j][i];var k=f[0],l=f[1],m=f[2],n=f[3],o=[[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]];o[0][0]=1-2*(l*l+m*m),o[0][1]=2*(k*l-m*n),o[0][2]=2*(k*m+l*n),o[1][0]=2*(k*l+m*n),o[1][1]=1-2*(k*k+m*m),o[1][2]=2*(l*m-k*n),o[2][0]=2*(k*m-l*n),o[2][1]=2*(l*m+k*n),o[2][2]=1-2*(k*k+l*l),h=a(h,o);var p=[[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]];e[2]&&(p[2][1]=e[2],h=a(h,p)),e[1]&&(p[2][1]=0,p[2][0]=e[0],h=a(h,p)),e[0]&&(p[2][0]=0,p[1][0]=e[0],h=a(h,p));for(var i=0;i<3;i++)for(var j=0;j<3;j++)h[i][j]*=d[i];return b(h)?[h[0][0],h[0][1],h[1][0],h[1][1],h[3][0],h[3][1]]:h[0].concat(h[1],h[2],h[3])}return c}();a.composeMatrix=e,a.quat=d}(d),function(a,b,c){a.sequenceNumber=0;var d=function(a,b,c){this.target=a,this.currentTime=b,this.timelineTime=c,this.type=\"finish\",this.bubbles=!1,this.cancelable=!1,this.currentTarget=a,this.defaultPrevented=!1,this.eventPhase=Event.AT_TARGET,this.timeStamp=Date.now()};b.Animation=function(b){this.id=\"\",b&&b._id&&(this.id=b._id),this._sequenceNumber=a.sequenceNumber++,this._currentTime=0,this._startTime=null,this._paused=!1,this._playbackRate=1,this._inTimeline=!0,this._finishedFlag=!0,this.onfinish=null,this._finishHandlers=[],this._effect=b,this._inEffect=this._effect._update(0),this._idle=!0,this._currentTimePending=!1},b.Animation.prototype={_ensureAlive:function(){this.playbackRate<0&&0===this.currentTime?this._inEffect=this._effect._update(-1):this._inEffect=this._effect._update(this.currentTime),this._inTimeline||!this._inEffect&&this._finishedFlag||(this._inTimeline=!0,b.timeline._animations.push(this))},_tickCurrentTime:function(a,b){a!=this._currentTime&&(this._currentTime=a,this._isFinished&&!b&&(this._currentTime=this._playbackRate>0?this._totalDuration:0),this._ensureAlive())},get currentTime(){return this._idle||this._currentTimePending?null:this._currentTime},set currentTime(a){a=+a,isNaN(a)||(b.restart(),this._paused||null==this._startTime||(this._startTime=this._timeline.currentTime-a/this._playbackRate),this._currentTimePending=!1,this._currentTime!=a&&(this._idle&&(this._idle=!1,this._paused=!0),this._tickCurrentTime(a,!0),b.applyDirtiedAnimation(this)))},get startTime(){return this._startTime},set startTime(a){a=+a,isNaN(a)||this._paused||this._idle||(this._startTime=a,this._tickCurrentTime((this._timeline.currentTime-this._startTime)*this.playbackRate),b.applyDirtiedAnimation(this))},get playbackRate(){return this._playbackRate},set playbackRate(a){if(a!=this._playbackRate){var c=this.currentTime;this._playbackRate=a,this._startTime=null,\"paused\"!=this.playState&&\"idle\"!=this.playState&&(this._finishedFlag=!1,this._idle=!1,this._ensureAlive(),b.applyDirtiedAnimation(this)),null!=c&&(this.currentTime=c)}},get _isFinished(){return!this._idle&&(this._playbackRate>0&&this._currentTime>=this._totalDuration||this._playbackRate<0&&this._currentTime<=0)},get _totalDuration(){return this._effect._totalDuration},get playState(){return this._idle?\"idle\":null==this._startTime&&!this._paused&&0!=this.playbackRate||this._currentTimePending?\"pending\":this._paused?\"paused\":this._isFinished?\"finished\":\"running\"},_rewind:function(){if(this._playbackRate>=0)this._currentTime=0;else{if(!(this._totalDuration<1/0))throw new DOMException(\"Unable to rewind negative playback rate animation with infinite duration\",\"InvalidStateError\");this._currentTime=this._totalDuration}},play:function(){this._paused=!1,(this._isFinished||this._idle)&&(this._rewind(),this._startTime=null),this._finishedFlag=!1,this._idle=!1,this._ensureAlive(),b.applyDirtiedAnimation(this)},pause:function(){this._isFinished||this._paused||this._idle?this._idle&&(this._rewind(),this._idle=!1):this._currentTimePending=!0,this._startTime=null,this._paused=!0},finish:function(){this._idle||(this.currentTime=this._playbackRate>0?this._totalDuration:0,this._startTime=this._totalDuration-this.currentTime,this._currentTimePending=!1,b.applyDirtiedAnimation(this))},cancel:function(){this._inEffect&&(this._inEffect=!1,this._idle=!0,this._paused=!1,this._isFinished=!0,this._finishedFlag=!0,this._currentTime=0,this._startTime=null,this._effect._update(null),b.applyDirtiedAnimation(this))},reverse:function(){this.playbackRate*=-1,this.play()},addEventListener:function(a,b){\"function\"==typeof b&&\"finish\"==a&&this._finishHandlers.push(b)},removeEventListener:function(a,b){if(\"finish\"==a){var c=this._finishHandlers.indexOf(b);c>=0&&this._finishHandlers.splice(c,1)}},_fireEvents:function(a){if(this._isFinished){if(!this._finishedFlag){var b=new d(this,this._currentTime,a),c=this._finishHandlers.concat(this.onfinish?[this.onfinish]:[]);setTimeout(function(){c.forEach(function(a){a.call(b.target,b)})},0),this._finishedFlag=!0}}else this._finishedFlag=!1},_tick:function(a,b){this._idle||this._paused||(null==this._startTime?b&&(this.startTime=a-this._currentTime/this.playbackRate):this._isFinished||this._tickCurrentTime((a-this._startTime)*this.playbackRate)),b&&(this._currentTimePending=!1,this._fireEvents(a))},get _needsTick(){return this.playState in{pending:1,running:1}||!this._finishedFlag},_targetAnimations:function(){var a=this._effect._target;return a._activeAnimations||(a._activeAnimations=[]),a._activeAnimations},_markTarget:function(){var a=this._targetAnimations();-1===a.indexOf(this)&&a.push(this)},_unmarkTarget:function(){var a=this._targetAnimations(),b=a.indexOf(this);-1!==b&&a.splice(b,1)}}}(c,d),function(a,b,c){function d(a){var b=j;j=[],a<q.currentTime&&(a=q.currentTime),q._animations.sort(e),q._animations=h(a,!0,q._animations)[0],b.forEach(function(b){b[1](a)}),g(),l=void 0}function e(a,b){return a._sequenceNumber-b._sequenceNumber}function f(){this._animations=[],this.currentTime=window.performance&&performance.now?performance.now():0}function g(){o.forEach(function(a){a()}),o.length=0}function h(a,c,d){p=!0,n=!1,b.timeline.currentTime=a,m=!1;var e=[],f=[],g=[],h=[];return d.forEach(function(b){b._tick(a,c),b._inEffect?(f.push(b._effect),b._markTarget()):(e.push(b._effect),b._unmarkTarget()),b._needsTick&&(m=!0);var d=b._inEffect||b._needsTick;b._inTimeline=d,d?g.push(b):h.push(b)}),o.push.apply(o,e),o.push.apply(o,f),m&&requestAnimationFrame(function(){}),p=!1,[g,h]}var i=window.requestAnimationFrame,j=[],k=0;window.requestAnimationFrame=function(a){var b=k++;return 0==j.length&&i(d),j.push([b,a]),b},window.cancelAnimationFrame=function(a){j.forEach(function(b){b[0]==a&&(b[1]=function(){})})},f.prototype={_play:function(c){c._timing=a.normalizeTimingInput(c.timing);var d=new b.Animation(c);return d._idle=!1,d._timeline=this,this._animations.push(d),b.restart(),b.applyDirtiedAnimation(d),d}};var l=void 0,m=!1,n=!1;b.restart=function(){return m||(m=!0,requestAnimationFrame(function(){}),n=!0),n},b.applyDirtiedAnimation=function(a){if(!p){a._markTarget();var c=a._targetAnimations();c.sort(e),h(b.timeline.currentTime,!1,c.slice())[1].forEach(function(a){var b=q._animations.indexOf(a);-1!==b&&q._animations.splice(b,1)}),g()}};var o=[],p=!1,q=new f;b.timeline=q}(c,d),function(a,b){function c(a,b){for(var c=0,d=0;d<a.length;d++)c+=a[d]*b[d];return c}function d(a,b){return[a[0]*b[0]+a[4]*b[1]+a[8]*b[2]+a[12]*b[3],a[1]*b[0]+a[5]*b[1]+a[9]*b[2]+a[13]*b[3],a[2]*b[0]+a[6]*b[1]+a[10]*b[2]+a[14]*b[3],a[3]*b[0]+a[7]*b[1]+a[11]*b[2]+a[15]*b[3],a[0]*b[4]+a[4]*b[5]+a[8]*b[6]+a[12]*b[7],a[1]*b[4]+a[5]*b[5]+a[9]*b[6]+a[13]*b[7],a[2]*b[4]+a[6]*b[5]+a[10]*b[6]+a[14]*b[7],a[3]*b[4]+a[7]*b[5]+a[11]*b[6]+a[15]*b[7],a[0]*b[8]+a[4]*b[9]+a[8]*b[10]+a[12]*b[11],a[1]*b[8]+a[5]*b[9]+a[9]*b[10]+a[13]*b[11],a[2]*b[8]+a[6]*b[9]+a[10]*b[10]+a[14]*b[11],a[3]*b[8]+a[7]*b[9]+a[11]*b[10]+a[15]*b[11],a[0]*b[12]+a[4]*b[13]+a[8]*b[14]+a[12]*b[15],a[1]*b[12]+a[5]*b[13]+a[9]*b[14]+a[13]*b[15],a[2]*b[12]+a[6]*b[13]+a[10]*b[14]+a[14]*b[15],a[3]*b[12]+a[7]*b[13]+a[11]*b[14]+a[15]*b[15]]}function e(a){var b=a.rad||0;return((a.deg||0)/360+(a.grad||0)/400+(a.turn||0))*(2*Math.PI)+b}function f(a){switch(a.t){case\"rotatex\":var b=e(a.d[0]);return[1,0,0,0,0,Math.cos(b),Math.sin(b),0,0,-Math.sin(b),Math.cos(b),0,0,0,0,1];case\"rotatey\":var b=e(a.d[0]);return[Math.cos(b),0,-Math.sin(b),0,0,1,0,0,Math.sin(b),0,Math.cos(b),0,0,0,0,1];case\"rotate\":case\"rotatez\":var b=e(a.d[0]);return[Math.cos(b),Math.sin(b),0,0,-Math.sin(b),Math.cos(b),0,0,0,0,1,0,0,0,0,1];case\"rotate3d\":var c=a.d[0],d=a.d[1],f=a.d[2],b=e(a.d[3]),g=c*c+d*d+f*f;if(0===g)c=1,d=0,f=0;else if(1!==g){var h=Math.sqrt(g);c/=h,d/=h,f/=h}var i=Math.sin(b/2),j=i*Math.cos(b/2),k=i*i;return[1-2*(d*d+f*f)*k,2*(c*d*k+f*j),2*(c*f*k-d*j),0,2*(c*d*k-f*j),1-2*(c*c+f*f)*k,2*(d*f*k+c*j),0,2*(c*f*k+d*j),2*(d*f*k-c*j),1-2*(c*c+d*d)*k,0,0,0,0,1];case\"scale\":return[a.d[0],0,0,0,0,a.d[1],0,0,0,0,1,0,0,0,0,1];case\"scalex\":return[a.d[0],0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];case\"scaley\":return[1,0,0,0,0,a.d[0],0,0,0,0,1,0,0,0,0,1];case\"scalez\":return[1,0,0,0,0,1,0,0,0,0,a.d[0],0,0,0,0,1];case\"scale3d\":return[a.d[0],0,0,0,0,a.d[1],0,0,0,0,a.d[2],0,0,0,0,1];case\"skew\":var l=e(a.d[0]),m=e(a.d[1]);return[1,Math.tan(m),0,0,Math.tan(l),1,0,0,0,0,1,0,0,0,0,1];case\"skewx\":var b=e(a.d[0]);return[1,0,0,0,Math.tan(b),1,0,0,0,0,1,0,0,0,0,1];case\"skewy\":var b=e(a.d[0]);return[1,Math.tan(b),0,0,0,1,0,0,0,0,1,0,0,0,0,1];case\"translate\":var c=a.d[0].px||0,d=a.d[1].px||0;return[1,0,0,0,0,1,0,0,0,0,1,0,c,d,0,1];case\"translatex\":var c=a.d[0].px||0;return[1,0,0,0,0,1,0,0,0,0,1,0,c,0,0,1];case\"translatey\":var d=a.d[0].px||0;return[1,0,0,0,0,1,0,0,0,0,1,0,0,d,0,1];case\"translatez\":var f=a.d[0].px||0;return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,f,1];case\"translate3d\":var c=a.d[0].px||0,d=a.d[1].px||0,f=a.d[2].px||0;return[1,0,0,0,0,1,0,0,0,0,1,0,c,d,f,1];case\"perspective\":return[1,0,0,0,0,1,0,0,0,0,1,a.d[0].px?-1/a.d[0].px:0,0,0,0,1];case\"matrix\":return[a.d[0],a.d[1],0,0,a.d[2],a.d[3],0,0,0,0,1,0,a.d[4],a.d[5],0,1];case\"matrix3d\":return a.d}}function g(a){return 0===a.length?[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]:a.map(f).reduce(d)}function h(a){return[i(g(a))]}var i=function(){function a(a){return a[0][0]*a[1][1]*a[2][2]+a[1][0]*a[2][1]*a[0][2]+a[2][0]*a[0][1]*a[1][2]-a[0][2]*a[1][1]*a[2][0]-a[1][2]*a[2][1]*a[0][0]-a[2][2]*a[0][1]*a[1][0]}function b(b){for(var c=1/a(b),d=b[0][0],e=b[0][1],f=b[0][2],g=b[1][0],h=b[1][1],i=b[1][2],j=b[2][0],k=b[2][1],l=b[2][2],m=[[(h*l-i*k)*c,(f*k-e*l)*c,(e*i-f*h)*c,0],[(i*j-g*l)*c,(d*l-f*j)*c,(f*g-d*i)*c,0],[(g*k-h*j)*c,(j*e-d*k)*c,(d*h-e*g)*c,0]],n=[],o=0;o<3;o++){for(var p=0,q=0;q<3;q++)p+=b[3][q]*m[q][o];n.push(p)}return n.push(1),m.push(n),m}function d(a){return[[a[0][0],a[1][0],a[2][0],a[3][0]],[a[0][1],a[1][1],a[2][1],a[3][1]],[a[0][2],a[1][2],a[2][2],a[3][2]],[a[0][3],a[1][3],a[2][3],a[3][3]]]}function e(a,b){for(var c=[],d=0;d<4;d++){for(var e=0,f=0;f<4;f++)e+=a[f]*b[f][d];c.push(e)}return c}function f(a){var b=g(a);return[a[0]/b,a[1]/b,a[2]/b]}function g(a){return Math.sqrt(a[0]*a[0]+a[1]*a[1]+a[2]*a[2])}function h(a,b,c,d){return[c*a[0]+d*b[0],c*a[1]+d*b[1],c*a[2]+d*b[2]]}function i(a,b){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]]}function j(j){var k=[j.slice(0,4),j.slice(4,8),j.slice(8,12),j.slice(12,16)];if(1!==k[3][3])return null;for(var l=[],m=0;m<4;m++)l.push(k[m].slice());for(var m=0;m<3;m++)l[m][3]=0;if(0===a(l))return null;var n,o=[];k[0][3]||k[1][3]||k[2][3]?(o.push(k[0][3]),o.push(k[1][3]),o.push(k[2][3]),o.push(k[3][3]),n=e(o,d(b(l)))):n=[0,0,0,1];var p=k[3].slice(0,3),q=[];q.push(k[0].slice(0,3));var r=[];r.push(g(q[0])),q[0]=f(q[0]);var s=[];q.push(k[1].slice(0,3)),s.push(c(q[0],q[1])),q[1]=h(q[1],q[0],1,-s[0]),r.push(g(q[1])),q[1]=f(q[1]),s[0]/=r[1],q.push(k[2].slice(0,3)),s.push(c(q[0],q[2])),q[2]=h(q[2],q[0],1,-s[1]),s.push(c(q[1],q[2])),q[2]=h(q[2],q[1],1,-s[2]),r.push(g(q[2])),q[2]=f(q[2]),s[1]/=r[2],s[2]/=r[2];var t=i(q[1],q[2]);if(c(q[0],t)<0)for(var m=0;m<3;m++)r[m]*=-1,q[m][0]*=-1,q[m][1]*=-1,q[m][2]*=-1;var u,v,w=q[0][0]+q[1][1]+q[2][2]+1;return w>1e-4?(u=.5/Math.sqrt(w),v=[(q[2][1]-q[1][2])*u,(q[0][2]-q[2][0])*u,(q[1][0]-q[0][1])*u,.25/u]):q[0][0]>q[1][1]&&q[0][0]>q[2][2]?(u=2*Math.sqrt(1+q[0][0]-q[1][1]-q[2][2]),v=[.25*u,(q[0][1]+q[1][0])/u,(q[0][2]+q[2][0])/u,(q[2][1]-q[1][2])/u]):q[1][1]>q[2][2]?(u=2*Math.sqrt(1+q[1][1]-q[0][0]-q[2][2]),v=[(q[0][1]+q[1][0])/u,.25*u,(q[1][2]+q[2][1])/u,(q[0][2]-q[2][0])/u]):(u=2*Math.sqrt(1+q[2][2]-q[0][0]-q[1][1]),v=[(q[0][2]+q[2][0])/u,(q[1][2]+q[2][1])/u,.25*u,(q[1][0]-q[0][1])/u]),[p,r,s,v,n]}return j}();a.dot=c,a.makeMatrixDecomposition=h,a.transformListToMatrix=g}(d),function(a){function b(a,b){var c=a.exec(b);if(c)return c=a.ignoreCase?c[0].toLowerCase():c[0],[c,b.substr(c.length)]}function c(a,b){b=b.replace(/^\\s*/,\"\");var c=a(b);if(c)return[c[0],c[1].replace(/^\\s*/,\"\")]}function d(a,d,e){a=c.bind(null,a);for(var f=[];;){var g=a(e);if(!g)return[f,e];if(f.push(g[0]),e=g[1],!(g=b(d,e))||\"\"==g[1])return[f,e];e=g[1]}}function e(a,b){for(var c=0,d=0;d<b.length&&(!/\\s|,/.test(b[d])||0!=c);d++)if(\"(\"==b[d])c++;else if(\")\"==b[d]&&(c--,0==c&&d++,c<=0))break;var e=a(b.substr(0,d));return void 0==e?void 0:[e,b.substr(d)]}function f(a,b){for(var c=a,d=b;c&&d;)c>d?c%=d:d%=c;return c=a*b/(c+d)}function g(a){return function(b){var c=a(b);return c&&(c[0]=void 0),c}}function h(a,b){return function(c){return a(c)||[b,c]}}function i(b,c){for(var d=[],e=0;e<b.length;e++){var f=a.consumeTrimmed(b[e],c);if(!f||\"\"==f[0])return;void 0!==f[0]&&d.push(f[0]),c=f[1]}if(\"\"==c)return d}function j(a,b,c,d,e){for(var g=[],h=[],i=[],j=f(d.length,e.length),k=0;k<j;k++){var l=b(d[k%d.length],e[k%e.length]);if(!l)return;g.push(l[0]),h.push(l[1]),i.push(l[2])}return[g,h,function(b){var d=b.map(function(a,b){return i[b](a)}).join(c);return a?a(d):d}]}function k(a,b,c){for(var d=[],e=[],f=[],g=0,h=0;h<c.length;h++)if(\"function\"==typeof c[h]){var i=c[h](a[g],b[g++]);d.push(i[0]),e.push(i[1]),f.push(i[2])}else!function(a){d.push(!1),e.push(!1),f.push(function(){return c[a]})}(h);return[d,e,function(a){for(var b=\"\",c=0;c<a.length;c++)b+=f[c](a[c]);return b}]}a.consumeToken=b,a.consumeTrimmed=c,a.consumeRepeated=d,a.consumeParenthesised=e,a.ignore=g,a.optional=h,a.consumeList=i,a.mergeNestedRepeated=j.bind(null,null),a.mergeWrappedNestedRepeated=j,a.mergeList=k}(d),function(a){function b(b){function c(b){var c=a.consumeToken(/^inset/i,b);if(c)return d.inset=!0,c;var c=a.consumeLengthOrPercent(b);if(c)return d.lengths.push(c[0]),c;var c=a.consumeColor(b);return c?(d.color=c[0],c):void 0}var d={inset:!1,lengths:[],color:null},e=a.consumeRepeated(c,/^/,b);if(e&&e[0].length)return[d,e[1]]}function c(c){var d=a.consumeRepeated(b,/^,/,c);if(d&&\"\"==d[1])return d[0]}function d(b,c){for(;b.lengths.length<Math.max(b.lengths.length,c.lengths.length);)b.lengths.push({px:0});for(;c.lengths.length<Math.max(b.lengths.length,c.lengths.length);)c.lengths.push({px:0});if(b.inset==c.inset&&!!b.color==!!c.color){for(var d,e=[],f=[[],0],g=[[],0],h=0;h<b.lengths.length;h++){var i=a.mergeDimensions(b.lengths[h],c.lengths[h],2==h);f[0].push(i[0]),g[0].push(i[1]),e.push(i[2])}if(b.color&&c.color){var j=a.mergeColors(b.color,c.color);f[1]=j[0],g[1]=j[1],d=j[2]}return[f,g,function(a){for(var c=b.inset?\"inset \":\" \",f=0;f<e.length;f++)c+=e[f](a[0][f])+\" \";return d&&(c+=d(a[1])),c}]}}function e(b,c,d,e){function f(a){return{inset:a,color:[0,0,0,0],lengths:[{px:0},{px:0},{px:0},{px:0}]}}for(var g=[],h=[],i=0;i<d.length||i<e.length;i++){var j=d[i]||f(e[i].inset),k=e[i]||f(d[i].inset);g.push(j),h.push(k)}return a.mergeNestedRepeated(b,c,g,h)}var f=e.bind(null,d,\", \");a.addPropertiesHandler(c,f,[\"box-shadow\",\"text-shadow\"])}(d),function(a,b){function c(a){return a.toFixed(3).replace(/0+$/,\"\").replace(/\\.$/,\"\")}function d(a,b,c){return Math.min(b,Math.max(a,c))}function e(a){if(/^\\s*[-+]?(\\d*\\.)?\\d+\\s*$/.test(a))return Number(a)}function f(a,b){return[a,b,c]}function g(a,b){if(0!=a)return i(0,1/0)(a,b)}function h(a,b){return[a,b,function(a){return Math.round(d(1,1/0,a))}]}function i(a,b){return function(e,f){return[e,f,function(e){return c(d(a,b,e))}]}}function j(a){var b=a.trim().split(/\\s*[\\s,]\\s*/);if(0!==b.length){for(var c=[],d=0;d<b.length;d++){var f=e(b[d]);if(void 0===f)return;c.push(f)}return c}}function k(a,b){if(a.length==b.length)return[a,b,function(a){return a.map(c).join(\" \")}]}function l(a,b){return[a,b,Math.round]}a.clamp=d,a.addPropertiesHandler(j,k,[\"stroke-dasharray\"]),a.addPropertiesHandler(e,i(0,1/0),[\"border-image-width\",\"line-height\"]),a.addPropertiesHandler(e,i(0,1),[\"opacity\",\"shape-image-threshold\"]),a.addPropertiesHandler(e,g,[\"flex-grow\",\"flex-shrink\"]),a.addPropertiesHandler(e,h,[\"orphans\",\"widows\"]),a.addPropertiesHandler(e,l,[\"z-index\"]),a.parseNumber=e,a.parseNumberList=j,a.mergeNumbers=f,a.numberToString=c}(d),function(a,b){function c(a,b){if(\"visible\"==a||\"visible\"==b)return[0,1,function(c){return c<=0?a:c>=1?b:\"visible\"}]}a.addPropertiesHandler(String,c,[\"visibility\"])}(d),function(a,b){function c(a){a=a.trim(),f.fillStyle=\"#000\",f.fillStyle=a;var b=f.fillStyle;if(f.fillStyle=\"#fff\",f.fillStyle=a,b==f.fillStyle){f.fillRect(0,0,1,1);var c=f.getImageData(0,0,1,1).data;f.clearRect(0,0,1,1);var d=c[3]/255;return[c[0]*d,c[1]*d,c[2]*d,d]}}function d(b,c){return[b,c,function(b){function c(a){return Math.max(0,Math.min(255,a))}if(b[3])for(var d=0;d<3;d++)b[d]=Math.round(c(b[d]/b[3]));return b[3]=a.numberToString(a.clamp(0,1,b[3])),\"rgba(\"+b.join(\",\")+\")\"}]}var e=document.createElementNS(\"http://www.w3.org/1999/xhtml\",\"canvas\");e.width=e.height=1;var f=e.getContext(\"2d\");a.addPropertiesHandler(c,d,[\"background-color\",\"border-bottom-color\",\"border-left-color\",\"border-right-color\",\"border-top-color\",\"color\",\"fill\",\"flood-color\",\"lighting-color\",\"outline-color\",\"stop-color\",\"stroke\",\"text-decoration-color\"]),a.consumeColor=a.consumeParenthesised.bind(null,c),a.mergeColors=d}(d),function(a,b){function c(a){function b(){var b=h.exec(a);g=b?b[0]:void 0}function c(){var a=Number(g);return b(),a}function d(){if(\"(\"!==g)return c();b();var a=f();return\")\"!==g?NaN:(b(),a)}function e(){for(var a=d();\"*\"===g||\"/\"===g;){var c=g;b();var e=d();\"*\"===c?a*=e:a/=e}return a}function f(){for(var a=e();\"+\"===g||\"-\"===g;){var c=g;b();var d=e();\"+\"===c?a+=d:a-=d}return a}var g,h=/([\\+\\-\\w\\.]+|[\\(\\)\\*\\/])/g;return b(),f()}function d(a,b){if(\"0\"==(b=b.trim().toLowerCase())&&\"px\".search(a)>=0)return{px:0};if(/^[^(]*$|^calc/.test(b)){b=b.replace(/calc\\(/g,\"(\");var d={};b=b.replace(a,function(a){return d[a]=null,\"U\"+a});for(var e=\"U(\"+a.source+\")\",f=b.replace(/[-+]?(\\d*\\.)?\\d+([Ee][-+]?\\d+)?/g,\"N\").replace(new RegExp(\"N\"+e,\"g\"),\"D\").replace(/\\s[+-]\\s/g,\"O\").replace(/\\s/g,\"\"),g=[/N\\*(D)/g,/(N|D)[*\\/]N/g,/(N|D)O\\1/g,/\\((N|D)\\)/g],h=0;h<g.length;)g[h].test(f)?(f=f.replace(g[h],\"$1\"),h=0):h++;if(\"D\"==f){for(var i in d){var j=c(b.replace(new RegExp(\"U\"+i,\"g\"),\"\").replace(new RegExp(e,\"g\"),\"*0\"));if(!isFinite(j))return;d[i]=j}return d}}}function e(a,b){return f(a,b,!0)}function f(b,c,d){var e,f=[];for(e in b)f.push(e);for(e in c)f.indexOf(e)<0&&f.push(e);return b=f.map(function(a){return b[a]||0}),c=f.map(function(a){return c[a]||0}),[b,c,function(b){var c=b.map(function(c,e){return 1==b.length&&d&&(c=Math.max(c,0)),a.numberToString(c)+f[e]}).join(\" + \");return b.length>1?\"calc(\"+c+\")\":c}]}var g=\"px|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc\",h=d.bind(null,new RegExp(g,\"g\")),i=d.bind(null,new RegExp(g+\"|%\",\"g\")),j=d.bind(null,/deg|rad|grad|turn/g);a.parseLength=h,a.parseLengthOrPercent=i,a.consumeLengthOrPercent=a.consumeParenthesised.bind(null,i),a.parseAngle=j,a.mergeDimensions=f;var k=a.consumeParenthesised.bind(null,h),l=a.consumeRepeated.bind(void 0,k,/^/),m=a.consumeRepeated.bind(void 0,l,/^,/);a.consumeSizePairList=m;var n=function(a){var b=m(a);if(b&&\"\"==b[1])return b[0]},o=a.mergeNestedRepeated.bind(void 0,e,\" \"),p=a.mergeNestedRepeated.bind(void 0,o,\",\");a.mergeNonNegativeSizePair=o,a.addPropertiesHandler(n,p,[\"background-size\"]),a.addPropertiesHandler(i,e,[\"border-bottom-width\",\"border-image-width\",\"border-left-width\",\"border-right-width\",\"border-top-width\",\"flex-basis\",\"font-size\",\"height\",\"line-height\",\"max-height\",\"max-width\",\"outline-width\",\"width\"]),a.addPropertiesHandler(i,f,[\"border-bottom-left-radius\",\"border-bottom-right-radius\",\"border-top-left-radius\",\"border-top-right-radius\",\"bottom\",\"left\",\"letter-spacing\",\"margin-bottom\",\"margin-left\",\"margin-right\",\"margin-top\",\"min-height\",\"min-width\",\"outline-offset\",\"padding-bottom\",\"padding-left\",\"padding-right\",\"padding-top\",\"perspective\",\"right\",\"shape-margin\",\"stroke-dashoffset\",\"text-indent\",\"top\",\"vertical-align\",\"word-spacing\"])}(d),function(a,b){function c(b){return a.consumeLengthOrPercent(b)||a.consumeToken(/^auto/,b)}function d(b){var d=a.consumeList([a.ignore(a.consumeToken.bind(null,/^rect/)),a.ignore(a.consumeToken.bind(null,/^\\(/)),a.consumeRepeated.bind(null,c,/^,/),a.ignore(a.consumeToken.bind(null,/^\\)/))],b);if(d&&4==d[0].length)return d[0]}function e(b,c){return\"auto\"==b||\"auto\"==c?[!0,!1,function(d){var e=d?b:c;if(\"auto\"==e)return\"auto\";var f=a.mergeDimensions(e,e);return f[2](f[0])}]:a.mergeDimensions(b,c)}function f(a){return\"rect(\"+a+\")\"}var g=a.mergeWrappedNestedRepeated.bind(null,f,e,\", \");a.parseBox=d,a.mergeBoxes=g,a.addPropertiesHandler(d,g,[\"clip\"])}(d),function(a,b){function c(a){return function(b){var c=0;return a.map(function(a){return a===k?b[c++]:a})}}function d(a){return a}function e(b){if(\"none\"==(b=b.toLowerCase().trim()))return[];for(var c,d=/\\s*(\\w+)\\(([^)]*)\\)/g,e=[],f=0;c=d.exec(b);){if(c.index!=f)return;f=c.index+c[0].length;var g=c[1],h=n[g];if(!h)return;var i=c[2].split(\",\"),j=h[0];if(j.length<i.length)return;for(var k=[],o=0;o<j.length;o++){var p,q=i[o],r=j[o];if(void 0===(p=q?{A:function(b){return\"0\"==b.trim()?m:a.parseAngle(b)},N:a.parseNumber,T:a.parseLengthOrPercent,L:a.parseLength}[r.toUpperCase()](q):{a:m,n:k[0],t:l}[r]))return;k.push(p)}if(e.push({t:g,d:k}),d.lastIndex==b.length)return e}}function f(a){return a.toFixed(6).replace(\".000000\",\"\")}function g(b,c){if(b.decompositionPair!==c){b.decompositionPair=c;var d=a.makeMatrixDecomposition(b)}if(c.decompositionPair!==b){c.decompositionPair=b;var e=a.makeMatrixDecomposition(c)}return null==d[0]||null==e[0]?[[!1],[!0],function(a){return a?c[0].d:b[0].d}]:(d[0].push(0),e[0].push(1),[d,e,function(b){var c=a.quat(d[0][3],e[0][3],b[5]);return a.composeMatrix(b[0],b[1],b[2],c,b[4]).map(f).join(\",\")}])}function h(a){return a.replace(/[xy]/,\"\")}function i(a){return a.replace(/(x|y|z|3d)?$/,\"3d\")}function j(b,c){var d=a.makeMatrixDecomposition&&!0,e=!1;if(!b.length||!c.length){b.length||(e=!0,b=c,c=[]);for(var f=0;f<b.length;f++){var j=b[f].t,k=b[f].d,l=\"scale\"==j.substr(0,5)?1:0;c.push({t:j,d:k.map(function(a){if(\"number\"==typeof a)return l;var b={};for(var c in a)b[c]=l;return b})})}}var m=function(a,b){return\"perspective\"==a&&\"perspective\"==b||(\"matrix\"==a||\"matrix3d\"==a)&&(\"matrix\"==b||\"matrix3d\"==b)},o=[],p=[],q=[];if(b.length!=c.length){if(!d)return;var r=g(b,c);o=[r[0]],p=[r[1]],q=[[\"matrix\",[r[2]]]]}else for(var f=0;f<b.length;f++){var j,s=b[f].t,t=c[f].t,u=b[f].d,v=c[f].d,w=n[s],x=n[t];if(m(s,t)){if(!d)return;var r=g([b[f]],[c[f]]);o.push(r[0]),p.push(r[1]),q.push([\"matrix\",[r[2]]])}else{if(s==t)j=s;else if(w[2]&&x[2]&&h(s)==h(t))j=h(s),u=w[2](u),v=x[2](v);else{if(!w[1]||!x[1]||i(s)!=i(t)){if(!d)return;var r=g(b,c);o=[r[0]],p=[r[1]],q=[[\"matrix\",[r[2]]]];break}j=i(s),u=w[1](u),v=x[1](v)}for(var y=[],z=[],A=[],B=0;B<u.length;B++){var C=\"number\"==typeof u[B]?a.mergeNumbers:a.mergeDimensions,r=C(u[B],v[B]);y[B]=r[0],z[B]=r[1],A.push(r[2])}o.push(y),p.push(z),q.push([j,A])}}if(e){var D=o;o=p,p=D}return[o,p,function(a){return a.map(function(a,b){var c=a.map(function(a,c){return q[b][1][c](a)}).join(\",\");return\"matrix\"==q[b][0]&&16==c.split(\",\").length&&(q[b][0]=\"matrix3d\"),q[b][0]+\"(\"+c+\")\"}).join(\" \")}]}var k=null,l={px:0},m={deg:0},n={matrix:[\"NNNNNN\",[k,k,0,0,k,k,0,0,0,0,1,0,k,k,0,1],d],matrix3d:[\"NNNNNNNNNNNNNNNN\",d],rotate:[\"A\"],rotatex:[\"A\"],rotatey:[\"A\"],rotatez:[\"A\"],rotate3d:[\"NNNA\"],perspective:[\"L\"],scale:[\"Nn\",c([k,k,1]),d],scalex:[\"N\",c([k,1,1]),c([k,1])],scaley:[\"N\",c([1,k,1]),c([1,k])],scalez:[\"N\",c([1,1,k])],scale3d:[\"NNN\",d],skew:[\"Aa\",null,d],skewx:[\"A\",null,c([k,m])],skewy:[\"A\",null,c([m,k])],translate:[\"Tt\",c([k,k,l]),d],translatex:[\"T\",c([k,l,l]),c([k,l])],translatey:[\"T\",c([l,k,l]),c([l,k])],translatez:[\"L\",c([l,l,k])],translate3d:[\"TTL\",d]};a.addPropertiesHandler(e,j,[\"transform\"]),a.transformToSvgMatrix=function(b){var c=a.transformListToMatrix(e(b));return\"matrix(\"+f(c[0])+\" \"+f(c[1])+\" \"+f(c[4])+\" \"+f(c[5])+\" \"+f(c[12])+\" \"+f(c[13])+\")\"}}(d),function(a){function b(a){var b=Number(a);if(!(isNaN(b)||b<100||b>900||b%100!=0))return b}function c(b){return b=100*Math.round(b/100),b=a.clamp(100,900,b),400===b?\"normal\":700===b?\"bold\":String(b)}function d(a,b){return[a,b,c]}a.addPropertiesHandler(b,d,[\"font-weight\"])}(d),function(a){function b(a){var b={};for(var c in a)b[c]=-a[c];return b}function c(b){return a.consumeToken(/^(left|center|right|top|bottom)\\b/i,b)||a.consumeLengthOrPercent(b)}function d(b,d){var e=a.consumeRepeated(c,/^/,d);if(e&&\"\"==e[1]){var f=e[0];if(f[0]=f[0]||\"center\",f[1]=f[1]||\"center\",3==b&&(f[2]=f[2]||{px:0}),f.length==b){if(/top|bottom/.test(f[0])||/left|right/.test(f[1])){var h=f[0];f[0]=f[1],f[1]=h}if(/left|right|center|Object/.test(f[0])&&/top|bottom|center|Object/.test(f[1]))return f.map(function(a){return\"object\"==typeof a?a:g[a]})}}}function e(d){var e=a.consumeRepeated(c,/^/,d);if(e){for(var f=e[0],h=[{\"%\":50},{\"%\":50}],i=0,j=!1,k=0;k<f.length;k++){var l=f[k];\"string\"==typeof l?(j=/bottom|right/.test(l),i={left:0,right:0,center:i,top:1,bottom:1}[l],h[i]=g[l],\"center\"==l&&i++):(j&&(l=b(l),l[\"%\"]=(l[\"%\"]||0)+100),h[i]=l,i++,j=!1)}return[h,e[1]]}}function f(b){var c=a.consumeRepeated(e,/^,/,b);if(c&&\"\"==c[1])return c[0]}var g={left:{\"%\":0},center:{\"%\":50},right:{\"%\":100},top:{\"%\":0},bottom:{\"%\":100}},h=a.mergeNestedRepeated.bind(null,a.mergeDimensions,\" \");a.addPropertiesHandler(d.bind(null,3),h,[\"transform-origin\"]),a.addPropertiesHandler(d.bind(null,2),h,[\"perspective-origin\"]),a.consumePosition=e,a.mergeOffsetList=h;var i=a.mergeNestedRepeated.bind(null,h,\", \");a.addPropertiesHandler(f,i,[\"background-position\",\"object-position\"])}(d),function(a){function b(b){var c=a.consumeToken(/^circle/,b);if(c&&c[0])return[\"circle\"].concat(a.consumeList([a.ignore(a.consumeToken.bind(void 0,/^\\(/)),d,a.ignore(a.consumeToken.bind(void 0,/^at/)),a.consumePosition,a.ignore(a.consumeToken.bind(void 0,/^\\)/))],c[1]));var f=a.consumeToken(/^ellipse/,b);if(f&&f[0])return[\"ellipse\"].concat(a.consumeList([a.ignore(a.consumeToken.bind(void 0,/^\\(/)),e,a.ignore(a.consumeToken.bind(void 0,/^at/)),a.consumePosition,a.ignore(a.consumeToken.bind(void 0,/^\\)/))],f[1]));var g=a.consumeToken(/^polygon/,b);return g&&g[0]?[\"polygon\"].concat(a.consumeList([a.ignore(a.consumeToken.bind(void 0,/^\\(/)),a.optional(a.consumeToken.bind(void 0,/^nonzero\\s*,|^evenodd\\s*,/),\"nonzero,\"),a.consumeSizePairList,a.ignore(a.consumeToken.bind(void 0,/^\\)/))],g[1])):void 0}function c(b,c){if(b[0]===c[0])return\"circle\"==b[0]?a.mergeList(b.slice(1),c.slice(1),[\"circle(\",a.mergeDimensions,\" at \",a.mergeOffsetList,\")\"]):\"ellipse\"==b[0]?a.mergeList(b.slice(1),c.slice(1),[\"ellipse(\",a.mergeNonNegativeSizePair,\" at \",a.mergeOffsetList,\")\"]):\"polygon\"==b[0]&&b[1]==c[1]?a.mergeList(b.slice(2),c.slice(2),[\"polygon(\",b[1],g,\")\"]):void 0}var d=a.consumeParenthesised.bind(null,a.parseLengthOrPercent),e=a.consumeRepeated.bind(void 0,d,/^/),f=a.mergeNestedRepeated.bind(void 0,a.mergeDimensions,\" \"),g=a.mergeNestedRepeated.bind(void 0,f,\",\");a.addPropertiesHandler(b,c,[\"shape-outside\"])}(d),function(a,b){function c(a,b){b.concat([a]).forEach(function(b){b in document.documentElement.style&&(d[a]=b),e[b]=a})}var d={},e={};c(\"transform\",[\"webkitTransform\",\"msTransform\"]),c(\"transformOrigin\",[\"webkitTransformOrigin\"]),c(\"perspective\",[\"webkitPerspective\"]),c(\"perspectiveOrigin\",[\"webkitPerspectiveOrigin\"]),a.propertyName=function(a){return d[a]||a},a.unprefixedPropertyName=function(a){return e[a]||a}}(d)}(),function(){if(void 0===document.createElement(\"div\").animate([]).oncancel){var a;if(window.performance&&performance.now)var a=function(){return performance.now()};else var a=function(){return Date.now()};var b=function(a,b,c){this.target=a,this.currentTime=b,this.timelineTime=c,this.type=\"cancel\",this.bubbles=!1,this.cancelable=!1,this.currentTarget=a,this.defaultPrevented=!1,this.eventPhase=Event.AT_TARGET,this.timeStamp=Date.now()},c=window.Element.prototype.animate;window.Element.prototype.animate=function(d,e){var f=c.call(this,d,e);f._cancelHandlers=[],f.oncancel=null;var g=f.cancel;f.cancel=function(){g.call(this);var c=new b(this,null,a()),d=this._cancelHandlers.concat(this.oncancel?[this.oncancel]:[]);setTimeout(function(){d.forEach(function(a){a.call(c.target,c)})},0)};var h=f.addEventListener;f.addEventListener=function(a,b){\"function\"==typeof b&&\"cancel\"==a?this._cancelHandlers.push(b):h.call(this,a,b)};var i=f.removeEventListener;return f.removeEventListener=function(a,b){if(\"cancel\"==a){var c=this._cancelHandlers.indexOf(b);c>=0&&this._cancelHandlers.splice(c,1)}else i.call(this,a,b)},f}}}(),function(a){var b=document.documentElement,c=null,d=!1;try{var e=getComputedStyle(b).getPropertyValue(\"opacity\"),f=\"0\"==e?\"1\":\"0\";c=b.animate({opacity:[f,f]},{duration:1}),c.currentTime=0,d=getComputedStyle(b).getPropertyValue(\"opacity\")==f}catch(a){}finally{c&&c.cancel()}if(!d){var g=window.Element.prototype.animate;window.Element.prototype.animate=function(b,c){return window.Symbol&&Symbol.iterator&&Array.prototype.from&&b[Symbol.iterator]&&(b=Array.from(b)),Array.isArray(b)||null===b||(b=a.convertToArrayForm(b)),g.call(this,b,c)}}}(c),b.true=a}({},function(){return this}());\n//# sourceMappingURL=web-animations.min.js.map","// Returns a wrapper function that returns a wrapped callback\n// The wrapper function should do some stuff, and return a\n// presumably different callback function.\n// This makes sure that own properties are retained, so that\n// decorations and such are not lost along the way.\nmodule.exports = wrappy\nfunction wrappy (fn, cb) {\n  if (fn && cb) return wrappy(fn)(cb)\n\n  if (typeof fn !== 'function')\n    throw new TypeError('need wrapper function')\n\n  Object.keys(fn).forEach(function (k) {\n    wrapper[k] = fn[k]\n  })\n\n  return wrapper\n\n  function wrapper() {\n    var args = new Array(arguments.length)\n    for (var i = 0; i < args.length; i++) {\n      args[i] = arguments[i]\n    }\n    var ret = fn.apply(this, args)\n    var cb = args[args.length-1]\n    if (typeof ret === 'function' && ret !== cb) {\n      Object.keys(cb).forEach(function (k) {\n        ret[k] = cb[k]\n      })\n    }\n    return ret\n  }\n}\n","var nativeIsArray = Array.isArray\nvar toString = Object.prototype.toString\n\nmodule.exports = nativeIsArray || isArray\n\nfunction isArray(obj) {\n    return toString.call(obj) === \"[object Array]\"\n}\n","var toString = Object.prototype.toString\n\nmodule.exports = isString\n\nfunction isString(obj) {\n    return toString.call(obj) === \"[object String]\"\n}\n","module.exports = extend\n\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}\n","export default applyState;\nexport const type = '@@APPLY_STATE';\n\nfunction applyState(payload) {\n\treturn {\n\t\ttype,\n\t\tpayload\n\t};\n}\n","import path from 'path';\nimport urlQuery from '../utils/url-query';\nimport {patchLocation} from './';\n\nexport default changeConcern;\nexport const type = 'CHANGE_CONCERN';\n\nfunction changeConcern(concern) {\n\treturn (dispatch, getState) => {\n\t\tconst state = getState();\n\t\tconst location = state.routing.locationBeforeTransitions;\n\t\tconst parsed = urlQuery.parse(location.query.source);\n\t\tconst previous = parsed.pathname;\n\t\tconst ext = path.extname(previous);\n\n\t\tconst hasDemo = state.pattern.files.some(file => {\n\t\t\treturn file.concern === 'demo' && file.type === ext.slice(1);\n\t\t});\n\n\t\tconst type = concern === 'index' && hasDemo ?\n\t\t\t'source' :\n\t\t\tparsed.query.type;\n\n\t\tconst source = urlQuery.format({\n\t\t\tpathname: `${path.dirname(previous)}/${concern}${ext}`,\n\t\t\tquery: {\n\t\t\t\t...parsed.query,\n\t\t\t\ttype\n\t\t\t}\n\t\t});\n\n\t\tdispatch(patchLocation({\n\t\t\tquery: {\n\t\t\t\tsource\n\t\t\t}\n\t\t}));\n\t};\n}\n\nchangeConcern.type = type;\n","import {patchLocation} from './';\nimport urlQuery from '../utils/url-query';\n\nexport default changeEnvironment;\nexport const type = 'CHANGE_ENVIRONMENT';\n\nfunction changeEnvironment(environment) {\n\treturn (dispatch, getState) => {\n\t\tconst location = getState().routing.locationBeforeTransitions;\n\t\tconst parsed = urlQuery.parse(location.pathname);\n\t\tconst pathname = urlQuery.format({\n\t\t\t...parsed,\n\t\t\tquery: {\n\t\t\t\tenvironment\n\t\t\t}\n\t\t});\n\n\t\tdispatch(patchLocation({pathname}));\n\t};\n}\n\nchangeEnvironment.type = type;\n","import assert from 'assert';\nimport {includes, merge} from 'lodash';\nimport urlQuery from '../utils/url-query';\nimport {patchLocation} from './';\n\nexport default changeType;\nexport const type = 'CHANGE_TYPE';\n\nfunction changeType(input) {\n\tassert.equal(typeof input, 'string', 'input for changeType action must be of type string');\n\n\treturn (dispatch, getState) => {\n\t\tconst location = getState().routing.locationBeforeTransitions;\n\t\tconst parsed = urlQuery.parse(location.query.source || '');\n\t\tconst type = includes(['source', 'transformed'], input) ? input : 'source';\n\t\tconst query = {type};\n\t\tconst source = urlQuery.format(merge({}, parsed, {query}));\n\t\tdispatch(patchLocation({query: {source}}));\n\t};\n}\n\nchangeType.type = type;\n","import {patchLocation, dismissAllMessages} from './';\n\nexport default closeAllTheThings;\nexport const type = 'CLOSE_ALL_THE_THINGS';\n\nfunction closeAllTheThings() {\n\treturn dispatch => {\n\t\tdispatch(dismissAllMessages());\n\t\tdispatch(patchLocation({\n\t\t\tquery: {\n\t\t\t\t'issue': null,\n\t\t\t\t'lightbox': null,\n\t\t\t\t'menu-enabled': null,\n\t\t\t\t'source': null,\n\t\t\t\t'source-expanded': null\n\t\t\t}\n\t\t}));\n\t};\n}\n\ncloseAllTheThings.type = type;\n","import {createAction} from 'redux-actions';\nexport default createAction('DEMO_CONTENT_RESIZE', ({width, height}) => ({width, height}));\n","import {createAction} from 'redux-actions';\nexport default createAction('DISMISS_ALL_MESSAGES');\n","import {createAction} from 'redux-actions';\nexport default createAction('DISMISS_MESSAGE');\n","import assert from 'assert';\nimport {handleActions} from 'redux-actions';\nimport {pick} from 'lodash';\n\nexport default handleDependentActions;\n\nfunction partialReduce(deps) {\n\treturn handlers => {\n\t\treturn Object.entries(handlers)\n\t\t\t.reduce((registry, entry) => {\n\t\t\t\tconst [name, fn] = entry;\n\t\t\t\tregistry[name] = (state, action) => {\n\t\t\t\t\treturn fn(state, action, deps);\n\t\t\t\t};\n\t\t\t\treturn registry;\n\t\t\t}, {});\n\t};\n}\n\nfunction handleDependentActions(actionHandlers, options) {\n\tassert.ok(Array.isArray(options.dependencies), 'options.dependencies must be an array');\n\n\tconst handler = (...args) => {\n\t\tconst [, , dependencies = {}] = args;\n\n\t\tif (Object.keys(dependencies).length > 0) {\n\t\t\tconst missing = options.dependencies.filter(dependency => !(dependency in dependencies));\n\t\t\tassert.ok(\n\t\t\t\tmissing.length === 0,\n\t\t\t\t`dependencies must be present in state. missing: ${missing.join(',')}`\n\t\t\t);\n\t\t}\n\n\t\tconst deps = pick(dependencies, options.dependencies);\n\t\tconst handlers = partialReduce(deps)(actionHandlers);\n\t\tconst reducer = handleActions(handlers, options.defaultValue);\n\t\treturn reducer(...args);\n\t};\n\thandler.dependencies = options.dependencies;\n\treturn handler;\n}\n","export applyState from './apply-state';\nexport changeConcern from './change-concern';\nexport changeEnvironment from './change-environment';\nexport changeType from './change-type';\nexport closeAllTheThings from './close-all-the-things';\nexport demoContentResize from './demo-content-resize';\nexport dismissAllMessages from './dismiss-all-messages';\nexport dismissMessage from './dismiss-message';\n\n/**\n * Pattern fetching related action\n **/\nexport loadPattern from './load-pattern';\nexport loadPatternData from './load-pattern-data';\nexport loadPatternDemo from './load-pattern-demo';\nexport loadPatternFile from './load-pattern-file';\nexport openDocumentation from './open-documentation';\nexport openFullscreen from './open-fullscreen';\nexport patchLocation from './patch-location';\nexport patternDemoError from './pattern-demo-error';\n\nexport resizeDemo from './resize-demo';\nexport scrollDemo from './scroll-demo';\nexport scrollTo from './scroll-to';\nexport search from './search';\nexport themeLoaded from './theme-loaded';\n\n/**\n * Automagic state toggles\n */\nexport toggleConsole from './toggle-console';\nexport toggleExpandMenu from './toggle-expand-menu';\nexport toggleHide from './toggle-hide';\nexport toggleIssue from './toggle-issue';\nexport toggleKeyboardShortcuts from './toggle-keyboard-shortcuts';\nexport toggleOpacity from './toggle-opacity';\nexport toggleRulers from './toggle-rulers';\nexport toggleSearchFocus from './toggle-search-focus';\nexport toggleTheme from './toggle-theme';\n\nexport windowResize from './window-resize';\n","import {merge} from 'lodash';\nimport {createPromiseThunkAction} from './promise-thunk-action';\nimport fetch from '../utils/fetch';\nimport urlQuery from '../utils/url-query';\n\nasync function getError(response, payload) {\n\ttry {\n\t\tconst json = await response.json();\n\t\tconst error = new Error(json.message);\n\t\terror.payload = payload;\n\t\treturn merge(error, json);\n\t} catch (error) {\n\t\terror.message = [\n\t\t\t`Request for ${response.uri} failed with code ${response.status}: ${response.statusText}`,\n\t\t\terror.message\n\t\t].join('\\n');\n\t\terror.payload = payload;\n\t\treturn error;\n\t}\n}\n\nexport default createPromiseThunkAction('LOAD_PATTERN_DATA', async payload => {\n\tconst {id, query, options: {base}} = payload;\n\tconst uri = urlQuery.format({\n\t\tpathname: `${base}api/pattern/${id}.json`, query\n\t});\n\n\tconst response = await fetch(uri);\n\n\tif (response.status >= 400) {\n\t\tthrow await getError(response, payload);\n\t}\n\n\treturn response.json();\n});\n","import {createAction} from 'redux-actions';\nexport default createAction('LOAD_PATTERN_DEMO');\n","import {merge} from 'lodash';\nimport {createPromiseThunkAction} from './promise-thunk-action';\nimport fetch from '../utils/fetch';\n\nasync function getError(response, payload) {\n\ttry {\n\t\tconst json = await response.json();\n\t\tconst error = new Error(json.message);\n\t\terror.payload = payload;\n\t\treturn merge(error, json);\n\t} catch (error) {\n\t\terror.message = [\n\t\t\t`Request for ${response.uri} failed with code ${response.status}: ${response.statusText}`,\n\t\t\terror.message\n\t\t].join('\\n');\n\t\terror.payload = payload;\n\t\treturn error;\n\t}\n}\n\nexport default createPromiseThunkAction('LOAD_PATTERN_FILE', async payload => {\n\tconst {id, base} = payload;\n\tconst uri = `${base}api/file/${id}`;\n\tconst response = await fetch(uri);\n\n\tif (response.status >= 400) {\n\t\tconst error = await getError(response, payload);\n\t\tthrow error;\n\t}\n\n\tconst source = await response.text();\n\n\treturn {\n\t\tid,\n\t\tsource\n\t};\n});\n","import path from 'path';\nimport {createAction} from 'redux-actions';\n\nimport {loadPatternData, loadPatternFile, loadPatternDemo} from './';\nimport urlQuery from '../utils/url-query';\n\nexport default loadPattern;\n\nfunction loadPattern() {\n\treturn async (dispatch, getState) => {\n\t\tconst state = getState();\n\n\t\tif (state.id === '..') {\n\t\t\treturn;\n\t\t}\n\n\t\tconst location = state.routing.locationBeforeTransitions;\n\t\tconst {environment = 'index'} = location.query;\n\t\tconst type = path.basename(state.sourceId) === 'index.md' ?\n\t\t\t'source' : state.sourceType;\n\n\t\tconst dataPayload = {\n\t\t\tid: state.id,\n\t\t\tquery: {\n\t\t\t\tenvironment\n\t\t\t},\n\t\t\toptions: {\n\t\t\t\tbase: state.base\n\t\t\t}\n\t\t};\n\n\t\tconst actions = [\n\t\t\tloadPatternData(dataPayload),\n\t\t\tloadPatternDemo(true)\n\t\t];\n\n\t\tconst jobs = actions.map(dispatch);\n\t\tconst id = urlQuery.parse(state.sourceId || '').pathname;\n\n\t\tif (id && id !== 'relations') {\n\t\t\tjobs.push(dispatch(loadPatternFile({\n\t\t\t\tbase: state.base,\n\t\t\t\tenvironment,\n\t\t\t\tid: state.sourceId,\n\t\t\t\ttype\n\t\t\t})));\n\t\t}\n\n\t\tawait least(1000, Promise.all(jobs));\n\t};\n}\n\nfunction wait(timeout, value) {\n\treturn new Promise(resolve => setTimeout(() => resolve(value), timeout));\n}\n\nfunction least(timeout, thenable) {\n\tconst then = new Date();\n\n\treturn Promise.resolve(thenable)\n\t\t.then(result => {\n\t\t\tconst delta = 1000 - (new Date() - then) % 1000;\n\t\t\treturn wait(delta, result);\n\t\t});\n}\n","import {createAction} from 'redux-actions';\nexport default createAction('MARK_BLOCK');\n","import {patchLocation} from './';\n\nexport default openDocumentation;\nexport const type = 'OPEN_DOCUMENTATION';\n\nfunction openDocumentation() {\n\treturn (dispatch, getState) => {\n\t\tconst state = getState();\n\t\tconst pathname = state.base;\n\t\tdispatch(patchLocation({pathname}));\n\t};\n}\n\nopenDocumentation.type = type;\n","import urlQuery from '../utils/url-query';\n\nexport default openFullscreen;\nexport const type = 'OPEN_FULLSCREEN';\n\nfunction openFullscreen() {\n\treturn (dispatch, getState) => {\n\t\tconst {base, id, environment} = getState();\n\t\tif (id === '..' || !window.open) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst href = urlQuery.format({\n\t\t\tpathname: `${base}demo/${id}/index.html`,\n\t\t\tquery: {environment}\n\t\t});\n\n\t\twindow.open(href, '_blank');\n\t};\n}\n\nopenFullscreen.type = type;\n","import {merge} from 'lodash';\nimport {push} from 'react-router-redux';\n\nexport default patchLocation;\nexport const type = 'PATCH_LOCATION';\n\nfunction patchLocation(payload) {\n\treturn (dispatch, getState) => {\n\t\tconst state = getState();\n\t\tconst location = state.routing.locationBeforeTransitions;\n\t\tdispatch(push(merge({}, location, payload)));\n\t};\n}\n\npatchLocation.type = type;\n","export default createPatternDemoError;\n\nfunction createPatternDemoError(payload) {\n\treturn (dispatch, getState) => {\n\t\tconst state = getState();\n\t\treturn dispatch({\n\t\t\ttype: 'PATTERN_DEMO_ERROR',\n\t\t\tpayload: {\n\t\t\t\tmessage: payload.message,\n\t\t\t\tpattern: payload.pattern || state.id,\n\t\t\t\tstack: payload.stack,\n\t\t\t\tfile: payload.file || payload.fileName || state.sourceId\n\t\t\t}\n\t\t});\n\t};\n}\n\ncreatePatternDemoError.type = 'PATTERN_DEMO_ERROR';\n","import {createAction} from 'redux-actions';\nimport handleDependentActions from './handle-dependent-actions';\n\nconst ident = i => i;\nconst asyncIdent = async i => i;\n\nexport function createPromiseThunkAction(name, rawCreator) {\n\tconst creator = rawCreator || asyncIdent;\n\n\tconst fn = payload => {\n\t\tconst delayedAction = createAction(`${name}_DELAYED`);\n\t\tconst successAction = createAction(`${name}_SUCCESS`);\n\t\tconst startAction = createAction(`${name}_START`);\n\t\tconst throwsAction = createAction(`${name}_THROWS`);\n\n\t\treturn async (dispatch, getState) => {\n\t\t\tdispatch(startAction(payload, ident, getState));\n\t\t\tconst delayedTimer = global.setTimeout(() => {\n\t\t\t\tdispatch(delayedAction(payload, ident, getState));\n\t\t\t}, 1000);\n\t\t\ttry {\n\t\t\t\tconst result = await creator(payload, dispatch, getState);\n\t\t\t\tglobal.clearTimeout(delayedTimer);\n\t\t\t\tdispatch(successAction(result));\n\t\t\t\treturn result;\n\t\t\t} catch (error) {\n\t\t\t\tglobal.clearTimeout(delayedTimer);\n\t\t\t\tdispatch(throwsAction(error));\n\t\t\t\treturn error;\n\t\t\t}\n\t\t};\n\t};\n\tfn.__name = name;\n\treturn fn;\n}\n\nexport function handlePromiseThunkAction(rawName, handler, options = {}) {\n\tconst name = rawName.__name || rawName;\n\toptions.dependencies = options.dependencies || [];\n\tconst reducer = handleDependentActions({\n\t\t[`${name}_START`]: handler.start || ident,\n\t\t[`${name}_DELAYED`]: handler.delayed || ident,\n\t\t[`${name}_SUCCESS`]: handler.success || ident,\n\t\t[`${name}_THROWS`]: handler.throws || ident\n\t}, options);\n\treturn reducer;\n}\n","import {patchLocation} from './';\n\nexport default resizeDemo;\nexport const type = 'RESIZE_DEMO';\n\nfunction resizeDemo(payload) {\n\treturn dispatch => {\n\t\tdispatch(patchLocation({\n\t\t\tquery: {\n\t\t\t\twidth: payload.x,\n\t\t\t\theight: payload.y\n\t\t\t}\n\t\t}));\n\t};\n}\n\nresizeDemo.type = type;\n","export default scrollDemo;\nexport const type = 'SCROLL_DEMO';\n\nlet loop;\nlet frame;\n\nfunction scrollDemo(payload) {\n\treturn (dispatch, getState) => {\n\t\tfunction run() {\n\t\t\tloop = global.requestAnimationFrame(() => {\n\t\t\t\tconst state = getState();\n\n\t\t\t\tif (state.scrollDemoX.x !== frame.x) {\n\t\t\t\t\tdispatch({\n\t\t\t\t\t\ttype: 'SCROLL_DEMO_X',\n\t\t\t\t\t\tpayload: frame.x\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (state.scrollDemoY.y !== frame.y) {\n\t\t\t\t\tdispatch({\n\t\t\t\t\t\ttype: 'SCROLL_DEMO_Y',\n\t\t\t\t\t\tpayload: frame.y\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\trun();\n\t\t\t});\n\t\t}\n\n\t\tif (!loop) {\n\t\t\trun();\n\t\t}\n\n\t\tframe = payload;\n\t};\n}\n\nscrollDemo.type = type;\n","import scrollparent from 'scrollparent';\n\nexport default scrollTo;\nexport const type = 'SCROLL_TO';\n\nfunction scrollTo(hash) {\n\tconst {document} = global;\n\tif (document) {\n\t\tconst target = document.getElementById(hash);\n\t\tconst parent = scrollparent(target);\n\t\tparent.scrollTop = target.offsetTop;\n\t}\n\n\treturn dispatch => {\n\t\tdispatch({\n\t\t\ttype: 'SCROLLED_TO',\n\t\t\tpayload: hash\n\t\t});\n\t};\n}\n\nscrollTo.type = type;\n","import {patchLocation} from './';\n\nexport default search;\nexport const type = 'SEARCH';\n\nfunction search(search) {\n\treturn dispatch => {\n\t\tdispatch(patchLocation({\n\t\t\tquery: {\n\t\t\t\tsearch\n\t\t\t}\n\t\t}));\n\t};\n}\n\nsearch.type = type;\n","import {createAction} from 'redux-actions';\nexport default createAction('THEME_LOADED');\n","import {patchLocation} from './';\n\nexport default toggleConsoleLightbox;\nexport const type = 'TOGGLE_CONSOLE_LIGHTBOX';\n\nfunction toggleConsoleLightbox(forced) {\n\treturn (dispatch, getState) => {\n\t\tif (typeof forced !== 'undefined') {\n\t\t\tconst lightbox = forced ? null : 'console';\n\t\t\tdispatch(patchLocation({query: {lightbox}}));\n\t\t}\n\n\t\tconst lightbox = getState().lightbox === 'console' ? null : 'console';\n\t\tdispatch(patchLocation({query: {lightbox}}));\n\t};\n}\n\ntoggleConsoleLightbox.type = type;\n","import {patchLocation} from './';\n\nexport default toggleExpandMenu;\nexport const type = 'TOGGLE_EXPAND_MENU';\n\nfunction toggleExpandMenu() {\n\treturn (dispatch, getState) => {\n\t\tdispatch(patchLocation({\n\t\t\tquery: {\n\t\t\t\texpanded: !getState().expanded\n\t\t\t}\n\t\t}));\n\t};\n}\n\ntoggleExpandMenu.type = type;\n","import {patchLocation} from './';\n\nexport default toggleHide;\nexport const type = 'TOGGLE_HIDE';\n\nfunction toggleHide() {\n\treturn (dispatch, getState) => {\n\t\tconst hide = !getState().hide;\n\t\tdispatch(patchLocation({query: {hide}}));\n\t};\n}\n\ntoggleHide.type = type;\n","import {patchLocation} from './';\n\nexport default toggleIssue;\nexport const type = 'TOGGLE_ISSUE';\n\nfunction toggleIssue() {\n\treturn (dispatch, getState) => {\n\t\tconst issue = !getState().issue;\n\t\tdispatch(patchLocation({query: {issue}}));\n\t};\n}\n\ntoggleIssue.type = type;\n","import {patchLocation} from './';\n\nexport default toggleKeyboardShortcuts;\nexport const type = 'TOGGLE_KEYBOARD_SHORTCUTS';\n\nfunction toggleKeyboardShortcuts() {\n\treturn (dispatch, getState) => {\n\t\tconst lightbox = getState().lightbox === 'shortcuts' ? null : 'shortcuts';\n\t\tdispatch(patchLocation({query: {lightbox}}));\n\t};\n}\n\ntoggleKeyboardShortcuts.type = type;\n","import {patchLocation} from './';\n\nexport default toggleOpacity;\nexport const type = 'TOGGLE_OPACITY';\n\nfunction toggleOpacity() {\n\treturn (dispatch, getState) => {\n\t\tconst opacity = getState().opacity;\n\t\tdispatch(patchLocation({query: {opacity: !opacity}}));\n\t};\n}\n\ntoggleOpacity.type = type;\n","import {patchLocation} from './';\n\nexport default toggleRulers;\nexport const type = 'TOGGLE_RULERS';\n\nfunction toggleRulers() {\n\treturn (dispatch, getState) => {\n\t\tconst rulers = getState().rulers;\n\t\tdispatch(patchLocation({query: {rulers: !rulers}}));\n\t};\n}\n\ntoggleRulers.type = type;\n","import {noop} from 'lodash';\nexport default toggleSearchFocus;\nexport const type = 'TOGGLE_SEARCH_FOCUS';\n\nconst faux = {blur: noop, focus: noop};\n\nfunction toggleSearchFocus(forced) {\n\treturn () => {\n\t\tconst {document} = global;\n\t\tconst el = document.querySelector('input[type=search]') || faux;\n\n\t\tif (typeof forced === 'undefined') {\n\t\t\tconst isActive = document.activeElement === el;\n\t\t\tconst method = isActive ? el.blur : el.focus;\n\t\t\tmethod.bind(el)();\n\t\t} else {\n\t\t\tconst method = forced ? el.focus : el.blur;\n\t\t\tmethod.bind(el)();\n\t\t}\n\n\t\treturn dispatch => {\n\t\t\tdispatch({type: 'TOGGLED_SEARCH_FOCUS'});\n\t\t};\n\t};\n}\n\ntoggleSearchFocus.type = type;\n","import {patchLocation} from './';\n\nexport default toggleTheme;\nexport const type = 'TOGGLE_THEME';\n\nfunction toggleTheme(forced) {\n\treturn (dispatch, getState) => {\n\t\tconst theme = forced ? forced : getState().theme === 'dark' ? 'light' : 'dark';\n\t\tdispatch(patchLocation({\n\t\t\tquery: {\n\t\t\t\ttheme\n\t\t\t}\n\t\t}));\n\t};\n}\n\ntoggleTheme.type = type;\n","import {createAction} from 'redux-actions';\nexport default createAction('WINDOW_RESIZE', ({width, height}) => ({width, height}));\n","import React, {Component, PropTypes as t} from 'react';\nimport autobind from 'autobind-decorator';\nimport join from 'classnames';\nimport Helmet from 'react-helmet';\n\nimport ConsoleLightbox from '../../containers/console';\nimport ProblemLightbox from '../../containers/problem';\nimport ShortcutsLightbox from '../../containers/shortcuts';\nimport Navigation from '../navigation';\n\n@autobind\nexport default class Application extends Component {\n\tcomponentDidMount() {\n\t\tglobal.addEventListener('resize', this.onResize);\n\t}\n\n\tcomponentWillUnmount() {\n\t\tglobal.removeEventListener('resize', this.onResize);\n\t}\n\n\tonResize() {\n\t\tthis.props.onResize({\n\t\t\twidth: global.innerWidth,\n\t\t\theight: global.innerHeight\n\t\t});\n\t}\n\n\trender() {\n\t\tconst {props} = this;\n\t\tconst handleSearch = props.onSearch;\n\n\t\tconst className = join('application', {\n\t\t\t'application--menu-enabled': props.menuEnabled,\n\t\t\t'application--theme-loading': props.themeLoading\n\t\t});\n\n\t\treturn (\n\t\t\t<div className={className}>\n\t\t\t\t<Helmet\n\t\t\t\t\tmeta={[\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: 'description',\n\t\t\t\t\t\t\tcontent: props.description\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: 'viewport',\n\t\t\t\t\t\t\tcontent: 'width=device-width, initial-scale=1'\n\t\t\t\t\t\t}\n\t\t\t\t\t]}\n\t\t\t\t\tlink={createLinks(props.styles, {base: props.startBase})}\n\t\t\t\t\ttitle={props.title}\n\t\t\t\t\tonChangeClientState={getThemeLoadedListener(props.onThemeLoaded)}\n\t\t\t\t\t/>\n\t\t\t\t<Navigation\n\t\t\t\t\tactivePattern={props.activePattern}\n\t\t\t\t\tbase={props.base}\n\t\t\t\t\tenabled={props.menuEnabled}\n\t\t\t\t\texpanded={props.expanded}\n\t\t\t\t\thierarchy={props.hierarchy}\n\t\t\t\t\thide={props.hide}\n\t\t\t\t\ticon={props.logo}\n\t\t\t\t\tmenuEnabled={props.menuEnabled}\n\t\t\t\t\tnavigation={props.navigation}\n\t\t\t\t\tonSearch={handleSearch}\n\t\t\t\t\tonThemeChange={props.onThemeChange}\n\t\t\t\t\tpathname={props.pathname}\n\t\t\t\t\tquery={props.query}\n\t\t\t\t\trequestSearchBlur={props.requestSearchBlur}\n\t\t\t\t\tsearchValue={props.search}\n\t\t\t\t\ttheme={props.theme}\n\t\t\t\t\ttitle={props.title}\n\t\t\t\t\tversion={props.version}\n\t\t\t\t\t/>\n\t\t\t\t<main className=\"application__content\">\n\t\t\t\t\t{props.children}\n\t\t\t\t</main>\n\t\t\t\t{\n\t\t\t\t\tprops.lightbox === 'console' &&\n\t\t\t\t\t\t<ConsoleLightbox/>\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t\tprops.lightbox === 'shortcuts' &&\n\t\t\t\t\t\t<ShortcutsLightbox/>\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t\tprops.issue &&\n\t\t\t\t\t\t<ProblemLightbox/>\n\t\t\t\t}\n\t\t\t</div>\n\t\t);\n\t}\n}\n\nApplication.propTypes = {\n\tactivePattern: t.string.isRequired,\n\tbase: t.string.isRequired,\n\tchildren: t.any,\n\tdescription: t.string.isRequired,\n\texpanded: t.bool.isRequired,\n\thierarchy: t.object.isRequired,\n\thide: t.bool.isRequired,\n\tissue: t.bool.isRequired,\n\tlightbox: t.string,\n\tlogo: t.string.isRequired,\n\tmenuEnabled: t.bool.isRequired,\n\tnavigation: t.object.isRequired,\n\tonResize: t.func.isRequired,\n\tonSearch: t.func.isRequired,\n\tonThemeLoaded: t.func.isRequired,\n\tonThemeChange: t.func.isRequired,\n\tpathname: t.string.isRequired,\n\tquery: t.object.isRequired,\n\trequestSearchBlur: t.func.isRequired,\n\ttheme: t.string.isRequired,\n\ttitle: t.string.isRequired,\n\tversion: t.string.isRequired,\n\tsearch: t.string,\n\tstyles: t.arrayOf(t.string).isRequired,\n\tthemeLoading: t.bool.isRequired\n};\n\nfunction createLinks(styles, options) {\n\treturn styles.map(createStyle(options));\n}\n\nfunction createStyle(options) {\n\treturn style => {\n\t\treturn {\n\t\t\t'rel': 'stylesheet',\n\t\t\t'href': `${options.base}/style/${style}.css`,\n\t\t\t'data-style-id': style\n\t\t};\n\t};\n}\n\nfunction getThemeLoadedListener(fn) {\n\treturn (...args) => {\n\t\tconst [, {linkTags: added = []}] = args;\n\t\tconst tags = added.filter(tag => tag.rel === 'stylesheet');\n\t\tconst tag = tags[tags.length - 1];\n\t\tif (tag) {\n\t\t\ttag.onload = () => {\n\t\t\t\tfn(tag.dataset.styleId);\n\t\t\t};\n\t\t}\n\t};\n}\n","import React from 'react';\nimport {Link} from '@marionebl/react-router';\nimport join from 'classnames';\n\nexport default BreadCrumbs;\n\nfunction BreadCrumbs(props) {\n\tconst {crumbs} = props;\n\tconst className = join('breadcrumbs', props.className);\n\n\treturn (\n\t\t<ul className={className}>\n\t\t\t{\n\t\t\t\tcrumbs.map(crumb => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<BreadCrumb\n\t\t\t\t\t\t\tkey={crumb.id}\n\t\t\t\t\t\t\tname={crumb.name}\n\t\t\t\t\t\t\tnavigateable={crumb.navigateable}\n\t\t\t\t\t\t\ttarget={crumb.target}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t}\n\t\t</ul>\n\t);\n}\n\nfunction BreadCrumb(props) {\n\tconst className = join('breadcrumb', {\n\t\t'breadcrumb--navigateable': props.navigateable\n\t});\n\treturn (\n\t\t<li className={className}>\n\t\t\t{\n\t\t\t\tprops.navigateable ?\n\t\t\t\t\t<Link to={props.target}>\n\t\t\t\t\t\t{props.name}\n\t\t\t\t\t</Link> :\n\t\t\t\t\t<span>\n\t\t\t\t\t\t{props.name}\n\t\t\t\t\t</span>\n\t\t\t}\n\t\t</li>\n\t);\n}\n","import {includes} from 'lodash';\nimport low from 'lowlight/lib/core';\nimport {pd as pretty} from 'pretty-data';\n\nimport css from 'highlight.js/lib/languages/css.js';\nimport less from 'highlight.js/lib/languages/less.js';\nimport scss from 'highlight.js/lib/languages/scss.js';\nimport stylus from 'highlight.js/lib/languages/stylus.js';\n\nimport js from 'highlight.js/lib/languages/javascript.js';\nimport ts from 'highlight.js/lib/languages/typescript.js';\nimport json from 'highlight.js/lib/languages/json.js';\n\nimport xml from 'highlight.js/lib/languages/xml.js';\nimport md from 'highlight.js/lib/languages/markdown.js';\n\nimport bash from 'highlight.js/lib/languages/bash.js';\n\n// CSS and friends\nlow.registerLanguage('css', css);\nlow.registerLanguage('less', less);\nlow.registerLanguage('scss', scss);\nlow.registerLanguage('stylus', stylus);\n\n// JS and friends\nlow.registerLanguage('js', js);\nlow.registerLanguage('javascript', js);\nlow.registerLanguage('jsx', js);\nlow.registerLanguage('ts', ts);\nlow.registerLanguage('tsx', ts);\nlow.registerLanguage('typescript', ts);\nlow.registerLanguage('json', json);\n\n// HTML and friends\nlow.registerLanguage('html', xml);\nlow.registerLanguage('xml', xml);\nlow.registerLanguage('md', md);\nlow.registerLanguage('markdown', md);\n\n// (s)hell(ish)s\nlow.registerLanguage('bash', bash);\n// low.registerLanguage('shell', bash);\n\nconst languages = [\n\t'css', 'less', 'scss', 'stylus', 'js', 'javascript', 'jsx', 'ts', 'tsx',\n\t'typescript', 'json', 'html', 'xml', 'md', 'markdown', 'bash'\n];\n\nconst prettyPrinted = ['xml', 'html'];\n\nexport default function highlight(language, source) {\n\tif (!includes(languages, language)) {\n\t\treturn source;\n\t}\n\tconst code = includes(prettyPrinted, language) ? pretty.xml(source) : source;\n\tconst {value: children} = low.highlight(language, code);\n\treturn children;\n}\n","import join from 'classnames';\nimport React, {PropTypes as t} from 'react';\n\nimport highlight from './highlight';\nimport toElements from './to-elements';\n\nexport default Code;\n\nfunction Code(props) {\n\tconst className = join('code hljs', `hljs-${props.language}`);\n\tconst source = highlightCode(props.language, props.children);\n\n\treturn (\n\t\t<code className={className}>\n\t\t\t{source}\n\t\t</code>\n\t);\n}\n\nCode.propTypes = {\n\tlanguage: t.string.isRequired,\n\tchildren: t.string.isRequired\n};\n\nfunction highlightCode(language, source = '') {\n\tif (!language) {\n\t\treturn source;\n\t}\n\tif (!source) {\n\t\treturn source;\n\t}\n\tconst hast = highlight(language, source);\n\treturn toElements(hast);\n}\n","import React from 'react';\nimport toh from 'hast-to-hyperscript';\nexport default toElements;\n\nfunction toElements(children) {\n\tif (!Array.isArray(children)) {\n\t\treturn children;\n\t}\n\n\tconst root = toh(React.createElement, {\n\t\ttype: 'element',\n\t\ttagName: 'div',\n\t\tchildren\n\t});\n\n\treturn root.props.children;\n}\n","import React, {Component} from 'react';\n\nexport default class Editor extends Component {\n\trender() {\n\t\tconst {props} = this;\n\n\t\treturn (\n\t\t\t<textarea\n\t\t\t\tclassName={props.className}\n\t\t\t\tonChange={props.onChange}\n\t\t\t\tonKeyDown={props.onKeyDown}\n\t\t\t\tvalue={props.value}\n\t\t\t\t/>\n\t\t);\n\t}\n}\n","import {findDOMNode} from 'react-dom';\nimport {debounce, omit} from 'lodash';\n\nexport default bind;\n\nfunction bind(ref, props) {\n\tif (!ref) {\n\t\treturn;\n\t}\n\n\tconst {KeyboardEvent, window} = global;\n\tconst node = findDOMNode(ref);\n\tconst win = node.contentWindow;\n\tconst doc = win.document;\n\n\twin.addEventListener('keydown', e => {\n\t\tconst event = new KeyboardEvent('keydown', omit(e, ['keyLocation']));\n\t\tevent.data = e;\n\t\tif (e.keyCode === 82) {\n\t\t\tnode.blur();\n\t\t}\n\t\twindow.dispatchEvent(event);\n\t});\n\n\tprops.onResize({\n\t\twidth: doc.body.clientWidth,\n\t\theight: doc.body.clientHeight\n\t});\n\n\tconst onResize = debounce(() => {\n\t\tprops.onResize({\n\t\t\twidth: doc.body.scrollWidth,\n\t\t\theight: doc.body.scrollHeight\n\t\t});\n\t}, 15);\n\n\tconst onScroll = debounce(() => {\n\t\tconst scroller = doc.scrollingElement || doc.body;\n\t\tconst y = scroller.scrollTop;\n\t\tconst x = scroller.scrollLeft;\n\t\tprops.onScroll({x, y});\n\t}, 15);\n\n\twin.addEventListener('resize', onResize);\n\twin.addEventListener('scroll', onScroll);\n}\n","import getField from './get-field';\nexport default getError;\n\nfunction getError(lines) {\n\tconst pattern = getField('Pattern')(lines);\n\tconst transform = getField('Transform')(lines);\n\tconst file = getField('File')(lines);\n\n\tconst error = new Error(lines.join('\\n'));\n\terror.pattern = pattern;\n\terror.transform = transform;\n\terror.fileName = file;\n\treturn error;\n}\n","import {find, startsWith} from 'lodash';\nexport default getField;\n\nfunction getField(name) {\n\treturn lines => {\n\t\tconst lookup = `${name}: `;\n\t\tconst line = find(lines, line => startsWith(line, lookup));\n\t\treturn line.slice(lookup.length - 1);\n\t};\n}\n","import autobind from 'autobind-decorator';\nimport join from 'classnames';\nimport {noop} from 'lodash';\nimport queryString from 'query-string';\nimport React, {Component, PropTypes as t} from 'react';\n\n@autobind\nexport default class Handle extends Component {\n\tstatic propTypes = {\n\t\tclassName: t.string,\n\t\tonClear: t.func.isRequired,\n\t\tonDrag: t.func.isRequired,\n\t\tonSubmit: t.func.isRequired,\n\t\tpathname: t.string,\n\t\tquery: t.object,\n\t\tvalue: t.string\n\t}\n\n\tstatic defaultProps = {\n\t\tonSubmit: noop,\n\t\tonClear: noop,\n\t\tonDrag: noop\n\t};\n\n\tstate = {\n\t\tactive: false\n\t};\n\n\tcomponentDidMount() {\n\t\tglobal.addEventListener('mousemove', this.handleGlobalMouseMove);\n\t\tglobal.addEventListener('mouseup', this.handleGlobalMouseUp);\n\t}\n\n\tcomponentWillUnmount() {\n\t\tglobal.removeEventListener('mousemove', this.handleGlobalMouseMove);\n\t\tglobal.removeEventListener('mouseup', this.handleGlobalMouseUp);\n\t}\n\n\thandleMouseDown(e) {\n\t\te.preventDefault();\n\t\tthis.setState({active: true});\n\t}\n\n\thandleGlobalMouseMove(e) {\n\t\te.preventDefault();\n\t\tif (this.state.active) {\n\t\t\tthis.props.onDrag(e);\n\t\t}\n\t}\n\n\thandleGlobalMouseUp() {\n\t\tif (this.state.active) {\n\t\t\tthis.setState({active: false});\n\t\t}\n\t}\n\n\trender() {\n\t\tconst {props} = this;\n\t\tconst style = {width: props.width, height: props.height};\n\n\t\tconst target = props.value ?\n\t\t\t`${props.pathname}?${queryString.stringify(props.query)}` : ``;\n\n\t\tconst className = join('handle', props.className, {\n\t\t\t'handle--active': this.state.active\n\t\t});\n\n\t\treturn (\n\t\t\t<div className={className} style={style}>\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"handle__interaction\"\n\t\t\t\t\tonMouseDown={this.handleMouseDown}\n\t\t\t\t\t>\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.state.active &&\n\t\t\t\t\t\t\t<div className=\"handle__capture\"/>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t\t{/*\n\t\t\t\t\t('value' in this.props) &&\n\t\t\t\t\t\t<form\n\t\t\t\t\t\t\tclassName=\"handle__value\"\n\t\t\t\t\t\t\tmethod=\"get\"\n\t\t\t\t\t\t\ttarget={target}\n\t\t\t\t\t\t\tonSubmit={this.props.onSubmit}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\tclassName=\"handle__input\"\n\t\t\t\t\t\t\t\tvalue={this.props.value}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\ttype=\"reset\"\n\t\t\t\t\t\t\t\tclassName=\"handle__clear\"\n\t\t\t\t\t\t\t\tonClick={this.props.onClear}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tClear\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</form>\n\t\t\t\t*/}\n\t\t\t</div>\n\t\t);\n\t}\n}\n","import autobind from 'autobind-decorator';\nimport React, {Component} from 'react';\nimport Handle from './handle';\n\n@autobind\nexport default class Handles extends Component {\n\trender() {\n\t\tconst {props} = this;\n\n\t\treturn (\n\t\t\t<div className=\"frame__handles\">\n\t\t\t\t<Handle\n\t\t\t\t\tclassName=\"frame-handle frame-handle--horizontal\"\n\t\t\t\t\tonClear={props.onClearHorizontal}\n\t\t\t\t\tonDrag={props.onDragHorizontal}\n\t\t\t\t\tonSubmit={props.onSubmitHorizontal}\n\t\t\t\t\tpathname={props.pathname}\n\t\t\t\t\tquery={props.query}\n\t\t\t\t\tvalue={props.heightValue}\n\t\t\t\t\twidth={props.width}\n\t\t\t\t\t/>\n\t\t\t\t<Handle\n\t\t\t\t\tclassName=\"frame-handle frame-handle--vertical\"\n\t\t\t\t\theight={props.height}\n\t\t\t\t\tonClear={props.onClearVertical}\n\t\t\t\t\tonDrag={props.onDragVertical}\n\t\t\t\t\tonSubmit={props.onSubmitVertical}\n\t\t\t\t\tpathname={props.pathname}\n\t\t\t\t\tquery={props.query}\n\t\t\t\t\tvalue={props.widthValue}\n\t\t\t\t\t/>\n\t\t\t\t<Handle\n\t\t\t\t\tclassName=\"frame-handle frame-handle--diagonal\"\n\t\t\t\t\tonDrag={props.onDragDiagonal}\n\t\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n}\n","import autobind from 'autobind-decorator';\nimport join from 'classnames';\nimport {noop} from 'lodash';\nimport pure from 'pure-render-decorator';\nimport React, {Component, PropTypes as types} from 'react';\nimport {findDOMNode} from 'react-dom';\n\nimport bind from './bind';\nimport Handles from './handles';\nimport relay from './relay';\n\n@pure\n@autobind\nexport default class Frame extends Component {\n\tstatic displayName = 'Frame';\n\n\tstatic propTypes = {\n\t\tsrc: types.string.isRequired,\n\t\theight: types.number,\n\t\tid: types.string.isRequired,\n\t\tresizeable: types.bool.isRequired,\n\t\tresize: types.func.isRequired,\n\t\twidth: types.number\n\t};\n\n\tstatic defaultProps = {\n\t\tresize: noop\n\t};\n\n\thandleDiagonalDrag(e) {\n\t\tconst rect = findDOMNode(this.ref).getBoundingClientRect();\n\t\tthis.props.resize({\n\t\t\ty: Math.round(e.pageY - rect.top),\n\t\t\tx: Math.round(e.pageX - rect.left)\n\t\t});\n\t}\n\n\thandleHorizontalSubmit(e) {\n\t\tthis.props.resize({\n\t\t\ty: e.target.value\n\t\t});\n\t}\n\n\thandleHorizontalDrag(e) {\n\t\tconst rect = findDOMNode(this.ref).getBoundingClientRect();\n\t\tthis.props.resize({\n\t\t\ty: Math.round(e.pageY - rect.top)\n\t\t});\n\t}\n\n\thandleVerticalSubmit(e) {\n\t\tthis.props.resize({\n\t\t\tx: e.target.value\n\t\t});\n\t}\n\n\thandleVerticalDrag(e) {\n\t\tconst rect = findDOMNode(this.ref).getBoundingClientRect();\n\t\tthis.props.resize({\n\t\t\tx: Math.round(e.pageX - rect.left)\n\t\t});\n\t}\n\n\tsaveRef(ref) {\n\t\tthis.ref = ref;\n\t}\n\n\trender() {\n\t\tconst {props} = this;\n\n\t\tconst onLoad = e => {\n\t\t\tbind(this.ref, this.props);\n\t\t\tprops.onLoad(e);\n\t\t};\n\n\t\tconst frameClassName = join(\n\t\t\t'iframe',\n\t\t\t{\n\t\t\t\t'iframe--resizeable': props.resizeable\n\t\t\t}\n\t\t);\n\n\t\tconst frameResizeClassName = join(\n\t\t\t'frame__resize-container',\n\t\t\t'pattern__frame'\n\t\t);\n\n\t\tconst style = props.resizeable ? {\n\t\t\twidth: props.width,\n\t\t\theight: props.height\n\t\t} : {};\n\n\t\treturn (\n\t\t\t<div className={props.className}>\n\t\t\t\t<div className={frameResizeClassName} style={style}>\n\t\t\t\t\t<iframe\n\t\t\t\t\t\tclassName={frameClassName}\n\t\t\t\t\t\tonLoad={relay(onLoad, props.onError)}\n\t\t\t\t\t\tref={this.saveRef}\n\t\t\t\t\t\tsrc={props.src}\n\t\t\t\t\t\tsandbox={props.sandbox}\n\t\t\t\t\t\tonKeyDown={this.handleKeyDown}\n\t\t\t\t\t\t/>\n\t\t\t\t\t{\n\t\t\t\t\t\tprops.resizeable &&\n\t\t\t\t\t\t\t<Handles\n\t\t\t\t\t\t\t\theight={props.height}\n\t\t\t\t\t\t\t\tonDragDiagonal={this.handleDiagonalDrag}\n\t\t\t\t\t\t\t\tonDragHorizontal={this.handleHorizontalDrag}\n\t\t\t\t\t\t\t\tonDragVertical={this.handleVerticalDrag}\n\t\t\t\t\t\t\t\tonSubmitHorizontal={this.handleHorizontalSubmit}\n\t\t\t\t\t\t\t\tonSubmitVertical={this.handleVerticalSubmit}\n\t\t\t\t\t\t\t\twidth={props.width}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n}\n","import {noop, startsWith} from 'lodash';\nimport getError from './get-error';\n\nexport default (onLoad = noop, onError = noop) => {\n\treturn e => {\n\t\tconst document = e.target.contentWindow.document;\n\t\tconst {body} = document;\n\t\tconst first = body.firstChild;\n\n\t\tif (!first || !first.innerText) {\n\t\t\treturn onLoad(e);\n\t\t}\n\n\t\tconst lines = first.innerText.split('\\n');\n\n\t\tif (startsWith(lines[0], 'Message: Error in')) {\n\t\t\tconst error = getError(lines);\n\t\t\treturn onError(error);\n\t\t}\n\n\t\treturn onLoad(e);\n\t};\n};\n","import React, {Component, PropTypes as types} from 'react';\nimport classnames from 'classnames';\nimport pure from 'pure-render-decorator';\n\n@pure\nclass Headline extends Component {\n\tdisplayName = 'Headline';\n\n\tstatic propTypes = {\n\t\tchildren: types.node.isRequired,\n\t\torder: types.oneOf([1, 2, 3, 4, 5, 6]).isRequired,\n\t\tdisplay: types.oneOf([1, 2, 3, 4, 5, 6]),\n\t\tclassName: types.string\n\t};\n\n\tstatic defaultProps = {\n\t\tchildren: 'Headline',\n\t\torder: 1\n\t};\n\n\trender() {\n\t\tconst TagName = `h${this.props.order}`;\n\t\tconst className = classnames('h', `h${this.props.display || this.props.order}`, this.props.className);\n\n\t\treturn (\n\t\t\t<TagName className={className}>\n\t\t\t\t{this.props.children}\n\t\t\t</TagName>\n\t\t);\n\t}\n}\n\nexport default Headline;\n","import join from 'classnames';\nimport {noop, uniq} from 'lodash';\nimport React, {PropTypes as t} from 'react';\nimport ReactDOM from 'react-dom';\nimport withSideEffect from 'react-side-effect';\nimport icons from './icons';\n\nconst iconNames = Object.keys(icons);\n\nexport default withSideEffect(toState, onChange)(Icon);\n\nfunction toState(propsList) {\n\tconst list = propsList\n\t\t.map(item => item.symbol)\n\t\t.sort();\n\tconst symbols = uniq(list);\n\treturn <IconRegistry symbols={symbols}/>;\n}\n\nfunction onChange(registry) {\n\tconst element = getRegistryMountPoint();\n\tReactDOM.render(registry, element);\n}\n\nfunction getRegistryMountPoint() {\n\tconst {document} = global;\n\tconst found = document.querySelector('[data-icon-registry]');\n\tif (found) {\n\t\treturn found;\n\t}\n\n\tconst created = document.createElement('div');\n\tcreated.setAttribute('data-icon-registry', true);\n\tdocument.body.appendChild(created);\n\treturn created;\n}\n\nfunction Icon(props) {\n\tconst className = join('icon', props.className, {\n\t\t'icon--has-description': props.description\n\t});\n\n\tconst textStyle = {display: props.fallback ? 'none' : null};\n\tconst xlinkHref = `#${props.symbol}`;\n\n\treturn (\n\t\t<div className={className} style={props.style}>\n\t\t\t<div className=\"svg-icon\">\n\t\t\t{\n\t\t\t\t<svg className=\"svg\">\n\t\t\t\t\t<use xlinkHref={xlinkHref}/>\n\t\t\t\t</svg>\n\t\t\t}\n\t\t\t</div>\n\t\t\t<div className=\"svg-text\" style={textStyle}>\n\t\t\t\t{props.children}\n\t\t\t</div>\n\t\t\t{\n\t\t\t\tprops.description &&\n\t\t\t\t\t<small className=\"icon__description\">\n\t\t\t\t\t\t{props.description}\n\t\t\t\t\t</small>\n\t\t\t}\n\t\t</div>\n\t);\n}\n\nIcon.propTypes = {\n\tsymbol: t.oneOf(iconNames).isRequired,\n\tclassName: t.string,\n\tfallback: t.bool.isRequired,\n\tchildren: t.any,\n\tdescription: t.string,\n\tstyle: t.object\n};\n\nIcon.defaultProps = {\n\tfallback: true\n};\n\nconst hiddenStyles = {\n\tposition: 'fixed',\n\theight: 0,\n\twidth: 0,\n\toverflow: 'hidden',\n\tpadding: 0,\n\tvisibility: 'hidden'\n};\n\nfunction IconRegistry(props) {\n\treturn (\n\t\t<svg style={hiddenStyles}>\n\t\t\t{\n\t\t\t\tprops.symbols\n\t\t\t\t\t.map(symbol => {\n\t\t\t\t\t\tconst creator = icons[symbol] || noop;\n\t\t\t\t\t\tconst paths = creator() || [];\n\t\t\t\t\t\treturn <Symbol id={symbol} key={symbol} definition={paths}/>;\n\t\t\t\t\t})\n\t\t\t}\n\t\t</svg>\n\t);\n}\n\nIconRegistry.propTypes = {\n\tsymbols: t.arrayOf(t.oneOf(iconNames)).isRequired\n};\n\nIconRegistry.defaultProps = {\n\tsymbols: []\n};\n\nfunction Symbol(props) {\n\tconst paths = Array.isArray(props.definition) ?\n\t\tprops.definition :\n\t\t[props.definition];\n\n\treturn (\n\t\t<symbol\n\t\t\tid={props.id}\n\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t>\n\t\t\t{\n\t\t\t\tpaths.map(path => <Path definition={path} key={path}/>)\n\t\t\t}\n\t\t</symbol>\n\t);\n}\n\nSymbol.propTypes = {\n\tdefinition: t.oneOfType([t.string, t.object, t.array]).isRequired,\n\tid: t.string.isRequired\n};\n\nfunction Path(props) {\n\tconst {definition} = props;\n\tconst def = typeof definition === 'string' ? {d: definition} : definition;\n\tconst {tagName, ...p} = def;\n\tconst Component = tagName || 'path';\n\treturn <Component {...p}/>;\n}\n\nPath.propTypes = {\n\tdefinition: t.oneOfType([t.string, t.object]).isRequired\n};\n","/* eslint-disable max-len */\nimport {range} from 'lodash';\n\nconst arrowLeft = 'M9.452 13.233c-.14-.148-.258-.31-.344-.494-.215-.465-.215-1.01 0-1.475.085-.184.203-.346.343-.494l3.543-3.544 1.06 1.06c-1.183 1.186-2.46 2.285-3.55 3.558-.058.075-.073.175-.033.262.013.03.033.054.056.078l3.527 3.527-1.06 1.06-3.54-3.54z';\nconst arrowRight = 'm 14.202,10.767 c 0.14,0.147 0.258,0.31 0.344,0.494 0.215,0.464 0.215,1.01 0,1.474 -0.085,0.185 -0.203,0.347 -0.343,0.494 L 10.66,16.775 9.6,15.715 c 1.183,-1.186 2.46,-2.285 3.55,-3.558 0.058,-0.075 0.073,-0.176 0.033,-0.262 -0.013,-0.03 -0.033,-0.055 -0.056,-0.08 L 9.601,8.29 l 1.06,-1.06 3.54,3.54 z';\nconst code = 'M20.54 10.76l-3.313-3.313-.777 1.344 3.03 3.03c.098.1.098.257 0 .354l-3.533 3.538 1.06 1.06 3.536-3.538c.68-.683.68-1.792-.002-2.473zM4.52 11.82L8.05 8.29l-1.06-1.06L3.46 10.76c-.682.683-.683 1.79-.003 2.474l3.316 3.32.777-1.345-3.032-3.036c-.097-.097-.097-.255 0-.353zM7.6 18.12l7.5-12.99 1.3.75-7.5 12.99z';\nconst dark = 'M12 16v3.227L5.52 15.15l-.02-6.3L12 4.77V8l-2 2 4 4-2 2zm0-13L4 8.02l.02 7.96L12 21l7.937-5L20 8l-8-5z';\nconst dependencies = 'M9.453 20.026L6.75 21.378v-4.17l3.256-1.627v3.56c0 .38-.214.73-.553.9m-6.906 0c-.34-.17-.553-.515-.553-.893v-3.55l3.256 1.62v4.17L2.547 20.03zm3.006-7.062c.14-.07.294-.106.447-.106.153 0 .306.036.447.106l2.72 1.36L6 15.906 2.833 14.32l2.72-1.36zm4.57.16L7.12 11.62c-.345-.17-.732-.263-1.118-.263-.386 0-.773.09-1.118.26L1.878 13.12c-.854.423-1.384 1.28-1.384 2.233v3.77c0 .953.53 1.81 1.382 2.237l3.006 1.503c.345.174.732.266 1.118.266.386 0 .773-.09 1.118-.27l3.006-1.505c.852-.427 1.382-1.283 1.382-2.236v-3.77c0-.954-.53-1.81-1.382-2.237m11.33 6.906l-2.704 1.35V17.2l3.256-1.625v3.55c0 .38-.214.728-.553.897m-6.906 0c-.34-.17-.553-.517-.553-.895v-3.55l3.256 1.627v4.17l-2.703-1.353zm3.006-7.064c.14-.07.294-.104.447-.104.153 0 .306.04.447.11l2.72 1.36L18 15.91l-3.167-1.583 2.72-1.36zm4.57.16l-3.005-1.5c-.345-.17-.732-.262-1.118-.262-.386 0-.773.097-1.118.27l-3.006 1.502c-.852.425-1.382 1.28-1.382 2.234v3.772c0 .952.53 1.81 1.382 2.236l3.006 1.503c.345.17.732.262 1.118.262.386 0 .773-.092 1.118-.264l3.006-1.5c.852-.43 1.382-1.287 1.382-2.24v-3.77c0-.953-.53-1.81-1.382-2.236M8.547 9.53c-.34-.17-.553-.516-.553-.894v-3.55l3.256 1.627v4.17L8.547 9.53zm3.006-7.063c.14-.07.294-.106.447-.106.153 0 .306.04.447.11l2.72 1.36L12 5.41 8.833 3.827l2.72-1.36zm3.9 7.063l-2.703 1.352v-4.17l3.256-1.627v3.55c0 .38-.214.726-.553.895m.67 1.342c.853-.427 1.383-1.283 1.383-2.236V4.864c0-.953-.53-1.81-1.382-2.236l-3.006-1.503C12.773.953 12.386.86 12 .86c-.386 0-.773.093-1.118.265L7.876 2.628c-.852.427-1.382 1.283-1.382 2.236v3.772c0 .952.53 1.81 1.382 2.236l3.006 1.503c.345.172.732.264 1.118.264.386 0 .773-.1 1.118-.27l3.006-1.51z';\nconst ecospheres = 'M18.052 15.315c0 .287-.162.55-.418.677l-5.296 2.648c-.107.053-.222.08-.338.08-.116 0-.232-.027-.34-.08l-5.295-2.648c-.256-.128-.418-.39-.418-.677v-6.63c0-.287.162-.55.418-.677L11.66 5.36c.108-.053.224-.08.34-.08.116 0 .23.027.338.08l5.296 2.648c.256.128.418.39.418.677v6.63zm.253-8.65L13.01 4.02c-.313-.155-.662-.238-1.01-.238-.35 0-.698.083-1.01.238L5.696 6.666c-.77.385-1.248 1.16-1.248 2.02v6.63c0 .86.478 1.633 1.247 2.017l5.296 2.648c.315.16.66.24 1.01.24s.7-.08 1.01-.235l5.298-2.65c.77-.383 1.247-1.157 1.247-2.017v-6.63c0-.86-.478-1.634-1.247-2.02';\nconst folder = 'M10.5 4.5h-8v14c0 .552.448 1 1 1h17c.552 0 1-.448 1-1v-11h-11v-3zM9 6v3h11v9H4V6h5';\nconst fullscreen = 'M9 3.75v-1.5l-5 .003c-.966 0-1.75.785-1.75 1.75V9h1.5V4.813L8.38 9.44l1.06-1.06-4.63-4.63H9zm-.62 10.81l-4.63 4.626V15h-1.5v4.997c0 .964.785 1.75 1.75 1.75l5 .002v-1.5l-4.19-.005 4.63-4.626-1.06-1.06zM20 2.25l-5-.005v1.5l4.194.003-4.634 4.63 1.06 1.06 4.63-4.624v4.18h1.5V4c0-.966-.785-1.75-1.75-1.75m.25 16.936l-4.63-4.626-1.06 1.06 4.634 4.63-4.194.005v1.5l5-.004c.965 0 1.75-.782 1.75-1.75v-4.993h-1.5v4.18z';\nconst globals = 'M12 20.5c-3.046 0-5.716-1.616-7.217-4.03l.16.065 1.75-4.25c.08-.196.075-.416-.015-.607l-1.936-4.08c.595-.977 1.38-1.824 2.305-2.49L8.25 6.31V9c0 .116.028.23.08.335l3 6c.1.2.282.343.498.394.057.01.115.02.172.02.16 0 .32-.06.45-.15l4-3c.167-.13.275-.32.296-.53l.283-2.746 2.83-.543c.404.99.632 2.075.632 3.21 0 4.688-3.814 8.5-8.5 8.5M3.92 9.37l1.258 2.65-1.172 2.848C3.686 13.97 3.5 13.008 3.5 12c0-.92.15-1.802.422-2.63M19.138 7.4l-2.94.564c-.324.06-.57.33-.604.66l-.306 2.972-3.02 2.264L9.75 8.823V6c0-.2-.08-.39-.22-.53L8.38 4.32c1.1-.52 2.325-.82 3.62-.82 2.992 0 5.623 1.558 7.138 3.9M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2';\nconst environment = globals;\nconst home = 'M12.055 2l-11 10h1.89v9.02c0 .524.422.95.943.95h7.223V18.2H13v3.77l7.103.03h.008c.524 0 .947-.424.947-.95v-9.01l1.89-.04-10.89-10zm-.005 2.032l7.505 6.892v9.574l-5.055-.023V16.7H9.61v3.77H4.445v-9.525L12.05 4.03';\nconst light = 'M12 8V4.773l6.48 4.078.018 6.3L12 19.23V16l2-2-4-4 2-2zm0 13l8-5.02-.02-7.96L12 3 4.063 8 4 16l8 5z';\nconst molecules = 'M6.372 4.75h11.255v1.5H6.372zM12.9 16.172c.32.124.617.31.868.56.12.12.222.248.312.383l5.626-9.143c-.514-.06-.99-.274-1.377-.624l-5.43 8.824zM6.08 6.886c-.09.135-.193.263-.312.382-.25.25-.548.437-.87.56l5.43 8.825c.388-.35.864-.564 1.378-.624L6.08 6.883zm4.86 10.554c-.587.586-.587 1.536 0 2.12.585.587 1.535.587 2.12 0 .586-.584.586-1.534 0-2.12-.585-.586-1.535-.586-2.12 0m10.12-13c-.585-.586-1.535-.586-2.12 0-.586.586-.586 1.536 0 2.12.585.587 1.535.587 2.12 0 .587-.584.587-1.534 0-2.12m-16 0c-.585-.586-1.535-.586-2.12 0-.586.586-.586 1.536 0 2.12.585.587 1.535.587 2.12 0 .587-.584.587-1.534 0-2.12';\nconst organisms = 'M6.475 15.75c.008.084.025.165.025.25 0 .48-.142.922-.376 1.302l3.766 2.37c.287-.455.715-.808 1.224-1.002l-4.64-2.92zm11.05-.004l-4.64 2.923c.51.19.937.54 1.225 1l3.765-2.37c-.233-.38-.375-.83-.375-1.3 0-.09.017-.17.026-.26m2.454-5.25c-.564-.004-1.078-.203-1.495-.524l-.032 4.08c.417-.33.934-.54 1.505-.55l.023-3.005zm-15.973.01l.008 3c.567.003 1.083.203 1.5.524l-.01-4.042c-.418.318-.933.515-1.498.516m13.515-2.28c-.007-.08-.022-.15-.022-.22 0-.49.145-.94.386-1.32l-3.773-2.36c-.285.45-.71.81-1.22 1l4.63 2.893zm-11.046.01l4.635-2.91c-.5-.194-.93-.548-1.22-1.003L6.12 6.69c.237.383.38.83.38 1.31 0 .082-.016.16-.024.238M4 9.5c.828 0 1.5-.672 1.5-1.5S4.828 6.5 4 6.5 2.5 7.172 2.5 8 3.172 9.5 4 9.5m8-5c.828 0 1.5-.672 1.5-1.5s-.672-1.5-1.5-1.5-1.5.672-1.5 1.5.672 1.5 1.5 1.5m-8 10c-.828 0-1.5.672-1.5 1.5s.672 1.5 1.5 1.5 1.5-.672 1.5-1.5-.672-1.5-1.5-1.5m8 5c-.828 0-1.5.672-1.5 1.5s.672 1.5 1.5 1.5 1.5-.672 1.5-1.5-.672-1.5-1.5-1.5m8-5c-.828 0-1.5.672-1.5 1.5s.672 1.5 1.5 1.5 1.5-.672 1.5-1.5-.672-1.5-1.5-1.5m-8-4c-.828 0-1.5.672-1.5 1.5s.672 1.5 1.5 1.5 1.5-.672 1.5-1.5-.672-1.5-1.5-1.5m8-1c.828 0 1.5-.672 1.5-1.5s-.672-1.5-1.5-1.5-1.5.672-1.5 1.5.672 1.5 1.5 1.5';\nconst templates = 'M7.5 2.5v15a1 1 0 0 0 1 1h11v-16zM18 17H9V4h9zM3.75 8h1.5v-.75H6.5v-1.5H3.75V8M8.02 20.75h3.32v1.5H8.02zM3.75 9.66h1.5v3.32h-1.5zM3.75 14.64h1.5v3.32h-1.5zM5.25 20.5v-.89h-1.5v.89a1.75 1.75 0 0 0 1.75 1.75h.86v-1.5H5.5a.25.25 0 0 1-.25-.25zM13.75 20.75H13v1.5h2.25V19.5h-1.5v1.25';\nconst pages = [\n\t'M7.87 2.13v15a1 1 0 0 0 1 1h11v-16zm10.5 14.5h-9v-13h9z',\n\t'M14.12 20.37H5.88a.25.25 0 0 1-.25-.25V6.87h1.25v-1.5H4.13v14.75a1.75 1.75 0 0 0 1.75 1.75h9.75v-2.75h-1.5z'\n];\nconst pattern = 'M12.75 18.948v-7.412c.846-.34 2.457-1.153 5.75-2.892v7.43l-5.75 2.874zM5.5 8.588l5.75 2.874v7.486L5.5 16.073V8.588zm6.5-3.91l5.546 2.772c-3.208 1.687-4.896 2.514-5.47 2.75l-5.56-2.78L12 4.676zm7.447 2.046l-7-3.5c-.14-.07-.294-.106-.447-.106-.153 0-.306.035-.447.106l-7 3.5c-.34.17-.553.515-.553.894v8.764c0 .38.214.725.553.894l7 3.5c.14.07.294.106.447.106.153 0 .307-.035.447-.106l7-3.5c.34-.17.553-.515.553-.894V7.618c0-.38-.214-.725-.553-.894';\nconst patternplate = 'M12 2c5.52 0 10 4.48 10 10s-4.48 10-10 10S2 17.52 2 12 6.48 2 12 2zm-2 15.5v-2H8v2h2zm3-3v-2h-2v2h2zm-3 0v-2H8v2h2zm6 0v-2h-2v2h2zm-6-3v-2H8v2h2zm6 0v-2h-2v2h2zm-3-3v-2h-2v2h2zm-3 0v-2H8v2h2zm6 0v-2h-2v2h2z';\nconst polymers = 'M6.475 15.75c.008.084.025.165.025.25 0 .48-.142.922-.376 1.302l3.766 2.37c.287-.455.715-.808 1.224-1.002l-4.64-2.92zm11.05-.004l-4.64 2.923c.51.19.937.54 1.225 1l3.765-2.37c-.233-.38-.375-.83-.375-1.3 0-.09.017-.17.026-.26m2.454-5.25c-.564-.008-1.078-.207-1.495-.528l-.032 4.08c.417-.33.934-.54 1.505-.55l.023-3.005zm-15.973.01l.008 3c.567 0 1.083.2 1.5.52l-.01-4.04c-.418.32-.933.514-1.498.515m13.515-2.28c-.007-.08-.022-.15-.022-.22 0-.49.145-.94.386-1.32l-3.773-2.36c-.285.45-.71.81-1.22 1l4.63 2.893zm-11.046.01l4.635-2.91c-.5-.194-.93-.548-1.22-1.003L6.12 6.69c.237.383.38.83.38 1.31 0 .082-.016.16-.024.238m11.064.152l-4.79 2.392v-5.41c-.238.076-.486.127-.75.127-.262 0-.51-.06-.75-.13v5.44l-4.79-2.4c-.088.51-.327.98-.68 1.34l4.512 2.26-4.502 2.24c.35.36.58.82.67 1.34l4.79-2.397v5.42c.24-.074.48-.127.75-.127s.51.05.75.126v-5.38l4.78 2.394c.077-.516.31-.983.653-1.35l-4.543-2.27 4.56-2.27c-.35-.36-.584-.827-.666-1.343M4 9.5c.828 0 1.5-.672 1.5-1.5S4.828 6.5 4 6.5 2.5 7.172 2.5 8 3.172 9.5 4 9.5m8-5c.828 0 1.5-.672 1.5-1.5s-.672-1.5-1.5-1.5-1.5.672-1.5 1.5.672 1.5 1.5 1.5m-8 10c-.828 0-1.5.672-1.5 1.5s.672 1.5 1.5 1.5 1.5-.672 1.5-1.5-.672-1.5-1.5-1.5m8 5c-.828 0-1.5.672-1.5 1.5s.672 1.5 1.5 1.5 1.5-.672 1.5-1.5-.672-1.5-1.5-1.5m8-5c-.828 0-1.5.672-1.5 1.5s.672 1.5 1.5 1.5 1.5-.672 1.5-1.5-.672-1.5-1.5-1.5m0-5c.828 0 1.5-.672 1.5-1.5s-.672-1.5-1.5-1.5-1.5.672-1.5 1.5.672 1.5 1.5 1.5';\nconst react = 'M 16.019531 3 C 15.671125 3.00715 15.300981 3.091375 14.921875 3.2324219 C 14.163662 3.5145156 13.340776 4.0384002 12.503906 4.7753906 C 12.340395 4.9193891 12.176009 5.0979185 12.011719 5.2578125 C 11.901617 5.1513016 11.791835 5.0267433 11.681641 4.9277344 C 10.795655 4.1316628 9.9236686 3.5712298 9.125 3.2695312 C 8.7256657 3.1186821 8.3365968 3.0284378 7.9726562 3.0195312 C 7.6087157 3.0106212 7.270437 3.0833582 6.9726562 3.2578125 C 6.3972498 3.5948924 6.0860013 4.2551581 5.9492188 5.0585938 C 5.8124361 5.8620294 5.8476604 6.8442943 6.0605469 7.9453125 C 6.1031041 8.1654193 6.1740595 8.4036874 6.2304688 8.6328125 C 5.97484 8.7063633 5.7047008 8.7722283 5.46875 8.8554688 C 4.432811 9.2209626 3.5945928 9.6796197 2.9921875 10.201172 C 2.3897822 10.722724 2 11.327349 2 11.984375 C 2 12.662118 2.4082566 13.289795 3.0429688 13.839844 C 3.6776808 14.389892 4.5645597 14.878259 5.65625 15.255859 C 5.8317684 15.316571 6.0331245 15.360088 6.21875 15.414062 C 6.1582822 15.66053 6.0832065 15.917073 6.0390625 16.152344 C 5.8346362 17.241844 5.8098143 18.204961 5.9550781 18.992188 C 6.1003415 19.779412 6.4197964 20.423275 6.9863281 20.753906 C 7.5707485 21.094948 8.3167421 21.047508 9.1054688 20.765625 C 9.8941954 20.483741 10.754805 19.951627 11.623047 19.183594 C 11.761961 19.060717 11.898899 18.906452 12.037109 18.771484 C 12.216283 18.945766 12.396455 19.138171 12.574219 19.292969 C 13.405466 20.016801 14.218158 20.522511 14.966797 20.789062 C 15.715436 21.055615 16.430103 21.095246 16.996094 20.763672 C 17.579942 20.42164 17.910332 19.748024 18.0625 18.917969 C 18.214668 18.087913 18.188624 17.069767 17.964844 15.925781 C 17.929929 15.747281 17.867388 15.554788 17.822266 15.371094 C 17.950462 15.332733 18.093563 15.303037 18.216797 15.261719 C 19.34199 14.884455 20.256474 14.401339 20.914062 13.853516 C 21.571651 13.305692 22 12.675711 22 11.984375 C 22 11.316537 21.592337 10.708795 20.972656 10.185547 C 20.352976 9.6622986 19.494727 9.2034761 18.445312 8.8378906 C 18.238082 8.7656964 18.000825 8.7093156 17.779297 8.6445312 C 17.816133 8.4924793 17.870208 8.3318492 17.900391 8.1835938 C 18.13931 7.0099907 18.183182 5.96782 18.042969 5.1191406 C 17.902756 4.2704612 17.578578 3.5803124 16.982422 3.2324219 C 16.694443 3.0643682 16.367938 2.9928547 16.019531 3 z M 16.023438 3.8652344 C 16.246408 3.8595757 16.422746 3.9010322 16.548828 3.9746094 C 16.815675 4.1303292 17.07873 4.5521623 17.195312 5.2578125 C 17.311895 5.9634627 17.281462 6.9169667 17.058594 8.0117188 C 17.032589 8.1394545 16.984815 8.2822106 16.953125 8.4140625 C 16.134284 8.2234679 15.235015 8.0912672 14.294922 8.0019531 C 13.751908 7.2186476 13.191061 6.4913648 12.617188 5.8652344 C 12.768776 5.7177962 12.922862 5.5514965 13.072266 5.4199219 C 13.849433 4.7355084 14.600382 4.2698533 15.220703 4.0390625 C 15.530864 3.9236671 15.800467 3.8708931 16.023438 3.8652344 z M 7.9667969 3.8847656 C 8.204941 3.8916645 8.4921202 3.9495056 8.8222656 4.0742188 C 9.4825566 4.3236447 10.28203 4.8247788 11.107422 5.5664062 C 11.205243 5.6542984 11.305753 5.7681072 11.404297 5.8632812 C 10.828373 6.4891798 10.260402 7.2150849 9.7109375 8 C 8.7742691 8.0878313 7.878881 8.2210717 7.0605469 8.4082031 C 7.0093893 8.1995211 6.9427183 7.979966 6.9042969 7.78125 C 6.7063246 6.7573656 6.6823383 5.8644203 6.7949219 5.203125 C 6.9075054 4.5418297 7.1543156 4.1475862 7.40625 4 C 7.5395435 3.9219104 7.7286527 3.8778668 7.9667969 3.8847656 z M 12.011719 6.4746094 C 12.406433 6.9082361 12.7994 7.4001799 13.1875 7.9238281 C 12.794349 7.9049913 12.404259 7.8808594 12 7.8808594 C 11.601264 7.8808594 11.215567 7.9055035 10.826172 7.9238281 C 11.218061 7.4011371 11.614064 6.9090918 12.011719 6.4746094 z M 12 8.7402344 C 12.62139 8.7402344 13.227614 8.7668454 13.818359 8.8125 C 14.151039 9.3088157 14.475839 9.8245485 14.785156 10.365234 C 15.09578 10.908201 15.379531 11.451329 15.642578 11.990234 C 15.381336 12.536206 15.099335 13.084929 14.787109 13.632812 C 14.47815 14.17496 14.155199 14.694701 13.826172 15.193359 C 13.231026 15.236716 12.621925 15.263672 12 15.263672 C 11.385158 15.263672 10.783354 15.241979 10.195312 15.203125 C 9.857099 14.704207 9.5270761 14.182489 9.2148438 13.636719 C 8.9026472 13.090995 8.6226165 12.543692 8.3652344 12.001953 C 8.6223479 11.459349 8.9033118 10.912375 9.2128906 10.369141 C 9.5231725 9.8246773 9.8493881 9.3072485 10.183594 8.8125 C 10.77474 8.7671354 11.382161 8.7402344 12 8.7402344 z M 9.0917969 8.9335938 C 8.8809698 9.2664173 8.6672078 9.5936441 8.4667969 9.9453125 C 8.26942 10.29166 8.0992881 10.639079 7.921875 10.986328 C 7.6728423 10.387485 7.4513424 9.8008736 7.2792969 9.2402344 C 7.8448649 9.1122912 8.4555981 9.0142998 9.0917969 8.9335938 z M 14.912109 8.9335938 C 15.551594 9.0156474 16.16691 9.1173252 16.734375 9.2480469 C 16.562073 9.8064733 16.34146 10.391171 16.089844 10.988281 C 15.90762 10.63874 15.729215 10.288907 15.529297 9.9394531 C 15.33083 9.5925325 15.120651 9.264526 14.912109 8.9335938 z M 6.4472656 9.4648438 C 6.6951622 10.278405 7.0319189 11.134632 7.4277344 12.003906 C 7.026288 12.886892 6.6864667 13.756169 6.4355469 14.582031 C 6.272336 14.53433 6.0902943 14.49621 5.9375 14.443359 C 4.9277033 14.094085 4.1309727 13.643168 3.6074219 13.189453 C 3.0838711 12.735738 2.859375 12.295484 2.859375 11.984375 C 2.859375 11.681865 3.0645925 11.275878 3.5546875 10.851562 C 4.0447825 10.427248 4.7971191 10.004273 5.7558594 9.6660156 C 5.9674342 9.5913747 6.2155634 9.5317521 6.4472656 9.4648438 z M 17.5625 9.4765625 C 17.761147 9.5349289 17.977705 9.5841952 18.162109 9.6484375 C 19.135811 9.987647 19.909923 10.414765 20.417969 10.84375 C 20.926014 11.272735 21.140625 11.684825 21.140625 11.984375 C 21.140625 12.30116 20.909935 12.739581 20.365234 13.193359 C 19.820534 13.647138 18.990692 14.096108 17.943359 14.447266 C 17.839835 14.481976 17.715549 14.506445 17.607422 14.539062 C 17.350826 13.718687 16.99339 12.85937 16.583984 11.988281 C 16.977973 11.130028 17.315538 10.284009 17.5625 9.4765625 z M 16.097656 12.992188 C 16.360815 13.600657 16.599902 14.199577 16.779297 14.767578 C 16.197615 14.901882 15.568725 15.005518 14.908203 15.085938 C 15.119082 14.747835 15.331463 14.412597 15.533203 14.058594 C 15.735416 13.703757 15.915097 13.347868 16.097656 12.992188 z M 7.921875 13.021484 C 8.1000429 13.369168 8.2716246 13.716461 8.4707031 14.064453 C 8.6760168 14.423334 8.8964141 14.759151 9.1132812 15.099609 C 8.4651932 15.026399 7.8402627 14.934137 7.2675781 14.808594 C 7.4427132 14.236002 7.6671378 13.634621 7.921875 13.021484 z M 16.994141 15.599609 C 17.033614 15.76138 17.090652 15.934214 17.121094 16.089844 C 17.32857 17.150499 17.342782 18.076459 17.216797 18.763672 C 17.090815 19.450885 16.824358 19.868082 16.5625 20.021484 C 16.307877 20.17065 15.861548 20.194868 15.253906 19.978516 C 14.646267 19.762166 13.908649 19.315011 13.138672 18.644531 C 12.976886 18.503647 12.809552 18.324509 12.644531 18.164062 C 13.213719 17.533605 13.768067 16.796304 14.304688 16.009766 C 15.256548 15.924226 16.164838 15.793207 16.994141 15.599609 z M 7.046875 15.644531 C 7.8734712 15.828556 8.7843105 15.944441 9.7285156 16.021484 C 10.281098 16.80836 10.851201 17.535739 11.429688 18.164062 C 11.304718 18.286056 11.178838 18.429245 11.054688 18.539062 C 10.250844 19.250131 9.4655785 19.725022 8.8164062 19.957031 C 8.1672342 20.18904 7.6820257 20.164669 7.4199219 20.011719 C 7.1650564 19.862976 6.9174785 19.478939 6.7988281 18.835938 C 6.6801777 18.192936 6.695132 17.321208 6.8847656 16.310547 C 6.9241429 16.100681 6.9927179 15.866659 7.046875 15.644531 z M 13.201172 16.083984 C 12.816824 16.612397 12.428545 17.113513 12.037109 17.550781 C 11.636336 17.112875 11.235674 16.616934 10.839844 16.089844 C 11.2244 16.104917 11.606956 16.123047 12 16.123047 C 12.406689 16.123047 12.803605 16.101833 13.201172 16.083984 z';\nconst reload = 'M17.266 6.664C15.91 5.327 14.05 4.5 12 4.5c-4.135 0-7.5 3.365-7.5 7.5s3.365 7.5 7.5 7.5 7.5-3.365 7.5-7.5c0-.544-.058-1.074-.168-1.586h1.53C20.95 10.93 21 11.46 21 12c0 4.97-4.03 9-9 9s-9-4.03-9-9 4.03-9 9-9c2.453 0 4.677.98 6.3 2.572v-.986h1.5v3.578h-3.578v-1.5h1.044zM12 13.5c-.827 0-1.5-.673-1.5-1.5s.673-1.5 1.5-1.5c.828 0 1.5.673 1.5 1.5s-.672 1.5-1.5 1.5z';\nconst rulers = 'M21 7H3a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1V8a1 1 0 0 0-1-1zm-.5 8.5H18V13h-1.5v2.5h-2V13H13v2.5h-2V13H9.5v2.5h-2V13H6v2.5H3.5v-7h17z';\nconst search = 'M8.65 14.248c-.376-.46-.697-.962-.955-1.496-.335-.695-.56-1.44-.668-2.205-.11-.787-.096-1.59.044-2.373.13-.726.37-1.432.71-2.09.75-1.448 1.96-2.636 3.43-3.343.64-.3 1.32-.52 2.02-.64.35-.05.69-.08 1.04-.09h.29c.35.01.7.03 1.04.09.7.11 1.39.32 2.03.62 1.53.717 2.8 1.95 3.55 3.466.32.63.54 1.31.67 2.006.14.78.16 1.584.05 2.37-.106.76-.332 1.51-.667 2.204-.393.81-.933 1.55-1.586 2.174-.675.643-1.472 1.16-2.34 1.515-.895.365-1.862.553-2.832.553s-1.933-.186-2.83-.553c-.684-.28-1.325-.66-1.9-1.13-2.09 2.21-4.294 4.307-6.437 6.464-.09.08-.186.15-.3.187-.1.034-.205.046-.31.035-.072-.01-.145-.03-.213-.058-.308-.13-.497-.455-.454-.79.02-.15.088-.28.184-.395 2.09-2.23 4.3-4.343 6.46-6.506zM14.377 3.5c-.28.006-.56.027-.836.07-.56.085-1.1.25-1.62.49-1.16.542-2.13 1.457-2.74 2.58-.28.518-.48 1.075-.6 1.65-.13.65-.15 1.318-.07 1.974.08.612.25 1.21.52 1.77.31.655.73 1.253 1.25 1.758.54.523 1.17.945 1.86 1.236.715.302 1.486.462 2.26.472.777.01 1.554-.13 2.277-.416.695-.275 1.34-.682 1.885-1.192.53-.492.97-1.08 1.29-1.726.276-.55.464-1.144.557-1.753.1-.63.09-1.273-.01-1.9-.094-.56-.266-1.103-.51-1.613-.58-1.197-1.555-2.185-2.744-2.776-.505-.252-1.047-.43-1.603-.53-.273-.05-.55-.077-.83-.09-.1-.003-.204-.004-.31-.004z';\n\nconst atoms = [\n\t'M12 3c-1.39 0-2.7.324-3.874.886.355.357.608.807.75 1.305.952-.436 2.008-.69 3.124-.69 4.135 0 7.5 3.367 7.5 7.5s-3.365 7.5-7.5 7.5-7.5-3.363-7.5-7.5c0-1.114.252-2.17.69-3.123-.497-.14-.947-.395-1.304-.75C3.324 9.3 3 10.612 3 12c0 4.97 4.03 9 9 9s9-4.03 9-9-4.03-9-9-9',\n\t'M13.5 12c0-.828-.672-1.5-1.5-1.5s-1.5.672-1.5 1.5.672 1.5 1.5 1.5 1.5-.672 1.5-1.5M6 7.5c.828 0 1.5-.672 1.5-1.5S6.828 4.5 6 4.5 4.5 5.172 4.5 6 5.172 7.5 6 7.5'\n];\n\nconst arrowDoubleLeft = [\n\t'M7.452 13.233c-.14-.148-.258-.31-.344-.494-.215-.465-.215-1.01 0-1.475.085-.184.203-.346.343-.494l3.543-3.544 1.06 1.06c-1.183 1.186-2.46 2.285-3.55 3.558-.058.075-.073.175-.033.262.013.03.033.054.056.078l3.527 3.527-1.06 1.06-3.54-3.54z',\n\t'M12.452 13.233c-.14-.148-.258-.31-.344-.494-.215-.465-.215-1.01 0-1.475.085-.184.203-.346.343-.494l3.543-3.544 1.06 1.06c-1.183 1.186-2.46 2.285-3.55 3.558-.058.075-.073.175-.033.262.013.03.033.054.056.078l3.527 3.527-1.06 1.06-3.54-3.54z'\n];\n\nconst arrowDoubleRight = [\n\t'M16.548 10.767c.14.147.258.31.344.494.215.464.215 1.01 0 1.474-.085.185-.203.347-.343.494l-3.543 3.546-1.06-1.06c1.183-1.186 2.46-2.285 3.55-3.558.058-.075.073-.176.033-.262-.013-.03-.033-.055-.056-.08L11.947 8.29l1.06-1.06 3.54 3.54z',\n\t'M11.548 10.767c.14.147.258.31.344.494.215.464.215 1.01 0 1.474-.085.185-.203.347-.343.494l-3.543 3.546-1.06-1.06c1.183-1.186 2.46-2.285 3.55-3.558.058-.075.073-.176.033-.262-.013-.03-.033-.055-.056-.08L6.947 8.29l1.06-1.06 3.54 3.54z'\n];\n\nconst folderOpen = [{\n\td: 'M20 18H4V9h5v3h11v6zM10.5 7.5v-3h-8v14c0 .552.448 1 1 1h17c.552 0 1-.448 1-1v-11h-11z'\n}];\n\nconst documentation = [\n\t'M18.375 16.625h-9v-13h9v13zm-10.5-14.5v15c0 .552.447 1 1 1h11v-16h-12z',\n\t'M14.125 20.375h-8.25c-.137 0-.25-.112-.25-.25V6.875h1.25v-1.5h-2.75v14.75c0 .965.786 1.75 1.75 1.75h9.75v-2.75h-1.5v1.25z',\n\t{\n\t\ttagName: 'circle',\n\t\tcx: 14,\n\t\tcy: 6.5,\n\t\tr: 1.5\n\t},\n\t'M14.75 9h.75v1.5h-.75v3H16V15h-4v-1.5h1.25v-3h-.75V9h.75v-.004h1.5V9z'\n];\n\nconst issue = [\n\t'M19.98 10.99l-2.647-5.295c-.385-.77-1.158-1.248-2.02-1.248h-6.63c-.858 0-1.633.48-2.018 1.248L4.018 10.99c-.156.313-.238.66-.238 1.01s.082.697.237 1.01l2.648 5.295c.385.77 1.16 1.248 2.02 1.248h6.63c.86 0 1.633-.48 2.018-1.247l2.647-5.296c.156-.312.24-.66.24-1.01s-.083-.697-.24-1.01zm-1.34 1.35l-2.648 5.295c-.127.256-.39.418-.677.418h-6.63c-.287 0-.55-.162-.677-.418L5.36 12.34c-.053-.11-.08-.225-.08-.34 0-.116.026-.23.08-.338l2.647-5.297c.128-.256.39-.418.677-.418h6.63c.287 0 .55.162.677.418l2.65 5.297c.053.106.08.222.08.338 0 .115-.027.23-.08.34z',\n\t{\n\t\ttagName: 'circle',\n\t\tcx: 12,\n\t\tcy: 15,\n\t\tr: 1.5\n\t},\n\t'M11.25 7.474h1.5v4.5h-1.5z'\n];\n\nconst command = [\n\t'M20.5 5.5h-17c-.55 0-1 .45-1 1v11c0 .552.45 1 1 1h17c.552 0 1-.448 1-1v-11c0-.55-.448-1-1-1zM20 17H4V7h16v10z',\n\t'M8.375 14.25h7.25v1.5h-7.25zm-2.875-6H7v1.5H5.5zm2.875 0h1.5v1.5h-1.5zm2.875 0h1.5v1.5h-1.5zm5.75 0h1.5v1.5H17zm-2.875 0h1.5v1.5h-1.5zm-4.313 3h1.5v1.5h-1.5zm2.876 0h1.5v1.5h-1.5zm-7.188 0h2.938v1.5H5.5zm10.078 0h2.938v1.5h-2.938zm-10.078 3H7v1.5H5.5zm11.516 0h1.5v1.5h-1.5z'\n];\n\nexport default {\n\t'arrow-double-left': () => arrowDoubleLeft,\n\t'arrow-double-right': () => arrowDoubleRight,\n\t'arrow-left': () => arrowLeft,\n\t'arrow-right': () => arrowRight,\n\t'atoms': () => atoms,\n\t'checkers-inverted': () => checkers(true),\n\t'checkers': () => checkers(),\n\t'code': () => code,\n\t'command': () => command,\n\t'dark': () => dark,\n\t'dependencies': () => dependencies,\n\t'documentation': () => documentation,\n\t'ecospheres': () => ecospheres,\n\t'environment': () => environment,\n\t'folder-open': () => folderOpen,\n\t'folder': () => folder,\n\t'fullscreen': () => fullscreen,\n\t'globals': () => globals,\n\t'home': () => home,\n\t'issue': () => issue,\n\t'light': () => light,\n\t'molecules': () => molecules,\n\t'organisms': () => organisms,\n\t'pages': () => pages,\n\t'pattern': () => pattern,\n\t'patternplate': () => patternplate,\n\t'polymers': () => polymers,\n\t'react': () => react,\n\t'reload': () => reload,\n\t'rulers': () => rulers,\n\t'search': () => search,\n\t'templates': () => templates\n};\n\nfunction checkers(inverted) {\n\tconst length = 20;\n\tconst count = 5;\n\tconst dim = length / count;\n\tconst offset = (24 - length) / 2;\n\tconst field = (count * count) / 2;\n\n\tconst fields = range(count * count)\n\t\t.map((_, i) => {\n\t\t\tconst x = i % count;\n\t\t\tconst y = (i - x) / count;\n\n\t\t\tconst filled = y % 2 === 0 ?\n\t\t\t\tx % 2 === 0 :\n\t\t\t\tx % 2 !== 0;\n\n\t\t\tif (!filled) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst product = (y + 1) * (x + 1);\n\t\t\tconst inArea = inverted ? true : product <= field;\n\n\t\t\tif (!inArea) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn rect({\n\t\t\t\tx: offset + x * dim,\n\t\t\t\ty: offset + y * dim,\n\t\t\t\twidth: dim,\n\t\t\t\theight: dim\n\t\t\t});\n\t\t})\n\t\t.filter(Boolean);\n\n\treturn join(fields);\n}\n\nfunction rect(props) {\n\tconst {width, height, x, y, ...p} = props;\n\treturn {\n\t\t...p,\n\t\td: `M${x},${y}h${width}v${height}h-${width}z`\n\t};\n}\n\nfunction join(paths) {\n\tconst d = paths.map(path => path.d).join('');\n\treturn [{\n\t\td\n\t}];\n}\n","import React, {PropTypes as t} from 'react';\nimport join from 'classnames';\nimport render from './render';\n\nexport default Markdown;\n\nfunction Markdown(props) {\n\tconst className = join('markdown', props.className);\n\treturn (\n\t\t<div className={className}>\n\t\t\t{render(props.source, {\n\t\t\t\tbase: props.base,\n\t\t\t\thash: props.hash,\n\t\t\t\tquery: props.query,\n\t\t\t\tpathname: props.pathname,\n\t\t\t\tonHashChange: props.scrollTo\n\t\t\t})}\n\t\t</div>\n\t);\n}\n\nMarkdown.propTypes = {\n\tbase: t.string.isRequired,\n\tclassName: t.string,\n\thash: t.string.isRequired,\n\tpathname: t.string.isRequired,\n\tquery: t.object.isRequired,\n\tscrollTo: t.func.isRequired,\n\tsource: t.string\n};\n","import React, {PropTypes as t} from 'react';\nimport Code from '../code';\n\nexport default MarkdownCode;\n\nfunction MarkdownCode(props) {\n\tconst language = parseLanguage(props.className);\n\n\tif (!language) {\n\t\treturn (\n\t\t\t<code>\n\t\t\t\t{props.children}\n\t\t\t</code>\n\t\t);\n\t}\n\n\tconst source = props.children.join('');\n\treturn (\n\t\t<Code language={language}>\n\t\t\t{source}\n\t\t</Code>\n\t);\n}\n\nMarkdownCode.propTypes = {\n\tchildren: t.any.isRequired,\n\tclassName: t.string\n};\n\nfunction parseLanguage(classNames = '') {\n\tconst matches = classNames.split(' ')\n\t\t.map(className => className.split('-'))\n\t\t.filter(entry => entry[0] === 'language')\n\t\t.map(entry => entry[1]);\n\treturn matches[0];\n}\n","import React, {PropTypes as t} from 'react';\n\nexport default MarkdownHeadline;\n\nfunction MarkdownHeadline(props) {\n\tconst {tagName: TagName, ...p} = props;\n\tconst children = Array.isArray(p.children) ? p.children.join('') : p.children;\n\tconst id = children.split(' ').join('-').toLowerCase();\n\n\treturn (\n\t\t<TagName id={id}>\n\t\t\t{props.children}\n\t\t</TagName>\n\t);\n}\n\nMarkdownHeadline.propTypes = {\n\tchildren: t.any.isRequired,\n\ttagName: t.string.isRequired\n};\n","import url from 'url';\nimport React, {Component, PropTypes as t} from 'react';\nimport {Link} from '@marionebl/react-router';\n\nexport default class MarkdownLink extends Component {\n\tstatic propTypes = {\n\t\tbase: t.string.isRequired,\n\t\tchildren: t.any,\n\t\thash: t.string.isRequired,\n\t\thref: t.string.isRequired,\n\t\tonHashChange: t.func.isRequired,\n\t\tpathname: t.string.isRequired,\n\t\tquery: t.object.isRequired,\n\t\ttitle: t.string\n\t};\n\n\tstatic defaultProps = {\n\t\tonHashChange: () => {}\n\t};\n\n\tcomponentDidMount() {\n\t\tconst {props} = this;\n\t\tconst parsed = url.parse(props.href);\n\t\tconst pathname = parsed.pathname || '/';\n\t\tconst hasHash = Boolean(parsed.hash);\n\t\tconst isSamePathname = !parsed.pathname || props.pathname === pathname;\n\t\tconst isSameHash = hasHash && isSamePathname && props.hash === parsed.hash;\n\n\t\tif (isSameHash) {\n\t\t\tprops.onHashChange(parsed.hash.slice(1));\n\t\t}\n\t}\n\n\trender() {\n\t\tconst {props} = this;\n\t\tconst parsed = url.parse(props.href);\n\t\tconst pathname = parsed.pathname || '/';\n\t\tconst isAbsolute = Boolean(parsed.protocol);\n\n\t\tif (isAbsolute) {\n\t\t\treturn (\n\t\t\t\t<a\n\t\t\t\t\thref={props.href}\n\t\t\t\t\tclassName=\"link link--external\"\n\t\t\t\t\trel=\"noopener\"\n\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\ttitle={props.title || `Open ${props.href} in a new tab`}\n\t\t\t\t\t>\n\t\t\t\t\t{props.children}\n\t\t\t\t</a>\n\t\t\t);\n\t\t}\n\n\t\tconst hasHash = Boolean(parsed.hash);\n\t\tconst isSamePathname = !parsed.pathname || props.pathname === pathname;\n\n\t\tconst to = {\n\t\t\tpathname: hasHash && isSamePathname ?\n\t\t\t\t`${props.base}` :\n\t\t\t\t`/${[props.base, parsed.pathname].join('').split('/').filter(Boolean).join('/')}`,\n\t\t\tquery: props.query,\n\t\t\thash: parsed.hash\n\t\t};\n\n\t\tconst title = hasHash && isSamePathname ?\n\t\t\t`Jump to ${to.hash.slice(1)}` :\n\t\t\t`Navigate to ${to.pathname}`;\n\n\t\tconst onClick = () => {\n\t\t\tif (hasHash && isSamePathname) {\n\t\t\t\tprops.onHashChange(to.hash.slice(1));\n\t\t\t}\n\t\t};\n\n\t\treturn (\n\t\t\t<Link\n\t\t\t\tonClick={onClick}\n\t\t\t\ttitle={props.title || title}\n\t\t\t\tto={to}\n\t\t\t\t>\n\t\t\t\t{props.children}\n\t\t\t</Link>\n\t\t);\n\t}\n}\n","import gh from 'hast-util-sanitize/lib/github';\nimport {includes, merge} from 'lodash';\nimport React, {PropTypes as t, Children} from 'react';\nimport remark from 'remark';\nimport emoji from 'remark-gemoji-to-emoji';\nimport vdom from 'remark-vdom';\n\nimport MarkdownLink from './markdown-link';\nimport MarkdownCode from './markdown-code';\nimport MarkdownHeadline from './markdown-headline';\nimport wrap from './wrap';\n\nexport default render;\n\nfunction render(source, options) {\n\tconst {base, hash, highlights, highlight, query, pathname, onHashChange} = options;\n\tconst h = React.createElement;\n\tconst headline = wrap(MarkdownHeadline);\n\n\tconst table = wrap(strictChildren(MarkdownGeneric, ['thead', 'tbody']));\n\tconst tbody = wrap(strictChildren(MarkdownGeneric, ['tr']));\n\tconst tr = wrap(strictChildren(MarkdownGeneric, ['td', 'th']));\n\tconst td = wrap(MarkdownGeneric);\n\n\tconst link = {base, hash, query, pathname, onHashChange};\n\tconst code = {highlights, highlight};\n\n\tconst components = {\n\t\ta: wrap(MarkdownLink, link),\n\t\tcode: wrap(MarkdownCode, code),\n\t\th1: headline,\n\t\th2: headline,\n\t\th3: headline,\n\t\th4: headline,\n\t\th5: headline,\n\t\th6: headline,\n\t\ttable,\n\t\tthead: tbody,\n\t\ttbody,\n\t\ttr,\n\t\tth: td,\n\t\ttd\n\t};\n\n\tconst sanitize = merge({}, gh);\n\tsanitize.attributes = {\n\t\ta: ['href', 'title'],\n\t\tcode: ['className'],\n\t\timg: ['src', 'alt']\n\t};\n\n\tconst opts = {h, components, sanitize};\n\n\treturn remark()\n\t\t.use(vdom, opts)\n\t\t.use(emoji)\n\t\t.process(source)\n\t\t.contents;\n}\n\nfunction MarkdownGeneric(props) {\n\tconst Component = props.tagName;\n\treturn <Component>{props.children}</Component>;\n}\n\nMarkdownGeneric.propTypes = {\n\ttagName: t.string,\n\tchildren: t.any\n};\n\nfunction strictChildren(Component, tagNames) {\n\tfunction StrictChildren(props) {\n\t\tconst children = Children.toArray(props.children)\n\t\t\t.filter(child => {\n\t\t\t\treturn typeof child === 'object' && includes(tagNames, child.props.tagName);\n\t\t\t});\n\t\treturn <Component {...props}>{children}</Component>;\n\t}\n\n\tStrictChildren.propTypes = {\n\t\tchildren: t.any\n\t};\n\n\treturn StrictChildren;\n}\n","import React from 'react';\nimport {merge} from 'lodash';\n\nexport default wrap;\n\nfunction wrap(Component, options) {\n\tconst h = React.createElement;\n\treturn (tagName, props, children) => {\n\t\treturn h(Component, merge({}, options, props, {tagName}), children);\n\t};\n}\n","import React, {Component, PropTypes as t} from 'react';\nimport {Link} from '@marionebl/react-router';\nimport join from 'classnames';\nimport autobind from 'autobind-decorator';\nimport pure from 'pure-render-decorator';\nimport {noop} from 'lodash';\n\nimport Icon from '../common/icon';\n\n@pure\n@autobind\nexport default class Message extends Component {\n\tstatic propTypes = {\n\t\tbase: t.string.isRequired,\n\t\tid: t.string.isRequired,\n\t\tonTimeRequest: t.func.isRequired,\n\t\tonDismiss: t.func.isRequired,\n\t\tonRetry: t.func.isRequired\n\t};\n\n\tstatic defaultProps = {\n\t\tonTimeRequest: noop,\n\t\tonDismiss: noop,\n\t\tonRetry: noop\n\t};\n\n\thandleDismissClick() {\n\t\tthis.props.onDismiss(this.props.id);\n\t}\n\n\thandleRetryClick() {\n\t\tthis.props.onRetry();\n\t}\n\n\trender() {\n\t\tconst {props} = this;\n\t\tconst className = join('message', `message--${props.type}`);\n\t\treturn (\n\t\t\t<div className={className}>\n\t\t\t\t<div className=\"message__header\">\n\t\t\t\t\t{\n\t\t\t\t\t\tprops.title &&\n\t\t\t\t\t\t\t<div className=\"message__title\">\n\t\t\t\t\t\t\t\t{props.title}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t}\n\t\t\t\t\t<div className=\"message__action\">\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tprops.retry &&\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tonClick={this.handleRetryClick}\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tclassName=\"message__button\"\n\t\t\t\t\t\t\t\t\ttitle={`Retry loading ${props.pattern} [ctrl+r]`}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tRetry\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t}\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tonClick={this.handleDismissClick}\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclassName=\"message__button\"\n\t\t\t\t\t\t\ttitle={`Dismiss message [esc]`}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\tDismiss\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"message__body\">\n\t\t\t\t\t<pre className=\"message__preformatted\">\n\t\t\t\t\t\t{props.body}\n\t\t\t\t\t</pre>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"message__meta\">\n\t\t\t\t\t{\n\t\t\t\t\t\tprops.pattern &&\n\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\tto={{\n\t\t\t\t\t\t\t\t\tpathname: `${props.base}pattern/${props.pattern}`,\n\t\t\t\t\t\t\t\t\tquery: props.location.query\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tclassName=\"message__field\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Icon base={props.base} symbol=\"pattern\"/>\n\t\t\t\t\t\t\t\t{props.pattern}\n\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t}\n\t\t\t\t\t{\n\t\t\t\t\t\tprops.file &&\n\t\t\t\t\t\t\t<div className=\"message__field\">\n\t\t\t\t\t\t\t\t<Icon base={props.base} symbol=\"documentation\"/>\n\t\t\t\t\t\t\t\t{props.file.slice(-50)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t}\n\t\t\t\t\t{\n\t\t\t\t\t\t/* props.timestamp &&\n\t\t\t\t\t\t\t<div className=\"message__field\">\n\t\t\t\t\t\t\t\t<Icon symbol=\"globals\"/>\n\t\t\t\t\t\t\t\t{ago(new Date(props.timestamp))}\n\t\t\t\t\t\t\t\t{props.time - props.timestamp}\n\t\t\t\t\t\t\t</div> */\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n}\n","import React, {Component, PropTypes as types} from 'react';\nimport cx from 'classnames';\nimport autobind from 'autobind-decorator';\nimport pure from 'pure-render-decorator';\n\nimport Icon from './icon';\n\n@pure\n@autobind\nexport default class SearchField extends Component {\n\tstatic displayName = 'search-field';\n\n\tstatic propTypes = {\n\t\tbase: types.string.isRequired,\n\t\tblur: types.func.isRequired,\n\t\tclassName: types.string,\n\t\tcomponent: types.node,\n\t\tlinkTo: types.string.isRequired,\n\t\tname: types.string.isRequired,\n\t\tonBlur: types.func,\n\t\tonChange: types.func,\n\t\tonFocus: types.func,\n\t\tplaceholder: types.string,\n\t\ttitle: types.string,\n\t\tvalue: types.string\n\t};\n\n\tstatic defaultProps = {\n\t\tblur: () => {},\n\t\tcomponent: 'div',\n\t\tonChange: () => {},\n\t\tonFocus: () => {},\n\t\tonBlur: () => {}\n\t};\n\n\trender() {\n\t\tconst {\n\t\t\tbase,\n\t\t\tcomponent: Component,\n\t\t\tclassName: userClassName,\n\t\t\tvalue,\n\t\t\tname,\n\t\t\tonChange,\n\t\t\tonFocus,\n\t\t\tonBlur,\n\t\t\tplaceholder,\n\t\t\t...props\n\t\t} = this.props;\n\n\t\tconst {displayName} = SearchField;\n\t\tconst className = cx(displayName, userClassName);\n\t\tconst containerClassName = `${displayName}__container`;\n\t\tconst iconClassName = `${displayName}__icon`;\n\t\tconst inputClassName = `${displayName}__input`;\n\n\t\treturn (\n\t\t\t<Component className={className}>\n\t\t\t\t<label className={containerClassName}>\n\t\t\t\t\t<input\n\t\t\t\t\t\tclassName={inputClassName}\n\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\ttitle={props.title}\n\t\t\t\t\t\ttype=\"search\"\n\t\t\t\t\t\tname={name}\n\t\t\t\t\t\tonBlur={onBlur}\n\t\t\t\t\t\tonChange={onChange}\n\t\t\t\t\t\tonFocus={onFocus}\n\t\t\t\t\t\tonKeyDown={this.handleKeyDown}\n\t\t\t\t\t\t/>\n\t\t\t\t\t<Icon base={base} className={iconClassName} symbol=\"search\"/>\n\t\t\t\t</label>\n\t\t\t</Component>\n\t\t);\n\t}\n}\n","import React, {PropTypes as t} from 'react';\nimport join from 'classnames';\n\nimport Icon from './icon';\n\nexport default Select;\n\nfunction Select(props) {\n\tconst className = join('select', props.className);\n\n\treturn (\n\t\t<label className={className}>\n\t\t\t<select\n\t\t\t\tclassName=\"select__native\"\n\t\t\t\tonChange={props.onChange}\n\t\t\t\tvalue={props.value.value}\n\t\t\t\t>\n\t\t\t\t{\n\t\t\t\t\tprops.options.map(({value, name}) => {\n\t\t\t\t\t\treturn <option key={value} value={value}>{name}</option>;\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t</select>\n\t\t\t<span className=\"select__label\">\n\t\t\t\t{props.label}\n\t\t\t</span>\n\t\t\t<div className=\"select__body\">\n\t\t\t\t<span className=\"select__value\">\n\t\t\t\t\t{props.value.name}\n\t\t\t\t</span>\n\t\t\t\t<Icon\n\t\t\t\t\tbase={props.base}\n\t\t\t\t\tclassName=\"select__icon\"\n\t\t\t\t\tsymbol=\"arrow-right\"\n\t\t\t\t\t/>\n\t\t\t</div>\n\t\t</label>\n\t);\n}\n\nSelect.propTypes = {\n\tbase: t.string.isRequired,\n\tclassName: t.string,\n\tvalue: t.shape({\n\t\tvalue: t.string.isRequired,\n\t\tname: t.string.isRequired\n\t}),\n\toptions: t.arrayOf(t.shape({\n\t\tvalue: t.string.isRequired,\n\t\tname: t.string.isRequired\n\t})),\n\tonChange: t.func.isRequired\n};\n","import React, {Component, PropTypes as t} from 'react';\nimport {findDOMNode} from 'react-dom';\nimport {Link} from '@marionebl/react-router';\nimport autobind from 'autobind-decorator';\n\nimport Editor from '../common/editor';\nimport Markdown from '../../containers/markdown';\nimport Lightbox from '../lightbox';\n\n@autobind\nexport default class ConsoleLightbox extends Component {\n\tstatic propTypes = {\n\t\tbase: t.string.isRequired,\n\t\tonApplyState: t.func.isRequired,\n\t\tonClose: t.func.isRequired,\n\t\tstate: t.string.isRequired,\n\t\ttheme: t.oneOf(['dark', 'light']).isRequired\n\t};\n\n\tstate = {\n\t\tvalue: ''\n\t};\n\n\tcomponentDidMount() {\n\t\tif (this.ref) {\n\t\t\tconst node = findDOMNode(this.ref);\n\t\t\tnode.focus();\n\t\t}\n\t}\n\n\thandleApplyState() {\n\t\tif (isDisabled(this.state, this.props)) {\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tconst data = JSON.parse(this.state.value);\n\t\t\tthis.props.onApplyState(data);\n\t\t} catch (error) {\n\t\t\tconsole.error(error);\n\t\t}\n\t}\n\n\thandleChange(e) {\n\t\tthis.setState({value: e.target.value});\n\t}\n\n\thandleClose() {\n\t\tthis.props.onClose();\n\t}\n\n\thandleKeyDown(e) {\n\t\tif (e.ctrlKey && e.keyCode === 13) {\n\t\t\te.preventDefault();\n\t\t\tthis.handleApplyState();\n\t\t}\n\t\tif (e.keyCode === 27) {\n\t\t\tthis.handleClose();\n\t\t}\n\t}\n\n\tsaveRef(ref) {\n\t\tthis.ref = ref;\n\t}\n\n\trender() {\n\t\tconst {props} = this;\n\t\tconst disabled = isDisabled(this.state, this.props);\n\t\tconst title = disabled ?\n\t\t\t'No changes to apply' : 'Apply changes [ctrl+enter]';\n\n\t\treturn (\n\t\t\t<Lightbox\n\t\t\t\ttitle=\"Modify state\"\n\t\t\t\tbackdrop\n\t\t\t\tbuttons={[\n\t\t\t\t\t<button\n\t\t\t\t\t\tkey=\"Apply\"\n\t\t\t\t\t\tclassName=\"button console-lightbox__button console-lightbox__button--apply\"\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\ttitle={title}\n\t\t\t\t\t\tonClick={this.handleApplyState}\n\t\t\t\t\t\t>\n\t\t\t\t\t\tApply changes\n\t\t\t\t\t</button>,\n\t\t\t\t\t<Link\n\t\t\t\t\t\tkey=\"Close\"\n\t\t\t\t\t\tto={{\n\t\t\t\t\t\t\t...props.location,\n\t\t\t\t\t\t\tquery: {\n\t\t\t\t\t\t\t\t...props.location.query,\n\t\t\t\t\t\t\t\tlightbox: false\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ttitle=\"Close this lightbox [esc]\"\n\t\t\t\t\t\tclassName=\"button console-lightbox__button console-lightbox__button--abort\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\tClose\n\t\t\t\t\t</Link>\n\t\t\t\t]}\n\t\t\t\t>\n\t\t\t\t<Markdown\n\t\t\t\t\tbase={props.base}\n\t\t\t\t\tclassName=\"lightbox__instructions\"\n\t\t\t\t\tsource=\"> :rocket: Edit `patternplate-client` redux state directly\"\n\t\t\t\t\t/>\n\t\t\t\t<div className=\"console-lightbox__preview\">\n\t\t\t\t\t<Editor\n\t\t\t\t\t\tclassName=\"editor console-lightbox__state\"\n\t\t\t\t\t\tvalue={this.state.value || props.state}\n\t\t\t\t\t\tonChange={this.handleChange}\n\t\t\t\t\t\tonKeyDown={this.handleKeyDown}\n\t\t\t\t\t\tref={this.saveRef}\n\t\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</Lightbox>\n\t\t);\n\t}\n}\n\nfunction isDisabled(state, props) {\n\treturn !state.value || state.value === props.state;\n}\n","import React, {Component, PropTypes as t} from 'react';\nimport Markdown from '../../containers/markdown';\n\n// import Messages from './messages';\n// import pure from 'pure-render-decorator';\n\nclass Home extends Component {\n\tstatic propTypes = {\n\t\treadme: t.string.isRequired,\n\t\tbase: t.string.isRequired\n\t};\n\n\trender() {\n\t\tconst {readme, base} = this.props;\n\t\treturn (\n\t\t\t<div className=\"application-container application-container--home\">\n\t\t\t\t<Markdown source={readme} base={base} className=\"home\"/>\n\t\t\t</div>\n\t\t);\n\t}\n}\n\nexport default Home;\n","import React, {PropTypes as t} from 'react';\nimport {sortBy} from 'lodash';\nimport CSSTransitionGroup from 'react-transition-group/CSSTransitionGroup';\n\nimport Markdown from '../common/markdown';\nimport Message from '../common/message';\nimport urlQuery from '../../utils/url-query';\nimport getIdByPathname from '../../utils/get-id-by-pathname';\nimport PatternFolder from '../pattern/pattern-folder';\nimport PatternSection from '../pattern/pattern-section';\nimport navigate from '../../utils/navigate';\n\nexport default Content;\n\nconst sortTypes = ['folder', 'pattern'];\nconst rateType = item => sortTypes.indexOf(item.type);\n\nfunction Content(props) {\n\tconst {base, config, location} = props;\n\tconst {hierarchy} = config;\n\n\tconst {pathname} = urlQuery.parse(location.pathname);\n\tconst id = getIdByPathname(pathname, props.base);\n\n\tconst fragments = id.split('/');\n\tconst depth = fragments.length - 1;\n\tconst up = depth > 0 ? fragments.slice(0, fragments.length - 1).join('/') : '';\n\tconst item = navigate(id, props.navigation);\n\n\tif (!item) {\n\t\treturn (\n\t\t\t<div className=\"application-container application-container--pattern\">\n\t\t\t\t<div className=\"not-found-section\">\n\t\t\t\t\t<Markdown source={getNotFoundSource(id)}/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst itemDefaults = {base, location};\n\tconst items = sortBy(sortBy(getItems(item, hierarchy, itemDefaults, props.hide), 'name'), rateType);\n\n\treturn (\n\t\t<div className=\"application-container application-container--pattern\">\n\t\t\t{\n\t\t\t\titem.type === 'folder' &&\n\t\t\t\t\t<PatternFolder\n\t\t\t\t\t\tid={id}\n\t\t\t\t\t\tlocation={location}\n\t\t\t\t\t\titems={items}\n\t\t\t\t\t\tup={up}\n\t\t\t\t\t\tbase={base}\n\t\t\t\t\t\t/>\n\t\t\t}\n\t\t\t{\n\t\t\t\titem.type === 'pattern' &&\n\t\t\t\t\t<PatternSection\n\t\t\t\t\t\tid={id}\n\t\t\t\t\t\tdata={props.pattern}\n\t\t\t\t\t\tnavigation={props.navigation}\n\t\t\t\t\t\tconfig={props.config}\n\t\t\t\t\t\tlocation={location}\n\t\t\t\t\t\ttype={item.type}\n\t\t\t\t\t\tonDataRequest={props.onLoad}\n\t\t\t\t\t\tbase={base}\n\t\t\t\t\t\t/>\n\t\t\t}\n\t\t\t<CSSTransitionGroup\n\t\t\t\tcomponent=\"aside\"\n\t\t\t\ttransitionName=\"pattern-content-transition\"\n\t\t\t\tclassName=\"messages\"\n\t\t\t\ttransitionEnterTimeout={300}\n\t\t\t\ttransitionLeaveTimeout={300}\n\t\t\t\t>\n\t\t\t\t{\n\t\t\t\t\tprops.messages.map(message => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Message\n\t\t\t\t\t\t\t\tid={message.id}\n\t\t\t\t\t\t\t\tkey={message.id}\n\t\t\t\t\t\t\t\ttype={message.type}\n\t\t\t\t\t\t\t\ttitle={message.subject}\n\t\t\t\t\t\t\t\tbody={message.body || message.stack}\n\t\t\t\t\t\t\t\tpattern={String(message.pattern).trim()}\n\t\t\t\t\t\t\t\tpayload={message.payload}\n\t\t\t\t\t\t\t\tretry={message.retry}\n\t\t\t\t\t\t\t\tfile={message.file}\n\t\t\t\t\t\t\t\ttimestamp={message.timestamp}\n\t\t\t\t\t\t\t\tonDismiss={props.onDismiss}\n\t\t\t\t\t\t\t\tonRetry={props.onRetry}\n\t\t\t\t\t\t\t\tlocation={location}\n\t\t\t\t\t\t\t\tbase={base}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t</CSSTransitionGroup>\n\t\t</div>\n\t);\n}\n\nContent.propTypes = {\n\tbase: t.string.isRequired,\n\tconfig: t.object.isRequired,\n\thide: t.bool.isRequired,\n\tlocation: t.shape({\n\t\tpathname: t.string.isRequired\n\t}).isRequired,\n\tnavigation: t.object.isRequired,\n\tonDismiss: t.func.isRequired,\n\tonLoad: t.func.isRequired,\n\tonRetry: t.func.isRequired,\n\tpattern: t.object.isRequired,\n\tmessages: t.array.isRequired\n};\n\nfunction getItemName(item, hierarchy) {\n\tif (item.type === 'pattern') {\n\t\treturn item.manifest.displayName || item.manifest.name || item.id;\n\t}\n\tconst configured = hierarchy[item.id] || {};\n\treturn configured.displayName || item.id;\n}\n\nfunction getNotFoundSource(id) {\n\treturn `\n# Pattern not found\n\nWe looked everywhere and could not find pattern \\`${id}\\`.\n\nYou might want to navigate back to [Home](/) or use the search.\n\n---\n\nHelp us to make this message more helpful on [GitHub](https://github.com/sinnerschrader/patternplate)\n`;\n}\n\nfunction getItems(root, hierarchy, defaults, hide) {\n\tif (root.type !== 'folder') {\n\t\treturn [];\n\t}\n\treturn Object.values(root.children)\n\t\t.map(selectPatternData(hierarchy, defaults, hide))\n\t\t.filter(item => item.type !== 'pattern' || item.display);\n}\n\nfunction selectPatternData(hierarchy, defaults, hide) {\n\treturn child => {\n\t\tconst amend = child.type === 'pattern' ?\n\t\t{\n\t\t\tversion: child.manifest.version,\n\t\t\tflag: child.manifest.flag,\n\t\t\ttags: child.manifest.tags,\n\t\t\tdisplay: hide ? child.manifest.display !== false : true\n\t\t} :\n\t\t{};\n\n\t\treturn {\n\t\t\t...defaults,\n\t\t\tid: child.id,\n\t\t\tname: getItemName(child, hierarchy),\n\t\t\ttype: child.type,\n\t\t\t...amend\n\t\t};\n\t};\n}\n","import React, {Component, PropTypes as t} from 'react';\nimport {Link} from '@marionebl/react-router';\nimport autobind from 'autobind-decorator';\n// import strip from 'strip-indent';\n\nimport queryString from 'query-string';\n\nimport Lightbox from '../lightbox';\nimport Editor from '../common/editor';\nimport Markdown from '../../containers/markdown';\n\n@autobind\nexport default class ProblemLightbox extends Component {\n\tstatic propTypes = {\n\t\tbase: t.string.isRequired,\n\t\tstate: t.string.isRequired,\n\t\ttheme: t.oneOf(['dark', 'light']).isRequired,\n\t\tversion: t.string.isRequired,\n\t\tserverVersion: t.string.isRequired,\n\t\tclientVersion: t.string.isRequired,\n\t\tbrowserName: t.string.isRequired,\n\t\tbrowserVersion: t.string.isRequired\n\t};\n\n\trender() {\n\t\tconst {props} = this;\n\t\tconst issueTemplate = getIssueTemplate(props, true);\n\n\t\tconst buttons = [\n\t\t\t<Link\n\t\t\t\tkey=\"0\"\n\t\t\t\tto={{\n\t\t\t\t\t...props.location,\n\t\t\t\t\tquery: {\n\t\t\t\t\t\t...props.location.query,\n\t\t\t\t\t\tissue: false\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\ttitle=\"Close this lightbox [esc]\"\n\t\t\t\tclassName=\"button lightbox__button\"\n\t\t\t\t>\n\t\t\t\tClose\n\t\t\t</Link>\n\t\t];\n\n\t\treturn (\n\t\t\t<Lightbox\n\t\t\t\ttitle=\"Report an issue\"\n\t\t\t\tbackdrop\n\t\t\t\tbuttons={buttons}\n\t\t\t\t>\n\t\t\t\t<Markdown\n\t\t\t\t\tbase={props.base}\n\t\t\t\t\tclassName=\"lightbox__instructions\"\n\t\t\t\t\tsource={getInstructions(props)}\n\t\t\t\t\t/>\n\t\t\t\t<div className=\"problem-lightbox__preview\">\n\t\t\t\t\t<Editor\n\t\t\t\t\t\tclassName=\"editor problem-lightbox__state\"\n\t\t\t\t\t\treaOnly\n\t\t\t\t\t\tvalue={issueTemplate}\n\t\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</Lightbox>\n\t\t);\n\t}\n}\n\nfunction getIssueTemplate(props, includeDetails) {\n\treturn `\n- [ ] Provide a brief title of the problem\n- [ ] Describe what you are trying to do\n- [ ] Describe actual behaviour\n- [ ] Describe expected behaviour\n\n## Steps to reproduce\n\\`[Describe how to produce the bug in the application by manual action]\\`\n\n## Actual\n\\`[The faulty behaviour as produced by the steps above]\\`\n\n## Expected\n\\`[Result of the steps above that match user expectations and allow usage]\\`\n\n${includeDetails ? getDetails(props) : ''}\n`;\n}\n\nfunction getDetails(props) {\n\treturn `\n## Details\n<details id=\"application-state\">\n<summary>Application State</summary>\n\\`\\`\\`json\n${props.state}\n\\`\\`\\`\n</details>\n<details>\n<summary>Versions</summary>\n<table>\n\t<thead>\n\t\t<tr>\n\t\t\t<th>\n\t\t\t\tSoftware\n\t\t\t</th>\n\t\t\t<th>\n\t\t\t\tVersion\n\t\t\t</th>\n\t\t</tr>\n\t</thead>\n\t<tbody>\n\t\t<tr>\n\t\t\t<td>\n\t\t\t\tpatternplate\n\t\t\t</td>\n\t\t\t<th>\n\t\t\t\t${props.version}\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td>\n\t\t\t\tpatternplate-server\n\t\t\t</td>\n\t\t\t<th>\n\t\t\t\t${props.serverVersion}\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td>\n\t\t\t\tpatternplate-client\n\t\t\t</td>\n\t\t\t<th>\n\t\t\t\t${props.clientVersion}\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td>\n\t\t\t\t${props.browserName}\n\t\t\t</td>\n\t\t\t<th>\n\t\t\t\t${props.browserVersion}\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td>\n\t\t\t\t${props.runtimeName ? props.runtimeName : 'Runtime'}\n\t\t\t</td>\n\t\t\t<th>\n\t\t\t\t${props.runtimeVersion}\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td>\n\t\t\t\t${props.clientOsName ? props.clientOsName : 'OS'} (Client)\n\t\t\t</td>\n\t\t\t<th>\n\t\t\t\t${props.clientOsVersion}\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td>\n\t\t\t\t${props.serverOsName ? props.serverOsName : 'OS'} (Server)\n\t\t\t</td>\n\t\t\t<th>\n\t\t\t\t${props.serverOsVersion}\n\t\t\t</td>\n\t\t</tr>\n\t</tbody>\n</table>\n</details>\n`;\n}\n\nfunction getInstructions(props) {\n\tconst query = queryString.stringify({\n\t\ttitle: `[v${props.version}]`,\n\t\tbody: `[Please paste the contents of patternplate issue template here]`\n\t});\n\n\treturn `\n> patternplate issue template, please use for issue reporting :bow:\n\n\\`[Cmd+A] [Cmd+C]\\` the markdown below into a new isse at\n[sinnerschrader/patternplate](https://github.com/sinnerschrader/patternplate/issues/new?${query})\n`;\n}\n","import React, {PropTypes as t} from 'react';\nimport {Link} from '@marionebl/react-router';\n\nimport Markdown from '../../containers/markdown';\nimport Lightbox from '../lightbox';\n\nconst source = `\n> Better living through keyboard controls. :tada:\n\n\\`patternplate-client\\` provides a number of keyboard shortcuts for your convenience.\nMost links reveal attached keyboard shortcuts when hovered, complementing the table below.\n\n| Combination         | Scope      | Effect                                         |\n|:-------------------:|:----------:|:-----------------------------------------------|\n|\\`Ctrl+Alt+k\\`       | Global     | Show this reference                            |\n|\\`Ctrl+Alt+c\\`       | Global     | Toggle the debug console                       |\n|\\`Ctrl+Alt+d\\`       | Global     | Open the documentation                         |\n|\\`Ctrl+Alt+e\\`       | Global     | Toggle expansion of the sidebar                |\n|\\`Ctrl+Alt+enter\\`   | Console    | Apply changes to application state             |\n|\\`Ctrl+Alt+f\\`       | Pattern    | Open current pattern in new tab                |\n|\\`Ctrl+Alt+h\\`       | Global     | Toggle visibility of hidden patterns           |\n|\\`Ctrl+Alt+i\\`       | Global     | Toggle issue reportng helper                   |\n|\\`Ctrl+Alt+l\\`       | Pattern    | Toggle pattern rulers                          |\n|\\`Ctrl+Alt+o\\`       | Global     | Show/hide opacity indicators                   |\n|\\`Ctrl+Alt+r\\`       | Pattern    | Reload the current pattern                     |\n|\\`Ctrl+Alt+space\\`   | Global     | Toggle search focus                            |\n|\\`Ctrl+Alt+t\\`       | Global     | Toggle active theme                            |\n|\\`Esc\\`              | Global     | Close everything that could be considered open |\n`;\n\nexport default ShortcutsLightbox;\n\nfunction ShortcutsLightbox(props) {\n\tconst buttons = [\n\t\t<Link\n\t\t\tkey=\"0\"\n\t\t\tto={{\n\t\t\t\t...props.location,\n\t\t\t\tquery: {\n\t\t\t\t\t...props.location.query,\n\t\t\t\t\tlightbox: false\n\t\t\t\t}\n\t\t\t}}\n\t\t\ttitle=\"Close this lightbox [esc]\"\n\t\t\tclassName=\"button lightbox__button\"\n\t\t\t>\n\t\t\tClose\n\t\t</Link>\n\t];\n\treturn (\n\t\t<Lightbox\n\t\t\ttitle=\"Keyboard shortcuts\"\n\t\t\tbackdrop\n\t\t\tbuttons={buttons}\n\t\t\t>\n\t\t\t<Markdown\n\t\t\t\tbase={props.base}\n\t\t\t\tclassName=\"lightbox__instructions\"\n\t\t\t\tsource={source}\n\t\t\t\t/>\n\t\t</Lightbox>\n\t);\n}\n\nShortcutsLightbox.propTypes = {\n\tbase: t.string.isRequired,\n\tlocation: t.shape({\n\t\tpathname: t.string.isRequired,\n\t\tquery: t.object.isRequired\n\t})\n};\n","import React, {PropTypes as t} from 'react';\nimport {Link, IndexLink} from '@marionebl/react-router';\nimport {assign, camelCase, find, keys, startsWith} from 'lodash';\nimport unified from 'unified';\nimport parse from 'rehype-parse';\nimport select from 'unist-util-select';\nimport toh from 'hast-to-hyperscript';\n\nimport Icon from '../common/icon';\n\nexport default Header;\n\nfunction Header(props) {\n\tconst to = {pathname: props.base, query: props.query};\n\tconst enabledTo = {\n\t\tpathname: props.pathname,\n\t\tquery: {\n\t\t\t...props.query,\n\t\t\t'menu-enabled': !props.menuEnabled\n\t\t}\n\t};\n\n\treturn (\n\t\t<header className=\"main-header application__header\">\n\t\t\t<IndexLink\n\t\t\t\tto={to}\n\t\t\t\ttitle=\"Navigate to documentation [ctrl+d]\"\n\t\t\t\tclassName=\"logo\"\n\t\t\t\t>\n\t\t\t\t<LiteralIcon icon={props.icon}/>\n\t\t\t\t<span className=\"main-header__title\">\n\t\t\t\t\t{props.title}\n\t\t\t\t</span>\n\t\t\t</IndexLink>\n\t\t\t<div className=\"toolbar\">\n\t\t\t\t<Link\n\t\t\t\t\tclassName=\"menu\"\n\t\t\t\t\tto={enabledTo}\n\t\t\t\t\t>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\tbase={props.base}\n\t\t\t\t\t\tsymbol=\"patternplate\"\n\t\t\t\t\t\tfallback={false}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tprops.menuEnabled ?\n\t\t\t\t\t\t\t\t'Disable Menu' :\n\t\t\t\t\t\t\t\t'Enable Menu'\n\t\t\t\t\t\t}\n\t\t\t\t\t</Icon>\n\t\t\t\t</Link>\n\t\t\t</div>\n\t\t</header>\n\t);\n}\n\nHeader.propTypes = {\n\tbase: t.string.isRequired,\n\ticon: t.string.isRequired,\n\tmenuEnabled: t.bool.isRequired,\n\tpathname: t.string.isRequired,\n\tquery: t.object.isRequired,\n\ttitle: t.string.isRequired,\n\tversion: t.string.isRequired\n};\n\nfunction LiteralIcon(props) {\n\tconst isSVG = startsWith(props.icon.trim(), '<svg');\n\tconst parsed = isSVG ? toSVGElement(props.icon) : null;\n\tconst dim = parsed ? {width: `${parsed.props.width}px`, height: `${parsed.props.height}px`} : null;\n\treturn parsed ?\n\t\t<div className=\"icon\"><div className=\"svg-icon\" style={dim}>{parsed}</div></div> :\n\t\t<Icon symbol={props.icon} fallback={false}/>;\n}\n\nLiteralIcon.propTypes = {\n\ticon: t.string.isRequired\n};\n\nfunction toSVGElement(input) {\n\tconst ast = unified()\n\t\t.use(parse)\n\t\t.parse(input);\n\tconst svg = find(select(ast, '*'), e => e.tagName === 'svg');\n\tconst el = toh(React.createElement, svg);\n\tconst props = keys(el.props).reduce((props, prop) => {\n\t\tprops[camelCase(prop)] = el.props[prop];\n\t\treturn props;\n\t}, {});\n\treturn assign({}, el, {props});\n}\n","import React, {PropTypes as t} from 'react';\n\nexport default Lightbox;\n\nfunction Lightbox(props) {\n\treturn (\n\t\t<div className=\"lightbox\">\n\t\t\t{\n\t\t\t\tprops.backdrop && <div className=\"lightbox__backdrop\"/>\n\t\t\t}\n\t\t\t<div className=\"lightbox__container\">\n\t\t\t\t<div className=\"lightbox__title\">\n\t\t\t\t\t<h3 className=\"h h3\">\n\t\t\t\t\t\t{props.title}\n\t\t\t\t\t</h3>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"lightbox__children\">\n\t\t\t\t\t{props.children}\n\t\t\t\t</div>\n\t\t\t\t<div className=\"lightbox__button-row\">\n\t\t\t\t\t{props.buttons}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nLightbox.propTypes = {\n\ttitle: t.string.isRequired,\n\tbackdrop: t.bool.isRequired,\n\tchildren: t.any,\n\tbuttons: t.arrayOf(t.element)\n};\n","import React, {PropTypes as t} from 'react';\nimport autobind from 'autobind-decorator';\nimport classnames from 'classnames';\nimport pure from 'pure-render-decorator';\n\nimport NavigationTree from './navigation-tree';\nimport NavigationItem from './navigation-item';\nimport NavigationToolbar from './navigation-toolbar';\nimport SearchField from '../common/search-field';\nimport Header from '../header';\n\n@pure\nclass Navigation extends React.Component {\n\tstatic propTypes = {\n\t\tactivePattern: t.string.isRequired,\n\t\tbase: t.string.isRequired,\n\t\tenabled: t.bool.isRequired,\n\t\texpanded: t.bool.isRequired,\n\t\thierarchy: t.object,\n\t\thide: t.bool.isRequired,\n\t\ticon: t.string.isRequired,\n\t\tmenuEnabled: t.bool.isRequired,\n\t\tnavigation: t.object.isRequired,\n\t\tonSearch: t.func,\n\t\tonSearchBlur: t.func,\n\t\tonThemeChange: t.func.isRequired,\n\t\tpathname: t.string.isRequired,\n\t\tquery: t.object.isRequired,\n\t\trequestSearchBlur: t.func.isRequired,\n\t\tsearchQuery: t.string,\n\t\tsearchValue: t.string,\n\t\ttheme: t.string.isRequired,\n\t\ttitle: t.string.isRequired,\n\t\tversion: t.string.isRequired\n\t};\n\n\tstatic defaultProps = {\n\t\tonSearch: () => {},\n\t\tonSearchBlur: () => {},\n\t\trequestSearchBlur: () => {}\n\t}\n\n\t@autobind\n\thandleSearchSubmit(e) {\n\t\te.preventDefault();\n\t}\n\n\t@autobind\n\thandleSearchChange(e) {\n\t\tthis.props.onSearch(e.target.value);\n\t}\n\n\trender() {\n\t\tconst {props} = this;\n\n\t\tconst className = classnames('navigation application__navigation', {\n\t\t\t'slim': !props.expanded,\n\t\t\t'navigation--expanded': props.expanded\n\t\t});\n\n\t\treturn (\n\t\t\t<nav className={className}>\n\t\t\t\t<Header\n\t\t\t\t\tbase={props.base}\n\t\t\t\t\ticon={props.icon}\n\t\t\t\t\tmenuEnabled={props.menuEnabled}\n\t\t\t\t\tpathname={props.pathname}\n\t\t\t\t\tquery={props.query}\n\t\t\t\t\ttitle={props.title}\n\t\t\t\t\tversion={props.version}\n\t\t\t\t\t/>\n\t\t\t\t<NavigationTree\n\t\t\t\t\tactivePattern={props.activePattern}\n\t\t\t\t\tbase={props.base}\n\t\t\t\t\tdata={props.navigation}\n\t\t\t\t\tquery={props.query}\n\t\t\t\t\thierarchy={props.hierarchy}\n\t\t\t\t\thide={props.hide}\n\t\t\t\t\t>\n\t\t\t\t\t<form onSubmit={this.handleSearchSubmit} method=\"GET\">\n\t\t\t\t\t\t<SearchField\n\t\t\t\t\t\t\tbase={props.base}\n\t\t\t\t\t\t\tblur={this.props.requestSearchBlur}\n\t\t\t\t\t\t\tclassName=\"navigation__search-field\"\n\t\t\t\t\t\t\tlinkTo=\"/search\"\n\t\t\t\t\t\t\tname=\"search\"\n\t\t\t\t\t\t\tonBlur={this.handleSearchBlur}\n\t\t\t\t\t\t\tonChange={this.handleSearchChange}\n\t\t\t\t\t\t\tonFocus={this.handleSearchFocus}\n\t\t\t\t\t\t\tplaceholder=\"Search\"\n\t\t\t\t\t\t\ttitle=\"Search for patterns [ctrl+space]\"\n\t\t\t\t\t\t\tvalue={props.searchValue}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t</form>\n\t\t\t\t\t<NavigationItem\n\t\t\t\t\t\tactive={props.pathname === props.base}\n\t\t\t\t\t\tbase={props.base}\n\t\t\t\t\t\tkey=\"root\"\n\t\t\t\t\t\tlinkTo=\"/\"\n\t\t\t\t\t\tname=\"Documentation\"\n\t\t\t\t\t\tquery={props.query}\n\t\t\t\t\t\tsymbol=\"documentation\"\n\t\t\t\t\t\ttitle=\"Navigate to documentation [ctrl+d]\"\n\t\t\t\t\t\ttype=\"page\"\n\t\t\t\t\t\t/>\n\t\t\t\t</NavigationTree>\n\t\t\t\t<NavigationToolbar\n\t\t\t\t\tbase={props.base}\n\t\t\t\t\texpanded={props.expanded}\n\t\t\t\t\tonThemeChange={props.onThemeChange}\n\t\t\t\t\tpathname={props.pathname}\n\t\t\t\t\tquery={props.query}\n\t\t\t\t\ttheme={props.theme}\n\t\t\t\t\t/>\n\t\t\t</nav>\n\t\t);\n\t}\n}\n\nexport default Navigation;\n","import React, {PropTypes as types} from 'react';\nimport {Link} from '@marionebl/react-router';\nimport autobind from 'autobind-decorator';\nimport classnames from 'classnames';\nimport {omit} from 'lodash';\nimport Icon from '../common/icon';\n\nfunction getPathName(...fragments) {\n\tconst raw = fragments\n\t\t.join('/')\n\t\t.split('/')\n\t\t.filter(Boolean)\n\t\t.map(fragment => fragment === '/' ? '' : fragment)\n\t\t.filter(Boolean)\n\t\t.join('/');\n\tconst rawish = raw === '' ? '/' : raw;\n\tconst pre = rawish[0] === '/' ? '' : '/';\n\tconst post = rawish[rawish.length - 1] === '/' ? '' : '/';\n\treturn `${pre}${rawish}${post}`;\n}\n\nexport default class NavigationItem extends React.Component {\n\tstatic propTypes = {\n\t\tbase: types.string.isRequired,\n\t\tcomponent: types.node,\n\t\tactive: types.bool,\n\t\thidden: types.bool,\n\t\tanchored: types.bool,\n\t\tlinkTo: types.string,\n\t\tname: types.string.isRequired,\n\t\tquery: types.object.isRequired,\n\t\tsymbol: types.string.isRequired,\n\t\tsymbolActive: types.string,\n\t\tsearchQuery: types.string,\n\t\tid: types.oneOfType([\n\t\t\ttypes.string,\n\t\t\ttypes.number\n\t\t]),\n\t\tchildren: types.oneOfType([\n\t\t\ttypes.node,\n\t\t\ttypes.arrayOf(types.node)\n\t\t]),\n\t\tonClick: types.func,\n\t\ttype: types.string\n\t};\n\n\tstatic defaultProps = {\n\t\tcomponent: 'li',\n\t\tactive: false,\n\t\thidden: false,\n\t\tlinkTo: 'pattern',\n\t\tonClick: () => {}\n\t};\n\n\t@autobind\n\thandleClick(e) {\n\t\tthis.props.onClick(e, this);\n\t}\n\n\trender() {\n\t\tconst {props} = this;\n\t\tconst {component: Component} = props;\n\n\t\tconst modifiers = {\n\t\t\t'child-active': props.active,\n\t\t\t'hidden': props.hidden,\n\t\t\t'anchored': props.anchored\n\t\t};\n\n\t\tconst itemClassName = classnames(`navigation-item navigation-item--${props.type}`, modifiers);\n\t\tconst linkClassName = classnames('navigation-link', modifiers);\n\t\tconst pathname = getPathName(props.base, props.linkTo, props.id);\n\t\tconst to = {pathname, query: omit(props.query, ['menu-enabled'])};\n\t\tconst title = props.title || `Navigate to ${props.name} ${props.type}`;\n\t\tconst symbol = props.active && (props.symbol === 'folder') ? props.symbolActive : props.symbol;\n\n\t\treturn (\n\t\t\t<Component className={itemClassName}>\n\t\t\t\t<Link\n\t\t\t\t\tonClick={this.handleClick}\n\t\t\t\t\tto={to}\n\t\t\t\t\ttitle={title}\n\t\t\t\t\tclassName={linkClassName}\n\t\t\t\t\t>\n\t\t\t\t\t<Icon symbol={symbol}/>\n\t\t\t\t\t<span>{props.name}</span>\n\t\t\t\t</Link>\n\t\t\t\t{\n\t\t\t\t\tprops.active && props.children\n\t\t\t\t}\n\t\t\t</Component>\n\t\t);\n\t}\n}\n","import React, {PropTypes as t} from 'react';\nimport {Link} from '@marionebl/react-router';\nimport join from 'classnames';\n\nimport Icon from '../common/icon';\n\nexport default function NavigationToggle(props) {\n\tconst iconClassName = join({\n\t\t'icon--mirrored': props.expanded\n\t});\n\n\treturn (\n\t\t<Link\n\t\t\tto={{\n\t\t\t\tpathname: props.pathname,\n\t\t\t\tquery: {...props.query, ...{expanded: !props.expanded}}\n\t\t\t}}\n\t\t\tclassName=\"toggleMode\"\n\t\t\ttitle={props.expanded ? 'Collapse navigation [ctrl+e]' : 'Expand navigation [ctrl+e]'}\n\t\t\t>\n\t\t\t<Icon base={props.base} className={iconClassName} symbol=\"arrow-double-right\"/>\n\t\t</Link>\n\t);\n}\n\nNavigationToggle.propTypes = {\n\tbase: t.string.isRequired,\n\texpanded: t.bool.isRequired,\n\tpathname: t.string.isRequired,\n\tquery: t.object.isRequired\n};\n","import React, {PropTypes as t} from 'react';\nimport {Link} from '@marionebl/react-router';\n\nimport Icon from '../common/icon';\nimport NavigationToggle from './navigation-toggle';\n\nexport default function NavigationToolbar(props) {\n\t// const {data} = props;\n\tconst issue = {\n\t\tpathname: props.pathname,\n\t\tquery: {\n\t\t\t...props.query,\n\t\t\tissue: true\n\t\t}\n\t};\n\n\tconst cheatsheet = {\n\t\tpathname: props.pathname,\n\t\tquery: {\n\t\t\t...props.query,\n\t\t\tlightbox: 'shortcuts'\n\t\t}\n\t};\n\n\tconst targetTheme = props.theme === 'dark' ? 'light' : 'dark';\n\tconst handleThemeChange = () => props.onThemeChange(targetTheme);\n\n\tconst styles = {\n\t\tlight: {display: targetTheme === 'light' ? 'block' : 'none'},\n\t\tdark: {display: targetTheme === 'dark' ? 'block' : 'none'}\n\t};\n\n\treturn (\n\t\t<div className=\"navigation-toolbar\">\n\t\t\t<div className=\"navigation-toolbar__container\">\n\t\t\t\t<ul className=\"navigation-toolbar__links\">\n\t\t\t\t\t<li className=\"navigation-toolbar__link\">\n\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\tclassName=\"button\"\n\t\t\t\t\t\t\ttitle=\"Report an issue [ctrl+i]\"\n\t\t\t\t\t\t\tto={issue}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon symbol=\"issue\"/>\n\t\t\t\t\t\t</Link>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li className=\"navigation-toolbar__link\">\n\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\tclassName=\"button\"\n\t\t\t\t\t\t\ttitle=\"Show keyboard shortcuts [ctrl+k]\"\n\t\t\t\t\t\t\tto={cheatsheet}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon symbol=\"command\"/>\n\t\t\t\t\t\t</Link>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li className=\"navigation-toolbar__link\">\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclassName=\"button\"\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tonClick={handleThemeChange}\n\t\t\t\t\t\t\ttitle={`Switch to ${targetTheme} theme [ctrl+t]`}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\tbase={props.base}\n\t\t\t\t\t\t\t\tsymbol=\"light\"\n\t\t\t\t\t\t\t\tstyle={styles.light}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tLight\n\t\t\t\t\t\t\t</Icon>\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\tbase={props.base}\n\t\t\t\t\t\t\t\tsymbol=\"dark\"\n\t\t\t\t\t\t\t\tstyle={styles.dark}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tDark\n\t\t\t\t\t\t\t</Icon>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t<div className=\"navigation-toolbar__action\">\n\t\t\t\t<NavigationToggle\n\t\t\t\t\tbase={props.base}\n\t\t\t\t\texpanded={props.expanded}\n\t\t\t\t\tpathname={props.pathname}\n\t\t\t\t\tquery={props.query}\n\t\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nNavigationToolbar.propTypes = {\n\tbase: t.string.isRequired,\n\tchildren: t.any,\n\texpanded: t.bool.isRequired,\n\tonThemeChange: t.func.isRequired,\n\tpathname: t.string.isRequired,\n\tquery: t.object.isRequired,\n\ttheme: t.string.isRequired\n};\n","import {startsWith} from 'lodash';\nimport React, {Component, PropTypes as types} from 'react';\nimport pure from 'pure-render-decorator';\nimport CSSTransitionGroup from 'react-transition-group/CSSTransitionGroup';\n\nimport NavigationItem from './navigation-item';\nimport getAugmentedChildren from '../../utils/augment-hierarchy';\n\n@pure\nclass NavigationTree extends Component {\n\tdisplayName = 'NavigationTree';\n\n\tstatic propTypes = {\n\t\tid: types.string,\n\t\tactivePattern: types.string,\n\t\tbase: types.string.isRequired,\n\t\tdata: types.object,\n\t\thide: types.bool.isRequired,\n\t\tquery: types.object.isRequired,\n\t\tsearchQuery: types.string,\n\t\tchildren: types.oneOfType([\n\t\t\ttypes.node,\n\t\t\ttypes.arrayOf(types.node)\n\t\t]),\n\t\tconfig: types.object,\n\t\thierarchy: types.object\n\t};\n\n\trender() {\n\t\tconst {props} = this;\n\t\tconst {folders, patterns} = getAugmentedChildren(props.data, props.hierarchy);\n\n\t\treturn (\n\t\t\t<CSSTransitionGroup\n\t\t\t\tcomponent=\"ul\"\n\t\t\t\tclassName=\"navigation-tree\"\n\t\t\t\ttransitionName=\"pattern-content-transition\"\n\t\t\t\ttransitionEnterTimeout={300}\n\t\t\t\ttransitionLeaveTimeout={300}\n\t\t\t\t>\n\t\t\t\t{props.children}\n\t\t\t\t{\n\t\t\t\t\tfolders.map(folder => {\n\t\t\t\t\t\tconst active = startsWith(props.activePattern, folder.id);\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<NavigationItem\n\t\t\t\t\t\t\t\tactive={active || folder.expanded}\n\t\t\t\t\t\t\t\tbase={props.base}\n\t\t\t\t\t\t\t\tid={folder.id}\n\t\t\t\t\t\t\t\tkey={folder.id}\n\t\t\t\t\t\t\t\tname={folder.displayName}\n\t\t\t\t\t\t\t\tonClick={this.handleFolderClick}\n\t\t\t\t\t\t\t\tquery={props.query}\n\t\t\t\t\t\t\t\tsearchQuery={props.searchQuery}\n\t\t\t\t\t\t\t\tsymbol={folder.icon}\n\t\t\t\t\t\t\t\tsymbolActive={folder.iconActive}\n\t\t\t\t\t\t\t\ttype=\"directory\"\n\t\t\t\t\t\t\t\thide={props.hide}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<NavigationTree\n\t\t\t\t\t\t\t\t\tactivePattern={props.activePattern}\n\t\t\t\t\t\t\t\t\tbase={props.base}\n\t\t\t\t\t\t\t\t\tdata={folder.children}\n\t\t\t\t\t\t\t\t\thierarchy={props.hierarchy}\n\t\t\t\t\t\t\t\t\tid={folder.id}\n\t\t\t\t\t\t\t\t\tquery={props.query}\n\t\t\t\t\t\t\t\t\tsearchQuery={props.searchQuery}\n\t\t\t\t\t\t\t\t\thide={props.hide}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</NavigationItem>\n\t\t\t\t\t\t);\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t\tpatterns.map(pattern => {\n\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\tdisplayName,\n\t\t\t\t\t\t\texpanded,\n\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\tmanifest\n\t\t\t\t\t\t} = pattern;\n\n\t\t\t\t\t\tconst {options = {}} = manifest;\n\t\t\t\t\t\tconst {hidden = false} = options;\n\t\t\t\t\t\tconst hideItem = props.hide ? hidden : false;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<NavigationItem\n\t\t\t\t\t\t\t\tactive={props.activePattern === pattern.id || expanded}\n\t\t\t\t\t\t\t\tbase={props.base}\n\t\t\t\t\t\t\t\thidden={hideItem}\n\t\t\t\t\t\t\t\tid={pattern.id}\n\t\t\t\t\t\t\t\tkey={pattern.id}\n\t\t\t\t\t\t\t\tname={displayName}\n\t\t\t\t\t\t\t\tquery={props.query}\n\t\t\t\t\t\t\t\tref={this.getActiveReference}\n\t\t\t\t\t\t\t\tsearchQuery={props.searchQuery}\n\t\t\t\t\t\t\t\tsymbol={type}\n\t\t\t\t\t\t\t\ttype={type}\n\t\t\t\t\t\t\t\thide={props.hide}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t</CSSTransitionGroup>\n\t\t);\n\t}\n}\n\nexport default NavigationTree;\n","import React, {PropTypes as t} from 'react';\nimport join from 'classnames';\nimport Block from './block';\n\nexport default function BlockColumn(props) {\n\tconst {\n\t\tactiveBlock, align, base, items, x, y, location, connect, height, onClick,\n\t\tonMouseEnter, onMouseLeave\n\t} = props;\n\n\treturn (\n\t\t<g>\n\t\t\t{\n\t\t\t\titems.map(({name, id, localName}, index) => {\n\t\t\t\t\tconst label = [name, localName].join('');\n\t\t\t\t\tconst width = Math.max(5, label.length * 0.8);\n\t\t\t\t\tconst offset = align === 'right' ? width + 1 : 0;\n\t\t\t\t\tconst n = (50 - width) / 3;\n\t\t\t\t\tconst key = [id, name, localName].filter(Boolean).join(':');\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Block\n\t\t\t\t\t\t\tactive={activeBlock === key}\n\t\t\t\t\t\t\ttype=\"block\"\n\t\t\t\t\t\t\tbase={base}\n\t\t\t\t\t\t\tid={id}\n\t\t\t\t\t\t\tblockId={key}\n\t\t\t\t\t\t\tname={name}\n\t\t\t\t\t\t\tx={x - offset}\n\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\ty={y + index * (height + 1)}\n\t\t\t\t\t\t\twidth={width}\n\t\t\t\t\t\t\theight={height}\n\t\t\t\t\t\t\tconnect={{...connect, n}}\n\t\t\t\t\t\t\tonClick={onClick}\n\t\t\t\t\t\t\tonMouseEnter={onMouseEnter}\n\t\t\t\t\t\t\tonMouseLeave={onMouseLeave}\n\t\t\t\t\t\t\tlocation={location}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t}\n\t\t\t{\n\t\t\t\titems.map(({name, localName, id}, index) => {\n\t\t\t\t\tconst label = [name, localName].join('');\n\t\t\t\t\tconst text = align === 'right' ? localName : id;\n\t\t\t\t\tconst width = Math.max(5, label.length * 0.8);\n\t\t\t\t\tconst labelWidth = Math.max(4, text.length * 0.6);\n\t\t\t\t\tconst key = [id, name, localName].filter(Boolean).join(':');\n\t\t\t\t\tconst labelX = align === 'right' ? x - width : x + width;\n\t\t\t\t\tconst offset = align === 'right' ? 1 : 0;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Label\n\t\t\t\t\t\t\tactive={activeBlock === key}\n\t\t\t\t\t\t\talign={align}\n\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\twidth={labelWidth}\n\t\t\t\t\t\t\theight={1.4}\n\t\t\t\t\t\t\tx={labelX - offset}\n\t\t\t\t\t\t\ty={y + index * (height + 1) + (height / 2) - 0.7}\n\t\t\t\t\t\t\ttext={text}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t}\n\t\t\t{\n\t\t\t\titems.map(item => {\n\t\t\t\t\tconst labelAlign = align === 'left' ? 'right' : 'left';\n\t\t\t\t\tconst text = align === 'right' ? item.id : item.localName;\n\t\t\t\t\tconst key = [item.id, item.name, item.localName].filter(Boolean).join(':');\n\t\t\t\t\tconst labelWidth = Math.max(4, text.length * 0.6);\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Label\n\t\t\t\t\t\t\tactive={activeBlock === key}\n\t\t\t\t\t\t\talign={labelAlign}\n\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\ttext={text}\n\t\t\t\t\t\t\twidth={labelWidth}\n\t\t\t\t\t\t\theight={1.4}\n\t\t\t\t\t\t\tx={connect.x}\n\t\t\t\t\t\t\ty={connect.y - 0.7}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t}\n\t\t</g>\n\t);\n}\n\nBlockColumn.propTypes = {\n\tbase: t.string.isRequired,\n\titems: t.arrayOf(t.shape({\n\t\tname: t.string.isRequired,\n\t\tid: t.string.isRequired\n\t})).isRequired,\n\tx: t.oneOfType([t.string, t.number]).isRequired,\n\ty: t.oneOfType([t.string, t.number]).isRequired,\n\tonClick: t.func.isRequired,\n\talign: t.oneOf(['left', 'right']).isRequired,\n\tprefix: t.string,\n\tlocation: t.shape({\n\t\tpathname: t.string,\n\t\tquery: t.any\n\t}),\n\tconnect: t.shape({\n\t\tx: t.oneOfType([t.string, t.number]).isRequired,\n\t\ty: t.oneOfType([t.string, t.number]).isRequired\n\t}).isRequired,\n\tdescription: t.string,\n\theight: t.number\n};\n\nBlockColumn.defaultProps = {\n\titems: [],\n\ty: 0,\n\tonClick: () => {},\n\talign: 'left',\n\tdescription: ''\n};\n\nfunction Label(props) {\n\tif (!props.text) {\n\t\treturn null;\n\t}\n\n\tconst x = props.align === 'right' ? (props.x - props.width) : props.x;\n\tconst className = join('label', {\n\t\t'label--active': props.active\n\t});\n\n\treturn (\n\t\t<g className={className}>\n\t\t\t<circle\n\t\t\t\tclassName=\"label__circle\"\n\t\t\t\tcx={x + props.width}\n\t\t\t\tcy={props.y + props.height / 2}\n\t\t\t\tr={0.7}\n\t\t\t\t/>\n\t\t\t<circle\n\t\t\t\tclassName=\"label__circle\"\n\t\t\t\tcx={x}\n\t\t\t\tcy={props.y + props.height / 2}\n\t\t\t\tr={0.7}\n\t\t\t\t/>\n\t\t\t<rect\n\t\t\t\theight={props.height}\n\t\t\t\twidth={props.width}\n\t\t\t\tx={x}\n\t\t\t\ty={props.y}\n\t\t\t\tclassName=\"label__container\"\n\t\t\t\t/>\n\t\t\t<text\n\t\t\t\tx={x + props.width / 2}\n\t\t\t\ty={props.y - 0.175 + props.height / 2}\n\t\t\t\tclassName=\"label__text\">\n\t\t\t\t{props.text}\n\t\t\t</text>\n\t\t</g>\n\t);\n}\n","import React, {PropTypes as t, Component} from 'react';\nimport autobind from 'autobind-decorator';\nimport querystring from 'querystring';\nimport Connection from './connection';\n\n@autobind\nexport default class Block extends Component {\n\tstatic propTypes = {\n\t\tbase: t.string.isRequired,\n\t\tname: t.string.isRequired,\n\t\tid: t.string.isRequired,\n\t\ttype: t.string.isRequired,\n\t\tx: t.oneOfType([t.string, t.number]).isRequired,\n\t\ty: t.oneOfType([t.string, t.number]).isRequired,\n\t\twidth: t.number.isRequired,\n\t\theight: t.number.isRequired,\n\t\tconnect: t.shape({\n\t\t\tx: t.oneOfType([t.string, t.number]).isRequired,\n\t\t\ty: t.oneOfType([t.string, t.number]).isRequired,\n\t\t\tn: t.number\n\t\t}),\n\t\tonClick: t.func.isRequired,\n\t\tlocation: t.shape({\n\t\t\tpathname: t.string,\n\t\t\tquery: t.any\n\t\t}).isRequired\n\t};\n\n\tstatic defaultProps = {\n\t\ttype: 'block',\n\t\twidth: 8,\n\t\theight: 8,\n\t\tonClick: () => {},\n\t\tonMouseEnter: () => {},\n\t\tonMouseLeave: () => {}\n\t};\n\n\thandleClick(e) {\n\t\te.preventDefault();\n\t\tthis.props.onClick(this.props);\n\t}\n\n\trender() {\n\t\tconst {props} = this;\n\t\tconst {location, base} = props;\n\t\tconst className = `pattern-dependencies__${props.type}`;\n\t\tconst orientation = props.x < 50 ? 1 : 0;\n\n\t\tconst onMouseEnter = () => props.onMouseEnter(props.blockId);\n\t\tconst onMouseLeave = () => props.onMouseLeave(props.blockId);\n\n\t\tconst block = {\n\t\t\tx: props.x + props.width * orientation,\n\t\t\ty: props.y + (props.height / 2)\n\t\t};\n\n\t\tconst target = props.connect;\n\n\t\tconst from = orientation === 1 ? block : target;\n\t\tconst to = orientation === 1 ? target : block;\n\n\t\tconst textX = props.type === 'root' ? 50 : props.x + props.width / 2;\n\t\tconst textY = props.y + props.height / 2;\n\n\t\tconst href = [\n\t\t\t`${base}pattern/${props.id}`,\n\t\t\tquerystring.stringify(location.query)\n\t\t].join('?');\n\n\t\treturn (\n\t\t\t<g className=\"block-group\" onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave}>\n\t\t\t\t<a xlinkHref={href} className={className}>\n\t\t\t\t\t<rect\n\t\t\t\t\t\tclassName={className}\n\t\t\t\t\t\tx={props.x}\n\t\t\t\t\t\ty={props.y}\n\t\t\t\t\t\twidth={props.width}\n\t\t\t\t\t\theight={props.height}\n\t\t\t\t\t\tonClick={this.handleClick}\n\t\t\t\t\t\t/>\n\t\t\t\t</a>\n\t\t\t\t{\n\t\t\t\t\tprops.connect &&\n\t\t\t\t\t\t<Connection\n\t\t\t\t\t\t\tlabels={[props.id, props.localName]}\n\t\t\t\t\t\t\tfrom={from}\n\t\t\t\t\t\t\tto={to}\n\t\t\t\t\t\t\tn={target.n || 20}\n\t\t\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t\tprops.name &&\n\t\t\t\t\t\t<a xlinkHref={href}>\n\t\t\t\t\t\t\t<text\n\t\t\t\t\t\t\t\tx={textX}\n\t\t\t\t\t\t\t\ty={textY}\n\t\t\t\t\t\t\t\twidth={props.width}\n\t\t\t\t\t\t\t\theight={props.height}\n\t\t\t\t\t\t\t\tclassName=\"block-name\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{props.name}\n\t\t\t\t\t\t\t</text>\n\t\t\t\t\t\t</a>\n\t\t\t\t}\n\t\t\t</g>\n\t\t);\n\t}\n}\n","import React, {PropTypes as t} from 'react';\n\nconst PointShape = t.shape({\n\tx: t.number.isRequired,\n\ty: t.number.isRequired\n});\n\nfunction spline(a, b, n = 25) {\n\treturn `M${a.x},${a.y} C${a.x + n},${a.y} ${b.x - n},${b.y} ${b.x},${b.y}`;\n}\n\nexport default function Connection({from, to, n}) {\n\tconst d = spline(from, to, n);\n\treturn (\n\t\t<g className=\"connection-group\">\n\t\t\t<circle className=\"connector\" cx={from.x} cy={from.y} r={0.7}/>\n\t\t\t<path className=\"connection\" d={d}/>\n\t\t\t<circle className=\"connector\" cx={to.x} cy={to.y} r={0.7}/>\n\t\t</g>\n\t);\n}\n\nConnection.propTypes = {\n\tfrom: PointShape,\n\tto: PointShape,\n\tn: t.number\n};\n\nfunction Label(props) {\n\tif (!props.text) {\n\t\treturn null;\n\t}\n\n\tconst {align, height, text, y} = props;\n\tconst width = text.length * 0.7;\n\tconst x = align === 'left' ? props.x : props.x - width;\n\n\treturn (\n\t\t<g className=\"label\">\n\t\t\t<rect className=\"label__container\" x={x} y={y - height / 2} height={height} width={width}/>\n\t\t\t<text className=\"label__text\" x={x + width / 2} y={y}>{text}</text>\n\t\t</g>\n\t);\n}\n","import React, {PropTypes as t} from 'react';\n\nimport PatternDemo from './pattern-demo';\nimport PatternHeader from './pattern-header';\nimport PatternToolbar from './pattern-toolbar';\nimport unwrap from '../../utils/unwrap';\n\nexport default Pattern;\n\nfunction Pattern(props) {\n\tconst onReloadClick = props.reload;\n\n\tconst onConcernChange = unwrap(props.onConcernChange, 'target.value');\n\tconst onEnvironmentChange = unwrap(props.onEnvironmentChange, 'target.value');\n\tconst onTypeChange = unwrap(props.onTypeChange, 'target.value');\n\n\treturn (\n\t\t<div className=\"pattern\">\n\t\t\t<PatternHeader\n\t\t\t\tautomount={props.automount}\n\t\t\t\tbase={props.base}\n\t\t\t\tbreadcrumbs={props.breadcrumbs}\n\t\t\t\tenvironment={props.environment}\n\t\t\t\terrored={props.errored}\n\t\t\t\tflag={props.flag}\n\t\t\t\tid={props.id}\n\t\t\t\tloading={props.loading}\n\t\t\t\tlocation={props.location}\n\t\t\t\tname={props.name}\n\t\t\t\topacity={props.opacity}\n\t\t\t\tonReloadClick={onReloadClick}\n\t\t\t\treloadTime={props.reloadTime}\n\t\t\t\treloadedTime={props.reloadedTime}\n\t\t\t\trulers={props.rulers}\n\t\t\t\ttags={props.tags}\n\t\t\t\tversion={props.version}\n\t\t\t\t/>\n\t\t\t<PatternDemo\n\t\t\t\tbase={props.base}\n\t\t\t\tcontentHeight={props.demoContentHeight}\n\t\t\t\tcontentWidth={props.demoContentWidth}\n\t\t\t\tenvironment={props.environment}\n\t\t\t\theight={props.demoHeight}\n\t\t\t\tloading={props.loading}\n\t\t\t\tonError={props.onDemoError}\n\t\t\t\tonReady={props.onDemoReady}\n\t\t\t\tonResize={props.onDemoContentResize}\n\t\t\t\tonScroll={props.onDemoScroll}\n\t\t\t\topacity={props.opacity}\n\t\t\t\treloadTime={props.reloadTime}\n\t\t\t\tresizeable={props.rulers}\n\t\t\t\tresize={props.resize}\n\t\t\t\trulers={props.rulers}\n\t\t\t\trulerX={props.rulerX}\n\t\t\t\trulerY={props.rulerY}\n\t\t\t\trulerLengthX={props.rulerLengthX}\n\t\t\t\trulerLengthY={props.rulerLengthY}\n\t\t\t\ttarget={props.id}\n\t\t\t\twidth={props.demoWidth}\n\t\t\t\t/>\n\t\t\t<PatternToolbar\n\t\t\t\tactiveSource={props.activeSource}\n\t\t\t\tbase={props.base}\n\t\t\t\tcode={props.code}\n\t\t\t\tdependencies={props.dependencies}\n\t\t\t\tdependents={props.dependents}\n\t\t\t\tenvironment={props.environment}\n\t\t\t\tenvironments={props.environments}\n\t\t\t\tid={props.id}\n\t\t\t\tloading={props.loading}\n\t\t\t\tlocation={props.location}\n\t\t\t\tname={props.name}\n\t\t\t\tonConcernChange={onConcernChange}\n\t\t\t\tonEnvironmentChange={onEnvironmentChange}\n\t\t\t\tonFileRequest={props.onFileRequest}\n\t\t\t\tonTypeChange={onTypeChange}\n\t\t\t\texpanded={props.sourceExpanded}\n\t\t\t\t/>\n\t\t</div>\n\t);\n}\n\nPattern.propTypes = {\n\tautomount: t.bool.isRequired,\n\tactiveSource: t.string.isRequired,\n\tbase: t.string.isRequired,\n\tbreadcrumbs: t.arrayOf(t.shape({\n\t\tid: t.string.isRequired,\n\t\tname: t.string.isRequired,\n\t\ttarget: t.shape({\n\t\t\tpathname: t.string.isRequired,\n\t\t\tquery: t.object.isRequired\n\t\t}).isRequired\n\t})),\n\tcode: t.arrayOf(t.shape({\n\t\tactive: t.bool.isRequired,\n\t\textname: t.string.isRequired,\n\t\tconcern: t.string.isRequired,\n\t\tconcerns: t.arrayOf(t.string).isRequired,\n\t\tid: t.string.isRequired,\n\t\tlanguage: t.string.isRequired,\n\t\tname: t.string.isRequired,\n\t\tsource: t.string,\n\t\ttype: t.string,\n\t\ttypes: t.arrayOf(t.string).isRequired\n\t})).isRequired,\n\tdemoContentWidth: t.number.isRequired,\n\tdemoContentHeight: t.number.isRequired,\n\tdemoWidth: t.number,\n\tdemoHeight: t.number,\n\tdependencies: t.arrayOf(t.shape({\n\t\tid: t.string.isRequired,\n\t\tname: t.string.isRequired,\n\t\tlocalName: t.string.isRequired\n\t})).isRequired,\n\tdependents: t.arrayOf(t.shape({\n\t\tid: t.string.isRequired,\n\t\tname: t.string.isRequired\n\t})).isRequired,\n\tenvironment: t.string.isRequired,\n\tenvironments: t.arrayOf(t.shape({\n\t\tid: t.string.isRequired,\n\t\tname: t.string.isRequired\n\t})).isRequired,\n\terrored: t.bool.isRequired,\n\tflag: t.string,\n\tid: t.string.isRequired,\n\tloading: t.bool.isRequired,\n\tlocation: t.shape({\n\t\tpathname: t.string.isRequired,\n\t\tquery: t.object.isRequired\n\t}).isRequired,\n\tname: t.string.isRequired,\n\tonDemoContentResize: t.func.isRequired,\n\tonDemoError: t.func.isRequired,\n\tonDemoReady: t.func.isRequired,\n\tonDemoScroll: t.func.isRequired,\n\tonEnvironmentChange: t.func.isRequired,\n\tonConcernChange: t.func.isRequired,\n\tonFileRequest: t.func.isRequired,\n\tonTypeChange: t.func.isRequired,\n\topacity: t.bool.isRequired,\n\treload: t.func.isRequired,\n\treloadTime: t.number,\n\treloadedTime: t.number,\n\tresize: t.func.isRequired,\n\trulers: t.bool.isRequired,\n\trulerX: t.number.isRequired,\n\trulerY: t.number.isRequired,\n\trulerLengthX: t.number.isRequired,\n\trulerLengthY: t.number.isRequired,\n\ttags: t.arrayOf(t.string).isRequired,\n\tversion: t.string,\n\tsourceExpanded: t.bool\n};\n","import React, {PropTypes as types} from 'react';\nimport {pd as pretty} from 'pretty-data';\nimport autobind from 'autobind-decorator';\nimport pure from 'pure-render-decorator';\n\nimport Code from '../common/code';\nimport Select from '../common/select';\n\n@pure\n@autobind\nexport default class PatternCode extends React.Component {\n\tstatic propTypes = {\n\t\tbase: types.string.isRequired,\n\t\tconcern: types.string.isRequired,\n\t\tconcerns: types.arrayOf(types.string).isRequired,\n\t\tcopy: types.bool,\n\t\textname: types.string.isRequired,\n\t\tformat: types.string.isRequired,\n\t\tid: types.string,\n\t\tname: types.string.isRequired,\n\t\tonConcernChange: types.func.isRequired,\n\t\tonTypeChange: types.func.isRequired,\n\t\tsource: types.string.isRequired,\n\t\ttype: types.string.isRequired,\n\t\ttypes: types.arrayOf(types.string).isRequired\n\t};\n\n\tstatic defaultProps = {\n\t\t// format: 'html',\n\t\thighlight: true,\n\t\tcopy: true\n\t};\n\n\tstate = {\n\t\tcopying: false\n\t};\n\n\ttimeout = null;\n\tidle = null;\n\n\tcomponentWillUnmount() {\n\t\tif (this.timeout) {\n\t\t\tglobal.clearTimeout(this.timeout);\n\t\t}\n\t}\n\n\tsaveReference(ref) {\n\t\tthis.ref = ref;\n\t}\n\n\thandleCopyClick() {\n\t\tif (this.ref && !this.state.copying) {\n\t\t\tthis.ref.focus();\n\t\t\tthis.ref.select();\n\t\t\tglobal.document.execCommand('copy');\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tcopying: true\n\t\t\t});\n\t\t\tthis.timeout = setTimeout(() => {\n\t\t\t\tthis.setState({\n\t\t\t\t\t...this.state,\n\t\t\t\t\tcopying: false\n\t\t\t\t});\n\t\t\t}, 3000);\n\t\t}\n\t}\n\n\trender() {\n\t\tconst {props} = this;\n\t\tconst prettify = props.highlight && props.format === 'html';\n\t\tconst source = prettify ? pretty.xml(props.source) : props.source;\n\t\tconst {copying} = this.state;\n\n\t\tconst concern = {\n\t\t\tvalue: props.concern,\n\t\t\tname: `${props.concern}${props.extname}`\n\t\t};\n\n\t\tconst concerns = this.props.concerns.map(concern => {\n\t\t\treturn {name: `${concern}${props.extname}`, value: concern};\n\t\t});\n\n\t\tconst type = {\n\t\t\tvalue: this.props.type,\n\t\t\tname: this.props.type\n\t\t};\n\n\t\tconst types = this.props.types.map(type => {\n\t\t\treturn {name: type, value: type};\n\t\t});\n\n\t\treturn (\n\t\t\t<div className=\"pattern-code\">\n\t\t\t\t<div className=\"pattern-code__toolbar\">\n\t\t\t\t\t<div className=\"pattern-code__name\">\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconcerns.length > 1 ?\n\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\tbase={props.base}\n\t\t\t\t\t\t\t\t\tclassName=\"pattern-code__concern\"\n\t\t\t\t\t\t\t\t\toptions={concerns}\n\t\t\t\t\t\t\t\t\tonChange={props.onConcernChange}\n\t\t\t\t\t\t\t\t\tvalue={concern}\n\t\t\t\t\t\t\t\t\t/> :\n\t\t\t\t\t\t\t\t<span className=\"pattern-code__concern\">\n\t\t\t\t\t\t\t\t\t{concern.name}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t}\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttypes.length > 1 ?\n\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\tbase={props.base}\n\t\t\t\t\t\t\t\t\tclassName=\"pattern-code__type\"\n\t\t\t\t\t\t\t\t\toptions={types}\n\t\t\t\t\t\t\t\t\tonChange={props.onTypeChange}\n\t\t\t\t\t\t\t\t\tvalue={type}\n\t\t\t\t\t\t\t\t\t/> :\n\t\t\t\t\t\t\t\t<span className=\"pattern-code__type\">\n\t\t\t\t\t\t\t\t\t{type.name}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"pattern-code__tools\">\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tprops.copy &&\n\t\t\t\t\t\t\t\t<button type=\"button\" onClick={this.handleCopyClick}>\n\t\t\t\t\t\t\t\t\t{copying ? 'Copied!' : 'Copy to clipboard'}\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"pattern-code__content\">\n\t\t\t\t\t<pre>\n\t\t\t\t\t\t<Code\n\t\t\t\t\t\t\thighlights={props.highlights}\n\t\t\t\t\t\t\thighlight={props.requestHighlight}\n\t\t\t\t\t\t\tlanguage={props.format}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{source}\n\t\t\t\t\t\t</Code>\n\t\t\t\t\t</pre>\n\t\t\t\t\t<textarea\n\t\t\t\t\t\tclassName=\"clipboard\"\n\t\t\t\t\t\tvalue={source}\n\t\t\t\t\t\tref={this.saveReference}\n\t\t\t\t\t\treadOnly\n\t\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n}\n","import React, {PropTypes as t, Component} from 'react';\nimport {Link} from '@marionebl/react-router';\nimport classnames from 'classnames';\nimport pure from 'pure-render-decorator';\nimport autobind from 'autobind-decorator';\n\n@pure\n@autobind\nclass PatternControl extends Component {\n\tstatic propTypes = {\n\t\tactive: t.bool.isRequired,\n\t\tbase: t.string.isRequired,\n\t\tchildren: t.any,\n\t\tdisabled: t.bool,\n\t\texpand: t.bool,\n\t\ticonDescription: t.string,\n\t\tlocation: t.object.isRequired,\n\t\tname: t.any.isRequired,\n\t\tshortid: t.string.isRequired,\n\t\ttitle: t.string\n\t}\n\n\tstatic contextTypes = {\n\t\trouter: t.any\n\t};\n\n\thandleClick(e) {\n\t\te.preventDefault();\n\t\tconst {active, expand, location, shortid} = this.props;\n\t\tconst source = active ? null : shortid;\n\t\tconst route = {\n\t\t\tpathname: location.pathname,\n\t\t\tquery: {\n\t\t\t\t...location.query,\n\t\t\t\tsource,\n\t\t\t\t[`source-expanded`]: expand\n\t\t\t}\n\t\t};\n\t\tthis.context.router.replace(route);\n\t}\n\n\trender() {\n\t\tconst {props} = this;\n\t\tconst {active, location} = props;\n\t\tconst className = classnames('pattern-control', {active});\n\t\tconst source = props.active ? null : props.shortid;\n\n\t\tconst to = {\n\t\t\tpathname: location.pathname,\n\t\t\tquery: {\n\t\t\t\t...location.query,\n\t\t\t\tsource,\n\t\t\t\t[`source-expanded`]: props.expand\n\t\t\t}\n\t\t};\n\n\t\treturn (\n\t\t\t<Link\n\t\t\t\tto={to}\n\t\t\t\tclassName={className}\n\t\t\t\tdisabled={props.disabled}\n\t\t\t\tonClick={this.handleClick}\n\t\t\t\ttitle={props.title}\n\t\t\t\t>\n\t\t\t\t{props.children || props.name}\n\t\t\t</Link>\n\t\t);\n\t}\n}\n\nexport default PatternControl;\n","import React, {PropTypes as types} from 'react';\nimport join from 'classnames';\nimport queryString from 'query-string';\nimport urlQuery from '../../utils/url-query';\nimport Frame from '../common/frame';\nimport Ruler from './pattern-ruler';\n\nfunction PatternDemo(props) {\n\tconst source = urlQuery.format({\n\t\tpathname: `${props.base}demo/${props.target}/index.html`,\n\t\tquery: {environment: props.environment}\n\t});\n\n\tconst query = queryString.stringify({\n\t\t'reload-time': props.reloadTime\n\t});\n\n\tconst src = [source, query].filter(Boolean).join('?');\n\tconst className = join('pattern-demo-container', {\n\t\t'pattern-demo-container--opacity': props.opacity\n\t});\n\tconst demoClassName = join('pattern-demo', {\n\t\t'pattern-demo--resizable': props.resizeable\n\t});\n\n\treturn (\n\t\t<div className={className}>\n\t\t\t{\n\t\t\t\tprops.rulers &&\n\t\t\t\t\t<div className=\"rulers\">\n\t\t\t\t\t\t<Ruler\n\t\t\t\t\t\t\ttype=\"vertical\"\n\t\t\t\t\t\t\tstep={10}\n\t\t\t\t\t\t\tlength={props.rulerLengthY}\n\t\t\t\t\t\t\tmarkers={[props.height]}\n\t\t\t\t\t\t\toffset={props.rulerY}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Ruler\n\t\t\t\t\t\t\ttype=\"horizontal\"\n\t\t\t\t\t\t\tstep={10}\n\t\t\t\t\t\t\tlength={props.rulerLengthX}\n\t\t\t\t\t\t\tmarkers={[props.width]}\n\t\t\t\t\t\t\toffset={props.rulerX}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t}\n\t\t\t<Frame\n\t\t\t\tclassName={demoClassName}\n\t\t\t\tid={source}\n\t\t\t\theight={props.height}\n\t\t\t\tonLoad={props.onReady}\n\t\t\t\tonError={props.onError}\n\t\t\t\tonScroll={props.onScroll}\n\t\t\t\tonResize={props.onResize}\n\t\t\t\tresizeable={props.rulers}\n\t\t\t\tresize={props.resize}\n\t\t\t\tsrc={src}\n\t\t\t\twidth={props.width}\n\t\t\t\t/>\n\t\t</div>\n\t);\n}\n\nPatternDemo.propTypes = {\n\tbase: types.string.isRequired,\n\tenvironment: types.string.isRequired,\n\theight: types.number,\n\tonError: types.func.isRequired,\n\tonReady: types.func.isRequired,\n\tonResize: types.func.isRequired,\n\tonScroll: types.func.isRequired,\n\topacity: types.bool.isRequired,\n\tloading: types.bool.isRequired,\n\treloadTime: types.number,\n\tresizeable: types.bool.isRequired,\n\tresize: types.func.isRequired,\n\trulers: types.bool.isRequired,\n\trulerX: types.number.isRequired,\n\trulerLengthX: types.number.isRequired,\n\trulerY: types.number.isRequired,\n\trulerLengthY: types.number.isRequired,\n\ttarget: types.string.isRequired,\n\twidth: types.number\n};\n\nexport default PatternDemo;\n","import React, {PropTypes as t, Component} from 'react';\nimport {connect} from 'react-redux';\nimport join from 'classnames';\nimport autobind from 'autobind-decorator';\n\nimport markBlock from '../../actions/mark-block';\nimport Block from './block';\nimport BlockColumn from './block-column';\n\n@autobind\nclass PatternDependencies extends Component {\n\tstatic propTypes = {\n\t\tactiveBlock: t.string,\n\t\tbase: t.string.isRequired,\n\t\tclassName: t.string,\n\t\tid: t.string.isRequired,\n\t\tname: t.string.isRequired,\n\t\tdependencies: t.arrayOf(t.shape({\n\t\t\tname: t.string.isRequired,\n\t\t\tid: t.string.isRequired\n\t\t})).isRequired,\n\t\tdependents: t.arrayOf(t.shape({\n\t\t\tname: t.string.isRequired,\n\t\t\tid: t.string.isRequired\n\t\t})).isRequired,\n\t\tlocation: t.shape({\n\t\t\tpathname: t.string,\n\t\t\tquery: t.any\n\t\t})\n\t};\n\n\tstatic contextTypes = {\n\t\trouter: t.any\n\t};\n\n\thandleClick(props) {\n\t\tconst {id, base} = props;\n\t\tconst {location} = this.props;\n\t\tconst {router} = this.context;\n\t\trouter.push({\n\t\t\tpathname: `${base}pattern/${id}`,\n\t\t\tquery: location.query\n\t\t});\n\t}\n\n\thandleMouseEnter(id) {\n\t\tconst {dispatch} = this.props;\n\t\tdispatch(markBlock({id, active: true}));\n\t}\n\n\thandleMouseLeave(id) {\n\t\tconst {dispatch} = this.props;\n\t\tdispatch(markBlock({id, active: false}));\n\t}\n\n\trender() {\n\t\tconst {\n\t\t\tactiveBlock,\n\t\t\tclassName: passedClassName,\n\t\t\tdependencies,\n\t\t\tdependents,\n\t\t\tid,\n\t\t\tbase,\n\t\t\tname,\n\t\t\tlocation\n\t\t} = this.props;\n\n\t\tconst className = join('pattern-dependencies', passedClassName);\n\n\t\tconst blockHeight = 4;\n\t\tconst center = 50;\n\t\tconst rootWidth = Math.max(5, name.length * 1.25);\n\t\tconst paddingX = 1;\n\t\tconst rootY = 1;\n\t\tconst columnY = 2;\n\t\tconst offsetY = Math.max(rootY, columnY);\n\t\tconst rootHeight = blockHeight;\n\t\tconst rootYCenter = rootY + rootHeight / 2;\n\t\tconst blockSpace = blockHeight + 1;\n\t\tconst viewBoxHeight = Math.max(Math.max(dependencies.length, dependents.length) * blockSpace + offsetY + 2, blockSpace + offsetY + 2);\n\n\t\treturn (\n\t\t\t<div className={className}>\n\t\t\t\t<svg viewBox={`0 0 100 ${viewBoxHeight}`} className=\"pattern-dependencies__stage\">\n\t\t\t\t\t<BlockColumn\n\t\t\t\t\t\tactiveBlock={activeBlock}\n\t\t\t\t\t\titems={dependencies}\n\t\t\t\t\t\tbase={base}\n\t\t\t\t\t\ty={columnY}\n\t\t\t\t\t\tx={paddingX}\n\t\t\t\t\t\theight={blockHeight}\n\t\t\t\t\t\tonClick={this.handleClick}\n\t\t\t\t\t\tonMouseEnter={this.handleMouseEnter}\n\t\t\t\t\t\tonMouseLeave={this.handleMouseLeave}\n\t\t\t\t\t\tdescription=\"provides for\"\n\t\t\t\t\t\tlocation={location}\n\t\t\t\t\t\tconnect={{x: center - rootWidth / 2, y: rootYCenter}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t<BlockColumn\n\t\t\t\t\t\tactiveBlock={activeBlock}\n\t\t\t\t\t\titems={dependents}\n\t\t\t\t\t\tbase={base}\n\t\t\t\t\t\ty={columnY}\n\t\t\t\t\t\tx={100}\n\t\t\t\t\t\theight={blockHeight}\n\t\t\t\t\t\tonClick={this.handleClick}\n\t\t\t\t\t\tonMouseEnter={this.handleMouseEnter}\n\t\t\t\t\t\tonMouseLeave={this.handleMouseLeave}\n\t\t\t\t\t\talign=\"right\"\n\t\t\t\t\t\tdescription=\"provides for\"\n\t\t\t\t\t\tlocation={location}\n\t\t\t\t\t\tconnect={{x: center + rootWidth / 2, y: rootYCenter}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t<Block\n\t\t\t\t\t\ttype=\"root\"\n\t\t\t\t\t\tname={name}\n\t\t\t\t\t\tid={id}\n\t\t\t\t\t\tx={50 - rootWidth / 2}\n\t\t\t\t\t\ty={rootY}\n\t\t\t\t\t\theight={rootHeight}\n\t\t\t\t\t\twidth={rootWidth}\n\t\t\t\t\t\tlocation={location}\n\t\t\t\t\t\tbase={base}\n\t\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n}\n\nexport default connect(({activeBlock}) => {\n\treturn {activeBlock};\n})(PatternDependencies);\n","import React, {PropTypes as t} from 'react';\n\nimport Markdown from '../../containers/markdown';\n\nfunction PatternDocumentation(props) {\n\tconst source = props.source || props.children;\n\treturn (\n\t\t<div className=\"pattern-code\">\n\t\t\t<div className=\"pattern-code__toolbar\">\n\t\t\t\t<div className=\"pattern-code__name\">{props.name}</div>\n\t\t\t</div>\n\t\t\t<div className=\"pattern-code__content\">\n\t\t\t\t<Markdown base={props.base} source={source}/>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nPatternDocumentation.propTypes = {\n\tbase: t.string.isRequired,\n\tchildren: t.string,\n\tname: t.string.isRequired,\n\tsource: t.string\n};\n\nexport default PatternDocumentation;\n","import React, {PropTypes as t} from 'react';\nimport {Link} from '@marionebl/react-router';\nimport join from 'classnames';\n\nimport Icon from '../common/icon';\n\nfunction ItemField(props) {\n\tconst Component = props.component;\n\tconst className = join('pattern-field', props.className, {\n\t\t[`pattern-field--${props.valueKey}`]: props.value\n\t});\n\tconst children = props.children || props.value;\n\n\treturn (\n\t\t<Component className={className}>\n\t\t\t{\n\t\t\t\tArray.isArray(children) ?\n\t\t\t\t\tchildren.map((c, i) => {\n\t\t\t\t\t\treturn <span key={i}>{c}</span>;\n\t\t\t\t\t}) :\n\t\t\t\t\tchildren\n\t\t\t}\n\t\t</Component>\n\t);\n}\n\nItemField.propTypes = {\n\tcomponent: t.string.isRequired,\n\tvalueKey: t.string.isRequired,\n\tvalue: t.any,\n\tclassName: t.string,\n\tchildren: t.any\n};\n\nItemField.defaultProps = {\n\tcomponent: 'div'\n};\n\nfunction PatternFolderItem(props) {\n\tconst {name, type, id, location, base} = props;\n\tconst to = {\n\t\tpathname: `${base}pattern/${id}`,\n\t\tquery: location.query\n\t};\n\n\tconst title = `Navigate to ${type} \"${name}\" at ${id}`;\n\tconst href = `${base}demo/${id}`;\n\n\treturn (\n\t\t<li className=\"pattern-item\">\n\t\t\t<ItemField valueKey=\"name\" value={props.name}>\n\t\t\t\t<Link to={to} title={title}>\n\t\t\t\t\t<Icon base={base} symbol={type}>{name}</Icon>\n\t\t\t\t\t<span>{props.name}</span>\n\t\t\t\t</Link>\n\t\t\t</ItemField>\n\t\t\t<ItemField valueKey=\"version\" value={props.version}/>\n\t\t\t<ItemField valueKey=\"tags\" value={props.tags}/>\n\t\t\t<ItemField valueKey=\"flag\" value={props.flag}/>\n\t\t\t{\n\t\t\t\tprops.type === 'pattern' ?\n\t\t\t\t\t<a\n\t\t\t\t\t\thref={href}\n\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\trel=\"nofollow\"\n\t\t\t\t\t\tclassName=\"pattern-field\"\n\t\t\t\t\t\ttitle={`Open ${type} \"${name}\" at ${id} in fullscreen`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t<Icon base={base} symbol=\"fullscreen\" description=\"Fullscreen\">\n\t\t\t\t\t\t\t{`${id} in fullscreen`}\n\t\t\t\t\t\t</Icon>\n\t\t\t\t\t</a> :\n\t\t\t\t\t<div className=\"pattern-field\"/>\n\t\t\t}\n\t\t</li>\n\t);\n}\n\nPatternFolderItem.propTypes = {\n\tbase: t.string.isRequired,\n\tid: t.string.isRequired,\n\tname: t.string.isRequired,\n\ttype: t.string.isRequired,\n\tversion: t.string,\n\ttags: t.array,\n\tflag: t.string,\n\tlocation: t.shape({\n\t\tpathname: t.string.isRequired,\n\t\tquery: t.object.isRequired\n\t}).isRequired\n};\n\nexport default function PatternFolder({items, location, up, base}) {\n\treturn (\n\t\t<ul className=\"pattern-folder\">\n\t\t\t<li className=\"pattern-folder-head\">\n\t\t\t\t<div className=\"pattern-folder-head__cell\"/>\n\t\t\t\t<div className=\"pattern-folder-head__cell\">Version</div>\n\t\t\t\t<div className=\"pattern-folder-head__cell\">Tags</div>\n\t\t\t\t<div className=\"pattern-folder-head__cell\">Flag</div>\n\t\t\t\t<div className=\"pattern-folder-head__cell\"/>\n\t\t\t</li>\n\t\t\t{\n\t\t\t\tup &&\n\t\t\t\t\t<PatternFolderItem\n\t\t\t\t\t\tid={up}\n\t\t\t\t\t\tname=\"..\"\n\t\t\t\t\t\ttype=\"folder\"\n\t\t\t\t\t\tlocation={location}\n\t\t\t\t\t\tbase={base}\n\t\t\t\t\t\t/>\n\t\t\t}\n\t\t\t{\n\t\t\t\titems.map(item => (\n\t\t\t\t\t<PatternFolderItem\n\t\t\t\t\t\t{...item}\n\t\t\t\t\t\tlocation={location}\n\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t\tbase={base}\n\t\t\t\t\t\t/>\n\t\t\t\t))\n\t\t\t}\n\t\t</ul>\n\t);\n}\n\nPatternFolder.propTypes = {\n\tbase: t.string.isRequired,\n\titems: t.arrayOf(t.shape(PatternFolderItem.propTypes)).isRequired,\n\tlocation: t.shape({\n\t\tpathname: t.string.isRequired,\n\t\tquery: t.object.isRequired\n\t}).isRequired,\n\tup: t.string\n};\n\nPatternFolder.defaultProps = {\n\titems: []\n};\n","import React, {PropTypes as t} from 'react';\nimport {Link} from '@marionebl/react-router';\nimport join from 'classnames';\nimport {noop} from 'lodash';\n\nimport BreadCrumbs from '../bread-crumbs';\nimport Headline from '../common/headline';\nimport Icon from '../common/icon';\nimport urlQuery from '../../utils/url-query';\n\nconst autoMount = 'https://github.com/sinnerschrader/patternplate-transform-react-to-markup#component-auto-mounting';\n\nexport default function PatternHeader(props) {\n\tconst flagClassName = join(`pattern__flag`, {\n\t\t[`pattern__flag--${props.flag}`]: props.flag\n\t});\n\n\tconst fullscreen = urlQuery.format({\n\t\tpathname: `${props.base}demo/${props.id}/index.html`,\n\t\tquery: {\n\t\t\tenvironment: props.environment\n\t\t}\n\t});\n\tconst fullscreenTitle = `Open \"${props.name}\" in fullscreen [ctrl+f]`;\n\n\tconst reloadTitle = `Reload demo for \"${props.name}\" [ctrl+r]`;\n\tconst reloadClassName = join(\n\t\t'button',\n\t\t'button--reload',\n\t\t{\n\t\t\t'reload--reloading': props.loading,\n\t\t\t'button--is-active': props.loading,\n\t\t\t'reload--error': props.errored\n\t\t}\n\t);\n\n\tconst rulersTitle = props.rulers ?\n\t\t`Disable rulers [ctrl+l]` :\n\t\t`Enable rulers [ctrl+l]`;\n\n\tconst rulersClassName = join(\n\t\t`button button--rulers`,\n\t\t{\n\t\t\t'button--is-active': props.rulers\n\t\t}\n\t);\n\n\tconst opacityClassName = join(\n\t\t'button button--opacity',\n\t\t{\n\t\t\t'button--is-active': props.opacity\n\t\t}\n\t);\n\tconst opacitySymbol = props.opacity ? 'checkers' : 'checkers-inverted';\n\tconst opacityTitle = props.opacity ?\n\t\t'Hide opacity [ctrl+o]':\n\t\t'Show opacity [ctrl+o]';\n\n\treturn (\n\t\t<div className=\"pattern-header-container\">\n\t\t\t<BreadCrumbs\n\t\t\t\tbase={props.base}\n\t\t\t\tcrumbs={props.breadcrumbs}\n\t\t\t\tlocation={props.location}\n\t\t\t\tclassName=\"pattern-path\"\n\t\t\t\t/>\n\t\t\t<Headline className=\"pattern-header\" order={2}>\n\t\t\t\t<span className=\"pattern-name\">\n\t\t\t\t\t{props.name}\n\t\t\t\t</span>\n\t\t\t\t<small className=\"pattern-version\">\n\t\t\t\t\t{props.version ? `v${props.version}` : ''}\n\t\t\t\t</small>\n\t\t\t\t{\n\t\t\t\t\tprops.flag ?\n\t\t\t\t\t\t<small className={flagClassName}>\n\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\ttitle={`Search patterns with flag ${props.flag}`}\n\t\t\t\t\t\t\t\tto={{\n\t\t\t\t\t\t\t\t\tpathname: props.location.pathname,\n\t\t\t\t\t\t\t\t\tquery: {...props.location.query, search: `flag:${props.flag}`}\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{props.flag}\n\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t</small> :\n\t\t\t\t\t\tnull\n\t\t\t\t}\n\t\t\t\t{props.tags.map((tag, key) =>\n\t\t\t\t\t<small key={key} className=\"pattern-tag\">\n\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\ttitle={`Search patterns with tag ${tag}`}\n\t\t\t\t\t\t\tto={{\n\t\t\t\t\t\t\t\tpathname: props.location.pathname,\n\t\t\t\t\t\t\t\tquery: {...props.location.query, search: `tag:${tag}`}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{tag}\n\t\t\t\t\t\t</Link>\n\t\t\t\t\t</small>\n\t\t\t\t)}\n\t\t\t\t{\n\t\t\t\t\tprops.automount &&\n\t\t\t\t\t\t<small className=\"pattern-option\">\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\thref={autoMount}\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\ttitle=\"Learn about component auto mounting on Github\"\n\t\t\t\t\t\t\t\trel=\"noopener\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tauto-mount\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</small>\n\t\t\t\t}\n\t\t\t</Headline>\n\t\t\t<div className=\"pattern-header__actions\">\n\t\t\t\t<Link\n\t\t\t\t\tclassName={reloadClassName}\n\t\t\t\t\ttitle={reloadTitle}\n\t\t\t\t\tdisabled={props.loading}\n\t\t\t\t\tonClick={props.loading ? noop : props.onReloadClick}\n\t\t\t\t\tto={{\n\t\t\t\t\t\tpathname: props.location.pathname,\n\t\t\t\t\t\tquery: {\n\t\t\t\t\t\t\t...props.location.query,\n\t\t\t\t\t\t\treload: props.reloadTime\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t<Icon symbol=\"reload\"/>\n\t\t\t\t</Link>\n\t\t\t\t<Link\n\t\t\t\t\tclassName={rulersClassName}\n\t\t\t\t\ttitle={rulersTitle}\n\t\t\t\t\tto={{\n\t\t\t\t\t\tpathname: props.location.pathname,\n\t\t\t\t\t\tquery: {\n\t\t\t\t\t\t\t...props.location.query,\n\t\t\t\t\t\t\trulers: !props.rulers\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t<Icon symbol=\"rulers\"/>\n\t\t\t\t</Link>\n\t\t\t\t<Link\n\t\t\t\t\tclassName={opacityClassName}\n\t\t\t\t\ttitle={opacityTitle}\n\t\t\t\t\tto={{\n\t\t\t\t\t\tpathname: props.location.pathname,\n\t\t\t\t\t\tquery: {\n\t\t\t\t\t\t\t...props.location.query,\n\t\t\t\t\t\t\topacity: !props.opacity\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t<Icon symbol={opacitySymbol}/>\n\t\t\t\t</Link>\n\t\t\t\t<a\n\t\t\t\t\tclassName=\"button fullscreen\"\n\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\trel=\"noopener\"\n\t\t\t\t\thref={fullscreen}\n\t\t\t\t\ttitle={fullscreenTitle}\n\t\t\t\t\t>\n\t\t\t\t\t<Icon symbol=\"fullscreen\"/>\n\t\t\t\t</a>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nPatternHeader.propTypes = {\n\tautomount: t.bool.isRequired,\n\tbase: t.string.isRequired,\n\tbreadcrumbs: t.arrayOf(t.shape({\n\t\tid: t.string.isRequired,\n\t\tname: t.string.isRequired,\n\t\ttarget: t.shape({\n\t\t\tpathname: t.string.isRequired,\n\t\t\tquery: t.object.isRequired\n\t\t}).isRequired\n\t})).isRequired,\n\tenvironment: t.string.isRequired,\n\terrored: t.bool.isRequired,\n\tflag: t.string,\n\tid: t.string.isRequired,\n\tloading: t.bool.isRequired,\n\tlocation: t.shape({\n\t\tpathname: t.string.isRequired,\n\t\tquery: t.object.isRequired\n\t}),\n\tname: t.string.isRequired,\n\tonReloadClick: t.func.isRequired,\n\topacity: t.bool.isRequired,\n\treloadTime: t.number,\n\treloadedTime: t.number,\n\trulers: t.bool.isRequired,\n\ttags: t.arrayOf(t.string),\n\tversion: t.string.isRequired\n};\n\nPatternHeader.defaultProps = {\n\ttags: [],\n\tonReloadClick: noop\n};\n","import autobind from 'autobind-decorator';\nimport {find, range} from 'lodash';\nimport pure from 'pure-render-decorator';\nimport React, {Component, PropTypes as t} from 'react';\n\nconst start = {transform: 'translate3d(0, 0, 0)'};\n\n@autobind\nexport default class Ruler extends Component {\n\tcomponentDidMount() {\n\t\tconst end = this.props.type === 'horizontal' ?\n\t\t\t{transform: 'translate3d(-100%, 0, 0)'} :\n\t\t\t{transform: 'translate3d(0, -100%, 0)'};\n\n\t\tconst keyframes = [start, end];\n\t\tconst options = {duration: 100};\n\t\tthis.animation = this.ref.animate(keyframes, options);\n\t\tthis.animation.pause();\n\t\tthis.animation.currentTime = this.props.offset;\n\t\tglobal.a = this.animation;\n\t}\n\n\tcomponentDidUpdate() {\n\t\tthis.animation.currentTime = this.props.offset;\n\t}\n\n\tsaveRef(ref) {\n\t\tthis.ref = ref;\n\t}\n\n\trender() {\n\t\tconst {props} = this;\n\t\tconst type = props.type === 'horizontal' ? 'horizontal' : 'vertical';\n\t\tconst markerPositionProperty = props.type === 'horizontal' ? 'left' : 'top';\n\n\t\treturn (\n\t\t\t<div className={`pattern-ruler pattern-ruler--${type}`}>\n\t\t\t\t<div className=\"pattern-ruler__scale\" ref={this.saveRef}>\n\t\t\t\t\t<RulerSteps type={props.type} length={props.length} step={props.step}/>\n\t\t\t\t</div>\n\t\t\t\t{\n\t\t\t\t\tprops.markers.map(marker => {\n\t\t\t\t\t\tconst style = {[markerPositionProperty]: `${marker}px`};\n\t\t\t\t\t\treturn <div className=\"pattern-ruler__marker\" key={marker} style={style}/>;\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t</div>\n\t\t);\n\t}\n}\n\nRuler.propTypes = {\n\tlength: t.number.isRequired,\n\tmarkers: t.arrayOf(t.number).isRequired,\n\toffset: t.number.isRequired,\n\tstep: t.number.isRequired,\n\ttype: t.string.isRequired\n};\n\nRuler.defaultProps = {\n\tlength: 0\n};\n\n@pure\nclass RulerSteps extends Component {\n\trender() {\n\t\tconst {props} = this;\n\t\tconst steps = getSteps(props.length, props.step);\n\t\tconst spacerProperty = props.type === 'horizontal' ? 'marginLeft' : 'marginTop';\n\t\tconst orderProperty = props.type === 'horizontal' ? 'height' : 'width';\n\t\tconst sizingProperty = props.type === 'horizontal' ? 'width' : 'height';\n\n\t\treturn (\n\t\t\t<ul className=\"pattern-ruler__steps\">\n\t\t\t\t{steps.map((step, index) => {\n\t\t\t\t\tconst orderDimension = ['15px', '10px', '5px'][step.order - 1];\n\t\t\t\t\tconst spacer = index > 0 ? props.step - 1 : 0;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<li\n\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\tclassName={`pattern-ruler__step pattern-ruler__step--${step.order}`}\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t[spacerProperty]: `${spacer}px`,\n\t\t\t\t\t\t\t\t[sizingProperty]: '1px',\n\t\t\t\t\t\t\t\t[orderProperty]: orderDimension\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttypeof step.label !== 'undefined' &&\n\t\t\t\t\t\t\t\t\t<span className=\"pattern-ruler__label\">\n\t\t\t\t\t\t\t\t\t\t{step.label}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</li>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</ul>\n\t\t);\n\t}\n}\n\nRulerSteps.propTypes = {\n\tlength: t.number.isRequired,\n\tstep: t.number.isRequired,\n\ttype: t.string.isRequired\n};\n\nfunction getSteps(length, step) {\n\treturn range(Math.round(length / step))\n\t\t.map((_, index) => index)\n\t\t.map(count => {\n\t\t\tconst label = count % 10 === 0 ? count * step : null;\n\t\t\tconst matches = [10, 5];\n\t\t\tconst match = find(matches, n => count % n === 0);\n\t\t\tconst order = match ? matches.indexOf(match) + 1 : 3;\n\t\t\treturn {label, order};\n\t\t});\n}\n","import React, {PropTypes as t} from 'react';\nimport pure from 'pure-render-decorator';\nimport autobind from 'autobind-decorator';\nimport {pick, isEqual} from 'lodash';\n\nimport PatternContainer from '../../containers/pattern';\n\n@pure\n@autobind\nclass PatternSection extends React.Component {\n\tstatic propTypes = {\n\t\tbase: t.string.isRequired,\n\t\tenvironment: t.string.isRequired,\n\t\tid: t.string.isRequired,\n\t\tlocation: t.object.isRequired,\n\t\tonDataRequest: t.func.isRequired\n\t};\n\n\tstatic defaultProps = {\n\t\tenvironment: 'index',\n\t\tonDataRequest: () => {}\n\t};\n\n\tcomponentDidMount() {\n\t\tconst {id, base, environment} = this.props;\n\t\tthis.props.onDataRequest(id, {environment}, {loading: true, base});\n\t}\n\n\tcomponentWillReceiveProps(nextProps) {\n\t\tconst next = pick(nextProps, ['id', 'environment']);\n\t\tconst current = pick(this.props, ['id', 'environment']);\n\t\tconst query = {environment: next.environment};\n\t\tconst options = {loading: next.id !== current.id, base: nextProps.base};\n\t\tif (nextProps.type === 'pattern' && !isEqual(next, current)) {\n\t\t\tthis.props.onDataRequest(next.id, query, options);\n\t\t}\n\t}\n\n\thandleDataRequest(id, query, options) {\n\t\tthis.props.onDataRequest(id, query, options);\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<section className=\"pattern-section\">\n\t\t\t\t<PatternContainer\n\t\t\t\t\tlocation={this.props.location}\n\t\t\t\t\t/>\n\t\t\t</section>\n\t\t);\n\t}\n}\n\nexport default PatternSection;\n","import React, {Component, PropTypes as t} from 'react';\nimport join from 'classnames';\nimport autobind from 'autobind-decorator';\nimport md5 from 'md5';\n\nimport PatternControl from './pattern-control';\nimport PatternCode from './pattern-code';\nimport PatternDocumentation from './pattern-documentation';\n\nexport default PatternSources;\n\nfunction PatternSources(props) {\n\tconst {sources} = props;\n\treturn (\n\t\t<div className=\"pattern-sources\">\n\t\t\t{\n\t\t\t\tsources.map(source => (\n\t\t\t\t\t<PatternSource\n\t\t\t\t\t\tactive={source.active}\n\t\t\t\t\t\tupdate={source.update}\n\t\t\t\t\t\tbase={props.base}\n\t\t\t\t\t\tconcern={source.concern}\n\t\t\t\t\t\tconcerns={source.concerns}\n\t\t\t\t\t\tenvironment={props.environment}\n\t\t\t\t\t\textname={source.extname}\n\t\t\t\t\t\tid={source.id}\n\t\t\t\t\t\tshortid={source.shortid}\n\t\t\t\t\t\tkey={source.shortid}\n\t\t\t\t\t\tlanguage={source.language}\n\t\t\t\t\t\tloading={source.loading}\n\t\t\t\t\t\tlocation={props.location}\n\t\t\t\t\t\tname={source.name}\n\t\t\t\t\t\tonConcernChange={props.onConcernChange}\n\t\t\t\t\t\tonFileRequest={props.onFileRequest}\n\t\t\t\t\t\tonTypeChange={props.onTypeChange}\n\t\t\t\t\t\tsource={source.source}\n\t\t\t\t\t\ttype={source.type}\n\t\t\t\t\t\ttypes={source.types}\n\t\t\t\t\t\t/>\n\t\t\t\t))\n\t\t\t}\n\t\t</div>\n\t);\n}\n\nPatternSources.propTypes = {\n\tbase: t.string.isRequired,\n\tenvironment: t.string.isRequired,\n\tlocation: t.shape({\n\t\tpathname: t.string.isRequired,\n\t\tquery: t.object.isRequired\n\t}).isRequired,\n\tonConcernChange: t.func.isRequired,\n\tonFileRequest: t.func.isRequired,\n\tonTypeChange: t.func.isRequired,\n\tsources: t.arrayOf(t.shape({\n\t\tactive: t.bool.isRequired,\n\t\tconcern: t.string.isRequired,\n\t\tid: t.string.isRequired,\n\t\tlanguage: t.string.isRequired,\n\t\tname: t.string.isRequired,\n\t\tsource: t.string.isRequired,\n\t\ttype: t.string.isRequired\n\t}))\n};\n\n@autobind\nclass PatternSource extends Component {\n\tstatic propTypes = {\n\t\tactive: t.bool.isRequired,\n\t\tbase: t.string.isRequired,\n\t\tconcern: t.string.isRequired,\n\t\tconcerns: t.arrayOf(t.string).isRequired,\n\t\tenvironment: t.string.isRequired,\n\t\tid: t.string.isRequired,\n\t\tshortid: t.string.isRequired,\n\t\tloading: t.bool,\n\t\tlocation: t.shape({\n\t\t\tpathname: t.string.isRequired,\n\t\t\tquery: t.object.isRequired\n\t\t}).isRequired,\n\t\tname: t.string.isRequired,\n\t\tonFileRequest: t.func.isRequired,\n\t\tlanguage: t.string.isRequired,\n\t\tsource: t.string.isRequired,\n\t\ttype: t.string.isRequired,\n\t\ttypes: t.arrayOf(t.string).isRequired,\n\t\ttitle: t.string,\n\t\tupdate: t.bool.isRequired\n\t};\n\n\tcomponentDidMount() {\n\t\tconst {props} = this;\n\t\tif (props.update) {\n\t\t\tprops.onFileRequest({\n\t\t\t\tid: props.id,\n\t\t\t\tshortid: props.shortid,\n\t\t\t\tenvironment: props.environment,\n\t\t\t\ttype: props.type,\n\t\t\t\tbase: props.base\n\t\t\t});\n\t\t}\n\t}\n\n\tcomponentWillUpdate(next) {\n\t\tif (next.update) {\n\t\t\tnext.onFileRequest({\n\t\t\t\tid: this.props.id,\n\t\t\t\tshortid: this.props.shortid,\n\t\t\t\tenvironment: this.props.environment,\n\t\t\t\ttype: this.props.type,\n\t\t\t\tbase: this.props.base\n\t\t\t});\n\t\t}\n\t}\n\n\trender() {\n\t\tconst {props} = this;\n\t\tconst className = join('pattern-source', {\n\t\t\t'pattern-source--loading': props.loading\n\t\t});\n\t\tconst verb = props.active ? `Close` : `View`;\n\t\tconst title = `${verb} ${props.concern}${props.extname}`;\n\t\treturn (\n\t\t\t<div className={className}>\n\t\t\t\t<PatternControl\n\t\t\t\t\tactive={props.active}\n\t\t\t\t\tbase={props.base}\n\t\t\t\t\tdisabled={props.loading}\n\t\t\t\t\texpand\n\t\t\t\t\tkey={props.id}\n\t\t\t\t\tlocation={props.location}\n\t\t\t\t\tname={props.name}\n\t\t\t\t\tshortid={props.id}\n\t\t\t\t\ttitle={title}\n\t\t\t\t\t/>\n\t\t\t\t{\n\t\t\t\t\tprops.active && props.language === 'md' &&\n\t\t\t\t\t\t<PatternDocumentation\n\t\t\t\t\t\t\tbase={props.base}\n\t\t\t\t\t\t\tname={props.name}\n\t\t\t\t\t\t\tsource={props.source}\n\t\t\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t\tprops.active && props.language !== 'md' &&\n\t\t\t\t\t\t<PatternCode\n\t\t\t\t\t\t\tbase={props.base}\n\t\t\t\t\t\t\tconcern={props.concern}\n\t\t\t\t\t\t\tconcerns={props.concerns}\n\t\t\t\t\t\t\tcopy\n\t\t\t\t\t\t\textname={props.extname}\n\t\t\t\t\t\t\tformat={props.language}\n\t\t\t\t\t\t\thighlight\n\t\t\t\t\t\t\tid={md5([props.id, props.source].join(':'))}\n\t\t\t\t\t\t\tname={props.name}\n\t\t\t\t\t\t\tonConcernChange={props.onConcernChange}\n\t\t\t\t\t\t\tonTypeChange={props.onTypeChange}\n\t\t\t\t\t\t\tsource={props.source}\n\t\t\t\t\t\t\ttype={props.type}\n\t\t\t\t\t\t\ttypes={props.types}\n\t\t\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t</div>\n\t\t);\n\t}\n}\n","import React from 'react';\nimport {Link} from '@marionebl/react-router';\nimport join from 'classnames';\nimport Icon from '../common/icon';\n\nexport default PatternToolCodeToogle;\n\nfunction PatternToolCodeToogle(props) {\n\tconst className = join(\n\t\t'pattern-control pattern-tool pattern-tool-code-toggle',\n\t\t{active: props.active}\n\t);\n\n\tconst to = {\n\t\tpathname: props.location.pathname,\n\t\tquery: {\n\t\t\t...props.location.query,\n\t\t\t'source-expanded': !props.active,\n\t\t\t'source': null\n\t\t}\n\t};\n\n\treturn (\n\t\t<Link\n\t\t\tto={to}\n\t\t\tclassName={className}\n\t\t\ttitle={props.title}\n\t\t\t>\n\t\t\t<Icon\n\t\t\t\tbase={props.base}\n\t\t\t\tsymbol=\"code\"\n\t\t\t\tdescription=\"Code\"\n\t\t\t\t/>\n\t\t</Link>\n\t);\n}\n","import assert from 'assert';\nimport React, {PropTypes as t} from 'react';\nimport join from 'classnames';\nimport Icon from '../common/icon';\n\nexport default PatternToolEnvSelect;\n\nconst name = 'pattern-tool pattern-environment-selection';\n\nfunction PatternToolEnvSelect(props) {\n\tconst {environments: envs, environment: env} = props;\n\tconst selected = envs.filter(item => item.id === env)[0] || {};\n\tconst className = join(name, {\n\t\t'pattern-environment-selection--disabled': props.disabled\n\t});\n\n\tconst title = getTitle(selected, envs);\n\n\treturn (\n\t\t<label className={className}>\n\t\t\t<span className=\"pattern-environment-selection__label\">\n\t\t\t\tEnvironment\n\t\t\t</span>\n\t\t\t<span className=\"pattern-environment-selection__value\">\n\t\t\t\t{selected.name}\n\t\t\t</span>\n\t\t\t<select\n\t\t\t\tclassName=\"pattern-environment-selection__native\"\n\t\t\t\tdisabled={props.disabled}\n\t\t\t\tvalue={env}\n\t\t\t\tonChange={props.onChange}\n\t\t\t\ttitle={title}\n\t\t\t\t>\n\t\t\t\t{\n\t\t\t\t\tenvs.map(env => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<option\n\t\t\t\t\t\t\t\tkey={env.id}\n\t\t\t\t\t\t\t\tvalue={env.id}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{env.name}\n\t\t\t\t\t\t\t</option>\n\t\t\t\t\t\t);\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t</select>\n\t\t\t<Icon\n\t\t\t\tbase={props.base}\n\t\t\t\tclassName=\"pattern-environment-selection__arrow\"\n\t\t\t\tsymbol=\"arrow-right\"\n\t\t\t\t/>\n\t\t</label>\n\t);\n}\n\nPatternToolEnvSelect.propTypes = {\n\tbase: t.string.isRequired,\n\tdisabled: t.bool,\n\tenvironment: t.string.isRequired,\n\tenvironments: t.arrayOf(t.shape({\n\t\tname: t.string.isRequired,\n\t\tid: t.string.isRequired\n\t})).isRequired,\n\tonChange: t.func.isRequired\n};\n\nPatternToolEnvSelect.defaultProps = {\n\tonChange: () => {}\n};\n\nfunction getTitle(selected = {}, envs = []) {\n\tassert.equal(typeof selected, 'object', 'selected must be an object');\n\tassert.ok(Array.isArray(envs), 'envs must be an array');\n\tconst other = envs.filter(e => e.id !== selected.id);\n\n\tconst lead = other[0];\n\n\tif (!lead) {\n\t\treturn null;\n\t}\n\n\tconst head = other.slice(0, other.length - 1);\n\tconst tail = other[other.length - 1];\n\n\tconst environments = tail ?\n\t\t`${head.map(e => `\"${e.name}\"`).join(', ')} or \"${tail.name}\"` :\n\t\tlead.name;\n\n\treturn `Change currently active environment \"${selected.name}\" to ${environments}`;\n}\n","import React, {PropTypes as t} from 'react';\nimport Icon from '../common/icon';\nimport PatternControl from './pattern-control';\nimport PatternDependencies from './pattern-dependencies';\n\nexport default PatternToolRelations;\n\nfunction PatternToolRelations(props) {\n\tconst relationCount = props.dependencies.length + props.dependents.length;\n\tconst title = `Browse relations of ${props.id} to ${relationCount} other patterns`;\n\treturn (\n\t\t<div className=\"pattern-tool pattern-tool--relations\">\n\t\t\t<PatternControl\n\t\t\t\tactive={props.active}\n\t\t\t\tbase={props.base}\n\t\t\t\tlocation={props.location}\n\t\t\t\tshortid=\"relations\"\n\t\t\t\tid=\"relations\"\n\t\t\t\tname=\"relations\"\n\t\t\t\ttitle={title}\n\t\t\t\t>\n\t\t\t\t<Icon\n\t\t\t\t\tbase={props.base}\n\t\t\t\t\tsymbol=\"dependencies\"\n\t\t\t\t\tdescription=\"Relations\"\n\t\t\t\t\t/>\n\t\t\t</PatternControl>\n\t\t\t{\n\t\t\t\tprops.active &&\n\t\t\t\t\t<div className=\"pattern-code pattern-code--max\">\n\t\t\t\t\t\t<div className=\"pattern-code__toolbar\">\n\t\t\t\t\t\t\t<div className=\"pattern-code__name\">Relations</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className=\"pattern-code__content\">\n\t\t\t\t\t\t\t<PatternDependencies\n\t\t\t\t\t\t\t\tbase={props.base}\n\t\t\t\t\t\t\t\tdependencies={props.dependencies}\n\t\t\t\t\t\t\t\tdependents={props.dependents}\n\t\t\t\t\t\t\t\tid={props.id}\n\t\t\t\t\t\t\t\tname={props.name}\n\t\t\t\t\t\t\t\tlocation={props.location}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t</div>\n\t);\n}\n\nPatternToolRelations.propTypes = {\n\tactive: t.bool.isRequired,\n\tbase: t.string.isRequired,\n\tdependencies: t.array.isRequired,\n\tdependents: t.array.isRequired,\n\tid: t.string.isRequired,\n\tlocation: t.shape({\n\t\tpathname: t.string.isRequired,\n\t\tquery: t.object.isRequired\n\t}).isRequired,\n\tname: t.string.isRequired\n};\n","import React, {PropTypes as t} from 'react';\nimport join from 'classnames';\nimport PatternSources from './pattern-sources';\nimport PatternTools from './pattern-tools';\n\nexport default PatternToolbar;\n\nfunction PatternToolbar(props) {\n\tconst className = join('pattern-toolbar', {\n\t\t'pattern-toolbar--expanded': props.expanded\n\t});\n\n\treturn (\n\t\t<div className={className}>\n\t\t\t<PatternSources\n\t\t\t\tbase={props.base}\n\t\t\t\tenvironment={props.environment}\n\t\t\t\tlocation={props.location}\n\t\t\t\tonConcernChange={props.onConcernChange}\n\t\t\t\tonFileRequest={props.onFileRequest}\n\t\t\t\tonTypeChange={props.onTypeChange}\n\t\t\t\tsources={props.code}\n\t\t\t\t/>\n\t\t\t<PatternTools\n\t\t\t\tactiveSource={props.activeSource}\n\t\t\t\tbase={props.base}\n\t\t\t\tdependencies={props.dependencies}\n\t\t\t\tdependents={props.dependents}\n\t\t\t\tenvironment={props.environment}\n\t\t\t\tenvironments={props.environments}\n\t\t\t\texpanded={props.expanded}\n\t\t\t\thasCode={props.code.length > 0}\n\t\t\t\tid={props.id}\n\t\t\t\tname={props.name}\n\t\t\t\tlocation={props.location}\n\t\t\t\tonEnvironmentChange={props.onEnvironmentChange}\n\t\t\t\t/>\n\t\t</div>\n\t);\n}\n\nPatternToolbar.propTypes = {\n\tactiveSource: t.string.isRequired,\n\tbase: t.string.isRequired,\n\tcode: t.arrayOf(t.object).isRequired,\n\tdependencies: t.arrayOf(t.shape({\n\t\tid: t.string.isRequired,\n\t\tlocalName: t.string.isRequired,\n\t\tname: t.string.isRequired,\n\t\tversion: t.string.isRequired\n\t})).isRequired,\n\tdependents: t.arrayOf(t.shape({\n\t\tid: t.string.isRequired,\n\t\tname: t.string.isRequired,\n\t\tversion: t.string.isRequired\n\t})).isRequired,\n\tenvironment: t.string.isRequired,\n\tenvironments: t.arrayOf(t.shape({\n\t\tid: t.string.isRequired,\n\t\tname: t.string.isRequired\n\t})).isRequired,\n\texpanded: t.bool.isRequired,\n\tid: t.string.isRequired,\n\tlocation: t.shape({\n\t\tpathname: t.string.isRequired,\n\t\tquery: t.object.isRequired\n\t}).isRequired,\n\tname: t.string.isRequired,\n\tonConcernChange: t.func.isRequired,\n\tonEnvironmentChange: t.func.isRequired,\n\tonFileRequest: t.func.isRequired,\n\tonTypeChange: t.func.isRequired\n};\n","import React, {PropTypes as t} from 'react';\n\nimport PatternToolCodeToogle from './pattern-tool-code-toggle';\nimport PatternToolEnvironmentSelection from './pattern-tool-environment-selection';\nimport PatternToolRelations from './pattern-tool-relations';\nimport urlQuery from '../../utils/url-query';\n\nexport default PatternTools;\n\nfunction PatternTools(props) {\n\tconst hasEnvironments = props.environments.length > 1;\n\tconst activeId = urlQuery.parse(props.activeSource).pathname;\n\tconst active = activeId === 'relations';\n\n\treturn (\n\t\t<div className=\"pattern-tools\">\n\t\t\t{\n\t\t\t\tprops.hasCode &&\n\t\t\t\t\t<PatternToolCodeToogle\n\t\t\t\t\t\tactive={props.expanded}\n\t\t\t\t\t\tbase={props.base}\n\t\t\t\t\t\tlocation={props.location}\n\t\t\t\t\t\t/>\n\t\t\t}\n\t\t\t{\n\t\t\t\thasEnvironments &&\n\t\t\t\t\t<PatternToolEnvironmentSelection\n\t\t\t\t\t\tbase={props.base}\n\t\t\t\t\t\tdisabled={!hasEnvironments}\n\t\t\t\t\t\tenvironment={props.environment}\n\t\t\t\t\t\tenvironments={props.environments}\n\t\t\t\t\t\tonChange={props.onEnvironmentChange}\n\t\t\t\t\t\t/>\n\t\t\t}\n\t\t\t<PatternToolRelations\n\t\t\t\tactive={active}\n\t\t\t\tbase={props.base}\n\t\t\t\tdependencies={props.dependencies}\n\t\t\t\tdependents={props.dependents}\n\t\t\t\tid={props.id}\n\t\t\t\tlocation={props.location}\n\t\t\t\tname={props.name}\n\t\t\t\t/>\n\t\t</div>\n\t);\n}\n\nPatternTools.propTypes = {\n\tactiveSource: t.string.isRequired,\n\tbase: t.string.isRequired,\n\tdependencies: t.array.isRequired,\n\tdependents: t.array.isRequired,\n\tenvironment: t.string.isRequired,\n\tenvironments: t.array.isRequired,\n\texpanded: t.bool.isRequired,\n\thasCode: t.bool.isRequired,\n\tid: t.string.isRequired,\n\tlocation: t.shape({\n\t\tpathname: t.string.isRequired,\n\t\tquery: t.object.isRequired\n\t}),\n\tname: t.string.isRequired,\n\tonEnvironmentChange: t.func.isRequired\n};\n","import {connect} from 'react-redux';\nimport {bindActionCreators} from 'redux';\nimport Application from '../components/application';\n\nimport {search, themeLoaded, toggleSearchFocus, toggleTheme, windowResize} from '../actions';\n\nexport default connect(mapProps, mapDispatch)(Application);\n\nfunction mapProps(state, own) {\n\treturn {\n\t\tactivePattern: state.id,\n\t\tbase: state.base,\n\t\tdescription: selectDescription(state),\n\t\tdepth: state.depth,\n\t\texpanded: state.expanded,\n\t\thide: state.hide,\n\t\thierarchy: state.config.hierarchy,\n\t\tissue: state.issue,\n\t\tlightbox: state.lightbox,\n\t\tlogo: state.config.logo || 'patternplate',\n\t\tmenuEnabled: state.menuEnabled,\n\t\tnavigation: state.search ? state.searchMatches : selectNavigation(state),\n\t\tpathname: own.location.pathname,\n\t\tquery: own.location.query,\n\t\tsearch: own.location.query.search,\n\t\tstartBase: state.startBase,\n\t\tstyles: state.styles,\n\t\ttheme: state.theme,\n\t\tthemeLoading: selectThemeLoading(state),\n\t\ttitle: state.config.title || state.schema.name,\n\t\tversion: selectVersion(state)\n\t};\n}\n\nfunction mapDispatch(dispatch) {\n\treturn bindActionCreators({\n\t\tonResize: windowResize,\n\t\tonSearch: search,\n\t\tonThemeLoaded: themeLoaded,\n\t\tonThemeChange: toggleTheme,\n\t\trequestSearchBlur: () => toggleSearchFocus(false)\n\t}, dispatch);\n}\n\nfunction selectNavigation(state) {\n\treturn sanitizeNavigationTreeData({children: state.navigation}, state.hide);\n}\n\nfunction selectDescription(state) {\n\treturn selectSchema(state).description || '';\n}\n\nfunction selectVersion(state) {\n\treturn selectSchema(state).version || '';\n}\n\nfunction selectSchema(state) {\n\treturn state.schema || {};\n}\n\nfunction selectThemeLoading(state) {\n\treturn state.styles.length > 1;\n}\n\nfunction sanitizeNavigationTreeData(data, hide) {\n\tif (data.manifest) {\n\t\treturn hide && data.manifest.display === false ? null : data;\n\t}\n\n\treturn Object.entries(data.children)\n\t\t.reduce((results, entry) => {\n\t\t\tconst [name, child] = entry;\n\t\t\tconst grandChildren = sanitizeNavigationTreeData(child, hide);\n\t\t\tif (grandChildren && Object.keys(grandChildren).length > 0) {\n\t\t\t\tresults[name] = child;\n\t\t\t}\n\t\t\treturn results;\n\t\t}, {});\n}\n","import {bindActionCreators} from 'redux';\nimport {connect} from 'react-redux';\n\nimport ConsoleLightbox from '../components/content/console';\nimport {applyState, toggleConsole} from '../actions';\n\nexport default connect(mapProps, mapDispatch)(ConsoleLightbox);\n\nfunction mapProps(state) {\n\treturn {\n\t\tbase: state.base,\n\t\tlocation: state.routing.locationBeforeTransitions,\n\t\tstate: JSON.stringify(state, null, '  '),\n\t\ttheme: state.theme\n\t};\n}\n\nfunction mapDispatch(dispatch) {\n\treturn bindActionCreators({\n\t\tonApplyState: applyState,\n\t\tonClose: () => toggleConsole(false)\n\t}, dispatch);\n}\n","import {bindActionCreators} from 'redux';\nimport {connect} from 'react-redux';\nimport {dismissMessage, loadPattern} from '../actions';\nimport Content from '../components/content';\n\nexport default connect(mapState, mapDispatch)(Content);\n\nfunction mapState(state) {\n\tconst {base, config, hide, navigation, pattern, messages, time} = state;\n\treturn {base, config, hide, navigation, pattern, messages, time};\n}\n\nfunction mapDispatch(dispatch) {\n\treturn bindActionCreators({\n\t\tonDismiss: dismissMessage,\n\t\tonLoad: loadPattern,\n\t\tonRetry: loadPattern\n\t}, dispatch);\n}\n","import {connect} from 'react-redux';\nimport unescapeHtml from 'unescape-html';\nimport Home from '../components/content/home';\n\nexport default connect(state => {\n\treturn {\n\t\tbase: state.base,\n\t\treadme: selectReadme(state)\n\t};\n})(Home);\n\nfunction getDefaultReadme(data) {\n\treturn `\n# :construction: Add documentation\n\n> Undocumented software could not exist just as well.\n>\n> – The Voice of Common Sense\n\nCurrently there is no readme data at \\`./patterns/readme.md\\`, so we left this\nfriendly reminder here to change that soon.\n\nYou could start right away:\n\n\\`\\`\\`sh\necho \"# ${data.name}\\\\n This patternplate contains ...\" > patterns/readme.md\n\\`\\`\\`\n\nSome ideas on what to write into your pattern readme\n\n*  Why this Living Styleguide interface exists, e.g. what problems it should solve\n*  What the components in are intended for, e.g. a brand, website or product\n*  The component hierarchy you use, e.g. Atomic Design\n*  Naming conventions\n*  Rules for dependencies\n*  Browser matrix\n\n---\n\nHelp us to make this message more helpful on [GitHub](https://github.com/sinnerschrader/patternplate).\n\n`;\n}\n\nfunction selectReadme(state) {\n\tif (state.schema.readme) {\n\t\treturn unescapeHtml(state.schema.readme);\n\t}\n\treturn getDefaultReadme({\n\t\tname: state.config.title || state.schema.name,\n\t\tdescription: state.schema.description\n\t});\n}\n","import {bindActionCreators} from 'redux';\nimport {connect} from 'react-redux';\nimport Markdown from '../components/common/markdown';\nimport {scrollTo} from '../actions';\n\nfunction mapProps(state) {\n\tconst location = state.routing.locationBeforeTransitions;\n\treturn {\n\t\tbase: state.base,\n\t\thash: location.hash,\n\t\tpathname: location.pathname,\n\t\tquery: location.query\n\t};\n}\n\nexport function mapDispatch(dispatch) {\n\treturn bindActionCreators({scrollTo}, dispatch);\n}\n\nexport default connect(mapProps, mapDispatch)(Markdown);\n","import {connect} from 'react-redux';\nimport Home from '../components/content/home';\n\nexport default connect(state => {\n\treturn {\n\t\tbase: state.base,\n\t\treadme: selectReadme(state)\n\t};\n})(Home);\n\nfunction selectReadme(state) {\n\tconst url = state.routing.locationBeforeTransitions.pathname;\n\treturn `\n# Nothing found\n\n> Pretty sure these aren't the hypertext documents you are looking for.\n\nWe looked everywhere and could not find a single thing at \\`${url}\\`.\n\nYou might want to navigate back to [Home](/) or use the search.\n\n---\n\nHelp us to make this message more helpful on [GitHub](https://github.com/sinnerschrader/patternplate)\n`;\n}\n","import path from 'path';\n\nimport {includes, merge, noop, uniqBy} from 'lodash';\nimport {connect} from 'react-redux';\nimport {bindActionCreators} from 'redux';\nimport shortid from 'shortid';\n\nimport urlQuery from '../utils/url-query';\nimport navigate from '../utils/navigate';\nimport Pattern from '../components/pattern';\n\nimport {\n\tchangeConcern, changeEnvironment, changeType, demoContentResize,\n\tloadPattern, loadPatternDemo, loadPatternFile, resizeDemo, scrollDemo\n} from '../actions';\n\nimport patternDemoError from '../actions/pattern-demo-error';\n\nexport default connect(mapState, mapDispatch)(Pattern);\n\nfunction mapState(state) {\n\treturn {\n\t\tactiveSource: state.sourceId || '',\n\t\tautomount: selectAutomount(state),\n\t\tbase: state.base,\n\t\tbreadcrumbs: selectBreadCrumbs(state),\n\t\tcode: selectCode(state),\n\t\trulerX: selectRulerXFraction(state),\n\t\trulerY: selectRulerYFraction(state),\n\t\trulerLengthX: selectRulerLengthX(state),\n\t\trulerLengthY: selectRulerLengthY(state),\n\t\tdemoContentHeight: selectDemoContentHeight(state),\n\t\tdemoContentWidth: selectDemoContentWidth(state),\n\t\tdemoHeight: selectHeight(state),\n\t\tdemoWidth: selectWidth(state),\n\t\tdependencies: selectDependencies(state),\n\t\tdependents: selectDependents(state),\n\t\tdisplay: selectDisplay(state),\n\t\tenvironment: state.environment,\n\t\tenvironments: selectEnvironments(state),\n\t\terrored: selectPatternErrored(state),\n\t\tflag: selectFlag(state),\n\t\tid: selectId(state),\n\t\tloading: selectLoading(state),\n\t\tlocation: selectLocation(state),\n\t\tname: selectName(state),\n\t\tonDemoReady: selectOnDemoReloaded(state),\n\t\topacity: state.opacity,\n\t\treloadedTime: selectReloadedTime(state),\n\t\treloadTime: selectReloadTime(state),\n\t\trulers: state.rulers,\n\t\tsourceExpanded: state.sourceExpanded,\n\t\ttags: selectTags(state),\n\t\tversion: selectVersion(state)\n\t};\n}\n\nfunction mapDispatch(dispatch) {\n\treturn bindActionCreators({\n\t\tonConcernChange: changeConcern,\n\t\tonDemoError: patternDemoError,\n\t\tonDemoReady: () => loadPatternDemo(false),\n\t\tonDemoContentResize: demoContentResize,\n\t\tonDemoScroll: scrollDemo,\n\t\tonEnvironmentChange: changeEnvironment,\n\t\tonFileRequest: loadPatternFile,\n\t\treload: loadPattern,\n\t\tresize: resizeDemo,\n\t\tonTypeChange: changeType\n\t}, dispatch);\n}\n\nfunction selectWidth(state) {\n\tconst dim = state.demoDimensions[state.id] || {};\n\treturn isNaN(dim.x) ?\n\t\tselectWindowWidth(state) / 2 :\n\t\tdim.x;\n}\n\nfunction selectHeight(state) {\n\tconst dim = state.demoDimensions[state.id] || {};\n\treturn isNaN(dim.y) ?\n\t\tselectWindowHeight(state) / 2 :\n\t\tdim.y;\n}\n\nfunction selectDemoContentWidth(state) {\n\tconst dim = state.demoContentDimensions[state.id] || {};\n\treturn dim.width || 0;\n}\n\nfunction selectDemoContentHeight(state) {\n\tconst dim = state.demoContentDimensions[state.id] || {};\n\treturn dim.height || 0;\n}\n\nfunction selectRulerXFraction(state) {\n\tconst length = selectRulerLengthX(state);\n\tconst scrollX = state.scrollDemoX.x;\n\treturn scrollX / (length / 100);\n}\n\nfunction selectRulerYFraction(state) {\n\tconst length = selectRulerLengthY(state);\n\tconst scrollY = state.scrollDemoY.y;\n\treturn scrollY / (length / 100);\n}\n\nfunction selectRulerLengthX(state) {\n\tconst width = selectDemoContentWidth(state);\n\tconst windowWidth = selectWindowWidth(state);\n\treturn width * 2 + Math.abs(windowWidth - width);\n}\n\nfunction selectRulerLengthY(state) {\n\tconst height = selectDemoContentHeight(state);\n\tconst windowHeight = selectWindowHeight(state);\n\treturn height * 2 + Math.abs(windowHeight - height);\n}\n\nfunction selectWindowWidth(state) {\n\treturn (state.window || {}).width || 0;\n}\n\nfunction selectWindowHeight(state) {\n\treturn (state.window || {}).height || 0;\n}\n\nfunction selectBreadCrumbs(state) {\n\tconst fragments = selectId(state).split('/');\n\tconst location = selectLocation(state);\n\n\tif (fragments.length < 2) {\n\t\treturn [];\n\t}\n\n\treturn fragments.map((fragment, index) => {\n\t\tconst partial = fragments.slice(0, index + 1).join('/');\n\t\treturn {\n\t\t\tid: partial,\n\t\t\tname: fragment,\n\t\t\tnavigateable: index < fragments.length - 1,\n\t\t\ttarget: {\n\t\t\t\tpathname: `${state.base}pattern/${partial}`,\n\t\t\t\tquery: location.query\n\t\t\t}\n\t\t};\n\t});\n}\n\nfunction selectPattern(state) {\n\tconst cached = navigate(state.id, state.navigation);\n\treturn merge({}, cached, state.pattern);\n}\n\nfunction selectManifest(state) {\n\tconst pattern = selectPattern(state);\n\treturn pattern.manifest || {};\n}\n\nfunction selectManifestOptions(state) {\n\tconst manifest = selectManifest(state);\n\treturn manifest.options || {};\n}\n\nfunction selectReactMarkup(state) {\n\tconst options = selectManifestOptions(state);\n\treturn options['react-to-markup'] || {};\n}\n\nfunction selectReactMarkupOptions(state) {\n\tconst markup = selectReactMarkup(state);\n\treturn markup.opts || {};\n}\n\nfunction selectAutomount(state) {\n\tconst opts = selectReactMarkupOptions(state);\n\treturn ('automount' in opts) ? opts.automount : false;\n}\n\nfunction getManifestSelector(name, defaultValue) {\n\treturn state => {\n\t\tconst manifest = selectManifest(state);\n\t\tconst value = manifest[name];\n\t\treturn typeof value === 'undefined' ? defaultValue : value;\n\t};\n}\n\nfunction selectId(state) {\n\treturn state.id || selectPattern(state).id;\n}\n\nfunction selectName(state) {\n\tconst pattern = selectPattern(state);\n\tconst name = getManifestSelector('name')(state);\n\tconst displayName = getManifestSelector('displayName')(state);\n\treturn displayName || name || pattern.id || '';\n}\n\nfunction selectEnvironments(state) {\n\tconst environments = selectPattern(state).environments || [];\n\treturn environments.map(env => {\n\t\treturn {\n\t\t\tid: env.name,\n\t\t\tname: env.displayName || env.name\n\t\t};\n\t});\n}\n\nfunction selectFlag(state) {\n\treturn getManifestSelector('flag', '')(state);\n}\n\nfunction selectTags(state) {\n\treturn getManifestSelector('tags', [])(state);\n}\n\nfunction selectVersion(state) {\n\treturn getManifestSelector('version', '')(state);\n}\n\nfunction selectDisplay(state) {\n\treturn getManifestSelector('display', true)(state);\n}\n\nfunction selectDependentPatterns(state) {\n\treturn selectPattern(state).dependents || {};\n}\n\nfunction selectDependents(state) {\n\treturn Object.values(selectDependentPatterns(state))\n\t\t.filter(pattern => pattern.display)\n\t\t.reduce((registry, pattern) => {\n\t\t\tconst navPattern = navigate(pattern.id, state.navigation) || {manifest: {}};\n\t\t\tconst patternEntries = Object.entries(navPattern.manifest.patterns || {});\n\t\t\tconst localNames = patternEntries\n\t\t\t\t.filter(entry => entry[1] === state.id)\n\t\t\t\t.map(entry => entry[0]);\n\n\t\t\tconst amend = localNames.map(localName => {\n\t\t\t\treturn {\n\t\t\t\t\tid: pattern.id,\n\t\t\t\t\tname: pattern.displayName || pattern.name,\n\t\t\t\t\tlocalName,\n\t\t\t\t\tversion: pattern.version\n\t\t\t\t};\n\t\t\t});\n\n\t\t\treturn [...registry, ...amend];\n\t\t}, []);\n}\n\nfunction selectDependencies(state) {\n\tconst rootPattern = selectPattern(state);\n\treturn Object.entries(rootPattern.dependencies || {})\n\t\t.filter(entry => entry[0] !== 'Pattern')\n\t\t.filter(entry => entry[1].manifest.display !== false)\n\t\t.map(entry => {\n\t\t\tconst [localName, pattern] = entry;\n\t\t\tconst navPattern = navigate(pattern.id, state.navigation) || {manifest: {}};\n\n\t\t\treturn {\n\t\t\t\tid: pattern.id,\n\t\t\t\tname: navPattern.manifest.displayName || navPattern.manifest.name,\n\t\t\t\tlocalName,\n\t\t\t\tversion: navPattern.manifest.version\n\t\t\t};\n\t\t});\n}\n\nfunction selectLoading(state) {\n\tconst pattern = selectPattern(state);\n\treturn [\n\t\tpattern.dataLoading,\n\t\tpattern.demoLoading,\n\t\tpattern.sourceLoading\n\t].some(Boolean);\n}\n\nfunction selectReloadTime(state) {\n\tconst pattern = selectPattern(state);\n\treturn pattern.reloadTime || null;\n}\n\nfunction selectReloadedTime(state) {\n\tconst pattern = selectPattern(state);\n\treturn pattern.reloadedTime || null;\n}\n\nfunction selectLocation(state) {\n\treturn state.routing.locationBeforeTransitions;\n}\n\nfunction selectOnDemoReloaded(state) {\n\tconst pattern = selectPattern(state);\n\treturn pattern.onDemoReloaded || noop;\n}\n\nfunction selectPatternErrors(state) {\n\treturn selectPattern(state).errors || [];\n}\n\nfunction selectPatternErrored(state) {\n\tconst pattern = selectPattern(state);\n\treturn [\n\t\tpattern.dataErrored,\n\t\tpattern.demoErrored,\n\t\tpattern.sourceErrored\n\t].some(Boolean);\n}\n\nfunction selectCode(state) {\n\tconst pattern = selectPattern(state);\n\tconst sources = pattern.sources || {};\n\tconst files = pattern.files || [];\n\tconst errors = selectPatternErrors(state);\n\n\tconst formats = uniqBy(files.reduce((registry, file) => {\n\t\treturn [...registry, {\n\t\t\tid: [pattern.id, file.type].join('/'),\n\t\t\tdisplayName: file.displayName,\n\t\t\tinExtname: path.extname(file.path),\n\t\t\toutExtname: `.${file.out}`,\n\t\t\ttype: file.type,\n\t\t\tin: file.in,\n\t\t\tout: file.out\n\t\t}];\n\t}, []), 'id');\n\n\treturn formats.map(format => {\n\t\tconst formatFiles = files.filter(file => file.type === format.type);\n\t\tconst concerns = formatFiles.map(file => file.concern);\n\n\t\tconst hasDemo = includes(concerns, 'demo');\n\t\tconst defaultConcern = hasDemo ? 'demo' : 'index';\n\t\tconst parsed = urlQuery.parse(state.sourceId || '');\n\n\t\tconst passedConcern = path.basename(parsed.pathname, path.extname(parsed.pathname)) ||\n\t\t\tdefaultConcern;\n\n\t\tconst isApplicable = includes(concerns, passedConcern);\n\n\t\tconst concern = isApplicable ?\n\t\t\tpassedConcern :\n\t\t\tdefaultConcern;\n\n\t\tconst sourceType = format.type === 'documentation' ? 'source' : state.sourceType;\n\t\tconst language = sourceType === 'source' ? format.in : format.out;\n\t\tconst extname = format.inExtname;\n\t\tconst pathname = [pattern.id, `${concern}${extname}`].join('/');\n\t\tconst types = hasDemo && concern === 'index' ? ['source'] : ['source', 'transformed'];\n\t\tconst type = hasDemo && concern === 'index' ? 'source' : sourceType;\n\n\t\tconst id = urlQuery.format({\n\t\t\tpathname,\n\t\t\tquery: {\n\t\t\t\ttype,\n\t\t\t\tenvironment: state.environment\n\t\t\t}\n\t\t});\n\n\t\tconst source = sources[id];\n\t\tconst active = state.sourceId === id;\n\n\t\tconst fileErrors = errors.filter(error => {\n\t\t\treturn error.payload ?\n\t\t\t\terror.payload.id === id :\n\t\t\t\terror.patternFile === id;\n\t\t});\n\n\t\tconst update = active &&\n\t\t\t!source &&\n\t\t\t!pattern.sourceLoading &&\n\t\t\t!fileErrors.length;\n\n\t\treturn {\n\t\t\tactive,\n\t\t\tupdate,\n\t\t\textname,\n\t\t\tconcern,\n\t\t\tconcerns,\n\t\t\tid,\n\t\t\tshortid: shortid(id),\n\t\t\tlanguage,\n\t\t\tname: format.displayName,\n\t\t\tsource: source || '',\n\t\t\ttype,\n\t\t\ttypes\n\t\t};\n\t});\n}\n","import {connect} from 'react-redux';\n\nimport ProblemLightbox from '../components/content/problem';\nexport default connect(mapProps)(ProblemLightbox);\n\nfunction mapProps(state) {\n\treturn {\n\t\tbase: state.base,\n\t\tstate: JSON.stringify(state, null, '  '),\n\t\ttheme: state.theme,\n\t\tversion: state.schema.appVersion,\n\t\tserverVersion: state.schema.serverVersion,\n\t\tclientVersion: state.schema.clientVersion,\n\t\tlocation: state.routing.locationBeforeTransitions,\n\t\tnodeVersion: state.schema.nodeVersion,\n\t\tnpmVersion: state.schema.npmVersion,\n\t\tosName: state.schema.osName,\n\t\tosVersion: state.schema.osVersion,\n\t\tbrowserName: state.schema.clientRuntimeName,\n\t\tbrowserVersion: state.schema.clientRuntimeVersion,\n\t\truntimeName: state.schema.serverRuntimeName,\n\t\truntimeVersion: state.schema.serverRuntimeVersion,\n\t\tclientOsName: state.schema.clientOsName,\n\t\tclientOsVersion: state.schema.clientOsVersion,\n\t\tserverOsName: state.schema.serverOsName,\n\t\tserverOsVersion: state.schema.serverOsVersion\n\t};\n}\n","import {connect} from 'react-redux';\n\nimport ShortcutsLightbox from '../components/content/shortcuts';\n\nexport default connect(mapProps)(ShortcutsLightbox);\n\nfunction mapProps(state) {\n\treturn {\n\t\tbase: state.base,\n\t\tlocation: state.routing.locationBeforeTransitions\n\t};\n}\n","import React from 'react';\nimport {render} from 'react-dom';\nimport {Router, browserHistory} from '@marionebl/react-router';\nimport {Provider} from 'react-redux';\nimport {syncHistoryWithStore} from 'react-router-redux';\n\nimport routes from './routes';\nimport configureStore from './store';\n\nexport default function (data, el) {\n\tconst store = configureStore(browserHistory, data);\n\tconst history = syncHistoryWithStore(browserHistory, store);\n\tconst router = (\n\t\t<Provider store={store}>\n\t\t\t<Router history={history}>\n\t\t\t\t{routes(store)}\n\t\t\t</Router>\n\t\t</Provider>\n\t);\n\n\treturn render(router, el);\n}\n","import React from 'react';\nimport {Route, IndexRoute} from '@marionebl/react-router';\n\nimport Application from '../containers/application';\nimport Content from '../containers/content';\nimport NotFound from '../containers/not-found';\nimport Home from '../containers/home';\n\nexport default function (store) {\n\tconst state = store.getState();\n\treturn (\n\t\t<Route path={state.base} component={Application}>\n\t\t\t<IndexRoute component={Home}/>\n\t\t\t<Route path=\"pattern/*\" component={Content}/>\n\t\t\t<Route path=\"*\" component={NotFound}/>\n\t\t</Route>\n\t);\n}\n","import {createStore, compose, applyMiddleware} from 'redux';\nimport {routerReducer as routing, routerMiddleware} from 'react-router-redux';\nimport thunk from 'redux-thunk';\nimport topology from 'topologically-combine-reducers';\nimport promise from 'redux-promise';\n// import logger from 'redux-logger';\n\nimport reducers, {dependencies} from '../reducers';\n\nexport default function configureStore(history, initial) {\n\tconst reducer = hydrateable(topology({routing, ...reducers}, dependencies));\n\n\tconst middlewares = [thunk, promise, /* logger(),*/ routerMiddleware(history)];\n\n\tconst middleware = applyMiddleware(...middlewares);\n\tconst store = createStore(reducer, initial, compose(middleware));\n\n\treturn store;\n}\n\nfunction hydrateable(reducer) {\n\treturn (state, action) => {\n\t\tswitch (action.type) {\n\t\t\tcase '@@APPLY_STATE':\n\t\t\t\treturn reducer(action.payload, action);\n\t\t\tdefault:\n\t\t\t\treturn reducer(state, action);\n\t\t}\n\t};\n}\n","import {handleActions} from 'redux-actions';\nimport markBlock from '../actions/mark-block';\n\nconst defaultValue = null;\n\nconst markBlockHandler = (state, {payload}) => {\n\tconst {active, id} = payload;\n\n\tif (active) {\n\t\treturn id;\n\t}\n\n\treturn defaultValue;\n};\n\nconst locationChangeHandler = () => {\n\treturn defaultValue;\n};\n\nexport default handleActions({\n\t[markBlock]: markBlockHandler,\n\t'@@router/LOCATION_CHANGE': locationChangeHandler\n}, defaultValue);\n","import {handleAction} from 'redux-actions';\nimport {getDepth} from './depth';\n\nexport function getBase(pathname) {\n\tconst depth = getDepth(pathname);\n\treturn depth > 0 ?\n\t\t`/${pathname\n\t\t\t.split('/')\n\t\t\t.filter(Boolean)\n\t\t\t.slice(0, depth)\n\t\t\t.join('/')}/` :\n\t\t'/';\n}\n\nexport default handleAction('@@router/LOCATION_CHANGE', {\n\tnext(_, {payload: {pathname}}) {\n\t\treturn getBase(pathname);\n\t}\n}, '/');\n","import {isEqual} from 'lodash';\nimport {demoContentResize} from '../actions';\nimport handleDependentActions from '../actions/handle-dependent-actions';\n\nconst defaultValue = {};\n\nexport default handleDependentActions({\n\t[demoContentResize]: (state, {payload}, {pattern}) => {\n\t\tconst previous = state[pattern.id];\n\t\tconst next = {width: payload.width, height: payload.height};\n\t\tif (!isEqual(previous, next)) {\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[pattern.id]: next\n\t\t\t};\n\t\t}\n\t\treturn state;\n\t}\n}, {defaultValue, dependencies: ['pattern']});\n","import getIdByPathname from '../utils/get-id-by-pathname';\nimport handleDependentActions from '../actions/handle-dependent-actions';\n\nexport default handleDependentActions({\n\t'@@router/LOCATION_CHANGE': (state, action, {base}) => {\n\t\tconst id = getIdByPathname(action.payload.pathname, base) || null;\n\t\tconst x = Math.max(100, Number(action.payload.query.width));\n\t\tconst y = Math.max(100, Number(action.payload.query.height));\n\n\t\tconst previous = state[id] || {};\n\n\t\tif (previous.x !== x || previous.y !== y) {\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[id]: {\n\t\t\t\t\t...state[id],\n\t\t\t\t\tx,\n\t\t\t\t\ty\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\treturn state;\n\t}\n}, {defaultValue: {}, dependencies: ['base']});\n","import {handleAction} from 'redux-actions';\n\nexport function getDepth(pathname) {\n\tconst fragments = pathname.split('/').filter(Boolean);\n\tconst fragmentIndex = fragments.indexOf('pattern');\n\n\tconst index = fragmentIndex === -1 ?\n\t\tfragments.length :\n\t\tfragmentIndex;\n\n\treturn fragments.slice(0, index).filter(Boolean).length;\n}\n\nexport default handleAction('@@router/LOCATION_CHANGE', {\n\tnext(_, {payload: {pathname}}) {\n\t\treturn getDepth(pathname);\n\t}\n}, '.');\n","import {handleActions} from 'redux-actions';\nimport urlQuery from '../utils/url-query';\n\nconst defaultValue = 'index';\n\nfunction getEnvironment(pathname) {\n\treturn urlQuery.parse(pathname).query.environment || defaultValue;\n}\n\nfunction onEnvironmentLocationChange(_, action) {\n\treturn getEnvironment(action.payload.pathname);\n}\n\nexport default handleActions({\n\t'@@router/LOCATION_CHANGE': onEnvironmentLocationChange\n}, defaultValue);\n","import {handleActions} from 'redux-actions';\n\nconst defaultValue = true;\n\nfunction onExpandedLocationChange(_, action) {\n\treturn action.payload.query.expanded !== 'false';\n}\n\nexport default handleActions({\n\t'@@router/LOCATION_CHANGE': onExpandedLocationChange\n}, defaultValue);\n","import {handleActions} from 'redux-actions';\n\nconst defaultValue = true;\n\nfunction onHideChange(_, action) {\n\treturn action.payload.query.hide !== 'false';\n}\n\nexport default handleActions({\n\t'@@router/LOCATION_CHANGE': onHideChange\n}, defaultValue);\n","import getIdByPathname from '../utils/get-id-by-pathname';\nimport handleDependentActions from '../actions/handle-dependent-actions';\n\nfunction handler(_, {payload}, {base}) {\n\treturn getIdByPathname(payload.pathname, base) || null;\n}\n\nexport default handleDependentActions({\n\t'@@router/LOCATION_CHANGE': handler\n}, {\n\tdependencies: ['base']\n});\n","import activeBlock from './active-block';\nimport base from './base';\nimport depth from './depth';\nimport demoContentDimensions from './demo-content-dimensions';\nimport demoDimensions from './demo-dimensions';\nimport environment from './environment';\nimport expanded from './expanded';\nimport id from './id';\nimport issue from './issue';\nimport lightbox from './lightbox';\nimport menuEnabled from './menu-enabled';\nimport messages from './messages';\nimport navigation from './navigation';\nimport opacity from './opacity';\nimport pattern from './pattern';\nimport rulers from './rulers';\nimport search from './search';\nimport searchMatches from './search-matches';\nimport scrollDemoX from './scroll-demo-x';\nimport scrollDemoY from './scroll-demo-y';\nimport sourceExpanded from './source-expanded';\nimport sourceId from './source-id';\nimport sourceType from './source-type';\nimport styles from './styles';\nimport theme from './theme';\nimport hide from './hide';\nimport window from './window';\n\nconst ident = (state = {}) => state;\nconst getDependencies = (reducer = {}) => reducer.dependencies || [];\n\nexport default {\n\tactiveBlock,\n\tbase,\n\tconfig: ident,\n\tdemoContentDimensions,\n\tdemoDimensions,\n\tdepth,\n\tenvironment,\n\texpanded,\n\thide,\n\tid,\n\tissue,\n\tlightbox,\n\tmenuEnabled,\n\tmessages,\n\tnavigation,\n\topacity,\n\tpattern,\n\trulers,\n\tschema: ident,\n\tscrollDemoX,\n\tscrollDemoY,\n\tsearch,\n\tsearchMatches,\n\tsourceExpanded,\n\tsourceId,\n\tsourceType,\n\tstartBase: ident,\n\tstyles,\n\ttheme,\n\twindow\n};\n\nexport const dependencies = {\n\tpattern: getDependencies(pattern),\n\tsearchMatches: getDependencies(searchMatches),\n\tstyles: getDependencies(styles),\n\tscrollDemoY: getDependencies(scrollDemoY),\n\tscrollDemoX: getDependencies(scrollDemoX)\n};\n","import {handleActions} from 'redux-actions';\n\nconst defaultValue = false;\n\nfunction onIssueLocationChange(_, action) {\n\treturn action.payload.query.issue === 'true';\n}\n\nexport default handleActions({\n\t'@@router/LOCATION_CHANGE': onIssueLocationChange\n}, defaultValue);\n","import {handleActions} from 'redux-actions';\n\nconst defaultValue = '';\n\nfunction onLightboxLocationChange(_, action) {\n\treturn action.payload.query.lightbox;\n}\n\nexport default handleActions({\n\t'@@router/LOCATION_CHANGE': onLightboxLocationChange\n}, defaultValue);\n","import {handleActions} from 'redux-actions';\n\nconst defaultValue = false;\n\nconst menuEnabledlocationChangeHandler = (_, {payload}) => {\n\treturn payload.query['menu-enabled'] === 'true';\n};\n\nexport default handleActions({\n\t'@@router/LOCATION_CHANGE': menuEnabledlocationChangeHandler\n}, defaultValue);\n","import path from 'path';\nimport strip from 'strip-ansi';\nimport md5 from 'md5';\nimport {handleAction} from 'redux-actions';\n\nimport {\n\tloadPatternData, loadPatternFile, dismissAllMessages, dismissMessage\n} from '../actions';\nimport {handlePromiseThunkAction} from '../actions/promise-thunk-action';\nimport composeReducers from '../utils/compose-reducers';\n\nconst defaultValue = [];\n\nfunction createMessage(error, seed = 1) {\n\terror.cwd = '/Users/marneb/projects/patternplate/patternplate/patterns/';\n\tconst lines = error.message.split('\\n');\n\treturn {\n\t\ttype: 'error',\n\t\tid: md5([seed, ...lines].join('-')),\n\t\tsubject: lines[0],\n\t\tbody: strip(lines.slice(1, lines.length).join('\\n')),\n\t\tstack: strip(error.stack),\n\t\tpattern: error.pattern,\n\t\tretry: Boolean(error.pattern),\n\t\tfile: error.cwd && error.file ? path.relative(error.cwd, error.file).slice(-25) : null\n\t};\n}\n\nexport default composeReducers(\n\thandlePromiseThunkAction(loadPatternData, {\n\t\tsuccess(state, {payload}) {\n\t\t\treturn state.filter(message => !message.pattern || message.pattern === payload.id);\n\t\t},\n\t\tthrows(state, {payload: error}) {\n\t\t\tconst message = createMessage(error, 1);\n\t\t\treturn [message, ...state.slice(0, 2)];\n\t\t}\n\t}, {defaultValue}),\n\thandlePromiseThunkAction(loadPatternFile, {\n\t\tthrows(state, {payload: error}) {\n\t\t\tconst message = createMessage(error, 1);\n\t\t\treturn [message, ...state.slice(0, 2)];\n\t\t}\n\t}),\n\thandleAction(dismissMessage, (state, {payload: id}) => {\n\t\treturn state.filter(message => message.id !== id);\n\t}, {defaultValue}),\n\thandleAction(dismissAllMessages, () => {\n\t\treturn defaultValue;\n\t}, {defaultValue}),\n\thandleAction('PATTERN_DEMO_ERROR', (state, {payload: error}) => {\n\t\tconst message = createMessage(error, 1);\n\t\treturn [message, ...state.slice(0, 2)];\n\t})\n);\n","import path from 'path';\nimport {merge, zipObjectDeep} from 'lodash';\n\nimport {loadPatternData} from '../actions';\nimport {handlePromiseThunkAction} from '../actions/promise-thunk-action';\nimport navigate from '../utils/navigate';\n\nconst handlePatternLoad = handlePromiseThunkAction(loadPatternData, {\n\tsuccess(state, {payload}) {\n\t\tconst match = navigate(payload.id, state);\n\t\tif (match) {\n\t\t\tconst fragments = payload.id.split('/');\n\n\t\t\tconst entities = fragments.map((fragment, index) => {\n\t\t\t\treturn navigate(fragments.slice(0, index + 1).join('/'), state);\n\t\t\t});\n\n\t\t\tconst entityPath = entities.reduce((registry, entity) => {\n\t\t\t\tconst id = path.basename(entity.id);\n\t\t\t\tconst amend = entity.type === 'folder' ?\n\t\t\t\t\t[id, 'children'] :\n\t\t\t\t\t[id];\n\t\t\t\treturn [...registry, ...amend];\n\t\t\t}, []).join('.');\n\n\t\t\tconst data = merge({}, match, {\n\t\t\t\tdependencies: payload.dependencies,\n\t\t\t\tdependents: payload.dependents,\n\t\t\t\tdisplay: payload.display,\n\t\t\t\tenvironments: payload.environments,\n\t\t\t\tfiles: payload.files,\n\t\t\t\tid: payload.id,\n\t\t\t\tmanifest: {\n\t\t\t\t\tdisplayName: payload.manifest.displayName,\n\t\t\t\t\tflag: payload.manifest.flag,\n\t\t\t\t\ttags: payload.manifest.tags,\n\t\t\t\t\tname: payload.manifest.name,\n\t\t\t\t\tversion: payload.manifest.version\n\t\t\t\t}\n\t\t\t});\n\t\t\tconst envelope = zipObjectDeep([entityPath], [data]);\n\t\t\treturn merge({}, state, envelope);\n\t\t}\n\t\treturn state;\n\t}\n}, {});\n\nexport default handlePatternLoad;\n","import {handleActions} from 'redux-actions';\n\nconst defaultValue = true;\n\nfunction onOpacityLocationChange(_, action) {\n\treturn action.payload.query.opacity !== 'false';\n}\n\nexport default handleActions({\n\t'@@router/LOCATION_CHANGE': onOpacityLocationChange\n}, defaultValue);\n","import {handleAction} from 'redux-actions';\n\nimport {\n\tloadPatternData, loadPatternFile, loadPatternDemo\n} from '../actions';\n\nimport {handlePromiseThunkAction} from '../actions/promise-thunk-action';\nimport composeReducers from '../utils/compose-reducers';\n\nconst handlePatternLoad = handlePromiseThunkAction(loadPatternData, {\n\tstart(state) {\n\t\treturn {\n\t\t\terrors: state.errors,\n\t\t\tdataErrored: false,\n\t\t\tdemoErrored: false,\n\t\t\tsourceErrored: false,\n\t\t\tdataLoading: true,\n\t\t\tdemoLoading: Boolean(state.id),\n\t\t\tfileLoading: Boolean(state.sourceId),\n\t\t\treloadTime: state.reloadTime,\n\t\t\treloadedTime: state.reloadedTime,\n\t\t\tsources: state.sources\n\t\t};\n\t},\n\tsuccess(state, {payload}, {id}) {\n\t\tconst sources = state ? state.sources : {};\n\t\tconst errors = state ? state.errors || [] : [];\n\n\t\tif (id !== payload.id) {\n\t\t\treturn state;\n\t\t}\n\n\t\treturn {\n\t\t\t...state,\n\t\t\tid: payload.id,\n\t\t\tdependencies: payload.dependencies,\n\t\t\tenvironments: payload.environments,\n\t\t\tdataErrored: false,\n\t\t\tdataLoading: false,\n\t\t\tfiles: payload.files,\n\t\t\tmanifest: payload.manifest,\n\t\t\tsources,\n\t\t\terrors\n\t\t};\n\t},\n\tthrows(state, {payload}) {\n\t\treturn {\n\t\t\tdataLoading: false,\n\t\t\terrors: [...(state.errors || []), {file: null, id: state.id, payload}],\n\t\t\tdataErrored: true\n\t\t};\n\t}\n}, {\n\tdefaultValue: {},\n\tdependencies: ['id']\n});\n\nconst handleSourceLoad = handlePromiseThunkAction(loadPatternFile, {\n\tstart(state) {\n\t\treturn {\n\t\t\t...state,\n\t\t\tsourceLoading: true,\n\t\t\tsourceErrored: false\n\t\t};\n\t},\n\tsuccess(state, {payload}) {\n\t\treturn {\n\t\t\t...state,\n\t\t\tsourceLoading: false,\n\t\t\tsourceErrored: false,\n\t\t\tsources: {\n\t\t\t\t...state.sources,\n\t\t\t\t[payload.id]: payload.source\n\t\t\t}\n\t\t};\n\t},\n\tthrows(state, {payload: error}) {\n\t\treturn {\n\t\t\t...state,\n\t\t\tsourceLoading: false,\n\t\t\tsourceErrored: true,\n\t\t\terrors: [...state.errors, {id: state.id, payload: error.payload}]\n\t\t};\n\t}\n});\n\nconst handleLoadPatternDemo = handleAction(loadPatternDemo, (state, {payload: loading}) => {\n\treturn {\n\t\t...state,\n\t\tdemoErrored: false,\n\t\tdemoLoading: loading,\n\t\treloadTime: loading ? Date.now() : state.reloadTime\n\t};\n});\n\nconst reducers = composeReducers(\n\thandlePatternLoad,\n\thandleSourceLoad,\n\thandleLoadPatternDemo\n);\n\nexport default reducers;\n","import {handleActions} from 'redux-actions';\n\nconst defaultValue = false;\n\nfunction onRulersLocationChange(_, action) {\n\treturn action.payload.query.rulers === 'true';\n}\n\nexport default handleActions({\n\t'@@router/LOCATION_CHANGE': onRulersLocationChange\n}, defaultValue);\n","import handleDependentActions from '../actions/handle-dependent-actions';\n\nexport default handleDependentActions({\n\t'@@router/LOCATION_CHANGE': (state, action, {pattern}) => {\n\t\treturn {x: 0, pattern};\n\t},\n\t'SCROLL_DEMO_X': (state, {payload}) => {\n\t\treturn {...state, x: payload};\n\t}\n}, {defaultValue: {x: 0}, dependencies: ['pattern']});\n","import handleDependentActions from '../actions/handle-dependent-actions';\n\nexport default handleDependentActions({\n\t'@@router/LOCATION_CHANGE': (state, action, {pattern}) => {\n\t\treturn {y: 0, pattern};\n\t},\n\t'SCROLL_DEMO_Y': (state, {payload}) => {\n\t\treturn {...state, y: payload};\n\t}\n}, {defaultValue: {y: 0}, dependencies: ['pattern']});\n","import {includes, flatten, startsWith} from 'lodash';\n\nimport navigate from '../../utils/navigate';\n\nexport function searchFolder(search, navigation, merge = {}) {\n\tif (!search) {\n\t\treturn;\n\t}\n\n\tconst cut = search.slice(0, search.length - 1);\n\tconst match = navigate(cut, navigation);\n\n\tif (!match || match && !match.type === 'folder') {\n\t\treturn;\n\t}\n\n\treturn rewrap(cut, match, merge);\n}\n\nfunction rewrap(id, data, merge) {\n\tconst fragments = id.split('/').filter(Boolean);\n\tconst stack = [];\n\n\treturn fragments.reduce((registry, fragment, index) => {\n\t\tconst sub = stack.length > 0 ? navigate(stack.join('/'), registry) : registry;\n\t\tsub[fragment] = fragments.length - 1 === index ? {...data, ...merge} : {...merge};\n\t\tstack.push(fragment);\n\t\treturn registry;\n\t}, {});\n}\n\nexport function matchPattern(pattern, criteria = {}) {\n\tif (Object.keys(criteria).length === 0) {\n\t\treturn true;\n\t}\n\n\treturn Object.entries(criteria)\n\t\t.every(item => {\n\t\t\tconst [name, values] = item;\n\n\t\t\tif (values.length === 0) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (name === 'tags') {\n\t\t\t\tconst tags = pattern.manifest.tags || [];\n\t\t\t\treturn values.some(tag => includes(tags, tag));\n\t\t\t} else if (name === 'flags') {\n\t\t\t\tconst flag = pattern.manifest.flag || '';\n\t\t\t\treturn values.some(valueFlag => valueFlag === flag);\n\t\t\t} else if (name === 'depends') {\n\t\t\t\tconst dependencies = Object.keys(pattern.manifest.patterns || {});\n\t\t\t\treturn values.some(dependency => includes(dependencies, dependency));\n\t\t\t} else if (name === 'provides') {\n\t\t\t\tconst dependents = Object.keys(pattern.manifest.dependentPatterns || {});\n\t\t\t\treturn values.some(dependent => includes(dependents, dependent));\n\t\t\t}\n\n\t\t\treturn true;\n\t\t});\n}\n\nexport function createStems(search) {\n\treturn search.split(' ')\n\t\t.filter(isStem)\n\t\t.filter(Boolean);\n}\n\nexport function createTokens(search) {\n\tconst fragments = search.split(' ');\n\tconst tokens = fragments.filter(isToken);\n\tconst tags = flatten(tokens.filter(isTagToken).map(getTokenValues));\n\tconst flags = flatten(tokens.filter(isFlagToken).map(getTokenValues));\n\tconst depends = flatten(tokens.filter(isDependsToken).map(getTokenValues));\n\tconst provides = flatten(tokens.filter(isProvidesToken).map(getTokenValues));\n\n\treturn {\n\t\ttags, flags, depends, provides\n\t};\n}\n\nexport function getPatterns(haystack, criteria = {}) {\n\treturn Object.values(haystack)\n\t\t.reduce((registry, item) => {\n\t\t\tif (item.type === 'pattern') {\n\t\t\t\treturn matchPattern(item, criteria) ?\n\t\t\t\t\t[...registry, item] :\n\t\t\t\t\tregistry;\n\t\t\t} else if (item.type === 'folder') {\n\t\t\t\treturn [...registry, ...getPatterns(item.children, criteria)];\n\t\t\t}\n\t\t\treturn registry;\n\t\t}, []);\n}\n\nexport function filterPatterns(patterns, ids) {\n\treturn getPatterns(patterns)\n\t\t.filter(({id}) => includes(ids, id))\n\t\t.reduce((registry, item) => {\n\t\t\tconst fragments = item.id.split('/');\n\t\t\tconst key = fragments[fragments.length - 1];\n\t\t\treturn {\n\t\t\t\t...registry,\n\t\t\t\t[key]: item\n\t\t\t};\n\t\t}, {});\n}\n\nconst tokenKeys = ['tag', 'flag', 'depends', 'provides'];\n\nfunction matchesToken(key, token) {\n\treturn startsWith(token, `${key}:`);\n}\n\nexport function isToken(token) {\n\treturn tokenKeys.some(tokenKey => matchesToken(tokenKey, token));\n}\n\nexport function isStem(token) {\n\treturn !isToken(token);\n}\n\nexport function isTagToken(token) {\n\treturn matchesToken('tag', token);\n}\n\nexport function isFlagToken(token) {\n\treturn matchesToken('flag', token);\n}\n\nexport function isDependsToken(token) {\n\treturn matchesToken('depends', token);\n}\n\nexport function isProvidesToken(token) {\n\treturn matchesToken('provides', token);\n}\n\nexport function getTokenValues(token) {\n\treturn token\n\t\t.split(':')\n\t\t.slice(1)\n\t\t.join('.')\n\t\t.split(',')\n\t\t.filter(Boolean)\n\t\t.map(item => item.trim());\n}\n","import Fuse from 'fuse.js';\n\nimport * as helpers from './helpers';\nimport handleDependentActions from '../../actions/handle-dependent-actions';\n\nconst defaultValue = [];\nconst dependencies = ['expanded', 'navigation'];\n\nconst searchMatchReducer = handleDependentActions({\n\t'@@router/LOCATION_CHANGE': locationChangeHandler\n}, {defaultValue, dependencies});\n\nexport default searchMatchReducer;\n\nfunction locationChangeHandler(state, action, dependencies) {\n\tconst {navigation, expanded} = dependencies;\n\tconst {search = ''} = action.payload.query;\n\n\tif (!expanded) {\n\t\treturn navigation;\n\t}\n\n\t// Check for a matching folder first\n\t// e.g. atoms/ => atoms\n\t/* const folder = helpers.searchFolder(search, navigation, {expanded: true});\n\n\tif (folder) {\n\t\treturn folder;\n\t} */\n\n\tconst stems = helpers.createStems(search);\n\tconst tokens = helpers.createTokens(search);\n\tconst patterns = helpers.getPatterns(navigation, tokens);\n\n\tconst ids = stems.length > 0 ?\n\t\tcreateFuse(patterns, stems).search(stems.join(' ')) :\n\t\tpatterns.map(pattern => pattern.id);\n\n\t// Boil down to single pattern if a fully qualified id has been entered\n\tconst [direct] = ids.filter(id => id === search);\n\tconst matches = direct ? [direct] : ids;\n\n\treturn helpers.filterPatterns(navigation, matches);\n}\n\nfunction createFuse(patterns) {\n\treturn new Fuse(patterns, {\n\t\tid: 'id',\n\t\tthreshold: 0.3,\n\t\tkeys: [\n\t\t\t'id',\n\t\t\t'manifest.name',\n\t\t\t'manifest.displayName',\n\t\t\t'manifest.tags',\n\t\t\t'manifest.flag'\n\t\t]\n\t});\n}\n","import {handleActions} from 'redux-actions';\n\nconst defaultValue = '';\n\nfunction onSearchLocationChange(_, action) {\n\treturn action.payload.query.search;\n}\n\nexport default handleActions({\n\t'@@router/LOCATION_CHANGE': onSearchLocationChange\n}, defaultValue);\n","import {handleActions} from 'redux-actions';\n\nconst defaultValue = false;\n\nconst locationChangeHandler = (_, {payload}) => {\n\treturn payload.query['source-expanded'] === 'true';\n};\n\nexport default handleActions({\n\t'@@router/LOCATION_CHANGE': locationChangeHandler\n}, defaultValue);\n","import handleDependentActions from '../actions/handle-dependent-actions';\nimport urlQuery from '../utils/url-query';\n\nconst defaultValue = null;\n\nfunction handler(_, {payload}, {environment}) {\n\tif (payload.query.source) {\n\t\tconst parsed = urlQuery.parse(payload.query.source);\n\t\treturn urlQuery.format({\n\t\t\t...parsed,\n\t\t\tquery: {\n\t\t\t\t...parsed.query,\n\t\t\t\tenvironment\n\t\t\t}\n\t\t});\n\t}\n\treturn defaultValue;\n}\n\nexport default handleDependentActions({\n\t'@@router/LOCATION_CHANGE': handler\n}, {\n\tdependencies: ['environment']\n});\n","import {handleAction} from 'redux-actions';\nimport urlQuery from '../utils/url-query';\n\nconst defaultValue = 'source';\n\nfunction handler(state, {payload}) {\n\tif (!payload.query.source) {\n\t\treturn state;\n\t}\n\n\tconst parsed = urlQuery.parse(payload.query.source || '');\n\treturn parsed.query.type || defaultValue;\n}\n\nexport default handleAction('@@router/LOCATION_CHANGE', handler, defaultValue);\n","import handleDependentActions from '../actions/handle-dependent-actions';\nimport themeLoaded from '../actions/theme-loaded';\n\nconst defaultValue = [];\nconst dependencies = ['theme'];\n\nconst stylesReducer = handleDependentActions({\n\t'@@router/LOCATION_CHANGE': onLocationChange,\n\t[themeLoaded]: onThemeLoaded\n}, {defaultValue, dependencies});\n\nexport default stylesReducer;\n\nfunction onLocationChange(state, _, {theme}) {\n\tif (theme === state[state.length - 1]) {\n\t\treturn state;\n\t}\n\n\treturn [...state, theme];\n}\n\nfunction onThemeLoaded(state, action) {\n\treturn [action.payload];\n}\n","import {handleActions} from 'redux-actions';\n\nconst defaultValue = 'light';\n\nconst locationChangeHandler = (_, {payload}) => {\n\treturn payload.query.theme || defaultValue;\n};\n\nexport default handleActions({\n\t'@@router/LOCATION_CHANGE': locationChangeHandler\n}, defaultValue);\n","import {isEqual} from 'lodash';\nimport {handleActions} from 'redux-actions';\nimport {windowResize} from '../actions';\n\nconst defaultValue = {\n\theight: 0,\n\twidth: 0\n};\n\nexport default handleActions({\n\t[windowResize]: onWindowResize\n}, defaultValue);\n\nfunction onWindowResize(state, {payload}) {\n\tconst next = {width: payload.width, height: payload.height};\n\tif (!isEqual(next, state)) {\n\t\treturn next;\n\t}\n\treturn state;\n}\n","import {assign} from 'lodash';\n\nfunction hierarchyCompare(a, b) {\n\treturn (a.order === b.order) ?\n\t\ta.displayName.localeCompare(b.displayName) :\n\t\ta.order > b.order;\n}\n\nfunction augmentFolderData(hierarchy) {\n\t// extract displayName and order from hierarchy config for the folder\n\treturn folder => {\n\t\tconst splits = folder.id.split('/');\n\t\tconst key = splits[splits.length - 1];\n\n\t\tconst defaultHierarchyEntry = {\n\t\t\torder: -1,\n\t\t\tdisplayName: key,\n\t\t\ticon: 'folder',\n\t\t\ticonActive: 'folder-open'\n\t\t};\n\n\t\tconst hierarchyEntry = hierarchy[folder.id];\n\n\t\treturn assign(\n\t\t\t{},\n\t\t\tfolder,\n\t\t\tdefaultHierarchyEntry,\n\t\t\thierarchyEntry\n\t\t);\n\t};\n}\n\nfunction augmentPatternData() {\n\treturn pattern => ({\n\t\t...pattern,\n\t\tdisplayName: pattern.manifest.displayName || pattern.manifest.name\n\t});\n}\n\nexport function getPatterns(data, hierarchy) {\n\treturn Object.values(data).reduce((pool, item) => {\n\t\tconst amend = item.type === 'pattern' ? [item] : [];\n\t\treturn [...pool, ...amend, ...getPatterns(item.children || {}, hierarchy)];\n\t}, []);\n}\n\nexport default function getAugmentedChildren(data, hierarchy) {\n\tconst folders = Object.values(data)\n\t\t.filter(item => item.type === 'folder')\n\t\t.map(augmentFolderData(hierarchy))\n\t\t.sort(hierarchyCompare);\n\n\tconst patterns = Object.values(data)\n\t\t.filter(item => item.type === 'pattern')\n\t\t.map(augmentPatternData(hierarchy))\n\t\t.sort(hierarchyCompare);\n\n\treturn {\n\t\tfolders,\n\t\tpatterns\n\t};\n}\n","import {pick} from 'lodash';\n\nexport default function composeReducers(...args) {\n\tconst required = args.reduce((registry, arg) => {\n\t\tconst amend = arg.dependencies || [];\n\t\treturn [...registry, ...amend];\n\t}, []);\n\n\tconst reducer = (state, action, dependencies) => {\n\t\treturn args.reduce((state, arg) => {\n\t\t\treturn arg(state, action, pick(dependencies, arg.dependencies || []));\n\t\t}, state);\n\t};\n\n\treducer.dependencies = required;\n\treturn reducer;\n}\n","import 'isomorphic-fetch';\nimport {merge} from 'lodash';\n\nexport default fetch;\n\nconst defaultHeaders = {\n\theaders: {accept: 'application/json'},\n\tcredentials: 'include'\n};\n\nfunction fetch(uri, userHeaders) {\n\tconst headers = userHeaders === false ?\n\t\t{} :\n\t\tmerge({}, userHeaders, defaultHeaders);\n\n\treturn global.fetch(uri, headers);\n}\n","import path from 'path';\nimport urlQuery from './url-query';\n\nexport default function getIdByPathname(pathname, base = '/') {\n\tconst parsed = urlQuery.parse(pathname);\n\treturn path.relative(`${base}pattern`, parsed.pathname)\n\t\t.split(path.sep)\n\t\t.join('/');\n}\n","export default function navigate(id, navigation) {\n\tlet scope = navigation;\n\tconst fragments = id.split('/');\n\n\tfor (const fragment of fragments) {\n\t\tif (scope && fragment in scope) {\n\t\t\tscope = scope[fragment];\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (scope && scope.children && fragment in scope.children) {\n\t\t\tscope = scope.children[fragment];\n\t\t\tcontinue;\n\t\t}\n\n\t\treturn null;\n\t}\n\treturn scope;\n}\n","import {get} from 'lodash';\n\nfunction unwrap(fn, path) {\n\treturn e => fn(get(e, path));\n}\n\nexport default unwrap;\n","import path from 'path';\nimport url from 'url';\nimport {includes} from 'lodash';\n\nfunction has(token) {\n\treturn item => includes(item, token);\n}\n\nfunction div(token) {\n\treturn item => item.split(token).slice(0, 2);\n}\n\nfunction not(fn) {\n\treturn (...args) => !fn(...args);\n}\n\nfunction shove(input) {\n\tconst index = input.length - 1;\n\tif (input[index] === '/') {\n\t\treturn input.slice(0, index);\n\t}\n\treturn input;\n}\n\nexport function format(parsed = {}) {\n\tconst query = Object.entries(parsed.query || {})\n\t\t.reduce((result, entry) => [...result, entry.join('--')], []);\n\n\tconst extension = path.extname(parsed.pathname || '');\n\n\tconst before = extension ? path.dirname(parsed.pathname) : shove(parsed.pathname);\n\tconst after = extension ? path.basename(parsed.pathname) : '';\n\n\treturn [before, ...query, after].filter(Boolean).join('/');\n}\n\nexport function parse(urlPath = '') {\n\tconst parsed = url.parse(urlPath);\n\tconst raw = parsed.pathname || '';\n\n\tconst pathname = raw.split('/')\n\t\t.filter(not(has('--')))\n\t\t.join('/');\n\n\tconst query = raw.split('/')\n\t\t.filter((has('--')))\n\t\t.map(div('--'))\n\t\t.reduce((registry, entry) => {\n\t\t\tconst [key, value] = entry;\n\t\t\tregistry[key] = value;\n\t\t\treturn registry;\n\t\t}, {});\n\n\treturn {\n\t\tpathname,\n\t\tquery\n\t};\n}\n\nexport default {parse, format};\n","import platform from 'platform';\nimport {merge} from 'lodash';\n\nimport './polyfills';\nimport router from '../../application/react-routes/client';\nimport * as actions from '../../application/actions';\n\nconst {document, location} = global;\n\nmain();\n\nfunction main() {\n\tconst vault = document.query('[data-application-state]');\n\tconst slot = document.query('[data-application]');\n\tconst data = getData(vault);\n\n\t// For static builds, purge the app mount point before\n\t// attaching to avoid react warning\n\tif (data.startPathname !== location.pathname) {\n\t\tempty(slot);\n\t}\n\n\tbind(router(data, slot));\n}\n\nfunction bind(app) {\n\tconst {store: {dispatch}} = app;\n\n\tglobal.addEventListener('keydown', e => {\n\t\t// Using ctrl + alt here due to OS differnces (e.g. ctrl + c)\n\t\tconst modifier = e.ctrlKey && e.altKey;\n\t\tconst code = e.data ? e.data.keyCode : e.keyCode;\n\n\t\tif (modifier && code === 67) { // ctrl+alt+c\n\t\t\tdispatch(actions.toggleConsole());\n\t\t}\n\n\t\tif (modifier && code === 68) { // ctrl+alt+d\n\t\t\tdispatch(actions.openDocumentation());\n\t\t}\n\n\t\tif (modifier && code === 69) { // ctrl+alt+e\n\t\t\tdispatch(actions.toggleExpandMenu());\n\t\t}\n\n\t\tif (modifier && code === 70) { // ctrl+alt+f\n\t\t\tdispatch(actions.openFullscreen());\n\t\t}\n\n\t\tif (modifier && code === 72) { // ctrl+alt+h\n\t\t\tdispatch(actions.toggleHide());\n\t\t}\n\n\t\tif (modifier && code === 73) { // ctrl+alt+i\n\t\t\tdispatch(actions.toggleIssue());\n\t\t}\n\n\t\tif (modifier && code === 79) { // ctrl+alt+o\n\t\t\tdispatch(actions.toggleOpacity());\n\t\t}\n\n\t\tif (modifier && code === 75) { // ctrl+alt+k\n\t\t\tdispatch(actions.toggleKeyboardShortcuts());\n\t\t}\n\n\t\tif (modifier && code === 76) { // ctrl+alt+l\n\t\t\tdispatch(actions.toggleRulers());\n\t\t}\n\n\t\tif (modifier && code === 82) { // ctrl+alt+r\n\t\t\tdispatch(actions.loadPattern());\n\t\t}\n\n\t\tif (modifier && code === 32) { // ctrl+alt+space\n\t\t\tdispatch(actions.toggleSearchFocus());\n\t\t}\n\n\t\tif (modifier && code === 84) { // ctrl+alt+t\n\t\t\tdispatch(actions.toggleTheme());\n\t\t}\n\n\t\tif (code === 27) { // esc\n\t\t\tdispatch(actions.closeAllTheThings());\n\t\t}\n\t});\n}\n\nfunction getData(vault) {\n\tconst platformData = getPlatformData();\n\tconst windowData = getWindowData();\n\tconst vaultData = JSON.parse(vault.textContent);\n\treturn merge({}, vaultData, windowData, {schema: platformData});\n}\n\nfunction getPlatformData() {\n\treturn {\n\t\tclientRuntimeName: platform.name,\n\t\tclientRuntimeVersion: platform.version,\n\t\tclientOsName: platform.os.name,\n\t\tclientOsVersion: platform.os.version\n\t};\n}\n\nfunction getWindowData() {\n\treturn {\n\t\twindow: {\n\t\t\twidth: global.innerWidth,\n\t\t\theight: global.innerHeight\n\t\t}\n\t};\n}\n\nfunction empty(el) {\n\twhile (el.lastChild) {\n\t\tel.lastChild.remove();\n\t}\n}\n","import 'dom4';\nimport 'web-animations-js';\nimport assign from 'object-assign';\nimport Promise from 'es6-promise';\n\nif (!global.Promise) {\n\tglobal.Promise = Promise;\n}\n\nif (!Object.assign) {\n\tObject.assign = assign;\n}\n"]}