All Downloads are FREE. Search and download functionalities are using the official Maven repository.

web-interface.assets.builtins.472622149827c1587209.js.map Maven / Gradle / Ivy

There is a newer version: 6.0.1
Show newest version
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/util/History.js","webpack:///./node_modules/plotly.js/src/lib/nested_property.js","webpack:///./src/actions/messages/MessagesActions.js","webpack:///./src/stores/indices/IndexSetsStore.ts","webpack:///./node_modules/d3/d3.js","webpack:///./node_modules/gl-mat4/ortho.js","webpack:///./node_modules/plotly.js/src/plots/cartesian/tick_value_defaults.js","webpack:///./node_modules/plotly.js/src/lib/clear_responsive.js","webpack:///./node_modules/buffer/node_modules/isarray/index.js","webpack:///./src/routing/Routes.tsx","webpack:///./node_modules/plotly.js/src/components/color/index.js","webpack:///./src/logic/message/MessageFormatter.js","webpack:///./node_modules/plotly.js/src/lib/index.js","webpack:///./node_modules/plotly.js/src/lib/mod.js","webpack:///./node_modules/d3-time/src/interval.js","webpack:///./node_modules/d3-time/src/duration.js","webpack:///./node_modules/d3-time/src/utcWeek.js","webpack:///./node_modules/d3-time/src/utcDay.js","webpack:///./node_modules/d3-time/src/week.js","webpack:///./node_modules/d3-time/src/day.js","webpack:///./node_modules/d3-time/src/year.js","webpack:///./node_modules/d3-time/src/utcYear.js","webpack:///./node_modules/d3-time-format/src/locale.js","webpack:///./node_modules/d3-time-format/src/defaultLocale.js","webpack:///./node_modules/d3-time-format/src/isoFormat.js","webpack:///./node_modules/d3-time-format/src/isoParse.js","webpack:///./src/stores/users/StartpageStore.js","webpack:///./node_modules/plotly.js/src/lib/stats.js","webpack:///./src/stores/nodes/NodesStore.ts","webpack:///./src/actions/extractors/ExtractorsActions.js","webpack:///./src/injection/StoreProvider.jsx","webpack:///./src/stores/enterprise/EnterpriseStore.js","webpack:///./node_modules/urijs/src/IPv6.js","webpack:///./src/actions/content-packs/CatalogActions.jsx","webpack:///./src/injection/CombinedProvider.js","webpack:///delegated ./node_modules/moment/moment.js from dll-reference __vendor","webpack:///./node_modules/graylog-web-plugin/lib/PluginManifest.js","webpack:///./src/actions/event-definitions/FilterPreviewActions.js","webpack:///./node_modules/plotly.js/src/plots/pad_attributes.js","webpack:///./src/stores/event-notifications/EventNotificationsStore.js","webpack:///./src/stores/indexers/IndexerOverviewStore.ts","webpack:///./node_modules/plotly.js/src/constants/numerical.js","webpack:///delegated ./node_modules/reflux/src/index.js from dll-reference __vendor","webpack:///./node_modules/qs/lib/formats.js","webpack:///./src/stores/search/UniversalSearchStore.js","webpack:///./node_modules/gl-mat4/rotateY.js","webpack:///./node_modules/plotly.js/src/lib/anchor_utils.js","webpack:///./node_modules/plotly.js/src/components/colorbar/defaults.js","webpack:///./src/actions/event-notifications/EventNotificationsActions.js","webpack:///./node_modules/plotly.js/src/lib/dom.js","webpack:///./src/stores/extractors/ExtractorsStore.js","webpack:///delegated ./node_modules/timers-browserify/main.js from dll-reference __vendor","webpack:///./src/stores/configurations/ConfigurationsStore.ts","webpack:///./src/logic/content-packs/ContentPack.js","webpack:///./node_modules/react-fast-compare/index.js","webpack:///./src/stores/indexers/IndexerClusterStore.js","webpack:///./node_modules/is-mobile/index.js","webpack:///./src/actions/sidecars/SidecarsActions.js","webpack:///./node_modules/javascript-natural-sort/naturalSort.js","webpack:///./src/util/UserNotification.css?c519","webpack:///./src/util/UserNotification.js","webpack:///./src/stores/inputs/InputStaticFieldsStore.js","webpack:///./node_modules/gl-mat4/perspective.js","webpack:///./src/actions/inputs/InputTypesActions.js","webpack:///delegated ./node_modules/webpack/buildin/module.js from dll-reference __vendor","webpack:///./node_modules/plotly.js/src/lib/throttle.js","webpack:///./src/logic/content-packs/EntityIndex.js","webpack:///./src/stores/content-packs/CatalogStore.jsx","webpack:///./node_modules/plotly.js/src/plot_api/plot_template.js","webpack:///./src/actions/systemjobs/SystemJobsActions.jsx","webpack:///./node_modules/urijs/src/SecondLevelDomains.js","webpack:///./src/stores/codecs/CodecTypesStore.js","webpack:///./src/actions/sidecars/CollectorConfigurationsActions.js","webpack:///./node_modules/graylog-web-plugin/plugin.js","webpack:///./src/stores/alertconditions/AlertConditionsStore.js","webpack:///./src/actions/sessions/SessionActions.jsx","webpack:///./src/stores/pipelines/PipelinesStore.ts","webpack:///./src/actions/nodes/SingleNodeActions.js","webpack:///./src/actions/alerts/AlertsActions.js","webpack:///./node_modules/gl-mat4/rotateX.js","webpack:///./node_modules/ua-parser-js/src/ua-parser.js","webpack:///./node_modules/plotly.js/src/components/fx/attributes.js","webpack:///./node_modules/plotly.js/src/components/colorscale/scales.js","webpack:///./node_modules/plotly.js/src/lib/relink_private.js","webpack:///./src/actions/enterprise/EnterpriseActions.js","webpack:///./src/actions/alarmcallbacks/AlarmCallbackHistoryActions.js","webpack:///./node_modules/md5/md5.js","webpack:///./node_modules/is-string-blank/index.js","webpack:///./src/stores/outputs/OutputsStore.ts","webpack:///./node_modules/css-loader/dist/runtime/api.js","webpack:///./node_modules/gl-mat4/perspectiveFromFieldOfView.js","webpack:///./node_modules/plotly.js/src/plots/cartesian/clean_ticks.js","webpack:///./src/util/AppConfig.ts","webpack:///./src/actions/indices/IndexRangesActions.jsx","webpack:///./node_modules/gl-mat4/str.js","webpack:///./src/stores/event-definitions/EventDefinitionsStore.js","webpack:///./node_modules/plotly.js/src/plots/attributes.js","webpack:///./src/actions/system/LoggersActions.jsx","webpack:///./src/views/logic/parameters/Parameter.ts","webpack:///./src/actions/configurations/ConfigurationActions.js","webpack:///./src/util/StringUtils.js","webpack:///./src/stores/system/SystemStore.js","webpack:///./node_modules/gl-mat4/invert.js","webpack:///./src/stores/inputs/InputTypesStore.ts","webpack:///./src/util/URLUtils.ts","webpack:///./node_modules/plotly.js/src/plots/animation_attributes.js","webpack:///./node_modules/plotly.js/src/components/fx/constants.js","webpack:///./src/stores/alerts/AlertsStore.js","webpack:///./src/actions/indices/IndexSetsActions.js","webpack:///./src/stores/indices/IndicesConfigurationStore.ts","webpack:///./src/routing/ApiRoutes.ts","webpack:///./node_modules/plotly.js/src/lib/filter_unique.js","webpack:///./node_modules/gl-mat4/fromZRotation.js","webpack:///./src/stores/indexers/IndexerFailuresStore.js","webpack:///./src/injection/ActionsProvider.jsx","webpack:///./node_modules/plotly.js/src/lib/make_trace_groups.js","webpack:///./node_modules/plotly.js/src/plots/layout_attributes.js","webpack:///./node_modules/plotly.js/src/plots/array_container_defaults.js","webpack:///./node_modules/plotly.js/src/lib/preserve_drawing_buffer.js","webpack:///./node_modules/bson-objectid/objectid.js","webpack:///delegated ./node_modules/process/browser.js from dll-reference __vendor","webpack:///./src/actions/inputs/InputsActions.js","webpack:///./node_modules/plotly.js/src/components/colorscale/layout_defaults.js","webpack:///./node_modules/plotly.js/src/components/color/attributes.js","webpack:///./node_modules/plotly.js/src/lib/dates.js","webpack:///./src/stores/sessions/ServerAvailabilityStore.ts","webpack:///./src/views/components/sidebar/highlighting/Scale.ts","webpack:///./src/logic/rest/FetchProvider.ts","webpack:///./node_modules/plotly.js/src/components/colorscale/layout_attributes.js","webpack:///./node_modules/plotly.js/src/components/colorscale/cross_trace_defaults.js","webpack:///./src/views/logic/search/Search.ts","webpack:///./src/stores/sidecars/ConfigurationVariableStore.js","webpack:///./src/views/Constants.ts","webpack:///./src/logic/authentication/AuthenticationBackend.ts","webpack:///./src/stores/authentication/AuthenticationStore.ts","webpack:///./src/actions/lookup-tables/LookupTableDataAdaptersActions.js","webpack:///./node_modules/plotly.js/src/components/drawing/attributes.js","webpack:///./node_modules/gl-mat4/fromRotationTranslation.js","webpack:///./src/stores/journal/JournalStore.js","webpack:///./node_modules/plotly.js/src/lib/filter_visible.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///./src/actions/sessions/ServerAvailabilityActions.jsx","webpack:///./src/util/ValueRefHelper.js","webpack:///./node_modules/graylog-web-plugin/lib/PluginStore.js","webpack:///./node_modules/plotly.js/src/lib/localize.js","webpack:///./node_modules/plotly.js/src/components/colorbar/has_colorbar.js","webpack:///./node_modules/plotly.js/src/components/colorscale/defaults.js","webpack:///./src/stores/indices/IndicesStore.ts","webpack:///./node_modules/plotly.js/src/plots/cartesian/tick_mark_defaults.js","webpack:///./node_modules/buffer/index.js","webpack:///./src/stores/systemmessages/SystemMessagesStore.js","webpack:///./src/stores/plugins/PluginsStore.js","webpack:///./src/stores/alarmcallbacks/AlarmCallbacksStore.js","webpack:///./node_modules/plotly.js/src/lib/array.js","webpack:///./src/logic/rest/CancellablePromise.ts","webpack:///./node_modules/plotly.js/src/plot_api/edit_types.js","webpack:///./node_modules/plotly.js/src/plot_api/plot_config.js","webpack:///./src/actions/sidecars/SidecarsAdministrationActions.js","webpack:///./src/util/AuthenticationService.ts","webpack:///./node_modules/plotly.js/src/lib/increment.js","webpack:///./src/views/logic/SearchType.ts","webpack:///./node_modules/gl-mat4/identity.js","webpack:///delegated ./node_modules/history/esm/history.js from dll-reference __vendor","webpack:///./node_modules/gl-mat4/fromYRotation.js","webpack:///./src/stores/cluster/ClusterOverviewStore.js","webpack:///./src/actions/simulator/SimulatorActions.js","webpack:///./node_modules/gl-mat4/frustum.js","webpack:///./src/stores/systemjobs/SystemJobsStore.js","webpack:///./src/actions/errors/ErrorsActions.js","webpack:///./node_modules/plotly.js/src/lib/relative_attr.js","webpack:///./node_modules/plotly.js/src/registry.js","webpack:///./node_modules/plotly.js/src/constants/docs.js","webpack:///./src/stores/users/CurrentUserStore.ts","webpack:///./node_modules/gl-mat4/clone.js","webpack:///./src/stores/streams/StreamRulesStore.ts","webpack:///./src/stores/messages/MessagesStore.js","webpack:///./node_modules/ieee754/index.js","webpack:///./src/stores/customizations/CustomizationsStore.ts","webpack:///./node_modules/plotly.js/src/lib/push_unique.js","webpack:///./node_modules/plotly.js/src/constants/interactions.js","webpack:///./node_modules/gl-mat4/fromRotation.js","webpack:///./node_modules/gl-mat4/fromQuat.js","webpack:///./src/stores/users/RolesStore.ts","webpack:///./src/actions/sidecars/ConfigurationVariableActions.js","webpack:///./node_modules/plotly.js/src/lib/geometry2d.js","webpack:///./src/logic/content-packs/ContentPackRevisions.js","webpack:///./src/stores/content-packs/ContentPacksStore.jsx","webpack:///./src/stores/isDeepEqual.ts","webpack:///./src/actions/streams/StreamsActions.jsx","webpack:///./node_modules/immutable/dist/immutable.js","webpack:///./node_modules/crypt/crypt.js","webpack:///./node_modules/plotly.js/src/plots/cartesian/constants.js","webpack:///./src/actions/nodes/NodesActions.js","webpack:///./node_modules/gl-mat4/rotate.js","webpack:///./src/views/logic/SearchError.ts","webpack:///./src/views/logic/QueryResult.ts","webpack:///./src/views/logic/ResultWindowLimitError.ts","webpack:///./src/views/logic/SearchResult.ts","webpack:///./node_modules/plotly.js/src/lib/search.js","webpack:///./src/stores/gettingstarted/GettingStartedStore.js","webpack:///./src/stores/cluster/ClusterTrafficStore.js","webpack:///./src/logic/content-packs/Constraint.js","webpack:///./src/logic/content-packs/Entity.js","webpack:///./src/stores/system-processing/SystemProcessingStore.js","webpack:///./node_modules/gl-mat4/lookAt.js","webpack:///./src/stores/grok-patterns/GrokPatternsStore.ts","webpack:///./src/stores/nodes/SingleNodeStore.js","webpack:///./src/stores/events/EventsStore.js","webpack:///./node_modules/bluebird/js/browser/bluebird.js","webpack:///./src/views/logic/views/formatting/highlighting/HighlightingColor.ts","webpack:///./node_modules/gl-mat4/rotateZ.js","webpack:///./src/actions/indexers/IndexerOverviewActions.jsx","webpack:///./src/actions/notifications/NotificationsActions.jsx","webpack:///./node_modules/qs/lib/utils.js","webpack:///./src/actions/authentication/AuthenticationActions.ts","webpack:///./src/stores/metrics/MetricsStore.ts","webpack:///./src/actions/cluster/ClusterTrafficActions.js","webpack:///delegated ./node_modules/webpack/buildin/global.js from dll-reference __vendor","webpack:///./src/logic/users/UserOverview.ts","webpack:///./node_modules/gl-mat4/determinant.js","webpack:///./node_modules/gl-mat4/copy.js","webpack:///./src/stores/rules/RulesStore.ts","webpack:///./src/actions/indices/DeflectorActions.jsx","webpack:///./src/actions/users/PreferencesActions.js","webpack:///./node_modules/plotly.js/src/lib/is_plain_object.js","webpack:///./node_modules/gl-mat4/scale.js","webpack:///./src/logic/users/User.ts","webpack:///./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack:///./src/stores/inputs/InputStatesStore.js","webpack:///./node_modules/plotly.js/src/lib/clean_number.js","webpack:///./node_modules/gl-mat4/transpose.js","webpack:///./node_modules/css-loader/dist/runtime/cssWithMappingToString.js","webpack:///./src/actions/sidecars/CollectorsActions.js","webpack:///./src/stores/pipelines/PipelineConnectionsStore.ts","webpack:///./node_modules/plotly.js/src/lib/coerce.js","webpack:///./src/actions/alertnotifications/AlertNotificationsActions.jsx","webpack:///./node_modules/qs/lib/parse.js","webpack:///delegated ./node_modules/jquery/dist/jquery.js from dll-reference __vendor","webpack:///./src/stores/alarmcallbacks/AlarmCallbackHistoryStore.js","webpack:///./node_modules/gl-mat4/fromScaling.js","webpack:///./src/logic/errors/FetchError.ts","webpack:///./src/views/logic/queries/Query.ts","webpack:///./src/stores/metrics/GlobalThroughputStore.js","webpack:///./src/util/ExtractorUtils.jsx","webpack:///./src/util/UserNotification.css","webpack:///./node_modules/toastr/toastr.js","webpack:///delegated ./node_modules/react/index.js from dll-reference __vendor","webpack:///./src/stores/notifications/NotificationsStore.js","webpack:///./node_modules/plotly.js/src/lib/loggers.js","webpack:///./node_modules/plotly.js/src/lib/identity.js","webpack:///external \"__vendor\"","webpack:///./src/stores/inputs/InputsStore.js","webpack:///./src/stores/lookup-tables/LookupTableCachesStore.js","webpack:///./node_modules/uuid/lib/bytesToUuid.js","webpack:///./node_modules/plotly.js/src/components/colorbar/attributes.js","webpack:///./src/actions/pipelines/PipelineConnectionsActions.js","webpack:///./src/stores/indices/IndexRangesStore.ts","webpack:///./src/stores/streams/StreamsStore.ts","webpack:///./src/stores/decorators/DecoratorsStore.js","webpack:///./node_modules/plotly.js/src/components/colorscale/attributes.js","webpack:///./src/logic/message/MessageFieldsFilter.js","webpack:///./node_modules/plotly.js/src/lib/noop.js","webpack:///./node_modules/plotly.js/src/components/colorscale/calc.js","webpack:///./node_modules/plotly.js/src/plots/font_attributes.js","webpack:///./node_modules/base64-js/index.js","webpack:///delegated ./node_modules/chroma-js/chroma.js from dll-reference __vendor","webpack:///./src/util/PaginationURL.ts","webpack:///./src/views/logic/singleton.ts","webpack:///./node_modules/plotly.js/src/lib/matrix.js","webpack:///./src/stores/sidecars/SidecarsStore.js","webpack:///./node_modules/plotly.js/src/components/colorscale/index.js","webpack:///./node_modules/uuid/lib/rng-browser.js","webpack:///./node_modules/plotly.js/src/lib/keyed_container.js","webpack:///./src/actions/lookup-tables/LookupTablesActions.ts","webpack:///./src/stores/sidecars/CollectorsStore.js","webpack:///./node_modules/lodash/lodash.js","webpack:///./src/actions/lookup-tables/LookupTableCachesActions.js","webpack:///./src/theme/constants.ts","webpack:///./src/actions/indexers/IndexerClusterActions.jsx","webpack:///./node_modules/gl-mat4/multiply.js","webpack:///./src/stores/lookup-tables/LookupTableDataAdaptersStore.js","webpack:///./src/stores/sidecars/SidecarsAdministrationStore.js","webpack:///./src/actions/content-packs/ContentPacksActions.jsx","webpack:///./node_modules/urijs/src/URI.js","webpack:///./node_modules/qs/lib/stringify.js","webpack:///./node_modules/plotly.js/src/lib/angles.js","webpack:///./node_modules/plotly.js/src/lib/regex.js","webpack:///./node_modules/gl-mat4/fromXRotation.js","webpack:///./node_modules/plotly.js/src/lib/notifier.js","webpack:///./src/logic/local-storage/Store.js","webpack:///./node_modules/qs/lib/index.js","webpack:///./node_modules/plotly.js/src/plots/cartesian/tick_label_defaults.js","webpack:///./src/actions/customizations/CustomizationActions.ts","webpack:///./src/actions/alarmcallbacks/AlarmCallbacksActions.jsx","webpack:///./src/stores/system/LoggersStore.js","webpack:///./src/logic/errors/ReportedErrors.ts","webpack:///./src/actions/event-definitions/AvailableEventDefinitionTypesActions.js","webpack:///./src/actions/codecs/CodecTypesActions.js","webpack:///./src/injection/registerBuiltinStores.js","webpack:///./src/util/ObjectUtils.js","webpack:///./node_modules/plotly.js/src/components/colorscale/helpers.js","webpack:///./src/actions/alertconditions/AlertConditionsActions.jsx","webpack:///./src/actions/metrics/MetricsActions.jsx","webpack:///./node_modules/charenc/charenc.js","webpack:///./src/stores/load-balancer/SystemLoadBalancerStore.js","webpack:///./src/actions/events/EventsActions.js","webpack:///./src/actions/gettingstarted/GettingStartedActions.js","webpack:///./src/stores/simulator/SimulatorStore.js","webpack:///./node_modules/gl-mat4/adjoint.js","webpack:///./src/actions/users/UsersActions.ts","webpack:///./src/stores/users/UsersStore.ts","webpack:///./node_modules/gl-mat4/create.js","webpack:///./src/util/TimeHelper.js","webpack:///./src/actions/indices/IndicesConfigurationActions.js","webpack:///./node_modules/plotly.js/src/components/fx/layout_attributes.js","webpack:///./src/actions/rules/RulesActions.jsx","webpack:///./node_modules/gl-mat4/fromTranslation.js","webpack:///./src/stores/lookup-tables/LookupTablesStore.ts","webpack:///./src/stores/alertnotifications/AlertNotificationsStore.js","webpack:///./src/actions/event-definitions/EventDefinitionsActions.js","webpack:///./src/stores/event-definitions/FilterPreviewStore.js","webpack:///./node_modules/is-buffer/index.js","webpack:///./node_modules/plotly.js/src/lib/to_log_range.js","webpack:///./node_modules/gl-mat4/translate.js","webpack:///./src/stores/indices/DeflectorStore.js","webpack:///./node_modules/gl-mat4/index.js","webpack:///./node_modules/uuid/v4.js","webpack:///./node_modules/plotly.js/src/lib/extend.js","webpack:///./src/stores/sidecars/CollectorConfigurationsStore.js","webpack:///./node_modules/plotly.js/src/components/shapes/draw_newshape/attributes.js","webpack:///./src/actions/pipelines/PipelinesActions.jsx","webpack:///./src/actions/decorators/DecoratorsActions.jsx","webpack:///./node_modules/urijs/src/punycode.js","webpack:///./node_modules/plotly.js/node_modules/tinycolor2/tinycolor.js","webpack:///./node_modules/fast-isnumeric/index.js","webpack:///./src/stores/users/PreferencesStore.ts","webpack:///./src/stores/event-definitions/AvailableEventDefinitionTypesStore.js","webpack:///./src/stores/sessions/SessionStore.ts","webpack:///./node_modules/plotly.js/src/plots/cartesian/layout_attributes.js","webpack:///./src/actions/indices/IndicesActions.jsx"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","window","graylogHistory","createBrowserHistory","isNumeric","isArrayOrTypedArray","npGet","cont","parts","curPart","allSame","out","j","curCont","length","slice","container","propStr","String","substr","indexed","indices","propParts","split","match","splice","Number","set","astr","obj","badContainer","npSet","ARGS_PATTERN","isDeletable","val","undefined","propPart","containerLevels","toDelete","setArrayAll","checkNewContainer","joinPropStr","push","Array","isArray","pop","newPart","toAdd","containerArray","innerParts","arrayVal","allSet","thisVal","thisPropStr","replace","deleteThis","firstPart","part","nextPart","MessagesActions","Reflux","createActions","loadMessage","asyncResult","fieldTerms","loadRawMessage","IndexSetsActions","ActionsProvider","getActions","IndexSetsStore","createStore","listenables","indexSetsCount","indexSets","indexSetStats","getInitialState","this","list","stats","url","qualifyUrl","ApiRoutes","IndexSetsApiController","promise","fetch","then","response","trigger","total","index_sets","error","UserNotification","message","listPaginated","skip","limit","_errorMessage","indexSetId","indexSet","update","id","success","title","deleteIndices","setDefault","globalIndexSetStats","documents","size","additional","body","e","d3","version","d3_arraySlice","d3_array","d3_document","document","d3_documentElement","node","ownerDocument","documentElement","d3_window","defaultView","childNodes","nodeType","array","Date","now","createElement","style","setProperty","d3_element_prototype","Element","d3_element_setAttribute","setAttribute","d3_element_setAttributeNS","setAttributeNS","d3_style_prototype","CSSStyleDeclaration","d3_style_setProperty","space","local","priority","d3_ascending","a","b","NaN","d3_number","x","d3_numeric","isNaN","d3_bisector","compare","left","lo","hi","arguments","mid","right","ascending","descending","min","f","max","extent","sum","mean","quantile","values","H","h","Math","floor","v","median","numbers","sort","variance","deviation","apply","sqrt","d3_bisect","d3_transposeLength","bisectLeft","bisect","bisectRight","bisector","shuffle","i0","i1","random","permute","indexes","permutes","pairs","p1","transpose","matrix","row","zip","keys","map","entries","merge","arrays","merged","abs","d3_range_integerScale","k","d3_class","ctor","properties","d3_Map","_","range","start","stop","step","Infinity","Error","forEach","d3_map_escape","d3_map_unescape","d3_map_has","d3_map_remove","d3_map_keys","d3_map_size","d3_map_empty","d3_Set","d3_identity","d3_rebind","target","source","method","d3_vendorSymbol","charAt","toUpperCase","d3_vendorPrefixes","prefixName","has","remove","empty","nest","sortValues","rollup","sortKeys","mapType","depth","keyValue","setter","valuesByKey","sortKey","keyMap","order","add","behavior","rebind","d3_noop","d3_dispatch","d3_dispatch_event","dispatch","listeners","listenerByName","event","z","on","listener","indexOf","concat","d3_eventPreventDefault","preventDefault","d3_eventSource","sourceEvent","d3_eventDispatch","of","thiz","argumentz","e1","e0","type","requote","d3_requote_re","d3_subclass","__proto__","d3_selection","groups","d3_selectionPrototype","d3_select","querySelector","d3_selectAll","querySelectorAll","d3_selectMatches","d3_selectMatcher","matches","Sizzle","matchesSelector","selection","select","d3_selection_selector","selector","d3_selection_selectorAll","subgroup","subnode","group","subgroups","parentNode","__data__","selectAll","d3_nsXhtml","d3_nsPrefix","svg","xhtml","xlink","xml","xmlns","d3_selection_attr","qualify","removeAttributeNS","removeAttribute","d3_collapse","trim","d3_selection_classedRe","RegExp","d3_selection_classes","d3_selection_classed","d3_selection_classedName","re","classList","getAttribute","lastIndex","test","d3_selection_style","removeProperty","d3_selection_property","d3_selection_creator","createElementNS","namespace","namespaceURI","d3_selectionRemove","parent","removeChild","d3_selection_dataNode","data","d3_selection_filter","d3_selection_sortComparator","comparator","d3_selection_each","callback","d3_selection_enter","d3_selection_enterPrototype","prefix","attr","getAttributeNS","each","classed","contains","getComputedStyle","getPropertyValue","text","textContent","html","innerHTML","append","appendChild","insert","before","insertBefore","groupData","nodeData","n0","updateNodes","enterNodes","exitNodes","nodeByKeyValue","keyValues","enter","exit","datum","filter","next","nextSibling","args","d3_selection_enterInsertBefore","j0","d3_selection_on","capture","wrap","d3_selection_onListener","d3_selection_onFilters","onRemove","removeEventListener","$","d3_selection_onFilter","addEventListener","upgroup","nodes","mouseenter","mouseleave","related","relatedTarget","compareDocumentPosition","d3_event_dragSelect","d3_event_dragId","d3_event_dragSuppress","click","w","suppressClick","off","setTimeout","mouse","d3_mousePoint","d3_mouse_bug44083","navigator","userAgent","changedTouches","ownerSVGElement","createSVGPoint","point","scrollX","scrollY","ctm","position","top","margin","padding","border","getScreenCTM","pageX","y","pageY","clientX","clientY","matrixTransform","inverse","rect","getBoundingClientRect","clientLeft","clientTop","d3_behavior_dragTouchId","identifier","touch","touches","drag","origin","mousedown","dragstart","touchstart","subject","move","end","dragOffset","that","correspondingElement","dragged","dragId","dragName","dragSubject","moved","ended","dragRestore","position0","dx","dy","position1","ε","ε2","π","PI","τ","τε","halfπ","d3_radians","d3_degrees","d3_sgn","d3_cross2d","d3_acos","acos","d3_asin","asin","d3_cosh","exp","d3_haversin","sin","ρ","SQRT2","interpolateZoom","p0","S","ux0","uy0","w0","ux1","uy1","w1","d2","log","d1","b0","b1","r0","r1","coshr0","u","d3_sinh","duration","zoom","translate0","center0","center","mousewheelTimer","touchtime","x0","x1","y0","y1","view","scaleExtent","d3_behavior_zoomInfinity","zooming","mousemove","mouseup","g","mousedowned","d3_behavior_zoomWheel","mousewheeled","dblclicked","touchstarted","location","scaleTo","translateTo","zoomTo","__chart__","pow","transition","rescale","domain","invert","zoomstarted","zoomed","scale","translate","zoomended","location0","d3_selection_interrupt","scale0","locations0","distance0","zoomName","touchmove","touchend","targets","relocate","started","changed","LN2","q","l0","l1","distance1","scale1","clearTimeout","d3_behavior_zoomDelta","shiftKey","ceil","deltaY","deltaMode","wheelDelta","detail","view1","d3_transitionInheritId","tween","cx","cy","copy","d3_color","d3_hsl","d3_rgb_parse","d3_rgb_hsl","color","toString","rgb","hsl","d3_hslPrototype","d3_hsl_rgb","m1","m2","vv","round","d3_rgb","d3_hcl","d3_lab_hcl","d3_lab","d3_rgb_lab","brighter","darker","hcl","d3_hclPrototype","d3_hcl_lab","cos","d3_lab_K","lab","d3_lab_X","d3_lab_Z","d3_labPrototype","d3_lab_rgb","d3_xyz_rgb","d3_lab_xyz","atan2","d3_xyz_lab","d3_rgbNumber","d3_rgbString","d3_rgbPrototype","d3_rgb_hex","format","exec","toLowerCase","parseFloat","d3_rgb_parseNumber","d3_rgb_names","parseInt","d3_rgb_xyz","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","d3_functor","d3_xhrType","mimeType","d3_xhr","xhr","headers","request","XMLHttpRequest","responseType","respond","result","status","responseText","d3_xhrHasResponse","load","XDomainRequest","onload","onerror","onreadystatechange","readyState","onprogress","progress","header","send","open","setRequestHeader","overrideMimeType","beforesend","abort","d3_xhr_fixCallback","functor","dsv","delimiter","reFormat","delimiterCode","charCodeAt","typedResponse","parse","formatRow","formatValue","join","parseRows","Function","JSON","stringify","eol","EOL","EOF","rows","N","I","token","formatRows","fieldSet","fields","field","csv","tsv","d3_timer_queueHead","d3_timer_queueTail","d3_timer_interval","d3_timer_timeout","d3_timer_frame","d3_timer","delay","time","timer","d3_timer_step","d3_timer_mark","d3_timer_sweep","isFinite","t0","t1","d3_format_precision","LN10","flush","d3_formatPrefixes","symbol","d3_locale_numberFormat","locale","locale_decimal","decimal","locale_thousands","thousands","locale_grouping","grouping","locale_currency","currency","formatGroup","width","substring","reverse","specifier","d3_format_re","fill","align","sign","zfill","comma","precision","suffix","integer","exponent","d3_format_types","d3_format_typeDefault","zcomma","fullSuffix","negative","unit","formatPrefix","after","lastIndexOf","fromCharCode","X","toPrecision","toExponential","toFixed","d3_time","d3_date","d3_date_utc","UTC","getDate","getUTCDate","getDay","getUTCDay","getFullYear","getUTCFullYear","getHours","getUTCHours","getMilliseconds","getUTCMilliseconds","getMinutes","getUTCMinutes","getMonth","getUTCMonth","getSeconds","getUTCSeconds","getTime","getTimezoneOffset","valueOf","setDate","d3_time_prototype","setUTCDate","setDay","setUTCDay","setFullYear","setUTCFullYear","setHours","setUTCHours","setMilliseconds","setUTCMilliseconds","setMinutes","setUTCMinutes","setMonth","setUTCMonth","setSeconds","setUTCSeconds","setTime","d3_time_interval","number","date","d0","offset","dt","times","utc","d3_time_interval_utc","d3_locale_timeFormat","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_days","days","locale_shortDays","shortDays","locale_months","months","locale_shortMonths","shortMonths","d3_time_format","template","string","d3_time_formatPads","d3_time_formats","M","L","Z","d3_time_parse","localZ","W","U","d3_time_parsers","multi","d3_time_formatMulti","d3_time_periodLookup","d3_time_dayRe","d3_time_formatRe","d3_time_dayLookup","d3_time_formatLookup","d3_time_dayAbbrevRe","d3_time_dayAbbrevLookup","d3_time_monthRe","d3_time_monthLookup","d3_time_monthAbbrevRe","d3_time_monthAbbrevLookup","A","B","d3_time_formatPad","dayOfYear","sundayOfYear","mondayOfYear","Y","d3_time_zone","d3_time_parseDay","d3_time_parseHour24","d3_time_parseDayOfYear","d3_time_parseMilliseconds","d3_time_parseMonthNumber","d3_time_parseMinutes","d3_time_parseSeconds","d3_time_parseWeekNumberSunday","d3_time_parseWeekdayNumber","d3_time_parseWeekNumberMonday","d3_time_parseYear","d3_time_parseFullYear","d3_time_parseZone","d3_time_parseLiteralPercent","year","day","years","interval","week","sunday","weeks","weekOfYear","d3_time_numberRe","d3_time_percentRe","names","zs","zh","zm","formats","numberFormat","timeFormat","d3_locale_enUS","d3_adder","geo","d3_adderSum","d3_adderTemp","reset","bv","av","d3_geo_streamGeometry","geometry","d3_geo_streamGeometryType","stream","d3_geo_streamObjectType","Feature","feature","FeatureCollection","features","Sphere","sphere","Point","coordinates","MultiPoint","LineString","d3_geo_streamLine","MultiLineString","Polygon","d3_geo_streamPolygon","MultiPolygon","GeometryCollection","geometries","closed","coordinate","lineStart","lineEnd","polygonStart","polygonEnd","area","d3_geo_areaSum","d3_geo_area","d3_geo_centroidW0","d3_geo_centroidW1","d3_geo_centroidX0","d3_geo_centroidY0","d3_geo_centroidZ0","d3_geo_centroidX1","d3_geo_centroidY1","d3_geo_centroidZ1","d3_geo_centroidX2","d3_geo_centroidY2","d3_geo_centroidZ2","d3_geo_areaRingSum","d3_geo_areaRingStart","λ00","φ00","λ0","cosφ0","sinφ0","nextPoint","λ","φ","dλ","sdλ","adλ","cosφ","sinφ","d3_geo_cartesian","spherical","d3_geo_cartesianDot","d3_geo_cartesianCross","d3_geo_cartesianAdd","d3_geo_cartesianScale","vector","d3_geo_cartesianNormalize","d3_geo_spherical","cartesian","d3_geo_sphericalEqual","bounds","φ0","λ1","φ1","λ_","λ__","φ__","dλSum","ranges","bound","ringPoint","ringStart","ringEnd","linePoint","normal","inflection","λi","antimeridian","φi","angle","compareRanges","withinRange","best","centroid","d3_geo_centroid","d3_geo_centroidPoint","d3_geo_centroidLineStart","d3_geo_centroidLineEnd","d3_geo_centroidRingStart","d3_geo_centroidPointXYZ","z0","cz","d3_geo_compose","compose","d3_true","d3_geo_clipPolygon","segments","clipStartInside","interpolate","clip","segment","d3_geo_clipPolygonIntersection","d3_geo_clipPolygonLinkCircular","entry","points","current","isSubject","other","d3_geo_clip","pointVisible","clipLine","clipStart","rotate","line","rotatedClipStart","pointRing","polygon","meridian","parallel","meridianNormal","polarAngle","winding","ring","point0","arc","intersection","φarc","d3_geo_pointInPolygon","polygonStarted","d3_geo_clipSort","pointLine","buffer","d3_geo_clipBufferListener","ringListener","clean","ringSegments","shift","d3_geo_clipSegmentLength1","lines","rejoin","d3_geo_clipAntimeridian","sλ0","sλ1","cosφ1","sinλ0_λ1","atan","d3_geo_clipAntimeridianIntersect","from","to","direction","d3_geo_clipCircle","radius","cr","smallRadius","notHemisphere","visible","c0","v0","v00","point2","point1","code","intersect","d3_geo_circleInterpolate","two","n1","n2","n2n2","n1n2","determinant","c1","c2","n1xn2","uu","t2","δλ","polar","q1","d3_geom_clipLine","ax","ay","d3_geo_clipExtentMAX","d3_geo_clipExtent","x__","y__","v__","x_","y_","v_","first","listener_","bufferListener","wn","insidePolygon","inside","a1","corner","comparePoints","ca","cb","d3_geo_conic","projectAt","d3_geo_projectionMutator","parallels","d3_geo_conicEqualArea","C","ρ0","forward","ρ0_y","clipExtent","output","valid","conicEqualArea","raw","albers","albersUsa","lower48Point","alaskaPoint","hawaiiPoint","lower48","alaska","hawaii","pointStream","lower48Stream","alaskaStream","hawaiiStream","d3_geo_pathAreaSum","d3_geo_pathAreaPolygon","d3_geo_pathBoundsX0","d3_geo_pathBoundsY0","d3_geo_pathBoundsX1","d3_geo_pathBoundsY1","d3_geo_pathArea","d3_geo_pathAreaRingStart","x00","y00","d3_geo_pathBounds","d3_geo_pathBuffer","pointCircle","d3_geo_pathBufferCircle","pointLineStart","lineEndPolygon","pointRadius","d3_geo_lengthSum","d3_geo_pathCentroid","d3_geo_pathCentroidPoint","d3_geo_pathCentroidLineStart","d3_geo_pathCentroidLineEnd","d3_geo_pathCentroidRingStart","d3_geo_pathContext","context","moveTo","lineTo","closePath","d3_geo_resample","project","δ2","cosMinDistance","maxDepth","resample","resampleRecursive","resampleNone","d3_geo_transformPoint","a00","b00","c00","a0","resampleLineTo","φ2","λ2","x2","y2","dx2","dy2","dz","d3_geo_pathProjectStream","d3_geo_projectionRadians","d3_geo_transform","d3_geo_projection","projectRotate","δx","δy","projectResample","δφ","δγ","preclip","postclip","clipAngle","projection","d3_geo_rotation","invalidate","d3_geo_equirectangular","d3_geo_identityRotation","d3_geo_rotationλ","d3_geo_rotationφγ","d3_geo_forwardRotationλ","rotation","cosδφ","sinδφ","cosδγ","sinδγ","sr","d3_geo_circleAngle","d3_geo_graticuleX","d3_geo_graticuleY","d3_source","d3_target","path","projectStream","contextStream","cacheStream","transform","methods","projectionMutator","equirectangular","circle","distance","Δλ","sinΔλ","cosΔλ","sinφ1","graticule","X1","X0","Y1","Y0","DX","DY","outline","majorExtent","minorExtent","majorStep","minorStep","greatArc","source_","target_","cy0","sy0","cy1","sy1","kx0","ky0","kx1","ky1","d3_geo_length","d3_geo_azimuthal","azimuthal","cosλ","sinc","cosc","d3_geo_azimuthalEqualArea","cosλcosφ","azimuthalEqualArea","d3_geo_azimuthalEquidistant","d3_geo_conicConformal","F","d3_geo_mercator","d3_geo_conicEquidistant","G","azimuthalEquidistant","conicConformal","conicEquidistant","d3_geo_gnomonic","d3_geo_mercatorProjection","clipAuto","gnomonic","mercator","d3_geo_orthographic","orthographic","d3_geo_stereographic","d3_geo_transverseMercator","d3_geom_pointX","d3_geom_pointY","d3_geom_hullUpper","hull","hs","d3_geom_hullOrder","stereographic","transverseMercator","geom","vertices","fx","fy","flippedPoints","upper","lower","skipLeft","skipRight","d3_geom_polygonPrototype","d3_geom_polygonInside","d3_geom_polygonIntersect","x3","x21","x43","y3","y21","y43","ua","d3_geom_polygonClosed","input","d3_geom_voronoiEdges","d3_geom_voronoiCells","d3_geom_voronoiBeaches","d3_geom_voronoiFirstCircle","d3_geom_voronoiCircles","d3_geom_voronoiBeachPool","d3_geom_voronoiCirclePool","d3_geom_voronoiBeach","d3_geom_voronoiRedBlackNode","edge","site","d3_geom_voronoiCreateBeach","beach","d3_geom_voronoiDetachBeach","d3_geom_voronoiDetachCircle","d3_geom_voronoiRemoveBeach","vertex","previous","P","disappearing","lArc","unshift","rArc","iArc","nArcs","d3_geom_voronoiSetEdgeEnd","d3_geom_voronoiCreateEdge","d3_geom_voronoiAttachCircle","d3_geom_voronoiAddBeach","dxl","dxr","directrix","d3_geom_voronoiLeftBreakPoint","d3_geom_voronoiRightBreakPoint","R","newArc","lSite","bx","by","rSite","hb","hc","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","d3_geom_voronoiCell","edges","d3_geom_voronoiHalfEdgeOrder","d3_geom_voronoiCircle","cSite","ha","d3_geom_voronoiConnectEdge","vb","fm","fb","va","lx","ly","rx","ry","d3_geom_voronoiEdge","d3_geom_voronoiHalfEdge","d3_geom_voronoiCreateBorderEdge","d3_geom_voronoiRedBlackTree","d3_geom_voronoiRedBlackRotateLeft","tree","d3_geom_voronoiRedBlackRotateRight","d3_geom_voronoiRedBlackFirst","d3_geom_voronoi","sites","bbox","d3_geom_voronoiVertexOrder","d3_geom_voronoiClipEdges","cell","iHalfEdge","halfEdges","nHalfEdges","cells","iCell","prepare","d3_geom_voronoiCloseCells","diagram","grandpa","uncle","sibling","voronoi","d3_geom_voronoiClipExtent","polygons","links","triangles","s0","s1","d3_geom_quadtreeCompatX","d3_geom_quadtreeCompatY","d3_geom_quadtreeVisit","sx","sy","children","d3_geom_quadtreeFind","root","closestPoint","minDistance2","find","distance2","xm","ym","d3_interpolateRgb","ar","ag","ab","br","bg","bb","d3_interpolateObject","d3_interpolate","d3_interpolateNumber","d3_interpolateString","am","bm","bs","bi","d3_interpolate_numberA","d3_interpolate_numberB","index","delaunay","quadtree","compat","xs","ys","x1_","y1_","x2_","y2_","leaf","nx","ny","insertChild","nPoint","below","interpolateRgb","interpolateObject","interpolateNumber","interpolateString","interpolators","d3_interpolateArray","na","nb","interpolateArray","d3_ease_default","d3_ease","linear","poly","quad","d3_ease_quad","cubic","d3_ease_cubic","d3_ease_sin","d3_ease_exp","d3_ease_circle","elastic","back","bounce","d3_ease_bounce","d3_ease_mode","d3_ease_reverse","d3_ease_reflect","d3_ease_clamp","d3_ease_cubicInOut","t3","d3_interpolateRound","d3_transform","kx","d3_transformNormalize","kz","d3_transformDot","ky","skew","ease","interpolateHcl","ah","ac","al","bh","bc","bl","interpolateHsl","as","interpolateLab","aa","ba","interpolateRound","baseVal","consolidate","d3_transformIdentity","d3_interpolateTransformPop","d3_interpolateTransform","ta","tb","d3_interpolateTranslate","ra","rb","d3_interpolateRotate","wa","wb","d3_interpolateSkew","ka","kb","d3_interpolateScale","d3_uninterpolateNumber","d3_uninterpolateClamp","d3_layout_bundlePath","link","lca","aNodes","d3_layout_bundleAncestors","bNodes","aNode","bNode","sharedNode","d3_layout_bundleLeastCommonAncestor","ancestors","d3_layout_forceDragstart","fixed","d3_layout_forceDragend","d3_layout_forceMouseover","px","py","d3_layout_forceMouseout","d3_layout_forceAccumulate","alpha","charges","charge","pointCharge","interpolateTransform","layout","bundle","paths","chord","chords","sortGroups","sortSubgroups","sortChords","relayout","groupSums","groupIndex","subgroupIndex","di","dj","subindex","startAngle","endAngle","resort","force","distances","strengths","friction","linkDistance","d3_layout_forceLinkDistance","linkStrength","d3_layout_forceLinkStrength","chargeDistance2","d3_layout_forceChargeDistance2","gravity","theta2","repulse","dw","dn","dragmove","resume","tick","weight","visit","chargeDistance","theta","neighbors","dimension","candidates","d3_layout_hierarchyRebind","hierarchy","d3_layout_hierarchyLinks","d3_layout_hierarchyVisitBefore","d3_layout_hierarchyVisitAfter","nodes2","d3_layout_hierarchyChildren","d3_layout_hierarchyValue","d3_layout_hierarchySort","child","stack","childs","revalue","partition","pie","d3_layout_pieSortByValue","padAngle","da","pa","arcs","d3_layout_stackX","d3_layout_stackY","d3_layout_stackOut","d3_layout_stackOrderDefault","d3_layout_stackOffsetZero","series","orders","offsets","d3_layout_stackOrders","d3_layout_stackOffsets","d3_layout_stackMaxIndex","sums","d3_layout_stackReduceSum","bottom","tops","bottoms","silhouette","wiggle","s2","s3","o0","expand","zero","reduce","d3_layout_stackSum","d3_layout_histogramBinSturges","d3_layout_histogramBinFixed","d3_layout_histogramRange","d3_layout_packSort","d3_layout_packInsert","_pack_next","_pack_prev","d3_layout_packSplice","d3_layout_packIntersects","dr","d3_layout_packSiblings","xMin","xMax","yMin","yMax","d3_layout_packLink","d3_layout_packPlace","isect","d3_layout_packUnlink","d3_layout_packTransform","db","dc","d3_layout_treeSeparation","d3_layout_treeLeft","d3_layout_treeRight","d3_layout_treeMove","wm","wp","change","d3_layout_treeAncestor","vim","ancestor","d3_layout_clusterLeft","d3_layout_clusterRight","d3_layout_treemapPadNull","d3_layout_treemapPad","d3_scaleExtent","d3_scaleRange","rangeExtent","d3_scale_bilinear","uninterpolate","d3_scale_nice","nice","d3_scale_niceStep","d3_scale_niceIdentity","histogram","frequency","valuer","ranger","binner","bin","bins","thresholds","pack","separation","nodeSize","root0","root1","node1","queue","wrapTree","firstWalk","secondWalk","sizeNode","tx","siblings","d3_layout_treeShift","midpoint","vip","vop","vom","sip","sop","sim","som","apportion","cluster","previousNode","d3_layout_clusterX","d3_layout_clusterY","treemap","stickies","pad","sticky","ratio","squarify","score","remaining","worst","stickify","rmax","rmin","padFunction","padConstant","µ","σ","logNormal","bates","irwinHall","d3_scale_polylinear","d3_scale_linear","clamp","rangeRound","ticks","d3_scale_linearTicks","tickFormat","d3_scale_linearTickFormat","d3_scale_linearNice","d3_scale_linearRebind","d3_scale_linearTickRange","span","err","d3_scale_linearPrecision","d3_scale_linearFormatSignificant","d3_scale_linearFormatPrecision","d3_scale_log","base","positive","niced","d3_scale_logNiceNegative","d3_scale_logFormat","d3_scale_pow","powp","d3_scale_powPow","powb","d3_scale_ordinal","rangeBand","steps","xi","rangePoints","rangeRoundPoints","rangeBands","outerPadding","rangeRoundBands","ordinal","category10","d3_category10","category20","d3_category20","category20b","d3_category20b","category20c","d3_category20c","d3_scale_quantile","quantiles","invertExtent","d3_scale_quantize","d3_scale_threshold","d3_scale_identity","identity","d3_zero","quantize","threshold","innerRadius","d3_svg_arcInnerRadius","outerRadius","d3_svg_arcOuterRadius","cornerRadius","padRadius","d3_svg_arcAuto","d3_svg_arcStartAngle","d3_svg_arcEndAngle","d3_svg_arcPadAngle","cw","rc","circleSegment","rp","ap","d3_svg_arcSweep","h1","h0","rc1","rc0","oc","kc","lc","t30","d3_svg_arcCornerTangents","t12","t03","t21","x01","y01","ox","oy","D","cx0","cx1","dx0","dy0","dx1","dy1","d3_svg_line","defined","d3_svg_lineLinear","interpolateKey","tension","d3_svg_lineInterpolators","d3_svg_lineLinearClosed","d3_svg_lineStepBefore","d3_svg_lineStepAfter","basis","d3_svg_lineBasis","pi","d3_svg_lineDot4","d3_svg_lineBasisBezier3","d3_svg_lineBasisBezier","cardinal","d3_svg_lineHermite","d3_svg_lineCardinalTangents","monotone","tangents","d3_svg_lineSlope","d3_svg_lineFiniteDifferences","d3_svg_lineMonotoneTangents","lp","p2","d3_svg_lineBasisBezier1","d3_svg_lineBasisBezier2","d3_svg_lineRadial","d3_svg_area","interpolateReverse","points0","points1","fx0","fy0","fx1","fy1","d3_svg_chordRadius","d3_svg_diagonalProjection","d3_svg_diagonalRadialProjection","d3_svg_symbolSize","d3_svg_symbolType","d3_svg_symbolCircle","radial","curve","self","diagonal","p3","projection_","d3_svg_symbols","cross","diamond","d3_svg_symbolTan30","square","d3_svg_symbolSqrt3","symbolTypes","d3_transitionId","d3_transitionNamespace","d3_transitionInherit","d3_transitionNode","d3_transition","interrupt","d3_selection_interruptNS","lock","activeId","active","count","d3_transitionPrototype","d3_transition_tween","d3_transition_text","inherit","tweens","elapsed","cancelId","cancel","subnodes","nameNS","attrNull","attrNullNS","attrTween","attrTweenNS","styleNull","styleString","styleTween","inheritId","id0","id1","axis","tickFormat_","orient","d3_svg_axisDefaultOrient","innerTickSize","outerTickSize","tickPadding","tickArguments_","tickValues","tickTransform","tickEnter","tickExit","tickUpdate","tickSpacing","pathUpdate","lineEnter","lineUpdate","textEnter","textUpdate","d3_svg_axisX","d3_svg_axisY","d3_svg_axisOrients","tickSize","tickSubdivide","brush","xExtentDomain","yExtentDomain","xExtent","yExtent","xClamp","yClamp","resizes","d3_svg_brushResizes","brushstart","background","resize","d3_svg_brushCursor","gUpdate","backgroundUpdate","redrawX","redrawY","redraw","eventTarget","event_","resizing","resizingX","resizingY","dragging","keydown","keyup","brushmove","brushend","ex","ey","altKey","keyCode","move1","extent1","extent0","yi","clear","nw","ne","se","sw","d3_time_formatUtc","d3_time_formatIso","d3_time_formatIsoNative","toISOString","d3_time_scale","tickMethod","d3_time_scaleSteps","d3_time_scaleMilliseconds","d3_time_scaleDate","skipped","iso","second","seconds","minute","minutes","hour","timezone","hours","month","d3_time_scaleLocalMethods","d3_time_scaleLocalFormat","d3_time_scaleUtcMethods","d3_time_scaleUtcFormat","d3_json","d3_html","createRange","selectNode","createContextualFragment","json","responseXML","near","far","lr","bt","nf","cleanTicks","containerIn","containerOut","coerce","axType","readInput","_template","_tick0","_dtick","_tickvals","tickmode","dtick","tick0","calendar","gd","_responsiveChartHandler","arr","Routes","STARTPAGE","NOTFOUND","SEARCH","STREAMS","LEGACY_ALERTS","LIST","CONDITIONS","NEW_CONDITION","NOTIFICATIONS","NEW_NOTIFICATION","ALERTS","DEFINITIONS","CREATE","edit","definitionId","show","notificationId","SOURCES","DASHBOARDS","GETTING_STARTED","SYSTEM","CONFIGURATIONS","CONTENTPACKS","EXPORT","contentPackId","contentPackRev","GROKPATTERNS","INDICES","FAILURES","INDEX_SETS","CONFIGURATION","SHOW","INPUTS","LOGGING","METRICS","nodeId","NODES","THREADDUMP","OUTPUTS","OVERVIEW","PROCESSBUFFERDUMP","AUTHENTICATION","BACKENDS","ACTIVE","createBackend","initialStepKey","editUrl","AUTHENTICATORS","EDIT","USERS","userId","TOKENS","AUTHZROLES","roleId","LOOKUPTABLES","tableName","CACHES","cacheName","DATA_ADAPTERS","adapterName","PIPELINES","PIPELINE","pipelineId","RULES","RULE","ruleId","SIMULATOR","ENTERPRISE","SIDECARS","STATUS","sidecarId","ADMINISTRATION","NEW_CONFIGURATION","EDIT_CONFIGURATION","configurationId","NEW_COLLECTOR","EDIT_COLLECTOR","collectorId","VIEWS","viewsPath","VIEWID","EXTENDEDSEARCH","extendedSearchPath","search_with_query","query","rangeType","timeRange","route","URI","queryParams","resource","_common_search_url","resolution","setQuery","search","message_show","messageId","stream_edit","streamId","stream_edit_example","stream_outputs","stream_search","stream_alerts","legacy_stream_search","show_alert","alertId","show_alert_condition","conditionId","new_alert_condition_for_stream","new_alert_notification_for_stream","dashboard_show","dashboardId","node_inputs","global_input_extractors","inputId","local_input_extractors","export_extractors","import_extractors","new_extractor","extractorType","fieldName","extractor_type","example_index","example_id","edit_extractor","extractorId","edit_input_extractor","getting_started","fromMenu","filtered_metrics","qualifyUrls","routes","appPrefix","qualifiedRoutes","routeName","normalizePath","AppConfig","gl2AppPathPrefix","unqualified","pluginRoute","routeKey","throwError","pluginRoutes","PluginStore","uri","paramNames","startsWith","paramValues","param","idx","pathname","defaultExport","assign","getPluginRoute","tinycolor","colorAttrs","defaults","defaultLine","lightLine","cleanOne","valTrim","rgba","rgbStr","tinyRGB","tc","toRgb","cstr","opacity","getAlpha","addOpacity","op","combine","front","fc","toRgbString","bcflat","fcflat","contrast","lightAmount","darkAmount","isDark","lighten","darken","stroke","el0","MessageFormatter","formatMessageSummary","messageSummary","formatMessage","_id","highlight_ranges","decoration_stats","formatResultMessage","resultMessage","highlightRanges","decorationStats","filteredFields","MessageFieldsFilter","filterFields","timestamp","moment","unix","filtered_fields","formatted_fields","source_node_id","gl2_source_node","source_input_id","gl2_source_input","stream_ids","streams","utcFormat","numConstants","FP_SAFE","BADNUM","lib","nestedProperty","keyedContainer","relativeAttr","isPlainObject","toLogRange","relinkPrivateKeys","arrayModule","isTypedArray","isArray1D","ensureArray","maxRowLength","minRowLength","modModule","mod","modHalf","coerceModule","valObjectMeta","coerce2","coerceFont","coerceHoverinfo","coerceSelectionMarkerOpacity","validate","datesModule","dateTime2ms","isDateTime","ms2DateTime","ms2DateTimeLocal","cleanDate","isJSDate","formatDate","incrementMonth","dateTick0","dfltRange","findExactDates","MIN_MS","MAX_MS","searchModule","findBin","sorterAsc","sorterDes","distinctVals","roundUp","findIndexOfMin","statsModule","aggNums","len","midRange","stdev","interp","matrixModule","init2dArray","transposeRagged","dot","translationMatrix","rotationMatrix","rotationXYMatrix","apply3DTransform","apply2DTransform","apply2DTransform2","convertCssMatrix","inverseTransformMatrix","anglesModule","deg2rad","rad2deg","angleDelta","angleDist","isFullCircle","isAngleInsideSector","isPtInsideSector","pathArc","pathSector","pathAnnulus","anchorUtils","isLeftAnchor","isCenterAnchor","isRightAnchor","isTopAnchor","isMiddleAnchor","isBottomAnchor","geom2dModule","segmentsIntersect","segmentDistance","getTextLocation","clearLocationCache","getVisibleSegment","findPointOnPath","extendModule","extendFlat","extendDeep","extendDeepAll","extendDeepNoArrays","loggersModule","warn","regexModule","counterRegex","counter","throttleModule","throttle","throttleDone","done","clearThrottle","domModule","makePtIndex2PtNumber","indexToPoints","ptIndex2ptNumber","pts","getGraphDiv","isPlotDiv","removeElement","addStyleRule","addRelatedStyleRule","deleteRelatedStyleRule","getFullTransformMatrix","getElementTransformMatrix","getElementAndAncestors","equalDomRects","clearResponsive","preserveDrawingBuffer","makeTraceGroups","notifier","filterUnique","filterVisible","pushUnique","increment","cleanNumber","ensureNumber","isIndex","noop","repeat","cnt","swapAttrs","attrList","part1","part2","xp","yp","temp","raiseToTop","elem","cancelTransition","constrain","v1","bBoxIntersect","simpleMap","func","opts","randstr","existing","bits","_recursion","digits","res","rem","parsed","OptionControl","opt","optname","optObj","optionList","smooth","arrayIn","FWHM","alen","alen2","wlen","arrayOut","syncOrAsync","sequence","arg","finalStep","ret","continueAsync","fni","promiseError","stripTrailingSlash","str","noneOrAll","hasAny","hasAll","mergeArray","traceAttr","cd","cdAttr","fn","hasFn","imax","mergeArrayCastPositive","fillArray","castOption","trace","ptNumber","extractOption","calcPt","calcKey","traceKey","traceVal","tagSelected","calcTrace","ptNumber2cdIndex","selectedpoints","_indexToPoints","ptIndex","cdIndex","selected","selIndices2selPoints","getTargetArray","transformOpts","minExtend","obj1","obj2","objOut","subarray","titleCase","containsAny","fragments","isIE","msSaveBlob","IS_IE9_OR_BELOW_REGEX","isIE9orBelow","IS_SAFARI_REGEX","isSafari","IS_IOS_REGEX","isIOS","isD3Selection","ensureSingle","className","enterFn","sel","layer","ensureSingleById","objectFromPath","tmpObj","el","dottedPropertyRegex","indexedPropertyRegex","expandObjectPaths","prop","dest","trailingPath","numSeparate","separators","separatethousands","thousandsRe","decimalSep","thouSep","TEMPLATE_STRING_REGEX","SIMPLE_PROPERTY_REGEX","templateString","getterCache","dummy","isValidTextValue","hovertemplateWarnings","hovertemplateString","templateFormatString","texttemplateWarnings","texttemplateString","TEMPLATE_STRING_FORMAT_SEPARATOR","labels","d3locale","fmt","ms","subplotSort","numA","numB","charA","charB","isNumA","isNumB","randSeed","seedPseudoRandom","pseudoRandom","lastVal","fillText","contOut","htx","formatPercent","isHidden","display","strTranslate","strRotate","strScale","getTextTransform","noCenter","textX","textY","targetX","targetY","anchorX","anchorY","ensureUniformFontSize","baseFont","_fullLayout","uniformtext","minsize","join2","mainSeparator","lastSeparator","newInterval","floori","offseti","every","durationDay","durationWeek","utcWeekday","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcDay","weekday","monday","tuesday","wednesday","thursday","friday","saturday","utcYear","localDate","utcDate","newDate","formatLocale","locale_weekdays","locale_shortWeekdays","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formatDayOfMonth","formatMicroseconds","formatYearISO","formatFullYearISO","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYear","formatFullYear","formatZone","formatLiteralPercent","utcFormats","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCYearISO","formatUTCFullYearISO","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","parseSpecifier","parseDayOfMonth","parseMicroseconds","parseYear","parseFullYear","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parseQuarter","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseZone","parseLiteralPercent","newFormat","pads","newParse","Q","V","utcParse","timeParse","numberRe","percentRe","requoteRe","dISO","dow","UTCdISO","defaultLocale","definition","isoSpecifier","StartpageStore","UsersApiController","payload","startpage","numArr","frac","NodesActions","CombinedProvider","SessionStore","NodesStore","clusterId","nodeCount","INTERVAL","promises","init","_triggerList","setInterval","isLoggedIn","getNodesInfo","fetchPeriodically","ClusterApiResource","node_id","prev","_clusterId","_nodeCount","_propagateState","getNode","nodeInCluster","cluster_id","ExtractorsActions","save","delete","import","StoreProvider","storeName","storeProvider","EnterpriseActions","EnterpriseStore","sourceUrl","licenseStatus","getState","propagateChanges","enterpriseUrl","refresh","getLicenseInfo","free_license_info","license_status","errorMessage","lodash","requestFreeEnterpriseLicense","formValues","requestBody","first_name","firstName","last_name","lastName","company","email","phone","factory","_IPv6","IPv6","address","pos","_segments","_best","_current","inzeroes","noConflict","CatalogActions","showEntityIndex","getSelectedEntities","actions","stores","_result","combinedProvider","metadata","FilterPreviewActions","execute","editType","valType","dflt","role","description","EventNotificationsActions","EventNotificationsStore","all","allLegacyTypes","notifications","pagination","page","pageSize","grandTotal","eventNotificationsUrl","nextSegments","segmentCoded","URLUtils","listAll","per_page","grand_total","notification","failed","testPersisted","listAllLegacyTypes","types","IndexerOverviewActions","IndexerOverviewStore","indexerOverview","indexerOverviewError","IndexerOverviewApiResource","MAX_VALUE","ONEMAXYEAR","ONEAVGYEAR","ONEMINYEAR","ONEMAXQUARTER","ONEAVGQUARTER","ONEMINQUARTER","ONEMAXMONTH","ONEAVGMONTH","ONEMINMONTH","ONEWEEK","ONEDAY","ONEHOUR","ONEMIN","ONESEC","EPOCHJD","ALMOST_EQUAL","LOG_CLIP","MINUS_SIGN","percentTwenties","Format","formatters","RFC1738","RFC3986","UniversalSearchStore","DEFAULT_LIMIT","timerange","sortField","sortOrder","decorate","timerangeParams","extractTimeRange","effectiveLimit","UniversalSearchApiController","jQuery","extend","hash","md5","standard_selected","MESSAGE_FIELD","SOURCE_FIELD","messages","relative","rad","a01","a02","a03","a20","a21","a22","a23","xanchor","yanchor","Lib","Template","handleTickValueDefaults","handleTickMarkDefaults","handleTickLabelDefaults","attributes","colorbarOut","newContainer","colorbarIn","colorbar","thicknessmode","lenmode","height","ticklabelposition","outerTicks","font","bgColor","_dfltTitle","loggers","mat4X4","elParent","uid","getElementById","createTextNode","head","styleSheet","sheet","insertRule","addRule","element","allElements","isTransformableElement","HTMLElement","gdElement","el3","multiply","getExtractorDTO","extractor","converters","converter","config","conditionValue","condition_type","condition_value","cut_or_copy","cursor_strategy","source_field","target_field","extractor_config","ExtractorsStore","extractors","ExtractorUtils","EXTRACTOR_TYPES","_silentExtractorCreate","ExtractorsController","calledFromMethod","triggerPromise","orderedExtractors","orderedExtractorsMap","successfulImports","failedImports","Promise","settle","warning","ConfigurationActions","urlPrefix","ClusterConfigResource","ConfigurationsStore","configuration","searchesClusterConfig","eventsClusterConfig","_url","configType","listSearchesClusterConfig","listMessageProcessorsConfig","listWhiteListConfig","listPermissionsConfig","allow_sharing_with_everyone","allow_sharing_with_users","listEventsClusterConfig","updateWhitelist","updateMessageProcessorsConfig","ContentPack","rev","summary","vendor","parameters","entitieValues","entities","Entity","fromJSON","_value","acc","entity","constraints","constraint","Set","Builder","Map","toJSON","uuid","parameter","newParameters","toObject","hasElementType","hasMap","hasSet","hasArrayBuffer","ArrayBuffer","isView","equal","constructor","it","flags","$$typeof","console","IndexerClusterActions","IndexerClusterStore","state","health","IndexerClusterApiController","isMobile","default","mobileRE","tabletRE","tablet","featureDetect","maxTouchPoints","SidecarsActions","getSidecar","getSidecarActions","restartCollector","assignConfigurations","naturalSort","oFxNcL","oFyNcL","sre","dre","hre","ore","insensitive","xN","yN","xD","yD","cLoc","numS","options","locals","defaultSettings","debug","positionClass","onclick","showDuration","hideDuration","timeOut","extendedTimeOut","escapeHtml","closeButton","closeHtml","progressBar","preventDuplicates","toastr","InputStaticFieldsStore","destroy","fovy","aspect","InputTypesActions","timerCache","_clearTimeout","cache","minInterval","idi","ts","onDone","resolve","previousOnDone","EntityIndex","Immutable","hasInstance","isEntityIndex","CatalogStore","CatalogsController","entityIndex","groupBy","requestedEntities","entitiy","queryEntities","plotAttributes","templateAttrs","validItemName","arrayDefaultKey","lastChar","templatedArray","attrs","_isLinkedToArray","traceTemplater","dataTemplate","traceType","typeTemplates","traceCounts","newTrace","traceIn","traceOut","typei","baseName","arrayTemplater","inclusionAttr","defaultsTemplate","templateItems","usedNames","newItem","itemIn","_input","templateItemName","templateItem","defaultItems","outi","_templateitemname","arrayEditor","parentIn","containerStr","itemOut","lengthIn","_index","itemStr","resetUpdate","modifyItem","getUpdateObj","updateOut","modifyBase","applyUpdate","updateToApply","SystemJobsActions","getJob","cancelJob","_SecondLevelDomains","SecondLevelDomains","SLD","tldOffset","sldOffset","sldList","is","CodecTypesActions","CodecTypesStore","codecTypes","CodecTypesController","CollectorConfigurationsActions","listUploads","getConfiguration","getConfigurationSidecars","getUploads","createConfiguration","updateConfiguration","renderPreview","copyConfiguration","PluginManifest","AlertConditionsActions","AlertConditionsStore","allAlertConditions","availableConditions","available","AlertConditionsApiController","alertConditionId","StreamAlertsApiController","conditions","condition","cond","clone","stream_id","alertConditions","alertCondition","alert_condition_id","failureCallback","failCallback","SessionActions","login","logout","PipelinesActions","listFailCallback","PipelinesStore","pipelines","_updatePipelinesState","pipeline","some","PipelinesController","perPage","PaginationURL","paginatedList","List","pipelineSource","updatedPipelines","SingleNodeActions","AlertsActions","listAllPaginated","listAllStreams","a10","a11","a12","a13","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","MODEL","NAME","TYPE","VENDOR","VERSION","ARCHITECTURE","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","util","regexes","extensions","mergedRegexes","str1","str2","lowerize","major","mapper","rgx","regex","props","maps","browser","oldsafari","device","amazon","model","sprint","os","windows","cpu","engine","UAParser","uastring","getResult","rgxmap","getBrowser","getCPU","architecture","getDevice","getEngine","getOS","getUA","setUA","BROWSER","MAJOR","CPU","DEVICE","EMBEDDED","ENGINE","OS","Zepto","parser","fontAttrs","hoverLabelAttrs","hoverlabel","bgcolor","arrayOk","bordercolor","namelength","scales","defaultScale","RdBu","isValidScaleArray","scl","highestVal","si","isValid","parseScale","toContainer","fromContainer","fromVal","toVal","minLen","AlarmCallbackHistoryActions","crypt","utf8","isBuffer","encoding","stringToBytes","Uint8Array","bytesToWords","FF","_ff","GG","_gg","HH","_hh","II","_ii","cc","dd","endian","_blocksize","_digestsize","digestbytes","wordsToBytes","asBytes","asString","bytesToString","bytesToHex","OutputsStore","OUTPUTS_URL","OutputsApiController","_failCallback","loadForStreamId","StreamOutputsApiController","loadAvailableTypes","availableTypes","loadAvailable","typeName","resp","outputId","deltas","cssWithMappingToString","item","content","mediaQuery","dedupe","alreadyImportedModules","_i","fov","upTan","upDegrees","downTan","downDegrees","leftTan","leftDegrees","rightTan","rightDegrees","xScale","yScale","constants","isLog","isDate","isCat","dtickDflt","dtickNum","appConfig","featureFlags","keySeq","toList","gl2ServerUrl","GRAYLOG_API_URL","gl2DevMode","DEVELOPMENT","isFeatureEnabled","includes","rootTimeZone","isCloud","IS_CLOUD","customThemeColors","pluginUISettings","publicNotifications","IndexRangesActions","recalculate","recalculateIndex","EventDefinitionsActions","EventDefinitionsStore","eventDefinitions","eventDefinitionsUrl","event_definitions","eventDefinitionId","setAlertFlag","eventDefinition","isAlert","alert","extractSchedulerInfo","clonedEventDefinition","cloneDeep","_is_scheduled","pick","omit","isScheduled","defaultTo","newEventDefinition","schedule","updatedEventDefinition","enable","disable","fxAttrs","_noTemplating","showlegend","legendgroup","anim","ids","customdata","meta","hoverinfo","extras","noBlank","strict","maxpoints","transforms","uirevision","LoggersActions","subsystems","setSubsystemLoggerLevel","Parameter","dataType","defaultValue","optional","binding","implementingClass","__registrations","toLocaleLowerCase","SingletonParameter","singleton","StringUtils","tempDocument","capitalizeFirstLetter","escapeHTML","unescapeHTML","pluralize","singular","plural","replaceSpaces","newCharacter","truncateWithEllipses","maxLength","SystemStore","system","locales","info","systemLocales","SystemApiController","jvm","elasticsearchVersion","elasticsearchStats","reject","splitVersion","cluster_version","minor","patch","a30","a31","a32","a33","b01","b02","b03","b04","b05","b06","b07","b08","b09","b10","b11","det","InputTypesStore","inputTypes","inputDescriptions","promiseTypes","promiseDescriptions","typesResponse","descriptionsResponse","inputTypeId","ACCEPTED_PROTOCOLS","absoluteServerUrl","hostname","scheme","currentLocation","absoluteTo","qualifyRelativeURLWithCurrentHostname","normalizePathname","appPrefixed","concatURLPath","getParsedSearch","Qs","getParsedHash","replaceHashParam","newValue","origHash","joinedPath","areCredentialsInURLSupported","isValidURL","URL","hasAcceptedProtocol","acceptedProtocols","protocol","qualifyUrlWithSessionCredentials","sessionId","trimmedSessionId","username","password","fromcurrent","frame","easing","ordering","YANGLE","HOVERARROWSIZE","HOVERTEXTPAD","HOVERFONTSIZE","HOVERFONT","HOVERMINTIME","HOVERID","AlertsStore","since","AlertsApiController","alerts","IndicesConfigurationActions","IndicesConfigurationStore","rotationStrategies","retentionStrategies","activeRotationConfig","activeRetentionConfig","loadRotationStrategies","strategies","loadRetentionStrategies","AlarmCallbacksApiController","alarmCallbackId","testAlert","AlarmCallbackHistoryApiController","AuthenticationController","backendId","disableUser","enableUser","serviceId","loadActive","loadUsersPaginated","authBackendId","loadActiveBackendType","servicesPaginated","testConnection","testLogin","AuthzRolesController","removeMember","addMembers","loadRolesForUser","loadUsersForRole","ContentPacksController","getRev","revision","downloadRev","deleteRev","install","installList","uninstall","installId","uninstallDetails","CountsApiController","indexSetTotal","GrokPatternsController","paginated","DashboardsApiController","addWidget","removeWidget","widgetId","widget","updateWidget","widgetValue","updatePositions","DecoratorsResource","decoratorId","DeflectorApiController","cycle","EntityShareController","entityGRN","userSharesPaginated","HTTPHeaderAuthConfigController","IndexerFailuresApiController","IndexRangesApiController","rebuild","rebuildSingle","IndicesApiController","close","indexName","listClosed","multiple","reopen","InputsApiController","globalRecentMessage","InputStatesController","ClusterInputStatesController","ClusterLoggersResource","subsystem","loglevel","MessageFieldsApiController","MetricsApiController","byNamespace","ClusterMetricsApiController","multipleAllNodes","NotificationsApiController","availableType","RolesApiController","listRoles","createRole","updateRole","rolename","deleteRole","loadMembers","SavedSearchesApiController","savedSearchId","SessionsApiController","sendDummyAlert","StreamsApiController","cloneStream","pause","testMatch","StreamRulesApiController","streamRuleId","SystemJobsApiController","jobId","SystemMessagesApiController","ToolsApiController","grokTest","jsonTest","naturalDateTest","regexTest","regexValidate","regexReplaceTest","splitAndIndexTest","substringTest","containsStringTest","lookupTableTest","urlWhitelistCheck","urlWhitelistGenerateRegex","_streamFilter","_buildBaseQueryString","queryString","streamFilter","_buildUrl","changePassword","loadByUsername","create_token","tokenName","delete_token","list_tokens","setStatus","accountStatus","DashboardsController","MessagesController","analyze","single","exportSearch","searchId","exportSearchType","searchTypeId","jobResults","exportJobId","filename","ExportJobsController","MapDataController","RulesController","functions","metricsConfig","ConnectionsController","to_stream","to_pipeline","SimulatorController","simulate","ping","seen","IndexerFailuresStore","isoSince","actionsName","actionsProvider","traceLayer","cdModule","cls","traces","animationAttrs","drawNewShapeAttrs","padAttrs","globalFont","family","xref","yref","autosize","autoexpand","computed","paper_bgcolor","plot_bgcolor","autotypenumbers","hidesources","colorway","datarevision","editrevision","selectionrevision","modebar","orientation","activecolor","newshape","activeshape","_deprecated","titlefont","parentObjIn","parentObjOut","previousContOut","contIn","templater","handleItemDefaults","isMobileOrTablet","getUserAgent","allParts","prevPart","MACHINE_ID","ObjectID","pid","process","_bsontype","buf","generate","hex","createFromTime","createFromHexString","hexString","objectid","setMachineID","machineID","getMachineID","toHexString","equals","getTimestamp","inspect","for","InputsActions","getOptional","colorScaleAttrs","colorScaleDefaults","layoutIn","layoutOut","colorAxIn","colorAxOut","colorAxes","_colorAxes","coerceAx","coloraxis","stash","_name","cLetter","borderLine","lightFraction","Loggers","Registry","DATETIME_REGEXP","DATETIME_REGEXP_CN","YFIRST","isWorldCalendar","componentsRegistry","calendars","lpad","dayOfWeek","getComponentMethod","_dateTick0","tzOffset","offsetTweak","comb","isWorld","isChinese","cDate","calInstance","isIntercalary","toMonthIndex","toJD","NINETYDAYS","THREEHOURS","FIVEMIN","includeTime","dateStr","msec10","msecTenths","msRounded","dateJD","timeMs","fromJD","fracMatch","modDateFormat","formatter","MAXSECONDS","tr","extraFormat","timePart","timeStr","secStr","formatTime","dayMonthYear","dayMonth","THREEDAYS","dMonth","exactYears","exactMonths","exactDays","blankCount","dataCount","ServerAvailabilityActions","ServerAvailabilityStore","server","up","setHeader","build","reportSuccess","reportError","scaleForGradient","gradient","plotlyScale","domains","colors","chroma","reportServerSuccess","defaultOnUnauthorizedError","ErrorsActions","report","createFromFetchError","emptyToUndefined","onServerError","onUnauthorized","contentType","getStore","fetchError","FetchError","statusText","getSessionId","maybeStringify","defaultResponseHandler","ok","contentLength","noContent","responseHandler","errorHandler","session","Buffer","Authorization","accept","acceptedMimeType","history","Accept","CancellablePromise","queuePromiseIfNotLoggedin","completed","listen","authenticated","fetchPlainText","plaintext","noSessionExtension","fetchFile","file","msg","colorscale","sequential","Reds","sequentialminus","Blues","diverging","_isSubplotObj","colorAttr","noColorAxis","showScaleDflt","hasColorscale","extractOpts","fullData","fullLayout","relinkColorAttrs","outerCont","cbOpt","_colorAx","cOpts","isAuto","auto","autocolorscale","cbOpts","_module","Search","queries","needsBinding","toSet","toJS","newId","Query","ConfigurationVariableActions","ConfigurationVariableStore","configurationVariable","action","getConfigurations","FULL_MESSAGE_FIELD","TIMESTAMP_FIELD","DEFAULT_MESSAGE_FIELDS","RELATIVE_ALL_TIME","Messages","DEFAULT_RANGE_TYPE","DEFAULT_RELATIVE_FROM","DEFAULT_RELATIVE_TO","DEFAULT_TIMERANGE","DEFAULT_HIGHLIGHT_COLOR","StaticColor","DEFAULT_CUSTOM_HIGHLIGHT_RANGE","TimeUnits","RELATIVE_RANGE_TYPES","label","showViewsPath","searchPath","newSearchPath","showSearchPath","dashboardsPath","newDashboardsPath","dashboardsTvPath","showDashboardsPath","availableTimeRangeTypes","AuthenticationBackend","defaultRoles","formattedConfig","authService","getAuthServicePlugin","configToJson","default_roles","configFromJson","AuthenticationStore","singletonStore","AuthenticationActions","authenticators","authBackend","backend","encodeURIComponent","backendsTotal","backends_total","setActiveBackend","active_backend","loadBackendsPaginated","activeBackend","backends","users","user","UserOverview","LookupTableDataAdaptersActions","searchPaginated","reloadPage","getTypes","lookup","dash","z2","xx","xy","xz","yy","yz","zz","wx","wy","wz","JournalStore","baseFilter","calcDataFilter","_length","filterFn","ValueRefHelper","VALUE_REF_TYPE_FIELD","VALUE_REF_VALUE_FIELD","dataIsValueRef","VALUE_REF_PARAMETER_VALUE","_defineProperties","descriptor","configurable","writable","_default","instance","Constructor","TypeError","_classCallCheck","protoProps","staticProps","plugin","plugins","_context","dict","dictionary","localeRegistry","baseLocale","hasColorbar","colorbarDefaults","isValidScale","traceIs","npMaybe","parentCont","parentContIn","parentContOut","inTrace","thisFn","colorAx","colorbarVisuals","minIn","maxIn","validMinMax","autoColorscaleDflt","sclIn","sclTemplate","IndicesActions","IndicesStore","closedIndices","registrations","urlList","indexNames","subscribe","unsubscribe","layoutAttributes","tickLen","tickWidth","tickColor","ticklen","tickwidth","tickcolor","base64","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","RangeError","encodingOrOffset","allocUnsafe","byteOffset","byteLength","fromArrayLike","fromArrayBuffer","isEncoding","actual","write","fromString","checked","fromObject","assertSize","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","arrayIndexOf","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","hexWrite","strLen","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","utf16leToBytes","fromByteArray","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","global","foo","typedArraySupport","poolSize","_augment","species","allocUnsafeSlow","_isBuffer","swap16","swap32","swap64","thisStart","thisEnd","thisCopy","targetCopy","_arr","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","toByteArray","stringtrim","base64clean","src","dst","SystemMessagesStore","PluginsStore","AlarmCallbacksActions","AlarmCallbacksStore","alarmcallbacks","alarmCallback","dv","DataView","_rowLength","len0","_constructor","arg0","argi","posi","leni","allArray","totalLen","isCancelled","_promise","_isCanceled","onfulfilled","onrejected","onfinally","traceOpts","layoutOpts","traceEditTypeFlags","layoutEditTypeFlags","falseObj","overrideAll","editTypeOverride","overrideContainers","overrideOne","items","traceFlags","layoutFlags","editTypeParts","configAttributes","staticPlot","plotlyServerURL","editable","edits","annotationPosition","annotationTail","annotationText","axisTitleText","colorbarPosition","colorbarTitleText","legendPosition","legendText","shapePosition","titleText","autosizable","responsive","fillFrame","frameMargins","scrollZoom","doubleClick","doubleClickDelay","showAxisDragHandles","showAxisRangeEntryBoxes","showTips","showLink","linkText","sendData","showSources","displayModeBar","showSendToCloud","showEditInChartStudio","modeBarButtonsToRemove","modeBarButtonsToAdd","modeBarButtons","toImageButtonOptions","displaylogo","watermark","plotGlPixelRatio","setBackground","topojsonURL","mapboxAccessToken","logging","notifyOnLogging","queueLength","globalTransforms","dfltConfig","crawl","SidecarsAdministrationActions","refreshList","setAction","authServices","service","getEnterpriseGroupSyncPlugin","authGroupSyncPlugins","getEnterpriseAuthenticationPlugin","authPlugins","delta","newX","lenX1","lenDt","searchTypeDefinition","toLocaleUpperCase","SystemProcessingStore","SystemLoadBalancerStore","ClusterOverviewStore","clusterOverview","listenTo","threadDump","threaddump","processbufferDump","processbuffer_dump","SimulatorActions","rl","SystemJobsStore","jobsById","jobs","rest","singletonActions","ASCEND","SIMPLEATTR","baseAttr","ExtendModule","basePlotAttributes","baseLayoutAttributes","registerTraceModule","thisType","categoriesIn","categories","subplotsRegistry","basePlotModule","plotType","componentName","findArrayRegexps","mergeComponentAttrsToSubplot","registerSubplot","categoryObj","allCategories","allTypes","mergeComponentAttrsToTrace","traceLayoutAttributes","bpmName","styleRules","PlotlyGeoAssets","topojson","registerComponentModule","layoutArrayContainers","subplotName","transformType","transformsRegistry","mergeComponentAttrsToTransform","schema","registerTransformModule","hasTransform","hasCalcTransform","calcTransform","supplyDefaults","registerLocale","newDict","hasDict","hasFormat","localeObj","baseLocaleObj","arrayAttrRegexps","_arrayAttrRegexps","layoutArrayRegexes","componentSchema","traceAttrs","transformAttrs","subplots","subplotModule","subplotAttrs","subplotAttr","componentLayoutAttrs","getTraceType","apiMethodRegistry","collectableSubplotTypes","register","_modules","newModule","moduleType","getModule","category","getTransformIndices","FORMAT_LINK","DATE_FORMAT_LINK","PreferencesActions","CurrentUserStore","currentUser","sessionUpdate","reload","saveUserPreferences","sessionInfo","Float32Array","StreamRulesStore","callbacks","inverted","_emitChange","onChange","unregister","pull","MessagesStore","errorThrown","tokens","remoteAddress","codec","codecConfiguration","remote_address","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","rt","CustomizationActions","CustomizationStore","customization","SHOW_PLACEHOLDER","HIDE_PLACEHOLDER","DESELECTDIM","yx","zx","zy","RolesStore","loadRoles","roles","newRole","getMembers","locationCache","workingPath","workingTextWidth","x4","y4","perpDistance2","xab","yab","llab","xac","yac","fcAB","xbc","ybc","crossProduct","x12","y12","x34","y34","ll12","ll34","dist2","totalPathLen","positionOnPath","textWidth","getPointAtLength","pCenter","pt0","ptTotal","pMin","pTotal","getTotalLength","pMax","getDistToPlot","pt","distToPlot","isClosed","coord","diff","pathLength","tolerance","iterationLimit","ContentPackRevisions","contentPackRevision","contentPack","revisions","latestRevision","toBuilder","ContentPacksActions","ContentPacksStore","content_pack_revisions","constraints_result","contentPackRevisions","selectedVersion","content_pack","contentPacks","content_packs","contentPackMetadata","content_packs_metadata","installations","uninstallEntities","isFunction","isImmutable","_isEqual","isEqualWith","isValidElement","isEqual","isDeepEqual","StreamsActions","listStreams","removeOutput","addOutput","SLICE$0","createClass","superClass","Iterable","isIterable","Seq","KeyedIterable","isKeyed","KeyedSeq","IndexedIterable","isIndexed","IndexedSeq","SetIterable","isAssociative","SetSeq","maybeIterable","IS_ITERABLE_SENTINEL","maybeKeyed","IS_KEYED_SENTINEL","maybeIndexed","IS_INDEXED_SENTINEL","maybeAssociative","isOrdered","maybeOrdered","IS_ORDERED_SENTINEL","Keyed","Indexed","DELETE","SHIFT","SIZE","MASK","NOT_SET","CHANGE_LENGTH","DID_ALTER","MakeRef","ref","SetRef","OwnerID","arrCopy","newArr","ii","ensureSize","iter","__iterate","returnTrue","wrapIndex","uint32Index","wholeSlice","begin","resolveBegin","resolveIndex","resolveEnd","defaultIndex","ITERATE_KEYS","ITERATE_VALUES","ITERATE_ENTRIES","REAL_ITERATOR_SYMBOL","iterator","FAUX_ITERATOR_SYMBOL","ITERATOR_SYMBOL","Iterator","iteratorValue","iteratorResult","iteratorDone","hasIterator","getIteratorFn","isIterator","maybeIterator","getIterator","iterable","iteratorFn","isArrayLike","emptySequence","toSeq","seqFromValue","toKeyedSeq","fromEntrySeq","keyedSeqFromValue","entrySeq","toIndexedSeq","indexedSeqFromValue","toSetSeq","KEYS","VALUES","ENTRIES","toSource","__toString","cacheResult","_cache","__iterateUncached","toArray","seqIterate","__iterator","seqIterator","isSeq","EMPTY_SEQ","EMPTY_REPEAT","EMPTY_RANGE","IS_SEQ_SENTINEL","ArraySeq","_array","ObjectSeq","_object","_keys","IterableSeq","_iterable","IteratorSeq","_iterator","_iteratorCache","maybeSeq","seq","maybeIndexedSeqFromValue","useKeys","maxIndex","__iteratorUncached","fromJS","fromJSWith","fromJSDefault","parentJSON","isPlainObj","toMap","valueA","valueB","deepEqual","__hash","notAssociative","flipped","allEqual","bSize","Repeat","invariant","Range","_start","_end","_step","Collection","KeyedCollection","IndexedCollection","SetCollection","notSetValue","iterations","searchValue","this$0","possibleIndex","offsetValue","imul","smi","i32","STRING_HASH_CACHE_MIN_STRLEN","cachedHashString","hashString","hashCode","hashJSObj","stringHashCache","STRING_HASH_CACHE_SIZE","STRING_HASH_CACHE_MAX_SIZE","usingWeakMap","weakMap","UID_HASH_KEY","canDefineProperty","propertyIsEnumerable","getIENodeHash","objHashUID","isExtensible","uniqueID","WeakMap","assertNotInfinite","emptyMap","isMap","withMutations","maybeMap","IS_MAP_SENTINEL","_root","updateMap","setIn","keyPath","updateIn","deleteIn","updater","updatedValue","updateInDeepMap","forceIterator","__ownerID","__altered","mergeIntoMapWith","mergeWith","merger","mergeIn","iters","mergeDeep","deepMerger","mergeDeepWith","deepMergerWith","mergeDeepIn","OrderedMap","sortFactory","sortBy","mutable","asMutable","wasAltered","__ensureOwner","asImmutable","MapIterator","iterate","ownerID","makeMap","EMPTY_MAP","MapPrototype","ArrayMapNode","BitmapIndexedNode","bitmap","HashArrayMapNode","HashCollisionNode","keyHash","ValueNode","_type","_reverse","_stack","mapIteratorFrame","mapIteratorValue","__prev","newRoot","newSize","didChangeSize","didAlter","updateNode","isLeafNode","mergeIntoNode","newNode","idx1","idx2","createNodes","packNodes","excluding","packedII","packedNodes","bit","expandNodes","including","expandedNodes","iterables","mergeIntoCollectionWith","nextValue","collection","mergeIntoMap","keyPathIter","isNotSet","existingValue","nextExisting","nextUpdated","popCount","canEdit","newArray","spliceIn","newLen","spliceOut","removeIn","removed","exists","MAX_ARRAY_MAP_SIZE","isEditable","newEntries","keyHashFrag","MAX_BITMAP_INDEXED_SIZE","newBitmap","newNodes","newCount","MIN_HASH_ARRAY_MAP_SIZE","keyMatch","subNode","emptyList","isList","makeList","VNode","setSize","maybeList","IS_LIST_SENTINEL","listNodeFor","_origin","updateList","_capacity","_level","_tail","oldSize","setListBounds","mergeIntoListWith","iterateList","DONE","ListPrototype","removeBefore","level","originIndex","newChild","removingFirst","oldChild","editableVNode","removeAfter","sizeIndex","EMPTY_LIST","EMPTY_ORDERED_MAP","tailPos","getTailOffset","tail","iterateNodeOrLeaf","iterateLeaf","iterateNode","capacity","newTail","updateVNode","nodeHas","lowerNode","newLowerNode","rawIndex","owner","oldOrigin","oldCapacity","newOrigin","newCapacity","newLevel","offsetShift","oldTailOffset","newTailOffset","oldTail","beginIndex","maxSize","emptyOrderedMap","isOrderedMap","maybeOrderedMap","makeOrderedMap","omap","_map","_list","updateOrderedMap","newMap","newList","flip","ToKeyedSequence","_iter","_useKeys","ToIndexedSequence","ToSetSequence","FromEntriesSequence","flipFactory","flipSequence","makeSequence","reversedSequence","cacheResultThrough","mapFactory","mappedSequence","reverseFactory","filterFactory","predicate","filterSequence","countByFactory","grouper","groupByFactory","isKeyedIter","iterableClass","reify","sliceFactory","originalSize","resolvedBegin","resolvedEnd","sliceSize","resolvedSize","sliceSeq","isSkipping","takeWhileFactory","takeSequence","iterating","skipWhileFactory","skipSequence","skipping","concatFactory","isKeyedIterable","concatSeq","flatten","flattenFactory","flatSequence","stopped","flatDeep","currentDepth","flatMapFactory","interposeFactory","separator","interposedSequence","defaultComparator","maxFactory","maxCompare","comp","zipWithFactory","keyIter","zipper","zipSequence","iterators","isDone","validateEntry","resolveSize","Record","defaultValues","hasInitialized","RecordType","setProps","RecordTypePrototype","_defaultValues","RecordPrototype","valueSeq","indexedIterable","recordName","defaultVal","_empty","makeRecord","likeRecord","record","getPrototypeOf","setProp","emptySet","isSet","maybeSet","IS_SET_SENTINEL","fromKeys","updateSet","union","originalSet","subtract","OrderedSet","__make","EMPTY_SET","SetPrototype","__empty","makeSet","emptyOrderedSet","isOrderedSet","maybeOrderedSet","EMPTY_ORDERED_SET","OrderedSetPrototype","makeOrderedSet","Stack","emptyStack","isStack","unshiftAll","maybeStack","IS_STACK_SENTINEL","_head","peek","makeStack","pushAll","EMPTY_STACK","StackPrototype","mixin","keyCopier","getOwnPropertySymbols","__toJS","toOrderedMap","toOrderedSet","toStack","__toStringMapper","returnValue","findEntry","sideEffect","joined","isFirst","reducer","initialReduction","reduction","useFirst","reduceRight","reversed","not","butLast","isEmpty","countBy","entriesSequence","entryMapper","filterNot","findKey","findLast","findLastEntry","findLastKey","flatMap","searchKey","getIn","searchKeyPath","nested","hasIn","isSubset","isSuperset","keyOf","keyMapper","last","lastKeyOf","maxBy","neg","defaultNegComparator","minBy","amount","skipLast","skipWhile","skipUntil","take","takeLast","takeWhile","takeUntil","hashIterable","IterablePrototype","quoteString","chain","mapEntries","mapKeys","KeyedIterablePrototype","defaultZipper","ordered","keyed","murmurHashOfSize","hashMerge","findIndex","removeNum","numArgs","spliced","findLastIndex","interpose","interleave","zipped","interleaved","zipWith","base64map","rotl","rotr","randomBytes","words","hexToBytes","bytesToBase64","triplet","imod4","idRegex","attrRegex","xAxisMatch","yAxisMatch","AX_ID_PATTERN","AX_NAME_PATTERN","SUBPLOT_PATTERN","HOUR_PATTERN","WEEKDAY_PATTERN","MINDRAG","MINSELECT","MINZOOM","DRAGGERSIZE","BENDPX","REDRAWDELAY","SELECTDELAY","SELECTID","DFLTRANGEX","DFLTRANGEY","traceLayerClasses","clipOnAxisFalseQuery","layerValue2layerClass","b12","b20","b21","b22","SearchError","backtrace","query_id","search_type_id","_state","_findMessages","results","searchTypes","searchType","QueryResult","queryResult","execution_stats","effective_timerange","errors","effectiveTimerange","mapValues","search_types","typeDefinition","handler","convert","ResultWindowLimitError","resultWindowLimit","result_window_limit","_extendDescription","queryId","_resultWindowLimit","_getPageSizeFromResult","validPages","validPagesMessage","SearchResult","_results","_errors","isResultWindowLimitErrorResponse","compact","searchTypeResults","updatedResult","searchTypeResult","searchQuery","_getQueryBySearchTypeId","searchTypeIds","relatedQuery","_getSearchTypeFromQuery","_filterFailedSearchTypes","roundingError","lessThan","lessOrEqual","greaterThan","greaterOrEqual","linelow","binSize","valsIn","unitMinDiff","vals","minDiff","preV","errDiff","newVals","low","high","dlow","dhigh","rounded","sortFn","notOrdered","notReversed","pairOrder","ind","GettingStartedActions","GettingStartedStore","getStatus","dismiss","ClusterTrafficActions","ClusterTrafficStore","traffic","Constraint","fromServer","constraintValues","getValueFromData","dataValueIsParameter","default_value","isEntity","eye","z1","eyex","eyey","eyez","upx","upy","upz","centerx","centery","centerz","GrokPatternsStore","loadPatterns","patterns","pattern1","pattern2","localeCompare","testPattern","pattern","errCallback","requestPatternTest","grok_pattern","sampleData","errorBody","savePattern","requestPattern","deletePattern","bulkImport","replaceAll","validation_errors","SingleNodeStore","_getNodeInfo","EventsActions","EventsStore","events","totalEvents","eventsUrl","total_events","define","_dereq_","1","SomePromiseArray","_SomePromiseArray","any","setHowMany","setUnwrap","2","firstLineError","Queue","Async","_customScheduler","_isTickUsed","_lateQueue","_normalQueue","_haveDrainedQueues","drainQueues","_drainQueues","_schedule","_drainQueue","_drainQueueStep","_settlePromises","receiver","setScheduler","hasCustomScheduler","haveItemsQueued","fatalError","isNode","stderr","throwLater","invokeLater","_queueTick","invoke","settlePromises","_pushOne","_reset","3","INTERNAL","tryConvertToPromise","calledBind","rejectThis","_reject","targetRejected","promiseRejectionQueued","bindingPromise","_then","bindingResolved","thisArg","_bitField","_resolveCallback","bindingRejected","_propagateFrom","propagateFromFunction","_boundValue","boundValueFunction","maybePromise","_target","_setBoundTo","_setOnCancel","_boundTo","_isBound","4","old","bluebird","5","callerCache","canEvaluate","caller","methodName","classString","ensureMethod","namedGetter","indexedGetter","isIdentifier","propertyName","maybeGetter","getGetter","6","PromiseArray","apiRejection","tryCatch","errorObj","async","_async","cancellation","_warn","_isCancellable","_cancelBy","_isFollowing","_followee","_cancelBranched","_cancellationParent","_setWillBeCancelled","_branchHasCancelled","_branchesRemainingToCancel","_enoughBranchesHaveCancelled","canceller","_invokeOnCancel","_cancel","_setCancelled","_cancelPromises","_unsetOnCancel","_onCancelField","isPending","_isCancelled","isCancellable","_doInvokeOnCancel","onCancelCallback","internalOnly","_attachExtraTrace","_resultCancelled","_onCancel","_invokeInternalOnCancel","7","NEXT_FILTER","getKeys","instances","boundTo","predicateLoop","matchesPredicate","isObject","8","longStackTraces","contextStack","Context","_trace","CapturedTrace","peekContext","_promiseCreated","_pushContext","_popContext","_peekContext","deactivateLongStackTraces","activateLongStackTraces","Promise_pushContext","Promise_popContext","Promise_PeekContext","Promise_peekContext","Promise_promiseCreated","ctx","9","enableAsyncHooks","disableAsyncHooks","unhandledRejectionHandled","possiblyUnhandledRejection","printWarning","deferUnhandledRejectionCheck","Warning","es5","canAttachTrace","bluebirdFramePattern","nodeFramePattern","parseLinePattern","stackFramePattern","formatStack","indentStackFrames","debugging","env","warnings","wForgottenReturn","unhandledRejectionCheck","_notifyUnhandledRejection","unhandledRejectionClear","suppressUnhandledRejections","_ensurePossibleRejectionHandled","_setRejectionIsUnhandled","_notifyUnhandledRejectionIsHandled","fireRejectionEvent","_setReturnedNonUndefined","_returnedNonUndefined","_isRejectionUnhandled","reason","_settledValue","_setUnhandledRejectionIsNotified","_unsetUnhandledRejectionIsNotified","_isUnhandledRejectionNotified","_unsetRejectionIsUnhandled","shouldUseOwnTrace","onPossiblyUnhandledRejection","_getContext","contextBind","onUnhandledRejectionHandled","disableLongStackTraces","longStackTracesIsSupported","Promise_captureStackTrace","_captureStackTrace","Promise_attachExtraTrace","Promise_dereferenceTrace","_dereferenceTrace","longStackTracesCaptureStackTrace","longStackTracesAttachExtraTrace","longStackTracesDereferenceTrace","hasLongStackTraces","legacyHandlers","unhandledrejection","onunhandledrejection","rejectionhandled","onrejectionhandled","fireDomEvent","legacy","dispatchEvent","CustomEvent","domEvent","cancelable","Event","createEvent","initCustomEvent","fireGlobalEvent","emit","generatePromiseLifecycleEventObject","eventToObjectGenerator","promiseCreated","promiseFulfilled","promiseRejected","promiseResolved","promiseCancelled","promiseChained","unhandledRejection","rejectionHandled","activeFireEvent","globalEventFired","domEventFired","defaultFireEvent","cancellationExecute","executor","onCancel","_attachCancellationCallback","cancellationAttachCancellationCallback","previousOnCancel","cancellationOnCancel","cancellationSetOnCancel","cancellationClearCancellationData","cancellationPropagateFrom","branchesRemainingToCancel","warningsOption","_clearCancellationData","_execute","monitoring","_fireEvent","nodeSupportsAsyncResource","asyncHooks","cur","isFulfilled","ignoreSelf","_parent","attachExtraTrace","__stackCleaned__","parseStackAndMessage","notEnumerableProp","formatAndLogError","cleanStack","isTraceLine","isInternalFrame","shouldIgnore","stackFramesAsArray","isSoft","localHandler","localEventFired","formatNonError","maxChars","snip","captureStackTrace","parseLineInfoRegex","parseLineInfo","fileName","_promisesCreated","uncycle","inherits","stackToIndex","cycleEdgeNode","currentChildLength","stacks","currentLastIndex","currentLastLine","commonRootMeetPoint","removeCommonRoots","removeDuplicateOrEmptyJumps","reconstructStack","v8stackFramePattern","v8stackFormatter","stackTraceLimit","ignoreUntil","hasStackAfterThrow","isTTY","checkForgottenReturns","handlerLine","creatorLine","traceLines","lineMatches","firstUserLine","setBounds","lastLineError","firstFileName","lastFileName","firstStackLines","lastStackLines","firstIndex","deprecated","replacement","10","returner","thrower","thenReturn","thenThrow","catchThrow","_reason","caught","catchReturn","11","PromiseReduce","PromiseAll","promiseAllThis","mapSeries","12","_TypeError","_RangeError","Objectfreeze","freeze","subError","nameProperty","defaultMessage","SubError","CancellationError","TimeoutError","AggregateError","OperationalError","cause","indent","errorTypes","RejectionError","13","isES5","getDescriptor","getOwnPropertyDescriptor","getOwnPropertyNames","propertyIsWritable","proto","ObjectKeys","desc","14","PromiseMap","15","catchFilter","PassThroughHandlerContext","called","cancelPromise","FinallyHandlerCancelReaction","finallyHandler","checkCancel","succeed","fail","reasonOrValue","isFinallyHandler","isRejected","_passThrough","lastly","tap","tapCatch","handlerOrPredicate","catchInstances","16","Proxyable","yieldHandlers","PromiseSpawn","generatorFunction","yieldHandler","internal","_finallyPromise","_generatorFunction","_receiver","_generator","_yieldHandlers","_yieldedPromise","_cancellationPhase","_isResolved","_cleanup","_fulfill","_promiseCancelled","coroutine","returnSentinel","_continue","_promiseFulfilled","_promiseRejected","_run","_rejectCallback","traceParent","promiseFromYieldHandler","bitField","_proxy","PromiseSpawn$","generator","spawn","addYieldHandler","17","spread","18","MappingPromiseArray","_filter","constructor$","_callback","_preservedValues","_limit","_inFlight","_queue","_asyncInit","concurrency","_init$","_init","_values","preservedValues","_totalResolved","_resolve","booleans","19","_resolveFromSyncValue","attempt","20","maybeWrapAsError","rErrorKey","wrapAsOperationalError","isUntypedError","markAsOriginatingFromRejection","multiArgs","wrapped","21","spreadAdapter","nodeback","successAdapter","errorAdapter","newReason","asCallback","nodeify","adapter","22","makeSelfResolutionError","reflectHandler","PromiseInspection","UNDEFINED_BINDING","setReflectHandler","getDomain","getContextDomain","AsyncResource","getContextAsyncHooks","getContext","APPLY","createContext","nodebackForPromise","check","_fulfillmentHandler0","_rejectionHandler0","_promise0","_receiver0","_resolveFromExecutor","deferResolve","deferReject","fillTypes","reflect","didFulfill","didReject","_setIsFinal","fulfillmentValue","rejectionReason","originatesFromRejection","getNewLibraryCopy","fromNode","fromCallback","_isFateSealed","_setAsyncGuaranteed","cast","_setFulfilled","fulfilled","rejected","internalData","haveInternalData","settler","_settlePromiseCtx","_settlePromiseLateCancellationObserver","_addCallbacks","_setLength","_setRejected","_setFollowing","_isFinal","_unsetCancelled","_setNoAsyncGuarantee","_receiverAt","_promiseAt","_fulfillmentHandlerAt","_rejectionHandlerAt","_migrateCallback0","follower","fulfill","_migrateCallbackAt","proxyable","shouldBind","_setFollowee","synchronous","ignoreNonErrorWarnings","ensureErrorObject","hasStack","_settlePromiseFromHandler","_settlePromise","isPromise","asyncGuaranteed","_settlePromise0","_clearCallbackDataAtIndex","_fulfillPromises","_rejectPromises","defer","pending","toFastProperties","23","resolveValueIfEmpty","asArray","_iterate","_resolveEmptyArray","toResolutionValue","getActualLength","shouldCopyValues","isResolved","24","THIS","withAppended","defaultPromisified","__isPromisified__","noCopyPropsPattern","defaultFilter","propsFilter","isPromisified","hasPromisified","getDataPropertyOrDefault","promisifiableMethods","suffixRegexp","inheritedDataKeys","passesDefaultFilter","keyWithoutAsyncSuffix","checkValid","makeNodePromisified","makeNodePromisifiedEval","__","defaultThis","promisified","promisifyAll","promisifier","promisifiedKey","promisify","copyDescriptors","isClass","25","Es6Map","mapToEntries","extractEntry","PropertiesPromiseArray","_isMap","castValue","entriesToMap","keyOffset","26","_front","_willBeOverCapacity","_checkCapacity","wrapMask","_resizeTo","srcIndex","dstIndex","arrayMove","27","race","28","ReductionPromiseArray","initialValue","_each","_fn","_initialValue","_currentCancellable","_eachValues","valueOrReason","gotAccum","accum","_gotAccum","gotValue","_eachComplete","sender","_resultCancelled$","29","div","toggleScheduled","div2","NativePromise","getNativePromise","MutationObserver","GlobalSetImmediate","setImmediate","ProcessNextTick","nextTick","isRecentNode","nativePromise","standalone","cordova","toggle","observe","disconnect","30","SettledPromiseArray","_promiseResolved","inspection","_settledValueField","allSettled","31","CANCELLATION","_howMany","_unwrap","_initialized","howMany","isArrayResolved","_canPossiblyFulfill","_getRangeError","_addFulfilled","_fulfilled","_addRejected","_checkOutcome","_rejected","32","__isCancelled","33","hasProp","doGetThen","getThen","isAnyBluebirdPromise","doThenable","34","HandleWrapper","handle","afterValue","successClear","failureClear","timeout","handleWrapper","afterTimeout","35","NULL","dispose","resources","thenable","_isDisposable","_getDisposer","_setDisposable","castPreservingDisposable","tryDispose","Disposer","_data","FunctionDisposer","maybeUnwrapDisposer","isDisposer","ResourceList","doDispose","_unsetDisposable","using","spreadArgs","disposer","reflectedResources","resultPromise","inspections","_disposer","36","tryCatchTarget","globalObject","tryCatcher","Child","Parent","T","isPrimitive","maybeError","safeToString","appendee","excludedPrototypes","isExcludedProto","visitedKeys","enumeration","thisAssignmentPattern","hasMethods","hasMethodsOtherThanConstructor","hasThisAssignmentAndStaticMethods","FakeConstructor","ic","rident","filledRange","isError","ignore","ArrayFrom","itResult","hasEnvVariables","runInAsyncScope","versions","supportsAsync","HighlightingColor","GradientColor","_color","_lower","_upper","_gradient","_scale","parsedValue","ignored","parseValue","normalizedValue","NotificationsActions","hexTable","arrayToObject","plainObjects","refs","compacted","compactQueue","decode","decoder","charset","strWithoutPlus","unescape","decodeURIComponent","encode","defaultEncoder","kind","escape","$0","isRegExp","mapped","allowPrototypes","mergeTarget","targetItem","MetricsActions","MetricsStore","globalRegistrations","metricsNames","metrics","_allResults","accumulator","_metricsToFetch","localRegistrations","metricsToFetch","metricName","_buildMetricsFromResponse","nodeMetrics","metric","full_name","metricsUpdatedAt","TimeHelper","nowInSeconds","responses","metricsErrors","addGlobal","removeGlobal","fullName","readOnly","external","sessionActive","clientAddress","lastActivity","enabled","authServiceId","authServiceUid","read_only","external_user","session_active","client_address","last_activity","auth_service_id","auth_service_uid","account_status","RulesActions","RulesStore","rules","functionDescriptors","_updateRulesState","rule","_updateFunctionDescriptors","fn1","fn2","ruleSource","ruleNames","loadFunctions","loadMetricsConfig","updateMetricsConfig","nextConfig","DeflectorActions","loadUserPreferences","User","permissions","preferences","sessionTimeoutMs","serviceAccount","grnPermissions","MS_DAY","MS_HOUR","_estimateUnit","unitMS","unitString","grn_permissions","session_timeout_ms","service_account","memo","isOldIE","Boolean","atob","getTarget","styleTarget","HTMLIFrameElement","contentDocument","stylesInDom","getIndexByIdentifier","modulesToDom","idCountMap","identifiers","css","media","sourceMap","references","addStyle","insertStyleElement","nonce","textStore","replaceText","applyToSingletonTag","cssText","cssNode","applyToTag","btoa","firstChild","singletonCounter","styleIndex","removeStyleElement","newObj","lastIdentifiers","newLastIdentifiers","InputStatesStore","inputStates","_checkInputStateChangeResponse","failedNodes","JUNK","_slicedToArray","_arrayWithHoles","_n","_d","_e","_s","_iterableToArrayLimit","_arrayLikeToArray","_unsupportedIterableToArray","_nonIterableRest","arr2","_item","cssMapping","sourceMapping","sourceURLs","sources","sourceRoot","CollectorsActions","getCollector","PipelineConnectionsActions","PipelineConnectionsStore","connections","connectToStream","connection","updatedConnection","pipeline_ids","_failUpdateCallback","connectToPipeline","reverseConnection","pipeline_id","baseTraceAttrs","colorscales","valObjectDef","validateFunction","propMock","coerceFunction","data_array","requiredOpts","otherOpts","propOut","enumerated","coerceNumber","okToCoerce","colorlist","subplotid","flaglist","vParts","vi","info_array","coercePart","twoD","dimensions","len2","vNew","vOut","arrayItems","arrayItems2D","innerItemsOnly","freeLength","attribute","propIn","valIn","dfltObj","moduleAttrs","valObj","_dataLength","marker","smoDflt","usmoDflt","mo","unselected","AlertNotificationsActions","utils","allowDots","arrayLimit","charsetSentinel","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","strictNullHandling","numberStr","parseArrayValue","parseKeys","givenKey","valuesParsed","cleanRoot","0","parseObject","normalizeParseOptions","tempObj","cleanStr","skipIndex","bracketEqualsPos","encodedVal","parseValues","AlarmCallbackHistoryStore","histories","details","isString","responseMessage","createElasticsearchQueryString","query_string","filtersForQuery","selectedStreams","streamFilters","filters","filtersToStreamSet","builder","GlobalThroughputStore","throughput","loading","updateMetrics","ExtractorTypes","COPY_INPUT","GROK","REGEX","REGEX_REPLACE","SPLIT_AND_INDEX","SUBSTRING","LOOKUP_TABLE","ConverterTypes","NUMERIC","DATE","HASH","SPLIT_AND_COUNT","IP_ANONYMIZER","SYSLOG_PRI_LEVEL","SYSLOG_PRI_FACILITY","TOKENIZER","CSV","LOWERCASE","UPPERCASE","FLEXDATE","getNewExtractorRoutes","sourceNodeId","sourceInputId","messageIndex","getReadableExtractorTypeName","getReadableConverterTypeName","converterType","getEffectiveConfiguration","defaultConfiguration","currentConfiguration","effectiveConfiguration","___CSS_LOADER_EXPORT___","$container","previousToast","toastId","toastType","$toastElement","clearOptions","getOptions","getContainer","clearToast","toastsToClear","clearContainer","removeToast","optionsOverride","notify","iconClass","iconClasses","containerId","addClass","appendTo","createContainer","hideMethod","hideEasing","complete","publish","shouldExit","intervalId","$titleElement","$messageElement","$progressElement","$closeElement","hideEta","maxHideTime","startTime","toastClass","titleClass","setTitle","messageClass","setMessage","closeClass","prepend","progressClass","rtl","newestOnTop","ariaValue","setAria","hide","showMethod","showEasing","onShown","hideToast","updateProgress","closeOnHover","hover","stickAround","delayedHideToast","tapToDismiss","stopPropagation","cancelBubble","onCloseClick","override","closeMethod","closeDuration","closeEasing","onHidden","endTime","percentage","NotificationsStore","listCompleted","deleteCompleted","__vendor","InputsStore","inputs","showError","inputTitle","inputsAsMap","inputsList","inputsMap","LookupTableCachesActions","LookupTableCachesStore","caches","validationErrors","_errorHandler","idOrName","byteToHex","bth","axesAttrs","thickness","xpad","ypad","outlinecolor","linecolor","outlinewidth","linewidth","borderwidth","nticks","tickvals","ticktext","showticklabels","tickfont","tickangle","tickformat","tickformatstops","tickprefix","showtickprefix","ticksuffix","showticksuffix","exponentformat","minexponent","showexponent","side","titleside","IndexRangesStore","indexRanges","StreamsStore","newPage","newPerPage","newQuery","outputs","DecoratorsActions","DecoratorsStore","decorators","createCompleted","removeCompleted","updateCompleted","colorbarAttrs","palettes","paletteStr","colorAttrFull","onlyIfNumerical","noScale","colorscaleDflt","contextHead","effectDesc","autoFull","minFull","maxFull","minmaxFull","autoImpliedEdits","minmaxImpliedEdits","impliedEdits","autoColorDflt","reversescale","showscale","FILTERED_FIELDS","minVal","maxVal","_sync","colorEditType","b64","lens","getLens","validLen","placeHoldersLen","tmp","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","maxChunkLength","encodeChunk","num","destUrl","addSearch","supplier","singletons","rowLength","colLength","maxlen","zlen","yTranspose","xyz","at","xys","SidecarsStore","sidecars","onlyActive","only_active","collector","restart","toConfigurationAssignmentDto","collector_id","configuration_id","configurations","sidecar","assignments","assignment","helpers","supplyLayoutDefaults","handleDefaults","crossTraceDefaults","calc","getScale","extractScale","flipScale","makeColorScaleFunc","makeColorScaleFuncFromTrace","getRandomValues","crypto","msCrypto","rnds8","rnds","baseObj","keyName","valueName","baseProp","changeTypes","indexLookup","isSimpleValueProp","changeType","rename","newName","constructUpdate","LookupTablesActions","getErrors","purgeKey","purgeAll","CollectorsStore","collectors","paginatedCollectors","_fetchCollectors","service_type","executable_path","default_template","FUNC_ERROR_TEXT","HASH_UNDEFINED","PLACEHOLDER","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","INFINITY","MAX_SAFE_INTEGER","NAN","MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reForbiddenIdentifierChars","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsComboRange","rsComboMarksRange","rsDingbatRange","rsLowerRange","rsUpperRange","rsVarRange","rsBreakRange","rsMathOpRange","rsApos","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsOptVar","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","freeParseInt","freeGlobal","freeSelf","freeExports","freeModule","moduleExports","freeProcess","nodeUtil","require","nodeIsArrayBuffer","isArrayBuffer","nodeIsDate","nodeIsMap","nodeIsRegExp","nodeIsSet","nodeIsTypedArray","arrayAggregator","iteratee","arrayEach","arrayEachRight","arrayEvery","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","arrayMap","arrayPush","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","baseFindKey","eachFunc","baseFindIndex","fromIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","basePropertyOf","baseReduce","baseTimes","baseTrim","trimmedEndIndex","baseUnary","baseValues","cacheHas","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","countHolders","placeholder","deburrLetter","escapeHtmlChar","escapeStringChar","chr","hasUnicode","mapToArray","overArg","replaceHolders","setToArray","setToPairs","stringSize","unicodeSize","stringToArray","unicodeToArray","asciiToArray","unescapeHtmlChar","runInContext","arrayProto","funcProto","objectProto","coreJsData","funcToString","idCounter","maskSrcKey","IE_PROTO","nativeObjectToString","objectCtorString","oldDash","reIsNative","getPrototype","objectCreate","spreadableSymbol","isConcatSpreadable","symIterator","symToStringTag","getNative","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","nativeIsBuffer","nativeIsFinite","nativeJoin","nativeKeys","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","nativeReverse","nativeCreate","metaMap","realNames","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","symbolToString","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","Hash","ListCache","MapCache","SetCache","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","eq","baseAssignValue","assignValue","objValue","assocIndexOf","baseAggregator","baseEach","baseAssign","copyObject","baseAt","baseClone","bitmask","customizer","isDeep","isFlat","isFull","initCloneArray","tag","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","getSymbols","copySymbols","Ctor","cloneArrayBuffer","dataView","cloneDataView","cloneTypedArray","regexp","cloneRegExp","initCloneByTag","stacked","subValue","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","wait","baseDifference","isCommon","valuesLength","outer","valuesIndex","templateSettings","getMapData","LARGE_ARRAY_SIZE","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","isSymbol","baseFlatten","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","baseGet","castPath","toKey","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","isOwn","unmasked","getRawTag","objectToString","baseGt","baseHas","baseHasIn","baseIntersection","othLength","othIndex","baseInvoke","baseIsArguments","baseIsEqual","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","isPartial","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","objStacked","othStacked","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsMatch","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","baseIsNative","baseIteratee","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","getMatchData","matchesStrictComparable","isKey","isStrictComparable","baseMerge","mergeFunc","safeGet","isTyped","isArrayLikeObject","toPlainObject","baseMergeDeep","baseNth","baseOrderBy","iteratees","getIteratee","comparer","baseSortBy","objCriteria","criteria","othCriteria","ordersLength","compareAscending","compareMultiple","basePickBy","baseSet","basePullAll","basePullAt","baseUnset","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","baseSetData","baseSetToString","constant","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","baseWhile","isDrop","baseWrapperValue","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","castSlice","arrayBuffer","typedArray","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","guard","isIterateeCall","createCaseFirst","trailing","createCompounder","deburr","createCtor","thisBinding","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","thru","wrapper","getFuncName","funcName","getData","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","newHolders","createRecurry","reorder","createInverter","toIteratee","baseInverter","createMathOperation","operator","createOver","arrayFunc","createPadding","chars","charsLength","toFinite","baseRange","createRelationalOperation","toNumber","wrapFunc","isCurry","newData","setData","setWrapToString","createRound","toInteger","pair","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","mergeData","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrStacked","arrValue","otherFunc","getValue","stubArray","hasPath","hasFunc","isLength","ctorString","isMaskable","stubFalse","otherArgs","oldArray","shortOut","reference","insertWrapDetails","updateWrapDetails","getWrapDetails","lastCalled","stamp","rand","memoize","memoizeCapped","quote","subString","difference","differenceBy","differenceWith","intersectionBy","intersectionWith","pullAll","pullAt","unionBy","unionWith","unzip","unzipWith","without","xor","xorBy","xorWith","interceptor","wrapperAt","forEachRight","invokeMap","keyBy","bindKey","WRAP_BIND_FLAG","debounce","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","resolver","memoized","Cache","negate","overArgs","funcsLength","partial","partialRight","rearg","gt","gte","isInteger","isNumber","lt","lte","iteratorToArray","remainder","toLength","isBinary","assignIn","assignInWith","assignWith","propsIndex","propsLength","defaultsDeep","invertBy","CLONE_DEEP_FLAG","basePick","pickBy","toPairs","toPairsIn","camelCase","word","capitalize","upperFirst","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","hasUnicodeWord","unicodeWords","asciiWords","bindAll","methodNames","flow","flowRight","methodOf","over","overEvery","overSome","basePropertyDeep","rangeRight","augend","addend","divide","dividend","divisor","multiplier","multiplicand","minuend","subtrahend","castArray","chunk","conforms","baseConforms","curry","curryRight","drop","dropRight","dropRightWhile","dropWhile","baseFill","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","fromPairs","functionsIn","initial","matchesProperty","nthArg","omitBy","once","orderBy","propertyOf","pullAllBy","pullAllWith","sampleSize","setWith","sortedUniq","sortedUniqBy","takeRight","takeRightWhile","toPath","isArrLike","unary","uniq","uniqBy","uniqWith","unset","updateWith","valuesIn","zipObject","zipObjectDeep","entriesIn","extendWith","cloneDeepWith","cloneWith","conformsTo","endsWith","escapeRegExp","forIn","forInRight","forOwn","forOwnRight","inRange","baseInRange","isBoolean","isElement","isMatch","isMatchWith","isNative","isNil","isNull","isSafeInteger","isUndefined","isWeakMap","isWeakSet","strictLastIndexOf","meanBy","stubObject","stubString","stubTrue","nth","strLength","padEnd","padStart","radix","floating","sample","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sumBy","settings","isEscaping","isEvaluating","imports","importsKeys","importsValues","reDelimiters","evaluate","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","variable","toLower","toSafeInteger","toUpper","trimEnd","trimStart","truncate","omission","newEnd","uniqueId","eachRight","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","isRight","getView","iterLength","takeCount","iterIndex","commit","prefersDarkMode","matchMedia","PREFERENCES_THEME_MODE","ROOT_FONT_SIZE","THEME_MODE_LIGHT","THEME_MODE_DARK","DEFAULT_THEME_MODE","THEME_MODES","b2","b3","LookupTableDataAdaptersStore","dataAdapter","dataAdapters","lookupResult","data_adapters","SidecarsAdministrationStore","formattedCollectors","sidecar_id","collector_ids","punycode","_URI","_urlSupplied","_baseSupplied","href","hasOwn","escapeRegEx","getType","filterArrayValues","arrayContains","arraysEqual","one","trimSlashes","escapeForDumbFirefox36","strictEncodeURIComponent","_parts","urn","port","fragment","preventInvalidHostname","duplicateQueryParameters","escapeQuerySpace","protocol_expression","idn_expression","punycode_expression","ip4_expression","ip6_expression","find_uri_expression","findUri","parens","defaultPorts","http","https","ftp","gopher","ws","wss","hostProtocols","invalid_hostname_characters","domAttributes","getDomAttribute","nodeName","iso8859","unicode","characters","expression","reserved","urnpath","encodeQuery","escaped","decodeQuery","_part","generateAccessor","_group","generateSegmentedPathFunction","_sep","_codingFuncName","_innerCodingFuncName","actualCodingFunc","generateSimpleAccessor","generatePrefixAccessor","_key","decodePath","decodeUrnPath","recodePath","recodeUrnPath","encodeReserved","parseAuthority","parseHost","bracketPos","firstColon","firstSlash","nextColon","ensureValidHostname","ensureValidPort","parseUserinfo","_string","parseQuery","splits","requireAbsolutePath","buildAuthority","buildHost","buildUserinfo","buildQuery","unique","buildQueryParameter","addQuery","removeQuery","hasQuery","withinArray","joinPaths","nonEmptySegments","normalize","commonPath","withinString","_trim","_parens","_attributeOpen","ignoreHtml","attributeOpen","parensEnd","parensMatch","parensMatchEnd","hasHostname","rejectEmptyHostname","toASCII","removeAll","unconflicted","URITemplate","deferBuild","_deferred_build","what","ip","ip4","ip6","sld","idn","_protocol","_port","_hostname","authority","host","userinfo","subdomain","tld","ReferenceError","directory","decodePathSegment","mutatedDirectory","absolute","setSearch","removeSearch","hasSearch","normalizeProtocol","normalizeQuery","normalizeFragment","normalizeHostname","normalizePort","_was_relative","_path","_pos","_leadingParents","normalizeSearch","normalizeHash","readable","toUnicode","qp","kv","basedir","resolved","relativeTo","relativeParts","baseParts","common","relativePath","basePath","parents","one_map","two_map","one_query","two_query","arrayPrefixGenerators","brackets","pushToArray","valueOrArray","toISO","defaultFormat","addQueryPrefix","encoder","encodeValuesOnly","serializeDate","skipNulls","generateArrayPrefix","objKeys","keyPrefix","normalizeStringifyOptions","arrayFormat","twoPI","aBnds","aStart","aMid","aEnd","rStart","rEnd","isCircle","largeArc","deg","rBnds","openEnded","matchBeginning","fullTail","startWithPrefix","NOTEDATA","displayLength","notifierContainer","thisText","note","killNote","thisIndex","Store","storage","localStorage","setItem","getItem","removeItem","sessionSet","sessionStorage","sessionGet","sessionDelete","handleArrayContainerDefaults","getShowAttrDflt","showAttrs","tickformatstopDefaults","valueIn","valueOut","pass","showAttrDflt","tickSuffixDflt","handlePrefixSuffix","contColor","dfltFontColor","handleOtherDefaults","LoggersStore","availableLoglevels","ReactErrorType","NotFoundErrorType","UnauthorizedErrorType","StreamPermissionErrorType","createReactError","createNotFoundError","createStreamPermissionError","createUnauthorizedError","AvailableEventDefinitionTypesActions","AlarmCallbackHistory","AlarmCallbacks","AlertConditions","AlertNotifications","Alerts","Authentication","AvailableEventDefinitionTypes","Catalog","ClusterTraffic","CodecTypes","CollectorConfigurations","Collectors","Configuration","Configurations","ConfigurationVariable","ContentPacks","Customizations","Decorators","Deflector","Enterprise","EventDefinitions","EventNotifications","Events","Extractors","GettingStarted","IndexerCluster","IndexerOverview","IndexRanges","IndexSets","Indices","IndicesConfiguration","Inputs","InputTypes","LookupTableCaches","LookupTableDataAdapters","LookupTables","Metrics","Nodes","Notifications","PipelineConnections","Pipelines","Preferences","FilterPreview","Rules","ServerAvailability","Session","Sidecars","SidecarsAdministration","Simulator","SingleNode","Streams","SystemJobs","ClusterOverview","CurrentUser","GlobalThroughput","GrokPatterns","IndexerFailures","InputStates","InputStaticFields","Journal","Outputs","Plugins","Roles","Startpage","StreamRules","System","SystemLoadBalancer","SystemMessages","SystemProcessing","UniversalSearch","Users","registerAction","registerStore","ObjectUtils","Color","constantAttrs","letterAttrs","cont2","k2","cmin","cmax","sclNew","specs","_range","sclFunc","_sclFunc","noNumericCheck","returnArray","colorArray2rbga","colorArray","colorObj","colorKey","isArrayWithOneNumber","charenc","SimulatorStore","messageFields","simulation","input_id","formattedResponse","UsersActions","createToken","loadTokens","deleteToken","loadUsers","UsersStore","tokenId","adminUser","admin_user","clickmode","dragmode","hovermode","hoverdistance","spikedistance","selectdirection","LookupTablesStore","errorStates","tables","table","lookup_tables","lookupTable","cache_id","data_adapter_id","tableNames","cacheNames","dataAdapterNames","_urlClusterWise","message_template","AlertNotificationsStore","availableNotifications","allNotifications","FilterPreviewStore","searchJob","resourceUrl","searchRequest","newSearch","trackJobStatus","job","Bluebird","execution","jobStatus","run","executionState","trackJob","executePromise","isSlowBuffer","newVal","DeflectorStore","deflector","adjoint","rotateX","rotateY","rotateZ","fromRotation","fromRotationTranslation","fromScaling","fromTranslation","fromXRotation","fromYRotation","fromZRotation","fromQuat","frustum","perspective","perspectiveFromFieldOfView","ortho","lookAt","rng","bytesToUuid","_extend","keepAllKeys","noArrayCopies","copyIsArray","primitivesLoopSplice","CollectorConfigurationsStore","paginatedConfigurations","_fetchConfigurations","baseUrl","_fetchUploads","requestTemplate","fillcolor","fillrule","drawdirection","maxInt","regexPunycode","regexNonASCII","regexSeparators","stringFromCharCode","mapDomain","ucs2decode","extra","ucs2encode","digitToBasic","digit","flag","adapt","numPoints","firstTime","baseMinusTMin","basic","oldi","baseMinusT","inputLength","bias","handledCPCount","basicLength","currentValue","handledCPCountPlusOne","qMinusT","trimLeft","trimRight","tinyCounter","mathRound","mathMin","mathMax","mathRandom","named","matchers","hsla","hsv","hsva","hex8","parseIntFromHex","convertHexToDecimal","hex6","hex4","hex3","stringInputToObject","isValidCSSUnit","bound01","convertToPercentage","hsvToRgb","hue2rgb","hslToRgb","boundAlpha","inputToRGB","_originalInput","_r","_g","_b","_a","_roundA","_format","_gradientType","gradientType","_ok","_tc_id","rgbToHsl","rgbToHsv","rgbToHex","allow3Char","pad2","rgbaToArgbHex","convertDecimalToHex","desaturate","toHsl","clamp01","saturate","greyscale","brighten","spin","hue","complement","triad","tetrad","splitcomplement","analogous","slices","monochromatic","toHsv","modification","getBrightness","isLight","getOriginalInput","getFormat","getLuminance","RsRGB","GsRGB","BsRGB","setAlpha","toHsvString","toHslString","toHex8","allow4Char","rgbaToHex","toHex8String","toPercentageRgb","toPercentageRgbString","toName","hexNames","toFilter","secondColor","hex8String","secondHex8String","formatSet","formattedString","hasAlpha","_applyModification","_applyCombination","fromRatio","newColor","color1","color2","mix","rgb1","rgb2","readability","isReadable","wcag2","wcag2Parms","parms","validateWCAG2Parms","mostReadable","baseColor","colorList","includeFallbackColors","bestColor","bestScore","burntsienna","isOnePointZero","processPercent","isPercentage","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","allBlankCharCodes","original","convertPreferences","convertedPreferences","PreferencesStore","userName","displaySuccessNotification","AvailableEventDefinitionTypesStore","entityTypes","validatingSession","getSessionInfo","session_id","_removeSession","_validateSession","is_valid","loginCompleted","HOUR","DAY_OF_WEEK","standoff","autorange","rangemode","fixedrange","scaleanchor","scaleratio","constraintoward","rangebreaks","dvalue","tickson","ticklabelmode","mirror","automargin","showspikes","spikecolor","spikethickness","spikedash","spikemode","spikesnap","dtickrange","hoverformat","showline","showgrid","gridcolor","gridwidth","zeroline","zerolinecolor","zerolinewidth","showdividers","dividercolor","dividerwidth","anchor","overlaying","categoryorder","categoryarray","autotick"],"mappings":"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,QACTE,KAAM,QACND,KAAM/iB,EAAW/O,WACjB4xB,SAAU,OACVI,YAAa,oEAEjB01B,aAAc,CAGV71B,QAAS,QACTE,KAAM,QACND,KAAM/iB,EAAW/O,WACjB4xB,SAAU,cACVI,YAAa,CACT,2EACF9gE,KAAK,MAEXy2F,gBAAiB,CACb91B,QAAS,aACT5oF,OAAQ,CAAC,gBAAiB,UAC1B6oF,KAAM,gBACNC,KAAM,OACNH,SAAU,OACVI,YAAa,CACT,8EACA,8DACA,8DACA,kFACF9gE,KAAK,MAEXywD,WAAY,CACRkQ,QAAS,SACTE,KAAM,QACNH,SAAU,OACVI,YAAa,CACT,4CACA,2DACA,0DACA,yCACF9gE,KAAK,MAEX02F,YAAa,CACT/1B,QAAS,UACTE,KAAM,OACND,MAAM,EACNF,SAAU,OACVI,YAAa,CACT,kEACA,kDACA,iEACA,iGACF9gE,KAAK,MAEXqkF,WAAY,CAGR1jB,QAAS,UACTE,KAAM,OACNH,SAAU,SACVI,YAAa,CACT,+CACA,kEACA,iEACA,2CACA,6DACF9gE,KAAK,MAEX22F,SAAU,CACNh2B,QAAS,YACTC,KAAM/iB,EAAWC,SACjB+iB,KAAM,QACNH,SAAU,OACVI,YAAa,kCAEjB81B,aAAc,CACVj2B,QAAS,MACTE,KAAM,OACNH,SAAU,OACVI,YAAa,CACT,yDACA,+DACA,gEACA,sBACA,+DACA,yDACA,8DACF9gE,KAAK,MAEXilF,WAAY,CACRtkB,QAAS,MACTE,KAAM,OACNH,SAAU,OACVI,YAAa,CACT,iEACA,+DACA,oEACA,kEACA,8DACA,oEACA,qEACA,0DACA,+DACA,kEACA,mEACA,qEACA,qDACA,oEACA,sDACF9gE,KAAK,MAEX62F,aAAc,CACVl2B,QAAS,MACTE,KAAM,OACNH,SAAU,OACVI,YAAa,CACT,kEACA,yDACA,oCACF9gE,KAAK,MAEX82F,kBAAmB,CACfn2B,QAAS,MACTE,KAAM,OACNH,SAAU,OACVI,YAAa,CACT,iEACA,oBACF9gE,KAAK,MAEX+I,SAAU,CACN43D,QAAS,MACTE,KAAM,OACNH,SAAU,OACVI,YAAa,CA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ACT,8CACA,2CACF9gE,KAAK,MAEX63G,YAAa,CACTl3C,QAAS,MACTC,MAAM,EACNE,YAAa,CACT,uDACA,yBACF9gE,KAAK,MAGX83G,eAAgB,CACZn3C,QAAS,aACT5oF,OAAQ,CAAC,SAAS,GAAM,GACxB6oF,KAAM,QACNE,YAAa,CACT,wCACA,6CACA,6CACA,6DACA,8BACF9gE,KAAK,MAEX+3G,gBAAiB,CACbp3C,QAAS,UACTC,MAAM,EACNE,YAAa,CACT,sEACA,+FACA,sFACA,yEACA,sFACA,wEACA,qEACF9gE,KAAK,MAEXg4G,sBAAuB,CACnBr3C,QAAS,UACTC,MAAM,EACNE,YAAa,CACT,6EACA,8EACA,iDACF9gE,KAAK,MAEXi4G,uBAAwB,CACpBt3C,QAAS,MACTC,KAAM,GACNE,YAAa,CACT,mCACA,8DACF9gE,KAAK,MAEXk4G,oBAAqB,CACjBv3C,QAAS,MACTC,KAAM,GACNE,YAAa,CACT,2CACA,8DACF9gE,KAAK,MAEXm4G,eAAgB,CACZx3C,QAAS,MACTC,MAAM,EACNE,YAAa,CACT,wDACA,uDACA,2EACA,sDACF9gE,KAAK,MAEXo4G,qBAAsB,CAClBz3C,QAAS,MACTC,KAAM,GACNE,YAAa,CACT,yDACA,0DACA,wCACF9gE,KAAK,MAEXq4G,YAAa,CACT13C,QAAS,UACTC,MAAM,EACNE,YAAa,CACT,yDACA,+BACF9gE,KAAK,MAEXs4G,UAAW,CACP33C,QAAS,UACTC,MAAM,EACNE,YAAa,gDAGjBy3C,iBAAkB,CACd53C,QAAS,SACTC,KAAM,EACNppF,IAAK,EACLE,IAAK,EACLopF,YAAa,CACT,iDACA,2DACA,4BACF9gE,KAAK,MAGXw4G,cAAe,CACX73C,QAAS,MACTC,KAAM,cACNE,YAAa,CACT,uEACA,4BACA,gFACA,4BACA,6EACF9gE,KAAK,MAGXy4G,YAAa,CACT93C,QAAS,SACTkkB,SAAS,EACTjkB,KAAM,uBACNE,YAAa,CACT,8CACA,+DACA,mCACA,qCACA,0DACA,wCACF9gE,KAAK,MAGX04G,kBAAmB,CACf/3C,QAAS,SACTC,KAAM,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A4iG,cACAnwH,WACAuwH,iBACAH,cACArgD,QACAk+C,WACAC,WACAmC,mBACApmG,YACAkkG,gBACAC,gBACAC,eACArsE,gBACAsuE,sB,oBAuDJ,WAAmB,MAsBbhwL,KAAKs5F,OApBP93F,EAFe,EAEfA,GACAg3G,EAHe,EAGfA,SACAk1E,EAJe,EAIfA,SACA7gG,EALe,EAKfA,UACAE,EANe,EAMfA,SACAE,EAPe,EAOfA,MACAgjG,EARe,EAQfA,eACAJ,EATe,EASfA,YACAnwH,EAVe,EAUfA,SACAowH,EAXe,EAWfA,YACArgD,EAZe,EAYfA,MACAk+C,EAbe,EAafA,SACAC,EAde,EAcfA,SACAmC,EAfe,EAefA,iBACApmG,EAhBe,EAgBfA,UACAkkG,EAjBe,EAiBfA,cACAC,EAlBe,EAkBfA,cACAC,EAnBe,EAmBfA,aACArsE,EApBe,EAoBfA,cACAsuE,EArBe,EAqBfA,eAGF,MAAO,CACLxuL,KACAg3G,WACA00E,UAAWQ,EACX9gG,WAAYC,EACZC,UAAWC,EACXE,QACAsjG,gBAAiBN,EAAiBA,EAAe1/D,OAAS,GAC1Ds/D,YAAaA,EAAcA,EAAY/1C,UAAY,GACnDp6E,WACAowH,cACArgD,MAAOA,EAAQA,EAAMqK,UAAY,GACjCq0C,UAAWR,EACXC,WACA4C,mBAAoBT,EACpBpmG,YACA0kG,eAAgBR,EAChBS,eAAgBR,EAChBS,cAAeR,EACfW,eAAgBhtE,EAChB+uE,gBAAiBT,M,qBA/FrB,SACExuL,EACAg3G,EACAk1E,EACA7gG,EACAE,EACAE,EACA4iG,EACAnwH,EACAowH,EACArgD,EACAk+C,EACAC,EACAmC,EACApmG,EACAkkG,EACAC,EACAC,EACArsE,EACAsuE,EACAC,GAEA,OAAO,IAAIL,EACTpuL,EACAg3G,EACAk1E,EACA7gG,EACAE,EACAE,EACA4iG,EACAnwH,EACAowH,EACArgD,EACAk+C,EACAC,EACAmC,EACApmG,EACAkkG,EACAC,EACAC,EACArsE,EACAsuE,EACAC,K,mBAIJ,WAEE,OAAOL,EAAKj1L,OAAO,GAAI,GAAI,GAAI,GAAI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,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IACvE,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IACvE,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IACvE,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IACvE,IAAU,IAAM,IAAU,IAC1B,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IACvE,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IACvE,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IACtF,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IACtF,IAAU,IAAM,IAAU,IAC1B,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU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TE,KAAM,OACNH,SAAU,OACVlpF,IAAK,EACLopF,KAAMwC,EACNtC,YAAa,CACT,uCACA,2CACF9gE,KAAK,MAkCX0gE,SAAU,SAIdhtB,SAAU,CACNitB,QAAS,aACT5oF,OAAQ,CAAC,OAAQ,SAAU,SAC3B8oF,KAAM,OACNH,SAAU,QACVu2G,aAAc,CAACrjI,WAAOlkE,EAAWikE,WAAOjkE,GACxCoxF,YAAa,CACT,oCACA,sDACA,2DACA,sDACA,uEACA,+DACA,mCACA,6DACF9gE,KAAK,MAEXo0K,OAAQ,CACJzzG,QAAS,UACTnpF,IAAK,EACLopF,KAAM,EACNC,KAAM,QACNH,SAAU,QACVI,YAAa,CACT,iEACA,gEACA,kCACA,sDACF9gE,KAAK,MAEX4zC,MAAO,CACH+sB,QAAS,MACTE,KAAM,QACNH,SAAU,QACVu2G,aAAc,CAACvjI,SAAU,UACzBotB,YAAa,CACT,qDACA,oBACA,gFACA,+DACA,0DACA,4EACA,iFACA,gFACF9gE,KAAK,MAEX2zC,MAAO,CACHgtB,QAAS,MACTE,KAAM,QACNH,SAAU,QACVu2G,aAAc,CAACvjI,SAAU,UACzBotB,YAAa,CACT,iEACA,oFACA,6EACA,mCACA,8DACA,0DACA,+FACA,4EACA,2DACA,wFACA,gGACA,wCACA,gFACA,6DACA,6BACA,kFACA,kCACA,kGACA,oDACF9gE,KAAK,MAEXq0K,SAAU,CACN1zG,QAAS,aACTD,SAAU,QACVI,YAAa,CACT,sDACA,sDACA,yBACF9gE,KAAK,MAEXs0K,SAAU,CACN3zG,QAAS,aACTD,SAAU,QACVI,YAAa,CACT,gEACA,sDACA,yBACF9gE,KAAK,MAEX6hC,MAAO,CACH8+B,QAAS,aACT5oF,OAAQ,CAAC,UAAW,SAAU,IAC9B8oF,KAAM,QACNH,SAAU,QACVI,YAAa,CACT,6CACA,yCACA,iEACA,mBACF9gE,KAAK,MAEXy1N,QAAS,CACL90J,QAAS,aACT5oF,OAAQ,CAAC,SAAU,cACnB8oF,KAAM,OACND,KAAM,SACNF,SAAU,QACVI,YAAa,CACT,wEACA,6BACA,uEACA,2EACA,iCACF9gE,KAAK,MAEX01N,cAAe,CACX/0J,QAAS,aACT5oF,OAAQ,CAAC,UAAW,UACpB6oF,KAAM,UACNC,KAAM,OACNH,SAAU,QACVI,YAAa,CACT,+DACA,sCACA,+CACA,0EACA,kBACF9gE,KAAK,MAIX2mE,kBAAmB,CACfhG,QAAS,aACT5oF,OAAQ,CACJ,UAAW,SACX,cAAe,aACf,eAAgB,cAChB,gBAAiB,eACjB,iBAAkB,iBAEtB6oF,KAAM,UACNC,KAAM,OACNH,SAAU,OACVI,YAAa,CACT,kEACA,mBACA,oFACA,YACA,oFACA,kFACA,0DACA,kEACA,mCACF9gE,KAAK,MAEX21N,OAAQ,CACJh1J,QAAS,aACT5oF,OAAQ,EAAC,EAAM,SAAS,EAAO,MAAO,YACtC6oF,MAAM,EACNC,KAAM,QACNH,SAAU,oBACVI,YAAa,CACT,4DACA,0CACA,0CACA,qDACA,oCACA,iEACA,mDACA,gCACF9gE,KAAK,MAEX6qG,QAAS,CACLlqC,QAAS,SACTnpF,IAAK,EACLopF,KAAM,EACNC,KAAM,QACNH,SAAU,QACVI,YAAa,iCAEjBgqC,UAAW,CACPnqC,QAAS,SACTnpF,IAAK,EACLopF,KAAM,EACNC,KAAM,QACNH,SAAU,QACVI,YAAa,gCAEjBiqC,UAAW,CACPpqC,QAAS,QACTC,KAAM/iB,EAAWE,YACjB8iB,KAAM,QACNH,SAAU,QACVI,YAAa,wBAEjByzG,eAAgB,CACZ5zG,QAAS,UACTC,MAAM,EACNC,KAAM,QACNH,SAAU,QACVI,YAAa,wDAEjB80J,WAAY,CACRj1J,QAAS,UACTC,MAAM,EACNC,KAAM,QACNH,SAAU,QACVI,YAAa,CACT,oEACA,YACF9gE,KAAK,MAEX61N,WAAY,CACRl1J,QAAS,UACTC,MAAM,EACNC,KAAM,QACNH,SAAU,UACVI,YAAa,CACT,4EACA,yDACF9gE,KAAK,MAEX81N,WAAY,CACRn1J,QAAS,QACTC,KAAM,KACNC,KAAM,QACNH,SAAU,OACVI,YAAa,iEAEjBi1J,eAAgB,CACZp1J,QAAS,SACTC,KAAM,EACNC,KAAM,QACNH,SAAU,OACVI,YAAa,4CAEjBk1J,UAAWhvK,EAAW,GAAIw/C,EAAM,CAAC5lC,KAAM,OAAQF,SAAU,SACzDu1J,UAAW,CACPt1J,QAAS,WACToM,MAAO,CAAC,SAAU,SAAU,UAC5BlM,KAAM,QACND,KAAM,SACNF,SAAU,OACVI,YAAa,CACT,iDACA,sEACA,wBAEA,kEACA,uBAEA,oEACA,cACF9gE,KAAK,MAEXk2N,UAAW,CACPv1J,QAAS,aACT5oF,OAAQ,CAAC,OAAQ,SAAU,gBAC3B6oF,KAAM,OACNC,KAAM,QACNH,SAAU,OACVI,YAAa,uFAEjB0zG,SAAUp4F,EAAU,CAChB1b,SAAU,QACVI,YAAa,wBAEjB2zG,UAAW,CACP9zG,QAAS,QACTC,KAAM,OACNC,KAAM,QACNH,SAAU,QACVI,YAAa,CACT,oEACA,0DACA,eACF9gE,KAAK,MAEX40K,WAAY,CACRj0G,QAAS,SACTC,KAAM,GACNC,KAAM,QACNH,SAAU,QACVI,YAAa,6BAEjB+zG,eAAgB,CACZl0G,QAAS,aACT5oF,OAAQ,CAAC,MAAO,QAAS,OAAQ,QACjC6oF,KAAM,MACNC,KAAM,QACNH,SAAU,QACVI,YAAa,CACT,yDACA,8DACA,4DACA,wCACF9gE,KAAK,MAEX80K,WAAY,CACRn0G,QAAS,SACTC,KAAM,GACNC,KAAM,QACNH,SAAU,QACVI,YAAa,6BAEjBi0G,eAAgB,CACZp0G,QAAS,aACT5oF,OAAQ,CAAC,MAAO,QAAS,OAAQ,QACjC6oF,KAAM,MACNC,KAAM,QACNH,SAAU,QACVI,YAAa,mDAEjBo0G,aAAc,CACVv0G,QAAS,aACT5oF,OAAQ,CAAC,MAAO,QAAS,OAAQ,QACjC6oF,KAAM,MACNC,KAAM,QACNH,SAAU,QACVI,YAAa,CACT,gEACA,4DACA,0DACA,mCACF9gE,KAAK,MAEXg1K,eAAgB,CACZr0G,QAAS,aACT5oF,OAAQ,CAAC,OAAQ,IAAK,IAAK,QAAS,KAAM,KAC1C6oF,KAAM,IACNC,KAAM,QACNH,SAAU,QACVI,YAAa,CACT,uDACA,kDACA,0CACA,gBACA,gBACA,iDACA,eACA,eACF9gE,KAAK,MAEXi1K,YAAa,CACTt0G,QAAS,SACTC,KAAM,EACNppF,IAAK,EACLqpF,KAAM,QACNH,SAAU,QACVI,YAAa,CACT,uDACA,6DACF9gE,KAAK,MAEX0wD,kBAAmB,CACfiQ,QAAS,UACTC,MAAM,EACNC,KAAM,QACNH,SAAU,QACVI,YAAa,CACT,kDACF9gE,KAAK,MAEX00K,WAAY,CACR/zG,QAAS,SACTC,KAAM,GACNC,KAAM,QACNH,SAAU,QACVI,YAAa,CACT,yEACA,+DACAm+C,EACA,qBACAC,EACA,yEACA,wEACA,8CACFl/G,KAAK,MAEX20K,gBAAiB5iG,EAAe,iBAAkB,CAC9CouF,QAAS,CACLx/F,QAAS,UACTE,KAAM,OACND,MAAM,EACNF,SAAU,QACVI,YAAa,CACT,+CACA,kEACF9gE,KAAK,MAEXm2N,WAAY,CACRx1J,QAAS,aACTE,KAAM,OACNg1C,MAAO,CACH,CAACl1C,QAAS,MAAOD,SAAU,SAC3B,CAACC,QAAS,MAAOD,SAAU,UAE/BA,SAAU,QACVI,YAAa,CACT,0DACA,+DACA,oCACF9gE,KAAK,MAEXvzB,MAAO,CACHk0F,QAAS,SACTC,KAAM,GACNC,KAAM,QACNH,SAAU,QACVI,YAAa,CACT,2EACF9gE,KAAK,MAEX0gE,SAAU,UAEd01J,YAAa,CACTz1J,QAAS,SACTC,KAAM,GACNC,KAAM,QACNH,SAAU,OACVI,YAAa,CACT,yEACA,+DACAm+C,EACA,qBACAC,EACA,yEACA,wEACA,8CACFl/G,KAAK,MAGXq2N,SAAU,CACN11J,QAAS,UACTC,MAAM,EACNC,KAAM,QACNH,SAAU,oBACVI,YAAa,CACT,iEACF9gE,KAAK,MAEXg0K,UAAW,CACPrzG,QAAS,QACTC,KAAM/iB,EAAWE,YACjB8iB,KAAM,QACNH,SAAU,cACVI,YAAa,6BAEjBozG,UAAW,CACPvzG,QAAS,SACTnpF,IAAK,EACLopF,KAAM,EACNC,KAAM,QACNH,SAAU,oBACVI,YAAa,4CAEjBw1J,SAAU,CACN31J,QAAS,UACTE,KAAM,QACNH,SAAU,QACVI,YAAa,CACT,kDACA,2DACF9gE,KAAK,MAEXu2N,UAAW,CACP51J,QAAS,QACTC,KAAM/iB,EAAWG,UACjB6iB,KAAM,QACNH,SAAU,QACVI,YAAa,qCAEjB01J,UAAW,CACP71J,QAAS,SACTnpF,IAAK,EACLopF,KAAM,EACNC,KAAM,QACNH,SAAU,QACVI,YAAa,6CAEjB21J,SAAU,CACN91J,QAAS,UACTE,KAAM,QACNH,SAAU,QACVI,YAAa,CACT,iEACA,gBACA,+DACF9gE,KAAK,MAEX02N,cAAe,CACX/1J,QAAS,QACTC,KAAM/iB,EAAWE,YACjB8iB,KAAM,QACNH,SAAU,QACVI,YAAa,yCAEjB61J,cAAe,CACXh2J,QAAS,SACTC,KAAM,EACNC,KAAM,QACNH,SAAU,QACVI,YAAa,4CAGjB81J,aAAc,CACVj2J,QAAS,UACTC,MAAM,EACNC,KAAM,QACNH,SAAU,QACVI,YAAa,CACT,iDACA,4CACA,+CACF9gE,KAAK,MAEX62N,aAAc,CACVl2J,QAAS,QACTC,KAAM/iB,EAAWE,YACjB8iB,KAAM,QACNH,SAAU,QACVI,YAAa,CACT,iCACA,+CACF9gE,KAAK,MAEX82N,aAAc,CACVn2J,QAAS,SACTC,KAAM,EACNC,KAAM,QACNH,SAAU,QACVI,YAAa,CACT,yCACA,+CACF9gE,KAAK,MAOX+2N,OAAQ,CACJp2J,QAAS,aACT5oF,OAAQ,CACJ,OACAopG,EAAU0mD,QAAQlxJ,EAAE+a,WACpByvF,EAAU0mD,QAAQ1/I,EAAEuJ,YAExBmvE,KAAM,OACNH,SAAU,OACVI,YAAa,CACT,+EACA,0CACA,sEACF9gE,KAAK,MAIXm1K,KAAM,CACFx0G,QAAS,aACT5oF,OAAQ,CAAC,MAAO,SAAU,OAAQ,SAClC8oF,KAAM,OACNH,SAAU,OACVI,YAAa,CACT,gDACA,8CACA,yBACF9gE,KAAK,MAKXg3N,WAAY,CACRr2J,QAAS,aACT5oF,OAAQ,CACJ,OACAopG,EAAU0mD,QAAQlxJ,EAAE+a,WACpByvF,EAAU0mD,QAAQ1/I,EAAEuJ,YAExBmvE,KAAM,OACNH,SAAU,OACVI,YAAa,CACT,gEACA,4EACA,QACA,+DACA,4EACA,yBACF9gE,KAAK,MAEX6vD,MAAO,CACH8Q,QAAS,aACT5oF,OAAQ,CAAC,eAAgB,gBACzB6oF,KAAM,eACNC,KAAM,OACNH,SAAU,OACVI,YAAa,CACT,kDACA,2EACA,4EACA,4BACA,uEACA,qEACF9gE,KAAK,MAEXlR,OAAQ,CACJ6xE,QAAS,aACTE,KAAM,OACNg1C,MAAO,CACH,CAACl1C,QAAS,SAAUnpF,IAAK,EAAGE,IAAK,EAAGgpF,SAAU,QAC9C,CAACC,QAAS,SAAUnpF,IAAK,EAAGE,IAAK,EAAGgpF,SAAU,SAElDE,KAAM,CAAC,EAAG,GACVF,SAAU,OACVI,YAAa,CACT,oDACF9gE,KAAK,MAEXpY,SAAU,CACN+4E,QAAS,SACTnpF,IAAK,EACLE,IAAK,EACLkpF,KAAM,EACNC,KAAM,QACNH,SAAU,OACVI,YAAa,CACT,uDACA,+BACA,oDACF9gE,KAAK,MAEXi3N,cAAe,CACXt2J,QAAS,aACT5oF,OAAQ,CACJ,QAAS,qBAAsB,sBAAuB,QACtD,kBAAmB,mBACnB,gBAAiB,iBACjB,gBAAiB,iBACjB,gBAAiB,iBACjB,iBAAkB,kBAClB,mBAAoB,qBAExB6oF,KAAM,QACNC,KAAM,OACNH,SAAU,OACVI,YAAa,CACT,sEACA,mGACA,wGACA,kDACA,0GACA,0GACA,8FACA,sGACA,iCACA,kGACF9gE,KAAK,MAEXk3N,cAAe,CACXv2J,QAAS,aACTE,KAAM,OACNH,SAAU,OACVI,YAAa,CACT,0DACA,2DACA,8BACF9gE,KAAK,MAEXilF,WAAY,CACRtkB,QAAS,MACTE,KAAM,OACNH,SAAU,OACVI,YAAa,CACT,+DACA,iEACA,oCACF9gE,KAAK,MAEX0gE,SAAU,OAEV02B,YAAa,CACT+/H,SAAU,CACNx2J,QAAS,UACTE,KAAM,OACNH,SAAU,QACVI,YAAa,CACT,YACA,+DACA,sDACF9gE,KAAK,MAEXnsB,MAAO,CACH8sF,QAAS,SACTE,KAAM,OACNH,SAAU,QACVI,YAAa,CACT,+EACA,wDACF9gE,KAAK,MAEXq3F,UAAWjb,EAAU,CACjB1b,SAAU,QACVI,YAAa,CACT,iEACA,oEACF9gE,KAAK,U,sCC3jCnB,2BAkBMiqG,EAlBN,OAkBuB94H,EAAOC,cAAc,CAC1CgB,KAAM,CAAEd,aAAa,GACrBswF,QAAS,CAAEtwF,aAAa,GACxBu+G,MAAO,CAAEv+G,aAAa,GACtBosF,OAAQ,CAAEpsF,aAAa,GACvB0+G,SAAU,CAAE1+G,aAAa,GACzB2+G,OAAQ,CAAE3+G,aAAa,GACvBi5H,UAAW,CAAEj5H,aAAa,GAC1Bk5H,YAAa,CAAEl5H,aAAa,KAGf24H","file":"builtins.472622149827c1587209.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport { createBrowserHistory } from 'history';\n\nif (!window.graylogHistory) {\n  window.graylogHistory = createBrowserHistory();\n}\n\nexport default window.graylogHistory;\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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 isNumeric = require('fast-isnumeric');\nvar isArrayOrTypedArray = require('./array').isArrayOrTypedArray;\n\n/**\n * convert a string s (such as 'xaxis.range[0]')\n * representing a property of nested object into set and get methods\n * also return the string and object so we don't have to keep track of them\n * allows [-1] for an array index, to set a property inside all elements\n * of an array\n * eg if obj = {arr: [{a: 1}, {a: 2}]}\n * you can do p = nestedProperty(obj, 'arr[-1].a')\n * but you cannot set the array itself this way, to do that\n * just set the whole array.\n * eg if obj = {arr: [1, 2, 3]}\n * you can't do nestedProperty(obj, 'arr[-1]').set(5)\n * but you can do nestedProperty(obj, 'arr').set([5, 5, 5])\n */\nmodule.exports = function nestedProperty(container, propStr) {\n    if(isNumeric(propStr)) propStr = String(propStr);\n    else if(typeof propStr !== 'string' ||\n            propStr.substr(propStr.length - 4) === '[-1]') {\n        throw 'bad property string';\n    }\n\n    var j = 0;\n    var propParts = propStr.split('.');\n    var indexed;\n    var indices;\n    var i;\n\n    // check for parts of the nesting hierarchy that are numbers (ie array elements)\n    while(j < propParts.length) {\n        // look for non-bracket chars, then any number of [##] blocks\n        indexed = String(propParts[j]).match(/^([^\\[\\]]*)((\\[\\-?[0-9]*\\])+)$/);\n        if(indexed) {\n            if(indexed[1]) propParts[j] = indexed[1];\n            // allow propStr to start with bracketed array indices\n            else if(j === 0) propParts.splice(0, 1);\n            else throw 'bad property string';\n\n            indices = indexed[2]\n                .substr(1, indexed[2].length - 2)\n                .split('][');\n\n            for(i = 0; i < indices.length; i++) {\n                j++;\n                propParts.splice(j, 0, Number(indices[i]));\n            }\n        }\n        j++;\n    }\n\n    if(typeof container !== 'object') {\n        return badContainer(container, propStr, propParts);\n    }\n\n    return {\n        set: npSet(container, propParts, propStr),\n        get: npGet(container, propParts),\n        astr: propStr,\n        parts: propParts,\n        obj: container\n    };\n};\n\nfunction npGet(cont, parts) {\n    return function() {\n        var curCont = cont;\n        var curPart;\n        var allSame;\n        var out;\n        var i;\n        var j;\n\n        for(i = 0; i < parts.length - 1; i++) {\n            curPart = parts[i];\n            if(curPart === -1) {\n                allSame = true;\n                out = [];\n                for(j = 0; j < curCont.length; j++) {\n                    out[j] = npGet(curCont[j], parts.slice(i + 1))();\n                    if(out[j] !== out[0]) allSame = false;\n                }\n                return allSame ? out[0] : out;\n            }\n            if(typeof curPart === 'number' && !isArrayOrTypedArray(curCont)) {\n                return undefined;\n            }\n            curCont = curCont[curPart];\n            if(typeof curCont !== 'object' || curCont === null) {\n                return undefined;\n            }\n        }\n\n        // only hit this if parts.length === 1\n        if(typeof curCont !== 'object' || curCont === null) return undefined;\n\n        out = curCont[parts[i]];\n        if(out === null) return undefined;\n        return out;\n    };\n}\n\n/*\n * Can this value be deleted? We can delete `undefined`, and `null` except INSIDE an\n * *args* array.\n *\n * Previously we also deleted some `{}` and `[]`, in order to try and make set/unset\n * a net noop; but this causes far more complication than it's worth, and still had\n * lots of exceptions. See https://github.com/plotly/plotly.js/issues/1410\n *\n * *args* arrays get passed directly to API methods and we should respect null if\n * the user put it there, but otherwise null is deleted as we use it as code\n * in restyle/relayout/update for \"delete this value\" whereas undefined means\n * \"ignore this edit\"\n */\nvar ARGS_PATTERN = /(^|\\.)args\\[/;\nfunction isDeletable(val, propStr) {\n    return (val === undefined) || (val === null && !propStr.match(ARGS_PATTERN));\n}\n\nfunction npSet(cont, parts, propStr) {\n    return function(val) {\n        var curCont = cont;\n        var propPart = '';\n        var containerLevels = [[cont, propPart]];\n        var toDelete = isDeletable(val, propStr);\n        var curPart;\n        var i;\n\n        for(i = 0; i < parts.length - 1; i++) {\n            curPart = parts[i];\n\n            if(typeof curPart === 'number' && !isArrayOrTypedArray(curCont)) {\n                throw 'array index but container is not an array';\n            }\n\n            // handle special -1 array index\n            if(curPart === -1) {\n                toDelete = !setArrayAll(curCont, parts.slice(i + 1), val, propStr);\n                if(toDelete) break;\n                else return;\n            }\n\n            if(!checkNewContainer(curCont, curPart, parts[i + 1], toDelete)) {\n                break;\n            }\n\n            curCont = curCont[curPart];\n\n            if(typeof curCont !== 'object' || curCont === null) {\n                throw 'container is not an object';\n            }\n\n            propPart = joinPropStr(propPart, curPart);\n\n            containerLevels.push([curCont, propPart]);\n        }\n\n        if(toDelete) {\n            if(i === parts.length - 1) {\n                delete curCont[parts[i]];\n\n                // The one bit of pruning we still do: drop `undefined` from the end of arrays.\n                // In case someone has already unset previous items, continue until we hit a\n                // non-undefined value.\n                if(Array.isArray(curCont) && +parts[i] === curCont.length - 1) {\n                    while(curCont.length && curCont[curCont.length - 1] === undefined) {\n                        curCont.pop();\n                    }\n                }\n            }\n        } else curCont[parts[i]] = val;\n    };\n}\n\nfunction joinPropStr(propStr, newPart) {\n    var toAdd = newPart;\n    if(isNumeric(newPart)) toAdd = '[' + newPart + ']';\n    else if(propStr) toAdd = '.' + newPart;\n\n    return propStr + toAdd;\n}\n\n// handle special -1 array index\nfunction setArrayAll(containerArray, innerParts, val, propStr) {\n    var arrayVal = isArrayOrTypedArray(val);\n    var allSet = true;\n    var thisVal = val;\n    var thisPropStr = propStr.replace('-1', 0);\n    var deleteThis = arrayVal ? false : isDeletable(val, thisPropStr);\n    var firstPart = innerParts[0];\n    var i;\n\n    for(i = 0; i < containerArray.length; i++) {\n        thisPropStr = propStr.replace('-1', i);\n        if(arrayVal) {\n            thisVal = val[i % val.length];\n            deleteThis = isDeletable(thisVal, thisPropStr);\n        }\n        if(deleteThis) allSet = false;\n        if(!checkNewContainer(containerArray, i, firstPart, deleteThis)) {\n            continue;\n        }\n        npSet(containerArray[i], innerParts, propStr.replace('-1', i))(thisVal);\n    }\n    return allSet;\n}\n\n/**\n * make new sub-container as needed.\n * returns false if there's no container and none is needed\n * because we're only deleting an attribute\n */\nfunction checkNewContainer(container, part, nextPart, toDelete) {\n    if(container[part] === undefined) {\n        if(toDelete) return false;\n\n        if(typeof nextPart === 'number') container[part] = [];\n        else container[part] = {};\n    }\n    return true;\n}\n\nfunction badContainer(container, propStr, propParts) {\n    return {\n        set: function() { throw 'bad container'; },\n        get: function() {},\n        astr: propStr,\n        parts: propParts,\n        obj: container\n    };\n}\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nconst MessagesActions = Reflux.createActions({\n  loadMessage: { asyncResult: true },\n  fieldTerms: { asyncResult: true },\n  loadRawMessage: { asyncResult: true },\n});\n\nexport default MessagesActions;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\nimport { qualifyUrl } from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport ActionsProvider from 'injection/ActionsProvider';\nimport {\n  IndexSet,\n  IndexSetsResponseType,\n  IndexSetsStoreState,\n} from 'components/indices/Types';\n\nconst IndexSetsActions = ActionsProvider.getActions('IndexSets');\n\nconst IndexSetsStore = Reflux.createStore({\n  listenables: [IndexSetsActions],\n  indexSetsCount: undefined,\n  indexSets: undefined,\n  indexSetStats: undefined,\n\n  getInitialState() {\n    return {\n      indexSetsCount: this.indexSetsCount,\n      indexSets: this.indexSets,\n      indexSetStats: this.indexSetStats,\n    };\n  },\n\n  list(stats: boolean) {\n    const url = qualifyUrl(ApiRoutes.IndexSetsApiController.list(stats).url);\n    const promise = fetch('GET', url);\n\n    promise\n      .then(\n        (response: IndexSetsResponseType) => this.trigger({\n          indexSetsCount: response.total,\n          indexSets: response.index_sets,\n          indexSetStats: response.stats,\n        }),\n        (error) => {\n          UserNotification.error(`Fetching index sets list failed: ${error.message}`,\n            'Could not retrieve index sets.');\n        },\n      );\n\n    IndexSetsActions.list.promise(promise);\n  },\n\n  listPaginated(skip: number, limit: number, stats: boolean) {\n    const url = qualifyUrl(ApiRoutes.IndexSetsApiController.listPaginated(skip, limit, stats).url);\n    const promise = fetch('GET', url);\n\n    promise\n      .then(\n        (response: IndexSetsResponseType) => this.trigger({\n          indexSetsCount: response.total,\n          indexSets: response.index_sets,\n          indexSetStats: response.stats,\n        }),\n        (error) => {\n          UserNotification.error(`Fetching index sets list failed: ${this._errorMessage(error)}`,\n            'Could not retrieve index sets.');\n        },\n      );\n\n    IndexSetsActions.listPaginated.promise(promise);\n  },\n\n  get(indexSetId: string) {\n    const url = qualifyUrl(ApiRoutes.IndexSetsApiController.get(indexSetId).url);\n    const promise = fetch('GET', url);\n\n    promise.then(\n      (response: IndexSet) => {\n        this.trigger({ indexSet: response });\n\n        return response;\n      },\n      (error) => {\n        UserNotification.error(`Fetching index set '${indexSetId}' failed with status: ${this._errorMessage(error)}`, 'Could not retrieve index set.');\n      },\n    );\n\n    IndexSetsActions.get.promise(promise);\n  },\n\n  update(indexSet: IndexSet) {\n    const url = qualifyUrl(ApiRoutes.IndexSetsApiController.get(indexSet.id).url);\n    const promise = fetch('PUT', url, indexSet);\n\n    promise.then(\n      (response: IndexSet) => {\n        UserNotification.success(`Successfully updated index set '${indexSet.title}'`, 'Success');\n        this.trigger({ indexSet: response });\n\n        return response;\n      },\n      (error) => {\n        UserNotification.error(`Updating index set '${indexSet.title}' failed with status: ${this._errorMessage(error)}`, 'Could not update index set.');\n      },\n    );\n\n    IndexSetsActions.update.promise(promise);\n  },\n\n  create(indexSet: IndexSet) {\n    const url = qualifyUrl(ApiRoutes.IndexSetsApiController.create().url);\n    const promise = fetch('POST', url, indexSet);\n\n    promise.then(\n      (response: IndexSet) => {\n        UserNotification.success(`Successfully created index set '${indexSet.title}'`, 'Success');\n        this.trigger({ indexSet: response });\n\n        return response;\n      },\n      (error) => {\n        UserNotification.error(`Creating index set '${indexSet.title}' failed with status: ${this._errorMessage(error)}`, 'Could not create index set.');\n      },\n    );\n\n    IndexSetsActions.create.promise(promise);\n  },\n\n  delete(indexSet: IndexSet, deleteIndices: boolean) {\n    const url = qualifyUrl(ApiRoutes.IndexSetsApiController.delete(indexSet.id, deleteIndices).url);\n    const promise = fetch('DELETE', url);\n\n    promise.then(\n      () => {\n        UserNotification.success(`Successfully deleted index set '${indexSet.title}'`, 'Success');\n      },\n      (error) => {\n        UserNotification.error(`Deleting index set '${indexSet.title}' failed with status: ${this._errorMessage(error)}`, 'Could not delete index set.');\n      },\n    );\n\n    IndexSetsActions.delete.promise(promise);\n  },\n\n  setDefault(indexSet: IndexSet) {\n    const url = qualifyUrl(ApiRoutes.IndexSetsApiController.setDefault(indexSet.id).url);\n    const promise = fetch('PUT', url);\n\n    promise.then(\n      () => {\n        UserNotification.success(`Successfully set index set '${indexSet.title}' as default`, 'Success');\n      },\n      (error) => {\n        UserNotification.error(`Setting index set '${indexSet.title}' as default failed with status: ${this._errorMessage(error)}`, 'Could not set default index set.');\n      },\n    );\n\n    IndexSetsActions.setDefault.promise(promise);\n  },\n\n  stats() {\n    const url = qualifyUrl(ApiRoutes.IndexSetsApiController.stats().url);\n    const promise = fetch('GET', url);\n\n    promise\n      .then(\n        (response) => this.trigger({\n          globalIndexSetStats: {\n            indices: response.indices,\n            documents: response.documents,\n            size: response.size,\n          },\n        }),\n        (error) => {\n          UserNotification.error(`Fetching global index stats failed: ${error.message}`,\n            'Could not retrieve global index stats.');\n        },\n      );\n\n    IndexSetsActions.stats.promise(promise);\n  },\n\n  _errorMessage(error) {\n    try {\n      return error.additional.body.message;\n    } catch (e) {\n      return error.message;\n    }\n  },\n});\n\nexport default IndexSetsStore;\n","!function() {\n  var d3 = {\n    version: \"3.5.17\"\n  };\n  var d3_arraySlice = [].slice, d3_array = function(list) {\n    return d3_arraySlice.call(list);\n  };\n  var d3_document = this.document;\n  function d3_documentElement(node) {\n    return node && (node.ownerDocument || node.document || node).documentElement;\n  }\n  function d3_window(node) {\n    return node && (node.ownerDocument && node.ownerDocument.defaultView || node.document && node || node.defaultView);\n  }\n  if (d3_document) {\n    try {\n      d3_array(d3_document.documentElement.childNodes)[0].nodeType;\n    } catch (e) {\n      d3_array = function(list) {\n        var i = list.length, array = new Array(i);\n        while (i--) array[i] = list[i];\n        return array;\n      };\n    }\n  }\n  if (!Date.now) Date.now = function() {\n    return +new Date();\n  };\n  if (d3_document) {\n    try {\n      d3_document.createElement(\"DIV\").style.setProperty(\"opacity\", 0, \"\");\n    } catch (error) {\n      var d3_element_prototype = this.Element.prototype, d3_element_setAttribute = d3_element_prototype.setAttribute, d3_element_setAttributeNS = d3_element_prototype.setAttributeNS, d3_style_prototype = this.CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty;\n      d3_element_prototype.setAttribute = function(name, value) {\n        d3_element_setAttribute.call(this, name, value + \"\");\n      };\n      d3_element_prototype.setAttributeNS = function(space, local, value) {\n        d3_element_setAttributeNS.call(this, space, local, value + \"\");\n      };\n      d3_style_prototype.setProperty = function(name, value, priority) {\n        d3_style_setProperty.call(this, name, value + \"\", priority);\n      };\n    }\n  }\n  d3.ascending = d3_ascending;\n  function d3_ascending(a, b) {\n    return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n  }\n  d3.descending = function(a, b) {\n    return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n  };\n  d3.min = function(array, f) {\n    var i = -1, n = array.length, a, b;\n    if (arguments.length === 1) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) {\n        a = b;\n        break;\n      }\n      while (++i < n) if ((b = array[i]) != null && a > b) a = b;\n    } else {\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n        a = b;\n        break;\n      }\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b;\n    }\n    return a;\n  };\n  d3.max = function(array, f) {\n    var i = -1, n = array.length, a, b;\n    if (arguments.length === 1) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) {\n        a = b;\n        break;\n      }\n      while (++i < n) if ((b = array[i]) != null && b > a) a = b;\n    } else {\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n        a = b;\n        break;\n      }\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b;\n    }\n    return a;\n  };\n  d3.extent = function(array, f) {\n    var i = -1, n = array.length, a, b, c;\n    if (arguments.length === 1) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) {\n        a = c = b;\n        break;\n      }\n      while (++i < n) if ((b = array[i]) != null) {\n        if (a > b) a = b;\n        if (c < b) c = b;\n      }\n    } else {\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n        a = c = b;\n        break;\n      }\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null) {\n        if (a > b) a = b;\n        if (c < b) c = b;\n      }\n    }\n    return [ a, c ];\n  };\n  function d3_number(x) {\n    return x === null ? NaN : +x;\n  }\n  function d3_numeric(x) {\n    return !isNaN(x);\n  }\n  d3.sum = function(array, f) {\n    var s = 0, n = array.length, a, i = -1;\n    if (arguments.length === 1) {\n      while (++i < n) if (d3_numeric(a = +array[i])) s += a;\n    } else {\n      while (++i < n) if (d3_numeric(a = +f.call(array, array[i], i))) s += a;\n    }\n    return s;\n  };\n  d3.mean = function(array, f) {\n    var s = 0, n = array.length, a, i = -1, j = n;\n    if (arguments.length === 1) {\n      while (++i < n) if (d3_numeric(a = d3_number(array[i]))) s += a; else --j;\n    } else {\n      while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) s += a; else --j;\n    }\n    if (j) return s / j;\n  };\n  d3.quantile = function(values, p) {\n    var H = (values.length - 1) * p + 1, h = Math.floor(H), v = +values[h - 1], e = H - h;\n    return e ? v + e * (values[h] - v) : v;\n  };\n  d3.median = function(array, f) {\n    var numbers = [], n = array.length, a, i = -1;\n    if (arguments.length === 1) {\n      while (++i < n) if (d3_numeric(a = d3_number(array[i]))) numbers.push(a);\n    } else {\n      while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) numbers.push(a);\n    }\n    if (numbers.length) return d3.quantile(numbers.sort(d3_ascending), .5);\n  };\n  d3.variance = function(array, f) {\n    var n = array.length, m = 0, a, d, s = 0, i = -1, j = 0;\n    if (arguments.length === 1) {\n      while (++i < n) {\n        if (d3_numeric(a = d3_number(array[i]))) {\n          d = a - m;\n          m += d / ++j;\n          s += d * (a - m);\n        }\n      }\n    } else {\n      while (++i < n) {\n        if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) {\n          d = a - m;\n          m += d / ++j;\n          s += d * (a - m);\n        }\n      }\n    }\n    if (j > 1) return s / (j - 1);\n  };\n  d3.deviation = function() {\n    var v = d3.variance.apply(this, arguments);\n    return v ? Math.sqrt(v) : v;\n  };\n  function d3_bisector(compare) {\n    return {\n      left: function(a, x, lo, hi) {\n        if (arguments.length < 3) lo = 0;\n        if (arguments.length < 4) hi = a.length;\n        while (lo < hi) {\n          var mid = lo + hi >>> 1;\n          if (compare(a[mid], x) < 0) lo = mid + 1; else hi = mid;\n        }\n        return lo;\n      },\n      right: function(a, x, lo, hi) {\n        if (arguments.length < 3) lo = 0;\n        if (arguments.length < 4) hi = a.length;\n        while (lo < hi) {\n          var mid = lo + hi >>> 1;\n          if (compare(a[mid], x) > 0) hi = mid; else lo = mid + 1;\n        }\n        return lo;\n      }\n    };\n  }\n  var d3_bisect = d3_bisector(d3_ascending);\n  d3.bisectLeft = d3_bisect.left;\n  d3.bisect = d3.bisectRight = d3_bisect.right;\n  d3.bisector = function(f) {\n    return d3_bisector(f.length === 1 ? function(d, x) {\n      return d3_ascending(f(d), x);\n    } : f);\n  };\n  d3.shuffle = function(array, i0, i1) {\n    if ((m = arguments.length) < 3) {\n      i1 = array.length;\n      if (m < 2) i0 = 0;\n    }\n    var m = i1 - i0, t, i;\n    while (m) {\n      i = Math.random() * m-- | 0;\n      t = array[m + i0], array[m + i0] = array[i + i0], array[i + i0] = t;\n    }\n    return array;\n  };\n  d3.permute = function(array, indexes) {\n    var i = indexes.length, permutes = new Array(i);\n    while (i--) permutes[i] = array[indexes[i]];\n    return permutes;\n  };\n  d3.pairs = function(array) {\n    var i = 0, n = array.length - 1, p0, p1 = array[0], pairs = new Array(n < 0 ? 0 : n);\n    while (i < n) pairs[i] = [ p0 = p1, p1 = array[++i] ];\n    return pairs;\n  };\n  d3.transpose = function(matrix) {\n    if (!(n = matrix.length)) return [];\n    for (var i = -1, m = d3.min(matrix, d3_transposeLength), transpose = new Array(m); ++i < m; ) {\n      for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n; ) {\n        row[j] = matrix[j][i];\n      }\n    }\n    return transpose;\n  };\n  function d3_transposeLength(d) {\n    return d.length;\n  }\n  d3.zip = function() {\n    return d3.transpose(arguments);\n  };\n  d3.keys = function(map) {\n    var keys = [];\n    for (var key in map) keys.push(key);\n    return keys;\n  };\n  d3.values = function(map) {\n    var values = [];\n    for (var key in map) values.push(map[key]);\n    return values;\n  };\n  d3.entries = function(map) {\n    var entries = [];\n    for (var key in map) entries.push({\n      key: key,\n      value: map[key]\n    });\n    return entries;\n  };\n  d3.merge = function(arrays) {\n    var n = arrays.length, m, i = -1, j = 0, merged, array;\n    while (++i < n) j += arrays[i].length;\n    merged = new Array(j);\n    while (--n >= 0) {\n      array = arrays[n];\n      m = array.length;\n      while (--m >= 0) {\n        merged[--j] = array[m];\n      }\n    }\n    return merged;\n  };\n  var abs = Math.abs;\n  d3.range = function(start, stop, step) {\n    if (arguments.length < 3) {\n      step = 1;\n      if (arguments.length < 2) {\n        stop = start;\n        start = 0;\n      }\n    }\n    if ((stop - start) / step === Infinity) throw new Error(\"infinite range\");\n    var range = [], k = d3_range_integerScale(abs(step)), i = -1, j;\n    start *= k, stop *= k, step *= k;\n    if (step < 0) while ((j = start + step * ++i) > stop) range.push(j / k); else while ((j = start + step * ++i) < stop) range.push(j / k);\n    return range;\n  };\n  function d3_range_integerScale(x) {\n    var k = 1;\n    while (x * k % 1) k *= 10;\n    return k;\n  }\n  function d3_class(ctor, properties) {\n    for (var key in properties) {\n      Object.defineProperty(ctor.prototype, key, {\n        value: properties[key],\n        enumerable: false\n      });\n    }\n  }\n  d3.map = function(object, f) {\n    var map = new d3_Map();\n    if (object instanceof d3_Map) {\n      object.forEach(function(key, value) {\n        map.set(key, value);\n      });\n    } else if (Array.isArray(object)) {\n      var i = -1, n = object.length, o;\n      if (arguments.length === 1) while (++i < n) map.set(i, object[i]); else while (++i < n) map.set(f.call(object, o = object[i], i), o);\n    } else {\n      for (var key in object) map.set(key, object[key]);\n    }\n    return map;\n  };\n  function d3_Map() {\n    this._ = Object.create(null);\n  }\n  var d3_map_proto = \"__proto__\", d3_map_zero = \"\\x00\";\n  d3_class(d3_Map, {\n    has: d3_map_has,\n    get: function(key) {\n      return this._[d3_map_escape(key)];\n    },\n    set: function(key, value) {\n      return this._[d3_map_escape(key)] = value;\n    },\n    remove: d3_map_remove,\n    keys: d3_map_keys,\n    values: function() {\n      var values = [];\n      for (var key in this._) values.push(this._[key]);\n      return values;\n    },\n    entries: function() {\n      var entries = [];\n      for (var key in this._) entries.push({\n        key: d3_map_unescape(key),\n        value: this._[key]\n      });\n      return entries;\n    },\n    size: d3_map_size,\n    empty: d3_map_empty,\n    forEach: function(f) {\n      for (var key in this._) f.call(this, d3_map_unescape(key), this._[key]);\n    }\n  });\n  function d3_map_escape(key) {\n    return (key += \"\") === d3_map_proto || key[0] === d3_map_zero ? d3_map_zero + key : key;\n  }\n  function d3_map_unescape(key) {\n    return (key += \"\")[0] === d3_map_zero ? key.slice(1) : key;\n  }\n  function d3_map_has(key) {\n    return d3_map_escape(key) in this._;\n  }\n  function d3_map_remove(key) {\n    return (key = d3_map_escape(key)) in this._ && delete this._[key];\n  }\n  function d3_map_keys() {\n    var keys = [];\n    for (var key in this._) keys.push(d3_map_unescape(key));\n    return keys;\n  }\n  function d3_map_size() {\n    var size = 0;\n    for (var key in this._) ++size;\n    return size;\n  }\n  function d3_map_empty() {\n    for (var key in this._) return false;\n    return true;\n  }\n  d3.nest = function() {\n    var nest = {}, keys = [], sortKeys = [], sortValues, rollup;\n    function map(mapType, array, depth) {\n      if (depth >= keys.length) return rollup ? rollup.call(nest, array) : sortValues ? array.sort(sortValues) : array;\n      var i = -1, n = array.length, key = keys[depth++], keyValue, object, setter, valuesByKey = new d3_Map(), values;\n      while (++i < n) {\n        if (values = valuesByKey.get(keyValue = key(object = array[i]))) {\n          values.push(object);\n        } else {\n          valuesByKey.set(keyValue, [ object ]);\n        }\n      }\n      if (mapType) {\n        object = mapType();\n        setter = function(keyValue, values) {\n          object.set(keyValue, map(mapType, values, depth));\n        };\n      } else {\n        object = {};\n        setter = function(keyValue, values) {\n          object[keyValue] = map(mapType, values, depth);\n        };\n      }\n      valuesByKey.forEach(setter);\n      return object;\n    }\n    function entries(map, depth) {\n      if (depth >= keys.length) return map;\n      var array = [], sortKey = sortKeys[depth++];\n      map.forEach(function(key, keyMap) {\n        array.push({\n          key: key,\n          values: entries(keyMap, depth)\n        });\n      });\n      return sortKey ? array.sort(function(a, b) {\n        return sortKey(a.key, b.key);\n      }) : array;\n    }\n    nest.map = function(array, mapType) {\n      return map(mapType, array, 0);\n    };\n    nest.entries = function(array) {\n      return entries(map(d3.map, array, 0), 0);\n    };\n    nest.key = function(d) {\n      keys.push(d);\n      return nest;\n    };\n    nest.sortKeys = function(order) {\n      sortKeys[keys.length - 1] = order;\n      return nest;\n    };\n    nest.sortValues = function(order) {\n      sortValues = order;\n      return nest;\n    };\n    nest.rollup = function(f) {\n      rollup = f;\n      return nest;\n    };\n    return nest;\n  };\n  d3.set = function(array) {\n    var set = new d3_Set();\n    if (array) for (var i = 0, n = array.length; i < n; ++i) set.add(array[i]);\n    return set;\n  };\n  function d3_Set() {\n    this._ = Object.create(null);\n  }\n  d3_class(d3_Set, {\n    has: d3_map_has,\n    add: function(key) {\n      this._[d3_map_escape(key += \"\")] = true;\n      return key;\n    },\n    remove: d3_map_remove,\n    values: d3_map_keys,\n    size: d3_map_size,\n    empty: d3_map_empty,\n    forEach: function(f) {\n      for (var key in this._) f.call(this, d3_map_unescape(key));\n    }\n  });\n  d3.behavior = {};\n  function d3_identity(d) {\n    return d;\n  }\n  d3.rebind = function(target, source) {\n    var i = 1, n = arguments.length, method;\n    while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]);\n    return target;\n  };\n  function d3_rebind(target, source, method) {\n    return function() {\n      var value = method.apply(source, arguments);\n      return value === source ? target : value;\n    };\n  }\n  function d3_vendorSymbol(object, name) {\n    if (name in object) return name;\n    name = name.charAt(0).toUpperCase() + name.slice(1);\n    for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) {\n      var prefixName = d3_vendorPrefixes[i] + name;\n      if (prefixName in object) return prefixName;\n    }\n  }\n  var d3_vendorPrefixes = [ \"webkit\", \"ms\", \"moz\", \"Moz\", \"o\", \"O\" ];\n  function d3_noop() {}\n  d3.dispatch = function() {\n    var dispatch = new d3_dispatch(), i = -1, n = arguments.length;\n    while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n    return dispatch;\n  };\n  function d3_dispatch() {}\n  d3_dispatch.prototype.on = function(type, listener) {\n    var i = type.indexOf(\".\"), name = \"\";\n    if (i >= 0) {\n      name = type.slice(i + 1);\n      type = type.slice(0, i);\n    }\n    if (type) return arguments.length < 2 ? this[type].on(name) : this[type].on(name, listener);\n    if (arguments.length === 2) {\n      if (listener == null) for (type in this) {\n        if (this.hasOwnProperty(type)) this[type].on(name, null);\n      }\n      return this;\n    }\n  };\n  function d3_dispatch_event(dispatch) {\n    var listeners = [], listenerByName = new d3_Map();\n    function event() {\n      var z = listeners, i = -1, n = z.length, l;\n      while (++i < n) if (l = z[i].on) l.apply(this, arguments);\n      return dispatch;\n    }\n    event.on = function(name, listener) {\n      var l = listenerByName.get(name), i;\n      if (arguments.length < 2) return l && l.on;\n      if (l) {\n        l.on = null;\n        listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));\n        listenerByName.remove(name);\n      }\n      if (listener) listeners.push(listenerByName.set(name, {\n        on: listener\n      }));\n      return dispatch;\n    };\n    return event;\n  }\n  d3.event = null;\n  function d3_eventPreventDefault() {\n    d3.event.preventDefault();\n  }\n  function d3_eventSource() {\n    var e = d3.event, s;\n    while (s = e.sourceEvent) e = s;\n    return e;\n  }\n  function d3_eventDispatch(target) {\n    var dispatch = new d3_dispatch(), i = 0, n = arguments.length;\n    while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n    dispatch.of = function(thiz, argumentz) {\n      return function(e1) {\n        try {\n          var e0 = e1.sourceEvent = d3.event;\n          e1.target = target;\n          d3.event = e1;\n          dispatch[e1.type].apply(thiz, argumentz);\n        } finally {\n          d3.event = e0;\n        }\n      };\n    };\n    return dispatch;\n  }\n  d3.requote = function(s) {\n    return s.replace(d3_requote_re, \"\\\\$&\");\n  };\n  var d3_requote_re = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n  var d3_subclass = {}.__proto__ ? function(object, prototype) {\n    object.__proto__ = prototype;\n  } : function(object, prototype) {\n    for (var property in prototype) object[property] = prototype[property];\n  };\n  function d3_selection(groups) {\n    d3_subclass(groups, d3_selectionPrototype);\n    return groups;\n  }\n  var d3_select = function(s, n) {\n    return n.querySelector(s);\n  }, d3_selectAll = function(s, n) {\n    return n.querySelectorAll(s);\n  }, d3_selectMatches = function(n, s) {\n    var d3_selectMatcher = n.matches || n[d3_vendorSymbol(n, \"matchesSelector\")];\n    d3_selectMatches = function(n, s) {\n      return d3_selectMatcher.call(n, s);\n    };\n    return d3_selectMatches(n, s);\n  };\n  if (typeof Sizzle === \"function\") {\n    d3_select = function(s, n) {\n      return Sizzle(s, n)[0] || null;\n    };\n    d3_selectAll = Sizzle;\n    d3_selectMatches = Sizzle.matchesSelector;\n  }\n  d3.selection = function() {\n    return d3.select(d3_document.documentElement);\n  };\n  var d3_selectionPrototype = d3.selection.prototype = [];\n  d3_selectionPrototype.select = function(selector) {\n    var subgroups = [], subgroup, subnode, group, node;\n    selector = d3_selection_selector(selector);\n    for (var j = -1, m = this.length; ++j < m; ) {\n      subgroups.push(subgroup = []);\n      subgroup.parentNode = (group = this[j]).parentNode;\n      for (var i = -1, n = group.length; ++i < n; ) {\n        if (node = group[i]) {\n          subgroup.push(subnode = selector.call(node, node.__data__, i, j));\n          if (subnode && \"__data__\" in node) subnode.__data__ = node.__data__;\n        } else {\n          subgroup.push(null);\n        }\n      }\n    }\n    return d3_selection(subgroups);\n  };\n  function d3_selection_selector(selector) {\n    return typeof selector === \"function\" ? selector : function() {\n      return d3_select(selector, this);\n    };\n  }\n  d3_selectionPrototype.selectAll = function(selector) {\n    var subgroups = [], subgroup, node;\n    selector = d3_selection_selectorAll(selector);\n    for (var j = -1, m = this.length; ++j < m; ) {\n      for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n        if (node = group[i]) {\n          subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i, j)));\n          subgroup.parentNode = node;\n        }\n      }\n    }\n    return d3_selection(subgroups);\n  };\n  function d3_selection_selectorAll(selector) {\n    return typeof selector === \"function\" ? selector : function() {\n      return d3_selectAll(selector, this);\n    };\n  }\n  var d3_nsXhtml = \"http://www.w3.org/1999/xhtml\";\n  var d3_nsPrefix = {\n    svg: \"http://www.w3.org/2000/svg\",\n    xhtml: d3_nsXhtml,\n    xlink: \"http://www.w3.org/1999/xlink\",\n    xml: \"http://www.w3.org/XML/1998/namespace\",\n    xmlns: \"http://www.w3.org/2000/xmlns/\"\n  };\n  d3.ns = {\n    prefix: d3_nsPrefix,\n    qualify: function(name) {\n      var i = name.indexOf(\":\"), prefix = name;\n      if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n      return d3_nsPrefix.hasOwnProperty(prefix) ? {\n        space: d3_nsPrefix[prefix],\n        local: name\n      } : name;\n    }\n  };\n  d3_selectionPrototype.attr = function(name, value) {\n    if (arguments.length < 2) {\n      if (typeof name === \"string\") {\n        var node = this.node();\n        name = d3.ns.qualify(name);\n        return name.local ? node.getAttributeNS(name.space, name.local) : node.getAttribute(name);\n      }\n      for (value in name) this.each(d3_selection_attr(value, name[value]));\n      return this;\n    }\n    return this.each(d3_selection_attr(name, value));\n  };\n  function d3_selection_attr(name, value) {\n    name = d3.ns.qualify(name);\n    function attrNull() {\n      this.removeAttribute(name);\n    }\n    function attrNullNS() {\n      this.removeAttributeNS(name.space, name.local);\n    }\n    function attrConstant() {\n      this.setAttribute(name, value);\n    }\n    function attrConstantNS() {\n      this.setAttributeNS(name.space, name.local, value);\n    }\n    function attrFunction() {\n      var x = value.apply(this, arguments);\n      if (x == null) this.removeAttribute(name); else this.setAttribute(name, x);\n    }\n    function attrFunctionNS() {\n      var x = value.apply(this, arguments);\n      if (x == null) this.removeAttributeNS(name.space, name.local); else this.setAttributeNS(name.space, name.local, x);\n    }\n    return value == null ? name.local ? attrNullNS : attrNull : typeof value === \"function\" ? name.local ? attrFunctionNS : attrFunction : name.local ? attrConstantNS : attrConstant;\n  }\n  function d3_collapse(s) {\n    return s.trim().replace(/\\s+/g, \" \");\n  }\n  d3_selectionPrototype.classed = function(name, value) {\n    if (arguments.length < 2) {\n      if (typeof name === \"string\") {\n        var node = this.node(), n = (name = d3_selection_classes(name)).length, i = -1;\n        if (value = node.classList) {\n          while (++i < n) if (!value.contains(name[i])) return false;\n        } else {\n          value = node.getAttribute(\"class\");\n          while (++i < n) if (!d3_selection_classedRe(name[i]).test(value)) return false;\n        }\n        return true;\n      }\n      for (value in name) this.each(d3_selection_classed(value, name[value]));\n      return this;\n    }\n    return this.each(d3_selection_classed(name, value));\n  };\n  function d3_selection_classedRe(name) {\n    return new RegExp(\"(?:^|\\\\s+)\" + d3.requote(name) + \"(?:\\\\s+|$)\", \"g\");\n  }\n  function d3_selection_classes(name) {\n    return (name + \"\").trim().split(/^|\\s+/);\n  }\n  function d3_selection_classed(name, value) {\n    name = d3_selection_classes(name).map(d3_selection_classedName);\n    var n = name.length;\n    function classedConstant() {\n      var i = -1;\n      while (++i < n) name[i](this, value);\n    }\n    function classedFunction() {\n      var i = -1, x = value.apply(this, arguments);\n      while (++i < n) name[i](this, x);\n    }\n    return typeof value === \"function\" ? classedFunction : classedConstant;\n  }\n  function d3_selection_classedName(name) {\n    var re = d3_selection_classedRe(name);\n    return function(node, value) {\n      if (c = node.classList) return value ? c.add(name) : c.remove(name);\n      var c = node.getAttribute(\"class\") || \"\";\n      if (value) {\n        re.lastIndex = 0;\n        if (!re.test(c)) node.setAttribute(\"class\", d3_collapse(c + \" \" + name));\n      } else {\n        node.setAttribute(\"class\", d3_collapse(c.replace(re, \" \")));\n      }\n    };\n  }\n  d3_selectionPrototype.style = function(name, value, priority) {\n    var n = arguments.length;\n    if (n < 3) {\n      if (typeof name !== \"string\") {\n        if (n < 2) value = \"\";\n        for (priority in name) this.each(d3_selection_style(priority, name[priority], value));\n        return this;\n      }\n      if (n < 2) {\n        var node = this.node();\n        return d3_window(node).getComputedStyle(node, null).getPropertyValue(name);\n      }\n      priority = \"\";\n    }\n    return this.each(d3_selection_style(name, value, priority));\n  };\n  function d3_selection_style(name, value, priority) {\n    function styleNull() {\n      this.style.removeProperty(name);\n    }\n    function styleConstant() {\n      this.style.setProperty(name, value, priority);\n    }\n    function styleFunction() {\n      var x = value.apply(this, arguments);\n      if (x == null) this.style.removeProperty(name); else this.style.setProperty(name, x, priority);\n    }\n    return value == null ? styleNull : typeof value === \"function\" ? styleFunction : styleConstant;\n  }\n  d3_selectionPrototype.property = function(name, value) {\n    if (arguments.length < 2) {\n      if (typeof name === \"string\") return this.node()[name];\n      for (value in name) this.each(d3_selection_property(value, name[value]));\n      return this;\n    }\n    return this.each(d3_selection_property(name, value));\n  };\n  function d3_selection_property(name, value) {\n    function propertyNull() {\n      delete this[name];\n    }\n    function propertyConstant() {\n      this[name] = value;\n    }\n    function propertyFunction() {\n      var x = value.apply(this, arguments);\n      if (x == null) delete this[name]; else this[name] = x;\n    }\n    return value == null ? propertyNull : typeof value === \"function\" ? propertyFunction : propertyConstant;\n  }\n  d3_selectionPrototype.text = function(value) {\n    return arguments.length ? this.each(typeof value === \"function\" ? function() {\n      var v = value.apply(this, arguments);\n      this.textContent = v == null ? \"\" : v;\n    } : value == null ? function() {\n      this.textContent = \"\";\n    } : function() {\n      this.textContent = value;\n    }) : this.node().textContent;\n  };\n  d3_selectionPrototype.html = function(value) {\n    return arguments.length ? this.each(typeof value === \"function\" ? function() {\n      var v = value.apply(this, arguments);\n      this.innerHTML = v == null ? \"\" : v;\n    } : value == null ? function() {\n      this.innerHTML = \"\";\n    } : function() {\n      this.innerHTML = value;\n    }) : this.node().innerHTML;\n  };\n  d3_selectionPrototype.append = function(name) {\n    name = d3_selection_creator(name);\n    return this.select(function() {\n      return this.appendChild(name.apply(this, arguments));\n    });\n  };\n  function d3_selection_creator(name) {\n    function create() {\n      var document = this.ownerDocument, namespace = this.namespaceURI;\n      return namespace === d3_nsXhtml && document.documentElement.namespaceURI === d3_nsXhtml ? document.createElement(name) : document.createElementNS(namespace, name);\n    }\n    function createNS() {\n      return this.ownerDocument.createElementNS(name.space, name.local);\n    }\n    return typeof name === \"function\" ? name : (name = d3.ns.qualify(name)).local ? createNS : create;\n  }\n  d3_selectionPrototype.insert = function(name, before) {\n    name = d3_selection_creator(name);\n    before = d3_selection_selector(before);\n    return this.select(function() {\n      return this.insertBefore(name.apply(this, arguments), before.apply(this, arguments) || null);\n    });\n  };\n  d3_selectionPrototype.remove = function() {\n    return this.each(d3_selectionRemove);\n  };\n  function d3_selectionRemove() {\n    var parent = this.parentNode;\n    if (parent) parent.removeChild(this);\n  }\n  d3_selectionPrototype.data = function(value, key) {\n    var i = -1, n = this.length, group, node;\n    if (!arguments.length) {\n      value = new Array(n = (group = this[0]).length);\n      while (++i < n) {\n        if (node = group[i]) {\n          value[i] = node.__data__;\n        }\n      }\n      return value;\n    }\n    function bind(group, groupData) {\n      var i, n = group.length, m = groupData.length, n0 = Math.min(n, m), updateNodes = new Array(m), enterNodes = new Array(m), exitNodes = new Array(n), node, nodeData;\n      if (key) {\n        var nodeByKeyValue = new d3_Map(), keyValues = new Array(n), keyValue;\n        for (i = -1; ++i < n; ) {\n          if (node = group[i]) {\n            if (nodeByKeyValue.has(keyValue = key.call(node, node.__data__, i))) {\n              exitNodes[i] = node;\n            } else {\n              nodeByKeyValue.set(keyValue, node);\n            }\n            keyValues[i] = keyValue;\n          }\n        }\n        for (i = -1; ++i < m; ) {\n          if (!(node = nodeByKeyValue.get(keyValue = key.call(groupData, nodeData = groupData[i], i)))) {\n            enterNodes[i] = d3_selection_dataNode(nodeData);\n          } else if (node !== true) {\n            updateNodes[i] = node;\n            node.__data__ = nodeData;\n          }\n          nodeByKeyValue.set(keyValue, true);\n        }\n        for (i = -1; ++i < n; ) {\n          if (i in keyValues && nodeByKeyValue.get(keyValues[i]) !== true) {\n            exitNodes[i] = group[i];\n          }\n        }\n      } else {\n        for (i = -1; ++i < n0; ) {\n          node = group[i];\n          nodeData = groupData[i];\n          if (node) {\n            node.__data__ = nodeData;\n            updateNodes[i] = node;\n          } else {\n            enterNodes[i] = d3_selection_dataNode(nodeData);\n          }\n        }\n        for (;i < m; ++i) {\n          enterNodes[i] = d3_selection_dataNode(groupData[i]);\n        }\n        for (;i < n; ++i) {\n          exitNodes[i] = group[i];\n        }\n      }\n      enterNodes.update = updateNodes;\n      enterNodes.parentNode = updateNodes.parentNode = exitNodes.parentNode = group.parentNode;\n      enter.push(enterNodes);\n      update.push(updateNodes);\n      exit.push(exitNodes);\n    }\n    var enter = d3_selection_enter([]), update = d3_selection([]), exit = d3_selection([]);\n    if (typeof value === \"function\") {\n      while (++i < n) {\n        bind(group = this[i], value.call(group, group.parentNode.__data__, i));\n      }\n    } else {\n      while (++i < n) {\n        bind(group = this[i], value);\n      }\n    }\n    update.enter = function() {\n      return enter;\n    };\n    update.exit = function() {\n      return exit;\n    };\n    return update;\n  };\n  function d3_selection_dataNode(data) {\n    return {\n      __data__: data\n    };\n  }\n  d3_selectionPrototype.datum = function(value) {\n    return arguments.length ? this.property(\"__data__\", value) : this.property(\"__data__\");\n  };\n  d3_selectionPrototype.filter = function(filter) {\n    var subgroups = [], subgroup, group, node;\n    if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n    for (var j = 0, m = this.length; j < m; j++) {\n      subgroups.push(subgroup = []);\n      subgroup.parentNode = (group = this[j]).parentNode;\n      for (var i = 0, n = group.length; i < n; i++) {\n        if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n          subgroup.push(node);\n        }\n      }\n    }\n    return d3_selection(subgroups);\n  };\n  function d3_selection_filter(selector) {\n    return function() {\n      return d3_selectMatches(this, selector);\n    };\n  }\n  d3_selectionPrototype.order = function() {\n    for (var j = -1, m = this.length; ++j < m; ) {\n      for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0; ) {\n        if (node = group[i]) {\n          if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);\n          next = node;\n        }\n      }\n    }\n    return this;\n  };\n  d3_selectionPrototype.sort = function(comparator) {\n    comparator = d3_selection_sortComparator.apply(this, arguments);\n    for (var j = -1, m = this.length; ++j < m; ) this[j].sort(comparator);\n    return this.order();\n  };\n  function d3_selection_sortComparator(comparator) {\n    if (!arguments.length) comparator = d3_ascending;\n    return function(a, b) {\n      return a && b ? comparator(a.__data__, b.__data__) : !a - !b;\n    };\n  }\n  d3_selectionPrototype.each = function(callback) {\n    return d3_selection_each(this, function(node, i, j) {\n      callback.call(node, node.__data__, i, j);\n    });\n  };\n  function d3_selection_each(groups, callback) {\n    for (var j = 0, m = groups.length; j < m; j++) {\n      for (var group = groups[j], i = 0, n = group.length, node; i < n; i++) {\n        if (node = group[i]) callback(node, i, j);\n      }\n    }\n    return groups;\n  }\n  d3_selectionPrototype.call = function(callback) {\n    var args = d3_array(arguments);\n    callback.apply(args[0] = this, args);\n    return this;\n  };\n  d3_selectionPrototype.empty = function() {\n    return !this.node();\n  };\n  d3_selectionPrototype.node = function() {\n    for (var j = 0, m = this.length; j < m; j++) {\n      for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n        var node = group[i];\n        if (node) return node;\n      }\n    }\n    return null;\n  };\n  d3_selectionPrototype.size = function() {\n    var n = 0;\n    d3_selection_each(this, function() {\n      ++n;\n    });\n    return n;\n  };\n  function d3_selection_enter(selection) {\n    d3_subclass(selection, d3_selection_enterPrototype);\n    return selection;\n  }\n  var d3_selection_enterPrototype = [];\n  d3.selection.enter = d3_selection_enter;\n  d3.selection.enter.prototype = d3_selection_enterPrototype;\n  d3_selection_enterPrototype.append = d3_selectionPrototype.append;\n  d3_selection_enterPrototype.empty = d3_selectionPrototype.empty;\n  d3_selection_enterPrototype.node = d3_selectionPrototype.node;\n  d3_selection_enterPrototype.call = d3_selectionPrototype.call;\n  d3_selection_enterPrototype.size = d3_selectionPrototype.size;\n  d3_selection_enterPrototype.select = function(selector) {\n    var subgroups = [], subgroup, subnode, upgroup, group, node;\n    for (var j = -1, m = this.length; ++j < m; ) {\n      upgroup = (group = this[j]).update;\n      subgroups.push(subgroup = []);\n      subgroup.parentNode = group.parentNode;\n      for (var i = -1, n = group.length; ++i < n; ) {\n        if (node = group[i]) {\n          subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i, j));\n          subnode.__data__ = node.__data__;\n        } else {\n          subgroup.push(null);\n        }\n      }\n    }\n    return d3_selection(subgroups);\n  };\n  d3_selection_enterPrototype.insert = function(name, before) {\n    if (arguments.length < 2) before = d3_selection_enterInsertBefore(this);\n    return d3_selectionPrototype.insert.call(this, name, before);\n  };\n  function d3_selection_enterInsertBefore(enter) {\n    var i0, j0;\n    return function(d, i, j) {\n      var group = enter[j].update, n = group.length, node;\n      if (j != j0) j0 = j, i0 = 0;\n      if (i >= i0) i0 = i + 1;\n      while (!(node = group[i0]) && ++i0 < n) ;\n      return node;\n    };\n  }\n  d3.select = function(node) {\n    var group;\n    if (typeof node === \"string\") {\n      group = [ d3_select(node, d3_document) ];\n      group.parentNode = d3_document.documentElement;\n    } else {\n      group = [ node ];\n      group.parentNode = d3_documentElement(node);\n    }\n    return d3_selection([ group ]);\n  };\n  d3.selectAll = function(nodes) {\n    var group;\n    if (typeof nodes === \"string\") {\n      group = d3_array(d3_selectAll(nodes, d3_document));\n      group.parentNode = d3_document.documentElement;\n    } else {\n      group = d3_array(nodes);\n      group.parentNode = null;\n    }\n    return d3_selection([ group ]);\n  };\n  d3_selectionPrototype.on = function(type, listener, capture) {\n    var n = arguments.length;\n    if (n < 3) {\n      if (typeof type !== \"string\") {\n        if (n < 2) listener = false;\n        for (capture in type) this.each(d3_selection_on(capture, type[capture], listener));\n        return this;\n      }\n      if (n < 2) return (n = this.node()[\"__on\" + type]) && n._;\n      capture = false;\n    }\n    return this.each(d3_selection_on(type, listener, capture));\n  };\n  function d3_selection_on(type, listener, capture) {\n    var name = \"__on\" + type, i = type.indexOf(\".\"), wrap = d3_selection_onListener;\n    if (i > 0) type = type.slice(0, i);\n    var filter = d3_selection_onFilters.get(type);\n    if (filter) type = filter, wrap = d3_selection_onFilter;\n    function onRemove() {\n      var l = this[name];\n      if (l) {\n        this.removeEventListener(type, l, l.$);\n        delete this[name];\n      }\n    }\n    function onAdd() {\n      var l = wrap(listener, d3_array(arguments));\n      onRemove.call(this);\n      this.addEventListener(type, this[name] = l, l.$ = capture);\n      l._ = listener;\n    }\n    function removeAll() {\n      var re = new RegExp(\"^__on([^.]+)\" + d3.requote(type) + \"$\"), match;\n      for (var name in this) {\n        if (match = name.match(re)) {\n          var l = this[name];\n          this.removeEventListener(match[1], l, l.$);\n          delete this[name];\n        }\n      }\n    }\n    return i ? listener ? onAdd : onRemove : listener ? d3_noop : removeAll;\n  }\n  var d3_selection_onFilters = d3.map({\n    mouseenter: \"mouseover\",\n    mouseleave: \"mouseout\"\n  });\n  if (d3_document) {\n    d3_selection_onFilters.forEach(function(k) {\n      if (\"on\" + k in d3_document) d3_selection_onFilters.remove(k);\n    });\n  }\n  function d3_selection_onListener(listener, argumentz) {\n    return function(e) {\n      var o = d3.event;\n      d3.event = e;\n      argumentz[0] = this.__data__;\n      try {\n        listener.apply(this, argumentz);\n      } finally {\n        d3.event = o;\n      }\n    };\n  }\n  function d3_selection_onFilter(listener, argumentz) {\n    var l = d3_selection_onListener(listener, argumentz);\n    return function(e) {\n      var target = this, related = e.relatedTarget;\n      if (!related || related !== target && !(related.compareDocumentPosition(target) & 8)) {\n        l.call(target, e);\n      }\n    };\n  }\n  var d3_event_dragSelect, d3_event_dragId = 0;\n  function d3_event_dragSuppress(node) {\n    var name = \".dragsuppress-\" + ++d3_event_dragId, click = \"click\" + name, w = d3.select(d3_window(node)).on(\"touchmove\" + name, d3_eventPreventDefault).on(\"dragstart\" + name, d3_eventPreventDefault).on(\"selectstart\" + name, d3_eventPreventDefault);\n    if (d3_event_dragSelect == null) {\n      d3_event_dragSelect = \"onselectstart\" in node ? false : d3_vendorSymbol(node.style, \"userSelect\");\n    }\n    if (d3_event_dragSelect) {\n      var style = d3_documentElement(node).style, select = style[d3_event_dragSelect];\n      style[d3_event_dragSelect] = \"none\";\n    }\n    return function(suppressClick) {\n      w.on(name, null);\n      if (d3_event_dragSelect) style[d3_event_dragSelect] = select;\n      if (suppressClick) {\n        var off = function() {\n          w.on(click, null);\n        };\n        w.on(click, function() {\n          d3_eventPreventDefault();\n          off();\n        }, true);\n        setTimeout(off, 0);\n      }\n    };\n  }\n  d3.mouse = function(container) {\n    return d3_mousePoint(container, d3_eventSource());\n  };\n  var d3_mouse_bug44083 = this.navigator && /WebKit/.test(this.navigator.userAgent) ? -1 : 0;\n  function d3_mousePoint(container, e) {\n    if (e.changedTouches) e = e.changedTouches[0];\n    var svg = container.ownerSVGElement || container;\n    if (svg.createSVGPoint) {\n      var point = svg.createSVGPoint();\n      if (d3_mouse_bug44083 < 0) {\n        var window = d3_window(container);\n        if (window.scrollX || window.scrollY) {\n          svg = d3.select(\"body\").append(\"svg\").style({\n            position: \"absolute\",\n            top: 0,\n            left: 0,\n            margin: 0,\n            padding: 0,\n            border: \"none\"\n          }, \"important\");\n          var ctm = svg[0][0].getScreenCTM();\n          d3_mouse_bug44083 = !(ctm.f || ctm.e);\n          svg.remove();\n        }\n      }\n      if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY; else point.x = e.clientX, \n      point.y = e.clientY;\n      point = point.matrixTransform(container.getScreenCTM().inverse());\n      return [ point.x, point.y ];\n    }\n    var rect = container.getBoundingClientRect();\n    return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop ];\n  }\n  d3.touch = function(container, touches, identifier) {\n    if (arguments.length < 3) identifier = touches, touches = d3_eventSource().changedTouches;\n    if (touches) for (var i = 0, n = touches.length, touch; i < n; ++i) {\n      if ((touch = touches[i]).identifier === identifier) {\n        return d3_mousePoint(container, touch);\n      }\n    }\n  };\n  d3.behavior.drag = function() {\n    var event = d3_eventDispatch(drag, \"drag\", \"dragstart\", \"dragend\"), origin = null, mousedown = dragstart(d3_noop, d3.mouse, d3_window, \"mousemove\", \"mouseup\"), touchstart = dragstart(d3_behavior_dragTouchId, d3.touch, d3_identity, \"touchmove\", \"touchend\");\n    function drag() {\n      this.on(\"mousedown.drag\", mousedown).on(\"touchstart.drag\", touchstart);\n    }\n    function dragstart(id, position, subject, move, end) {\n      return function() {\n        var that = this, target = d3.event.target.correspondingElement || d3.event.target, parent = that.parentNode, dispatch = event.of(that, arguments), dragged = 0, dragId = id(), dragName = \".drag\" + (dragId == null ? \"\" : \"-\" + dragId), dragOffset, dragSubject = d3.select(subject(target)).on(move + dragName, moved).on(end + dragName, ended), dragRestore = d3_event_dragSuppress(target), position0 = position(parent, dragId);\n        if (origin) {\n          dragOffset = origin.apply(that, arguments);\n          dragOffset = [ dragOffset.x - position0[0], dragOffset.y - position0[1] ];\n        } else {\n          dragOffset = [ 0, 0 ];\n        }\n        dispatch({\n          type: \"dragstart\"\n        });\n        function moved() {\n          var position1 = position(parent, dragId), dx, dy;\n          if (!position1) return;\n          dx = position1[0] - position0[0];\n          dy = position1[1] - position0[1];\n          dragged |= dx | dy;\n          position0 = position1;\n          dispatch({\n            type: \"drag\",\n            x: position1[0] + dragOffset[0],\n            y: position1[1] + dragOffset[1],\n            dx: dx,\n            dy: dy\n          });\n        }\n        function ended() {\n          if (!position(parent, dragId)) return;\n          dragSubject.on(move + dragName, null).on(end + dragName, null);\n          dragRestore(dragged);\n          dispatch({\n            type: \"dragend\"\n          });\n        }\n      };\n    }\n    drag.origin = function(x) {\n      if (!arguments.length) return origin;\n      origin = x;\n      return drag;\n    };\n    return d3.rebind(drag, event, \"on\");\n  };\n  function d3_behavior_dragTouchId() {\n    return d3.event.changedTouches[0].identifier;\n  }\n  d3.touches = function(container, touches) {\n    if (arguments.length < 2) touches = d3_eventSource().touches;\n    return touches ? d3_array(touches).map(function(touch) {\n      var point = d3_mousePoint(container, touch);\n      point.identifier = touch.identifier;\n      return point;\n    }) : [];\n  };\n  var ε = 1e-6, ε2 = ε * ε, π = Math.PI, τ = 2 * π, τε = τ - ε, halfπ = π / 2, d3_radians = π / 180, d3_degrees = 180 / π;\n  function d3_sgn(x) {\n    return x > 0 ? 1 : x < 0 ? -1 : 0;\n  }\n  function d3_cross2d(a, b, c) {\n    return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n  }\n  function d3_acos(x) {\n    return x > 1 ? 0 : x < -1 ? π : Math.acos(x);\n  }\n  function d3_asin(x) {\n    return x > 1 ? halfπ : x < -1 ? -halfπ : Math.asin(x);\n  }\n  function d3_sinh(x) {\n    return ((x = Math.exp(x)) - 1 / x) / 2;\n  }\n  function d3_cosh(x) {\n    return ((x = Math.exp(x)) + 1 / x) / 2;\n  }\n  function d3_tanh(x) {\n    return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n  }\n  function d3_haversin(x) {\n    return (x = Math.sin(x / 2)) * x;\n  }\n  var ρ = Math.SQRT2, ρ2 = 2, ρ4 = 4;\n  d3.interpolateZoom = function(p0, p1) {\n    var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2], dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, i, S;\n    if (d2 < ε2) {\n      S = Math.log(w1 / w0) / ρ;\n      i = function(t) {\n        return [ ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(ρ * t * S) ];\n      };\n    } else {\n      var d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + ρ4 * d2) / (2 * w0 * ρ2 * d1), b1 = (w1 * w1 - w0 * w0 - ρ4 * d2) / (2 * w1 * ρ2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n      S = (r1 - r0) / ρ;\n      i = function(t) {\n        var s = t * S, coshr0 = d3_cosh(r0), u = w0 / (ρ2 * d1) * (coshr0 * d3_tanh(ρ * s + r0) - d3_sinh(r0));\n        return [ ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / d3_cosh(ρ * s + r0) ];\n      };\n    }\n    i.duration = S * 1e3;\n    return i;\n  };\n  d3.behavior.zoom = function() {\n    var view = {\n      x: 0,\n      y: 0,\n      k: 1\n    }, translate0, center0, center, size = [ 960, 500 ], scaleExtent = d3_behavior_zoomInfinity, duration = 250, zooming = 0, mousedown = \"mousedown.zoom\", mousemove = \"mousemove.zoom\", mouseup = \"mouseup.zoom\", mousewheelTimer, touchstart = \"touchstart.zoom\", touchtime, event = d3_eventDispatch(zoom, \"zoomstart\", \"zoom\", \"zoomend\"), x0, x1, y0, y1;\n    if (!d3_behavior_zoomWheel) {\n      d3_behavior_zoomWheel = \"onwheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n        return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1);\n      }, \"wheel\") : \"onmousewheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n        return d3.event.wheelDelta;\n      }, \"mousewheel\") : (d3_behavior_zoomDelta = function() {\n        return -d3.event.detail;\n      }, \"MozMousePixelScroll\");\n    }\n    function zoom(g) {\n      g.on(mousedown, mousedowned).on(d3_behavior_zoomWheel + \".zoom\", mousewheeled).on(\"dblclick.zoom\", dblclicked).on(touchstart, touchstarted);\n    }\n    zoom.event = function(g) {\n      g.each(function() {\n        var dispatch = event.of(this, arguments), view1 = view;\n        if (d3_transitionInheritId) {\n          d3.select(this).transition().each(\"start.zoom\", function() {\n            view = this.__chart__ || {\n              x: 0,\n              y: 0,\n              k: 1\n            };\n            zoomstarted(dispatch);\n          }).tween(\"zoom:zoom\", function() {\n            var dx = size[0], dy = size[1], cx = center0 ? center0[0] : dx / 2, cy = center0 ? center0[1] : dy / 2, i = d3.interpolateZoom([ (cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k ], [ (cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k ]);\n            return function(t) {\n              var l = i(t), k = dx / l[2];\n              this.__chart__ = view = {\n                x: cx - l[0] * k,\n                y: cy - l[1] * k,\n                k: k\n              };\n              zoomed(dispatch);\n            };\n          }).each(\"interrupt.zoom\", function() {\n            zoomended(dispatch);\n          }).each(\"end.zoom\", function() {\n            zoomended(dispatch);\n          });\n        } else {\n          this.__chart__ = view;\n          zoomstarted(dispatch);\n          zoomed(dispatch);\n          zoomended(dispatch);\n        }\n      });\n    };\n    zoom.translate = function(_) {\n      if (!arguments.length) return [ view.x, view.y ];\n      view = {\n        x: +_[0],\n        y: +_[1],\n        k: view.k\n      };\n      rescale();\n      return zoom;\n    };\n    zoom.scale = function(_) {\n      if (!arguments.length) return view.k;\n      view = {\n        x: view.x,\n        y: view.y,\n        k: null\n      };\n      scaleTo(+_);\n      rescale();\n      return zoom;\n    };\n    zoom.scaleExtent = function(_) {\n      if (!arguments.length) return scaleExtent;\n      scaleExtent = _ == null ? d3_behavior_zoomInfinity : [ +_[0], +_[1] ];\n      return zoom;\n    };\n    zoom.center = function(_) {\n      if (!arguments.length) return center;\n      center = _ && [ +_[0], +_[1] ];\n      return zoom;\n    };\n    zoom.size = function(_) {\n      if (!arguments.length) return size;\n      size = _ && [ +_[0], +_[1] ];\n      return zoom;\n    };\n    zoom.duration = function(_) {\n      if (!arguments.length) return duration;\n      duration = +_;\n      return zoom;\n    };\n    zoom.x = function(z) {\n      if (!arguments.length) return x1;\n      x1 = z;\n      x0 = z.copy();\n      view = {\n        x: 0,\n        y: 0,\n        k: 1\n      };\n      return zoom;\n    };\n    zoom.y = function(z) {\n      if (!arguments.length) return y1;\n      y1 = z;\n      y0 = z.copy();\n      view = {\n        x: 0,\n        y: 0,\n        k: 1\n      };\n      return zoom;\n    };\n    function location(p) {\n      return [ (p[0] - view.x) / view.k, (p[1] - view.y) / view.k ];\n    }\n    function point(l) {\n      return [ l[0] * view.k + view.x, l[1] * view.k + view.y ];\n    }\n    function scaleTo(s) {\n      view.k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s));\n    }\n    function translateTo(p, l) {\n      l = point(l);\n      view.x += p[0] - l[0];\n      view.y += p[1] - l[1];\n    }\n    function zoomTo(that, p, l, k) {\n      that.__chart__ = {\n        x: view.x,\n        y: view.y,\n        k: view.k\n      };\n      scaleTo(Math.pow(2, k));\n      translateTo(center0 = p, l);\n      that = d3.select(that);\n      if (duration > 0) that = that.transition().duration(duration);\n      that.call(zoom.event);\n    }\n    function rescale() {\n      if (x1) x1.domain(x0.range().map(function(x) {\n        return (x - view.x) / view.k;\n      }).map(x0.invert));\n      if (y1) y1.domain(y0.range().map(function(y) {\n        return (y - view.y) / view.k;\n      }).map(y0.invert));\n    }\n    function zoomstarted(dispatch) {\n      if (!zooming++) dispatch({\n        type: \"zoomstart\"\n      });\n    }\n    function zoomed(dispatch) {\n      rescale();\n      dispatch({\n        type: \"zoom\",\n        scale: view.k,\n        translate: [ view.x, view.y ]\n      });\n    }\n    function zoomended(dispatch) {\n      if (!--zooming) dispatch({\n        type: \"zoomend\"\n      }), center0 = null;\n    }\n    function mousedowned() {\n      var that = this, dispatch = event.of(that, arguments), dragged = 0, subject = d3.select(d3_window(that)).on(mousemove, moved).on(mouseup, ended), location0 = location(d3.mouse(that)), dragRestore = d3_event_dragSuppress(that);\n      d3_selection_interrupt.call(that);\n      zoomstarted(dispatch);\n      function moved() {\n        dragged = 1;\n        translateTo(d3.mouse(that), location0);\n        zoomed(dispatch);\n      }\n      function ended() {\n        subject.on(mousemove, null).on(mouseup, null);\n        dragRestore(dragged);\n        zoomended(dispatch);\n      }\n    }\n    function touchstarted() {\n      var that = this, dispatch = event.of(that, arguments), locations0 = {}, distance0 = 0, scale0, zoomName = \".zoom-\" + d3.event.changedTouches[0].identifier, touchmove = \"touchmove\" + zoomName, touchend = \"touchend\" + zoomName, targets = [], subject = d3.select(that), dragRestore = d3_event_dragSuppress(that);\n      started();\n      zoomstarted(dispatch);\n      subject.on(mousedown, null).on(touchstart, started);\n      function relocate() {\n        var touches = d3.touches(that);\n        scale0 = view.k;\n        touches.forEach(function(t) {\n          if (t.identifier in locations0) locations0[t.identifier] = location(t);\n        });\n        return touches;\n      }\n      function started() {\n        var target = d3.event.target;\n        d3.select(target).on(touchmove, moved).on(touchend, ended);\n        targets.push(target);\n        var changed = d3.event.changedTouches;\n        for (var i = 0, n = changed.length; i < n; ++i) {\n          locations0[changed[i].identifier] = null;\n        }\n        var touches = relocate(), now = Date.now();\n        if (touches.length === 1) {\n          if (now - touchtime < 500) {\n            var p = touches[0];\n            zoomTo(that, p, locations0[p.identifier], Math.floor(Math.log(view.k) / Math.LN2) + 1);\n            d3_eventPreventDefault();\n          }\n          touchtime = now;\n        } else if (touches.length > 1) {\n          var p = touches[0], q = touches[1], dx = p[0] - q[0], dy = p[1] - q[1];\n          distance0 = dx * dx + dy * dy;\n        }\n      }\n      function moved() {\n        var touches = d3.touches(that), p0, l0, p1, l1;\n        d3_selection_interrupt.call(that);\n        for (var i = 0, n = touches.length; i < n; ++i, l1 = null) {\n          p1 = touches[i];\n          if (l1 = locations0[p1.identifier]) {\n            if (l0) break;\n            p0 = p1, l0 = l1;\n          }\n        }\n        if (l1) {\n          var distance1 = (distance1 = p1[0] - p0[0]) * distance1 + (distance1 = p1[1] - p0[1]) * distance1, scale1 = distance0 && Math.sqrt(distance1 / distance0);\n          p0 = [ (p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2 ];\n          l0 = [ (l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2 ];\n          scaleTo(scale1 * scale0);\n        }\n        touchtime = null;\n        translateTo(p0, l0);\n        zoomed(dispatch);\n      }\n      function ended() {\n        if (d3.event.touches.length) {\n          var changed = d3.event.changedTouches;\n          for (var i = 0, n = changed.length; i < n; ++i) {\n            delete locations0[changed[i].identifier];\n          }\n          for (var identifier in locations0) {\n            return void relocate();\n          }\n        }\n        d3.selectAll(targets).on(zoomName, null);\n        subject.on(mousedown, mousedowned).on(touchstart, touchstarted);\n        dragRestore();\n        zoomended(dispatch);\n      }\n    }\n    function mousewheeled() {\n      var dispatch = event.of(this, arguments);\n      if (mousewheelTimer) clearTimeout(mousewheelTimer); else d3_selection_interrupt.call(this), \n      translate0 = location(center0 = center || d3.mouse(this)), zoomstarted(dispatch);\n      mousewheelTimer = setTimeout(function() {\n        mousewheelTimer = null;\n        zoomended(dispatch);\n      }, 50);\n      d3_eventPreventDefault();\n      scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * view.k);\n      translateTo(center0, translate0);\n      zoomed(dispatch);\n    }\n    function dblclicked() {\n      var p = d3.mouse(this), k = Math.log(view.k) / Math.LN2;\n      zoomTo(this, p, location(p), d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1);\n    }\n    return d3.rebind(zoom, event, \"on\");\n  };\n  var d3_behavior_zoomInfinity = [ 0, Infinity ], d3_behavior_zoomDelta, d3_behavior_zoomWheel;\n  d3.color = d3_color;\n  function d3_color() {}\n  d3_color.prototype.toString = function() {\n    return this.rgb() + \"\";\n  };\n  d3.hsl = d3_hsl;\n  function d3_hsl(h, s, l) {\n    return this instanceof d3_hsl ? void (this.h = +h, this.s = +s, this.l = +l) : arguments.length < 2 ? h instanceof d3_hsl ? new d3_hsl(h.h, h.s, h.l) : d3_rgb_parse(\"\" + h, d3_rgb_hsl, d3_hsl) : new d3_hsl(h, s, l);\n  }\n  var d3_hslPrototype = d3_hsl.prototype = new d3_color();\n  d3_hslPrototype.brighter = function(k) {\n    k = Math.pow(.7, arguments.length ? k : 1);\n    return new d3_hsl(this.h, this.s, this.l / k);\n  };\n  d3_hslPrototype.darker = function(k) {\n    k = Math.pow(.7, arguments.length ? k : 1);\n    return new d3_hsl(this.h, this.s, k * this.l);\n  };\n  d3_hslPrototype.rgb = function() {\n    return d3_hsl_rgb(this.h, this.s, this.l);\n  };\n  function d3_hsl_rgb(h, s, l) {\n    var m1, m2;\n    h = isNaN(h) ? 0 : (h %= 360) < 0 ? h + 360 : h;\n    s = isNaN(s) ? 0 : s < 0 ? 0 : s > 1 ? 1 : s;\n    l = l < 0 ? 0 : l > 1 ? 1 : l;\n    m2 = l <= .5 ? l * (1 + s) : l + s - l * s;\n    m1 = 2 * l - m2;\n    function v(h) {\n      if (h > 360) h -= 360; else if (h < 0) h += 360;\n      if (h < 60) return m1 + (m2 - m1) * h / 60;\n      if (h < 180) return m2;\n      if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60;\n      return m1;\n    }\n    function vv(h) {\n      return Math.round(v(h) * 255);\n    }\n    return new d3_rgb(vv(h + 120), vv(h), vv(h - 120));\n  }\n  d3.hcl = d3_hcl;\n  function d3_hcl(h, c, l) {\n    return this instanceof d3_hcl ? void (this.h = +h, this.c = +c, this.l = +l) : arguments.length < 2 ? h instanceof d3_hcl ? new d3_hcl(h.h, h.c, h.l) : h instanceof d3_lab ? d3_lab_hcl(h.l, h.a, h.b) : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b) : new d3_hcl(h, c, l);\n  }\n  var d3_hclPrototype = d3_hcl.prototype = new d3_color();\n  d3_hclPrototype.brighter = function(k) {\n    return new d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));\n  };\n  d3_hclPrototype.darker = function(k) {\n    return new d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));\n  };\n  d3_hclPrototype.rgb = function() {\n    return d3_hcl_lab(this.h, this.c, this.l).rgb();\n  };\n  function d3_hcl_lab(h, c, l) {\n    if (isNaN(h)) h = 0;\n    if (isNaN(c)) c = 0;\n    return new d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);\n  }\n  d3.lab = d3_lab;\n  function d3_lab(l, a, b) {\n    return this instanceof d3_lab ? void (this.l = +l, this.a = +a, this.b = +b) : arguments.length < 2 ? l instanceof d3_lab ? new d3_lab(l.l, l.a, l.b) : l instanceof d3_hcl ? d3_hcl_lab(l.h, l.c, l.l) : d3_rgb_lab((l = d3_rgb(l)).r, l.g, l.b) : new d3_lab(l, a, b);\n  }\n  var d3_lab_K = 18;\n  var d3_lab_X = .95047, d3_lab_Y = 1, d3_lab_Z = 1.08883;\n  var d3_labPrototype = d3_lab.prototype = new d3_color();\n  d3_labPrototype.brighter = function(k) {\n    return new d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n  };\n  d3_labPrototype.darker = function(k) {\n    return new d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n  };\n  d3_labPrototype.rgb = function() {\n    return d3_lab_rgb(this.l, this.a, this.b);\n  };\n  function d3_lab_rgb(l, a, b) {\n    var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200;\n    x = d3_lab_xyz(x) * d3_lab_X;\n    y = d3_lab_xyz(y) * d3_lab_Y;\n    z = d3_lab_xyz(z) * d3_lab_Z;\n    return new d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - .4985314 * z), d3_xyz_rgb(-.969266 * x + 1.8760108 * y + .041556 * z), d3_xyz_rgb(.0556434 * x - .2040259 * y + 1.0572252 * z));\n  }\n  function d3_lab_hcl(l, a, b) {\n    return l > 0 ? new d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l) : new d3_hcl(NaN, NaN, l);\n  }\n  function d3_lab_xyz(x) {\n    return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037;\n  }\n  function d3_xyz_lab(x) {\n    return x > .008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29;\n  }\n  function d3_xyz_rgb(r) {\n    return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055));\n  }\n  d3.rgb = d3_rgb;\n  function d3_rgb(r, g, b) {\n    return this instanceof d3_rgb ? void (this.r = ~~r, this.g = ~~g, this.b = ~~b) : arguments.length < 2 ? r instanceof d3_rgb ? new d3_rgb(r.r, r.g, r.b) : d3_rgb_parse(\"\" + r, d3_rgb, d3_hsl_rgb) : new d3_rgb(r, g, b);\n  }\n  function d3_rgbNumber(value) {\n    return new d3_rgb(value >> 16, value >> 8 & 255, value & 255);\n  }\n  function d3_rgbString(value) {\n    return d3_rgbNumber(value) + \"\";\n  }\n  var d3_rgbPrototype = d3_rgb.prototype = new d3_color();\n  d3_rgbPrototype.brighter = function(k) {\n    k = Math.pow(.7, arguments.length ? k : 1);\n    var r = this.r, g = this.g, b = this.b, i = 30;\n    if (!r && !g && !b) return new d3_rgb(i, i, i);\n    if (r && r < i) r = i;\n    if (g && g < i) g = i;\n    if (b && b < i) b = i;\n    return new d3_rgb(Math.min(255, r / k), Math.min(255, g / k), Math.min(255, b / k));\n  };\n  d3_rgbPrototype.darker = function(k) {\n    k = Math.pow(.7, arguments.length ? k : 1);\n    return new d3_rgb(k * this.r, k * this.g, k * this.b);\n  };\n  d3_rgbPrototype.hsl = function() {\n    return d3_rgb_hsl(this.r, this.g, this.b);\n  };\n  d3_rgbPrototype.toString = function() {\n    return \"#\" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b);\n  };\n  function d3_rgb_hex(v) {\n    return v < 16 ? \"0\" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16);\n  }\n  function d3_rgb_parse(format, rgb, hsl) {\n    var r = 0, g = 0, b = 0, m1, m2, color;\n    m1 = /([a-z]+)\\((.*)\\)/.exec(format = format.toLowerCase());\n    if (m1) {\n      m2 = m1[2].split(\",\");\n      switch (m1[1]) {\n       case \"hsl\":\n        {\n          return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100);\n        }\n\n       case \"rgb\":\n        {\n          return rgb(d3_rgb_parseNumber(m2[0]), d3_rgb_parseNumber(m2[1]), d3_rgb_parseNumber(m2[2]));\n        }\n      }\n    }\n    if (color = d3_rgb_names.get(format)) {\n      return rgb(color.r, color.g, color.b);\n    }\n    if (format != null && format.charAt(0) === \"#\" && !isNaN(color = parseInt(format.slice(1), 16))) {\n      if (format.length === 4) {\n        r = (color & 3840) >> 4;\n        r = r >> 4 | r;\n        g = color & 240;\n        g = g >> 4 | g;\n        b = color & 15;\n        b = b << 4 | b;\n      } else if (format.length === 7) {\n        r = (color & 16711680) >> 16;\n        g = (color & 65280) >> 8;\n        b = color & 255;\n      }\n    }\n    return rgb(r, g, b);\n  }\n  function d3_rgb_hsl(r, g, b) {\n    var min = Math.min(r /= 255, g /= 255, b /= 255), max = Math.max(r, g, b), d = max - min, h, s, l = (max + min) / 2;\n    if (d) {\n      s = l < .5 ? d / (max + min) : d / (2 - max - min);\n      if (r == max) h = (g - b) / d + (g < b ? 6 : 0); else if (g == max) h = (b - r) / d + 2; else h = (r - g) / d + 4;\n      h *= 60;\n    } else {\n      h = NaN;\n      s = l > 0 && l < 1 ? 0 : h;\n    }\n    return new d3_hsl(h, s, l);\n  }\n  function d3_rgb_lab(r, g, b) {\n    r = d3_rgb_xyz(r);\n    g = d3_rgb_xyz(g);\n    b = d3_rgb_xyz(b);\n    var x = d3_xyz_lab((.4124564 * r + .3575761 * g + .1804375 * b) / d3_lab_X), y = d3_xyz_lab((.2126729 * r + .7151522 * g + .072175 * b) / d3_lab_Y), z = d3_xyz_lab((.0193339 * r + .119192 * g + .9503041 * b) / d3_lab_Z);\n    return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z));\n  }\n  function d3_rgb_xyz(r) {\n    return (r /= 255) <= .04045 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4);\n  }\n  function d3_rgb_parseNumber(c) {\n    var f = parseFloat(c);\n    return c.charAt(c.length - 1) === \"%\" ? Math.round(f * 2.55) : f;\n  }\n  var d3_rgb_names = d3.map({\n    aliceblue: 15792383,\n    antiquewhite: 16444375,\n    aqua: 65535,\n    aquamarine: 8388564,\n    azure: 15794175,\n    beige: 16119260,\n    bisque: 16770244,\n    black: 0,\n    blanchedalmond: 16772045,\n    blue: 255,\n    blueviolet: 9055202,\n    brown: 10824234,\n    burlywood: 14596231,\n    cadetblue: 6266528,\n    chartreuse: 8388352,\n    chocolate: 13789470,\n    coral: 16744272,\n    cornflowerblue: 6591981,\n    cornsilk: 16775388,\n    crimson: 14423100,\n    cyan: 65535,\n    darkblue: 139,\n    darkcyan: 35723,\n    darkgoldenrod: 12092939,\n    darkgray: 11119017,\n    darkgreen: 25600,\n    darkgrey: 11119017,\n    darkkhaki: 12433259,\n    darkmagenta: 9109643,\n    darkolivegreen: 5597999,\n    darkorange: 16747520,\n    darkorchid: 10040012,\n    darkred: 9109504,\n    darksalmon: 15308410,\n    darkseagreen: 9419919,\n    darkslateblue: 4734347,\n    darkslategray: 3100495,\n    darkslategrey: 3100495,\n    darkturquoise: 52945,\n    darkviolet: 9699539,\n    deeppink: 16716947,\n    deepskyblue: 49151,\n    dimgray: 6908265,\n    dimgrey: 6908265,\n    dodgerblue: 2003199,\n    firebrick: 11674146,\n    floralwhite: 16775920,\n    forestgreen: 2263842,\n    fuchsia: 16711935,\n    gainsboro: 14474460,\n    ghostwhite: 16316671,\n    gold: 16766720,\n    goldenrod: 14329120,\n    gray: 8421504,\n    green: 32768,\n    greenyellow: 11403055,\n    grey: 8421504,\n    honeydew: 15794160,\n    hotpink: 16738740,\n    indianred: 13458524,\n    indigo: 4915330,\n    ivory: 16777200,\n    khaki: 15787660,\n    lavender: 15132410,\n    lavenderblush: 16773365,\n    lawngreen: 8190976,\n    lemonchiffon: 16775885,\n    lightblue: 11393254,\n    lightcoral: 15761536,\n    lightcyan: 14745599,\n    lightgoldenrodyellow: 16448210,\n    lightgray: 13882323,\n    lightgreen: 9498256,\n    lightgrey: 13882323,\n    lightpink: 16758465,\n    lightsalmon: 16752762,\n    lightseagreen: 2142890,\n    lightskyblue: 8900346,\n    lightslategray: 7833753,\n    lightslategrey: 7833753,\n    lightsteelblue: 11584734,\n    lightyellow: 16777184,\n    lime: 65280,\n    limegreen: 3329330,\n    linen: 16445670,\n    magenta: 16711935,\n    maroon: 8388608,\n    mediumaquamarine: 6737322,\n    mediumblue: 205,\n    mediumorchid: 12211667,\n    mediumpurple: 9662683,\n    mediumseagreen: 3978097,\n    mediumslateblue: 8087790,\n    mediumspringgreen: 64154,\n    mediumturquoise: 4772300,\n    mediumvioletred: 13047173,\n    midnightblue: 1644912,\n    mintcream: 16121850,\n    mistyrose: 16770273,\n    moccasin: 16770229,\n    navajowhite: 16768685,\n    navy: 128,\n    oldlace: 16643558,\n    olive: 8421376,\n    olivedrab: 7048739,\n    orange: 16753920,\n    orangered: 16729344,\n    orchid: 14315734,\n    palegoldenrod: 15657130,\n    palegreen: 10025880,\n    paleturquoise: 11529966,\n    palevioletred: 14381203,\n    papayawhip: 16773077,\n    peachpuff: 16767673,\n    peru: 13468991,\n    pink: 16761035,\n    plum: 14524637,\n    powderblue: 11591910,\n    purple: 8388736,\n    rebeccapurple: 6697881,\n    red: 16711680,\n    rosybrown: 12357519,\n    royalblue: 4286945,\n    saddlebrown: 9127187,\n    salmon: 16416882,\n    sandybrown: 16032864,\n    seagreen: 3050327,\n    seashell: 16774638,\n    sienna: 10506797,\n    silver: 12632256,\n    skyblue: 8900331,\n    slateblue: 6970061,\n    slategray: 7372944,\n    slategrey: 7372944,\n    snow: 16775930,\n    springgreen: 65407,\n    steelblue: 4620980,\n    tan: 13808780,\n    teal: 32896,\n    thistle: 14204888,\n    tomato: 16737095,\n    turquoise: 4251856,\n    violet: 15631086,\n    wheat: 16113331,\n    white: 16777215,\n    whitesmoke: 16119285,\n    yellow: 16776960,\n    yellowgreen: 10145074\n  });\n  d3_rgb_names.forEach(function(key, value) {\n    d3_rgb_names.set(key, d3_rgbNumber(value));\n  });\n  function d3_functor(v) {\n    return typeof v === \"function\" ? v : function() {\n      return v;\n    };\n  }\n  d3.functor = d3_functor;\n  d3.xhr = d3_xhrType(d3_identity);\n  function d3_xhrType(response) {\n    return function(url, mimeType, callback) {\n      if (arguments.length === 2 && typeof mimeType === \"function\") callback = mimeType, \n      mimeType = null;\n      return d3_xhr(url, mimeType, response, callback);\n    };\n  }\n  function d3_xhr(url, mimeType, response, callback) {\n    var xhr = {}, dispatch = d3.dispatch(\"beforesend\", \"progress\", \"load\", \"error\"), headers = {}, request = new XMLHttpRequest(), responseType = null;\n    if (this.XDomainRequest && !(\"withCredentials\" in request) && /^(http(s)?:)?\\/\\//.test(url)) request = new XDomainRequest();\n    \"onload\" in request ? request.onload = request.onerror = respond : request.onreadystatechange = function() {\n      request.readyState > 3 && respond();\n    };\n    function respond() {\n      var status = request.status, result;\n      if (!status && d3_xhrHasResponse(request) || status >= 200 && status < 300 || status === 304) {\n        try {\n          result = response.call(xhr, request);\n        } catch (e) {\n          dispatch.error.call(xhr, e);\n          return;\n        }\n        dispatch.load.call(xhr, result);\n      } else {\n        dispatch.error.call(xhr, request);\n      }\n    }\n    request.onprogress = function(event) {\n      var o = d3.event;\n      d3.event = event;\n      try {\n        dispatch.progress.call(xhr, request);\n      } finally {\n        d3.event = o;\n      }\n    };\n    xhr.header = function(name, value) {\n      name = (name + \"\").toLowerCase();\n      if (arguments.length < 2) return headers[name];\n      if (value == null) delete headers[name]; else headers[name] = value + \"\";\n      return xhr;\n    };\n    xhr.mimeType = function(value) {\n      if (!arguments.length) return mimeType;\n      mimeType = value == null ? null : value + \"\";\n      return xhr;\n    };\n    xhr.responseType = function(value) {\n      if (!arguments.length) return responseType;\n      responseType = value;\n      return xhr;\n    };\n    xhr.response = function(value) {\n      response = value;\n      return xhr;\n    };\n    [ \"get\", \"post\" ].forEach(function(method) {\n      xhr[method] = function() {\n        return xhr.send.apply(xhr, [ method ].concat(d3_array(arguments)));\n      };\n    });\n    xhr.send = function(method, data, callback) {\n      if (arguments.length === 2 && typeof data === \"function\") callback = data, data = null;\n      request.open(method, url, true);\n      if (mimeType != null && !(\"accept\" in headers)) headers[\"accept\"] = mimeType + \",*/*\";\n      if (request.setRequestHeader) for (var name in headers) request.setRequestHeader(name, headers[name]);\n      if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType);\n      if (responseType != null) request.responseType = responseType;\n      if (callback != null) xhr.on(\"error\", callback).on(\"load\", function(request) {\n        callback(null, request);\n      });\n      dispatch.beforesend.call(xhr, request);\n      request.send(data == null ? null : data);\n      return xhr;\n    };\n    xhr.abort = function() {\n      request.abort();\n      return xhr;\n    };\n    d3.rebind(xhr, dispatch, \"on\");\n    return callback == null ? xhr : xhr.get(d3_xhr_fixCallback(callback));\n  }\n  function d3_xhr_fixCallback(callback) {\n    return callback.length === 1 ? function(error, request) {\n      callback(error == null ? request : null);\n    } : callback;\n  }\n  function d3_xhrHasResponse(request) {\n    var type = request.responseType;\n    return type && type !== \"text\" ? request.response : request.responseText;\n  }\n  d3.dsv = function(delimiter, mimeType) {\n    var reFormat = new RegExp('[\"' + delimiter + \"\\n]\"), delimiterCode = delimiter.charCodeAt(0);\n    function dsv(url, row, callback) {\n      if (arguments.length < 3) callback = row, row = null;\n      var xhr = d3_xhr(url, mimeType, row == null ? response : typedResponse(row), callback);\n      xhr.row = function(_) {\n        return arguments.length ? xhr.response((row = _) == null ? response : typedResponse(_)) : row;\n      };\n      return xhr;\n    }\n    function response(request) {\n      return dsv.parse(request.responseText);\n    }\n    function typedResponse(f) {\n      return function(request) {\n        return dsv.parse(request.responseText, f);\n      };\n    }\n    dsv.parse = function(text, f) {\n      var o;\n      return dsv.parseRows(text, function(row, i) {\n        if (o) return o(row, i - 1);\n        var a = new Function(\"d\", \"return {\" + row.map(function(name, i) {\n          return JSON.stringify(name) + \": d[\" + i + \"]\";\n        }).join(\",\") + \"}\");\n        o = f ? function(row, i) {\n          return f(a(row), i);\n        } : a;\n      });\n    };\n    dsv.parseRows = function(text, f) {\n      var EOL = {}, EOF = {}, rows = [], N = text.length, I = 0, n = 0, t, eol;\n      function token() {\n        if (I >= N) return EOF;\n        if (eol) return eol = false, EOL;\n        var j = I;\n        if (text.charCodeAt(j) === 34) {\n          var i = j;\n          while (i++ < N) {\n            if (text.charCodeAt(i) === 34) {\n              if (text.charCodeAt(i + 1) !== 34) break;\n              ++i;\n            }\n          }\n          I = i + 2;\n          var c = text.charCodeAt(i + 1);\n          if (c === 13) {\n            eol = true;\n            if (text.charCodeAt(i + 2) === 10) ++I;\n          } else if (c === 10) {\n            eol = true;\n          }\n          return text.slice(j + 1, i).replace(/\"\"/g, '\"');\n        }\n        while (I < N) {\n          var c = text.charCodeAt(I++), k = 1;\n          if (c === 10) eol = true; else if (c === 13) {\n            eol = true;\n            if (text.charCodeAt(I) === 10) ++I, ++k;\n          } else if (c !== delimiterCode) continue;\n          return text.slice(j, I - k);\n        }\n        return text.slice(j);\n      }\n      while ((t = token()) !== EOF) {\n        var a = [];\n        while (t !== EOL && t !== EOF) {\n          a.push(t);\n          t = token();\n        }\n        if (f && (a = f(a, n++)) == null) continue;\n        rows.push(a);\n      }\n      return rows;\n    };\n    dsv.format = function(rows) {\n      if (Array.isArray(rows[0])) return dsv.formatRows(rows);\n      var fieldSet = new d3_Set(), fields = [];\n      rows.forEach(function(row) {\n        for (var field in row) {\n          if (!fieldSet.has(field)) {\n            fields.push(fieldSet.add(field));\n          }\n        }\n      });\n      return [ fields.map(formatValue).join(delimiter) ].concat(rows.map(function(row) {\n        return fields.map(function(field) {\n          return formatValue(row[field]);\n        }).join(delimiter);\n      })).join(\"\\n\");\n    };\n    dsv.formatRows = function(rows) {\n      return rows.map(formatRow).join(\"\\n\");\n    };\n    function formatRow(row) {\n      return row.map(formatValue).join(delimiter);\n    }\n    function formatValue(text) {\n      return reFormat.test(text) ? '\"' + text.replace(/\\\"/g, '\"\"') + '\"' : text;\n    }\n    return dsv;\n  };\n  d3.csv = d3.dsv(\",\", \"text/csv\");\n  d3.tsv = d3.dsv(\"\t\", \"text/tab-separated-values\");\n  var d3_timer_queueHead, d3_timer_queueTail, d3_timer_interval, d3_timer_timeout, d3_timer_frame = this[d3_vendorSymbol(this, \"requestAnimationFrame\")] || function(callback) {\n    setTimeout(callback, 17);\n  };\n  d3.timer = function() {\n    d3_timer.apply(this, arguments);\n  };\n  function d3_timer(callback, delay, then) {\n    var n = arguments.length;\n    if (n < 2) delay = 0;\n    if (n < 3) then = Date.now();\n    var time = then + delay, timer = {\n      c: callback,\n      t: time,\n      n: null\n    };\n    if (d3_timer_queueTail) d3_timer_queueTail.n = timer; else d3_timer_queueHead = timer;\n    d3_timer_queueTail = timer;\n    if (!d3_timer_interval) {\n      d3_timer_timeout = clearTimeout(d3_timer_timeout);\n      d3_timer_interval = 1;\n      d3_timer_frame(d3_timer_step);\n    }\n    return timer;\n  }\n  function d3_timer_step() {\n    var now = d3_timer_mark(), delay = d3_timer_sweep() - now;\n    if (delay > 24) {\n      if (isFinite(delay)) {\n        clearTimeout(d3_timer_timeout);\n        d3_timer_timeout = setTimeout(d3_timer_step, delay);\n      }\n      d3_timer_interval = 0;\n    } else {\n      d3_timer_interval = 1;\n      d3_timer_frame(d3_timer_step);\n    }\n  }\n  d3.timer.flush = function() {\n    d3_timer_mark();\n    d3_timer_sweep();\n  };\n  function d3_timer_mark() {\n    var now = Date.now(), timer = d3_timer_queueHead;\n    while (timer) {\n      if (now >= timer.t && timer.c(now - timer.t)) timer.c = null;\n      timer = timer.n;\n    }\n    return now;\n  }\n  function d3_timer_sweep() {\n    var t0, t1 = d3_timer_queueHead, time = Infinity;\n    while (t1) {\n      if (t1.c) {\n        if (t1.t < time) time = t1.t;\n        t1 = (t0 = t1).n;\n      } else {\n        t1 = t0 ? t0.n = t1.n : d3_timer_queueHead = t1.n;\n      }\n    }\n    d3_timer_queueTail = t0;\n    return time;\n  }\n  function d3_format_precision(x, p) {\n    return p - (x ? Math.ceil(Math.log(x) / Math.LN10) : 1);\n  }\n  d3.round = function(x, n) {\n    return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x);\n  };\n  var d3_formatPrefixes = [ \"y\", \"z\", \"a\", \"f\", \"p\", \"n\", \"µ\", \"m\", \"\", \"k\", \"M\", \"G\", \"T\", \"P\", \"E\", \"Z\", \"Y\" ].map(d3_formatPrefix);\n  d3.formatPrefix = function(value, precision) {\n    var i = 0;\n    if (value = +value) {\n      if (value < 0) value *= -1;\n      if (precision) value = d3.round(value, d3_format_precision(value, precision));\n      i = 1 + Math.floor(1e-12 + Math.log(value) / Math.LN10);\n      i = Math.max(-24, Math.min(24, Math.floor((i - 1) / 3) * 3));\n    }\n    return d3_formatPrefixes[8 + i / 3];\n  };\n  function d3_formatPrefix(d, i) {\n    var k = Math.pow(10, abs(8 - i) * 3);\n    return {\n      scale: i > 8 ? function(d) {\n        return d / k;\n      } : function(d) {\n        return d * k;\n      },\n      symbol: d\n    };\n  }\n  function d3_locale_numberFormat(locale) {\n    var locale_decimal = locale.decimal, locale_thousands = locale.thousands, locale_grouping = locale.grouping, locale_currency = locale.currency, formatGroup = locale_grouping && locale_thousands ? function(value, width) {\n      var i = value.length, t = [], j = 0, g = locale_grouping[0], length = 0;\n      while (i > 0 && g > 0) {\n        if (length + g + 1 > width) g = Math.max(1, width - length);\n        t.push(value.substring(i -= g, i + g));\n        if ((length += g + 1) > width) break;\n        g = locale_grouping[j = (j + 1) % locale_grouping.length];\n      }\n      return t.reverse().join(locale_thousands);\n    } : d3_identity;\n    return function(specifier) {\n      var match = d3_format_re.exec(specifier), fill = match[1] || \" \", align = match[2] || \">\", sign = match[3] || \"-\", symbol = match[4] || \"\", zfill = match[5], width = +match[6], comma = match[7], precision = match[8], type = match[9], scale = 1, prefix = \"\", suffix = \"\", integer = false, exponent = true;\n      if (precision) precision = +precision.substring(1);\n      if (zfill || fill === \"0\" && align === \"=\") {\n        zfill = fill = \"0\";\n        align = \"=\";\n      }\n      switch (type) {\n       case \"n\":\n        comma = true;\n        type = \"g\";\n        break;\n\n       case \"%\":\n        scale = 100;\n        suffix = \"%\";\n        type = \"f\";\n        break;\n\n       case \"p\":\n        scale = 100;\n        suffix = \"%\";\n        type = \"r\";\n        break;\n\n       case \"b\":\n       case \"o\":\n       case \"x\":\n       case \"X\":\n        if (symbol === \"#\") prefix = \"0\" + type.toLowerCase();\n\n       case \"c\":\n        exponent = false;\n\n       case \"d\":\n        integer = true;\n        precision = 0;\n        break;\n\n       case \"s\":\n        scale = -1;\n        type = \"r\";\n        break;\n      }\n      if (symbol === \"$\") prefix = locale_currency[0], suffix = locale_currency[1];\n      if (type == \"r\" && !precision) type = \"g\";\n      if (precision != null) {\n        if (type == \"g\") precision = Math.max(1, Math.min(21, precision)); else if (type == \"e\" || type == \"f\") precision = Math.max(0, Math.min(20, precision));\n      }\n      type = d3_format_types.get(type) || d3_format_typeDefault;\n      var zcomma = zfill && comma;\n      return function(value) {\n        var fullSuffix = suffix;\n        if (integer && value % 1) return \"\";\n        var negative = value < 0 || value === 0 && 1 / value < 0 ? (value = -value, \"-\") : sign === \"-\" ? \"\" : sign;\n        if (scale < 0) {\n          var unit = d3.formatPrefix(value, precision);\n          value = unit.scale(value);\n          fullSuffix = unit.symbol + suffix;\n        } else {\n          value *= scale;\n        }\n        value = type(value, precision);\n        var i = value.lastIndexOf(\".\"), before, after;\n        if (i < 0) {\n          var j = exponent ? value.lastIndexOf(\"e\") : -1;\n          if (j < 0) before = value, after = \"\"; else before = value.substring(0, j), after = value.substring(j);\n        } else {\n          before = value.substring(0, i);\n          after = locale_decimal + value.substring(i + 1);\n        }\n        if (!zfill && comma) before = formatGroup(before, Infinity);\n        var length = prefix.length + before.length + after.length + (zcomma ? 0 : negative.length), padding = length < width ? new Array(length = width - length + 1).join(fill) : \"\";\n        if (zcomma) before = formatGroup(padding + before, padding.length ? width - after.length : Infinity);\n        negative += prefix;\n        value = before + after;\n        return (align === \"<\" ? negative + value + padding : align === \">\" ? padding + negative + value : align === \"^\" ? padding.substring(0, length >>= 1) + negative + value + padding.substring(length) : negative + (zcomma ? value : padding + value)) + fullSuffix;\n      };\n    };\n  }\n  var d3_format_re = /(?:([^{])?([<>=^]))?([+\\- ])?([$#])?(0)?(\\d+)?(,)?(\\.-?\\d+)?([a-z%])?/i;\n  var d3_format_types = d3.map({\n    b: function(x) {\n      return x.toString(2);\n    },\n    c: function(x) {\n      return String.fromCharCode(x);\n    },\n    o: function(x) {\n      return x.toString(8);\n    },\n    x: function(x) {\n      return x.toString(16);\n    },\n    X: function(x) {\n      return x.toString(16).toUpperCase();\n    },\n    g: function(x, p) {\n      return x.toPrecision(p);\n    },\n    e: function(x, p) {\n      return x.toExponential(p);\n    },\n    f: function(x, p) {\n      return x.toFixed(p);\n    },\n    r: function(x, p) {\n      return (x = d3.round(x, d3_format_precision(x, p))).toFixed(Math.max(0, Math.min(20, d3_format_precision(x * (1 + 1e-15), p))));\n    }\n  });\n  function d3_format_typeDefault(x) {\n    return x + \"\";\n  }\n  var d3_time = d3.time = {}, d3_date = Date;\n  function d3_date_utc() {\n    this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]);\n  }\n  d3_date_utc.prototype = {\n    getDate: function() {\n      return this._.getUTCDate();\n    },\n    getDay: function() {\n      return this._.getUTCDay();\n    },\n    getFullYear: function() {\n      return this._.getUTCFullYear();\n    },\n    getHours: function() {\n      return this._.getUTCHours();\n    },\n    getMilliseconds: function() {\n      return this._.getUTCMilliseconds();\n    },\n    getMinutes: function() {\n      return this._.getUTCMinutes();\n    },\n    getMonth: function() {\n      return this._.getUTCMonth();\n    },\n    getSeconds: function() {\n      return this._.getUTCSeconds();\n    },\n    getTime: function() {\n      return this._.getTime();\n    },\n    getTimezoneOffset: function() {\n      return 0;\n    },\n    valueOf: function() {\n      return this._.valueOf();\n    },\n    setDate: function() {\n      d3_time_prototype.setUTCDate.apply(this._, arguments);\n    },\n    setDay: function() {\n      d3_time_prototype.setUTCDay.apply(this._, arguments);\n    },\n    setFullYear: function() {\n      d3_time_prototype.setUTCFullYear.apply(this._, arguments);\n    },\n    setHours: function() {\n      d3_time_prototype.setUTCHours.apply(this._, arguments);\n    },\n    setMilliseconds: function() {\n      d3_time_prototype.setUTCMilliseconds.apply(this._, arguments);\n    },\n    setMinutes: function() {\n      d3_time_prototype.setUTCMinutes.apply(this._, arguments);\n    },\n    setMonth: function() {\n      d3_time_prototype.setUTCMonth.apply(this._, arguments);\n    },\n    setSeconds: function() {\n      d3_time_prototype.setUTCSeconds.apply(this._, arguments);\n    },\n    setTime: function() {\n      d3_time_prototype.setTime.apply(this._, arguments);\n    }\n  };\n  var d3_time_prototype = Date.prototype;\n  function d3_time_interval(local, step, number) {\n    function round(date) {\n      var d0 = local(date), d1 = offset(d0, 1);\n      return date - d0 < d1 - date ? d0 : d1;\n    }\n    function ceil(date) {\n      step(date = local(new d3_date(date - 1)), 1);\n      return date;\n    }\n    function offset(date, k) {\n      step(date = new d3_date(+date), k);\n      return date;\n    }\n    function range(t0, t1, dt) {\n      var time = ceil(t0), times = [];\n      if (dt > 1) {\n        while (time < t1) {\n          if (!(number(time) % dt)) times.push(new Date(+time));\n          step(time, 1);\n        }\n      } else {\n        while (time < t1) times.push(new Date(+time)), step(time, 1);\n      }\n      return times;\n    }\n    function range_utc(t0, t1, dt) {\n      try {\n        d3_date = d3_date_utc;\n        var utc = new d3_date_utc();\n        utc._ = t0;\n        return range(utc, t1, dt);\n      } finally {\n        d3_date = Date;\n      }\n    }\n    local.floor = local;\n    local.round = round;\n    local.ceil = ceil;\n    local.offset = offset;\n    local.range = range;\n    var utc = local.utc = d3_time_interval_utc(local);\n    utc.floor = utc;\n    utc.round = d3_time_interval_utc(round);\n    utc.ceil = d3_time_interval_utc(ceil);\n    utc.offset = d3_time_interval_utc(offset);\n    utc.range = range_utc;\n    return local;\n  }\n  function d3_time_interval_utc(method) {\n    return function(date, k) {\n      try {\n        d3_date = d3_date_utc;\n        var utc = new d3_date_utc();\n        utc._ = date;\n        return method(utc, k)._;\n      } finally {\n        d3_date = Date;\n      }\n    };\n  }\n  d3_time.year = d3_time_interval(function(date) {\n    date = d3_time.day(date);\n    date.setMonth(0, 1);\n    return date;\n  }, function(date, offset) {\n    date.setFullYear(date.getFullYear() + offset);\n  }, function(date) {\n    return date.getFullYear();\n  });\n  d3_time.years = d3_time.year.range;\n  d3_time.years.utc = d3_time.year.utc.range;\n  d3_time.day = d3_time_interval(function(date) {\n    var day = new d3_date(2e3, 0);\n    day.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n    return day;\n  }, function(date, offset) {\n    date.setDate(date.getDate() + offset);\n  }, function(date) {\n    return date.getDate() - 1;\n  });\n  d3_time.days = d3_time.day.range;\n  d3_time.days.utc = d3_time.day.utc.range;\n  d3_time.dayOfYear = function(date) {\n    var year = d3_time.year(date);\n    return Math.floor((date - year - (date.getTimezoneOffset() - year.getTimezoneOffset()) * 6e4) / 864e5);\n  };\n  [ \"sunday\", \"monday\", \"tuesday\", \"wednesday\", \"thursday\", \"friday\", \"saturday\" ].forEach(function(day, i) {\n    i = 7 - i;\n    var interval = d3_time[day] = d3_time_interval(function(date) {\n      (date = d3_time.day(date)).setDate(date.getDate() - (date.getDay() + i) % 7);\n      return date;\n    }, function(date, offset) {\n      date.setDate(date.getDate() + Math.floor(offset) * 7);\n    }, function(date) {\n      var day = d3_time.year(date).getDay();\n      return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7) - (day !== i);\n    });\n    d3_time[day + \"s\"] = interval.range;\n    d3_time[day + \"s\"].utc = interval.utc.range;\n    d3_time[day + \"OfYear\"] = function(date) {\n      var day = d3_time.year(date).getDay();\n      return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7);\n    };\n  });\n  d3_time.week = d3_time.sunday;\n  d3_time.weeks = d3_time.sunday.range;\n  d3_time.weeks.utc = d3_time.sunday.utc.range;\n  d3_time.weekOfYear = d3_time.sundayOfYear;\n  function d3_locale_timeFormat(locale) {\n    var locale_dateTime = locale.dateTime, locale_date = locale.date, locale_time = locale.time, locale_periods = locale.periods, locale_days = locale.days, locale_shortDays = locale.shortDays, locale_months = locale.months, locale_shortMonths = locale.shortMonths;\n    function d3_time_format(template) {\n      var n = template.length;\n      function format(date) {\n        var string = [], i = -1, j = 0, c, p, f;\n        while (++i < n) {\n          if (template.charCodeAt(i) === 37) {\n            string.push(template.slice(j, i));\n            if ((p = d3_time_formatPads[c = template.charAt(++i)]) != null) c = template.charAt(++i);\n            if (f = d3_time_formats[c]) c = f(date, p == null ? c === \"e\" ? \" \" : \"0\" : p);\n            string.push(c);\n            j = i + 1;\n          }\n        }\n        string.push(template.slice(j, i));\n        return string.join(\"\");\n      }\n      format.parse = function(string) {\n        var d = {\n          y: 1900,\n          m: 0,\n          d: 1,\n          H: 0,\n          M: 0,\n          S: 0,\n          L: 0,\n          Z: null\n        }, i = d3_time_parse(d, template, string, 0);\n        if (i != string.length) return null;\n        if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n        var localZ = d.Z != null && d3_date !== d3_date_utc, date = new (localZ ? d3_date_utc : d3_date)();\n        if (\"j\" in d) date.setFullYear(d.y, 0, d.j); else if (\"W\" in d || \"U\" in d) {\n          if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n          date.setFullYear(d.y, 0, 1);\n          date.setFullYear(d.y, 0, \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (date.getDay() + 5) % 7 : d.w + d.U * 7 - (date.getDay() + 6) % 7);\n        } else date.setFullYear(d.y, d.m, d.d);\n        date.setHours(d.H + (d.Z / 100 | 0), d.M + d.Z % 100, d.S, d.L);\n        return localZ ? date._ : date;\n      };\n      format.toString = function() {\n        return template;\n      };\n      return format;\n    }\n    function d3_time_parse(date, template, string, j) {\n      var c, p, t, i = 0, n = template.length, m = string.length;\n      while (i < n) {\n        if (j >= m) return -1;\n        c = template.charCodeAt(i++);\n        if (c === 37) {\n          t = template.charAt(i++);\n          p = d3_time_parsers[t in d3_time_formatPads ? template.charAt(i++) : t];\n          if (!p || (j = p(date, string, j)) < 0) return -1;\n        } else if (c != string.charCodeAt(j++)) {\n          return -1;\n        }\n      }\n      return j;\n    }\n    d3_time_format.utc = function(template) {\n      var local = d3_time_format(template);\n      function format(date) {\n        try {\n          d3_date = d3_date_utc;\n          var utc = new d3_date();\n          utc._ = date;\n          return local(utc);\n        } finally {\n          d3_date = Date;\n        }\n      }\n      format.parse = function(string) {\n        try {\n          d3_date = d3_date_utc;\n          var date = local.parse(string);\n          return date && date._;\n        } finally {\n          d3_date = Date;\n        }\n      };\n      format.toString = local.toString;\n      return format;\n    };\n    d3_time_format.multi = d3_time_format.utc.multi = d3_time_formatMulti;\n    var d3_time_periodLookup = d3.map(), d3_time_dayRe = d3_time_formatRe(locale_days), d3_time_dayLookup = d3_time_formatLookup(locale_days), d3_time_dayAbbrevRe = d3_time_formatRe(locale_shortDays), d3_time_dayAbbrevLookup = d3_time_formatLookup(locale_shortDays), d3_time_monthRe = d3_time_formatRe(locale_months), d3_time_monthLookup = d3_time_formatLookup(locale_months), d3_time_monthAbbrevRe = d3_time_formatRe(locale_shortMonths), d3_time_monthAbbrevLookup = d3_time_formatLookup(locale_shortMonths);\n    locale_periods.forEach(function(p, i) {\n      d3_time_periodLookup.set(p.toLowerCase(), i);\n    });\n    var d3_time_formats = {\n      a: function(d) {\n        return locale_shortDays[d.getDay()];\n      },\n      A: function(d) {\n        return locale_days[d.getDay()];\n      },\n      b: function(d) {\n        return locale_shortMonths[d.getMonth()];\n      },\n      B: function(d) {\n        return locale_months[d.getMonth()];\n      },\n      c: d3_time_format(locale_dateTime),\n      d: function(d, p) {\n        return d3_time_formatPad(d.getDate(), p, 2);\n      },\n      e: function(d, p) {\n        return d3_time_formatPad(d.getDate(), p, 2);\n      },\n      H: function(d, p) {\n        return d3_time_formatPad(d.getHours(), p, 2);\n      },\n      I: function(d, p) {\n        return d3_time_formatPad(d.getHours() % 12 || 12, p, 2);\n      },\n      j: function(d, p) {\n        return d3_time_formatPad(1 + d3_time.dayOfYear(d), p, 3);\n      },\n      L: function(d, p) {\n        return d3_time_formatPad(d.getMilliseconds(), p, 3);\n      },\n      m: function(d, p) {\n        return d3_time_formatPad(d.getMonth() + 1, p, 2);\n      },\n      M: function(d, p) {\n        return d3_time_formatPad(d.getMinutes(), p, 2);\n      },\n      p: function(d) {\n        return locale_periods[+(d.getHours() >= 12)];\n      },\n      S: function(d, p) {\n        return d3_time_formatPad(d.getSeconds(), p, 2);\n      },\n      U: function(d, p) {\n        return d3_time_formatPad(d3_time.sundayOfYear(d), p, 2);\n      },\n      w: function(d) {\n        return d.getDay();\n      },\n      W: function(d, p) {\n        return d3_time_formatPad(d3_time.mondayOfYear(d), p, 2);\n      },\n      x: d3_time_format(locale_date),\n      X: d3_time_format(locale_time),\n      y: function(d, p) {\n        return d3_time_formatPad(d.getFullYear() % 100, p, 2);\n      },\n      Y: function(d, p) {\n        return d3_time_formatPad(d.getFullYear() % 1e4, p, 4);\n      },\n      Z: d3_time_zone,\n      \"%\": function() {\n        return \"%\";\n      }\n    };\n    var d3_time_parsers = {\n      a: d3_time_parseWeekdayAbbrev,\n      A: d3_time_parseWeekday,\n      b: d3_time_parseMonthAbbrev,\n      B: d3_time_parseMonth,\n      c: d3_time_parseLocaleFull,\n      d: d3_time_parseDay,\n      e: d3_time_parseDay,\n      H: d3_time_parseHour24,\n      I: d3_time_parseHour24,\n      j: d3_time_parseDayOfYear,\n      L: d3_time_parseMilliseconds,\n      m: d3_time_parseMonthNumber,\n      M: d3_time_parseMinutes,\n      p: d3_time_parseAmPm,\n      S: d3_time_parseSeconds,\n      U: d3_time_parseWeekNumberSunday,\n      w: d3_time_parseWeekdayNumber,\n      W: d3_time_parseWeekNumberMonday,\n      x: d3_time_parseLocaleDate,\n      X: d3_time_parseLocaleTime,\n      y: d3_time_parseYear,\n      Y: d3_time_parseFullYear,\n      Z: d3_time_parseZone,\n      \"%\": d3_time_parseLiteralPercent\n    };\n    function d3_time_parseWeekdayAbbrev(date, string, i) {\n      d3_time_dayAbbrevRe.lastIndex = 0;\n      var n = d3_time_dayAbbrevRe.exec(string.slice(i));\n      return n ? (date.w = d3_time_dayAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n    }\n    function d3_time_parseWeekday(date, string, i) {\n      d3_time_dayRe.lastIndex = 0;\n      var n = d3_time_dayRe.exec(string.slice(i));\n      return n ? (date.w = d3_time_dayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n    }\n    function d3_time_parseMonthAbbrev(date, string, i) {\n      d3_time_monthAbbrevRe.lastIndex = 0;\n      var n = d3_time_monthAbbrevRe.exec(string.slice(i));\n      return n ? (date.m = d3_time_monthAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n    }\n    function d3_time_parseMonth(date, string, i) {\n      d3_time_monthRe.lastIndex = 0;\n      var n = d3_time_monthRe.exec(string.slice(i));\n      return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n    }\n    function d3_time_parseLocaleFull(date, string, i) {\n      return d3_time_parse(date, d3_time_formats.c.toString(), string, i);\n    }\n    function d3_time_parseLocaleDate(date, string, i) {\n      return d3_time_parse(date, d3_time_formats.x.toString(), string, i);\n    }\n    function d3_time_parseLocaleTime(date, string, i) {\n      return d3_time_parse(date, d3_time_formats.X.toString(), string, i);\n    }\n    function d3_time_parseAmPm(date, string, i) {\n      var n = d3_time_periodLookup.get(string.slice(i, i += 2).toLowerCase());\n      return n == null ? -1 : (date.p = n, i);\n    }\n    return d3_time_format;\n  }\n  var d3_time_formatPads = {\n    \"-\": \"\",\n    _: \" \",\n    \"0\": \"0\"\n  }, d3_time_numberRe = /^\\s*\\d+/, d3_time_percentRe = /^%/;\n  function d3_time_formatPad(value, fill, width) {\n    var sign = value < 0 ? \"-\" : \"\", string = (sign ? -value : value) + \"\", length = string.length;\n    return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n  }\n  function d3_time_formatRe(names) {\n    return new RegExp(\"^(?:\" + names.map(d3.requote).join(\"|\") + \")\", \"i\");\n  }\n  function d3_time_formatLookup(names) {\n    var map = new d3_Map(), i = -1, n = names.length;\n    while (++i < n) map.set(names[i].toLowerCase(), i);\n    return map;\n  }\n  function d3_time_parseWeekdayNumber(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 1));\n    return n ? (date.w = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseWeekNumberSunday(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i));\n    return n ? (date.U = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseWeekNumberMonday(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i));\n    return n ? (date.W = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseFullYear(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 4));\n    return n ? (date.y = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseYear(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n    return n ? (date.y = d3_time_expandYear(+n[0]), i + n[0].length) : -1;\n  }\n  function d3_time_parseZone(date, string, i) {\n    return /^[+-]\\d{4}$/.test(string = string.slice(i, i + 5)) ? (date.Z = -string, \n    i + 5) : -1;\n  }\n  function d3_time_expandYear(d) {\n    return d + (d > 68 ? 1900 : 2e3);\n  }\n  function d3_time_parseMonthNumber(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n    return n ? (date.m = n[0] - 1, i + n[0].length) : -1;\n  }\n  function d3_time_parseDay(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n    return n ? (date.d = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseDayOfYear(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n    return n ? (date.j = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseHour24(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n    return n ? (date.H = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseMinutes(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n    return n ? (date.M = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseSeconds(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n    return n ? (date.S = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseMilliseconds(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n    return n ? (date.L = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_zone(d) {\n    var z = d.getTimezoneOffset(), zs = z > 0 ? \"-\" : \"+\", zh = abs(z) / 60 | 0, zm = abs(z) % 60;\n    return zs + d3_time_formatPad(zh, \"0\", 2) + d3_time_formatPad(zm, \"0\", 2);\n  }\n  function d3_time_parseLiteralPercent(date, string, i) {\n    d3_time_percentRe.lastIndex = 0;\n    var n = d3_time_percentRe.exec(string.slice(i, i + 1));\n    return n ? i + n[0].length : -1;\n  }\n  function d3_time_formatMulti(formats) {\n    var n = formats.length, i = -1;\n    while (++i < n) formats[i][0] = this(formats[i][0]);\n    return function(date) {\n      var i = 0, f = formats[i];\n      while (!f[1](date)) f = formats[++i];\n      return f[0](date);\n    };\n  }\n  d3.locale = function(locale) {\n    return {\n      numberFormat: d3_locale_numberFormat(locale),\n      timeFormat: d3_locale_timeFormat(locale)\n    };\n  };\n  var d3_locale_enUS = d3.locale({\n    decimal: \".\",\n    thousands: \",\",\n    grouping: [ 3 ],\n    currency: [ \"$\", \"\" ],\n    dateTime: \"%a %b %e %X %Y\",\n    date: \"%m/%d/%Y\",\n    time: \"%H:%M:%S\",\n    periods: [ \"AM\", \"PM\" ],\n    days: [ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ],\n    shortDays: [ \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\" ],\n    months: [ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ],\n    shortMonths: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\" ]\n  });\n  d3.format = d3_locale_enUS.numberFormat;\n  d3.geo = {};\n  function d3_adder() {}\n  d3_adder.prototype = {\n    s: 0,\n    t: 0,\n    add: function(y) {\n      d3_adderSum(y, this.t, d3_adderTemp);\n      d3_adderSum(d3_adderTemp.s, this.s, this);\n      if (this.s) this.t += d3_adderTemp.t; else this.s = d3_adderTemp.t;\n    },\n    reset: function() {\n      this.s = this.t = 0;\n    },\n    valueOf: function() {\n      return this.s;\n    }\n  };\n  var d3_adderTemp = new d3_adder();\n  function d3_adderSum(a, b, o) {\n    var x = o.s = a + b, bv = x - a, av = x - bv;\n    o.t = a - av + (b - bv);\n  }\n  d3.geo.stream = function(object, listener) {\n    if (object && d3_geo_streamObjectType.hasOwnProperty(object.type)) {\n      d3_geo_streamObjectType[object.type](object, listener);\n    } else {\n      d3_geo_streamGeometry(object, listener);\n    }\n  };\n  function d3_geo_streamGeometry(geometry, listener) {\n    if (geometry && d3_geo_streamGeometryType.hasOwnProperty(geometry.type)) {\n      d3_geo_streamGeometryType[geometry.type](geometry, listener);\n    }\n  }\n  var d3_geo_streamObjectType = {\n    Feature: function(feature, listener) {\n      d3_geo_streamGeometry(feature.geometry, listener);\n    },\n    FeatureCollection: function(object, listener) {\n      var features = object.features, i = -1, n = features.length;\n      while (++i < n) d3_geo_streamGeometry(features[i].geometry, listener);\n    }\n  };\n  var d3_geo_streamGeometryType = {\n    Sphere: function(object, listener) {\n      listener.sphere();\n    },\n    Point: function(object, listener) {\n      object = object.coordinates;\n      listener.point(object[0], object[1], object[2]);\n    },\n    MultiPoint: function(object, listener) {\n      var coordinates = object.coordinates, i = -1, n = coordinates.length;\n      while (++i < n) object = coordinates[i], listener.point(object[0], object[1], object[2]);\n    },\n    LineString: function(object, listener) {\n      d3_geo_streamLine(object.coordinates, listener, 0);\n    },\n    MultiLineString: function(object, listener) {\n      var coordinates = object.coordinates, i = -1, n = coordinates.length;\n      while (++i < n) d3_geo_streamLine(coordinates[i], listener, 0);\n    },\n    Polygon: function(object, listener) {\n      d3_geo_streamPolygon(object.coordinates, listener);\n    },\n    MultiPolygon: function(object, listener) {\n      var coordinates = object.coordinates, i = -1, n = coordinates.length;\n      while (++i < n) d3_geo_streamPolygon(coordinates[i], listener);\n    },\n    GeometryCollection: function(object, listener) {\n      var geometries = object.geometries, i = -1, n = geometries.length;\n      while (++i < n) d3_geo_streamGeometry(geometries[i], listener);\n    }\n  };\n  function d3_geo_streamLine(coordinates, listener, closed) {\n    var i = -1, n = coordinates.length - closed, coordinate;\n    listener.lineStart();\n    while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1], coordinate[2]);\n    listener.lineEnd();\n  }\n  function d3_geo_streamPolygon(coordinates, listener) {\n    var i = -1, n = coordinates.length;\n    listener.polygonStart();\n    while (++i < n) d3_geo_streamLine(coordinates[i], listener, 1);\n    listener.polygonEnd();\n  }\n  d3.geo.area = function(object) {\n    d3_geo_areaSum = 0;\n    d3.geo.stream(object, d3_geo_area);\n    return d3_geo_areaSum;\n  };\n  var d3_geo_areaSum, d3_geo_areaRingSum = new d3_adder();\n  var d3_geo_area = {\n    sphere: function() {\n      d3_geo_areaSum += 4 * π;\n    },\n    point: d3_noop,\n    lineStart: d3_noop,\n    lineEnd: d3_noop,\n    polygonStart: function() {\n      d3_geo_areaRingSum.reset();\n      d3_geo_area.lineStart = d3_geo_areaRingStart;\n    },\n    polygonEnd: function() {\n      var area = 2 * d3_geo_areaRingSum;\n      d3_geo_areaSum += area < 0 ? 4 * π + area : area;\n      d3_geo_area.lineStart = d3_geo_area.lineEnd = d3_geo_area.point = d3_noop;\n    }\n  };\n  function d3_geo_areaRingStart() {\n    var λ00, φ00, λ0, cosφ0, sinφ0;\n    d3_geo_area.point = function(λ, φ) {\n      d3_geo_area.point = nextPoint;\n      λ0 = (λ00 = λ) * d3_radians, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + π / 4), \n      sinφ0 = Math.sin(φ);\n    };\n    function nextPoint(λ, φ) {\n      λ *= d3_radians;\n      φ = φ * d3_radians / 2 + π / 4;\n      var dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, cosφ = Math.cos(φ), sinφ = Math.sin(φ), k = sinφ0 * sinφ, u = cosφ0 * cosφ + k * Math.cos(adλ), v = k * sdλ * Math.sin(adλ);\n      d3_geo_areaRingSum.add(Math.atan2(v, u));\n      λ0 = λ, cosφ0 = cosφ, sinφ0 = sinφ;\n    }\n    d3_geo_area.lineEnd = function() {\n      nextPoint(λ00, φ00);\n    };\n  }\n  function d3_geo_cartesian(spherical) {\n    var λ = spherical[0], φ = spherical[1], cosφ = Math.cos(φ);\n    return [ cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ) ];\n  }\n  function d3_geo_cartesianDot(a, b) {\n    return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n  }\n  function d3_geo_cartesianCross(a, b) {\n    return [ a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0] ];\n  }\n  function d3_geo_cartesianAdd(a, b) {\n    a[0] += b[0];\n    a[1] += b[1];\n    a[2] += b[2];\n  }\n  function d3_geo_cartesianScale(vector, k) {\n    return [ vector[0] * k, vector[1] * k, vector[2] * k ];\n  }\n  function d3_geo_cartesianNormalize(d) {\n    var l = Math.sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n    d[0] /= l;\n    d[1] /= l;\n    d[2] /= l;\n  }\n  function d3_geo_spherical(cartesian) {\n    return [ Math.atan2(cartesian[1], cartesian[0]), d3_asin(cartesian[2]) ];\n  }\n  function d3_geo_sphericalEqual(a, b) {\n    return abs(a[0] - b[0]) < ε && abs(a[1] - b[1]) < ε;\n  }\n  d3.geo.bounds = function() {\n    var λ0, φ0, λ1, φ1, λ_, λ__, φ__, p0, dλSum, ranges, range;\n    var bound = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: function() {\n        bound.point = ringPoint;\n        bound.lineStart = ringStart;\n        bound.lineEnd = ringEnd;\n        dλSum = 0;\n        d3_geo_area.polygonStart();\n      },\n      polygonEnd: function() {\n        d3_geo_area.polygonEnd();\n        bound.point = point;\n        bound.lineStart = lineStart;\n        bound.lineEnd = lineEnd;\n        if (d3_geo_areaRingSum < 0) λ0 = -(λ1 = 180), φ0 = -(φ1 = 90); else if (dλSum > ε) φ1 = 90; else if (dλSum < -ε) φ0 = -90;\n        range[0] = λ0, range[1] = λ1;\n      }\n    };\n    function point(λ, φ) {\n      ranges.push(range = [ λ0 = λ, λ1 = λ ]);\n      if (φ < φ0) φ0 = φ;\n      if (φ > φ1) φ1 = φ;\n    }\n    function linePoint(λ, φ) {\n      var p = d3_geo_cartesian([ λ * d3_radians, φ * d3_radians ]);\n      if (p0) {\n        var normal = d3_geo_cartesianCross(p0, p), equatorial = [ normal[1], -normal[0], 0 ], inflection = d3_geo_cartesianCross(equatorial, normal);\n        d3_geo_cartesianNormalize(inflection);\n        inflection = d3_geo_spherical(inflection);\n        var dλ = λ - λ_, s = dλ > 0 ? 1 : -1, λi = inflection[0] * d3_degrees * s, antimeridian = abs(dλ) > 180;\n        if (antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n          var φi = inflection[1] * d3_degrees;\n          if (φi > φ1) φ1 = φi;\n        } else if (λi = (λi + 360) % 360 - 180, antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n          var φi = -inflection[1] * d3_degrees;\n          if (φi < φ0) φ0 = φi;\n        } else {\n          if (φ < φ0) φ0 = φ;\n          if (φ > φ1) φ1 = φ;\n        }\n        if (antimeridian) {\n          if (λ < λ_) {\n            if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n          } else {\n            if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n          }\n        } else {\n          if (λ1 >= λ0) {\n            if (λ < λ0) λ0 = λ;\n            if (λ > λ1) λ1 = λ;\n          } else {\n            if (λ > λ_) {\n              if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n            } else {\n              if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n            }\n          }\n        }\n      } else {\n        point(λ, φ);\n      }\n      p0 = p, λ_ = λ;\n    }\n    function lineStart() {\n      bound.point = linePoint;\n    }\n    function lineEnd() {\n      range[0] = λ0, range[1] = λ1;\n      bound.point = point;\n      p0 = null;\n    }\n    function ringPoint(λ, φ) {\n      if (p0) {\n        var dλ = λ - λ_;\n        dλSum += abs(dλ) > 180 ? dλ + (dλ > 0 ? 360 : -360) : dλ;\n      } else λ__ = λ, φ__ = φ;\n      d3_geo_area.point(λ, φ);\n      linePoint(λ, φ);\n    }\n    function ringStart() {\n      d3_geo_area.lineStart();\n    }\n    function ringEnd() {\n      ringPoint(λ__, φ__);\n      d3_geo_area.lineEnd();\n      if (abs(dλSum) > ε) λ0 = -(λ1 = 180);\n      range[0] = λ0, range[1] = λ1;\n      p0 = null;\n    }\n    function angle(λ0, λ1) {\n      return (λ1 -= λ0) < 0 ? λ1 + 360 : λ1;\n    }\n    function compareRanges(a, b) {\n      return a[0] - b[0];\n    }\n    function withinRange(x, range) {\n      return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n    }\n    return function(feature) {\n      φ1 = λ1 = -(λ0 = φ0 = Infinity);\n      ranges = [];\n      d3.geo.stream(feature, bound);\n      var n = ranges.length;\n      if (n) {\n        ranges.sort(compareRanges);\n        for (var i = 1, a = ranges[0], b, merged = [ a ]; i < n; ++i) {\n          b = ranges[i];\n          if (withinRange(b[0], a) || withinRange(b[1], a)) {\n            if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n            if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n          } else {\n            merged.push(a = b);\n          }\n        }\n        var best = -Infinity, dλ;\n        for (var n = merged.length - 1, i = 0, a = merged[n], b; i <= n; a = b, ++i) {\n          b = merged[i];\n          if ((dλ = angle(a[1], b[0])) > best) best = dλ, λ0 = b[0], λ1 = a[1];\n        }\n      }\n      ranges = range = null;\n      return λ0 === Infinity || φ0 === Infinity ? [ [ NaN, NaN ], [ NaN, NaN ] ] : [ [ λ0, φ0 ], [ λ1, φ1 ] ];\n    };\n  }();\n  d3.geo.centroid = function(object) {\n    d3_geo_centroidW0 = d3_geo_centroidW1 = d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n    d3.geo.stream(object, d3_geo_centroid);\n    var x = d3_geo_centroidX2, y = d3_geo_centroidY2, z = d3_geo_centroidZ2, m = x * x + y * y + z * z;\n    if (m < ε2) {\n      x = d3_geo_centroidX1, y = d3_geo_centroidY1, z = d3_geo_centroidZ1;\n      if (d3_geo_centroidW1 < ε) x = d3_geo_centroidX0, y = d3_geo_centroidY0, z = d3_geo_centroidZ0;\n      m = x * x + y * y + z * z;\n      if (m < ε2) return [ NaN, NaN ];\n    }\n    return [ Math.atan2(y, x) * d3_degrees, d3_asin(z / Math.sqrt(m)) * d3_degrees ];\n  };\n  var d3_geo_centroidW0, d3_geo_centroidW1, d3_geo_centroidX0, d3_geo_centroidY0, d3_geo_centroidZ0, d3_geo_centroidX1, d3_geo_centroidY1, d3_geo_centroidZ1, d3_geo_centroidX2, d3_geo_centroidY2, d3_geo_centroidZ2;\n  var d3_geo_centroid = {\n    sphere: d3_noop,\n    point: d3_geo_centroidPoint,\n    lineStart: d3_geo_centroidLineStart,\n    lineEnd: d3_geo_centroidLineEnd,\n    polygonStart: function() {\n      d3_geo_centroid.lineStart = d3_geo_centroidRingStart;\n    },\n    polygonEnd: function() {\n      d3_geo_centroid.lineStart = d3_geo_centroidLineStart;\n    }\n  };\n  function d3_geo_centroidPoint(λ, φ) {\n    λ *= d3_radians;\n    var cosφ = Math.cos(φ *= d3_radians);\n    d3_geo_centroidPointXYZ(cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ));\n  }\n  function d3_geo_centroidPointXYZ(x, y, z) {\n    ++d3_geo_centroidW0;\n    d3_geo_centroidX0 += (x - d3_geo_centroidX0) / d3_geo_centroidW0;\n    d3_geo_centroidY0 += (y - d3_geo_centroidY0) / d3_geo_centroidW0;\n    d3_geo_centroidZ0 += (z - d3_geo_centroidZ0) / d3_geo_centroidW0;\n  }\n  function d3_geo_centroidLineStart() {\n    var x0, y0, z0;\n    d3_geo_centroid.point = function(λ, φ) {\n      λ *= d3_radians;\n      var cosφ = Math.cos(φ *= d3_radians);\n      x0 = cosφ * Math.cos(λ);\n      y0 = cosφ * Math.sin(λ);\n      z0 = Math.sin(φ);\n      d3_geo_centroid.point = nextPoint;\n      d3_geo_centroidPointXYZ(x0, y0, z0);\n    };\n    function nextPoint(λ, φ) {\n      λ *= d3_radians;\n      var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), w = Math.atan2(Math.sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n      d3_geo_centroidW1 += w;\n      d3_geo_centroidX1 += w * (x0 + (x0 = x));\n      d3_geo_centroidY1 += w * (y0 + (y0 = y));\n      d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n      d3_geo_centroidPointXYZ(x0, y0, z0);\n    }\n  }\n  function d3_geo_centroidLineEnd() {\n    d3_geo_centroid.point = d3_geo_centroidPoint;\n  }\n  function d3_geo_centroidRingStart() {\n    var λ00, φ00, x0, y0, z0;\n    d3_geo_centroid.point = function(λ, φ) {\n      λ00 = λ, φ00 = φ;\n      d3_geo_centroid.point = nextPoint;\n      λ *= d3_radians;\n      var cosφ = Math.cos(φ *= d3_radians);\n      x0 = cosφ * Math.cos(λ);\n      y0 = cosφ * Math.sin(λ);\n      z0 = Math.sin(φ);\n      d3_geo_centroidPointXYZ(x0, y0, z0);\n    };\n    d3_geo_centroid.lineEnd = function() {\n      nextPoint(λ00, φ00);\n      d3_geo_centroid.lineEnd = d3_geo_centroidLineEnd;\n      d3_geo_centroid.point = d3_geo_centroidPoint;\n    };\n    function nextPoint(λ, φ) {\n      λ *= d3_radians;\n      var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), cx = y0 * z - z0 * y, cy = z0 * x - x0 * z, cz = x0 * y - y0 * x, m = Math.sqrt(cx * cx + cy * cy + cz * cz), u = x0 * x + y0 * y + z0 * z, v = m && -d3_acos(u) / m, w = Math.atan2(m, u);\n      d3_geo_centroidX2 += v * cx;\n      d3_geo_centroidY2 += v * cy;\n      d3_geo_centroidZ2 += v * cz;\n      d3_geo_centroidW1 += w;\n      d3_geo_centroidX1 += w * (x0 + (x0 = x));\n      d3_geo_centroidY1 += w * (y0 + (y0 = y));\n      d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n      d3_geo_centroidPointXYZ(x0, y0, z0);\n    }\n  }\n  function d3_geo_compose(a, b) {\n    function compose(x, y) {\n      return x = a(x, y), b(x[0], x[1]);\n    }\n    if (a.invert && b.invert) compose.invert = function(x, y) {\n      return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n    };\n    return compose;\n  }\n  function d3_true() {\n    return true;\n  }\n  function d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener) {\n    var subject = [], clip = [];\n    segments.forEach(function(segment) {\n      if ((n = segment.length - 1) <= 0) return;\n      var n, p0 = segment[0], p1 = segment[n];\n      if (d3_geo_sphericalEqual(p0, p1)) {\n        listener.lineStart();\n        for (var i = 0; i < n; ++i) listener.point((p0 = segment[i])[0], p0[1]);\n        listener.lineEnd();\n        return;\n      }\n      var a = new d3_geo_clipPolygonIntersection(p0, segment, null, true), b = new d3_geo_clipPolygonIntersection(p0, null, a, false);\n      a.o = b;\n      subject.push(a);\n      clip.push(b);\n      a = new d3_geo_clipPolygonIntersection(p1, segment, null, false);\n      b = new d3_geo_clipPolygonIntersection(p1, null, a, true);\n      a.o = b;\n      subject.push(a);\n      clip.push(b);\n    });\n    clip.sort(compare);\n    d3_geo_clipPolygonLinkCircular(subject);\n    d3_geo_clipPolygonLinkCircular(clip);\n    if (!subject.length) return;\n    for (var i = 0, entry = clipStartInside, n = clip.length; i < n; ++i) {\n      clip[i].e = entry = !entry;\n    }\n    var start = subject[0], points, point;\n    while (1) {\n      var current = start, isSubject = true;\n      while (current.v) if ((current = current.n) === start) return;\n      points = current.z;\n      listener.lineStart();\n      do {\n        current.v = current.o.v = true;\n        if (current.e) {\n          if (isSubject) {\n            for (var i = 0, n = points.length; i < n; ++i) listener.point((point = points[i])[0], point[1]);\n          } else {\n            interpolate(current.x, current.n.x, 1, listener);\n          }\n          current = current.n;\n        } else {\n          if (isSubject) {\n            points = current.p.z;\n            for (var i = points.length - 1; i >= 0; --i) listener.point((point = points[i])[0], point[1]);\n          } else {\n            interpolate(current.x, current.p.x, -1, listener);\n          }\n          current = current.p;\n        }\n        current = current.o;\n        points = current.z;\n        isSubject = !isSubject;\n      } while (!current.v);\n      listener.lineEnd();\n    }\n  }\n  function d3_geo_clipPolygonLinkCircular(array) {\n    if (!(n = array.length)) return;\n    var n, i = 0, a = array[0], b;\n    while (++i < n) {\n      a.n = b = array[i];\n      b.p = a;\n      a = b;\n    }\n    a.n = b = array[0];\n    b.p = a;\n  }\n  function d3_geo_clipPolygonIntersection(point, points, other, entry) {\n    this.x = point;\n    this.z = points;\n    this.o = other;\n    this.e = entry;\n    this.v = false;\n    this.n = this.p = null;\n  }\n  function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {\n    return function(rotate, listener) {\n      var line = clipLine(listener), rotatedClipStart = rotate.invert(clipStart[0], clipStart[1]);\n      var clip = {\n        point: point,\n        lineStart: lineStart,\n        lineEnd: lineEnd,\n        polygonStart: function() {\n          clip.point = pointRing;\n          clip.lineStart = ringStart;\n          clip.lineEnd = ringEnd;\n          segments = [];\n          polygon = [];\n        },\n        polygonEnd: function() {\n          clip.point = point;\n          clip.lineStart = lineStart;\n          clip.lineEnd = lineEnd;\n          segments = d3.merge(segments);\n          var clipStartInside = d3_geo_pointInPolygon(rotatedClipStart, polygon);\n          if (segments.length) {\n            if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n            d3_geo_clipPolygon(segments, d3_geo_clipSort, clipStartInside, interpolate, listener);\n          } else if (clipStartInside) {\n            if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n            listener.lineStart();\n            interpolate(null, null, 1, listener);\n            listener.lineEnd();\n          }\n          if (polygonStarted) listener.polygonEnd(), polygonStarted = false;\n          segments = polygon = null;\n        },\n        sphere: function() {\n          listener.polygonStart();\n          listener.lineStart();\n          interpolate(null, null, 1, listener);\n          listener.lineEnd();\n          listener.polygonEnd();\n        }\n      };\n      function point(λ, φ) {\n        var point = rotate(λ, φ);\n        if (pointVisible(λ = point[0], φ = point[1])) listener.point(λ, φ);\n      }\n      function pointLine(λ, φ) {\n        var point = rotate(λ, φ);\n        line.point(point[0], point[1]);\n      }\n      function lineStart() {\n        clip.point = pointLine;\n        line.lineStart();\n      }\n      function lineEnd() {\n        clip.point = point;\n        line.lineEnd();\n      }\n      var segments;\n      var buffer = d3_geo_clipBufferListener(), ringListener = clipLine(buffer), polygonStarted = false, polygon, ring;\n      function pointRing(λ, φ) {\n        ring.push([ λ, φ ]);\n        var point = rotate(λ, φ);\n        ringListener.point(point[0], point[1]);\n      }\n      function ringStart() {\n        ringListener.lineStart();\n        ring = [];\n      }\n      function ringEnd() {\n        pointRing(ring[0][0], ring[0][1]);\n        ringListener.lineEnd();\n        var clean = ringListener.clean(), ringSegments = buffer.buffer(), segment, n = ringSegments.length;\n        ring.pop();\n        polygon.push(ring);\n        ring = null;\n        if (!n) return;\n        if (clean & 1) {\n          segment = ringSegments[0];\n          var n = segment.length - 1, i = -1, point;\n          if (n > 0) {\n            if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n            listener.lineStart();\n            while (++i < n) listener.point((point = segment[i])[0], point[1]);\n            listener.lineEnd();\n          }\n          return;\n        }\n        if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n        segments.push(ringSegments.filter(d3_geo_clipSegmentLength1));\n      }\n      return clip;\n    };\n  }\n  function d3_geo_clipSegmentLength1(segment) {\n    return segment.length > 1;\n  }\n  function d3_geo_clipBufferListener() {\n    var lines = [], line;\n    return {\n      lineStart: function() {\n        lines.push(line = []);\n      },\n      point: function(λ, φ) {\n        line.push([ λ, φ ]);\n      },\n      lineEnd: d3_noop,\n      buffer: function() {\n        var buffer = lines;\n        lines = [];\n        line = null;\n        return buffer;\n      },\n      rejoin: function() {\n        if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n      }\n    };\n  }\n  function d3_geo_clipSort(a, b) {\n    return ((a = a.x)[0] < 0 ? a[1] - halfπ - ε : halfπ - a[1]) - ((b = b.x)[0] < 0 ? b[1] - halfπ - ε : halfπ - b[1]);\n  }\n  var d3_geo_clipAntimeridian = d3_geo_clip(d3_true, d3_geo_clipAntimeridianLine, d3_geo_clipAntimeridianInterpolate, [ -π, -π / 2 ]);\n  function d3_geo_clipAntimeridianLine(listener) {\n    var λ0 = NaN, φ0 = NaN, sλ0 = NaN, clean;\n    return {\n      lineStart: function() {\n        listener.lineStart();\n        clean = 1;\n      },\n      point: function(λ1, φ1) {\n        var sλ1 = λ1 > 0 ? π : -π, dλ = abs(λ1 - λ0);\n        if (abs(dλ - π) < ε) {\n          listener.point(λ0, φ0 = (φ0 + φ1) / 2 > 0 ? halfπ : -halfπ);\n          listener.point(sλ0, φ0);\n          listener.lineEnd();\n          listener.lineStart();\n          listener.point(sλ1, φ0);\n          listener.point(λ1, φ0);\n          clean = 0;\n        } else if (sλ0 !== sλ1 && dλ >= π) {\n          if (abs(λ0 - sλ0) < ε) λ0 -= sλ0 * ε;\n          if (abs(λ1 - sλ1) < ε) λ1 -= sλ1 * ε;\n          φ0 = d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1);\n          listener.point(sλ0, φ0);\n          listener.lineEnd();\n          listener.lineStart();\n          listener.point(sλ1, φ0);\n          clean = 0;\n        }\n        listener.point(λ0 = λ1, φ0 = φ1);\n        sλ0 = sλ1;\n      },\n      lineEnd: function() {\n        listener.lineEnd();\n        λ0 = φ0 = NaN;\n      },\n      clean: function() {\n        return 2 - clean;\n      }\n    };\n  }\n  function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) {\n    var cosφ0, cosφ1, sinλ0_λ1 = Math.sin(λ0 - λ1);\n    return abs(sinλ0_λ1) > ε ? Math.atan((Math.sin(φ0) * (cosφ1 = Math.cos(φ1)) * Math.sin(λ1) - Math.sin(φ1) * (cosφ0 = Math.cos(φ0)) * Math.sin(λ0)) / (cosφ0 * cosφ1 * sinλ0_λ1)) : (φ0 + φ1) / 2;\n  }\n  function d3_geo_clipAntimeridianInterpolate(from, to, direction, listener) {\n    var φ;\n    if (from == null) {\n      φ = direction * halfπ;\n      listener.point(-π, φ);\n      listener.point(0, φ);\n      listener.point(π, φ);\n      listener.point(π, 0);\n      listener.point(π, -φ);\n      listener.point(0, -φ);\n      listener.point(-π, -φ);\n      listener.point(-π, 0);\n      listener.point(-π, φ);\n    } else if (abs(from[0] - to[0]) > ε) {\n      var s = from[0] < to[0] ? π : -π;\n      φ = direction * s / 2;\n      listener.point(-s, φ);\n      listener.point(0, φ);\n      listener.point(s, φ);\n    } else {\n      listener.point(to[0], to[1]);\n    }\n  }\n  function d3_geo_pointInPolygon(point, polygon) {\n    var meridian = point[0], parallel = point[1], meridianNormal = [ Math.sin(meridian), -Math.cos(meridian), 0 ], polarAngle = 0, winding = 0;\n    d3_geo_areaRingSum.reset();\n    for (var i = 0, n = polygon.length; i < n; ++i) {\n      var ring = polygon[i], m = ring.length;\n      if (!m) continue;\n      var point0 = ring[0], λ0 = point0[0], φ0 = point0[1] / 2 + π / 4, sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), j = 1;\n      while (true) {\n        if (j === m) j = 0;\n        point = ring[j];\n        var λ = point[0], φ = point[1] / 2 + π / 4, sinφ = Math.sin(φ), cosφ = Math.cos(φ), dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, antimeridian = adλ > π, k = sinφ0 * sinφ;\n        d3_geo_areaRingSum.add(Math.atan2(k * sdλ * Math.sin(adλ), cosφ0 * cosφ + k * Math.cos(adλ)));\n        polarAngle += antimeridian ? dλ + sdλ * τ : dλ;\n        if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) {\n          var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0), d3_geo_cartesian(point));\n          d3_geo_cartesianNormalize(arc);\n          var intersection = d3_geo_cartesianCross(meridianNormal, arc);\n          d3_geo_cartesianNormalize(intersection);\n          var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]);\n          if (parallel > φarc || parallel === φarc && (arc[0] || arc[1])) {\n            winding += antimeridian ^ dλ >= 0 ? 1 : -1;\n          }\n        }\n        if (!j++) break;\n        λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point;\n      }\n    }\n    return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < -ε) ^ winding & 1;\n  }\n  function d3_geo_clipCircle(radius) {\n    var cr = Math.cos(radius), smallRadius = cr > 0, notHemisphere = abs(cr) > ε, interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians);\n    return d3_geo_clip(visible, clipLine, interpolate, smallRadius ? [ 0, -radius ] : [ -π, radius - π ]);\n    function visible(λ, φ) {\n      return Math.cos(λ) * Math.cos(φ) > cr;\n    }\n    function clipLine(listener) {\n      var point0, c0, v0, v00, clean;\n      return {\n        lineStart: function() {\n          v00 = v0 = false;\n          clean = 1;\n        },\n        point: function(λ, φ) {\n          var point1 = [ λ, φ ], point2, v = visible(λ, φ), c = smallRadius ? v ? 0 : code(λ, φ) : v ? code(λ + (λ < 0 ? π : -π), φ) : 0;\n          if (!point0 && (v00 = v0 = v)) listener.lineStart();\n          if (v !== v0) {\n            point2 = intersect(point0, point1);\n            if (d3_geo_sphericalEqual(point0, point2) || d3_geo_sphericalEqual(point1, point2)) {\n              point1[0] += ε;\n              point1[1] += ε;\n              v = visible(point1[0], point1[1]);\n            }\n          }\n          if (v !== v0) {\n            clean = 0;\n            if (v) {\n              listener.lineStart();\n              point2 = intersect(point1, point0);\n              listener.point(point2[0], point2[1]);\n            } else {\n              point2 = intersect(point0, point1);\n              listener.point(point2[0], point2[1]);\n              listener.lineEnd();\n            }\n            point0 = point2;\n          } else if (notHemisphere && point0 && smallRadius ^ v) {\n            var t;\n            if (!(c & c0) && (t = intersect(point1, point0, true))) {\n              clean = 0;\n              if (smallRadius) {\n                listener.lineStart();\n                listener.point(t[0][0], t[0][1]);\n                listener.point(t[1][0], t[1][1]);\n                listener.lineEnd();\n              } else {\n                listener.point(t[1][0], t[1][1]);\n                listener.lineEnd();\n                listener.lineStart();\n                listener.point(t[0][0], t[0][1]);\n              }\n            }\n          }\n          if (v && (!point0 || !d3_geo_sphericalEqual(point0, point1))) {\n            listener.point(point1[0], point1[1]);\n          }\n          point0 = point1, v0 = v, c0 = c;\n        },\n        lineEnd: function() {\n          if (v0) listener.lineEnd();\n          point0 = null;\n        },\n        clean: function() {\n          return clean | (v00 && v0) << 1;\n        }\n      };\n    }\n    function intersect(a, b, two) {\n      var pa = d3_geo_cartesian(a), pb = d3_geo_cartesian(b);\n      var n1 = [ 1, 0, 0 ], n2 = d3_geo_cartesianCross(pa, pb), n2n2 = d3_geo_cartesianDot(n2, n2), n1n2 = n2[0], determinant = n2n2 - n1n2 * n1n2;\n      if (!determinant) return !two && a;\n      var c1 = cr * n2n2 / determinant, c2 = -cr * n1n2 / determinant, n1xn2 = d3_geo_cartesianCross(n1, n2), A = d3_geo_cartesianScale(n1, c1), B = d3_geo_cartesianScale(n2, c2);\n      d3_geo_cartesianAdd(A, B);\n      var u = n1xn2, w = d3_geo_cartesianDot(A, u), uu = d3_geo_cartesianDot(u, u), t2 = w * w - uu * (d3_geo_cartesianDot(A, A) - 1);\n      if (t2 < 0) return;\n      var t = Math.sqrt(t2), q = d3_geo_cartesianScale(u, (-w - t) / uu);\n      d3_geo_cartesianAdd(q, A);\n      q = d3_geo_spherical(q);\n      if (!two) return q;\n      var λ0 = a[0], λ1 = b[0], φ0 = a[1], φ1 = b[1], z;\n      if (λ1 < λ0) z = λ0, λ0 = λ1, λ1 = z;\n      var δλ = λ1 - λ0, polar = abs(δλ - π) < ε, meridian = polar || δλ < ε;\n      if (!polar && φ1 < φ0) z = φ0, φ0 = φ1, φ1 = z;\n      if (meridian ? polar ? φ0 + φ1 > 0 ^ q[1] < (abs(q[0] - λ0) < ε ? φ0 : φ1) : φ0 <= q[1] && q[1] <= φ1 : δλ > π ^ (λ0 <= q[0] && q[0] <= λ1)) {\n        var q1 = d3_geo_cartesianScale(u, (-w + t) / uu);\n        d3_geo_cartesianAdd(q1, A);\n        return [ q, d3_geo_spherical(q1) ];\n      }\n    }\n    function code(λ, φ) {\n      var r = smallRadius ? radius : π - radius, code = 0;\n      if (λ < -r) code |= 1; else if (λ > r) code |= 2;\n      if (φ < -r) code |= 4; else if (φ > r) code |= 8;\n      return code;\n    }\n  }\n  function d3_geom_clipLine(x0, y0, x1, y1) {\n    return function(line) {\n      var a = line.a, b = line.b, ax = a.x, ay = a.y, bx = b.x, by = b.y, t0 = 0, t1 = 1, dx = bx - ax, dy = by - ay, r;\n      r = x0 - ax;\n      if (!dx && r > 0) return;\n      r /= dx;\n      if (dx < 0) {\n        if (r < t0) return;\n        if (r < t1) t1 = r;\n      } else if (dx > 0) {\n        if (r > t1) return;\n        if (r > t0) t0 = r;\n      }\n      r = x1 - ax;\n      if (!dx && r < 0) return;\n      r /= dx;\n      if (dx < 0) {\n        if (r > t1) return;\n        if (r > t0) t0 = r;\n      } else if (dx > 0) {\n        if (r < t0) return;\n        if (r < t1) t1 = r;\n      }\n      r = y0 - ay;\n      if (!dy && r > 0) return;\n      r /= dy;\n      if (dy < 0) {\n        if (r < t0) return;\n        if (r < t1) t1 = r;\n      } else if (dy > 0) {\n        if (r > t1) return;\n        if (r > t0) t0 = r;\n      }\n      r = y1 - ay;\n      if (!dy && r < 0) return;\n      r /= dy;\n      if (dy < 0) {\n        if (r > t1) return;\n        if (r > t0) t0 = r;\n      } else if (dy > 0) {\n        if (r < t0) return;\n        if (r < t1) t1 = r;\n      }\n      if (t0 > 0) line.a = {\n        x: ax + t0 * dx,\n        y: ay + t0 * dy\n      };\n      if (t1 < 1) line.b = {\n        x: ax + t1 * dx,\n        y: ay + t1 * dy\n      };\n      return line;\n    };\n  }\n  var d3_geo_clipExtentMAX = 1e9;\n  d3.geo.clipExtent = function() {\n    var x0, y0, x1, y1, stream, clip, clipExtent = {\n      stream: function(output) {\n        if (stream) stream.valid = false;\n        stream = clip(output);\n        stream.valid = true;\n        return stream;\n      },\n      extent: function(_) {\n        if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n        clip = d3_geo_clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]);\n        if (stream) stream.valid = false, stream = null;\n        return clipExtent;\n      }\n    };\n    return clipExtent.extent([ [ 0, 0 ], [ 960, 500 ] ]);\n  };\n  function d3_geo_clipExtent(x0, y0, x1, y1) {\n    return function(listener) {\n      var listener_ = listener, bufferListener = d3_geo_clipBufferListener(), clipLine = d3_geom_clipLine(x0, y0, x1, y1), segments, polygon, ring;\n      var clip = {\n        point: point,\n        lineStart: lineStart,\n        lineEnd: lineEnd,\n        polygonStart: function() {\n          listener = bufferListener;\n          segments = [];\n          polygon = [];\n          clean = true;\n        },\n        polygonEnd: function() {\n          listener = listener_;\n          segments = d3.merge(segments);\n          var clipStartInside = insidePolygon([ x0, y1 ]), inside = clean && clipStartInside, visible = segments.length;\n          if (inside || visible) {\n            listener.polygonStart();\n            if (inside) {\n              listener.lineStart();\n              interpolate(null, null, 1, listener);\n              listener.lineEnd();\n            }\n            if (visible) {\n              d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener);\n            }\n            listener.polygonEnd();\n          }\n          segments = polygon = ring = null;\n        }\n      };\n      function insidePolygon(p) {\n        var wn = 0, n = polygon.length, y = p[1];\n        for (var i = 0; i < n; ++i) {\n          for (var j = 1, v = polygon[i], m = v.length, a = v[0], b; j < m; ++j) {\n            b = v[j];\n            if (a[1] <= y) {\n              if (b[1] > y && d3_cross2d(a, b, p) > 0) ++wn;\n            } else {\n              if (b[1] <= y && d3_cross2d(a, b, p) < 0) --wn;\n            }\n            a = b;\n          }\n        }\n        return wn !== 0;\n      }\n      function interpolate(from, to, direction, listener) {\n        var a = 0, a1 = 0;\n        if (from == null || (a = corner(from, direction)) !== (a1 = corner(to, direction)) || comparePoints(from, to) < 0 ^ direction > 0) {\n          do {\n            listener.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n          } while ((a = (a + direction + 4) % 4) !== a1);\n        } else {\n          listener.point(to[0], to[1]);\n        }\n      }\n      function pointVisible(x, y) {\n        return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n      }\n      function point(x, y) {\n        if (pointVisible(x, y)) listener.point(x, y);\n      }\n      var x__, y__, v__, x_, y_, v_, first, clean;\n      function lineStart() {\n        clip.point = linePoint;\n        if (polygon) polygon.push(ring = []);\n        first = true;\n        v_ = false;\n        x_ = y_ = NaN;\n      }\n      function lineEnd() {\n        if (segments) {\n          linePoint(x__, y__);\n          if (v__ && v_) bufferListener.rejoin();\n          segments.push(bufferListener.buffer());\n        }\n        clip.point = point;\n        if (v_) listener.lineEnd();\n      }\n      function linePoint(x, y) {\n        x = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, x));\n        y = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, y));\n        var v = pointVisible(x, y);\n        if (polygon) ring.push([ x, y ]);\n        if (first) {\n          x__ = x, y__ = y, v__ = v;\n          first = false;\n          if (v) {\n            listener.lineStart();\n            listener.point(x, y);\n          }\n        } else {\n          if (v && v_) listener.point(x, y); else {\n            var l = {\n              a: {\n                x: x_,\n                y: y_\n              },\n              b: {\n                x: x,\n                y: y\n              }\n            };\n            if (clipLine(l)) {\n              if (!v_) {\n                listener.lineStart();\n                listener.point(l.a.x, l.a.y);\n              }\n              listener.point(l.b.x, l.b.y);\n              if (!v) listener.lineEnd();\n              clean = false;\n            } else if (v) {\n              listener.lineStart();\n              listener.point(x, y);\n              clean = false;\n            }\n          }\n        }\n        x_ = x, y_ = y, v_ = v;\n      }\n      return clip;\n    };\n    function corner(p, direction) {\n      return abs(p[0] - x0) < ε ? direction > 0 ? 0 : 3 : abs(p[0] - x1) < ε ? direction > 0 ? 2 : 1 : abs(p[1] - y0) < ε ? direction > 0 ? 1 : 0 : direction > 0 ? 3 : 2;\n    }\n    function compare(a, b) {\n      return comparePoints(a.x, b.x);\n    }\n    function comparePoints(a, b) {\n      var ca = corner(a, 1), cb = corner(b, 1);\n      return ca !== cb ? ca - cb : ca === 0 ? b[1] - a[1] : ca === 1 ? a[0] - b[0] : ca === 2 ? a[1] - b[1] : b[0] - a[0];\n    }\n  }\n  function d3_geo_conic(projectAt) {\n    var φ0 = 0, φ1 = π / 3, m = d3_geo_projectionMutator(projectAt), p = m(φ0, φ1);\n    p.parallels = function(_) {\n      if (!arguments.length) return [ φ0 / π * 180, φ1 / π * 180 ];\n      return m(φ0 = _[0] * π / 180, φ1 = _[1] * π / 180);\n    };\n    return p;\n  }\n  function d3_geo_conicEqualArea(φ0, φ1) {\n    var sinφ0 = Math.sin(φ0), n = (sinφ0 + Math.sin(φ1)) / 2, C = 1 + sinφ0 * (2 * n - sinφ0), ρ0 = Math.sqrt(C) / n;\n    function forward(λ, φ) {\n      var ρ = Math.sqrt(C - 2 * n * Math.sin(φ)) / n;\n      return [ ρ * Math.sin(λ *= n), ρ0 - ρ * Math.cos(λ) ];\n    }\n    forward.invert = function(x, y) {\n      var ρ0_y = ρ0 - y;\n      return [ Math.atan2(x, ρ0_y) / n, d3_asin((C - (x * x + ρ0_y * ρ0_y) * n * n) / (2 * n)) ];\n    };\n    return forward;\n  }\n  (d3.geo.conicEqualArea = function() {\n    return d3_geo_conic(d3_geo_conicEqualArea);\n  }).raw = d3_geo_conicEqualArea;\n  d3.geo.albers = function() {\n    return d3.geo.conicEqualArea().rotate([ 96, 0 ]).center([ -.6, 38.7 ]).parallels([ 29.5, 45.5 ]).scale(1070);\n  };\n  d3.geo.albersUsa = function() {\n    var lower48 = d3.geo.albers();\n    var alaska = d3.geo.conicEqualArea().rotate([ 154, 0 ]).center([ -2, 58.5 ]).parallels([ 55, 65 ]);\n    var hawaii = d3.geo.conicEqualArea().rotate([ 157, 0 ]).center([ -3, 19.9 ]).parallels([ 8, 18 ]);\n    var point, pointStream = {\n      point: function(x, y) {\n        point = [ x, y ];\n      }\n    }, lower48Point, alaskaPoint, hawaiiPoint;\n    function albersUsa(coordinates) {\n      var x = coordinates[0], y = coordinates[1];\n      point = null;\n      (lower48Point(x, y), point) || (alaskaPoint(x, y), point) || hawaiiPoint(x, y);\n      return point;\n    }\n    albersUsa.invert = function(coordinates) {\n      var k = lower48.scale(), t = lower48.translate(), x = (coordinates[0] - t[0]) / k, y = (coordinates[1] - t[1]) / k;\n      return (y >= .12 && y < .234 && x >= -.425 && x < -.214 ? alaska : y >= .166 && y < .234 && x >= -.214 && x < -.115 ? hawaii : lower48).invert(coordinates);\n    };\n    albersUsa.stream = function(stream) {\n      var lower48Stream = lower48.stream(stream), alaskaStream = alaska.stream(stream), hawaiiStream = hawaii.stream(stream);\n      return {\n        point: function(x, y) {\n          lower48Stream.point(x, y);\n          alaskaStream.point(x, y);\n          hawaiiStream.point(x, y);\n        },\n        sphere: function() {\n          lower48Stream.sphere();\n          alaskaStream.sphere();\n          hawaiiStream.sphere();\n        },\n        lineStart: function() {\n          lower48Stream.lineStart();\n          alaskaStream.lineStart();\n          hawaiiStream.lineStart();\n        },\n        lineEnd: function() {\n          lower48Stream.lineEnd();\n          alaskaStream.lineEnd();\n          hawaiiStream.lineEnd();\n        },\n        polygonStart: function() {\n          lower48Stream.polygonStart();\n          alaskaStream.polygonStart();\n          hawaiiStream.polygonStart();\n        },\n        polygonEnd: function() {\n          lower48Stream.polygonEnd();\n          alaskaStream.polygonEnd();\n          hawaiiStream.polygonEnd();\n        }\n      };\n    };\n    albersUsa.precision = function(_) {\n      if (!arguments.length) return lower48.precision();\n      lower48.precision(_);\n      alaska.precision(_);\n      hawaii.precision(_);\n      return albersUsa;\n    };\n    albersUsa.scale = function(_) {\n      if (!arguments.length) return lower48.scale();\n      lower48.scale(_);\n      alaska.scale(_ * .35);\n      hawaii.scale(_);\n      return albersUsa.translate(lower48.translate());\n    };\n    albersUsa.translate = function(_) {\n      if (!arguments.length) return lower48.translate();\n      var k = lower48.scale(), x = +_[0], y = +_[1];\n      lower48Point = lower48.translate(_).clipExtent([ [ x - .455 * k, y - .238 * k ], [ x + .455 * k, y + .238 * k ] ]).stream(pointStream).point;\n      alaskaPoint = alaska.translate([ x - .307 * k, y + .201 * k ]).clipExtent([ [ x - .425 * k + ε, y + .12 * k + ε ], [ x - .214 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n      hawaiiPoint = hawaii.translate([ x - .205 * k, y + .212 * k ]).clipExtent([ [ x - .214 * k + ε, y + .166 * k + ε ], [ x - .115 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n      return albersUsa;\n    };\n    return albersUsa.scale(1070);\n  };\n  var d3_geo_pathAreaSum, d3_geo_pathAreaPolygon, d3_geo_pathArea = {\n    point: d3_noop,\n    lineStart: d3_noop,\n    lineEnd: d3_noop,\n    polygonStart: function() {\n      d3_geo_pathAreaPolygon = 0;\n      d3_geo_pathArea.lineStart = d3_geo_pathAreaRingStart;\n    },\n    polygonEnd: function() {\n      d3_geo_pathArea.lineStart = d3_geo_pathArea.lineEnd = d3_geo_pathArea.point = d3_noop;\n      d3_geo_pathAreaSum += abs(d3_geo_pathAreaPolygon / 2);\n    }\n  };\n  function d3_geo_pathAreaRingStart() {\n    var x00, y00, x0, y0;\n    d3_geo_pathArea.point = function(x, y) {\n      d3_geo_pathArea.point = nextPoint;\n      x00 = x0 = x, y00 = y0 = y;\n    };\n    function nextPoint(x, y) {\n      d3_geo_pathAreaPolygon += y0 * x - x0 * y;\n      x0 = x, y0 = y;\n    }\n    d3_geo_pathArea.lineEnd = function() {\n      nextPoint(x00, y00);\n    };\n  }\n  var d3_geo_pathBoundsX0, d3_geo_pathBoundsY0, d3_geo_pathBoundsX1, d3_geo_pathBoundsY1;\n  var d3_geo_pathBounds = {\n    point: d3_geo_pathBoundsPoint,\n    lineStart: d3_noop,\n    lineEnd: d3_noop,\n    polygonStart: d3_noop,\n    polygonEnd: d3_noop\n  };\n  function d3_geo_pathBoundsPoint(x, y) {\n    if (x < d3_geo_pathBoundsX0) d3_geo_pathBoundsX0 = x;\n    if (x > d3_geo_pathBoundsX1) d3_geo_pathBoundsX1 = x;\n    if (y < d3_geo_pathBoundsY0) d3_geo_pathBoundsY0 = y;\n    if (y > d3_geo_pathBoundsY1) d3_geo_pathBoundsY1 = y;\n  }\n  function d3_geo_pathBuffer() {\n    var pointCircle = d3_geo_pathBufferCircle(4.5), buffer = [];\n    var stream = {\n      point: point,\n      lineStart: function() {\n        stream.point = pointLineStart;\n      },\n      lineEnd: lineEnd,\n      polygonStart: function() {\n        stream.lineEnd = lineEndPolygon;\n      },\n      polygonEnd: function() {\n        stream.lineEnd = lineEnd;\n        stream.point = point;\n      },\n      pointRadius: function(_) {\n        pointCircle = d3_geo_pathBufferCircle(_);\n        return stream;\n      },\n      result: function() {\n        if (buffer.length) {\n          var result = buffer.join(\"\");\n          buffer = [];\n          return result;\n        }\n      }\n    };\n    function point(x, y) {\n      buffer.push(\"M\", x, \",\", y, pointCircle);\n    }\n    function pointLineStart(x, y) {\n      buffer.push(\"M\", x, \",\", y);\n      stream.point = pointLine;\n    }\n    function pointLine(x, y) {\n      buffer.push(\"L\", x, \",\", y);\n    }\n    function lineEnd() {\n      stream.point = point;\n    }\n    function lineEndPolygon() {\n      buffer.push(\"Z\");\n    }\n    return stream;\n  }\n  function d3_geo_pathBufferCircle(radius) {\n    return \"m0,\" + radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius + \"z\";\n  }\n  var d3_geo_pathCentroid = {\n    point: d3_geo_pathCentroidPoint,\n    lineStart: d3_geo_pathCentroidLineStart,\n    lineEnd: d3_geo_pathCentroidLineEnd,\n    polygonStart: function() {\n      d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidRingStart;\n    },\n    polygonEnd: function() {\n      d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n      d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidLineStart;\n      d3_geo_pathCentroid.lineEnd = d3_geo_pathCentroidLineEnd;\n    }\n  };\n  function d3_geo_pathCentroidPoint(x, y) {\n    d3_geo_centroidX0 += x;\n    d3_geo_centroidY0 += y;\n    ++d3_geo_centroidZ0;\n  }\n  function d3_geo_pathCentroidLineStart() {\n    var x0, y0;\n    d3_geo_pathCentroid.point = function(x, y) {\n      d3_geo_pathCentroid.point = nextPoint;\n      d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n    };\n    function nextPoint(x, y) {\n      var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n      d3_geo_centroidX1 += z * (x0 + x) / 2;\n      d3_geo_centroidY1 += z * (y0 + y) / 2;\n      d3_geo_centroidZ1 += z;\n      d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n    }\n  }\n  function d3_geo_pathCentroidLineEnd() {\n    d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n  }\n  function d3_geo_pathCentroidRingStart() {\n    var x00, y00, x0, y0;\n    d3_geo_pathCentroid.point = function(x, y) {\n      d3_geo_pathCentroid.point = nextPoint;\n      d3_geo_pathCentroidPoint(x00 = x0 = x, y00 = y0 = y);\n    };\n    function nextPoint(x, y) {\n      var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n      d3_geo_centroidX1 += z * (x0 + x) / 2;\n      d3_geo_centroidY1 += z * (y0 + y) / 2;\n      d3_geo_centroidZ1 += z;\n      z = y0 * x - x0 * y;\n      d3_geo_centroidX2 += z * (x0 + x);\n      d3_geo_centroidY2 += z * (y0 + y);\n      d3_geo_centroidZ2 += z * 3;\n      d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n    }\n    d3_geo_pathCentroid.lineEnd = function() {\n      nextPoint(x00, y00);\n    };\n  }\n  function d3_geo_pathContext(context) {\n    var pointRadius = 4.5;\n    var stream = {\n      point: point,\n      lineStart: function() {\n        stream.point = pointLineStart;\n      },\n      lineEnd: lineEnd,\n      polygonStart: function() {\n        stream.lineEnd = lineEndPolygon;\n      },\n      polygonEnd: function() {\n        stream.lineEnd = lineEnd;\n        stream.point = point;\n      },\n      pointRadius: function(_) {\n        pointRadius = _;\n        return stream;\n      },\n      result: d3_noop\n    };\n    function point(x, y) {\n      context.moveTo(x + pointRadius, y);\n      context.arc(x, y, pointRadius, 0, τ);\n    }\n    function pointLineStart(x, y) {\n      context.moveTo(x, y);\n      stream.point = pointLine;\n    }\n    function pointLine(x, y) {\n      context.lineTo(x, y);\n    }\n    function lineEnd() {\n      stream.point = point;\n    }\n    function lineEndPolygon() {\n      context.closePath();\n    }\n    return stream;\n  }\n  function d3_geo_resample(project) {\n    var δ2 = .5, cosMinDistance = Math.cos(30 * d3_radians), maxDepth = 16;\n    function resample(stream) {\n      return (maxDepth ? resampleRecursive : resampleNone)(stream);\n    }\n    function resampleNone(stream) {\n      return d3_geo_transformPoint(stream, function(x, y) {\n        x = project(x, y);\n        stream.point(x[0], x[1]);\n      });\n    }\n    function resampleRecursive(stream) {\n      var λ00, φ00, x00, y00, a00, b00, c00, λ0, x0, y0, a0, b0, c0;\n      var resample = {\n        point: point,\n        lineStart: lineStart,\n        lineEnd: lineEnd,\n        polygonStart: function() {\n          stream.polygonStart();\n          resample.lineStart = ringStart;\n        },\n        polygonEnd: function() {\n          stream.polygonEnd();\n          resample.lineStart = lineStart;\n        }\n      };\n      function point(x, y) {\n        x = project(x, y);\n        stream.point(x[0], x[1]);\n      }\n      function lineStart() {\n        x0 = NaN;\n        resample.point = linePoint;\n        stream.lineStart();\n      }\n      function linePoint(λ, φ) {\n        var c = d3_geo_cartesian([ λ, φ ]), p = project(λ, φ);\n        resampleLineTo(x0, y0, λ0, a0, b0, c0, x0 = p[0], y0 = p[1], λ0 = λ, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n        stream.point(x0, y0);\n      }\n      function lineEnd() {\n        resample.point = point;\n        stream.lineEnd();\n      }\n      function ringStart() {\n        lineStart();\n        resample.point = ringPoint;\n        resample.lineEnd = ringEnd;\n      }\n      function ringPoint(λ, φ) {\n        linePoint(λ00 = λ, φ00 = φ), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n        resample.point = linePoint;\n      }\n      function ringEnd() {\n        resampleLineTo(x0, y0, λ0, a0, b0, c0, x00, y00, λ00, a00, b00, c00, maxDepth, stream);\n        resample.lineEnd = lineEnd;\n        lineEnd();\n      }\n      return resample;\n    }\n    function resampleLineTo(x0, y0, λ0, a0, b0, c0, x1, y1, λ1, a1, b1, c1, depth, stream) {\n      var dx = x1 - x0, dy = y1 - y0, d2 = dx * dx + dy * dy;\n      if (d2 > 4 * δ2 && depth--) {\n        var a = a0 + a1, b = b0 + b1, c = c0 + c1, m = Math.sqrt(a * a + b * b + c * c), φ2 = Math.asin(c /= m), λ2 = abs(abs(c) - 1) < ε || abs(λ0 - λ1) < ε ? (λ0 + λ1) / 2 : Math.atan2(b, a), p = project(λ2, φ2), x2 = p[0], y2 = p[1], dx2 = x2 - x0, dy2 = y2 - y0, dz = dy * dx2 - dx * dy2;\n        if (dz * dz / d2 > δ2 || abs((dx * dx2 + dy * dy2) / d2 - .5) > .3 || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) {\n          resampleLineTo(x0, y0, λ0, a0, b0, c0, x2, y2, λ2, a /= m, b /= m, c, depth, stream);\n          stream.point(x2, y2);\n          resampleLineTo(x2, y2, λ2, a, b, c, x1, y1, λ1, a1, b1, c1, depth, stream);\n        }\n      }\n    }\n    resample.precision = function(_) {\n      if (!arguments.length) return Math.sqrt(δ2);\n      maxDepth = (δ2 = _ * _) > 0 && 16;\n      return resample;\n    };\n    return resample;\n  }\n  d3.geo.path = function() {\n    var pointRadius = 4.5, projection, context, projectStream, contextStream, cacheStream;\n    function path(object) {\n      if (object) {\n        if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n        if (!cacheStream || !cacheStream.valid) cacheStream = projectStream(contextStream);\n        d3.geo.stream(object, cacheStream);\n      }\n      return contextStream.result();\n    }\n    path.area = function(object) {\n      d3_geo_pathAreaSum = 0;\n      d3.geo.stream(object, projectStream(d3_geo_pathArea));\n      return d3_geo_pathAreaSum;\n    };\n    path.centroid = function(object) {\n      d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n      d3.geo.stream(object, projectStream(d3_geo_pathCentroid));\n      return d3_geo_centroidZ2 ? [ d3_geo_centroidX2 / d3_geo_centroidZ2, d3_geo_centroidY2 / d3_geo_centroidZ2 ] : d3_geo_centroidZ1 ? [ d3_geo_centroidX1 / d3_geo_centroidZ1, d3_geo_centroidY1 / d3_geo_centroidZ1 ] : d3_geo_centroidZ0 ? [ d3_geo_centroidX0 / d3_geo_centroidZ0, d3_geo_centroidY0 / d3_geo_centroidZ0 ] : [ NaN, NaN ];\n    };\n    path.bounds = function(object) {\n      d3_geo_pathBoundsX1 = d3_geo_pathBoundsY1 = -(d3_geo_pathBoundsX0 = d3_geo_pathBoundsY0 = Infinity);\n      d3.geo.stream(object, projectStream(d3_geo_pathBounds));\n      return [ [ d3_geo_pathBoundsX0, d3_geo_pathBoundsY0 ], [ d3_geo_pathBoundsX1, d3_geo_pathBoundsY1 ] ];\n    };\n    path.projection = function(_) {\n      if (!arguments.length) return projection;\n      projectStream = (projection = _) ? _.stream || d3_geo_pathProjectStream(_) : d3_identity;\n      return reset();\n    };\n    path.context = function(_) {\n      if (!arguments.length) return context;\n      contextStream = (context = _) == null ? new d3_geo_pathBuffer() : new d3_geo_pathContext(_);\n      if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n      return reset();\n    };\n    path.pointRadius = function(_) {\n      if (!arguments.length) return pointRadius;\n      pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n      return path;\n    };\n    function reset() {\n      cacheStream = null;\n      return path;\n    }\n    return path.projection(d3.geo.albersUsa()).context(null);\n  };\n  function d3_geo_pathProjectStream(project) {\n    var resample = d3_geo_resample(function(x, y) {\n      return project([ x * d3_degrees, y * d3_degrees ]);\n    });\n    return function(stream) {\n      return d3_geo_projectionRadians(resample(stream));\n    };\n  }\n  d3.geo.transform = function(methods) {\n    return {\n      stream: function(stream) {\n        var transform = new d3_geo_transform(stream);\n        for (var k in methods) transform[k] = methods[k];\n        return transform;\n      }\n    };\n  };\n  function d3_geo_transform(stream) {\n    this.stream = stream;\n  }\n  d3_geo_transform.prototype = {\n    point: function(x, y) {\n      this.stream.point(x, y);\n    },\n    sphere: function() {\n      this.stream.sphere();\n    },\n    lineStart: function() {\n      this.stream.lineStart();\n    },\n    lineEnd: function() {\n      this.stream.lineEnd();\n    },\n    polygonStart: function() {\n      this.stream.polygonStart();\n    },\n    polygonEnd: function() {\n      this.stream.polygonEnd();\n    }\n  };\n  function d3_geo_transformPoint(stream, point) {\n    return {\n      point: point,\n      sphere: function() {\n        stream.sphere();\n      },\n      lineStart: function() {\n        stream.lineStart();\n      },\n      lineEnd: function() {\n        stream.lineEnd();\n      },\n      polygonStart: function() {\n        stream.polygonStart();\n      },\n      polygonEnd: function() {\n        stream.polygonEnd();\n      }\n    };\n  }\n  d3.geo.projection = d3_geo_projection;\n  d3.geo.projectionMutator = d3_geo_projectionMutator;\n  function d3_geo_projection(project) {\n    return d3_geo_projectionMutator(function() {\n      return project;\n    })();\n  }\n  function d3_geo_projectionMutator(projectAt) {\n    var project, rotate, projectRotate, projectResample = d3_geo_resample(function(x, y) {\n      x = project(x, y);\n      return [ x[0] * k + δx, δy - x[1] * k ];\n    }), k = 150, x = 480, y = 250, λ = 0, φ = 0, δλ = 0, δφ = 0, δγ = 0, δx, δy, preclip = d3_geo_clipAntimeridian, postclip = d3_identity, clipAngle = null, clipExtent = null, stream;\n    function projection(point) {\n      point = projectRotate(point[0] * d3_radians, point[1] * d3_radians);\n      return [ point[0] * k + δx, δy - point[1] * k ];\n    }\n    function invert(point) {\n      point = projectRotate.invert((point[0] - δx) / k, (δy - point[1]) / k);\n      return point && [ point[0] * d3_degrees, point[1] * d3_degrees ];\n    }\n    projection.stream = function(output) {\n      if (stream) stream.valid = false;\n      stream = d3_geo_projectionRadians(preclip(rotate, projectResample(postclip(output))));\n      stream.valid = true;\n      return stream;\n    };\n    projection.clipAngle = function(_) {\n      if (!arguments.length) return clipAngle;\n      preclip = _ == null ? (clipAngle = _, d3_geo_clipAntimeridian) : d3_geo_clipCircle((clipAngle = +_) * d3_radians);\n      return invalidate();\n    };\n    projection.clipExtent = function(_) {\n      if (!arguments.length) return clipExtent;\n      clipExtent = _;\n      postclip = _ ? d3_geo_clipExtent(_[0][0], _[0][1], _[1][0], _[1][1]) : d3_identity;\n      return invalidate();\n    };\n    projection.scale = function(_) {\n      if (!arguments.length) return k;\n      k = +_;\n      return reset();\n    };\n    projection.translate = function(_) {\n      if (!arguments.length) return [ x, y ];\n      x = +_[0];\n      y = +_[1];\n      return reset();\n    };\n    projection.center = function(_) {\n      if (!arguments.length) return [ λ * d3_degrees, φ * d3_degrees ];\n      λ = _[0] % 360 * d3_radians;\n      φ = _[1] % 360 * d3_radians;\n      return reset();\n    };\n    projection.rotate = function(_) {\n      if (!arguments.length) return [ δλ * d3_degrees, δφ * d3_degrees, δγ * d3_degrees ];\n      δλ = _[0] % 360 * d3_radians;\n      δφ = _[1] % 360 * d3_radians;\n      δγ = _.length > 2 ? _[2] % 360 * d3_radians : 0;\n      return reset();\n    };\n    d3.rebind(projection, projectResample, \"precision\");\n    function reset() {\n      projectRotate = d3_geo_compose(rotate = d3_geo_rotation(δλ, δφ, δγ), project);\n      var center = project(λ, φ);\n      δx = x - center[0] * k;\n      δy = y + center[1] * k;\n      return invalidate();\n    }\n    function invalidate() {\n      if (stream) stream.valid = false, stream = null;\n      return projection;\n    }\n    return function() {\n      project = projectAt.apply(this, arguments);\n      projection.invert = project.invert && invert;\n      return reset();\n    };\n  }\n  function d3_geo_projectionRadians(stream) {\n    return d3_geo_transformPoint(stream, function(x, y) {\n      stream.point(x * d3_radians, y * d3_radians);\n    });\n  }\n  function d3_geo_equirectangular(λ, φ) {\n    return [ λ, φ ];\n  }\n  (d3.geo.equirectangular = function() {\n    return d3_geo_projection(d3_geo_equirectangular);\n  }).raw = d3_geo_equirectangular.invert = d3_geo_equirectangular;\n  d3.geo.rotation = function(rotate) {\n    rotate = d3_geo_rotation(rotate[0] % 360 * d3_radians, rotate[1] * d3_radians, rotate.length > 2 ? rotate[2] * d3_radians : 0);\n    function forward(coordinates) {\n      coordinates = rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n      return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n    }\n    forward.invert = function(coordinates) {\n      coordinates = rotate.invert(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n      return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n    };\n    return forward;\n  };\n  function d3_geo_identityRotation(λ, φ) {\n    return [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\n  }\n  d3_geo_identityRotation.invert = d3_geo_equirectangular;\n  function d3_geo_rotation(δλ, δφ, δγ) {\n    return δλ ? δφ || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationφγ(δφ, δγ)) : d3_geo_rotationλ(δλ) : δφ || δγ ? d3_geo_rotationφγ(δφ, δγ) : d3_geo_identityRotation;\n  }\n  function d3_geo_forwardRotationλ(δλ) {\n    return function(λ, φ) {\n      return λ += δλ, [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\n    };\n  }\n  function d3_geo_rotationλ(δλ) {\n    var rotation = d3_geo_forwardRotationλ(δλ);\n    rotation.invert = d3_geo_forwardRotationλ(-δλ);\n    return rotation;\n  }\n  function d3_geo_rotationφγ(δφ, δγ) {\n    var cosδφ = Math.cos(δφ), sinδφ = Math.sin(δφ), cosδγ = Math.cos(δγ), sinδγ = Math.sin(δγ);\n    function rotation(λ, φ) {\n      var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδφ + x * sinδφ;\n      return [ Math.atan2(y * cosδγ - k * sinδγ, x * cosδφ - z * sinδφ), d3_asin(k * cosδγ + y * sinδγ) ];\n    }\n    rotation.invert = function(λ, φ) {\n      var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδγ - y * sinδγ;\n      return [ Math.atan2(y * cosδγ + z * sinδγ, x * cosδφ + k * sinδφ), d3_asin(k * cosδφ - x * sinδφ) ];\n    };\n    return rotation;\n  }\n  d3.geo.circle = function() {\n    var origin = [ 0, 0 ], angle, precision = 6, interpolate;\n    function circle() {\n      var center = typeof origin === \"function\" ? origin.apply(this, arguments) : origin, rotate = d3_geo_rotation(-center[0] * d3_radians, -center[1] * d3_radians, 0).invert, ring = [];\n      interpolate(null, null, 1, {\n        point: function(x, y) {\n          ring.push(x = rotate(x, y));\n          x[0] *= d3_degrees, x[1] *= d3_degrees;\n        }\n      });\n      return {\n        type: \"Polygon\",\n        coordinates: [ ring ]\n      };\n    }\n    circle.origin = function(x) {\n      if (!arguments.length) return origin;\n      origin = x;\n      return circle;\n    };\n    circle.angle = function(x) {\n      if (!arguments.length) return angle;\n      interpolate = d3_geo_circleInterpolate((angle = +x) * d3_radians, precision * d3_radians);\n      return circle;\n    };\n    circle.precision = function(_) {\n      if (!arguments.length) return precision;\n      interpolate = d3_geo_circleInterpolate(angle * d3_radians, (precision = +_) * d3_radians);\n      return circle;\n    };\n    return circle.angle(90);\n  };\n  function d3_geo_circleInterpolate(radius, precision) {\n    var cr = Math.cos(radius), sr = Math.sin(radius);\n    return function(from, to, direction, listener) {\n      var step = direction * precision;\n      if (from != null) {\n        from = d3_geo_circleAngle(cr, from);\n        to = d3_geo_circleAngle(cr, to);\n        if (direction > 0 ? from < to : from > to) from += direction * τ;\n      } else {\n        from = radius + direction * τ;\n        to = radius - .5 * step;\n      }\n      for (var point, t = from; direction > 0 ? t > to : t < to; t -= step) {\n        listener.point((point = d3_geo_spherical([ cr, -sr * Math.cos(t), -sr * Math.sin(t) ]))[0], point[1]);\n      }\n    };\n  }\n  function d3_geo_circleAngle(cr, point) {\n    var a = d3_geo_cartesian(point);\n    a[0] -= cr;\n    d3_geo_cartesianNormalize(a);\n    var angle = d3_acos(-a[1]);\n    return ((-a[2] < 0 ? -angle : angle) + 2 * Math.PI - ε) % (2 * Math.PI);\n  }\n  d3.geo.distance = function(a, b) {\n    var Δλ = (b[0] - a[0]) * d3_radians, φ0 = a[1] * d3_radians, φ1 = b[1] * d3_radians, sinΔλ = Math.sin(Δλ), cosΔλ = Math.cos(Δλ), sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), sinφ1 = Math.sin(φ1), cosφ1 = Math.cos(φ1), t;\n    return Math.atan2(Math.sqrt((t = cosφ1 * sinΔλ) * t + (t = cosφ0 * sinφ1 - sinφ0 * cosφ1 * cosΔλ) * t), sinφ0 * sinφ1 + cosφ0 * cosφ1 * cosΔλ);\n  };\n  d3.geo.graticule = function() {\n    var x1, x0, X1, X0, y1, y0, Y1, Y0, dx = 10, dy = dx, DX = 90, DY = 360, x, y, X, Y, precision = 2.5;\n    function graticule() {\n      return {\n        type: \"MultiLineString\",\n        coordinates: lines()\n      };\n    }\n    function lines() {\n      return d3.range(Math.ceil(X0 / DX) * DX, X1, DX).map(X).concat(d3.range(Math.ceil(Y0 / DY) * DY, Y1, DY).map(Y)).concat(d3.range(Math.ceil(x0 / dx) * dx, x1, dx).filter(function(x) {\n        return abs(x % DX) > ε;\n      }).map(x)).concat(d3.range(Math.ceil(y0 / dy) * dy, y1, dy).filter(function(y) {\n        return abs(y % DY) > ε;\n      }).map(y));\n    }\n    graticule.lines = function() {\n      return lines().map(function(coordinates) {\n        return {\n          type: \"LineString\",\n          coordinates: coordinates\n        };\n      });\n    };\n    graticule.outline = function() {\n      return {\n        type: \"Polygon\",\n        coordinates: [ X(X0).concat(Y(Y1).slice(1), X(X1).reverse().slice(1), Y(Y0).reverse().slice(1)) ]\n      };\n    };\n    graticule.extent = function(_) {\n      if (!arguments.length) return graticule.minorExtent();\n      return graticule.majorExtent(_).minorExtent(_);\n    };\n    graticule.majorExtent = function(_) {\n      if (!arguments.length) return [ [ X0, Y0 ], [ X1, Y1 ] ];\n      X0 = +_[0][0], X1 = +_[1][0];\n      Y0 = +_[0][1], Y1 = +_[1][1];\n      if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n      if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n      return graticule.precision(precision);\n    };\n    graticule.minorExtent = function(_) {\n      if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n      x0 = +_[0][0], x1 = +_[1][0];\n      y0 = +_[0][1], y1 = +_[1][1];\n      if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n      if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n      return graticule.precision(precision);\n    };\n    graticule.step = function(_) {\n      if (!arguments.length) return graticule.minorStep();\n      return graticule.majorStep(_).minorStep(_);\n    };\n    graticule.majorStep = function(_) {\n      if (!arguments.length) return [ DX, DY ];\n      DX = +_[0], DY = +_[1];\n      return graticule;\n    };\n    graticule.minorStep = function(_) {\n      if (!arguments.length) return [ dx, dy ];\n      dx = +_[0], dy = +_[1];\n      return graticule;\n    };\n    graticule.precision = function(_) {\n      if (!arguments.length) return precision;\n      precision = +_;\n      x = d3_geo_graticuleX(y0, y1, 90);\n      y = d3_geo_graticuleY(x0, x1, precision);\n      X = d3_geo_graticuleX(Y0, Y1, 90);\n      Y = d3_geo_graticuleY(X0, X1, precision);\n      return graticule;\n    };\n    return graticule.majorExtent([ [ -180, -90 + ε ], [ 180, 90 - ε ] ]).minorExtent([ [ -180, -80 - ε ], [ 180, 80 + ε ] ]);\n  };\n  function d3_geo_graticuleX(y0, y1, dy) {\n    var y = d3.range(y0, y1 - ε, dy).concat(y1);\n    return function(x) {\n      return y.map(function(y) {\n        return [ x, y ];\n      });\n    };\n  }\n  function d3_geo_graticuleY(x0, x1, dx) {\n    var x = d3.range(x0, x1 - ε, dx).concat(x1);\n    return function(y) {\n      return x.map(function(x) {\n        return [ x, y ];\n      });\n    };\n  }\n  function d3_source(d) {\n    return d.source;\n  }\n  function d3_target(d) {\n    return d.target;\n  }\n  d3.geo.greatArc = function() {\n    var source = d3_source, source_, target = d3_target, target_;\n    function greatArc() {\n      return {\n        type: \"LineString\",\n        coordinates: [ source_ || source.apply(this, arguments), target_ || target.apply(this, arguments) ]\n      };\n    }\n    greatArc.distance = function() {\n      return d3.geo.distance(source_ || source.apply(this, arguments), target_ || target.apply(this, arguments));\n    };\n    greatArc.source = function(_) {\n      if (!arguments.length) return source;\n      source = _, source_ = typeof _ === \"function\" ? null : _;\n      return greatArc;\n    };\n    greatArc.target = function(_) {\n      if (!arguments.length) return target;\n      target = _, target_ = typeof _ === \"function\" ? null : _;\n      return greatArc;\n    };\n    greatArc.precision = function() {\n      return arguments.length ? greatArc : 0;\n    };\n    return greatArc;\n  };\n  d3.geo.interpolate = function(source, target) {\n    return d3_geo_interpolate(source[0] * d3_radians, source[1] * d3_radians, target[0] * d3_radians, target[1] * d3_radians);\n  };\n  function d3_geo_interpolate(x0, y0, x1, y1) {\n    var cy0 = Math.cos(y0), sy0 = Math.sin(y0), cy1 = Math.cos(y1), sy1 = Math.sin(y1), kx0 = cy0 * Math.cos(x0), ky0 = cy0 * Math.sin(x0), kx1 = cy1 * Math.cos(x1), ky1 = cy1 * Math.sin(x1), d = 2 * Math.asin(Math.sqrt(d3_haversin(y1 - y0) + cy0 * cy1 * d3_haversin(x1 - x0))), k = 1 / Math.sin(d);\n    var interpolate = d ? function(t) {\n      var B = Math.sin(t *= d) * k, A = Math.sin(d - t) * k, x = A * kx0 + B * kx1, y = A * ky0 + B * ky1, z = A * sy0 + B * sy1;\n      return [ Math.atan2(y, x) * d3_degrees, Math.atan2(z, Math.sqrt(x * x + y * y)) * d3_degrees ];\n    } : function() {\n      return [ x0 * d3_degrees, y0 * d3_degrees ];\n    };\n    interpolate.distance = d;\n    return interpolate;\n  }\n  d3.geo.length = function(object) {\n    d3_geo_lengthSum = 0;\n    d3.geo.stream(object, d3_geo_length);\n    return d3_geo_lengthSum;\n  };\n  var d3_geo_lengthSum;\n  var d3_geo_length = {\n    sphere: d3_noop,\n    point: d3_noop,\n    lineStart: d3_geo_lengthLineStart,\n    lineEnd: d3_noop,\n    polygonStart: d3_noop,\n    polygonEnd: d3_noop\n  };\n  function d3_geo_lengthLineStart() {\n    var λ0, sinφ0, cosφ0;\n    d3_geo_length.point = function(λ, φ) {\n      λ0 = λ * d3_radians, sinφ0 = Math.sin(φ *= d3_radians), cosφ0 = Math.cos(φ);\n      d3_geo_length.point = nextPoint;\n    };\n    d3_geo_length.lineEnd = function() {\n      d3_geo_length.point = d3_geo_length.lineEnd = d3_noop;\n    };\n    function nextPoint(λ, φ) {\n      var sinφ = Math.sin(φ *= d3_radians), cosφ = Math.cos(φ), t = abs((λ *= d3_radians) - λ0), cosΔλ = Math.cos(t);\n      d3_geo_lengthSum += Math.atan2(Math.sqrt((t = cosφ * Math.sin(t)) * t + (t = cosφ0 * sinφ - sinφ0 * cosφ * cosΔλ) * t), sinφ0 * sinφ + cosφ0 * cosφ * cosΔλ);\n      λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ;\n    }\n  }\n  function d3_geo_azimuthal(scale, angle) {\n    function azimuthal(λ, φ) {\n      var cosλ = Math.cos(λ), cosφ = Math.cos(φ), k = scale(cosλ * cosφ);\n      return [ k * cosφ * Math.sin(λ), k * Math.sin(φ) ];\n    }\n    azimuthal.invert = function(x, y) {\n      var ρ = Math.sqrt(x * x + y * y), c = angle(ρ), sinc = Math.sin(c), cosc = Math.cos(c);\n      return [ Math.atan2(x * sinc, ρ * cosc), Math.asin(ρ && y * sinc / ρ) ];\n    };\n    return azimuthal;\n  }\n  var d3_geo_azimuthalEqualArea = d3_geo_azimuthal(function(cosλcosφ) {\n    return Math.sqrt(2 / (1 + cosλcosφ));\n  }, function(ρ) {\n    return 2 * Math.asin(ρ / 2);\n  });\n  (d3.geo.azimuthalEqualArea = function() {\n    return d3_geo_projection(d3_geo_azimuthalEqualArea);\n  }).raw = d3_geo_azimuthalEqualArea;\n  var d3_geo_azimuthalEquidistant = d3_geo_azimuthal(function(cosλcosφ) {\n    var c = Math.acos(cosλcosφ);\n    return c && c / Math.sin(c);\n  }, d3_identity);\n  (d3.geo.azimuthalEquidistant = function() {\n    return d3_geo_projection(d3_geo_azimuthalEquidistant);\n  }).raw = d3_geo_azimuthalEquidistant;\n  function d3_geo_conicConformal(φ0, φ1) {\n    var cosφ0 = Math.cos(φ0), t = function(φ) {\n      return Math.tan(π / 4 + φ / 2);\n    }, n = φ0 === φ1 ? Math.sin(φ0) : Math.log(cosφ0 / Math.cos(φ1)) / Math.log(t(φ1) / t(φ0)), F = cosφ0 * Math.pow(t(φ0), n) / n;\n    if (!n) return d3_geo_mercator;\n    function forward(λ, φ) {\n      if (F > 0) {\n        if (φ < -halfπ + ε) φ = -halfπ + ε;\n      } else {\n        if (φ > halfπ - ε) φ = halfπ - ε;\n      }\n      var ρ = F / Math.pow(t(φ), n);\n      return [ ρ * Math.sin(n * λ), F - ρ * Math.cos(n * λ) ];\n    }\n    forward.invert = function(x, y) {\n      var ρ0_y = F - y, ρ = d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y);\n      return [ Math.atan2(x, ρ0_y) / n, 2 * Math.atan(Math.pow(F / ρ, 1 / n)) - halfπ ];\n    };\n    return forward;\n  }\n  (d3.geo.conicConformal = function() {\n    return d3_geo_conic(d3_geo_conicConformal);\n  }).raw = d3_geo_conicConformal;\n  function d3_geo_conicEquidistant(φ0, φ1) {\n    var cosφ0 = Math.cos(φ0), n = φ0 === φ1 ? Math.sin(φ0) : (cosφ0 - Math.cos(φ1)) / (φ1 - φ0), G = cosφ0 / n + φ0;\n    if (abs(n) < ε) return d3_geo_equirectangular;\n    function forward(λ, φ) {\n      var ρ = G - φ;\n      return [ ρ * Math.sin(n * λ), G - ρ * Math.cos(n * λ) ];\n    }\n    forward.invert = function(x, y) {\n      var ρ0_y = G - y;\n      return [ Math.atan2(x, ρ0_y) / n, G - d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y) ];\n    };\n    return forward;\n  }\n  (d3.geo.conicEquidistant = function() {\n    return d3_geo_conic(d3_geo_conicEquidistant);\n  }).raw = d3_geo_conicEquidistant;\n  var d3_geo_gnomonic = d3_geo_azimuthal(function(cosλcosφ) {\n    return 1 / cosλcosφ;\n  }, Math.atan);\n  (d3.geo.gnomonic = function() {\n    return d3_geo_projection(d3_geo_gnomonic);\n  }).raw = d3_geo_gnomonic;\n  function d3_geo_mercator(λ, φ) {\n    return [ λ, Math.log(Math.tan(π / 4 + φ / 2)) ];\n  }\n  d3_geo_mercator.invert = function(x, y) {\n    return [ x, 2 * Math.atan(Math.exp(y)) - halfπ ];\n  };\n  function d3_geo_mercatorProjection(project) {\n    var m = d3_geo_projection(project), scale = m.scale, translate = m.translate, clipExtent = m.clipExtent, clipAuto;\n    m.scale = function() {\n      var v = scale.apply(m, arguments);\n      return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n    };\n    m.translate = function() {\n      var v = translate.apply(m, arguments);\n      return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n    };\n    m.clipExtent = function(_) {\n      var v = clipExtent.apply(m, arguments);\n      if (v === m) {\n        if (clipAuto = _ == null) {\n          var k = π * scale(), t = translate();\n          clipExtent([ [ t[0] - k, t[1] - k ], [ t[0] + k, t[1] + k ] ]);\n        }\n      } else if (clipAuto) {\n        v = null;\n      }\n      return v;\n    };\n    return m.clipExtent(null);\n  }\n  (d3.geo.mercator = function() {\n    return d3_geo_mercatorProjection(d3_geo_mercator);\n  }).raw = d3_geo_mercator;\n  var d3_geo_orthographic = d3_geo_azimuthal(function() {\n    return 1;\n  }, Math.asin);\n  (d3.geo.orthographic = function() {\n    return d3_geo_projection(d3_geo_orthographic);\n  }).raw = d3_geo_orthographic;\n  var d3_geo_stereographic = d3_geo_azimuthal(function(cosλcosφ) {\n    return 1 / (1 + cosλcosφ);\n  }, function(ρ) {\n    return 2 * Math.atan(ρ);\n  });\n  (d3.geo.stereographic = function() {\n    return d3_geo_projection(d3_geo_stereographic);\n  }).raw = d3_geo_stereographic;\n  function d3_geo_transverseMercator(λ, φ) {\n    return [ Math.log(Math.tan(π / 4 + φ / 2)), -λ ];\n  }\n  d3_geo_transverseMercator.invert = function(x, y) {\n    return [ -y, 2 * Math.atan(Math.exp(x)) - halfπ ];\n  };\n  (d3.geo.transverseMercator = function() {\n    var projection = d3_geo_mercatorProjection(d3_geo_transverseMercator), center = projection.center, rotate = projection.rotate;\n    projection.center = function(_) {\n      return _ ? center([ -_[1], _[0] ]) : (_ = center(), [ _[1], -_[0] ]);\n    };\n    projection.rotate = function(_) {\n      return _ ? rotate([ _[0], _[1], _.length > 2 ? _[2] + 90 : 90 ]) : (_ = rotate(), \n      [ _[0], _[1], _[2] - 90 ]);\n    };\n    return rotate([ 0, 0, 90 ]);\n  }).raw = d3_geo_transverseMercator;\n  d3.geom = {};\n  function d3_geom_pointX(d) {\n    return d[0];\n  }\n  function d3_geom_pointY(d) {\n    return d[1];\n  }\n  d3.geom.hull = function(vertices) {\n    var x = d3_geom_pointX, y = d3_geom_pointY;\n    if (arguments.length) return hull(vertices);\n    function hull(data) {\n      if (data.length < 3) return [];\n      var fx = d3_functor(x), fy = d3_functor(y), i, n = data.length, points = [], flippedPoints = [];\n      for (i = 0; i < n; i++) {\n        points.push([ +fx.call(this, data[i], i), +fy.call(this, data[i], i), i ]);\n      }\n      points.sort(d3_geom_hullOrder);\n      for (i = 0; i < n; i++) flippedPoints.push([ points[i][0], -points[i][1] ]);\n      var upper = d3_geom_hullUpper(points), lower = d3_geom_hullUpper(flippedPoints);\n      var skipLeft = lower[0] === upper[0], skipRight = lower[lower.length - 1] === upper[upper.length - 1], polygon = [];\n      for (i = upper.length - 1; i >= 0; --i) polygon.push(data[points[upper[i]][2]]);\n      for (i = +skipLeft; i < lower.length - skipRight; ++i) polygon.push(data[points[lower[i]][2]]);\n      return polygon;\n    }\n    hull.x = function(_) {\n      return arguments.length ? (x = _, hull) : x;\n    };\n    hull.y = function(_) {\n      return arguments.length ? (y = _, hull) : y;\n    };\n    return hull;\n  };\n  function d3_geom_hullUpper(points) {\n    var n = points.length, hull = [ 0, 1 ], hs = 2;\n    for (var i = 2; i < n; i++) {\n      while (hs > 1 && d3_cross2d(points[hull[hs - 2]], points[hull[hs - 1]], points[i]) <= 0) --hs;\n      hull[hs++] = i;\n    }\n    return hull.slice(0, hs);\n  }\n  function d3_geom_hullOrder(a, b) {\n    return a[0] - b[0] || a[1] - b[1];\n  }\n  d3.geom.polygon = function(coordinates) {\n    d3_subclass(coordinates, d3_geom_polygonPrototype);\n    return coordinates;\n  };\n  var d3_geom_polygonPrototype = d3.geom.polygon.prototype = [];\n  d3_geom_polygonPrototype.area = function() {\n    var i = -1, n = this.length, a, b = this[n - 1], area = 0;\n    while (++i < n) {\n      a = b;\n      b = this[i];\n      area += a[1] * b[0] - a[0] * b[1];\n    }\n    return area * .5;\n  };\n  d3_geom_polygonPrototype.centroid = function(k) {\n    var i = -1, n = this.length, x = 0, y = 0, a, b = this[n - 1], c;\n    if (!arguments.length) k = -1 / (6 * this.area());\n    while (++i < n) {\n      a = b;\n      b = this[i];\n      c = a[0] * b[1] - b[0] * a[1];\n      x += (a[0] + b[0]) * c;\n      y += (a[1] + b[1]) * c;\n    }\n    return [ x * k, y * k ];\n  };\n  d3_geom_polygonPrototype.clip = function(subject) {\n    var input, closed = d3_geom_polygonClosed(subject), i = -1, n = this.length - d3_geom_polygonClosed(this), j, m, a = this[n - 1], b, c, d;\n    while (++i < n) {\n      input = subject.slice();\n      subject.length = 0;\n      b = this[i];\n      c = input[(m = input.length - closed) - 1];\n      j = -1;\n      while (++j < m) {\n        d = input[j];\n        if (d3_geom_polygonInside(d, a, b)) {\n          if (!d3_geom_polygonInside(c, a, b)) {\n            subject.push(d3_geom_polygonIntersect(c, d, a, b));\n          }\n          subject.push(d);\n        } else if (d3_geom_polygonInside(c, a, b)) {\n          subject.push(d3_geom_polygonIntersect(c, d, a, b));\n        }\n        c = d;\n      }\n      if (closed) subject.push(subject[0]);\n      a = b;\n    }\n    return subject;\n  };\n  function d3_geom_polygonInside(p, a, b) {\n    return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]);\n  }\n  function d3_geom_polygonIntersect(c, d, a, b) {\n    var x1 = c[0], x3 = a[0], x21 = d[0] - x1, x43 = b[0] - x3, y1 = c[1], y3 = a[1], y21 = d[1] - y1, y43 = b[1] - y3, ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21);\n    return [ x1 + ua * x21, y1 + ua * y21 ];\n  }\n  function d3_geom_polygonClosed(coordinates) {\n    var a = coordinates[0], b = coordinates[coordinates.length - 1];\n    return !(a[0] - b[0] || a[1] - b[1]);\n  }\n  var d3_geom_voronoiEdges, d3_geom_voronoiCells, d3_geom_voronoiBeaches, d3_geom_voronoiBeachPool = [], d3_geom_voronoiFirstCircle, d3_geom_voronoiCircles, d3_geom_voronoiCirclePool = [];\n  function d3_geom_voronoiBeach() {\n    d3_geom_voronoiRedBlackNode(this);\n    this.edge = this.site = this.circle = null;\n  }\n  function d3_geom_voronoiCreateBeach(site) {\n    var beach = d3_geom_voronoiBeachPool.pop() || new d3_geom_voronoiBeach();\n    beach.site = site;\n    return beach;\n  }\n  function d3_geom_voronoiDetachBeach(beach) {\n    d3_geom_voronoiDetachCircle(beach);\n    d3_geom_voronoiBeaches.remove(beach);\n    d3_geom_voronoiBeachPool.push(beach);\n    d3_geom_voronoiRedBlackNode(beach);\n  }\n  function d3_geom_voronoiRemoveBeach(beach) {\n    var circle = beach.circle, x = circle.x, y = circle.cy, vertex = {\n      x: x,\n      y: y\n    }, previous = beach.P, next = beach.N, disappearing = [ beach ];\n    d3_geom_voronoiDetachBeach(beach);\n    var lArc = previous;\n    while (lArc.circle && abs(x - lArc.circle.x) < ε && abs(y - lArc.circle.cy) < ε) {\n      previous = lArc.P;\n      disappearing.unshift(lArc);\n      d3_geom_voronoiDetachBeach(lArc);\n      lArc = previous;\n    }\n    disappearing.unshift(lArc);\n    d3_geom_voronoiDetachCircle(lArc);\n    var rArc = next;\n    while (rArc.circle && abs(x - rArc.circle.x) < ε && abs(y - rArc.circle.cy) < ε) {\n      next = rArc.N;\n      disappearing.push(rArc);\n      d3_geom_voronoiDetachBeach(rArc);\n      rArc = next;\n    }\n    disappearing.push(rArc);\n    d3_geom_voronoiDetachCircle(rArc);\n    var nArcs = disappearing.length, iArc;\n    for (iArc = 1; iArc < nArcs; ++iArc) {\n      rArc = disappearing[iArc];\n      lArc = disappearing[iArc - 1];\n      d3_geom_voronoiSetEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n    }\n    lArc = disappearing[0];\n    rArc = disappearing[nArcs - 1];\n    rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, rArc.site, null, vertex);\n    d3_geom_voronoiAttachCircle(lArc);\n    d3_geom_voronoiAttachCircle(rArc);\n  }\n  function d3_geom_voronoiAddBeach(site) {\n    var x = site.x, directrix = site.y, lArc, rArc, dxl, dxr, node = d3_geom_voronoiBeaches._;\n    while (node) {\n      dxl = d3_geom_voronoiLeftBreakPoint(node, directrix) - x;\n      if (dxl > ε) node = node.L; else {\n        dxr = x - d3_geom_voronoiRightBreakPoint(node, directrix);\n        if (dxr > ε) {\n          if (!node.R) {\n            lArc = node;\n            break;\n          }\n          node = node.R;\n        } else {\n          if (dxl > -ε) {\n            lArc = node.P;\n            rArc = node;\n          } else if (dxr > -ε) {\n            lArc = node;\n            rArc = node.N;\n          } else {\n            lArc = rArc = node;\n          }\n          break;\n        }\n      }\n    }\n    var newArc = d3_geom_voronoiCreateBeach(site);\n    d3_geom_voronoiBeaches.insert(lArc, newArc);\n    if (!lArc && !rArc) return;\n    if (lArc === rArc) {\n      d3_geom_voronoiDetachCircle(lArc);\n      rArc = d3_geom_voronoiCreateBeach(lArc.site);\n      d3_geom_voronoiBeaches.insert(newArc, rArc);\n      newArc.edge = rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n      d3_geom_voronoiAttachCircle(lArc);\n      d3_geom_voronoiAttachCircle(rArc);\n      return;\n    }\n    if (!rArc) {\n      newArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n      return;\n    }\n    d3_geom_voronoiDetachCircle(lArc);\n    d3_geom_voronoiDetachCircle(rArc);\n    var lSite = lArc.site, ax = lSite.x, ay = lSite.y, bx = site.x - ax, by = site.y - ay, rSite = rArc.site, cx = rSite.x - ax, cy = rSite.y - ay, d = 2 * (bx * cy - by * cx), hb = bx * bx + by * by, hc = cx * cx + cy * cy, vertex = {\n      x: (cy * hb - by * hc) / d + ax,\n      y: (bx * hc - cx * hb) / d + ay\n    };\n    d3_geom_voronoiSetEdgeEnd(rArc.edge, lSite, rSite, vertex);\n    newArc.edge = d3_geom_voronoiCreateEdge(lSite, site, null, vertex);\n    rArc.edge = d3_geom_voronoiCreateEdge(site, rSite, null, vertex);\n    d3_geom_voronoiAttachCircle(lArc);\n    d3_geom_voronoiAttachCircle(rArc);\n  }\n  function d3_geom_voronoiLeftBreakPoint(arc, directrix) {\n    var site = arc.site, rfocx = site.x, rfocy = site.y, pby2 = rfocy - directrix;\n    if (!pby2) return rfocx;\n    var lArc = arc.P;\n    if (!lArc) return -Infinity;\n    site = lArc.site;\n    var lfocx = site.x, lfocy = site.y, plby2 = lfocy - directrix;\n    if (!plby2) return lfocx;\n    var hl = lfocx - rfocx, aby2 = 1 / pby2 - 1 / plby2, b = hl / plby2;\n    if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n    return (rfocx + lfocx) / 2;\n  }\n  function d3_geom_voronoiRightBreakPoint(arc, directrix) {\n    var rArc = arc.N;\n    if (rArc) return d3_geom_voronoiLeftBreakPoint(rArc, directrix);\n    var site = arc.site;\n    return site.y === directrix ? site.x : Infinity;\n  }\n  function d3_geom_voronoiCell(site) {\n    this.site = site;\n    this.edges = [];\n  }\n  d3_geom_voronoiCell.prototype.prepare = function() {\n    var halfEdges = this.edges, iHalfEdge = halfEdges.length, edge;\n    while (iHalfEdge--) {\n      edge = halfEdges[iHalfEdge].edge;\n      if (!edge.b || !edge.a) halfEdges.splice(iHalfEdge, 1);\n    }\n    halfEdges.sort(d3_geom_voronoiHalfEdgeOrder);\n    return halfEdges.length;\n  };\n  function d3_geom_voronoiCloseCells(extent) {\n    var x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], x2, y2, x3, y3, cells = d3_geom_voronoiCells, iCell = cells.length, cell, iHalfEdge, halfEdges, nHalfEdges, start, end;\n    while (iCell--) {\n      cell = cells[iCell];\n      if (!cell || !cell.prepare()) continue;\n      halfEdges = cell.edges;\n      nHalfEdges = halfEdges.length;\n      iHalfEdge = 0;\n      while (iHalfEdge < nHalfEdges) {\n        end = halfEdges[iHalfEdge].end(), x3 = end.x, y3 = end.y;\n        start = halfEdges[++iHalfEdge % nHalfEdges].start(), x2 = start.x, y2 = start.y;\n        if (abs(x3 - x2) > ε || abs(y3 - y2) > ε) {\n          halfEdges.splice(iHalfEdge, 0, new d3_geom_voronoiHalfEdge(d3_geom_voronoiCreateBorderEdge(cell.site, end, abs(x3 - x0) < ε && y1 - y3 > ε ? {\n            x: x0,\n            y: abs(x2 - x0) < ε ? y2 : y1\n          } : abs(y3 - y1) < ε && x1 - x3 > ε ? {\n            x: abs(y2 - y1) < ε ? x2 : x1,\n            y: y1\n          } : abs(x3 - x1) < ε && y3 - y0 > ε ? {\n            x: x1,\n            y: abs(x2 - x1) < ε ? y2 : y0\n          } : abs(y3 - y0) < ε && x3 - x0 > ε ? {\n            x: abs(y2 - y0) < ε ? x2 : x0,\n            y: y0\n          } : null), cell.site, null));\n          ++nHalfEdges;\n        }\n      }\n    }\n  }\n  function d3_geom_voronoiHalfEdgeOrder(a, b) {\n    return b.angle - a.angle;\n  }\n  function d3_geom_voronoiCircle() {\n    d3_geom_voronoiRedBlackNode(this);\n    this.x = this.y = this.arc = this.site = this.cy = null;\n  }\n  function d3_geom_voronoiAttachCircle(arc) {\n    var lArc = arc.P, rArc = arc.N;\n    if (!lArc || !rArc) return;\n    var lSite = lArc.site, cSite = arc.site, rSite = rArc.site;\n    if (lSite === rSite) return;\n    var bx = cSite.x, by = cSite.y, ax = lSite.x - bx, ay = lSite.y - by, cx = rSite.x - bx, cy = rSite.y - by;\n    var d = 2 * (ax * cy - ay * cx);\n    if (d >= -ε2) return;\n    var ha = ax * ax + ay * ay, hc = cx * cx + cy * cy, x = (cy * ha - ay * hc) / d, y = (ax * hc - cx * ha) / d, cy = y + by;\n    var circle = d3_geom_voronoiCirclePool.pop() || new d3_geom_voronoiCircle();\n    circle.arc = arc;\n    circle.site = cSite;\n    circle.x = x + bx;\n    circle.y = cy + Math.sqrt(x * x + y * y);\n    circle.cy = cy;\n    arc.circle = circle;\n    var before = null, node = d3_geom_voronoiCircles._;\n    while (node) {\n      if (circle.y < node.y || circle.y === node.y && circle.x <= node.x) {\n        if (node.L) node = node.L; else {\n          before = node.P;\n          break;\n        }\n      } else {\n        if (node.R) node = node.R; else {\n          before = node;\n          break;\n        }\n      }\n    }\n    d3_geom_voronoiCircles.insert(before, circle);\n    if (!before) d3_geom_voronoiFirstCircle = circle;\n  }\n  function d3_geom_voronoiDetachCircle(arc) {\n    var circle = arc.circle;\n    if (circle) {\n      if (!circle.P) d3_geom_voronoiFirstCircle = circle.N;\n      d3_geom_voronoiCircles.remove(circle);\n      d3_geom_voronoiCirclePool.push(circle);\n      d3_geom_voronoiRedBlackNode(circle);\n      arc.circle = null;\n    }\n  }\n  function d3_geom_voronoiClipEdges(extent) {\n    var edges = d3_geom_voronoiEdges, clip = d3_geom_clipLine(extent[0][0], extent[0][1], extent[1][0], extent[1][1]), i = edges.length, e;\n    while (i--) {\n      e = edges[i];\n      if (!d3_geom_voronoiConnectEdge(e, extent) || !clip(e) || abs(e.a.x - e.b.x) < ε && abs(e.a.y - e.b.y) < ε) {\n        e.a = e.b = null;\n        edges.splice(i, 1);\n      }\n    }\n  }\n  function d3_geom_voronoiConnectEdge(edge, extent) {\n    var vb = edge.b;\n    if (vb) return true;\n    var va = edge.a, x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], lSite = edge.l, rSite = edge.r, lx = lSite.x, ly = lSite.y, rx = rSite.x, ry = rSite.y, fx = (lx + rx) / 2, fy = (ly + ry) / 2, fm, fb;\n    if (ry === ly) {\n      if (fx < x0 || fx >= x1) return;\n      if (lx > rx) {\n        if (!va) va = {\n          x: fx,\n          y: y0\n        }; else if (va.y >= y1) return;\n        vb = {\n          x: fx,\n          y: y1\n        };\n      } else {\n        if (!va) va = {\n          x: fx,\n          y: y1\n        }; else if (va.y < y0) return;\n        vb = {\n          x: fx,\n          y: y0\n        };\n      }\n    } else {\n      fm = (lx - rx) / (ry - ly);\n      fb = fy - fm * fx;\n      if (fm < -1 || fm > 1) {\n        if (lx > rx) {\n          if (!va) va = {\n            x: (y0 - fb) / fm,\n            y: y0\n          }; else if (va.y >= y1) return;\n          vb = {\n            x: (y1 - fb) / fm,\n            y: y1\n          };\n        } else {\n          if (!va) va = {\n            x: (y1 - fb) / fm,\n            y: y1\n          }; else if (va.y < y0) return;\n          vb = {\n            x: (y0 - fb) / fm,\n            y: y0\n          };\n        }\n      } else {\n        if (ly < ry) {\n          if (!va) va = {\n            x: x0,\n            y: fm * x0 + fb\n          }; else if (va.x >= x1) return;\n          vb = {\n            x: x1,\n            y: fm * x1 + fb\n          };\n        } else {\n          if (!va) va = {\n            x: x1,\n            y: fm * x1 + fb\n          }; else if (va.x < x0) return;\n          vb = {\n            x: x0,\n            y: fm * x0 + fb\n          };\n        }\n      }\n    }\n    edge.a = va;\n    edge.b = vb;\n    return true;\n  }\n  function d3_geom_voronoiEdge(lSite, rSite) {\n    this.l = lSite;\n    this.r = rSite;\n    this.a = this.b = null;\n  }\n  function d3_geom_voronoiCreateEdge(lSite, rSite, va, vb) {\n    var edge = new d3_geom_voronoiEdge(lSite, rSite);\n    d3_geom_voronoiEdges.push(edge);\n    if (va) d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, va);\n    if (vb) d3_geom_voronoiSetEdgeEnd(edge, rSite, lSite, vb);\n    d3_geom_voronoiCells[lSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, lSite, rSite));\n    d3_geom_voronoiCells[rSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, rSite, lSite));\n    return edge;\n  }\n  function d3_geom_voronoiCreateBorderEdge(lSite, va, vb) {\n    var edge = new d3_geom_voronoiEdge(lSite, null);\n    edge.a = va;\n    edge.b = vb;\n    d3_geom_voronoiEdges.push(edge);\n    return edge;\n  }\n  function d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, vertex) {\n    if (!edge.a && !edge.b) {\n      edge.a = vertex;\n      edge.l = lSite;\n      edge.r = rSite;\n    } else if (edge.l === rSite) {\n      edge.b = vertex;\n    } else {\n      edge.a = vertex;\n    }\n  }\n  function d3_geom_voronoiHalfEdge(edge, lSite, rSite) {\n    var va = edge.a, vb = edge.b;\n    this.edge = edge;\n    this.site = lSite;\n    this.angle = rSite ? Math.atan2(rSite.y - lSite.y, rSite.x - lSite.x) : edge.l === lSite ? Math.atan2(vb.x - va.x, va.y - vb.y) : Math.atan2(va.x - vb.x, vb.y - va.y);\n  }\n  d3_geom_voronoiHalfEdge.prototype = {\n    start: function() {\n      return this.edge.l === this.site ? this.edge.a : this.edge.b;\n    },\n    end: function() {\n      return this.edge.l === this.site ? this.edge.b : this.edge.a;\n    }\n  };\n  function d3_geom_voronoiRedBlackTree() {\n    this._ = null;\n  }\n  function d3_geom_voronoiRedBlackNode(node) {\n    node.U = node.C = node.L = node.R = node.P = node.N = null;\n  }\n  d3_geom_voronoiRedBlackTree.prototype = {\n    insert: function(after, node) {\n      var parent, grandpa, uncle;\n      if (after) {\n        node.P = after;\n        node.N = after.N;\n        if (after.N) after.N.P = node;\n        after.N = node;\n        if (after.R) {\n          after = after.R;\n          while (after.L) after = after.L;\n          after.L = node;\n        } else {\n          after.R = node;\n        }\n        parent = after;\n      } else if (this._) {\n        after = d3_geom_voronoiRedBlackFirst(this._);\n        node.P = null;\n        node.N = after;\n        after.P = after.L = node;\n        parent = after;\n      } else {\n        node.P = node.N = null;\n        this._ = node;\n        parent = null;\n      }\n      node.L = node.R = null;\n      node.U = parent;\n      node.C = true;\n      after = node;\n      while (parent && parent.C) {\n        grandpa = parent.U;\n        if (parent === grandpa.L) {\n          uncle = grandpa.R;\n          if (uncle && uncle.C) {\n            parent.C = uncle.C = false;\n            grandpa.C = true;\n            after = grandpa;\n          } else {\n            if (after === parent.R) {\n              d3_geom_voronoiRedBlackRotateLeft(this, parent);\n              after = parent;\n              parent = after.U;\n            }\n            parent.C = false;\n            grandpa.C = true;\n            d3_geom_voronoiRedBlackRotateRight(this, grandpa);\n          }\n        } else {\n          uncle = grandpa.L;\n          if (uncle && uncle.C) {\n            parent.C = uncle.C = false;\n            grandpa.C = true;\n            after = grandpa;\n          } else {\n            if (after === parent.L) {\n              d3_geom_voronoiRedBlackRotateRight(this, parent);\n              after = parent;\n              parent = after.U;\n            }\n            parent.C = false;\n            grandpa.C = true;\n            d3_geom_voronoiRedBlackRotateLeft(this, grandpa);\n          }\n        }\n        parent = after.U;\n      }\n      this._.C = false;\n    },\n    remove: function(node) {\n      if (node.N) node.N.P = node.P;\n      if (node.P) node.P.N = node.N;\n      node.N = node.P = null;\n      var parent = node.U, sibling, left = node.L, right = node.R, next, red;\n      if (!left) next = right; else if (!right) next = left; else next = d3_geom_voronoiRedBlackFirst(right);\n      if (parent) {\n        if (parent.L === node) parent.L = next; else parent.R = next;\n      } else {\n        this._ = next;\n      }\n      if (left && right) {\n        red = next.C;\n        next.C = node.C;\n        next.L = left;\n        left.U = next;\n        if (next !== right) {\n          parent = next.U;\n          next.U = node.U;\n          node = next.R;\n          parent.L = node;\n          next.R = right;\n          right.U = next;\n        } else {\n          next.U = parent;\n          parent = next;\n          node = next.R;\n        }\n      } else {\n        red = node.C;\n        node = next;\n      }\n      if (node) node.U = parent;\n      if (red) return;\n      if (node && node.C) {\n        node.C = false;\n        return;\n      }\n      do {\n        if (node === this._) break;\n        if (node === parent.L) {\n          sibling = parent.R;\n          if (sibling.C) {\n            sibling.C = false;\n            parent.C = true;\n            d3_geom_voronoiRedBlackRotateLeft(this, parent);\n            sibling = parent.R;\n          }\n          if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n            if (!sibling.R || !sibling.R.C) {\n              sibling.L.C = false;\n              sibling.C = true;\n              d3_geom_voronoiRedBlackRotateRight(this, sibling);\n              sibling = parent.R;\n            }\n            sibling.C = parent.C;\n            parent.C = sibling.R.C = false;\n            d3_geom_voronoiRedBlackRotateLeft(this, parent);\n            node = this._;\n            break;\n          }\n        } else {\n          sibling = parent.L;\n          if (sibling.C) {\n            sibling.C = false;\n            parent.C = true;\n            d3_geom_voronoiRedBlackRotateRight(this, parent);\n            sibling = parent.L;\n          }\n          if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n            if (!sibling.L || !sibling.L.C) {\n              sibling.R.C = false;\n              sibling.C = true;\n              d3_geom_voronoiRedBlackRotateLeft(this, sibling);\n              sibling = parent.L;\n            }\n            sibling.C = parent.C;\n            parent.C = sibling.L.C = false;\n            d3_geom_voronoiRedBlackRotateRight(this, parent);\n            node = this._;\n            break;\n          }\n        }\n        sibling.C = true;\n        node = parent;\n        parent = parent.U;\n      } while (!node.C);\n      if (node) node.C = false;\n    }\n  };\n  function d3_geom_voronoiRedBlackRotateLeft(tree, node) {\n    var p = node, q = node.R, parent = p.U;\n    if (parent) {\n      if (parent.L === p) parent.L = q; else parent.R = q;\n    } else {\n      tree._ = q;\n    }\n    q.U = parent;\n    p.U = q;\n    p.R = q.L;\n    if (p.R) p.R.U = p;\n    q.L = p;\n  }\n  function d3_geom_voronoiRedBlackRotateRight(tree, node) {\n    var p = node, q = node.L, parent = p.U;\n    if (parent) {\n      if (parent.L === p) parent.L = q; else parent.R = q;\n    } else {\n      tree._ = q;\n    }\n    q.U = parent;\n    p.U = q;\n    p.L = q.R;\n    if (p.L) p.L.U = p;\n    q.R = p;\n  }\n  function d3_geom_voronoiRedBlackFirst(node) {\n    while (node.L) node = node.L;\n    return node;\n  }\n  function d3_geom_voronoi(sites, bbox) {\n    var site = sites.sort(d3_geom_voronoiVertexOrder).pop(), x0, y0, circle;\n    d3_geom_voronoiEdges = [];\n    d3_geom_voronoiCells = new Array(sites.length);\n    d3_geom_voronoiBeaches = new d3_geom_voronoiRedBlackTree();\n    d3_geom_voronoiCircles = new d3_geom_voronoiRedBlackTree();\n    while (true) {\n      circle = d3_geom_voronoiFirstCircle;\n      if (site && (!circle || site.y < circle.y || site.y === circle.y && site.x < circle.x)) {\n        if (site.x !== x0 || site.y !== y0) {\n          d3_geom_voronoiCells[site.i] = new d3_geom_voronoiCell(site);\n          d3_geom_voronoiAddBeach(site);\n          x0 = site.x, y0 = site.y;\n        }\n        site = sites.pop();\n      } else if (circle) {\n        d3_geom_voronoiRemoveBeach(circle.arc);\n      } else {\n        break;\n      }\n    }\n    if (bbox) d3_geom_voronoiClipEdges(bbox), d3_geom_voronoiCloseCells(bbox);\n    var diagram = {\n      cells: d3_geom_voronoiCells,\n      edges: d3_geom_voronoiEdges\n    };\n    d3_geom_voronoiBeaches = d3_geom_voronoiCircles = d3_geom_voronoiEdges = d3_geom_voronoiCells = null;\n    return diagram;\n  }\n  function d3_geom_voronoiVertexOrder(a, b) {\n    return b.y - a.y || b.x - a.x;\n  }\n  d3.geom.voronoi = function(points) {\n    var x = d3_geom_pointX, y = d3_geom_pointY, fx = x, fy = y, clipExtent = d3_geom_voronoiClipExtent;\n    if (points) return voronoi(points);\n    function voronoi(data) {\n      var polygons = new Array(data.length), x0 = clipExtent[0][0], y0 = clipExtent[0][1], x1 = clipExtent[1][0], y1 = clipExtent[1][1];\n      d3_geom_voronoi(sites(data), clipExtent).cells.forEach(function(cell, i) {\n        var edges = cell.edges, site = cell.site, polygon = polygons[i] = edges.length ? edges.map(function(e) {\n          var s = e.start();\n          return [ s.x, s.y ];\n        }) : site.x >= x0 && site.x <= x1 && site.y >= y0 && site.y <= y1 ? [ [ x0, y1 ], [ x1, y1 ], [ x1, y0 ], [ x0, y0 ] ] : [];\n        polygon.point = data[i];\n      });\n      return polygons;\n    }\n    function sites(data) {\n      return data.map(function(d, i) {\n        return {\n          x: Math.round(fx(d, i) / ε) * ε,\n          y: Math.round(fy(d, i) / ε) * ε,\n          i: i\n        };\n      });\n    }\n    voronoi.links = function(data) {\n      return d3_geom_voronoi(sites(data)).edges.filter(function(edge) {\n        return edge.l && edge.r;\n      }).map(function(edge) {\n        return {\n          source: data[edge.l.i],\n          target: data[edge.r.i]\n        };\n      });\n    };\n    voronoi.triangles = function(data) {\n      var triangles = [];\n      d3_geom_voronoi(sites(data)).cells.forEach(function(cell, i) {\n        var site = cell.site, edges = cell.edges.sort(d3_geom_voronoiHalfEdgeOrder), j = -1, m = edges.length, e0, s0, e1 = edges[m - 1].edge, s1 = e1.l === site ? e1.r : e1.l;\n        while (++j < m) {\n          e0 = e1;\n          s0 = s1;\n          e1 = edges[j].edge;\n          s1 = e1.l === site ? e1.r : e1.l;\n          if (i < s0.i && i < s1.i && d3_geom_voronoiTriangleArea(site, s0, s1) < 0) {\n            triangles.push([ data[i], data[s0.i], data[s1.i] ]);\n          }\n        }\n      });\n      return triangles;\n    };\n    voronoi.x = function(_) {\n      return arguments.length ? (fx = d3_functor(x = _), voronoi) : x;\n    };\n    voronoi.y = function(_) {\n      return arguments.length ? (fy = d3_functor(y = _), voronoi) : y;\n    };\n    voronoi.clipExtent = function(_) {\n      if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent;\n      clipExtent = _ == null ? d3_geom_voronoiClipExtent : _;\n      return voronoi;\n    };\n    voronoi.size = function(_) {\n      if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent && clipExtent[1];\n      return voronoi.clipExtent(_ && [ [ 0, 0 ], _ ]);\n    };\n    return voronoi;\n  };\n  var d3_geom_voronoiClipExtent = [ [ -1e6, -1e6 ], [ 1e6, 1e6 ] ];\n  function d3_geom_voronoiTriangleArea(a, b, c) {\n    return (a.x - c.x) * (b.y - a.y) - (a.x - b.x) * (c.y - a.y);\n  }\n  d3.geom.delaunay = function(vertices) {\n    return d3.geom.voronoi().triangles(vertices);\n  };\n  d3.geom.quadtree = function(points, x1, y1, x2, y2) {\n    var x = d3_geom_pointX, y = d3_geom_pointY, compat;\n    if (compat = arguments.length) {\n      x = d3_geom_quadtreeCompatX;\n      y = d3_geom_quadtreeCompatY;\n      if (compat === 3) {\n        y2 = y1;\n        x2 = x1;\n        y1 = x1 = 0;\n      }\n      return quadtree(points);\n    }\n    function quadtree(data) {\n      var d, fx = d3_functor(x), fy = d3_functor(y), xs, ys, i, n, x1_, y1_, x2_, y2_;\n      if (x1 != null) {\n        x1_ = x1, y1_ = y1, x2_ = x2, y2_ = y2;\n      } else {\n        x2_ = y2_ = -(x1_ = y1_ = Infinity);\n        xs = [], ys = [];\n        n = data.length;\n        if (compat) for (i = 0; i < n; ++i) {\n          d = data[i];\n          if (d.x < x1_) x1_ = d.x;\n          if (d.y < y1_) y1_ = d.y;\n          if (d.x > x2_) x2_ = d.x;\n          if (d.y > y2_) y2_ = d.y;\n          xs.push(d.x);\n          ys.push(d.y);\n        } else for (i = 0; i < n; ++i) {\n          var x_ = +fx(d = data[i], i), y_ = +fy(d, i);\n          if (x_ < x1_) x1_ = x_;\n          if (y_ < y1_) y1_ = y_;\n          if (x_ > x2_) x2_ = x_;\n          if (y_ > y2_) y2_ = y_;\n          xs.push(x_);\n          ys.push(y_);\n        }\n      }\n      var dx = x2_ - x1_, dy = y2_ - y1_;\n      if (dx > dy) y2_ = y1_ + dx; else x2_ = x1_ + dy;\n      function insert(n, d, x, y, x1, y1, x2, y2) {\n        if (isNaN(x) || isNaN(y)) return;\n        if (n.leaf) {\n          var nx = n.x, ny = n.y;\n          if (nx != null) {\n            if (abs(nx - x) + abs(ny - y) < .01) {\n              insertChild(n, d, x, y, x1, y1, x2, y2);\n            } else {\n              var nPoint = n.point;\n              n.x = n.y = n.point = null;\n              insertChild(n, nPoint, nx, ny, x1, y1, x2, y2);\n              insertChild(n, d, x, y, x1, y1, x2, y2);\n            }\n          } else {\n            n.x = x, n.y = y, n.point = d;\n          }\n        } else {\n          insertChild(n, d, x, y, x1, y1, x2, y2);\n        }\n      }\n      function insertChild(n, d, x, y, x1, y1, x2, y2) {\n        var xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym, i = below << 1 | right;\n        n.leaf = false;\n        n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode());\n        if (right) x1 = xm; else x2 = xm;\n        if (below) y1 = ym; else y2 = ym;\n        insert(n, d, x, y, x1, y1, x2, y2);\n      }\n      var root = d3_geom_quadtreeNode();\n      root.add = function(d) {\n        insert(root, d, +fx(d, ++i), +fy(d, i), x1_, y1_, x2_, y2_);\n      };\n      root.visit = function(f) {\n        d3_geom_quadtreeVisit(f, root, x1_, y1_, x2_, y2_);\n      };\n      root.find = function(point) {\n        return d3_geom_quadtreeFind(root, point[0], point[1], x1_, y1_, x2_, y2_);\n      };\n      i = -1;\n      if (x1 == null) {\n        while (++i < n) {\n          insert(root, data[i], xs[i], ys[i], x1_, y1_, x2_, y2_);\n        }\n        --i;\n      } else data.forEach(root.add);\n      xs = ys = data = d = null;\n      return root;\n    }\n    quadtree.x = function(_) {\n      return arguments.length ? (x = _, quadtree) : x;\n    };\n    quadtree.y = function(_) {\n      return arguments.length ? (y = _, quadtree) : y;\n    };\n    quadtree.extent = function(_) {\n      if (!arguments.length) return x1 == null ? null : [ [ x1, y1 ], [ x2, y2 ] ];\n      if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = +_[0][0], y1 = +_[0][1], x2 = +_[1][0], \n      y2 = +_[1][1];\n      return quadtree;\n    };\n    quadtree.size = function(_) {\n      if (!arguments.length) return x1 == null ? null : [ x2 - x1, y2 - y1 ];\n      if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = y1 = 0, x2 = +_[0], y2 = +_[1];\n      return quadtree;\n    };\n    return quadtree;\n  };\n  function d3_geom_quadtreeCompatX(d) {\n    return d.x;\n  }\n  function d3_geom_quadtreeCompatY(d) {\n    return d.y;\n  }\n  function d3_geom_quadtreeNode() {\n    return {\n      leaf: true,\n      nodes: [],\n      point: null,\n      x: null,\n      y: null\n    };\n  }\n  function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) {\n    if (!f(node, x1, y1, x2, y2)) {\n      var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, children = node.nodes;\n      if (children[0]) d3_geom_quadtreeVisit(f, children[0], x1, y1, sx, sy);\n      if (children[1]) d3_geom_quadtreeVisit(f, children[1], sx, y1, x2, sy);\n      if (children[2]) d3_geom_quadtreeVisit(f, children[2], x1, sy, sx, y2);\n      if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2);\n    }\n  }\n  function d3_geom_quadtreeFind(root, x, y, x0, y0, x3, y3) {\n    var minDistance2 = Infinity, closestPoint;\n    (function find(node, x1, y1, x2, y2) {\n      if (x1 > x3 || y1 > y3 || x2 < x0 || y2 < y0) return;\n      if (point = node.point) {\n        var point, dx = x - node.x, dy = y - node.y, distance2 = dx * dx + dy * dy;\n        if (distance2 < minDistance2) {\n          var distance = Math.sqrt(minDistance2 = distance2);\n          x0 = x - distance, y0 = y - distance;\n          x3 = x + distance, y3 = y + distance;\n          closestPoint = point;\n        }\n      }\n      var children = node.nodes, xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym;\n      for (var i = below << 1 | right, j = i + 4; i < j; ++i) {\n        if (node = children[i & 3]) switch (i & 3) {\n         case 0:\n          find(node, x1, y1, xm, ym);\n          break;\n\n         case 1:\n          find(node, xm, y1, x2, ym);\n          break;\n\n         case 2:\n          find(node, x1, ym, xm, y2);\n          break;\n\n         case 3:\n          find(node, xm, ym, x2, y2);\n          break;\n        }\n      }\n    })(root, x0, y0, x3, y3);\n    return closestPoint;\n  }\n  d3.interpolateRgb = d3_interpolateRgb;\n  function d3_interpolateRgb(a, b) {\n    a = d3.rgb(a);\n    b = d3.rgb(b);\n    var ar = a.r, ag = a.g, ab = a.b, br = b.r - ar, bg = b.g - ag, bb = b.b - ab;\n    return function(t) {\n      return \"#\" + d3_rgb_hex(Math.round(ar + br * t)) + d3_rgb_hex(Math.round(ag + bg * t)) + d3_rgb_hex(Math.round(ab + bb * t));\n    };\n  }\n  d3.interpolateObject = d3_interpolateObject;\n  function d3_interpolateObject(a, b) {\n    var i = {}, c = {}, k;\n    for (k in a) {\n      if (k in b) {\n        i[k] = d3_interpolate(a[k], b[k]);\n      } else {\n        c[k] = a[k];\n      }\n    }\n    for (k in b) {\n      if (!(k in a)) {\n        c[k] = b[k];\n      }\n    }\n    return function(t) {\n      for (k in i) c[k] = i[k](t);\n      return c;\n    };\n  }\n  d3.interpolateNumber = d3_interpolateNumber;\n  function d3_interpolateNumber(a, b) {\n    a = +a, b = +b;\n    return function(t) {\n      return a * (1 - t) + b * t;\n    };\n  }\n  d3.interpolateString = d3_interpolateString;\n  function d3_interpolateString(a, b) {\n    var bi = d3_interpolate_numberA.lastIndex = d3_interpolate_numberB.lastIndex = 0, am, bm, bs, i = -1, s = [], q = [];\n    a = a + \"\", b = b + \"\";\n    while ((am = d3_interpolate_numberA.exec(a)) && (bm = d3_interpolate_numberB.exec(b))) {\n      if ((bs = bm.index) > bi) {\n        bs = b.slice(bi, bs);\n        if (s[i]) s[i] += bs; else s[++i] = bs;\n      }\n      if ((am = am[0]) === (bm = bm[0])) {\n        if (s[i]) s[i] += bm; else s[++i] = bm;\n      } else {\n        s[++i] = null;\n        q.push({\n          i: i,\n          x: d3_interpolateNumber(am, bm)\n        });\n      }\n      bi = d3_interpolate_numberB.lastIndex;\n    }\n    if (bi < b.length) {\n      bs = b.slice(bi);\n      if (s[i]) s[i] += bs; else s[++i] = bs;\n    }\n    return s.length < 2 ? q[0] ? (b = q[0].x, function(t) {\n      return b(t) + \"\";\n    }) : function() {\n      return b;\n    } : (b = q.length, function(t) {\n      for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n      return s.join(\"\");\n    });\n  }\n  var d3_interpolate_numberA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g, d3_interpolate_numberB = new RegExp(d3_interpolate_numberA.source, \"g\");\n  d3.interpolate = d3_interpolate;\n  function d3_interpolate(a, b) {\n    var i = d3.interpolators.length, f;\n    while (--i >= 0 && !(f = d3.interpolators[i](a, b))) ;\n    return f;\n  }\n  d3.interpolators = [ function(a, b) {\n    var t = typeof b;\n    return (t === \"string\" ? d3_rgb_names.has(b.toLowerCase()) || /^(#|rgb\\(|hsl\\()/i.test(b) ? d3_interpolateRgb : d3_interpolateString : b instanceof d3_color ? d3_interpolateRgb : Array.isArray(b) ? d3_interpolateArray : t === \"object\" && isNaN(b) ? d3_interpolateObject : d3_interpolateNumber)(a, b);\n  } ];\n  d3.interpolateArray = d3_interpolateArray;\n  function d3_interpolateArray(a, b) {\n    var x = [], c = [], na = a.length, nb = b.length, n0 = Math.min(a.length, b.length), i;\n    for (i = 0; i < n0; ++i) x.push(d3_interpolate(a[i], b[i]));\n    for (;i < na; ++i) c[i] = a[i];\n    for (;i < nb; ++i) c[i] = b[i];\n    return function(t) {\n      for (i = 0; i < n0; ++i) c[i] = x[i](t);\n      return c;\n    };\n  }\n  var d3_ease_default = function() {\n    return d3_identity;\n  };\n  var d3_ease = d3.map({\n    linear: d3_ease_default,\n    poly: d3_ease_poly,\n    quad: function() {\n      return d3_ease_quad;\n    },\n    cubic: function() {\n      return d3_ease_cubic;\n    },\n    sin: function() {\n      return d3_ease_sin;\n    },\n    exp: function() {\n      return d3_ease_exp;\n    },\n    circle: function() {\n      return d3_ease_circle;\n    },\n    elastic: d3_ease_elastic,\n    back: d3_ease_back,\n    bounce: function() {\n      return d3_ease_bounce;\n    }\n  });\n  var d3_ease_mode = d3.map({\n    \"in\": d3_identity,\n    out: d3_ease_reverse,\n    \"in-out\": d3_ease_reflect,\n    \"out-in\": function(f) {\n      return d3_ease_reflect(d3_ease_reverse(f));\n    }\n  });\n  d3.ease = function(name) {\n    var i = name.indexOf(\"-\"), t = i >= 0 ? name.slice(0, i) : name, m = i >= 0 ? name.slice(i + 1) : \"in\";\n    t = d3_ease.get(t) || d3_ease_default;\n    m = d3_ease_mode.get(m) || d3_identity;\n    return d3_ease_clamp(m(t.apply(null, d3_arraySlice.call(arguments, 1))));\n  };\n  function d3_ease_clamp(f) {\n    return function(t) {\n      return t <= 0 ? 0 : t >= 1 ? 1 : f(t);\n    };\n  }\n  function d3_ease_reverse(f) {\n    return function(t) {\n      return 1 - f(1 - t);\n    };\n  }\n  function d3_ease_reflect(f) {\n    return function(t) {\n      return .5 * (t < .5 ? f(2 * t) : 2 - f(2 - 2 * t));\n    };\n  }\n  function d3_ease_quad(t) {\n    return t * t;\n  }\n  function d3_ease_cubic(t) {\n    return t * t * t;\n  }\n  function d3_ease_cubicInOut(t) {\n    if (t <= 0) return 0;\n    if (t >= 1) return 1;\n    var t2 = t * t, t3 = t2 * t;\n    return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75);\n  }\n  function d3_ease_poly(e) {\n    return function(t) {\n      return Math.pow(t, e);\n    };\n  }\n  function d3_ease_sin(t) {\n    return 1 - Math.cos(t * halfπ);\n  }\n  function d3_ease_exp(t) {\n    return Math.pow(2, 10 * (t - 1));\n  }\n  function d3_ease_circle(t) {\n    return 1 - Math.sqrt(1 - t * t);\n  }\n  function d3_ease_elastic(a, p) {\n    var s;\n    if (arguments.length < 2) p = .45;\n    if (arguments.length) s = p / τ * Math.asin(1 / a); else a = 1, s = p / 4;\n    return function(t) {\n      return 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * τ / p);\n    };\n  }\n  function d3_ease_back(s) {\n    if (!s) s = 1.70158;\n    return function(t) {\n      return t * t * ((s + 1) * t - s);\n    };\n  }\n  function d3_ease_bounce(t) {\n    return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;\n  }\n  d3.interpolateHcl = d3_interpolateHcl;\n  function d3_interpolateHcl(a, b) {\n    a = d3.hcl(a);\n    b = d3.hcl(b);\n    var ah = a.h, ac = a.c, al = a.l, bh = b.h - ah, bc = b.c - ac, bl = b.l - al;\n    if (isNaN(bc)) bc = 0, ac = isNaN(ac) ? b.c : ac;\n    if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n    return function(t) {\n      return d3_hcl_lab(ah + bh * t, ac + bc * t, al + bl * t) + \"\";\n    };\n  }\n  d3.interpolateHsl = d3_interpolateHsl;\n  function d3_interpolateHsl(a, b) {\n    a = d3.hsl(a);\n    b = d3.hsl(b);\n    var ah = a.h, as = a.s, al = a.l, bh = b.h - ah, bs = b.s - as, bl = b.l - al;\n    if (isNaN(bs)) bs = 0, as = isNaN(as) ? b.s : as;\n    if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n    return function(t) {\n      return d3_hsl_rgb(ah + bh * t, as + bs * t, al + bl * t) + \"\";\n    };\n  }\n  d3.interpolateLab = d3_interpolateLab;\n  function d3_interpolateLab(a, b) {\n    a = d3.lab(a);\n    b = d3.lab(b);\n    var al = a.l, aa = a.a, ab = a.b, bl = b.l - al, ba = b.a - aa, bb = b.b - ab;\n    return function(t) {\n      return d3_lab_rgb(al + bl * t, aa + ba * t, ab + bb * t) + \"\";\n    };\n  }\n  d3.interpolateRound = d3_interpolateRound;\n  function d3_interpolateRound(a, b) {\n    b -= a;\n    return function(t) {\n      return Math.round(a + b * t);\n    };\n  }\n  d3.transform = function(string) {\n    var g = d3_document.createElementNS(d3.ns.prefix.svg, \"g\");\n    return (d3.transform = function(string) {\n      if (string != null) {\n        g.setAttribute(\"transform\", string);\n        var t = g.transform.baseVal.consolidate();\n      }\n      return new d3_transform(t ? t.matrix : d3_transformIdentity);\n    })(string);\n  };\n  function d3_transform(m) {\n    var r0 = [ m.a, m.b ], r1 = [ m.c, m.d ], kx = d3_transformNormalize(r0), kz = d3_transformDot(r0, r1), ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0;\n    if (r0[0] * r1[1] < r1[0] * r0[1]) {\n      r0[0] *= -1;\n      r0[1] *= -1;\n      kx *= -1;\n      kz *= -1;\n    }\n    this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_degrees;\n    this.translate = [ m.e, m.f ];\n    this.scale = [ kx, ky ];\n    this.skew = ky ? Math.atan2(kz, ky) * d3_degrees : 0;\n  }\n  d3_transform.prototype.toString = function() {\n    return \"translate(\" + this.translate + \")rotate(\" + this.rotate + \")skewX(\" + this.skew + \")scale(\" + this.scale + \")\";\n  };\n  function d3_transformDot(a, b) {\n    return a[0] * b[0] + a[1] * b[1];\n  }\n  function d3_transformNormalize(a) {\n    var k = Math.sqrt(d3_transformDot(a, a));\n    if (k) {\n      a[0] /= k;\n      a[1] /= k;\n    }\n    return k;\n  }\n  function d3_transformCombine(a, b, k) {\n    a[0] += k * b[0];\n    a[1] += k * b[1];\n    return a;\n  }\n  var d3_transformIdentity = {\n    a: 1,\n    b: 0,\n    c: 0,\n    d: 1,\n    e: 0,\n    f: 0\n  };\n  d3.interpolateTransform = d3_interpolateTransform;\n  function d3_interpolateTransformPop(s) {\n    return s.length ? s.pop() + \",\" : \"\";\n  }\n  function d3_interpolateTranslate(ta, tb, s, q) {\n    if (ta[0] !== tb[0] || ta[1] !== tb[1]) {\n      var i = s.push(\"translate(\", null, \",\", null, \")\");\n      q.push({\n        i: i - 4,\n        x: d3_interpolateNumber(ta[0], tb[0])\n      }, {\n        i: i - 2,\n        x: d3_interpolateNumber(ta[1], tb[1])\n      });\n    } else if (tb[0] || tb[1]) {\n      s.push(\"translate(\" + tb + \")\");\n    }\n  }\n  function d3_interpolateRotate(ra, rb, s, q) {\n    if (ra !== rb) {\n      if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360;\n      q.push({\n        i: s.push(d3_interpolateTransformPop(s) + \"rotate(\", null, \")\") - 2,\n        x: d3_interpolateNumber(ra, rb)\n      });\n    } else if (rb) {\n      s.push(d3_interpolateTransformPop(s) + \"rotate(\" + rb + \")\");\n    }\n  }\n  function d3_interpolateSkew(wa, wb, s, q) {\n    if (wa !== wb) {\n      q.push({\n        i: s.push(d3_interpolateTransformPop(s) + \"skewX(\", null, \")\") - 2,\n        x: d3_interpolateNumber(wa, wb)\n      });\n    } else if (wb) {\n      s.push(d3_interpolateTransformPop(s) + \"skewX(\" + wb + \")\");\n    }\n  }\n  function d3_interpolateScale(ka, kb, s, q) {\n    if (ka[0] !== kb[0] || ka[1] !== kb[1]) {\n      var i = s.push(d3_interpolateTransformPop(s) + \"scale(\", null, \",\", null, \")\");\n      q.push({\n        i: i - 4,\n        x: d3_interpolateNumber(ka[0], kb[0])\n      }, {\n        i: i - 2,\n        x: d3_interpolateNumber(ka[1], kb[1])\n      });\n    } else if (kb[0] !== 1 || kb[1] !== 1) {\n      s.push(d3_interpolateTransformPop(s) + \"scale(\" + kb + \")\");\n    }\n  }\n  function d3_interpolateTransform(a, b) {\n    var s = [], q = [];\n    a = d3.transform(a), b = d3.transform(b);\n    d3_interpolateTranslate(a.translate, b.translate, s, q);\n    d3_interpolateRotate(a.rotate, b.rotate, s, q);\n    d3_interpolateSkew(a.skew, b.skew, s, q);\n    d3_interpolateScale(a.scale, b.scale, s, q);\n    a = b = null;\n    return function(t) {\n      var i = -1, n = q.length, o;\n      while (++i < n) s[(o = q[i]).i] = o.x(t);\n      return s.join(\"\");\n    };\n  }\n  function d3_uninterpolateNumber(a, b) {\n    b = (b -= a = +a) || 1 / b;\n    return function(x) {\n      return (x - a) / b;\n    };\n  }\n  function d3_uninterpolateClamp(a, b) {\n    b = (b -= a = +a) || 1 / b;\n    return function(x) {\n      return Math.max(0, Math.min(1, (x - a) / b));\n    };\n  }\n  d3.layout = {};\n  d3.layout.bundle = function() {\n    return function(links) {\n      var paths = [], i = -1, n = links.length;\n      while (++i < n) paths.push(d3_layout_bundlePath(links[i]));\n      return paths;\n    };\n  };\n  function d3_layout_bundlePath(link) {\n    var start = link.source, end = link.target, lca = d3_layout_bundleLeastCommonAncestor(start, end), points = [ start ];\n    while (start !== lca) {\n      start = start.parent;\n      points.push(start);\n    }\n    var k = points.length;\n    while (end !== lca) {\n      points.splice(k, 0, end);\n      end = end.parent;\n    }\n    return points;\n  }\n  function d3_layout_bundleAncestors(node) {\n    var ancestors = [], parent = node.parent;\n    while (parent != null) {\n      ancestors.push(node);\n      node = parent;\n      parent = parent.parent;\n    }\n    ancestors.push(node);\n    return ancestors;\n  }\n  function d3_layout_bundleLeastCommonAncestor(a, b) {\n    if (a === b) return a;\n    var aNodes = d3_layout_bundleAncestors(a), bNodes = d3_layout_bundleAncestors(b), aNode = aNodes.pop(), bNode = bNodes.pop(), sharedNode = null;\n    while (aNode === bNode) {\n      sharedNode = aNode;\n      aNode = aNodes.pop();\n      bNode = bNodes.pop();\n    }\n    return sharedNode;\n  }\n  d3.layout.chord = function() {\n    var chord = {}, chords, groups, matrix, n, padding = 0, sortGroups, sortSubgroups, sortChords;\n    function relayout() {\n      var subgroups = {}, groupSums = [], groupIndex = d3.range(n), subgroupIndex = [], k, x, x0, i, j;\n      chords = [];\n      groups = [];\n      k = 0, i = -1;\n      while (++i < n) {\n        x = 0, j = -1;\n        while (++j < n) {\n          x += matrix[i][j];\n        }\n        groupSums.push(x);\n        subgroupIndex.push(d3.range(n));\n        k += x;\n      }\n      if (sortGroups) {\n        groupIndex.sort(function(a, b) {\n          return sortGroups(groupSums[a], groupSums[b]);\n        });\n      }\n      if (sortSubgroups) {\n        subgroupIndex.forEach(function(d, i) {\n          d.sort(function(a, b) {\n            return sortSubgroups(matrix[i][a], matrix[i][b]);\n          });\n        });\n      }\n      k = (τ - padding * n) / k;\n      x = 0, i = -1;\n      while (++i < n) {\n        x0 = x, j = -1;\n        while (++j < n) {\n          var di = groupIndex[i], dj = subgroupIndex[di][j], v = matrix[di][dj], a0 = x, a1 = x += v * k;\n          subgroups[di + \"-\" + dj] = {\n            index: di,\n            subindex: dj,\n            startAngle: a0,\n            endAngle: a1,\n            value: v\n          };\n        }\n        groups[di] = {\n          index: di,\n          startAngle: x0,\n          endAngle: x,\n          value: groupSums[di]\n        };\n        x += padding;\n      }\n      i = -1;\n      while (++i < n) {\n        j = i - 1;\n        while (++j < n) {\n          var source = subgroups[i + \"-\" + j], target = subgroups[j + \"-\" + i];\n          if (source.value || target.value) {\n            chords.push(source.value < target.value ? {\n              source: target,\n              target: source\n            } : {\n              source: source,\n              target: target\n            });\n          }\n        }\n      }\n      if (sortChords) resort();\n    }\n    function resort() {\n      chords.sort(function(a, b) {\n        return sortChords((a.source.value + a.target.value) / 2, (b.source.value + b.target.value) / 2);\n      });\n    }\n    chord.matrix = function(x) {\n      if (!arguments.length) return matrix;\n      n = (matrix = x) && matrix.length;\n      chords = groups = null;\n      return chord;\n    };\n    chord.padding = function(x) {\n      if (!arguments.length) return padding;\n      padding = x;\n      chords = groups = null;\n      return chord;\n    };\n    chord.sortGroups = function(x) {\n      if (!arguments.length) return sortGroups;\n      sortGroups = x;\n      chords = groups = null;\n      return chord;\n    };\n    chord.sortSubgroups = function(x) {\n      if (!arguments.length) return sortSubgroups;\n      sortSubgroups = x;\n      chords = null;\n      return chord;\n    };\n    chord.sortChords = function(x) {\n      if (!arguments.length) return sortChords;\n      sortChords = x;\n      if (chords) resort();\n      return chord;\n    };\n    chord.chords = function() {\n      if (!chords) relayout();\n      return chords;\n    };\n    chord.groups = function() {\n      if (!groups) relayout();\n      return groups;\n    };\n    return chord;\n  };\n  d3.layout.force = function() {\n    var force = {}, event = d3.dispatch(\"start\", \"tick\", \"end\"), timer, size = [ 1, 1 ], drag, alpha, friction = .9, linkDistance = d3_layout_forceLinkDistance, linkStrength = d3_layout_forceLinkStrength, charge = -30, chargeDistance2 = d3_layout_forceChargeDistance2, gravity = .1, theta2 = .64, nodes = [], links = [], distances, strengths, charges;\n    function repulse(node) {\n      return function(quad, x1, _, x2) {\n        if (quad.point !== node) {\n          var dx = quad.cx - node.x, dy = quad.cy - node.y, dw = x2 - x1, dn = dx * dx + dy * dy;\n          if (dw * dw / theta2 < dn) {\n            if (dn < chargeDistance2) {\n              var k = quad.charge / dn;\n              node.px -= dx * k;\n              node.py -= dy * k;\n            }\n            return true;\n          }\n          if (quad.point && dn && dn < chargeDistance2) {\n            var k = quad.pointCharge / dn;\n            node.px -= dx * k;\n            node.py -= dy * k;\n          }\n        }\n        return !quad.charge;\n      };\n    }\n    force.tick = function() {\n      if ((alpha *= .99) < .005) {\n        timer = null;\n        event.end({\n          type: \"end\",\n          alpha: alpha = 0\n        });\n        return true;\n      }\n      var n = nodes.length, m = links.length, q, i, o, s, t, l, k, x, y;\n      for (i = 0; i < m; ++i) {\n        o = links[i];\n        s = o.source;\n        t = o.target;\n        x = t.x - s.x;\n        y = t.y - s.y;\n        if (l = x * x + y * y) {\n          l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l;\n          x *= l;\n          y *= l;\n          t.x -= x * (k = s.weight + t.weight ? s.weight / (s.weight + t.weight) : .5);\n          t.y -= y * k;\n          s.x += x * (k = 1 - k);\n          s.y += y * k;\n        }\n      }\n      if (k = alpha * gravity) {\n        x = size[0] / 2;\n        y = size[1] / 2;\n        i = -1;\n        if (k) while (++i < n) {\n          o = nodes[i];\n          o.x += (x - o.x) * k;\n          o.y += (y - o.y) * k;\n        }\n      }\n      if (charge) {\n        d3_layout_forceAccumulate(q = d3.geom.quadtree(nodes), alpha, charges);\n        i = -1;\n        while (++i < n) {\n          if (!(o = nodes[i]).fixed) {\n            q.visit(repulse(o));\n          }\n        }\n      }\n      i = -1;\n      while (++i < n) {\n        o = nodes[i];\n        if (o.fixed) {\n          o.x = o.px;\n          o.y = o.py;\n        } else {\n          o.x -= (o.px - (o.px = o.x)) * friction;\n          o.y -= (o.py - (o.py = o.y)) * friction;\n        }\n      }\n      event.tick({\n        type: \"tick\",\n        alpha: alpha\n      });\n    };\n    force.nodes = function(x) {\n      if (!arguments.length) return nodes;\n      nodes = x;\n      return force;\n    };\n    force.links = function(x) {\n      if (!arguments.length) return links;\n      links = x;\n      return force;\n    };\n    force.size = function(x) {\n      if (!arguments.length) return size;\n      size = x;\n      return force;\n    };\n    force.linkDistance = function(x) {\n      if (!arguments.length) return linkDistance;\n      linkDistance = typeof x === \"function\" ? x : +x;\n      return force;\n    };\n    force.distance = force.linkDistance;\n    force.linkStrength = function(x) {\n      if (!arguments.length) return linkStrength;\n      linkStrength = typeof x === \"function\" ? x : +x;\n      return force;\n    };\n    force.friction = function(x) {\n      if (!arguments.length) return friction;\n      friction = +x;\n      return force;\n    };\n    force.charge = function(x) {\n      if (!arguments.length) return charge;\n      charge = typeof x === \"function\" ? x : +x;\n      return force;\n    };\n    force.chargeDistance = function(x) {\n      if (!arguments.length) return Math.sqrt(chargeDistance2);\n      chargeDistance2 = x * x;\n      return force;\n    };\n    force.gravity = function(x) {\n      if (!arguments.length) return gravity;\n      gravity = +x;\n      return force;\n    };\n    force.theta = function(x) {\n      if (!arguments.length) return Math.sqrt(theta2);\n      theta2 = x * x;\n      return force;\n    };\n    force.alpha = function(x) {\n      if (!arguments.length) return alpha;\n      x = +x;\n      if (alpha) {\n        if (x > 0) {\n          alpha = x;\n        } else {\n          timer.c = null, timer.t = NaN, timer = null;\n          event.end({\n            type: \"end\",\n            alpha: alpha = 0\n          });\n        }\n      } else if (x > 0) {\n        event.start({\n          type: \"start\",\n          alpha: alpha = x\n        });\n        timer = d3_timer(force.tick);\n      }\n      return force;\n    };\n    force.start = function() {\n      var i, n = nodes.length, m = links.length, w = size[0], h = size[1], neighbors, o;\n      for (i = 0; i < n; ++i) {\n        (o = nodes[i]).index = i;\n        o.weight = 0;\n      }\n      for (i = 0; i < m; ++i) {\n        o = links[i];\n        if (typeof o.source == \"number\") o.source = nodes[o.source];\n        if (typeof o.target == \"number\") o.target = nodes[o.target];\n        ++o.source.weight;\n        ++o.target.weight;\n      }\n      for (i = 0; i < n; ++i) {\n        o = nodes[i];\n        if (isNaN(o.x)) o.x = position(\"x\", w);\n        if (isNaN(o.y)) o.y = position(\"y\", h);\n        if (isNaN(o.px)) o.px = o.x;\n        if (isNaN(o.py)) o.py = o.y;\n      }\n      distances = [];\n      if (typeof linkDistance === \"function\") for (i = 0; i < m; ++i) distances[i] = +linkDistance.call(this, links[i], i); else for (i = 0; i < m; ++i) distances[i] = linkDistance;\n      strengths = [];\n      if (typeof linkStrength === \"function\") for (i = 0; i < m; ++i) strengths[i] = +linkStrength.call(this, links[i], i); else for (i = 0; i < m; ++i) strengths[i] = linkStrength;\n      charges = [];\n      if (typeof charge === \"function\") for (i = 0; i < n; ++i) charges[i] = +charge.call(this, nodes[i], i); else for (i = 0; i < n; ++i) charges[i] = charge;\n      function position(dimension, size) {\n        if (!neighbors) {\n          neighbors = new Array(n);\n          for (j = 0; j < n; ++j) {\n            neighbors[j] = [];\n          }\n          for (j = 0; j < m; ++j) {\n            var o = links[j];\n            neighbors[o.source.index].push(o.target);\n            neighbors[o.target.index].push(o.source);\n          }\n        }\n        var candidates = neighbors[i], j = -1, l = candidates.length, x;\n        while (++j < l) if (!isNaN(x = candidates[j][dimension])) return x;\n        return Math.random() * size;\n      }\n      return force.resume();\n    };\n    force.resume = function() {\n      return force.alpha(.1);\n    };\n    force.stop = function() {\n      return force.alpha(0);\n    };\n    force.drag = function() {\n      if (!drag) drag = d3.behavior.drag().origin(d3_identity).on(\"dragstart.force\", d3_layout_forceDragstart).on(\"drag.force\", dragmove).on(\"dragend.force\", d3_layout_forceDragend);\n      if (!arguments.length) return drag;\n      this.on(\"mouseover.force\", d3_layout_forceMouseover).on(\"mouseout.force\", d3_layout_forceMouseout).call(drag);\n    };\n    function dragmove(d) {\n      d.px = d3.event.x, d.py = d3.event.y;\n      force.resume();\n    }\n    return d3.rebind(force, event, \"on\");\n  };\n  function d3_layout_forceDragstart(d) {\n    d.fixed |= 2;\n  }\n  function d3_layout_forceDragend(d) {\n    d.fixed &= ~6;\n  }\n  function d3_layout_forceMouseover(d) {\n    d.fixed |= 4;\n    d.px = d.x, d.py = d.y;\n  }\n  function d3_layout_forceMouseout(d) {\n    d.fixed &= ~4;\n  }\n  function d3_layout_forceAccumulate(quad, alpha, charges) {\n    var cx = 0, cy = 0;\n    quad.charge = 0;\n    if (!quad.leaf) {\n      var nodes = quad.nodes, n = nodes.length, i = -1, c;\n      while (++i < n) {\n        c = nodes[i];\n        if (c == null) continue;\n        d3_layout_forceAccumulate(c, alpha, charges);\n        quad.charge += c.charge;\n        cx += c.charge * c.cx;\n        cy += c.charge * c.cy;\n      }\n    }\n    if (quad.point) {\n      if (!quad.leaf) {\n        quad.point.x += Math.random() - .5;\n        quad.point.y += Math.random() - .5;\n      }\n      var k = alpha * charges[quad.point.index];\n      quad.charge += quad.pointCharge = k;\n      cx += k * quad.point.x;\n      cy += k * quad.point.y;\n    }\n    quad.cx = cx / quad.charge;\n    quad.cy = cy / quad.charge;\n  }\n  var d3_layout_forceLinkDistance = 20, d3_layout_forceLinkStrength = 1, d3_layout_forceChargeDistance2 = Infinity;\n  d3.layout.hierarchy = function() {\n    var sort = d3_layout_hierarchySort, children = d3_layout_hierarchyChildren, value = d3_layout_hierarchyValue;\n    function hierarchy(root) {\n      var stack = [ root ], nodes = [], node;\n      root.depth = 0;\n      while ((node = stack.pop()) != null) {\n        nodes.push(node);\n        if ((childs = children.call(hierarchy, node, node.depth)) && (n = childs.length)) {\n          var n, childs, child;\n          while (--n >= 0) {\n            stack.push(child = childs[n]);\n            child.parent = node;\n            child.depth = node.depth + 1;\n          }\n          if (value) node.value = 0;\n          node.children = childs;\n        } else {\n          if (value) node.value = +value.call(hierarchy, node, node.depth) || 0;\n          delete node.children;\n        }\n      }\n      d3_layout_hierarchyVisitAfter(root, function(node) {\n        var childs, parent;\n        if (sort && (childs = node.children)) childs.sort(sort);\n        if (value && (parent = node.parent)) parent.value += node.value;\n      });\n      return nodes;\n    }\n    hierarchy.sort = function(x) {\n      if (!arguments.length) return sort;\n      sort = x;\n      return hierarchy;\n    };\n    hierarchy.children = function(x) {\n      if (!arguments.length) return children;\n      children = x;\n      return hierarchy;\n    };\n    hierarchy.value = function(x) {\n      if (!arguments.length) return value;\n      value = x;\n      return hierarchy;\n    };\n    hierarchy.revalue = function(root) {\n      if (value) {\n        d3_layout_hierarchyVisitBefore(root, function(node) {\n          if (node.children) node.value = 0;\n        });\n        d3_layout_hierarchyVisitAfter(root, function(node) {\n          var parent;\n          if (!node.children) node.value = +value.call(hierarchy, node, node.depth) || 0;\n          if (parent = node.parent) parent.value += node.value;\n        });\n      }\n      return root;\n    };\n    return hierarchy;\n  };\n  function d3_layout_hierarchyRebind(object, hierarchy) {\n    d3.rebind(object, hierarchy, \"sort\", \"children\", \"value\");\n    object.nodes = object;\n    object.links = d3_layout_hierarchyLinks;\n    return object;\n  }\n  function d3_layout_hierarchyVisitBefore(node, callback) {\n    var nodes = [ node ];\n    while ((node = nodes.pop()) != null) {\n      callback(node);\n      if ((children = node.children) && (n = children.length)) {\n        var n, children;\n        while (--n >= 0) nodes.push(children[n]);\n      }\n    }\n  }\n  function d3_layout_hierarchyVisitAfter(node, callback) {\n    var nodes = [ node ], nodes2 = [];\n    while ((node = nodes.pop()) != null) {\n      nodes2.push(node);\n      if ((children = node.children) && (n = children.length)) {\n        var i = -1, n, children;\n        while (++i < n) nodes.push(children[i]);\n      }\n    }\n    while ((node = nodes2.pop()) != null) {\n      callback(node);\n    }\n  }\n  function d3_layout_hierarchyChildren(d) {\n    return d.children;\n  }\n  function d3_layout_hierarchyValue(d) {\n    return d.value;\n  }\n  function d3_layout_hierarchySort(a, b) {\n    return b.value - a.value;\n  }\n  function d3_layout_hierarchyLinks(nodes) {\n    return d3.merge(nodes.map(function(parent) {\n      return (parent.children || []).map(function(child) {\n        return {\n          source: parent,\n          target: child\n        };\n      });\n    }));\n  }\n  d3.layout.partition = function() {\n    var hierarchy = d3.layout.hierarchy(), size = [ 1, 1 ];\n    function position(node, x, dx, dy) {\n      var children = node.children;\n      node.x = x;\n      node.y = node.depth * dy;\n      node.dx = dx;\n      node.dy = dy;\n      if (children && (n = children.length)) {\n        var i = -1, n, c, d;\n        dx = node.value ? dx / node.value : 0;\n        while (++i < n) {\n          position(c = children[i], x, d = c.value * dx, dy);\n          x += d;\n        }\n      }\n    }\n    function depth(node) {\n      var children = node.children, d = 0;\n      if (children && (n = children.length)) {\n        var i = -1, n;\n        while (++i < n) d = Math.max(d, depth(children[i]));\n      }\n      return 1 + d;\n    }\n    function partition(d, i) {\n      var nodes = hierarchy.call(this, d, i);\n      position(nodes[0], 0, size[0], size[1] / depth(nodes[0]));\n      return nodes;\n    }\n    partition.size = function(x) {\n      if (!arguments.length) return size;\n      size = x;\n      return partition;\n    };\n    return d3_layout_hierarchyRebind(partition, hierarchy);\n  };\n  d3.layout.pie = function() {\n    var value = Number, sort = d3_layout_pieSortByValue, startAngle = 0, endAngle = τ, padAngle = 0;\n    function pie(data) {\n      var n = data.length, values = data.map(function(d, i) {\n        return +value.call(pie, d, i);\n      }), a = +(typeof startAngle === \"function\" ? startAngle.apply(this, arguments) : startAngle), da = (typeof endAngle === \"function\" ? endAngle.apply(this, arguments) : endAngle) - a, p = Math.min(Math.abs(da) / n, +(typeof padAngle === \"function\" ? padAngle.apply(this, arguments) : padAngle)), pa = p * (da < 0 ? -1 : 1), sum = d3.sum(values), k = sum ? (da - n * pa) / sum : 0, index = d3.range(n), arcs = [], v;\n      if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function(i, j) {\n        return values[j] - values[i];\n      } : function(i, j) {\n        return sort(data[i], data[j]);\n      });\n      index.forEach(function(i) {\n        arcs[i] = {\n          data: data[i],\n          value: v = values[i],\n          startAngle: a,\n          endAngle: a += v * k + pa,\n          padAngle: p\n        };\n      });\n      return arcs;\n    }\n    pie.value = function(_) {\n      if (!arguments.length) return value;\n      value = _;\n      return pie;\n    };\n    pie.sort = function(_) {\n      if (!arguments.length) return sort;\n      sort = _;\n      return pie;\n    };\n    pie.startAngle = function(_) {\n      if (!arguments.length) return startAngle;\n      startAngle = _;\n      return pie;\n    };\n    pie.endAngle = function(_) {\n      if (!arguments.length) return endAngle;\n      endAngle = _;\n      return pie;\n    };\n    pie.padAngle = function(_) {\n      if (!arguments.length) return padAngle;\n      padAngle = _;\n      return pie;\n    };\n    return pie;\n  };\n  var d3_layout_pieSortByValue = {};\n  d3.layout.stack = function() {\n    var values = d3_identity, order = d3_layout_stackOrderDefault, offset = d3_layout_stackOffsetZero, out = d3_layout_stackOut, x = d3_layout_stackX, y = d3_layout_stackY;\n    function stack(data, index) {\n      if (!(n = data.length)) return data;\n      var series = data.map(function(d, i) {\n        return values.call(stack, d, i);\n      });\n      var points = series.map(function(d) {\n        return d.map(function(v, i) {\n          return [ x.call(stack, v, i), y.call(stack, v, i) ];\n        });\n      });\n      var orders = order.call(stack, points, index);\n      series = d3.permute(series, orders);\n      points = d3.permute(points, orders);\n      var offsets = offset.call(stack, points, index);\n      var m = series[0].length, n, i, j, o;\n      for (j = 0; j < m; ++j) {\n        out.call(stack, series[0][j], o = offsets[j], points[0][j][1]);\n        for (i = 1; i < n; ++i) {\n          out.call(stack, series[i][j], o += points[i - 1][j][1], points[i][j][1]);\n        }\n      }\n      return data;\n    }\n    stack.values = function(x) {\n      if (!arguments.length) return values;\n      values = x;\n      return stack;\n    };\n    stack.order = function(x) {\n      if (!arguments.length) return order;\n      order = typeof x === \"function\" ? x : d3_layout_stackOrders.get(x) || d3_layout_stackOrderDefault;\n      return stack;\n    };\n    stack.offset = function(x) {\n      if (!arguments.length) return offset;\n      offset = typeof x === \"function\" ? x : d3_layout_stackOffsets.get(x) || d3_layout_stackOffsetZero;\n      return stack;\n    };\n    stack.x = function(z) {\n      if (!arguments.length) return x;\n      x = z;\n      return stack;\n    };\n    stack.y = function(z) {\n      if (!arguments.length) return y;\n      y = z;\n      return stack;\n    };\n    stack.out = function(z) {\n      if (!arguments.length) return out;\n      out = z;\n      return stack;\n    };\n    return stack;\n  };\n  function d3_layout_stackX(d) {\n    return d.x;\n  }\n  function d3_layout_stackY(d) {\n    return d.y;\n  }\n  function d3_layout_stackOut(d, y0, y) {\n    d.y0 = y0;\n    d.y = y;\n  }\n  var d3_layout_stackOrders = d3.map({\n    \"inside-out\": function(data) {\n      var n = data.length, i, j, max = data.map(d3_layout_stackMaxIndex), sums = data.map(d3_layout_stackReduceSum), index = d3.range(n).sort(function(a, b) {\n        return max[a] - max[b];\n      }), top = 0, bottom = 0, tops = [], bottoms = [];\n      for (i = 0; i < n; ++i) {\n        j = index[i];\n        if (top < bottom) {\n          top += sums[j];\n          tops.push(j);\n        } else {\n          bottom += sums[j];\n          bottoms.push(j);\n        }\n      }\n      return bottoms.reverse().concat(tops);\n    },\n    reverse: function(data) {\n      return d3.range(data.length).reverse();\n    },\n    \"default\": d3_layout_stackOrderDefault\n  });\n  var d3_layout_stackOffsets = d3.map({\n    silhouette: function(data) {\n      var n = data.length, m = data[0].length, sums = [], max = 0, i, j, o, y0 = [];\n      for (j = 0; j < m; ++j) {\n        for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n        if (o > max) max = o;\n        sums.push(o);\n      }\n      for (j = 0; j < m; ++j) {\n        y0[j] = (max - sums[j]) / 2;\n      }\n      return y0;\n    },\n    wiggle: function(data) {\n      var n = data.length, x = data[0], m = x.length, i, j, k, s1, s2, s3, dx, o, o0, y0 = [];\n      y0[0] = o = o0 = 0;\n      for (j = 1; j < m; ++j) {\n        for (i = 0, s1 = 0; i < n; ++i) s1 += data[i][j][1];\n        for (i = 0, s2 = 0, dx = x[j][0] - x[j - 1][0]; i < n; ++i) {\n          for (k = 0, s3 = (data[i][j][1] - data[i][j - 1][1]) / (2 * dx); k < i; ++k) {\n            s3 += (data[k][j][1] - data[k][j - 1][1]) / dx;\n          }\n          s2 += s3 * data[i][j][1];\n        }\n        y0[j] = o -= s1 ? s2 / s1 * dx : 0;\n        if (o < o0) o0 = o;\n      }\n      for (j = 0; j < m; ++j) y0[j] -= o0;\n      return y0;\n    },\n    expand: function(data) {\n      var n = data.length, m = data[0].length, k = 1 / n, i, j, o, y0 = [];\n      for (j = 0; j < m; ++j) {\n        for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n        if (o) for (i = 0; i < n; i++) data[i][j][1] /= o; else for (i = 0; i < n; i++) data[i][j][1] = k;\n      }\n      for (j = 0; j < m; ++j) y0[j] = 0;\n      return y0;\n    },\n    zero: d3_layout_stackOffsetZero\n  });\n  function d3_layout_stackOrderDefault(data) {\n    return d3.range(data.length);\n  }\n  function d3_layout_stackOffsetZero(data) {\n    var j = -1, m = data[0].length, y0 = [];\n    while (++j < m) y0[j] = 0;\n    return y0;\n  }\n  function d3_layout_stackMaxIndex(array) {\n    var i = 1, j = 0, v = array[0][1], k, n = array.length;\n    for (;i < n; ++i) {\n      if ((k = array[i][1]) > v) {\n        j = i;\n        v = k;\n      }\n    }\n    return j;\n  }\n  function d3_layout_stackReduceSum(d) {\n    return d.reduce(d3_layout_stackSum, 0);\n  }\n  function d3_layout_stackSum(p, d) {\n    return p + d[1];\n  }\n  d3.layout.histogram = function() {\n    var frequency = true, valuer = Number, ranger = d3_layout_histogramRange, binner = d3_layout_histogramBinSturges;\n    function histogram(data, i) {\n      var bins = [], values = data.map(valuer, this), range = ranger.call(this, values, i), thresholds = binner.call(this, range, values, i), bin, i = -1, n = values.length, m = thresholds.length - 1, k = frequency ? 1 : 1 / n, x;\n      while (++i < m) {\n        bin = bins[i] = [];\n        bin.dx = thresholds[i + 1] - (bin.x = thresholds[i]);\n        bin.y = 0;\n      }\n      if (m > 0) {\n        i = -1;\n        while (++i < n) {\n          x = values[i];\n          if (x >= range[0] && x <= range[1]) {\n            bin = bins[d3.bisect(thresholds, x, 1, m) - 1];\n            bin.y += k;\n            bin.push(data[i]);\n          }\n        }\n      }\n      return bins;\n    }\n    histogram.value = function(x) {\n      if (!arguments.length) return valuer;\n      valuer = x;\n      return histogram;\n    };\n    histogram.range = function(x) {\n      if (!arguments.length) return ranger;\n      ranger = d3_functor(x);\n      return histogram;\n    };\n    histogram.bins = function(x) {\n      if (!arguments.length) return binner;\n      binner = typeof x === \"number\" ? function(range) {\n        return d3_layout_histogramBinFixed(range, x);\n      } : d3_functor(x);\n      return histogram;\n    };\n    histogram.frequency = function(x) {\n      if (!arguments.length) return frequency;\n      frequency = !!x;\n      return histogram;\n    };\n    return histogram;\n  };\n  function d3_layout_histogramBinSturges(range, values) {\n    return d3_layout_histogramBinFixed(range, Math.ceil(Math.log(values.length) / Math.LN2 + 1));\n  }\n  function d3_layout_histogramBinFixed(range, n) {\n    var x = -1, b = +range[0], m = (range[1] - b) / n, f = [];\n    while (++x <= n) f[x] = m * x + b;\n    return f;\n  }\n  function d3_layout_histogramRange(values) {\n    return [ d3.min(values), d3.max(values) ];\n  }\n  d3.layout.pack = function() {\n    var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort), padding = 0, size = [ 1, 1 ], radius;\n    function pack(d, i) {\n      var nodes = hierarchy.call(this, d, i), root = nodes[0], w = size[0], h = size[1], r = radius == null ? Math.sqrt : typeof radius === \"function\" ? radius : function() {\n        return radius;\n      };\n      root.x = root.y = 0;\n      d3_layout_hierarchyVisitAfter(root, function(d) {\n        d.r = +r(d.value);\n      });\n      d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n      if (padding) {\n        var dr = padding * (radius ? 1 : Math.max(2 * root.r / w, 2 * root.r / h)) / 2;\n        d3_layout_hierarchyVisitAfter(root, function(d) {\n          d.r += dr;\n        });\n        d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n        d3_layout_hierarchyVisitAfter(root, function(d) {\n          d.r -= dr;\n        });\n      }\n      d3_layout_packTransform(root, w / 2, h / 2, radius ? 1 : 1 / Math.max(2 * root.r / w, 2 * root.r / h));\n      return nodes;\n    }\n    pack.size = function(_) {\n      if (!arguments.length) return size;\n      size = _;\n      return pack;\n    };\n    pack.radius = function(_) {\n      if (!arguments.length) return radius;\n      radius = _ == null || typeof _ === \"function\" ? _ : +_;\n      return pack;\n    };\n    pack.padding = function(_) {\n      if (!arguments.length) return padding;\n      padding = +_;\n      return pack;\n    };\n    return d3_layout_hierarchyRebind(pack, hierarchy);\n  };\n  function d3_layout_packSort(a, b) {\n    return a.value - b.value;\n  }\n  function d3_layout_packInsert(a, b) {\n    var c = a._pack_next;\n    a._pack_next = b;\n    b._pack_prev = a;\n    b._pack_next = c;\n    c._pack_prev = b;\n  }\n  function d3_layout_packSplice(a, b) {\n    a._pack_next = b;\n    b._pack_prev = a;\n  }\n  function d3_layout_packIntersects(a, b) {\n    var dx = b.x - a.x, dy = b.y - a.y, dr = a.r + b.r;\n    return .999 * dr * dr > dx * dx + dy * dy;\n  }\n  function d3_layout_packSiblings(node) {\n    if (!(nodes = node.children) || !(n = nodes.length)) return;\n    var nodes, xMin = Infinity, xMax = -Infinity, yMin = Infinity, yMax = -Infinity, a, b, c, i, j, k, n;\n    function bound(node) {\n      xMin = Math.min(node.x - node.r, xMin);\n      xMax = Math.max(node.x + node.r, xMax);\n      yMin = Math.min(node.y - node.r, yMin);\n      yMax = Math.max(node.y + node.r, yMax);\n    }\n    nodes.forEach(d3_layout_packLink);\n    a = nodes[0];\n    a.x = -a.r;\n    a.y = 0;\n    bound(a);\n    if (n > 1) {\n      b = nodes[1];\n      b.x = b.r;\n      b.y = 0;\n      bound(b);\n      if (n > 2) {\n        c = nodes[2];\n        d3_layout_packPlace(a, b, c);\n        bound(c);\n        d3_layout_packInsert(a, c);\n        a._pack_prev = c;\n        d3_layout_packInsert(c, b);\n        b = a._pack_next;\n        for (i = 3; i < n; i++) {\n          d3_layout_packPlace(a, b, c = nodes[i]);\n          var isect = 0, s1 = 1, s2 = 1;\n          for (j = b._pack_next; j !== b; j = j._pack_next, s1++) {\n            if (d3_layout_packIntersects(j, c)) {\n              isect = 1;\n              break;\n            }\n          }\n          if (isect == 1) {\n            for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) {\n              if (d3_layout_packIntersects(k, c)) {\n                break;\n              }\n            }\n          }\n          if (isect) {\n            if (s1 < s2 || s1 == s2 && b.r < a.r) d3_layout_packSplice(a, b = j); else d3_layout_packSplice(a = k, b);\n            i--;\n          } else {\n            d3_layout_packInsert(a, c);\n            b = c;\n            bound(c);\n          }\n        }\n      }\n    }\n    var cx = (xMin + xMax) / 2, cy = (yMin + yMax) / 2, cr = 0;\n    for (i = 0; i < n; i++) {\n      c = nodes[i];\n      c.x -= cx;\n      c.y -= cy;\n      cr = Math.max(cr, c.r + Math.sqrt(c.x * c.x + c.y * c.y));\n    }\n    node.r = cr;\n    nodes.forEach(d3_layout_packUnlink);\n  }\n  function d3_layout_packLink(node) {\n    node._pack_next = node._pack_prev = node;\n  }\n  function d3_layout_packUnlink(node) {\n    delete node._pack_next;\n    delete node._pack_prev;\n  }\n  function d3_layout_packTransform(node, x, y, k) {\n    var children = node.children;\n    node.x = x += k * node.x;\n    node.y = y += k * node.y;\n    node.r *= k;\n    if (children) {\n      var i = -1, n = children.length;\n      while (++i < n) d3_layout_packTransform(children[i], x, y, k);\n    }\n  }\n  function d3_layout_packPlace(a, b, c) {\n    var db = a.r + c.r, dx = b.x - a.x, dy = b.y - a.y;\n    if (db && (dx || dy)) {\n      var da = b.r + c.r, dc = dx * dx + dy * dy;\n      da *= da;\n      db *= db;\n      var x = .5 + (db - da) / (2 * dc), y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc);\n      c.x = a.x + x * dx + y * dy;\n      c.y = a.y + x * dy - y * dx;\n    } else {\n      c.x = a.x + db;\n      c.y = a.y;\n    }\n  }\n  d3.layout.tree = function() {\n    var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = null;\n    function tree(d, i) {\n      var nodes = hierarchy.call(this, d, i), root0 = nodes[0], root1 = wrapTree(root0);\n      d3_layout_hierarchyVisitAfter(root1, firstWalk), root1.parent.m = -root1.z;\n      d3_layout_hierarchyVisitBefore(root1, secondWalk);\n      if (nodeSize) d3_layout_hierarchyVisitBefore(root0, sizeNode); else {\n        var left = root0, right = root0, bottom = root0;\n        d3_layout_hierarchyVisitBefore(root0, function(node) {\n          if (node.x < left.x) left = node;\n          if (node.x > right.x) right = node;\n          if (node.depth > bottom.depth) bottom = node;\n        });\n        var tx = separation(left, right) / 2 - left.x, kx = size[0] / (right.x + separation(right, left) / 2 + tx), ky = size[1] / (bottom.depth || 1);\n        d3_layout_hierarchyVisitBefore(root0, function(node) {\n          node.x = (node.x + tx) * kx;\n          node.y = node.depth * ky;\n        });\n      }\n      return nodes;\n    }\n    function wrapTree(root0) {\n      var root1 = {\n        A: null,\n        children: [ root0 ]\n      }, queue = [ root1 ], node1;\n      while ((node1 = queue.pop()) != null) {\n        for (var children = node1.children, child, i = 0, n = children.length; i < n; ++i) {\n          queue.push((children[i] = child = {\n            _: children[i],\n            parent: node1,\n            children: (child = children[i].children) && child.slice() || [],\n            A: null,\n            a: null,\n            z: 0,\n            m: 0,\n            c: 0,\n            s: 0,\n            t: null,\n            i: i\n          }).a = child);\n        }\n      }\n      return root1.children[0];\n    }\n    function firstWalk(v) {\n      var children = v.children, siblings = v.parent.children, w = v.i ? siblings[v.i - 1] : null;\n      if (children.length) {\n        d3_layout_treeShift(v);\n        var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n        if (w) {\n          v.z = w.z + separation(v._, w._);\n          v.m = v.z - midpoint;\n        } else {\n          v.z = midpoint;\n        }\n      } else if (w) {\n        v.z = w.z + separation(v._, w._);\n      }\n      v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n    }\n    function secondWalk(v) {\n      v._.x = v.z + v.parent.m;\n      v.m += v.parent.m;\n    }\n    function apportion(v, w, ancestor) {\n      if (w) {\n        var vip = v, vop = v, vim = w, vom = vip.parent.children[0], sip = vip.m, sop = vop.m, sim = vim.m, som = vom.m, shift;\n        while (vim = d3_layout_treeRight(vim), vip = d3_layout_treeLeft(vip), vim && vip) {\n          vom = d3_layout_treeLeft(vom);\n          vop = d3_layout_treeRight(vop);\n          vop.a = v;\n          shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n          if (shift > 0) {\n            d3_layout_treeMove(d3_layout_treeAncestor(vim, v, ancestor), v, shift);\n            sip += shift;\n            sop += shift;\n          }\n          sim += vim.m;\n          sip += vip.m;\n          som += vom.m;\n          sop += vop.m;\n        }\n        if (vim && !d3_layout_treeRight(vop)) {\n          vop.t = vim;\n          vop.m += sim - sop;\n        }\n        if (vip && !d3_layout_treeLeft(vom)) {\n          vom.t = vip;\n          vom.m += sip - som;\n          ancestor = v;\n        }\n      }\n      return ancestor;\n    }\n    function sizeNode(node) {\n      node.x *= size[0];\n      node.y = node.depth * size[1];\n    }\n    tree.separation = function(x) {\n      if (!arguments.length) return separation;\n      separation = x;\n      return tree;\n    };\n    tree.size = function(x) {\n      if (!arguments.length) return nodeSize ? null : size;\n      nodeSize = (size = x) == null ? sizeNode : null;\n      return tree;\n    };\n    tree.nodeSize = function(x) {\n      if (!arguments.length) return nodeSize ? size : null;\n      nodeSize = (size = x) == null ? null : sizeNode;\n      return tree;\n    };\n    return d3_layout_hierarchyRebind(tree, hierarchy);\n  };\n  function d3_layout_treeSeparation(a, b) {\n    return a.parent == b.parent ? 1 : 2;\n  }\n  function d3_layout_treeLeft(v) {\n    var children = v.children;\n    return children.length ? children[0] : v.t;\n  }\n  function d3_layout_treeRight(v) {\n    var children = v.children, n;\n    return (n = children.length) ? children[n - 1] : v.t;\n  }\n  function d3_layout_treeMove(wm, wp, shift) {\n    var change = shift / (wp.i - wm.i);\n    wp.c -= change;\n    wp.s += shift;\n    wm.c += change;\n    wp.z += shift;\n    wp.m += shift;\n  }\n  function d3_layout_treeShift(v) {\n    var shift = 0, change = 0, children = v.children, i = children.length, w;\n    while (--i >= 0) {\n      w = children[i];\n      w.z += shift;\n      w.m += shift;\n      shift += w.s + (change += w.c);\n    }\n  }\n  function d3_layout_treeAncestor(vim, v, ancestor) {\n    return vim.a.parent === v.parent ? vim.a : ancestor;\n  }\n  d3.layout.cluster = function() {\n    var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = false;\n    function cluster(d, i) {\n      var nodes = hierarchy.call(this, d, i), root = nodes[0], previousNode, x = 0;\n      d3_layout_hierarchyVisitAfter(root, function(node) {\n        var children = node.children;\n        if (children && children.length) {\n          node.x = d3_layout_clusterX(children);\n          node.y = d3_layout_clusterY(children);\n        } else {\n          node.x = previousNode ? x += separation(node, previousNode) : 0;\n          node.y = 0;\n          previousNode = node;\n        }\n      });\n      var left = d3_layout_clusterLeft(root), right = d3_layout_clusterRight(root), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2;\n      d3_layout_hierarchyVisitAfter(root, nodeSize ? function(node) {\n        node.x = (node.x - root.x) * size[0];\n        node.y = (root.y - node.y) * size[1];\n      } : function(node) {\n        node.x = (node.x - x0) / (x1 - x0) * size[0];\n        node.y = (1 - (root.y ? node.y / root.y : 1)) * size[1];\n      });\n      return nodes;\n    }\n    cluster.separation = function(x) {\n      if (!arguments.length) return separation;\n      separation = x;\n      return cluster;\n    };\n    cluster.size = function(x) {\n      if (!arguments.length) return nodeSize ? null : size;\n      nodeSize = (size = x) == null;\n      return cluster;\n    };\n    cluster.nodeSize = function(x) {\n      if (!arguments.length) return nodeSize ? size : null;\n      nodeSize = (size = x) != null;\n      return cluster;\n    };\n    return d3_layout_hierarchyRebind(cluster, hierarchy);\n  };\n  function d3_layout_clusterY(children) {\n    return 1 + d3.max(children, function(child) {\n      return child.y;\n    });\n  }\n  function d3_layout_clusterX(children) {\n    return children.reduce(function(x, child) {\n      return x + child.x;\n    }, 0) / children.length;\n  }\n  function d3_layout_clusterLeft(node) {\n    var children = node.children;\n    return children && children.length ? d3_layout_clusterLeft(children[0]) : node;\n  }\n  function d3_layout_clusterRight(node) {\n    var children = node.children, n;\n    return children && (n = children.length) ? d3_layout_clusterRight(children[n - 1]) : node;\n  }\n  d3.layout.treemap = function() {\n    var hierarchy = d3.layout.hierarchy(), round = Math.round, size = [ 1, 1 ], padding = null, pad = d3_layout_treemapPadNull, sticky = false, stickies, mode = \"squarify\", ratio = .5 * (1 + Math.sqrt(5));\n    function scale(children, k) {\n      var i = -1, n = children.length, child, area;\n      while (++i < n) {\n        area = (child = children[i]).value * (k < 0 ? 0 : k);\n        child.area = isNaN(area) || area <= 0 ? 0 : area;\n      }\n    }\n    function squarify(node) {\n      var children = node.children;\n      if (children && children.length) {\n        var rect = pad(node), row = [], remaining = children.slice(), child, best = Infinity, score, u = mode === \"slice\" ? rect.dx : mode === \"dice\" ? rect.dy : mode === \"slice-dice\" ? node.depth & 1 ? rect.dy : rect.dx : Math.min(rect.dx, rect.dy), n;\n        scale(remaining, rect.dx * rect.dy / node.value);\n        row.area = 0;\n        while ((n = remaining.length) > 0) {\n          row.push(child = remaining[n - 1]);\n          row.area += child.area;\n          if (mode !== \"squarify\" || (score = worst(row, u)) <= best) {\n            remaining.pop();\n            best = score;\n          } else {\n            row.area -= row.pop().area;\n            position(row, u, rect, false);\n            u = Math.min(rect.dx, rect.dy);\n            row.length = row.area = 0;\n            best = Infinity;\n          }\n        }\n        if (row.length) {\n          position(row, u, rect, true);\n          row.length = row.area = 0;\n        }\n        children.forEach(squarify);\n      }\n    }\n    function stickify(node) {\n      var children = node.children;\n      if (children && children.length) {\n        var rect = pad(node), remaining = children.slice(), child, row = [];\n        scale(remaining, rect.dx * rect.dy / node.value);\n        row.area = 0;\n        while (child = remaining.pop()) {\n          row.push(child);\n          row.area += child.area;\n          if (child.z != null) {\n            position(row, child.z ? rect.dx : rect.dy, rect, !remaining.length);\n            row.length = row.area = 0;\n          }\n        }\n        children.forEach(stickify);\n      }\n    }\n    function worst(row, u) {\n      var s = row.area, r, rmax = 0, rmin = Infinity, i = -1, n = row.length;\n      while (++i < n) {\n        if (!(r = row[i].area)) continue;\n        if (r < rmin) rmin = r;\n        if (r > rmax) rmax = r;\n      }\n      s *= s;\n      u *= u;\n      return s ? Math.max(u * rmax * ratio / s, s / (u * rmin * ratio)) : Infinity;\n    }\n    function position(row, u, rect, flush) {\n      var i = -1, n = row.length, x = rect.x, y = rect.y, v = u ? round(row.area / u) : 0, o;\n      if (u == rect.dx) {\n        if (flush || v > rect.dy) v = rect.dy;\n        while (++i < n) {\n          o = row[i];\n          o.x = x;\n          o.y = y;\n          o.dy = v;\n          x += o.dx = Math.min(rect.x + rect.dx - x, v ? round(o.area / v) : 0);\n        }\n        o.z = true;\n        o.dx += rect.x + rect.dx - x;\n        rect.y += v;\n        rect.dy -= v;\n      } else {\n        if (flush || v > rect.dx) v = rect.dx;\n        while (++i < n) {\n          o = row[i];\n          o.x = x;\n          o.y = y;\n          o.dx = v;\n          y += o.dy = Math.min(rect.y + rect.dy - y, v ? round(o.area / v) : 0);\n        }\n        o.z = false;\n        o.dy += rect.y + rect.dy - y;\n        rect.x += v;\n        rect.dx -= v;\n      }\n    }\n    function treemap(d) {\n      var nodes = stickies || hierarchy(d), root = nodes[0];\n      root.x = root.y = 0;\n      if (root.value) root.dx = size[0], root.dy = size[1]; else root.dx = root.dy = 0;\n      if (stickies) hierarchy.revalue(root);\n      scale([ root ], root.dx * root.dy / root.value);\n      (stickies ? stickify : squarify)(root);\n      if (sticky) stickies = nodes;\n      return nodes;\n    }\n    treemap.size = function(x) {\n      if (!arguments.length) return size;\n      size = x;\n      return treemap;\n    };\n    treemap.padding = function(x) {\n      if (!arguments.length) return padding;\n      function padFunction(node) {\n        var p = x.call(treemap, node, node.depth);\n        return p == null ? d3_layout_treemapPadNull(node) : d3_layout_treemapPad(node, typeof p === \"number\" ? [ p, p, p, p ] : p);\n      }\n      function padConstant(node) {\n        return d3_layout_treemapPad(node, x);\n      }\n      var type;\n      pad = (padding = x) == null ? d3_layout_treemapPadNull : (type = typeof x) === \"function\" ? padFunction : type === \"number\" ? (x = [ x, x, x, x ], \n      padConstant) : padConstant;\n      return treemap;\n    };\n    treemap.round = function(x) {\n      if (!arguments.length) return round != Number;\n      round = x ? Math.round : Number;\n      return treemap;\n    };\n    treemap.sticky = function(x) {\n      if (!arguments.length) return sticky;\n      sticky = x;\n      stickies = null;\n      return treemap;\n    };\n    treemap.ratio = function(x) {\n      if (!arguments.length) return ratio;\n      ratio = x;\n      return treemap;\n    };\n    treemap.mode = function(x) {\n      if (!arguments.length) return mode;\n      mode = x + \"\";\n      return treemap;\n    };\n    return d3_layout_hierarchyRebind(treemap, hierarchy);\n  };\n  function d3_layout_treemapPadNull(node) {\n    return {\n      x: node.x,\n      y: node.y,\n      dx: node.dx,\n      dy: node.dy\n    };\n  }\n  function d3_layout_treemapPad(node, padding) {\n    var x = node.x + padding[3], y = node.y + padding[0], dx = node.dx - padding[1] - padding[3], dy = node.dy - padding[0] - padding[2];\n    if (dx < 0) {\n      x += dx / 2;\n      dx = 0;\n    }\n    if (dy < 0) {\n      y += dy / 2;\n      dy = 0;\n    }\n    return {\n      x: x,\n      y: y,\n      dx: dx,\n      dy: dy\n    };\n  }\n  d3.random = {\n    normal: function(µ, σ) {\n      var n = arguments.length;\n      if (n < 2) σ = 1;\n      if (n < 1) µ = 0;\n      return function() {\n        var x, y, r;\n        do {\n          x = Math.random() * 2 - 1;\n          y = Math.random() * 2 - 1;\n          r = x * x + y * y;\n        } while (!r || r > 1);\n        return µ + σ * x * Math.sqrt(-2 * Math.log(r) / r);\n      };\n    },\n    logNormal: function() {\n      var random = d3.random.normal.apply(d3, arguments);\n      return function() {\n        return Math.exp(random());\n      };\n    },\n    bates: function(m) {\n      var random = d3.random.irwinHall(m);\n      return function() {\n        return random() / m;\n      };\n    },\n    irwinHall: function(m) {\n      return function() {\n        for (var s = 0, j = 0; j < m; j++) s += Math.random();\n        return s;\n      };\n    }\n  };\n  d3.scale = {};\n  function d3_scaleExtent(domain) {\n    var start = domain[0], stop = domain[domain.length - 1];\n    return start < stop ? [ start, stop ] : [ stop, start ];\n  }\n  function d3_scaleRange(scale) {\n    return scale.rangeExtent ? scale.rangeExtent() : d3_scaleExtent(scale.range());\n  }\n  function d3_scale_bilinear(domain, range, uninterpolate, interpolate) {\n    var u = uninterpolate(domain[0], domain[1]), i = interpolate(range[0], range[1]);\n    return function(x) {\n      return i(u(x));\n    };\n  }\n  function d3_scale_nice(domain, nice) {\n    var i0 = 0, i1 = domain.length - 1, x0 = domain[i0], x1 = domain[i1], dx;\n    if (x1 < x0) {\n      dx = i0, i0 = i1, i1 = dx;\n      dx = x0, x0 = x1, x1 = dx;\n    }\n    domain[i0] = nice.floor(x0);\n    domain[i1] = nice.ceil(x1);\n    return domain;\n  }\n  function d3_scale_niceStep(step) {\n    return step ? {\n      floor: function(x) {\n        return Math.floor(x / step) * step;\n      },\n      ceil: function(x) {\n        return Math.ceil(x / step) * step;\n      }\n    } : d3_scale_niceIdentity;\n  }\n  var d3_scale_niceIdentity = {\n    floor: d3_identity,\n    ceil: d3_identity\n  };\n  function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {\n    var u = [], i = [], j = 0, k = Math.min(domain.length, range.length) - 1;\n    if (domain[k] < domain[0]) {\n      domain = domain.slice().reverse();\n      range = range.slice().reverse();\n    }\n    while (++j <= k) {\n      u.push(uninterpolate(domain[j - 1], domain[j]));\n      i.push(interpolate(range[j - 1], range[j]));\n    }\n    return function(x) {\n      var j = d3.bisect(domain, x, 1, k) - 1;\n      return i[j](u[j](x));\n    };\n  }\n  d3.scale.linear = function() {\n    return d3_scale_linear([ 0, 1 ], [ 0, 1 ], d3_interpolate, false);\n  };\n  function d3_scale_linear(domain, range, interpolate, clamp) {\n    var output, input;\n    function rescale() {\n      var linear = Math.min(domain.length, range.length) > 2 ? d3_scale_polylinear : d3_scale_bilinear, uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber;\n      output = linear(domain, range, uninterpolate, interpolate);\n      input = linear(range, domain, uninterpolate, d3_interpolate);\n      return scale;\n    }\n    function scale(x) {\n      return output(x);\n    }\n    scale.invert = function(y) {\n      return input(y);\n    };\n    scale.domain = function(x) {\n      if (!arguments.length) return domain;\n      domain = x.map(Number);\n      return rescale();\n    };\n    scale.range = function(x) {\n      if (!arguments.length) return range;\n      range = x;\n      return rescale();\n    };\n    scale.rangeRound = function(x) {\n      return scale.range(x).interpolate(d3_interpolateRound);\n    };\n    scale.clamp = function(x) {\n      if (!arguments.length) return clamp;\n      clamp = x;\n      return rescale();\n    };\n    scale.interpolate = function(x) {\n      if (!arguments.length) return interpolate;\n      interpolate = x;\n      return rescale();\n    };\n    scale.ticks = function(m) {\n      return d3_scale_linearTicks(domain, m);\n    };\n    scale.tickFormat = function(m, format) {\n      return d3_scale_linearTickFormat(domain, m, format);\n    };\n    scale.nice = function(m) {\n      d3_scale_linearNice(domain, m);\n      return rescale();\n    };\n    scale.copy = function() {\n      return d3_scale_linear(domain, range, interpolate, clamp);\n    };\n    return rescale();\n  }\n  function d3_scale_linearRebind(scale, linear) {\n    return d3.rebind(scale, linear, \"range\", \"rangeRound\", \"interpolate\", \"clamp\");\n  }\n  function d3_scale_linearNice(domain, m) {\n    d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n    d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n    return domain;\n  }\n  function d3_scale_linearTickRange(domain, m) {\n    if (m == null) m = 10;\n    var extent = d3_scaleExtent(domain), span = extent[1] - extent[0], step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)), err = m / span * step;\n    if (err <= .15) step *= 10; else if (err <= .35) step *= 5; else if (err <= .75) step *= 2;\n    extent[0] = Math.ceil(extent[0] / step) * step;\n    extent[1] = Math.floor(extent[1] / step) * step + step * .5;\n    extent[2] = step;\n    return extent;\n  }\n  function d3_scale_linearTicks(domain, m) {\n    return d3.range.apply(d3, d3_scale_linearTickRange(domain, m));\n  }\n  function d3_scale_linearTickFormat(domain, m, format) {\n    var range = d3_scale_linearTickRange(domain, m);\n    if (format) {\n      var match = d3_format_re.exec(format);\n      match.shift();\n      if (match[8] === \"s\") {\n        var prefix = d3.formatPrefix(Math.max(abs(range[0]), abs(range[1])));\n        if (!match[7]) match[7] = \".\" + d3_scale_linearPrecision(prefix.scale(range[2]));\n        match[8] = \"f\";\n        format = d3.format(match.join(\"\"));\n        return function(d) {\n          return format(prefix.scale(d)) + prefix.symbol;\n        };\n      }\n      if (!match[7]) match[7] = \".\" + d3_scale_linearFormatPrecision(match[8], range);\n      format = match.join(\"\");\n    } else {\n      format = \",.\" + d3_scale_linearPrecision(range[2]) + \"f\";\n    }\n    return d3.format(format);\n  }\n  var d3_scale_linearFormatSignificant = {\n    s: 1,\n    g: 1,\n    p: 1,\n    r: 1,\n    e: 1\n  };\n  function d3_scale_linearPrecision(value) {\n    return -Math.floor(Math.log(value) / Math.LN10 + .01);\n  }\n  function d3_scale_linearFormatPrecision(type, range) {\n    var p = d3_scale_linearPrecision(range[2]);\n    return type in d3_scale_linearFormatSignificant ? Math.abs(p - d3_scale_linearPrecision(Math.max(abs(range[0]), abs(range[1])))) + +(type !== \"e\") : p - (type === \"%\") * 2;\n  }\n  d3.scale.log = function() {\n    return d3_scale_log(d3.scale.linear().domain([ 0, 1 ]), 10, true, [ 1, 10 ]);\n  };\n  function d3_scale_log(linear, base, positive, domain) {\n    function log(x) {\n      return (positive ? Math.log(x < 0 ? 0 : x) : -Math.log(x > 0 ? 0 : -x)) / Math.log(base);\n    }\n    function pow(x) {\n      return positive ? Math.pow(base, x) : -Math.pow(base, -x);\n    }\n    function scale(x) {\n      return linear(log(x));\n    }\n    scale.invert = function(x) {\n      return pow(linear.invert(x));\n    };\n    scale.domain = function(x) {\n      if (!arguments.length) return domain;\n      positive = x[0] >= 0;\n      linear.domain((domain = x.map(Number)).map(log));\n      return scale;\n    };\n    scale.base = function(_) {\n      if (!arguments.length) return base;\n      base = +_;\n      linear.domain(domain.map(log));\n      return scale;\n    };\n    scale.nice = function() {\n      var niced = d3_scale_nice(domain.map(log), positive ? Math : d3_scale_logNiceNegative);\n      linear.domain(niced);\n      domain = niced.map(pow);\n      return scale;\n    };\n    scale.ticks = function() {\n      var extent = d3_scaleExtent(domain), ticks = [], u = extent[0], v = extent[1], i = Math.floor(log(u)), j = Math.ceil(log(v)), n = base % 1 ? 2 : base;\n      if (isFinite(j - i)) {\n        if (positive) {\n          for (;i < j; i++) for (var k = 1; k < n; k++) ticks.push(pow(i) * k);\n          ticks.push(pow(i));\n        } else {\n          ticks.push(pow(i));\n          for (;i++ < j; ) for (var k = n - 1; k > 0; k--) ticks.push(pow(i) * k);\n        }\n        for (i = 0; ticks[i] < u; i++) {}\n        for (j = ticks.length; ticks[j - 1] > v; j--) {}\n        ticks = ticks.slice(i, j);\n      }\n      return ticks;\n    };\n    scale.tickFormat = function(n, format) {\n      if (!arguments.length) return d3_scale_logFormat;\n      if (arguments.length < 2) format = d3_scale_logFormat; else if (typeof format !== \"function\") format = d3.format(format);\n      var k = Math.max(1, base * n / scale.ticks().length);\n      return function(d) {\n        var i = d / pow(Math.round(log(d)));\n        if (i * base < base - .5) i *= base;\n        return i <= k ? format(d) : \"\";\n      };\n    };\n    scale.copy = function() {\n      return d3_scale_log(linear.copy(), base, positive, domain);\n    };\n    return d3_scale_linearRebind(scale, linear);\n  }\n  var d3_scale_logFormat = d3.format(\".0e\"), d3_scale_logNiceNegative = {\n    floor: function(x) {\n      return -Math.ceil(-x);\n    },\n    ceil: function(x) {\n      return -Math.floor(-x);\n    }\n  };\n  d3.scale.pow = function() {\n    return d3_scale_pow(d3.scale.linear(), 1, [ 0, 1 ]);\n  };\n  function d3_scale_pow(linear, exponent, domain) {\n    var powp = d3_scale_powPow(exponent), powb = d3_scale_powPow(1 / exponent);\n    function scale(x) {\n      return linear(powp(x));\n    }\n    scale.invert = function(x) {\n      return powb(linear.invert(x));\n    };\n    scale.domain = function(x) {\n      if (!arguments.length) return domain;\n      linear.domain((domain = x.map(Number)).map(powp));\n      return scale;\n    };\n    scale.ticks = function(m) {\n      return d3_scale_linearTicks(domain, m);\n    };\n    scale.tickFormat = function(m, format) {\n      return d3_scale_linearTickFormat(domain, m, format);\n    };\n    scale.nice = function(m) {\n      return scale.domain(d3_scale_linearNice(domain, m));\n    };\n    scale.exponent = function(x) {\n      if (!arguments.length) return exponent;\n      powp = d3_scale_powPow(exponent = x);\n      powb = d3_scale_powPow(1 / exponent);\n      linear.domain(domain.map(powp));\n      return scale;\n    };\n    scale.copy = function() {\n      return d3_scale_pow(linear.copy(), exponent, domain);\n    };\n    return d3_scale_linearRebind(scale, linear);\n  }\n  function d3_scale_powPow(e) {\n    return function(x) {\n      return x < 0 ? -Math.pow(-x, e) : Math.pow(x, e);\n    };\n  }\n  d3.scale.sqrt = function() {\n    return d3.scale.pow().exponent(.5);\n  };\n  d3.scale.ordinal = function() {\n    return d3_scale_ordinal([], {\n      t: \"range\",\n      a: [ [] ]\n    });\n  };\n  function d3_scale_ordinal(domain, ranger) {\n    var index, range, rangeBand;\n    function scale(x) {\n      return range[((index.get(x) || (ranger.t === \"range\" ? index.set(x, domain.push(x)) : NaN)) - 1) % range.length];\n    }\n    function steps(start, step) {\n      return d3.range(domain.length).map(function(i) {\n        return start + step * i;\n      });\n    }\n    scale.domain = function(x) {\n      if (!arguments.length) return domain;\n      domain = [];\n      index = new d3_Map();\n      var i = -1, n = x.length, xi;\n      while (++i < n) if (!index.has(xi = x[i])) index.set(xi, domain.push(xi));\n      return scale[ranger.t].apply(scale, ranger.a);\n    };\n    scale.range = function(x) {\n      if (!arguments.length) return range;\n      range = x;\n      rangeBand = 0;\n      ranger = {\n        t: \"range\",\n        a: arguments\n      };\n      return scale;\n    };\n    scale.rangePoints = function(x, padding) {\n      if (arguments.length < 2) padding = 0;\n      var start = x[0], stop = x[1], step = domain.length < 2 ? (start = (start + stop) / 2, \n      0) : (stop - start) / (domain.length - 1 + padding);\n      range = steps(start + step * padding / 2, step);\n      rangeBand = 0;\n      ranger = {\n        t: \"rangePoints\",\n        a: arguments\n      };\n      return scale;\n    };\n    scale.rangeRoundPoints = function(x, padding) {\n      if (arguments.length < 2) padding = 0;\n      var start = x[0], stop = x[1], step = domain.length < 2 ? (start = stop = Math.round((start + stop) / 2), \n      0) : (stop - start) / (domain.length - 1 + padding) | 0;\n      range = steps(start + Math.round(step * padding / 2 + (stop - start - (domain.length - 1 + padding) * step) / 2), step);\n      rangeBand = 0;\n      ranger = {\n        t: \"rangeRoundPoints\",\n        a: arguments\n      };\n      return scale;\n    };\n    scale.rangeBands = function(x, padding, outerPadding) {\n      if (arguments.length < 2) padding = 0;\n      if (arguments.length < 3) outerPadding = padding;\n      var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = (stop - start) / (domain.length - padding + 2 * outerPadding);\n      range = steps(start + step * outerPadding, step);\n      if (reverse) range.reverse();\n      rangeBand = step * (1 - padding);\n      ranger = {\n        t: \"rangeBands\",\n        a: arguments\n      };\n      return scale;\n    };\n    scale.rangeRoundBands = function(x, padding, outerPadding) {\n      if (arguments.length < 2) padding = 0;\n      if (arguments.length < 3) outerPadding = padding;\n      var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding));\n      range = steps(start + Math.round((stop - start - (domain.length - padding) * step) / 2), step);\n      if (reverse) range.reverse();\n      rangeBand = Math.round(step * (1 - padding));\n      ranger = {\n        t: \"rangeRoundBands\",\n        a: arguments\n      };\n      return scale;\n    };\n    scale.rangeBand = function() {\n      return rangeBand;\n    };\n    scale.rangeExtent = function() {\n      return d3_scaleExtent(ranger.a[0]);\n    };\n    scale.copy = function() {\n      return d3_scale_ordinal(domain, ranger);\n    };\n    return scale.domain(domain);\n  }\n  d3.scale.category10 = function() {\n    return d3.scale.ordinal().range(d3_category10);\n  };\n  d3.scale.category20 = function() {\n    return d3.scale.ordinal().range(d3_category20);\n  };\n  d3.scale.category20b = function() {\n    return d3.scale.ordinal().range(d3_category20b);\n  };\n  d3.scale.category20c = function() {\n    return d3.scale.ordinal().range(d3_category20c);\n  };\n  var d3_category10 = [ 2062260, 16744206, 2924588, 14034728, 9725885, 9197131, 14907330, 8355711, 12369186, 1556175 ].map(d3_rgbString);\n  var d3_category20 = [ 2062260, 11454440, 16744206, 16759672, 2924588, 10018698, 14034728, 16750742, 9725885, 12955861, 9197131, 12885140, 14907330, 16234194, 8355711, 13092807, 12369186, 14408589, 1556175, 10410725 ].map(d3_rgbString);\n  var d3_category20b = [ 3750777, 5395619, 7040719, 10264286, 6519097, 9216594, 11915115, 13556636, 9202993, 12426809, 15186514, 15190932, 8666169, 11356490, 14049643, 15177372, 8077683, 10834324, 13528509, 14589654 ].map(d3_rgbString);\n  var d3_category20c = [ 3244733, 7057110, 10406625, 13032431, 15095053, 16616764, 16625259, 16634018, 3253076, 7652470, 10607003, 13101504, 7695281, 10394312, 12369372, 14342891, 6513507, 9868950, 12434877, 14277081 ].map(d3_rgbString);\n  d3.scale.quantile = function() {\n    return d3_scale_quantile([], []);\n  };\n  function d3_scale_quantile(domain, range) {\n    var thresholds;\n    function rescale() {\n      var k = 0, q = range.length;\n      thresholds = [];\n      while (++k < q) thresholds[k - 1] = d3.quantile(domain, k / q);\n      return scale;\n    }\n    function scale(x) {\n      if (!isNaN(x = +x)) return range[d3.bisect(thresholds, x)];\n    }\n    scale.domain = function(x) {\n      if (!arguments.length) return domain;\n      domain = x.map(d3_number).filter(d3_numeric).sort(d3_ascending);\n      return rescale();\n    };\n    scale.range = function(x) {\n      if (!arguments.length) return range;\n      range = x;\n      return rescale();\n    };\n    scale.quantiles = function() {\n      return thresholds;\n    };\n    scale.invertExtent = function(y) {\n      y = range.indexOf(y);\n      return y < 0 ? [ NaN, NaN ] : [ y > 0 ? thresholds[y - 1] : domain[0], y < thresholds.length ? thresholds[y] : domain[domain.length - 1] ];\n    };\n    scale.copy = function() {\n      return d3_scale_quantile(domain, range);\n    };\n    return rescale();\n  }\n  d3.scale.quantize = function() {\n    return d3_scale_quantize(0, 1, [ 0, 1 ]);\n  };\n  function d3_scale_quantize(x0, x1, range) {\n    var kx, i;\n    function scale(x) {\n      return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))];\n    }\n    function rescale() {\n      kx = range.length / (x1 - x0);\n      i = range.length - 1;\n      return scale;\n    }\n    scale.domain = function(x) {\n      if (!arguments.length) return [ x0, x1 ];\n      x0 = +x[0];\n      x1 = +x[x.length - 1];\n      return rescale();\n    };\n    scale.range = function(x) {\n      if (!arguments.length) return range;\n      range = x;\n      return rescale();\n    };\n    scale.invertExtent = function(y) {\n      y = range.indexOf(y);\n      y = y < 0 ? NaN : y / kx + x0;\n      return [ y, y + 1 / kx ];\n    };\n    scale.copy = function() {\n      return d3_scale_quantize(x0, x1, range);\n    };\n    return rescale();\n  }\n  d3.scale.threshold = function() {\n    return d3_scale_threshold([ .5 ], [ 0, 1 ]);\n  };\n  function d3_scale_threshold(domain, range) {\n    function scale(x) {\n      if (x <= x) return range[d3.bisect(domain, x)];\n    }\n    scale.domain = function(_) {\n      if (!arguments.length) return domain;\n      domain = _;\n      return scale;\n    };\n    scale.range = function(_) {\n      if (!arguments.length) return range;\n      range = _;\n      return scale;\n    };\n    scale.invertExtent = function(y) {\n      y = range.indexOf(y);\n      return [ domain[y - 1], domain[y] ];\n    };\n    scale.copy = function() {\n      return d3_scale_threshold(domain, range);\n    };\n    return scale;\n  }\n  d3.scale.identity = function() {\n    return d3_scale_identity([ 0, 1 ]);\n  };\n  function d3_scale_identity(domain) {\n    function identity(x) {\n      return +x;\n    }\n    identity.invert = identity;\n    identity.domain = identity.range = function(x) {\n      if (!arguments.length) return domain;\n      domain = x.map(identity);\n      return identity;\n    };\n    identity.ticks = function(m) {\n      return d3_scale_linearTicks(domain, m);\n    };\n    identity.tickFormat = function(m, format) {\n      return d3_scale_linearTickFormat(domain, m, format);\n    };\n    identity.copy = function() {\n      return d3_scale_identity(domain);\n    };\n    return identity;\n  }\n  d3.svg = {};\n  function d3_zero() {\n    return 0;\n  }\n  d3.svg.arc = function() {\n    var innerRadius = d3_svg_arcInnerRadius, outerRadius = d3_svg_arcOuterRadius, cornerRadius = d3_zero, padRadius = d3_svg_arcAuto, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle, padAngle = d3_svg_arcPadAngle;\n    function arc() {\n      var r0 = Math.max(0, +innerRadius.apply(this, arguments)), r1 = Math.max(0, +outerRadius.apply(this, arguments)), a0 = startAngle.apply(this, arguments) - halfπ, a1 = endAngle.apply(this, arguments) - halfπ, da = Math.abs(a1 - a0), cw = a0 > a1 ? 0 : 1;\n      if (r1 < r0) rc = r1, r1 = r0, r0 = rc;\n      if (da >= τε) return circleSegment(r1, cw) + (r0 ? circleSegment(r0, 1 - cw) : \"\") + \"Z\";\n      var rc, cr, rp, ap, p0 = 0, p1 = 0, x0, y0, x1, y1, x2, y2, x3, y3, path = [];\n      if (ap = (+padAngle.apply(this, arguments) || 0) / 2) {\n        rp = padRadius === d3_svg_arcAuto ? Math.sqrt(r0 * r0 + r1 * r1) : +padRadius.apply(this, arguments);\n        if (!cw) p1 *= -1;\n        if (r1) p1 = d3_asin(rp / r1 * Math.sin(ap));\n        if (r0) p0 = d3_asin(rp / r0 * Math.sin(ap));\n      }\n      if (r1) {\n        x0 = r1 * Math.cos(a0 + p1);\n        y0 = r1 * Math.sin(a0 + p1);\n        x1 = r1 * Math.cos(a1 - p1);\n        y1 = r1 * Math.sin(a1 - p1);\n        var l1 = Math.abs(a1 - a0 - 2 * p1) <= π ? 0 : 1;\n        if (p1 && d3_svg_arcSweep(x0, y0, x1, y1) === cw ^ l1) {\n          var h1 = (a0 + a1) / 2;\n          x0 = r1 * Math.cos(h1);\n          y0 = r1 * Math.sin(h1);\n          x1 = y1 = null;\n        }\n      } else {\n        x0 = y0 = 0;\n      }\n      if (r0) {\n        x2 = r0 * Math.cos(a1 - p0);\n        y2 = r0 * Math.sin(a1 - p0);\n        x3 = r0 * Math.cos(a0 + p0);\n        y3 = r0 * Math.sin(a0 + p0);\n        var l0 = Math.abs(a0 - a1 + 2 * p0) <= π ? 0 : 1;\n        if (p0 && d3_svg_arcSweep(x2, y2, x3, y3) === 1 - cw ^ l0) {\n          var h0 = (a0 + a1) / 2;\n          x2 = r0 * Math.cos(h0);\n          y2 = r0 * Math.sin(h0);\n          x3 = y3 = null;\n        }\n      } else {\n        x2 = y2 = 0;\n      }\n      if (da > ε && (rc = Math.min(Math.abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments))) > .001) {\n        cr = r0 < r1 ^ cw ? 0 : 1;\n        var rc1 = rc, rc0 = rc;\n        if (da < π) {\n          var oc = x3 == null ? [ x2, y2 ] : x1 == null ? [ x0, y0 ] : d3_geom_polygonIntersect([ x0, y0 ], [ x3, y3 ], [ x1, y1 ], [ x2, y2 ]), ax = x0 - oc[0], ay = y0 - oc[1], bx = x1 - oc[0], by = y1 - oc[1], kc = 1 / Math.sin(Math.acos((ax * bx + ay * by) / (Math.sqrt(ax * ax + ay * ay) * Math.sqrt(bx * bx + by * by))) / 2), lc = Math.sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n          rc0 = Math.min(rc, (r0 - lc) / (kc - 1));\n          rc1 = Math.min(rc, (r1 - lc) / (kc + 1));\n        }\n        if (x1 != null) {\n          var t30 = d3_svg_arcCornerTangents(x3 == null ? [ x2, y2 ] : [ x3, y3 ], [ x0, y0 ], r1, rc1, cw), t12 = d3_svg_arcCornerTangents([ x1, y1 ], [ x2, y2 ], r1, rc1, cw);\n          if (rc === rc1) {\n            path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t30[1], \"A\", r1, \",\", r1, \" 0 \", 1 - cw ^ d3_svg_arcSweep(t30[1][0], t30[1][1], t12[1][0], t12[1][1]), \",\", cw, \" \", t12[1], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t12[0]);\n          } else {\n            path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 1,\", cr, \" \", t12[0]);\n          }\n        } else {\n          path.push(\"M\", x0, \",\", y0);\n        }\n        if (x3 != null) {\n          var t03 = d3_svg_arcCornerTangents([ x0, y0 ], [ x3, y3 ], r0, -rc0, cw), t21 = d3_svg_arcCornerTangents([ x2, y2 ], x1 == null ? [ x0, y0 ] : [ x1, y1 ], r0, -rc0, cw);\n          if (rc === rc0) {\n            path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t21[1], \"A\", r0, \",\", r0, \" 0 \", cw ^ d3_svg_arcSweep(t21[1][0], t21[1][1], t03[1][0], t03[1][1]), \",\", 1 - cw, \" \", t03[1], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n          } else {\n            path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n          }\n        } else {\n          path.push(\"L\", x2, \",\", y2);\n        }\n      } else {\n        path.push(\"M\", x0, \",\", y0);\n        if (x1 != null) path.push(\"A\", r1, \",\", r1, \" 0 \", l1, \",\", cw, \" \", x1, \",\", y1);\n        path.push(\"L\", x2, \",\", y2);\n        if (x3 != null) path.push(\"A\", r0, \",\", r0, \" 0 \", l0, \",\", 1 - cw, \" \", x3, \",\", y3);\n      }\n      path.push(\"Z\");\n      return path.join(\"\");\n    }\n    function circleSegment(r1, cw) {\n      return \"M0,\" + r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + -r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + r1;\n    }\n    arc.innerRadius = function(v) {\n      if (!arguments.length) return innerRadius;\n      innerRadius = d3_functor(v);\n      return arc;\n    };\n    arc.outerRadius = function(v) {\n      if (!arguments.length) return outerRadius;\n      outerRadius = d3_functor(v);\n      return arc;\n    };\n    arc.cornerRadius = function(v) {\n      if (!arguments.length) return cornerRadius;\n      cornerRadius = d3_functor(v);\n      return arc;\n    };\n    arc.padRadius = function(v) {\n      if (!arguments.length) return padRadius;\n      padRadius = v == d3_svg_arcAuto ? d3_svg_arcAuto : d3_functor(v);\n      return arc;\n    };\n    arc.startAngle = function(v) {\n      if (!arguments.length) return startAngle;\n      startAngle = d3_functor(v);\n      return arc;\n    };\n    arc.endAngle = function(v) {\n      if (!arguments.length) return endAngle;\n      endAngle = d3_functor(v);\n      return arc;\n    };\n    arc.padAngle = function(v) {\n      if (!arguments.length) return padAngle;\n      padAngle = d3_functor(v);\n      return arc;\n    };\n    arc.centroid = function() {\n      var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - halfπ;\n      return [ Math.cos(a) * r, Math.sin(a) * r ];\n    };\n    return arc;\n  };\n  var d3_svg_arcAuto = \"auto\";\n  function d3_svg_arcInnerRadius(d) {\n    return d.innerRadius;\n  }\n  function d3_svg_arcOuterRadius(d) {\n    return d.outerRadius;\n  }\n  function d3_svg_arcStartAngle(d) {\n    return d.startAngle;\n  }\n  function d3_svg_arcEndAngle(d) {\n    return d.endAngle;\n  }\n  function d3_svg_arcPadAngle(d) {\n    return d && d.padAngle;\n  }\n  function d3_svg_arcSweep(x0, y0, x1, y1) {\n    return (x0 - x1) * y0 - (y0 - y1) * x0 > 0 ? 0 : 1;\n  }\n  function d3_svg_arcCornerTangents(p0, p1, r1, rc, cw) {\n    var x01 = p0[0] - p1[0], y01 = p0[1] - p1[1], lo = (cw ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x1 = p0[0] + ox, y1 = p0[1] + oy, x2 = p1[0] + ox, y2 = p1[1] + oy, x3 = (x1 + x2) / 2, y3 = (y1 + y2) / 2, dx = x2 - x1, dy = y2 - y1, d2 = dx * dx + dy * dy, r = r1 - rc, D = x1 * y2 - x2 * y1, d = (dy < 0 ? -1 : 1) * Math.sqrt(Math.max(0, r * r * d2 - D * D)), cx0 = (D * dy - dx * d) / d2, cy0 = (-D * dx - dy * d) / d2, cx1 = (D * dy + dx * d) / d2, cy1 = (-D * dx + dy * d) / d2, dx0 = cx0 - x3, dy0 = cy0 - y3, dx1 = cx1 - x3, dy1 = cy1 - y3;\n    if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n    return [ [ cx0 - ox, cy0 - oy ], [ cx0 * r1 / r, cy0 * r1 / r ] ];\n  }\n  function d3_svg_line(projection) {\n    var x = d3_geom_pointX, y = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, tension = .7;\n    function line(data) {\n      var segments = [], points = [], i = -1, n = data.length, d, fx = d3_functor(x), fy = d3_functor(y);\n      function segment() {\n        segments.push(\"M\", interpolate(projection(points), tension));\n      }\n      while (++i < n) {\n        if (defined.call(this, d = data[i], i)) {\n          points.push([ +fx.call(this, d, i), +fy.call(this, d, i) ]);\n        } else if (points.length) {\n          segment();\n          points = [];\n        }\n      }\n      if (points.length) segment();\n      return segments.length ? segments.join(\"\") : null;\n    }\n    line.x = function(_) {\n      if (!arguments.length) return x;\n      x = _;\n      return line;\n    };\n    line.y = function(_) {\n      if (!arguments.length) return y;\n      y = _;\n      return line;\n    };\n    line.defined = function(_) {\n      if (!arguments.length) return defined;\n      defined = _;\n      return line;\n    };\n    line.interpolate = function(_) {\n      if (!arguments.length) return interpolateKey;\n      if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n      return line;\n    };\n    line.tension = function(_) {\n      if (!arguments.length) return tension;\n      tension = _;\n      return line;\n    };\n    return line;\n  }\n  d3.svg.line = function() {\n    return d3_svg_line(d3_identity);\n  };\n  var d3_svg_lineInterpolators = d3.map({\n    linear: d3_svg_lineLinear,\n    \"linear-closed\": d3_svg_lineLinearClosed,\n    step: d3_svg_lineStep,\n    \"step-before\": d3_svg_lineStepBefore,\n    \"step-after\": d3_svg_lineStepAfter,\n    basis: d3_svg_lineBasis,\n    \"basis-open\": d3_svg_lineBasisOpen,\n    \"basis-closed\": d3_svg_lineBasisClosed,\n    bundle: d3_svg_lineBundle,\n    cardinal: d3_svg_lineCardinal,\n    \"cardinal-open\": d3_svg_lineCardinalOpen,\n    \"cardinal-closed\": d3_svg_lineCardinalClosed,\n    monotone: d3_svg_lineMonotone\n  });\n  d3_svg_lineInterpolators.forEach(function(key, value) {\n    value.key = key;\n    value.closed = /-closed$/.test(key);\n  });\n  function d3_svg_lineLinear(points) {\n    return points.length > 1 ? points.join(\"L\") : points + \"Z\";\n  }\n  function d3_svg_lineLinearClosed(points) {\n    return points.join(\"L\") + \"Z\";\n  }\n  function d3_svg_lineStep(points) {\n    var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n    while (++i < n) path.push(\"H\", (p[0] + (p = points[i])[0]) / 2, \"V\", p[1]);\n    if (n > 1) path.push(\"H\", p[0]);\n    return path.join(\"\");\n  }\n  function d3_svg_lineStepBefore(points) {\n    var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n    while (++i < n) path.push(\"V\", (p = points[i])[1], \"H\", p[0]);\n    return path.join(\"\");\n  }\n  function d3_svg_lineStepAfter(points) {\n    var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n    while (++i < n) path.push(\"H\", (p = points[i])[0], \"V\", p[1]);\n    return path.join(\"\");\n  }\n  function d3_svg_lineCardinalOpen(points, tension) {\n    return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, -1), d3_svg_lineCardinalTangents(points, tension));\n  }\n  function d3_svg_lineCardinalClosed(points, tension) {\n    return points.length < 3 ? d3_svg_lineLinearClosed(points) : points[0] + d3_svg_lineHermite((points.push(points[0]), \n    points), d3_svg_lineCardinalTangents([ points[points.length - 2] ].concat(points, [ points[1] ]), tension));\n  }\n  function d3_svg_lineCardinal(points, tension) {\n    return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineCardinalTangents(points, tension));\n  }\n  function d3_svg_lineHermite(points, tangents) {\n    if (tangents.length < 1 || points.length != tangents.length && points.length != tangents.length + 2) {\n      return d3_svg_lineLinear(points);\n    }\n    var quad = points.length != tangents.length, path = \"\", p0 = points[0], p = points[1], t0 = tangents[0], t = t0, pi = 1;\n    if (quad) {\n      path += \"Q\" + (p[0] - t0[0] * 2 / 3) + \",\" + (p[1] - t0[1] * 2 / 3) + \",\" + p[0] + \",\" + p[1];\n      p0 = points[1];\n      pi = 2;\n    }\n    if (tangents.length > 1) {\n      t = tangents[1];\n      p = points[pi];\n      pi++;\n      path += \"C\" + (p0[0] + t0[0]) + \",\" + (p0[1] + t0[1]) + \",\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n      for (var i = 2; i < tangents.length; i++, pi++) {\n        p = points[pi];\n        t = tangents[i];\n        path += \"S\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n      }\n    }\n    if (quad) {\n      var lp = points[pi];\n      path += \"Q\" + (p[0] + t[0] * 2 / 3) + \",\" + (p[1] + t[1] * 2 / 3) + \",\" + lp[0] + \",\" + lp[1];\n    }\n    return path;\n  }\n  function d3_svg_lineCardinalTangents(points, tension) {\n    var tangents = [], a = (1 - tension) / 2, p0, p1 = points[0], p2 = points[1], i = 1, n = points.length;\n    while (++i < n) {\n      p0 = p1;\n      p1 = p2;\n      p2 = points[i];\n      tangents.push([ a * (p2[0] - p0[0]), a * (p2[1] - p0[1]) ]);\n    }\n    return tangents;\n  }\n  function d3_svg_lineBasis(points) {\n    if (points.length < 3) return d3_svg_lineLinear(points);\n    var i = 1, n = points.length, pi = points[0], x0 = pi[0], y0 = pi[1], px = [ x0, x0, x0, (pi = points[1])[0] ], py = [ y0, y0, y0, pi[1] ], path = [ x0, \",\", y0, \"L\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n    points.push(points[n - 1]);\n    while (++i <= n) {\n      pi = points[i];\n      px.shift();\n      px.push(pi[0]);\n      py.shift();\n      py.push(pi[1]);\n      d3_svg_lineBasisBezier(path, px, py);\n    }\n    points.pop();\n    path.push(\"L\", pi);\n    return path.join(\"\");\n  }\n  function d3_svg_lineBasisOpen(points) {\n    if (points.length < 4) return d3_svg_lineLinear(points);\n    var path = [], i = -1, n = points.length, pi, px = [ 0 ], py = [ 0 ];\n    while (++i < 3) {\n      pi = points[i];\n      px.push(pi[0]);\n      py.push(pi[1]);\n    }\n    path.push(d3_svg_lineDot4(d3_svg_lineBasisBezier3, px) + \",\" + d3_svg_lineDot4(d3_svg_lineBasisBezier3, py));\n    --i;\n    while (++i < n) {\n      pi = points[i];\n      px.shift();\n      px.push(pi[0]);\n      py.shift();\n      py.push(pi[1]);\n      d3_svg_lineBasisBezier(path, px, py);\n    }\n    return path.join(\"\");\n  }\n  function d3_svg_lineBasisClosed(points) {\n    var path, i = -1, n = points.length, m = n + 4, pi, px = [], py = [];\n    while (++i < 4) {\n      pi = points[i % n];\n      px.push(pi[0]);\n      py.push(pi[1]);\n    }\n    path = [ d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n    --i;\n    while (++i < m) {\n      pi = points[i % n];\n      px.shift();\n      px.push(pi[0]);\n      py.shift();\n      py.push(pi[1]);\n      d3_svg_lineBasisBezier(path, px, py);\n    }\n    return path.join(\"\");\n  }\n  function d3_svg_lineBundle(points, tension) {\n    var n = points.length - 1;\n    if (n) {\n      var x0 = points[0][0], y0 = points[0][1], dx = points[n][0] - x0, dy = points[n][1] - y0, i = -1, p, t;\n      while (++i <= n) {\n        p = points[i];\n        t = i / n;\n        p[0] = tension * p[0] + (1 - tension) * (x0 + t * dx);\n        p[1] = tension * p[1] + (1 - tension) * (y0 + t * dy);\n      }\n    }\n    return d3_svg_lineBasis(points);\n  }\n  function d3_svg_lineDot4(a, b) {\n    return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n  }\n  var d3_svg_lineBasisBezier1 = [ 0, 2 / 3, 1 / 3, 0 ], d3_svg_lineBasisBezier2 = [ 0, 1 / 3, 2 / 3, 0 ], d3_svg_lineBasisBezier3 = [ 0, 1 / 6, 2 / 3, 1 / 6 ];\n  function d3_svg_lineBasisBezier(path, x, y) {\n    path.push(\"C\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, y));\n  }\n  function d3_svg_lineSlope(p0, p1) {\n    return (p1[1] - p0[1]) / (p1[0] - p0[0]);\n  }\n  function d3_svg_lineFiniteDifferences(points) {\n    var i = 0, j = points.length - 1, m = [], p0 = points[0], p1 = points[1], d = m[0] = d3_svg_lineSlope(p0, p1);\n    while (++i < j) {\n      m[i] = (d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1]))) / 2;\n    }\n    m[i] = d;\n    return m;\n  }\n  function d3_svg_lineMonotoneTangents(points) {\n    var tangents = [], d, a, b, s, m = d3_svg_lineFiniteDifferences(points), i = -1, j = points.length - 1;\n    while (++i < j) {\n      d = d3_svg_lineSlope(points[i], points[i + 1]);\n      if (abs(d) < ε) {\n        m[i] = m[i + 1] = 0;\n      } else {\n        a = m[i] / d;\n        b = m[i + 1] / d;\n        s = a * a + b * b;\n        if (s > 9) {\n          s = d * 3 / Math.sqrt(s);\n          m[i] = s * a;\n          m[i + 1] = s * b;\n        }\n      }\n    }\n    i = -1;\n    while (++i <= j) {\n      s = (points[Math.min(j, i + 1)][0] - points[Math.max(0, i - 1)][0]) / (6 * (1 + m[i] * m[i]));\n      tangents.push([ s || 0, m[i] * s || 0 ]);\n    }\n    return tangents;\n  }\n  function d3_svg_lineMonotone(points) {\n    return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineMonotoneTangents(points));\n  }\n  d3.svg.line.radial = function() {\n    var line = d3_svg_line(d3_svg_lineRadial);\n    line.radius = line.x, delete line.x;\n    line.angle = line.y, delete line.y;\n    return line;\n  };\n  function d3_svg_lineRadial(points) {\n    var point, i = -1, n = points.length, r, a;\n    while (++i < n) {\n      point = points[i];\n      r = point[0];\n      a = point[1] - halfπ;\n      point[0] = r * Math.cos(a);\n      point[1] = r * Math.sin(a);\n    }\n    return points;\n  }\n  function d3_svg_area(projection) {\n    var x0 = d3_geom_pointX, x1 = d3_geom_pointX, y0 = 0, y1 = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, interpolateReverse = interpolate, L = \"L\", tension = .7;\n    function area(data) {\n      var segments = [], points0 = [], points1 = [], i = -1, n = data.length, d, fx0 = d3_functor(x0), fy0 = d3_functor(y0), fx1 = x0 === x1 ? function() {\n        return x;\n      } : d3_functor(x1), fy1 = y0 === y1 ? function() {\n        return y;\n      } : d3_functor(y1), x, y;\n      function segment() {\n        segments.push(\"M\", interpolate(projection(points1), tension), L, interpolateReverse(projection(points0.reverse()), tension), \"Z\");\n      }\n      while (++i < n) {\n        if (defined.call(this, d = data[i], i)) {\n          points0.push([ x = +fx0.call(this, d, i), y = +fy0.call(this, d, i) ]);\n          points1.push([ +fx1.call(this, d, i), +fy1.call(this, d, i) ]);\n        } else if (points0.length) {\n          segment();\n          points0 = [];\n          points1 = [];\n        }\n      }\n      if (points0.length) segment();\n      return segments.length ? segments.join(\"\") : null;\n    }\n    area.x = function(_) {\n      if (!arguments.length) return x1;\n      x0 = x1 = _;\n      return area;\n    };\n    area.x0 = function(_) {\n      if (!arguments.length) return x0;\n      x0 = _;\n      return area;\n    };\n    area.x1 = function(_) {\n      if (!arguments.length) return x1;\n      x1 = _;\n      return area;\n    };\n    area.y = function(_) {\n      if (!arguments.length) return y1;\n      y0 = y1 = _;\n      return area;\n    };\n    area.y0 = function(_) {\n      if (!arguments.length) return y0;\n      y0 = _;\n      return area;\n    };\n    area.y1 = function(_) {\n      if (!arguments.length) return y1;\n      y1 = _;\n      return area;\n    };\n    area.defined = function(_) {\n      if (!arguments.length) return defined;\n      defined = _;\n      return area;\n    };\n    area.interpolate = function(_) {\n      if (!arguments.length) return interpolateKey;\n      if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n      interpolateReverse = interpolate.reverse || interpolate;\n      L = interpolate.closed ? \"M\" : \"L\";\n      return area;\n    };\n    area.tension = function(_) {\n      if (!arguments.length) return tension;\n      tension = _;\n      return area;\n    };\n    return area;\n  }\n  d3_svg_lineStepBefore.reverse = d3_svg_lineStepAfter;\n  d3_svg_lineStepAfter.reverse = d3_svg_lineStepBefore;\n  d3.svg.area = function() {\n    return d3_svg_area(d3_identity);\n  };\n  d3.svg.area.radial = function() {\n    var area = d3_svg_area(d3_svg_lineRadial);\n    area.radius = area.x, delete area.x;\n    area.innerRadius = area.x0, delete area.x0;\n    area.outerRadius = area.x1, delete area.x1;\n    area.angle = area.y, delete area.y;\n    area.startAngle = area.y0, delete area.y0;\n    area.endAngle = area.y1, delete area.y1;\n    return area;\n  };\n  d3.svg.chord = function() {\n    var source = d3_source, target = d3_target, radius = d3_svg_chordRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle;\n    function chord(d, i) {\n      var s = subgroup(this, source, d, i), t = subgroup(this, target, d, i);\n      return \"M\" + s.p0 + arc(s.r, s.p1, s.a1 - s.a0) + (equals(s, t) ? curve(s.r, s.p1, s.r, s.p0) : curve(s.r, s.p1, t.r, t.p0) + arc(t.r, t.p1, t.a1 - t.a0) + curve(t.r, t.p1, s.r, s.p0)) + \"Z\";\n    }\n    function subgroup(self, f, d, i) {\n      var subgroup = f.call(self, d, i), r = radius.call(self, subgroup, i), a0 = startAngle.call(self, subgroup, i) - halfπ, a1 = endAngle.call(self, subgroup, i) - halfπ;\n      return {\n        r: r,\n        a0: a0,\n        a1: a1,\n        p0: [ r * Math.cos(a0), r * Math.sin(a0) ],\n        p1: [ r * Math.cos(a1), r * Math.sin(a1) ]\n      };\n    }\n    function equals(a, b) {\n      return a.a0 == b.a0 && a.a1 == b.a1;\n    }\n    function arc(r, p, a) {\n      return \"A\" + r + \",\" + r + \" 0 \" + +(a > π) + \",1 \" + p;\n    }\n    function curve(r0, p0, r1, p1) {\n      return \"Q 0,0 \" + p1;\n    }\n    chord.radius = function(v) {\n      if (!arguments.length) return radius;\n      radius = d3_functor(v);\n      return chord;\n    };\n    chord.source = function(v) {\n      if (!arguments.length) return source;\n      source = d3_functor(v);\n      return chord;\n    };\n    chord.target = function(v) {\n      if (!arguments.length) return target;\n      target = d3_functor(v);\n      return chord;\n    };\n    chord.startAngle = function(v) {\n      if (!arguments.length) return startAngle;\n      startAngle = d3_functor(v);\n      return chord;\n    };\n    chord.endAngle = function(v) {\n      if (!arguments.length) return endAngle;\n      endAngle = d3_functor(v);\n      return chord;\n    };\n    return chord;\n  };\n  function d3_svg_chordRadius(d) {\n    return d.radius;\n  }\n  d3.svg.diagonal = function() {\n    var source = d3_source, target = d3_target, projection = d3_svg_diagonalProjection;\n    function diagonal(d, i) {\n      var p0 = source.call(this, d, i), p3 = target.call(this, d, i), m = (p0.y + p3.y) / 2, p = [ p0, {\n        x: p0.x,\n        y: m\n      }, {\n        x: p3.x,\n        y: m\n      }, p3 ];\n      p = p.map(projection);\n      return \"M\" + p[0] + \"C\" + p[1] + \" \" + p[2] + \" \" + p[3];\n    }\n    diagonal.source = function(x) {\n      if (!arguments.length) return source;\n      source = d3_functor(x);\n      return diagonal;\n    };\n    diagonal.target = function(x) {\n      if (!arguments.length) return target;\n      target = d3_functor(x);\n      return diagonal;\n    };\n    diagonal.projection = function(x) {\n      if (!arguments.length) return projection;\n      projection = x;\n      return diagonal;\n    };\n    return diagonal;\n  };\n  function d3_svg_diagonalProjection(d) {\n    return [ d.x, d.y ];\n  }\n  d3.svg.diagonal.radial = function() {\n    var diagonal = d3.svg.diagonal(), projection = d3_svg_diagonalProjection, projection_ = diagonal.projection;\n    diagonal.projection = function(x) {\n      return arguments.length ? projection_(d3_svg_diagonalRadialProjection(projection = x)) : projection;\n    };\n    return diagonal;\n  };\n  function d3_svg_diagonalRadialProjection(projection) {\n    return function() {\n      var d = projection.apply(this, arguments), r = d[0], a = d[1] - halfπ;\n      return [ r * Math.cos(a), r * Math.sin(a) ];\n    };\n  }\n  d3.svg.symbol = function() {\n    var type = d3_svg_symbolType, size = d3_svg_symbolSize;\n    function symbol(d, i) {\n      return (d3_svg_symbols.get(type.call(this, d, i)) || d3_svg_symbolCircle)(size.call(this, d, i));\n    }\n    symbol.type = function(x) {\n      if (!arguments.length) return type;\n      type = d3_functor(x);\n      return symbol;\n    };\n    symbol.size = function(x) {\n      if (!arguments.length) return size;\n      size = d3_functor(x);\n      return symbol;\n    };\n    return symbol;\n  };\n  function d3_svg_symbolSize() {\n    return 64;\n  }\n  function d3_svg_symbolType() {\n    return \"circle\";\n  }\n  function d3_svg_symbolCircle(size) {\n    var r = Math.sqrt(size / π);\n    return \"M0,\" + r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + -r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + r + \"Z\";\n  }\n  var d3_svg_symbols = d3.map({\n    circle: d3_svg_symbolCircle,\n    cross: function(size) {\n      var r = Math.sqrt(size / 5) / 2;\n      return \"M\" + -3 * r + \",\" + -r + \"H\" + -r + \"V\" + -3 * r + \"H\" + r + \"V\" + -r + \"H\" + 3 * r + \"V\" + r + \"H\" + r + \"V\" + 3 * r + \"H\" + -r + \"V\" + r + \"H\" + -3 * r + \"Z\";\n    },\n    diamond: function(size) {\n      var ry = Math.sqrt(size / (2 * d3_svg_symbolTan30)), rx = ry * d3_svg_symbolTan30;\n      return \"M0,\" + -ry + \"L\" + rx + \",0\" + \" 0,\" + ry + \" \" + -rx + \",0\" + \"Z\";\n    },\n    square: function(size) {\n      var r = Math.sqrt(size) / 2;\n      return \"M\" + -r + \",\" + -r + \"L\" + r + \",\" + -r + \" \" + r + \",\" + r + \" \" + -r + \",\" + r + \"Z\";\n    },\n    \"triangle-down\": function(size) {\n      var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n      return \"M0,\" + ry + \"L\" + rx + \",\" + -ry + \" \" + -rx + \",\" + -ry + \"Z\";\n    },\n    \"triangle-up\": function(size) {\n      var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n      return \"M0,\" + -ry + \"L\" + rx + \",\" + ry + \" \" + -rx + \",\" + ry + \"Z\";\n    }\n  });\n  d3.svg.symbolTypes = d3_svg_symbols.keys();\n  var d3_svg_symbolSqrt3 = Math.sqrt(3), d3_svg_symbolTan30 = Math.tan(30 * d3_radians);\n  d3_selectionPrototype.transition = function(name) {\n    var id = d3_transitionInheritId || ++d3_transitionId, ns = d3_transitionNamespace(name), subgroups = [], subgroup, node, transition = d3_transitionInherit || {\n      time: Date.now(),\n      ease: d3_ease_cubicInOut,\n      delay: 0,\n      duration: 250\n    };\n    for (var j = -1, m = this.length; ++j < m; ) {\n      subgroups.push(subgroup = []);\n      for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n        if (node = group[i]) d3_transitionNode(node, i, ns, id, transition);\n        subgroup.push(node);\n      }\n    }\n    return d3_transition(subgroups, ns, id);\n  };\n  d3_selectionPrototype.interrupt = function(name) {\n    return this.each(name == null ? d3_selection_interrupt : d3_selection_interruptNS(d3_transitionNamespace(name)));\n  };\n  var d3_selection_interrupt = d3_selection_interruptNS(d3_transitionNamespace());\n  function d3_selection_interruptNS(ns) {\n    return function() {\n      var lock, activeId, active;\n      if ((lock = this[ns]) && (active = lock[activeId = lock.active])) {\n        active.timer.c = null;\n        active.timer.t = NaN;\n        if (--lock.count) delete lock[activeId]; else delete this[ns];\n        lock.active += .5;\n        active.event && active.event.interrupt.call(this, this.__data__, active.index);\n      }\n    };\n  }\n  function d3_transition(groups, ns, id) {\n    d3_subclass(groups, d3_transitionPrototype);\n    groups.namespace = ns;\n    groups.id = id;\n    return groups;\n  }\n  var d3_transitionPrototype = [], d3_transitionId = 0, d3_transitionInheritId, d3_transitionInherit;\n  d3_transitionPrototype.call = d3_selectionPrototype.call;\n  d3_transitionPrototype.empty = d3_selectionPrototype.empty;\n  d3_transitionPrototype.node = d3_selectionPrototype.node;\n  d3_transitionPrototype.size = d3_selectionPrototype.size;\n  d3.transition = function(selection, name) {\n    return selection && selection.transition ? d3_transitionInheritId ? selection.transition(name) : selection : d3.selection().transition(selection);\n  };\n  d3.transition.prototype = d3_transitionPrototype;\n  d3_transitionPrototype.select = function(selector) {\n    var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnode, node;\n    selector = d3_selection_selector(selector);\n    for (var j = -1, m = this.length; ++j < m; ) {\n      subgroups.push(subgroup = []);\n      for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n        if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i, j))) {\n          if (\"__data__\" in node) subnode.__data__ = node.__data__;\n          d3_transitionNode(subnode, i, ns, id, node[ns][id]);\n          subgroup.push(subnode);\n        } else {\n          subgroup.push(null);\n        }\n      }\n    }\n    return d3_transition(subgroups, ns, id);\n  };\n  d3_transitionPrototype.selectAll = function(selector) {\n    var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnodes, node, subnode, transition;\n    selector = d3_selection_selectorAll(selector);\n    for (var j = -1, m = this.length; ++j < m; ) {\n      for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n        if (node = group[i]) {\n          transition = node[ns][id];\n          subnodes = selector.call(node, node.__data__, i, j);\n          subgroups.push(subgroup = []);\n          for (var k = -1, o = subnodes.length; ++k < o; ) {\n            if (subnode = subnodes[k]) d3_transitionNode(subnode, k, ns, id, transition);\n            subgroup.push(subnode);\n          }\n        }\n      }\n    }\n    return d3_transition(subgroups, ns, id);\n  };\n  d3_transitionPrototype.filter = function(filter) {\n    var subgroups = [], subgroup, group, node;\n    if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n    for (var j = 0, m = this.length; j < m; j++) {\n      subgroups.push(subgroup = []);\n      for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n        if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n          subgroup.push(node);\n        }\n      }\n    }\n    return d3_transition(subgroups, this.namespace, this.id);\n  };\n  d3_transitionPrototype.tween = function(name, tween) {\n    var id = this.id, ns = this.namespace;\n    if (arguments.length < 2) return this.node()[ns][id].tween.get(name);\n    return d3_selection_each(this, tween == null ? function(node) {\n      node[ns][id].tween.remove(name);\n    } : function(node) {\n      node[ns][id].tween.set(name, tween);\n    });\n  };\n  function d3_transition_tween(groups, name, value, tween) {\n    var id = groups.id, ns = groups.namespace;\n    return d3_selection_each(groups, typeof value === \"function\" ? function(node, i, j) {\n      node[ns][id].tween.set(name, tween(value.call(node, node.__data__, i, j)));\n    } : (value = tween(value), function(node) {\n      node[ns][id].tween.set(name, value);\n    }));\n  }\n  d3_transitionPrototype.attr = function(nameNS, value) {\n    if (arguments.length < 2) {\n      for (value in nameNS) this.attr(value, nameNS[value]);\n      return this;\n    }\n    var interpolate = nameNS == \"transform\" ? d3_interpolateTransform : d3_interpolate, name = d3.ns.qualify(nameNS);\n    function attrNull() {\n      this.removeAttribute(name);\n    }\n    function attrNullNS() {\n      this.removeAttributeNS(name.space, name.local);\n    }\n    function attrTween(b) {\n      return b == null ? attrNull : (b += \"\", function() {\n        var a = this.getAttribute(name), i;\n        return a !== b && (i = interpolate(a, b), function(t) {\n          this.setAttribute(name, i(t));\n        });\n      });\n    }\n    function attrTweenNS(b) {\n      return b == null ? attrNullNS : (b += \"\", function() {\n        var a = this.getAttributeNS(name.space, name.local), i;\n        return a !== b && (i = interpolate(a, b), function(t) {\n          this.setAttributeNS(name.space, name.local, i(t));\n        });\n      });\n    }\n    return d3_transition_tween(this, \"attr.\" + nameNS, value, name.local ? attrTweenNS : attrTween);\n  };\n  d3_transitionPrototype.attrTween = function(nameNS, tween) {\n    var name = d3.ns.qualify(nameNS);\n    function attrTween(d, i) {\n      var f = tween.call(this, d, i, this.getAttribute(name));\n      return f && function(t) {\n        this.setAttribute(name, f(t));\n      };\n    }\n    function attrTweenNS(d, i) {\n      var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local));\n      return f && function(t) {\n        this.setAttributeNS(name.space, name.local, f(t));\n      };\n    }\n    return this.tween(\"attr.\" + nameNS, name.local ? attrTweenNS : attrTween);\n  };\n  d3_transitionPrototype.style = function(name, value, priority) {\n    var n = arguments.length;\n    if (n < 3) {\n      if (typeof name !== \"string\") {\n        if (n < 2) value = \"\";\n        for (priority in name) this.style(priority, name[priority], value);\n        return this;\n      }\n      priority = \"\";\n    }\n    function styleNull() {\n      this.style.removeProperty(name);\n    }\n    function styleString(b) {\n      return b == null ? styleNull : (b += \"\", function() {\n        var a = d3_window(this).getComputedStyle(this, null).getPropertyValue(name), i;\n        return a !== b && (i = d3_interpolate(a, b), function(t) {\n          this.style.setProperty(name, i(t), priority);\n        });\n      });\n    }\n    return d3_transition_tween(this, \"style.\" + name, value, styleString);\n  };\n  d3_transitionPrototype.styleTween = function(name, tween, priority) {\n    if (arguments.length < 3) priority = \"\";\n    function styleTween(d, i) {\n      var f = tween.call(this, d, i, d3_window(this).getComputedStyle(this, null).getPropertyValue(name));\n      return f && function(t) {\n        this.style.setProperty(name, f(t), priority);\n      };\n    }\n    return this.tween(\"style.\" + name, styleTween);\n  };\n  d3_transitionPrototype.text = function(value) {\n    return d3_transition_tween(this, \"text\", value, d3_transition_text);\n  };\n  function d3_transition_text(b) {\n    if (b == null) b = \"\";\n    return function() {\n      this.textContent = b;\n    };\n  }\n  d3_transitionPrototype.remove = function() {\n    var ns = this.namespace;\n    return this.each(\"end.transition\", function() {\n      var p;\n      if (this[ns].count < 2 && (p = this.parentNode)) p.removeChild(this);\n    });\n  };\n  d3_transitionPrototype.ease = function(value) {\n    var id = this.id, ns = this.namespace;\n    if (arguments.length < 1) return this.node()[ns][id].ease;\n    if (typeof value !== \"function\") value = d3.ease.apply(d3, arguments);\n    return d3_selection_each(this, function(node) {\n      node[ns][id].ease = value;\n    });\n  };\n  d3_transitionPrototype.delay = function(value) {\n    var id = this.id, ns = this.namespace;\n    if (arguments.length < 1) return this.node()[ns][id].delay;\n    return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n      node[ns][id].delay = +value.call(node, node.__data__, i, j);\n    } : (value = +value, function(node) {\n      node[ns][id].delay = value;\n    }));\n  };\n  d3_transitionPrototype.duration = function(value) {\n    var id = this.id, ns = this.namespace;\n    if (arguments.length < 1) return this.node()[ns][id].duration;\n    return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n      node[ns][id].duration = Math.max(1, value.call(node, node.__data__, i, j));\n    } : (value = Math.max(1, value), function(node) {\n      node[ns][id].duration = value;\n    }));\n  };\n  d3_transitionPrototype.each = function(type, listener) {\n    var id = this.id, ns = this.namespace;\n    if (arguments.length < 2) {\n      var inherit = d3_transitionInherit, inheritId = d3_transitionInheritId;\n      try {\n        d3_transitionInheritId = id;\n        d3_selection_each(this, function(node, i, j) {\n          d3_transitionInherit = node[ns][id];\n          type.call(node, node.__data__, i, j);\n        });\n      } finally {\n        d3_transitionInherit = inherit;\n        d3_transitionInheritId = inheritId;\n      }\n    } else {\n      d3_selection_each(this, function(node) {\n        var transition = node[ns][id];\n        (transition.event || (transition.event = d3.dispatch(\"start\", \"end\", \"interrupt\"))).on(type, listener);\n      });\n    }\n    return this;\n  };\n  d3_transitionPrototype.transition = function() {\n    var id0 = this.id, id1 = ++d3_transitionId, ns = this.namespace, subgroups = [], subgroup, group, node, transition;\n    for (var j = 0, m = this.length; j < m; j++) {\n      subgroups.push(subgroup = []);\n      for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n        if (node = group[i]) {\n          transition = node[ns][id0];\n          d3_transitionNode(node, i, ns, id1, {\n            time: transition.time,\n            ease: transition.ease,\n            delay: transition.delay + transition.duration,\n            duration: transition.duration\n          });\n        }\n        subgroup.push(node);\n      }\n    }\n    return d3_transition(subgroups, ns, id1);\n  };\n  function d3_transitionNamespace(name) {\n    return name == null ? \"__transition__\" : \"__transition_\" + name + \"__\";\n  }\n  function d3_transitionNode(node, i, ns, id, inherit) {\n    var lock = node[ns] || (node[ns] = {\n      active: 0,\n      count: 0\n    }), transition = lock[id], time, timer, duration, ease, tweens;\n    function schedule(elapsed) {\n      var delay = transition.delay;\n      timer.t = delay + time;\n      if (delay <= elapsed) return start(elapsed - delay);\n      timer.c = start;\n    }\n    function start(elapsed) {\n      var activeId = lock.active, active = lock[activeId];\n      if (active) {\n        active.timer.c = null;\n        active.timer.t = NaN;\n        --lock.count;\n        delete lock[activeId];\n        active.event && active.event.interrupt.call(node, node.__data__, active.index);\n      }\n      for (var cancelId in lock) {\n        if (+cancelId < id) {\n          var cancel = lock[cancelId];\n          cancel.timer.c = null;\n          cancel.timer.t = NaN;\n          --lock.count;\n          delete lock[cancelId];\n        }\n      }\n      timer.c = tick;\n      d3_timer(function() {\n        if (timer.c && tick(elapsed || 1)) {\n          timer.c = null;\n          timer.t = NaN;\n        }\n        return 1;\n      }, 0, time);\n      lock.active = id;\n      transition.event && transition.event.start.call(node, node.__data__, i);\n      tweens = [];\n      transition.tween.forEach(function(key, value) {\n        if (value = value.call(node, node.__data__, i)) {\n          tweens.push(value);\n        }\n      });\n      ease = transition.ease;\n      duration = transition.duration;\n    }\n    function tick(elapsed) {\n      var t = elapsed / duration, e = ease(t), n = tweens.length;\n      while (n > 0) {\n        tweens[--n].call(node, e);\n      }\n      if (t >= 1) {\n        transition.event && transition.event.end.call(node, node.__data__, i);\n        if (--lock.count) delete lock[id]; else delete node[ns];\n        return 1;\n      }\n    }\n    if (!transition) {\n      time = inherit.time;\n      timer = d3_timer(schedule, 0, time);\n      transition = lock[id] = {\n        tween: new d3_Map(),\n        time: time,\n        timer: timer,\n        delay: inherit.delay,\n        duration: inherit.duration,\n        ease: inherit.ease,\n        index: i\n      };\n      inherit = null;\n      ++lock.count;\n    }\n  }\n  d3.svg.axis = function() {\n    var scale = d3.scale.linear(), orient = d3_svg_axisDefaultOrient, innerTickSize = 6, outerTickSize = 6, tickPadding = 3, tickArguments_ = [ 10 ], tickValues = null, tickFormat_;\n    function axis(g) {\n      g.each(function() {\n        var g = d3.select(this);\n        var scale0 = this.__chart__ || scale, scale1 = this.__chart__ = scale.copy();\n        var ticks = tickValues == null ? scale1.ticks ? scale1.ticks.apply(scale1, tickArguments_) : scale1.domain() : tickValues, tickFormat = tickFormat_ == null ? scale1.tickFormat ? scale1.tickFormat.apply(scale1, tickArguments_) : d3_identity : tickFormat_, tick = g.selectAll(\".tick\").data(ticks, scale1), tickEnter = tick.enter().insert(\"g\", \".domain\").attr(\"class\", \"tick\").style(\"opacity\", ε), tickExit = d3.transition(tick.exit()).style(\"opacity\", ε).remove(), tickUpdate = d3.transition(tick.order()).style(\"opacity\", 1), tickSpacing = Math.max(innerTickSize, 0) + tickPadding, tickTransform;\n        var range = d3_scaleRange(scale1), path = g.selectAll(\".domain\").data([ 0 ]), pathUpdate = (path.enter().append(\"path\").attr(\"class\", \"domain\"), \n        d3.transition(path));\n        tickEnter.append(\"line\");\n        tickEnter.append(\"text\");\n        var lineEnter = tickEnter.select(\"line\"), lineUpdate = tickUpdate.select(\"line\"), text = tick.select(\"text\").text(tickFormat), textEnter = tickEnter.select(\"text\"), textUpdate = tickUpdate.select(\"text\"), sign = orient === \"top\" || orient === \"left\" ? -1 : 1, x1, x2, y1, y2;\n        if (orient === \"bottom\" || orient === \"top\") {\n          tickTransform = d3_svg_axisX, x1 = \"x\", y1 = \"y\", x2 = \"x2\", y2 = \"y2\";\n          text.attr(\"dy\", sign < 0 ? \"0em\" : \".71em\").style(\"text-anchor\", \"middle\");\n          pathUpdate.attr(\"d\", \"M\" + range[0] + \",\" + sign * outerTickSize + \"V0H\" + range[1] + \"V\" + sign * outerTickSize);\n        } else {\n          tickTransform = d3_svg_axisY, x1 = \"y\", y1 = \"x\", x2 = \"y2\", y2 = \"x2\";\n          text.attr(\"dy\", \".32em\").style(\"text-anchor\", sign < 0 ? \"end\" : \"start\");\n          pathUpdate.attr(\"d\", \"M\" + sign * outerTickSize + \",\" + range[0] + \"H0V\" + range[1] + \"H\" + sign * outerTickSize);\n        }\n        lineEnter.attr(y2, sign * innerTickSize);\n        textEnter.attr(y1, sign * tickSpacing);\n        lineUpdate.attr(x2, 0).attr(y2, sign * innerTickSize);\n        textUpdate.attr(x1, 0).attr(y1, sign * tickSpacing);\n        if (scale1.rangeBand) {\n          var x = scale1, dx = x.rangeBand() / 2;\n          scale0 = scale1 = function(d) {\n            return x(d) + dx;\n          };\n        } else if (scale0.rangeBand) {\n          scale0 = scale1;\n        } else {\n          tickExit.call(tickTransform, scale1, scale0);\n        }\n        tickEnter.call(tickTransform, scale0, scale1);\n        tickUpdate.call(tickTransform, scale1, scale1);\n      });\n    }\n    axis.scale = function(x) {\n      if (!arguments.length) return scale;\n      scale = x;\n      return axis;\n    };\n    axis.orient = function(x) {\n      if (!arguments.length) return orient;\n      orient = x in d3_svg_axisOrients ? x + \"\" : d3_svg_axisDefaultOrient;\n      return axis;\n    };\n    axis.ticks = function() {\n      if (!arguments.length) return tickArguments_;\n      tickArguments_ = d3_array(arguments);\n      return axis;\n    };\n    axis.tickValues = function(x) {\n      if (!arguments.length) return tickValues;\n      tickValues = x;\n      return axis;\n    };\n    axis.tickFormat = function(x) {\n      if (!arguments.length) return tickFormat_;\n      tickFormat_ = x;\n      return axis;\n    };\n    axis.tickSize = function(x) {\n      var n = arguments.length;\n      if (!n) return innerTickSize;\n      innerTickSize = +x;\n      outerTickSize = +arguments[n - 1];\n      return axis;\n    };\n    axis.innerTickSize = function(x) {\n      if (!arguments.length) return innerTickSize;\n      innerTickSize = +x;\n      return axis;\n    };\n    axis.outerTickSize = function(x) {\n      if (!arguments.length) return outerTickSize;\n      outerTickSize = +x;\n      return axis;\n    };\n    axis.tickPadding = function(x) {\n      if (!arguments.length) return tickPadding;\n      tickPadding = +x;\n      return axis;\n    };\n    axis.tickSubdivide = function() {\n      return arguments.length && axis;\n    };\n    return axis;\n  };\n  var d3_svg_axisDefaultOrient = \"bottom\", d3_svg_axisOrients = {\n    top: 1,\n    right: 1,\n    bottom: 1,\n    left: 1\n  };\n  function d3_svg_axisX(selection, x0, x1) {\n    selection.attr(\"transform\", function(d) {\n      var v0 = x0(d);\n      return \"translate(\" + (isFinite(v0) ? v0 : x1(d)) + \",0)\";\n    });\n  }\n  function d3_svg_axisY(selection, y0, y1) {\n    selection.attr(\"transform\", function(d) {\n      var v0 = y0(d);\n      return \"translate(0,\" + (isFinite(v0) ? v0 : y1(d)) + \")\";\n    });\n  }\n  d3.svg.brush = function() {\n    var event = d3_eventDispatch(brush, \"brushstart\", \"brush\", \"brushend\"), x = null, y = null, xExtent = [ 0, 0 ], yExtent = [ 0, 0 ], xExtentDomain, yExtentDomain, xClamp = true, yClamp = true, resizes = d3_svg_brushResizes[0];\n    function brush(g) {\n      g.each(function() {\n        var g = d3.select(this).style(\"pointer-events\", \"all\").style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\").on(\"mousedown.brush\", brushstart).on(\"touchstart.brush\", brushstart);\n        var background = g.selectAll(\".background\").data([ 0 ]);\n        background.enter().append(\"rect\").attr(\"class\", \"background\").style(\"visibility\", \"hidden\").style(\"cursor\", \"crosshair\");\n        g.selectAll(\".extent\").data([ 0 ]).enter().append(\"rect\").attr(\"class\", \"extent\").style(\"cursor\", \"move\");\n        var resize = g.selectAll(\".resize\").data(resizes, d3_identity);\n        resize.exit().remove();\n        resize.enter().append(\"g\").attr(\"class\", function(d) {\n          return \"resize \" + d;\n        }).style(\"cursor\", function(d) {\n          return d3_svg_brushCursor[d];\n        }).append(\"rect\").attr(\"x\", function(d) {\n          return /[ew]$/.test(d) ? -3 : null;\n        }).attr(\"y\", function(d) {\n          return /^[ns]/.test(d) ? -3 : null;\n        }).attr(\"width\", 6).attr(\"height\", 6).style(\"visibility\", \"hidden\");\n        resize.style(\"display\", brush.empty() ? \"none\" : null);\n        var gUpdate = d3.transition(g), backgroundUpdate = d3.transition(background), range;\n        if (x) {\n          range = d3_scaleRange(x);\n          backgroundUpdate.attr(\"x\", range[0]).attr(\"width\", range[1] - range[0]);\n          redrawX(gUpdate);\n        }\n        if (y) {\n          range = d3_scaleRange(y);\n          backgroundUpdate.attr(\"y\", range[0]).attr(\"height\", range[1] - range[0]);\n          redrawY(gUpdate);\n        }\n        redraw(gUpdate);\n      });\n    }\n    brush.event = function(g) {\n      g.each(function() {\n        var event_ = event.of(this, arguments), extent1 = {\n          x: xExtent,\n          y: yExtent,\n          i: xExtentDomain,\n          j: yExtentDomain\n        }, extent0 = this.__chart__ || extent1;\n        this.__chart__ = extent1;\n        if (d3_transitionInheritId) {\n          d3.select(this).transition().each(\"start.brush\", function() {\n            xExtentDomain = extent0.i;\n            yExtentDomain = extent0.j;\n            xExtent = extent0.x;\n            yExtent = extent0.y;\n            event_({\n              type: \"brushstart\"\n            });\n          }).tween(\"brush:brush\", function() {\n            var xi = d3_interpolateArray(xExtent, extent1.x), yi = d3_interpolateArray(yExtent, extent1.y);\n            xExtentDomain = yExtentDomain = null;\n            return function(t) {\n              xExtent = extent1.x = xi(t);\n              yExtent = extent1.y = yi(t);\n              event_({\n                type: \"brush\",\n                mode: \"resize\"\n              });\n            };\n          }).each(\"end.brush\", function() {\n            xExtentDomain = extent1.i;\n            yExtentDomain = extent1.j;\n            event_({\n              type: \"brush\",\n              mode: \"resize\"\n            });\n            event_({\n              type: \"brushend\"\n            });\n          });\n        } else {\n          event_({\n            type: \"brushstart\"\n          });\n          event_({\n            type: \"brush\",\n            mode: \"resize\"\n          });\n          event_({\n            type: \"brushend\"\n          });\n        }\n      });\n    };\n    function redraw(g) {\n      g.selectAll(\".resize\").attr(\"transform\", function(d) {\n        return \"translate(\" + xExtent[+/e$/.test(d)] + \",\" + yExtent[+/^s/.test(d)] + \")\";\n      });\n    }\n    function redrawX(g) {\n      g.select(\".extent\").attr(\"x\", xExtent[0]);\n      g.selectAll(\".extent,.n>rect,.s>rect\").attr(\"width\", xExtent[1] - xExtent[0]);\n    }\n    function redrawY(g) {\n      g.select(\".extent\").attr(\"y\", yExtent[0]);\n      g.selectAll(\".extent,.e>rect,.w>rect\").attr(\"height\", yExtent[1] - yExtent[0]);\n    }\n    function brushstart() {\n      var target = this, eventTarget = d3.select(d3.event.target), event_ = event.of(target, arguments), g = d3.select(target), resizing = eventTarget.datum(), resizingX = !/^(n|s)$/.test(resizing) && x, resizingY = !/^(e|w)$/.test(resizing) && y, dragging = eventTarget.classed(\"extent\"), dragRestore = d3_event_dragSuppress(target), center, origin = d3.mouse(target), offset;\n      var w = d3.select(d3_window(target)).on(\"keydown.brush\", keydown).on(\"keyup.brush\", keyup);\n      if (d3.event.changedTouches) {\n        w.on(\"touchmove.brush\", brushmove).on(\"touchend.brush\", brushend);\n      } else {\n        w.on(\"mousemove.brush\", brushmove).on(\"mouseup.brush\", brushend);\n      }\n      g.interrupt().selectAll(\"*\").interrupt();\n      if (dragging) {\n        origin[0] = xExtent[0] - origin[0];\n        origin[1] = yExtent[0] - origin[1];\n      } else if (resizing) {\n        var ex = +/w$/.test(resizing), ey = +/^n/.test(resizing);\n        offset = [ xExtent[1 - ex] - origin[0], yExtent[1 - ey] - origin[1] ];\n        origin[0] = xExtent[ex];\n        origin[1] = yExtent[ey];\n      } else if (d3.event.altKey) center = origin.slice();\n      g.style(\"pointer-events\", \"none\").selectAll(\".resize\").style(\"display\", null);\n      d3.select(\"body\").style(\"cursor\", eventTarget.style(\"cursor\"));\n      event_({\n        type: \"brushstart\"\n      });\n      brushmove();\n      function keydown() {\n        if (d3.event.keyCode == 32) {\n          if (!dragging) {\n            center = null;\n            origin[0] -= xExtent[1];\n            origin[1] -= yExtent[1];\n            dragging = 2;\n          }\n          d3_eventPreventDefault();\n        }\n      }\n      function keyup() {\n        if (d3.event.keyCode == 32 && dragging == 2) {\n          origin[0] += xExtent[1];\n          origin[1] += yExtent[1];\n          dragging = 0;\n          d3_eventPreventDefault();\n        }\n      }\n      function brushmove() {\n        var point = d3.mouse(target), moved = false;\n        if (offset) {\n          point[0] += offset[0];\n          point[1] += offset[1];\n        }\n        if (!dragging) {\n          if (d3.event.altKey) {\n            if (!center) center = [ (xExtent[0] + xExtent[1]) / 2, (yExtent[0] + yExtent[1]) / 2 ];\n            origin[0] = xExtent[+(point[0] < center[0])];\n            origin[1] = yExtent[+(point[1] < center[1])];\n          } else center = null;\n        }\n        if (resizingX && move1(point, x, 0)) {\n          redrawX(g);\n          moved = true;\n        }\n        if (resizingY && move1(point, y, 1)) {\n          redrawY(g);\n          moved = true;\n        }\n        if (moved) {\n          redraw(g);\n          event_({\n            type: \"brush\",\n            mode: dragging ? \"move\" : \"resize\"\n          });\n        }\n      }\n      function move1(point, scale, i) {\n        var range = d3_scaleRange(scale), r0 = range[0], r1 = range[1], position = origin[i], extent = i ? yExtent : xExtent, size = extent[1] - extent[0], min, max;\n        if (dragging) {\n          r0 -= position;\n          r1 -= size + position;\n        }\n        min = (i ? yClamp : xClamp) ? Math.max(r0, Math.min(r1, point[i])) : point[i];\n        if (dragging) {\n          max = (min += position) + size;\n        } else {\n          if (center) position = Math.max(r0, Math.min(r1, 2 * center[i] - min));\n          if (position < min) {\n            max = min;\n            min = position;\n          } else {\n            max = position;\n          }\n        }\n        if (extent[0] != min || extent[1] != max) {\n          if (i) yExtentDomain = null; else xExtentDomain = null;\n          extent[0] = min;\n          extent[1] = max;\n          return true;\n        }\n      }\n      function brushend() {\n        brushmove();\n        g.style(\"pointer-events\", \"all\").selectAll(\".resize\").style(\"display\", brush.empty() ? \"none\" : null);\n        d3.select(\"body\").style(\"cursor\", null);\n        w.on(\"mousemove.brush\", null).on(\"mouseup.brush\", null).on(\"touchmove.brush\", null).on(\"touchend.brush\", null).on(\"keydown.brush\", null).on(\"keyup.brush\", null);\n        dragRestore();\n        event_({\n          type: \"brushend\"\n        });\n      }\n    }\n    brush.x = function(z) {\n      if (!arguments.length) return x;\n      x = z;\n      resizes = d3_svg_brushResizes[!x << 1 | !y];\n      return brush;\n    };\n    brush.y = function(z) {\n      if (!arguments.length) return y;\n      y = z;\n      resizes = d3_svg_brushResizes[!x << 1 | !y];\n      return brush;\n    };\n    brush.clamp = function(z) {\n      if (!arguments.length) return x && y ? [ xClamp, yClamp ] : x ? xClamp : y ? yClamp : null;\n      if (x && y) xClamp = !!z[0], yClamp = !!z[1]; else if (x) xClamp = !!z; else if (y) yClamp = !!z;\n      return brush;\n    };\n    brush.extent = function(z) {\n      var x0, x1, y0, y1, t;\n      if (!arguments.length) {\n        if (x) {\n          if (xExtentDomain) {\n            x0 = xExtentDomain[0], x1 = xExtentDomain[1];\n          } else {\n            x0 = xExtent[0], x1 = xExtent[1];\n            if (x.invert) x0 = x.invert(x0), x1 = x.invert(x1);\n            if (x1 < x0) t = x0, x0 = x1, x1 = t;\n          }\n        }\n        if (y) {\n          if (yExtentDomain) {\n            y0 = yExtentDomain[0], y1 = yExtentDomain[1];\n          } else {\n            y0 = yExtent[0], y1 = yExtent[1];\n            if (y.invert) y0 = y.invert(y0), y1 = y.invert(y1);\n            if (y1 < y0) t = y0, y0 = y1, y1 = t;\n          }\n        }\n        return x && y ? [ [ x0, y0 ], [ x1, y1 ] ] : x ? [ x0, x1 ] : y && [ y0, y1 ];\n      }\n      if (x) {\n        x0 = z[0], x1 = z[1];\n        if (y) x0 = x0[0], x1 = x1[0];\n        xExtentDomain = [ x0, x1 ];\n        if (x.invert) x0 = x(x0), x1 = x(x1);\n        if (x1 < x0) t = x0, x0 = x1, x1 = t;\n        if (x0 != xExtent[0] || x1 != xExtent[1]) xExtent = [ x0, x1 ];\n      }\n      if (y) {\n        y0 = z[0], y1 = z[1];\n        if (x) y0 = y0[1], y1 = y1[1];\n        yExtentDomain = [ y0, y1 ];\n        if (y.invert) y0 = y(y0), y1 = y(y1);\n        if (y1 < y0) t = y0, y0 = y1, y1 = t;\n        if (y0 != yExtent[0] || y1 != yExtent[1]) yExtent = [ y0, y1 ];\n      }\n      return brush;\n    };\n    brush.clear = function() {\n      if (!brush.empty()) {\n        xExtent = [ 0, 0 ], yExtent = [ 0, 0 ];\n        xExtentDomain = yExtentDomain = null;\n      }\n      return brush;\n    };\n    brush.empty = function() {\n      return !!x && xExtent[0] == xExtent[1] || !!y && yExtent[0] == yExtent[1];\n    };\n    return d3.rebind(brush, event, \"on\");\n  };\n  var d3_svg_brushCursor = {\n    n: \"ns-resize\",\n    e: \"ew-resize\",\n    s: \"ns-resize\",\n    w: \"ew-resize\",\n    nw: \"nwse-resize\",\n    ne: \"nesw-resize\",\n    se: \"nwse-resize\",\n    sw: \"nesw-resize\"\n  };\n  var d3_svg_brushResizes = [ [ \"n\", \"e\", \"s\", \"w\", \"nw\", \"ne\", \"se\", \"sw\" ], [ \"e\", \"w\" ], [ \"n\", \"s\" ], [] ];\n  var d3_time_format = d3_time.format = d3_locale_enUS.timeFormat;\n  var d3_time_formatUtc = d3_time_format.utc;\n  var d3_time_formatIso = d3_time_formatUtc(\"%Y-%m-%dT%H:%M:%S.%LZ\");\n  d3_time_format.iso = Date.prototype.toISOString && +new Date(\"2000-01-01T00:00:00.000Z\") ? d3_time_formatIsoNative : d3_time_formatIso;\n  function d3_time_formatIsoNative(date) {\n    return date.toISOString();\n  }\n  d3_time_formatIsoNative.parse = function(string) {\n    var date = new Date(string);\n    return isNaN(date) ? null : date;\n  };\n  d3_time_formatIsoNative.toString = d3_time_formatIso.toString;\n  d3_time.second = d3_time_interval(function(date) {\n    return new d3_date(Math.floor(date / 1e3) * 1e3);\n  }, function(date, offset) {\n    date.setTime(date.getTime() + Math.floor(offset) * 1e3);\n  }, function(date) {\n    return date.getSeconds();\n  });\n  d3_time.seconds = d3_time.second.range;\n  d3_time.seconds.utc = d3_time.second.utc.range;\n  d3_time.minute = d3_time_interval(function(date) {\n    return new d3_date(Math.floor(date / 6e4) * 6e4);\n  }, function(date, offset) {\n    date.setTime(date.getTime() + Math.floor(offset) * 6e4);\n  }, function(date) {\n    return date.getMinutes();\n  });\n  d3_time.minutes = d3_time.minute.range;\n  d3_time.minutes.utc = d3_time.minute.utc.range;\n  d3_time.hour = d3_time_interval(function(date) {\n    var timezone = date.getTimezoneOffset() / 60;\n    return new d3_date((Math.floor(date / 36e5 - timezone) + timezone) * 36e5);\n  }, function(date, offset) {\n    date.setTime(date.getTime() + Math.floor(offset) * 36e5);\n  }, function(date) {\n    return date.getHours();\n  });\n  d3_time.hours = d3_time.hour.range;\n  d3_time.hours.utc = d3_time.hour.utc.range;\n  d3_time.month = d3_time_interval(function(date) {\n    date = d3_time.day(date);\n    date.setDate(1);\n    return date;\n  }, function(date, offset) {\n    date.setMonth(date.getMonth() + offset);\n  }, function(date) {\n    return date.getMonth();\n  });\n  d3_time.months = d3_time.month.range;\n  d3_time.months.utc = d3_time.month.utc.range;\n  function d3_time_scale(linear, methods, format) {\n    function scale(x) {\n      return linear(x);\n    }\n    scale.invert = function(x) {\n      return d3_time_scaleDate(linear.invert(x));\n    };\n    scale.domain = function(x) {\n      if (!arguments.length) return linear.domain().map(d3_time_scaleDate);\n      linear.domain(x);\n      return scale;\n    };\n    function tickMethod(extent, count) {\n      var span = extent[1] - extent[0], target = span / count, i = d3.bisect(d3_time_scaleSteps, target);\n      return i == d3_time_scaleSteps.length ? [ methods.year, d3_scale_linearTickRange(extent.map(function(d) {\n        return d / 31536e6;\n      }), count)[2] ] : !i ? [ d3_time_scaleMilliseconds, d3_scale_linearTickRange(extent, count)[2] ] : methods[target / d3_time_scaleSteps[i - 1] < d3_time_scaleSteps[i] / target ? i - 1 : i];\n    }\n    scale.nice = function(interval, skip) {\n      var domain = scale.domain(), extent = d3_scaleExtent(domain), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" && tickMethod(extent, interval);\n      if (method) interval = method[0], skip = method[1];\n      function skipped(date) {\n        return !isNaN(date) && !interval.range(date, d3_time_scaleDate(+date + 1), skip).length;\n      }\n      return scale.domain(d3_scale_nice(domain, skip > 1 ? {\n        floor: function(date) {\n          while (skipped(date = interval.floor(date))) date = d3_time_scaleDate(date - 1);\n          return date;\n        },\n        ceil: function(date) {\n          while (skipped(date = interval.ceil(date))) date = d3_time_scaleDate(+date + 1);\n          return date;\n        }\n      } : interval));\n    };\n    scale.ticks = function(interval, skip) {\n      var extent = d3_scaleExtent(scale.domain()), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" ? tickMethod(extent, interval) : !interval.range && [ {\n        range: interval\n      }, skip ];\n      if (method) interval = method[0], skip = method[1];\n      return interval.range(extent[0], d3_time_scaleDate(+extent[1] + 1), skip < 1 ? 1 : skip);\n    };\n    scale.tickFormat = function() {\n      return format;\n    };\n    scale.copy = function() {\n      return d3_time_scale(linear.copy(), methods, format);\n    };\n    return d3_scale_linearRebind(scale, linear);\n  }\n  function d3_time_scaleDate(t) {\n    return new Date(t);\n  }\n  var d3_time_scaleSteps = [ 1e3, 5e3, 15e3, 3e4, 6e4, 3e5, 9e5, 18e5, 36e5, 108e5, 216e5, 432e5, 864e5, 1728e5, 6048e5, 2592e6, 7776e6, 31536e6 ];\n  var d3_time_scaleLocalMethods = [ [ d3_time.second, 1 ], [ d3_time.second, 5 ], [ d3_time.second, 15 ], [ d3_time.second, 30 ], [ d3_time.minute, 1 ], [ d3_time.minute, 5 ], [ d3_time.minute, 15 ], [ d3_time.minute, 30 ], [ d3_time.hour, 1 ], [ d3_time.hour, 3 ], [ d3_time.hour, 6 ], [ d3_time.hour, 12 ], [ d3_time.day, 1 ], [ d3_time.day, 2 ], [ d3_time.week, 1 ], [ d3_time.month, 1 ], [ d3_time.month, 3 ], [ d3_time.year, 1 ] ];\n  var d3_time_scaleLocalFormat = d3_time_format.multi([ [ \".%L\", function(d) {\n    return d.getMilliseconds();\n  } ], [ \":%S\", function(d) {\n    return d.getSeconds();\n  } ], [ \"%I:%M\", function(d) {\n    return d.getMinutes();\n  } ], [ \"%I %p\", function(d) {\n    return d.getHours();\n  } ], [ \"%a %d\", function(d) {\n    return d.getDay() && d.getDate() != 1;\n  } ], [ \"%b %d\", function(d) {\n    return d.getDate() != 1;\n  } ], [ \"%B\", function(d) {\n    return d.getMonth();\n  } ], [ \"%Y\", d3_true ] ]);\n  var d3_time_scaleMilliseconds = {\n    range: function(start, stop, step) {\n      return d3.range(Math.ceil(start / step) * step, +stop, step).map(d3_time_scaleDate);\n    },\n    floor: d3_identity,\n    ceil: d3_identity\n  };\n  d3_time_scaleLocalMethods.year = d3_time.year;\n  d3_time.scale = function() {\n    return d3_time_scale(d3.scale.linear(), d3_time_scaleLocalMethods, d3_time_scaleLocalFormat);\n  };\n  var d3_time_scaleUtcMethods = d3_time_scaleLocalMethods.map(function(m) {\n    return [ m[0].utc, m[1] ];\n  });\n  var d3_time_scaleUtcFormat = d3_time_formatUtc.multi([ [ \".%L\", function(d) {\n    return d.getUTCMilliseconds();\n  } ], [ \":%S\", function(d) {\n    return d.getUTCSeconds();\n  } ], [ \"%I:%M\", function(d) {\n    return d.getUTCMinutes();\n  } ], [ \"%I %p\", function(d) {\n    return d.getUTCHours();\n  } ], [ \"%a %d\", function(d) {\n    return d.getUTCDay() && d.getUTCDate() != 1;\n  } ], [ \"%b %d\", function(d) {\n    return d.getUTCDate() != 1;\n  } ], [ \"%B\", function(d) {\n    return d.getUTCMonth();\n  } ], [ \"%Y\", d3_true ] ]);\n  d3_time_scaleUtcMethods.year = d3_time.year.utc;\n  d3_time.scale.utc = function() {\n    return d3_time_scale(d3.scale.linear(), d3_time_scaleUtcMethods, d3_time_scaleUtcFormat);\n  };\n  d3.text = d3_xhrType(function(request) {\n    return request.responseText;\n  });\n  d3.json = function(url, callback) {\n    return d3_xhr(url, \"application/json\", d3_json, callback);\n  };\n  function d3_json(request) {\n    return JSON.parse(request.responseText);\n  }\n  d3.html = function(url, callback) {\n    return d3_xhr(url, \"text/html\", d3_html, callback);\n  };\n  function d3_html(request) {\n    var range = d3_document.createRange();\n    range.selectNode(d3_document.body);\n    return range.createContextualFragment(request.responseText);\n  }\n  d3.xml = d3_xhrType(function(request) {\n    return request.responseXML;\n  });\n  if (typeof define === \"function\" && define.amd) this.d3 = d3, define(d3); else if (typeof module === \"object\" && module.exports) module.exports = d3; else this.d3 = d3;\n}();","module.exports = ortho;\n\n/**\n * Generates a orthogonal projection matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\nfunction ortho(out, left, right, bottom, top, near, far) {\n    var lr = 1 / (left - right),\n        bt = 1 / (bottom - top),\n        nf = 1 / (near - far);\n    out[0] = -2 * lr;\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 0;\n    out[4] = 0;\n    out[5] = -2 * bt;\n    out[6] = 0;\n    out[7] = 0;\n    out[8] = 0;\n    out[9] = 0;\n    out[10] = 2 * nf;\n    out[11] = 0;\n    out[12] = (left + right) * lr;\n    out[13] = (top + bottom) * bt;\n    out[14] = (far + near) * nf;\n    out[15] = 1;\n    return out;\n};","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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 cleanTicks = require('./clean_ticks');\nvar isArrayOrTypedArray = require('../../lib').isArrayOrTypedArray;\n\nmodule.exports = function handleTickValueDefaults(containerIn, containerOut, coerce, axType) {\n    function readInput(attr) {\n        var v = containerIn[attr];\n        return (\n            v !== undefined\n        ) ? v : (containerOut._template || {})[attr];\n    }\n\n    var _tick0 = readInput('tick0');\n    var _dtick = readInput('dtick');\n    var _tickvals = readInput('tickvals');\n\n    var tickmodeDefault = isArrayOrTypedArray(_tickvals) ? 'array' :\n        _dtick ? 'linear' :\n        'auto';\n    var tickmode = coerce('tickmode', tickmodeDefault);\n\n    if(tickmode === 'auto') coerce('nticks');\n    else if(tickmode === 'linear') {\n        // dtick is usually a positive number, but there are some\n        // special strings available for log or date axes\n        // tick0 also has special logic\n        var dtick = containerOut.dtick = cleanTicks.dtick(\n            _dtick, axType);\n        containerOut.tick0 = cleanTicks.tick0(\n            _tick0, axType, containerOut.calendar, dtick);\n    } else if(axType !== 'multicategory') {\n        var tickvals = coerce('tickvals');\n        if(tickvals === undefined) containerOut.tickmode = 'auto';\n        else coerce('ticktext');\n    }\n};\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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\n/**\n * Clear responsive handlers (if any).\n *\n * @param {DOM node or object} gd : graph div object\n */\nmodule.exports = function clearResponsive(gd) {\n    if(gd._responsiveChartHandler) {\n        window.removeEventListener('resize', gd._responsiveChartHandler);\n        delete gd._responsiveChartHandler;\n    }\n};\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n  return toString.call(arr) == '[object Array]';\n};\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport { PluginStore } from 'graylog-web-plugin/plugin';\nimport URI from 'urijs';\n\nimport AppConfig from 'util/AppConfig';\nimport { extendedSearchPath, viewsPath } from 'views/Constants';\nimport { TimeRangeTypes } from 'views/logic/queries/Query';\n\ntype RoutesRelativeTimeRange = {\n  relative: number\n};\ntype RoutesAbsoluteTimeRange = {\n  from: string,\n  to: string,\n};\ntype RoutesKeywordTimeRange = {\n  keyword: string\n};\ntype RoutesTimeRange = RoutesRelativeTimeRange | RoutesAbsoluteTimeRange | RoutesKeywordTimeRange;\n\nconst Routes = {\n  STARTPAGE: '/',\n  NOTFOUND: '/notfound',\n  SEARCH: '/search',\n  STREAMS: '/streams',\n  LEGACY_ALERTS: {\n    LIST: '/legacy/alerts',\n    CONDITIONS: '/legacy/alerts/conditions',\n    NEW_CONDITION: '/legacy/alerts/conditions/new',\n    NOTIFICATIONS: '/legacy/alerts/notifications',\n    NEW_NOTIFICATION: '/legacy/alerts/notifications/new',\n  },\n  ALERTS: {\n    LIST: '/alerts',\n    DEFINITIONS: {\n      LIST: '/alerts/definitions',\n      CREATE: '/alerts/definitions/new',\n      edit: (definitionId: string) => `/alerts/definitions/${definitionId}/edit`,\n      show: (definitionId: string) => `/alerts/definitions/${definitionId}`,\n    },\n    NOTIFICATIONS: {\n      LIST: '/alerts/notifications',\n      CREATE: '/alerts/notifications/new',\n      edit: (notificationId: string) => `/alerts/notifications/${notificationId}/edit`,\n      show: (notificationId: string) => `/alerts/notifications/${notificationId}`,\n    },\n  },\n  SOURCES: '/sources',\n  DASHBOARDS: '/dashboards',\n  GETTING_STARTED: '/gettingstarted',\n  SYSTEM: {\n    CONFIGURATIONS: '/system/configurations',\n    CONTENTPACKS: {\n      LIST: '/system/contentpacks',\n      EXPORT: '/system/contentpacks/export',\n      CREATE: '/system/contentpacks/create',\n      edit: (contentPackId: string, contentPackRev: string) => { return `/system/contentpacks/${contentPackId}/${contentPackRev}/edit`; },\n      show: (contentPackId: string) => `/system/contentpacks/${contentPackId}`,\n    },\n    GROKPATTERNS: '/system/grokpatterns',\n    INDICES: {\n      LIST: '/system/indices',\n      FAILURES: '/system/indices/failures',\n    },\n    INDEX_SETS: {\n      CONFIGURATION: (indexSetId: string, from?: string) => {\n        if (from) {\n          return `/system/index_sets/${indexSetId}/configuration?from=${from}`;\n        }\n\n        return `/system/index_sets/${indexSetId}/configuration`;\n      },\n      SHOW: (indexSetId: string) => `/system/index_sets/${indexSetId}`,\n      CREATE: '/system/index_sets/create',\n    },\n    INPUTS: '/system/inputs',\n    LOGGING: '/system/logging',\n    METRICS: (nodeId: string) => `/system/metrics/node/${nodeId}`,\n    NODES: {\n      LIST: '/system/nodes',\n      SHOW: (nodeId: string) => `/system/nodes/${nodeId}`,\n    },\n    THREADDUMP: (nodeId: string) => `/system/threaddump/${nodeId}`,\n    OUTPUTS: '/system/outputs',\n    OVERVIEW: '/system/overview',\n    PROCESSBUFFERDUMP: (nodeId: string) => `/system/processbufferdump/${nodeId}`,\n    AUTHENTICATION: {\n      BACKENDS: {\n        OVERVIEW: '/system/authentication/services',\n        ACTIVE: '/system/authentication/services/active',\n        CREATE: '/system/authentication/services/create',\n        createBackend: (name) => `/system/authentication/services/create/${name}`,\n        show: (id: string) => `/system/authentication/services/${id}`,\n        edit: (id: string, initialStepKey?: string) => {\n          const editUrl = `/system/authentication/services/edit/${id}`;\n\n          if (initialStepKey) return `${editUrl}?initialStepKey=${initialStepKey}`;\n\n          return editUrl;\n        },\n      },\n      AUTHENTICATORS: {\n        SHOW: '/system/authentication/authenticator',\n        EDIT: '/system/authentication/authenticator/edit',\n      },\n    },\n    USERS: {\n      CREATE: '/system/users/new',\n      edit: (userId: string) => `/system/users/edit/${userId}`,\n      TOKENS: {\n        edit: (userId: string) => `/system/users/tokens/${userId}`,\n      },\n      OVERVIEW: '/system/users',\n      show: (userId: string) => `/system/users/${userId}`,\n    },\n    AUTHZROLES: {\n      OVERVIEW: '/system/roles',\n      show: (roleId: string) => `/system/roles/${roleId}`,\n      edit: (roleId: string) => `/system/roles/edit/${roleId}`,\n    },\n    LOOKUPTABLES: {\n      OVERVIEW: '/system/lookuptables',\n      CREATE: '/system/lookuptables/create',\n      show: (tableName: string) => `/system/lookuptables/table/${tableName}`,\n      edit: (tableName: string) => `/system/lookuptables/table/${tableName}/edit`,\n      CACHES: {\n        OVERVIEW: '/system/lookuptables/caches',\n        CREATE: '/system/lookuptables/caches/create',\n        show: (cacheName: string) => `/system/lookuptables/caches/${cacheName}`,\n        edit: (cacheName: string) => `/system/lookuptables/caches/${cacheName}/edit`,\n      },\n      DATA_ADAPTERS: {\n        OVERVIEW: '/system/lookuptables/data_adapters',\n        CREATE: '/system/lookuptables/data_adapters/create',\n        show: (adapterName: string) => `/system/lookuptables/data_adapter/${adapterName}`,\n        edit: (adapterName: string) => `/system/lookuptables/data_adapter/${adapterName}/edit`,\n      },\n    },\n    PIPELINES: {\n      OVERVIEW: '/system/pipelines',\n      PIPELINE: (pipelineId: string) => `/system/pipelines/${pipelineId}`,\n      RULES: '/system/pipelines/rules',\n      RULE: (ruleId: string) => `/system/pipelines/rules/${ruleId}`,\n      SIMULATOR: '/system/pipelines/simulate',\n    },\n    ENTERPRISE: '/system/enterprise',\n    SIDECARS: {\n      OVERVIEW: '/system/sidecars',\n      STATUS: (sidecarId: string) => `/system/sidecars/${sidecarId}/status`,\n      ADMINISTRATION: '/system/sidecars/administration',\n      CONFIGURATION: '/system/sidecars/configuration',\n      NEW_CONFIGURATION: '/system/sidecars/configuration/new',\n      EDIT_CONFIGURATION: (configurationId: string) => `/system/sidecars/configuration/edit/${configurationId}`,\n      NEW_COLLECTOR: '/system/sidecars/collector/new',\n      EDIT_COLLECTOR: (collectorId: string) => `/system/sidecars/collector/edit/${collectorId}`,\n    },\n  },\n  VIEWS: {\n    LIST: viewsPath,\n    VIEWID: (id: string) => `${viewsPath}/${id}`,\n  },\n  EXTENDEDSEARCH: extendedSearchPath,\n  search_with_query: (query: string, rangeType: TimeRangeTypes, timeRange: RoutesTimeRange) => {\n    const route = new URI(Routes.SEARCH);\n    const queryParams = {\n      q: query,\n    };\n\n    if (rangeType && timeRange) {\n      queryParams[rangeType] = timeRange;\n    }\n\n    route.query(queryParams);\n\n    return route.resource();\n  },\n  _common_search_url: (resource: string, query: string | undefined, timeRange: RoutesTimeRange | undefined, resolution: number | undefined) => {\n    const route = new URI(resource);\n    const queryParams = {\n      q: query,\n      interval: resolution,\n    };\n\n    if (timeRange) {\n      Object.keys(timeRange).forEach((key) => {\n        queryParams[key] = timeRange[key];\n      });\n    }\n\n    route.setQuery(queryParams);\n\n    return route.resource();\n  },\n  search: (query: string, timeRange: RoutesTimeRange, resolution?: number) => {\n    return Routes._common_search_url(Routes.SEARCH, query, timeRange, resolution);\n  },\n  message_show: (index: string, messageId: string) => `/messages/${index}/${messageId}`,\n  stream_edit: (streamId: string) => `/streams/${streamId}/edit`,\n  stream_edit_example: (streamId: string, index: string, messageId: string) => `${Routes.stream_edit(streamId)}?index=${index}&message_id=${messageId}`,\n  stream_outputs: (streamId: string) => `/streams/${streamId}/outputs`,\n  stream_search: (streamId: string, query?: string, timeRange?: RoutesTimeRange, resolution?: number) => {\n    return Routes._common_search_url(`${Routes.STREAMS}/${streamId}/search`, query, timeRange, resolution);\n  },\n  stream_alerts: (streamId: string) => `/alerts/?stream_id=${streamId}`,\n\n  legacy_stream_search: (streamId: string) => `/streams/${streamId}/messages`,\n  show_alert: (alertId: string) => `${Routes.LEGACY_ALERTS.LIST}/${alertId}`,\n  show_alert_condition: (streamId: string, conditionId: string) => `${Routes.LEGACY_ALERTS.CONDITIONS}/${streamId}/${conditionId}`,\n  new_alert_condition_for_stream: (streamId: string) => `${Routes.LEGACY_ALERTS.NEW_CONDITION}?stream_id=${streamId}`,\n  new_alert_notification_for_stream: (streamId: string) => `${Routes.LEGACY_ALERTS.NEW_NOTIFICATION}?stream_id=${streamId}`,\n\n  dashboard_show: (dashboardId: string) => `/dashboards/${dashboardId}`,\n\n  node: (nodeId: string) => `/system/nodes/${nodeId}`,\n\n  node_inputs: (nodeId: string) => `${Routes.SYSTEM.INPUTS}/${nodeId}`,\n  global_input_extractors: (inputId: string) => `/system/inputs/${inputId}/extractors`,\n  local_input_extractors: (nodeId: string, inputId: string) => `/system/inputs/${nodeId}/${inputId}/extractors`,\n  export_extractors: (nodeId: string, inputId: string) => `${Routes.local_input_extractors(nodeId, inputId)}/export`,\n  import_extractors: (nodeId: string, inputId: string) => `${Routes.local_input_extractors(nodeId, inputId)}/import`,\n  new_extractor: (nodeId: string, inputId: string, extractorType?: string, fieldName?: string, index?: string, messageId?: string) => {\n    const route = new URI(`/system/inputs/${nodeId}/${inputId}/extractors/new`);\n    const queryParams = {\n      extractor_type: extractorType,\n      field: fieldName,\n      example_index: index,\n      example_id: messageId,\n    };\n\n    route.search(queryParams);\n\n    return route.resource();\n  },\n  edit_extractor: (nodeId: string, inputId: string, extractorId: string) => `/system/inputs/${nodeId}/${inputId}/extractors/${extractorId}/edit`,\n\n  edit_input_extractor: (nodeId: string, inputId: string, extractorId: string) => `/system/inputs/${nodeId}/${inputId}/extractors/${extractorId}/edit`,\n  getting_started: (fromMenu) => `${Routes.GETTING_STARTED}?menu=${fromMenu}`,\n  filtered_metrics: (nodeId: string, filter: string) => `${Routes.SYSTEM.METRICS(nodeId)}?filter=${filter}`,\n} as const;\n\nconst qualifyUrls = (routes, appPrefix): typeof routes => {\n  const qualifiedRoutes = {};\n\n  Object.keys(routes).forEach((routeName) => {\n    switch (typeof routes[routeName]) {\n      case 'string':\n        qualifiedRoutes[routeName] = new URI(`${appPrefix}/${routes[routeName]}`).normalizePath().resource();\n        break;\n      case 'function':\n        qualifiedRoutes[routeName] = (...params) => {\n          const result = routes[routeName](...params);\n\n          return new URI(`${appPrefix}/${result}`).normalizePath().resource();\n        };\n\n        break;\n      case 'object':\n        qualifiedRoutes[routeName] = qualifyUrls(routes[routeName], appPrefix);\n        break;\n      default:\n        break;\n    }\n  });\n\n  return qualifiedRoutes;\n};\n\nconst qualifiedRoutes: typeof Routes = AppConfig.gl2AppPathPrefix() ? qualifyUrls(Routes, AppConfig.gl2AppPathPrefix()) : Routes;\n\nconst unqualified = Routes;\n\n/*\n * Global registry of plugin routes. Route names are generated automatically from the route path, by removing\n * any colons, replacing slashes with underscores, and making the string uppercase. Below there is an example of how\n * to access the routes.\n *\n * Plugin register example:\n * routes: [\n *           { path: '/system/pipelines', component: Foo },\n *           { path: '/system/pipelines/:pipelineId', component: Bar },\n * ]\n *\n * Using routes on plugin components:\n * ...\n * ...\n *\n */\nconst pluginRoute = (routeKey, throwError = true) => {\n  const pluginRoutes = {};\n\n  PluginStore.exports('routes').forEach((route) => {\n    const uri = new URI(route.path);\n    const segments = uri.segment();\n    const key = segments.map((segment) => segment.replace(':', '')).join('_').toUpperCase();\n    const paramNames = segments.filter((segment) => segment.startsWith(':'));\n\n    if (paramNames.length > 0) {\n      pluginRoutes[key] = (...paramValues) => {\n        paramNames.forEach((param, idx) => {\n          const value = String(paramValues[idx]);\n\n          uri.segment(segments.indexOf(param), value);\n        });\n\n        return uri.pathname();\n      };\n\n      return;\n    }\n\n    pluginRoutes[key] = route.path;\n  });\n\n  const route = (AppConfig.gl2AppPathPrefix() ? qualifyUrls(pluginRoutes, AppConfig.gl2AppPathPrefix()) : pluginRoutes)[routeKey];\n\n  if (!route && throwError) {\n    throw new Error(`Could not find plugin route '${routeKey}'.`);\n  }\n\n  return route;\n};\n\nconst getPluginRoute = (routeKey) => pluginRoute(routeKey, false);\n\nconst defaultExport = Object.assign(qualifiedRoutes, { pluginRoute, getPluginRoute, unqualified });\n\nexport default defaultExport;\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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 tinycolor = require('tinycolor2');\nvar isNumeric = require('fast-isnumeric');\n\nvar color = module.exports = {};\n\nvar colorAttrs = require('./attributes');\ncolor.defaults = colorAttrs.defaults;\nvar defaultLine = color.defaultLine = colorAttrs.defaultLine;\ncolor.lightLine = colorAttrs.lightLine;\nvar background = color.background = colorAttrs.background;\n\n/*\n * tinyRGB: turn a tinycolor into an rgb string, but\n * unlike the built-in tinycolor.toRgbString this never includes alpha\n */\ncolor.tinyRGB = function(tc) {\n    var c = tc.toRgb();\n    return 'rgb(' + Math.round(c.r) + ', ' +\n        Math.round(c.g) + ', ' + Math.round(c.b) + ')';\n};\n\ncolor.rgb = function(cstr) { return color.tinyRGB(tinycolor(cstr)); };\n\ncolor.opacity = function(cstr) { return cstr ? tinycolor(cstr).getAlpha() : 0; };\n\ncolor.addOpacity = function(cstr, op) {\n    var c = tinycolor(cstr).toRgb();\n    return 'rgba(' + Math.round(c.r) + ', ' +\n        Math.round(c.g) + ', ' + Math.round(c.b) + ', ' + op + ')';\n};\n\n// combine two colors into one apparent color\n// if back has transparency or is missing,\n// color.background is assumed behind it\ncolor.combine = function(front, back) {\n    var fc = tinycolor(front).toRgb();\n    if(fc.a === 1) return tinycolor(front).toRgbString();\n\n    var bc = tinycolor(back || background).toRgb();\n    var bcflat = bc.a === 1 ? bc : {\n        r: 255 * (1 - bc.a) + bc.r * bc.a,\n        g: 255 * (1 - bc.a) + bc.g * bc.a,\n        b: 255 * (1 - bc.a) + bc.b * bc.a\n    };\n    var fcflat = {\n        r: bcflat.r * (1 - fc.a) + fc.r * fc.a,\n        g: bcflat.g * (1 - fc.a) + fc.g * fc.a,\n        b: bcflat.b * (1 - fc.a) + fc.b * fc.a\n    };\n    return tinycolor(fcflat).toRgbString();\n};\n\n/*\n * Create a color that contrasts with cstr.\n *\n * If cstr is a dark color, we lighten it; if it's light, we darken.\n *\n * If lightAmount / darkAmount are used, we adjust by these percentages,\n * otherwise we go all the way to white or black.\n */\ncolor.contrast = function(cstr, lightAmount, darkAmount) {\n    var tc = tinycolor(cstr);\n\n    if(tc.getAlpha() !== 1) tc = tinycolor(color.combine(cstr, background));\n\n    var newColor = tc.isDark() ?\n        (lightAmount ? tc.lighten(lightAmount) : background) :\n        (darkAmount ? tc.darken(darkAmount) : defaultLine);\n\n    return newColor.toString();\n};\n\ncolor.stroke = function(s, c) {\n    var tc = tinycolor(c);\n    s.style({'stroke': color.tinyRGB(tc), 'stroke-opacity': tc.getAlpha()});\n};\n\ncolor.fill = function(s, c) {\n    var tc = tinycolor(c);\n    s.style({\n        'fill': color.tinyRGB(tc),\n        'fill-opacity': tc.getAlpha()\n    });\n};\n\n// search container for colors with the deprecated rgb(fractions) format\n// and convert them to rgb(0-255 values)\ncolor.clean = function(container) {\n    if(!container || typeof container !== 'object') return;\n\n    var keys = Object.keys(container);\n    var i, j, key, val;\n\n    for(i = 0; i < keys.length; i++) {\n        key = keys[i];\n        val = container[key];\n\n        if(key.substr(key.length - 5) === 'color') {\n            // only sanitize keys that end in \"color\" or \"colorscale\"\n\n            if(Array.isArray(val)) {\n                for(j = 0; j < val.length; j++) val[j] = cleanOne(val[j]);\n            } else container[key] = cleanOne(val);\n        } else if(key.substr(key.length - 10) === 'colorscale' && Array.isArray(val)) {\n            // colorscales have the format [[0, color1], [frac, color2], ... [1, colorN]]\n\n            for(j = 0; j < val.length; j++) {\n                if(Array.isArray(val[j])) val[j][1] = cleanOne(val[j][1]);\n            }\n        } else if(Array.isArray(val)) {\n            // recurse into arrays of objects, and plain objects\n\n            var el0 = val[0];\n            if(!Array.isArray(el0) && el0 && typeof el0 === 'object') {\n                for(j = 0; j < val.length; j++) color.clean(val[j]);\n            }\n        } else if(val && typeof val === 'object') color.clean(val);\n    }\n};\n\nfunction cleanOne(val) {\n    if(isNumeric(val) || typeof val !== 'string') return val;\n\n    var valTrim = val.trim();\n    if(valTrim.substr(0, 3) !== 'rgb') return val;\n\n    var match = valTrim.match(/^rgba?\\s*\\(([^()]*)\\)$/);\n    if(!match) return val;\n\n    var parts = match[1].trim().split(/\\s*[\\s,]\\s*/);\n    var rgba = valTrim.charAt(3) === 'a' && parts.length === 4;\n    if(!rgba && parts.length !== 3) return val;\n\n    for(var i = 0; i < parts.length; i++) {\n        if(!parts[i].length) return val;\n        parts[i] = Number(parts[i]);\n\n        if(!(parts[i] >= 0)) {\n            // all parts must be non-negative numbers\n\n            return val;\n        }\n\n        if(i === 3) {\n            // alpha>1 gets clipped to 1\n\n            if(parts[i] > 1) parts[i] = 1;\n        } else if(parts[i] >= 1) {\n            // r, g, b must be < 1 (ie 1 itself is not allowed)\n\n            return val;\n        }\n    }\n\n    var rgbStr = Math.round(parts[0] * 255) + ', ' +\n        Math.round(parts[1] * 255) + ', ' +\n        Math.round(parts[2] * 255);\n\n    if(rgba) return 'rgba(' + rgbStr + ', ' + parts[3] + ')';\n    return 'rgb(' + rgbStr + ')';\n}\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport moment from 'moment';\n\nimport MessageFieldsFilter from 'logic/message/MessageFieldsFilter';\n\nconst MessageFormatter = {\n  formatMessageSummary(messageSummary) {\n    const { message } = messageSummary;\n\n    return this.formatMessage(message._id, messageSummary.index, message, message, messageSummary.highlight_ranges, messageSummary.decoration_stats);\n  },\n\n  formatResultMessage(resultMessage) {\n    const { message } = resultMessage;\n\n    return this.formatMessage(message.id, resultMessage.index, message, message.fields, resultMessage.highlight_ranges, resultMessage.decoration_stats);\n  },\n\n  formatMessage(id, index, message, fields, highlightRanges, decorationStats) {\n    const filteredFields = MessageFieldsFilter.filterFields(fields);\n\n    return {\n      id: id,\n      timestamp: moment(message.timestamp).unix(),\n      filtered_fields: filteredFields,\n      formatted_fields: filteredFields,\n      fields: fields,\n      index: index,\n      source_node_id: fields.gl2_source_node,\n      source_input_id: fields.gl2_source_input,\n      stream_ids: message.streams,\n      highlight_ranges: highlightRanges,\n      decoration_stats: decorationStats,\n    };\n  },\n};\n\nexport default MessageFormatter;\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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 d3 = require('d3');\nvar utcFormat = require('d3-time-format').utcFormat;\nvar isNumeric = require('fast-isnumeric');\n\nvar numConstants = require('../constants/numerical');\nvar FP_SAFE = numConstants.FP_SAFE;\nvar BADNUM = numConstants.BADNUM;\n\nvar lib = module.exports = {};\n\nlib.nestedProperty = require('./nested_property');\nlib.keyedContainer = require('./keyed_container');\nlib.relativeAttr = require('./relative_attr');\nlib.isPlainObject = require('./is_plain_object');\nlib.toLogRange = require('./to_log_range');\nlib.relinkPrivateKeys = require('./relink_private');\n\nvar arrayModule = require('./array');\nlib.isTypedArray = arrayModule.isTypedArray;\nlib.isArrayOrTypedArray = arrayModule.isArrayOrTypedArray;\nlib.isArray1D = arrayModule.isArray1D;\nlib.ensureArray = arrayModule.ensureArray;\nlib.concat = arrayModule.concat;\nlib.maxRowLength = arrayModule.maxRowLength;\nlib.minRowLength = arrayModule.minRowLength;\n\nvar modModule = require('./mod');\nlib.mod = modModule.mod;\nlib.modHalf = modModule.modHalf;\n\nvar coerceModule = require('./coerce');\nlib.valObjectMeta = coerceModule.valObjectMeta;\nlib.coerce = coerceModule.coerce;\nlib.coerce2 = coerceModule.coerce2;\nlib.coerceFont = coerceModule.coerceFont;\nlib.coerceHoverinfo = coerceModule.coerceHoverinfo;\nlib.coerceSelectionMarkerOpacity = coerceModule.coerceSelectionMarkerOpacity;\nlib.validate = coerceModule.validate;\n\nvar datesModule = require('./dates');\nlib.dateTime2ms = datesModule.dateTime2ms;\nlib.isDateTime = datesModule.isDateTime;\nlib.ms2DateTime = datesModule.ms2DateTime;\nlib.ms2DateTimeLocal = datesModule.ms2DateTimeLocal;\nlib.cleanDate = datesModule.cleanDate;\nlib.isJSDate = datesModule.isJSDate;\nlib.formatDate = datesModule.formatDate;\nlib.incrementMonth = datesModule.incrementMonth;\nlib.dateTick0 = datesModule.dateTick0;\nlib.dfltRange = datesModule.dfltRange;\nlib.findExactDates = datesModule.findExactDates;\nlib.MIN_MS = datesModule.MIN_MS;\nlib.MAX_MS = datesModule.MAX_MS;\n\nvar searchModule = require('./search');\nlib.findBin = searchModule.findBin;\nlib.sorterAsc = searchModule.sorterAsc;\nlib.sorterDes = searchModule.sorterDes;\nlib.distinctVals = searchModule.distinctVals;\nlib.roundUp = searchModule.roundUp;\nlib.sort = searchModule.sort;\nlib.findIndexOfMin = searchModule.findIndexOfMin;\n\nvar statsModule = require('./stats');\nlib.aggNums = statsModule.aggNums;\nlib.len = statsModule.len;\nlib.mean = statsModule.mean;\nlib.median = statsModule.median;\nlib.midRange = statsModule.midRange;\nlib.variance = statsModule.variance;\nlib.stdev = statsModule.stdev;\nlib.interp = statsModule.interp;\n\nvar matrixModule = require('./matrix');\nlib.init2dArray = matrixModule.init2dArray;\nlib.transposeRagged = matrixModule.transposeRagged;\nlib.dot = matrixModule.dot;\nlib.translationMatrix = matrixModule.translationMatrix;\nlib.rotationMatrix = matrixModule.rotationMatrix;\nlib.rotationXYMatrix = matrixModule.rotationXYMatrix;\nlib.apply3DTransform = matrixModule.apply3DTransform;\nlib.apply2DTransform = matrixModule.apply2DTransform;\nlib.apply2DTransform2 = matrixModule.apply2DTransform2;\nlib.convertCssMatrix = matrixModule.convertCssMatrix;\nlib.inverseTransformMatrix = matrixModule.inverseTransformMatrix;\n\nvar anglesModule = require('./angles');\nlib.deg2rad = anglesModule.deg2rad;\nlib.rad2deg = anglesModule.rad2deg;\nlib.angleDelta = anglesModule.angleDelta;\nlib.angleDist = anglesModule.angleDist;\nlib.isFullCircle = anglesModule.isFullCircle;\nlib.isAngleInsideSector = anglesModule.isAngleInsideSector;\nlib.isPtInsideSector = anglesModule.isPtInsideSector;\nlib.pathArc = anglesModule.pathArc;\nlib.pathSector = anglesModule.pathSector;\nlib.pathAnnulus = anglesModule.pathAnnulus;\n\nvar anchorUtils = require('./anchor_utils');\nlib.isLeftAnchor = anchorUtils.isLeftAnchor;\nlib.isCenterAnchor = anchorUtils.isCenterAnchor;\nlib.isRightAnchor = anchorUtils.isRightAnchor;\nlib.isTopAnchor = anchorUtils.isTopAnchor;\nlib.isMiddleAnchor = anchorUtils.isMiddleAnchor;\nlib.isBottomAnchor = anchorUtils.isBottomAnchor;\n\nvar geom2dModule = require('./geometry2d');\nlib.segmentsIntersect = geom2dModule.segmentsIntersect;\nlib.segmentDistance = geom2dModule.segmentDistance;\nlib.getTextLocation = geom2dModule.getTextLocation;\nlib.clearLocationCache = geom2dModule.clearLocationCache;\nlib.getVisibleSegment = geom2dModule.getVisibleSegment;\nlib.findPointOnPath = geom2dModule.findPointOnPath;\n\nvar extendModule = require('./extend');\nlib.extendFlat = extendModule.extendFlat;\nlib.extendDeep = extendModule.extendDeep;\nlib.extendDeepAll = extendModule.extendDeepAll;\nlib.extendDeepNoArrays = extendModule.extendDeepNoArrays;\n\nvar loggersModule = require('./loggers');\nlib.log = loggersModule.log;\nlib.warn = loggersModule.warn;\nlib.error = loggersModule.error;\n\nvar regexModule = require('./regex');\nlib.counterRegex = regexModule.counter;\n\nvar throttleModule = require('./throttle');\nlib.throttle = throttleModule.throttle;\nlib.throttleDone = throttleModule.done;\nlib.clearThrottle = throttleModule.clear;\n\nvar domModule = require('./dom');\nlib.getGraphDiv = domModule.getGraphDiv;\nlib.isPlotDiv = domModule.isPlotDiv;\nlib.removeElement = domModule.removeElement;\nlib.addStyleRule = domModule.addStyleRule;\nlib.addRelatedStyleRule = domModule.addRelatedStyleRule;\nlib.deleteRelatedStyleRule = domModule.deleteRelatedStyleRule;\nlib.getFullTransformMatrix = domModule.getFullTransformMatrix;\nlib.getElementTransformMatrix = domModule.getElementTransformMatrix;\nlib.getElementAndAncestors = domModule.getElementAndAncestors;\nlib.equalDomRects = domModule.equalDomRects;\n\nlib.clearResponsive = require('./clear_responsive');\nlib.preserveDrawingBuffer = require('./preserve_drawing_buffer');\n\nlib.makeTraceGroups = require('./make_trace_groups');\n\nlib._ = require('./localize');\n\nlib.notifier = require('./notifier');\n\nlib.filterUnique = require('./filter_unique');\nlib.filterVisible = require('./filter_visible');\nlib.pushUnique = require('./push_unique');\n\nlib.increment = require('./increment');\n\nlib.cleanNumber = require('./clean_number');\n\nlib.ensureNumber = function ensureNumber(v) {\n    if(!isNumeric(v)) return BADNUM;\n    v = Number(v);\n    if(v < -FP_SAFE || v > FP_SAFE) return BADNUM;\n    return isNumeric(v) ? Number(v) : BADNUM;\n};\n\n/**\n * Is v a valid array index? Accepts numeric strings as well as numbers.\n *\n * @param {any} v: the value to test\n * @param {Optional[integer]} len: the array length we are indexing\n *\n * @return {bool}: v is a valid array index\n */\nlib.isIndex = function(v, len) {\n    if(len !== undefined && v >= len) return false;\n    return isNumeric(v) && (v >= 0) && (v % 1 === 0);\n};\n\nlib.noop = require('./noop');\nlib.identity = require('./identity');\n\n/**\n * create an array of length 'cnt' filled with 'v' at all indices\n *\n * @param {any} v\n * @param {number} cnt\n * @return {array}\n */\nlib.repeat = function(v, cnt) {\n    var out = new Array(cnt);\n    for(var i = 0; i < cnt; i++) {\n        out[i] = v;\n    }\n    return out;\n};\n\n/**\n * swap x and y of the same attribute in container cont\n * specify attr with a ? in place of x/y\n * you can also swap other things than x/y by providing part1 and part2\n */\nlib.swapAttrs = function(cont, attrList, part1, part2) {\n    if(!part1) part1 = 'x';\n    if(!part2) part2 = 'y';\n    for(var i = 0; i < attrList.length; i++) {\n        var attr = attrList[i];\n        var xp = lib.nestedProperty(cont, attr.replace('?', part1));\n        var yp = lib.nestedProperty(cont, attr.replace('?', part2));\n        var temp = xp.get();\n        xp.set(yp.get());\n        yp.set(temp);\n    }\n};\n\n/**\n * SVG painter's algo worked around with reinsertion\n */\nlib.raiseToTop = function raiseToTop(elem) {\n    elem.parentNode.appendChild(elem);\n};\n\n/**\n * cancel a possibly pending transition; returned selection may be used by caller\n */\nlib.cancelTransition = function(selection) {\n    return selection.transition().duration(0);\n};\n\n// constrain - restrict a number v to be between v0 and v1\nlib.constrain = function(v, v0, v1) {\n    if(v0 > v1) return Math.max(v1, Math.min(v0, v));\n    return Math.max(v0, Math.min(v1, v));\n};\n\n/**\n * do two bounding boxes from getBoundingClientRect,\n * ie {left,right,top,bottom,width,height}, overlap?\n * takes optional padding pixels\n */\nlib.bBoxIntersect = function(a, b, pad) {\n    pad = pad || 0;\n    return (a.left <= b.right + pad &&\n            b.left <= a.right + pad &&\n            a.top <= b.bottom + pad &&\n            b.top <= a.bottom + pad);\n};\n\n/*\n * simpleMap: alternative to Array.map that only\n * passes on the element and up to 2 extra args you\n * provide (but not the array index or the whole array)\n *\n * array: the array to map it to\n * func: the function to apply\n * x1, x2: optional extra args\n */\nlib.simpleMap = function(array, func, x1, x2, opts) {\n    var len = array.length;\n    var out = new Array(len);\n    for(var i = 0; i < len; i++) out[i] = func(array[i], x1, x2, opts);\n    return out;\n};\n\n/**\n * Random string generator\n *\n * @param {object} existing\n *     pass in strings to avoid as keys with truthy values\n * @param {int} bits\n *     bits of information in the output string, default 24\n * @param {int} base\n *     base of string representation, default 16. Should be a power of 2.\n */\nlib.randstr = function randstr(existing, bits, base, _recursion) {\n    if(!base) base = 16;\n    if(bits === undefined) bits = 24;\n    if(bits <= 0) return '0';\n\n    var digits = Math.log(Math.pow(2, bits)) / Math.log(base);\n    var res = '';\n    var i, b, x;\n\n    for(i = 2; digits === Infinity; i *= 2) {\n        digits = Math.log(Math.pow(2, bits / i)) / Math.log(base) * i;\n    }\n\n    var rem = digits - Math.floor(digits);\n\n    for(i = 0; i < Math.floor(digits); i++) {\n        x = Math.floor(Math.random() * base).toString(base);\n        res = x + res;\n    }\n\n    if(rem) {\n        b = Math.pow(base, rem);\n        x = Math.floor(Math.random() * b).toString(base);\n        res = x + res;\n    }\n\n    var parsed = parseInt(res, base);\n    if((existing && existing[res]) ||\n         (parsed !== Infinity && parsed >= Math.pow(2, bits))) {\n        if(_recursion > 10) {\n            lib.warn('randstr failed uniqueness');\n            return res;\n        }\n        return randstr(existing, bits, base, (_recursion || 0) + 1);\n    } else return res;\n};\n\nlib.OptionControl = function(opt, optname) {\n    /*\n     * An environment to contain all option setters and\n     * getters that collectively modify opts.\n     *\n     * You can call up opts from any function in new object\n     * as this.optname || this.opt\n     *\n     * See FitOpts for example of usage\n     */\n    if(!opt) opt = {};\n    if(!optname) optname = 'opt';\n\n    var self = {};\n    self.optionList = [];\n\n    self._newoption = function(optObj) {\n        optObj[optname] = opt;\n        self[optObj.name] = optObj;\n        self.optionList.push(optObj);\n    };\n\n    self['_' + optname] = opt;\n    return self;\n};\n\n/**\n * lib.smooth: smooth arrayIn by convolving with\n * a hann window with given full width at half max\n * bounce the ends in, so the output has the same length as the input\n */\nlib.smooth = function(arrayIn, FWHM) {\n    FWHM = Math.round(FWHM) || 0; // only makes sense for integers\n    if(FWHM < 2) return arrayIn;\n\n    var alen = arrayIn.length;\n    var alen2 = 2 * alen;\n    var wlen = 2 * FWHM - 1;\n    var w = new Array(wlen);\n    var arrayOut = new Array(alen);\n    var i;\n    var j;\n    var k;\n    var v;\n\n    // first make the window array\n    for(i = 0; i < wlen; i++) {\n        w[i] = (1 - Math.cos(Math.PI * (i + 1) / FWHM)) / (2 * FWHM);\n    }\n\n    // now do the convolution\n    for(i = 0; i < alen; i++) {\n        v = 0;\n        for(j = 0; j < wlen; j++) {\n            k = i + j + 1 - FWHM;\n\n            // multibounce\n            if(k < -alen) k -= alen2 * Math.round(k / alen2);\n            else if(k >= alen2) k -= alen2 * Math.floor(k / alen2);\n\n            // single bounce\n            if(k < 0) k = - 1 - k;\n            else if(k >= alen) k = alen2 - 1 - k;\n\n            v += arrayIn[k] * w[j];\n        }\n        arrayOut[i] = v;\n    }\n\n    return arrayOut;\n};\n\n/**\n * syncOrAsync: run a sequence of functions synchronously\n * as long as its returns are not promises (ie have no .then)\n * includes one argument arg to send to all functions...\n * this is mainly just to prevent us having to make wrapper functions\n * when the only purpose of the wrapper is to reference gd\n * and a final step to be executed at the end\n * TODO: if there's an error and everything is sync,\n * this doesn't happen yet because we want to make sure\n * that it gets reported\n */\nlib.syncOrAsync = function(sequence, arg, finalStep) {\n    var ret, fni;\n\n    function continueAsync() {\n        return lib.syncOrAsync(sequence, arg, finalStep);\n    }\n\n    while(sequence.length) {\n        fni = sequence.splice(0, 1)[0];\n        ret = fni(arg);\n\n        if(ret && ret.then) {\n            return ret.then(continueAsync)\n                .then(undefined, lib.promiseError);\n        }\n    }\n\n    return finalStep && finalStep(arg);\n};\n\n\n/**\n * Helper to strip trailing slash, from\n * http://stackoverflow.com/questions/6680825/return-string-without-trailing-slash\n */\nlib.stripTrailingSlash = function(str) {\n    if(str.substr(-1) === '/') return str.substr(0, str.length - 1);\n    return str;\n};\n\nlib.noneOrAll = function(containerIn, containerOut, attrList) {\n    /**\n     * some attributes come together, so if you have one of them\n     * in the input, you should copy the default values of the others\n     * to the input as well.\n     */\n    if(!containerIn) return;\n\n    var hasAny = false;\n    var hasAll = true;\n    var i;\n    var val;\n\n    for(i = 0; i < attrList.length; i++) {\n        val = containerIn[attrList[i]];\n        if(val !== undefined && val !== null) hasAny = true;\n        else hasAll = false;\n    }\n\n    if(hasAny && !hasAll) {\n        for(i = 0; i < attrList.length; i++) {\n            containerIn[attrList[i]] = containerOut[attrList[i]];\n        }\n    }\n};\n\n/** merges calcdata field (given by cdAttr) with traceAttr values\n *\n * N.B. Loop over minimum of cd.length and traceAttr.length\n * i.e. it does not try to fill in beyond traceAttr.length-1\n *\n * @param {array} traceAttr : trace attribute\n * @param {object} cd : calcdata trace\n * @param {string} cdAttr : calcdata key\n */\nlib.mergeArray = function(traceAttr, cd, cdAttr, fn) {\n    var hasFn = typeof fn === 'function';\n    if(lib.isArrayOrTypedArray(traceAttr)) {\n        var imax = Math.min(traceAttr.length, cd.length);\n        for(var i = 0; i < imax; i++) {\n            var v = traceAttr[i];\n            cd[i][cdAttr] = hasFn ? fn(v) : v;\n        }\n    }\n};\n\n// cast numbers to positive numbers, returns 0 if not greater than 0\nlib.mergeArrayCastPositive = function(traceAttr, cd, cdAttr) {\n    return lib.mergeArray(traceAttr, cd, cdAttr, function(v) {\n        var w = +v;\n        return !isFinite(w) ? 0 : w > 0 ? w : 0;\n    });\n};\n\n/** fills calcdata field (given by cdAttr) with traceAttr values\n *  or function of traceAttr values (e.g. some fallback)\n *\n * N.B. Loops over all cd items.\n *\n * @param {array} traceAttr : trace attribute\n * @param {object} cd : calcdata trace\n * @param {string} cdAttr : calcdata key\n * @param {function} [fn] : optional function to apply to each array item\n */\nlib.fillArray = function(traceAttr, cd, cdAttr, fn) {\n    fn = fn || lib.identity;\n\n    if(lib.isArrayOrTypedArray(traceAttr)) {\n        for(var i = 0; i < cd.length; i++) {\n            cd[i][cdAttr] = fn(traceAttr[i]);\n        }\n    }\n};\n\n/** Handler for trace-wide vs per-point options\n *\n * @param {object} trace : (full) trace object\n * @param {number} ptNumber : index of the point in question\n * @param {string} astr : attribute string\n * @param {function} [fn] : optional function to apply to each array item\n *\n * @return {any}\n */\nlib.castOption = function(trace, ptNumber, astr, fn) {\n    fn = fn || lib.identity;\n\n    var val = lib.nestedProperty(trace, astr).get();\n\n    if(lib.isArrayOrTypedArray(val)) {\n        if(Array.isArray(ptNumber) && lib.isArrayOrTypedArray(val[ptNumber[0]])) {\n            return fn(val[ptNumber[0]][ptNumber[1]]);\n        } else {\n            return fn(val[ptNumber]);\n        }\n    } else {\n        return val;\n    }\n};\n\n/** Extract option from calcdata item, correctly falling back to\n *  trace value if not found.\n *\n *  @param {object} calcPt : calcdata[i][j] item\n *  @param {object} trace : (full) trace object\n *  @param {string} calcKey : calcdata key\n *  @param {string} traceKey : aka trace attribute string\n *  @return {any}\n */\nlib.extractOption = function(calcPt, trace, calcKey, traceKey) {\n    if(calcKey in calcPt) return calcPt[calcKey];\n\n    // fallback to trace value,\n    //   must check if value isn't itself an array\n    //   which means the trace attribute has a corresponding\n    //   calcdata key, but its value is falsy\n    var traceVal = lib.nestedProperty(trace, traceKey).get();\n    if(!Array.isArray(traceVal)) return traceVal;\n};\n\nfunction makePtIndex2PtNumber(indexToPoints) {\n    var ptIndex2ptNumber = {};\n    for(var k in indexToPoints) {\n        var pts = indexToPoints[k];\n        for(var j = 0; j < pts.length; j++) {\n            ptIndex2ptNumber[pts[j]] = +k;\n        }\n    }\n    return ptIndex2ptNumber;\n}\n\n/** Tag selected calcdata items\n *\n * N.B. note that point 'index' corresponds to input data array index\n *  whereas 'number' is its post-transform version.\n *\n * @param {array} calcTrace\n * @param {object} trace\n *  - selectedpoints {array}\n *  - _indexToPoints {object}\n * @param {ptNumber2cdIndex} ptNumber2cdIndex (optional)\n *  optional map object for trace types that do not have 1-to-1 point number to\n *  calcdata item index correspondence (e.g. histogram)\n */\nlib.tagSelected = function(calcTrace, trace, ptNumber2cdIndex) {\n    var selectedpoints = trace.selectedpoints;\n    var indexToPoints = trace._indexToPoints;\n    var ptIndex2ptNumber;\n\n    // make pt index-to-number map object, which takes care of transformed traces\n    if(indexToPoints) {\n        ptIndex2ptNumber = makePtIndex2PtNumber(indexToPoints);\n    }\n\n    function isCdIndexValid(v) {\n        return v !== undefined && v < calcTrace.length;\n    }\n\n    for(var i = 0; i < selectedpoints.length; i++) {\n        var ptIndex = selectedpoints[i];\n\n        if(lib.isIndex(ptIndex) ||\n           (lib.isArrayOrTypedArray(ptIndex) && lib.isIndex(ptIndex[0]) && lib.isIndex(ptIndex[1]))\n        ) {\n            var ptNumber = ptIndex2ptNumber ? ptIndex2ptNumber[ptIndex] : ptIndex;\n            var cdIndex = ptNumber2cdIndex ? ptNumber2cdIndex[ptNumber] : ptNumber;\n\n            if(isCdIndexValid(cdIndex)) {\n                calcTrace[cdIndex].selected = 1;\n            }\n        }\n    }\n};\n\nlib.selIndices2selPoints = function(trace) {\n    var selectedpoints = trace.selectedpoints;\n    var indexToPoints = trace._indexToPoints;\n\n    if(indexToPoints) {\n        var ptIndex2ptNumber = makePtIndex2PtNumber(indexToPoints);\n        var out = [];\n\n        for(var i = 0; i < selectedpoints.length; i++) {\n            var ptIndex = selectedpoints[i];\n            if(lib.isIndex(ptIndex)) {\n                var ptNumber = ptIndex2ptNumber[ptIndex];\n                if(lib.isIndex(ptNumber)) {\n                    out.push(ptNumber);\n                }\n            }\n        }\n\n        return out;\n    } else {\n        return selectedpoints;\n    }\n};\n\n/** Returns target as set by 'target' transform attribute\n *\n * @param {object} trace : full trace object\n * @param {object} transformOpts : transform option object\n *  - target (string} :\n *      either an attribute string referencing an array in the trace object, or\n *      a set array.\n *\n * @return {array or false} : the target array (NOT a copy!!) or false if invalid\n */\nlib.getTargetArray = function(trace, transformOpts) {\n    var target = transformOpts.target;\n\n    if(typeof target === 'string' && target) {\n        var array = lib.nestedProperty(trace, target).get();\n        return Array.isArray(array) ? array : false;\n    } else if(Array.isArray(target)) {\n        return target;\n    }\n\n    return false;\n};\n\n/**\n * modified version of jQuery's extend to strip out private objs and functions,\n * and cut arrays down to first  or 1 elements\n * because extend-like algorithms are hella slow\n * obj2 is assumed to already be clean of these things (including no arrays)\n */\nlib.minExtend = function(obj1, obj2) {\n    var objOut = {};\n    if(typeof obj2 !== 'object') obj2 = {};\n    var arrayLen = 3;\n    var keys = Object.keys(obj1);\n    var i, k, v;\n\n    for(i = 0; i < keys.length; i++) {\n        k = keys[i];\n        v = obj1[k];\n        if(k.charAt(0) === '_' || typeof v === 'function') continue;\n        else if(k === 'module') objOut[k] = v;\n        else if(Array.isArray(v)) {\n            if(k === 'colorscale') {\n                objOut[k] = v.slice();\n            } else {\n                objOut[k] = v.slice(0, arrayLen);\n            }\n        } else if(lib.isTypedArray(v)) {\n            objOut[k] = v.subarray(0, arrayLen);\n        } else if(v && (typeof v === 'object')) objOut[k] = lib.minExtend(obj1[k], obj2[k]);\n        else objOut[k] = v;\n    }\n\n    keys = Object.keys(obj2);\n    for(i = 0; i < keys.length; i++) {\n        k = keys[i];\n        v = obj2[k];\n        if(typeof v !== 'object' || !(k in objOut) || typeof objOut[k] !== 'object') {\n            objOut[k] = v;\n        }\n    }\n\n    return objOut;\n};\n\nlib.titleCase = function(s) {\n    return s.charAt(0).toUpperCase() + s.substr(1);\n};\n\nlib.containsAny = function(s, fragments) {\n    for(var i = 0; i < fragments.length; i++) {\n        if(s.indexOf(fragments[i]) !== -1) return true;\n    }\n    return false;\n};\n\nlib.isIE = function() {\n    return typeof window.navigator.msSaveBlob !== 'undefined';\n};\n\nvar IS_IE9_OR_BELOW_REGEX = /MSIE [1-9]\\./;\nlib.isIE9orBelow = function() {\n    return lib.isIE() && IS_IE9_OR_BELOW_REGEX.test(window.navigator.userAgent);\n};\n\nvar IS_SAFARI_REGEX = /Version\\/[\\d\\.]+.*Safari/;\nlib.isSafari = function() {\n    return IS_SAFARI_REGEX.test(window.navigator.userAgent);\n};\n\nvar IS_IOS_REGEX = /iPad|iPhone|iPod/;\nlib.isIOS = function() {\n    return IS_IOS_REGEX.test(window.navigator.userAgent);\n};\n\n/**\n * Duck typing to recognize a d3 selection, mostly for IE9's benefit\n * because it doesn't handle instanceof like modern browsers\n */\nlib.isD3Selection = function(obj) {\n    return obj && (typeof obj.classed === 'function');\n};\n\n/**\n * Append element to DOM only if not present.\n *\n * @param {d3 selection} parent : parent selection of the element in question\n * @param {string} nodeType : node type of element to append\n * @param {string} className (optional) : class name of element in question\n * @param {fn} enterFn (optional) : optional fn applied to entering elements only\n * @return {d3 selection} selection of new layer\n *\n * Previously, we were using the following pattern:\n *\n * ```\n * var sel = parent.selectAll('.' + className)\n *     .data([0]);\n *\n * sel.enter().append(nodeType)\n *     .classed(className, true);\n *\n * return sel;\n * ```\n *\n * in numerous places in our codebase to achieve the same behavior.\n *\n * The logic below performs much better, mostly as we are using\n * `.select` instead `.selectAll` that is `querySelector` instead of\n * `querySelectorAll`.\n *\n */\nlib.ensureSingle = function(parent, nodeType, className, enterFn) {\n    var sel = parent.select(nodeType + (className ? '.' + className : ''));\n    if(sel.size()) return sel;\n\n    var layer = parent.append(nodeType);\n    if(className) layer.classed(className, true);\n    if(enterFn) layer.call(enterFn);\n\n    return layer;\n};\n\n/**\n * Same as Lib.ensureSingle, but using id as selector.\n * This version is mostly used for clipPath nodes.\n *\n * @param {d3 selection} parent : parent selection of the element in question\n * @param {string} nodeType : node type of element to append\n * @param {string} id : id of element in question\n * @param {fn} enterFn (optional) : optional fn applied to entering elements only\n * @return {d3 selection} selection of new layer\n */\nlib.ensureSingleById = function(parent, nodeType, id, enterFn) {\n    var sel = parent.select(nodeType + '#' + id);\n    if(sel.size()) return sel;\n\n    var layer = parent.append(nodeType).attr('id', id);\n    if(enterFn) layer.call(enterFn);\n\n    return layer;\n};\n\n/**\n * Converts a string path to an object.\n *\n * When given a string containing an array element, it will create a `null`\n * filled array of the given size.\n *\n * @example\n * lib.objectFromPath('nested.test[2].path', 'value');\n * // returns { nested: { test: [null, null, { path: 'value' }]}\n *\n * @param   {string}    path to nested value\n * @param   {*}         any value to be set\n *\n * @return {Object} the constructed object with a full nested path\n */\nlib.objectFromPath = function(path, value) {\n    var keys = path.split('.');\n    var tmpObj;\n    var obj = tmpObj = {};\n\n    for(var i = 0; i < keys.length; i++) {\n        var key = keys[i];\n        var el = null;\n\n        var parts = keys[i].match(/(.*)\\[([0-9]+)\\]/);\n\n        if(parts) {\n            key = parts[1];\n            el = parts[2];\n\n            tmpObj = tmpObj[key] = [];\n\n            if(i === keys.length - 1) {\n                tmpObj[el] = value;\n            } else {\n                tmpObj[el] = {};\n            }\n\n            tmpObj = tmpObj[el];\n        } else {\n            if(i === keys.length - 1) {\n                tmpObj[key] = value;\n            } else {\n                tmpObj[key] = {};\n            }\n\n            tmpObj = tmpObj[key];\n        }\n    }\n\n    return obj;\n};\n\n/**\n * Iterate through an object in-place, converting dotted properties to objects.\n *\n * Examples:\n *\n *   lib.expandObjectPaths({'nested.test.path': 'value'});\n *     => { nested: { test: {path: 'value'}}}\n *\n * It also handles array notation, e.g.:\n *\n *   lib.expandObjectPaths({'foo[1].bar': 'value'});\n *     => { foo: [null, {bar: value}] }\n *\n * It handles merges the results when two properties are specified in parallel:\n *\n *   lib.expandObjectPaths({'foo[1].bar': 10, 'foo[0].bar': 20});\n *     => { foo: [{bar: 10}, {bar: 20}] }\n *\n * It does NOT, however, merge multiple multiply-nested arrays::\n *\n *   lib.expandObjectPaths({'marker[1].range[1]': 5, 'marker[1].range[0]': 4})\n *     => { marker: [null, {range: 4}] }\n */\n\n// Store this to avoid recompiling regex on *every* prop since this may happen many\n// many times for animations. Could maybe be inside the function. Not sure about\n// scoping vs. recompilation tradeoff, but at least it's not just inlining it into\n// the inner loop.\nvar dottedPropertyRegex = /^([^\\[\\.]+)\\.(.+)?/;\nvar indexedPropertyRegex = /^([^\\.]+)\\[([0-9]+)\\](\\.)?(.+)?/;\n\nlib.expandObjectPaths = function(data) {\n    var match, key, prop, datum, idx, dest, trailingPath;\n    if(typeof data === 'object' && !Array.isArray(data)) {\n        for(key in data) {\n            if(data.hasOwnProperty(key)) {\n                if((match = key.match(dottedPropertyRegex))) {\n                    datum = data[key];\n                    prop = match[1];\n\n                    delete data[key];\n\n                    data[prop] = lib.extendDeepNoArrays(data[prop] || {}, lib.objectFromPath(key, lib.expandObjectPaths(datum))[prop]);\n                } else if((match = key.match(indexedPropertyRegex))) {\n                    datum = data[key];\n\n                    prop = match[1];\n                    idx = parseInt(match[2]);\n\n                    delete data[key];\n\n                    data[prop] = data[prop] || [];\n\n                    if(match[3] === '.') {\n                        // This is the case where theere are subsequent properties into which\n                        // we must recurse, e.g. transforms[0].value\n                        trailingPath = match[4];\n                        dest = data[prop][idx] = data[prop][idx] || {};\n\n                        // NB: Extend deep no arrays prevents this from working on multiple\n                        // nested properties in the same object, e.g.\n                        //\n                        // {\n                        //   foo[0].bar[1].range\n                        //   foo[0].bar[0].range\n                        // }\n                        //\n                        // In this case, the extendDeepNoArrays will overwrite one array with\n                        // the other, so that both properties *will not* be present in the\n                        // result. Fixing this would require a more intelligent tracking\n                        // of changes and merging than extendDeepNoArrays currently accomplishes.\n                        lib.extendDeepNoArrays(dest, lib.objectFromPath(trailingPath, lib.expandObjectPaths(datum)));\n                    } else {\n                        // This is the case where this property is the end of the line,\n                        // e.g. xaxis.range[0]\n                        data[prop][idx] = lib.expandObjectPaths(datum);\n                    }\n                } else {\n                    data[key] = lib.expandObjectPaths(data[key]);\n                }\n            }\n        }\n    }\n\n    return data;\n};\n\n/**\n * Converts value to string separated by the provided separators.\n *\n * @example\n * lib.numSeparate(2016, '.,');\n * // returns '2016'\n *\n * @example\n * lib.numSeparate(3000, '.,', true);\n * // returns '3,000'\n *\n * @example\n * lib.numSeparate(1234.56, '|,')\n * // returns '1,234|56'\n *\n * @param   {string|number} value       the value to be converted\n * @param   {string}    separators  string of decimal, then thousands separators\n * @param   {boolean}    separatethousands  boolean, 4-digit integers are separated if true\n *\n * @return  {string}    the value that has been separated\n */\nlib.numSeparate = function(value, separators, separatethousands) {\n    if(!separatethousands) separatethousands = false;\n\n    if(typeof separators !== 'string' || separators.length === 0) {\n        throw new Error('Separator string required for formatting!');\n    }\n\n    if(typeof value === 'number') {\n        value = String(value);\n    }\n\n    var thousandsRe = /(\\d+)(\\d{3})/;\n    var decimalSep = separators.charAt(0);\n    var thouSep = separators.charAt(1);\n\n    var x = value.split('.');\n    var x1 = x[0];\n    var x2 = x.length > 1 ? decimalSep + x[1] : '';\n\n    // Years are ignored for thousands separators\n    if(thouSep && (x.length > 1 || x1.length > 4 || separatethousands)) {\n        while(thousandsRe.test(x1)) {\n            x1 = x1.replace(thousandsRe, '$1' + thouSep + '$2');\n        }\n    }\n\n    return x1 + x2;\n};\n\nlib.TEMPLATE_STRING_REGEX = /%{([^\\s%{}:]*)([:|\\|][^}]*)?}/g;\nvar SIMPLE_PROPERTY_REGEX = /^\\w*$/;\n\n/**\n * Substitute values from an object into a string\n *\n * Examples:\n *  Lib.templateString('name: %{trace}', {trace: 'asdf'}) --> 'name: asdf'\n *  Lib.templateString('name: %{trace[0].name}', {trace: [{name: 'asdf'}]}) --> 'name: asdf'\n *\n * @param {string}  input string containing %{...} template strings\n * @param {obj}     data object containing substitution values\n *\n * @return {string} templated string\n */\nlib.templateString = function(string, obj) {\n    // Not all that useful, but cache nestedProperty instantiation\n    // just in case it speeds things up *slightly*:\n    var getterCache = {};\n\n    return string.replace(lib.TEMPLATE_STRING_REGEX, function(dummy, key) {\n        var v;\n        if(SIMPLE_PROPERTY_REGEX.test(key)) {\n            v = obj[key];\n        } else {\n            getterCache[key] = getterCache[key] || lib.nestedProperty(obj, key).get;\n            v = getterCache[key]();\n        }\n        return lib.isValidTextValue(v) ? v : '';\n    });\n};\n\nvar hovertemplateWarnings = {\n    max: 10,\n    count: 0,\n    name: 'hovertemplate'\n};\nlib.hovertemplateString = function() {\n    return templateFormatString.apply(hovertemplateWarnings, arguments);\n};\n\nvar texttemplateWarnings = {\n    max: 10,\n    count: 0,\n    name: 'texttemplate'\n};\nlib.texttemplateString = function() {\n    return templateFormatString.apply(texttemplateWarnings, arguments);\n};\n\nvar TEMPLATE_STRING_FORMAT_SEPARATOR = /^[:|\\|]/;\n/**\n * Substitute values from an object into a string and optionally formats them using d3-format,\n * or fallback to associated labels.\n *\n * Examples:\n *  Lib.hovertemplateString('name: %{trace}', {trace: 'asdf'}) --> 'name: asdf'\n *  Lib.hovertemplateString('name: %{trace[0].name}', {trace: [{name: 'asdf'}]}) --> 'name: asdf'\n *  Lib.hovertemplateString('price: %{y:$.2f}', {y: 1}) --> 'price: $1.00'\n *\n * @param {string}  input string containing %{...:...} template strings\n * @param {obj}     data object containing fallback text when no formatting is specified, ex.: {yLabel: 'formattedYValue'}\n * @param {obj}     d3 locale\n * @param {obj}     data objects containing substitution values\n *\n * @return {string} templated string\n */\nfunction templateFormatString(string, labels, d3locale) {\n    var opts = this;\n    var args = arguments;\n    if(!labels) labels = {};\n    // Not all that useful, but cache nestedProperty instantiation\n    // just in case it speeds things up *slightly*:\n    var getterCache = {};\n\n    return string.replace(lib.TEMPLATE_STRING_REGEX, function(match, key, format) {\n        var obj, value, i;\n        for(i = 3; i < args.length; i++) {\n            obj = args[i];\n            if(!obj) continue;\n            if(obj.hasOwnProperty(key)) {\n                value = obj[key];\n                break;\n            }\n\n            if(!SIMPLE_PROPERTY_REGEX.test(key)) {\n                value = getterCache[key] || lib.nestedProperty(obj, key).get();\n                if(value) getterCache[key] = value;\n            }\n            if(value !== undefined) break;\n        }\n\n        if(value === undefined && opts) {\n            if(opts.count < opts.max) {\n                lib.warn('Variable \\'' + key + '\\' in ' + opts.name + ' could not be found!');\n                value = match;\n            }\n\n            if(opts.count === opts.max) {\n                lib.warn('Too many ' + opts.name + ' warnings - additional warnings will be suppressed');\n            }\n            opts.count++;\n\n            return match;\n        }\n\n        if(format) {\n            var fmt;\n            if(format[0] === ':') {\n                fmt = d3locale ? d3locale.numberFormat : d3.format;\n                value = fmt(format.replace(TEMPLATE_STRING_FORMAT_SEPARATOR, ''))(value);\n            }\n\n            if(format[0] === '|') {\n                fmt = d3locale ? d3locale.timeFormat : utcFormat;\n                var ms = lib.dateTime2ms(value);\n                value = lib.formatDate(ms, format.replace(TEMPLATE_STRING_FORMAT_SEPARATOR, ''), false, fmt);\n            }\n        } else {\n            if(labels.hasOwnProperty(key + 'Label')) value = labels[key + 'Label'];\n        }\n        return value;\n    });\n}\n\n/*\n * alphanumeric string sort, tailored for subplot IDs like scene2, scene10, x10y13 etc\n */\nvar char0 = 48;\nvar char9 = 57;\nlib.subplotSort = function(a, b) {\n    var l = Math.min(a.length, b.length) + 1;\n    var numA = 0;\n    var numB = 0;\n    for(var i = 0; i < l; i++) {\n        var charA = a.charCodeAt(i) || 0;\n        var charB = b.charCodeAt(i) || 0;\n        var isNumA = charA >= char0 && charA <= char9;\n        var isNumB = charB >= char0 && charB <= char9;\n\n        if(isNumA) numA = 10 * numA + charA - char0;\n        if(isNumB) numB = 10 * numB + charB - char0;\n\n        if(!isNumA || !isNumB) {\n            if(numA !== numB) return numA - numB;\n            if(charA !== charB) return charA - charB;\n        }\n    }\n    return numB - numA;\n};\n\n// repeatable pseudorandom generator\nvar randSeed = 2000000000;\n\nlib.seedPseudoRandom = function() {\n    randSeed = 2000000000;\n};\n\nlib.pseudoRandom = function() {\n    var lastVal = randSeed;\n    randSeed = (69069 * randSeed + 1) % 4294967296;\n    // don't let consecutive vals be too close together\n    // gets away from really trying to be random, in favor of better local uniformity\n    if(Math.abs(randSeed - lastVal) < 429496729) return lib.pseudoRandom();\n    return randSeed / 4294967296;\n};\n\n\n/** Fill hover 'pointData' container with 'correct' hover text value\n *\n * - If trace hoverinfo contains a 'text' flag and hovertext is not set,\n *   the text elements will be seen in the hover labels.\n *\n * - If trace hoverinfo contains a 'text' flag and hovertext is set,\n *   hovertext takes precedence over text\n *   i.e. the hoverinfo elements will be seen in the hover labels\n *\n *  @param {object} calcPt\n *  @param {object} trace\n *  @param {object || array} contOut (mutated here)\n */\nlib.fillText = function(calcPt, trace, contOut) {\n    var fill = Array.isArray(contOut) ?\n        function(v) { contOut.push(v); } :\n        function(v) { contOut.text = v; };\n\n    var htx = lib.extractOption(calcPt, trace, 'htx', 'hovertext');\n    if(lib.isValidTextValue(htx)) return fill(htx);\n\n    var tx = lib.extractOption(calcPt, trace, 'tx', 'text');\n    if(lib.isValidTextValue(tx)) return fill(tx);\n};\n\n// accept all truthy values and 0 (which gets cast to '0' in the hover labels)\nlib.isValidTextValue = function(v) {\n    return v || v === 0;\n};\n\n/**\n * @param {number} ratio\n * @param {number} n (number of decimal places)\n */\nlib.formatPercent = function(ratio, n) {\n    n = n || 0;\n    var str = (Math.round(100 * ratio * Math.pow(10, n)) * Math.pow(0.1, n)).toFixed(n) + '%';\n    for(var i = 0; i < n; i++) {\n        if(str.indexOf('.') !== -1) {\n            str = str.replace('0%', '%');\n            str = str.replace('.%', '%');\n        }\n    }\n    return str;\n};\n\nlib.isHidden = function(gd) {\n    var display = window.getComputedStyle(gd).display;\n    return !display || display === 'none';\n};\n\nlib.strTranslate = function(x, y) {\n    return (x || y) ? 'translate(' + x + ',' + y + ')' : '';\n};\n\nlib.strRotate = function(a) {\n    return a ? 'rotate(' + a + ')' : '';\n};\n\nlib.strScale = function(s) {\n    return s !== 1 ? 'scale(' + s + ')' : '';\n};\n\n/** Return transform text for bar bar-like rectangles and pie-like slices\n *  @param {object} transform\n *  - targetX: desired position on the x-axis\n *  - targetY: desired position on the y-axis\n *  - textX: text middle position on the x-axis\n *  - textY: text middle position on the y-axis\n *  - anchorX: (optional) text anchor position on the x-axis (computed from textX), zero for middle anchor\n *  - anchorY: (optional) text anchor position on the y-axis (computed from textY), zero for middle anchor\n *  - scale: (optional) scale applied after translate\n *  - rotate: (optional) rotation applied after scale\n *  - noCenter: when defined no extra arguments needed in rotation\n */\nlib.getTextTransform = function(transform) {\n    var noCenter = transform.noCenter;\n    var textX = transform.textX;\n    var textY = transform.textY;\n    var targetX = transform.targetX;\n    var targetY = transform.targetY;\n    var anchorX = transform.anchorX || 0;\n    var anchorY = transform.anchorY || 0;\n    var rotate = transform.rotate;\n    var scale = transform.scale;\n    if(!scale) scale = 0;\n    else if(scale > 1) scale = 1;\n\n    return (\n        lib.strTranslate(\n            targetX - scale * (textX + anchorX),\n            targetY - scale * (textY + anchorY)\n        ) +\n        lib.strScale(scale) +\n        (rotate ?\n            'rotate(' + rotate +\n                (noCenter ? '' : ' ' + textX + ' ' + textY) +\n            ')' : ''\n        )\n    );\n};\n\nlib.ensureUniformFontSize = function(gd, baseFont) {\n    var out = lib.extendFlat({}, baseFont);\n    out.size = Math.max(\n        baseFont.size,\n        gd._fullLayout.uniformtext.minsize || 0\n    );\n    return out;\n};\n\n/**\n * provide a human-readable list e.g. \"A, B, C and D\" with an ending separator\n *\n * @param {array} arr : the array to join\n * @param {string} mainSeparator : main separator\n * @param {string} lastSeparator : last separator\n *\n * @return {string} : joined list\n */\nlib.join2 = function(arr, mainSeparator, lastSeparator) {\n    var len = arr.length;\n    if(len > 1) {\n        return arr.slice(0, -1).join(mainSeparator) + lastSeparator + arr[len - 1];\n    }\n    return arr.join(mainSeparator);\n};\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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\n/**\n * sanitized modulus function that always returns in the range [0, d)\n * rather than (-d, 0] if v is negative\n */\nfunction mod(v, d) {\n    var out = v % d;\n    return out < 0 ? out + d : out;\n}\n\n/**\n * sanitized modulus function that always returns in the range [-d/2, d/2]\n * rather than (-d, 0] if v is negative\n */\nfunction modHalf(v, d) {\n    return Math.abs(v) > (d / 2) ?\n        v - Math.round(v / d) * d :\n        v;\n}\n\nmodule.exports = {\n    mod: mod,\n    modHalf: modHalf\n};\n","var t0 = new Date,\n    t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n  function interval(date) {\n    return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n  }\n\n  interval.floor = function(date) {\n    return floori(date = new Date(+date)), date;\n  };\n\n  interval.ceil = function(date) {\n    return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n  };\n\n  interval.round = function(date) {\n    var d0 = interval(date),\n        d1 = interval.ceil(date);\n    return date - d0 < d1 - date ? d0 : d1;\n  };\n\n  interval.offset = function(date, step) {\n    return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n  };\n\n  interval.range = function(start, stop, step) {\n    var range = [], previous;\n    start = interval.ceil(start);\n    step = step == null ? 1 : Math.floor(step);\n    if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n    do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n    while (previous < start && start < stop);\n    return range;\n  };\n\n  interval.filter = function(test) {\n    return newInterval(function(date) {\n      if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n    }, function(date, step) {\n      if (date >= date) {\n        if (step < 0) while (++step <= 0) {\n          while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n        } else while (--step >= 0) {\n          while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n        }\n      }\n    });\n  };\n\n  if (count) {\n    interval.count = function(start, end) {\n      t0.setTime(+start), t1.setTime(+end);\n      floori(t0), floori(t1);\n      return Math.floor(count(t0, t1));\n    };\n\n    interval.every = function(step) {\n      step = Math.floor(step);\n      return !isFinite(step) || !(step > 0) ? null\n          : !(step > 1) ? interval\n          : interval.filter(field\n              ? function(d) { return field(d) % step === 0; }\n              : function(d) { return interval.count(0, d) % step === 0; });\n    };\n  }\n\n  return interval;\n}\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n  return interval(function(date) {\n    date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCDate(date.getUTCDate() + step * 7);\n  }, function(start, end) {\n    return (end - start) / durationWeek;\n  });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n  return (end - start) / durationDay;\n}, function(date) {\n  return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n  return interval(function(date) {\n    date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setDate(date.getDate() + step * 7);\n  }, function(start, end) {\n    return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n  });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(function(date) {\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setDate(date.getDate() + step);\n}, function(start, end) {\n  return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n  return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n  date.setMonth(0, 1);\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n  return end.getFullYear() - start.getFullYear();\n}, function(date) {\n  return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n    date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n    date.setMonth(0, 1);\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setFullYear(date.getFullYear() + step * k);\n  });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n  return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n  return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n    date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n    date.setUTCMonth(0, 1);\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCFullYear(date.getUTCFullYear() + step * k);\n  });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n  timeDay,\n  timeSunday,\n  timeMonday,\n  timeThursday,\n  timeYear,\n  utcDay,\n  utcSunday,\n  utcMonday,\n  utcThursday,\n  utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n    date.setFullYear(d.y);\n    return date;\n  }\n  return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n    date.setUTCFullYear(d.y);\n    return date;\n  }\n  return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n  return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n  var locale_dateTime = locale.dateTime,\n      locale_date = locale.date,\n      locale_time = locale.time,\n      locale_periods = locale.periods,\n      locale_weekdays = locale.days,\n      locale_shortWeekdays = locale.shortDays,\n      locale_months = locale.months,\n      locale_shortMonths = locale.shortMonths;\n\n  var periodRe = formatRe(locale_periods),\n      periodLookup = formatLookup(locale_periods),\n      weekdayRe = formatRe(locale_weekdays),\n      weekdayLookup = formatLookup(locale_weekdays),\n      shortWeekdayRe = formatRe(locale_shortWeekdays),\n      shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n      monthRe = formatRe(locale_months),\n      monthLookup = formatLookup(locale_months),\n      shortMonthRe = formatRe(locale_shortMonths),\n      shortMonthLookup = formatLookup(locale_shortMonths);\n\n  var formats = {\n    \"a\": formatShortWeekday,\n    \"A\": formatWeekday,\n    \"b\": formatShortMonth,\n    \"B\": formatMonth,\n    \"c\": null,\n    \"d\": formatDayOfMonth,\n    \"e\": formatDayOfMonth,\n    \"f\": formatMicroseconds,\n    \"g\": formatYearISO,\n    \"G\": formatFullYearISO,\n    \"H\": formatHour24,\n    \"I\": formatHour12,\n    \"j\": formatDayOfYear,\n    \"L\": formatMilliseconds,\n    \"m\": formatMonthNumber,\n    \"M\": formatMinutes,\n    \"p\": formatPeriod,\n    \"q\": formatQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatSeconds,\n    \"u\": formatWeekdayNumberMonday,\n    \"U\": formatWeekNumberSunday,\n    \"V\": formatWeekNumberISO,\n    \"w\": formatWeekdayNumberSunday,\n    \"W\": formatWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatYear,\n    \"Y\": formatFullYear,\n    \"Z\": formatZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var utcFormats = {\n    \"a\": formatUTCShortWeekday,\n    \"A\": formatUTCWeekday,\n    \"b\": formatUTCShortMonth,\n    \"B\": formatUTCMonth,\n    \"c\": null,\n    \"d\": formatUTCDayOfMonth,\n    \"e\": formatUTCDayOfMonth,\n    \"f\": formatUTCMicroseconds,\n    \"g\": formatUTCYearISO,\n    \"G\": formatUTCFullYearISO,\n    \"H\": formatUTCHour24,\n    \"I\": formatUTCHour12,\n    \"j\": formatUTCDayOfYear,\n    \"L\": formatUTCMilliseconds,\n    \"m\": formatUTCMonthNumber,\n    \"M\": formatUTCMinutes,\n    \"p\": formatUTCPeriod,\n    \"q\": formatUTCQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatUTCSeconds,\n    \"u\": formatUTCWeekdayNumberMonday,\n    \"U\": formatUTCWeekNumberSunday,\n    \"V\": formatUTCWeekNumberISO,\n    \"w\": formatUTCWeekdayNumberSunday,\n    \"W\": formatUTCWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatUTCYear,\n    \"Y\": formatUTCFullYear,\n    \"Z\": formatUTCZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var parses = {\n    \"a\": parseShortWeekday,\n    \"A\": parseWeekday,\n    \"b\": parseShortMonth,\n    \"B\": parseMonth,\n    \"c\": parseLocaleDateTime,\n    \"d\": parseDayOfMonth,\n    \"e\": parseDayOfMonth,\n    \"f\": parseMicroseconds,\n    \"g\": parseYear,\n    \"G\": parseFullYear,\n    \"H\": parseHour24,\n    \"I\": parseHour24,\n    \"j\": parseDayOfYear,\n    \"L\": parseMilliseconds,\n    \"m\": parseMonthNumber,\n    \"M\": parseMinutes,\n    \"p\": parsePeriod,\n    \"q\": parseQuarter,\n    \"Q\": parseUnixTimestamp,\n    \"s\": parseUnixTimestampSeconds,\n    \"S\": parseSeconds,\n    \"u\": parseWeekdayNumberMonday,\n    \"U\": parseWeekNumberSunday,\n    \"V\": parseWeekNumberISO,\n    \"w\": parseWeekdayNumberSunday,\n    \"W\": parseWeekNumberMonday,\n    \"x\": parseLocaleDate,\n    \"X\": parseLocaleTime,\n    \"y\": parseYear,\n    \"Y\": parseFullYear,\n    \"Z\": parseZone,\n    \"%\": parseLiteralPercent\n  };\n\n  // These recursive directive definitions must be deferred.\n  formats.x = newFormat(locale_date, formats);\n  formats.X = newFormat(locale_time, formats);\n  formats.c = newFormat(locale_dateTime, formats);\n  utcFormats.x = newFormat(locale_date, utcFormats);\n  utcFormats.X = newFormat(locale_time, utcFormats);\n  utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n  function newFormat(specifier, formats) {\n    return function(date) {\n      var string = [],\n          i = -1,\n          j = 0,\n          n = specifier.length,\n          c,\n          pad,\n          format;\n\n      if (!(date instanceof Date)) date = new Date(+date);\n\n      while (++i < n) {\n        if (specifier.charCodeAt(i) === 37) {\n          string.push(specifier.slice(j, i));\n          if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n          else pad = c === \"e\" ? \" \" : \"0\";\n          if (format = formats[c]) c = format(date, pad);\n          string.push(c);\n          j = i + 1;\n        }\n      }\n\n      string.push(specifier.slice(j, i));\n      return string.join(\"\");\n    };\n  }\n\n  function newParse(specifier, Z) {\n    return function(string) {\n      var d = newDate(1900, undefined, 1),\n          i = parseSpecifier(d, specifier, string += \"\", 0),\n          week, day;\n      if (i != string.length) return null;\n\n      // If a UNIX timestamp is specified, return it.\n      if (\"Q\" in d) return new Date(d.Q);\n      if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n      // If this is utcParse, never use the local timezone.\n      if (Z && !(\"Z\" in d)) d.Z = 0;\n\n      // The am-pm flag is 0 for AM, and 1 for PM.\n      if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n      // If the month was not specified, inherit from the quarter.\n      if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n      // Convert day-of-week and week-of-year to day-of-year.\n      if (\"V\" in d) {\n        if (d.V < 1 || d.V > 53) return null;\n        if (!(\"w\" in d)) d.w = 1;\n        if (\"Z\" in d) {\n          week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n          week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n          week = utcDay.offset(week, (d.V - 1) * 7);\n          d.y = week.getUTCFullYear();\n          d.m = week.getUTCMonth();\n          d.d = week.getUTCDate() + (d.w + 6) % 7;\n        } else {\n          week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n          week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n          week = timeDay.offset(week, (d.V - 1) * 7);\n          d.y = week.getFullYear();\n          d.m = week.getMonth();\n          d.d = week.getDate() + (d.w + 6) % 7;\n        }\n      } else if (\"W\" in d || \"U\" in d) {\n        if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n        day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n        d.m = 0;\n        d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n      }\n\n      // If a time zone is specified, all fields are interpreted as UTC and then\n      // offset according to the specified time zone.\n      if (\"Z\" in d) {\n        d.H += d.Z / 100 | 0;\n        d.M += d.Z % 100;\n        return utcDate(d);\n      }\n\n      // Otherwise, all fields are in local time.\n      return localDate(d);\n    };\n  }\n\n  function parseSpecifier(d, specifier, string, j) {\n    var i = 0,\n        n = specifier.length,\n        m = string.length,\n        c,\n        parse;\n\n    while (i < n) {\n      if (j >= m) return -1;\n      c = specifier.charCodeAt(i++);\n      if (c === 37) {\n        c = specifier.charAt(i++);\n        parse = parses[c in pads ? specifier.charAt(i++) : c];\n        if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n      } else if (c != string.charCodeAt(j++)) {\n        return -1;\n      }\n    }\n\n    return j;\n  }\n\n  function parsePeriod(d, string, i) {\n    var n = periodRe.exec(string.slice(i));\n    return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseShortWeekday(d, string, i) {\n    var n = shortWeekdayRe.exec(string.slice(i));\n    return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseWeekday(d, string, i) {\n    var n = weekdayRe.exec(string.slice(i));\n    return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseShortMonth(d, string, i) {\n    var n = shortMonthRe.exec(string.slice(i));\n    return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseMonth(d, string, i) {\n    var n = monthRe.exec(string.slice(i));\n    return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseLocaleDateTime(d, string, i) {\n    return parseSpecifier(d, locale_dateTime, string, i);\n  }\n\n  function parseLocaleDate(d, string, i) {\n    return parseSpecifier(d, locale_date, string, i);\n  }\n\n  function parseLocaleTime(d, string, i) {\n    return parseSpecifier(d, locale_time, string, i);\n  }\n\n  function formatShortWeekday(d) {\n    return locale_shortWeekdays[d.getDay()];\n  }\n\n  function formatWeekday(d) {\n    return locale_weekdays[d.getDay()];\n  }\n\n  function formatShortMonth(d) {\n    return locale_shortMonths[d.getMonth()];\n  }\n\n  function formatMonth(d) {\n    return locale_months[d.getMonth()];\n  }\n\n  function formatPeriod(d) {\n    return locale_periods[+(d.getHours() >= 12)];\n  }\n\n  function formatQuarter(d) {\n    return 1 + ~~(d.getMonth() / 3);\n  }\n\n  function formatUTCShortWeekday(d) {\n    return locale_shortWeekdays[d.getUTCDay()];\n  }\n\n  function formatUTCWeekday(d) {\n    return locale_weekdays[d.getUTCDay()];\n  }\n\n  function formatUTCShortMonth(d) {\n    return locale_shortMonths[d.getUTCMonth()];\n  }\n\n  function formatUTCMonth(d) {\n    return locale_months[d.getUTCMonth()];\n  }\n\n  function formatUTCPeriod(d) {\n    return locale_periods[+(d.getUTCHours() >= 12)];\n  }\n\n  function formatUTCQuarter(d) {\n    return 1 + ~~(d.getUTCMonth() / 3);\n  }\n\n  return {\n    format: function(specifier) {\n      var f = newFormat(specifier += \"\", formats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    parse: function(specifier) {\n      var p = newParse(specifier += \"\", false);\n      p.toString = function() { return specifier; };\n      return p;\n    },\n    utcFormat: function(specifier) {\n      var f = newFormat(specifier += \"\", utcFormats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    utcParse: function(specifier) {\n      var p = newParse(specifier += \"\", true);\n      p.toString = function() { return specifier; };\n      return p;\n    }\n  };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n    numberRe = /^\\s*\\d+/, // note: ignores next directive\n    percentRe = /^%/,\n    requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n  var sign = value < 0 ? \"-\" : \"\",\n      string = (sign ? -value : value) + \"\",\n      length = string.length;\n  return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n  return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n  return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n  var map = {}, i = -1, n = names.length;\n  while (++i < n) map[names[i].toLowerCase()] = i;\n  return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 4));\n  return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n  var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n  return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 6));\n  return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n  var n = percentRe.exec(string.slice(i, i + 1));\n  return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n  return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n  return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n  return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n  return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n  return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n  return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n  return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n  return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n  return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n  var day = d.getDay();\n  return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n  return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n  var day = d.getDay();\n  return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n  d = dISO(d);\n  return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n  return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n  return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n  d = dISO(d);\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n  var day = d.getDay();\n  d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n  var z = d.getTimezoneOffset();\n  return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n      + pad(z / 60 | 0, \"0\", 2)\n      + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n  return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n  return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n  return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n  return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n  return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n  return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n  return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n  return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n  return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n  var dow = d.getUTCDay();\n  return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n  return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n  var day = d.getUTCDay();\n  return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n  d = UTCdISO(d);\n  return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n  return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n  return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n  d = UTCdISO(d);\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n  var day = d.getUTCDay();\n  d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n  return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n  return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n  return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n  return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n  dateTime: \"%x, %X\",\n  date: \"%-m/%-d/%Y\",\n  time: \"%-I:%M:%S %p\",\n  periods: [\"AM\", \"PM\"],\n  days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n  shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n  months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n  shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n  locale = formatLocale(definition);\n  timeFormat = locale.format;\n  timeParse = locale.parse;\n  utcFormat = locale.utcFormat;\n  utcParse = locale.utcParse;\n  return locale;\n}\n","import {utcFormat} from \"./defaultLocale.js\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n  return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n    ? formatIsoNative\n    : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat.js\";\nimport {utcParse} from \"./defaultLocale.js\";\n\nfunction parseIsoNative(string) {\n  var date = new Date(string);\n  return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n    ? parseIsoNative\n    : utcParse(isoSpecifier);\n\nexport default parseIso;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport ApiRoutes from 'routing/ApiRoutes';\nimport UserNotification from 'util/UserNotification';\nimport { qualifyUrl } from 'util/URLUtils';\nimport fetch from 'logic/rest/FetchProvider';\n\nconst StartpageStore = Reflux.createStore({\n  listenables: [],\n\n  set(userId, type, id) {\n    const url = qualifyUrl(ApiRoutes.UsersApiController.update(userId).url);\n    const payload = {};\n\n    if (type && id) {\n      payload.type = type;\n      payload.id = id;\n    }\n\n    return fetch('PUT', url, { startpage: payload })\n      .then(\n        (response) => {\n          this.trigger();\n          UserNotification.success('Your start page was changed successfully');\n\n          return response;\n        },\n        (error) => UserNotification.error(`Changing your start page failed with error: ${error}`, 'Could not change your start page'),\n      );\n  },\n});\n\nexport default StartpageStore;\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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 isNumeric = require('fast-isnumeric');\nvar isArrayOrTypedArray = require('./array').isArrayOrTypedArray;\n\n/**\n * aggNums() returns the result of an aggregate function applied to an array of\n * values, where non-numerical values have been tossed out.\n *\n * @param {function} f - aggregation function (e.g., Math.min)\n * @param {Number} v - initial value (continuing from previous calls)\n *      if there's no continuing value, use null for selector-type\n *      functions (max,min), or 0 for summations\n * @param {Array} a - array to aggregate (may be nested, we will recurse,\n *                    but all elements must have the same dimension)\n * @param {Number} len - maximum length of a to aggregate\n * @return {Number} - result of f applied to a starting from v\n */\nexports.aggNums = function(f, v, a, len) {\n    var i,\n        b;\n    if(!len || len > a.length) len = a.length;\n    if(!isNumeric(v)) v = false;\n    if(isArrayOrTypedArray(a[0])) {\n        b = new Array(len);\n        for(i = 0; i < len; i++) b[i] = exports.aggNums(f, v, a[i]);\n        a = b;\n    }\n\n    for(i = 0; i < len; i++) {\n        if(!isNumeric(v)) v = a[i];\n        else if(isNumeric(a[i])) v = f(+v, +a[i]);\n    }\n    return v;\n};\n\n/**\n * mean & std dev functions using aggNums, so it handles non-numerics nicely\n * even need to use aggNums instead of .length, to toss out non-numerics\n */\nexports.len = function(data) {\n    return exports.aggNums(function(a) { return a + 1; }, 0, data);\n};\n\nexports.mean = function(data, len) {\n    if(!len) len = exports.len(data);\n    return exports.aggNums(function(a, b) { return a + b; }, 0, data) / len;\n};\n\nexports.midRange = function(numArr) {\n    if(numArr === undefined || numArr.length === 0) return undefined;\n    return (exports.aggNums(Math.max, null, numArr) + exports.aggNums(Math.min, null, numArr)) / 2;\n};\n\nexports.variance = function(data, len, mean) {\n    if(!len) len = exports.len(data);\n    if(!isNumeric(mean)) mean = exports.mean(data, len);\n\n    return exports.aggNums(function(a, b) {\n        return a + Math.pow(b - mean, 2);\n    }, 0, data) / len;\n};\n\nexports.stdev = function(data, len, mean) {\n    return Math.sqrt(exports.variance(data, len, mean));\n};\n\n/**\n * median of a finite set of numbers\n * reference page: https://en.wikipedia.org/wiki/Median#Finite_set_of_numbers\n**/\nexports.median = function(data) {\n    var b = data.slice().sort();\n    return exports.interp(b, 0.5);\n};\n\n/**\n * interp() computes a percentile (quantile) for a given distribution.\n * We interpolate the distribution (to compute quantiles, we follow method #10 here:\n * http://www.amstat.org/publications/jse/v14n3/langford.html).\n * Typically the index or rank (n * arr.length) may be non-integer.\n * For reference: ends are clipped to the extreme values in the array;\n * For box plots: index you get is half a point too high (see\n * http://en.wikipedia.org/wiki/Percentile#Nearest_rank) but note that this definition\n * indexes from 1 rather than 0, so we subtract 1/2 (instead of add).\n *\n * @param {Array} arr - This array contains the values that make up the distribution.\n * @param {Number} n - Between 0 and 1, n = p/100 is such that we compute the p^th percentile.\n * For example, the 50th percentile (or median) corresponds to n = 0.5\n * @return {Number} - percentile\n */\nexports.interp = function(arr, n) {\n    if(!isNumeric(n)) throw 'n should be a finite number';\n    n = n * arr.length - 0.5;\n    if(n < 0) return arr[0];\n    if(n > arr.length - 1) return arr[arr.length - 1];\n    var frac = n % 1;\n    return frac * arr[Math.ceil(n)] + (1 - frac) * arr[Math.floor(n)];\n};\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport { qualifyUrl } from 'util/URLUtils';\nimport { fetchPeriodically } from 'logic/rest/FetchProvider';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport CombinedProvider from 'injection/CombinedProvider';\n\nconst { NodesActions } = CombinedProvider.get('Nodes');\nconst { SessionStore } = CombinedProvider.get('Session');\n\nexport type NodeInfo = {\n  cluster_id: string,\n  hostname: string,\n  is_master: boolean,\n  last_seen: string,\n  node_id: string,\n  short_node_id: string,\n  transport_address: string,\n  type: 'server',\n};\n\ntype NodesListResponse = {\n  nodes: Array | null | undefined,\n  total: number,\n};\n\nexport type NodesStoreState = {\n  nodes: { [nodeId: string]: NodeInfo };\n  clusterId: string;\n  nodeCount: number;\n};\nconst NodesStore = Reflux.createStore({\n  listenables: [NodesActions],\n  nodes: undefined,\n  clusterId: undefined,\n  nodeCount: 0,\n  INTERVAL: 5000, // 5 seconds\n  promises: {},\n\n  init() {\n    if (this.nodes === undefined) {\n      this._triggerList();\n      setInterval(this._triggerList, this.INTERVAL);\n    }\n  },\n\n  _triggerList() {\n    if (SessionStore.isLoggedIn()) {\n      NodesActions.list();\n    }\n  },\n\n  getInitialState() {\n    return this.getNodesInfo();\n  },\n\n  getNodesInfo() {\n    return { nodes: this.nodes, clusterId: this.clusterId, nodeCount: this.nodeCount };\n  },\n\n  list() {\n    const promise = this.promises.list || fetchPeriodically('GET', qualifyUrl(ApiRoutes.ClusterApiResource.list().url))\n      .then((response: NodesListResponse) => {\n        this.nodes = {};\n\n        if (response.nodes) {\n          this.nodes = response.nodes\n            .map<[string, NodeInfo]>((node) => [node.node_id, node])\n            .reduce((prev, [key, value]) => ({ ...prev, [key]: value }), {});\n\n          this.clusterId = this._clusterId();\n          this.nodeCount = this._nodeCount();\n          this._propagateState();\n        }\n\n        return response;\n      })\n      .finally(() => delete this.promises.list);\n\n    this.promises.list = promise;\n\n    NodesActions.list.promise(promise);\n  },\n\n  getNode(nodeId) {\n    return this.nodes?.[nodeId];\n  },\n\n  _clusterId() {\n    const nodeInCluster = Object.keys(this.nodes).map((id) => this.nodes[id]).find((node) => node.cluster_id);\n\n    return (nodeInCluster ? nodeInCluster.cluster_id.toUpperCase() : undefined);\n  },\n\n  _nodeCount() {\n    return Object.keys(this.nodes).length;\n  },\n\n  _propagateState() {\n    this.trigger(this.getNodesInfo());\n  },\n});\n\nexport default NodesStore;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nconst ExtractorsActions = Reflux.createActions({\n  list: { asyncResult: true },\n  get: { asyncResult: true },\n  create: { asyncResult: true },\n  save: { asyncResult: true },\n  update: { asyncResult: true },\n  delete: { asyncResult: true },\n  order: { asyncResult: true },\n  import: {},\n});\n\nexport default ExtractorsActions;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport CombinedProvider from 'injection/CombinedProvider';\n\nclass StoreProvider {\n  getStore(storeName) {\n    const result = CombinedProvider.get(storeName);\n\n    if (!result[`${storeName}Store`]) {\n      throw new Error(`Requested store \"${storeName}\" is not registered.`);\n    }\n\n    return result[`${storeName}Store`];\n  }\n}\n\nif (typeof window.storeProvider === 'undefined') {\n  window.storeProvider = new StoreProvider();\n}\n\nexport default window.storeProvider;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\nimport lodash from 'lodash';\n\nimport { qualifyUrl } from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport fetch from 'logic/rest/FetchProvider';\nimport CombinedProvider from 'injection/CombinedProvider';\n\nconst { EnterpriseActions } = CombinedProvider.get('Enterprise');\n\nconst EnterpriseStore = Reflux.createStore({\n  listenables: [EnterpriseActions],\n  sourceUrl: '/free-enterprise',\n  licenseStatus: undefined,\n\n  getInitialState() {\n    return this.getState();\n  },\n\n  propagateChanges() {\n    this.trigger(this.getState());\n  },\n\n  getState() {\n    return {\n      licenseStatus: this.licenseStatus,\n    };\n  },\n\n  enterpriseUrl(path = '') {\n    return qualifyUrl(`${this.sourceUrl}/${path}`);\n  },\n\n  refresh() {\n    this.getLicenseInfo();\n  },\n\n  getLicenseInfo() {\n    const promise = fetch('GET', this.enterpriseUrl('license/info'));\n\n    promise.then(\n      (response) => {\n        this.licenseStatus = response.free_license_info.license_status;\n        this.propagateChanges();\n\n        return response;\n      },\n      (error) => {\n        const errorMessage = lodash.get(error, 'additional.body.message', error.message);\n\n        UserNotification.error(`Couldn't load license information: ${errorMessage}`, 'Error');\n      },\n    );\n\n    EnterpriseActions.getLicenseInfo.promise(promise);\n  },\n\n  requestFreeEnterpriseLicense(formValues) {\n    const requestBody = {\n      first_name: formValues.firstName,\n      last_name: formValues.lastName,\n      company: formValues.company,\n      email: formValues.email,\n      phone: formValues.phone,\n    };\n\n    const promise = fetch('POST', this.enterpriseUrl('license'), requestBody);\n\n    promise.then(\n      (response) => {\n        UserNotification.success('Your free Graylog Enterprise license should be on the way.', 'Success!');\n        this.refresh();\n\n        return response;\n      },\n      (error) => {\n        const errorMessage = lodash.get(error, 'additional.body.message', error.message);\n\n        UserNotification.error(`Requesting a free Graylog Enterprise license failed: ${errorMessage}`, 'Error');\n      },\n    );\n\n    EnterpriseActions.requestFreeEnterpriseLicense.promise(promise);\n  },\n});\n\nexport default EnterpriseStore;\n","/*!\n * URI.js - Mutating URLs\n * IPv6 Support\n *\n * Version: 1.19.7\n *\n * Author: Rodney Rehm\n * Web: http://medialize.github.io/URI.js/\n *\n * Licensed under\n *   MIT License http://www.opensource.org/licenses/mit-license\n *\n */\n\n(function (root, factory) {\n  'use strict';\n  // https://github.com/umdjs/umd/blob/master/returnExports.js\n  if (typeof module === 'object' && module.exports) {\n    // Node\n    module.exports = factory();\n  } else if (typeof define === 'function' && define.amd) {\n    // AMD. Register as an anonymous module.\n    define(factory);\n  } else {\n    // Browser globals (root is window)\n    root.IPv6 = factory(root);\n  }\n}(this, function (root) {\n  'use strict';\n\n  /*\n  var _in = \"fe80:0000:0000:0000:0204:61ff:fe9d:f156\";\n  var _out = IPv6.best(_in);\n  var _expected = \"fe80::204:61ff:fe9d:f156\";\n\n  console.log(_in, _out, _expected, _out === _expected);\n  */\n\n  // save current IPv6 variable, if any\n  var _IPv6 = root && root.IPv6;\n\n  function bestPresentation(address) {\n    // based on:\n    // Javascript to test an IPv6 address for proper format, and to\n    // present the \"best text representation\" according to IETF Draft RFC at\n    // http://tools.ietf.org/html/draft-ietf-6man-text-addr-representation-04\n    // 8 Feb 2010 Rich Brown, Dartware, LLC\n    // Please feel free to use this code as long as you provide a link to\n    // http://www.intermapper.com\n    // http://intermapper.com/support/tools/IPV6-Validator.aspx\n    // http://download.dartware.com/thirdparty/ipv6validator.js\n\n    var _address = address.toLowerCase();\n    var segments = _address.split(':');\n    var length = segments.length;\n    var total = 8;\n\n    // trim colons (:: or ::a:b:c… or …a:b:c::)\n    if (segments[0] === '' && segments[1] === '' && segments[2] === '') {\n      // must have been ::\n      // remove first two items\n      segments.shift();\n      segments.shift();\n    } else if (segments[0] === '' && segments[1] === '') {\n      // must have been ::xxxx\n      // remove the first item\n      segments.shift();\n    } else if (segments[length - 1] === '' && segments[length - 2] === '') {\n      // must have been xxxx::\n      segments.pop();\n    }\n\n    length = segments.length;\n\n    // adjust total segments for IPv4 trailer\n    if (segments[length - 1].indexOf('.') !== -1) {\n      // found a \".\" which means IPv4\n      total = 7;\n    }\n\n    // fill empty segments them with \"0000\"\n    var pos;\n    for (pos = 0; pos < length; pos++) {\n      if (segments[pos] === '') {\n        break;\n      }\n    }\n\n    if (pos < total) {\n      segments.splice(pos, 1, '0000');\n      while (segments.length < total) {\n        segments.splice(pos, 0, '0000');\n      }\n    }\n\n    // strip leading zeros\n    var _segments;\n    for (var i = 0; i < total; i++) {\n      _segments = segments[i].split('');\n      for (var j = 0; j < 3 ; j++) {\n        if (_segments[0] === '0' && _segments.length > 1) {\n          _segments.splice(0,1);\n        } else {\n          break;\n        }\n      }\n\n      segments[i] = _segments.join('');\n    }\n\n    // find longest sequence of zeroes and coalesce them into one segment\n    var best = -1;\n    var _best = 0;\n    var _current = 0;\n    var current = -1;\n    var inzeroes = false;\n    // i; already declared\n\n    for (i = 0; i < total; i++) {\n      if (inzeroes) {\n        if (segments[i] === '0') {\n          _current += 1;\n        } else {\n          inzeroes = false;\n          if (_current > _best) {\n            best = current;\n            _best = _current;\n          }\n        }\n      } else {\n        if (segments[i] === '0') {\n          inzeroes = true;\n          current = i;\n          _current = 1;\n        }\n      }\n    }\n\n    if (_current > _best) {\n      best = current;\n      _best = _current;\n    }\n\n    if (_best > 1) {\n      segments.splice(best, _best, '');\n    }\n\n    length = segments.length;\n\n    // assemble remaining segments\n    var result = '';\n    if (segments[0] === '')  {\n      result = ':';\n    }\n\n    for (i = 0; i < length; i++) {\n      result += segments[i];\n      if (i === length - 1) {\n        break;\n      }\n\n      result += ':';\n    }\n\n    if (segments[length - 1] === '') {\n      result += ':';\n    }\n\n    return result;\n  }\n\n  function noConflict() {\n    /*jshint validthis: true */\n    if (root.IPv6 === this) {\n      root.IPv6 = _IPv6;\n    }\n\n    return this;\n  }\n\n  return {\n    best: bestPresentation,\n    noConflict: noConflict\n  };\n}));\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nconst CatalogActions = Reflux.createActions({\n  showEntityIndex: { asyncResult: true },\n  getSelectedEntities: { asyncResult: true },\n});\n\nexport default CatalogActions;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nclass CombinedProvider {\n  constructor() {\n    this.actions = {};\n    this.stores = {};\n  }\n\n  registerAction(key, func) {\n    if (this.actions[key]) {\n      throw new Error(`Unable to register actions for '${key}', already registered: ${this.actions[key]}`);\n    }\n\n    this.actions[key] = func;\n  }\n\n  registerStore(key, func) {\n    if (this.stores[key]) {\n      throw new Error(`Unable to register store for '${key}', already registered: ${this.stores[key]}`);\n    }\n\n    this.stores[key] = func;\n  }\n\n  get(name) {\n    const result = {};\n\n    if (this.stores[name]) {\n      const _result = this.stores[name]();\n\n      result[`${name}Store`] = _result && _result.default ? _result.default : _result;\n    }\n\n    if (this.actions[name]) {\n      const _result = this.actions[name]();\n\n      result[`${name}Actions`] = _result && _result.default ? _result.default : _result;\n    }\n\n    return result;\n  }\n}\n\nif (typeof window.combinedProvider === 'undefined') {\n  window.combinedProvider = new CombinedProvider();\n}\n\nexport default window.combinedProvider;\n","module.exports = (__webpack_require__(\"jaIgFIJB\"))(1);","\"use strict\";\n\n/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nvar create = function create(metadata, exports) {\n  return {\n    metadata: metadata,\n    exports: exports\n  };\n};\n\nmodule.exports = create;","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nconst FilterPreviewActions = Reflux.createActions({\n  create: { asyncResult: true },\n  execute: { asyncResult: true },\n  search: { asyncResult: true },\n});\n\nexport default FilterPreviewActions;\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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\n/**\n * Creates a set of padding attributes.\n *\n * @param {object} opts\n *   @param {string} editType:\n *     the editType for all pieces of this padding definition\n *\n * @return {object} attributes object containing {t, r, b, l} as specified\n */\nmodule.exports = function(opts) {\n    var editType = opts.editType;\n    return {\n        t: {\n            valType: 'number',\n            dflt: 0,\n            role: 'style',\n            editType: editType,\n            description: 'The amount of padding (in px) along the top of the component.'\n        },\n        r: {\n            valType: 'number',\n            dflt: 0,\n            role: 'style',\n            editType: editType,\n            description: 'The amount of padding (in px) on the right side of the component.'\n        },\n        b: {\n            valType: 'number',\n            dflt: 0,\n            role: 'style',\n            editType: editType,\n            description: 'The amount of padding (in px) along the bottom of the component.'\n        },\n        l: {\n            valType: 'number',\n            dflt: 0,\n            role: 'style',\n            editType: editType,\n            description: 'The amount of padding (in px) on the left side of the component.'\n        },\n        editType: editType\n    };\n};\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\nimport URI from 'urijs';\nimport lodash from 'lodash';\n\nimport * as URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport fetch from 'logic/rest/FetchProvider';\nimport CombinedProvider from 'injection/CombinedProvider';\n\nconst { EventNotificationsActions } = CombinedProvider.get('EventNotifications');\n\nconst EventNotificationsStore = Reflux.createStore({\n  listenables: [EventNotificationsActions],\n  sourceUrl: '/events/notifications',\n  all: undefined,\n  allLegacyTypes: undefined,\n  notifications: undefined,\n  query: undefined,\n  pagination: {\n    count: undefined,\n    page: undefined,\n    pageSize: undefined,\n    total: undefined,\n    grandTotal: undefined,\n  },\n\n  getInitialState() {\n    return this.getState();\n  },\n\n  propagateChanges() {\n    this.trigger(this.getState());\n  },\n\n  getState() {\n    return {\n      all: this.all,\n      allLegacyTypes: this.allLegacyTypes,\n      notifications: this.notifications,\n      query: this.query,\n      pagination: this.pagination,\n    };\n  },\n\n  eventNotificationsUrl({ segments = [], query = {} }) {\n    const uri = new URI(this.sourceUrl);\n    const nextSegments = lodash.concat(uri.segment(), segments);\n\n    uri.segmentCoded(nextSegments);\n    uri.query(query);\n\n    return URLUtils.qualifyUrl(uri.resource());\n  },\n\n  refresh() {\n    if (this.all) {\n      this.listAll();\n    }\n\n    if (this.pagination.page) {\n      this.listPaginated({\n        query: this.query,\n        page: this.pagination.page,\n        pageSize: this.pagination.pageSize,\n      });\n    }\n  },\n\n  listAll() {\n    const promise = fetch('GET', this.eventNotificationsUrl({ query: { per_page: 0 } }));\n\n    promise.then((response) => {\n      this.all = response.notifications;\n      this.propagateChanges();\n\n      return response;\n    });\n\n    EventNotificationsActions.listAll.promise(promise);\n  },\n\n  listPaginated({ query = '', page = 1, pageSize = 10 }) {\n    const promise = fetch('GET', this.eventNotificationsUrl({\n      query: {\n        query: query,\n        page: page,\n        per_page: pageSize,\n      },\n    }));\n\n    promise.then((response) => {\n      this.notifications = response.notifications;\n      this.query = response.query;\n\n      this.pagination = {\n        count: response.count,\n        page: response.page,\n        pageSize: response.per_page,\n        total: response.total,\n        grandTotal: response.grand_total,\n      };\n\n      this.propagateChanges();\n\n      return response;\n    });\n\n    EventNotificationsActions.listPaginated.promise(promise);\n  },\n\n  get(notificationId) {\n    const promise = fetch('GET', this.eventNotificationsUrl({ segments: [notificationId] }));\n\n    promise.catch((error) => {\n      if (error.status === 404) {\n        UserNotification.error(`Unable to find Event Notification with id <${notificationId}>, please ensure it wasn't deleted.`,\n          'Could not retrieve Event Notification');\n      }\n    });\n\n    EventNotificationsActions.get.promise(promise);\n  },\n\n  create(notification) {\n    const promise = fetch('POST', this.eventNotificationsUrl({}), notification);\n\n    promise.then(\n      (response) => {\n        UserNotification.success('Notification created successfully', `Notification \"${notification.title}\" was created successfully.`);\n        this.refresh();\n\n        return response;\n      },\n      (error) => {\n        if (error.status !== 400 || !error.additional.body || !error.additional.body.failed) {\n          UserNotification.error(`Creating Notification \"${notification.title}\" failed with status: ${error}`,\n            'Could not save Notification');\n        }\n      },\n    );\n\n    EventNotificationsActions.create.promise(promise);\n  },\n\n  update(notificationId, notification) {\n    const promise = fetch('PUT', this.eventNotificationsUrl({ segments: [notificationId] }), notification);\n\n    promise.then(\n      (response) => {\n        UserNotification.success('Notification updated successfully', `Notification \"${notification.title}\" was updated successfully.`);\n        this.refresh();\n\n        return response;\n      },\n      (error) => {\n        if (error.status !== 400 || !error.additional.body || !error.additional.body.failed) {\n          UserNotification.error(`Updating Notification \"${notification.title}\" failed with status: ${error}`,\n            'Could not update Notification');\n        }\n      },\n    );\n\n    EventNotificationsActions.update.promise(promise);\n  },\n\n  delete(notification) {\n    const promise = fetch('DELETE', this.eventNotificationsUrl({ segments: [notification.id] }));\n\n    promise.then(\n      () => {\n        UserNotification.success('Notification deleted successfully', `Notification \"${notification.title}\" was deleted successfully.`);\n        this.refresh();\n      },\n      (error) => {\n        UserNotification.error(`Deleting Notification \"${notification.title}\" failed with status: ${error}`,\n          'Could not delete Notification');\n      },\n    );\n\n    EventNotificationsActions.delete.promise(promise);\n  },\n\n  test(notification) {\n    const promise = fetch('POST', this.eventNotificationsUrl({ segments: ['test'] }), notification);\n\n    EventNotificationsActions.test.promise(promise);\n  },\n\n  testPersisted(notification) {\n    const promise = fetch('POST', this.eventNotificationsUrl({ segments: [notification.id, 'test'] }));\n\n    EventNotificationsActions.testPersisted.promise(promise);\n  },\n\n  listAllLegacyTypes() {\n    const promise = fetch('GET', this.eventNotificationsUrl({ segments: ['legacy', 'types'] }));\n\n    promise.then((response) => {\n      this.allLegacyTypes = response.types;\n      this.propagateChanges();\n\n      return response;\n    });\n\n    EventNotificationsActions.listAllLegacyTypes.promise(promise);\n  },\n});\n\nexport default EventNotificationsStore;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport { qualifyUrl } from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\nimport ActionsProvider from 'injection/ActionsProvider';\n\nconst IndexerOverviewActions = ActionsProvider.getActions('IndexerOverview');\n\nexport type IndexSummary = {\n  size: {\n    events: number,\n    deleted: number,\n    bytes: number,\n  },\n  range: {\n    index_name: string,\n    begin: string,\n    end: string,\n    calculated_at: string,\n    took_ms: number,\n  },\n  is_deflector: boolean,\n  is_closed: boolean,\n  is_reopened: boolean,\n};\n\nexport type IndexerOverview = {\n  deflector: {\n    current_target: string,\n    is_up: boolean,\n  },\n  indexer_cluster: {\n    health: {\n      status: string,\n      name: string,\n      shards: {\n        active: number,\n        initializing: number,\n        relocating: number,\n        unassigned: number,\n      },\n    },\n  },\n  counts: {\n    [key: string]: number,\n  },\n  indices: {\n    [key: string]: IndexSummary,\n  },\n};\n\nconst IndexerOverviewStore = Reflux.createStore({\n  listenables: [IndexerOverviewActions],\n  indexerOverview: undefined,\n  indexerOverviewError: undefined,\n\n  getInitialState() {\n    return {\n      indexerOverview: this.indexerOverview,\n      indexerOverviewError: this.indexerOverviewError,\n    };\n  },\n\n  list(indexSetId: string) {\n    const url = qualifyUrl(ApiRoutes.IndexerOverviewApiResource.list(indexSetId).url);\n    const promise = fetch('GET', url);\n\n    promise.then(\n      (response: IndexerOverview) => {\n        this.trigger({ indexerOverview: response, indexerOverviewError: undefined });\n      },\n      (error) => {\n        if (error.additional && error.additional.status === 503) {\n          const errorMessage = (error.additional.body && error.additional.body.message\n            ? error.additional.body.message\n            : 'Elasticsearch is unavailable. Check your configuration and logs for more information.');\n\n          this.trigger({ indexerOverviewError: errorMessage });\n        }\n      },\n    );\n\n    IndexerOverviewActions.list.promise(promise);\n\n    return promise;\n  },\n});\n\nexport default IndexerOverviewStore;\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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\n\nmodule.exports = {\n    /**\n     * Standardize all missing data in calcdata to use undefined\n     * never null or NaN.\n     * That way we can use !==undefined, or !== BADNUM,\n     * to test for real data\n     */\n    BADNUM: undefined,\n\n    /*\n     * Limit certain operations to well below floating point max value\n     * to avoid glitches: Make sure that even when you multiply it by the\n     * number of pixels on a giant screen it still works\n     */\n    FP_SAFE: Number.MAX_VALUE / 10000,\n\n    /*\n     * conversion of date units to milliseconds\n     * year and month constants are marked \"AVG\"\n     * to remind us that not all years and months\n     * have the same length\n     */\n    ONEMAXYEAR: 31622400000, // 366 * ONEDAY\n    ONEAVGYEAR: 31557600000, // 365.25 days\n    ONEMINYEAR: 31536000000, // 365 * ONEDAY\n    ONEMAXQUARTER: 7948800000, // 92 * ONEDAY\n    ONEAVGQUARTER: 7889400000, // 1/4 of ONEAVGYEAR\n    ONEMINQUARTER: 7689600000, // 89 * ONEDAY\n    ONEMAXMONTH: 2678400000, // 31 * ONEDAY\n    ONEAVGMONTH: 2629800000, // 1/12 of ONEAVGYEAR\n    ONEMINMONTH: 2419200000, // 28 * ONEDAY\n    ONEWEEK: 604800000, // 7 * ONEDAY\n    ONEDAY: 86400000, // 24 * ONEHOUR\n    ONEHOUR: 3600000,\n    ONEMIN: 60000,\n    ONESEC: 1000,\n\n    /*\n     * For fast conversion btwn world calendars and epoch ms, the Julian Day Number\n     * of the unix epoch. From calendars.instance().newDate(1970, 1, 1).toJD()\n     */\n    EPOCHJD: 2440587.5,\n\n    /*\n     * Are two values nearly equal? Compare to 1PPM\n     */\n    ALMOST_EQUAL: 1 - 1e-6,\n\n    /*\n     * If we're asked to clip a non-positive log value, how far off-screen\n     * do we put it?\n     */\n    LOG_CLIP: 10,\n\n    /*\n     * not a number, but for displaying numbers: the \"minus sign\" symbol is\n     * wider than the regular ascii dash \"-\"\n     */\n    MINUS_SIGN: '\\u2212'\n};\n","module.exports = (__webpack_require__(\"jaIgFIJB\"))(610);","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n    RFC1738: 'RFC1738',\n    RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n    'default': Format.RFC3986,\n    formatters: {\n        RFC1738: function (value) {\n            return replace.call(value, percentTwenties, '+');\n        },\n        RFC3986: function (value) {\n            return String(value);\n        }\n    },\n    RFC1738: Format.RFC1738,\n    RFC3986: Format.RFC3986\n};\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\nimport jQuery from 'jquery';\nimport md5 from 'md5';\n\nimport MessageFormatter from 'logic/message/MessageFormatter';\nimport * as URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\n\nimport { MESSAGE_FIELD, SOURCE_FIELD } from '../../views/Constants';\n\nconst UniversalSearchStore = Reflux.createStore({\n  DEFAULT_LIMIT: 150,\n  listenables: [],\n\n  search(type, query, timerange, streamId, limit, page, sortField, sortOrder, decorate) {\n    const timerangeParams = UniversalSearchStore.extractTimeRange(type, timerange);\n    const effectiveLimit = limit || this.DEFAULT_LIMIT;\n    const offset = (page - 1) * effectiveLimit;\n\n    const url = URLUtils.qualifyUrl(ApiRoutes.UniversalSearchApiController.search(type, query,\n      timerangeParams, streamId, effectiveLimit, offset, sortField, sortOrder, decorate).url);\n\n    return fetch('GET', url).then((response) => {\n      const result = jQuery.extend({}, response);\n\n      result.fields = response.fields.map((field) => {\n        return {\n          hash: md5(field),\n          name: field,\n          standard_selected: (field === MESSAGE_FIELD || field === SOURCE_FIELD),\n        };\n      });\n\n      result.messages = result.messages.map((message) => MessageFormatter.formatMessageSummary(message));\n\n      return result;\n    });\n  },\n});\n\nUniversalSearchStore.extractTimeRange = (type, timerange) => {\n  // The server API uses the `range` parameter instead of `relative` for indicating a relative time range.\n  if (type === 'relative') {\n    return { range: timerange.range || timerange.relative };\n  }\n\n  return timerange;\n};\n\nexport default UniversalSearchStore;\n","module.exports = rotateY;\n\n/**\n * Rotates a matrix by the given angle around the Y axis\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nfunction rotateY(out, a, rad) {\n    var s = Math.sin(rad),\n        c = Math.cos(rad),\n        a00 = a[0],\n        a01 = a[1],\n        a02 = a[2],\n        a03 = a[3],\n        a20 = a[8],\n        a21 = a[9],\n        a22 = a[10],\n        a23 = a[11];\n\n    if (a !== out) { // If the source and destination differ, copy the unchanged rows\n        out[4]  = a[4];\n        out[5]  = a[5];\n        out[6]  = a[6];\n        out[7]  = a[7];\n        out[12] = a[12];\n        out[13] = a[13];\n        out[14] = a[14];\n        out[15] = a[15];\n    }\n\n    // Perform axis-specific matrix multiplication\n    out[0] = a00 * c - a20 * s;\n    out[1] = a01 * c - a21 * s;\n    out[2] = a02 * c - a22 * s;\n    out[3] = a03 * c - a23 * s;\n    out[8] = a00 * s + a20 * c;\n    out[9] = a01 * s + a21 * c;\n    out[10] = a02 * s + a22 * c;\n    out[11] = a03 * s + a23 * c;\n    return out;\n};","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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/**\n * Determine the position anchor property of x/y xanchor/yanchor components.\n *\n * - values < 1/3 align the low side at that fraction,\n * - values [1/3, 2/3] align the center at that fraction,\n * - values > 2/3 align the right at that fraction.\n */\n\n\nexports.isLeftAnchor = function isLeftAnchor(opts) {\n    return (\n      opts.xanchor === 'left' ||\n      (opts.xanchor === 'auto' && opts.x <= 1 / 3)\n    );\n};\n\nexports.isCenterAnchor = function isCenterAnchor(opts) {\n    return (\n        opts.xanchor === 'center' ||\n        (opts.xanchor === 'auto' && opts.x > 1 / 3 && opts.x < 2 / 3)\n    );\n};\n\nexports.isRightAnchor = function isRightAnchor(opts) {\n    return (\n      opts.xanchor === 'right' ||\n      (opts.xanchor === 'auto' && opts.x >= 2 / 3)\n    );\n};\n\nexports.isTopAnchor = function isTopAnchor(opts) {\n    return (\n        opts.yanchor === 'top' ||\n        (opts.yanchor === 'auto' && opts.y >= 2 / 3)\n    );\n};\n\nexports.isMiddleAnchor = function isMiddleAnchor(opts) {\n    return (\n        opts.yanchor === 'middle' ||\n        (opts.yanchor === 'auto' && opts.y > 1 / 3 && opts.y < 2 / 3)\n    );\n};\n\nexports.isBottomAnchor = function isBottomAnchor(opts) {\n    return (\n      opts.yanchor === 'bottom' ||\n      (opts.yanchor === 'auto' && opts.y <= 1 / 3)\n    );\n};\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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 Lib = require('../../lib');\nvar Template = require('../../plot_api/plot_template');\n\nvar handleTickValueDefaults = require('../../plots/cartesian/tick_value_defaults');\nvar handleTickMarkDefaults = require('../../plots/cartesian/tick_mark_defaults');\nvar handleTickLabelDefaults = require('../../plots/cartesian/tick_label_defaults');\n\nvar attributes = require('./attributes');\n\nmodule.exports = function colorbarDefaults(containerIn, containerOut, layout) {\n    var colorbarOut = Template.newContainer(containerOut, 'colorbar');\n    var colorbarIn = containerIn.colorbar || {};\n\n    function coerce(attr, dflt) {\n        return Lib.coerce(colorbarIn, colorbarOut, attributes, attr, dflt);\n    }\n\n    var thicknessmode = coerce('thicknessmode');\n    coerce('thickness', (thicknessmode === 'fraction') ?\n        30 / (layout.width - layout.margin.l - layout.margin.r) :\n        30\n    );\n\n    var lenmode = coerce('lenmode');\n    coerce('len', (lenmode === 'fraction') ?\n        1 :\n        layout.height - layout.margin.t - layout.margin.b\n    );\n\n    coerce('x');\n    coerce('xanchor');\n    coerce('xpad');\n    coerce('y');\n    coerce('yanchor');\n    coerce('ypad');\n    Lib.noneOrAll(colorbarIn, colorbarOut, ['x', 'y']);\n\n    coerce('outlinecolor');\n    coerce('outlinewidth');\n    coerce('bordercolor');\n    coerce('borderwidth');\n    coerce('bgcolor');\n    var ticklabelposition = coerce('ticklabelposition');\n\n    handleTickValueDefaults(colorbarIn, colorbarOut, coerce, 'linear');\n\n    var opts = {outerTicks: false, font: layout.font};\n    if(ticklabelposition.indexOf('inside') !== -1) {\n        opts.bgColor = 'black'; // could we instead use the average of colors in the scale?\n    }\n    handleTickLabelDefaults(colorbarIn, colorbarOut, coerce, 'linear', opts);\n    handleTickMarkDefaults(colorbarIn, colorbarOut, coerce, 'linear', opts);\n\n    coerce('title.text', layout._dfltTitle.colorbar);\n    Lib.coerceFont(coerce, 'title.font', layout.font);\n    coerce('title.side');\n};\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nconst EventNotificationsActions = Reflux.createActions({\n  listAll: { asyncResult: true },\n  listAllLegacyTypes: { asyncResult: true },\n  listPaginated: { asyncResult: true },\n  get: { asyncResult: true },\n  create: { asyncResult: true },\n  update: { asyncResult: true },\n  delete: { asyncResult: true },\n  test: { asyncResult: true },\n  testPersisted: { asyncResult: true },\n});\n\nexport default EventNotificationsActions;\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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 d3 = require('d3');\nvar loggers = require('./loggers');\nvar matrix = require('./matrix');\nvar mat4X4 = require('gl-mat4');\n\n/**\n * Allow referencing a graph DOM element either directly\n * or by its id string\n *\n * @param {HTMLDivElement|string} gd: a graph element or its id\n *\n * @returns {HTMLDivElement} the DOM element of the graph\n */\nfunction getGraphDiv(gd) {\n    var gdElement;\n\n    if(typeof gd === 'string') {\n        gdElement = document.getElementById(gd);\n\n        if(gdElement === null) {\n            throw new Error('No DOM element with id \\'' + gd + '\\' exists on the page.');\n        }\n\n        return gdElement;\n    } else if(gd === null || gd === undefined) {\n        throw new Error('DOM element provided is null or undefined');\n    }\n\n    // otherwise assume that gd is a DOM element\n    return gd;\n}\n\nfunction isPlotDiv(el) {\n    var el3 = d3.select(el);\n    return el3.node() instanceof HTMLElement &&\n        el3.size() &&\n        el3.classed('js-plotly-plot');\n}\n\nfunction removeElement(el) {\n    var elParent = el && el.parentNode;\n    if(elParent) elParent.removeChild(el);\n}\n\n/**\n * for dynamically adding style rules\n * makes one stylesheet that contains all rules added\n * by all calls to this function\n */\nfunction addStyleRule(selector, styleString) {\n    addRelatedStyleRule('global', selector, styleString);\n}\n\n/**\n * for dynamically adding style rules\n * to a stylesheet uniquely identified by a uid\n */\nfunction addRelatedStyleRule(uid, selector, styleString) {\n    var id = 'plotly.js-style-' + uid;\n    var style = document.getElementById(id);\n    if(!style) {\n        style = document.createElement('style');\n        style.setAttribute('id', id);\n        // WebKit hack :(\n        style.appendChild(document.createTextNode(''));\n        document.head.appendChild(style);\n    }\n    var styleSheet = style.sheet;\n\n    if(styleSheet.insertRule) {\n        styleSheet.insertRule(selector + '{' + styleString + '}', 0);\n    } else if(styleSheet.addRule) {\n        styleSheet.addRule(selector, styleString, 0);\n    } else loggers.warn('addStyleRule failed');\n}\n\n/**\n * to remove from the page a stylesheet identified by a given uid\n */\nfunction deleteRelatedStyleRule(uid) {\n    var id = 'plotly.js-style-' + uid;\n    var style = document.getElementById(id);\n    if(style) removeElement(style);\n}\n\nfunction getFullTransformMatrix(element) {\n    var allElements = getElementAndAncestors(element);\n    // the identity matrix\n    var out = [\n        1, 0, 0, 0,\n        0, 1, 0, 0,\n        0, 0, 1, 0,\n        0, 0, 0, 1\n    ];\n    allElements.forEach(function(e) {\n        var t = getElementTransformMatrix(e);\n        if(t) {\n            var m = matrix.convertCssMatrix(t);\n            out = mat4X4.multiply(out, out, m);\n        }\n    });\n    return out;\n}\n\n/**\n * extracts and parses the 2d css style transform matrix from some element\n */\nfunction getElementTransformMatrix(element) {\n    var style = window.getComputedStyle(element, null);\n    var transform = (\n      style.getPropertyValue('-webkit-transform') ||\n      style.getPropertyValue('-moz-transform') ||\n      style.getPropertyValue('-ms-transform') ||\n      style.getPropertyValue('-o-transform') ||\n      style.getPropertyValue('transform')\n    );\n\n    if(transform === 'none') return null;\n    // the transform is a string in the form of matrix(a, b, ...) or matrix3d(...)\n    return transform\n        .replace('matrix', '')\n        .replace('3d', '')\n        .slice(1, -1)\n        .split(',')\n        .map(function(n) { return +n; });\n}\n/**\n * retrieve all DOM elements that are ancestors of the specified one (including itself)\n */\nfunction getElementAndAncestors(element) {\n    var allElements = [];\n    while(isTransformableElement(element)) {\n        allElements.push(element);\n        element = element.parentNode;\n    }\n    return allElements;\n}\n\nfunction isTransformableElement(element) {\n    return element && (element instanceof Element || element instanceof HTMLElement);\n}\n\nfunction equalDomRects(a, b) {\n    return (\n        a && b &&\n        a.x === b.x &&\n        a.y === b.y &&\n        a.top === b.top &&\n        a.left === b.left &&\n        a.right === b.right &&\n        a.bottom === b.bottom\n    );\n}\n\nmodule.exports = {\n    getGraphDiv: getGraphDiv,\n    isPlotDiv: isPlotDiv,\n    removeElement: removeElement,\n    addStyleRule: addStyleRule,\n    addRelatedStyleRule: addRelatedStyleRule,\n    deleteRelatedStyleRule: deleteRelatedStyleRule,\n    getFullTransformMatrix: getFullTransformMatrix,\n    getElementTransformMatrix: getElementTransformMatrix,\n    getElementAndAncestors: getElementAndAncestors,\n    equalDomRects: equalDomRects\n};\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\nimport Promise from 'bluebird';\n\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\nimport ActionsProvider from 'injection/ActionsProvider';\nimport ExtractorUtils from 'util/ExtractorUtils';\nimport * as URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\n\nconst ExtractorsActions = ActionsProvider.getActions('Extractors');\n\nfunction getExtractorDTO(extractor) {\n  const converters = {};\n\n  extractor.converters.forEach((converter) => {\n    converters[converter.type] = converter.config;\n  });\n\n  const conditionValue = extractor.condition_type && extractor.condition_type !== 'none' ? extractor.condition_value : '';\n\n  return {\n    title: extractor.title,\n    cut_or_copy: extractor.cursor_strategy || 'copy',\n    source_field: extractor.source_field,\n    target_field: extractor.target_field,\n    extractor_type: extractor.type || extractor.extractor_type, // \"extractor_type\" needed for imports\n    extractor_config: extractor.extractor_config,\n    converters: converters,\n    condition_type: extractor.condition_type || 'none',\n    condition_value: conditionValue,\n    order: extractor.order,\n  };\n}\n\nconst ExtractorsStore = Reflux.createStore({\n  listenables: [ExtractorsActions],\n  sourceUrl: '/system/inputs/',\n  extractors: undefined,\n  extractor: undefined,\n\n  init() {\n    this.trigger({ extractors: this.extractors, extractor: this.extractor });\n  },\n\n  list(inputId) {\n    const promise = fetch('GET', URLUtils.qualifyUrl(URLUtils.concatURLPath(this.sourceUrl, inputId, 'extractors')));\n\n    promise.then((response) => {\n      this.extractors = response.extractors;\n      this.trigger({ extractors: this.extractors });\n    });\n\n    ExtractorsActions.list.promise(promise);\n  },\n\n  // Creates an basic extractor object that we can use to create new extractors.\n  new(type, field) {\n    if (ExtractorUtils.EXTRACTOR_TYPES.indexOf(type) === -1) {\n      throw new Error(`Invalid extractor type provided: ${type}`);\n    }\n\n    return {\n      type: type,\n      source_field: field,\n      converters: [],\n      extractor_config: {},\n      target_field: '',\n    };\n  },\n\n  get(inputId, extractorId) {\n    const promise = fetch('GET', URLUtils.qualifyUrl(URLUtils.concatURLPath(this.sourceUrl, inputId, 'extractors', extractorId)));\n\n    promise.then((response) => {\n      this.extractor = response;\n      this.trigger({ extractor: this.extractor });\n    });\n\n    ExtractorsActions.get.promise(promise);\n  },\n\n  save(inputId, extractor) {\n    let promise;\n\n    if (extractor.id) {\n      promise = this.update(inputId, extractor, true);\n    } else {\n      promise = this.create(inputId, extractor, true);\n    }\n\n    ExtractorsActions.save.promise(promise);\n  },\n\n  _silentExtractorCreate(inputId, extractor) {\n    const url = URLUtils.qualifyUrl(ApiRoutes.ExtractorsController.create(inputId).url);\n\n    return fetch('POST', url, getExtractorDTO(extractor));\n  },\n\n  create(inputId, extractor, calledFromMethod) {\n    const promise = this._silentExtractorCreate(inputId, extractor);\n\n    promise\n      .then(() => {\n        UserNotification.success(`Extractor ${extractor.title} created successfully`);\n\n        if (this.extractor) {\n          ExtractorsActions.get.triggerPromise(inputId, extractor.id);\n        }\n      })\n      .catch((error) => {\n        UserNotification.error(`Creating extractor failed: ${error}`,\n          'Could not create extractor');\n      });\n\n    if (!calledFromMethod) {\n      ExtractorsActions.create.promise(promise);\n    }\n\n    return promise;\n  },\n\n  update(inputId, extractor, calledFromMethod) {\n    const url = URLUtils.qualifyUrl(ApiRoutes.ExtractorsController.update(inputId, extractor.id).url);\n\n    const promise = fetch('PUT', url, getExtractorDTO(extractor));\n\n    promise\n      .then(() => {\n        UserNotification.success(`Extractor \"${extractor.title}\" updated successfully`);\n\n        if (this.extractor) {\n          ExtractorsActions.get.triggerPromise(inputId, extractor.id);\n        }\n      })\n      .catch((error) => {\n        UserNotification.error(`Updating extractor failed: ${error}`,\n          'Could not update extractor');\n      });\n\n    if (!calledFromMethod) {\n      ExtractorsActions.update.promise(promise);\n    }\n\n    return promise;\n  },\n\n  delete(inputId, extractor) {\n    const url = URLUtils.qualifyUrl(ApiRoutes.ExtractorsController.delete(inputId, extractor.id).url);\n\n    const promise = fetch('DELETE', url);\n\n    promise\n      .then(() => {\n        UserNotification.success(`Extractor \"${extractor.title}\" deleted successfully`);\n\n        if (this.extractors) {\n          ExtractorsActions.list.triggerPromise(inputId);\n        }\n      })\n      .catch((error) => {\n        UserNotification.error(`Deleting extractor failed: ${error}`,\n          `Could not delete extractor ${extractor.title}`);\n      });\n\n    ExtractorsActions.delete.promise(promise);\n  },\n\n  order(inputId, orderedExtractors) {\n    const url = URLUtils.qualifyUrl(ApiRoutes.ExtractorsController.order(inputId).url);\n    const orderedExtractorsMap = {};\n\n    orderedExtractors.forEach((extractor, idx) => orderedExtractorsMap[idx] = extractor.id);\n\n    const promise = fetch('POST', url, { order: orderedExtractorsMap });\n\n    promise.then(() => {\n      UserNotification.success('Extractor positions updated successfully');\n\n      if (this.extractors) {\n        ExtractorsActions.list.triggerPromise(inputId);\n      }\n    });\n\n    promise.catch((error) => {\n      UserNotification.error(`Changing extractor positions failed: ${error}`,\n        'Could not update extractor positions');\n    });\n\n    ExtractorsActions.order.promise(promise);\n  },\n\n  import(inputId, extractors) {\n    let successfulImports = 0;\n    let failedImports = 0;\n    const promises = [];\n\n    extractors.forEach((extractor) => {\n      const promise = this._silentExtractorCreate(inputId, extractor);\n\n      promise\n        .then(() => successfulImports++)\n        .catch(() => failedImports++);\n\n      promises.push(promise);\n    });\n\n    Promise.settle(promises).then(() => {\n      if (failedImports === 0) {\n        UserNotification.success(`Import results: ${successfulImports} extractor(s) imported.`,\n          'Import operation successful');\n      } else {\n        UserNotification.warning(`Import results: ${successfulImports} extractor(s) imported, ${failedImports} error(s).`,\n          'Import operation completed');\n      }\n    });\n  },\n});\n\nexport default ExtractorsStore;\n","module.exports = (__webpack_require__(\"jaIgFIJB\"))(800);","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport { qualifyUrl } from 'util/URLUtils';\nimport fetch from 'logic/rest/FetchProvider';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport UserNotification from 'util/UserNotification';\nimport ActionsProvider from 'injection/ActionsProvider';\nimport { SearchesConfig } from 'components/search/SearchConfig';\n\nconst ConfigurationActions = ActionsProvider.getActions('Configuration');\n\nconst urlPrefix = ApiRoutes.ClusterConfigResource.config().url;\nexport type Url = {\n  id: string,\n  value: string,\n  title: string,\n  type: string,\n};\n\nexport type WhiteListConfig = {\n  entries: Array,\n  disabled: boolean,\n};\nexport type PermissionsConfigType = {\n  allow_sharing_with_everyone: boolean,\n  allow_sharing_with_users: boolean,\n}\nexport type ConfigurationsStoreState = {\n  configuration: Record,\n  searchesClusterConfig: SearchesConfig,\n  eventsClusterConfig: {},\n};\n\nconst ConfigurationsStore = Reflux.createStore({\n  listenables: [ConfigurationActions],\n\n  configuration: {},\n  searchesClusterConfig: {},\n  eventsClusterConfig: {},\n  getInitialState() {\n    return this.getState();\n  },\n\n  getState() {\n    return {\n      configuration: this.configuration,\n      searchesClusterConfig: this.searchesClusterConfig,\n      eventsClusterConfig: this.eventsClusterConfig,\n    };\n  },\n\n  propagateChanges() {\n    this.trigger(this.getState());\n  },\n\n  _url(path) {\n    return qualifyUrl(urlPrefix + path);\n  },\n\n  list(configType) {\n    const promise = fetch('GET', this._url(`/${configType}`));\n\n    promise.then((response) => {\n      this.configuration = { ...this.configuration, [configType]: response };\n      this.propagateChanges();\n\n      return response;\n    });\n\n    ConfigurationActions.list.promise(promise);\n  },\n\n  listSearchesClusterConfig() {\n    const promise = fetch('GET', this._url('/org.graylog2.indexer.searches.SearchesClusterConfig')).then((response) => {\n      this.searchesClusterConfig = response;\n      this.propagateChanges();\n\n      return response;\n    });\n\n    ConfigurationActions.listSearchesClusterConfig.promise(promise);\n  },\n\n  listMessageProcessorsConfig(configType) {\n    const promise = fetch('GET', qualifyUrl('/system/messageprocessors/config')).then((response) => {\n      this.configuration = { ...this.configuration, [configType]: response };\n      this.propagateChanges();\n\n      return response;\n    });\n\n    ConfigurationActions.listMessageProcessorsConfig.promise(promise);\n  },\n\n  listWhiteListConfig(configType) {\n    const promise = fetch('GET', qualifyUrl('/system/urlwhitelist')).then((response) => {\n      this.configuration = { ...this.configuration, [configType]: response };\n      this.propagateChanges();\n\n      return response;\n    });\n\n    ConfigurationActions.listWhiteListConfig.promise(promise);\n  },\n\n  listPermissionsConfig(configType) {\n    const promise = fetch('GET', this._url(`/${configType}`)).then((response: PermissionsConfigType) => {\n      this.configuration = {\n        ...this.configuration,\n        // default values bellow should be the same in backend.\n        [configType]: response || {\n          allow_sharing_with_everyone: true,\n          allow_sharing_with_users: true,\n        },\n      };\n\n      this.propagateChanges();\n\n      return response;\n    });\n\n    ConfigurationActions.listPermissionsConfig.promise(promise);\n  },\n\n  listEventsClusterConfig() {\n    const promise = fetch('GET', this._url('/org.graylog.events.configuration.EventsConfiguration')).then((response) => {\n      this.eventsClusterConfig = response;\n      this.propagateChanges();\n\n      return response;\n    });\n\n    ConfigurationActions.listEventsClusterConfig.promise(promise);\n  },\n\n  update(configType, config) {\n    const promise = fetch('PUT', this._url(`/${configType}`), config);\n\n    promise.then(\n      (response) => {\n        this.configuration = { ...this.configuration, [configType]: response };\n        this.propagateChanges();\n        UserNotification.success('Configuration updated successfully');\n\n        return response;\n      },\n      (error) => {\n        UserNotification.error(`Search config update failed: ${error}`, `Could not update search config: ${configType}`);\n      },\n    );\n\n    ConfigurationActions.update.promise(promise);\n  },\n\n  updateWhitelist(configType, config) {\n    const promise = fetch('PUT', qualifyUrl('/system/urlwhitelist'), config);\n\n    promise.then(\n      () => {\n        this.configuration = { ...this.configuration, [configType]: config };\n        this.propagateChanges();\n        UserNotification.success('Url Whitelist Configuration updated successfully');\n\n        return config;\n      },\n      (error) => {\n        UserNotification.error(`Url Whitelist config update failed: ${error}`, `Could not update Url Whitelist: ${configType}`);\n      },\n    );\n\n    ConfigurationActions.updateWhitelist.promise(promise);\n  },\n\n  updateMessageProcessorsConfig(configType, config) {\n    const promise = fetch('PUT', qualifyUrl('/system/messageprocessors/config'), config);\n\n    promise.then(\n      (response) => {\n        this.configuration = { ...this.configuration, [configType]: response };\n        this.propagateChanges();\n        UserNotification.success('Configuration updated successfully');\n\n        return response;\n      },\n      (error) => {\n        UserNotification.error(`Message processors config update failed: ${error}`, `Could not update config: ${configType}`);\n      },\n    );\n\n    ConfigurationActions.updateMessageProcessorsConfig.promise(promise);\n  },\n});\n\nexport default ConfigurationsStore;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport { Map, Set } from 'immutable';\nimport { concat, remove } from 'lodash';\nimport uuid from 'uuid/v4';\n\nimport Entity from './Entity';\n\nexport default class ContentPack {\n  constructor(v, id, rev, name, summary, description, vendor, url, parameters, entitieValues) {\n    const entities = entitieValues.map((e) => {\n      if (e instanceof Entity) {\n        return e;\n      }\n\n      return Entity.fromJSON(e, false, parameters);\n    });\n\n    this._value = {\n      v,\n      id,\n      rev,\n      name,\n      summary,\n      description,\n      vendor,\n      url,\n      parameters,\n      entities,\n    };\n  }\n\n  get v() {\n    return this._value.v;\n  }\n\n  get id() {\n    return this._value.id;\n  }\n\n  get rev() {\n    return this._value.rev;\n  }\n\n  get name() {\n    return this._value.name;\n  }\n\n  get summary() {\n    return this._value.summary;\n  }\n\n  get description() {\n    return this._value.description;\n  }\n\n  get vendor() {\n    return this._value.vendor;\n  }\n\n  get url() {\n    return this._value.url;\n  }\n\n  get constraints() {\n    return this._value.entities.reduce((acc, entity) => {\n      return entity.constraints.reduce((result, constraint) => {\n        return result.add(constraint);\n      }, acc);\n    }, Set());\n  }\n\n  get parameters() {\n    return this._value.parameters;\n  }\n\n  get entities() {\n    return this._value.entities;\n  }\n\n  toBuilder() {\n    const {\n      v,\n      id,\n      rev,\n      name,\n      summary,\n      description,\n      vendor,\n      url,\n      parameters,\n      entities,\n    } = this._value;\n\n    // eslint-disable-next-line no-use-before-define\n    return new Builder(Map({\n      v,\n      id,\n      rev,\n      name,\n      summary,\n      description,\n      vendor,\n      url,\n      parameters,\n      entities,\n    }));\n  }\n\n  toJSON() {\n    const {\n      v,\n      id,\n      rev,\n      name,\n      summary,\n      description,\n      vendor,\n      url,\n      parameters,\n      entities,\n    } = this._value;\n\n    const entitiesJSON = entities.map((e) => e.toJSON());\n\n    return {\n      v,\n      id,\n      rev,\n      name,\n      summary,\n      description,\n      vendor,\n      url,\n      parameters,\n      entities: entitiesJSON,\n    };\n  }\n\n  static fromJSON(value) {\n    const {\n      v,\n      id,\n      rev,\n      name,\n      summary,\n      description,\n      vendor,\n      url,\n      parameters,\n      entities,\n    } = value;\n\n    return new ContentPack(\n      v,\n      id,\n      rev,\n      name,\n      summary,\n      description,\n      vendor,\n      url,\n      parameters,\n      entities,\n    );\n  }\n\n  static builder() {\n    // eslint-disable-next-line no-use-before-define\n    return new Builder()\n      .v(1)\n      .id(uuid())\n      .rev(1)\n      .name('')\n      .summary('')\n      .description('')\n      .vendor('')\n      .url('')\n      .parameters([])\n      .entities([]);\n  }\n}\n\nclass Builder {\n  constructor(value = Map()) {\n    this.value = value;\n  }\n\n  v(value) {\n    this.value = this.value.set('v', value);\n\n    return this;\n  }\n\n  id(value) {\n    this.value = this.value.set('id', value);\n\n    return this;\n  }\n\n  rev(value) {\n    this.value = this.value.set('rev', value);\n\n    return this;\n  }\n\n  name(value) {\n    this.value = this.value.set('name', value);\n\n    return this;\n  }\n\n  summary(value) {\n    this.value = this.value.set('summary', value);\n\n    return this;\n  }\n\n  description(value) {\n    this.value = this.value.set('description', value);\n\n    return this;\n  }\n\n  vendor(value) {\n    this.value = this.value.set('vendor', value);\n\n    return this;\n  }\n\n  url(value) {\n    this.value = this.value.set('url', value);\n\n    return this;\n  }\n\n  parameters(value) {\n    this.value = this.value.set('parameters', value);\n\n    return this;\n  }\n\n  removeParameter(value) {\n    const parameters = this.value.get('parameters').slice(0);\n\n    remove(parameters, (parameter) => parameter.name === value.name);\n    this.value = this.value.set('parameters', parameters);\n\n    return this;\n  }\n\n  addParameter(value) {\n    const parameters = this.value.get('parameters');\n    const newParameters = concat(parameters, value);\n\n    this.value = this.value.set('parameters', newParameters);\n\n    return this;\n  }\n\n  entities(value) {\n    this.value = this.value.set('entities', value);\n\n    return this;\n  }\n\n  build() {\n    const {\n      v,\n      id,\n      rev,\n      name,\n      summary,\n      description,\n      vendor,\n      url,\n      parameters,\n      entities,\n    } = this.value.toObject();\n\n    return new ContentPack(\n      v,\n      id,\n      rev,\n      name,\n      summary,\n      description,\n      vendor,\n      url,\n      parameters,\n      entities,\n    );\n  }\n}\n","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n  // START: fast-deep-equal es6/index.js 3.1.1\n  if (a === b) return true;\n\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    if (a.constructor !== b.constructor) return false;\n\n    var length, i, keys;\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (!equal(a[i], b[i])) return false;\n      return true;\n    }\n\n    // START: Modifications:\n    // 1. Extra `has &&` helpers in initial condition allow es6 code\n    //    to co-exist with es5.\n    // 2. Replace `for of` with es5 compliant iteration using `for`.\n    //    Basically, take:\n    //\n    //    ```js\n    //    for (i of a.entries())\n    //      if (!b.has(i[0])) return false;\n    //    ```\n    //\n    //    ... and convert to:\n    //\n    //    ```js\n    //    it = a.entries();\n    //    while (!(i = it.next()).done)\n    //      if (!b.has(i.value[0])) return false;\n    //    ```\n    //\n    //    **Note**: `i` access switches to `i.value`.\n    var it;\n    if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n      if (a.size !== b.size) return false;\n      it = a.entries();\n      while (!(i = it.next()).done)\n        if (!b.has(i.value[0])) return false;\n      it = a.entries();\n      while (!(i = it.next()).done)\n        if (!equal(i.value[1], b.get(i.value[0]))) return false;\n      return true;\n    }\n\n    if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n      if (a.size !== b.size) return false;\n      it = a.entries();\n      while (!(i = it.next()).done)\n        if (!b.has(i.value[0])) return false;\n      return true;\n    }\n    // END: Modifications\n\n    if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (a[i] !== b[i]) return false;\n      return true;\n    }\n\n    if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n    if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n    if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) return false;\n\n    for (i = length; i-- !== 0;)\n      if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n    // END: fast-deep-equal\n\n    // START: react-fast-compare\n    // custom handling for DOM elements\n    if (hasElementType && a instanceof Element) return false;\n\n    // custom handling for React/Preact\n    for (i = length; i-- !== 0;) {\n      if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n        // React-specific: avoid traversing React elements' _owner\n        // Preact-specific: avoid traversing Preact elements' __v and __o\n        //    __v = $_original / $_vnode\n        //    __o = $_owner\n        // These properties contain circular references and are not needed when\n        // comparing the actual elements (and not their owners)\n        // .$$typeof and ._store on just reasonable markers of elements\n\n        continue;\n      }\n\n      // all other properties should be traversed as usual\n      if (!equal(a[keys[i]], b[keys[i]])) return false;\n    }\n    // END: react-fast-compare\n\n    // START: fast-deep-equal\n    return true;\n  }\n\n  return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n  try {\n    return equal(a, b);\n  } catch (error) {\n    if (((error.message || '').match(/stack|recursion/i))) {\n      // warn on circular references, don't crash\n      // browsers give this different errors name and messages:\n      // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n      // firefox: \"InternalError\", too much recursion\"\n      // edge: \"Error\", \"Out of stack space\"\n      console.warn('react-fast-compare cannot handle circular refs');\n      return false;\n    }\n    // some other error. we should definitely know about these\n    throw error;\n  }\n};\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport * as URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\nimport ActionsProvider from 'injection/ActionsProvider';\n\nconst IndexerClusterActions = ActionsProvider.getActions('IndexerCluster');\n\nconst IndexerClusterStore = Reflux.createStore({\n  listenables: [IndexerClusterActions],\n  state: {},\n  init() {\n    this.update();\n  },\n  update() {\n    Promise.all([\n      this.health().then((health) => {\n        this.state.health = health;\n      }),\n      this.name().then((response) => {\n        this.state.name = response.name;\n      }),\n    ]).then(() => this.trigger(this.state));\n  },\n  getInitialState() {\n    return this.state;\n  },\n  health() {\n    const url = URLUtils.qualifyUrl(ApiRoutes.IndexerClusterApiController.health().url);\n    const promise = fetch('GET', url);\n\n    IndexerClusterActions.health.promise(promise);\n\n    return promise;\n  },\n  name() {\n    const url = URLUtils.qualifyUrl(ApiRoutes.IndexerClusterApiController.name().url);\n    const promise = fetch('GET', url);\n\n    IndexerClusterActions.name.promise(promise);\n\n    return promise;\n  },\n});\n\nexport default IndexerClusterStore;\n","'use strict'\r\n\r\nmodule.exports = isMobile\r\nmodule.exports.isMobile = isMobile\r\nmodule.exports.default = isMobile\r\n\r\nvar mobileRE = /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series[46]0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i\r\n\r\nvar tabletRE = /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series[46]0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino|android|ipad|playbook|silk/i\r\n\r\nfunction isMobile (opts) {\r\n  if (!opts) opts = {}\r\n  var ua = opts.ua\r\n  if (!ua && typeof navigator !== 'undefined') ua = navigator.userAgent\r\n  if (ua && ua.headers && typeof ua.headers['user-agent'] === 'string') {\r\n    ua = ua.headers['user-agent']\r\n  }\r\n  if (typeof ua !== 'string') return false\r\n\r\n  var result = opts.tablet ? tabletRE.test(ua) : mobileRE.test(ua)\r\n\r\n  if (\r\n    !result &&\r\n    opts.tablet &&\r\n    opts.featureDetect &&\r\n    navigator &&\r\n    navigator.maxTouchPoints > 1 &&\r\n    ua.indexOf('Macintosh') !== -1 &&\r\n    ua.indexOf('Safari') !== -1\r\n  ) {\r\n    result = true\r\n  }\r\n\r\n  return result\r\n}\r\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nconst SidecarsActions = Reflux.createActions({\n  listPaginated: { asyncResult: true },\n  getSidecar: { asyncResult: true },\n  getSidecarActions: { asyncResult: true },\n  restartCollector: { asyncResult: true },\n  assignConfigurations: { asyncResult: true },\n});\n\nexport default SidecarsActions;\n","/*\r\n * Natural Sort algorithm for Javascript - Version 0.7 - Released under MIT license\r\n * Author: Jim Palmer (based on chunking idea from Dave Koelle)\r\n */\r\n/*jshint unused:false */\r\nmodule.exports = function naturalSort (a, b) {\r\n\t\"use strict\";\r\n\tvar re = /(^([+\\-]?(?:0|[1-9]\\d*)(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?)?$|^0x[0-9a-f]+$|\\d+)/gi,\r\n\t\tsre = /(^[ ]*|[ ]*$)/g,\r\n\t\tdre = /(^([\\w ]+,?[\\w ]+)?[\\w ]+,?[\\w ]+\\d+:\\d+(:\\d+)?[\\w ]?|^\\d{1,4}[\\/\\-]\\d{1,4}[\\/\\-]\\d{1,4}|^\\w+, \\w+ \\d+, \\d{4})/,\r\n\t\thre = /^0x[0-9a-f]+$/i,\r\n\t\tore = /^0/,\r\n\t\ti = function(s) { return naturalSort.insensitive && ('' + s).toLowerCase() || '' + s; },\r\n\t\t// convert all to strings strip whitespace\r\n\t\tx = i(a).replace(sre, '') || '',\r\n\t\ty = i(b).replace(sre, '') || '',\r\n\t\t// chunk/tokenize\r\n\t\txN = x.replace(re, '\\0$1\\0').replace(/\\0$/,'').replace(/^\\0/,'').split('\\0'),\r\n\t\tyN = y.replace(re, '\\0$1\\0').replace(/\\0$/,'').replace(/^\\0/,'').split('\\0'),\r\n\t\t// numeric, hex or date detection\r\n\t\txD = parseInt(x.match(hre), 16) || (xN.length !== 1 && x.match(dre) && Date.parse(x)),\r\n\t\tyD = parseInt(y.match(hre), 16) || xD && y.match(dre) && Date.parse(y) || null,\r\n\t\toFxNcL, oFyNcL;\r\n\t// first try and sort Hex codes or Dates\r\n\tif (yD) {\r\n\t\tif ( xD < yD ) { return -1; }\r\n\t\telse if ( xD > yD ) { return 1; }\r\n\t}\r\n\t// natural sorting through split numeric strings and default strings\r\n\tfor(var cLoc=0, numS=Math.max(xN.length, yN.length); cLoc < numS; cLoc++) {\r\n\t\t// find floats not starting with '0', string or 0 if not defined (Clint Priest)\r\n\t\toFxNcL = !(xN[cLoc] || '').match(ore) && parseFloat(xN[cLoc]) || xN[cLoc] || 0;\r\n\t\toFyNcL = !(yN[cLoc] || '').match(ore) && parseFloat(yN[cLoc]) || yN[cLoc] || 0;\r\n\t\t// handle numeric vs string comparison - number < string - (Kyle Adams)\r\n\t\tif (isNaN(oFxNcL) !== isNaN(oFyNcL)) { return (isNaN(oFxNcL)) ? 1 : -1; }\r\n\t\t// rely on string comparison if different types - i.e. '02' < 2 != '02' < '2'\r\n\t\telse if (typeof oFxNcL !== typeof oFyNcL) {\r\n\t\t\toFxNcL += '';\r\n\t\t\toFyNcL += '';\r\n\t\t}\r\n\t\tif (oFxNcL < oFyNcL) { return -1; }\r\n\t\tif (oFxNcL > oFyNcL) { return 1; }\r\n\t}\r\n\treturn 0;\r\n};\r\n","import api from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n            import content from \"!!../../node_modules/css-loader/dist/cjs.js??ref--10-1!./UserNotification.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport toastr from 'toastr';\n\nimport './UserNotification.css';\n\nconst defaultSettings = {\n  debug: false,\n  positionClass: 'toast-bottom-full-width',\n  onclick: null,\n  showDuration: 300,\n  hideDuration: 1000,\n  timeOut: 7000,\n  extendedTimeOut: 1000,\n  escapeHtml: true,\n  closeButton: true,\n  closeHtml: '',\n  progressBar: true,\n  preventDuplicates: true,\n};\n\nconst UserNotification = {\n  error(message, title) {\n    toastr.error(message, title || 'Error', {\n      ...defaultSettings,\n      timeOut: 10000,\n    });\n  },\n  warning(message, title) {\n    toastr.warning(message, title || 'Attention', defaultSettings);\n  },\n  success(message, title) {\n    toastr.success(message, title || 'Information', defaultSettings);\n  },\n};\n\nexport default UserNotification;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport UserNotification from 'util/UserNotification';\nimport * as URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\n\nconst InputStaticFieldsStore = Reflux.createStore({\n  listenables: [],\n  sourceUrl: (inputId) => `/system/inputs/${inputId}/staticfields`,\n\n  create(input, name, value) {\n    const url = URLUtils.qualifyUrl(this.sourceUrl(input.id));\n    const promise = fetch('POST', url, { key: name, value: value });\n\n    promise\n      .then(\n        (response) => {\n          this.trigger({});\n          UserNotification.success(`Static field '${name}' added to '${input.title}' successfully`);\n\n          return response;\n        },\n        (error) => {\n          UserNotification.error(`Adding static field to input failed with: ${error}`,\n            `Could not add static field to input '${input.title}'`);\n        },\n      );\n\n    return promise;\n  },\n\n  destroy(input, name) {\n    const url = URLUtils.qualifyUrl(`${this.sourceUrl(input.id)}/${name}`);\n    const promise = fetch('DELETE', url);\n\n    promise\n      .then(\n        (response) => {\n          this.trigger({});\n          UserNotification.success(`Static field '${name}' removed from '${input.title}' successfully`);\n\n          return response;\n        },\n        (error) => {\n          UserNotification.error(`Removing static field from input failed with: ${error}`,\n            `Could not remove static field '${name} from input '${input.title}'`);\n        },\n      );\n\n    return promise;\n  },\n});\n\nexport default InputStaticFieldsStore;\n","module.exports = perspective;\n\n/**\n * Generates a perspective projection matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\nfunction perspective(out, fovy, aspect, near, far) {\n    var f = 1.0 / Math.tan(fovy / 2),\n        nf = 1 / (near - far);\n    out[0] = f / aspect;\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 0;\n    out[4] = 0;\n    out[5] = f;\n    out[6] = 0;\n    out[7] = 0;\n    out[8] = 0;\n    out[9] = 0;\n    out[10] = (far + near) * nf;\n    out[11] = -1;\n    out[12] = 0;\n    out[13] = 0;\n    out[14] = (2 * far * near) * nf;\n    out[15] = 0;\n    return out;\n};","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nconst InputTypesActions = Reflux.createActions({\n  list: { asyncResult: true },\n  get: { asyncResult: true },\n});\n\nexport default InputTypesActions;\n","module.exports = (__webpack_require__(\"jaIgFIJB\"))(354);","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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 timerCache = {};\n\n/**\n * Throttle a callback. `callback` executes synchronously only if\n * more than `minInterval` milliseconds have already elapsed since the latest\n * call (if any). Otherwise we wait until `minInterval` is over and execute the\n * last callback received while waiting.\n * So the first and last events in a train are always executed (eventually)\n * but some of the events in the middle can be dropped.\n *\n * @param {string} id: an identifier to mark events to throttle together\n * @param {number} minInterval: minimum time, in milliseconds, between\n *   invocations of `callback`\n * @param {function} callback: the function to throttle. `callback` itself\n *   should be a purely synchronous function.\n */\nexports.throttle = function throttle(id, minInterval, callback) {\n    var cache = timerCache[id];\n    var now = Date.now();\n\n    if(!cache) {\n        /*\n         * Throw out old items before making a new one, to prevent the cache\n         * getting overgrown, for example from old plots that have been replaced.\n         * 1 minute age is arbitrary.\n         */\n        for(var idi in timerCache) {\n            if(timerCache[idi].ts < now - 60000) {\n                delete timerCache[idi];\n            }\n        }\n        cache = timerCache[id] = {ts: 0, timer: null};\n    }\n\n    _clearTimeout(cache);\n\n    function exec() {\n        callback();\n        cache.ts = Date.now();\n        if(cache.onDone) {\n            cache.onDone();\n            cache.onDone = null;\n        }\n    }\n\n    if(now > cache.ts + minInterval) {\n        exec();\n        return;\n    }\n\n    cache.timer = setTimeout(function() {\n        exec();\n        cache.timer = null;\n    }, minInterval);\n};\n\nexports.done = function(id) {\n    var cache = timerCache[id];\n    if(!cache || !cache.timer) return Promise.resolve();\n\n    return new Promise(function(resolve) {\n        var previousOnDone = cache.onDone;\n        cache.onDone = function onDone() {\n            if(previousOnDone) previousOnDone();\n            resolve();\n            cache.onDone = null;\n        };\n    });\n};\n\n/**\n * Clear the throttle cache for one or all timers\n * @param {optional string} id:\n *   if provided, clear just this timer\n *   if omitted, clear all timers (mainly useful for testing)\n */\nexports.clear = function(id) {\n    if(id) {\n        _clearTimeout(timerCache[id]);\n        delete timerCache[id];\n    } else {\n        for(var idi in timerCache) exports.clear(idi);\n    }\n};\n\nfunction _clearTimeout(cache) {\n    if(cache && cache.timer !== null) {\n        clearTimeout(cache.timer);\n        cache.timer = null;\n    }\n}\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Immutable from 'immutable';\n\nexport default class EntityIndex {\n  constructor(id, title, type) {\n    this._value = { id, title, type };\n  }\n\n  get id() {\n    return this._value.id;\n  }\n\n  get type() {\n    return this._value.type;\n  }\n\n  get title() {\n    return this._value.title;\n  }\n\n  toBuilder() {\n    const { id, title, type } = this._value;\n\n    // eslint-disable-next-line no-use-before-define\n    return new Builder(Immutable.Map({ id, title, type }));\n  }\n\n  static create(id, title, type) {\n    return new EntityIndex(id, title, type);\n  }\n\n  toJSON() {\n    const { id, type } = this._value;\n\n    return {\n      id,\n      type,\n    };\n  }\n\n  /* eslint-disable-next-line class-methods-use-this */\n  get isEntityIndex() {\n    return true;\n  }\n\n  /* implement custom instanceof */\n  static [Symbol.hasInstance](obj) {\n    if (obj.isEntityIndex) {\n      return true;\n    }\n\n    return false;\n  }\n\n  static fromJSON(value) {\n    const { id, title, type } = value;\n\n    return EntityIndex.create(id, title, type);\n  }\n}\n\nclass Builder {\n  constructor(value = Immutable.Map()) {\n    this.value = value;\n  }\n\n  id(value) {\n    return new Builder(this.value.set('id', value));\n  }\n\n  title(value) {\n    return new Builder(this.value.set('title', value));\n  }\n\n  type(value) {\n    return new Builder(this.value.set('type', value));\n  }\n\n  build() {\n    const { id, title, type } = this.value.toObject();\n\n    return new EntityIndex(id, title, type);\n  }\n}\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\nimport lodash from 'lodash';\n\nimport * as URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\nimport ActionsProvider from 'injection/ActionsProvider';\nimport EntityIndex from 'logic/content-packs/EntityIndex';\n\nconst CatalogActions = ActionsProvider.getActions('Catalog');\n\nconst CatalogStore = Reflux.createStore({\n  listenables: [CatalogActions],\n\n  showEntityIndex() {\n    const url = URLUtils.qualifyUrl(ApiRoutes.CatalogsController.showEntityIndex().url);\n    const promise = fetch('GET', url)\n      .then((result) => {\n        const entityIndex = lodash.groupBy(result.entities.map((e) => EntityIndex.fromJSON(e)), 'type.name');\n\n        this.trigger({ entityIndex: entityIndex });\n\n        return result;\n      });\n\n    CatalogActions.showEntityIndex.promise(promise);\n  },\n\n  getSelectedEntities(requestedEntities) {\n    const payload = Object.keys(requestedEntities).reduce((result, key) => {\n      return result.concat(requestedEntities[key]\n        .filter((entitiy) => entitiy instanceof EntityIndex)\n        .map((entity) => entity.toJSON()));\n    }, []);\n    const url = URLUtils.qualifyUrl(ApiRoutes.CatalogsController.queryEntities().url);\n    const promise = fetch('POST', url, { entities: payload });\n\n    CatalogActions.getSelectedEntities.promise(promise);\n  },\n});\n\nexport default CatalogStore;\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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 Lib = require('../lib');\nvar plotAttributes = require('../plots/attributes');\n\nvar TEMPLATEITEMNAME = 'templateitemname';\n\nvar templateAttrs = {\n    name: {\n        valType: 'string',\n        role: 'style',\n        editType: 'none',\n        description: [\n            'When used in a template, named items are created in the output figure',\n            'in addition to any items the figure already has in this array.',\n            'You can modify these items in the output figure by making your own',\n            'item with `templateitemname` matching this `name`',\n            'alongside your modifications (including `visible: false` or',\n            '`enabled: false` to hide it).',\n            'Has no effect outside of a template.'\n        ].join(' ')\n    }\n};\ntemplateAttrs[TEMPLATEITEMNAME] = {\n    valType: 'string',\n    role: 'info',\n    editType: 'calc',\n    description: [\n        'Used to refer to a named item in this array in the template. Named',\n        'items from the template will be created even without a matching item',\n        'in the input figure, but you can modify one by making an item with',\n        '`templateitemname` matching its `name`, alongside your modifications',\n        '(including `visible: false` or `enabled: false` to hide it).',\n        'If there is no template or no matching item, this item will be',\n        'hidden unless you explicitly show it with `visible: true`.'\n    ].join(' ')\n};\n\n/**\n * templatedArray: decorate an attributes object with templating (and array)\n * properties.\n *\n * @param {string} name: the singular form of the array name. Sets\n *     `_isLinkedToArray` to this, so the schema knows to treat this as an array.\n * @param {object} attrs: the item attributes. Since all callers are expected\n *     to be constructing this object on the spot, we mutate it here for\n *     performance, rather than extending a new object with it.\n *\n * @returns {object}: the decorated `attrs` object\n */\nexports.templatedArray = function(name, attrs) {\n    attrs._isLinkedToArray = name;\n    attrs.name = templateAttrs.name;\n    attrs[TEMPLATEITEMNAME] = templateAttrs[TEMPLATEITEMNAME];\n    return attrs;\n};\n\n/**\n * traceTemplater: logic for matching traces to trace templates\n *\n * @param {object} dataTemplate: collection of {traceType: [{template}, ...]}\n *     ie each type the template applies to contains a list of template objects,\n *     to be provided cyclically to data traces of that type.\n *\n * @returns {object}: {newTrace}, a function:\n *     newTrace(traceIn): that takes the input traceIn, coerces its type, then\n *         uses that type to find the next template to apply. returns the output\n *         traceOut with template attached, ready to continue supplyDefaults.\n */\nexports.traceTemplater = function(dataTemplate) {\n    var traceCounts = {};\n    var traceType, typeTemplates;\n\n    for(traceType in dataTemplate) {\n        typeTemplates = dataTemplate[traceType];\n        if(Array.isArray(typeTemplates) && typeTemplates.length) {\n            traceCounts[traceType] = 0;\n        }\n    }\n\n    function newTrace(traceIn) {\n        traceType = Lib.coerce(traceIn, {}, plotAttributes, 'type');\n        var traceOut = {type: traceType, _template: null};\n        if(traceType in traceCounts) {\n            typeTemplates = dataTemplate[traceType];\n            // cycle through traces in the template set for this type\n            var typei = traceCounts[traceType] % typeTemplates.length;\n            traceCounts[traceType]++;\n            traceOut._template = typeTemplates[typei];\n        } else {\n            // TODO: anything we should do for types missing from the template?\n            // try to apply some other type? Or just bail as we do here?\n            // Actually I think yes, we should apply other types; would be nice\n            // if all scatter* could inherit from each other, and if histogram\n            // could inherit from bar, etc... but how to specify this? And do we\n            // compose them, or if a type is present require it to be complete?\n            // Actually this could apply to layout too - 3D annotations\n            // inheriting from 2D, axes of different types inheriting from each\n            // other...\n        }\n        return traceOut;\n    }\n\n    return {\n        newTrace: newTrace\n        // TODO: function to figure out what's left & what didn't work\n    };\n};\n\n/**\n * newContainer: Create a new sub-container inside `container` and propagate any\n * applicable template to it. If there's no template, still propagates\n * `undefined` so relinkPrivate will not retain an old template!\n *\n * @param {object} container: the outer container, should already have _template\n *     if there *is* a template for this plot\n * @param {string} name: the key of the new container to make\n * @param {string} baseName: if applicable, a base attribute to take the\n *     template from, ie for xaxis3 the base would be xaxis\n *\n * @returns {object}: an object for inclusion _full*, empty except for the\n *     appropriate template piece\n */\nexports.newContainer = function(container, name, baseName) {\n    var template = container._template;\n    var part = template && (template[name] || (baseName && template[baseName]));\n    if(!Lib.isPlainObject(part)) part = null;\n\n    var out = container[name] = {_template: part};\n    return out;\n};\n\n/**\n * arrayTemplater: special logic for templating both defaults and specific items\n * in a container array (annotations etc)\n *\n * @param {object} container: the outer container, should already have _template\n *     if there *is* a template for this plot\n * @param {string} name: the name of the array to template (ie 'annotations')\n *     will be used to find default ('annotationdefaults' object) and specific\n *     ('annotations' array) template specs.\n * @param {string} inclusionAttr: the attribute determining this item's\n *     inclusion in the output, usually 'visible' or 'enabled'\n *\n * @returns {object}: {newItem, defaultItems}, both functions:\n *     newItem(itemIn): create an output item, bare except for the correct\n *         template and name(s), as the base for supplyDefaults\n *     defaultItems(): to be called after all newItem calls, return any\n *         specific template items that have not already beeen included,\n *         also as bare output items ready for supplyDefaults.\n */\nexports.arrayTemplater = function(container, name, inclusionAttr) {\n    var template = container._template;\n    var defaultsTemplate = template && template[arrayDefaultKey(name)];\n    var templateItems = template && template[name];\n    if(!Array.isArray(templateItems) || !templateItems.length) {\n        templateItems = [];\n    }\n\n    var usedNames = {};\n\n    function newItem(itemIn) {\n        // include name and templateitemname in the output object for ALL\n        // container array items. Note: you could potentially use different\n        // name and templateitemname, if you're using one template to make\n        // another template. templateitemname would be the name in the original\n        // template, and name is the new \"subclassed\" item name.\n        var out = {name: itemIn.name, _input: itemIn};\n        var templateItemName = out[TEMPLATEITEMNAME] = itemIn[TEMPLATEITEMNAME];\n\n        // no itemname: use the default template\n        if(!validItemName(templateItemName)) {\n            out._template = defaultsTemplate;\n            return out;\n        }\n\n        // look for an item matching this itemname\n        // note these do not inherit from the default template, only the item.\n        for(var i = 0; i < templateItems.length; i++) {\n            var templateItem = templateItems[i];\n            if(templateItem.name === templateItemName) {\n                // Note: it's OK to use a template item more than once\n                // but using it at least once will stop it from generating\n                // a default item at the end.\n                usedNames[templateItemName] = 1;\n                out._template = templateItem;\n                return out;\n            }\n        }\n\n        // Didn't find a matching template item, so since this item is intended\n        // to only be modifications it's most likely broken. Hide it unless\n        // it's explicitly marked visible - in which case it gets NO template,\n        // not even the default.\n        out[inclusionAttr] = itemIn[inclusionAttr] || false;\n        // special falsy value we can look for in validateTemplate\n        out._template = false;\n        return out;\n    }\n\n    function defaultItems() {\n        var out = [];\n        for(var i = 0; i < templateItems.length; i++) {\n            var templateItem = templateItems[i];\n            var name = templateItem.name;\n            // only allow named items to be added as defaults,\n            // and only allow each name once\n            if(validItemName(name) && !usedNames[name]) {\n                var outi = {\n                    _template: templateItem,\n                    name: name,\n                    _input: {_templateitemname: name}\n                };\n                outi[TEMPLATEITEMNAME] = templateItem[TEMPLATEITEMNAME];\n                out.push(outi);\n                usedNames[name] = 1;\n            }\n        }\n        return out;\n    }\n\n    return {\n        newItem: newItem,\n        defaultItems: defaultItems\n    };\n};\n\nfunction validItemName(name) {\n    return name && typeof name === 'string';\n}\n\nfunction arrayDefaultKey(name) {\n    var lastChar = name.length - 1;\n    if(name.charAt(lastChar) !== 's') {\n        Lib.warn('bad argument to arrayDefaultKey: ' + name);\n    }\n    return name.substr(0, name.length - 1) + 'defaults';\n}\nexports.arrayDefaultKey = arrayDefaultKey;\n\n/**\n * arrayEditor: helper for editing array items that may have come from\n *     template defaults (in which case they will not exist in the input yet)\n *\n * @param {object} parentIn: the input container (eg gd.layout)\n * @param {string} containerStr: the attribute string for the container inside\n *     `parentIn`.\n * @param {object} itemOut: the _full* item (eg gd._fullLayout.annotations[0])\n *     that we'll be editing. Assumed to have been created by `arrayTemplater`.\n *\n * @returns {object}: {modifyBase, modifyItem, getUpdateObj, applyUpdate}, all functions:\n *     modifyBase(attr, value): Add an update that's *not* related to the item.\n *         `attr` is the full attribute string.\n *     modifyItem(attr, value): Add an update to the item. `attr` is just the\n *         portion of the attribute string inside the item.\n *     getUpdateObj(): Get the final constructed update object, to use in\n *         `restyle` or `relayout`. Also resets the update object in case this\n *         update was canceled.\n *     applyUpdate(attr, value): optionally add an update `attr: value`,\n *         then apply it to `parent` which should be the parent of `containerIn`,\n *         ie the object to which `containerStr` is the attribute string.\n */\nexports.arrayEditor = function(parentIn, containerStr, itemOut) {\n    var lengthIn = (Lib.nestedProperty(parentIn, containerStr).get() || []).length;\n    var index = itemOut._index;\n    // Check that we are indeed off the end of this container.\n    // Otherwise a devious user could put a key `_templateitemname` in their\n    // own input and break lots of things.\n    var templateItemName = (index >= lengthIn) && (itemOut._input || {})._templateitemname;\n    if(templateItemName) index = lengthIn;\n    var itemStr = containerStr + '[' + index + ']';\n\n    var update;\n    function resetUpdate() {\n        update = {};\n        if(templateItemName) {\n            update[itemStr] = {};\n            update[itemStr][TEMPLATEITEMNAME] = templateItemName;\n        }\n    }\n    resetUpdate();\n\n    function modifyBase(attr, value) {\n        update[attr] = value;\n    }\n\n    function modifyItem(attr, value) {\n        if(templateItemName) {\n            // we're making a new object: edit that object\n            Lib.nestedProperty(update[itemStr], attr).set(value);\n        } else {\n            // we're editing an existing object: include *just* the edit\n            update[itemStr + '.' + attr] = value;\n        }\n    }\n\n    function getUpdateObj() {\n        var updateOut = update;\n        resetUpdate();\n        return updateOut;\n    }\n\n    function applyUpdate(attr, value) {\n        if(attr) modifyItem(attr, value);\n        var updateToApply = getUpdateObj();\n        for(var key in updateToApply) {\n            Lib.nestedProperty(parentIn, key).set(updateToApply[key]);\n        }\n    }\n\n    return {\n        modifyBase: modifyBase,\n        modifyItem: modifyItem,\n        getUpdateObj: getUpdateObj,\n        applyUpdate: applyUpdate\n    };\n};\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nconst SystemJobsActions = Reflux.createActions({\n  list: { asyncResult: true },\n  getJob: { asyncResult: true },\n  cancelJob: { asyncResult: true },\n});\n\nexport default SystemJobsActions;\n","/*!\n * URI.js - Mutating URLs\n * Second Level Domain (SLD) Support\n *\n * Version: 1.19.7\n *\n * Author: Rodney Rehm\n * Web: http://medialize.github.io/URI.js/\n *\n * Licensed under\n *   MIT License http://www.opensource.org/licenses/mit-license\n *\n */\n\n(function (root, factory) {\n  'use strict';\n  // https://github.com/umdjs/umd/blob/master/returnExports.js\n  if (typeof module === 'object' && module.exports) {\n    // Node\n    module.exports = factory();\n  } else if (typeof define === 'function' && define.amd) {\n    // AMD. Register as an anonymous module.\n    define(factory);\n  } else {\n    // Browser globals (root is window)\n    root.SecondLevelDomains = factory(root);\n  }\n}(this, function (root) {\n  'use strict';\n\n  // save current SecondLevelDomains variable, if any\n  var _SecondLevelDomains = root && root.SecondLevelDomains;\n\n  var SLD = {\n    // list of known Second Level Domains\n    // converted list of SLDs from https://github.com/gavingmiller/second-level-domains\n    // ----\n    // publicsuffix.org is more current and actually used by a couple of browsers internally.\n    // downside is it also contains domains like \"dyndns.org\" - which is fine for the security\n    // issues browser have to deal with (SOP for cookies, etc) - but is way overboard for URI.js\n    // ----\n    list: {\n      'ac':' com gov mil net org ',\n      'ae':' ac co gov mil name net org pro sch ',\n      'af':' com edu gov net org ',\n      'al':' com edu gov mil net org ',\n      'ao':' co ed gv it og pb ',\n      'ar':' com edu gob gov int mil net org tur ',\n      'at':' ac co gv or ',\n      'au':' asn com csiro edu gov id net org ',\n      'ba':' co com edu gov mil net org rs unbi unmo unsa untz unze ',\n      'bb':' biz co com edu gov info net org store tv ',\n      'bh':' biz cc com edu gov info net org ',\n      'bn':' com edu gov net org ',\n      'bo':' com edu gob gov int mil net org tv ',\n      'br':' adm adv agr am arq art ato b bio blog bmd cim cng cnt com coop ecn edu eng esp etc eti far flog fm fnd fot fst g12 ggf gov imb ind inf jor jus lel mat med mil mus net nom not ntr odo org ppg pro psc psi qsl rec slg srv tmp trd tur tv vet vlog wiki zlg ',\n      'bs':' com edu gov net org ',\n      'bz':' du et om ov rg ',\n      'ca':' ab bc mb nb nf nl ns nt nu on pe qc sk yk ',\n      'ck':' biz co edu gen gov info net org ',\n      'cn':' ac ah bj com cq edu fj gd gov gs gx gz ha hb he hi hl hn jl js jx ln mil net nm nx org qh sc sd sh sn sx tj tw xj xz yn zj ',\n      'co':' com edu gov mil net nom org ',\n      'cr':' ac c co ed fi go or sa ',\n      'cy':' ac biz com ekloges gov ltd name net org parliament press pro tm ',\n      'do':' art com edu gob gov mil net org sld web ',\n      'dz':' art asso com edu gov net org pol ',\n      'ec':' com edu fin gov info med mil net org pro ',\n      'eg':' com edu eun gov mil name net org sci ',\n      'er':' com edu gov ind mil net org rochest w ',\n      'es':' com edu gob nom org ',\n      'et':' biz com edu gov info name net org ',\n      'fj':' ac biz com info mil name net org pro ',\n      'fk':' ac co gov net nom org ',\n      'fr':' asso com f gouv nom prd presse tm ',\n      'gg':' co net org ',\n      'gh':' com edu gov mil org ',\n      'gn':' ac com gov net org ',\n      'gr':' com edu gov mil net org ',\n      'gt':' com edu gob ind mil net org ',\n      'gu':' com edu gov net org ',\n      'hk':' com edu gov idv net org ',\n      'hu':' 2000 agrar bolt casino city co erotica erotika film forum games hotel info ingatlan jogasz konyvelo lakas media news org priv reklam sex shop sport suli szex tm tozsde utazas video ',\n      'id':' ac co go mil net or sch web ',\n      'il':' ac co gov idf k12 muni net org ',\n      'in':' ac co edu ernet firm gen gov i ind mil net nic org res ',\n      'iq':' com edu gov i mil net org ',\n      'ir':' ac co dnssec gov i id net org sch ',\n      'it':' edu gov ',\n      'je':' co net org ',\n      'jo':' com edu gov mil name net org sch ',\n      'jp':' ac ad co ed go gr lg ne or ',\n      'ke':' ac co go info me mobi ne or sc ',\n      'kh':' com edu gov mil net org per ',\n      'ki':' biz com de edu gov info mob net org tel ',\n      'km':' asso com coop edu gouv k medecin mil nom notaires pharmaciens presse tm veterinaire ',\n      'kn':' edu gov net org ',\n      'kr':' ac busan chungbuk chungnam co daegu daejeon es gangwon go gwangju gyeongbuk gyeonggi gyeongnam hs incheon jeju jeonbuk jeonnam k kg mil ms ne or pe re sc seoul ulsan ',\n      'kw':' com edu gov net org ',\n      'ky':' com edu gov net org ',\n      'kz':' com edu gov mil net org ',\n      'lb':' com edu gov net org ',\n      'lk':' assn com edu gov grp hotel int ltd net ngo org sch soc web ',\n      'lr':' com edu gov net org ',\n      'lv':' asn com conf edu gov id mil net org ',\n      'ly':' com edu gov id med net org plc sch ',\n      'ma':' ac co gov m net org press ',\n      'mc':' asso tm ',\n      'me':' ac co edu gov its net org priv ',\n      'mg':' com edu gov mil nom org prd tm ',\n      'mk':' com edu gov inf name net org pro ',\n      'ml':' com edu gov net org presse ',\n      'mn':' edu gov org ',\n      'mo':' com edu gov net org ',\n      'mt':' com edu gov net org ',\n      'mv':' aero biz com coop edu gov info int mil museum name net org pro ',\n      'mw':' ac co com coop edu gov int museum net org ',\n      'mx':' com edu gob net org ',\n      'my':' com edu gov mil name net org sch ',\n      'nf':' arts com firm info net other per rec store web ',\n      'ng':' biz com edu gov mil mobi name net org sch ',\n      'ni':' ac co com edu gob mil net nom org ',\n      'np':' com edu gov mil net org ',\n      'nr':' biz com edu gov info net org ',\n      'om':' ac biz co com edu gov med mil museum net org pro sch ',\n      'pe':' com edu gob mil net nom org sld ',\n      'ph':' com edu gov i mil net ngo org ',\n      'pk':' biz com edu fam gob gok gon gop gos gov net org web ',\n      'pl':' art bialystok biz com edu gda gdansk gorzow gov info katowice krakow lodz lublin mil net ngo olsztyn org poznan pwr radom slupsk szczecin torun warszawa waw wroc wroclaw zgora ',\n      'pr':' ac biz com edu est gov info isla name net org pro prof ',\n      'ps':' com edu gov net org plo sec ',\n      'pw':' belau co ed go ne or ',\n      'ro':' arts com firm info nom nt org rec store tm www ',\n      'rs':' ac co edu gov in org ',\n      'sb':' com edu gov net org ',\n      'sc':' com edu gov net org ',\n      'sh':' co com edu gov net nom org ',\n      'sl':' com edu gov net org ',\n      'st':' co com consulado edu embaixada gov mil net org principe saotome store ',\n      'sv':' com edu gob org red ',\n      'sz':' ac co org ',\n      'tr':' av bbs bel biz com dr edu gen gov info k12 name net org pol tel tsk tv web ',\n      'tt':' aero biz cat co com coop edu gov info int jobs mil mobi museum name net org pro tel travel ',\n      'tw':' club com ebiz edu game gov idv mil net org ',\n      'mu':' ac co com gov net or org ',\n      'mz':' ac co edu gov org ',\n      'na':' co com ',\n      'nz':' ac co cri geek gen govt health iwi maori mil net org parliament school ',\n      'pa':' abo ac com edu gob ing med net nom org sld ',\n      'pt':' com edu gov int net nome org publ ',\n      'py':' com edu gov mil net org ',\n      'qa':' com edu gov mil net org ',\n      're':' asso com nom ',\n      'ru':' ac adygeya altai amur arkhangelsk astrakhan bashkiria belgorod bir bryansk buryatia cbg chel chelyabinsk chita chukotka chuvashia com dagestan e-burg edu gov grozny int irkutsk ivanovo izhevsk jar joshkar-ola kalmykia kaluga kamchatka karelia kazan kchr kemerovo khabarovsk khakassia khv kirov koenig komi kostroma kranoyarsk kuban kurgan kursk lipetsk magadan mari mari-el marine mil mordovia mosreg msk murmansk nalchik net nnov nov novosibirsk nsk omsk orenburg org oryol penza perm pp pskov ptz rnd ryazan sakhalin samara saratov simbirsk smolensk spb stavropol stv surgut tambov tatarstan tom tomsk tsaritsyn tsk tula tuva tver tyumen udm udmurtia ulan-ude vladikavkaz vladimir vladivostok volgograd vologda voronezh vrn vyatka yakutia yamal yekaterinburg yuzhno-sakhalinsk ',\n      'rw':' ac co com edu gouv gov int mil net ',\n      'sa':' com edu gov med net org pub sch ',\n      'sd':' com edu gov info med net org tv ',\n      'se':' a ac b bd c d e f g h i k l m n o org p parti pp press r s t tm u w x y z ',\n      'sg':' com edu gov idn net org per ',\n      'sn':' art com edu gouv org perso univ ',\n      'sy':' com edu gov mil net news org ',\n      'th':' ac co go in mi net or ',\n      'tj':' ac biz co com edu go gov info int mil name net nic org test web ',\n      'tn':' agrinet com defense edunet ens fin gov ind info intl mincom nat net org perso rnrt rns rnu tourism ',\n      'tz':' ac co go ne or ',\n      'ua':' biz cherkassy chernigov chernovtsy ck cn co com crimea cv dn dnepropetrovsk donetsk dp edu gov if in ivano-frankivsk kh kharkov kherson khmelnitskiy kiev kirovograd km kr ks kv lg lugansk lutsk lviv me mk net nikolaev od odessa org pl poltava pp rovno rv sebastopol sumy te ternopil uzhgorod vinnica vn zaporizhzhe zhitomir zp zt ',\n      'ug':' ac co go ne or org sc ',\n      'uk':' ac bl british-library co cym gov govt icnet jet lea ltd me mil mod national-library-scotland nel net nhs nic nls org orgn parliament plc police sch scot soc ',\n      'us':' dni fed isa kids nsn ',\n      'uy':' com edu gub mil net org ',\n      've':' co com edu gob info mil net org web ',\n      'vi':' co com k12 net org ',\n      'vn':' ac biz com edu gov health info int name net org pro ',\n      'ye':' co com gov ltd me net org plc ',\n      'yu':' ac co edu gov org ',\n      'za':' ac agric alt bourse city co cybernet db edu gov grondar iaccess imt inca landesign law mil net ngo nis nom olivetti org pix school tm web ',\n      'zm':' ac co com edu gov net org sch ',\n      // https://en.wikipedia.org/wiki/CentralNic#Second-level_domains\n      'com': 'ar br cn de eu gb gr hu jpn kr no qc ru sa se uk us uy za ',\n      'net': 'gb jp se uk ',\n      'org': 'ae',\n      'de': 'com '\n    },\n    // gorhill 2013-10-25: Using indexOf() instead Regexp(). Significant boost\n    // in both performance and memory footprint. No initialization required.\n    // http://jsperf.com/uri-js-sld-regex-vs-binary-search/4\n    // Following methods use lastIndexOf() rather than array.split() in order\n    // to avoid any memory allocations.\n    has: function(domain) {\n      var tldOffset = domain.lastIndexOf('.');\n      if (tldOffset <= 0 || tldOffset >= (domain.length-1)) {\n        return false;\n      }\n      var sldOffset = domain.lastIndexOf('.', tldOffset-1);\n      if (sldOffset <= 0 || sldOffset >= (tldOffset-1)) {\n        return false;\n      }\n      var sldList = SLD.list[domain.slice(tldOffset+1)];\n      if (!sldList) {\n        return false;\n      }\n      return sldList.indexOf(' ' + domain.slice(sldOffset+1, tldOffset) + ' ') >= 0;\n    },\n    is: function(domain) {\n      var tldOffset = domain.lastIndexOf('.');\n      if (tldOffset <= 0 || tldOffset >= (domain.length-1)) {\n        return false;\n      }\n      var sldOffset = domain.lastIndexOf('.', tldOffset-1);\n      if (sldOffset >= 0) {\n        return false;\n      }\n      var sldList = SLD.list[domain.slice(tldOffset+1)];\n      if (!sldList) {\n        return false;\n      }\n      return sldList.indexOf(' ' + domain.slice(0, tldOffset) + ' ') >= 0;\n    },\n    get: function(domain) {\n      var tldOffset = domain.lastIndexOf('.');\n      if (tldOffset <= 0 || tldOffset >= (domain.length-1)) {\n        return null;\n      }\n      var sldOffset = domain.lastIndexOf('.', tldOffset-1);\n      if (sldOffset <= 0 || sldOffset >= (tldOffset-1)) {\n        return null;\n      }\n      var sldList = SLD.list[domain.slice(tldOffset+1)];\n      if (!sldList) {\n        return null;\n      }\n      if (sldList.indexOf(' ' + domain.slice(sldOffset+1, tldOffset) + ' ') < 0) {\n        return null;\n      }\n      return domain.slice(sldOffset+1);\n    },\n    noConflict: function(){\n      if (root.SecondLevelDomains === this) {\n        root.SecondLevelDomains = _SecondLevelDomains;\n      }\n      return this;\n    }\n  };\n\n  return SLD;\n}));\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\nimport * as URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport CombinedProvider from 'injection/CombinedProvider';\n\nconst { CodecTypesActions } = CombinedProvider.get('CodecTypes');\n\nconst CodecTypesStore = Reflux.createStore({\n  listenables: [CodecTypesActions],\n  codecTypes: undefined,\n\n  getInitialState() {\n    return { codecTypes: this.codecTypes };\n  },\n\n  list() {\n    const promise = fetch('GET', URLUtils.qualifyUrl(ApiRoutes.CodecTypesController.list().url));\n\n    promise.then(\n      (response) => {\n        this.codecTypes = response;\n        this.trigger(this.getInitialState());\n      },\n      (error) => {\n        UserNotification.error(`Fetching codec types failed with status: ${error}`,\n          'Could not retrieve codec types');\n      },\n    );\n\n    CodecTypesActions.list.promise(promise);\n  },\n});\n\nexport default CodecTypesStore;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nconst CollectorConfigurationsActions = Reflux.createActions({\n  all: { asyncResult: true },\n  list: { asyncResult: true },\n  listUploads: { asyncResult: true },\n  getConfiguration: { asyncResult: true },\n  getConfigurationSidecars: { asyncResult: true },\n  getUploads: { asyncResult: true },\n  createConfiguration: { asyncResult: true },\n  updateConfiguration: { asyncResult: true },\n  renderPreview: { asyncResult: true },\n  copyConfiguration: { asyncResult: true },\n  delete: { asyncResult: true },\n  validate: { asyncResult: true },\n});\n\nexport default CollectorConfigurationsActions;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nmodule.exports = {\n  PluginManifest: require('./lib/PluginManifest'),\n  PluginStore: require('./lib/PluginStore'),\n}\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\nimport _ from 'lodash';\n\nimport UserNotification from 'util/UserNotification';\nimport * as URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\nimport ActionsProvider from 'injection/ActionsProvider';\n\nconst AlertConditionsActions = ActionsProvider.getActions('AlertConditions');\n\nconst AlertConditionsStore = Reflux.createStore({\n  listenables: AlertConditionsActions,\n  allAlertConditions: undefined,\n  availableConditions: undefined,\n\n  getInitialState() {\n    return {\n      availableConditions: this.availableConditions,\n      allAlertConditions: this.allAlertConditions,\n    };\n  },\n\n  available() {\n    const url = URLUtils.qualifyUrl(ApiRoutes.AlertConditionsApiController.available().url);\n    const promise = fetch('GET', url).then((response) => {\n      this.availableConditions = response;\n      this.trigger({ availableConditions: this.availableConditions });\n    });\n\n    AlertConditionsActions.available.promise(promise);\n\n    return promise;\n  },\n\n  delete(streamId, alertConditionId) {\n    const failCallback = (error) => {\n      UserNotification.error(`Removing Alert Condition failed with status: ${error}`,\n        'Could not remove Alert Conditions');\n    };\n\n    const url = URLUtils.qualifyUrl(ApiRoutes.StreamAlertsApiController.delete(streamId, alertConditionId).url);\n    const promise = fetch('DELETE', url).then(() => {\n      AlertConditionsActions.listAll();\n      UserNotification.success('Condition deleted successfully');\n    }, failCallback);\n\n    AlertConditionsActions.delete.promise(promise);\n\n    return promise;\n  },\n\n  listAll() {\n    const url = URLUtils.qualifyUrl(ApiRoutes.AlertConditionsApiController.list().url);\n    const promise = fetch('GET', url).then(\n      (response) => {\n        this.allAlertConditions = response.conditions;\n        this.trigger({ allAlertConditions: this.allAlertConditions });\n\n        return this.allAlertConditions;\n      },\n      (error) => {\n        UserNotification.error(`Fetching alert conditions failed with status: ${error}`,\n          'Could not get alert conditions');\n      },\n    );\n\n    AlertConditionsActions.listAll.promise(promise);\n  },\n\n  list(streamId) {\n    const failCallback = (error) => {\n      UserNotification.error(`Fetching Alert Conditions failed with status: ${error}`,\n        'Could not retrieve Alert Conditions');\n    };\n\n    const url = URLUtils.qualifyUrl(ApiRoutes.StreamAlertsApiController.list(streamId).url);\n    const promise = fetch('GET', url).then((response) => {\n      const conditions = response.conditions.map((condition) => {\n        const cond = _.clone(condition);\n\n        cond.stream_id = streamId;\n\n        return cond;\n      });\n\n      this.trigger({ alertConditions: conditions });\n\n      return conditions;\n    }, failCallback);\n\n    AlertConditionsActions.list.promise(promise);\n\n    return promise;\n  },\n  save(streamId, alertCondition) {\n    const failCallback = (error) => {\n      UserNotification.error(`Saving Alert Condition failed with status: ${error}`,\n        'Could not save Alert Condition');\n    };\n\n    const url = URLUtils.qualifyUrl(ApiRoutes.StreamAlertsApiController.create(streamId).url);\n    const promise = fetch('POST', url, alertCondition).then((response) => {\n      UserNotification.success('Condition created successfully');\n\n      return response.alert_condition_id;\n    }, failCallback);\n\n    AlertConditionsActions.save.promise(promise);\n\n    return promise;\n  },\n  update(streamId, alertConditionId, request) {\n    const failCallback = (error) => {\n      UserNotification.error(`Saving Alert Condition failed with status: ${error}`,\n        'Could not save Alert Condition');\n    };\n\n    const url = URLUtils.qualifyUrl(ApiRoutes.StreamAlertsApiController.update(streamId, alertConditionId).url);\n    const promise = fetch('PUT', url, request).then((response) => {\n      UserNotification.success('Condition updated successfully');\n\n      return response;\n    }, failCallback);\n\n    AlertConditionsActions.update.promise(promise);\n\n    return promise;\n  },\n  get(streamId, conditionId, failureCallback) {\n    const failCallback = (error) => {\n      UserNotification.error(`Fetching Alert Condition ${conditionId} failed with status: ${error}`,\n        'Could not retrieve Alert Condition');\n    };\n\n    const url = URLUtils.qualifyUrl(ApiRoutes.StreamAlertsApiController.get(streamId, conditionId).url);\n    const promise = fetch('GET', url);\n\n    promise.then(\n      (response) => {\n        this.trigger({ alertCondition: response });\n\n        return response;\n      },\n      (error) => {\n        return (typeof failureCallback === 'function' ? failureCallback(error) : failCallback(error));\n      },\n    );\n\n    AlertConditionsActions.get.promise(promise);\n  },\n\n  test(streamId, conditionId) {\n    const url = URLUtils.qualifyUrl(ApiRoutes.StreamAlertsApiController.test(streamId, conditionId).url);\n    const promise = fetch('POST', url);\n\n    AlertConditionsActions.test.promise(promise);\n  },\n});\n\nexport default AlertConditionsStore;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nconst SessionActions = Reflux.createActions({\n  login: { asyncResult: true },\n  logout: { asyncResult: true },\n  validate: { asyncResult: true },\n});\n\nexport default SessionActions;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\nimport Immutable from 'immutable';\n\nimport UserNotification from 'util/UserNotification';\nimport { qualifyUrl } from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\nimport CombinedProvider from 'injection/CombinedProvider';\nimport { PaginatedList, PaginatedListJSON, Pagination } from 'stores/PaginationTypes';\nimport PaginationURL from 'util/PaginationURL';\n\nconst { PipelinesActions } = CombinedProvider.get('Pipelines');\n\nexport type PipelineType = {\n  id: string,\n  title: string,\n  description: string,\n  source: string,\n  created_at: string,\n  modified_at: string,\n  stages: StageType[],\n  errors?: [],\n};\n\nexport type StageType = {\n  stage: number,\n  match: string,\n  rules: [string],\n};\n\nexport type PaginatedPipelineResponse = PaginatedListJSON & {\n  pipelines: Array,\n};\n\nexport type PaginatedPipelines = PaginatedList;\n\nconst listFailCallback = (error) => {\n  UserNotification.error(`Fetching pipelines failed with status: ${error.message}`,\n    'Could not retrieve processing pipelines');\n};\n\nconst PipelinesStore = Reflux.createStore({\n  listenables: [PipelinesActions],\n  pipelines: undefined,\n\n  getInitialState() {\n    return { pipelines: this.pipelines };\n  },\n\n  _updatePipelinesState(pipeline: PipelineType) {\n    if (!this.pipelines) {\n      this.pipelines = [pipeline];\n    } else {\n      const doesPipelineExist = this.pipelines.some((p) => p.id === pipeline.id);\n\n      if (doesPipelineExist) {\n        this.pipelines = this.pipelines.map((p) => (p.id === pipeline.id ? pipeline : p));\n      } else {\n        this.pipelines.push(pipeline);\n      }\n    }\n\n    this.trigger({ pipelines: this.pipelines });\n  },\n\n  list() {\n    const url = qualifyUrl(ApiRoutes.PipelinesController.list().url);\n\n    return fetch('GET', url).then((response) => {\n      this.pipelines = response;\n      this.trigger({ pipelines: response });\n    }, listFailCallback);\n  },\n\n  listPaginated({\n    page,\n    perPage,\n    query,\n  }: Pagination): Promise {\n    const url = PaginationURL(ApiRoutes.PipelinesController.paginatedList().url, page, perPage, query);\n\n    const promise = fetch('GET', qualifyUrl(url)).then((response: PaginatedPipelineResponse) => ({\n      list: Immutable.List(response.pipelines),\n      pagination: {\n        page: response.page,\n        perPage: response.per_page,\n        query: response.query,\n        count: response.count,\n        total: response.total,\n      },\n    }), listFailCallback);\n\n    PipelinesActions.listPaginated.promise(promise);\n\n    return promise;\n  },\n\n  get(pipelineId) {\n    const failCallback = (error) => {\n      UserNotification.error(`Fetching pipeline failed with status: ${error.message}`,\n        `Could not retrieve processing pipeline \"${pipelineId}\"`);\n    };\n\n    const url = qualifyUrl(ApiRoutes.PipelinesController.get(pipelineId).url);\n    const promise = fetch('GET', url);\n\n    promise.then(this._updatePipelinesState, failCallback);\n  },\n\n  save(pipelineSource) {\n    const failCallback = (error) => {\n      UserNotification.error(`Saving pipeline failed with status: ${error.message}`,\n        'Could not save processing pipeline');\n    };\n\n    const url = qualifyUrl(ApiRoutes.PipelinesController.create().url);\n    const pipeline = {\n      title: pipelineSource.title,\n      description: pipelineSource.description,\n      source: pipelineSource.source,\n    };\n    const promise = fetch('POST', url, pipeline);\n\n    promise.then(\n      (response) => {\n        this._updatePipelinesState(response);\n        UserNotification.success(`Pipeline \"${pipeline.title}\" created successfully`);\n      },\n      failCallback,\n    );\n\n    PipelinesActions.save.promise(promise);\n  },\n\n  update(pipelineSource) {\n    const failCallback = (error) => {\n      UserNotification.error(`Updating pipeline failed with status: ${error.message}`,\n        'Could not update processing pipeline');\n    };\n\n    const url = qualifyUrl(ApiRoutes.PipelinesController.update(pipelineSource.id).url);\n    const pipeline = {\n      id: pipelineSource.id,\n      title: pipelineSource.title,\n      description: pipelineSource.description,\n      source: pipelineSource.source,\n    };\n    const promise = fetch('PUT', url, pipeline);\n\n    promise.then(\n      (response) => {\n        this._updatePipelinesState(response);\n        UserNotification.success(`Pipeline \"${pipeline.title}\" updated successfully`);\n      },\n      failCallback,\n    );\n\n    PipelinesActions.update.promise(promise);\n  },\n  delete(pipelineId) {\n    const failCallback = (error) => {\n      UserNotification.error(`Deleting pipeline failed with status: ${error.message}`,\n        `Could not delete processing pipeline \"${pipelineId}\"`);\n    };\n\n    const url = qualifyUrl(ApiRoutes.PipelinesController.delete(pipelineId).url);\n\n    const promise = fetch('DELETE', url).then(() => {\n      const updatedPipelines = this.pipelines || [];\n\n      this.pipelines = updatedPipelines.filter((el) => el.id !== pipelineId);\n      this.trigger({ pipelines: this.pipelines });\n      UserNotification.success(`Pipeline \"${pipelineId}\" deleted successfully`);\n    }, failCallback);\n\n    PipelinesActions.delete.promise(promise);\n\n    return promise;\n  },\n  parse(pipelineSource, callback) {\n    const url = qualifyUrl(ApiRoutes.PipelinesController.parse().url);\n    const pipeline = {\n      title: pipelineSource.title,\n      description: pipelineSource.description,\n      source: pipelineSource.source,\n    };\n\n    return fetch('POST', url, pipeline).then(\n      () => {\n        // call to clear the errors, the parsing was successful\n        callback([]);\n      },\n      (error) => {\n        // a Bad Request indicates a parse error, set all the returned errors in the editor\n        if (error.status === 400) {\n          callback(error.additional.body);\n        }\n      },\n    );\n  },\n});\n\nexport default PipelinesStore;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nconst SingleNodeActions = Reflux.createActions({\n  get: { asyncResult: true },\n});\n\nexport default SingleNodeActions;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nconst AlertsActions = Reflux.createActions({\n  get: { asyncResult: true },\n  list: { asyncResult: true },\n  listPaginated: { asyncResult: true },\n  listAllPaginated: { asyncResult: true },\n  listAllStreams: { asyncResult: true },\n});\n\nexport default AlertsActions;\n","module.exports = rotateX;\n\n/**\n * Rotates a matrix by the given angle around the X axis\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nfunction rotateX(out, a, rad) {\n    var s = Math.sin(rad),\n        c = Math.cos(rad),\n        a10 = a[4],\n        a11 = a[5],\n        a12 = a[6],\n        a13 = a[7],\n        a20 = a[8],\n        a21 = a[9],\n        a22 = a[10],\n        a23 = a[11];\n\n    if (a !== out) { // If the source and destination differ, copy the unchanged rows\n        out[0]  = a[0];\n        out[1]  = a[1];\n        out[2]  = a[2];\n        out[3]  = a[3];\n        out[12] = a[12];\n        out[13] = a[13];\n        out[14] = a[14];\n        out[15] = a[15];\n    }\n\n    // Perform axis-specific matrix multiplication\n    out[4] = a10 * c + a20 * s;\n    out[5] = a11 * c + a21 * s;\n    out[6] = a12 * c + a22 * s;\n    out[7] = a13 * c + a23 * s;\n    out[8] = a20 * c - a10 * s;\n    out[9] = a21 * c - a11 * s;\n    out[10] = a22 * c - a12 * s;\n    out[11] = a23 * c - a13 * s;\n    return out;\n};","/*!\n * UAParser.js v0.7.22\n * Lightweight JavaScript-based User-Agent string parser\n * https://github.com/faisalman/ua-parser-js\n *\n * Copyright © 2012-2019 Faisal Salman \n * Licensed under MIT License\n */\n\n(function (window, undefined) {\n\n    'use strict';\n\n    //////////////\n    // Constants\n    /////////////\n\n\n    var LIBVERSION  = '0.7.22',\n        EMPTY       = '',\n        UNKNOWN     = '?',\n        FUNC_TYPE   = 'function',\n        UNDEF_TYPE  = 'undefined',\n        OBJ_TYPE    = 'object',\n        STR_TYPE    = 'string',\n        MAJOR       = 'major', // deprecated\n        MODEL       = 'model',\n        NAME        = 'name',\n        TYPE        = 'type',\n        VENDOR      = 'vendor',\n        VERSION     = 'version',\n        ARCHITECTURE= 'architecture',\n        CONSOLE     = 'console',\n        MOBILE      = 'mobile',\n        TABLET      = 'tablet',\n        SMARTTV     = 'smarttv',\n        WEARABLE    = 'wearable',\n        EMBEDDED    = 'embedded';\n\n\n    ///////////\n    // Helper\n    //////////\n\n\n    var util = {\n        extend : function (regexes, extensions) {\n            var mergedRegexes = {};\n            for (var i in regexes) {\n                if (extensions[i] && extensions[i].length % 2 === 0) {\n                    mergedRegexes[i] = extensions[i].concat(regexes[i]);\n                } else {\n                    mergedRegexes[i] = regexes[i];\n                }\n            }\n            return mergedRegexes;\n        },\n        has : function (str1, str2) {\n          if (typeof str1 === \"string\") {\n            return str2.toLowerCase().indexOf(str1.toLowerCase()) !== -1;\n          } else {\n            return false;\n          }\n        },\n        lowerize : function (str) {\n            return str.toLowerCase();\n        },\n        major : function (version) {\n            return typeof(version) === STR_TYPE ? version.replace(/[^\\d\\.]/g,'').split(\".\")[0] : undefined;\n        },\n        trim : function (str) {\n          return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n        }\n    };\n\n\n    ///////////////\n    // Map helper\n    //////////////\n\n\n    var mapper = {\n\n        rgx : function (ua, arrays) {\n\n            var i = 0, j, k, p, q, matches, match;\n\n            // loop through all regexes maps\n            while (i < arrays.length && !matches) {\n\n                var regex = arrays[i],       // even sequence (0,2,4,..)\n                    props = arrays[i + 1];   // odd sequence (1,3,5,..)\n                j = k = 0;\n\n                // try matching uastring with regexes\n                while (j < regex.length && !matches) {\n\n                    matches = regex[j++].exec(ua);\n\n                    if (!!matches) {\n                        for (p = 0; p < props.length; p++) {\n                            match = matches[++k];\n                            q = props[p];\n                            // check if given property is actually array\n                            if (typeof q === OBJ_TYPE && q.length > 0) {\n                                if (q.length == 2) {\n                                    if (typeof q[1] == FUNC_TYPE) {\n                                        // assign modified match\n                                        this[q[0]] = q[1].call(this, match);\n                                    } else {\n                                        // assign given value, ignore regex match\n                                        this[q[0]] = q[1];\n                                    }\n                                } else if (q.length == 3) {\n                                    // check whether function or regex\n                                    if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n                                        // call function (usually string mapper)\n                                        this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n                                    } else {\n                                        // sanitize match using given regex\n                                        this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n                                    }\n                                } else if (q.length == 4) {\n                                        this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n                                }\n                            } else {\n                                this[q] = match ? match : undefined;\n                            }\n                        }\n                    }\n                }\n                i += 2;\n            }\n        },\n\n        str : function (str, map) {\n\n            for (var i in map) {\n                // check if array\n                if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n                    for (var j = 0; j < map[i].length; j++) {\n                        if (util.has(map[i][j], str)) {\n                            return (i === UNKNOWN) ? undefined : i;\n                        }\n                    }\n                } else if (util.has(map[i], str)) {\n                    return (i === UNKNOWN) ? undefined : i;\n                }\n            }\n            return str;\n        }\n    };\n\n\n    ///////////////\n    // String map\n    //////////////\n\n\n    var maps = {\n\n        browser : {\n            oldsafari : {\n                version : {\n                    '1.0'   : '/8',\n                    '1.2'   : '/1',\n                    '1.3'   : '/3',\n                    '2.0'   : '/412',\n                    '2.0.2' : '/416',\n                    '2.0.3' : '/417',\n                    '2.0.4' : '/419',\n                    '?'     : '/'\n                }\n            }\n        },\n\n        device : {\n            amazon : {\n                model : {\n                    'Fire Phone' : ['SD', 'KF']\n                }\n            },\n            sprint : {\n                model : {\n                    'Evo Shift 4G' : '7373KT'\n                },\n                vendor : {\n                    'HTC'       : 'APA',\n                    'Sprint'    : 'Sprint'\n                }\n            }\n        },\n\n        os : {\n            windows : {\n                version : {\n                    'ME'        : '4.90',\n                    'NT 3.11'   : 'NT3.51',\n                    'NT 4.0'    : 'NT4.0',\n                    '2000'      : 'NT 5.0',\n                    'XP'        : ['NT 5.1', 'NT 5.2'],\n                    'Vista'     : 'NT 6.0',\n                    '7'         : 'NT 6.1',\n                    '8'         : 'NT 6.2',\n                    '8.1'       : 'NT 6.3',\n                    '10'        : ['NT 6.4', 'NT 10.0'],\n                    'RT'        : 'ARM'\n                }\n            }\n        }\n    };\n\n\n    //////////////\n    // Regex map\n    /////////////\n\n\n    var regexes = {\n\n        browser : [[\n\n            // Presto based\n            /(opera\\smini)\\/([\\w\\.-]+)/i,                                       // Opera Mini\n            /(opera\\s[mobiletab]+).+version\\/([\\w\\.-]+)/i,                      // Opera Mobi/Tablet\n            /(opera).+version\\/([\\w\\.]+)/i,                                     // Opera > 9.80\n            /(opera)[\\/\\s]+([\\w\\.]+)/i                                          // Opera < 9.80\n            ], [NAME, VERSION], [\n\n            /(opios)[\\/\\s]+([\\w\\.]+)/i                                          // Opera mini on iphone >= 8.0\n            ], [[NAME, 'Opera Mini'], VERSION], [\n\n            /\\s(opr)\\/([\\w\\.]+)/i                                               // Opera Webkit\n            ], [[NAME, 'Opera'], VERSION], [\n\n            // Mixed\n            /(kindle)\\/([\\w\\.]+)/i,                                             // Kindle\n            /(lunascape|maxthon|netfront|jasmine|blazer)[\\/\\s]?([\\w\\.]*)/i,\n                                                                                // Lunascape/Maxthon/Netfront/Jasmine/Blazer\n            // Trident based\n            /(avant\\s|iemobile|slim)(?:browser)?[\\/\\s]?([\\w\\.]*)/i,\n                                                                                // Avant/IEMobile/SlimBrowser\n            /(bidubrowser|baidubrowser)[\\/\\s]?([\\w\\.]+)/i,                      // Baidu Browser\n            /(?:ms|\\()(ie)\\s([\\w\\.]+)/i,                                        // Internet Explorer\n\n            // Webkit/KHTML based\n            /(rekonq)\\/([\\w\\.]*)/i,                                             // Rekonq\n            /(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon)\\/([\\w\\.-]+)/i\n                                                                                // Chromium/Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon\n            ], [NAME, VERSION], [\n\n            /(konqueror)\\/([\\w\\.]+)/i                                           // Konqueror\n            ], [[NAME, 'Konqueror'], VERSION], [\n\n            /(trident).+rv[:\\s]([\\w\\.]+).+like\\sgecko/i                         // IE11\n            ], [[NAME, 'IE'], VERSION], [\n\n            /(edge|edgios|edga|edg)\\/((\\d+)?[\\w\\.]+)/i                          // Microsoft Edge\n            ], [[NAME, 'Edge'], VERSION], [\n\n            /(yabrowser)\\/([\\w\\.]+)/i                                           // Yandex\n            ], [[NAME, 'Yandex'], VERSION], [\n\n            /(Avast)\\/([\\w\\.]+)/i                                               // Avast Secure Browser\n            ], [[NAME, 'Avast Secure Browser'], VERSION], [\n\n            /(AVG)\\/([\\w\\.]+)/i                                                 // AVG Secure Browser\n            ], [[NAME, 'AVG Secure Browser'], VERSION], [\n\n            /(puffin)\\/([\\w\\.]+)/i                                              // Puffin\n            ], [[NAME, 'Puffin'], VERSION], [\n\n            /(focus)\\/([\\w\\.]+)/i                                               // Firefox Focus\n            ], [[NAME, 'Firefox Focus'], VERSION], [\n\n            /(opt)\\/([\\w\\.]+)/i                                                 // Opera Touch\n            ], [[NAME, 'Opera Touch'], VERSION], [\n\n            /((?:[\\s\\/])uc?\\s?browser|(?:juc.+)ucweb)[\\/\\s]?([\\w\\.]+)/i         // UCBrowser\n            ], [[NAME, 'UCBrowser'], VERSION], [\n\n            /(comodo_dragon)\\/([\\w\\.]+)/i                                       // Comodo Dragon\n            ], [[NAME, /_/g, ' '], VERSION], [\n\n            /(windowswechat qbcore)\\/([\\w\\.]+)/i                                // WeChat Desktop for Windows Built-in Browser\n            ], [[NAME, 'WeChat(Win) Desktop'], VERSION], [\n\n            /(micromessenger)\\/([\\w\\.]+)/i                                      // WeChat\n            ], [[NAME, 'WeChat'], VERSION], [\n\n            /(brave)\\/([\\w\\.]+)/i                                               // Brave browser\n            ], [[NAME, 'Brave'], VERSION], [\n\n            /(qqbrowserlite)\\/([\\w\\.]+)/i                                       // QQBrowserLite\n            ], [NAME, VERSION], [\n\n            /(QQ)\\/([\\d\\.]+)/i                                                  // QQ, aka ShouQ\n            ], [NAME, VERSION], [\n\n            /m?(qqbrowser)[\\/\\s]?([\\w\\.]+)/i                                    // QQBrowser\n            ], [NAME, VERSION], [\n\n            /(baiduboxapp)[\\/\\s]?([\\w\\.]+)/i                                    // Baidu App\n            ], [NAME, VERSION], [\n\n            /(2345Explorer)[\\/\\s]?([\\w\\.]+)/i                                   // 2345 Browser\n            ], [NAME, VERSION], [\n\n            /(MetaSr)[\\/\\s]?([\\w\\.]+)/i                                         // SouGouBrowser\n            ], [NAME], [\n\n            /(LBBROWSER)/i                                                      // LieBao Browser\n            ], [NAME], [\n\n            /xiaomi\\/miuibrowser\\/([\\w\\.]+)/i                                   // MIUI Browser\n            ], [VERSION, [NAME, 'MIUI Browser']], [\n\n            /;fbav\\/([\\w\\.]+);/i                                                // Facebook App for iOS & Android\n            ], [VERSION, [NAME, 'Facebook']], [\n\n            /safari\\s(line)\\/([\\w\\.]+)/i,                                       // Line App for iOS\n            /android.+(line)\\/([\\w\\.]+)\\/iab/i                                  // Line App for Android\n            ], [NAME, VERSION], [\n\n            /headlesschrome(?:\\/([\\w\\.]+)|\\s)/i                                 // Chrome Headless\n            ], [VERSION, [NAME, 'Chrome Headless']], [\n\n            /\\swv\\).+(chrome)\\/([\\w\\.]+)/i                                      // Chrome WebView\n            ], [[NAME, /(.+)/, '$1 WebView'], VERSION], [\n\n            /((?:oculus|samsung)browser)\\/([\\w\\.]+)/i\n            ], [[NAME, /(.+(?:g|us))(.+)/, '$1 $2'], VERSION], [                // Oculus / Samsung Browser\n\n            /android.+version\\/([\\w\\.]+)\\s+(?:mobile\\s?safari|safari)*/i        // Android Browser\n            ], [VERSION, [NAME, 'Android Browser']], [\n\n            /(sailfishbrowser)\\/([\\w\\.]+)/i                                     // Sailfish Browser\n            ], [[NAME, 'Sailfish Browser'], VERSION], [\n\n            /(chrome|omniweb|arora|[tizenoka]{5}\\s?browser)\\/v?([\\w\\.]+)/i\n                                                                                // Chrome/OmniWeb/Arora/Tizen/Nokia\n            ], [NAME, VERSION], [\n\n            /(dolfin)\\/([\\w\\.]+)/i                                              // Dolphin\n            ], [[NAME, 'Dolphin'], VERSION], [\n\n            /(qihu|qhbrowser|qihoobrowser|360browser)/i                         // 360\n            ], [[NAME, '360 Browser']], [\n\n            /((?:android.+)crmo|crios)\\/([\\w\\.]+)/i                             // Chrome for Android/iOS\n            ], [[NAME, 'Chrome'], VERSION], [\n\n            /(coast)\\/([\\w\\.]+)/i                                               // Opera Coast\n            ], [[NAME, 'Opera Coast'], VERSION], [\n\n            /fxios\\/([\\w\\.-]+)/i                                                // Firefox for iOS\n            ], [VERSION, [NAME, 'Firefox']], [\n\n            /version\\/([\\w\\.]+).+?mobile\\/\\w+\\s(safari)/i                       // Mobile Safari\n            ], [VERSION, [NAME, 'Mobile Safari']], [\n\n            /version\\/([\\w\\.]+).+?(mobile\\s?safari|safari)/i                    // Safari & Safari Mobile\n            ], [VERSION, NAME], [\n\n            /webkit.+?(gsa)\\/([\\w\\.]+).+?(mobile\\s?safari|safari)(\\/[\\w\\.]+)/i  // Google Search Appliance on iOS\n            ], [[NAME, 'GSA'], VERSION], [\n\n            /webkit.+?(mobile\\s?safari|safari)(\\/[\\w\\.]+)/i                     // Safari < 3.0\n            ], [NAME, [VERSION, mapper.str, maps.browser.oldsafari.version]], [\n\n            /(webkit|khtml)\\/([\\w\\.]+)/i\n            ], [NAME, VERSION], [\n\n            // Gecko based\n            /(navigator|netscape)\\/([\\w\\.-]+)/i                                 // Netscape\n            ], [[NAME, 'Netscape'], VERSION], [\n            /(swiftfox)/i,                                                      // Swiftfox\n            /(icedragon|iceweasel|camino|chimera|fennec|maemo\\sbrowser|minimo|conkeror)[\\/\\s]?([\\w\\.\\+]+)/i,\n                                                                                // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror\n            /(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([\\w\\.-]+)$/i,\n\n                                                                                // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n            /(mozilla)\\/([\\w\\.]+).+rv\\:.+gecko\\/\\d+/i,                          // Mozilla\n\n            // Other\n            /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\\/\\s]?([\\w\\.]+)/i,\n                                                                                // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir\n            /(links)\\s\\(([\\w\\.]+)/i,                                            // Links\n            /(gobrowser)\\/?([\\w\\.]*)/i,                                         // GoBrowser\n            /(ice\\s?browser)\\/v?([\\w\\._]+)/i,                                   // ICE Browser\n            /(mosaic)[\\/\\s]([\\w\\.]+)/i                                          // Mosaic\n            ], [NAME, VERSION]\n        ],\n\n        cpu : [[\n\n            /(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\\)]/i                     // AMD64\n            ], [[ARCHITECTURE, 'amd64']], [\n\n            /(ia32(?=;))/i                                                      // IA32 (quicktime)\n            ], [[ARCHITECTURE, util.lowerize]], [\n\n            /((?:i[346]|x)86)[;\\)]/i                                            // IA32\n            ], [[ARCHITECTURE, 'ia32']], [\n\n            // PocketPC mistakenly identified as PowerPC\n            /windows\\s(ce|mobile);\\sppc;/i\n            ], [[ARCHITECTURE, 'arm']], [\n\n            /((?:ppc|powerpc)(?:64)?)(?:\\smac|;|\\))/i                           // PowerPC\n            ], [[ARCHITECTURE, /ower/, '', util.lowerize]], [\n\n            /(sun4\\w)[;\\)]/i                                                    // SPARC\n            ], [[ARCHITECTURE, 'sparc']], [\n\n            /((?:avr32|ia64(?=;))|68k(?=\\))|arm(?:64|(?=v\\d+[;l]))|(?=atmel\\s)avr|(?:irix|mips|sparc)(?:64)?(?=;)|pa-risc)/i\n                                                                                // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n            ], [[ARCHITECTURE, util.lowerize]]\n        ],\n\n        device : [[\n\n            /\\((ipad|playbook);[\\w\\s\\),;-]+(rim|apple)/i                        // iPad/PlayBook\n            ], [MODEL, VENDOR, [TYPE, TABLET]], [\n\n            /applecoremedia\\/[\\w\\.]+ \\((ipad)/                                  // iPad\n            ], [MODEL, [VENDOR, 'Apple'], [TYPE, TABLET]], [\n\n            /(apple\\s{0,1}tv)/i                                                 // Apple TV\n            ], [[MODEL, 'Apple TV'], [VENDOR, 'Apple'], [TYPE, SMARTTV]], [\n\n            /(archos)\\s(gamepad2?)/i,                                           // Archos\n            /(hp).+(touchpad)/i,                                                // HP TouchPad\n            /(hp).+(tablet)/i,                                                  // HP Tablet\n            /(kindle)\\/([\\w\\.]+)/i,                                             // Kindle\n            /\\s(nook)[\\w\\s]+build\\/(\\w+)/i,                                     // Nook\n            /(dell)\\s(strea[kpr\\s\\d]*[\\dko])/i                                  // Dell Streak\n            ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n            /(kf[A-z]+)\\sbuild\\/.+silk\\//i                                      // Kindle Fire HD\n            ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [\n            /(sd|kf)[0349hijorstuw]+\\sbuild\\/.+silk\\//i                         // Fire Phone\n            ], [[MODEL, mapper.str, maps.device.amazon.model], [VENDOR, 'Amazon'], [TYPE, MOBILE]], [\n            /android.+aft([bms])\\sbuild/i                                       // Fire TV\n            ], [MODEL, [VENDOR, 'Amazon'], [TYPE, SMARTTV]], [\n\n            /\\((ip[honed|\\s\\w*]+);.+(apple)/i                                   // iPod/iPhone\n            ], [MODEL, VENDOR, [TYPE, MOBILE]], [\n            /\\((ip[honed|\\s\\w*]+);/i                                            // iPod/iPhone\n            ], [MODEL, [VENDOR, 'Apple'], [TYPE, MOBILE]], [\n\n            /(blackberry)[\\s-]?(\\w+)/i,                                         // BlackBerry\n            /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[\\s_-]?([\\w-]*)/i,\n                                                                                // BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron\n            /(hp)\\s([\\w\\s]+\\w)/i,                                               // HP iPAQ\n            /(asus)-?(\\w+)/i                                                    // Asus\n            ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n            /\\(bb10;\\s(\\w+)/i                                                   // BlackBerry 10\n            ], [MODEL, [VENDOR, 'BlackBerry'], [TYPE, MOBILE]], [\n                                                                                // Asus Tablets\n            /android.+(transfo[prime\\s]{4,10}\\s\\w+|eeepc|slider\\s\\w+|nexus 7|padfone|p00c)/i\n            ], [MODEL, [VENDOR, 'Asus'], [TYPE, TABLET]], [\n\n            /(sony)\\s(tablet\\s[ps])\\sbuild\\//i,                                  // Sony\n            /(sony)?(?:sgp.+)\\sbuild\\//i\n            ], [[VENDOR, 'Sony'], [MODEL, 'Xperia Tablet'], [TYPE, TABLET]], [\n            /android.+\\s([c-g]\\d{4}|so[-l]\\w+)(?=\\sbuild\\/|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n            ], [MODEL, [VENDOR, 'Sony'], [TYPE, MOBILE]], [\n\n            /\\s(ouya)\\s/i,                                                      // Ouya\n            /(nintendo)\\s([wids3u]+)/i                                          // Nintendo\n            ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n\n            /android.+;\\s(shield)\\sbuild/i                                      // Nvidia\n            ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\n\n            /(playstation\\s[34portablevi]+)/i                                   // Playstation\n            ], [MODEL, [VENDOR, 'Sony'], [TYPE, CONSOLE]], [\n\n            /(sprint\\s(\\w+))/i                                                  // Sprint Phones\n            ], [[VENDOR, mapper.str, maps.device.sprint.vendor], [MODEL, mapper.str, maps.device.sprint.model], [TYPE, MOBILE]], [\n\n            /(htc)[;_\\s-]+([\\w\\s]+(?=\\)|\\sbuild)|\\w+)/i,                        // HTC\n            /(zte)-(\\w*)/i,                                                     // ZTE\n            /(alcatel|geeksphone|nexian|panasonic|(?=;\\s)sony)[_\\s-]?([\\w-]*)/i\n                                                                                // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n            ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n            /(nexus\\s9)/i                                                       // HTC Nexus 9\n            ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n\n            /d\\/huawei([\\w\\s-]+)[;\\)]/i,\n            /(nexus\\s6p|vog-l29|ane-lx1|eml-l29|ele-l29)/i                              // Huawei\n            ], [MODEL, [VENDOR, 'Huawei'], [TYPE, MOBILE]], [\n\n            /android.+(bah2?-a?[lw]\\d{2})/i                                     // Huawei MediaPad\n            ], [MODEL, [VENDOR, 'Huawei'], [TYPE, TABLET]], [\n\n            /(microsoft);\\s(lumia[\\s\\w]+)/i                                     // Microsoft Lumia\n            ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n            /[\\s\\(;](xbox(?:\\sone)?)[\\s\\);]/i                                   // Microsoft Xbox\n            ], [MODEL, [VENDOR, 'Microsoft'], [TYPE, CONSOLE]], [\n            /(kin\\.[onetw]{3})/i                                                // Microsoft Kin\n            ], [[MODEL, /\\./g, ' '], [VENDOR, 'Microsoft'], [TYPE, MOBILE]], [\n\n                                                                                // Motorola\n            /\\s(milestone|droid(?:[2-4x]|\\s(?:bionic|x2|pro|razr))?:?(\\s4g)?)[\\w\\s]+build\\//i,\n            /mot[\\s-]?(\\w*)/i,\n            /(XT\\d{3,4}) build\\//i,\n            /(nexus\\s6)/i\n            ], [MODEL, [VENDOR, 'Motorola'], [TYPE, MOBILE]], [\n            /android.+\\s(mz60\\d|xoom[\\s2]{0,2})\\sbuild\\//i\n            ], [MODEL, [VENDOR, 'Motorola'], [TYPE, TABLET]], [\n\n            /hbbtv\\/\\d+\\.\\d+\\.\\d+\\s+\\([\\w\\s]*;\\s*(\\w[^;]*);([^;]*)/i            // HbbTV devices\n            ], [[VENDOR, util.trim], [MODEL, util.trim], [TYPE, SMARTTV]], [\n\n            /hbbtv.+maple;(\\d+)/i\n            ], [[MODEL, /^/, 'SmartTV'], [VENDOR, 'Samsung'], [TYPE, SMARTTV]], [\n\n            /\\(dtv[\\);].+(aquos)/i                                              // Sharp\n            ], [MODEL, [VENDOR, 'Sharp'], [TYPE, SMARTTV]], [\n\n            /android.+((sch-i[89]0\\d|shw-m380s|gt-p\\d{4}|gt-n\\d+|sgh-t8[56]9|nexus 10))/i,\n            /((SM-T\\w+))/i\n            ], [[VENDOR, 'Samsung'], MODEL, [TYPE, TABLET]], [                  // Samsung\n            /smart-tv.+(samsung)/i\n            ], [VENDOR, [TYPE, SMARTTV], MODEL], [\n            /((s[cgp]h-\\w+|gt-\\w+|galaxy\\snexus|sm-\\w[\\w\\d]+))/i,\n            /(sam[sung]*)[\\s-]*(\\w+-?[\\w-]*)/i,\n            /sec-((sgh\\w+))/i\n            ], [[VENDOR, 'Samsung'], MODEL, [TYPE, MOBILE]], [\n\n            /sie-(\\w*)/i                                                        // Siemens\n            ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\n\n            /(maemo|nokia).*(n900|lumia\\s\\d+)/i,                                // Nokia\n            /(nokia)[\\s_-]?([\\w-]*)/i\n            ], [[VENDOR, 'Nokia'], MODEL, [TYPE, MOBILE]], [\n\n            /android[x\\d\\.\\s;]+\\s([ab][1-7]\\-?[0178a]\\d\\d?)/i                   // Acer\n            ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n            /android.+([vl]k\\-?\\d{3})\\s+build/i                                 // LG Tablet\n            ], [MODEL, [VENDOR, 'LG'], [TYPE, TABLET]], [\n            /android\\s3\\.[\\s\\w;-]{10}(lg?)-([06cv9]{3,4})/i                     // LG Tablet\n            ], [[VENDOR, 'LG'], MODEL, [TYPE, TABLET]], [\n            /(lg) netcast\\.tv/i                                                 // LG SmartTV\n            ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n            /(nexus\\s[45])/i,                                                   // LG\n            /lg[e;\\s\\/-]+(\\w*)/i,\n            /android.+lg(\\-?[\\d\\w]+)\\s+build/i\n            ], [MODEL, [VENDOR, 'LG'], [TYPE, MOBILE]], [\n\n            /(lenovo)\\s?(s(?:5000|6000)(?:[\\w-]+)|tab(?:[\\s\\w]+))/i             // Lenovo tablets\n            ], [VENDOR, MODEL, [TYPE, TABLET]], [\n            /android.+(ideatab[a-z0-9\\-\\s]+)/i                                  // Lenovo\n            ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\n            /(lenovo)[_\\s-]?([\\w-]+)/i\n            ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n            /linux;.+((jolla));/i                                               // Jolla\n            ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n            /((pebble))app\\/[\\d\\.]+\\s/i                                         // Pebble\n            ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n\n            /android.+;\\s(oppo)\\s?([\\w\\s]+)\\sbuild/i                            // OPPO\n            ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n            /crkey/i                                                            // Google Chromecast\n            ], [[MODEL, 'Chromecast'], [VENDOR, 'Google'], [TYPE, SMARTTV]], [\n\n            /android.+;\\s(glass)\\s\\d/i                                          // Google Glass\n            ], [MODEL, [VENDOR, 'Google'], [TYPE, WEARABLE]], [\n\n            /android.+;\\s(pixel c)[\\s)]/i                                       // Google Pixel C\n            ], [MODEL, [VENDOR, 'Google'], [TYPE, TABLET]], [\n\n            /android.+;\\s(pixel( [23])?( xl)?)[\\s)]/i                              // Google Pixel\n            ], [MODEL, [VENDOR, 'Google'], [TYPE, MOBILE]], [\n\n            /android.+;\\s(\\w+)\\s+build\\/hm\\1/i,                                 // Xiaomi Hongmi 'numeric' models\n            /android.+(hm[\\s\\-_]*note?[\\s_]*(?:\\d\\w)?)\\s+build/i,               // Xiaomi Hongmi\n            /android.+(mi[\\s\\-_]*(?:a\\d|one|one[\\s_]plus|note lte)?[\\s_]*(?:\\d?\\w?)[\\s_]*(?:plus)?)\\s+build/i,    \n                                                                                // Xiaomi Mi\n            /android.+(redmi[\\s\\-_]*(?:note)?(?:[\\s_]?[\\w\\s]+))\\s+build/i       // Redmi Phones\n            ], [[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, MOBILE]], [\n            /android.+(mi[\\s\\-_]*(?:pad)(?:[\\s_]?[\\w\\s]+))\\s+build/i            // Mi Pad tablets\n            ],[[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, TABLET]], [\n            /android.+;\\s(m[1-5]\\snote)\\sbuild/i                                // Meizu\n            ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n            /(mz)-([\\w-]{2,})/i\n            ], [[VENDOR, 'Meizu'], MODEL, [TYPE, MOBILE]], [\n\n            /android.+a000(1)\\s+build/i,                                        // OnePlus\n            /android.+oneplus\\s(a\\d{4})[\\s)]/i\n            ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\n\n            /android.+[;\\/]\\s*(RCT[\\d\\w]+)\\s+build/i                            // RCA Tablets\n            ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\n\n            /android.+[;\\/\\s]+(Venue[\\d\\s]{2,7})\\s+build/i                      // Dell Venue Tablets\n            ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\n\n            /android.+[;\\/]\\s*(Q[T|M][\\d\\w]+)\\s+build/i                         // Verizon Tablet\n            ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\n\n            /android.+[;\\/]\\s+(Barnes[&\\s]+Noble\\s+|BN[RT])(V?.*)\\s+build/i     // Barnes & Noble Tablet\n            ], [[VENDOR, 'Barnes & Noble'], MODEL, [TYPE, TABLET]], [\n\n            /android.+[;\\/]\\s+(TM\\d{3}.*\\b)\\s+build/i                           // Barnes & Noble Tablet\n            ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\n\n            /android.+;\\s(k88)\\sbuild/i                                         // ZTE K Series Tablet\n            ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\n\n            /android.+[;\\/]\\s*(gen\\d{3})\\s+build.*49h/i                         // Swiss GEN Mobile\n            ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\n\n            /android.+[;\\/]\\s*(zur\\d{3})\\s+build/i                              // Swiss ZUR Tablet\n            ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\n\n            /android.+[;\\/]\\s*((Zeki)?TB.*\\b)\\s+build/i                         // Zeki Tablets\n            ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\n\n            /(android).+[;\\/]\\s+([YR]\\d{2})\\s+build/i,\n            /android.+[;\\/]\\s+(Dragon[\\-\\s]+Touch\\s+|DT)(\\w{5})\\sbuild/i        // Dragon Touch Tablet\n            ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\n\n            /android.+[;\\/]\\s*(NS-?\\w{0,9})\\sbuild/i                            // Insignia Tablets\n            ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\n\n            /android.+[;\\/]\\s*((NX|Next)-?\\w{0,9})\\s+build/i                    // NextBook Tablets\n            ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\n\n            /android.+[;\\/]\\s*(Xtreme\\_)?(V(1[045]|2[015]|30|40|60|7[05]|90))\\s+build/i\n            ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [                    // Voice Xtreme Phones\n\n            /android.+[;\\/]\\s*(LVTEL\\-)?(V1[12])\\s+build/i                     // LvTel Phones\n            ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\n\n            /android.+;\\s(PH-1)\\s/i\n            ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [                // Essential PH-1\n\n            /android.+[;\\/]\\s*(V(100MD|700NA|7011|917G).*\\b)\\s+build/i          // Envizen Tablets\n            ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\n\n            /android.+[;\\/]\\s*(Le[\\s\\-]+Pan)[\\s\\-]+(\\w{1,9})\\s+build/i          // Le Pan Tablets\n            ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n            /android.+[;\\/]\\s*(Trio[\\s\\-]*.*)\\s+build/i                         // MachSpeed Tablets\n            ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\n\n            /android.+[;\\/]\\s*(Trinity)[\\-\\s]*(T\\d{3})\\s+build/i                // Trinity Tablets\n            ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n            /android.+[;\\/]\\s*TU_(1491)\\s+build/i                               // Rotor Tablets\n            ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\n\n            /android.+(KS(.+))\\s+build/i                                        // Amazon Kindle Tablets\n            ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [\n\n            /android.+(Gigaset)[\\s\\-]+(Q\\w{1,9})\\s+build/i                      // Gigaset Tablets\n            ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n            /\\s(tablet|tab)[;\\/]/i,                                             // Unidentifiable Tablet\n            /\\s(mobile)(?:[;\\/]|\\ssafari)/i                                     // Unidentifiable Mobile\n            ], [[TYPE, util.lowerize], VENDOR, MODEL], [\n\n            /[\\s\\/\\(](smart-?tv)[;\\)]/i                                         // SmartTV\n            ], [[TYPE, SMARTTV]], [\n\n            /(android[\\w\\.\\s\\-]{0,9});.+build/i                                 // Generic Android Device\n            ], [MODEL, [VENDOR, 'Generic']]\n        ],\n\n        engine : [[\n\n            /windows.+\\sedge\\/([\\w\\.]+)/i                                       // EdgeHTML\n            ], [VERSION, [NAME, 'EdgeHTML']], [\n\n            /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i                         // Blink\n            ], [VERSION, [NAME, 'Blink']], [\n\n            /(presto)\\/([\\w\\.]+)/i,                                             // Presto\n            /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\\/([\\w\\.]+)/i,     \n                                                                                // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna\n            /(khtml|tasman|links)[\\/\\s]\\(?([\\w\\.]+)/i,                          // KHTML/Tasman/Links\n            /(icab)[\\/\\s]([23]\\.[\\d\\.]+)/i                                      // iCab\n            ], [NAME, VERSION], [\n\n            /rv\\:([\\w\\.]{1,9}).+(gecko)/i                                       // Gecko\n            ], [VERSION, NAME]\n        ],\n\n        os : [[\n\n            // Windows based\n            /microsoft\\s(windows)\\s(vista|xp)/i                                 // Windows (iTunes)\n            ], [NAME, VERSION], [\n            /(windows)\\snt\\s6\\.2;\\s(arm)/i,                                     // Windows RT\n            /(windows\\sphone(?:\\sos)*)[\\s\\/]?([\\d\\.\\s\\w]*)/i,                   // Windows Phone\n            /(windows\\smobile|windows)[\\s\\/]?([ntce\\d\\.\\s]+\\w)/i\n            ], [NAME, [VERSION, mapper.str, maps.os.windows.version]], [\n            /(win(?=3|9|n)|win\\s9x\\s)([nt\\d\\.]+)/i\n            ], [[NAME, 'Windows'], [VERSION, mapper.str, maps.os.windows.version]], [\n\n            // Mobile/Embedded OS\n            /\\((bb)(10);/i                                                      // BlackBerry 10\n            ], [[NAME, 'BlackBerry'], VERSION], [\n            /(blackberry)\\w*\\/?([\\w\\.]*)/i,                                     // Blackberry\n            /(tizen|kaios)[\\/\\s]([\\w\\.]+)/i,                                    // Tizen/KaiOS\n            /(android|webos|palm\\sos|qnx|bada|rim\\stablet\\sos|meego|sailfish|contiki)[\\/\\s-]?([\\w\\.]*)/i\n                                                                                // Android/WebOS/Palm/QNX/Bada/RIM/MeeGo/Contiki/Sailfish OS\n            ], [NAME, VERSION], [\n            /(symbian\\s?os|symbos|s60(?=;))[\\/\\s-]?([\\w\\.]*)/i                  // Symbian\n            ], [[NAME, 'Symbian'], VERSION], [\n            /\\((series40);/i                                                    // Series 40\n            ], [NAME], [\n            /mozilla.+\\(mobile;.+gecko.+firefox/i                               // Firefox OS\n            ], [[NAME, 'Firefox OS'], VERSION], [\n\n            // Console\n            /(nintendo|playstation)\\s([wids34portablevu]+)/i,                   // Nintendo/Playstation\n\n            // GNU/Linux based\n            /(mint)[\\/\\s\\(]?(\\w*)/i,                                            // Mint\n            /(mageia|vectorlinux)[;\\s]/i,                                       // Mageia/VectorLinux\n            /(joli|[kxln]?ubuntu|debian|suse|opensuse|gentoo|(?=\\s)arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\\/\\s-]?(?!chrom)([\\w\\.-]*)/i,\n                                                                                // Joli/Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware\n                                                                                // Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus\n            /(hurd|linux)\\s?([\\w\\.]*)/i,                                        // Hurd/Linux\n            /(gnu)\\s?([\\w\\.]*)/i                                                // GNU\n            ], [NAME, VERSION], [\n\n            /(cros)\\s[\\w]+\\s([\\w\\.]+\\w)/i                                       // Chromium OS\n            ], [[NAME, 'Chromium OS'], VERSION],[\n\n            // Solaris\n            /(sunos)\\s?([\\w\\.\\d]*)/i                                            // Solaris\n            ], [[NAME, 'Solaris'], VERSION], [\n\n            // BSD based\n            /\\s([frentopc-]{0,4}bsd|dragonfly)\\s?([\\w\\.]*)/i                    // FreeBSD/NetBSD/OpenBSD/PC-BSD/DragonFly\n            ], [NAME, VERSION],[\n\n            /(haiku)\\s(\\w+)/i                                                   // Haiku\n            ], [NAME, VERSION],[\n\n            /cfnetwork\\/.+darwin/i,\n            /ip[honead]{2,4}(?:.*os\\s([\\w]+)\\slike\\smac|;\\sopera)/i             // iOS\n            ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n\n            /(mac\\sos\\sx)\\s?([\\w\\s\\.]*)/i,\n            /(macintosh|mac(?=_powerpc)\\s)/i                                    // Mac OS\n            ], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [\n\n            // Other\n            /((?:open)?solaris)[\\/\\s-]?([\\w\\.]*)/i,                             // Solaris\n            /(aix)\\s((\\d)(?=\\.|\\)|\\s)[\\w\\.])*/i,                                // AIX\n            /(plan\\s9|minix|beos|os\\/2|amigaos|morphos|risc\\sos|openvms|fuchsia)/i,\n                                                                                // Plan9/Minix/BeOS/OS2/AmigaOS/MorphOS/RISCOS/OpenVMS/Fuchsia\n            /(unix)\\s?([\\w\\.]*)/i                                               // UNIX\n            ], [NAME, VERSION]\n        ]\n    };\n\n\n    /////////////////\n    // Constructor\n    ////////////////\n    var UAParser = function (uastring, extensions) {\n\n        if (typeof uastring === 'object') {\n            extensions = uastring;\n            uastring = undefined;\n        }\n\n        if (!(this instanceof UAParser)) {\n            return new UAParser(uastring, extensions).getResult();\n        }\n\n        var ua = uastring || ((window && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);\n        var rgxmap = extensions ? util.extend(regexes, extensions) : regexes;\n\n        this.getBrowser = function () {\n            var browser = { name: undefined, version: undefined };\n            mapper.rgx.call(browser, ua, rgxmap.browser);\n            browser.major = util.major(browser.version); // deprecated\n            return browser;\n        };\n        this.getCPU = function () {\n            var cpu = { architecture: undefined };\n            mapper.rgx.call(cpu, ua, rgxmap.cpu);\n            return cpu;\n        };\n        this.getDevice = function () {\n            var device = { vendor: undefined, model: undefined, type: undefined };\n            mapper.rgx.call(device, ua, rgxmap.device);\n            return device;\n        };\n        this.getEngine = function () {\n            var engine = { name: undefined, version: undefined };\n            mapper.rgx.call(engine, ua, rgxmap.engine);\n            return engine;\n        };\n        this.getOS = function () {\n            var os = { name: undefined, version: undefined };\n            mapper.rgx.call(os, ua, rgxmap.os);\n            return os;\n        };\n        this.getResult = function () {\n            return {\n                ua      : this.getUA(),\n                browser : this.getBrowser(),\n                engine  : this.getEngine(),\n                os      : this.getOS(),\n                device  : this.getDevice(),\n                cpu     : this.getCPU()\n            };\n        };\n        this.getUA = function () {\n            return ua;\n        };\n        this.setUA = function (uastring) {\n            ua = uastring;\n            return this;\n        };\n        return this;\n    };\n\n    UAParser.VERSION = LIBVERSION;\n    UAParser.BROWSER = {\n        NAME    : NAME,\n        MAJOR   : MAJOR, // deprecated\n        VERSION : VERSION\n    };\n    UAParser.CPU = {\n        ARCHITECTURE : ARCHITECTURE\n    };\n    UAParser.DEVICE = {\n        MODEL   : MODEL,\n        VENDOR  : VENDOR,\n        TYPE    : TYPE,\n        CONSOLE : CONSOLE,\n        MOBILE  : MOBILE,\n        SMARTTV : SMARTTV,\n        TABLET  : TABLET,\n        WEARABLE: WEARABLE,\n        EMBEDDED: EMBEDDED\n    };\n    UAParser.ENGINE = {\n        NAME    : NAME,\n        VERSION : VERSION\n    };\n    UAParser.OS = {\n        NAME    : NAME,\n        VERSION : VERSION\n    };\n\n    ///////////\n    // Export\n    //////////\n\n\n    // check js environment\n    if (typeof(exports) !== UNDEF_TYPE) {\n        // nodejs env\n        if (typeof module !== UNDEF_TYPE && module.exports) {\n            exports = module.exports = UAParser;\n        }\n        exports.UAParser = UAParser;\n    } else {\n        // requirejs env (optional)\n        if (typeof(define) === 'function' && define.amd) {\n            define(function () {\n                return UAParser;\n            });\n        } else if (window) {\n            // browser env\n            window.UAParser = UAParser;\n        }\n    }\n\n    // jQuery/Zepto specific (optional)\n    // Note:\n    //   In AMD env the global scope should be kept clean, but jQuery is an exception.\n    //   jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n    //   and we should catch that.\n    var $ = window && (window.jQuery || window.Zepto);\n    if ($ && !$.ua) {\n        var parser = new UAParser();\n        $.ua = parser.getResult();\n        $.ua.get = function () {\n            return parser.getUA();\n        };\n        $.ua.set = function (uastring) {\n            parser.setUA(uastring);\n            var result = parser.getResult();\n            for (var prop in result) {\n                $.ua[prop] = result[prop];\n            }\n        };\n    }\n\n})(typeof window === 'object' ? window : this);\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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 fontAttrs = require('../../plots/font_attributes');\nvar hoverLabelAttrs = require('./layout_attributes').hoverlabel;\nvar extendFlat = require('../../lib/extend').extendFlat;\n\nmodule.exports = {\n    hoverlabel: {\n        bgcolor: extendFlat({}, hoverLabelAttrs.bgcolor, {\n            arrayOk: true,\n            description: 'Sets the background color of the hover labels for this trace'\n        }),\n        bordercolor: extendFlat({}, hoverLabelAttrs.bordercolor, {\n            arrayOk: true,\n            description: 'Sets the border color of the hover labels for this trace.'\n        }),\n        font: fontAttrs({\n            arrayOk: true,\n            editType: 'none',\n            description: 'Sets the font used in hover labels.'\n        }),\n        align: extendFlat({}, hoverLabelAttrs.align, {arrayOk: true}),\n        namelength: extendFlat({}, hoverLabelAttrs.namelength, {arrayOk: true}),\n        editType: 'none'\n    }\n};\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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 tinycolor = require('tinycolor2');\n\nvar scales = {\n    'Greys': [\n        [0, 'rgb(0,0,0)'], [1, 'rgb(255,255,255)']\n    ],\n\n    'YlGnBu': [\n        [0, 'rgb(8,29,88)'], [0.125, 'rgb(37,52,148)'],\n        [0.25, 'rgb(34,94,168)'], [0.375, 'rgb(29,145,192)'],\n        [0.5, 'rgb(65,182,196)'], [0.625, 'rgb(127,205,187)'],\n        [0.75, 'rgb(199,233,180)'], [0.875, 'rgb(237,248,217)'],\n        [1, 'rgb(255,255,217)']\n    ],\n\n    'Greens': [\n        [0, 'rgb(0,68,27)'], [0.125, 'rgb(0,109,44)'],\n        [0.25, 'rgb(35,139,69)'], [0.375, 'rgb(65,171,93)'],\n        [0.5, 'rgb(116,196,118)'], [0.625, 'rgb(161,217,155)'],\n        [0.75, 'rgb(199,233,192)'], [0.875, 'rgb(229,245,224)'],\n        [1, 'rgb(247,252,245)']\n    ],\n\n    'YlOrRd': [\n        [0, 'rgb(128,0,38)'], [0.125, 'rgb(189,0,38)'],\n        [0.25, 'rgb(227,26,28)'], [0.375, 'rgb(252,78,42)'],\n        [0.5, 'rgb(253,141,60)'], [0.625, 'rgb(254,178,76)'],\n        [0.75, 'rgb(254,217,118)'], [0.875, 'rgb(255,237,160)'],\n        [1, 'rgb(255,255,204)']\n    ],\n\n    'Bluered': [\n        [0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']\n    ],\n\n    // modified RdBu based on\n    // http://www.kennethmoreland.com/color-maps/\n    'RdBu': [\n        [0, 'rgb(5,10,172)'], [0.35, 'rgb(106,137,247)'],\n        [0.5, 'rgb(190,190,190)'], [0.6, 'rgb(220,170,132)'],\n        [0.7, 'rgb(230,145,90)'], [1, 'rgb(178,10,28)']\n    ],\n\n    // Scale for non-negative numeric values\n    'Reds': [\n        [0, 'rgb(220,220,220)'], [0.2, 'rgb(245,195,157)'],\n        [0.4, 'rgb(245,160,105)'], [1, 'rgb(178,10,28)']\n    ],\n\n    // Scale for non-positive numeric values\n    'Blues': [\n        [0, 'rgb(5,10,172)'], [0.35, 'rgb(40,60,190)'],\n        [0.5, 'rgb(70,100,245)'], [0.6, 'rgb(90,120,245)'],\n        [0.7, 'rgb(106,137,247)'], [1, 'rgb(220,220,220)']\n    ],\n\n    'Picnic': [\n        [0, 'rgb(0,0,255)'], [0.1, 'rgb(51,153,255)'],\n        [0.2, 'rgb(102,204,255)'], [0.3, 'rgb(153,204,255)'],\n        [0.4, 'rgb(204,204,255)'], [0.5, 'rgb(255,255,255)'],\n        [0.6, 'rgb(255,204,255)'], [0.7, 'rgb(255,153,255)'],\n        [0.8, 'rgb(255,102,204)'], [0.9, 'rgb(255,102,102)'],\n        [1, 'rgb(255,0,0)']\n    ],\n\n    'Rainbow': [\n        [0, 'rgb(150,0,90)'], [0.125, 'rgb(0,0,200)'],\n        [0.25, 'rgb(0,25,255)'], [0.375, 'rgb(0,152,255)'],\n        [0.5, 'rgb(44,255,150)'], [0.625, 'rgb(151,255,0)'],\n        [0.75, 'rgb(255,234,0)'], [0.875, 'rgb(255,111,0)'],\n        [1, 'rgb(255,0,0)']\n    ],\n\n    'Portland': [\n        [0, 'rgb(12,51,131)'], [0.25, 'rgb(10,136,186)'],\n        [0.5, 'rgb(242,211,56)'], [0.75, 'rgb(242,143,56)'],\n        [1, 'rgb(217,30,30)']\n    ],\n\n    'Jet': [\n        [0, 'rgb(0,0,131)'], [0.125, 'rgb(0,60,170)'],\n        [0.375, 'rgb(5,255,255)'], [0.625, 'rgb(255,255,0)'],\n        [0.875, 'rgb(250,0,0)'], [1, 'rgb(128,0,0)']\n    ],\n\n    'Hot': [\n        [0, 'rgb(0,0,0)'], [0.3, 'rgb(230,0,0)'],\n        [0.6, 'rgb(255,210,0)'], [1, 'rgb(255,255,255)']\n    ],\n\n    'Blackbody': [\n        [0, 'rgb(0,0,0)'], [0.2, 'rgb(230,0,0)'],\n        [0.4, 'rgb(230,210,0)'], [0.7, 'rgb(255,255,255)'],\n        [1, 'rgb(160,200,255)']\n    ],\n\n    'Earth': [\n        [0, 'rgb(0,0,130)'], [0.1, 'rgb(0,180,180)'],\n        [0.2, 'rgb(40,210,40)'], [0.4, 'rgb(230,230,50)'],\n        [0.6, 'rgb(120,70,20)'], [1, 'rgb(255,255,255)']\n    ],\n\n    'Electric': [\n        [0, 'rgb(0,0,0)'], [0.15, 'rgb(30,0,100)'],\n        [0.4, 'rgb(120,0,100)'], [0.6, 'rgb(160,90,0)'],\n        [0.8, 'rgb(230,200,0)'], [1, 'rgb(255,250,220)']\n    ],\n\n    'Viridis': [\n        [0, '#440154'], [0.06274509803921569, '#48186a'],\n        [0.12549019607843137, '#472d7b'], [0.18823529411764706, '#424086'],\n        [0.25098039215686274, '#3b528b'], [0.3137254901960784, '#33638d'],\n        [0.3764705882352941, '#2c728e'], [0.4392156862745098, '#26828e'],\n        [0.5019607843137255, '#21918c'], [0.5647058823529412, '#1fa088'],\n        [0.6274509803921569, '#28ae80'], [0.6901960784313725, '#3fbc73'],\n        [0.7529411764705882, '#5ec962'], [0.8156862745098039, '#84d44b'],\n        [0.8784313725490196, '#addc30'], [0.9411764705882353, '#d8e219'],\n        [1, '#fde725']\n    ],\n\n    'Cividis': [\n        [0.000000, 'rgb(0,32,76)'], [0.058824, 'rgb(0,42,102)'],\n        [0.117647, 'rgb(0,52,110)'], [0.176471, 'rgb(39,63,108)'],\n        [0.235294, 'rgb(60,74,107)'], [0.294118, 'rgb(76,85,107)'],\n        [0.352941, 'rgb(91,95,109)'], [0.411765, 'rgb(104,106,112)'],\n        [0.470588, 'rgb(117,117,117)'], [0.529412, 'rgb(131,129,120)'],\n        [0.588235, 'rgb(146,140,120)'], [0.647059, 'rgb(161,152,118)'],\n        [0.705882, 'rgb(176,165,114)'], [0.764706, 'rgb(192,177,109)'],\n        [0.823529, 'rgb(209,191,102)'], [0.882353, 'rgb(225,204,92)'],\n        [0.941176, 'rgb(243,219,79)'], [1.000000, 'rgb(255,233,69)']\n    ]\n};\n\nvar defaultScale = scales.RdBu;\n\nfunction getScale(scl, dflt) {\n    if(!dflt) dflt = defaultScale;\n    if(!scl) return dflt;\n\n    function parseScale() {\n        try {\n            scl = scales[scl] || JSON.parse(scl);\n        } catch(e) {\n            scl = dflt;\n        }\n    }\n\n    if(typeof scl === 'string') {\n        parseScale();\n        // occasionally scl is double-JSON encoded...\n        if(typeof scl === 'string') parseScale();\n    }\n\n    if(!isValidScaleArray(scl)) return dflt;\n    return scl;\n}\n\n\nfunction isValidScaleArray(scl) {\n    var highestVal = 0;\n\n    if(!Array.isArray(scl) || scl.length < 2) return false;\n\n    if(!scl[0] || !scl[scl.length - 1]) return false;\n\n    if(+scl[0][0] !== 0 || +scl[scl.length - 1][0] !== 1) return false;\n\n    for(var i = 0; i < scl.length; i++) {\n        var si = scl[i];\n\n        if(si.length !== 2 || +si[0] < highestVal || !tinycolor(si[1]).isValid()) {\n            return false;\n        }\n\n        highestVal = +si[0];\n    }\n\n    return true;\n}\n\nfunction isValidScale(scl) {\n    if(scales[scl] !== undefined) return true;\n    else return isValidScaleArray(scl);\n}\n\nmodule.exports = {\n    scales: scales,\n    defaultScale: defaultScale,\n\n    get: getScale,\n    isValid: isValidScale\n};\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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 isArrayOrTypedArray = require('./array').isArrayOrTypedArray;\nvar isPlainObject = require('./is_plain_object');\n\n/**\n * Relink private _keys and keys with a function value from one container\n * to the new container.\n * Relink means copying if object is pass-by-value and adding a reference\n * if object is pass-by-ref.\n * This prevents deepCopying massive structures like a webgl context.\n */\nmodule.exports = function relinkPrivateKeys(toContainer, fromContainer) {\n    for(var k in fromContainer) {\n        var fromVal = fromContainer[k];\n        var toVal = toContainer[k];\n\n        if(toVal === fromVal) continue;\n\n        if(k.charAt(0) === '_' || typeof fromVal === 'function') {\n            // if it already exists at this point, it's something\n            // that we recreate each time around, so ignore it\n            if(k in toContainer) continue;\n\n            toContainer[k] = fromVal;\n        } else if(isArrayOrTypedArray(fromVal) && isArrayOrTypedArray(toVal) && isPlainObject(fromVal[0])) {\n            // filter out data_array items that can contain user objects\n            // most of the time the toVal === fromVal check will catch these early\n            // but if the user makes new ones we also don't want to recurse in.\n            if(k === 'customdata' || k === 'ids') continue;\n\n            // recurse into arrays containers\n            var minLen = Math.min(fromVal.length, toVal.length);\n            for(var j = 0; j < minLen; j++) {\n                if((toVal[j] !== fromVal[j]) && isPlainObject(fromVal[j]) && isPlainObject(toVal[j])) {\n                    relinkPrivateKeys(toVal[j], fromVal[j]);\n                }\n            }\n        } else if(isPlainObject(fromVal) && isPlainObject(toVal)) {\n            // recurse into objects, but only if they still exist\n            relinkPrivateKeys(toVal, fromVal);\n\n            if(!Object.keys(toVal).length) delete toContainer[k];\n        }\n    }\n};\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nconst EnterpriseActions = Reflux.createActions({\n  requestFreeEnterpriseLicense: { asyncResult: true },\n  getLicenseInfo: { asyncResult: true },\n});\n\nexport default EnterpriseActions;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nconst AlarmCallbackHistoryActions = Reflux.createActions({\n  list: { asyncResult: true },\n});\n\nexport default AlarmCallbackHistoryActions;\n","(function(){\r\n  var crypt = require('crypt'),\r\n      utf8 = require('charenc').utf8,\r\n      isBuffer = require('is-buffer'),\r\n      bin = require('charenc').bin,\r\n\r\n  // The core\r\n  md5 = function (message, options) {\r\n    // Convert to byte array\r\n    if (message.constructor == String)\r\n      if (options && options.encoding === 'binary')\r\n        message = bin.stringToBytes(message);\r\n      else\r\n        message = utf8.stringToBytes(message);\r\n    else if (isBuffer(message))\r\n      message = Array.prototype.slice.call(message, 0);\r\n    else if (!Array.isArray(message) && message.constructor !== Uint8Array)\r\n      message = message.toString();\r\n    // else, assume byte array already\r\n\r\n    var m = crypt.bytesToWords(message),\r\n        l = message.length * 8,\r\n        a =  1732584193,\r\n        b = -271733879,\r\n        c = -1732584194,\r\n        d =  271733878;\r\n\r\n    // Swap endian\r\n    for (var i = 0; i < m.length; i++) {\r\n      m[i] = ((m[i] <<  8) | (m[i] >>> 24)) & 0x00FF00FF |\r\n             ((m[i] << 24) | (m[i] >>>  8)) & 0xFF00FF00;\r\n    }\r\n\r\n    // Padding\r\n    m[l >>> 5] |= 0x80 << (l % 32);\r\n    m[(((l + 64) >>> 9) << 4) + 14] = l;\r\n\r\n    // Method shortcuts\r\n    var FF = md5._ff,\r\n        GG = md5._gg,\r\n        HH = md5._hh,\r\n        II = md5._ii;\r\n\r\n    for (var i = 0; i < m.length; i += 16) {\r\n\r\n      var aa = a,\r\n          bb = b,\r\n          cc = c,\r\n          dd = d;\r\n\r\n      a = FF(a, b, c, d, m[i+ 0],  7, -680876936);\r\n      d = FF(d, a, b, c, m[i+ 1], 12, -389564586);\r\n      c = FF(c, d, a, b, m[i+ 2], 17,  606105819);\r\n      b = FF(b, c, d, a, m[i+ 3], 22, -1044525330);\r\n      a = FF(a, b, c, d, m[i+ 4],  7, -176418897);\r\n      d = FF(d, a, b, c, m[i+ 5], 12,  1200080426);\r\n      c = FF(c, d, a, b, m[i+ 6], 17, -1473231341);\r\n      b = FF(b, c, d, a, m[i+ 7], 22, -45705983);\r\n      a = FF(a, b, c, d, m[i+ 8],  7,  1770035416);\r\n      d = FF(d, a, b, c, m[i+ 9], 12, -1958414417);\r\n      c = FF(c, d, a, b, m[i+10], 17, -42063);\r\n      b = FF(b, c, d, a, m[i+11], 22, -1990404162);\r\n      a = FF(a, b, c, d, m[i+12],  7,  1804603682);\r\n      d = FF(d, a, b, c, m[i+13], 12, -40341101);\r\n      c = FF(c, d, a, b, m[i+14], 17, -1502002290);\r\n      b = FF(b, c, d, a, m[i+15], 22,  1236535329);\r\n\r\n      a = GG(a, b, c, d, m[i+ 1],  5, -165796510);\r\n      d = GG(d, a, b, c, m[i+ 6],  9, -1069501632);\r\n      c = GG(c, d, a, b, m[i+11], 14,  643717713);\r\n      b = GG(b, c, d, a, m[i+ 0], 20, -373897302);\r\n      a = GG(a, b, c, d, m[i+ 5],  5, -701558691);\r\n      d = GG(d, a, b, c, m[i+10],  9,  38016083);\r\n      c = GG(c, d, a, b, m[i+15], 14, -660478335);\r\n      b = GG(b, c, d, a, m[i+ 4], 20, -405537848);\r\n      a = GG(a, b, c, d, m[i+ 9],  5,  568446438);\r\n      d = GG(d, a, b, c, m[i+14],  9, -1019803690);\r\n      c = GG(c, d, a, b, m[i+ 3], 14, -187363961);\r\n      b = GG(b, c, d, a, m[i+ 8], 20,  1163531501);\r\n      a = GG(a, b, c, d, m[i+13],  5, -1444681467);\r\n      d = GG(d, a, b, c, m[i+ 2],  9, -51403784);\r\n      c = GG(c, d, a, b, m[i+ 7], 14,  1735328473);\r\n      b = GG(b, c, d, a, m[i+12], 20, -1926607734);\r\n\r\n      a = HH(a, b, c, d, m[i+ 5],  4, -378558);\r\n      d = HH(d, a, b, c, m[i+ 8], 11, -2022574463);\r\n      c = HH(c, d, a, b, m[i+11], 16,  1839030562);\r\n      b = HH(b, c, d, a, m[i+14], 23, -35309556);\r\n      a = HH(a, b, c, d, m[i+ 1],  4, -1530992060);\r\n      d = HH(d, a, b, c, m[i+ 4], 11,  1272893353);\r\n      c = HH(c, d, a, b, m[i+ 7], 16, -155497632);\r\n      b = HH(b, c, d, a, m[i+10], 23, -1094730640);\r\n      a = HH(a, b, c, d, m[i+13],  4,  681279174);\r\n      d = HH(d, a, b, c, m[i+ 0], 11, -358537222);\r\n      c = HH(c, d, a, b, m[i+ 3], 16, -722521979);\r\n      b = HH(b, c, d, a, m[i+ 6], 23,  76029189);\r\n      a = HH(a, b, c, d, m[i+ 9],  4, -640364487);\r\n      d = HH(d, a, b, c, m[i+12], 11, -421815835);\r\n      c = HH(c, d, a, b, m[i+15], 16,  530742520);\r\n      b = HH(b, c, d, a, m[i+ 2], 23, -995338651);\r\n\r\n      a = II(a, b, c, d, m[i+ 0],  6, -198630844);\r\n      d = II(d, a, b, c, m[i+ 7], 10,  1126891415);\r\n      c = II(c, d, a, b, m[i+14], 15, -1416354905);\r\n      b = II(b, c, d, a, m[i+ 5], 21, -57434055);\r\n      a = II(a, b, c, d, m[i+12],  6,  1700485571);\r\n      d = II(d, a, b, c, m[i+ 3], 10, -1894986606);\r\n      c = II(c, d, a, b, m[i+10], 15, -1051523);\r\n      b = II(b, c, d, a, m[i+ 1], 21, -2054922799);\r\n      a = II(a, b, c, d, m[i+ 8],  6,  1873313359);\r\n      d = II(d, a, b, c, m[i+15], 10, -30611744);\r\n      c = II(c, d, a, b, m[i+ 6], 15, -1560198380);\r\n      b = II(b, c, d, a, m[i+13], 21,  1309151649);\r\n      a = II(a, b, c, d, m[i+ 4],  6, -145523070);\r\n      d = II(d, a, b, c, m[i+11], 10, -1120210379);\r\n      c = II(c, d, a, b, m[i+ 2], 15,  718787259);\r\n      b = II(b, c, d, a, m[i+ 9], 21, -343485551);\r\n\r\n      a = (a + aa) >>> 0;\r\n      b = (b + bb) >>> 0;\r\n      c = (c + cc) >>> 0;\r\n      d = (d + dd) >>> 0;\r\n    }\r\n\r\n    return crypt.endian([a, b, c, d]);\r\n  };\r\n\r\n  // Auxiliary functions\r\n  md5._ff  = function (a, b, c, d, x, s, t) {\r\n    var n = a + (b & c | ~b & d) + (x >>> 0) + t;\r\n    return ((n << s) | (n >>> (32 - s))) + b;\r\n  };\r\n  md5._gg  = function (a, b, c, d, x, s, t) {\r\n    var n = a + (b & d | c & ~d) + (x >>> 0) + t;\r\n    return ((n << s) | (n >>> (32 - s))) + b;\r\n  };\r\n  md5._hh  = function (a, b, c, d, x, s, t) {\r\n    var n = a + (b ^ c ^ d) + (x >>> 0) + t;\r\n    return ((n << s) | (n >>> (32 - s))) + b;\r\n  };\r\n  md5._ii  = function (a, b, c, d, x, s, t) {\r\n    var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;\r\n    return ((n << s) | (n >>> (32 - s))) + b;\r\n  };\r\n\r\n  // Package private blocksize\r\n  md5._blocksize = 16;\r\n  md5._digestsize = 16;\r\n\r\n  module.exports = function (message, options) {\r\n    if (message === undefined || message === null)\r\n      throw new Error('Illegal argument ' + message);\r\n\r\n    var digestbytes = crypt.wordsToBytes(md5(message, options));\r\n    return options && options.asBytes ? digestbytes :\r\n        options && options.asString ? bin.bytesToString(digestbytes) :\r\n        crypt.bytesToHex(digestbytes);\r\n  };\r\n\r\n})();\r\n","'use strict';\r\n\r\n/**\r\n * Is this string all whitespace?\r\n * This solution kind of makes my brain hurt, but it's significantly faster\r\n * than !str.trim() or any other solution I could find.\r\n *\r\n * whitespace codes from: http://en.wikipedia.org/wiki/Whitespace_character\r\n * and verified with:\r\n *\r\n *  for(var i = 0; i < 65536; i++) {\r\n *      var s = String.fromCharCode(i);\r\n *      if(+s===0 && !s.trim()) console.log(i, s);\r\n *  }\r\n *\r\n * which counts a couple of these as *not* whitespace, but finds nothing else\r\n * that *is* whitespace. Note that charCodeAt stops at 16 bits, but it appears\r\n * that there are no whitespace characters above this, and code points above\r\n * this do not map onto white space characters.\r\n */\r\n\r\nmodule.exports = function(str){\r\n    var l = str.length,\r\n        a;\r\n    for(var i = 0; i < l; i++) {\r\n        a = str.charCodeAt(i);\r\n        if((a < 9 || a > 13) && (a !== 32) && (a !== 133) && (a !== 160) &&\r\n            (a !== 5760) && (a !== 6158) && (a < 8192 || a > 8205) &&\r\n            (a !== 8232) && (a !== 8233) && (a !== 8239) && (a !== 8287) &&\r\n            (a !== 8288) && (a !== 12288) && (a !== 65279)) {\r\n                return false;\r\n        }\r\n    }\r\n    return true;\r\n}\r\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport fetch from 'logic/rest/FetchProvider';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport * as URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\n\ntype Output = {\n  id: string,\n  title: string,\n  type: string,\n};\n\nconst OutputsStore = Reflux.createStore({\n  OUTPUTS_URL: URLUtils.qualifyUrl(ApiRoutes.OutputsApiController.index().url),\n\n  load(callback: (outputs: Array) => void) {\n    fetch('GET', this.OUTPUTS_URL)\n      .then(callback, this._failCallback);\n  },\n  loadForStreamId(streamId: string, callback: (outputs: Array) => void) {\n    const url = URLUtils.qualifyUrl(ApiRoutes.StreamOutputsApiController.index(streamId).url);\n\n    fetch('GET', url)\n      .then(callback, this._failCallback);\n  },\n  loadAvailableTypes(callback: (available: any) => void) {\n    const url = URLUtils.qualifyUrl(ApiRoutes.OutputsApiController.availableTypes().url);\n\n    fetch('GET', url)\n      .then(callback, this._failCallback);\n  },\n  loadAvailable(typeName: string, callback: (available: any) => void) {\n    const url = URLUtils.qualifyUrl(ApiRoutes.OutputsApiController.availableTypes().url);\n\n    fetch('GET', url)\n      .then((resp) => {\n        return resp.types[typeName];\n      }, this._failCallback)\n      .then(callback);\n  },\n  remove(outputId: string, callback: (error: any) => void) {\n    const url = URLUtils.qualifyUrl(ApiRoutes.OutputsApiController.delete(outputId).url);\n\n    fetch('DELETE', url)\n      .then(callback, (error) => {\n        UserNotification.error(`Terminating output failed with status: ${error}`,\n          'Could not terminate output');\n      });\n  },\n  save(output: any, callback: (output: Output) => void) {\n    const failCallback = (error) => {\n      UserNotification.error(`Saving Output \"${output.title}\" failed with status: ${error}`,\n        'Could not save Output');\n    };\n\n    const url = URLUtils.qualifyUrl(ApiRoutes.OutputsApiController.create().url);\n\n    fetch('POST', url, output)\n      .then(callback, failCallback);\n  },\n  update(output: Output, deltas: any, callback: (output: Output) => void) {\n    const failCallback = (error) => {\n      UserNotification.error(`Updating Output \"${output.title}\" failed with status: ${error}`,\n        'Could not update Output');\n    };\n\n    const url = URLUtils.qualifyUrl(ApiRoutes.OutputsApiController.update(output.id).url);\n\n    fetch('PUT', url, deltas)\n      .then(callback, failCallback);\n  },\n  _failCallback(error: string) {\n    UserNotification.error(`Loading outputs failed with status: ${error}`,\n      'Could not load outputs');\n  },\n});\n\nexport default OutputsStore;\n","\"use strict\";\n\n/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (cssWithMappingToString) {\n  var list = []; // return the list of modules as css string\n\n  list.toString = function toString() {\n    return this.map(function (item) {\n      var content = cssWithMappingToString(item);\n\n      if (item[2]) {\n        return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n      }\n\n      return content;\n    }).join('');\n  }; // import a list of modules into the list\n  // eslint-disable-next-line func-names\n\n\n  list.i = function (modules, mediaQuery, dedupe) {\n    if (typeof modules === 'string') {\n      // eslint-disable-next-line no-param-reassign\n      modules = [[null, modules, '']];\n    }\n\n    var alreadyImportedModules = {};\n\n    if (dedupe) {\n      for (var i = 0; i < this.length; i++) {\n        // eslint-disable-next-line prefer-destructuring\n        var id = this[i][0];\n\n        if (id != null) {\n          alreadyImportedModules[id] = true;\n        }\n      }\n    }\n\n    for (var _i = 0; _i < modules.length; _i++) {\n      var item = [].concat(modules[_i]);\n\n      if (dedupe && alreadyImportedModules[item[0]]) {\n        // eslint-disable-next-line no-continue\n        continue;\n      }\n\n      if (mediaQuery) {\n        if (!item[2]) {\n          item[2] = mediaQuery;\n        } else {\n          item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n        }\n      }\n\n      list.push(item);\n    }\n  };\n\n  return list;\n};","module.exports = perspectiveFromFieldOfView;\n\n/**\n * Generates a perspective projection matrix with the given field of view.\n * This is primarily useful for generating projection matrices to be used\n * with the still experiemental WebVR API.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fov Object containing the following values: upDegrees, downDegrees, leftDegrees, rightDegrees\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\nfunction perspectiveFromFieldOfView(out, fov, near, far) {\n    var upTan = Math.tan(fov.upDegrees * Math.PI/180.0),\n        downTan = Math.tan(fov.downDegrees * Math.PI/180.0),\n        leftTan = Math.tan(fov.leftDegrees * Math.PI/180.0),\n        rightTan = Math.tan(fov.rightDegrees * Math.PI/180.0),\n        xScale = 2.0 / (leftTan + rightTan),\n        yScale = 2.0 / (upTan + downTan);\n\n    out[0] = xScale;\n    out[1] = 0.0;\n    out[2] = 0.0;\n    out[3] = 0.0;\n    out[4] = 0.0;\n    out[5] = yScale;\n    out[6] = 0.0;\n    out[7] = 0.0;\n    out[8] = -((leftTan - rightTan) * xScale * 0.5);\n    out[9] = ((upTan - downTan) * yScale * 0.5);\n    out[10] = far / (near - far);\n    out[11] = -1.0;\n    out[12] = 0.0;\n    out[13] = 0.0;\n    out[14] = (far * near) / (near - far);\n    out[15] = 0.0;\n    return out;\n}\n\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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 isNumeric = require('fast-isnumeric');\nvar Lib = require('../../lib');\nvar constants = require('../../constants/numerical');\nvar ONEDAY = constants.ONEDAY;\nvar ONEWEEK = constants.ONEWEEK;\n\n/**\n * Return a validated dtick value for this axis\n *\n * @param {any} dtick: the candidate dtick. valid values are numbers and strings,\n *     and further constrained depending on the axis type.\n * @param {string} axType: the axis type\n */\nexports.dtick = function(dtick, axType) {\n    var isLog = axType === 'log';\n    var isDate = axType === 'date';\n    var isCat = axType === 'category';\n    var dtickDflt = isDate ? ONEDAY : 1;\n\n    if(!dtick) return dtickDflt;\n\n    if(isNumeric(dtick)) {\n        dtick = Number(dtick);\n        if(dtick <= 0) return dtickDflt;\n        if(isCat) {\n            // category dtick must be positive integers\n            return Math.max(1, Math.round(dtick));\n        }\n        if(isDate) {\n            // date dtick must be at least 0.1ms (our current precision)\n            return Math.max(0.1, dtick);\n        }\n        return dtick;\n    }\n\n    if(typeof dtick !== 'string' || !(isDate || isLog)) {\n        return dtickDflt;\n    }\n\n    var prefix = dtick.charAt(0);\n    var dtickNum = dtick.substr(1);\n    dtickNum = isNumeric(dtickNum) ? Number(dtickNum) : 0;\n\n    if((dtickNum <= 0) || !(\n            // \"M\" gives ticks every (integer) n months\n            (isDate && prefix === 'M' && dtickNum === Math.round(dtickNum)) ||\n            // \"L\" gives ticks linearly spaced in data (not in position) every (float) f\n            (isLog && prefix === 'L') ||\n            // \"D1\" gives powers of 10 with all small digits between, \"D2\" gives only 2 and 5\n            (isLog && prefix === 'D' && (dtickNum === 1 || dtickNum === 2))\n        )) {\n        return dtickDflt;\n    }\n\n    return dtick;\n};\n\n/**\n * Return a validated tick0 for this axis\n *\n * @param {any} tick0: the candidate tick0. Valid values are numbers and strings,\n *     further constrained depending on the axis type\n * @param {string} axType: the axis type\n * @param {string} calendar: for date axes, the calendar to validate/convert with\n * @param {any} dtick: an already valid dtick. Only used for D1 and D2 log dticks,\n *     which do not support tick0 at all.\n */\nexports.tick0 = function(tick0, axType, calendar, dtick) {\n    if(axType === 'date') {\n        return Lib.cleanDate(tick0,\n            Lib.dateTick0(calendar, (dtick % ONEWEEK === 0) ? 1 : 0)\n        );\n    }\n    if(dtick === 'D1' || dtick === 'D2') {\n        // D1 and D2 modes ignore tick0 entirely\n        return undefined;\n    }\n    // Aside from date axes, tick0 must be numeric\n    return isNumeric(tick0) ? Number(tick0) : 0;\n};\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as Immutable from 'immutable';\n\ndeclare global {\n  const DEVELOPMENT: boolean | undefined;\n  const GRAYLOG_API_URL: string | undefined;\n  const FEATURES: string | undefined;\n  const IS_CLOUD: boolean | undefined;\n}\n\nexport type AppConfigs = {\n  gl2ServerUrl: string,\n  gl2AppPathPrefix: string,\n  rootTimeZone: string,\n  isCloud: boolean,\n  pluginUISettings: { [key: string]: {} },\n  featureFlags: { [key: string]: string },\n};\n\ndeclare global {\n  interface Window {\n    appConfig: AppConfigs\n  }\n}\n\nconst appConfig = (): AppConfigs => {\n  return (window.appConfig || {}) as AppConfigs;\n};\n\nconst getEnabledFeatures = () => {\n  return Immutable.Map(appConfig().featureFlags)\n    .filter((value) => value.trim().toLowerCase() === 'on')\n    .keySeq().toList()\n    .filter((s) => typeof s === 'string');\n};\n\nconst AppConfig = {\n  features: getEnabledFeatures(),\n  gl2ServerUrl() {\n    if (typeof (GRAYLOG_API_URL) !== 'undefined') {\n      // The GRAYLOG_API_URL variable will be set by webpack via the DefinePlugin.\n      // eslint-disable-next-line no-undef\n      return GRAYLOG_API_URL;\n    }\n\n    return appConfig().gl2ServerUrl;\n  },\n\n  gl2AppPathPrefix() {\n    return appConfig().gl2AppPathPrefix;\n  },\n\n  gl2DevMode() {\n    // The DEVELOPMENT variable will be set by webpack via the DefinePlugin.\n    // eslint-disable-next-line no-undef\n    return typeof (DEVELOPMENT) !== 'undefined' && DEVELOPMENT;\n  },\n\n  isFeatureEnabled(feature: string) {\n    return this.features && this.features\n      .map((s) => s.trim().toLowerCase())\n      .includes(feature.toLowerCase());\n  },\n\n  rootTimeZone() {\n    return appConfig().rootTimeZone;\n  },\n\n  isCloud() {\n    if (typeof IS_CLOUD !== 'undefined') {\n      // The IS_CLOUD variable will be set by webpack via the DefinePlugin.\n      // eslint-disable-next-line no-undef\n      return IS_CLOUD;\n    }\n\n    return appConfig().isCloud;\n  },\n\n  customThemeColors() {\n    return appConfig()?.pluginUISettings?.['org.graylog.plugins.customization.theme'] ?? {};\n  },\n\n  publicNotifications() {\n    return appConfig()?.pluginUISettings?.['org.graylog.plugins.customization.notifications'] ?? {};\n  },\n\n};\n\nexport default AppConfig;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nconst IndexRangesActions = Reflux.createActions({\n  list: { asyncResult: true },\n  recalculate: { asyncResult: true },\n  recalculateIndex: { asyncResult: true },\n});\n\nexport default IndexRangesActions;\n","module.exports = str;\n\n/**\n * Returns a string representation of a mat4\n *\n * @param {mat4} mat matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\nfunction str(a) {\n    return 'mat4(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ', ' +\n                    a[4] + ', ' + a[5] + ', ' + a[6] + ', ' + a[7] + ', ' +\n                    a[8] + ', ' + a[9] + ', ' + a[10] + ', ' + a[11] + ', ' + \n                    a[12] + ', ' + a[13] + ', ' + a[14] + ', ' + a[15] + ')';\n};","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\nimport URI from 'urijs';\nimport lodash from 'lodash';\n\nimport * as URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport fetch from 'logic/rest/FetchProvider';\nimport CombinedProvider from 'injection/CombinedProvider';\n\nconst { EventDefinitionsActions } = CombinedProvider.get('EventDefinitions');\n\nconst EventDefinitionsStore = Reflux.createStore({\n  listenables: [EventDefinitionsActions],\n  sourceUrl: '/events/definitions',\n  all: undefined,\n  eventDefinitions: undefined,\n  context: undefined,\n  query: undefined,\n  pagination: {\n    count: undefined,\n    page: undefined,\n    pageSize: undefined,\n    total: undefined,\n    grandTotal: undefined,\n  },\n\n  getInitialState() {\n    return this.getState();\n  },\n\n  propagateChanges() {\n    this.trigger(this.getState());\n  },\n\n  getState() {\n    return {\n      all: this.all,\n      eventDefinitions: this.eventDefinitions,\n      context: this.context,\n      query: this.query,\n      pagination: this.pagination,\n    };\n  },\n\n  eventDefinitionsUrl({ segments = [], query = {} }) {\n    const uri = new URI(this.sourceUrl);\n    const nextSegments = lodash.concat(uri.segment(), segments);\n\n    uri.segmentCoded(nextSegments);\n    uri.query(query);\n\n    return URLUtils.qualifyUrl(uri.resource());\n  },\n\n  refresh() {\n    if (this.all) {\n      this.listAll();\n    }\n\n    if (this.pagination.page) {\n      this.listPaginated({\n        query: this.query,\n        page: this.pagination.page,\n        pageSize: this.pagination.pageSize,\n      });\n    }\n  },\n\n  listAll() {\n    const promise = fetch('GET', this.eventDefinitionsUrl({ query: { per_page: 0 } }));\n\n    promise.then((response) => {\n      this.all = response.event_definitions;\n      this.context = response.context;\n      this.propagateChanges();\n\n      return response;\n    });\n\n    EventDefinitionsActions.listAll.promise(promise);\n  },\n\n  listPaginated({ query = '', page = 1, pageSize = 10 }) {\n    const promise = fetch('GET', this.eventDefinitionsUrl({\n      query: {\n        query: query,\n        page: page,\n        per_page: pageSize,\n      },\n    }));\n\n    promise.then((response) => {\n      this.eventDefinitions = response.event_definitions;\n      this.context = response.context;\n      this.query = response.query;\n\n      this.pagination = {\n        count: response.count,\n        page: response.page,\n        pageSize: response.per_page,\n        total: response.total,\n        grandTotal: response.grand_total,\n      };\n\n      this.propagateChanges();\n\n      return response;\n    });\n\n    EventDefinitionsActions.listPaginated.promise(promise);\n  },\n\n  get(eventDefinitionId) {\n    const promise = fetch('GET', this.eventDefinitionsUrl({ segments: [eventDefinitionId, 'with-context'] }));\n\n    promise.catch((error) => {\n      if (error.status === 404) {\n        UserNotification.error(`Unable to find Event Definition with id <${eventDefinitionId}>, please ensure it wasn't deleted.`,\n          'Could not retrieve Event Definition');\n      }\n    });\n\n    EventDefinitionsActions.get.promise(promise);\n  },\n\n  setAlertFlag(eventDefinition) {\n    const isAlert = eventDefinition.notifications.length > 0;\n\n    return { ...eventDefinition, alert: isAlert };\n  },\n\n  extractSchedulerInfo(eventDefinition) {\n    // Removes the internal \"_is_scheduled\" field from the event definition data. We only use this to pass-through\n    // the flag from the form.\n    const clonedEventDefinition = lodash.cloneDeep(eventDefinition);\n    const { _is_scheduled } = lodash.pick(clonedEventDefinition.config, ['_is_scheduled']);\n\n    clonedEventDefinition.config = lodash.omit(clonedEventDefinition.config, ['_is_scheduled']);\n\n    return { eventDefinition: clonedEventDefinition, isScheduled: lodash.defaultTo(_is_scheduled, true) };\n  },\n\n  create(newEventDefinition) {\n    const { eventDefinition, isScheduled } = this.extractSchedulerInfo(newEventDefinition);\n    const promise = fetch('POST', this.eventDefinitionsUrl({ query: { schedule: isScheduled } }), this.setAlertFlag(eventDefinition));\n\n    promise.then(\n      (response) => {\n        UserNotification.success('Event Definition created successfully',\n          `Event Definition \"${eventDefinition.title}\" was created successfully.`);\n\n        this.refresh();\n\n        return response;\n      },\n      (error) => {\n        if (error.status !== 400 || !error.additional.body || !error.additional.body.failed) {\n          UserNotification.error(`Creating Event Definition \"${eventDefinition.title}\" failed with status: ${error}`,\n            'Could not save Event Definition');\n        }\n      },\n    );\n\n    EventDefinitionsActions.create.promise(promise);\n  },\n\n  update(eventDefinitionId, updatedEventDefinition) {\n    const { eventDefinition, isScheduled } = this.extractSchedulerInfo(updatedEventDefinition);\n    const promise = fetch('PUT', this.eventDefinitionsUrl({ segments: [eventDefinitionId], query: { schedule: isScheduled } }),\n      this.setAlertFlag(eventDefinition));\n\n    promise.then(\n      (response) => {\n        UserNotification.success('Event Definition updated successfully',\n          `Event Definition \"${eventDefinition.title}\" was updated successfully.`);\n\n        this.refresh();\n\n        return response;\n      },\n      (error) => {\n        if (error.status !== 400 || !error.additional.body || !error.additional.body.failed) {\n          UserNotification.error(`Updating Event Definition \"${eventDefinition.title}\" failed with status: ${error}`,\n            'Could not update Event Definition');\n        }\n      },\n    );\n\n    EventDefinitionsActions.update.promise(promise);\n  },\n\n  delete(eventDefinition) {\n    const promise = fetch('DELETE', this.eventDefinitionsUrl({ segments: [eventDefinition.id] }));\n\n    promise.then(\n      () => {\n        UserNotification.success('Event Definition deleted successfully',\n          `Event Definition \"${eventDefinition.title}\" was deleted successfully.`);\n\n        this.refresh();\n      },\n      (error) => {\n        UserNotification.error(`Deleting Event Definition \"${eventDefinition.title}\" failed with status: ${error}`,\n          'Could not delete Event Definition');\n      },\n    );\n\n    EventDefinitionsActions.delete.promise(promise);\n  },\n\n  enable(eventDefinition) {\n    const promise = fetch('PUT', this.eventDefinitionsUrl({ segments: [eventDefinition.id, 'schedule'] }));\n\n    promise.then(\n      (response) => {\n        UserNotification.success('Event Definition successfully enabled',\n          `Event Definition \"${eventDefinition.title}\" was successfully enabled.`);\n\n        this.refresh();\n\n        return response;\n      },\n      (error) => {\n        if (error.status !== 400 || !error.additional.body || !error.additional.body.failed) {\n          UserNotification.error(`Enabling Event Definition \"${eventDefinition.title}\" failed with status: ${error}`,\n            'Could not enable Event Definition');\n        }\n      },\n    );\n\n    EventDefinitionsActions.enable.promise(promise);\n  },\n\n  disable(eventDefinition) {\n    const promise = fetch('PUT', this.eventDefinitionsUrl({ segments: [eventDefinition.id, 'unschedule'] }));\n\n    promise.then(\n      (response) => {\n        UserNotification.success('Event Definition successfully disabled',\n          `Event Definition \"${eventDefinition.title}\" was successfully disabled.`);\n\n        this.refresh();\n\n        return response;\n      },\n      (error) => {\n        if (error.status !== 400 || !error.additional.body || !error.additional.body.failed) {\n          UserNotification.error(`Disabling Event Definition \"${eventDefinition.title}\" failed with status: ${error}`,\n            'Could not disable Event Definition');\n        }\n      },\n    );\n\n    EventDefinitionsActions.disable.promise(promise);\n  },\n});\n\nexport default EventDefinitionsStore;\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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 fxAttrs = require('../components/fx/attributes');\n\nmodule.exports = {\n    type: {\n        valType: 'enumerated',\n        role: 'info',\n        values: [],     // listed dynamically\n        dflt: 'scatter',\n        editType: 'calc+clearAxisTypes',\n        _noTemplating: true // we handle this at a higher level\n    },\n    visible: {\n        valType: 'enumerated',\n        values: [true, false, 'legendonly'],\n        role: 'info',\n        dflt: true,\n        editType: 'calc',\n        description: [\n            'Determines whether or not this trace is visible.',\n            'If *legendonly*, the trace is not drawn,',\n            'but can appear as a legend item',\n            '(provided that the legend itself is visible).'\n        ].join(' ')\n    },\n    showlegend: {\n        valType: 'boolean',\n        role: 'info',\n        dflt: true,\n        editType: 'style',\n        description: [\n            'Determines whether or not an item corresponding to this',\n            'trace is shown in the legend.'\n        ].join(' ')\n    },\n    legendgroup: {\n        valType: 'string',\n        role: 'info',\n        dflt: '',\n        editType: 'style',\n        description: [\n            'Sets the legend group for this trace.',\n            'Traces part of the same legend group hide/show at the same time',\n            'when toggling legend items.'\n        ].join(' ')\n    },\n    opacity: {\n        valType: 'number',\n        role: 'style',\n        min: 0,\n        max: 1,\n        dflt: 1,\n        editType: 'style',\n        description: 'Sets the opacity of the trace.'\n    },\n    name: {\n        valType: 'string',\n        role: 'info',\n        editType: 'style',\n        description: [\n            'Sets the trace name.',\n            'The trace name appear as the legend item and on hover.'\n        ].join(' ')\n    },\n    uid: {\n        valType: 'string',\n        role: 'info',\n        editType: 'plot',\n        anim: true,\n        description: [\n            'Assign an id to this trace,',\n            'Use this to provide object constancy between traces during animations',\n            'and transitions.'\n        ].join(' ')\n    },\n    ids: {\n        valType: 'data_array',\n        editType: 'calc',\n        anim: true,\n        description: [\n            'Assigns id labels to each datum.',\n            'These ids for object constancy of data points during animation.',\n            'Should be an array of strings, not numbers or any other type.'\n        ].join(' ')\n    },\n    customdata: {\n        valType: 'data_array',\n        editType: 'calc',\n        description: [\n            'Assigns extra data each datum.',\n            'This may be useful when listening to hover, click and selection events.',\n            'Note that, *scatter* traces also appends customdata items in the markers',\n            'DOM elements'\n        ].join(' ')\n    },\n    meta: {\n        valType: 'any',\n        arrayOk: true,\n        role: 'info',\n        editType: 'plot',\n        description: [\n            'Assigns extra meta information associated with this trace',\n            'that can be used in various text attributes.',\n            'Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text`',\n            '`rangeselector`, `updatemenues` and `sliders` `label` text',\n            'all support `meta`.',\n            'To access the trace `meta` values in an attribute in the same trace, simply use',\n            '`%{meta[i]}` where `i` is the index or key of the `meta`',\n            'item in question.',\n            'To access trace `meta` in layout attributes, use',\n            '`%{data[n[.meta[i]}` where `i` is the index or key of the `meta`',\n            'and `n` is the trace index.'\n        ].join(' ')\n    },\n\n    // N.B. these cannot be 'data_array' as they do not have the same length as\n    // other data arrays and arrayOk attributes in general\n    //\n    // Maybe add another valType:\n    // https://github.com/plotly/plotly.js/issues/1894\n    selectedpoints: {\n        valType: 'any',\n        role: 'info',\n        editType: 'calc',\n        description: [\n            'Array containing integer indices of selected points.',\n            'Has an effect only for traces that support selections.',\n            'Note that an empty array means an empty selection where the `unselected`',\n            'are turned on for all points, whereas, any other non-array values means no',\n            'selection all where the `selected` and `unselected` styles have no effect.'\n        ].join(' ')\n    },\n\n    hoverinfo: {\n        valType: 'flaglist',\n        role: 'info',\n        flags: ['x', 'y', 'z', 'text', 'name'],\n        extras: ['all', 'none', 'skip'],\n        arrayOk: true,\n        dflt: 'all',\n        editType: 'none',\n        description: [\n            'Determines which trace information appear on hover.',\n            'If `none` or `skip` are set, no information is displayed upon hovering.',\n            'But, if `none` is set, click and hover events are still fired.'\n        ].join(' ')\n    },\n    hoverlabel: fxAttrs.hoverlabel,\n    stream: {\n        token: {\n            valType: 'string',\n            noBlank: true,\n            strict: true,\n            role: 'info',\n            editType: 'calc',\n            description: [\n                'The stream id number links a data trace on a plot with a stream.',\n                'See https://chart-studio.plotly.com/settings for more details.'\n            ].join(' ')\n        },\n        maxpoints: {\n            valType: 'number',\n            min: 0,\n            max: 10000,\n            dflt: 500,\n            role: 'info',\n            editType: 'calc',\n            description: [\n                'Sets the maximum number of points to keep on the plots from an',\n                'incoming stream.',\n                'If `maxpoints` is set to *50*, only the newest 50 points will',\n                'be displayed on the plot.'\n            ].join(' ')\n        },\n        editType: 'calc'\n    },\n    transforms: {\n        _isLinkedToArray: 'transform',\n        editType: 'calc',\n        description: [\n            'An array of operations that manipulate the trace data,',\n            'for example filtering or sorting the data arrays.'\n        ].join(' ')\n    },\n    uirevision: {\n        valType: 'any',\n        role: 'info',\n        editType: 'none',\n        description: [\n            'Controls persistence of some user-driven changes to the trace:',\n            '`constraintrange` in `parcoords` traces, as well as some',\n            '`editable: true` modifications such as `name` and `colorbar.title`.',\n            'Defaults to `layout.uirevision`.',\n            'Note that other user-driven trace attribute changes are controlled',\n            'by `layout` attributes:',\n            '`trace.visible` is controlled by `layout.legend.uirevision`,',\n            '`selectedpoints` is controlled by `layout.selectionrevision`,',\n            'and `colorbar.(x|y)` (accessible with `config: {editable: true}`)',\n            'is controlled by `layout.editrevision`.',\n            'Trace changes are tracked by `uid`, which only falls back on trace',\n            'index if no `uid` is provided. So if your app can add/remove traces',\n            'before the end of the `data` array, such that the same trace has a',\n            'different index, you can still preserve user-driven changes if you',\n            'give each trace a `uid` that stays with it as it moves.'\n        ].join(' ')\n    }\n};\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nconst LoggersActions = Reflux.createActions({\n  loggers: { asyncResult: true },\n  subsystems: { asyncResult: true },\n  setSubsystemLoggerLevel: { asyncResult: true },\n});\n\nexport default LoggersActions;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\n\nimport * as Immutable from 'immutable';\n\nimport ParameterBinding from 'views/logic/parameters/ParameterBinding';\n\nimport type { ParameterBindingJsonRepresentation } from './ParameterBinding';\n\nimport { singleton } from '../singleton';\n\ntype InternalState = {\n  type: string,\n  name: string,\n  title: string,\n  description: string,\n  dataType: string,\n  defaultValue: any,\n  optional: boolean,\n  binding: ParameterBinding | undefined | null,\n};\n\nexport type ParameterJson = {\n  type: string,\n  name: string,\n  title: string,\n  description: string,\n  data_type: string,\n  default_value: any,\n  optional: boolean,\n  binding: ParameterBindingJsonRepresentation | undefined | null,\n};\n\ntype ParameterSubClass = {\n  fromJSON: (json: ParameterJson) => Parameter;\n};\n\nclass Parameter {\n  protected _value: InternalState;\n\n  static __registrations: { [key: string]: ParameterSubClass } = {};\n\n  constructor(type: string, name: string, title: string, description: string, dataType: string, defaultValue: any, optional: boolean, binding?: ParameterBinding) {\n    this._value = { type, name, title, description, dataType, defaultValue, optional, binding };\n  }\n\n  get type(): string {\n    return this._value.type;\n  }\n\n  get name(): string {\n    return this._value.name;\n  }\n\n  get title(): string {\n    return this._value.title;\n  }\n\n  get description(): string {\n    return this._value.description;\n  }\n\n  get dataType(): string {\n    return this._value.dataType;\n  }\n\n  get defaultValue(): any {\n    return this._value.defaultValue;\n  }\n\n  get optional(): boolean {\n    return this._value.optional;\n  }\n\n  // screw you eslint, using param.constructor.needsBinding() is ugly\n  // eslint-disable-next-line class-methods-use-this\n  get needsBinding(): boolean {\n    return true;\n  }\n\n  get binding(): ParameterBinding | undefined | null {\n    return this._value.binding;\n  }\n\n  static fromJSON(value: ParameterJson): Parameter {\n    const { type = 'value-parameter-v1' } = value; // default to ValueParameter in case type is empty\n    const implementingClass = Parameter.__registrations[type.toLocaleLowerCase()];\n\n    if (implementingClass) {\n      return implementingClass.fromJSON(value);\n    }\n\n    throw new Error(`No class found for type <${type}>`);\n  }\n\n  static registerSubtype(type: string, implementingClass: ParameterSubClass) {\n    this.__registrations[type.toLocaleLowerCase()] = implementingClass;\n  }\n}\n\nconst SingletonParameter = singleton('views.logic.parameters.Parameter', () => Parameter);\n// eslint-disable-next-line @typescript-eslint/no-redeclare\ntype SingletonParameter = InstanceType;\n\nexport default SingletonParameter;\n\nexport type ParameterMap = Immutable.Map;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nconst ConfigurationActions = Reflux.createActions({\n  list: { asyncResult: true },\n  listSearchesClusterConfig: { asyncResult: true },\n  listMessageProcessorsConfig: { asyncResult: true },\n  listEventsClusterConfig: { asyncResult: true },\n  listWhiteListConfig: { asyncResult: true },\n  listPermissionsConfig: { asyncResult: true },\n  update: { asyncResult: true },\n  updateWhitelist: { asyncResult: true },\n  updateMessageProcessorsConfig: { asyncResult: true },\n});\n\nexport default ConfigurationActions;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nconst StringUtils = {\n  tempDocument: document.createElement('textarea'),\n  capitalizeFirstLetter(text) {\n    return text.charAt(0).toUpperCase() + text.slice(1);\n  },\n  escapeHTML(text) {\n    this.tempDocument.textContent = text;\n\n    return this.tempDocument.innerHTML;\n  },\n  unescapeHTML(text) {\n    this.tempDocument.innerHTML = text;\n\n    return this.tempDocument.textContent;\n  },\n  pluralize(number, singular, plural) {\n    return (number === 1 || number === '1' ? singular : plural);\n  },\n  stringify(text) {\n    return (typeof text === 'object' ? JSON.stringify(text) : String(text)) || '';\n  },\n  replaceSpaces(text, newCharacter = '-') {\n    return text.replace(/\\s/g, newCharacter);\n  },\n  truncateWithEllipses(text = '', maxLength = 10, end = '...') {\n    if (text.length > maxLength) {\n      return `${text.substring(0, maxLength)}${end}`;\n    }\n\n    return text;\n  },\n};\n\nexport default StringUtils;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\nimport Promise from 'bluebird';\n\nimport * as URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\n\nconst SystemStore = Reflux.createStore({\n  system: undefined,\n  locales: undefined,\n  init() {\n    this.info().then((response) => {\n      this.trigger({ system: response });\n      this.system = response;\n    });\n\n    this.systemLocales().then((response) => {\n      this.trigger({ locales: response });\n      this.locales = response.locales;\n    });\n  },\n  getInitialState() {\n    return { system: this.system, locales: this.locales };\n  },\n  info() {\n    const url = URLUtils.qualifyUrl(ApiRoutes.SystemApiController.info().url);\n\n    return fetch('GET', url);\n  },\n  jvm() {\n    const url = URLUtils.qualifyUrl(ApiRoutes.SystemApiController.jvm().url);\n\n    return fetch('GET', url);\n  },\n  systemLocales() {\n    const url = URLUtils.qualifyUrl(ApiRoutes.SystemApiController.locales().url);\n\n    return fetch('GET', url);\n  },\n  elasticsearchVersion() {\n    const url = URLUtils.qualifyUrl(ApiRoutes.ClusterApiResource.elasticsearchStats().url);\n\n    const promise = new Promise((resolve, reject) => {\n      fetch('GET', url).then((response) => {\n        const splitVersion = response.cluster_version.split('.');\n\n        resolve({ major: splitVersion[0], minor: splitVersion[1], patch: splitVersion[2] });\n      }).catch(reject);\n    });\n\n    return promise;\n  },\n});\n\nexport default SystemStore;\n","module.exports = invert;\n\n/**\n * Inverts a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the source matrix\n * @returns {mat4} out\n */\nfunction invert(out, a) {\n    var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3],\n        a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7],\n        a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11],\n        a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15],\n\n        b00 = a00 * a11 - a01 * a10,\n        b01 = a00 * a12 - a02 * a10,\n        b02 = a00 * a13 - a03 * a10,\n        b03 = a01 * a12 - a02 * a11,\n        b04 = a01 * a13 - a03 * a11,\n        b05 = a02 * a13 - a03 * a12,\n        b06 = a20 * a31 - a21 * a30,\n        b07 = a20 * a32 - a22 * a30,\n        b08 = a20 * a33 - a23 * a30,\n        b09 = a21 * a32 - a22 * a31,\n        b10 = a21 * a33 - a23 * a31,\n        b11 = a22 * a33 - a23 * a32,\n\n        // Calculate the determinant\n        det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n    if (!det) { \n        return null; \n    }\n    det = 1.0 / det;\n\n    out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n    out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n    out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n    out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n    out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n    out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n    out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n    out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n    out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n    out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n    out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n    out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n    out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n    out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n    out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n    out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n\n    return out;\n};","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport { qualifyUrl } from 'util/URLUtils';\nimport fetch from 'logic/rest/FetchProvider';\nimport UserNotification from 'util/UserNotification';\nimport ActionsProvider from 'injection/ActionsProvider';\n\nconst InputTypesActions = ActionsProvider.getActions('InputTypes');\n\nexport type InputTypes = {\n  [type: string]: string,\n};\n\nexport type ConfigurationField = {\n  field_type: 'boolean' | 'text' | 'dropdown' | 'list' | 'number',\n  name: string,\n  human_name: string,\n  description: string,\n  default_value: any,\n  is_optional: boolean,\n  attributes: Array,\n  additional_info: any,\n  position: number,\n};\n\nexport type InputDescription = {\n  type: string,\n  name: string,\n  is_exclusive: boolean,\n  requested_configuration: {\n    [key: string]: ConfigurationField,\n  },\n  link_to_docs: string,\n};\n\nexport type InputDescriptions = {\n  [type: string]: InputDescription,\n};\n\nconst InputTypesStore = Reflux.createStore({\n  listenables: [InputTypesActions],\n  sourceUrl: '/system/inputs/types',\n  inputTypes: undefined,\n  inputDescriptions: undefined,\n\n  init() {\n    this.list();\n  },\n\n  getInitialState(): { inputTypes: InputTypes, inputDescriptions: InputDescriptions } {\n    return { inputTypes: this.inputTypes, inputDescriptions: this.inputDescriptions };\n  },\n\n  list() {\n    const promiseTypes = fetch('GET', qualifyUrl(this.sourceUrl));\n    const promiseDescriptions = fetch('GET', qualifyUrl(`${this.sourceUrl}/all`));\n    const promise: Promise<[{ types: InputTypes }, InputDescriptions]> = Promise.all([promiseTypes, promiseDescriptions]);\n\n    promise\n      .then(\n        ([typesResponse, descriptionsResponse]) => {\n          this.inputTypes = typesResponse.types;\n          this.inputDescriptions = descriptionsResponse;\n          this.trigger(this.getInitialState());\n        },\n        (error) => {\n          UserNotification.error(`Fetching Input Types failed with status: ${error}`,\n            'Could not retrieve Inputs');\n        },\n      );\n\n    InputTypesActions.list.promise(promise);\n  },\n\n  get(inputTypeId: string) {\n    const promise = fetch('GET', qualifyUrl(`${this.sourceUrl}/${inputTypeId}`));\n\n    promise\n      .catch((error) => {\n        UserNotification.error(`Fetching input ${inputTypeId} failed with status: ${error}`,\n          'Could not retrieve input');\n      });\n\n    InputTypesActions.get.promise(promise);\n  },\n});\n\nexport default InputTypesStore;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Qs from 'qs';\nimport URI from 'urijs';\nimport UAParser from 'ua-parser-js';\n\nimport AppConfig from 'util/AppConfig';\n\nconst ACCEPTED_PROTOCOLS = ['http:', 'https:'];\n\nconst qualifyRelativeURLWithCurrentHostname = (url: string): string => {\n  const uri = new URI(url);\n\n  if (!uri.hostname() || !uri.scheme()) {\n    const currentLocation = new URI(window.location);\n\n    return uri.absoluteTo(currentLocation).toString();\n  }\n\n  return url;\n};\n\nconst URLUtils = {\n  parser: new UAParser(),\n  qualifyUrl(url: string) {\n    const parsedUrl = new URI(url);\n\n    if (parsedUrl.is('absolute')) {\n      return url;\n    }\n\n    const absoluteServerUrl = qualifyRelativeURLWithCurrentHostname(AppConfig.gl2ServerUrl() ?? '');\n\n    return new URI(absoluteServerUrl + url).normalizePathname().toString();\n  },\n  appPrefixed(url: string) {\n    return URLUtils.concatURLPath(AppConfig.gl2AppPathPrefix(), url);\n  },\n  getParsedSearch(location: Location) {\n    let search = {};\n    let query = location.search;\n\n    if (query) {\n      if (query.indexOf('?') === 0 && query.length > 1) {\n        query = query.substr(1, query.length - 1);\n        search = Qs.parse(query);\n      }\n    }\n\n    return search;\n  },\n  getParsedHash(location: Location) {\n    let result = {};\n    let { hash } = location;\n\n    if (hash) {\n      if (hash.indexOf('#') === 0 && hash.length > 1) {\n        hash = hash.substr(1, hash.length - 1);\n        result = Qs.parse(hash);\n      }\n    }\n\n    return result;\n  },\n  replaceHashParam(name: string, newValue: string) {\n    const origHash = this.getParsedHash(window.location);\n\n    origHash[name] = newValue;\n    window.location.replace(`#${Qs.stringify(origHash)}`);\n  },\n  concatURLPath(...allArgs: string[]) {\n    const args = Array(allArgs.length);\n\n    // eslint-disable-next-line no-plusplus\n    for (let i = 0; i < allArgs.length; i++) {\n      args[i] = allArgs[i];\n    }\n\n    const joinedPath = `/${args.join('/')}`;\n\n    return joinedPath.replace(/[/]+/g, '/');\n  },\n  areCredentialsInURLSupported(): boolean {\n    const browser = URLUtils.parser.getBrowser();\n\n    return browser.name !== 'IE';\n  },\n  isValidURL(str: string) {\n    let isValid = true;\n\n    try {\n      // eslint-disable-next-line\n      new URL(str);\n    } catch (e) {\n      isValid = false;\n    }\n\n    return isValid;\n  },\n  hasAcceptedProtocol(string: string, acceptedProtocols = ACCEPTED_PROTOCOLS) {\n    // eslint-disable-next-line compat/compat\n    const url = new URL(string);\n\n    return acceptedProtocols.includes(url.protocol);\n  },\n};\n\nexport const qualifyUrlWithSessionCredentials = (url: string, sessionId: string) => {\n  let result = new URI(URLUtils.qualifyUrl(url));\n\n  if (URLUtils.areCredentialsInURLSupported()) {\n    const trimmedSessionId = sessionId !== undefined ? sessionId : '';\n\n    result = result.username(trimmedSessionId)\n      .password('session');\n  }\n\n  return result.toString();\n};\n\nexport default URLUtils;\n\nexport const {\n  parser,\n  appPrefixed,\n  getParsedHash,\n  getParsedSearch,\n  qualifyUrl,\n  replaceHashParam,\n  concatURLPath,\n  areCredentialsInURLSupported,\n  isValidURL,\n  hasAcceptedProtocol,\n} = URLUtils;\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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\nmodule.exports = {\n    mode: {\n        valType: 'enumerated',\n        dflt: 'afterall',\n        role: 'info',\n        values: ['immediate', 'next', 'afterall'],\n        description: [\n            'Describes how a new animate call interacts with currently-running',\n            'animations. If `immediate`, current animations are interrupted and',\n            'the new animation is started. If `next`, the current frame is allowed',\n            'to complete, after which the new animation is started. If `afterall`',\n            'all existing frames are animated to completion before the new animation',\n            'is started.'\n        ].join(' ')\n    },\n    direction: {\n        valType: 'enumerated',\n        role: 'info',\n        values: ['forward', 'reverse'],\n        dflt: 'forward',\n        description: [\n            'The direction in which to play the frames triggered by the animation call'\n        ].join(' ')\n    },\n    fromcurrent: {\n        valType: 'boolean',\n        dflt: false,\n        role: 'info',\n        description: [\n            'Play frames starting at the current frame instead of the beginning.'\n        ].join(' ')\n    },\n    frame: {\n        duration: {\n            valType: 'number',\n            role: 'info',\n            min: 0,\n            dflt: 500,\n            description: [\n                'The duration in milliseconds of each frame. If greater than the frame',\n                'duration, it will be limited to the frame duration.'\n            ].join(' ')\n        },\n        redraw: {\n            valType: 'boolean',\n            role: 'info',\n            dflt: true,\n            description: [\n                'Redraw the plot at completion of the transition. This is desirable',\n                'for transitions that include properties that cannot be transitioned,',\n                'but may significantly slow down updates that do not require a full',\n                'redraw of the plot'\n            ].join(' ')\n        },\n    },\n    transition: {\n        duration: {\n            valType: 'number',\n            role: 'info',\n            min: 0,\n            dflt: 500,\n            editType: 'none',\n            description: [\n                'The duration of the transition, in milliseconds. If equal to zero,',\n                'updates are synchronous.'\n            ].join(' ')\n        },\n        easing: {\n            valType: 'enumerated',\n            dflt: 'cubic-in-out',\n            values: [\n                'linear',\n                'quad',\n                'cubic',\n                'sin',\n                'exp',\n                'circle',\n                'elastic',\n                'back',\n                'bounce',\n                'linear-in',\n                'quad-in',\n                'cubic-in',\n                'sin-in',\n                'exp-in',\n                'circle-in',\n                'elastic-in',\n                'back-in',\n                'bounce-in',\n                'linear-out',\n                'quad-out',\n                'cubic-out',\n                'sin-out',\n                'exp-out',\n                'circle-out',\n                'elastic-out',\n                'back-out',\n                'bounce-out',\n                'linear-in-out',\n                'quad-in-out',\n                'cubic-in-out',\n                'sin-in-out',\n                'exp-in-out',\n                'circle-in-out',\n                'elastic-in-out',\n                'back-in-out',\n                'bounce-in-out'\n            ],\n            role: 'info',\n            editType: 'none',\n            description: 'The easing function used for the transition'\n        },\n        ordering: {\n            valType: 'enumerated',\n            values: ['layout first', 'traces first'],\n            dflt: 'layout first',\n            role: 'info',\n            editType: 'none',\n            description: [\n                'Determines whether the figure\\'s layout or traces smoothly transitions',\n                'during updates that make both traces and layout change.'\n            ].join(' ')\n        }\n    }\n};\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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\nmodule.exports = {\n    // hover labels for multiple horizontal bars get tilted by this angle\n    YANGLE: 60,\n\n    // size and display constants for hover text\n\n    // pixel size of hover arrows\n    HOVERARROWSIZE: 6,\n    // pixels padding around text\n    HOVERTEXTPAD: 3,\n    // hover font\n    HOVERFONTSIZE: 13,\n    HOVERFONT: 'Arial, sans-serif',\n\n    // minimum time (msec) between hover calls\n    HOVERMINTIME: 50,\n\n    // ID suffix (with fullLayout._uid) for hover events in the throttle cache\n    HOVERID: '-hover'\n};\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\nimport * as URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport ActionsProvider from 'injection/ActionsProvider';\n\nconst AlertsActions = ActionsProvider.getActions('Alerts');\n\nconst AlertsStore = Reflux.createStore({\n  listenables: [AlertsActions],\n\n  list(stream, since) {\n    const url = URLUtils.qualifyUrl(ApiRoutes.AlertsApiController.list(stream.id, since).url);\n    const promise = fetch('GET', url);\n\n    promise\n      .then(\n        (response) => this.trigger({ alerts: response }),\n        (error) => {\n          UserNotification.error(`Fetching alerts for stream \"${stream.title}\" failed with status: ${error.message}`,\n            `Could not retrieve alerts for stream \"${stream.title}\".`);\n        },\n      );\n\n    AlertsActions.list.promise(promise);\n  },\n\n  listPaginated(streamId, skip, limit, state = 'any') {\n    const url = URLUtils.qualifyUrl(ApiRoutes.AlertsApiController.listPaginated(streamId, skip, limit, state).url);\n    const promise = fetch('GET', url);\n\n    promise\n      .then(\n        (response) => this.trigger({ alerts: response }),\n        (error) => {\n          UserNotification.error(`Fetching alerts failed with status: ${error.message}`, 'Could not retrieve alerts.');\n        },\n      );\n\n    AlertsActions.listPaginated.promise(promise);\n  },\n\n  listAllPaginated(skip, limit, state) {\n    const url = URLUtils.qualifyUrl(ApiRoutes.AlertsApiController.listAllPaginated(skip, limit, state).url);\n    const promise = fetch('GET', url);\n\n    promise.then(\n      (response) => this.trigger({ alerts: response }),\n      (error) => {\n        UserNotification.error(`Fetching alerts failed with status: ${error.message}`, 'Could not retrieve alerts.');\n      },\n    );\n\n    AlertsActions.listAllPaginated.promise(promise);\n  },\n\n  listAllStreams(since) {\n    const url = URLUtils.qualifyUrl(ApiRoutes.AlertsApiController.listAllStreams(since).url);\n    const promise = fetch('GET', url);\n\n    promise\n      .then(\n        (response) => this.trigger({ alerts: response }),\n        (error) => {\n          UserNotification.error(`Fetching alerts failed with status: ${error.message}`, 'Could not retrieve alerts.');\n        },\n      );\n\n    AlertsActions.listAllStreams.promise(promise);\n  },\n\n  get(alertId) {\n    const url = URLUtils.qualifyUrl(ApiRoutes.AlertsApiController.get(alertId).url);\n    const promise = fetch('GET', url);\n\n    promise.then(\n      (response) => {\n        this.trigger({ alert: response });\n\n        return response;\n      },\n      (error) => {\n        UserNotification.error(`Fetching alert '${alertId}' failed with status: ${error.message}`, 'Could not retrieve alert.');\n      },\n    );\n\n    AlertsActions.get.promise(promise);\n  },\n});\n\nexport default AlertsStore;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nconst IndexSetsActions = Reflux.createActions({\n  list: { asyncResult: true },\n  listPaginated: { asyncResult: true },\n  get: { asyncResult: true },\n  update: { asyncResult: true },\n  create: { asyncResult: true },\n  delete: { asyncResult: true },\n  setDefault: { asyncResult: true },\n  stats: { asyncResult: true },\n});\n\nexport default IndexSetsActions;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport {\n  IndicesConfigurationStoreState,\n  RetentionStrategyResponse,\n  RotationStrategyResponse,\n} from 'components/indices/Types';\nimport UserNotification from 'util/UserNotification';\nimport * as URLUtils from 'util/URLUtils';\nimport fetch from 'logic/rest/FetchProvider';\nimport ActionsProvider from 'injection/ActionsProvider';\n\nconst IndicesConfigurationActions = ActionsProvider.getActions('IndicesConfiguration');\n\nconst urlPrefix = '/system/indices';\n\nconst IndicesConfigurationStore = Reflux.createStore({\n  listenables: [IndicesConfigurationActions],\n\n  rotationStrategies: undefined,\n  retentionStrategies: undefined,\n\n  getInitialState() {\n    return {\n      activeRotationConfig: undefined,\n      rotationStrategies: undefined,\n      activeRetentionConfig: undefined,\n      retentionStrategies: undefined,\n    };\n  },\n  getState() {\n    return {\n      activeRotationConfig: this.activeRotationConfig,\n      rotationStrategies: this.rotationStrategies,\n      activeRetentionConfig: this.activeRetentionConfig,\n      retentionStrategies: this.retentionStrategies,\n    };\n  },\n  _url(path) {\n    return URLUtils.qualifyUrl(urlPrefix + path);\n  },\n\n  loadRotationStrategies() {\n    const promise = fetch('GET', this._url('/rotation/strategies'));\n\n    promise.then(\n      (response: RotationStrategyResponse) => {\n        this.rotationStrategies = response.strategies;\n        this.trigger(this.getState());\n      },\n      (error) => {\n        UserNotification.error(`Fetching rotation strategies failed: ${error}`, 'Could not retrieve rotation strategies');\n      },\n    );\n\n    IndicesConfigurationActions.loadRotationStrategies.promise(promise);\n  },\n\n  loadRetentionStrategies() {\n    const promise = fetch('GET', this._url('/retention/strategies'));\n\n    promise.then(\n      (response: RetentionStrategyResponse) => {\n        this.retentionStrategies = response.strategies;\n        this.trigger(this.getState());\n      },\n      (error) => {\n        UserNotification.error(`Fetching retention strategies failed: ${error}`, 'Could not retrieve retention strategies');\n      },\n    );\n\n    IndicesConfigurationActions.loadRetentionStrategies.promise(promise);\n  },\n});\n\nexport default IndicesConfigurationStore;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Qs from 'qs';\n\nimport { TimeRange } from 'views/logic/queries/Query';\n\ntype SearchQueryString = {\n  query: string,\n  limit?: number,\n  offset?: number,\n  sort?: `${string}:${'asc'|'desc'}`,\n  decorate?: boolean,\n  fields?: string,\n  filter?: string,\n} & Partial;\n\nconst ApiRoutes = {\n  AlarmCallbacksApiController: {\n    available: () => { return { url: '/alerts/callbacks/types' }; },\n    create: (streamId: string) => { return { url: `/streams/${streamId}/alarmcallbacks` }; },\n    delete: (streamId: string, alarmCallbackId: string) => { return { url: `/streams/${streamId}/alarmcallbacks/${alarmCallbackId}` }; },\n    listAll: () => { return { url: '/alerts/callbacks' }; },\n    list: (streamId: string) => { return { url: `/streams/${streamId}/alarmcallbacks` }; },\n    testAlert: (alarmCallbackId: string) => { return { url: `/alerts/callbacks/${alarmCallbackId}/test` }; },\n    update: (streamId: string, alarmCallbackId: string) => { return { url: `/streams/${streamId}/alarmcallbacks/${alarmCallbackId}` }; },\n  },\n  AlarmCallbackHistoryApiController: {\n    list: (streamId: string, alertId: string) => { return { url: `/streams/${streamId}/alerts/${alertId}/history` }; },\n  },\n  AlertsApiController: {\n    get: (alertId: string) => { return { url: `/streams/alerts/${alertId}` }; },\n    list: (streamId: string, since) => { return { url: `/streams/${streamId}/alerts?since=${since}` }; },\n    listPaginated: (streamId: string, skip, limit, state) => { return { url: `/streams/${streamId}/alerts/paginated?skip=${skip}&limit=${limit}&state=${state}` }; },\n    listAllPaginated: (skip, limit, state) => { return { url: `/streams/alerts/paginated?skip=${skip}&limit=${limit}&state=${state}` }; },\n    listAllStreams: (since) => { return { url: `/streams/alerts?since=${since}` }; },\n  },\n  AlertConditionsApiController: {\n    available: () => { return { url: '/alerts/conditions/types' }; },\n    list: () => { return { url: '/alerts/conditions' }; },\n  },\n  AuthenticationController: {\n    create: () => ({ url: '/system/authentication/services/backends' }),\n    delete: (backendId: string) => ({ url: `/system/authentication/services/backends/${backendId}` }),\n    disableUser: (userId: string) => ({ url: `/system/authentication/users/${userId}/disable` }),\n    enableUser: (userId: string) => ({ url: `/system/authentication/users/${userId}/enable` }),\n    load: (serviceId: string) => ({ url: `/system/authentication/services/backends/${serviceId}` }),\n    loadActive: () => ({ url: '/system/authentication/services/active-backend' }),\n    loadUsersPaginated: (authBackendId: string) => ({ url: `/system/authentication/services/backends/${authBackendId}/users` }),\n    loadActiveBackendType: () => ({ url: '/system/authentication/services/backends/active-backend/type' }),\n    servicesPaginated: () => ({ url: '/system/authentication/services/backends' }),\n    testConnection: () => ({ url: '/system/authentication/services/test/backend/connection' }),\n    testLogin: () => ({ url: '/system/authentication/services/test/backend/login' }),\n    update: (serviceId: string) => ({ url: `/system/authentication/services/backends/${serviceId}` }),\n    updateConfiguration: () => ({ url: '/system/authentication/services/configuration' }),\n  },\n  AuthzRolesController: {\n    load: (roleId: string) => { return { url: `/authz/roles/${roleId}` }; },\n    delete: (roleId: string) => { return { url: `/authz/roles/${roleId}` }; },\n    list: () => { return { url: '/authz/roles' }; },\n    removeMember: (roleId: string, username: string) => { return { url: `/authz/roles/${roleId}/assignee/${username}` }; },\n    addMembers: (roleId: string) => { return { url: `/authz/roles/${roleId}/assignees` }; },\n    loadRolesForUser: (username: string) => { return { url: `/authz/roles/user/${username}` }; },\n    loadUsersForRole: (roleId: string) => { return { url: `/authz/roles/${roleId}/assignees` }; },\n  },\n  CatalogsController: {\n    showEntityIndex: () => { return { url: '/system/catalog' }; },\n    queryEntities: () => { return { url: '/system/catalog' }; },\n  },\n  CodecTypesController: {\n    list: () => { return { url: '/system/codecs/types/all' }; },\n  },\n  ContentPacksController: {\n    list: () => { return { url: '/system/content_packs/latest' }; },\n    get: (contentPackId: string) => { return { url: `/system/content_packs/${contentPackId}` }; },\n    getRev: (contentPackId: string, revision: string) => { return { url: `/system/content_packs/${contentPackId}/${revision}` }; },\n    downloadRev: (contentPackId: string, revision: string) => { return { url: `/system/content_packs/${contentPackId}/${revision}/download` }; },\n    create: () => { return { url: '/system/content_packs' }; },\n    delete: (contentPackId: string) => { return { url: `/system/content_packs/${contentPackId}` }; },\n    deleteRev: (contentPackId: string, revision: string) => { return { url: `/system/content_packs/${contentPackId}/${revision}` }; },\n    install: (contentPackId: string, revision: string) => { return { url: `/system/content_packs/${contentPackId}/${revision}/installations` }; },\n    installList: (contentPackId: string) => { return { url: `/system/content_packs/${contentPackId}/installations` }; },\n    uninstall: (contentPackId: string, installId: string) => { return { url: `/system/content_packs/${contentPackId}/installations/${installId}` }; },\n    uninstallDetails: (contentPackId: string, installId: string) => { return { url: `/system/content_packs/${contentPackId}/installations/${installId}/uninstall_details` }; },\n  },\n  CountsApiController: {\n    total: () => { return { url: '/count/total' }; },\n    indexSetTotal: (indexSetId: string) => { return { url: `/count/${indexSetId}/total` }; },\n  },\n  ClusterApiResource: {\n    list: () => { return { url: '/system/cluster/nodes' }; },\n    node: () => { return { url: '/system/cluster/node' }; },\n    elasticsearchStats: () => { return { url: '/system/cluster/stats/elasticsearch' }; },\n  },\n  ClusterConfigResource: {\n    config: () => { return { url: '/system/cluster_config' }; },\n  },\n  GrokPatternsController: {\n    test: () => { return { url: '/system/grok/test' }; },\n    paginated: () => { return { url: '/system/grok/paginated' }; },\n  },\n  DashboardsApiController: {\n    create: () => { return { url: '/dashboards' }; },\n    index: () => { return { url: '/dashboards' }; },\n    get: (id) => { return { url: `/dashboards/${id}` }; },\n    delete: (id) => { return { url: `/dashboards/${id}` }; },\n    update: (id) => { return { url: `/dashboards/${id}` }; },\n    addWidget: (id) => { return { url: `/dashboards/${id}/widgets` }; },\n    removeWidget: (dashboardId: string, widgetId: string) => { return { url: `/dashboards/${dashboardId}/widgets/${widgetId}` }; },\n    widget: (dashboardId: string, widgetId: string) => { return { url: `/dashboards/${dashboardId}/widgets/${widgetId}` }; },\n    updateWidget: (dashboardId: string, widgetId: string) => { return { url: `/dashboards/${dashboardId}/widgets/${widgetId}` }; },\n    widgetValue: (dashboardId: string, widgetId: string) => { return { url: `/dashboards/${dashboardId}/widgets/${widgetId}/value` }; },\n    updatePositions: (dashboardId: string) => { return { url: `/dashboards/${dashboardId}/positions` }; },\n  },\n  DecoratorsResource: {\n    available: () => { return { url: '/search/decorators/available' }; },\n    create: () => { return { url: '/search/decorators' }; },\n    get: () => { return { url: '/search/decorators' }; },\n    remove: (decoratorId: string) => { return { url: `/search/decorators/${decoratorId}` }; },\n    update: (decoratorId: string) => { return { url: `/search/decorators/${decoratorId}` }; },\n  },\n  DeflectorApiController: {\n    cycle: (indexSetId: string) => { return { url: `/cluster/deflector/${indexSetId}/cycle` }; },\n    list: (indexSetId: string) => { return { url: `/system/deflector/${indexSetId}` }; },\n  },\n  EntityShareController: {\n    prepare: (entityGRN: string) => { return { url: `/authz/shares/entities/${entityGRN}/prepare` }; },\n    update: (entityGRN: string) => { return { url: `/authz/shares/entities/${entityGRN}` }; },\n    userSharesPaginated: (username: string) => { return { url: `/authz/shares/user/${username}` }; },\n  },\n  HTTPHeaderAuthConfigController: {\n    load: () => ({ url: '/system/authentication/http-header-auth-config' }),\n    update: () => ({ url: '/system/authentication/http-header-auth-config' }),\n  },\n  IndexerClusterApiController: {\n    health: () => { return { url: '/system/indexer/cluster/health' }; },\n    name: () => { return { url: '/system/indexer/cluster/name' }; },\n  },\n  IndexerFailuresApiController: {\n    count: (since: number) => { return { url: `/system/indexer/failures/count?since=${since}` }; },\n    list: (limit: number, offset: number) => { return { url: `/system/indexer/failures?limit=${limit}&offset=${offset}` }; },\n  },\n  IndexerOverviewApiResource: {\n    list: (indexSetId: string) => { return { url: `/system/indexer/overview/${indexSetId}` }; },\n  },\n  IndexRangesApiController: {\n    list: () => { return { url: '/system/indices/ranges' }; },\n    rebuild: (indexSetId: string) => { return { url: `/system/indices/ranges/index_set/${indexSetId}/rebuild` }; },\n    rebuildSingle: (index: string) => { return { url: `/system/indices/ranges/${index}/rebuild` }; },\n  },\n  IndexSetsApiController: {\n    list: (stats) => { return { url: `/system/indices/index_sets?stats=${stats}` }; },\n    listPaginated: (skip, limit, stats) => { return { url: `/system/indices/index_sets?skip=${skip}&limit=${limit}&stats=${stats}` }; },\n    get: (indexSetId: string) => { return { url: `/system/indices/index_sets/${indexSetId}` }; },\n    create: () => { return { url: '/system/indices/index_sets' }; },\n    delete: (indexSetId: string, deleteIndices) => { return { url: `/system/indices/index_sets/${indexSetId}?delete_indices=${deleteIndices}` }; },\n    setDefault: (indexSetId: string) => { return { url: `/system/indices/index_sets/${indexSetId}/default` }; },\n    stats: () => { return { url: '/system/indices/index_sets/stats' }; },\n  },\n  IndicesApiController: {\n    close: (indexName: string) => { return { url: `/system/indexer/indices/${indexName}/close` }; },\n    delete: (indexName: string) => { return { url: `/system/indexer/indices/${indexName}` }; },\n    list: (indexSetId: string) => { return { url: `/system/indexer/indices/${indexSetId}/list` }; },\n    listAll: () => { return { url: '/system/indexer/indices' }; },\n    listClosed: (indexSetId: string) => { return { url: `/system/indexer/indices/${indexSetId}/closed` }; },\n    multiple: () => { return { url: '/system/indexer/indices/multiple' }; },\n    reopen: (indexName: string) => { return { url: `/system/indexer/indices/${indexName}/reopen` }; },\n  },\n  InputsApiController: {\n    list: () => { return { url: '/system/inputs' }; },\n    get: (id: string) => { return { url: `/system/inputs/${id}` }; },\n    globalRecentMessage: (inputId: string) => { return { url: `/${inputId}` }; },\n  },\n  InputStatesController: {\n    start: (inputId: string) => { return { url: `/system/inputstates/${inputId}` }; },\n    stop: (inputId: string) => { return { url: `/system/inputstates/${inputId}` }; },\n  },\n  ClusterInputStatesController: {\n    list: () => { return { url: '/cluster/inputstates' }; },\n    start: (inputId: string) => { return { url: `/cluster/inputstates/${inputId}` }; },\n    stop: (inputId: string) => { return { url: `/cluster/inputstates/${inputId}` }; },\n  },\n  ClusterLoggersResource: {\n    loggers: () => { return { url: '/cluster/system/loggers' }; },\n    subsystems: () => { return { url: '/cluster/system/loggers/subsystems' }; },\n    setSubsystemLoggerLevel: (nodeId: string, subsystem: string, loglevel: string) => { return { url: `/cluster/system/loggers/${nodeId}/subsystems/${subsystem}/level/${loglevel}` }; },\n  },\n  MessageFieldsApiController: {\n    list: () => { return { url: '/system/fields' }; },\n  },\n  MetricsApiController: {\n    multiple: () => { return { url: '/system/metrics/multiple' }; },\n    byNamespace: (namespace: string) => { return { url: `/system/metrics/namespace/${namespace}` }; },\n  },\n  ClusterMetricsApiController: {\n    multiple: (nodeId: string) => { return { url: `/cluster/${nodeId}/metrics/multiple` }; },\n    multipleAllNodes: () => { return { url: '/cluster/metrics/multiple' }; },\n    byNamespace: (nodeId: string, namespace: string) => { return { url: `/cluster/${nodeId}/metrics/namespace/${namespace}` }; },\n  },\n  NotificationsApiController: {\n    delete: (type: string) => { return { url: `/system/notifications/${type}` }; },\n    list: () => { return { url: '/system/notifications' }; },\n  },\n  OutputsApiController: {\n    index: () => { return { url: '/system/outputs' }; },\n    create: () => { return { url: '/system/outputs' }; },\n    delete: (outputId: string) => { return { url: `/system/outputs/${outputId}` }; },\n    update: (outputId: string) => { return { url: `/system/outputs/${outputId}` }; },\n    availableType: (type: string) => { return { url: `/system/outputs/available/${type}` }; },\n    availableTypes: () => { return { url: '/system/outputs/available' }; },\n  },\n  RolesApiController: {\n    listRoles: () => { return { url: '/roles' }; },\n    createRole: () => { return { url: '/roles' }; },\n    updateRole: (rolename: string) => { return { url: `/roles/${rolename}` }; },\n    deleteRole: (rolename: string) => { return { url: `/roles/${rolename}` }; },\n    loadMembers: (rolename: string) => { return { url: `/roles/${rolename}/members` }; },\n  },\n  SavedSearchesApiController: {\n    create: () => { return { url: '/search/saved' }; },\n    delete: (savedSearchId: string) => { return { url: `/search/saved/${savedSearchId}` }; },\n    update: (savedSearchId: string) => { return { url: `/search/saved/${savedSearchId}` }; },\n  },\n  SessionsApiController: {\n    validate: () => { return { url: '/system/sessions' }; },\n  },\n  StreamAlertsApiController: {\n    create: (streamId: string) => { return { url: `/streams/${streamId}/alerts/conditions` }; },\n    delete: (streamId: string, alertConditionId: string) => { return { url: `/streams/${streamId}/alerts/conditions/${alertConditionId}` }; },\n    get: (streamId: string, conditionId: string) => { return { url: `/streams/${streamId}/alerts/conditions/${conditionId}` }; },\n    list: (streamId: string) => { return { url: `/streams/${streamId}/alerts/conditions` }; },\n    update: (streamId: string, alertConditionId: string) => { return { url: `/streams/${streamId}/alerts/conditions/${alertConditionId}` }; },\n    sendDummyAlert: (streamId: string) => { return { url: `/streams/${streamId}/alerts/sendDummyAlert` }; },\n    test: (streamId: string, conditionId: string) => { return { url: `/streams/${streamId}/alerts/conditions/${conditionId}/test` }; },\n  },\n  StreamsApiController: {\n    index: () => { return { url: '/streams' }; },\n    paginated: () => { return { url: '/streams/paginated' }; },\n    get: (streamId: string) => { return { url: `/streams/${streamId}` }; },\n    create: () => { return { url: '/streams' }; },\n    update: (streamId: string) => { return { url: `/streams/${streamId}` }; },\n    cloneStream: (streamId: string) => { return { url: `/streams/${streamId}/clone` }; },\n    delete: (streamId: string) => { return { url: `/streams/${streamId}` }; },\n    pause: (streamId: string) => { return { url: `/streams/${streamId}/pause` }; },\n    resume: (streamId: string) => { return { url: `/streams/${streamId}/resume` }; },\n    testMatch: (streamId: string) => { return { url: `/streams/${streamId}/testMatch` }; },\n  },\n  StreamOutputsApiController: {\n    add: (streamId: string) => { return { url: `/streams/${streamId}/outputs` }; },\n    index: (streamId: string) => { return { url: `/streams/${streamId}/outputs` }; },\n    delete: (streamId: string, outputId: string) => { return { url: `/streams/${streamId}/outputs/${outputId}` }; },\n  },\n  StreamRulesApiController: {\n    delete: (streamId: string, streamRuleId: string) => { return { url: `/streams/${streamId}/rules/${streamRuleId}` }; },\n    update: (streamId: string, streamRuleId: string) => { return { url: `/streams/${streamId}/rules/${streamRuleId}` }; },\n    create: (streamId: string) => { return { url: `/streams/${streamId}/rules` }; },\n  },\n  SystemApiController: {\n    info: () => { return { url: '/system' }; },\n    jvm: () => { return { url: '/system/jvm' }; },\n    fields: () => { return { url: '/system/fields' }; },\n    locales: () => { return { url: '/system/locales' }; },\n  },\n  SystemJobsApiController: {\n    list: () => { return { url: '/cluster/jobs' }; },\n    getJob: (jobId: string) => { return { url: `/cluster/jobs/${jobId}` }; },\n    cancelJob: (jobId: string) => { return { url: `/cluster/jobs/${jobId}` }; },\n  },\n  SystemMessagesApiController: {\n    all: (page: number) => { return { url: `/system/messages?page=${page}` }; },\n  },\n  ToolsApiController: {\n    grokTest: () => { return { url: '/tools/grok_tester' }; },\n    jsonTest: () => { return { url: '/tools/json_tester' }; },\n    naturalDateTest: (string, timezone) => { return { url: `/tools/natural_date_tester?string=${string}&timezone=${timezone}` }; },\n    regexTest: () => { return { url: '/tools/regex_tester' }; },\n    regexValidate: (regex: string) => { return { url: `/tools/regex_tester/validate?regex=${regex}` }; },\n    regexReplaceTest: () => { return { url: '/tools/regex_replace_tester' }; },\n    splitAndIndexTest: () => { return { url: '/tools/split_and_index_tester' }; },\n    substringTest: () => { return { url: '/tools/substring_tester' }; },\n    containsStringTest: () => { return { url: '/tools/contains_string_tester' }; },\n    lookupTableTest: () => { return { url: '/tools/lookup_table_tester' }; },\n    urlWhitelistCheck: () => { return { url: '/system/urlwhitelist/check' }; },\n    urlWhitelistGenerateRegex: () => { return { url: '/system/urlwhitelist/generate_regex' }; },\n  },\n  UniversalSearchApiController: {\n    _streamFilter(streamId: string) {\n      return (streamId ? { filter: `streams:${streamId}` } : {});\n    },\n    _buildBaseQueryString(query: string, timerange: TimeRange, streamId): SearchQueryString {\n      const queryString: Partial = {};\n\n      const streamFilter = this._streamFilter(streamId);\n\n      queryString.query = query;\n\n      Object.keys(timerange).forEach((key) => { queryString[key] = timerange[key]; });\n\n      Object.keys(streamFilter).forEach((key) => { queryString[key] = streamFilter[key]; });\n\n      return queryString as SearchQueryString;\n    },\n    _buildUrl(url: string, queryString: SearchQueryString) {\n      return `${url}?${Qs.stringify(queryString)}`;\n    },\n    search(type: string, query: string, timerange: TimeRange, streamId: string, limit: number, offset: number, sortField: string, sortOrder: 'asc' | 'desc', decorate: boolean) {\n      const url = `/search/universal/${type}`;\n      const queryString = this._buildBaseQueryString(query, timerange, streamId);\n\n      if (limit) {\n        queryString.limit = limit;\n      }\n\n      if (offset) {\n        queryString.offset = offset;\n      }\n\n      if (sortField && sortOrder) {\n        queryString.sort = `${sortField}:${sortOrder}`;\n      }\n\n      if (decorate !== undefined) {\n        queryString.decorate = decorate;\n      }\n\n      return { url: this._buildUrl(url, queryString) };\n    },\n    export(type: string, query: string, timerange: TimeRange, streamId: string, limit: number, offset: number, fields: Array) {\n      const url = `/search/universal/${type}/export`;\n      const queryString = this._buildBaseQueryString(query, timerange, streamId);\n\n      if (limit) {\n        queryString.limit = limit;\n      }\n\n      if (offset) {\n        queryString.offset = offset;\n      }\n\n      if (fields) {\n        queryString.fields = fields.join(',');\n      }\n\n      return { url: this._buildUrl(url, queryString) };\n    },\n  },\n  UsersApiController: {\n    changePassword: (userId: string) => { return { url: `/users/${userId}/password` }; },\n    create: () => { return { url: '/users' }; },\n    list: () => { return { url: '/users' }; },\n    paginated: () => { return { url: '/users/paginated' }; },\n    load: (userId: string) => { return { url: `/users/id/${userId}` }; },\n    loadByUsername: (username: string) => { return { url: `/users/${username}` }; },\n    delete: (id: string) => { return { url: `/users/id/${id}` }; },\n    update: (userId: string) => { return { url: `/users/${userId}` }; },\n    create_token: (userId: string, tokenName: string) => { return { url: `/users/${userId}/tokens/${tokenName}` }; },\n    delete_token: (userId: string, tokenName: string) => { return { url: `/users/${userId}/tokens/${tokenName}` }; },\n    list_tokens: (userId: string) => { return { url: `/users/${userId}/tokens` }; },\n    setStatus: (userId: string, accountStatus) => { return { url: `/users/${userId}/status/${accountStatus}` }; },\n  },\n  DashboardsController: {\n    show: (id) => { return { url: `/dashboards/${id}` }; },\n  },\n  ExtractorsController: {\n    create: (inputId: string) => { return { url: `/system/inputs/${inputId}/extractors` }; },\n    delete: (inputId: string, extractorId: string) => { return { url: `/system/inputs/${inputId}/extractors/${extractorId}` }; },\n    order: (inputId: string) => { return { url: `/system/inputs/${inputId}/extractors/order` }; },\n    update: (inputId: string, extractorId: string) => { return { url: `/system/inputs/${inputId}/extractors/${extractorId}` }; },\n  },\n  MessagesController: {\n    analyze: (index: string, string: string) => { return { url: `/messages/${index}/analyze?string=${string}` }; },\n    parse: () => { return { url: '/messages/parse' }; },\n    single: (index: string, messageId: string) => { return { url: `/messages/${index}/${messageId}` }; },\n    exportSearch: ((searchId: string) => { return { url: `/views/search/messages/${searchId}` }; }),\n    exportSearchType: ((searchId: string, searchTypeId: string) => { return { url: `/views/search/messages/${searchId}/${searchTypeId}` }; }),\n    jobResults: ((exportJobId: string, filename: string) => { return { url: `/views/search/messages/job/${exportJobId}/${filename}` }; }),\n  },\n  ExportJobsController: {\n    exportSearch: ((searchId: string) => { return { url: `/views/export/${searchId}` }; }),\n    exportSearchType: ((searchId: string, searchTypeId: string) => { return { url: `/views/export/${searchId}/${searchTypeId}` }; }),\n  },\n  MapDataController: {\n    search: () => { return { url: '/search/mapdata' }; },\n  },\n  PipelinesController: {\n    list: () => { return { url: '/system/pipelines/pipeline' }; },\n    paginatedList: () => { return { url: '/system/pipelines/pipeline/paginated' }; },\n    create: () => { return { url: '/system/pipelines/pipeline' }; },\n    get: (pipelineId: string) => { return { url: `/system/pipelines/pipeline/${pipelineId}` }; },\n    update: (pipelineId: string) => { return { url: `/system/pipelines/pipeline/${pipelineId}` }; },\n    delete: (pipelineId: string) => { return { url: `/system/pipelines/pipeline/${pipelineId}` }; },\n    parse: () => { return { url: '/system/pipelines/pipeline/parse' }; },\n  },\n  RulesController: {\n    list: () => { return { url: '/system/pipelines/rule' }; },\n    create: () => { return { url: '/system/pipelines/rule' }; },\n    get: (ruleId: string) => { return { url: `/system/pipelines/rule/${ruleId}` }; },\n    update: (ruleId: string) => { return { url: `/system/pipelines/rule/${ruleId}` }; },\n    delete: (ruleId: string) => { return { url: `/system/pipelines/rule/${ruleId}` }; },\n    multiple: () => { return { url: '/system/pipelines/rule/multiple' }; },\n    functions: () => { return { url: '/system/pipelines/rule/functions' }; },\n    parse: () => { return { url: '/system/pipelines/rule/parse' }; },\n    metricsConfig: () => { return { url: '/system/pipelines/rule/config/metrics' }; },\n  },\n  ConnectionsController: {\n    list: () => { return { url: '/system/pipelines/connections' }; },\n    to_stream: () => { return { url: '/system/pipelines/connections/to_stream' }; },\n    to_pipeline: () => { return { url: '/system/pipelines/connections/to_pipeline' }; },\n  },\n  SimulatorController: {\n    simulate: () => { return { url: '/system/pipelines/simulate' }; },\n  },\n  ping: () => { return { url: '/' }; },\n};\n\nexport default ApiRoutes;\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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/**\n * Return news array containing only the unique items\n * found in input array.\n *\n * IMPORTANT: Note that items are considered unique\n * if `String({})` is unique. For example;\n *\n *  Lib.filterUnique([ { a: 1 }, { b: 2 } ])\n *\n *  returns [{ a: 1 }]\n *\n * and\n *\n *  Lib.filterUnique([ '1', 1 ])\n *\n *  returns ['1']\n *\n *\n * @param {array} array base array\n * @return {array} new filtered array\n */\nmodule.exports = function filterUnique(array) {\n    var seen = {};\n    var out = [];\n    var j = 0;\n\n    for(var i = 0; i < array.length; i++) {\n        var item = array[i];\n\n        if(seen[item] !== 1) {\n            seen[item] = 1;\n            out[j++] = item;\n        }\n    }\n\n    return out;\n};\n","module.exports = fromZRotation\n\n/**\n * Creates a matrix from the given angle around the Z axis\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest)\n *     mat4.rotateZ(dest, dest, rad)\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nfunction fromZRotation(out, rad) {\n    var s = Math.sin(rad),\n        c = Math.cos(rad)\n\n    // Perform axis-specific matrix multiplication\n    out[0] = c\n    out[1] = s\n    out[2] = 0\n    out[3] = 0\n    out[4] = -s\n    out[5] = c\n    out[6] = 0\n    out[7] = 0\n    out[8] = 0\n    out[9] = 0\n    out[10] = 1\n    out[11] = 0\n    out[12] = 0\n    out[13] = 0\n    out[14] = 0\n    out[15] = 1\n    return out\n}","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\nimport moment from 'moment';\n\nimport UserNotification from 'util/UserNotification';\nimport * as URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\n\nconst IndexerFailuresStore = Reflux.createStore({\n  listenables: [],\n\n  list(limit, offset) {\n    const url = URLUtils.qualifyUrl(ApiRoutes.IndexerFailuresApiController.list(limit, offset).url);\n\n    return fetch('GET', url);\n  },\n\n  count(since) {\n    const momentSince = since.format ? since : moment(since);\n    const isoSince = momentSince.format('YYYY-MM-DDTHH:mm:ss.SSS');\n    const url = URLUtils.qualifyUrl(ApiRoutes.IndexerFailuresApiController.count(isoSince).url);\n\n    return fetch('GET', url);\n  },\n});\n\nexport default IndexerFailuresStore;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport CombinedProvider from 'injection/CombinedProvider';\n\nclass ActionsProvider {\n  getActions(actionsName) {\n    const result = CombinedProvider.get(actionsName);\n\n    if (!result[`${actionsName}Actions`]) {\n      throw new Error(`Requested actions \"${actionsName}\" is not registered.`);\n    }\n\n    return result[`${actionsName}Actions`];\n  }\n}\n\nif (typeof window.actionsProvider === 'undefined') {\n  window.actionsProvider = new ActionsProvider();\n}\n\nexport default window.actionsProvider;\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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 d3 = require('d3');\n\n/**\n * General helper to manage trace groups based on calcdata\n *\n * @param {d3.selection} traceLayer: a selection containing a single group\n *     to draw these traces into\n * @param {array} cdModule: array of calcdata items for this\n *     module and subplot combination. Assumes the calcdata item for each\n *     trace is an array with the fullData trace attached to the first item.\n * @param {string} cls: the class attribute to give each trace group\n *     so you can give multiple classes separated by spaces\n */\nmodule.exports = function makeTraceGroups(traceLayer, cdModule, cls) {\n    var traces = traceLayer.selectAll('g.' + cls.replace(/\\s/g, '.'))\n        .data(cdModule, function(cd) { return cd[0].trace.uid; });\n\n    traces.exit().remove();\n\n    traces.enter().append('g')\n        .attr('class', cls);\n\n    traces.order();\n\n    // stash ref node to trace group in calcdata,\n    // useful for (fast) styleOnSelect\n    var k = traceLayer.classed('rangeplot') ? 'nodeRangePlot3' : 'node3';\n    traces.each(function(cd) { cd[0][k] = d3.select(this); });\n\n    return traces;\n};\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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 fontAttrs = require('./font_attributes');\nvar animationAttrs = require('./animation_attributes');\nvar colorAttrs = require('../components/color/attributes');\nvar drawNewShapeAttrs = require('../components/shapes/draw_newshape/attributes');\nvar padAttrs = require('./pad_attributes');\nvar extendFlat = require('../lib/extend').extendFlat;\n\nvar globalFont = fontAttrs({\n    editType: 'calc',\n    description: [\n        'Sets the global font.',\n        'Note that fonts used in traces and other',\n        'layout components inherit from the global font.'\n    ].join(' ')\n});\nglobalFont.family.dflt = '\"Open Sans\", verdana, arial, sans-serif';\nglobalFont.size.dflt = 12;\nglobalFont.color.dflt = colorAttrs.defaultLine;\n\nmodule.exports = {\n    font: globalFont,\n    title: {\n        text: {\n            valType: 'string',\n            role: 'info',\n            editType: 'layoutstyle',\n            description: [\n                'Sets the plot\\'s title.',\n                'Note that before the existence of `title.text`, the title\\'s',\n                'contents used to be defined as the `title` attribute itself.',\n                'This behavior has been deprecated.'\n            ].join(' ')\n        },\n        font: fontAttrs({\n            editType: 'layoutstyle',\n            description: [\n                'Sets the title font.',\n                'Note that the title\\'s font used to be customized',\n                'by the now deprecated `titlefont` attribute.'\n            ].join(' ')\n        }),\n        xref: {\n            valType: 'enumerated',\n            dflt: 'container',\n            values: ['container', 'paper'],\n            role: 'info',\n            editType: 'layoutstyle',\n            description: [\n                'Sets the container `x` refers to.',\n                '*container* spans the entire `width` of the plot.',\n                '*paper* refers to the width of the plotting area only.'\n            ].join(' ')\n        },\n        yref: {\n            valType: 'enumerated',\n            dflt: 'container',\n            values: ['container', 'paper'],\n            role: 'info',\n            editType: 'layoutstyle',\n            description: [\n                'Sets the container `y` refers to.',\n                '*container* spans the entire `height` of the plot.',\n                '*paper* refers to the height of the plotting area only.'\n            ].join(' ')\n        },\n        x: {\n            valType: 'number',\n            min: 0,\n            max: 1,\n            dflt: 0.5,\n            role: 'style',\n            editType: 'layoutstyle',\n            description: [\n                'Sets the x position with respect to `xref` in normalized',\n                'coordinates from *0* (left) to *1* (right).'\n            ].join(' ')\n        },\n        y: {\n            valType: 'number',\n            min: 0,\n            max: 1,\n            dflt: 'auto',\n            role: 'style',\n            editType: 'layoutstyle',\n            description: [\n                'Sets the y position with respect to `yref` in normalized',\n                'coordinates from *0* (bottom) to *1* (top).',\n                '*auto* places the baseline of the title onto the',\n                'vertical center of the top margin.'\n            ].join(' ')\n        },\n        xanchor: {\n            valType: 'enumerated',\n            dflt: 'auto',\n            values: ['auto', 'left', 'center', 'right'],\n            role: 'info',\n            editType: 'layoutstyle',\n            description: [\n                'Sets the title\\'s horizontal alignment with respect to its x position.',\n                '*left* means that the title starts at x,',\n                '*right* means that the title ends at x',\n                'and *center* means that the title\\'s center is at x.',\n                '*auto* divides `xref` by three and calculates the `xanchor`',\n                'value automatically based on the value of `x`.'\n            ].join(' ')\n        },\n        yanchor: {\n            valType: 'enumerated',\n            dflt: 'auto',\n            values: ['auto', 'top', 'middle', 'bottom'],\n            role: 'info',\n            editType: 'layoutstyle',\n            description: [\n                'Sets the title\\'s vertical alignment with respect to its y position.',\n                '*top* means that the title\\'s cap line is at y,',\n                '*bottom* means that the title\\'s baseline is at y',\n                'and *middle* means that the title\\'s midline is at y.',\n                '*auto* divides `yref` by three and calculates the `yanchor`',\n                'value automatically based on the value of `y`.'\n            ].join(' ')\n        },\n        pad: extendFlat(padAttrs({editType: 'layoutstyle'}), {\n            description: [\n                'Sets the padding of the title.',\n                'Each padding value only applies when the corresponding',\n                '`xanchor`/`yanchor` value is set accordingly. E.g. for left',\n                'padding to take effect, `xanchor` must be set to *left*.',\n                'The same rule applies if `xanchor`/`yanchor` is determined automatically.',\n                'Padding is muted if the respective anchor value is *middle*/*center*.'\n            ].join(' ')\n        }),\n        editType: 'layoutstyle'\n    },\n    uniformtext: {\n        mode: {\n            valType: 'enumerated',\n            values: [false, 'hide', 'show'],\n            dflt: false,\n            role: 'info',\n            editType: 'plot',\n            description: [\n                'Determines how the font size for various text',\n                'elements are uniformed between each trace type.',\n                'If the computed text sizes were smaller than',\n                'the minimum size defined by `uniformtext.minsize`',\n                'using *hide* option hides the text; and',\n                'using *show* option shows the text without further downscaling.',\n                'Please note that if the size defined by `minsize` is greater than',\n                'the font size defined by trace, then the `minsize` is used.'\n            ].join(' ')\n        },\n        minsize: {\n            valType: 'number',\n            min: 0,\n            dflt: 0,\n            role: 'info',\n            editType: 'plot',\n            description: [\n                'Sets the minimum text size between traces of the same type.'\n            ].join(' ')\n        },\n        editType: 'plot'\n    },\n    autosize: {\n        valType: 'boolean',\n        role: 'info',\n        dflt: false,\n        // autosize, width, and height get special editType treatment in _relayout\n        // so we can handle noop resizes more efficiently\n        editType: 'none',\n        description: [\n            'Determines whether or not a layout width or height',\n            'that has been left undefined by the user',\n            'is initialized on each relayout.',\n\n            'Note that, regardless of this attribute,',\n            'an undefined layout width or height',\n            'is always initialized on the first call to plot.'\n        ].join(' ')\n    },\n    width: {\n        valType: 'number',\n        role: 'info',\n        min: 10,\n        dflt: 700,\n        editType: 'plot',\n        description: [\n            'Sets the plot\\'s width (in px).'\n        ].join(' ')\n    },\n    height: {\n        valType: 'number',\n        role: 'info',\n        min: 10,\n        dflt: 450,\n        editType: 'plot',\n        description: [\n            'Sets the plot\\'s height (in px).'\n        ].join(' ')\n    },\n    margin: {\n        l: {\n            valType: 'number',\n            role: 'info',\n            min: 0,\n            dflt: 80,\n            editType: 'plot',\n            description: 'Sets the left margin (in px).'\n        },\n        r: {\n            valType: 'number',\n            role: 'info',\n            min: 0,\n            dflt: 80,\n            editType: 'plot',\n            description: 'Sets the right margin (in px).'\n        },\n        t: {\n            valType: 'number',\n            role: 'info',\n            min: 0,\n            dflt: 100,\n            editType: 'plot',\n            description: 'Sets the top margin (in px).'\n        },\n        b: {\n            valType: 'number',\n            role: 'info',\n            min: 0,\n            dflt: 80,\n            editType: 'plot',\n            description: 'Sets the bottom margin (in px).'\n        },\n        pad: {\n            valType: 'number',\n            role: 'info',\n            min: 0,\n            dflt: 0,\n            editType: 'plot',\n            description: [\n                'Sets the amount of padding (in px)',\n                'between the plotting area and the axis lines'\n            ].join(' ')\n        },\n        autoexpand: {\n            valType: 'boolean',\n            role: 'info',\n            dflt: true,\n            editType: 'plot',\n            description: [\n                'Turns on/off margin expansion computations.',\n                'Legends, colorbars, updatemenus, sliders, axis rangeselector and rangeslider',\n                'are allowed to push the margins by defaults.'\n            ].join(' ')\n        },\n        editType: 'plot'\n    },\n    computed: {\n        valType: 'any',\n        role: 'info',\n        editType: 'none',\n        description: [\n            'Placeholder for exporting automargin-impacting values namely',\n            '`margin.t`, `margin.b`, `margin.l` and `margin.r` in *full-json* mode.',\n        ].join(' ')\n    },\n    paper_bgcolor: {\n        valType: 'color',\n        role: 'style',\n        dflt: colorAttrs.background,\n        editType: 'plot',\n        description: 'Sets the background color of the paper where the graph is drawn.'\n    },\n    plot_bgcolor: {\n        // defined here, but set in cartesian.supplyLayoutDefaults\n        // because it needs to know if there are (2D) axes or not\n        valType: 'color',\n        role: 'style',\n        dflt: colorAttrs.background,\n        editType: 'layoutstyle',\n        description: [\n            'Sets the background color of the plotting area in-between x and y axes.'\n        ].join(' ')\n    },\n    autotypenumbers: {\n        valType: 'enumerated',\n        values: ['convert types', 'strict'],\n        dflt: 'convert types',\n        role: 'info',\n        editType: 'calc',\n        description: [\n            'Using *strict* a numeric string in trace data is not converted to a number.',\n            'Using *convert types* a numeric string in trace data may be',\n            'treated as a number during automatic axis `type` detection.',\n            'This is the default value; however it could be overridden for individual axes.'\n        ].join(' ')\n    },\n    separators: {\n        valType: 'string',\n        role: 'style',\n        editType: 'plot',\n        description: [\n            'Sets the decimal and thousand separators.',\n            'For example, *. * puts a \\'.\\' before decimals and a space',\n            'between thousands. In English locales, dflt is *.,* but',\n            'other locales may alter this default.'\n        ].join(' ')\n    },\n    hidesources: {\n        valType: 'boolean',\n        role: 'info',\n        dflt: false,\n        editType: 'plot',\n        description: [\n            'Determines whether or not a text link citing the data source is',\n            'placed at the bottom-right cored of the figure.',\n            'Has only an effect only on graphs that have been generated via',\n            'forked graphs from the Chart Studio Cloud (at https://chart-studio.plotly.com or on-premise).'\n        ].join(' ')\n    },\n    showlegend: {\n        // handled in legend.supplyLayoutDefaults\n        // but included here because it's not in the legend object\n        valType: 'boolean',\n        role: 'info',\n        editType: 'legend',\n        description: [\n            'Determines whether or not a legend is drawn.',\n            'Default is `true` if there is a trace to show and any of these:',\n            'a) Two or more traces would by default be shown in the legend.',\n            'b) One pie trace is shown in the legend.',\n            'c) One trace is explicitly given with `showlegend: true`.'\n        ].join(' ')\n    },\n    colorway: {\n        valType: 'colorlist',\n        dflt: colorAttrs.defaults,\n        role: 'style',\n        editType: 'calc',\n        description: 'Sets the default trace colors.'\n    },\n    datarevision: {\n        valType: 'any',\n        role: 'info',\n        editType: 'calc',\n        description: [\n            'If provided, a changed value tells `Plotly.react` that',\n            'one or more data arrays has changed. This way you can modify',\n            'arrays in-place rather than making a complete new copy for an',\n            'incremental change.',\n            'If NOT provided, `Plotly.react` assumes that data arrays are',\n            'being treated as immutable, thus any data array with a',\n            'different identity from its predecessor contains new data.'\n        ].join(' ')\n    },\n    uirevision: {\n        valType: 'any',\n        role: 'info',\n        editType: 'none',\n        description: [\n            'Used to allow user interactions with the plot to persist after',\n            '`Plotly.react` calls that are unaware of these interactions.',\n            'If `uirevision` is omitted, or if it is given and it changed from',\n            'the previous `Plotly.react` call, the exact new figure is used.',\n            'If `uirevision` is truthy and did NOT change, any attribute',\n            'that has been affected by user interactions and did not receive a',\n            'different value in the new figure will keep the interaction value.',\n            '`layout.uirevision` attribute serves as the default for',\n            '`uirevision` attributes in various sub-containers. For finer',\n            'control you can set these sub-attributes directly. For example,',\n            'if your app separately controls the data on the x and y axes you',\n            'might set `xaxis.uirevision=*time*` and `yaxis.uirevision=*cost*`.',\n            'Then if only the y data is changed, you can update',\n            '`yaxis.uirevision=*quantity*` and the y axis range will reset but',\n            'the x axis range will retain any user-driven zoom.'\n        ].join(' ')\n    },\n    editrevision: {\n        valType: 'any',\n        role: 'info',\n        editType: 'none',\n        description: [\n            'Controls persistence of user-driven changes in `editable: true`',\n            'configuration, other than trace names and axis titles.',\n            'Defaults to `layout.uirevision`.'\n        ].join(' ')\n    },\n    selectionrevision: {\n        valType: 'any',\n        role: 'info',\n        editType: 'none',\n        description: [\n            'Controls persistence of user-driven changes in selected points',\n            'from all traces.'\n        ].join(' ')\n    },\n    template: {\n        valType: 'any',\n        role: 'info',\n        editType: 'calc',\n        description: [\n            'Default attributes to be applied to the plot. Templates can be',\n            'created from existing plots using `Plotly.makeTemplate`, or',\n            'created manually. They should be objects with format:',\n            '`{layout: layoutTemplate, data: {[type]: [traceTemplate, ...]}, ...}`',\n            '`layoutTemplate` and `traceTemplate` are objects matching the',\n            'attribute structure of `layout` and a data trace. ',\n            'Trace templates are applied cyclically to traces of each type.',\n            'Container arrays (eg `annotations`) have special handling:',\n            'An object ending in `defaults` (eg `annotationdefaults`) is applied',\n            'to each array item. But if an item has a `templateitemname` key',\n            'we look in the template array for an item with matching `name` and',\n            'apply that instead. If no matching `name` is found we mark the item',\n            'invisible. Any named template item not referenced is appended to',\n            'the end of the array, so you can use this for a watermark annotation',\n            'or a logo image, for example. To omit one of these items on the plot,',\n            'make an item with matching `templateitemname` and `visible: false`.'\n        ].join(' ')\n    },\n    modebar: {\n        orientation: {\n            valType: 'enumerated',\n            values: ['v', 'h'],\n            dflt: 'h',\n            role: 'info',\n            editType: 'modebar',\n            description: 'Sets the orientation of the modebar.'\n        },\n        bgcolor: {\n            valType: 'color',\n            role: 'style',\n            editType: 'modebar',\n            description: 'Sets the background color of the modebar.'\n        },\n        color: {\n            valType: 'color',\n            role: 'style',\n            editType: 'modebar',\n            description: 'Sets the color of the icons in the modebar.'\n        },\n        activecolor: {\n            valType: 'color',\n            role: 'style',\n            editType: 'modebar',\n            description: 'Sets the color of the active or hovered on icons in the modebar.'\n        },\n        uirevision: {\n            valType: 'any',\n            role: 'info',\n            editType: 'none',\n            description: [\n                'Controls persistence of user-driven changes related to the modebar,',\n                'including `hovermode`, `dragmode`, and `showspikes` at both the',\n                'root level and inside subplots. Defaults to `layout.uirevision`.'\n            ].join(' ')\n        },\n        editType: 'modebar'\n    },\n\n    newshape: drawNewShapeAttrs.newshape,\n    activeshape: drawNewShapeAttrs.activeshape,\n\n    meta: {\n        valType: 'any',\n        arrayOk: true,\n        role: 'info',\n        editType: 'plot',\n        description: [\n            'Assigns extra meta information that can be used in various `text` attributes.',\n            'Attributes such as the graph, axis and colorbar `title.text`, annotation `text`',\n            '`trace.name` in legend items, `rangeselector`, `updatemenus` and `sliders` `label` text',\n            'all support `meta`. One can access `meta` fields using template strings:',\n            '`%{meta[i]}` where `i` is the index of the `meta`',\n            'item in question.',\n            '`meta` can also be an object for example `{key: value}` which can be accessed',\n            '%{meta[key]}.'\n        ].join(' ')\n    },\n\n    transition: extendFlat({}, animationAttrs.transition, {\n        description: [\n            'Sets transition options used during Plotly.react updates.'\n        ].join(' '),\n        editType: 'none'\n    }),\n    _deprecated: {\n        title: {\n            valType: 'string',\n            role: 'info',\n            editType: 'layoutstyle',\n            description: [\n                'Value of `title` is no longer a simple *string* but a set of sub-attributes.',\n                'To set the contents of the title, please use `title.text` now.'\n            ].join(' ')\n        },\n        titlefont: fontAttrs({\n            editType: 'layoutstyle',\n            description: [\n                'Former `titlefont` is now the sub-attribute `font` of `title`.',\n                'To customize title font properties, please use `title.font` now.'\n            ].join(' ')\n        })\n    }\n};\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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 Lib = require('../lib');\nvar Template = require('../plot_api/plot_template');\n\n/** Convenience wrapper for making array container logic DRY and consistent\n *\n * @param {object} parentObjIn\n *  user input object where the container in question is linked\n *  (i.e. either a user trace object or the user layout object)\n *\n * @param {object} parentObjOut\n *  full object where the coerced container will be linked\n *  (i.e. either a full trace object or the full layout object)\n *\n * @param {object} opts\n *  options object:\n *   - name {string}\n *      name of the key linking the container in question\n *   - inclusionAttr {string}\n *      name of the item attribute for inclusion/exclusion. Default is 'visible'.\n *      Since inclusion is true, use eg 'enabled' instead of 'disabled'.\n *   - handleItemDefaults {function}\n *      defaults method to be called on each item in the array container in question\n *\n *      Its arguments are:\n *          - itemIn {object} item in user layout\n *          - itemOut {object} item in full layout\n *          - parentObj {object} (as in closure)\n *          - opts {object} (as in closure)\n * N.B.\n *\n *  - opts is passed to handleItemDefaults so it can also store\n *    links to supplementary data (e.g. fullData for layout components)\n *\n */\nmodule.exports = function handleArrayContainerDefaults(parentObjIn, parentObjOut, opts) {\n    var name = opts.name;\n    var inclusionAttr = opts.inclusionAttr || 'visible';\n\n    var previousContOut = parentObjOut[name];\n\n    var contIn = Lib.isArrayOrTypedArray(parentObjIn[name]) ? parentObjIn[name] : [];\n    var contOut = parentObjOut[name] = [];\n    var templater = Template.arrayTemplater(parentObjOut, name, inclusionAttr);\n    var i, itemOut;\n\n    for(i = 0; i < contIn.length; i++) {\n        var itemIn = contIn[i];\n\n        if(!Lib.isPlainObject(itemIn)) {\n            itemOut = templater.newItem({});\n            itemOut[inclusionAttr] = false;\n        } else {\n            itemOut = templater.newItem(itemIn);\n        }\n\n        itemOut._index = i;\n\n        if(itemOut[inclusionAttr] !== false) {\n            opts.handleItemDefaults(itemIn, itemOut, parentObjOut, opts);\n        }\n\n        contOut.push(itemOut);\n    }\n\n    var defaultItems = templater.defaultItems();\n    for(i = 0; i < defaultItems.length; i++) {\n        itemOut = defaultItems[i];\n        itemOut._index = contOut.length;\n        opts.handleItemDefaults({}, itemOut, parentObjOut, opts, {});\n        contOut.push(itemOut);\n    }\n\n    // in case this array gets its defaults rebuilt independent of the whole layout,\n    // relink the private keys just for this array.\n    if(Lib.isArrayOrTypedArray(previousContOut)) {\n        var len = Math.min(previousContOut.length, contOut.length);\n        for(i = 0; i < len; i++) {\n            Lib.relinkPrivateKeys(contOut[i], previousContOut[i]);\n        }\n    }\n\n    return contOut;\n};\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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 isNumeric = require('fast-isnumeric');\nvar isMobileOrTablet = require('is-mobile');\n\nmodule.exports = function preserveDrawingBuffer(opts) {\n    var ua;\n\n    if(opts && opts.hasOwnProperty('userAgent')) {\n        ua = opts.userAgent;\n    } else {\n        ua = getUserAgent();\n    }\n\n    if(typeof ua !== 'string') return true;\n\n    var enable = isMobileOrTablet({\n        ua: { headers: {'user-agent': ua }},\n        tablet: true,\n        featureDetect: false\n    });\n\n    if(!enable) {\n        var allParts = ua.split(' ');\n        for(var i = 1; i < allParts.length; i++) {\n            var part = allParts[i];\n            if(part.indexOf('Safari') !== -1) {\n                // find Safari version\n                for(var k = i - 1; k > -1; k--) {\n                    var prevPart = allParts[k];\n                    if(prevPart.substr(0, 8) === 'Version/') {\n                        var v = prevPart.substr(8).split('.')[0];\n                        if(isNumeric(v)) v = +v;\n                        if(v >= 13) return true;\n                    }\n                }\n            }\n        }\n    }\n\n    return enable;\n};\n\nfunction getUserAgent() {\n    // similar to https://github.com/juliangruber/is-mobile/blob/91ca39ccdd4cfc5edfb5391e2515b923a730fbea/index.js#L14-L17\n    var ua;\n    if(typeof navigator !== 'undefined') {\n        ua = navigator.userAgent;\n    }\n\n    if(\n        ua &&\n        ua.headers &&\n        typeof ua.headers['user-agent'] === 'string'\n    ) {\n        ua = ua.headers['user-agent'];\n    }\n\n    return ua;\n}\n","\nvar MACHINE_ID = Math.floor(Math.random() * 0xFFFFFF);\nvar index = ObjectID.index = parseInt(Math.random() * 0xFFFFFF, 10);\nvar pid = (typeof process === 'undefined' || typeof process.pid !== 'number' ? Math.floor(Math.random() * 100000) : process.pid) % 0xFFFF;\n\n/**\n * Determine if an object is Buffer\n *\n * Author:   Feross Aboukhadijeh  \n * License:  MIT\n *\n */\nvar isBuffer = function (obj) {\n  return !!(\n  obj != null &&\n  obj.constructor &&\n  typeof obj.constructor.isBuffer === 'function' &&\n  obj.constructor.isBuffer(obj)\n  )\n};\n\n/**\n * Create a new immutable ObjectID instance\n *\n * @class Represents the BSON ObjectID type\n * @param {String|Number} arg Can be a 24 byte hex string, 12 byte binary string or a Number.\n * @return {Object} instance of ObjectID.\n */\nfunction ObjectID(arg) {\n  if(!(this instanceof ObjectID)) return new ObjectID(arg);\n  if(arg && ((arg instanceof ObjectID) || arg._bsontype===\"ObjectID\"))\n    return arg;\n\n  var buf;\n\n  if(isBuffer(arg) || (Array.isArray(arg) && arg.length===12)) {\n    buf = Array.prototype.slice.call(arg);\n  }\n  else if(typeof arg === \"string\") {\n    if(arg.length!==12 && !ObjectID.isValid(arg))\n      throw new Error(\"Argument passed in must be a single String of 12 bytes or a string of 24 hex characters\");\n\n    buf = buffer(arg);\n  }\n  else if(/number|undefined/.test(typeof arg)) {\n    buf = buffer(generate(arg));\n  }\n\n  Object.defineProperty(this, \"id\", {\n    enumerable: true,\n    get: function() { return String.fromCharCode.apply(this, buf); }\n  });\n  Object.defineProperty(this, \"str\", {\n    get: function() { return buf.map(hex.bind(this, 2)).join(''); }\n  });\n}\nmodule.exports = ObjectID;\nObjectID.generate = generate;\nObjectID.default = ObjectID;\n\n/**\n * Creates an ObjectID from a second based number, with the rest of the ObjectID zeroed out. Used for comparisons or sorting the ObjectID.\n *\n * @param {Number} time an integer number representing a number of seconds.\n * @return {ObjectID} return the created ObjectID\n * @api public\n */\nObjectID.createFromTime = function(time){\n  time = parseInt(time, 10) % 0xFFFFFFFF;\n  return new ObjectID(hex(8,time)+\"0000000000000000\");\n};\n\n/**\n * Creates an ObjectID from a hex string representation of an ObjectID.\n *\n * @param {String} hexString create a ObjectID from a passed in 24 byte hexstring.\n * @return {ObjectID} return the created ObjectID\n * @api public\n */\nObjectID.createFromHexString = function(hexString) {\n  if(!ObjectID.isValid(hexString))\n    throw new Error(\"Invalid ObjectID hex string\");\n\n  return new ObjectID(hexString);\n};\n\n/**\n * Checks if a value is a valid bson ObjectId\n *\n * @param {String} objectid Can be a 24 byte hex string or an instance of ObjectID.\n * @return {Boolean} return true if the value is a valid bson ObjectID, return false otherwise.\n * @api public\n *\n * THE NATIVE DOCUMENTATION ISN'T CLEAR ON THIS GUY!\n * http://mongodb.github.io/node-mongodb-native/api-bson-generated/objectid.html#objectid-isvalid\n */\nObjectID.isValid = function(objectid) {\n  if(!objectid || (typeof objectid !== 'string' && (typeof objectid !== 'object' || Array.isArray(objectid) || typeof objectid.toString !== 'function'))) return false;\n\n  //call .toString() to get the hex if we're\n  // working with an instance of ObjectID\n  return /^[0-9A-F]{24}$/i.test(objectid.toString());\n};\n\n/**\n * set a custom machineID\n * \n * @param {String|Number} machineid Can be a string, hex-string or a number\n * @return {void}\n * @api public\n */\nObjectID.setMachineID = function(arg) {\n  var machineID;\n\n  if(typeof arg === \"string\") {\n    // hex string\n    machineID = parseInt(arg, 16);\n   \n    // any string\n    if(isNaN(machineID)) {\n      arg = ('000000' + arg).substr(-7,6);\n\n      machineID = \"\";\n      for(var i = 0;i<6; i++) {\n        machineID += (arg.charCodeAt(i));\n      }\n    }\n  }\n  else if(/number|undefined/.test(typeof arg)) {\n    machineID = arg | 0;\n  }\n\n  MACHINE_ID = (machineID & 0xFFFFFF);\n}\n\n/**\n * get the machineID\n * \n * @return {number}\n * @api public\n */\nObjectID.getMachineID = function() {\n  return MACHINE_ID;\n}\n\nObjectID.prototype = {\n  _bsontype: 'ObjectID',\n  constructor: ObjectID,\n\n  /**\n   * Return the ObjectID id as a 24 byte hex string representation\n   *\n   * @return {String} return the 24 byte hex string representation.\n   * @api public\n   */\n  toHexString: function() {\n    return this.str;\n  },\n\n  /**\n   * Compares the equality of this ObjectID with `otherID`.\n   *\n   * @param {Object} other ObjectID instance to compare against.\n   * @return {Boolean} the result of comparing two ObjectID's\n   * @api public\n   */\n  equals: function (other){\n    return !!other && this.str === other.toString();\n  },\n\n  /**\n   * Returns the generation date (accurate up to the second) that this ID was generated.\n   *\n   * @return {Date} the generation date\n   * @api public\n   */\n  getTimestamp: function(){\n    return new Date(parseInt(this.str.substr(0,8), 16) * 1000);\n  }\n};\n\nfunction next() {\n  return index = (index+1) % 0xFFFFFF;\n}\n\nfunction generate(time) {\n  if (typeof time !== 'number')\n    time = Date.now()/1000;\n\n  //keep it in the ring!\n  time = parseInt(time, 10) % 0xFFFFFFFF;\n\n  //FFFFFFFF FFFFFF FFFF FFFFFF\n  return hex(8,time) + hex(6,MACHINE_ID) + hex(4,pid) + hex(6,next());\n}\n\nfunction hex(length, n) {\n  n = n.toString(16);\n  return (n.length===length)? n : \"00000000\".substring(n.length, length) + n;\n}\n\nfunction buffer(str) {\n  var i=0,out=[];\n\n  if(str.length===24)\n    for(;i<24; out.push(parseInt(str[i]+str[i+1], 16)),i+=2);\n\n  else if(str.length===12)\n    for(;i<12; out.push(str.charCodeAt(i)),i++);\n\n  return out;\n}\n\nvar inspect = (Symbol && Symbol.for('nodejs.util.inspect.custom')) || 'inspect';\n\n/**\n * Converts to a string representation of this Id.\n *\n * @return {String} return the 24 byte hex string representation.\n * @api private\n */\nObjectID.prototype[inspect] = function() { return \"ObjectID(\"+this+\")\" };\nObjectID.prototype.toJSON = ObjectID.prototype.toHexString;\nObjectID.prototype.toString = ObjectID.prototype.toHexString;\n","module.exports = (__webpack_require__(\"jaIgFIJB\"))(104);","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nconst InputsActions = Reflux.createActions({\n  list: { asyncResult: true },\n  get: { asyncResult: true },\n  getOptional: { asyncResult: true },\n  create: { asyncResult: true },\n  delete: { asyncResult: true },\n  update: { asyncResult: true },\n});\n\nexport default InputsActions;\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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 Lib = require('../../lib');\nvar Template = require('../../plot_api/plot_template');\n\nvar colorScaleAttrs = require('./layout_attributes');\nvar colorScaleDefaults = require('./defaults');\n\nmodule.exports = function supplyLayoutDefaults(layoutIn, layoutOut) {\n    function coerce(attr, dflt) {\n        return Lib.coerce(layoutIn, layoutOut, colorScaleAttrs, attr, dflt);\n    }\n\n    coerce('colorscale.sequential');\n    coerce('colorscale.sequentialminus');\n    coerce('colorscale.diverging');\n\n    var colorAxes = layoutOut._colorAxes;\n    var colorAxIn, colorAxOut;\n\n    function coerceAx(attr, dflt) {\n        return Lib.coerce(colorAxIn, colorAxOut, colorScaleAttrs.coloraxis, attr, dflt);\n    }\n\n    for(var k in colorAxes) {\n        var stash = colorAxes[k];\n\n        if(stash[0]) {\n            colorAxIn = layoutIn[k] || {};\n            colorAxOut = Template.newContainer(layoutOut, k, 'coloraxis');\n            colorAxOut._name = k;\n            colorScaleDefaults(colorAxIn, colorAxOut, layoutOut, coerceAx, {prefix: '', cLetter: 'c'});\n        } else {\n            // re-coerce colorscale attributes w/o coloraxis\n            for(var i = 0; i < stash[2].length; i++) {\n                stash[2][i]();\n            }\n            delete layoutOut._colorAxes[k];\n        }\n    }\n};\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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\n\n// IMPORTANT - default colors should be in hex for compatibility\nexports.defaults = [\n    '#1f77b4',  // muted blue\n    '#ff7f0e',  // safety orange\n    '#2ca02c',  // cooked asparagus green\n    '#d62728',  // brick red\n    '#9467bd',  // muted purple\n    '#8c564b',  // chestnut brown\n    '#e377c2',  // raspberry yogurt pink\n    '#7f7f7f',  // middle gray\n    '#bcbd22',  // curry yellow-green\n    '#17becf'   // blue-teal\n];\n\nexports.defaultLine = '#444';\n\nexports.lightLine = '#eee';\n\nexports.background = '#fff';\n\nexports.borderLine = '#BEC8D9';\n\n// with axis.color and Color.interp we aren't using lightLine\n// itself anymore, instead interpolating between axis.color\n// and the background color using tinycolor.mix. lightFraction\n// gives back exactly lightLine if the other colors are defaults.\nexports.lightFraction = 100 * (0xe - 0x4) / (0xf - 0x4);\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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 timeFormat = require('d3-time-format').timeFormat;\nvar isNumeric = require('fast-isnumeric');\n\nvar Loggers = require('./loggers');\nvar mod = require('./mod').mod;\n\nvar constants = require('../constants/numerical');\nvar BADNUM = constants.BADNUM;\nvar ONEDAY = constants.ONEDAY;\nvar ONEHOUR = constants.ONEHOUR;\nvar ONEMIN = constants.ONEMIN;\nvar ONESEC = constants.ONESEC;\nvar EPOCHJD = constants.EPOCHJD;\n\nvar Registry = require('../registry');\n\nvar utcFormat = require('d3-time-format').utcFormat;\n\nvar DATETIME_REGEXP = /^\\s*(-?\\d\\d\\d\\d|\\d\\d)(-(\\d?\\d)(-(\\d?\\d)([ Tt]([01]?\\d|2[0-3])(:([0-5]\\d)(:([0-5]\\d(\\.\\d+)?))?(Z|z|[+\\-]\\d\\d(:?\\d\\d)?)?)?)?)?)?\\s*$/m;\n// special regex for chinese calendars to support yyyy-mmi-dd etc for intercalary months\nvar DATETIME_REGEXP_CN = /^\\s*(-?\\d\\d\\d\\d|\\d\\d)(-(\\d?\\di?)(-(\\d?\\d)([ Tt]([01]?\\d|2[0-3])(:([0-5]\\d)(:([0-5]\\d(\\.\\d+)?))?(Z|z|[+\\-]\\d\\d(:?\\d\\d)?)?)?)?)?)?\\s*$/m;\n\n// for 2-digit years, the first year we map them onto\nvar YFIRST = new Date().getFullYear() - 70;\n\nfunction isWorldCalendar(calendar) {\n    return (\n        calendar &&\n        Registry.componentsRegistry.calendars &&\n        typeof calendar === 'string' && calendar !== 'gregorian'\n    );\n}\n\n/*\n * dateTick0: get the canonical tick for this calendar\n *\n * integer weekdays : Saturday: 0, Sunday: 1, Monday: 2, etc.\n */\nexports.dateTick0 = function(calendar, dayOfWeek) {\n    var tick0 = _dateTick0(calendar, !!dayOfWeek);\n    if(dayOfWeek < 2) return tick0;\n\n    var v = exports.dateTime2ms(tick0, calendar);\n    v += ONEDAY * (dayOfWeek - 1); // shift Sunday to Monday, etc.\n    return exports.ms2DateTime(v, 0, calendar);\n};\n\n/*\n * _dateTick0: get the canonical tick for this calendar\n *\n * bool sunday is for week ticks, shift it to a Sunday.\n */\nfunction _dateTick0(calendar, sunday) {\n    if(isWorldCalendar(calendar)) {\n        return sunday ?\n            Registry.getComponentMethod('calendars', 'CANONICAL_SUNDAY')[calendar] :\n            Registry.getComponentMethod('calendars', 'CANONICAL_TICK')[calendar];\n    } else {\n        return sunday ? '2000-01-02' : '2000-01-01';\n    }\n}\n\n/*\n * dfltRange: for each calendar, give a valid default range\n */\nexports.dfltRange = function(calendar) {\n    if(isWorldCalendar(calendar)) {\n        return Registry.getComponentMethod('calendars', 'DFLTRANGE')[calendar];\n    } else {\n        return ['2000-01-01', '2001-01-01'];\n    }\n};\n\n// is an object a javascript date?\nexports.isJSDate = function(v) {\n    return typeof v === 'object' && v !== null && typeof v.getTime === 'function';\n};\n\n// The absolute limits of our date-time system\n// This is a little weird: we use MIN_MS and MAX_MS in dateTime2ms\n// but we use dateTime2ms to calculate them (after defining it!)\nvar MIN_MS, MAX_MS;\n\n/**\n * dateTime2ms - turn a date object or string s into milliseconds\n * (relative to 1970-01-01, per javascript standard)\n * optional calendar (string) to use a non-gregorian calendar\n *\n * Returns BADNUM if it doesn't find a date\n *\n * strings should have the form:\n *\n *    -?YYYY-mm-ddHH:MM:SS.sss?\n *\n * : space (our normal standard) or T or t (ISO-8601)\n * : Z, z, [+\\-]HH:?MM or [+\\-]HH and we THROW IT AWAY\n * this format comes from https://tools.ietf.org/html/rfc3339#section-5.6\n * and 4.2.5.1 Difference between local time and UTC of day (ISO-8601)\n * but we allow it even with a space as the separator\n *\n * May truncate after any full field, and sss can be any length\n * even >3 digits, though javascript dates truncate to milliseconds,\n * we keep as much as javascript numeric precision can hold, but we only\n * report back up to 100 microsecond precision, because most dates support\n * this precision (close to 1970 support more, very far away support less)\n *\n * Expanded to support negative years to -9999 but you must always\n * give 4 digits, except for 2-digit positive years which we assume are\n * near the present time.\n * Note that we follow ISO 8601:2004: there *is* a year 0, which\n * is 1BC/BCE, and -1===2BC etc.\n *\n * World calendars: not all of these *have* agreed extensions to this full range,\n * if you have another calendar system but want a date range outside its validity,\n * you can use a gregorian date string prefixed with 'G' or 'g'.\n *\n * Where to cut off 2-digit years between 1900s and 2000s?\n * from https://docs.microsoft.com/en-us/office/troubleshoot/excel/two-digit-year-numbers#the-2029-rule:\n *   1930-2029 (the most retro of all...)\n * but in my mac chrome from eg. d=new Date(Date.parse('8/19/50')):\n *   1950-2049\n * by Java, from http://stackoverflow.com/questions/2024273/:\n *   now-80 - now+19\n * or FileMaker Pro, from\n *      https://fmhelp.filemaker.com/help/18/fmp/en/index.html#page/FMP_Help/dates-with-two-digit-years.html:\n *   now-70 - now+29\n * but python strptime etc, via\n *      http://docs.python.org/py3k/library/time.html:\n *   1969-2068 (super forward-looking, but static, not sliding!)\n *\n * lets go with now-70 to now+29, and if anyone runs into this problem\n * they can learn the hard way not to use 2-digit years, as no choice we\n * make now will cover all possibilities. mostly this will all be taken\n * care of in initial parsing, should only be an issue for hand-entered data\n * currently (2016) this range is:\n *   1946-2045\n */\nexports.dateTime2ms = function(s, calendar) {\n    // first check if s is a date object\n    if(exports.isJSDate(s)) {\n        // Convert to the UTC milliseconds that give the same\n        // hours as this date has in the local timezone\n        var tzOffset = s.getTimezoneOffset() * ONEMIN;\n        var offsetTweak = (s.getUTCMinutes() - s.getMinutes()) * ONEMIN +\n            (s.getUTCSeconds() - s.getSeconds()) * ONESEC +\n            (s.getUTCMilliseconds() - s.getMilliseconds());\n\n        if(offsetTweak) {\n            var comb = 3 * ONEMIN;\n            tzOffset = tzOffset - comb / 2 + mod(offsetTweak - tzOffset + comb / 2, comb);\n        }\n        s = Number(s) - tzOffset;\n        if(s >= MIN_MS && s <= MAX_MS) return s;\n        return BADNUM;\n    }\n    // otherwise only accept strings and numbers\n    if(typeof s !== 'string' && typeof s !== 'number') return BADNUM;\n\n    s = String(s);\n\n    var isWorld = isWorldCalendar(calendar);\n\n    // to handle out-of-range dates in international calendars, accept\n    // 'G' as a prefix to force the built-in gregorian calendar.\n    var s0 = s.charAt(0);\n    if(isWorld && (s0 === 'G' || s0 === 'g')) {\n        s = s.substr(1);\n        calendar = '';\n    }\n\n    var isChinese = isWorld && calendar.substr(0, 7) === 'chinese';\n\n    var match = s.match(isChinese ? DATETIME_REGEXP_CN : DATETIME_REGEXP);\n    if(!match) return BADNUM;\n    var y = match[1];\n    var m = match[3] || '1';\n    var d = Number(match[5] || 1);\n    var H = Number(match[7] || 0);\n    var M = Number(match[9] || 0);\n    var S = Number(match[11] || 0);\n\n    if(isWorld) {\n        // disallow 2-digit years for world calendars\n        if(y.length === 2) return BADNUM;\n        y = Number(y);\n\n        var cDate;\n        try {\n            var calInstance = Registry.getComponentMethod('calendars', 'getCal')(calendar);\n            if(isChinese) {\n                var isIntercalary = m.charAt(m.length - 1) === 'i';\n                m = parseInt(m, 10);\n                cDate = calInstance.newDate(y, calInstance.toMonthIndex(y, m, isIntercalary), d);\n            } else {\n                cDate = calInstance.newDate(y, Number(m), d);\n            }\n        } catch(e) { return BADNUM; } // Invalid ... date\n\n        if(!cDate) return BADNUM;\n\n        return ((cDate.toJD() - EPOCHJD) * ONEDAY) +\n            (H * ONEHOUR) + (M * ONEMIN) + (S * ONESEC);\n    }\n\n    if(y.length === 2) {\n        y = (Number(y) + 2000 - YFIRST) % 100 + YFIRST;\n    } else y = Number(y);\n\n    // new Date uses months from 0; subtract 1 here just so we\n    // don't have to do it again during the validity test below\n    m -= 1;\n\n    // javascript takes new Date(0..99,m,d) to mean 1900-1999, so\n    // to support years 0-99 we need to use setFullYear explicitly\n    // Note that 2000 is a leap year.\n    var date = new Date(Date.UTC(2000, m, d, H, M));\n    date.setUTCFullYear(y);\n\n    if(date.getUTCMonth() !== m) return BADNUM;\n    if(date.getUTCDate() !== d) return BADNUM;\n\n    return date.getTime() + S * ONESEC;\n};\n\nMIN_MS = exports.MIN_MS = exports.dateTime2ms('-9999');\nMAX_MS = exports.MAX_MS = exports.dateTime2ms('9999-12-31 23:59:59.9999');\n\n// is string s a date? (see above)\nexports.isDateTime = function(s, calendar) {\n    return (exports.dateTime2ms(s, calendar) !== BADNUM);\n};\n\n// pad a number with zeroes, to given # of digits before the decimal point\nfunction lpad(val, digits) {\n    return String(val + Math.pow(10, digits)).substr(1);\n}\n\n/**\n * Turn ms into string of the form YYYY-mm-dd HH:MM:SS.ssss\n * Crop any trailing zeros in time, except never stop right after hours\n * (we could choose to crop '-01' from date too but for now we always\n * show the whole date)\n * Optional range r is the data range that applies, also in ms.\n * If rng is big, the later parts of time will be omitted\n */\nvar NINETYDAYS = 90 * ONEDAY;\nvar THREEHOURS = 3 * ONEHOUR;\nvar FIVEMIN = 5 * ONEMIN;\nexports.ms2DateTime = function(ms, r, calendar) {\n    if(typeof ms !== 'number' || !(ms >= MIN_MS && ms <= MAX_MS)) return BADNUM;\n\n    if(!r) r = 0;\n\n    var msecTenths = Math.floor(mod(ms + 0.05, 1) * 10);\n    var msRounded = Math.round(ms - msecTenths / 10);\n    var dateStr, h, m, s, msec10, d;\n\n    if(isWorldCalendar(calendar)) {\n        var dateJD = Math.floor(msRounded / ONEDAY) + EPOCHJD;\n        var timeMs = Math.floor(mod(ms, ONEDAY));\n        try {\n            dateStr = Registry.getComponentMethod('calendars', 'getCal')(calendar)\n                .fromJD(dateJD).formatDate('yyyy-mm-dd');\n        } catch(e) {\n            // invalid date in this calendar - fall back to Gyyyy-mm-dd\n            dateStr = utcFormat('G%Y-%m-%d')(new Date(msRounded));\n        }\n\n        // yyyy does NOT guarantee 4-digit years. YYYY mostly does, but does\n        // other things for a few calendars, so we can't trust it. Just pad\n        // it manually (after the '-' if there is one)\n        if(dateStr.charAt(0) === '-') {\n            while(dateStr.length < 11) dateStr = '-0' + dateStr.substr(1);\n        } else {\n            while(dateStr.length < 10) dateStr = '0' + dateStr;\n        }\n\n        // TODO: if this is faster, we could use this block for extracting\n        // the time components of regular gregorian too\n        h = (r < NINETYDAYS) ? Math.floor(timeMs / ONEHOUR) : 0;\n        m = (r < NINETYDAYS) ? Math.floor((timeMs % ONEHOUR) / ONEMIN) : 0;\n        s = (r < THREEHOURS) ? Math.floor((timeMs % ONEMIN) / ONESEC) : 0;\n        msec10 = (r < FIVEMIN) ? (timeMs % ONESEC) * 10 + msecTenths : 0;\n    } else {\n        d = new Date(msRounded);\n\n        dateStr = utcFormat('%Y-%m-%d')(d);\n\n        // <90 days: add hours and minutes - never *only* add hours\n        h = (r < NINETYDAYS) ? d.getUTCHours() : 0;\n        m = (r < NINETYDAYS) ? d.getUTCMinutes() : 0;\n        // <3 hours: add seconds\n        s = (r < THREEHOURS) ? d.getUTCSeconds() : 0;\n        // <5 minutes: add ms (plus one extra digit, this is msec*10)\n        msec10 = (r < FIVEMIN) ? d.getUTCMilliseconds() * 10 + msecTenths : 0;\n    }\n\n    return includeTime(dateStr, h, m, s, msec10);\n};\n\n// For converting old-style milliseconds to date strings,\n// we use the local timezone rather than UTC like we use\n// everywhere else, both for backward compatibility and\n// because that's how people mostly use javasript date objects.\n// Clip one extra day off our date range though so we can't get\n// thrown beyond the range by the timezone shift.\nexports.ms2DateTimeLocal = function(ms) {\n    if(!(ms >= MIN_MS + ONEDAY && ms <= MAX_MS - ONEDAY)) return BADNUM;\n\n    var msecTenths = Math.floor(mod(ms + 0.05, 1) * 10);\n    var d = new Date(Math.round(ms - msecTenths / 10));\n    var dateStr = timeFormat('%Y-%m-%d')(d);\n    var h = d.getHours();\n    var m = d.getMinutes();\n    var s = d.getSeconds();\n    var msec10 = d.getUTCMilliseconds() * 10 + msecTenths;\n\n    return includeTime(dateStr, h, m, s, msec10);\n};\n\nfunction includeTime(dateStr, h, m, s, msec10) {\n    // include each part that has nonzero data in or after it\n    if(h || m || s || msec10) {\n        dateStr += ' ' + lpad(h, 2) + ':' + lpad(m, 2);\n        if(s || msec10) {\n            dateStr += ':' + lpad(s, 2);\n            if(msec10) {\n                var digits = 4;\n                while(msec10 % 10 === 0) {\n                    digits -= 1;\n                    msec10 /= 10;\n                }\n                dateStr += '.' + lpad(msec10, digits);\n            }\n        }\n    }\n    return dateStr;\n}\n\n// normalize date format to date string, in case it starts as\n// a Date object or milliseconds\n// optional dflt is the return value if cleaning fails\nexports.cleanDate = function(v, dflt, calendar) {\n    // let us use cleanDate to provide a missing default without an error\n    if(v === BADNUM) return dflt;\n    if(exports.isJSDate(v) || (typeof v === 'number' && isFinite(v))) {\n        // do not allow milliseconds (old) or jsdate objects (inherently\n        // described as gregorian dates) with world calendars\n        if(isWorldCalendar(calendar)) {\n            Loggers.error('JS Dates and milliseconds are incompatible with world calendars', v);\n            return dflt;\n        }\n\n        // NOTE: if someone puts in a year as a number rather than a string,\n        // this will mistakenly convert it thinking it's milliseconds from 1970\n        // that is: '2012' -> Jan. 1, 2012, but 2012 -> 2012 epoch milliseconds\n        v = exports.ms2DateTimeLocal(+v);\n        if(!v && dflt !== undefined) return dflt;\n    } else if(!exports.isDateTime(v, calendar)) {\n        Loggers.error('unrecognized date', v);\n        return dflt;\n    }\n    return v;\n};\n\n/*\n *  Date formatting for ticks and hovertext\n */\n\n/*\n * modDateFormat: Support world calendars, and add one item to\n * d3's vocabulary:\n * %{n}f where n is the max number of digits of fractional seconds\n */\nvar fracMatch = /%\\d?f/g;\nfunction modDateFormat(fmt, x, formatter, calendar) {\n    fmt = fmt.replace(fracMatch, function(match) {\n        var digits = Math.min(+(match.charAt(1)) || 6, 6);\n        var fracSecs = ((x / 1000 % 1) + 2)\n            .toFixed(digits)\n            .substr(2).replace(/0+$/, '') || '0';\n        return fracSecs;\n    });\n\n    var d = new Date(Math.floor(x + 0.05));\n\n    if(isWorldCalendar(calendar)) {\n        try {\n            fmt = Registry.getComponentMethod('calendars', 'worldCalFmt')(fmt, x, calendar);\n        } catch(e) {\n            return 'Invalid';\n        }\n    }\n    return formatter(fmt)(d);\n}\n\n/*\n * formatTime: create a time string from:\n *   x: milliseconds\n *   tr: tickround ('M', 'S', or # digits)\n * only supports UTC times (where every day is 24 hours and 0 is at midnight)\n */\nvar MAXSECONDS = [59, 59.9, 59.99, 59.999, 59.9999];\nfunction formatTime(x, tr) {\n    var timePart = mod(x + 0.05, ONEDAY);\n\n    var timeStr = lpad(Math.floor(timePart / ONEHOUR), 2) + ':' +\n        lpad(mod(Math.floor(timePart / ONEMIN), 60), 2);\n\n    if(tr !== 'M') {\n        if(!isNumeric(tr)) tr = 0; // should only be 'S'\n\n        /*\n         * this is a weird one - and shouldn't come up unless people\n         * monkey with tick0 in weird ways, but we need to do something!\n         * IN PARTICULAR we had better not display garbage (see below)\n         * for numbers we always round to the nearest increment of the\n         * precision we're showing, and this seems like the right way to\n         * handle seconds and milliseconds, as they have a decimal point\n         * and people will interpret that to mean rounding like numbers.\n         * but for larger increments we floor the value: it's always\n         * 2013 until the ball drops on the new year. We could argue about\n         * which field it is where we start rounding (should 12:08:59\n         * round to 12:09 if we're stopping at minutes?) but for now I'll\n         * say we round seconds but floor everything else. BUT that means\n         * we need to never round up to 60 seconds, ie 23:59:60\n         */\n        var sec = Math.min(mod(x / ONESEC, 60), MAXSECONDS[tr]);\n\n        var secStr = (100 + sec).toFixed(tr).substr(1);\n        if(tr > 0) {\n            secStr = secStr.replace(/0+$/, '').replace(/[\\.]$/, '');\n        }\n\n        timeStr += ':' + secStr;\n    }\n    return timeStr;\n}\n\n/*\n * formatDate: turn a date into tick or hover label text.\n *\n *   x: milliseconds, the value to convert\n *   fmt: optional, an explicit format string (d3 format, even for world calendars)\n *   tr: tickround ('y', 'm', 'd', 'M', 'S', or # digits)\n *      used if no explicit fmt is provided\n *   formatter: locale-aware d3 date formatter for standard gregorian calendars\n *      should be the result of exports.getD3DateFormat(gd)\n *   calendar: optional string, the world calendar system to use\n *\n * returns the date/time as a string, potentially with the leading portion\n * on a separate line (after '\\n')\n * Note that this means if you provide an explicit format which includes '\\n'\n * the axis may choose to strip things after it when they don't change from\n * one tick to the next (as it does with automatic formatting)\n */\nexports.formatDate = function(x, fmt, tr, formatter, calendar, extraFormat) {\n    calendar = isWorldCalendar(calendar) && calendar;\n\n    if(!fmt) {\n        if(tr === 'y') fmt = extraFormat.year;\n        else if(tr === 'm') fmt = extraFormat.month;\n        else if(tr === 'd') {\n            fmt = extraFormat.dayMonth + '\\n' + extraFormat.year;\n        } else {\n            return formatTime(x, tr) + '\\n' + modDateFormat(extraFormat.dayMonthYear, x, formatter, calendar);\n        }\n    }\n\n    return modDateFormat(fmt, x, formatter, calendar);\n};\n\n/*\n * incrementMonth: make a new milliseconds value from the given one,\n * having changed the month\n *\n * special case for world calendars: multiples of 12 are treated as years,\n * even for calendar systems that don't have (always or ever) 12 months/year\n * TODO: perhaps we need a different code for year increments to support this?\n *\n * ms (number): the initial millisecond value\n * dMonth (int): the (signed) number of months to shift\n * calendar (string): the calendar system to use\n *\n * changing month does not (and CANNOT) always preserve day, since\n * months have different lengths. The worst example of this is:\n *   d = new Date(1970,0,31); d.setMonth(1) -> Feb 31 turns into Mar 3\n *\n * But we want to be able to iterate over the last day of each month,\n * regardless of what its number is.\n * So shift 3 days forward, THEN set the new month, then unshift:\n *   1/31 -> 2/28 (or 29) -> 3/31 -> 4/30 -> ...\n *\n * Note that odd behavior still exists if you start from the 26th-28th:\n *   1/28 -> 2/28 -> 3/31\n * but at least you can't shift any dates into the wrong month,\n * and ticks on these days incrementing by month would be very unusual\n */\nvar THREEDAYS = 3 * ONEDAY;\nexports.incrementMonth = function(ms, dMonth, calendar) {\n    calendar = isWorldCalendar(calendar) && calendar;\n\n    // pull time out and operate on pure dates, then add time back at the end\n    // this gives maximum precision - not that we *normally* care if we're\n    // incrementing by month, but better to be safe!\n    var timeMs = mod(ms, ONEDAY);\n    ms = Math.round(ms - timeMs);\n\n    if(calendar) {\n        try {\n            var dateJD = Math.round(ms / ONEDAY) + EPOCHJD;\n            var calInstance = Registry.getComponentMethod('calendars', 'getCal')(calendar);\n            var cDate = calInstance.fromJD(dateJD);\n\n            if(dMonth % 12) calInstance.add(cDate, dMonth, 'm');\n            else calInstance.add(cDate, dMonth / 12, 'y');\n\n            return (cDate.toJD() - EPOCHJD) * ONEDAY + timeMs;\n        } catch(e) {\n            Loggers.error('invalid ms ' + ms + ' in calendar ' + calendar);\n            // then keep going in gregorian even though the result will be 'Invalid'\n        }\n    }\n\n    var y = new Date(ms + THREEDAYS);\n    return y.setUTCMonth(y.getUTCMonth() + dMonth) + timeMs - THREEDAYS;\n};\n\n/*\n * findExactDates: what fraction of data is exact days, months, or years?\n *\n * data: array of millisecond values\n * calendar (string) the calendar to test against\n */\nexports.findExactDates = function(data, calendar) {\n    var exactYears = 0;\n    var exactMonths = 0;\n    var exactDays = 0;\n    var blankCount = 0;\n    var d;\n    var di;\n\n    var calInstance = (\n        isWorldCalendar(calendar) &&\n        Registry.getComponentMethod('calendars', 'getCal')(calendar)\n    );\n\n    for(var i = 0; i < data.length; i++) {\n        di = data[i];\n\n        // not date data at all\n        if(!isNumeric(di)) {\n            blankCount ++;\n            continue;\n        }\n\n        // not an exact date\n        if(di % ONEDAY) continue;\n\n        if(calInstance) {\n            try {\n                d = calInstance.fromJD(di / ONEDAY + EPOCHJD);\n                if(d.day() === 1) {\n                    if(d.month() === 1) exactYears++;\n                    else exactMonths++;\n                } else exactDays++;\n            } catch(e) {\n                // invalid date in this calendar - ignore it here.\n            }\n        } else {\n            d = new Date(di);\n            if(d.getUTCDate() === 1) {\n                if(d.getUTCMonth() === 0) exactYears++;\n                else exactMonths++;\n            } else exactDays++;\n        }\n    }\n    exactMonths += exactYears;\n    exactDays += exactMonths;\n\n    var dataCount = data.length - blankCount;\n\n    return {\n        exactYears: exactYears / dataCount,\n        exactMonths: exactMonths / dataCount,\n        exactDays: exactDays / dataCount\n    };\n};\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport * as URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport { Builder } from 'logic/rest/FetchProvider';\nimport ActionsProvider from 'injection/ActionsProvider';\n\nconst ServerAvailabilityActions = ActionsProvider.getActions('ServerAvailability');\n\nexport type ServerAvailabilityStoreState = {\n  server: { up: true } | { up: false, error: string },\n};\n\nconst ServerAvailabilityStore = Reflux.createStore({\n  listenables: [ServerAvailabilityActions],\n  server: { up: true },\n  init() {\n    this.ping();\n  },\n  getInitialState() {\n    return { server: this.server };\n  },\n  ping() {\n    return new Builder('GET', URLUtils.qualifyUrl(ApiRoutes.ping().url))\n      // Make sure to request JSON to avoid a redirect which breaks in Firefox (see https://github.com/Graylog2/graylog2-server/issues/3312)\n      .setHeader('Accept', 'application/json')\n      .setHeader('X-Graylog-No-Session-Extension', 'true')\n      .build()\n      .then(\n        () => ServerAvailabilityActions.reportSuccess(),\n        (error) => ServerAvailabilityActions.reportError(error),\n      );\n  },\n  reportError(error) {\n    if (this.server.up) {\n      this.server = { up: false, error: error };\n      this.trigger({ server: this.server });\n    }\n  },\n  reportSuccess() {\n    if (!this.server.up) {\n      this.server = { up: true };\n      this.trigger({ server: this.server });\n    }\n  },\n});\n\nexport default ServerAvailabilityStore;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport { scales } from 'plotly.js/src/components/colorscale';\nimport * as chroma from 'chroma-js';\n\nconst plotlyScaleToChroma = (plotlyScale: Array<[domain: number, color: string]>) => {\n  const domains = plotlyScale.map(([domain]) => domain);\n  const colors = plotlyScale.map(([, color]) => color);\n\n  return chroma.scale(colors).domain(domains);\n};\n\nconst scaleForGradient = (gradient: string): chroma.Scale => {\n  switch (gradient) {\n    case 'Blackbody':\n    case 'Bluered':\n    case 'Cividis':\n    case 'Earth':\n    case 'Electric':\n    case 'Hot':\n    case 'Jet':\n    case 'Picnic':\n    case 'Portland':\n    case 'Rainbow': return plotlyScaleToChroma(scales[gradient]);\n    default: return chroma.scale(gradient);\n  }\n};\n\nexport default scaleForGradient;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport FetchError from 'logic/errors/FetchError';\nimport ErrorsActions from 'actions/errors/ErrorsActions';\nimport StoreProvider from 'injection/StoreProvider';\nimport ActionsProvider from 'injection/ActionsProvider';\n// eslint-disable-next-line import/no-cycle\nimport { createFromFetchError } from 'logic/errors/ReportedErrors';\nimport Routes from 'routing/Routes';\nimport history from 'util/History';\nimport CancellablePromise from 'logic/rest/CancellablePromise';\n\nconst reportServerSuccess = () => {\n  const ServerAvailabilityActions = ActionsProvider.getActions('ServerAvailability');\n\n  ServerAvailabilityActions.reportSuccess();\n};\n\nconst defaultOnUnauthorizedError = (error) => ErrorsActions.report(createFromFetchError(error));\n\nconst emptyToUndefined = (s: any) => (s && s !== '' ? s : undefined);\n\nconst onServerError = async (error: Response | undefined, onUnauthorized = defaultOnUnauthorizedError) => {\n  const contentType = error.headers?.get('Content-Type');\n  const response = await (contentType?.startsWith('application/json') ? error.json().then((body) => body) : error?.text?.());\n  const SessionStore = StoreProvider.getStore('Session');\n  const fetchError = new FetchError(error.statusText, error.status, emptyToUndefined(response));\n\n  if (SessionStore.isLoggedIn() && error.status === 401) {\n    const SessionActions = ActionsProvider.getActions('Session');\n\n    SessionActions.logout(SessionStore.getSessionId());\n  }\n\n  // Redirect to the start page if a user is logged in but not allowed to access a certain HTTP API.\n  if (SessionStore.isLoggedIn() && error.status === 403) {\n    onUnauthorized(fetchError);\n  }\n\n  if (error && !error.status) {\n    const ServerAvailabilityActions = ActionsProvider.getActions('ServerAvailability');\n\n    ServerAvailabilityActions.reportError(fetchError);\n  }\n\n  throw fetchError;\n};\n\nconst maybeStringify = (body: any) => (body && typeof body !== 'string' ? JSON.stringify(body) : body);\n\ntype RequestHeaders = {\n  Accept?: string,\n  'Content-Type'?: string,\n};\n\nconst defaultResponseHandler = (resp: Response) => {\n  if (resp.ok) {\n    const { status } = resp;\n    const contentLength = Number.parseInt(resp.headers.get('Content-Length'), 10);\n    const noContent = status === 204 || contentLength === 0;\n\n    reportServerSuccess();\n\n    return noContent ? null : resp.json();\n  }\n\n  throw resp;\n};\n\nexport class Builder {\n  private options = {};\n\n  private readonly url: string;\n\n  private readonly method: string;\n\n  private body: { body: any, mimeType?: string };\n\n  private accept: string;\n\n  private responseHandler: (response: any) => any;\n\n  private errorHandler: (error: any) => any;\n\n  constructor(method, url) {\n    this.method = method;\n    this.url = url.replace(/([^:])\\/\\//, '$1/');\n\n    this.options = {\n      'X-Requested-With': 'XMLHttpRequest',\n      'X-Requested-By': 'XMLHttpRequest',\n    };\n\n    this.responseHandler = (response) => response;\n    this.errorHandler = undefined;\n  }\n\n  authenticated() {\n    const SessionStore = StoreProvider.getStore('Session');\n    const token = SessionStore.getSessionId();\n\n    return this.session(token);\n  }\n\n  session(sessionId) {\n    const buffer = Buffer.from(`${sessionId}:session`);\n\n    this.options = {\n      ...this.options,\n      Authorization: `Basic ${buffer.toString('base64')}`,\n    };\n\n    return this;\n  }\n\n  setHeader(header, value) {\n    this.options = {\n      ...this.options,\n      [header]: value,\n    };\n\n    return this;\n  }\n\n  json(body?: any) {\n    this.body = { body: maybeStringify(body), mimeType: 'application/json' };\n    this.accept = 'application/json';\n\n    this.responseHandler = defaultResponseHandler;\n\n    this.errorHandler = (error) => onServerError(error);\n\n    return this;\n  }\n\n  formData(body, acceptedMimeType = 'application/json') {\n    this.body = { body };\n\n    this.accept = acceptedMimeType;\n\n    this.responseHandler = defaultResponseHandler;\n    this.errorHandler = (error) => onServerError(error);\n\n    return this;\n  }\n\n  file(body, mimeType) {\n    this.body = { body: maybeStringify(body), mimeType: 'application/json' };\n    this.accept = mimeType;\n\n    this.responseHandler = (resp) => {\n      if (resp.ok) {\n        reportServerSuccess();\n\n        return resp.text();\n      }\n\n      throw resp;\n    };\n\n    this.errorHandler = (error) => onServerError(error);\n\n    return this;\n  }\n\n  plaintext(body) {\n    const onUnauthorized = () => history.replace(Routes.STARTPAGE);\n\n    this.body = { body, mimeType: 'text/plain' };\n    this.accept = 'application/json';\n\n    this.responseHandler = defaultResponseHandler;\n\n    this.errorHandler = (error) => onServerError(error, onUnauthorized);\n\n    return this;\n  }\n\n  noSessionExtension() {\n    this.options = {\n      ...this.options,\n      'X-Graylog-No-Session-Extension': 'true',\n    };\n\n    return this;\n  }\n\n  build() {\n    const headers: RequestHeaders = this.body && this.body.mimeType\n      ? { ...this.options, 'Content-Type': this.body.mimeType }\n      : this.options;\n\n    if (this.accept) {\n      headers.Accept = this.accept;\n    }\n\n    return CancellablePromise.of(window.fetch(this.url, {\n      method: this.method,\n      headers,\n      body: this.body ? this.body.body : undefined,\n    })).then(this.responseHandler, this.errorHandler)\n      .catch(this.errorHandler);\n  }\n}\n\nfunction queuePromiseIfNotLoggedin(promise) {\n  const SessionStore = StoreProvider.getStore('Session');\n\n  if (!SessionStore.isLoggedIn()) {\n    return () => CancellablePromise.of(new Promise((resolve, reject) => {\n      const SessionActions = ActionsProvider.getActions('Session');\n\n      SessionActions.login.completed.listen(() => {\n        promise().then(resolve, reject);\n      });\n    }));\n  }\n\n  return promise;\n}\n\nexport default function fetch(method, url, body?) {\n  const promise = () => new Builder(method, url)\n    .authenticated()\n    .json(body)\n    .build();\n\n  return queuePromiseIfNotLoggedin(promise)();\n}\n\nexport function fetchPlainText(method, url, body) {\n  const promise = () => new Builder(method, url)\n    .authenticated()\n    .plaintext(body)\n    .build();\n\n  return queuePromiseIfNotLoggedin(promise)();\n}\n\nexport function fetchPeriodically(method, url, body?) {\n  const promise = () => new Builder(method, url)\n    .authenticated()\n    .noSessionExtension()\n    .json(body)\n    .build();\n\n  return queuePromiseIfNotLoggedin(promise)();\n}\n\nexport function fetchFile(method, url, body, mimeType = 'text/csv') {\n  const promise = () => new Builder(method, url)\n    .authenticated()\n    .file(body, mimeType)\n    .build();\n\n  return queuePromiseIfNotLoggedin(promise)();\n}\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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 extendFlat = require('../../lib/extend').extendFlat;\n\nvar colorScaleAttrs = require('./attributes');\nvar scales = require('./scales').scales;\n\nvar msg = 'Note that `autocolorscale` must be true for this attribute to work.';\n\nmodule.exports = {\n    editType: 'calc',\n\n    colorscale: {\n        editType: 'calc',\n\n        sequential: {\n            valType: 'colorscale',\n            dflt: scales.Reds,\n            role: 'style',\n            editType: 'calc',\n            description: [\n                'Sets the default sequential colorscale for positive values.',\n                msg\n            ].join(' ')\n        },\n        sequentialminus: {\n            valType: 'colorscale',\n            dflt: scales.Blues,\n            role: 'style',\n            editType: 'calc',\n            description: [\n                'Sets the default sequential colorscale for negative values.',\n                msg\n            ].join(' ')\n        },\n        diverging: {\n            valType: 'colorscale',\n            dflt: scales.RdBu,\n            role: 'style',\n            editType: 'calc',\n            description: [\n                'Sets the default diverging colorscale.',\n                msg\n            ].join(' ')\n        }\n    },\n\n    coloraxis: extendFlat({\n        // not really a 'subplot' attribute container,\n        // but this is the flag we use to denote attributes that\n        // support yaxis, yaxis2, yaxis3, ... counters\n        _isSubplotObj: true,\n        editType: 'calc',\n        description: [\n            ''\n        ].join(' ')\n    }, colorScaleAttrs('', {\n        colorAttr: 'corresponding trace color array(s)',\n        noColorAxis: true,\n        showScaleDflt: true\n    }))\n};\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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 Lib = require('../../lib');\nvar hasColorscale = require('./helpers').hasColorscale;\nvar extractOpts = require('./helpers').extractOpts;\n\nmodule.exports = function crossTraceDefaults(fullData, fullLayout) {\n    function replace(cont, k) {\n        var val = cont['_' + k];\n        if(val !== undefined) {\n            cont[k] = val;\n        }\n    }\n\n    function relinkColorAttrs(outerCont, cbOpt) {\n        var cont = cbOpt.container ?\n            Lib.nestedProperty(outerCont, cbOpt.container).get() :\n            outerCont;\n\n        if(cont) {\n            if(cont.coloraxis) {\n                // stash ref to color axis\n                cont._colorAx = fullLayout[cont.coloraxis];\n            } else {\n                var cOpts = extractOpts(cont);\n                var isAuto = cOpts.auto;\n\n                if(isAuto || cOpts.min === undefined) {\n                    replace(cont, cbOpt.min);\n                }\n                if(isAuto || cOpts.max === undefined) {\n                    replace(cont, cbOpt.max);\n                }\n                if(cOpts.autocolorscale) {\n                    replace(cont, 'colorscale');\n                }\n            }\n        }\n    }\n\n    for(var i = 0; i < fullData.length; i++) {\n        var trace = fullData[i];\n        var cbOpts = trace._module.colorbar;\n\n        if(cbOpts) {\n            if(Array.isArray(cbOpts)) {\n                for(var j = 0; j < cbOpts.length; j++) {\n                    relinkColorAttrs(trace, cbOpts[j]);\n                }\n            } else {\n                relinkColorAttrs(trace, cbOpts);\n            }\n        }\n\n        if(hasColorscale(trace, 'marker.line')) {\n            relinkColorAttrs(trace, {\n                container: 'marker.line',\n                min: 'cmin',\n                max: 'cmax'\n            });\n        }\n    }\n\n    for(var k in fullLayout._colorAxes) {\n        relinkColorAttrs(fullLayout[k], {min: 'cmin', max: 'cmax'});\n    }\n};\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\n\nimport * as Immutable from 'immutable';\nimport ObjectID from 'bson-objectid';\n\nimport Query from '../queries/Query';\nimport Parameter from '../parameters/Parameter';\nimport type { ParameterJson } from '../parameters/Parameter';\nimport type { QueryJson } from '../queries/Query';\n\ntype SearchId = string;\ntype InternalState = {\n  id: SearchId,\n  queries: Immutable.Set,\n  parameters: Immutable.Set,\n};\n\nexport type SearchJson = {\n  id: SearchId,\n  queries: Array,\n  parameters: Array,\n};\n\nexport type QuerySet = Immutable.Set;\n\nexport default class Search {\n  _value: InternalState;\n\n  constructor(id: SearchId, queries: (Array | QuerySet), parameters: Array) {\n    this._value = { id, queries: Immutable.OrderedSet(queries), parameters: Immutable.Set(parameters) };\n  }\n\n  static create(): Search {\n    // eslint-disable-next-line @typescript-eslint/no-use-before-define\n    return new Builder()\n      .newId()\n      .queries([])\n      .parameters([])\n      .build();\n  }\n\n  get id(): SearchId {\n    return this._value.id;\n  }\n\n  get queries(): QuerySet {\n    return this._value.queries;\n  }\n\n  get parameters(): Immutable.Set {\n    return this._value.parameters;\n  }\n\n  get requiredParameters(): Immutable.Set {\n    return this.parameters\n      .filter((p) => (!p.defaultValue && (!p.optional && p.needsBinding))).toSet();\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-use-before-define\n  toBuilder(): Builder {\n    const { id, queries, parameters } = this._value;\n\n    // eslint-disable-next-line @typescript-eslint/no-use-before-define\n    return new Builder(Immutable.Map({ id, queries, parameters }));\n  }\n\n  toJSON(): SearchJson {\n    const { id, queries, parameters } = this._value;\n\n    return {\n      id,\n      queries: queries.toJS(),\n      parameters: parameters.toJS(),\n    };\n  }\n\n  static fromJSON(value: SearchJson): Search {\n    const { id, parameters } = value;\n\n    const queries = value.queries.map((q) => Query.fromJSON(q));\n\n    return new Search(id, queries, parameters.map((p) => Parameter.fromJSON(p)));\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-use-before-define\n  static builder(): Builder {\n    // eslint-disable-next-line @typescript-eslint/no-use-before-define\n    return new Builder();\n  }\n}\n\nclass Builder {\n  private value: Immutable.Map;\n\n  constructor(value: Immutable.Map = Immutable.Map()) {\n    this.value = value;\n  }\n\n  id(value: SearchId): Builder {\n    return new Builder(this.value.set('id', value));\n  }\n\n  newId(): Builder {\n    return this.id(new ObjectID().toString());\n  }\n\n  queries(value: (Array | QuerySet)): Builder {\n    return new Builder(this.value.set('queries', value));\n  }\n\n  parameters(value: Array): Builder {\n    return new Builder(this.value.set('parameters', value));\n  }\n\n  build(): Search {\n    const { id, queries, parameters } = this.value.toObject();\n\n    return new Search(id, queries, parameters);\n  }\n}\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\nimport lodash from 'lodash';\n\nimport * as URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport fetch from 'logic/rest/FetchProvider';\nimport CombinedProvider from 'injection/CombinedProvider';\n\nconst { ConfigurationVariableActions } = CombinedProvider.get('ConfigurationVariable');\n\nconst ConfigurationVariableStore = Reflux.createStore({\n  listenables: [ConfigurationVariableActions],\n  sourceUrl: '/sidecar/configuration_variables',\n\n  all() {\n    const promise = fetch('GET', URLUtils.qualifyUrl(this.sourceUrl));\n\n    promise\n      .catch(\n        (error) => {\n          UserNotification.error(`Fetching configuration variables failed with status: ${error}`,\n            'Could not retrieve configuration variables');\n        },\n      );\n\n    ConfigurationVariableActions.all.promise(promise);\n  },\n\n  save(configurationVariable) {\n    const request = {\n      id: configurationVariable.id,\n      name: configurationVariable.name,\n      description: configurationVariable.description,\n      content: configurationVariable.content,\n    };\n\n    let url = URLUtils.qualifyUrl(`${this.sourceUrl}`);\n    let method;\n    let action;\n\n    if (configurationVariable.id === '') {\n      method = 'POST';\n      action = 'created';\n    } else {\n      url += `/${configurationVariable.id}`;\n      method = 'PUT';\n      action = 'updated';\n    }\n\n    const promise = fetch(method, url, request);\n\n    promise\n      .then(() => {\n        UserNotification.success(`Configuration variable \"${configurationVariable.name}\" successfully ${action}`);\n      }, (error) => {\n        UserNotification.error(`Saving variable \"${configurationVariable.name}\" failed with status: ${error.message}`,\n          'Could not save variable');\n      });\n\n    ConfigurationVariableActions.save.promise(promise);\n  },\n\n  getConfigurations(configurationVariable) {\n    const url = URLUtils.qualifyUrl(`${this.sourceUrl}/${configurationVariable.id}/configurations`);\n    const promise = fetch('GET', url);\n\n    promise.catch(\n      (error) => {\n        UserNotification.error(`Fetching configurations for this variable failed with status: ${error}`);\n      },\n    );\n\n    ConfigurationVariableActions.getConfigurations.promise(promise);\n  },\n\n  delete(configurationVariable) {\n    const url = URLUtils.qualifyUrl(`${this.sourceUrl}/${configurationVariable.id}`);\n    const promise = fetch('DELETE', url);\n\n    promise\n      .then(() => {\n        UserNotification.success(`Configuration variable \"${configurationVariable.name}\" successfully deleted`);\n      }, (error) => {\n        UserNotification.error(`Deleting variable \"${configurationVariable.name}\" failed with status: ${error.message}`,\n          'Could not delete variable');\n      });\n\n    ConfigurationVariableActions.delete.promise(promise);\n  },\n\n  validate(configurationVariable) {\n    // set minimum api defaults for faster validation feedback\n    const payload = {\n      id: ' ',\n      name: ' ',\n      content: ' ',\n    };\n\n    lodash.merge(payload, configurationVariable);\n\n    const promise = fetch('POST', URLUtils.qualifyUrl(`${this.sourceUrl}/validate`), payload);\n\n    promise.catch(\n      (error) => {\n        UserNotification.error(`Validating variable \"${configurationVariable.name}\" failed with status: ${error.message}`,\n          'Could not validate variable');\n      },\n    );\n\n    ConfigurationVariableActions.validate.promise(promise);\n  },\n\n});\n\nexport default ConfigurationVariableStore;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport chroma from 'chroma-js';\n\nimport { TimeRange, RelativeTimeRangeWithEnd } from 'views/logic/queries/Query';\nimport { StaticColor } from 'views/logic/views/formatting/highlighting/HighlightingColor';\n\nexport type SearchBarFormValues = {\n  timerange: TimeRange,\n  streams: Array,\n  queryString: string,\n};\n\nexport const FULL_MESSAGE_FIELD = 'full_message';\nexport const TIMESTAMP_FIELD = 'timestamp';\nexport const MESSAGE_FIELD = 'message';\nexport const SOURCE_FIELD = 'source';\n\nexport const DEFAULT_MESSAGE_FIELDS = [TIMESTAMP_FIELD, SOURCE_FIELD];\n\nexport const RELATIVE_ALL_TIME = 0; // value for time range `range` property, which represents all time\nexport const Messages = {\n  DEFAULT_LIMIT: 150,\n};\n\nexport const DEFAULT_RANGE_TYPE = 'relative';\nexport const DEFAULT_RELATIVE_FROM = 300;\nexport const DEFAULT_RELATIVE_TO = DEFAULT_RELATIVE_FROM - 60;\nexport const DEFAULT_TIMERANGE: RelativeTimeRangeWithEnd = { type: DEFAULT_RANGE_TYPE, from: DEFAULT_RELATIVE_FROM };\n\nexport const DEFAULT_HIGHLIGHT_COLOR = StaticColor.create('#ffec3d');\nexport const DEFAULT_CUSTOM_HIGHLIGHT_RANGE = chroma.scale(['lightyellow', 'lightgreen', 'lightblue', 'red'])\n  .mode('lch')\n  .colors(40);\n\nexport const TimeUnits = {\n  seconds: 'Seconds',\n  minutes: 'Minutes',\n  hours: 'Hours',\n  days: 'Days',\n  weeks: 'Weeks',\n  months: 'Months',\n};\n\nexport const RELATIVE_RANGE_TYPES = [\n  {\n    type: 'seconds',\n    label: 'Seconds',\n  }, {\n    type: 'minutes',\n    label: 'Minutes',\n  }, {\n    type: 'hours',\n    label: 'Hours',\n  }, {\n    type: 'days',\n    label: 'Days',\n  },\n] as const;\n\nexport type TimeUnit = keyof typeof TimeUnits;\n\nexport const viewsPath = '/views';\nexport const showViewsPath = `${viewsPath}/:viewId`;\n\nexport const searchPath = '/search';\nexport const newSearchPath = `${searchPath}/new`;\nexport const showSearchPath = `${searchPath}/:viewId`;\n\nexport const dashboardsPath = '/dashboards';\nexport const newDashboardsPath = `${dashboardsPath}/new`;\nexport const dashboardsTvPath = `${dashboardsPath}/tv/:viewId`;\nexport const showDashboardsPath = `${dashboardsPath}/:viewId`;\n\nexport const extendedSearchPath = '/extendedsearch';\n\nexport const availableTimeRangeTypes = [\n  { type: 'relative' as const, name: 'Relative' },\n  { type: 'absolute' as const, name: 'Absolute' },\n  { type: 'keyword' as const, name: 'Keyword' },\n];\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as Immutable from 'immutable';\nimport { $PropertyType } from 'utility-types';\nimport { DirectoryServiceAuthenticationService } from 'components/authentication/types';\n\nimport { getAuthServicePlugin } from 'util/AuthenticationService';\nimport { DirectoryServiceBackendConfig } from 'logic/authentication/directoryServices/types';\nimport { OktaBackendConfig } from 'logic/authentication/okta/types';\n\ntype InternalState = {\n  id: string,\n  title: string,\n  description: string,\n  defaultRoles: Immutable.List,\n  config: DirectoryServiceBackendConfig | OktaBackendConfig,\n};\n\ntype TypedConfig = {\n  type: string,\n};\n\nexport type AuthenticationBackendJSON = {\n  id: string,\n  title: string,\n  description: string,\n  default_roles: Array,\n  config: DirectoryServiceBackendConfig | OktaBackendConfig,\n};\n\nconst configFromJson = (config: $PropertyType) => {\n  const authService = getAuthServicePlugin((config as TypedConfig).type, true);\n\n  if (authService && typeof authService.configFromJson === 'function') {\n    return (authService as DirectoryServiceAuthenticationService).configFromJson(config);\n  }\n\n  return config;\n};\n\nconst configToJson = (config: $PropertyType) => {\n  const authService = getAuthServicePlugin((config as TypedConfig).type, true);\n\n  if (authService && typeof authService.configToJson === 'function') {\n    return authService.configToJson(config);\n  }\n\n  return config;\n};\n\nexport default class AuthenticationBackend {\n  _value: InternalState;\n\n  constructor(\n    id: $PropertyType,\n    title: $PropertyType,\n    description: $PropertyType,\n    defaultRoles: $PropertyType,\n    config: $PropertyType,\n  ) {\n    this._value = {\n      id,\n      title,\n      description,\n      defaultRoles,\n      config,\n    };\n  }\n\n  get id(): $PropertyType {\n    return this._value.id;\n  }\n\n  get title(): $PropertyType {\n    return this._value.title;\n  }\n\n  get description(): $PropertyType {\n    return this._value.description;\n  }\n\n  get defaultRoles(): $PropertyType {\n    return this._value.defaultRoles;\n  }\n\n  get config(): $PropertyType {\n    return this._value.config;\n  }\n\n  toBuilder(): Builder {\n    const {\n      id,\n      title,\n      description,\n      defaultRoles,\n      config,\n    } = this._value;\n\n    // eslint-disable-next-line @typescript-eslint/no-use-before-define\n    return new Builder(Immutable.Map({\n      id,\n      title,\n      description,\n      defaultRoles,\n      config,\n    }));\n  }\n\n  toJSON() {\n    const {\n      id,\n      title,\n      description,\n      defaultRoles = Immutable.List(),\n      config,\n    } = this._value;\n\n    const formattedConfig = configToJson(config);\n\n    return {\n      id,\n      title,\n      description,\n      default_roles: defaultRoles.toJS(),\n      config: formattedConfig,\n    };\n  }\n\n  static fromJSON(value: AuthenticationBackendJSON) {\n    const {\n      id,\n      title,\n      description,\n      default_roles: defaultRoles,\n      config,\n    } = value;\n\n    const formattedConfig = configFromJson(config);\n\n    return new AuthenticationBackend(\n      id,\n      title,\n      description,\n      Immutable.List(defaultRoles),\n      formattedConfig,\n    );\n  }\n\n  static builder(): Builder {\n    // eslint-disable-next-line @typescript-eslint/no-use-before-define\n    return new Builder();\n  }\n}\n\ntype InternalBuilderState = Immutable.Map;\n\nclass Builder {\n  value: InternalBuilderState;\n\n  constructor(value: InternalBuilderState = Immutable.Map()) {\n    this.value = value;\n  }\n\n  id(value: $PropertyType): Builder {\n    return new Builder(this.value.set('id', value));\n  }\n\n  title(value: $PropertyType): Builder {\n    return new Builder(this.value.set('title', value));\n  }\n\n  description(value: $PropertyType): Builder {\n    return new Builder(this.value.set('description', value));\n  }\n\n  defaultRoles(value: $PropertyType): Builder {\n    return new Builder(this.value.set('defaultRoles', value));\n  }\n\n  config(value: $PropertyType): Builder {\n    return new Builder(this.value.set('config', value));\n  }\n\n  build(): AuthenticationBackend {\n    const {\n      id,\n      title,\n      description,\n      defaultRoles,\n      config,\n    } = this.value.toObject();\n\n    return new AuthenticationBackend(\n      id,\n      title,\n      description,\n      defaultRoles,\n      config,\n    );\n  }\n}\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\nimport * as Immutable from 'immutable';\nimport { $PropertyType } from 'utility-types/dist/utility-types';\n\nimport AuthenticationBackend from 'logic/authentication/AuthenticationBackend';\nimport type { Store } from 'stores/StoreTypes';\nimport { qualifyUrl } from 'util/URLUtils';\nimport fetch, { Builder } from 'logic/rest/FetchProvider';\nimport { singletonStore } from 'views/logic/singleton';\nimport AuthenticationActions from 'actions/authentication/AuthenticationActions';\nimport PaginationURL from 'util/PaginationURL';\nimport type {\n  AuthenticationBackendCreate,\n  AuthenticationBackendUpdate,\n  ConnectionTestPayload,\n  ConnectionTestResult,\n  LoadActiveResponse,\n  LoadResponse,\n  LoginTestPayload,\n  LoginTestResult,\n  PaginatedBackends,\n} from 'actions/authentication/AuthenticationActions';\nimport type { PaginatedUsers } from 'actions/users/UsersActions';\nimport type { PaginatedResponseType, Pagination } from 'stores/PaginationTypes';\nimport type { AuthenticationBackendJSON } from 'logic/authentication/AuthenticationBackend';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport UserOverview, { UserOverviewJSON } from 'logic/users/UserOverview';\n\ntype PaginatedBackendsResponse = PaginatedResponseType & {\n  context: {\n    active_backend: AuthenticationBackendJSON | null | undefined,\n  },\n  backends: Array,\n};\n\ntype PaginatedUsersResponse = PaginatedResponseType & {\n  users: Array,\n};\n\nconst AuthenticationStore: Store<{ authenticators: any }> = singletonStore(\n  'Authentication',\n  () => Reflux.createStore({\n    listenables: [AuthenticationActions],\n\n    getInitialState() {\n      return {\n        authenticators: null,\n      };\n    },\n\n    create(authBackend: AuthenticationBackendCreate): Promise {\n      const url = qualifyUrl(ApiRoutes.AuthenticationController.create().url);\n      const promise = fetch('POST', url, authBackend).then((result) => (result ? {\n        backend: AuthenticationBackend.fromJSON(result.backend),\n      } : null));\n      AuthenticationActions.create.promise(promise);\n\n      return promise;\n    },\n\n    load(backendId: string): Promise {\n      const url = qualifyUrl(ApiRoutes.AuthenticationController.load(encodeURIComponent(backendId)).url);\n      const promise = fetch('GET', url).then((result) => (result ? {\n        backend: AuthenticationBackend.fromJSON(result.backend),\n      } : null));\n\n      AuthenticationActions.load.promise(promise);\n\n      return promise;\n    },\n\n    loadActive(): Promise {\n      const url = qualifyUrl(ApiRoutes.AuthenticationController.loadActive().url);\n      const promise = fetch('GET', url).then((result) => (result ? {\n        backend: result.backend ? AuthenticationBackend.fromJSON(result.backend) : null,\n        context: { backendsTotal: result.context.backends_total },\n      } : null));\n\n      AuthenticationActions.loadActive.promise(promise);\n\n      return promise;\n    },\n\n    update(backendId: null | undefined | $PropertyType, payload: AuthenticationBackendUpdate): Promise {\n      const url = qualifyUrl(ApiRoutes.AuthenticationController.update(backendId).url);\n      const promise = fetch('PUT', url, payload).then((result) => (result ? {\n        backend: AuthenticationBackend.fromJSON(result.backend),\n      } : null));\n\n      AuthenticationActions.update.promise(promise);\n\n      return promise;\n    },\n\n    delete(backendId: null | undefined | $PropertyType): Promise {\n      const url = qualifyUrl(ApiRoutes.AuthenticationController.delete(backendId).url);\n      const promise = fetch('DELETE', url);\n      AuthenticationActions.delete.promise(promise);\n\n      return promise;\n    },\n\n    testConnection(payload: ConnectionTestPayload): Promise {\n      const url = qualifyUrl(ApiRoutes.AuthenticationController.testConnection().url);\n      const promise = fetch('POST', url, payload);\n      AuthenticationActions.testConnection.promise(promise);\n\n      return promise;\n    },\n\n    testLogin(payload: LoginTestPayload): Promise {\n      const url = qualifyUrl(ApiRoutes.AuthenticationController.testLogin().url);\n      const promise = fetch('POST', url, payload);\n      AuthenticationActions.testLogin.promise(promise);\n\n      return promise;\n    },\n\n    setActiveBackend(backendId: null | undefined | $PropertyType): Promise {\n      const url = qualifyUrl(ApiRoutes.AuthenticationController.updateConfiguration().url);\n      const promise = fetch('POST', url, { active_backend: backendId });\n      AuthenticationActions.setActiveBackend.promise(promise);\n\n      return promise;\n    },\n\n    loadBackendsPaginated({ page, perPage, query }: Pagination): Promise {\n      const url = PaginationURL(ApiRoutes.AuthenticationController.servicesPaginated().url, page, perPage, query);\n      const promise = fetch('GET', qualifyUrl(url))\n        .then((response: PaginatedBackendsResponse) => ({\n          context: {\n            activeBackend: response.context.active_backend,\n          },\n          list: Immutable.List(response.backends.map((backend) => AuthenticationBackend.fromJSON(backend))),\n          pagination: {\n            page: response.page,\n            perPage: response.per_page,\n            query: response.query,\n            count: response.count,\n            total: response.total,\n          },\n        }));\n\n      AuthenticationActions.loadBackendsPaginated.promise(promise);\n\n      return promise;\n    },\n\n    loadUsersPaginated(authBackendId, { page, perPage, query }: Pagination): Promise {\n      const url = PaginationURL(ApiRoutes.AuthenticationController.loadUsersPaginated(authBackendId).url, page, perPage, query);\n\n      const promise = fetch('GET', qualifyUrl(url))\n        .then((response: PaginatedUsersResponse) => ({\n          list: Immutable.List(response.users.map((user) => UserOverview.fromJSON(user))),\n          pagination: {\n            page: response.page,\n            perPage: response.per_page,\n            query: response.query,\n            count: response.count,\n            total: response.total,\n          },\n        }));\n\n      AuthenticationActions.loadUsersPaginated.promise(promise);\n\n      return promise;\n    },\n\n    loadActiveBackendType(): Promise {\n      const url = qualifyUrl(ApiRoutes.AuthenticationController.loadActiveBackendType().url);\n\n      // no authentication required\n      const promise = new Builder('GET', url)\n        .build()\n        .then((response) => response.json())\n        .then((result: { backend: string | undefined }) => {\n          return result.backend;\n        });\n\n      AuthenticationActions.loadActiveBackendType.promise(promise);\n\n      return promise;\n    },\n  }),\n);\n\nexport { AuthenticationActions, AuthenticationStore };\n\nexport default AuthenticationStore;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nconst LookupTableDataAdaptersActions = Reflux.createActions({\n  searchPaginated: { asyncResult: true },\n  reloadPage: { asyncResult: true },\n  get: { asyncResult: true },\n  create: { asyncResult: true },\n  delete: { asyncResult: true },\n  update: { asyncResult: true },\n  getTypes: { asyncResult: true },\n  lookup: { asyncResult: true },\n  validate: { asyncResult: true },\n});\n\nexport default LookupTableDataAdaptersActions;\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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\nexports.dash = {\n    valType: 'string',\n    // string type usually doesn't take values... this one should really be\n    // a special type or at least a special coercion function, from the GUI\n    // you only get these values but elsewhere the user can supply a list of\n    // dash lengths in px, and it will be honored\n    values: ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'],\n    dflt: 'solid',\n    role: 'style',\n    editType: 'style',\n    description: [\n        'Sets the dash style of lines. Set to a dash type string',\n        '(*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*)',\n        'or a dash length list in px (eg *5px,10px,2px,2px*).'\n    ].join(' ')\n};\n","module.exports = fromRotationTranslation;\n\n/**\n * Creates a matrix from a quaternion rotation and vector translation\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.translate(dest, vec);\n *     var quatMat = mat4.create();\n *     quat4.toMat4(quat, quatMat);\n *     mat4.multiply(dest, quatMat);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {vec3} v Translation vector\n * @returns {mat4} out\n */\nfunction fromRotationTranslation(out, q, v) {\n    // Quaternion math\n    var x = q[0], y = q[1], z = q[2], w = q[3],\n        x2 = x + x,\n        y2 = y + y,\n        z2 = z + z,\n\n        xx = x * x2,\n        xy = x * y2,\n        xz = x * z2,\n        yy = y * y2,\n        yz = y * z2,\n        zz = z * z2,\n        wx = w * x2,\n        wy = w * y2,\n        wz = w * z2;\n\n    out[0] = 1 - (yy + zz);\n    out[1] = xy + wz;\n    out[2] = xz - wy;\n    out[3] = 0;\n    out[4] = xy - wz;\n    out[5] = 1 - (xx + zz);\n    out[6] = yz + wx;\n    out[7] = 0;\n    out[8] = xz + wy;\n    out[9] = yz - wx;\n    out[10] = 1 - (xx + yy);\n    out[11] = 0;\n    out[12] = v[0];\n    out[13] = v[1];\n    out[14] = v[2];\n    out[15] = 1;\n    \n    return out;\n};","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport * as URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport fetch from 'logic/rest/FetchProvider';\n\nconst JournalStore = Reflux.createStore({\n  sourceUrl: (nodeId) => `/cluster/${nodeId}/journal`,\n\n  get(nodeId) {\n    const promise = fetch('GET', URLUtils.qualifyUrl(this.sourceUrl(nodeId)));\n\n    promise.catch((error) => {\n      UserNotification.error(`Getting journal information on node ${nodeId} failed: ${error}`, 'Could not get journal information');\n    });\n\n    return promise;\n  },\n});\n\nexport default JournalStore;\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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\n/** Filter out object items with visible !== true\n *  insider array container.\n *\n *  @param {array of objects} container\n *  @return {array of objects} of length <= container\n *\n */\nmodule.exports = function filterVisible(container) {\n    var filterFn = isCalcData(container) ? calcDataFilter : baseFilter;\n    var out = [];\n\n    for(var i = 0; i < container.length; i++) {\n        var item = container[i];\n        if(filterFn(item)) out.push(item);\n    }\n\n    return out;\n};\n\nfunction baseFilter(item) {\n    return item.visible === true;\n}\n\nfunction calcDataFilter(item) {\n    var trace = item[0].trace;\n    return trace.visible === true && trace._length !== 0;\n}\n\nfunction isCalcData(cont) {\n    return (\n        Array.isArray(cont) &&\n        Array.isArray(cont[0]) &&\n        cont[0][0] &&\n        cont[0][0].trace\n    );\n}\n","module.exports = function() {\n\tthrow new Error(\"define cannot be used indirect\");\n};\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nconst ServerAvailabilityActions = Reflux.createActions([\n  'reportError',\n  'reportSuccess',\n]);\n\nexport default ServerAvailabilityActions;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nexport default class ValueRefHelper {\n  static VALUE_REF_VALUE_FIELD = '@value';\n\n  static VALUE_REF_TYPE_FIELD = '@type';\n\n  static VALUE_REF_PARAMETER_VALUE = 'parameter';\n\n  static dataIsValueRef(data) {\n    if (!data) {\n      return false;\n    }\n\n    if (typeof data.has === 'function') {\n      return data.size === 2 && data.has(ValueRefHelper.VALUE_REF_TYPE_FIELD) && data.has(ValueRefHelper.VALUE_REF_VALUE_FIELD);\n    }\n\n    const keys = Object.keys(data);\n\n    return keys.length === 2 && keys.includes(ValueRefHelper.VALUE_REF_TYPE_FIELD)\n      && keys.includes(ValueRefHelper.VALUE_REF_VALUE_FIELD);\n  }\n\n  static dataValueIsParameter(data) {\n    if (!data) {\n      return false;\n    }\n\n    if (typeof data.get === 'function') {\n      return ValueRefHelper.dataIsValueRef(data) && data.get(ValueRefHelper.VALUE_REF_TYPE_FIELD) === ValueRefHelper.VALUE_REF_PARAMETER_VALUE;\n    }\n\n    return ValueRefHelper.dataIsValueRef(data) && data[ValueRefHelper.VALUE_REF_TYPE_FIELD] === ValueRefHelper.VALUE_REF_PARAMETER_VALUE;\n  }\n\n  static createValueRef(type, value) {\n    return { [this.VALUE_REF_TYPE_FIELD]: type, [this.VALUE_REF_VALUE_FIELD]: value };\n  }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nvar PluginStore = /*#__PURE__*/function () {\n  function PluginStore() {\n    _classCallCheck(this, PluginStore);\n  }\n\n  _createClass(PluginStore, null, [{\n    key: \"register\",\n    value: function register(plugin) {\n      if (!window.plugins) {\n        window.plugins = [];\n      }\n\n      window.plugins.push(plugin);\n    }\n  }, {\n    key: \"unregister\",\n    value: function unregister(plugin) {\n      if (!window.plugins) {\n        return;\n      }\n\n      window.plugins.forEach(function (item, idx) {\n        if (item.metadata && plugin.metadata && item.metadata.name === plugin.metadata.name) {\n          window.plugins.splice(idx, 1);\n        }\n      });\n    }\n  }, {\n    key: \"get\",\n    value: function get() {\n      if (!window.plugins) {\n        window.plugins = [];\n      }\n\n      return window.plugins;\n    }\n  }, {\n    key: \"exports\",\n    value: function exports(entity) {\n      return [].concat.apply([], this.get().map(function (plugin) {\n        return plugin.exports && plugin.exports[entity] ? plugin.exports[entity] : [];\n      }));\n    }\n  }]);\n\n  return PluginStore;\n}();\n\nvar _default = PluginStore;\nexports[\"default\"] = _default;\nmodule.exports = exports.default;","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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 Registry = require('../registry');\n\n/**\n * localize: translate a string for the current locale\n *\n * @param {object} gd: the graphDiv for context\n *  gd._context.locale determines the language (& optional region/country)\n *  the dictionary for each locale may either be supplied in\n *  gd._context.locales or globally via Plotly.register\n * @param {string} s: the string to translate\n */\nmodule.exports = function localize(gd, s) {\n    var locale = gd._context.locale;\n\n    /*\n     * Priority of lookup:\n     *     contextDicts[locale],\n     *     registeredDicts[locale],\n     *     contextDicts[baseLocale], (if baseLocale is distinct)\n     *     registeredDicts[baseLocale]\n     * Return the first translation we find.\n     * This way if you have a regionalization you are allowed to specify\n     * only what's different from the base locale, everything else will\n     * fall back on the base.\n     */\n    for(var i = 0; i < 2; i++) {\n        var locales = gd._context.locales;\n        for(var j = 0; j < 2; j++) {\n            var dict = (locales[locale] || {}).dictionary;\n            if(dict) {\n                var out = dict[s];\n                if(out) return out;\n            }\n            locales = Registry.localeRegistry;\n        }\n\n        var baseLocale = locale.split('-')[0];\n        if(baseLocale === locale) break;\n        locale = baseLocale;\n    }\n\n    return s;\n};\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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 Lib = require('../../lib');\n\n\nmodule.exports = function hasColorbar(container) {\n    return Lib.isPlainObject(container.colorbar);\n};\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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 isNumeric = require('fast-isnumeric');\n\nvar Lib = require('../../lib');\nvar hasColorbar = require('../colorbar/has_colorbar');\nvar colorbarDefaults = require('../colorbar/defaults');\n\nvar isValidScale = require('./scales').isValid;\nvar traceIs = require('../../registry').traceIs;\n\nfunction npMaybe(parentCont, prefix) {\n    var containerStr = prefix.slice(0, prefix.length - 1);\n    return prefix ?\n        Lib.nestedProperty(parentCont, containerStr).get() || {} :\n        parentCont;\n}\n\n/**\n * Colorscale / colorbar default handler\n *\n * @param {object} parentContIn : user (input) parent container (e.g. trace or layout coloraxis object)\n * @param {object} parentContOut : full parent container\n * @param {object} layout : (full) layout object\n * @param {fn} coerce : Lib.coerce wrapper\n * @param {object} opts :\n * - prefix {string} : attr string prefix to colorscale container from parent root\n * - cLetter {string} : 'c or 'z' color letter\n */\nmodule.exports = function colorScaleDefaults(parentContIn, parentContOut, layout, coerce, opts) {\n    var prefix = opts.prefix;\n    var cLetter = opts.cLetter;\n    var inTrace = '_module' in parentContOut;\n    var containerIn = npMaybe(parentContIn, prefix);\n    var containerOut = npMaybe(parentContOut, prefix);\n    var template = npMaybe(parentContOut._template || {}, prefix) || {};\n\n    // colorScaleDefaults wrapper called if-ever we need to reset the colorscale\n    // attributes for containers that were linked to invalid color axes\n    var thisFn = function() {\n        delete parentContIn.coloraxis;\n        delete parentContOut.coloraxis;\n        return colorScaleDefaults(parentContIn, parentContOut, layout, coerce, opts);\n    };\n\n    if(inTrace) {\n        var colorAxes = layout._colorAxes || {};\n        var colorAx = coerce(prefix + 'coloraxis');\n\n        if(colorAx) {\n            var colorbarVisuals = (\n                traceIs(parentContOut, 'contour') &&\n                Lib.nestedProperty(parentContOut, 'contours.coloring').get()\n            ) || 'heatmap';\n\n            var stash = colorAxes[colorAx];\n\n            if(stash) {\n                stash[2].push(thisFn);\n\n                if(stash[0] !== colorbarVisuals) {\n                    stash[0] = false;\n                    Lib.warn([\n                        'Ignoring coloraxis:', colorAx, 'setting',\n                        'as it is linked to incompatible colorscales.'\n                    ].join(' '));\n                }\n            } else {\n                // stash:\n                // - colorbar visual 'type'\n                // - colorbar options to help in Colorbar.draw\n                // - list of colorScaleDefaults wrapper functions\n                colorAxes[colorAx] = [colorbarVisuals, parentContOut, [thisFn]];\n            }\n            return;\n        }\n    }\n\n    var minIn = containerIn[cLetter + 'min'];\n    var maxIn = containerIn[cLetter + 'max'];\n    var validMinMax = isNumeric(minIn) && isNumeric(maxIn) && (minIn < maxIn);\n    var auto = coerce(prefix + cLetter + 'auto', !validMinMax);\n\n    if(auto) {\n        coerce(prefix + cLetter + 'mid');\n    } else {\n        coerce(prefix + cLetter + 'min');\n        coerce(prefix + cLetter + 'max');\n    }\n\n    // handles both the trace case (autocolorscale is false by default) and\n    // the marker and marker.line case (autocolorscale is true by default)\n    var sclIn = containerIn.colorscale;\n    var sclTemplate = template.colorscale;\n    var autoColorscaleDflt;\n    if(sclIn !== undefined) autoColorscaleDflt = !isValidScale(sclIn);\n    if(sclTemplate !== undefined) autoColorscaleDflt = !isValidScale(sclTemplate);\n    coerce(prefix + 'autocolorscale', autoColorscaleDflt);\n\n    coerce(prefix + 'colorscale');\n    coerce(prefix + 'reversescale');\n\n    if(prefix !== 'marker.line.') {\n        // handles both the trace case where the dflt is listed in attributes and\n        // the marker case where the dflt is determined by hasColorbar\n        var showScaleDflt;\n        if(prefix && inTrace) showScaleDflt = hasColorbar(containerIn);\n\n        var showScale = coerce(prefix + 'showscale', showScaleDflt);\n        if(showScale) {\n            if(prefix && template) containerOut._template = template;\n            colorbarDefaults(containerIn, containerOut, layout);\n        }\n    }\n};\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport { qualifyUrl } from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\nimport ActionsProvider from 'injection/ActionsProvider';\n\nexport type IndexTimeAndTotalStats = {\n  total: number,\n  time_seconds: number,\n};\n\nexport type IndexShardRouting = {\n  id: number,\n  state: string,\n  active: boolean,\n  primary: boolean,\n  node_id: string,\n  node_name: string,\n  node_hostname: string,\n  relocating_to: string | null,\n};\n\nexport type IndexInfo = {\n  primary_shards: {\n    flush: IndexTimeAndTotalStats,\n    get: IndexTimeAndTotalStats,\n    index: IndexTimeAndTotalStats,\n    merge: IndexTimeAndTotalStats,\n    refresh: IndexTimeAndTotalStats,\n    search_query: IndexTimeAndTotalStats,\n    search_fetch: IndexTimeAndTotalStats,\n    open_search_contexts: number,\n    store_size_bytes: number,\n    segments: number,\n    documents: {\n      count: number,\n      deleted: number,\n    },\n  },\n  all_shards: {\n    flush: IndexTimeAndTotalStats,\n    get: IndexTimeAndTotalStats,\n    index: IndexTimeAndTotalStats,\n    merge: IndexTimeAndTotalStats,\n    refresh: IndexTimeAndTotalStats,\n    search_query: IndexTimeAndTotalStats,\n    search_fetch: IndexTimeAndTotalStats,\n    open_search_contexts: number,\n    store_size_bytes: number,\n    segments: number,\n    documents: {\n      count: number,\n      deleted: number,\n    },\n  },\n  routing: Array,\n  reopened: boolean,\n};\n\nexport type Indices = {\n  [key: string]: IndexInfo,\n};\ntype IndicesListResponse = {\n  all: {\n    indices: IndexInfo,\n  },\n  closed: {\n    indices: IndexInfo,\n  },\n};\n\nconst IndicesActions = ActionsProvider.getActions('Indices');\n\nconst IndicesStore = Reflux.createStore({\n  listenables: [IndicesActions],\n  indices: undefined,\n  closedIndices: undefined,\n  registrations: {},\n\n  getInitialState() {\n    return { indices: this.indices, closedIndices: this.closedIndices };\n  },\n\n  list(indexSetId: string) {\n    const urlList = qualifyUrl(ApiRoutes.IndicesApiController.list(indexSetId).url);\n    const promise = fetch('GET', urlList).then((response: IndicesListResponse) => {\n      this.indices = response.all.indices;\n      this.closedIndices = response.closed.indices;\n      this.trigger({ indices: this.indices, closedIndices: this.closedIndices });\n\n      return { indices: this.indices, closedIndices: this.closedIndices };\n    });\n\n    IndicesActions.list.promise(promise);\n  },\n\n  listAll() {\n    const urlList = qualifyUrl(ApiRoutes.IndicesApiController.listAll().url);\n    const promise = fetch('GET', urlList).then((response: IndicesListResponse) => {\n      this.indices = response.all.indices;\n      this.closedIndices = response.closed.indices;\n      this.trigger({ indices: this.indices, closedIndices: this.closedIndices });\n\n      return { indices: this.indices, closedIndices: this.closedIndices };\n    });\n\n    IndicesActions.listAll.promise(promise);\n  },\n\n  multiple() {\n    const indexNames = Object.keys(this.registrations);\n\n    if (indexNames.length <= 0) {\n      return;\n    }\n\n    const urlList = qualifyUrl(ApiRoutes.IndicesApiController.multiple().url);\n    const request = { indices: indexNames };\n    const promise = fetch('POST', urlList, request).then((response: Indices) => {\n      this.indices = { ...this.indices, ...response };\n      this.trigger({ indices: this.indices, closedIndices: this.closedIndices });\n\n      return { indices: this.indices, closedIndices: this.closedIndices };\n    });\n\n    IndicesActions.multiple.promise(promise);\n  },\n  close(indexName: string) {\n    const url = qualifyUrl(ApiRoutes.IndicesApiController.close(indexName).url);\n    const promise = fetch('POST', url);\n\n    IndicesActions.close.promise(promise);\n  },\n  delete(indexName: string) {\n    const url = qualifyUrl(ApiRoutes.IndicesApiController.delete(indexName).url);\n    const promise = fetch('DELETE', url);\n\n    IndicesActions.delete.promise(promise);\n  },\n  reopen(indexName: string) {\n    const url = qualifyUrl(ApiRoutes.IndicesApiController.reopen(indexName).url);\n    const promise = fetch('POST', url);\n\n    IndicesActions.reopen.promise(promise);\n  },\n  subscribe(indexName: string) {\n    this.registrations[indexName] = this.registrations[indexName] ? this.registrations[indexName] + 1 : 1;\n  },\n  unsubscribe(indexName: string) {\n    this.registrations[indexName] = this.registrations[indexName] > 0 ? this.registrations[indexName] - 1 : 0;\n\n    if (this.registrations[indexName] === 0) {\n      delete this.registrations[indexName];\n    }\n  },\n});\n\nexport default IndicesStore;\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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 Lib = require('../../lib');\n\nvar layoutAttributes = require('./layout_attributes');\n\n\n/**\n * options: inherits outerTicks from axes.handleAxisDefaults\n */\nmodule.exports = function handleTickDefaults(containerIn, containerOut, coerce, options) {\n    var tickLen = Lib.coerce2(containerIn, containerOut, layoutAttributes, 'ticklen');\n    var tickWidth = Lib.coerce2(containerIn, containerOut, layoutAttributes, 'tickwidth');\n    var tickColor = Lib.coerce2(containerIn, containerOut, layoutAttributes, 'tickcolor', containerOut.color);\n    var showTicks = coerce('ticks', (options.outerTicks || tickLen || tickWidth || tickColor) ? 'outside' : '');\n\n    if(!showTicks) {\n        delete containerOut.ticklen;\n        delete containerOut.tickwidth;\n        delete containerOut.tickcolor;\n    }\n};\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh \n * @license  MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n *   === true    Use Uint8Array implementation (fastest)\n *   === false   Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n *   - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n *     See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n *   - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n *   - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n *     incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n  ? global.TYPED_ARRAY_SUPPORT\n  : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n  try {\n    var arr = new Uint8Array(1)\n    arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n    return arr.foo() === 42 && // typed array instances can be augmented\n        typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n        arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n  } catch (e) {\n    return false\n  }\n}\n\nfunction kMaxLength () {\n  return Buffer.TYPED_ARRAY_SUPPORT\n    ? 0x7fffffff\n    : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n  if (kMaxLength() < length) {\n    throw new RangeError('Invalid typed array length')\n  }\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Return an augmented `Uint8Array` instance, for best performance\n    that = new Uint8Array(length)\n    that.__proto__ = Buffer.prototype\n  } else {\n    // Fallback: Return an object instance of the Buffer class\n    if (that === null) {\n      that = new Buffer(length)\n    }\n    that.length = length\n  }\n\n  return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n  if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n    return new Buffer(arg, encodingOrOffset, length)\n  }\n\n  // Common case.\n  if (typeof arg === 'number') {\n    if (typeof encodingOrOffset === 'string') {\n      throw new Error(\n        'If encoding is specified then the first argument must be a string'\n      )\n    }\n    return allocUnsafe(this, arg)\n  }\n  return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n  arr.__proto__ = Buffer.prototype\n  return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n  if (typeof value === 'number') {\n    throw new TypeError('\"value\" argument must not be a number')\n  }\n\n  if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n    return fromArrayBuffer(that, value, encodingOrOffset, length)\n  }\n\n  if (typeof value === 'string') {\n    return fromString(that, value, encodingOrOffset)\n  }\n\n  return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n  return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n  Buffer.prototype.__proto__ = Uint8Array.prototype\n  Buffer.__proto__ = Uint8Array\n  if (typeof Symbol !== 'undefined' && Symbol.species &&\n      Buffer[Symbol.species] === Buffer) {\n    // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n    Object.defineProperty(Buffer, Symbol.species, {\n      value: null,\n      configurable: true\n    })\n  }\n}\n\nfunction assertSize (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('\"size\" argument must be a number')\n  } else if (size < 0) {\n    throw new RangeError('\"size\" argument must not be negative')\n  }\n}\n\nfunction alloc (that, size, fill, encoding) {\n  assertSize(size)\n  if (size <= 0) {\n    return createBuffer(that, size)\n  }\n  if (fill !== undefined) {\n    // Only pay attention to encoding if it's a string. This\n    // prevents accidentally sending in a number that would\n    // be interpretted as a start offset.\n    return typeof encoding === 'string'\n      ? createBuffer(that, size).fill(fill, encoding)\n      : createBuffer(that, size).fill(fill)\n  }\n  return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n  return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n  assertSize(size)\n  that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) {\n    for (var i = 0; i < size; ++i) {\n      that[i] = 0\n    }\n  }\n  return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n  return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n  return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n  if (typeof encoding !== 'string' || encoding === '') {\n    encoding = 'utf8'\n  }\n\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('\"encoding\" must be a valid string encoding')\n  }\n\n  var length = byteLength(string, encoding) | 0\n  that = createBuffer(that, length)\n\n  var actual = that.write(string, encoding)\n\n  if (actual !== length) {\n    // Writing a hex string, for example, that contains invalid characters will\n    // cause everything after the first invalid character to be ignored. (e.g.\n    // 'abxxcd' will be treated as 'ab')\n    that = that.slice(0, actual)\n  }\n\n  return that\n}\n\nfunction fromArrayLike (that, array) {\n  var length = array.length < 0 ? 0 : checked(array.length) | 0\n  that = createBuffer(that, length)\n  for (var i = 0; i < length; i += 1) {\n    that[i] = array[i] & 255\n  }\n  return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n  array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n  if (byteOffset < 0 || array.byteLength < byteOffset) {\n    throw new RangeError('\\'offset\\' is out of bounds')\n  }\n\n  if (array.byteLength < byteOffset + (length || 0)) {\n    throw new RangeError('\\'length\\' is out of bounds')\n  }\n\n  if (byteOffset === undefined && length === undefined) {\n    array = new Uint8Array(array)\n  } else if (length === undefined) {\n    array = new Uint8Array(array, byteOffset)\n  } else {\n    array = new Uint8Array(array, byteOffset, length)\n  }\n\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Return an augmented `Uint8Array` instance, for best performance\n    that = array\n    that.__proto__ = Buffer.prototype\n  } else {\n    // Fallback: Return an object instance of the Buffer class\n    that = fromArrayLike(that, array)\n  }\n  return that\n}\n\nfunction fromObject (that, obj) {\n  if (Buffer.isBuffer(obj)) {\n    var len = checked(obj.length) | 0\n    that = createBuffer(that, len)\n\n    if (that.length === 0) {\n      return that\n    }\n\n    obj.copy(that, 0, 0, len)\n    return that\n  }\n\n  if (obj) {\n    if ((typeof ArrayBuffer !== 'undefined' &&\n        obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n      if (typeof obj.length !== 'number' || isnan(obj.length)) {\n        return createBuffer(that, 0)\n      }\n      return fromArrayLike(that, obj)\n    }\n\n    if (obj.type === 'Buffer' && isArray(obj.data)) {\n      return fromArrayLike(that, obj.data)\n    }\n  }\n\n  throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n  // Note: cannot use `length < kMaxLength()` here because that fails when\n  // length is NaN (which is otherwise coerced to zero.)\n  if (length >= kMaxLength()) {\n    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n                         'size: 0x' + kMaxLength().toString(16) + ' bytes')\n  }\n  return length | 0\n}\n\nfunction SlowBuffer (length) {\n  if (+length != length) { // eslint-disable-line eqeqeq\n    length = 0\n  }\n  return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n  return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n    throw new TypeError('Arguments must be Buffers')\n  }\n\n  if (a === b) return 0\n\n  var x = a.length\n  var y = b.length\n\n  for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (a[i] !== b[i]) {\n      x = a[i]\n      y = b[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n  switch (String(encoding).toLowerCase()) {\n    case 'hex':\n    case 'utf8':\n    case 'utf-8':\n    case 'ascii':\n    case 'latin1':\n    case 'binary':\n    case 'base64':\n    case 'ucs2':\n    case 'ucs-2':\n    case 'utf16le':\n    case 'utf-16le':\n      return true\n    default:\n      return false\n  }\n}\n\nBuffer.concat = function concat (list, length) {\n  if (!isArray(list)) {\n    throw new TypeError('\"list\" argument must be an Array of Buffers')\n  }\n\n  if (list.length === 0) {\n    return Buffer.alloc(0)\n  }\n\n  var i\n  if (length === undefined) {\n    length = 0\n    for (i = 0; i < list.length; ++i) {\n      length += list[i].length\n    }\n  }\n\n  var buffer = Buffer.allocUnsafe(length)\n  var pos = 0\n  for (i = 0; i < list.length; ++i) {\n    var buf = list[i]\n    if (!Buffer.isBuffer(buf)) {\n      throw new TypeError('\"list\" argument must be an Array of Buffers')\n    }\n    buf.copy(buffer, pos)\n    pos += buf.length\n  }\n  return buffer\n}\n\nfunction byteLength (string, encoding) {\n  if (Buffer.isBuffer(string)) {\n    return string.length\n  }\n  if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n      (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n    return string.byteLength\n  }\n  if (typeof string !== 'string') {\n    string = '' + string\n  }\n\n  var len = string.length\n  if (len === 0) return 0\n\n  // Use a for loop to avoid recursion\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return len\n      case 'utf8':\n      case 'utf-8':\n      case undefined:\n        return utf8ToBytes(string).length\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return len * 2\n      case 'hex':\n        return len >>> 1\n      case 'base64':\n        return base64ToBytes(string).length\n      default:\n        if (loweredCase) return utf8ToBytes(string).length // assume utf8\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n  var loweredCase = false\n\n  // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n  // property of a typed array.\n\n  // This behaves neither like String nor Uint8Array in that we set start/end\n  // to their upper/lower bounds if the value passed is out of range.\n  // undefined is handled specially as per ECMA-262 6th Edition,\n  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n  if (start === undefined || start < 0) {\n    start = 0\n  }\n  // Return early if start > this.length. Done here to prevent potential uint32\n  // coercion fail below.\n  if (start > this.length) {\n    return ''\n  }\n\n  if (end === undefined || end > this.length) {\n    end = this.length\n  }\n\n  if (end <= 0) {\n    return ''\n  }\n\n  // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n  end >>>= 0\n  start >>>= 0\n\n  if (end <= start) {\n    return ''\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  while (true) {\n    switch (encoding) {\n      case 'hex':\n        return hexSlice(this, start, end)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Slice(this, start, end)\n\n      case 'ascii':\n        return asciiSlice(this, start, end)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Slice(this, start, end)\n\n      case 'base64':\n        return base64Slice(this, start, end)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return utf16leSlice(this, start, end)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = (encoding + '').toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n  var i = b[n]\n  b[n] = b[m]\n  b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n  var len = this.length\n  if (len % 2 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 16-bits')\n  }\n  for (var i = 0; i < len; i += 2) {\n    swap(this, i, i + 1)\n  }\n  return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n  var len = this.length\n  if (len % 4 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 32-bits')\n  }\n  for (var i = 0; i < len; i += 4) {\n    swap(this, i, i + 3)\n    swap(this, i + 1, i + 2)\n  }\n  return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n  var len = this.length\n  if (len % 8 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 64-bits')\n  }\n  for (var i = 0; i < len; i += 8) {\n    swap(this, i, i + 7)\n    swap(this, i + 1, i + 6)\n    swap(this, i + 2, i + 5)\n    swap(this, i + 3, i + 4)\n  }\n  return this\n}\n\nBuffer.prototype.toString = function toString () {\n  var length = this.length | 0\n  if (length === 0) return ''\n  if (arguments.length === 0) return utf8Slice(this, 0, length)\n  return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n  if (this === b) return true\n  return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n  var str = ''\n  var max = exports.INSPECT_MAX_BYTES\n  if (this.length > 0) {\n    str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n    if (this.length > max) str += ' ... '\n  }\n  return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n  if (!Buffer.isBuffer(target)) {\n    throw new TypeError('Argument must be a Buffer')\n  }\n\n  if (start === undefined) {\n    start = 0\n  }\n  if (end === undefined) {\n    end = target ? target.length : 0\n  }\n  if (thisStart === undefined) {\n    thisStart = 0\n  }\n  if (thisEnd === undefined) {\n    thisEnd = this.length\n  }\n\n  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n    throw new RangeError('out of range index')\n  }\n\n  if (thisStart >= thisEnd && start >= end) {\n    return 0\n  }\n  if (thisStart >= thisEnd) {\n    return -1\n  }\n  if (start >= end) {\n    return 1\n  }\n\n  start >>>= 0\n  end >>>= 0\n  thisStart >>>= 0\n  thisEnd >>>= 0\n\n  if (this === target) return 0\n\n  var x = thisEnd - thisStart\n  var y = end - start\n  var len = Math.min(x, y)\n\n  var thisCopy = this.slice(thisStart, thisEnd)\n  var targetCopy = target.slice(start, end)\n\n  for (var i = 0; i < len; ++i) {\n    if (thisCopy[i] !== targetCopy[i]) {\n      x = thisCopy[i]\n      y = targetCopy[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n  // Empty buffer means no match\n  if (buffer.length === 0) return -1\n\n  // Normalize byteOffset\n  if (typeof byteOffset === 'string') {\n    encoding = byteOffset\n    byteOffset = 0\n  } else if (byteOffset > 0x7fffffff) {\n    byteOffset = 0x7fffffff\n  } else if (byteOffset < -0x80000000) {\n    byteOffset = -0x80000000\n  }\n  byteOffset = +byteOffset  // Coerce to Number.\n  if (isNaN(byteOffset)) {\n    // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n    byteOffset = dir ? 0 : (buffer.length - 1)\n  }\n\n  // Normalize byteOffset: negative offsets start from the end of the buffer\n  if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n  if (byteOffset >= buffer.length) {\n    if (dir) return -1\n    else byteOffset = buffer.length - 1\n  } else if (byteOffset < 0) {\n    if (dir) byteOffset = 0\n    else return -1\n  }\n\n  // Normalize val\n  if (typeof val === 'string') {\n    val = Buffer.from(val, encoding)\n  }\n\n  // Finally, search either indexOf (if dir is true) or lastIndexOf\n  if (Buffer.isBuffer(val)) {\n    // Special case: looking for empty string/buffer always fails\n    if (val.length === 0) {\n      return -1\n    }\n    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n  } else if (typeof val === 'number') {\n    val = val & 0xFF // Search for a byte value [0-255]\n    if (Buffer.TYPED_ARRAY_SUPPORT &&\n        typeof Uint8Array.prototype.indexOf === 'function') {\n      if (dir) {\n        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n      } else {\n        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n      }\n    }\n    return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n  }\n\n  throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n  var indexSize = 1\n  var arrLength = arr.length\n  var valLength = val.length\n\n  if (encoding !== undefined) {\n    encoding = String(encoding).toLowerCase()\n    if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n        encoding === 'utf16le' || encoding === 'utf-16le') {\n      if (arr.length < 2 || val.length < 2) {\n        return -1\n      }\n      indexSize = 2\n      arrLength /= 2\n      valLength /= 2\n      byteOffset /= 2\n    }\n  }\n\n  function read (buf, i) {\n    if (indexSize === 1) {\n      return buf[i]\n    } else {\n      return buf.readUInt16BE(i * indexSize)\n    }\n  }\n\n  var i\n  if (dir) {\n    var foundIndex = -1\n    for (i = byteOffset; i < arrLength; i++) {\n      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n        if (foundIndex === -1) foundIndex = i\n        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n      } else {\n        if (foundIndex !== -1) i -= i - foundIndex\n        foundIndex = -1\n      }\n    }\n  } else {\n    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n    for (i = byteOffset; i >= 0; i--) {\n      var found = true\n      for (var j = 0; j < valLength; j++) {\n        if (read(arr, i + j) !== read(val, j)) {\n          found = false\n          break\n        }\n      }\n      if (found) return i\n    }\n  }\n\n  return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n  return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n  offset = Number(offset) || 0\n  var remaining = buf.length - offset\n  if (!length) {\n    length = remaining\n  } else {\n    length = Number(length)\n    if (length > remaining) {\n      length = remaining\n    }\n  }\n\n  // must be an even number of digits\n  var strLen = string.length\n  if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n  if (length > strLen / 2) {\n    length = strLen / 2\n  }\n  for (var i = 0; i < length; ++i) {\n    var parsed = parseInt(string.substr(i * 2, 2), 16)\n    if (isNaN(parsed)) return i\n    buf[offset + i] = parsed\n  }\n  return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n  return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n  return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n  return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n  // Buffer#write(string)\n  if (offset === undefined) {\n    encoding = 'utf8'\n    length = this.length\n    offset = 0\n  // Buffer#write(string, encoding)\n  } else if (length === undefined && typeof offset === 'string') {\n    encoding = offset\n    length = this.length\n    offset = 0\n  // Buffer#write(string, offset[, length][, encoding])\n  } else if (isFinite(offset)) {\n    offset = offset | 0\n    if (isFinite(length)) {\n      length = length | 0\n      if (encoding === undefined) encoding = 'utf8'\n    } else {\n      encoding = length\n      length = undefined\n    }\n  // legacy write(string, encoding, offset, length) - remove in v0.13\n  } else {\n    throw new Error(\n      'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n    )\n  }\n\n  var remaining = this.length - offset\n  if (length === undefined || length > remaining) length = remaining\n\n  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n    throw new RangeError('Attempt to write outside buffer bounds')\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'hex':\n        return hexWrite(this, string, offset, length)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Write(this, string, offset, length)\n\n      case 'ascii':\n        return asciiWrite(this, string, offset, length)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Write(this, string, offset, length)\n\n      case 'base64':\n        // Warning: maxLength not taken into account in base64Write\n        return base64Write(this, string, offset, length)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return ucs2Write(this, string, offset, length)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n  return {\n    type: 'Buffer',\n    data: Array.prototype.slice.call(this._arr || this, 0)\n  }\n}\n\nfunction base64Slice (buf, start, end) {\n  if (start === 0 && end === buf.length) {\n    return base64.fromByteArray(buf)\n  } else {\n    return base64.fromByteArray(buf.slice(start, end))\n  }\n}\n\nfunction utf8Slice (buf, start, end) {\n  end = Math.min(buf.length, end)\n  var res = []\n\n  var i = start\n  while (i < end) {\n    var firstByte = buf[i]\n    var codePoint = null\n    var bytesPerSequence = (firstByte > 0xEF) ? 4\n      : (firstByte > 0xDF) ? 3\n      : (firstByte > 0xBF) ? 2\n      : 1\n\n    if (i + bytesPerSequence <= end) {\n      var secondByte, thirdByte, fourthByte, tempCodePoint\n\n      switch (bytesPerSequence) {\n        case 1:\n          if (firstByte < 0x80) {\n            codePoint = firstByte\n          }\n          break\n        case 2:\n          secondByte = buf[i + 1]\n          if ((secondByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n            if (tempCodePoint > 0x7F) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 3:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 4:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          fourthByte = buf[i + 3]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n              codePoint = tempCodePoint\n            }\n          }\n      }\n    }\n\n    if (codePoint === null) {\n      // we did not generate a valid codePoint so insert a\n      // replacement char (U+FFFD) and advance only 1 byte\n      codePoint = 0xFFFD\n      bytesPerSequence = 1\n    } else if (codePoint > 0xFFFF) {\n      // encode to utf16 (surrogate pair dance)\n      codePoint -= 0x10000\n      res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n      codePoint = 0xDC00 | codePoint & 0x3FF\n    }\n\n    res.push(codePoint)\n    i += bytesPerSequence\n  }\n\n  return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n  var len = codePoints.length\n  if (len <= MAX_ARGUMENTS_LENGTH) {\n    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n  }\n\n  // Decode in chunks to avoid \"call stack size exceeded\".\n  var res = ''\n  var i = 0\n  while (i < len) {\n    res += String.fromCharCode.apply(\n      String,\n      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n    )\n  }\n  return res\n}\n\nfunction asciiSlice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i] & 0x7F)\n  }\n  return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i])\n  }\n  return ret\n}\n\nfunction hexSlice (buf, start, end) {\n  var len = buf.length\n\n  if (!start || start < 0) start = 0\n  if (!end || end < 0 || end > len) end = len\n\n  var out = ''\n  for (var i = start; i < end; ++i) {\n    out += toHex(buf[i])\n  }\n  return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n  var bytes = buf.slice(start, end)\n  var res = ''\n  for (var i = 0; i < bytes.length; i += 2) {\n    res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n  }\n  return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n  var len = this.length\n  start = ~~start\n  end = end === undefined ? len : ~~end\n\n  if (start < 0) {\n    start += len\n    if (start < 0) start = 0\n  } else if (start > len) {\n    start = len\n  }\n\n  if (end < 0) {\n    end += len\n    if (end < 0) end = 0\n  } else if (end > len) {\n    end = len\n  }\n\n  if (end < start) end = start\n\n  var newBuf\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    newBuf = this.subarray(start, end)\n    newBuf.__proto__ = Buffer.prototype\n  } else {\n    var sliceLen = end - start\n    newBuf = new Buffer(sliceLen, undefined)\n    for (var i = 0; i < sliceLen; ++i) {\n      newBuf[i] = this[i + start]\n    }\n  }\n\n  return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    checkOffset(offset, byteLength, this.length)\n  }\n\n  var val = this[offset + --byteLength]\n  var mul = 1\n  while (byteLength > 0 && (mul *= 0x100)) {\n    val += this[offset + --byteLength] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return ((this[offset]) |\n      (this[offset + 1] << 8) |\n      (this[offset + 2] << 16)) +\n      (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] * 0x1000000) +\n    ((this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var i = byteLength\n  var mul = 1\n  var val = this[offset + --i]\n  while (i > 0 && (mul *= 0x100)) {\n    val += this[offset + --i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  if (!(this[offset] & 0x80)) return (this[offset])\n  return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset] | (this[offset + 1] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset + 1] | (this[offset] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset]) |\n    (this[offset + 1] << 8) |\n    (this[offset + 2] << 16) |\n    (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] << 24) |\n    (this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n  if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n  if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var mul = 1\n  var i = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n    buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n      (littleEndian ? i : 1 - i) * 8\n  }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n  } else {\n    objectWriteUInt16(this, value, offset, true)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = (value & 0xff)\n  } else {\n    objectWriteUInt16(this, value, offset, false)\n  }\n  return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffffffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n    buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n  }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset + 3] = (value >>> 24)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 1] = (value >>> 8)\n    this[offset] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, true)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, false)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = 0\n  var mul = 1\n  var sub = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  var sub = 0\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  if (value < 0) value = 0xff + value + 1\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n  } else {\n    objectWriteUInt16(this, value, offset, true)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = (value & 0xff)\n  } else {\n    objectWriteUInt16(this, value, offset, false)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 3] = (value >>> 24)\n  } else {\n    objectWriteUInt32(this, value, offset, true)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (value < 0) value = 0xffffffff + value + 1\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, false)\n  }\n  return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n  if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 23, 4)\n  return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 52, 8)\n  return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n  if (!start) start = 0\n  if (!end && end !== 0) end = this.length\n  if (targetStart >= target.length) targetStart = target.length\n  if (!targetStart) targetStart = 0\n  if (end > 0 && end < start) end = start\n\n  // Copy 0 bytes; we're done\n  if (end === start) return 0\n  if (target.length === 0 || this.length === 0) return 0\n\n  // Fatal error conditions\n  if (targetStart < 0) {\n    throw new RangeError('targetStart out of bounds')\n  }\n  if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n  if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n  // Are we oob?\n  if (end > this.length) end = this.length\n  if (target.length - targetStart < end - start) {\n    end = target.length - targetStart + start\n  }\n\n  var len = end - start\n  var i\n\n  if (this === target && start < targetStart && targetStart < end) {\n    // descending copy from end\n    for (i = len - 1; i >= 0; --i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n    // ascending copy from start\n    for (i = 0; i < len; ++i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else {\n    Uint8Array.prototype.set.call(\n      target,\n      this.subarray(start, start + len),\n      targetStart\n    )\n  }\n\n  return len\n}\n\n// Usage:\n//    buffer.fill(number[, offset[, end]])\n//    buffer.fill(buffer[, offset[, end]])\n//    buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n  // Handle string cases:\n  if (typeof val === 'string') {\n    if (typeof start === 'string') {\n      encoding = start\n      start = 0\n      end = this.length\n    } else if (typeof end === 'string') {\n      encoding = end\n      end = this.length\n    }\n    if (val.length === 1) {\n      var code = val.charCodeAt(0)\n      if (code < 256) {\n        val = code\n      }\n    }\n    if (encoding !== undefined && typeof encoding !== 'string') {\n      throw new TypeError('encoding must be a string')\n    }\n    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n      throw new TypeError('Unknown encoding: ' + encoding)\n    }\n  } else if (typeof val === 'number') {\n    val = val & 255\n  }\n\n  // Invalid ranges are not set to a default, so can range check early.\n  if (start < 0 || this.length < start || this.length < end) {\n    throw new RangeError('Out of range index')\n  }\n\n  if (end <= start) {\n    return this\n  }\n\n  start = start >>> 0\n  end = end === undefined ? this.length : end >>> 0\n\n  if (!val) val = 0\n\n  var i\n  if (typeof val === 'number') {\n    for (i = start; i < end; ++i) {\n      this[i] = val\n    }\n  } else {\n    var bytes = Buffer.isBuffer(val)\n      ? val\n      : utf8ToBytes(new Buffer(val, encoding).toString())\n    var len = bytes.length\n    for (i = 0; i < end - start; ++i) {\n      this[i + start] = bytes[i % len]\n    }\n  }\n\n  return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n  str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n  // Node converts strings with length < 2 to ''\n  if (str.length < 2) return ''\n  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n  while (str.length % 4 !== 0) {\n    str = str + '='\n  }\n  return str\n}\n\nfunction stringtrim (str) {\n  if (str.trim) return str.trim()\n  return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n  if (n < 16) return '0' + n.toString(16)\n  return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n  units = units || Infinity\n  var codePoint\n  var length = string.length\n  var leadSurrogate = null\n  var bytes = []\n\n  for (var i = 0; i < length; ++i) {\n    codePoint = string.charCodeAt(i)\n\n    // is surrogate component\n    if (codePoint > 0xD7FF && codePoint < 0xE000) {\n      // last char was a lead\n      if (!leadSurrogate) {\n        // no lead yet\n        if (codePoint > 0xDBFF) {\n          // unexpected trail\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        } else if (i + 1 === length) {\n          // unpaired lead\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        }\n\n        // valid lead\n        leadSurrogate = codePoint\n\n        continue\n      }\n\n      // 2 leads in a row\n      if (codePoint < 0xDC00) {\n        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n        leadSurrogate = codePoint\n        continue\n      }\n\n      // valid surrogate pair\n      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n    } else if (leadSurrogate) {\n      // valid bmp char, but last char was a lead\n      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n    }\n\n    leadSurrogate = null\n\n    // encode utf8\n    if (codePoint < 0x80) {\n      if ((units -= 1) < 0) break\n      bytes.push(codePoint)\n    } else if (codePoint < 0x800) {\n      if ((units -= 2) < 0) break\n      bytes.push(\n        codePoint >> 0x6 | 0xC0,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x10000) {\n      if ((units -= 3) < 0) break\n      bytes.push(\n        codePoint >> 0xC | 0xE0,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x110000) {\n      if ((units -= 4) < 0) break\n      bytes.push(\n        codePoint >> 0x12 | 0xF0,\n        codePoint >> 0xC & 0x3F | 0x80,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else {\n      throw new Error('Invalid code point')\n    }\n  }\n\n  return bytes\n}\n\nfunction asciiToBytes (str) {\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    // Node's code seems to be doing this and not & 0x7F..\n    byteArray.push(str.charCodeAt(i) & 0xFF)\n  }\n  return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n  var c, hi, lo\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    if ((units -= 2) < 0) break\n\n    c = str.charCodeAt(i)\n    hi = c >> 8\n    lo = c % 256\n    byteArray.push(lo)\n    byteArray.push(hi)\n  }\n\n  return byteArray\n}\n\nfunction base64ToBytes (str) {\n  return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n  for (var i = 0; i < length; ++i) {\n    if ((i + offset >= dst.length) || (i >= src.length)) break\n    dst[i + offset] = src[i]\n  }\n  return i\n}\n\nfunction isnan (val) {\n  return val !== val // eslint-disable-line no-self-compare\n}\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport * as URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport { fetchPeriodically } from 'logic/rest/FetchProvider';\n\nconst SystemMessagesStore = Reflux.createStore({\n  listenables: [],\n\n  all(page) {\n    const url = URLUtils.qualifyUrl(ApiRoutes.SystemMessagesApiController.all(page).url);\n\n    return fetchPeriodically('GET', url);\n  },\n});\n\nexport default SystemMessagesStore;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport * as URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport fetch from 'logic/rest/FetchProvider';\n\nconst PluginsStore = Reflux.createStore({\n  sourceUrl: (nodeId) => `/cluster/${nodeId}/plugins`,\n\n  list(nodeId) {\n    const promise = fetch('GET', URLUtils.qualifyUrl(this.sourceUrl(nodeId)))\n      .then(\n        (response) => response.plugins,\n        (error) => UserNotification.error(`Getting plugins on node \"${nodeId}\" failed: ${error}`, 'Could not get plugins'),\n      );\n\n    return promise;\n  },\n});\n\nexport default PluginsStore;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport ActionsProvider from 'injection/ActionsProvider';\nimport UserNotification from 'util/UserNotification';\nimport * as URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\n\nconst AlarmCallbacksActions = ActionsProvider.getActions('AlarmCallbacks');\n\nconst AlarmCallbacksStore = Reflux.createStore({\n  listenables: [AlarmCallbacksActions],\n\n  list(streamId) {\n    const failCallback = (error) => UserNotification.error(`Fetching alert notifications failed with status: ${error.message}`,\n      'Could not retrieve alert notification');\n\n    const url = URLUtils.qualifyUrl(ApiRoutes.AlarmCallbacksApiController.list(streamId).url);\n    const promise = fetch('GET', url).then((response) => response.alarmcallbacks, failCallback);\n\n    AlarmCallbacksActions.list.promise(promise);\n  },\n  save(streamId, alarmCallback) {\n    const failCallback = (error) => {\n      const errorMessage = (error.additional && error.additional.status === 400 ? error.additional.body.message : error.message);\n\n      UserNotification.error(`Saving alert notification failed with status: ${errorMessage}`,\n        'Could not save alert notification');\n    };\n\n    const url = URLUtils.qualifyUrl(ApiRoutes.AlarmCallbacksApiController.create(streamId).url);\n\n    const promise = fetch('POST', url, alarmCallback);\n\n    promise.then(\n      () => UserNotification.success('Alert notification saved successfully'),\n      failCallback,\n    );\n\n    AlarmCallbacksActions.save.promise(promise);\n  },\n  delete(streamId, alarmCallbackId) {\n    const failCallback = (error) => UserNotification.error(`Removing alert notification failed with status: ${error.message}`,\n      'Could not remove alert notification');\n\n    const url = URLUtils.qualifyUrl(ApiRoutes.AlarmCallbacksApiController.delete(streamId, alarmCallbackId).url);\n\n    const promise = fetch('DELETE', url);\n\n    promise.then(\n      () => UserNotification.success('Alert notification deleted successfully'),\n      failCallback,\n    );\n\n    AlarmCallbacksActions.delete.promise(promise);\n  },\n  update(streamId, alarmCallbackId, deltas) {\n    const failCallback = (error) => {\n      const errorMessage = (error.additional && error.additional.status === 400 ? error.additional.body.message : error.message);\n\n      UserNotification.error(`Updating alert notification '${alarmCallbackId}' failed with status: ${errorMessage}`,\n        'Could not update alert notification');\n    };\n\n    const url = URLUtils.qualifyUrl(ApiRoutes.AlarmCallbacksApiController.update(streamId, alarmCallbackId).url);\n\n    const promise = fetch('PUT', url, deltas);\n\n    promise.then(\n      () => UserNotification.success('Alert notification updated successfully'),\n      failCallback,\n    );\n\n    AlarmCallbacksActions.update.promise(promise);\n  },\n});\n\nexport default AlarmCallbacksStore;\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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 isArray = Array.isArray;\n\n// IE9 fallbacks\n\nvar ab = (typeof ArrayBuffer === 'undefined' || !ArrayBuffer.isView) ?\n    {isView: function() { return false; }} :\n    ArrayBuffer;\n\nvar dv = (typeof DataView === 'undefined') ?\n    function() {} :\n    DataView;\n\nfunction isTypedArray(a) {\n    return ab.isView(a) && !(a instanceof dv);\n}\nexports.isTypedArray = isTypedArray;\n\nfunction isArrayOrTypedArray(a) {\n    return isArray(a) || isTypedArray(a);\n}\nexports.isArrayOrTypedArray = isArrayOrTypedArray;\n\n/*\n * Test whether an input object is 1D.\n *\n * Assumes we already know the object is an array.\n *\n * Looks only at the first element, if the dimensionality is\n * not consistent we won't figure that out here.\n */\nfunction isArray1D(a) {\n    return !isArrayOrTypedArray(a[0]);\n}\nexports.isArray1D = isArray1D;\n\n/*\n * Ensures an array has the right amount of storage space. If it doesn't\n * exist, it creates an array. If it does exist, it returns it if too\n * short or truncates it in-place.\n *\n * The goal is to just reuse memory to avoid a bit of excessive garbage\n * collection.\n */\nexports.ensureArray = function(out, n) {\n    // TODO: typed array support here? This is only used in\n    // traces/carpet/compute_control_points\n    if(!isArray(out)) out = [];\n\n    // If too long, truncate. (If too short, it will grow\n    // automatically so we don't care about that case)\n    out.length = n;\n\n    return out;\n};\n\n/*\n * TypedArray-compatible concatenation of n arrays\n * if all arrays are the same type it will preserve that type,\n * otherwise it falls back on Array.\n * Also tries to avoid copying, in case one array has zero length\n * But never mutates an existing array\n */\nexports.concat = function() {\n    var args = [];\n    var allArray = true;\n    var totalLen = 0;\n\n    var _constructor, arg0, i, argi, posi, leni, out, j;\n\n    for(i = 0; i < arguments.length; i++) {\n        argi = arguments[i];\n        leni = argi.length;\n        if(leni) {\n            if(arg0) args.push(argi);\n            else {\n                arg0 = argi;\n                posi = leni;\n            }\n\n            if(isArray(argi)) {\n                _constructor = false;\n            } else {\n                allArray = false;\n                if(!totalLen) {\n                    _constructor = argi.constructor;\n                } else if(_constructor !== argi.constructor) {\n                    // TODO: in principle we could upgrade here,\n                    // ie keep typed array but convert all to Float64Array?\n                    _constructor = false;\n                }\n            }\n\n            totalLen += leni;\n        }\n    }\n\n    if(!totalLen) return [];\n    if(!args.length) return arg0;\n\n    if(allArray) return arg0.concat.apply(arg0, args);\n    if(_constructor) {\n        // matching typed arrays\n        out = new _constructor(totalLen);\n        out.set(arg0);\n        for(i = 0; i < args.length; i++) {\n            argi = args[i];\n            out.set(argi, posi);\n            posi += argi.length;\n        }\n        return out;\n    }\n\n    // mismatched types or Array + typed\n    out = new Array(totalLen);\n    for(j = 0; j < arg0.length; j++) out[j] = arg0[j];\n    for(i = 0; i < args.length; i++) {\n        argi = args[i];\n        for(j = 0; j < argi.length; j++) out[posi + j] = argi[j];\n        posi += j;\n    }\n    return out;\n};\n\nexports.maxRowLength = function(z) {\n    return _rowLength(z, Math.max, 0);\n};\n\nexports.minRowLength = function(z) {\n    return _rowLength(z, Math.min, Infinity);\n};\n\nfunction _rowLength(z, fn, len0) {\n    if(isArrayOrTypedArray(z)) {\n        if(isArrayOrTypedArray(z[0])) {\n            var len = len0;\n            for(var i = 0; i < z.length; i++) {\n                len = fn(len, z[i].length);\n            }\n            return len;\n        } else {\n            return z.length;\n        }\n    }\n    return 0;\n}\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nclass CancellablePromise implements Promise {\n  private _isCanceled: boolean;\n\n  private _promise: Promise;\n\n  private constructor(promise: Promise, isCancelled = false) {\n    this._promise = promise;\n    this._isCanceled = isCancelled;\n  }\n\n  [Symbol.toStringTag]: string;\n\n  then(onfulfilled?: (value: T) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) {\n    return new CancellablePromise(this._promise.then(onfulfilled, onrejected), this._isCanceled);\n  }\n\n  catch(onrejected?: (reason: any) => TResult | PromiseLike) {\n    return new CancellablePromise(this._promise.catch(onrejected), this._isCanceled);\n  }\n\n  finally(onfinally?: () => void) {\n    return new CancellablePromise(this._promise.finally(onfinally), this._isCanceled);\n  }\n\n  static of(promise: Promise) {\n    return new CancellablePromise(promise);\n  }\n\n  public cancel() {\n    this._isCanceled = true;\n\n    return this;\n  }\n\n  public isCancelled() {\n    return this._isCanceled;\n  }\n}\n\nexport default CancellablePromise;\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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 Lib = require('../lib');\nvar extendFlat = Lib.extendFlat;\nvar isPlainObject = Lib.isPlainObject;\n\nvar traceOpts = {\n    valType: 'flaglist',\n    extras: ['none'],\n    flags: ['calc', 'clearAxisTypes', 'plot', 'style', 'markerSize', 'colorbars'],\n    description: [\n        'trace attributes should include an `editType` string matching this flaglist.',\n        '*calc* is the most extensive: a full `Plotly.plot` starting by clearing `gd.calcdata`',\n        'to force it to be regenerated',\n        '*clearAxisTypes* resets the types of the axes this trace is on, because new data could',\n        'cause the automatic axis type detection to change. Log type will not be cleared, as that',\n        'is never automatically chosen so must have been user-specified.',\n        '*plot* calls `Plotly.plot` but without first clearing `gd.calcdata`.',\n        '*style* only calls `module.style` (or module.editStyle) for all trace modules and redraws the legend.',\n        '*markerSize* is like *style*, but propagate axis-range changes due to scatter `marker.size`',\n        '*colorbars* only redraws colorbars.'\n    ].join(' ')\n};\n\nvar layoutOpts = {\n    valType: 'flaglist',\n    extras: ['none'],\n    flags: [\n        'calc', 'plot', 'legend', 'ticks', 'axrange',\n        'layoutstyle', 'modebar', 'camera', 'arraydraw', 'colorbars'\n    ],\n    description: [\n        'layout attributes should include an `editType` string matching this flaglist.',\n        '*calc* is the most extensive: a full `Plotly.plot` starting by clearing `gd.calcdata`',\n        'to force it to be regenerated',\n        '*plot* calls `Plotly.plot` but without first clearing `gd.calcdata`.',\n        '*legend* only redraws the legend.',\n        '*ticks* only redraws axis ticks, labels, and gridlines.',\n        '*axrange* minimal sequence when updating axis ranges.',\n        '*layoutstyle* reapplies global and SVG cartesian axis styles.',\n        '*modebar* just updates the modebar.',\n        '*camera* just updates the camera settings for gl3d scenes.',\n        '*arraydraw* allows component arrays to invoke the redraw routines just for the',\n        'component(s) that changed.',\n        '*colorbars* only redraws colorbars.'\n    ].join(' ')\n};\n\n// flags for inside restyle/relayout include a few extras\n// that shouldn't be used in attributes, to deal with certain\n// combinations and conditionals efficiently\nvar traceEditTypeFlags = traceOpts.flags.slice()\n    .concat(['fullReplot']);\n\nvar layoutEditTypeFlags = layoutOpts.flags.slice()\n    .concat('layoutReplot');\n\nmodule.exports = {\n    traces: traceOpts,\n    layout: layoutOpts,\n    /*\n     * default (all false) edit flags for restyle (traces)\n     * creates a new object each call, so the caller can mutate freely\n     */\n    traceFlags: function() { return falseObj(traceEditTypeFlags); },\n\n    /*\n     * default (all false) edit flags for relayout\n     * creates a new object each call, so the caller can mutate freely\n     */\n    layoutFlags: function() { return falseObj(layoutEditTypeFlags); },\n\n    /*\n     * update `flags` with the `editType` values found in `attr`\n     */\n    update: function(flags, attr) {\n        var editType = attr.editType;\n        if(editType && editType !== 'none') {\n            var editTypeParts = editType.split('+');\n            for(var i = 0; i < editTypeParts.length; i++) {\n                flags[editTypeParts[i]] = true;\n            }\n        }\n    },\n\n    overrideAll: overrideAll\n};\n\nfunction falseObj(keys) {\n    var out = {};\n    for(var i = 0; i < keys.length; i++) out[keys[i]] = false;\n    return out;\n}\n\n/**\n * For attributes that are largely copied from elsewhere into a plot type that doesn't\n * support partial redraws - overrides the editType field of all attributes in the object\n *\n * @param {object} attrs: the attributes to override. Will not be mutated.\n * @param {string} editTypeOverride: the new editType to use\n * @param {'nested'|'from-root'} overrideContainers:\n *   - 'nested' will override editType for nested containers but not the root.\n *   - 'from-root' will also override editType of the root container.\n *   Containers below the absolute top level (trace or layout root) DO need an\n *   editType even if they are not `valObject`s themselves (eg `scatter.marker`)\n *   to handle the case where you edit the whole container.\n *\n * @return {object} a new attributes object with `editType` modified as directed\n */\nfunction overrideAll(attrs, editTypeOverride, overrideContainers) {\n    var out = extendFlat({}, attrs);\n    for(var key in out) {\n        var attr = out[key];\n        if(isPlainObject(attr)) {\n            out[key] = overrideOne(attr, editTypeOverride, overrideContainers, key);\n        }\n    }\n    if(overrideContainers === 'from-root') out.editType = editTypeOverride;\n\n    return out;\n}\n\nfunction overrideOne(attr, editTypeOverride, overrideContainers, key) {\n    if(attr.valType) {\n        var out = extendFlat({}, attr);\n        out.editType = editTypeOverride;\n\n        if(Array.isArray(attr.items)) {\n            out.items = new Array(attr.items.length);\n            for(var i = 0; i < attr.items.length; i++) {\n                out.items[i] = overrideOne(attr.items[i], editTypeOverride, 'from-root');\n            }\n        }\n        return out;\n    } else {\n        // don't provide an editType for the _deprecated container\n        return overrideAll(attr, editTypeOverride,\n            (key.charAt(0) === '_') ? 'nested' : 'from-root');\n    }\n}\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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\n/**\n * This will be transferred over to gd and overridden by\n * config args to Plotly.plot.\n *\n * The defaults are the appropriate settings for plotly.js,\n * so we get the right experience without any config argument.\n *\n * N.B. the config options are not coerced using Lib.coerce so keys\n * like `valType` and `values` are only set for documentation purposes\n * at the moment.\n */\n\nvar configAttributes = {\n    staticPlot: {\n        valType: 'boolean',\n        dflt: false,\n        description: [\n            'Determines whether the graphs are interactive or not.',\n            'If *false*, no interactivity, for export or image generation.'\n        ].join(' ')\n    },\n\n    plotlyServerURL: {\n        valType: 'string',\n        dflt: '',\n        description: [\n            'When set it determines base URL for',\n            'the \\'Edit in Chart Studio\\' `showEditInChartStudio`/`showSendToCloud` mode bar button',\n            'and the showLink/sendData on-graph link.',\n            'To enable sending your data to Chart Studio Cloud, you need to',\n            'set both `plotlyServerURL` to \\'https://chart-studio.plotly.com\\' and',\n            'also set `showSendToCloud` to true.'\n        ].join(' ')\n    },\n\n    editable: {\n        valType: 'boolean',\n        dflt: false,\n        description: [\n            'Determines whether the graph is editable or not.',\n            'Sets all pieces of `edits`',\n            'unless a separate `edits` config item overrides individual parts.'\n        ].join(' ')\n    },\n    edits: {\n        annotationPosition: {\n            valType: 'boolean',\n            dflt: false,\n            description: [\n                'Determines if the main anchor of the annotation is editable.',\n                'The main anchor corresponds to the',\n                'text (if no arrow) or the arrow (which drags the whole thing leaving',\n                'the arrow length & direction unchanged).'\n            ].join(' ')\n        },\n        annotationTail: {\n            valType: 'boolean',\n            dflt: false,\n            description: [\n                'Has only an effect for annotations with arrows.',\n                'Enables changing the length and direction of the arrow.'\n            ].join(' ')\n        },\n        annotationText: {\n            valType: 'boolean',\n            dflt: false,\n            description: 'Enables editing annotation text.'\n        },\n        axisTitleText: {\n            valType: 'boolean',\n            dflt: false,\n            description: 'Enables editing axis title text.'\n        },\n        colorbarPosition: {\n            valType: 'boolean',\n            dflt: false,\n            description: 'Enables moving colorbars.'\n        },\n        colorbarTitleText: {\n            valType: 'boolean',\n            dflt: false,\n            description: 'Enables editing colorbar title text.'\n        },\n        legendPosition: {\n            valType: 'boolean',\n            dflt: false,\n            description: 'Enables moving the legend.'\n        },\n        legendText: {\n            valType: 'boolean',\n            dflt: false,\n            description: 'Enables editing the trace name fields from the legend'\n        },\n        shapePosition: {\n            valType: 'boolean',\n            dflt: false,\n            description: 'Enables moving shapes.'\n        },\n        titleText: {\n            valType: 'boolean',\n            dflt: false,\n            description: 'Enables editing the global layout title.'\n        }\n    },\n\n    autosizable: {\n        valType: 'boolean',\n        dflt: false,\n        description: [\n            'Determines whether the graphs are plotted with respect to',\n            'layout.autosize:true and infer its container size.'\n        ].join(' ')\n    },\n    responsive: {\n        valType: 'boolean',\n        dflt: false,\n        description: [\n            'Determines whether to change the layout size when window is resized.',\n            'In v2, this option will be removed and will always be true.'\n        ].join(' ')\n    },\n    fillFrame: {\n        valType: 'boolean',\n        dflt: false,\n        description: [\n            'When `layout.autosize` is turned on, determines whether the graph',\n            'fills the container (the default) or the screen (if set to *true*).'\n        ].join(' ')\n    },\n    frameMargins: {\n        valType: 'number',\n        dflt: 0,\n        min: 0,\n        max: 0.5,\n        description: [\n            'When `layout.autosize` is turned on, set the frame margins',\n            'in fraction of the graph size.'\n        ].join(' ')\n    },\n\n    scrollZoom: {\n        valType: 'flaglist',\n        flags: ['cartesian', 'gl3d', 'geo', 'mapbox'],\n        extras: [true, false],\n        dflt: 'gl3d+geo+mapbox',\n        description: [\n            'Determines whether mouse wheel or two-finger scroll zooms is enable.',\n            'Turned on by default for gl3d, geo and mapbox subplots',\n            '(as these subplot types do not have zoombox via pan),',\n            'but turned off by default for cartesian subplots.',\n            'Set `scrollZoom` to *false* to disable scrolling for all subplots.'\n        ].join(' ')\n    },\n    doubleClick: {\n        valType: 'enumerated',\n        values: [false, 'reset', 'autosize', 'reset+autosize'],\n        dflt: 'reset+autosize',\n        description: [\n            'Sets the double click interaction mode.',\n            'Has an effect only in cartesian plots.',\n            'If *false*, double click is disable.',\n            'If *reset*, double click resets the axis ranges to their initial values.',\n            'If *autosize*, double click set the axis ranges to their autorange values.',\n            'If *reset+autosize*, the odd double clicks resets the axis ranges',\n            'to their initial values and even double clicks set the axis ranges',\n            'to their autorange values.'\n        ].join(' ')\n    },\n    doubleClickDelay: {\n        valType: 'number',\n        dflt: 300,\n        min: 0,\n        description: [\n            'Sets the delay for registering a double-click in ms.',\n            'This is the time interval (in ms) between first mousedown and',\n            '2nd mouseup to constitute a double-click.',\n            'This setting propagates to all on-subplot double clicks',\n            '(except for geo and mapbox) and on-legend double clicks.'\n        ].join(' ')\n    },\n\n    showAxisDragHandles: {\n        valType: 'boolean',\n        dflt: true,\n        description: [\n            'Set to *false* to omit cartesian axis pan/zoom drag handles.'\n        ].join(' ')\n    },\n    showAxisRangeEntryBoxes: {\n        valType: 'boolean',\n        dflt: true,\n        description: [\n            'Set to *false* to omit direct range entry at the pan/zoom drag points,',\n            'note that `showAxisDragHandles` must be enabled to have an effect.'\n        ].join(' ')\n    },\n\n    showTips: {\n        valType: 'boolean',\n        dflt: true,\n        description: [\n            'Determines whether or not tips are shown while interacting',\n            'with the resulting graphs.'\n        ].join(' ')\n    },\n\n    showLink: {\n        valType: 'boolean',\n        dflt: false,\n        description: [\n            'Determines whether a link to Chart Studio Cloud is displayed',\n            'at the bottom right corner of resulting graphs.',\n            'Use with `sendData` and `linkText`.'\n        ].join(' ')\n    },\n    linkText: {\n        valType: 'string',\n        dflt: 'Edit chart',\n        noBlank: true,\n        description: [\n            'Sets the text appearing in the `showLink` link.'\n        ].join(' ')\n    },\n    sendData: {\n        valType: 'boolean',\n        dflt: true,\n        description: [\n            'If *showLink* is true, does it contain data',\n            'just link to a Chart Studio Cloud file?'\n        ].join(' ')\n    },\n    showSources: {\n        valType: 'any',\n        dflt: false,\n        description: [\n            'Adds a source-displaying function to show sources on',\n            'the resulting graphs.'\n        ].join(' ')\n    },\n\n    displayModeBar: {\n        valType: 'enumerated',\n        values: ['hover', true, false],\n        dflt: 'hover',\n        description: [\n            'Determines the mode bar display mode.',\n            'If *true*, the mode bar is always visible.',\n            'If *false*, the mode bar is always hidden.',\n            'If *hover*, the mode bar is visible while the mouse cursor',\n            'is on the graph container.'\n        ].join(' ')\n    },\n    showSendToCloud: {\n        valType: 'boolean',\n        dflt: false,\n        description: [\n            'Should we include a ModeBar button, labeled \"Edit in Chart Studio\",',\n            'that sends this chart to chart-studio.plotly.com (formerly plot.ly) or another plotly server',\n            'as specified by `plotlyServerURL` for editing, export, etc? Prior to version 1.43.0',\n            'this button was included by default, now it is opt-in using this flag.',\n            'Note that this button can (depending on `plotlyServerURL` being set) send your data',\n            'to an external server. However that server does not persist your data',\n            'until you arrive at the Chart Studio and explicitly click \"Save\".'\n        ].join(' ')\n    },\n    showEditInChartStudio: {\n        valType: 'boolean',\n        dflt: false,\n        description: [\n            'Same as `showSendToCloud`, but use a pencil icon instead of a floppy-disk.',\n            'Note that if both `showSendToCloud` and `showEditInChartStudio` are turned,',\n            'only `showEditInChartStudio` will be honored.'\n        ].join(' ')\n    },\n    modeBarButtonsToRemove: {\n        valType: 'any',\n        dflt: [],\n        description: [\n            'Remove mode bar buttons by name.',\n            'See ./components/modebar/buttons.js for the list of names.'\n        ].join(' ')\n    },\n    modeBarButtonsToAdd: {\n        valType: 'any',\n        dflt: [],\n        description: [\n            'Add mode bar button using config objects',\n            'See ./components/modebar/buttons.js for list of arguments.'\n        ].join(' ')\n    },\n    modeBarButtons: {\n        valType: 'any',\n        dflt: false,\n        description: [\n            'Define fully custom mode bar buttons as nested array,',\n            'where the outer arrays represents button groups, and',\n            'the inner arrays have buttons config objects or names of default buttons',\n            'See ./components/modebar/buttons.js for more info.'\n        ].join(' ')\n    },\n    toImageButtonOptions: {\n        valType: 'any',\n        dflt: {},\n        description: [\n            'Statically override options for toImage modebar button',\n            'allowed keys are format, filename, width, height, scale',\n            'see ../components/modebar/buttons.js'\n        ].join(' ')\n    },\n    displaylogo: {\n        valType: 'boolean',\n        dflt: true,\n        description: [\n            'Determines whether or not the plotly logo is displayed',\n            'on the end of the mode bar.'\n        ].join(' ')\n    },\n    watermark: {\n        valType: 'boolean',\n        dflt: false,\n        description: 'watermark the images with the company\\'s logo'\n    },\n\n    plotGlPixelRatio: {\n        valType: 'number',\n        dflt: 2,\n        min: 1,\n        max: 4,\n        description: [\n            'Set the pixel ratio during WebGL image export.',\n            'This config option was formerly named `plot3dPixelRatio`',\n            'which is now deprecated.'\n        ].join(' ')\n    },\n\n    setBackground: {\n        valType: 'any',\n        dflt: 'transparent',\n        description: [\n            'Set function to add the background color (i.e. `layout.paper_color`)',\n            'to a different container.',\n            'This function take the graph div as first argument and the current background',\n            'color as second argument.',\n            'Alternatively, set to string *opaque* to ensure there is white behind it.'\n        ].join(' ')\n    },\n\n    topojsonURL: {\n        valType: 'string',\n        noBlank: true,\n        dflt: 'https://cdn.plot.ly/',\n        description: [\n            'Set the URL to topojson used in geo charts.',\n            'By default, the topojson files are fetched from cdn.plot.ly.',\n            'For example, set this option to:',\n            '/dist/topojson/',\n            'to render geographical feature using the topojson files',\n            'that ship with the plotly.js module.'\n        ].join(' ')\n    },\n\n    mapboxAccessToken: {\n        valType: 'string',\n        dflt: null,\n        description: [\n            'Mapbox access token (required to plot mapbox trace types)',\n            'If using an Mapbox Atlas server, set this option to \\'\\'',\n            'so that plotly.js won\\'t attempt to authenticate to the public Mapbox server.'\n        ].join(' ')\n    },\n\n    logging: {\n        valType: 'integer',\n        min: 0,\n        max: 2,\n        dflt: 1,\n        description: [\n            'Turn all console logging on or off (errors will be thrown)',\n            'This should ONLY be set via Plotly.setPlotConfig',\n            'Available levels:',\n            '0: no logs',\n            '1: warnings and errors, but not informational messages',\n            '2: verbose logs'\n        ].join(' ')\n    },\n\n    notifyOnLogging: {\n        valType: 'integer',\n        min: 0,\n        max: 2,\n        dflt: 0,\n        description: [\n            'Set on-graph logging (notifier) level',\n            'This should ONLY be set via Plotly.setPlotConfig',\n            'Available levels:',\n            '0: no on-graph logs',\n            '1: warnings and errors, but not informational messages',\n            '2: verbose logs'\n        ].join(' ')\n    },\n\n    queueLength: {\n        valType: 'integer',\n        min: 0,\n        dflt: 0,\n        description: 'Sets the length of the undo/redo queue.'\n    },\n\n    globalTransforms: {\n        valType: 'any',\n        dflt: [],\n        description: [\n            'Set global transform to be applied to all traces with no',\n            'specification needed'\n        ].join(' ')\n    },\n\n    locale: {\n        valType: 'string',\n        dflt: 'en-US',\n        description: [\n            'Which localization should we use?',\n            'Should be a string like \\'en\\' or \\'en-US\\'.'\n        ].join(' ')\n    },\n\n    locales: {\n        valType: 'any',\n        dflt: {},\n        description: [\n            'Localization definitions',\n            'Locales can be provided either here (specific to one chart) or globally',\n            'by registering them as modules.',\n            'Should be an object of objects {locale: {dictionary: {...}, format: {...}}}',\n            '{',\n            '  da: {',\n            '      dictionary: {\\'Reset axes\\': \\'Nulstil aksler\\', ...},',\n            '      format: {months: [...], shortMonths: [...]}',\n            '  },',\n            '  ...',\n            '}',\n            'All parts are optional. When looking for translation or format fields, we',\n            'look first for an exact match in a config locale, then in a registered',\n            'module. If those fail, we strip off any regionalization (\\'en-US\\' -> \\'en\\')',\n            'and try each (config, registry) again. The final fallback for translation',\n            'is untranslated (which is US English) and for formats is the base English',\n            '(the only consequence being the last fallback date format %x is DD/MM/YYYY',\n            'instead of MM/DD/YYYY). Currently `grouping` and `currency` are ignored',\n            'for our automatic number formatting, but can be used in custom formats.'\n        ].join(' ')\n    }\n};\n\nvar dfltConfig = {};\n\nfunction crawl(src, target) {\n    for(var k in src) {\n        var obj = src[k];\n        if(obj.valType) {\n            target[k] = obj.dflt;\n        } else {\n            if(!target[k]) {\n                target[k] = {};\n            }\n            crawl(obj, target[k]);\n        }\n    }\n}\n\ncrawl(configAttributes, dfltConfig);\n\nmodule.exports = {\n    configAttributes: configAttributes,\n    dfltConfig: dfltConfig\n};\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nconst SidecarsAdministrationActions = Reflux.createActions({\n  list: { asyncResult: true },\n  refreshList: { asyncResult: true },\n  setAction: { asyncResult: true },\n});\n\nexport default SidecarsAdministrationActions;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport { PluginStore } from 'graylog-web-plugin/plugin';\n\n// eslint-disable-next-line import/prefer-default-export\nexport const getAuthServicePlugin = (type: string, throwError: boolean = false) => {\n  const authServices = PluginStore.exports('authentication.services') || [];\n  const authService = authServices.find((service) => service.name === type);\n\n  if (!authService && throwError) {\n    throw new Error(`Authentication service with type \"${type}\" not found.`);\n  }\n\n  return authService;\n};\n\nexport const getEnterpriseGroupSyncPlugin = () => {\n  const authGroupSyncPlugins = PluginStore.exports('authentication.enterprise.directoryServices.groupSync');\n\n  return authGroupSyncPlugins?.[0];\n};\n\nexport const getEnterpriseAuthenticationPlugin = () => {\n  const authPlugins = PluginStore.exports('authentication.enterprise');\n\n  return authPlugins?.[0];\n};\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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\nmodule.exports = function incrementNumeric(x, delta) {\n    if(!delta) return x;\n\n    // Note 1:\n    // 0.3 != 0.1 + 0.2 == 0.30000000000000004\n    // but 0.3 == (10 * 0.1 + 10 * 0.2) / 10\n    // Attempt to use integer steps to increment\n    var scale = 1 / Math.abs(delta);\n    var newX = (scale > 1) ? (\n        scale * x +\n        scale * delta\n    ) / scale : x + delta;\n\n    // Note 2:\n    // now we may also consider rounding to cover few more edge cases\n    // e.g. 0.3 * 3 = 0.8999999999999999\n    var lenX1 = String(newX).length;\n    if(lenX1 > 16) {\n        var lenDt = String(delta).length;\n        var lenX0 = String(x).length;\n\n        if(lenX1 >= lenX0 + lenDt) { // likely a rounding error!\n            var s = parseFloat(newX).toPrecision(12);\n            if(s.indexOf('e+') === -1) newX = +s;\n        }\n    }\n\n    return newX;\n};\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport { PluginStore } from 'graylog-web-plugin/plugin';\n\nconst searchTypesKey = 'searchTypes';\n\nexport type SearchTypeId = string;\n\nexport default function searchTypeDefinition(type: string) {\n  return PluginStore.exports(searchTypesKey)\n    .find((s) => s.type.toLocaleUpperCase() === type.toLocaleUpperCase());\n}\n","module.exports = identity;\n\n/**\n * Set a mat4 to the identity matrix\n *\n * @param {mat4} out the receiving matrix\n * @returns {mat4} out\n */\nfunction identity(out) {\n    out[0] = 1;\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 0;\n    out[4] = 0;\n    out[5] = 1;\n    out[6] = 0;\n    out[7] = 0;\n    out[8] = 0;\n    out[9] = 0;\n    out[10] = 1;\n    out[11] = 0;\n    out[12] = 0;\n    out[13] = 0;\n    out[14] = 0;\n    out[15] = 1;\n    return out;\n};","module.exports = (__webpack_require__(\"jaIgFIJB\"))(446);","module.exports = fromYRotation\n\n/**\n * Creates a matrix from the given angle around the Y axis\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest)\n *     mat4.rotateY(dest, dest, rad)\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nfunction fromYRotation(out, rad) {\n    var s = Math.sin(rad),\n        c = Math.cos(rad)\n\n    // Perform axis-specific matrix multiplication\n    out[0] = c\n    out[1] = 0\n    out[2] = -s\n    out[3] = 0\n    out[4] = 0\n    out[5] = 1\n    out[6] = 0\n    out[7] = 0\n    out[8] = s\n    out[9] = 0\n    out[10] = c\n    out[11] = 0\n    out[12] = 0\n    out[13] = 0\n    out[14] = 0\n    out[15] = 1\n    return out\n}","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport * as URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport fetch from 'logic/rest/FetchProvider';\nimport StoreProvider from 'injection/StoreProvider';\n\nconst NodesStore = StoreProvider.getStore('Nodes');\nconst SystemProcessingStore = StoreProvider.getStore('SystemProcessing');\nconst SystemLoadBalancerStore = StoreProvider.getStore('SystemLoadBalancer');\n\nconst ClusterOverviewStore = Reflux.createStore({\n  sourceUrl: '/cluster',\n  clusterOverview: undefined,\n\n  init() {\n    this.cluster();\n    this.listenTo(SystemProcessingStore, this.cluster);\n    this.listenTo(SystemLoadBalancerStore, this.cluster);\n    this.listenTo(NodesStore, this.cluster);\n  },\n\n  getInitialState() {\n    return { clusterOverview: this.clusterOverview };\n  },\n\n  cluster() {\n    const promise = fetch('GET', URLUtils.qualifyUrl(this.sourceUrl));\n\n    promise.then(\n      (response) => {\n        this.clusterOverview = response;\n        this.trigger({ clusterOverview: this.clusterOverview });\n      },\n      (error) => UserNotification.error(`Getting cluster overview failed: ${error}`, 'Could not get cluster overview'),\n    );\n\n    return promise;\n  },\n\n  threadDump(nodeId) {\n    const promise = fetch('GET', URLUtils.qualifyUrl(`${this.sourceUrl}/${nodeId}/threaddump`))\n      .then(\n        (response) => {\n          return response.threaddump;\n        },\n        (error) => UserNotification.error(`Getting thread dump for node '${nodeId}' failed: ${error}`, 'Could not get thread dump'),\n      );\n\n    return promise;\n  },\n\n  processbufferDump(nodeId) {\n    const promise = fetch('GET', URLUtils.qualifyUrl(`${this.sourceUrl}/${nodeId}/processbufferdump`))\n      .then(\n        (response) => {\n          return response.processbuffer_dump;\n        },\n        (error) => UserNotification.error(`Getting process buffer dump for node '${nodeId}' failed: ${error}`, 'Could not get process buffer dump'),\n      );\n\n    return promise;\n  },\n\n  jvm(nodeId) {\n    const promise = fetch('GET', URLUtils.qualifyUrl(`${this.sourceUrl}/${nodeId}/jvm`));\n\n    promise.catch((error) => UserNotification.error(`Getting JVM information for node '${nodeId}' failed: ${error}`, 'Could not get JVM information'));\n\n    return promise;\n  },\n});\n\nexport default ClusterOverviewStore;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nconst SimulatorActions = Reflux.createActions({\n  simulate: { asyncResult: true },\n});\n\nexport default SimulatorActions;\n","module.exports = frustum;\n\n/**\n * Generates a frustum matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Number} left Left bound of the frustum\n * @param {Number} right Right bound of the frustum\n * @param {Number} bottom Bottom bound of the frustum\n * @param {Number} top Top bound of the frustum\n * @param {Number} near Near bound of the frustum\n * @param {Number} far Far bound of the frustum\n * @returns {mat4} out\n */\nfunction frustum(out, left, right, bottom, top, near, far) {\n    var rl = 1 / (right - left),\n        tb = 1 / (top - bottom),\n        nf = 1 / (near - far);\n    out[0] = (near * 2) * rl;\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 0;\n    out[4] = 0;\n    out[5] = (near * 2) * tb;\n    out[6] = 0;\n    out[7] = 0;\n    out[8] = (right + left) * rl;\n    out[9] = (top + bottom) * tb;\n    out[10] = (far + near) * nf;\n    out[11] = -1;\n    out[12] = 0;\n    out[13] = 0;\n    out[14] = (far * near * 2) * nf;\n    out[15] = 0;\n    return out;\n};","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport * as URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch, { fetchPeriodically } from 'logic/rest/FetchProvider';\nimport ActionsProvider from 'injection/ActionsProvider';\n\nconst SystemJobsActions = ActionsProvider.getActions('SystemJobs');\n\nconst SystemJobsStore = Reflux.createStore({\n  listenables: [SystemJobsActions],\n\n  jobsById: {},\n\n  getInitialState() {\n    return { jobs: this.jobs, jobsById: this.jobsById };\n  },\n  list() {\n    const url = URLUtils.qualifyUrl(ApiRoutes.SystemJobsApiController.list().url);\n    const promise = fetchPeriodically('GET', url).then((response) => {\n      this.jobs = response;\n      this.trigger({ jobs: response });\n\n      return response;\n    });\n\n    SystemJobsActions.list.promise(promise);\n  },\n  getJob(jobId) {\n    const url = URLUtils.qualifyUrl(ApiRoutes.SystemJobsApiController.getJob(jobId).url);\n    const promise = fetch('GET', url).then((response) => {\n      this.jobsById = { ...this.jobsById, [response.id]: response };\n      this.trigger({ jobsById: this.jobsById });\n\n      return response;\n    }, () => {\n      // If we get an error (probably 404 because the job is gone), remove the job from the cache and trigger an update.\n      const { [jobId]: currentJob, ...rest } = this.jobsById;\n\n      this.jobsById = rest;\n      this.trigger({ jobsById: this.jobsById });\n    });\n\n    SystemJobsActions.getJob.promise(promise);\n  },\n  cancelJob(jobId) {\n    const url = URLUtils.qualifyUrl(ApiRoutes.SystemJobsApiController.cancelJob(jobId).url);\n    const promise = fetch('DELETE', url).then((response) => {\n      delete (this.jobsById[response.id]);\n    });\n\n    SystemJobsActions.cancelJob.promise(promise);\n  },\n});\n\nexport default SystemJobsStore;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport { singletonActions } from 'views/logic/singleton';\n\nconst ErrorsActions = singletonActions(\n  'Errors',\n  () => Reflux.createActions(['report']),\n);\n\nexport default ErrorsActions;\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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// ASCEND: chop off the last nesting level - either [] or . - to ascend\n// the attribute tree. the remaining attrString is in match[1]\nvar ASCEND = /^(.*)(\\.[^\\.\\[\\]]+|\\[\\d\\])$/;\n\n// SIMPLEATTR: is this an un-nested attribute? (no dots or brackets)\nvar SIMPLEATTR = /^[^\\.\\[\\]]+$/;\n\n/*\n * calculate a relative attribute string, similar to a relative path\n *\n * @param {string} baseAttr:\n *   an attribute string, such as 'annotations[3].x'. The \"current location\"\n *   is the attribute string minus the last component ('annotations[3]')\n * @param {string} relativeAttr:\n *   a route to the desired attribute string, using '^' to ascend\n *\n * @return {string} attrString:\n *   for example:\n *     relativeAttr('annotations[3].x', 'y') = 'annotations[3].y'\n *     relativeAttr('annotations[3].x', '^[2].z') = 'annotations[2].z'\n *     relativeAttr('annotations[3].x', '^^margin') = 'margin'\n *     relativeAttr('annotations[3].x', '^^margin.r') = 'margin.r'\n */\nmodule.exports = function(baseAttr, relativeAttr) {\n    while(relativeAttr) {\n        var match = baseAttr.match(ASCEND);\n\n        if(match) baseAttr = match[1];\n        else if(baseAttr.match(SIMPLEATTR)) baseAttr = '';\n        else throw new Error('bad relativeAttr call:' + [baseAttr, relativeAttr]);\n\n        if(relativeAttr.charAt(0) === '^') relativeAttr = relativeAttr.slice(1);\n        else break;\n    }\n\n    if(baseAttr && relativeAttr.charAt(0) !== '[') {\n        return baseAttr + '.' + relativeAttr;\n    }\n    return baseAttr + relativeAttr;\n};\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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 Loggers = require('./lib/loggers');\nvar noop = require('./lib/noop');\nvar pushUnique = require('./lib/push_unique');\nvar isPlainObject = require('./lib/is_plain_object');\nvar addStyleRule = require('./lib/dom').addStyleRule;\nvar ExtendModule = require('./lib/extend');\n\nvar basePlotAttributes = require('./plots/attributes');\nvar baseLayoutAttributes = require('./plots/layout_attributes');\n\nvar extendFlat = ExtendModule.extendFlat;\nvar extendDeepAll = ExtendModule.extendDeepAll;\n\nexports.modules = {};\nexports.allCategories = {};\nexports.allTypes = [];\nexports.subplotsRegistry = {};\nexports.transformsRegistry = {};\nexports.componentsRegistry = {};\nexports.layoutArrayContainers = [];\nexports.layoutArrayRegexes = [];\nexports.traceLayoutAttributes = {};\nexports.localeRegistry = {};\nexports.apiMethodRegistry = {};\nexports.collectableSubplotTypes = null;\n\n/**\n * Top-level register routine, exported as Plotly.register\n *\n * @param {object array or array of objects} _modules :\n *  module object or list of module object to register.\n *\n *  A valid `moduleType: 'trace'` module has fields:\n *  - name {string} : the trace type\n *  - categories {array} : categories associated with this trace type,\n *                         tested with Register.traceIs()\n *  - meta {object} : meta info (mostly for plot-schema)\n *\n *  A valid `moduleType: 'locale'` module has fields:\n *  - name {string} : the locale name. Should be a 2-digit language string ('en', 'de')\n *                    optionally with a country/region code ('en-GB', 'de-CH'). If a country\n *                    code is used but the base language locale has not yet been supplied,\n *                    we will use this locale for the base as well.\n *  - dictionary {object} : the dictionary mapping input strings to localized strings\n *                          generally the keys should be the literal input strings, but\n *                          if default translations are provided you can use any string as a key.\n *  - format {object} : a `d3.locale` format specifier for this locale\n *                      any omitted keys we'll fall back on en-US.\n *\n *  A valid `moduleType: 'transform'` module has fields:\n *  - name {string} : transform name\n *  - transform {function} : default-level transform function\n *  - calcTransform {function} : calc-level transform function\n *  - attributes {object} : transform attributes declarations\n *  - supplyDefaults {function} : attributes default-supply function\n *\n *  A valid `moduleType: 'component'` module has fields:\n *  - name {string} : the component name, used it with Register.getComponentMethod()\n *                    to employ component method.\n *\n *  A valid `moduleType: 'apiMethod'` module has fields:\n *  - name {string} : the api method name.\n *  - fn {function} : the api method called with Register.call();\n *\n */\nexports.register = function register(_modules) {\n    exports.collectableSubplotTypes = null;\n\n    if(!_modules) {\n        throw new Error('No argument passed to Plotly.register.');\n    } else if(_modules && !Array.isArray(_modules)) {\n        _modules = [_modules];\n    }\n\n    for(var i = 0; i < _modules.length; i++) {\n        var newModule = _modules[i];\n\n        if(!newModule) {\n            throw new Error('Invalid module was attempted to be registered!');\n        }\n\n        switch(newModule.moduleType) {\n            case 'trace':\n                registerTraceModule(newModule);\n                break;\n            case 'transform':\n                registerTransformModule(newModule);\n                break;\n            case 'component':\n                registerComponentModule(newModule);\n                break;\n            case 'locale':\n                registerLocale(newModule);\n                break;\n            case 'apiMethod':\n                var name = newModule.name;\n                exports.apiMethodRegistry[name] = newModule.fn;\n                break;\n            default:\n                throw new Error('Invalid module was attempted to be registered!');\n        }\n    }\n};\n\n/**\n * Get registered module using trace object or trace type\n *\n * @param {object||string} trace\n *  trace object with prop 'type' or trace type as a string\n * @return {object}\n *  module object corresponding to trace type\n */\nexports.getModule = function(trace) {\n    var _module = exports.modules[getTraceType(trace)];\n    if(!_module) return false;\n    return _module._module;\n};\n\n/**\n * Determine if this trace type is in a given category\n *\n * @param {object||string} traceType\n *  a trace (object) or trace type (string)\n * @param {string} category\n *  category in question\n * @return {boolean}\n */\nexports.traceIs = function(traceType, category) {\n    traceType = getTraceType(traceType);\n\n    // old Chart Studio Cloud workspace hack, nothing to see here\n    if(traceType === 'various') return false;\n\n    var _module = exports.modules[traceType];\n\n    if(!_module) {\n        if(traceType && traceType !== 'area') {\n            Loggers.log('Unrecognized trace type ' + traceType + '.');\n        }\n\n        _module = exports.modules[basePlotAttributes.type.dflt];\n    }\n\n    return !!_module.categories[category];\n};\n\n/**\n * Determine if this trace has a transform of the given type and return\n * array of matching indices.\n *\n * @param {object} data\n *  a trace object (member of data or fullData)\n * @param {string} type\n *  type of trace to test\n * @return {array}\n *  array of matching indices. If none found, returns []\n */\nexports.getTransformIndices = function(data, type) {\n    var indices = [];\n    var transforms = data.transforms || [];\n    for(var i = 0; i < transforms.length; i++) {\n        if(transforms[i].type === type) {\n            indices.push(i);\n        }\n    }\n    return indices;\n};\n\n/**\n * Determine if this trace has a transform of the given type\n *\n * @param {object} data\n *  a trace object (member of data or fullData)\n * @param {string} type\n *  type of trace to test\n * @return {boolean}\n */\nexports.hasTransform = function(data, type) {\n    var transforms = data.transforms || [];\n    for(var i = 0; i < transforms.length; i++) {\n        if(transforms[i].type === type) {\n            return true;\n        }\n    }\n    return false;\n};\n\n/**\n * Retrieve component module method. Falls back on noop if either the\n * module or the method is missing, so the result can always be safely called\n *\n * @param {string} name\n *  name of component (as declared in component module)\n * @param {string} method\n *  name of component module method\n * @return {function}\n */\nexports.getComponentMethod = function(name, method) {\n    var _module = exports.componentsRegistry[name];\n\n    if(!_module) return noop;\n    return _module[method] || noop;\n};\n\n/**\n * Call registered api method.\n *\n * @param {string} name : api method name\n * @param {...array} args : arguments passed to api method\n * @return {any} : returns api method output\n */\nexports.call = function() {\n    var name = arguments[0];\n    var args = [].slice.call(arguments, 1);\n    return exports.apiMethodRegistry[name].apply(null, args);\n};\n\nfunction registerTraceModule(_module) {\n    var thisType = _module.name;\n    var categoriesIn = _module.categories;\n    var meta = _module.meta;\n\n    if(exports.modules[thisType]) {\n        Loggers.log('Type ' + thisType + ' already registered');\n        return;\n    }\n\n    if(!exports.subplotsRegistry[_module.basePlotModule.name]) {\n        registerSubplot(_module.basePlotModule);\n    }\n\n    var categoryObj = {};\n    for(var i = 0; i < categoriesIn.length; i++) {\n        categoryObj[categoriesIn[i]] = true;\n        exports.allCategories[categoriesIn[i]] = true;\n    }\n\n    exports.modules[thisType] = {\n        _module: _module,\n        categories: categoryObj\n    };\n\n    if(meta && Object.keys(meta).length) {\n        exports.modules[thisType].meta = meta;\n    }\n\n    exports.allTypes.push(thisType);\n\n    for(var componentName in exports.componentsRegistry) {\n        mergeComponentAttrsToTrace(componentName, thisType);\n    }\n\n    /*\n     * Collect all trace layout attributes in one place for easier lookup later\n     * but don't merge them into the base schema as it would confuse the docs\n     * (at least after https://github.com/plotly/documentation/issues/202 gets done!)\n     */\n    if(_module.layoutAttributes) {\n        extendFlat(exports.traceLayoutAttributes, _module.layoutAttributes);\n    }\n\n    var basePlotModule = _module.basePlotModule;\n    var bpmName = basePlotModule.name;\n\n    // add mapbox-gl CSS here to avoid console warning on instantiation\n    if(bpmName === 'mapbox') {\n        var styleRules = basePlotModule.constants.styleRules;\n        for(var k in styleRules) {\n            addStyleRule('.js-plotly-plot .plotly .mapboxgl-' + k, styleRules[k]);\n        }\n    }\n\n    // if `plotly-geo-assets.js` is not included,\n    // add `PlotlyGeoAssets` global to stash references to all fetched\n    // topojson / geojson data\n    if((bpmName === 'geo' || bpmName === 'mapbox') &&\n        (typeof window !== undefined && window.PlotlyGeoAssets === undefined)\n    ) {\n        window.PlotlyGeoAssets = {topojson: {}};\n    }\n}\n\nfunction registerSubplot(_module) {\n    var plotType = _module.name;\n\n    if(exports.subplotsRegistry[plotType]) {\n        Loggers.log('Plot type ' + plotType + ' already registered.');\n        return;\n    }\n\n    // relayout array handling will look for component module methods with this\n    // name and won't find them because this is a subplot module... but that\n    // should be fine, it will just fall back on redrawing the plot.\n    findArrayRegexps(_module);\n\n    // not sure what's best for the 'cartesian' type at this point\n    exports.subplotsRegistry[plotType] = _module;\n\n    for(var componentName in exports.componentsRegistry) {\n        mergeComponentAttrsToSubplot(componentName, _module.name);\n    }\n}\n\nfunction registerComponentModule(_module) {\n    if(typeof _module.name !== 'string') {\n        throw new Error('Component module *name* must be a string.');\n    }\n\n    var name = _module.name;\n    exports.componentsRegistry[name] = _module;\n\n    if(_module.layoutAttributes) {\n        if(_module.layoutAttributes._isLinkedToArray) {\n            pushUnique(exports.layoutArrayContainers, name);\n        }\n        findArrayRegexps(_module);\n    }\n\n    for(var traceType in exports.modules) {\n        mergeComponentAttrsToTrace(name, traceType);\n    }\n\n    for(var subplotName in exports.subplotsRegistry) {\n        mergeComponentAttrsToSubplot(name, subplotName);\n    }\n\n    for(var transformType in exports.transformsRegistry) {\n        mergeComponentAttrsToTransform(name, transformType);\n    }\n\n    if(_module.schema && _module.schema.layout) {\n        extendDeepAll(baseLayoutAttributes, _module.schema.layout);\n    }\n}\n\nfunction registerTransformModule(_module) {\n    if(typeof _module.name !== 'string') {\n        throw new Error('Transform module *name* must be a string.');\n    }\n\n    var prefix = 'Transform module ' + _module.name;\n    var hasTransform = typeof _module.transform === 'function';\n    var hasCalcTransform = typeof _module.calcTransform === 'function';\n\n    if(!hasTransform && !hasCalcTransform) {\n        throw new Error(prefix + ' is missing a *transform* or *calcTransform* method.');\n    }\n    if(hasTransform && hasCalcTransform) {\n        Loggers.log([\n            prefix + ' has both a *transform* and *calcTransform* methods.',\n            'Please note that all *transform* methods are executed',\n            'before all *calcTransform* methods.'\n        ].join(' '));\n    }\n    if(!isPlainObject(_module.attributes)) {\n        Loggers.log(prefix + ' registered without an *attributes* object.');\n    }\n    if(typeof _module.supplyDefaults !== 'function') {\n        Loggers.log(prefix + ' registered without a *supplyDefaults* method.');\n    }\n\n    exports.transformsRegistry[_module.name] = _module;\n\n    for(var componentName in exports.componentsRegistry) {\n        mergeComponentAttrsToTransform(componentName, _module.name);\n    }\n}\n\nfunction registerLocale(_module) {\n    var locale = _module.name;\n    var baseLocale = locale.split('-')[0];\n\n    var newDict = _module.dictionary;\n    var newFormat = _module.format;\n    var hasDict = newDict && Object.keys(newDict).length;\n    var hasFormat = newFormat && Object.keys(newFormat).length;\n\n    var locales = exports.localeRegistry;\n\n    var localeObj = locales[locale];\n    if(!localeObj) locales[locale] = localeObj = {};\n\n    // Should we use this dict for the base locale?\n    // In case we're overwriting a previous dict for this locale, check\n    // whether the base matches the full locale dict now. If we're not\n    // overwriting, locales[locale] is undefined so this just checks if\n    // baseLocale already had a dict or not.\n    // Same logic for dateFormats\n    if(baseLocale !== locale) {\n        var baseLocaleObj = locales[baseLocale];\n        if(!baseLocaleObj) locales[baseLocale] = baseLocaleObj = {};\n\n        if(hasDict && baseLocaleObj.dictionary === localeObj.dictionary) {\n            baseLocaleObj.dictionary = newDict;\n        }\n        if(hasFormat && baseLocaleObj.format === localeObj.format) {\n            baseLocaleObj.format = newFormat;\n        }\n    }\n\n    if(hasDict) localeObj.dictionary = newDict;\n    if(hasFormat) localeObj.format = newFormat;\n}\n\nfunction findArrayRegexps(_module) {\n    if(_module.layoutAttributes) {\n        var arrayAttrRegexps = _module.layoutAttributes._arrayAttrRegexps;\n        if(arrayAttrRegexps) {\n            for(var i = 0; i < arrayAttrRegexps.length; i++) {\n                pushUnique(exports.layoutArrayRegexes, arrayAttrRegexps[i]);\n            }\n        }\n    }\n}\n\nfunction mergeComponentAttrsToTrace(componentName, traceType) {\n    var componentSchema = exports.componentsRegistry[componentName].schema;\n    if(!componentSchema || !componentSchema.traces) return;\n\n    var traceAttrs = componentSchema.traces[traceType];\n    if(traceAttrs) {\n        extendDeepAll(exports.modules[traceType]._module.attributes, traceAttrs);\n    }\n}\n\nfunction mergeComponentAttrsToTransform(componentName, transformType) {\n    var componentSchema = exports.componentsRegistry[componentName].schema;\n    if(!componentSchema || !componentSchema.transforms) return;\n\n    var transformAttrs = componentSchema.transforms[transformType];\n    if(transformAttrs) {\n        extendDeepAll(exports.transformsRegistry[transformType].attributes, transformAttrs);\n    }\n}\n\nfunction mergeComponentAttrsToSubplot(componentName, subplotName) {\n    var componentSchema = exports.componentsRegistry[componentName].schema;\n    if(!componentSchema || !componentSchema.subplots) return;\n\n    var subplotModule = exports.subplotsRegistry[subplotName];\n    var subplotAttrs = subplotModule.layoutAttributes;\n    var subplotAttr = subplotModule.attr === 'subplot' ? subplotModule.name : subplotModule.attr;\n    if(Array.isArray(subplotAttr)) subplotAttr = subplotAttr[0];\n\n    var componentLayoutAttrs = componentSchema.subplots[subplotAttr];\n    if(subplotAttrs && componentLayoutAttrs) {\n        extendDeepAll(subplotAttrs, componentLayoutAttrs);\n    }\n}\n\nfunction getTraceType(traceType) {\n    if(typeof traceType === 'object') traceType = traceType.type;\n    return traceType;\n}\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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\nmodule.exports = {\n    FORMAT_LINK: 'https://github.com/d3/d3-3.x-api-reference/blob/master/Formatting.md#d3_format',\n    DATE_FORMAT_LINK: 'https://github.com/d3/d3-time-format#locale_format'\n};\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport { qualifyUrl } from 'util/URLUtils';\nimport fetch from 'logic/rest/FetchProvider';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport CombinedProvider from 'injection/CombinedProvider';\nimport User from 'logic/users/User';\n\nconst { SessionStore, SessionActions } = CombinedProvider.get('Session');\nconst { StartpageStore } = CombinedProvider.get('Startpage');\nconst { PreferencesActions } = CombinedProvider.get('Preferences');\n\nexport type CurrentUserStoreState = {\n  currentUser: User,\n};\n\nconst CurrentUserStore = Reflux.createStore({\n  listenables: [SessionActions],\n  currentUser: undefined,\n\n  init() {\n    this.listenTo(SessionStore, this.sessionUpdate, this.sessionUpdate);\n    this.listenTo(StartpageStore, this.reload, this.reload);\n    PreferencesActions.saveUserPreferences.completed.listen(this.reload);\n  },\n\n  getInitialState() {\n    return { currentUser: this.currentUser };\n  },\n\n  get() {\n    return this.currentUser;\n  },\n\n  sessionUpdate(sessionInfo) {\n    if (sessionInfo.sessionId && sessionInfo.username) {\n      const { username } = sessionInfo;\n\n      this.update(username);\n    } else {\n      this.currentUser = undefined;\n      this.trigger({ currentUser: this.currentUser });\n    }\n  },\n\n  reload() {\n    if (this.currentUser !== undefined) {\n      return this.update(this.currentUser.username);\n    }\n\n    return Promise.resolve();\n  },\n\n  update(username) {\n    return fetch('GET', qualifyUrl(ApiRoutes.UsersApiController.loadByUsername(encodeURIComponent(username)).url))\n      .then((resp) => {\n        this.currentUser = resp;\n        this.trigger({ currentUser: this.currentUser });\n      });\n  },\n});\n\nexport default CurrentUserStore;\n","module.exports = clone;\n\n/**\n * Creates a new mat4 initialized with values from an existing matrix\n *\n * @param {mat4} a matrix to clone\n * @returns {mat4} a new 4x4 matrix\n */\nfunction clone(a) {\n    var out = new Float32Array(16);\n    out[0] = a[0];\n    out[1] = a[1];\n    out[2] = a[2];\n    out[3] = a[3];\n    out[4] = a[4];\n    out[5] = a[5];\n    out[6] = a[6];\n    out[7] = a[7];\n    out[8] = a[8];\n    out[9] = a[9];\n    out[10] = a[10];\n    out[11] = a[11];\n    out[12] = a[12];\n    out[13] = a[13];\n    out[14] = a[14];\n    out[15] = a[15];\n    return out;\n};","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\nimport lodash from 'lodash';\n\nimport fetch from 'logic/rest/FetchProvider';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport * as URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\n\ntype StreamRule = {\n  field: string,\n  type: number,\n  value: string,\n  inverted: boolean,\n  description: string,\n};\n\ntype Callback = {\n  (): void,\n};\n\nconst StreamRulesStore = Reflux.createStore({\n  callbacks: [],\n\n  types() {\n    const url = '/streams/null/rules/types';\n    const promise = fetch('GET', URLUtils.qualifyUrl(url));\n\n    return promise;\n  },\n  update(streamId: string, streamRuleId: string, data: StreamRule, callback: (() => void)) {\n    const failCallback = (error) => {\n      UserNotification.error(`Updating Stream Rule failed with status: ${error}`,\n        'Could not update Stream Rule');\n    };\n\n    const url = URLUtils.qualifyUrl(ApiRoutes.StreamRulesApiController.update(streamId, streamRuleId).url);\n    const request = {\n      field: data.field,\n      type: data.type,\n      value: data.value,\n      inverted: data.inverted,\n      description: data.description,\n    };\n\n    fetch('PUT', url, request)\n      .then(callback, failCallback)\n      .then(this._emitChange.bind(this));\n  },\n  remove(streamId: string, streamRuleId: string, callback: (() => void)) {\n    const failCallback = (error) => {\n      UserNotification.error(`Deleting Stream Rule failed with status: ${error}`,\n        'Could not delete Stream Rule');\n    };\n\n    const url = URLUtils.qualifyUrl(ApiRoutes.StreamRulesApiController.delete(streamId, streamRuleId).url);\n\n    fetch('DELETE', url)\n      .then(callback, failCallback)\n      .then(this._emitChange.bind(this));\n  },\n  create(streamId: string, data: StreamRule, callback: (() => void)) {\n    const failCallback = (error) => {\n      UserNotification.error(`Creating Stream Rule failed with status: ${error}`,\n        'Could not create Stream Rule');\n    };\n\n    const url = URLUtils.qualifyUrl(ApiRoutes.StreamRulesApiController.create(streamId).url);\n\n    fetch('POST', url, data)\n      .then(callback, failCallback)\n      .then(this._emitChange.bind(this));\n  },\n  onChange(callback: Callback) {\n    this.callbacks.push(callback);\n  },\n  _emitChange() {\n    this.callbacks.forEach((callback) => callback());\n  },\n  unregister(callback: Callback) {\n    lodash.pull(this.callbacks, callback);\n  },\n});\n\nexport default StreamRulesStore;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport fetch from 'logic/rest/FetchProvider';\nimport MessageFormatter from 'logic/message/MessageFormatter';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport * as URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport StringUtils from 'util/StringUtils';\nimport ActionsProvider from 'injection/ActionsProvider';\n\nconst MessagesActions = ActionsProvider.getActions('Messages');\n\nconst MessagesStore = Reflux.createStore({\n  listenables: [MessagesActions],\n  sourceUrl: '',\n\n  getInitialState() {\n    return {};\n  },\n\n  loadMessage(index, messageId) {\n    const { url } = ApiRoutes.MessagesController.single(index.trim(), messageId.trim());\n    const promise = fetch('GET', URLUtils.qualifyUrl(url))\n      .then(\n        (response) => MessageFormatter.formatResultMessage(response),\n        (errorThrown) => {\n          UserNotification.error(`Loading message information failed with status: ${errorThrown}`,\n            'Could not load message information');\n        },\n      );\n\n    MessagesActions.loadMessage.promise(promise);\n  },\n\n  fieldTerms(index, string) {\n    const { url } = ApiRoutes.MessagesController.analyze(index, encodeURIComponent(StringUtils.stringify(string)));\n    const promise = fetch('GET', URLUtils.qualifyUrl(url))\n      .then(\n        (response) => response.tokens,\n        (error) => {\n          UserNotification.error(`Loading field terms failed with status: ${error}`,\n            'Could not load field terms.');\n        },\n      );\n\n    MessagesActions.fieldTerms.promise(promise);\n  },\n\n  loadRawMessage(message, remoteAddress, codec, codecConfiguration) {\n    const { url } = ApiRoutes.MessagesController.parse();\n    const payload = {\n      message: message,\n      remote_address: remoteAddress,\n      codec: codec,\n      configuration: codecConfiguration,\n    };\n\n    const promise = fetch('POST', URLUtils.qualifyUrl(url), payload)\n      .then(\n        (response) => MessageFormatter.formatResultMessage(response),\n        (error) => {\n          if (error.additional && error.additional.status === 400) {\n            UserNotification.error('Please ensure the selected codec and its configuration are right. '\n              + 'Check your server logs for more information.', 'Could not load raw message');\n\n            return;\n          }\n\n          UserNotification.error(`Loading raw message failed with status: ${error}`,\n            'Could not load raw message');\n        },\n      );\n\n    MessagesActions.loadRawMessage.promise(promise);\n  },\n});\n\nexport default MessagesStore;\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n  var e, m\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var nBits = -7\n  var i = isLE ? (nBytes - 1) : 0\n  var d = isLE ? -1 : 1\n  var s = buffer[offset + i]\n\n  i += d\n\n  e = s & ((1 << (-nBits)) - 1)\n  s >>= (-nBits)\n  nBits += eLen\n  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  m = e & ((1 << (-nBits)) - 1)\n  e >>= (-nBits)\n  nBits += mLen\n  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  if (e === 0) {\n    e = 1 - eBias\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity)\n  } else {\n    m = m + Math.pow(2, mLen)\n    e = e - eBias\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n  var i = isLE ? 0 : (nBytes - 1)\n  var d = isLE ? 1 : -1\n  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n  value = Math.abs(value)\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0\n    e = eMax\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2)\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--\n      c *= 2\n    }\n    if (e + eBias >= 1) {\n      value += rt / c\n    } else {\n      value += rt * Math.pow(2, 1 - eBias)\n    }\n    if (value * c >= 2) {\n      e++\n      c /= 2\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0\n      e = eMax\n    } else if (e + eBias >= 1) {\n      m = ((value * c) - 1) * Math.pow(2, mLen)\n      e = e + eBias\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n      e = 0\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n  e = (e << mLen) | m\n  eLen += mLen\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n  buffer[offset + i - d] |= s * 128\n}\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport { qualifyUrl } from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport UserNotification from 'util/UserNotification';\nimport fetch from 'logic/rest/FetchProvider';\nimport ActionsProvider from 'injection/ActionsProvider';\nimport { singletonStore } from 'views/logic/singleton';\n\nconst CustomizationActions = ActionsProvider.getActions('Customizations');\n\nconst urlPrefix = ApiRoutes.ClusterConfigResource.config().url;\n\nexport type CustomizationsStoreState = {\n  customization: {},\n};\n\nconst CustomizationStore = singletonStore('customization.store', () => Reflux.createStore({\n  listenables: [CustomizationActions],\n\n  customization: {},\n\n  getInitialState() {\n    return {\n      customization: this.customization,\n    };\n  },\n\n  get(type: string) {\n    const promise = fetch('GET', this._url(`/${type}`));\n\n    promise.then((response) => {\n      this.customization = { ...this.customization, [type]: response };\n      this.propagateChanges();\n\n      return response;\n    });\n\n    CustomizationActions.get.promise(promise);\n  },\n\n  update(type: string, config: {}) {\n    const promise = fetch('PUT', this._url(`/${type}`), config);\n\n    promise.then(\n      (response) => {\n        this.customization = { ...this.customization, [type]: response };\n        this.propagateChanges();\n\n        return response;\n      },\n      (error) => {\n        UserNotification.error(`Update failed: ${error}`, `Could not update customization: ${type}`);\n      },\n    );\n\n    CustomizationActions.update.promise(promise);\n  },\n\n  propagateChanges() {\n    this.trigger(this.getState());\n  },\n\n  getState(): CustomizationsStoreState {\n    return {\n      customization: this.customization,\n    };\n  },\n\n  _url(path: string): string {\n    return qualifyUrl(urlPrefix + path);\n  },\n}));\n\nexport default CustomizationStore;\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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\n/**\n * Push array with unique items\n *\n * Ignores falsy items, except 0 so we can use it to construct arrays of indices.\n *\n * @param {array} array\n *  array to be filled\n * @param {any} item\n *  item to be or not to be inserted\n * @return {array}\n *  ref to array (now possibly containing one more item)\n *\n */\nmodule.exports = function pushUnique(array, item) {\n    if(item instanceof RegExp) {\n        var itemStr = item.toString();\n        for(var i = 0; i < array.length; i++) {\n            if(array[i] instanceof RegExp && array[i].toString() === itemStr) {\n                return array;\n            }\n        }\n        array.push(item);\n    } else if((item || item === 0) && array.indexOf(item) === -1) array.push(item);\n\n    return array;\n};\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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\n\nmodule.exports = {\n    /**\n     * Timing information for interactive elements\n     */\n    SHOW_PLACEHOLDER: 100,\n    HIDE_PLACEHOLDER: 1000,\n\n    // opacity dimming fraction for points that are not in selection\n    DESELECTDIM: 0.2\n};\n","module.exports = fromRotation\n\n/**\n * Creates a matrix from a given angle around a given axis\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest)\n *     mat4.rotate(dest, dest, rad, axis)\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @param {vec3} axis the axis to rotate around\n * @returns {mat4} out\n */\nfunction fromRotation(out, rad, axis) {\n  var s, c, t\n  var x = axis[0]\n  var y = axis[1]\n  var z = axis[2]\n  var len = Math.sqrt(x * x + y * y + z * z)\n\n  if (Math.abs(len) < 0.000001) {\n    return null\n  }\n\n  len = 1 / len\n  x *= len\n  y *= len\n  z *= len\n\n  s = Math.sin(rad)\n  c = Math.cos(rad)\n  t = 1 - c\n\n  // Perform rotation-specific matrix multiplication\n  out[0] = x * x * t + c\n  out[1] = y * x * t + z * s\n  out[2] = z * x * t - y * s\n  out[3] = 0\n  out[4] = x * y * t - z * s\n  out[5] = y * y * t + c\n  out[6] = z * y * t + x * s\n  out[7] = 0\n  out[8] = x * z * t + y * s\n  out[9] = y * z * t - x * s\n  out[10] = z * z * t + c\n  out[11] = 0\n  out[12] = 0\n  out[13] = 0\n  out[14] = 0\n  out[15] = 1\n  return out\n}\n","module.exports = fromQuat;\n\n/**\n * Creates a matrix from a quaternion rotation.\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @returns {mat4} out\n */\nfunction fromQuat(out, q) {\n    var x = q[0], y = q[1], z = q[2], w = q[3],\n        x2 = x + x,\n        y2 = y + y,\n        z2 = z + z,\n\n        xx = x * x2,\n        yx = y * x2,\n        yy = y * y2,\n        zx = z * x2,\n        zy = z * y2,\n        zz = z * z2,\n        wx = w * x2,\n        wy = w * y2,\n        wz = w * z2;\n\n    out[0] = 1 - yy - zz;\n    out[1] = yx + wz;\n    out[2] = zx - wy;\n    out[3] = 0;\n\n    out[4] = yx - wz;\n    out[5] = 1 - xx - zz;\n    out[6] = zy + wx;\n    out[7] = 0;\n\n    out[8] = zx + wy;\n    out[9] = zy - wx;\n    out[10] = 1 - xx - yy;\n    out[11] = 0;\n\n    out[12] = 0;\n    out[13] = 0;\n    out[14] = 0;\n    out[15] = 1;\n\n    return out;\n};","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport fetch from 'logic/rest/FetchProvider';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport UserNotification from 'util/UserNotification';\nimport { qualifyUrl } from 'util/URLUtils';\nimport type { UserJSON } from 'logic/users/User';\n\ntype Role = {\n  name: string,\n  description: string,\n  permissions: string[],\n};\n\ntype RoleMembership = {\n  role: string,\n  users: UserJSON[],\n};\n\nconst RolesStore = Reflux.createStore({\n  loadRoles(): Promise {\n    return fetch('GET', qualifyUrl(ApiRoutes.RolesApiController.listRoles().url))\n      .then(\n        (response) => response.roles,\n        (error) => {\n          if (error.additional.status !== 404) {\n            UserNotification.error(`Loading role list failed with status: ${error}`,\n              'Could not load role list');\n          }\n        },\n      );\n  },\n\n  createRole(role: Role): Promise {\n    const url = qualifyUrl(ApiRoutes.RolesApiController.createRole().url);\n    const promise = fetch('POST', url, role);\n\n    promise.then((newRole) => {\n      UserNotification.success(`Role \"${newRole.name}\" was created successfully`);\n    }, (error) => {\n      UserNotification.error(`Creating role \"${role.name}\" failed with status: ${error}`,\n        'Could not create role');\n    });\n\n    return promise;\n  },\n\n  updateRole(rolename: string, role: Role): Promise {\n    const promise = fetch('PUT', qualifyUrl(ApiRoutes.RolesApiController.updateRole(encodeURIComponent(rolename)).url), role);\n\n    promise.then((newRole) => {\n      UserNotification.success(`Role \"${newRole.name}\" was updated successfully`);\n    }, (error) => {\n      if (error.additional.status !== 404) {\n        UserNotification.error(`Updating role failed with status: ${error}`,\n          'Could not update role');\n      }\n    });\n\n    return promise;\n  },\n\n  deleteRole(rolename: string): Promise {\n    const url = qualifyUrl(ApiRoutes.RolesApiController.deleteRole(encodeURIComponent(rolename)).url);\n    const promise = fetch('DELETE', url);\n\n    promise.then(() => {\n      UserNotification.success(`Role \"${rolename}\" was deleted successfully`);\n    }, (error) => {\n      if (error.additional.status !== 404) {\n        UserNotification.error(`Deleting role failed with status: ${error}`,\n          'Could not delete role');\n      }\n    });\n\n    return promise;\n  },\n\n  getMembers(rolename: string): Promise {\n    const url = qualifyUrl(ApiRoutes.RolesApiController.loadMembers(encodeURIComponent(rolename)).url);\n    const promise = fetch('GET', url);\n\n    promise.catch((error) => {\n      if (error.additional.status !== 404) {\n        UserNotification.error(`Could not load role's members with status: ${error}`,\n          'Could not load role members');\n      }\n    });\n\n    return promise;\n  },\n});\n\nexport default RolesStore;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nconst ConfigurationVariableActions = Reflux.createActions({\n  all: { asyncResult: true },\n  save: { asyncResult: true },\n  delete: { asyncResult: true },\n  validate: { asyncResult: true },\n  getConfigurations: { asyncResult: true },\n});\n\nexport default ConfigurationVariableActions;\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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 mod = require('./mod').mod;\n\n/*\n * look for intersection of two line segments\n *   (1->2 and 3->4) - returns array [x,y] if they do, null if not\n */\nexports.segmentsIntersect = segmentsIntersect;\nfunction segmentsIntersect(x1, y1, x2, y2, x3, y3, x4, y4) {\n    var a = x2 - x1;\n    var b = x3 - x1;\n    var c = x4 - x3;\n    var d = y2 - y1;\n    var e = y3 - y1;\n    var f = y4 - y3;\n    var det = a * f - c * d;\n    // parallel lines? intersection is undefined\n    // ignore the case where they are colinear\n    if(det === 0) return null;\n    var t = (b * f - c * e) / det;\n    var u = (b * d - a * e) / det;\n    // segments do not intersect?\n    if(u < 0 || u > 1 || t < 0 || t > 1) return null;\n\n    return {x: x1 + a * t, y: y1 + d * t};\n}\n\n/*\n * find the minimum distance between two line segments (1->2 and 3->4)\n */\nexports.segmentDistance = function segmentDistance(x1, y1, x2, y2, x3, y3, x4, y4) {\n    if(segmentsIntersect(x1, y1, x2, y2, x3, y3, x4, y4)) return 0;\n\n    // the two segments and their lengths squared\n    var x12 = x2 - x1;\n    var y12 = y2 - y1;\n    var x34 = x4 - x3;\n    var y34 = y4 - y3;\n    var ll12 = x12 * x12 + y12 * y12;\n    var ll34 = x34 * x34 + y34 * y34;\n\n    // calculate distance squared, then take the sqrt at the very end\n    var dist2 = Math.min(\n        perpDistance2(x12, y12, ll12, x3 - x1, y3 - y1),\n        perpDistance2(x12, y12, ll12, x4 - x1, y4 - y1),\n        perpDistance2(x34, y34, ll34, x1 - x3, y1 - y3),\n        perpDistance2(x34, y34, ll34, x2 - x3, y2 - y3)\n    );\n\n    return Math.sqrt(dist2);\n};\n\n/*\n * distance squared from segment ab to point c\n * [xab, yab] is the vector b-a\n * [xac, yac] is the vector c-a\n * llab is the length squared of (b-a), just to simplify calculation\n */\nfunction perpDistance2(xab, yab, llab, xac, yac) {\n    var fcAB = (xac * xab + yac * yab);\n    if(fcAB < 0) {\n        // point c is closer to point a\n        return xac * xac + yac * yac;\n    } else if(fcAB > llab) {\n        // point c is closer to point b\n        var xbc = xac - xab;\n        var ybc = yac - yab;\n        return xbc * xbc + ybc * ybc;\n    } else {\n        // perpendicular distance is the shortest\n        var crossProduct = xac * yab - yac * xab;\n        return crossProduct * crossProduct / llab;\n    }\n}\n\n// a very short-term cache for getTextLocation, just because\n// we're often looping over the same locations multiple times\n// invalidated as soon as we look at a different path\nvar locationCache, workingPath, workingTextWidth;\n\n// turn a path and position along it into x, y, and angle for the given text\nexports.getTextLocation = function getTextLocation(path, totalPathLen, positionOnPath, textWidth) {\n    if(path !== workingPath || textWidth !== workingTextWidth) {\n        locationCache = {};\n        workingPath = path;\n        workingTextWidth = textWidth;\n    }\n    if(locationCache[positionOnPath]) {\n        return locationCache[positionOnPath];\n    }\n\n    // for the angle, use points on the path separated by the text width\n    // even though due to curvature, the text will cover a bit more than that\n    var p0 = path.getPointAtLength(mod(positionOnPath - textWidth / 2, totalPathLen));\n    var p1 = path.getPointAtLength(mod(positionOnPath + textWidth / 2, totalPathLen));\n    // note: atan handles 1/0 nicely\n    var theta = Math.atan((p1.y - p0.y) / (p1.x - p0.x));\n    // center the text at 2/3 of the center position plus 1/3 the p0/p1 midpoint\n    // that's the average position of this segment, assuming it's roughly quadratic\n    var pCenter = path.getPointAtLength(mod(positionOnPath, totalPathLen));\n    var x = (pCenter.x * 4 + p0.x + p1.x) / 6;\n    var y = (pCenter.y * 4 + p0.y + p1.y) / 6;\n\n    var out = {x: x, y: y, theta: theta};\n    locationCache[positionOnPath] = out;\n    return out;\n};\n\nexports.clearLocationCache = function() {\n    workingPath = null;\n};\n\n/*\n * Find the segment of `path` that's within the visible area\n * given by `bounds` {left, right, top, bottom}, to within a\n * precision of `buffer` px\n *\n * returns: undefined if nothing is visible, else object:\n * {\n *   min: position where the path first enters bounds, or 0 if it\n *        starts within bounds\n *   max: position where the path last exits bounds, or the path length\n *        if it finishes within bounds\n *   len: max - min, ie the length of visible path\n *   total: the total path length - just included so the caller doesn't\n *        need to call path.getTotalLength() again\n *   isClosed: true iff the start and end points of the path are both visible\n *        and are at the same point\n * }\n *\n * Works by starting from either end and repeatedly finding the distance from\n * that point to the plot area, and if it's outside the plot, moving along the\n * path by that distance (because the plot must be at least that far away on\n * the path). Note that if a path enters, exits, and re-enters the plot, we\n * will not capture this behavior.\n */\nexports.getVisibleSegment = function getVisibleSegment(path, bounds, buffer) {\n    var left = bounds.left;\n    var right = bounds.right;\n    var top = bounds.top;\n    var bottom = bounds.bottom;\n\n    var pMin = 0;\n    var pTotal = path.getTotalLength();\n    var pMax = pTotal;\n\n    var pt0, ptTotal;\n\n    function getDistToPlot(len) {\n        var pt = path.getPointAtLength(len);\n\n        // hold on to the start and end points for `closed`\n        if(len === 0) pt0 = pt;\n        else if(len === pTotal) ptTotal = pt;\n\n        var dx = (pt.x < left) ? left - pt.x : (pt.x > right ? pt.x - right : 0);\n        var dy = (pt.y < top) ? top - pt.y : (pt.y > bottom ? pt.y - bottom : 0);\n        return Math.sqrt(dx * dx + dy * dy);\n    }\n\n    var distToPlot = getDistToPlot(pMin);\n    while(distToPlot) {\n        pMin += distToPlot + buffer;\n        if(pMin > pMax) return;\n        distToPlot = getDistToPlot(pMin);\n    }\n\n    distToPlot = getDistToPlot(pMax);\n    while(distToPlot) {\n        pMax -= distToPlot + buffer;\n        if(pMin > pMax) return;\n        distToPlot = getDistToPlot(pMax);\n    }\n\n    return {\n        min: pMin,\n        max: pMax,\n        len: pMax - pMin,\n        total: pTotal,\n        isClosed: pMin === 0 && pMax === pTotal &&\n            Math.abs(pt0.x - ptTotal.x) < 0.1 &&\n            Math.abs(pt0.y - ptTotal.y) < 0.1\n    };\n};\n\n/**\n * Find point on SVG path corresponding to a given constraint coordinate\n *\n * @param {SVGPathElement} path\n * @param {Number} val : constraint coordinate value\n * @param {String} coord : 'x' or 'y' the constraint coordinate\n * @param {Object} opts :\n *  - {Number} pathLength : supply total path length before hand\n *  - {Number} tolerance\n *  - {Number} iterationLimit\n * @return {SVGPoint}\n */\nexports.findPointOnPath = function findPointOnPath(path, val, coord, opts) {\n    opts = opts || {};\n\n    var pathLength = opts.pathLength || path.getTotalLength();\n    var tolerance = opts.tolerance || 1e-3;\n    var iterationLimit = opts.iterationLimit || 30;\n\n    // if path starts at a val greater than the path tail (like on vertical violins),\n    // we must flip the sign of the computed diff.\n    var mul = path.getPointAtLength(0)[coord] > path.getPointAtLength(pathLength)[coord] ? -1 : 1;\n\n    var i = 0;\n    var b0 = 0;\n    var b1 = pathLength;\n    var mid;\n    var pt;\n    var diff;\n\n    while(i < iterationLimit) {\n        mid = (b0 + b1) / 2;\n        pt = path.getPointAtLength(mid);\n        diff = pt[coord] - val;\n\n        if(Math.abs(diff) < tolerance) {\n            return pt;\n        } else {\n            if(mul * diff > 0) {\n                b1 = mid;\n            } else {\n                b0 = mid;\n            }\n            i++;\n        }\n    }\n    return pt;\n};\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport { max } from 'lodash';\n\nimport ContentPack from 'logic/content-packs/ContentPack';\n\nexport default class ContentPackRevisions {\n  constructor(contentPackRevision) {\n    this._value = Object.keys(contentPackRevision).reduce((acc, rev) => {\n      const contentPack = contentPackRevision[rev];\n\n      /* eslint-disable-next-line no-return-assign */\n      acc[parseInt(rev, 10)] = ContentPack.fromJSON(contentPack);\n\n      return acc;\n    }, {});\n  }\n\n  get latestRevision() {\n    return max(this.revisions);\n  }\n\n  get revisions() {\n    return Object.keys(this._value).map((rev) => parseInt(rev, 10));\n  }\n\n  get latest() {\n    return this._value[this.latestRevision];\n  }\n\n  get contentPacks() {\n    return Object.values(this._value);\n  }\n\n  createNewVersionFromRev(rev) {\n    return this.contentPack(parseInt(rev, 10)).toBuilder()\n      .rev(this.latestRevision + 1)\n      .build();\n  }\n\n  contentPack(revision) {\n    return this._value[revision];\n  }\n}\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport * as URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\nimport ActionsProvider from 'injection/ActionsProvider';\nimport ContentPackRevisions from 'logic/content-packs/ContentPackRevisions';\n\nconst ContentPacksActions = ActionsProvider.getActions('ContentPacks');\n\nconst ContentPacksStore = Reflux.createStore({\n  listenables: [ContentPacksActions],\n\n  get(contentPackId) {\n    const url = URLUtils.qualifyUrl(ApiRoutes.ContentPacksController.get(contentPackId).url);\n    const promise = fetch('GET', url)\n      .then((response) => {\n        const contentPackRevision = new ContentPackRevisions(response.content_pack_revisions);\n        const constraints = response.constraints_result;\n        const result = {\n          contentPackRevisions: contentPackRevision,\n          selectedVersion: contentPackRevision.latestRevision,\n          constraints: constraints,\n        };\n\n        this.trigger(result);\n\n        return result;\n      });\n\n    ContentPacksActions.get.promise(promise);\n  },\n\n  getRev(contentPackId, contentPackRev) {\n    const url = URLUtils.qualifyUrl(ApiRoutes.ContentPacksController.getRev(contentPackId, contentPackRev).url);\n    const promise = fetch('GET', url)\n      .then((result) => {\n        this.trigger({ contentPack: result.content_pack });\n\n        return result;\n      });\n\n    ContentPacksActions.getRev.promise(promise);\n  },\n\n  list() {\n    const url = URLUtils.qualifyUrl(ApiRoutes.ContentPacksController.list().url);\n    const promise = fetch('GET', url)\n      .then((result) => {\n        this.trigger({ contentPacks: result.content_packs, contentPackMetadata: result.content_packs_metadata });\n\n        return result;\n      });\n\n    ContentPacksActions.list.promise(promise);\n  },\n\n  create(request) {\n    const promise = fetch('POST', URLUtils.qualifyUrl(ApiRoutes.ContentPacksController.create().url), request);\n\n    ContentPacksActions.create.promise(promise);\n  },\n\n  delete(contentPackId) {\n    const promise = fetch('DELETE', URLUtils.qualifyUrl(ApiRoutes.ContentPacksController.delete(contentPackId).url));\n\n    ContentPacksActions.delete.promise(promise);\n  },\n\n  deleteRev(contentPackId, revision) {\n    const promise = fetch('DELETE', URLUtils.qualifyUrl(ApiRoutes.ContentPacksController.deleteRev(contentPackId, revision).url));\n\n    ContentPacksActions.deleteRev.promise(promise);\n  },\n\n  install(contentPackId, revision, parameters) {\n    const promise = fetch('POST', URLUtils.qualifyUrl(ApiRoutes.ContentPacksController.install(contentPackId, revision).url), parameters);\n\n    ContentPacksActions.install.promise(promise);\n  },\n  installList(contentPackId) {\n    const url = URLUtils.qualifyUrl(ApiRoutes.ContentPacksController.installList(contentPackId).url);\n    const promise = fetch('GET', url)\n      .then((result) => {\n        this.trigger({ installations: result.installations });\n\n        return result;\n      });\n\n    ContentPacksActions.installList.promise(promise);\n  },\n  uninstall(contentPackId, installId) {\n    const promise = fetch('DELETE', URLUtils.qualifyUrl(ApiRoutes.ContentPacksController.uninstall(contentPackId, installId).url));\n\n    ContentPacksActions.uninstall.promise(promise);\n  },\n  uninstallDetails(contentPackId, installId) {\n    const url = URLUtils.qualifyUrl(ApiRoutes.ContentPacksController.uninstallDetails(contentPackId, installId).url);\n    const promise = fetch('GET', url)\n      .then((result) => {\n        this.trigger({ uninstallEntities: result.entities });\n\n        return result;\n      });\n\n    ContentPacksActions.uninstallDetails.promise(promise);\n  },\n});\n\nexport default ContentPacksStore;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport { isEqualWith, isFunction } from 'lodash';\nimport { isValidElement } from 'react';\nimport isEqual from 'react-fast-compare';\n\nconst hasFn = (obj, fn) => (obj && obj[fn] && isFunction(obj[fn]));\nconst hasEquals = (obj) => hasFn(obj, 'equals');\nconst isImmutable = (obj) => hasFn(obj, 'toJS');\n\nconst _isEqual = (first, second) => {\n  if (isImmutable(first) && isImmutable(second)) {\n    return isEqualWith(first.toJS(), second.toJS(), _isEqual);\n  }\n\n  if (hasEquals(first)) {\n    return first.equals(second);\n  }\n\n  if (isValidElement(first) || isValidElement(second)) {\n    return isEqual(first, second);\n  }\n\n  return undefined;\n};\n\nconst isDeepEqual = (first: any, second: any): boolean => isEqualWith(first, second, _isEqual);\n\nexport default isDeepEqual;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport { singletonActions } from 'views/logic/singleton';\n\nconst StreamsActions = singletonActions('Streams', () => Reflux.createActions({\n  searchPaginated: { asyncResult: true },\n  listStreams: { asyncResult: true },\n  load: { asyncResult: true },\n  get: { asyncResult: true },\n  remove: { asyncResult: true },\n  pause: { asyncResult: true },\n  resume: { asyncResult: true },\n  cloneStream: { asyncResult: true },\n  update: { asyncResult: true },\n  save: { asyncResult: true },\n  removeOutput: { asyncResult: true },\n  addOutput: { asyncResult: true },\n  testMatch: { asyncResult: true },\n}));\n\nexport default StreamsActions;\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global.Immutable = factory());\n}(this, function () { 'use strict';var SLICE$0 = Array.prototype.slice;\n\n  function createClass(ctor, superClass) {\n    if (superClass) {\n      ctor.prototype = Object.create(superClass.prototype);\n    }\n    ctor.prototype.constructor = ctor;\n  }\n\n  function Iterable(value) {\n      return isIterable(value) ? value : Seq(value);\n    }\n\n\n  createClass(KeyedIterable, Iterable);\n    function KeyedIterable(value) {\n      return isKeyed(value) ? value : KeyedSeq(value);\n    }\n\n\n  createClass(IndexedIterable, Iterable);\n    function IndexedIterable(value) {\n      return isIndexed(value) ? value : IndexedSeq(value);\n    }\n\n\n  createClass(SetIterable, Iterable);\n    function SetIterable(value) {\n      return isIterable(value) && !isAssociative(value) ? value : SetSeq(value);\n    }\n\n\n\n  function isIterable(maybeIterable) {\n    return !!(maybeIterable && maybeIterable[IS_ITERABLE_SENTINEL]);\n  }\n\n  function isKeyed(maybeKeyed) {\n    return !!(maybeKeyed && maybeKeyed[IS_KEYED_SENTINEL]);\n  }\n\n  function isIndexed(maybeIndexed) {\n    return !!(maybeIndexed && maybeIndexed[IS_INDEXED_SENTINEL]);\n  }\n\n  function isAssociative(maybeAssociative) {\n    return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n  }\n\n  function isOrdered(maybeOrdered) {\n    return !!(maybeOrdered && maybeOrdered[IS_ORDERED_SENTINEL]);\n  }\n\n  Iterable.isIterable = isIterable;\n  Iterable.isKeyed = isKeyed;\n  Iterable.isIndexed = isIndexed;\n  Iterable.isAssociative = isAssociative;\n  Iterable.isOrdered = isOrdered;\n\n  Iterable.Keyed = KeyedIterable;\n  Iterable.Indexed = IndexedIterable;\n  Iterable.Set = SetIterable;\n\n\n  var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n  var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n  var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n  var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n  // Used for setting prototype methods that IE8 chokes on.\n  var DELETE = 'delete';\n\n  // Constants describing the size of trie nodes.\n  var SHIFT = 5; // Resulted in best performance after ______?\n  var SIZE = 1 << SHIFT;\n  var MASK = SIZE - 1;\n\n  // A consistent shared value representing \"not set\" which equals nothing other\n  // than itself, and nothing that could be provided externally.\n  var NOT_SET = {};\n\n  // Boolean references, Rough equivalent of `bool &`.\n  var CHANGE_LENGTH = { value: false };\n  var DID_ALTER = { value: false };\n\n  function MakeRef(ref) {\n    ref.value = false;\n    return ref;\n  }\n\n  function SetRef(ref) {\n    ref && (ref.value = true);\n  }\n\n  // A function which returns a value representing an \"owner\" for transient writes\n  // to tries. The return value will only ever equal itself, and will not equal\n  // the return of any subsequent call of this function.\n  function OwnerID() {}\n\n  // http://jsperf.com/copy-array-inline\n  function arrCopy(arr, offset) {\n    offset = offset || 0;\n    var len = Math.max(0, arr.length - offset);\n    var newArr = new Array(len);\n    for (var ii = 0; ii < len; ii++) {\n      newArr[ii] = arr[ii + offset];\n    }\n    return newArr;\n  }\n\n  function ensureSize(iter) {\n    if (iter.size === undefined) {\n      iter.size = iter.__iterate(returnTrue);\n    }\n    return iter.size;\n  }\n\n  function wrapIndex(iter, index) {\n    // This implements \"is array index\" which the ECMAString spec defines as:\n    //\n    //     A String property name P is an array index if and only if\n    //     ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n    //     to 2^32−1.\n    //\n    // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n    if (typeof index !== 'number') {\n      var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n      if ('' + uint32Index !== index || uint32Index === 4294967295) {\n        return NaN;\n      }\n      index = uint32Index;\n    }\n    return index < 0 ? ensureSize(iter) + index : index;\n  }\n\n  function returnTrue() {\n    return true;\n  }\n\n  function wholeSlice(begin, end, size) {\n    return (begin === 0 || (size !== undefined && begin <= -size)) &&\n      (end === undefined || (size !== undefined && end >= size));\n  }\n\n  function resolveBegin(begin, size) {\n    return resolveIndex(begin, size, 0);\n  }\n\n  function resolveEnd(end, size) {\n    return resolveIndex(end, size, size);\n  }\n\n  function resolveIndex(index, size, defaultIndex) {\n    return index === undefined ?\n      defaultIndex :\n      index < 0 ?\n        Math.max(0, size + index) :\n        size === undefined ?\n          index :\n          Math.min(size, index);\n  }\n\n  /* global Symbol */\n\n  var ITERATE_KEYS = 0;\n  var ITERATE_VALUES = 1;\n  var ITERATE_ENTRIES = 2;\n\n  var REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n  var FAUX_ITERATOR_SYMBOL = '@@iterator';\n\n  var ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\n\n  function Iterator(next) {\n      this.next = next;\n    }\n\n    Iterator.prototype.toString = function() {\n      return '[Iterator]';\n    };\n\n\n  Iterator.KEYS = ITERATE_KEYS;\n  Iterator.VALUES = ITERATE_VALUES;\n  Iterator.ENTRIES = ITERATE_ENTRIES;\n\n  Iterator.prototype.inspect =\n  Iterator.prototype.toSource = function () { return this.toString(); }\n  Iterator.prototype[ITERATOR_SYMBOL] = function () {\n    return this;\n  };\n\n\n  function iteratorValue(type, k, v, iteratorResult) {\n    var value = type === 0 ? k : type === 1 ? v : [k, v];\n    iteratorResult ? (iteratorResult.value = value) : (iteratorResult = {\n      value: value, done: false\n    });\n    return iteratorResult;\n  }\n\n  function iteratorDone() {\n    return { value: undefined, done: true };\n  }\n\n  function hasIterator(maybeIterable) {\n    return !!getIteratorFn(maybeIterable);\n  }\n\n  function isIterator(maybeIterator) {\n    return maybeIterator && typeof maybeIterator.next === 'function';\n  }\n\n  function getIterator(iterable) {\n    var iteratorFn = getIteratorFn(iterable);\n    return iteratorFn && iteratorFn.call(iterable);\n  }\n\n  function getIteratorFn(iterable) {\n    var iteratorFn = iterable && (\n      (REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n      iterable[FAUX_ITERATOR_SYMBOL]\n    );\n    if (typeof iteratorFn === 'function') {\n      return iteratorFn;\n    }\n  }\n\n  function isArrayLike(value) {\n    return value && typeof value.length === 'number';\n  }\n\n  createClass(Seq, Iterable);\n    function Seq(value) {\n      return value === null || value === undefined ? emptySequence() :\n        isIterable(value) ? value.toSeq() : seqFromValue(value);\n    }\n\n    Seq.of = function(/*...values*/) {\n      return Seq(arguments);\n    };\n\n    Seq.prototype.toSeq = function() {\n      return this;\n    };\n\n    Seq.prototype.toString = function() {\n      return this.__toString('Seq {', '}');\n    };\n\n    Seq.prototype.cacheResult = function() {\n      if (!this._cache && this.__iterateUncached) {\n        this._cache = this.entrySeq().toArray();\n        this.size = this._cache.length;\n      }\n      return this;\n    };\n\n    // abstract __iterateUncached(fn, reverse)\n\n    Seq.prototype.__iterate = function(fn, reverse) {\n      return seqIterate(this, fn, reverse, true);\n    };\n\n    // abstract __iteratorUncached(type, reverse)\n\n    Seq.prototype.__iterator = function(type, reverse) {\n      return seqIterator(this, type, reverse, true);\n    };\n\n\n\n  createClass(KeyedSeq, Seq);\n    function KeyedSeq(value) {\n      return value === null || value === undefined ?\n        emptySequence().toKeyedSeq() :\n        isIterable(value) ?\n          (isKeyed(value) ? value.toSeq() : value.fromEntrySeq()) :\n          keyedSeqFromValue(value);\n    }\n\n    KeyedSeq.prototype.toKeyedSeq = function() {\n      return this;\n    };\n\n\n\n  createClass(IndexedSeq, Seq);\n    function IndexedSeq(value) {\n      return value === null || value === undefined ? emptySequence() :\n        !isIterable(value) ? indexedSeqFromValue(value) :\n        isKeyed(value) ? value.entrySeq() : value.toIndexedSeq();\n    }\n\n    IndexedSeq.of = function(/*...values*/) {\n      return IndexedSeq(arguments);\n    };\n\n    IndexedSeq.prototype.toIndexedSeq = function() {\n      return this;\n    };\n\n    IndexedSeq.prototype.toString = function() {\n      return this.__toString('Seq [', ']');\n    };\n\n    IndexedSeq.prototype.__iterate = function(fn, reverse) {\n      return seqIterate(this, fn, reverse, false);\n    };\n\n    IndexedSeq.prototype.__iterator = function(type, reverse) {\n      return seqIterator(this, type, reverse, false);\n    };\n\n\n\n  createClass(SetSeq, Seq);\n    function SetSeq(value) {\n      return (\n        value === null || value === undefined ? emptySequence() :\n        !isIterable(value) ? indexedSeqFromValue(value) :\n        isKeyed(value) ? value.entrySeq() : value\n      ).toSetSeq();\n    }\n\n    SetSeq.of = function(/*...values*/) {\n      return SetSeq(arguments);\n    };\n\n    SetSeq.prototype.toSetSeq = function() {\n      return this;\n    };\n\n\n\n  Seq.isSeq = isSeq;\n  Seq.Keyed = KeyedSeq;\n  Seq.Set = SetSeq;\n  Seq.Indexed = IndexedSeq;\n\n  var IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\n\n  Seq.prototype[IS_SEQ_SENTINEL] = true;\n\n\n\n  createClass(ArraySeq, IndexedSeq);\n    function ArraySeq(array) {\n      this._array = array;\n      this.size = array.length;\n    }\n\n    ArraySeq.prototype.get = function(index, notSetValue) {\n      return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n    };\n\n    ArraySeq.prototype.__iterate = function(fn, reverse) {\n      var array = this._array;\n      var maxIndex = array.length - 1;\n      for (var ii = 0; ii <= maxIndex; ii++) {\n        if (fn(array[reverse ? maxIndex - ii : ii], ii, this) === false) {\n          return ii + 1;\n        }\n      }\n      return ii;\n    };\n\n    ArraySeq.prototype.__iterator = function(type, reverse) {\n      var array = this._array;\n      var maxIndex = array.length - 1;\n      var ii = 0;\n      return new Iterator(function() \n        {return ii > maxIndex ?\n          iteratorDone() :\n          iteratorValue(type, ii, array[reverse ? maxIndex - ii++ : ii++])}\n      );\n    };\n\n\n\n  createClass(ObjectSeq, KeyedSeq);\n    function ObjectSeq(object) {\n      var keys = Object.keys(object);\n      this._object = object;\n      this._keys = keys;\n      this.size = keys.length;\n    }\n\n    ObjectSeq.prototype.get = function(key, notSetValue) {\n      if (notSetValue !== undefined && !this.has(key)) {\n        return notSetValue;\n      }\n      return this._object[key];\n    };\n\n    ObjectSeq.prototype.has = function(key) {\n      return this._object.hasOwnProperty(key);\n    };\n\n    ObjectSeq.prototype.__iterate = function(fn, reverse) {\n      var object = this._object;\n      var keys = this._keys;\n      var maxIndex = keys.length - 1;\n      for (var ii = 0; ii <= maxIndex; ii++) {\n        var key = keys[reverse ? maxIndex - ii : ii];\n        if (fn(object[key], key, this) === false) {\n          return ii + 1;\n        }\n      }\n      return ii;\n    };\n\n    ObjectSeq.prototype.__iterator = function(type, reverse) {\n      var object = this._object;\n      var keys = this._keys;\n      var maxIndex = keys.length - 1;\n      var ii = 0;\n      return new Iterator(function()  {\n        var key = keys[reverse ? maxIndex - ii : ii];\n        return ii++ > maxIndex ?\n          iteratorDone() :\n          iteratorValue(type, key, object[key]);\n      });\n    };\n\n  ObjectSeq.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n  createClass(IterableSeq, IndexedSeq);\n    function IterableSeq(iterable) {\n      this._iterable = iterable;\n      this.size = iterable.length || iterable.size;\n    }\n\n    IterableSeq.prototype.__iterateUncached = function(fn, reverse) {\n      if (reverse) {\n        return this.cacheResult().__iterate(fn, reverse);\n      }\n      var iterable = this._iterable;\n      var iterator = getIterator(iterable);\n      var iterations = 0;\n      if (isIterator(iterator)) {\n        var step;\n        while (!(step = iterator.next()).done) {\n          if (fn(step.value, iterations++, this) === false) {\n            break;\n          }\n        }\n      }\n      return iterations;\n    };\n\n    IterableSeq.prototype.__iteratorUncached = function(type, reverse) {\n      if (reverse) {\n        return this.cacheResult().__iterator(type, reverse);\n      }\n      var iterable = this._iterable;\n      var iterator = getIterator(iterable);\n      if (!isIterator(iterator)) {\n        return new Iterator(iteratorDone);\n      }\n      var iterations = 0;\n      return new Iterator(function()  {\n        var step = iterator.next();\n        return step.done ? step : iteratorValue(type, iterations++, step.value);\n      });\n    };\n\n\n\n  createClass(IteratorSeq, IndexedSeq);\n    function IteratorSeq(iterator) {\n      this._iterator = iterator;\n      this._iteratorCache = [];\n    }\n\n    IteratorSeq.prototype.__iterateUncached = function(fn, reverse) {\n      if (reverse) {\n        return this.cacheResult().__iterate(fn, reverse);\n      }\n      var iterator = this._iterator;\n      var cache = this._iteratorCache;\n      var iterations = 0;\n      while (iterations < cache.length) {\n        if (fn(cache[iterations], iterations++, this) === false) {\n          return iterations;\n        }\n      }\n      var step;\n      while (!(step = iterator.next()).done) {\n        var val = step.value;\n        cache[iterations] = val;\n        if (fn(val, iterations++, this) === false) {\n          break;\n        }\n      }\n      return iterations;\n    };\n\n    IteratorSeq.prototype.__iteratorUncached = function(type, reverse) {\n      if (reverse) {\n        return this.cacheResult().__iterator(type, reverse);\n      }\n      var iterator = this._iterator;\n      var cache = this._iteratorCache;\n      var iterations = 0;\n      return new Iterator(function()  {\n        if (iterations >= cache.length) {\n          var step = iterator.next();\n          if (step.done) {\n            return step;\n          }\n          cache[iterations] = step.value;\n        }\n        return iteratorValue(type, iterations, cache[iterations++]);\n      });\n    };\n\n\n\n\n  // # pragma Helper functions\n\n  function isSeq(maybeSeq) {\n    return !!(maybeSeq && maybeSeq[IS_SEQ_SENTINEL]);\n  }\n\n  var EMPTY_SEQ;\n\n  function emptySequence() {\n    return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n  }\n\n  function keyedSeqFromValue(value) {\n    var seq =\n      Array.isArray(value) ? new ArraySeq(value).fromEntrySeq() :\n      isIterator(value) ? new IteratorSeq(value).fromEntrySeq() :\n      hasIterator(value) ? new IterableSeq(value).fromEntrySeq() :\n      typeof value === 'object' ? new ObjectSeq(value) :\n      undefined;\n    if (!seq) {\n      throw new TypeError(\n        'Expected Array or iterable object of [k, v] entries, '+\n        'or keyed object: ' + value\n      );\n    }\n    return seq;\n  }\n\n  function indexedSeqFromValue(value) {\n    var seq = maybeIndexedSeqFromValue(value);\n    if (!seq) {\n      throw new TypeError(\n        'Expected Array or iterable object of values: ' + value\n      );\n    }\n    return seq;\n  }\n\n  function seqFromValue(value) {\n    var seq = maybeIndexedSeqFromValue(value) ||\n      (typeof value === 'object' && new ObjectSeq(value));\n    if (!seq) {\n      throw new TypeError(\n        'Expected Array or iterable object of values, or keyed object: ' + value\n      );\n    }\n    return seq;\n  }\n\n  function maybeIndexedSeqFromValue(value) {\n    return (\n      isArrayLike(value) ? new ArraySeq(value) :\n      isIterator(value) ? new IteratorSeq(value) :\n      hasIterator(value) ? new IterableSeq(value) :\n      undefined\n    );\n  }\n\n  function seqIterate(seq, fn, reverse, useKeys) {\n    var cache = seq._cache;\n    if (cache) {\n      var maxIndex = cache.length - 1;\n      for (var ii = 0; ii <= maxIndex; ii++) {\n        var entry = cache[reverse ? maxIndex - ii : ii];\n        if (fn(entry[1], useKeys ? entry[0] : ii, seq) === false) {\n          return ii + 1;\n        }\n      }\n      return ii;\n    }\n    return seq.__iterateUncached(fn, reverse);\n  }\n\n  function seqIterator(seq, type, reverse, useKeys) {\n    var cache = seq._cache;\n    if (cache) {\n      var maxIndex = cache.length - 1;\n      var ii = 0;\n      return new Iterator(function()  {\n        var entry = cache[reverse ? maxIndex - ii : ii];\n        return ii++ > maxIndex ?\n          iteratorDone() :\n          iteratorValue(type, useKeys ? entry[0] : ii - 1, entry[1]);\n      });\n    }\n    return seq.__iteratorUncached(type, reverse);\n  }\n\n  function fromJS(json, converter) {\n    return converter ?\n      fromJSWith(converter, json, '', {'': json}) :\n      fromJSDefault(json);\n  }\n\n  function fromJSWith(converter, json, key, parentJSON) {\n    if (Array.isArray(json)) {\n      return converter.call(parentJSON, key, IndexedSeq(json).map(function(v, k)  {return fromJSWith(converter, v, k, json)}));\n    }\n    if (isPlainObj(json)) {\n      return converter.call(parentJSON, key, KeyedSeq(json).map(function(v, k)  {return fromJSWith(converter, v, k, json)}));\n    }\n    return json;\n  }\n\n  function fromJSDefault(json) {\n    if (Array.isArray(json)) {\n      return IndexedSeq(json).map(fromJSDefault).toList();\n    }\n    if (isPlainObj(json)) {\n      return KeyedSeq(json).map(fromJSDefault).toMap();\n    }\n    return json;\n  }\n\n  function isPlainObj(value) {\n    return value && (value.constructor === Object || value.constructor === undefined);\n  }\n\n  /**\n   * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n   * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n   *\n   * NaN is considered the same as NaN, however -0 and 0 are considered the same\n   * value, which is different from the algorithm described by\n   * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n   *\n   * This is extended further to allow Objects to describe the values they\n   * represent, by way of `valueOf` or `equals` (and `hashCode`).\n   *\n   * Note: because of this extension, the key equality of Immutable.Map and the\n   * value equality of Immutable.Set will differ from ES6 Map and Set.\n   *\n   * ### Defining custom values\n   *\n   * The easiest way to describe the value an object represents is by implementing\n   * `valueOf`. For example, `Date` represents a value by returning a unix\n   * timestamp for `valueOf`:\n   *\n   *     var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n   *     var date2 = new Date(1234567890000);\n   *     date1.valueOf(); // 1234567890000\n   *     assert( date1 !== date2 );\n   *     assert( Immutable.is( date1, date2 ) );\n   *\n   * Note: overriding `valueOf` may have other implications if you use this object\n   * where JavaScript expects a primitive, such as implicit string coercion.\n   *\n   * For more complex types, especially collections, implementing `valueOf` may\n   * not be performant. An alternative is to implement `equals` and `hashCode`.\n   *\n   * `equals` takes another object, presumably of similar type, and returns true\n   * if the it is equal. Equality is symmetrical, so the same result should be\n   * returned if this and the argument are flipped.\n   *\n   *     assert( a.equals(b) === b.equals(a) );\n   *\n   * `hashCode` returns a 32bit integer number representing the object which will\n   * be used to determine how to store the value object in a Map or Set. You must\n   * provide both or neither methods, one must not exist without the other.\n   *\n   * Also, an important relationship between these methods must be upheld: if two\n   * values are equal, they *must* return the same hashCode. If the values are not\n   * equal, they might have the same hashCode; this is called a hash collision,\n   * and while undesirable for performance reasons, it is acceptable.\n   *\n   *     if (a.equals(b)) {\n   *       assert( a.hashCode() === b.hashCode() );\n   *     }\n   *\n   * All Immutable collections implement `equals` and `hashCode`.\n   *\n   */\n  function is(valueA, valueB) {\n    if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n      return true;\n    }\n    if (!valueA || !valueB) {\n      return false;\n    }\n    if (typeof valueA.valueOf === 'function' &&\n        typeof valueB.valueOf === 'function') {\n      valueA = valueA.valueOf();\n      valueB = valueB.valueOf();\n      if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n        return true;\n      }\n      if (!valueA || !valueB) {\n        return false;\n      }\n    }\n    if (typeof valueA.equals === 'function' &&\n        typeof valueB.equals === 'function' &&\n        valueA.equals(valueB)) {\n      return true;\n    }\n    return false;\n  }\n\n  function deepEqual(a, b) {\n    if (a === b) {\n      return true;\n    }\n\n    if (\n      !isIterable(b) ||\n      a.size !== undefined && b.size !== undefined && a.size !== b.size ||\n      a.__hash !== undefined && b.__hash !== undefined && a.__hash !== b.__hash ||\n      isKeyed(a) !== isKeyed(b) ||\n      isIndexed(a) !== isIndexed(b) ||\n      isOrdered(a) !== isOrdered(b)\n    ) {\n      return false;\n    }\n\n    if (a.size === 0 && b.size === 0) {\n      return true;\n    }\n\n    var notAssociative = !isAssociative(a);\n\n    if (isOrdered(a)) {\n      var entries = a.entries();\n      return b.every(function(v, k)  {\n        var entry = entries.next().value;\n        return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n      }) && entries.next().done;\n    }\n\n    var flipped = false;\n\n    if (a.size === undefined) {\n      if (b.size === undefined) {\n        if (typeof a.cacheResult === 'function') {\n          a.cacheResult();\n        }\n      } else {\n        flipped = true;\n        var _ = a;\n        a = b;\n        b = _;\n      }\n    }\n\n    var allEqual = true;\n    var bSize = b.__iterate(function(v, k)  {\n      if (notAssociative ? !a.has(v) :\n          flipped ? !is(v, a.get(k, NOT_SET)) : !is(a.get(k, NOT_SET), v)) {\n        allEqual = false;\n        return false;\n      }\n    });\n\n    return allEqual && a.size === bSize;\n  }\n\n  createClass(Repeat, IndexedSeq);\n\n    function Repeat(value, times) {\n      if (!(this instanceof Repeat)) {\n        return new Repeat(value, times);\n      }\n      this._value = value;\n      this.size = times === undefined ? Infinity : Math.max(0, times);\n      if (this.size === 0) {\n        if (EMPTY_REPEAT) {\n          return EMPTY_REPEAT;\n        }\n        EMPTY_REPEAT = this;\n      }\n    }\n\n    Repeat.prototype.toString = function() {\n      if (this.size === 0) {\n        return 'Repeat []';\n      }\n      return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n    };\n\n    Repeat.prototype.get = function(index, notSetValue) {\n      return this.has(index) ? this._value : notSetValue;\n    };\n\n    Repeat.prototype.includes = function(searchValue) {\n      return is(this._value, searchValue);\n    };\n\n    Repeat.prototype.slice = function(begin, end) {\n      var size = this.size;\n      return wholeSlice(begin, end, size) ? this :\n        new Repeat(this._value, resolveEnd(end, size) - resolveBegin(begin, size));\n    };\n\n    Repeat.prototype.reverse = function() {\n      return this;\n    };\n\n    Repeat.prototype.indexOf = function(searchValue) {\n      if (is(this._value, searchValue)) {\n        return 0;\n      }\n      return -1;\n    };\n\n    Repeat.prototype.lastIndexOf = function(searchValue) {\n      if (is(this._value, searchValue)) {\n        return this.size;\n      }\n      return -1;\n    };\n\n    Repeat.prototype.__iterate = function(fn, reverse) {\n      for (var ii = 0; ii < this.size; ii++) {\n        if (fn(this._value, ii, this) === false) {\n          return ii + 1;\n        }\n      }\n      return ii;\n    };\n\n    Repeat.prototype.__iterator = function(type, reverse) {var this$0 = this;\n      var ii = 0;\n      return new Iterator(function() \n        {return ii < this$0.size ? iteratorValue(type, ii++, this$0._value) : iteratorDone()}\n      );\n    };\n\n    Repeat.prototype.equals = function(other) {\n      return other instanceof Repeat ?\n        is(this._value, other._value) :\n        deepEqual(other);\n    };\n\n\n  var EMPTY_REPEAT;\n\n  function invariant(condition, error) {\n    if (!condition) throw new Error(error);\n  }\n\n  createClass(Range, IndexedSeq);\n\n    function Range(start, end, step) {\n      if (!(this instanceof Range)) {\n        return new Range(start, end, step);\n      }\n      invariant(step !== 0, 'Cannot step a Range by 0');\n      start = start || 0;\n      if (end === undefined) {\n        end = Infinity;\n      }\n      step = step === undefined ? 1 : Math.abs(step);\n      if (end < start) {\n        step = -step;\n      }\n      this._start = start;\n      this._end = end;\n      this._step = step;\n      this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n      if (this.size === 0) {\n        if (EMPTY_RANGE) {\n          return EMPTY_RANGE;\n        }\n        EMPTY_RANGE = this;\n      }\n    }\n\n    Range.prototype.toString = function() {\n      if (this.size === 0) {\n        return 'Range []';\n      }\n      return 'Range [ ' +\n        this._start + '...' + this._end +\n        (this._step !== 1 ? ' by ' + this._step : '') +\n      ' ]';\n    };\n\n    Range.prototype.get = function(index, notSetValue) {\n      return this.has(index) ?\n        this._start + wrapIndex(this, index) * this._step :\n        notSetValue;\n    };\n\n    Range.prototype.includes = function(searchValue) {\n      var possibleIndex = (searchValue - this._start) / this._step;\n      return possibleIndex >= 0 &&\n        possibleIndex < this.size &&\n        possibleIndex === Math.floor(possibleIndex);\n    };\n\n    Range.prototype.slice = function(begin, end) {\n      if (wholeSlice(begin, end, this.size)) {\n        return this;\n      }\n      begin = resolveBegin(begin, this.size);\n      end = resolveEnd(end, this.size);\n      if (end <= begin) {\n        return new Range(0, 0);\n      }\n      return new Range(this.get(begin, this._end), this.get(end, this._end), this._step);\n    };\n\n    Range.prototype.indexOf = function(searchValue) {\n      var offsetValue = searchValue - this._start;\n      if (offsetValue % this._step === 0) {\n        var index = offsetValue / this._step;\n        if (index >= 0 && index < this.size) {\n          return index\n        }\n      }\n      return -1;\n    };\n\n    Range.prototype.lastIndexOf = function(searchValue) {\n      return this.indexOf(searchValue);\n    };\n\n    Range.prototype.__iterate = function(fn, reverse) {\n      var maxIndex = this.size - 1;\n      var step = this._step;\n      var value = reverse ? this._start + maxIndex * step : this._start;\n      for (var ii = 0; ii <= maxIndex; ii++) {\n        if (fn(value, ii, this) === false) {\n          return ii + 1;\n        }\n        value += reverse ? -step : step;\n      }\n      return ii;\n    };\n\n    Range.prototype.__iterator = function(type, reverse) {\n      var maxIndex = this.size - 1;\n      var step = this._step;\n      var value = reverse ? this._start + maxIndex * step : this._start;\n      var ii = 0;\n      return new Iterator(function()  {\n        var v = value;\n        value += reverse ? -step : step;\n        return ii > maxIndex ? iteratorDone() : iteratorValue(type, ii++, v);\n      });\n    };\n\n    Range.prototype.equals = function(other) {\n      return other instanceof Range ?\n        this._start === other._start &&\n        this._end === other._end &&\n        this._step === other._step :\n        deepEqual(this, other);\n    };\n\n\n  var EMPTY_RANGE;\n\n  createClass(Collection, Iterable);\n    function Collection() {\n      throw TypeError('Abstract');\n    }\n\n\n  createClass(KeyedCollection, Collection);function KeyedCollection() {}\n\n  createClass(IndexedCollection, Collection);function IndexedCollection() {}\n\n  createClass(SetCollection, Collection);function SetCollection() {}\n\n\n  Collection.Keyed = KeyedCollection;\n  Collection.Indexed = IndexedCollection;\n  Collection.Set = SetCollection;\n\n  var imul =\n    typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2 ?\n    Math.imul :\n    function imul(a, b) {\n      a = a | 0; // int\n      b = b | 0; // int\n      var c = a & 0xffff;\n      var d = b & 0xffff;\n      // Shift by 0 fixes the sign on the high part.\n      return (c * d) + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0) | 0; // int\n    };\n\n  // v8 has an optimization for storing 31-bit signed numbers.\n  // Values which have either 00 or 11 as the high order bits qualify.\n  // This function drops the highest order bit in a signed number, maintaining\n  // the sign bit.\n  function smi(i32) {\n    return ((i32 >>> 1) & 0x40000000) | (i32 & 0xBFFFFFFF);\n  }\n\n  function hash(o) {\n    if (o === false || o === null || o === undefined) {\n      return 0;\n    }\n    if (typeof o.valueOf === 'function') {\n      o = o.valueOf();\n      if (o === false || o === null || o === undefined) {\n        return 0;\n      }\n    }\n    if (o === true) {\n      return 1;\n    }\n    var type = typeof o;\n    if (type === 'number') {\n      if (o !== o || o === Infinity) {\n        return 0;\n      }\n      var h = o | 0;\n      if (h !== o) {\n        h ^= o * 0xFFFFFFFF;\n      }\n      while (o > 0xFFFFFFFF) {\n        o /= 0xFFFFFFFF;\n        h ^= o;\n      }\n      return smi(h);\n    }\n    if (type === 'string') {\n      return o.length > STRING_HASH_CACHE_MIN_STRLEN ? cachedHashString(o) : hashString(o);\n    }\n    if (typeof o.hashCode === 'function') {\n      return o.hashCode();\n    }\n    if (type === 'object') {\n      return hashJSObj(o);\n    }\n    if (typeof o.toString === 'function') {\n      return hashString(o.toString());\n    }\n    throw new Error('Value type ' + type + ' cannot be hashed.');\n  }\n\n  function cachedHashString(string) {\n    var hash = stringHashCache[string];\n    if (hash === undefined) {\n      hash = hashString(string);\n      if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n        STRING_HASH_CACHE_SIZE = 0;\n        stringHashCache = {};\n      }\n      STRING_HASH_CACHE_SIZE++;\n      stringHashCache[string] = hash;\n    }\n    return hash;\n  }\n\n  // http://jsperf.com/hashing-strings\n  function hashString(string) {\n    // This is the hash from JVM\n    // The hash code for a string is computed as\n    // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n    // where s[i] is the ith character of the string and n is the length of\n    // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n    // (exclusive) by dropping high bits.\n    var hash = 0;\n    for (var ii = 0; ii < string.length; ii++) {\n      hash = 31 * hash + string.charCodeAt(ii) | 0;\n    }\n    return smi(hash);\n  }\n\n  function hashJSObj(obj) {\n    var hash;\n    if (usingWeakMap) {\n      hash = weakMap.get(obj);\n      if (hash !== undefined) {\n        return hash;\n      }\n    }\n\n    hash = obj[UID_HASH_KEY];\n    if (hash !== undefined) {\n      return hash;\n    }\n\n    if (!canDefineProperty) {\n      hash = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n      if (hash !== undefined) {\n        return hash;\n      }\n\n      hash = getIENodeHash(obj);\n      if (hash !== undefined) {\n        return hash;\n      }\n    }\n\n    hash = ++objHashUID;\n    if (objHashUID & 0x40000000) {\n      objHashUID = 0;\n    }\n\n    if (usingWeakMap) {\n      weakMap.set(obj, hash);\n    } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n      throw new Error('Non-extensible objects are not allowed as keys.');\n    } else if (canDefineProperty) {\n      Object.defineProperty(obj, UID_HASH_KEY, {\n        'enumerable': false,\n        'configurable': false,\n        'writable': false,\n        'value': hash\n      });\n    } else if (obj.propertyIsEnumerable !== undefined &&\n               obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable) {\n      // Since we can't define a non-enumerable property on the object\n      // we'll hijack one of the less-used non-enumerable properties to\n      // save our hash on it. Since this is a function it will not show up in\n      // `JSON.stringify` which is what we want.\n      obj.propertyIsEnumerable = function() {\n        return this.constructor.prototype.propertyIsEnumerable.apply(this, arguments);\n      };\n      obj.propertyIsEnumerable[UID_HASH_KEY] = hash;\n    } else if (obj.nodeType !== undefined) {\n      // At this point we couldn't get the IE `uniqueID` to use as a hash\n      // and we couldn't use a non-enumerable property to exploit the\n      // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n      // itself.\n      obj[UID_HASH_KEY] = hash;\n    } else {\n      throw new Error('Unable to set a non-enumerable property on object.');\n    }\n\n    return hash;\n  }\n\n  // Get references to ES5 object methods.\n  var isExtensible = Object.isExtensible;\n\n  // True if Object.defineProperty works as expected. IE8 fails this test.\n  var canDefineProperty = (function() {\n    try {\n      Object.defineProperty({}, '@', {});\n      return true;\n    } catch (e) {\n      return false;\n    }\n  }());\n\n  // IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n  // and avoid memory leaks from the IE cloneNode bug.\n  function getIENodeHash(node) {\n    if (node && node.nodeType > 0) {\n      switch (node.nodeType) {\n        case 1: // Element\n          return node.uniqueID;\n        case 9: // Document\n          return node.documentElement && node.documentElement.uniqueID;\n      }\n    }\n  }\n\n  // If possible, use a WeakMap.\n  var usingWeakMap = typeof WeakMap === 'function';\n  var weakMap;\n  if (usingWeakMap) {\n    weakMap = new WeakMap();\n  }\n\n  var objHashUID = 0;\n\n  var UID_HASH_KEY = '__immutablehash__';\n  if (typeof Symbol === 'function') {\n    UID_HASH_KEY = Symbol(UID_HASH_KEY);\n  }\n\n  var STRING_HASH_CACHE_MIN_STRLEN = 16;\n  var STRING_HASH_CACHE_MAX_SIZE = 255;\n  var STRING_HASH_CACHE_SIZE = 0;\n  var stringHashCache = {};\n\n  function assertNotInfinite(size) {\n    invariant(\n      size !== Infinity,\n      'Cannot perform this action with an infinite size.'\n    );\n  }\n\n  createClass(Map, KeyedCollection);\n\n    // @pragma Construction\n\n    function Map(value) {\n      return value === null || value === undefined ? emptyMap() :\n        isMap(value) && !isOrdered(value) ? value :\n        emptyMap().withMutations(function(map ) {\n          var iter = KeyedIterable(value);\n          assertNotInfinite(iter.size);\n          iter.forEach(function(v, k)  {return map.set(k, v)});\n        });\n    }\n\n    Map.of = function() {var keyValues = SLICE$0.call(arguments, 0);\n      return emptyMap().withMutations(function(map ) {\n        for (var i = 0; i < keyValues.length; i += 2) {\n          if (i + 1 >= keyValues.length) {\n            throw new Error('Missing value for key: ' + keyValues[i]);\n          }\n          map.set(keyValues[i], keyValues[i + 1]);\n        }\n      });\n    };\n\n    Map.prototype.toString = function() {\n      return this.__toString('Map {', '}');\n    };\n\n    // @pragma Access\n\n    Map.prototype.get = function(k, notSetValue) {\n      return this._root ?\n        this._root.get(0, undefined, k, notSetValue) :\n        notSetValue;\n    };\n\n    // @pragma Modification\n\n    Map.prototype.set = function(k, v) {\n      return updateMap(this, k, v);\n    };\n\n    Map.prototype.setIn = function(keyPath, v) {\n      return this.updateIn(keyPath, NOT_SET, function()  {return v});\n    };\n\n    Map.prototype.remove = function(k) {\n      return updateMap(this, k, NOT_SET);\n    };\n\n    Map.prototype.deleteIn = function(keyPath) {\n      return this.updateIn(keyPath, function()  {return NOT_SET});\n    };\n\n    Map.prototype.update = function(k, notSetValue, updater) {\n      return arguments.length === 1 ?\n        k(this) :\n        this.updateIn([k], notSetValue, updater);\n    };\n\n    Map.prototype.updateIn = function(keyPath, notSetValue, updater) {\n      if (!updater) {\n        updater = notSetValue;\n        notSetValue = undefined;\n      }\n      var updatedValue = updateInDeepMap(\n        this,\n        forceIterator(keyPath),\n        notSetValue,\n        updater\n      );\n      return updatedValue === NOT_SET ? undefined : updatedValue;\n    };\n\n    Map.prototype.clear = function() {\n      if (this.size === 0) {\n        return this;\n      }\n      if (this.__ownerID) {\n        this.size = 0;\n        this._root = null;\n        this.__hash = undefined;\n        this.__altered = true;\n        return this;\n      }\n      return emptyMap();\n    };\n\n    // @pragma Composition\n\n    Map.prototype.merge = function(/*...iters*/) {\n      return mergeIntoMapWith(this, undefined, arguments);\n    };\n\n    Map.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n      return mergeIntoMapWith(this, merger, iters);\n    };\n\n    Map.prototype.mergeIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n      return this.updateIn(\n        keyPath,\n        emptyMap(),\n        function(m ) {return typeof m.merge === 'function' ?\n          m.merge.apply(m, iters) :\n          iters[iters.length - 1]}\n      );\n    };\n\n    Map.prototype.mergeDeep = function(/*...iters*/) {\n      return mergeIntoMapWith(this, deepMerger, arguments);\n    };\n\n    Map.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n      return mergeIntoMapWith(this, deepMergerWith(merger), iters);\n    };\n\n    Map.prototype.mergeDeepIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n      return this.updateIn(\n        keyPath,\n        emptyMap(),\n        function(m ) {return typeof m.mergeDeep === 'function' ?\n          m.mergeDeep.apply(m, iters) :\n          iters[iters.length - 1]}\n      );\n    };\n\n    Map.prototype.sort = function(comparator) {\n      // Late binding\n      return OrderedMap(sortFactory(this, comparator));\n    };\n\n    Map.prototype.sortBy = function(mapper, comparator) {\n      // Late binding\n      return OrderedMap(sortFactory(this, comparator, mapper));\n    };\n\n    // @pragma Mutability\n\n    Map.prototype.withMutations = function(fn) {\n      var mutable = this.asMutable();\n      fn(mutable);\n      return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n    };\n\n    Map.prototype.asMutable = function() {\n      return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n    };\n\n    Map.prototype.asImmutable = function() {\n      return this.__ensureOwner();\n    };\n\n    Map.prototype.wasAltered = function() {\n      return this.__altered;\n    };\n\n    Map.prototype.__iterator = function(type, reverse) {\n      return new MapIterator(this, type, reverse);\n    };\n\n    Map.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n      var iterations = 0;\n      this._root && this._root.iterate(function(entry ) {\n        iterations++;\n        return fn(entry[1], entry[0], this$0);\n      }, reverse);\n      return iterations;\n    };\n\n    Map.prototype.__ensureOwner = function(ownerID) {\n      if (ownerID === this.__ownerID) {\n        return this;\n      }\n      if (!ownerID) {\n        this.__ownerID = ownerID;\n        this.__altered = false;\n        return this;\n      }\n      return makeMap(this.size, this._root, ownerID, this.__hash);\n    };\n\n\n  function isMap(maybeMap) {\n    return !!(maybeMap && maybeMap[IS_MAP_SENTINEL]);\n  }\n\n  Map.isMap = isMap;\n\n  var IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\n\n  var MapPrototype = Map.prototype;\n  MapPrototype[IS_MAP_SENTINEL] = true;\n  MapPrototype[DELETE] = MapPrototype.remove;\n  MapPrototype.removeIn = MapPrototype.deleteIn;\n\n\n  // #pragma Trie Nodes\n\n\n\n    function ArrayMapNode(ownerID, entries) {\n      this.ownerID = ownerID;\n      this.entries = entries;\n    }\n\n    ArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n      var entries = this.entries;\n      for (var ii = 0, len = entries.length; ii < len; ii++) {\n        if (is(key, entries[ii][0])) {\n          return entries[ii][1];\n        }\n      }\n      return notSetValue;\n    };\n\n    ArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n      var removed = value === NOT_SET;\n\n      var entries = this.entries;\n      var idx = 0;\n      for (var len = entries.length; idx < len; idx++) {\n        if (is(key, entries[idx][0])) {\n          break;\n        }\n      }\n      var exists = idx < len;\n\n      if (exists ? entries[idx][1] === value : removed) {\n        return this;\n      }\n\n      SetRef(didAlter);\n      (removed || !exists) && SetRef(didChangeSize);\n\n      if (removed && entries.length === 1) {\n        return; // undefined\n      }\n\n      if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n        return createNodes(ownerID, entries, key, value);\n      }\n\n      var isEditable = ownerID && ownerID === this.ownerID;\n      var newEntries = isEditable ? entries : arrCopy(entries);\n\n      if (exists) {\n        if (removed) {\n          idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n        } else {\n          newEntries[idx] = [key, value];\n        }\n      } else {\n        newEntries.push([key, value]);\n      }\n\n      if (isEditable) {\n        this.entries = newEntries;\n        return this;\n      }\n\n      return new ArrayMapNode(ownerID, newEntries);\n    };\n\n\n\n\n    function BitmapIndexedNode(ownerID, bitmap, nodes) {\n      this.ownerID = ownerID;\n      this.bitmap = bitmap;\n      this.nodes = nodes;\n    }\n\n    BitmapIndexedNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n      if (keyHash === undefined) {\n        keyHash = hash(key);\n      }\n      var bit = (1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK));\n      var bitmap = this.bitmap;\n      return (bitmap & bit) === 0 ? notSetValue :\n        this.nodes[popCount(bitmap & (bit - 1))].get(shift + SHIFT, keyHash, key, notSetValue);\n    };\n\n    BitmapIndexedNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n      if (keyHash === undefined) {\n        keyHash = hash(key);\n      }\n      var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n      var bit = 1 << keyHashFrag;\n      var bitmap = this.bitmap;\n      var exists = (bitmap & bit) !== 0;\n\n      if (!exists && value === NOT_SET) {\n        return this;\n      }\n\n      var idx = popCount(bitmap & (bit - 1));\n      var nodes = this.nodes;\n      var node = exists ? nodes[idx] : undefined;\n      var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n\n      if (newNode === node) {\n        return this;\n      }\n\n      if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n        return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n      }\n\n      if (exists && !newNode && nodes.length === 2 && isLeafNode(nodes[idx ^ 1])) {\n        return nodes[idx ^ 1];\n      }\n\n      if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n        return newNode;\n      }\n\n      var isEditable = ownerID && ownerID === this.ownerID;\n      var newBitmap = exists ? newNode ? bitmap : bitmap ^ bit : bitmap | bit;\n      var newNodes = exists ? newNode ?\n        setIn(nodes, idx, newNode, isEditable) :\n        spliceOut(nodes, idx, isEditable) :\n        spliceIn(nodes, idx, newNode, isEditable);\n\n      if (isEditable) {\n        this.bitmap = newBitmap;\n        this.nodes = newNodes;\n        return this;\n      }\n\n      return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n    };\n\n\n\n\n    function HashArrayMapNode(ownerID, count, nodes) {\n      this.ownerID = ownerID;\n      this.count = count;\n      this.nodes = nodes;\n    }\n\n    HashArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n      if (keyHash === undefined) {\n        keyHash = hash(key);\n      }\n      var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n      var node = this.nodes[idx];\n      return node ? node.get(shift + SHIFT, keyHash, key, notSetValue) : notSetValue;\n    };\n\n    HashArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n      if (keyHash === undefined) {\n        keyHash = hash(key);\n      }\n      var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n      var removed = value === NOT_SET;\n      var nodes = this.nodes;\n      var node = nodes[idx];\n\n      if (removed && !node) {\n        return this;\n      }\n\n      var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n      if (newNode === node) {\n        return this;\n      }\n\n      var newCount = this.count;\n      if (!node) {\n        newCount++;\n      } else if (!newNode) {\n        newCount--;\n        if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n          return packNodes(ownerID, nodes, newCount, idx);\n        }\n      }\n\n      var isEditable = ownerID && ownerID === this.ownerID;\n      var newNodes = setIn(nodes, idx, newNode, isEditable);\n\n      if (isEditable) {\n        this.count = newCount;\n        this.nodes = newNodes;\n        return this;\n      }\n\n      return new HashArrayMapNode(ownerID, newCount, newNodes);\n    };\n\n\n\n\n    function HashCollisionNode(ownerID, keyHash, entries) {\n      this.ownerID = ownerID;\n      this.keyHash = keyHash;\n      this.entries = entries;\n    }\n\n    HashCollisionNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n      var entries = this.entries;\n      for (var ii = 0, len = entries.length; ii < len; ii++) {\n        if (is(key, entries[ii][0])) {\n          return entries[ii][1];\n        }\n      }\n      return notSetValue;\n    };\n\n    HashCollisionNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n      if (keyHash === undefined) {\n        keyHash = hash(key);\n      }\n\n      var removed = value === NOT_SET;\n\n      if (keyHash !== this.keyHash) {\n        if (removed) {\n          return this;\n        }\n        SetRef(didAlter);\n        SetRef(didChangeSize);\n        return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n      }\n\n      var entries = this.entries;\n      var idx = 0;\n      for (var len = entries.length; idx < len; idx++) {\n        if (is(key, entries[idx][0])) {\n          break;\n        }\n      }\n      var exists = idx < len;\n\n      if (exists ? entries[idx][1] === value : removed) {\n        return this;\n      }\n\n      SetRef(didAlter);\n      (removed || !exists) && SetRef(didChangeSize);\n\n      if (removed && len === 2) {\n        return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n      }\n\n      var isEditable = ownerID && ownerID === this.ownerID;\n      var newEntries = isEditable ? entries : arrCopy(entries);\n\n      if (exists) {\n        if (removed) {\n          idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n        } else {\n          newEntries[idx] = [key, value];\n        }\n      } else {\n        newEntries.push([key, value]);\n      }\n\n      if (isEditable) {\n        this.entries = newEntries;\n        return this;\n      }\n\n      return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n    };\n\n\n\n\n    function ValueNode(ownerID, keyHash, entry) {\n      this.ownerID = ownerID;\n      this.keyHash = keyHash;\n      this.entry = entry;\n    }\n\n    ValueNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n      return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n    };\n\n    ValueNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n      var removed = value === NOT_SET;\n      var keyMatch = is(key, this.entry[0]);\n      if (keyMatch ? value === this.entry[1] : removed) {\n        return this;\n      }\n\n      SetRef(didAlter);\n\n      if (removed) {\n        SetRef(didChangeSize);\n        return; // undefined\n      }\n\n      if (keyMatch) {\n        if (ownerID && ownerID === this.ownerID) {\n          this.entry[1] = value;\n          return this;\n        }\n        return new ValueNode(ownerID, this.keyHash, [key, value]);\n      }\n\n      SetRef(didChangeSize);\n      return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n    };\n\n\n\n  // #pragma Iterators\n\n  ArrayMapNode.prototype.iterate =\n  HashCollisionNode.prototype.iterate = function (fn, reverse) {\n    var entries = this.entries;\n    for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n      if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n        return false;\n      }\n    }\n  }\n\n  BitmapIndexedNode.prototype.iterate =\n  HashArrayMapNode.prototype.iterate = function (fn, reverse) {\n    var nodes = this.nodes;\n    for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n      var node = nodes[reverse ? maxIndex - ii : ii];\n      if (node && node.iterate(fn, reverse) === false) {\n        return false;\n      }\n    }\n  }\n\n  ValueNode.prototype.iterate = function (fn, reverse) {\n    return fn(this.entry);\n  }\n\n  createClass(MapIterator, Iterator);\n\n    function MapIterator(map, type, reverse) {\n      this._type = type;\n      this._reverse = reverse;\n      this._stack = map._root && mapIteratorFrame(map._root);\n    }\n\n    MapIterator.prototype.next = function() {\n      var type = this._type;\n      var stack = this._stack;\n      while (stack) {\n        var node = stack.node;\n        var index = stack.index++;\n        var maxIndex;\n        if (node.entry) {\n          if (index === 0) {\n            return mapIteratorValue(type, node.entry);\n          }\n        } else if (node.entries) {\n          maxIndex = node.entries.length - 1;\n          if (index <= maxIndex) {\n            return mapIteratorValue(type, node.entries[this._reverse ? maxIndex - index : index]);\n          }\n        } else {\n          maxIndex = node.nodes.length - 1;\n          if (index <= maxIndex) {\n            var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n            if (subNode) {\n              if (subNode.entry) {\n                return mapIteratorValue(type, subNode.entry);\n              }\n              stack = this._stack = mapIteratorFrame(subNode, stack);\n            }\n            continue;\n          }\n        }\n        stack = this._stack = this._stack.__prev;\n      }\n      return iteratorDone();\n    };\n\n\n  function mapIteratorValue(type, entry) {\n    return iteratorValue(type, entry[0], entry[1]);\n  }\n\n  function mapIteratorFrame(node, prev) {\n    return {\n      node: node,\n      index: 0,\n      __prev: prev\n    };\n  }\n\n  function makeMap(size, root, ownerID, hash) {\n    var map = Object.create(MapPrototype);\n    map.size = size;\n    map._root = root;\n    map.__ownerID = ownerID;\n    map.__hash = hash;\n    map.__altered = false;\n    return map;\n  }\n\n  var EMPTY_MAP;\n  function emptyMap() {\n    return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n  }\n\n  function updateMap(map, k, v) {\n    var newRoot;\n    var newSize;\n    if (!map._root) {\n      if (v === NOT_SET) {\n        return map;\n      }\n      newSize = 1;\n      newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n    } else {\n      var didChangeSize = MakeRef(CHANGE_LENGTH);\n      var didAlter = MakeRef(DID_ALTER);\n      newRoot = updateNode(map._root, map.__ownerID, 0, undefined, k, v, didChangeSize, didAlter);\n      if (!didAlter.value) {\n        return map;\n      }\n      newSize = map.size + (didChangeSize.value ? v === NOT_SET ? -1 : 1 : 0);\n    }\n    if (map.__ownerID) {\n      map.size = newSize;\n      map._root = newRoot;\n      map.__hash = undefined;\n      map.__altered = true;\n      return map;\n    }\n    return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n  }\n\n  function updateNode(node, ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n    if (!node) {\n      if (value === NOT_SET) {\n        return node;\n      }\n      SetRef(didAlter);\n      SetRef(didChangeSize);\n      return new ValueNode(ownerID, keyHash, [key, value]);\n    }\n    return node.update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter);\n  }\n\n  function isLeafNode(node) {\n    return node.constructor === ValueNode || node.constructor === HashCollisionNode;\n  }\n\n  function mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n    if (node.keyHash === keyHash) {\n      return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n    }\n\n    var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n    var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n    var newNode;\n    var nodes = idx1 === idx2 ?\n      [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)] :\n      ((newNode = new ValueNode(ownerID, keyHash, entry)), idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n    return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n  }\n\n  function createNodes(ownerID, entries, key, value) {\n    if (!ownerID) {\n      ownerID = new OwnerID();\n    }\n    var node = new ValueNode(ownerID, hash(key), [key, value]);\n    for (var ii = 0; ii < entries.length; ii++) {\n      var entry = entries[ii];\n      node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n    }\n    return node;\n  }\n\n  function packNodes(ownerID, nodes, count, excluding) {\n    var bitmap = 0;\n    var packedII = 0;\n    var packedNodes = new Array(count);\n    for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n      var node = nodes[ii];\n      if (node !== undefined && ii !== excluding) {\n        bitmap |= bit;\n        packedNodes[packedII++] = node;\n      }\n    }\n    return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n  }\n\n  function expandNodes(ownerID, nodes, bitmap, including, node) {\n    var count = 0;\n    var expandedNodes = new Array(SIZE);\n    for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n      expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n    }\n    expandedNodes[including] = node;\n    return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n  }\n\n  function mergeIntoMapWith(map, merger, iterables) {\n    var iters = [];\n    for (var ii = 0; ii < iterables.length; ii++) {\n      var value = iterables[ii];\n      var iter = KeyedIterable(value);\n      if (!isIterable(value)) {\n        iter = iter.map(function(v ) {return fromJS(v)});\n      }\n      iters.push(iter);\n    }\n    return mergeIntoCollectionWith(map, merger, iters);\n  }\n\n  function deepMerger(existing, value, key) {\n    return existing && existing.mergeDeep && isIterable(value) ?\n      existing.mergeDeep(value) :\n      is(existing, value) ? existing : value;\n  }\n\n  function deepMergerWith(merger) {\n    return function(existing, value, key)  {\n      if (existing && existing.mergeDeepWith && isIterable(value)) {\n        return existing.mergeDeepWith(merger, value);\n      }\n      var nextValue = merger(existing, value, key);\n      return is(existing, nextValue) ? existing : nextValue;\n    };\n  }\n\n  function mergeIntoCollectionWith(collection, merger, iters) {\n    iters = iters.filter(function(x ) {return x.size !== 0});\n    if (iters.length === 0) {\n      return collection;\n    }\n    if (collection.size === 0 && !collection.__ownerID && iters.length === 1) {\n      return collection.constructor(iters[0]);\n    }\n    return collection.withMutations(function(collection ) {\n      var mergeIntoMap = merger ?\n        function(value, key)  {\n          collection.update(key, NOT_SET, function(existing )\n            {return existing === NOT_SET ? value : merger(existing, value, key)}\n          );\n        } :\n        function(value, key)  {\n          collection.set(key, value);\n        }\n      for (var ii = 0; ii < iters.length; ii++) {\n        iters[ii].forEach(mergeIntoMap);\n      }\n    });\n  }\n\n  function updateInDeepMap(existing, keyPathIter, notSetValue, updater) {\n    var isNotSet = existing === NOT_SET;\n    var step = keyPathIter.next();\n    if (step.done) {\n      var existingValue = isNotSet ? notSetValue : existing;\n      var newValue = updater(existingValue);\n      return newValue === existingValue ? existing : newValue;\n    }\n    invariant(\n      isNotSet || (existing && existing.set),\n      'invalid keyPath'\n    );\n    var key = step.value;\n    var nextExisting = isNotSet ? NOT_SET : existing.get(key, NOT_SET);\n    var nextUpdated = updateInDeepMap(\n      nextExisting,\n      keyPathIter,\n      notSetValue,\n      updater\n    );\n    return nextUpdated === nextExisting ? existing :\n      nextUpdated === NOT_SET ? existing.remove(key) :\n      (isNotSet ? emptyMap() : existing).set(key, nextUpdated);\n  }\n\n  function popCount(x) {\n    x = x - ((x >> 1) & 0x55555555);\n    x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n    x = (x + (x >> 4)) & 0x0f0f0f0f;\n    x = x + (x >> 8);\n    x = x + (x >> 16);\n    return x & 0x7f;\n  }\n\n  function setIn(array, idx, val, canEdit) {\n    var newArray = canEdit ? array : arrCopy(array);\n    newArray[idx] = val;\n    return newArray;\n  }\n\n  function spliceIn(array, idx, val, canEdit) {\n    var newLen = array.length + 1;\n    if (canEdit && idx + 1 === newLen) {\n      array[idx] = val;\n      return array;\n    }\n    var newArray = new Array(newLen);\n    var after = 0;\n    for (var ii = 0; ii < newLen; ii++) {\n      if (ii === idx) {\n        newArray[ii] = val;\n        after = -1;\n      } else {\n        newArray[ii] = array[ii + after];\n      }\n    }\n    return newArray;\n  }\n\n  function spliceOut(array, idx, canEdit) {\n    var newLen = array.length - 1;\n    if (canEdit && idx === newLen) {\n      array.pop();\n      return array;\n    }\n    var newArray = new Array(newLen);\n    var after = 0;\n    for (var ii = 0; ii < newLen; ii++) {\n      if (ii === idx) {\n        after = 1;\n      }\n      newArray[ii] = array[ii + after];\n    }\n    return newArray;\n  }\n\n  var MAX_ARRAY_MAP_SIZE = SIZE / 4;\n  var MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\n  var MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\n  createClass(List, IndexedCollection);\n\n    // @pragma Construction\n\n    function List(value) {\n      var empty = emptyList();\n      if (value === null || value === undefined) {\n        return empty;\n      }\n      if (isList(value)) {\n        return value;\n      }\n      var iter = IndexedIterable(value);\n      var size = iter.size;\n      if (size === 0) {\n        return empty;\n      }\n      assertNotInfinite(size);\n      if (size > 0 && size < SIZE) {\n        return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n      }\n      return empty.withMutations(function(list ) {\n        list.setSize(size);\n        iter.forEach(function(v, i)  {return list.set(i, v)});\n      });\n    }\n\n    List.of = function(/*...values*/) {\n      return this(arguments);\n    };\n\n    List.prototype.toString = function() {\n      return this.__toString('List [', ']');\n    };\n\n    // @pragma Access\n\n    List.prototype.get = function(index, notSetValue) {\n      index = wrapIndex(this, index);\n      if (index >= 0 && index < this.size) {\n        index += this._origin;\n        var node = listNodeFor(this, index);\n        return node && node.array[index & MASK];\n      }\n      return notSetValue;\n    };\n\n    // @pragma Modification\n\n    List.prototype.set = function(index, value) {\n      return updateList(this, index, value);\n    };\n\n    List.prototype.remove = function(index) {\n      return !this.has(index) ? this :\n        index === 0 ? this.shift() :\n        index === this.size - 1 ? this.pop() :\n        this.splice(index, 1);\n    };\n\n    List.prototype.insert = function(index, value) {\n      return this.splice(index, 0, value);\n    };\n\n    List.prototype.clear = function() {\n      if (this.size === 0) {\n        return this;\n      }\n      if (this.__ownerID) {\n        this.size = this._origin = this._capacity = 0;\n        this._level = SHIFT;\n        this._root = this._tail = null;\n        this.__hash = undefined;\n        this.__altered = true;\n        return this;\n      }\n      return emptyList();\n    };\n\n    List.prototype.push = function(/*...values*/) {\n      var values = arguments;\n      var oldSize = this.size;\n      return this.withMutations(function(list ) {\n        setListBounds(list, 0, oldSize + values.length);\n        for (var ii = 0; ii < values.length; ii++) {\n          list.set(oldSize + ii, values[ii]);\n        }\n      });\n    };\n\n    List.prototype.pop = function() {\n      return setListBounds(this, 0, -1);\n    };\n\n    List.prototype.unshift = function(/*...values*/) {\n      var values = arguments;\n      return this.withMutations(function(list ) {\n        setListBounds(list, -values.length);\n        for (var ii = 0; ii < values.length; ii++) {\n          list.set(ii, values[ii]);\n        }\n      });\n    };\n\n    List.prototype.shift = function() {\n      return setListBounds(this, 1);\n    };\n\n    // @pragma Composition\n\n    List.prototype.merge = function(/*...iters*/) {\n      return mergeIntoListWith(this, undefined, arguments);\n    };\n\n    List.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n      return mergeIntoListWith(this, merger, iters);\n    };\n\n    List.prototype.mergeDeep = function(/*...iters*/) {\n      return mergeIntoListWith(this, deepMerger, arguments);\n    };\n\n    List.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n      return mergeIntoListWith(this, deepMergerWith(merger), iters);\n    };\n\n    List.prototype.setSize = function(size) {\n      return setListBounds(this, 0, size);\n    };\n\n    // @pragma Iteration\n\n    List.prototype.slice = function(begin, end) {\n      var size = this.size;\n      if (wholeSlice(begin, end, size)) {\n        return this;\n      }\n      return setListBounds(\n        this,\n        resolveBegin(begin, size),\n        resolveEnd(end, size)\n      );\n    };\n\n    List.prototype.__iterator = function(type, reverse) {\n      var index = 0;\n      var values = iterateList(this, reverse);\n      return new Iterator(function()  {\n        var value = values();\n        return value === DONE ?\n          iteratorDone() :\n          iteratorValue(type, index++, value);\n      });\n    };\n\n    List.prototype.__iterate = function(fn, reverse) {\n      var index = 0;\n      var values = iterateList(this, reverse);\n      var value;\n      while ((value = values()) !== DONE) {\n        if (fn(value, index++, this) === false) {\n          break;\n        }\n      }\n      return index;\n    };\n\n    List.prototype.__ensureOwner = function(ownerID) {\n      if (ownerID === this.__ownerID) {\n        return this;\n      }\n      if (!ownerID) {\n        this.__ownerID = ownerID;\n        return this;\n      }\n      return makeList(this._origin, this._capacity, this._level, this._root, this._tail, ownerID, this.__hash);\n    };\n\n\n  function isList(maybeList) {\n    return !!(maybeList && maybeList[IS_LIST_SENTINEL]);\n  }\n\n  List.isList = isList;\n\n  var IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\n\n  var ListPrototype = List.prototype;\n  ListPrototype[IS_LIST_SENTINEL] = true;\n  ListPrototype[DELETE] = ListPrototype.remove;\n  ListPrototype.setIn = MapPrototype.setIn;\n  ListPrototype.deleteIn =\n  ListPrototype.removeIn = MapPrototype.removeIn;\n  ListPrototype.update = MapPrototype.update;\n  ListPrototype.updateIn = MapPrototype.updateIn;\n  ListPrototype.mergeIn = MapPrototype.mergeIn;\n  ListPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n  ListPrototype.withMutations = MapPrototype.withMutations;\n  ListPrototype.asMutable = MapPrototype.asMutable;\n  ListPrototype.asImmutable = MapPrototype.asImmutable;\n  ListPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n\n    function VNode(array, ownerID) {\n      this.array = array;\n      this.ownerID = ownerID;\n    }\n\n    // TODO: seems like these methods are very similar\n\n    VNode.prototype.removeBefore = function(ownerID, level, index) {\n      if (index === level ? 1 << level : 0 || this.array.length === 0) {\n        return this;\n      }\n      var originIndex = (index >>> level) & MASK;\n      if (originIndex >= this.array.length) {\n        return new VNode([], ownerID);\n      }\n      var removingFirst = originIndex === 0;\n      var newChild;\n      if (level > 0) {\n        var oldChild = this.array[originIndex];\n        newChild = oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n        if (newChild === oldChild && removingFirst) {\n          return this;\n        }\n      }\n      if (removingFirst && !newChild) {\n        return this;\n      }\n      var editable = editableVNode(this, ownerID);\n      if (!removingFirst) {\n        for (var ii = 0; ii < originIndex; ii++) {\n          editable.array[ii] = undefined;\n        }\n      }\n      if (newChild) {\n        editable.array[originIndex] = newChild;\n      }\n      return editable;\n    };\n\n    VNode.prototype.removeAfter = function(ownerID, level, index) {\n      if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n        return this;\n      }\n      var sizeIndex = ((index - 1) >>> level) & MASK;\n      if (sizeIndex >= this.array.length) {\n        return this;\n      }\n\n      var newChild;\n      if (level > 0) {\n        var oldChild = this.array[sizeIndex];\n        newChild = oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n        if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n          return this;\n        }\n      }\n\n      var editable = editableVNode(this, ownerID);\n      editable.array.splice(sizeIndex + 1);\n      if (newChild) {\n        editable.array[sizeIndex] = newChild;\n      }\n      return editable;\n    };\n\n\n\n  var DONE = {};\n\n  function iterateList(list, reverse) {\n    var left = list._origin;\n    var right = list._capacity;\n    var tailPos = getTailOffset(right);\n    var tail = list._tail;\n\n    return iterateNodeOrLeaf(list._root, list._level, 0);\n\n    function iterateNodeOrLeaf(node, level, offset) {\n      return level === 0 ?\n        iterateLeaf(node, offset) :\n        iterateNode(node, level, offset);\n    }\n\n    function iterateLeaf(node, offset) {\n      var array = offset === tailPos ? tail && tail.array : node && node.array;\n      var from = offset > left ? 0 : left - offset;\n      var to = right - offset;\n      if (to > SIZE) {\n        to = SIZE;\n      }\n      return function()  {\n        if (from === to) {\n          return DONE;\n        }\n        var idx = reverse ? --to : from++;\n        return array && array[idx];\n      };\n    }\n\n    function iterateNode(node, level, offset) {\n      var values;\n      var array = node && node.array;\n      var from = offset > left ? 0 : (left - offset) >> level;\n      var to = ((right - offset) >> level) + 1;\n      if (to > SIZE) {\n        to = SIZE;\n      }\n      return function()  {\n        do {\n          if (values) {\n            var value = values();\n            if (value !== DONE) {\n              return value;\n            }\n            values = null;\n          }\n          if (from === to) {\n            return DONE;\n          }\n          var idx = reverse ? --to : from++;\n          values = iterateNodeOrLeaf(\n            array && array[idx], level - SHIFT, offset + (idx << level)\n          );\n        } while (true);\n      };\n    }\n  }\n\n  function makeList(origin, capacity, level, root, tail, ownerID, hash) {\n    var list = Object.create(ListPrototype);\n    list.size = capacity - origin;\n    list._origin = origin;\n    list._capacity = capacity;\n    list._level = level;\n    list._root = root;\n    list._tail = tail;\n    list.__ownerID = ownerID;\n    list.__hash = hash;\n    list.__altered = false;\n    return list;\n  }\n\n  var EMPTY_LIST;\n  function emptyList() {\n    return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n  }\n\n  function updateList(list, index, value) {\n    index = wrapIndex(list, index);\n\n    if (index !== index) {\n      return list;\n    }\n\n    if (index >= list.size || index < 0) {\n      return list.withMutations(function(list ) {\n        index < 0 ?\n          setListBounds(list, index).set(0, value) :\n          setListBounds(list, 0, index + 1).set(index, value)\n      });\n    }\n\n    index += list._origin;\n\n    var newTail = list._tail;\n    var newRoot = list._root;\n    var didAlter = MakeRef(DID_ALTER);\n    if (index >= getTailOffset(list._capacity)) {\n      newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n    } else {\n      newRoot = updateVNode(newRoot, list.__ownerID, list._level, index, value, didAlter);\n    }\n\n    if (!didAlter.value) {\n      return list;\n    }\n\n    if (list.__ownerID) {\n      list._root = newRoot;\n      list._tail = newTail;\n      list.__hash = undefined;\n      list.__altered = true;\n      return list;\n    }\n    return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n  }\n\n  function updateVNode(node, ownerID, level, index, value, didAlter) {\n    var idx = (index >>> level) & MASK;\n    var nodeHas = node && idx < node.array.length;\n    if (!nodeHas && value === undefined) {\n      return node;\n    }\n\n    var newNode;\n\n    if (level > 0) {\n      var lowerNode = node && node.array[idx];\n      var newLowerNode = updateVNode(lowerNode, ownerID, level - SHIFT, index, value, didAlter);\n      if (newLowerNode === lowerNode) {\n        return node;\n      }\n      newNode = editableVNode(node, ownerID);\n      newNode.array[idx] = newLowerNode;\n      return newNode;\n    }\n\n    if (nodeHas && node.array[idx] === value) {\n      return node;\n    }\n\n    SetRef(didAlter);\n\n    newNode = editableVNode(node, ownerID);\n    if (value === undefined && idx === newNode.array.length - 1) {\n      newNode.array.pop();\n    } else {\n      newNode.array[idx] = value;\n    }\n    return newNode;\n  }\n\n  function editableVNode(node, ownerID) {\n    if (ownerID && node && ownerID === node.ownerID) {\n      return node;\n    }\n    return new VNode(node ? node.array.slice() : [], ownerID);\n  }\n\n  function listNodeFor(list, rawIndex) {\n    if (rawIndex >= getTailOffset(list._capacity)) {\n      return list._tail;\n    }\n    if (rawIndex < 1 << (list._level + SHIFT)) {\n      var node = list._root;\n      var level = list._level;\n      while (node && level > 0) {\n        node = node.array[(rawIndex >>> level) & MASK];\n        level -= SHIFT;\n      }\n      return node;\n    }\n  }\n\n  function setListBounds(list, begin, end) {\n    // Sanitize begin & end using this shorthand for ToInt32(argument)\n    // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n    if (begin !== undefined) {\n      begin = begin | 0;\n    }\n    if (end !== undefined) {\n      end = end | 0;\n    }\n    var owner = list.__ownerID || new OwnerID();\n    var oldOrigin = list._origin;\n    var oldCapacity = list._capacity;\n    var newOrigin = oldOrigin + begin;\n    var newCapacity = end === undefined ? oldCapacity : end < 0 ? oldCapacity + end : oldOrigin + end;\n    if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n      return list;\n    }\n\n    // If it's going to end after it starts, it's empty.\n    if (newOrigin >= newCapacity) {\n      return list.clear();\n    }\n\n    var newLevel = list._level;\n    var newRoot = list._root;\n\n    // New origin might need creating a higher root.\n    var offsetShift = 0;\n    while (newOrigin + offsetShift < 0) {\n      newRoot = new VNode(newRoot && newRoot.array.length ? [undefined, newRoot] : [], owner);\n      newLevel += SHIFT;\n      offsetShift += 1 << newLevel;\n    }\n    if (offsetShift) {\n      newOrigin += offsetShift;\n      oldOrigin += offsetShift;\n      newCapacity += offsetShift;\n      oldCapacity += offsetShift;\n    }\n\n    var oldTailOffset = getTailOffset(oldCapacity);\n    var newTailOffset = getTailOffset(newCapacity);\n\n    // New size might need creating a higher root.\n    while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n      newRoot = new VNode(newRoot && newRoot.array.length ? [newRoot] : [], owner);\n      newLevel += SHIFT;\n    }\n\n    // Locate or create the new tail.\n    var oldTail = list._tail;\n    var newTail = newTailOffset < oldTailOffset ?\n      listNodeFor(list, newCapacity - 1) :\n      newTailOffset > oldTailOffset ? new VNode([], owner) : oldTail;\n\n    // Merge Tail into tree.\n    if (oldTail && newTailOffset > oldTailOffset && newOrigin < oldCapacity && oldTail.array.length) {\n      newRoot = editableVNode(newRoot, owner);\n      var node = newRoot;\n      for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n        var idx = (oldTailOffset >>> level) & MASK;\n        node = node.array[idx] = editableVNode(node.array[idx], owner);\n      }\n      node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n    }\n\n    // If the size has been reduced, there's a chance the tail needs to be trimmed.\n    if (newCapacity < oldCapacity) {\n      newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n    }\n\n    // If the new origin is within the tail, then we do not need a root.\n    if (newOrigin >= newTailOffset) {\n      newOrigin -= newTailOffset;\n      newCapacity -= newTailOffset;\n      newLevel = SHIFT;\n      newRoot = null;\n      newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n    // Otherwise, if the root has been trimmed, garbage collect.\n    } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n      offsetShift = 0;\n\n      // Identify the new top root node of the subtree of the old root.\n      while (newRoot) {\n        var beginIndex = (newOrigin >>> newLevel) & MASK;\n        if (beginIndex !== (newTailOffset >>> newLevel) & MASK) {\n          break;\n        }\n        if (beginIndex) {\n          offsetShift += (1 << newLevel) * beginIndex;\n        }\n        newLevel -= SHIFT;\n        newRoot = newRoot.array[beginIndex];\n      }\n\n      // Trim the new sides of the new root.\n      if (newRoot && newOrigin > oldOrigin) {\n        newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n      }\n      if (newRoot && newTailOffset < oldTailOffset) {\n        newRoot = newRoot.removeAfter(owner, newLevel, newTailOffset - offsetShift);\n      }\n      if (offsetShift) {\n        newOrigin -= offsetShift;\n        newCapacity -= offsetShift;\n      }\n    }\n\n    if (list.__ownerID) {\n      list.size = newCapacity - newOrigin;\n      list._origin = newOrigin;\n      list._capacity = newCapacity;\n      list._level = newLevel;\n      list._root = newRoot;\n      list._tail = newTail;\n      list.__hash = undefined;\n      list.__altered = true;\n      return list;\n    }\n    return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n  }\n\n  function mergeIntoListWith(list, merger, iterables) {\n    var iters = [];\n    var maxSize = 0;\n    for (var ii = 0; ii < iterables.length; ii++) {\n      var value = iterables[ii];\n      var iter = IndexedIterable(value);\n      if (iter.size > maxSize) {\n        maxSize = iter.size;\n      }\n      if (!isIterable(value)) {\n        iter = iter.map(function(v ) {return fromJS(v)});\n      }\n      iters.push(iter);\n    }\n    if (maxSize > list.size) {\n      list = list.setSize(maxSize);\n    }\n    return mergeIntoCollectionWith(list, merger, iters);\n  }\n\n  function getTailOffset(size) {\n    return size < SIZE ? 0 : (((size - 1) >>> SHIFT) << SHIFT);\n  }\n\n  createClass(OrderedMap, Map);\n\n    // @pragma Construction\n\n    function OrderedMap(value) {\n      return value === null || value === undefined ? emptyOrderedMap() :\n        isOrderedMap(value) ? value :\n        emptyOrderedMap().withMutations(function(map ) {\n          var iter = KeyedIterable(value);\n          assertNotInfinite(iter.size);\n          iter.forEach(function(v, k)  {return map.set(k, v)});\n        });\n    }\n\n    OrderedMap.of = function(/*...values*/) {\n      return this(arguments);\n    };\n\n    OrderedMap.prototype.toString = function() {\n      return this.__toString('OrderedMap {', '}');\n    };\n\n    // @pragma Access\n\n    OrderedMap.prototype.get = function(k, notSetValue) {\n      var index = this._map.get(k);\n      return index !== undefined ? this._list.get(index)[1] : notSetValue;\n    };\n\n    // @pragma Modification\n\n    OrderedMap.prototype.clear = function() {\n      if (this.size === 0) {\n        return this;\n      }\n      if (this.__ownerID) {\n        this.size = 0;\n        this._map.clear();\n        this._list.clear();\n        return this;\n      }\n      return emptyOrderedMap();\n    };\n\n    OrderedMap.prototype.set = function(k, v) {\n      return updateOrderedMap(this, k, v);\n    };\n\n    OrderedMap.prototype.remove = function(k) {\n      return updateOrderedMap(this, k, NOT_SET);\n    };\n\n    OrderedMap.prototype.wasAltered = function() {\n      return this._map.wasAltered() || this._list.wasAltered();\n    };\n\n    OrderedMap.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n      return this._list.__iterate(\n        function(entry ) {return entry && fn(entry[1], entry[0], this$0)},\n        reverse\n      );\n    };\n\n    OrderedMap.prototype.__iterator = function(type, reverse) {\n      return this._list.fromEntrySeq().__iterator(type, reverse);\n    };\n\n    OrderedMap.prototype.__ensureOwner = function(ownerID) {\n      if (ownerID === this.__ownerID) {\n        return this;\n      }\n      var newMap = this._map.__ensureOwner(ownerID);\n      var newList = this._list.__ensureOwner(ownerID);\n      if (!ownerID) {\n        this.__ownerID = ownerID;\n        this._map = newMap;\n        this._list = newList;\n        return this;\n      }\n      return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n    };\n\n\n  function isOrderedMap(maybeOrderedMap) {\n    return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n  }\n\n  OrderedMap.isOrderedMap = isOrderedMap;\n\n  OrderedMap.prototype[IS_ORDERED_SENTINEL] = true;\n  OrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\n\n\n  function makeOrderedMap(map, list, ownerID, hash) {\n    var omap = Object.create(OrderedMap.prototype);\n    omap.size = map ? map.size : 0;\n    omap._map = map;\n    omap._list = list;\n    omap.__ownerID = ownerID;\n    omap.__hash = hash;\n    return omap;\n  }\n\n  var EMPTY_ORDERED_MAP;\n  function emptyOrderedMap() {\n    return EMPTY_ORDERED_MAP || (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()));\n  }\n\n  function updateOrderedMap(omap, k, v) {\n    var map = omap._map;\n    var list = omap._list;\n    var i = map.get(k);\n    var has = i !== undefined;\n    var newMap;\n    var newList;\n    if (v === NOT_SET) { // removed\n      if (!has) {\n        return omap;\n      }\n      if (list.size >= SIZE && list.size >= map.size * 2) {\n        newList = list.filter(function(entry, idx)  {return entry !== undefined && i !== idx});\n        newMap = newList.toKeyedSeq().map(function(entry ) {return entry[0]}).flip().toMap();\n        if (omap.__ownerID) {\n          newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n        }\n      } else {\n        newMap = map.remove(k);\n        newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n      }\n    } else {\n      if (has) {\n        if (v === list.get(i)[1]) {\n          return omap;\n        }\n        newMap = map;\n        newList = list.set(i, [k, v]);\n      } else {\n        newMap = map.set(k, list.size);\n        newList = list.set(list.size, [k, v]);\n      }\n    }\n    if (omap.__ownerID) {\n      omap.size = newMap.size;\n      omap._map = newMap;\n      omap._list = newList;\n      omap.__hash = undefined;\n      return omap;\n    }\n    return makeOrderedMap(newMap, newList);\n  }\n\n  createClass(ToKeyedSequence, KeyedSeq);\n    function ToKeyedSequence(indexed, useKeys) {\n      this._iter = indexed;\n      this._useKeys = useKeys;\n      this.size = indexed.size;\n    }\n\n    ToKeyedSequence.prototype.get = function(key, notSetValue) {\n      return this._iter.get(key, notSetValue);\n    };\n\n    ToKeyedSequence.prototype.has = function(key) {\n      return this._iter.has(key);\n    };\n\n    ToKeyedSequence.prototype.valueSeq = function() {\n      return this._iter.valueSeq();\n    };\n\n    ToKeyedSequence.prototype.reverse = function() {var this$0 = this;\n      var reversedSequence = reverseFactory(this, true);\n      if (!this._useKeys) {\n        reversedSequence.valueSeq = function()  {return this$0._iter.toSeq().reverse()};\n      }\n      return reversedSequence;\n    };\n\n    ToKeyedSequence.prototype.map = function(mapper, context) {var this$0 = this;\n      var mappedSequence = mapFactory(this, mapper, context);\n      if (!this._useKeys) {\n        mappedSequence.valueSeq = function()  {return this$0._iter.toSeq().map(mapper, context)};\n      }\n      return mappedSequence;\n    };\n\n    ToKeyedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n      var ii;\n      return this._iter.__iterate(\n        this._useKeys ?\n          function(v, k)  {return fn(v, k, this$0)} :\n          ((ii = reverse ? resolveSize(this) : 0),\n            function(v ) {return fn(v, reverse ? --ii : ii++, this$0)}),\n        reverse\n      );\n    };\n\n    ToKeyedSequence.prototype.__iterator = function(type, reverse) {\n      if (this._useKeys) {\n        return this._iter.__iterator(type, reverse);\n      }\n      var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n      var ii = reverse ? resolveSize(this) : 0;\n      return new Iterator(function()  {\n        var step = iterator.next();\n        return step.done ? step :\n          iteratorValue(type, reverse ? --ii : ii++, step.value, step);\n      });\n    };\n\n  ToKeyedSequence.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n  createClass(ToIndexedSequence, IndexedSeq);\n    function ToIndexedSequence(iter) {\n      this._iter = iter;\n      this.size = iter.size;\n    }\n\n    ToIndexedSequence.prototype.includes = function(value) {\n      return this._iter.includes(value);\n    };\n\n    ToIndexedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n      var iterations = 0;\n      return this._iter.__iterate(function(v ) {return fn(v, iterations++, this$0)}, reverse);\n    };\n\n    ToIndexedSequence.prototype.__iterator = function(type, reverse) {\n      var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n      var iterations = 0;\n      return new Iterator(function()  {\n        var step = iterator.next();\n        return step.done ? step :\n          iteratorValue(type, iterations++, step.value, step)\n      });\n    };\n\n\n\n  createClass(ToSetSequence, SetSeq);\n    function ToSetSequence(iter) {\n      this._iter = iter;\n      this.size = iter.size;\n    }\n\n    ToSetSequence.prototype.has = function(key) {\n      return this._iter.includes(key);\n    };\n\n    ToSetSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n      return this._iter.__iterate(function(v ) {return fn(v, v, this$0)}, reverse);\n    };\n\n    ToSetSequence.prototype.__iterator = function(type, reverse) {\n      var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n      return new Iterator(function()  {\n        var step = iterator.next();\n        return step.done ? step :\n          iteratorValue(type, step.value, step.value, step);\n      });\n    };\n\n\n\n  createClass(FromEntriesSequence, KeyedSeq);\n    function FromEntriesSequence(entries) {\n      this._iter = entries;\n      this.size = entries.size;\n    }\n\n    FromEntriesSequence.prototype.entrySeq = function() {\n      return this._iter.toSeq();\n    };\n\n    FromEntriesSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n      return this._iter.__iterate(function(entry ) {\n        // Check if entry exists first so array access doesn't throw for holes\n        // in the parent iteration.\n        if (entry) {\n          validateEntry(entry);\n          var indexedIterable = isIterable(entry);\n          return fn(\n            indexedIterable ? entry.get(1) : entry[1],\n            indexedIterable ? entry.get(0) : entry[0],\n            this$0\n          );\n        }\n      }, reverse);\n    };\n\n    FromEntriesSequence.prototype.__iterator = function(type, reverse) {\n      var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n      return new Iterator(function()  {\n        while (true) {\n          var step = iterator.next();\n          if (step.done) {\n            return step;\n          }\n          var entry = step.value;\n          // Check if entry exists first so array access doesn't throw for holes\n          // in the parent iteration.\n          if (entry) {\n            validateEntry(entry);\n            var indexedIterable = isIterable(entry);\n            return iteratorValue(\n              type,\n              indexedIterable ? entry.get(0) : entry[0],\n              indexedIterable ? entry.get(1) : entry[1],\n              step\n            );\n          }\n        }\n      });\n    };\n\n\n  ToIndexedSequence.prototype.cacheResult =\n  ToKeyedSequence.prototype.cacheResult =\n  ToSetSequence.prototype.cacheResult =\n  FromEntriesSequence.prototype.cacheResult =\n    cacheResultThrough;\n\n\n  function flipFactory(iterable) {\n    var flipSequence = makeSequence(iterable);\n    flipSequence._iter = iterable;\n    flipSequence.size = iterable.size;\n    flipSequence.flip = function()  {return iterable};\n    flipSequence.reverse = function () {\n      var reversedSequence = iterable.reverse.apply(this); // super.reverse()\n      reversedSequence.flip = function()  {return iterable.reverse()};\n      return reversedSequence;\n    };\n    flipSequence.has = function(key ) {return iterable.includes(key)};\n    flipSequence.includes = function(key ) {return iterable.has(key)};\n    flipSequence.cacheResult = cacheResultThrough;\n    flipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n      return iterable.__iterate(function(v, k)  {return fn(k, v, this$0) !== false}, reverse);\n    }\n    flipSequence.__iteratorUncached = function(type, reverse) {\n      if (type === ITERATE_ENTRIES) {\n        var iterator = iterable.__iterator(type, reverse);\n        return new Iterator(function()  {\n          var step = iterator.next();\n          if (!step.done) {\n            var k = step.value[0];\n            step.value[0] = step.value[1];\n            step.value[1] = k;\n          }\n          return step;\n        });\n      }\n      return iterable.__iterator(\n        type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n        reverse\n      );\n    }\n    return flipSequence;\n  }\n\n\n  function mapFactory(iterable, mapper, context) {\n    var mappedSequence = makeSequence(iterable);\n    mappedSequence.size = iterable.size;\n    mappedSequence.has = function(key ) {return iterable.has(key)};\n    mappedSequence.get = function(key, notSetValue)  {\n      var v = iterable.get(key, NOT_SET);\n      return v === NOT_SET ?\n        notSetValue :\n        mapper.call(context, v, key, iterable);\n    };\n    mappedSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n      return iterable.__iterate(\n        function(v, k, c)  {return fn(mapper.call(context, v, k, c), k, this$0) !== false},\n        reverse\n      );\n    }\n    mappedSequence.__iteratorUncached = function (type, reverse) {\n      var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n      return new Iterator(function()  {\n        var step = iterator.next();\n        if (step.done) {\n          return step;\n        }\n        var entry = step.value;\n        var key = entry[0];\n        return iteratorValue(\n          type,\n          key,\n          mapper.call(context, entry[1], key, iterable),\n          step\n        );\n      });\n    }\n    return mappedSequence;\n  }\n\n\n  function reverseFactory(iterable, useKeys) {\n    var reversedSequence = makeSequence(iterable);\n    reversedSequence._iter = iterable;\n    reversedSequence.size = iterable.size;\n    reversedSequence.reverse = function()  {return iterable};\n    if (iterable.flip) {\n      reversedSequence.flip = function () {\n        var flipSequence = flipFactory(iterable);\n        flipSequence.reverse = function()  {return iterable.flip()};\n        return flipSequence;\n      };\n    }\n    reversedSequence.get = function(key, notSetValue) \n      {return iterable.get(useKeys ? key : -1 - key, notSetValue)};\n    reversedSequence.has = function(key )\n      {return iterable.has(useKeys ? key : -1 - key)};\n    reversedSequence.includes = function(value ) {return iterable.includes(value)};\n    reversedSequence.cacheResult = cacheResultThrough;\n    reversedSequence.__iterate = function (fn, reverse) {var this$0 = this;\n      return iterable.__iterate(function(v, k)  {return fn(v, k, this$0)}, !reverse);\n    };\n    reversedSequence.__iterator =\n      function(type, reverse)  {return iterable.__iterator(type, !reverse)};\n    return reversedSequence;\n  }\n\n\n  function filterFactory(iterable, predicate, context, useKeys) {\n    var filterSequence = makeSequence(iterable);\n    if (useKeys) {\n      filterSequence.has = function(key ) {\n        var v = iterable.get(key, NOT_SET);\n        return v !== NOT_SET && !!predicate.call(context, v, key, iterable);\n      };\n      filterSequence.get = function(key, notSetValue)  {\n        var v = iterable.get(key, NOT_SET);\n        return v !== NOT_SET && predicate.call(context, v, key, iterable) ?\n          v : notSetValue;\n      };\n    }\n    filterSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n      var iterations = 0;\n      iterable.__iterate(function(v, k, c)  {\n        if (predicate.call(context, v, k, c)) {\n          iterations++;\n          return fn(v, useKeys ? k : iterations - 1, this$0);\n        }\n      }, reverse);\n      return iterations;\n    };\n    filterSequence.__iteratorUncached = function (type, reverse) {\n      var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n      var iterations = 0;\n      return new Iterator(function()  {\n        while (true) {\n          var step = iterator.next();\n          if (step.done) {\n            return step;\n          }\n          var entry = step.value;\n          var key = entry[0];\n          var value = entry[1];\n          if (predicate.call(context, value, key, iterable)) {\n            return iteratorValue(type, useKeys ? key : iterations++, value, step);\n          }\n        }\n      });\n    }\n    return filterSequence;\n  }\n\n\n  function countByFactory(iterable, grouper, context) {\n    var groups = Map().asMutable();\n    iterable.__iterate(function(v, k)  {\n      groups.update(\n        grouper.call(context, v, k, iterable),\n        0,\n        function(a ) {return a + 1}\n      );\n    });\n    return groups.asImmutable();\n  }\n\n\n  function groupByFactory(iterable, grouper, context) {\n    var isKeyedIter = isKeyed(iterable);\n    var groups = (isOrdered(iterable) ? OrderedMap() : Map()).asMutable();\n    iterable.__iterate(function(v, k)  {\n      groups.update(\n        grouper.call(context, v, k, iterable),\n        function(a ) {return (a = a || [], a.push(isKeyedIter ? [k, v] : v), a)}\n      );\n    });\n    var coerce = iterableClass(iterable);\n    return groups.map(function(arr ) {return reify(iterable, coerce(arr))});\n  }\n\n\n  function sliceFactory(iterable, begin, end, useKeys) {\n    var originalSize = iterable.size;\n\n    // Sanitize begin & end using this shorthand for ToInt32(argument)\n    // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n    if (begin !== undefined) {\n      begin = begin | 0;\n    }\n    if (end !== undefined) {\n      if (end === Infinity) {\n        end = originalSize;\n      } else {\n        end = end | 0;\n      }\n    }\n\n    if (wholeSlice(begin, end, originalSize)) {\n      return iterable;\n    }\n\n    var resolvedBegin = resolveBegin(begin, originalSize);\n    var resolvedEnd = resolveEnd(end, originalSize);\n\n    // begin or end will be NaN if they were provided as negative numbers and\n    // this iterable's size is unknown. In that case, cache first so there is\n    // a known size and these do not resolve to NaN.\n    if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n      return sliceFactory(iterable.toSeq().cacheResult(), begin, end, useKeys);\n    }\n\n    // Note: resolvedEnd is undefined when the original sequence's length is\n    // unknown and this slice did not supply an end and should contain all\n    // elements after resolvedBegin.\n    // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n    var resolvedSize = resolvedEnd - resolvedBegin;\n    var sliceSize;\n    if (resolvedSize === resolvedSize) {\n      sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n    }\n\n    var sliceSeq = makeSequence(iterable);\n\n    // If iterable.size is undefined, the size of the realized sliceSeq is\n    // unknown at this point unless the number of items to slice is 0\n    sliceSeq.size = sliceSize === 0 ? sliceSize : iterable.size && sliceSize || undefined;\n\n    if (!useKeys && isSeq(iterable) && sliceSize >= 0) {\n      sliceSeq.get = function (index, notSetValue) {\n        index = wrapIndex(this, index);\n        return index >= 0 && index < sliceSize ?\n          iterable.get(index + resolvedBegin, notSetValue) :\n          notSetValue;\n      }\n    }\n\n    sliceSeq.__iterateUncached = function(fn, reverse) {var this$0 = this;\n      if (sliceSize === 0) {\n        return 0;\n      }\n      if (reverse) {\n        return this.cacheResult().__iterate(fn, reverse);\n      }\n      var skipped = 0;\n      var isSkipping = true;\n      var iterations = 0;\n      iterable.__iterate(function(v, k)  {\n        if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n          iterations++;\n          return fn(v, useKeys ? k : iterations - 1, this$0) !== false &&\n                 iterations !== sliceSize;\n        }\n      });\n      return iterations;\n    };\n\n    sliceSeq.__iteratorUncached = function(type, reverse) {\n      if (sliceSize !== 0 && reverse) {\n        return this.cacheResult().__iterator(type, reverse);\n      }\n      // Don't bother instantiating parent iterator if taking 0.\n      var iterator = sliceSize !== 0 && iterable.__iterator(type, reverse);\n      var skipped = 0;\n      var iterations = 0;\n      return new Iterator(function()  {\n        while (skipped++ < resolvedBegin) {\n          iterator.next();\n        }\n        if (++iterations > sliceSize) {\n          return iteratorDone();\n        }\n        var step = iterator.next();\n        if (useKeys || type === ITERATE_VALUES) {\n          return step;\n        } else if (type === ITERATE_KEYS) {\n          return iteratorValue(type, iterations - 1, undefined, step);\n        } else {\n          return iteratorValue(type, iterations - 1, step.value[1], step);\n        }\n      });\n    }\n\n    return sliceSeq;\n  }\n\n\n  function takeWhileFactory(iterable, predicate, context) {\n    var takeSequence = makeSequence(iterable);\n    takeSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n      if (reverse) {\n        return this.cacheResult().__iterate(fn, reverse);\n      }\n      var iterations = 0;\n      iterable.__iterate(function(v, k, c) \n        {return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$0)}\n      );\n      return iterations;\n    };\n    takeSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n      if (reverse) {\n        return this.cacheResult().__iterator(type, reverse);\n      }\n      var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n      var iterating = true;\n      return new Iterator(function()  {\n        if (!iterating) {\n          return iteratorDone();\n        }\n        var step = iterator.next();\n        if (step.done) {\n          return step;\n        }\n        var entry = step.value;\n        var k = entry[0];\n        var v = entry[1];\n        if (!predicate.call(context, v, k, this$0)) {\n          iterating = false;\n          return iteratorDone();\n        }\n        return type === ITERATE_ENTRIES ? step :\n          iteratorValue(type, k, v, step);\n      });\n    };\n    return takeSequence;\n  }\n\n\n  function skipWhileFactory(iterable, predicate, context, useKeys) {\n    var skipSequence = makeSequence(iterable);\n    skipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n      if (reverse) {\n        return this.cacheResult().__iterate(fn, reverse);\n      }\n      var isSkipping = true;\n      var iterations = 0;\n      iterable.__iterate(function(v, k, c)  {\n        if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n          iterations++;\n          return fn(v, useKeys ? k : iterations - 1, this$0);\n        }\n      });\n      return iterations;\n    };\n    skipSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n      if (reverse) {\n        return this.cacheResult().__iterator(type, reverse);\n      }\n      var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n      var skipping = true;\n      var iterations = 0;\n      return new Iterator(function()  {\n        var step, k, v;\n        do {\n          step = iterator.next();\n          if (step.done) {\n            if (useKeys || type === ITERATE_VALUES) {\n              return step;\n            } else if (type === ITERATE_KEYS) {\n              return iteratorValue(type, iterations++, undefined, step);\n            } else {\n              return iteratorValue(type, iterations++, step.value[1], step);\n            }\n          }\n          var entry = step.value;\n          k = entry[0];\n          v = entry[1];\n          skipping && (skipping = predicate.call(context, v, k, this$0));\n        } while (skipping);\n        return type === ITERATE_ENTRIES ? step :\n          iteratorValue(type, k, v, step);\n      });\n    };\n    return skipSequence;\n  }\n\n\n  function concatFactory(iterable, values) {\n    var isKeyedIterable = isKeyed(iterable);\n    var iters = [iterable].concat(values).map(function(v ) {\n      if (!isIterable(v)) {\n        v = isKeyedIterable ?\n          keyedSeqFromValue(v) :\n          indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n      } else if (isKeyedIterable) {\n        v = KeyedIterable(v);\n      }\n      return v;\n    }).filter(function(v ) {return v.size !== 0});\n\n    if (iters.length === 0) {\n      return iterable;\n    }\n\n    if (iters.length === 1) {\n      var singleton = iters[0];\n      if (singleton === iterable ||\n          isKeyedIterable && isKeyed(singleton) ||\n          isIndexed(iterable) && isIndexed(singleton)) {\n        return singleton;\n      }\n    }\n\n    var concatSeq = new ArraySeq(iters);\n    if (isKeyedIterable) {\n      concatSeq = concatSeq.toKeyedSeq();\n    } else if (!isIndexed(iterable)) {\n      concatSeq = concatSeq.toSetSeq();\n    }\n    concatSeq = concatSeq.flatten(true);\n    concatSeq.size = iters.reduce(\n      function(sum, seq)  {\n        if (sum !== undefined) {\n          var size = seq.size;\n          if (size !== undefined) {\n            return sum + size;\n          }\n        }\n      },\n      0\n    );\n    return concatSeq;\n  }\n\n\n  function flattenFactory(iterable, depth, useKeys) {\n    var flatSequence = makeSequence(iterable);\n    flatSequence.__iterateUncached = function(fn, reverse) {\n      var iterations = 0;\n      var stopped = false;\n      function flatDeep(iter, currentDepth) {var this$0 = this;\n        iter.__iterate(function(v, k)  {\n          if ((!depth || currentDepth < depth) && isIterable(v)) {\n            flatDeep(v, currentDepth + 1);\n          } else if (fn(v, useKeys ? k : iterations++, this$0) === false) {\n            stopped = true;\n          }\n          return !stopped;\n        }, reverse);\n      }\n      flatDeep(iterable, 0);\n      return iterations;\n    }\n    flatSequence.__iteratorUncached = function(type, reverse) {\n      var iterator = iterable.__iterator(type, reverse);\n      var stack = [];\n      var iterations = 0;\n      return new Iterator(function()  {\n        while (iterator) {\n          var step = iterator.next();\n          if (step.done !== false) {\n            iterator = stack.pop();\n            continue;\n          }\n          var v = step.value;\n          if (type === ITERATE_ENTRIES) {\n            v = v[1];\n          }\n          if ((!depth || stack.length < depth) && isIterable(v)) {\n            stack.push(iterator);\n            iterator = v.__iterator(type, reverse);\n          } else {\n            return useKeys ? step : iteratorValue(type, iterations++, v, step);\n          }\n        }\n        return iteratorDone();\n      });\n    }\n    return flatSequence;\n  }\n\n\n  function flatMapFactory(iterable, mapper, context) {\n    var coerce = iterableClass(iterable);\n    return iterable.toSeq().map(\n      function(v, k)  {return coerce(mapper.call(context, v, k, iterable))}\n    ).flatten(true);\n  }\n\n\n  function interposeFactory(iterable, separator) {\n    var interposedSequence = makeSequence(iterable);\n    interposedSequence.size = iterable.size && iterable.size * 2 -1;\n    interposedSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n      var iterations = 0;\n      iterable.__iterate(function(v, k) \n        {return (!iterations || fn(separator, iterations++, this$0) !== false) &&\n        fn(v, iterations++, this$0) !== false},\n        reverse\n      );\n      return iterations;\n    };\n    interposedSequence.__iteratorUncached = function(type, reverse) {\n      var iterator = iterable.__iterator(ITERATE_VALUES, reverse);\n      var iterations = 0;\n      var step;\n      return new Iterator(function()  {\n        if (!step || iterations % 2) {\n          step = iterator.next();\n          if (step.done) {\n            return step;\n          }\n        }\n        return iterations % 2 ?\n          iteratorValue(type, iterations++, separator) :\n          iteratorValue(type, iterations++, step.value, step);\n      });\n    };\n    return interposedSequence;\n  }\n\n\n  function sortFactory(iterable, comparator, mapper) {\n    if (!comparator) {\n      comparator = defaultComparator;\n    }\n    var isKeyedIterable = isKeyed(iterable);\n    var index = 0;\n    var entries = iterable.toSeq().map(\n      function(v, k)  {return [k, v, index++, mapper ? mapper(v, k, iterable) : v]}\n    ).toArray();\n    entries.sort(function(a, b)  {return comparator(a[3], b[3]) || a[2] - b[2]}).forEach(\n      isKeyedIterable ?\n      function(v, i)  { entries[i].length = 2; } :\n      function(v, i)  { entries[i] = v[1]; }\n    );\n    return isKeyedIterable ? KeyedSeq(entries) :\n      isIndexed(iterable) ? IndexedSeq(entries) :\n      SetSeq(entries);\n  }\n\n\n  function maxFactory(iterable, comparator, mapper) {\n    if (!comparator) {\n      comparator = defaultComparator;\n    }\n    if (mapper) {\n      var entry = iterable.toSeq()\n        .map(function(v, k)  {return [v, mapper(v, k, iterable)]})\n        .reduce(function(a, b)  {return maxCompare(comparator, a[1], b[1]) ? b : a});\n      return entry && entry[0];\n    } else {\n      return iterable.reduce(function(a, b)  {return maxCompare(comparator, a, b) ? b : a});\n    }\n  }\n\n  function maxCompare(comparator, a, b) {\n    var comp = comparator(b, a);\n    // b is considered the new max if the comparator declares them equal, but\n    // they are not equal and b is in fact a nullish value.\n    return (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) || comp > 0;\n  }\n\n\n  function zipWithFactory(keyIter, zipper, iters) {\n    var zipSequence = makeSequence(keyIter);\n    zipSequence.size = new ArraySeq(iters).map(function(i ) {return i.size}).min();\n    // Note: this a generic base implementation of __iterate in terms of\n    // __iterator which may be more generically useful in the future.\n    zipSequence.__iterate = function(fn, reverse) {\n      /* generic:\n      var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n      var step;\n      var iterations = 0;\n      while (!(step = iterator.next()).done) {\n        iterations++;\n        if (fn(step.value[1], step.value[0], this) === false) {\n          break;\n        }\n      }\n      return iterations;\n      */\n      // indexed:\n      var iterator = this.__iterator(ITERATE_VALUES, reverse);\n      var step;\n      var iterations = 0;\n      while (!(step = iterator.next()).done) {\n        if (fn(step.value, iterations++, this) === false) {\n          break;\n        }\n      }\n      return iterations;\n    };\n    zipSequence.__iteratorUncached = function(type, reverse) {\n      var iterators = iters.map(function(i )\n        {return (i = Iterable(i), getIterator(reverse ? i.reverse() : i))}\n      );\n      var iterations = 0;\n      var isDone = false;\n      return new Iterator(function()  {\n        var steps;\n        if (!isDone) {\n          steps = iterators.map(function(i ) {return i.next()});\n          isDone = steps.some(function(s ) {return s.done});\n        }\n        if (isDone) {\n          return iteratorDone();\n        }\n        return iteratorValue(\n          type,\n          iterations++,\n          zipper.apply(null, steps.map(function(s ) {return s.value}))\n        );\n      });\n    };\n    return zipSequence\n  }\n\n\n  // #pragma Helper Functions\n\n  function reify(iter, seq) {\n    return isSeq(iter) ? seq : iter.constructor(seq);\n  }\n\n  function validateEntry(entry) {\n    if (entry !== Object(entry)) {\n      throw new TypeError('Expected [K, V] tuple: ' + entry);\n    }\n  }\n\n  function resolveSize(iter) {\n    assertNotInfinite(iter.size);\n    return ensureSize(iter);\n  }\n\n  function iterableClass(iterable) {\n    return isKeyed(iterable) ? KeyedIterable :\n      isIndexed(iterable) ? IndexedIterable :\n      SetIterable;\n  }\n\n  function makeSequence(iterable) {\n    return Object.create(\n      (\n        isKeyed(iterable) ? KeyedSeq :\n        isIndexed(iterable) ? IndexedSeq :\n        SetSeq\n      ).prototype\n    );\n  }\n\n  function cacheResultThrough() {\n    if (this._iter.cacheResult) {\n      this._iter.cacheResult();\n      this.size = this._iter.size;\n      return this;\n    } else {\n      return Seq.prototype.cacheResult.call(this);\n    }\n  }\n\n  function defaultComparator(a, b) {\n    return a > b ? 1 : a < b ? -1 : 0;\n  }\n\n  function forceIterator(keyPath) {\n    var iter = getIterator(keyPath);\n    if (!iter) {\n      // Array might not be iterable in this environment, so we need a fallback\n      // to our wrapped type.\n      if (!isArrayLike(keyPath)) {\n        throw new TypeError('Expected iterable or array-like: ' + keyPath);\n      }\n      iter = getIterator(Iterable(keyPath));\n    }\n    return iter;\n  }\n\n  createClass(Record, KeyedCollection);\n\n    function Record(defaultValues, name) {\n      var hasInitialized;\n\n      var RecordType = function Record(values) {\n        if (values instanceof RecordType) {\n          return values;\n        }\n        if (!(this instanceof RecordType)) {\n          return new RecordType(values);\n        }\n        if (!hasInitialized) {\n          hasInitialized = true;\n          var keys = Object.keys(defaultValues);\n          setProps(RecordTypePrototype, keys);\n          RecordTypePrototype.size = keys.length;\n          RecordTypePrototype._name = name;\n          RecordTypePrototype._keys = keys;\n          RecordTypePrototype._defaultValues = defaultValues;\n        }\n        this._map = Map(values);\n      };\n\n      var RecordTypePrototype = RecordType.prototype = Object.create(RecordPrototype);\n      RecordTypePrototype.constructor = RecordType;\n\n      return RecordType;\n    }\n\n    Record.prototype.toString = function() {\n      return this.__toString(recordName(this) + ' {', '}');\n    };\n\n    // @pragma Access\n\n    Record.prototype.has = function(k) {\n      return this._defaultValues.hasOwnProperty(k);\n    };\n\n    Record.prototype.get = function(k, notSetValue) {\n      if (!this.has(k)) {\n        return notSetValue;\n      }\n      var defaultVal = this._defaultValues[k];\n      return this._map ? this._map.get(k, defaultVal) : defaultVal;\n    };\n\n    // @pragma Modification\n\n    Record.prototype.clear = function() {\n      if (this.__ownerID) {\n        this._map && this._map.clear();\n        return this;\n      }\n      var RecordType = this.constructor;\n      return RecordType._empty || (RecordType._empty = makeRecord(this, emptyMap()));\n    };\n\n    Record.prototype.set = function(k, v) {\n      if (!this.has(k)) {\n        throw new Error('Cannot set unknown key \"' + k + '\" on ' + recordName(this));\n      }\n      if (this._map && !this._map.has(k)) {\n        var defaultVal = this._defaultValues[k];\n        if (v === defaultVal) {\n          return this;\n        }\n      }\n      var newMap = this._map && this._map.set(k, v);\n      if (this.__ownerID || newMap === this._map) {\n        return this;\n      }\n      return makeRecord(this, newMap);\n    };\n\n    Record.prototype.remove = function(k) {\n      if (!this.has(k)) {\n        return this;\n      }\n      var newMap = this._map && this._map.remove(k);\n      if (this.__ownerID || newMap === this._map) {\n        return this;\n      }\n      return makeRecord(this, newMap);\n    };\n\n    Record.prototype.wasAltered = function() {\n      return this._map.wasAltered();\n    };\n\n    Record.prototype.__iterator = function(type, reverse) {var this$0 = this;\n      return KeyedIterable(this._defaultValues).map(function(_, k)  {return this$0.get(k)}).__iterator(type, reverse);\n    };\n\n    Record.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n      return KeyedIterable(this._defaultValues).map(function(_, k)  {return this$0.get(k)}).__iterate(fn, reverse);\n    };\n\n    Record.prototype.__ensureOwner = function(ownerID) {\n      if (ownerID === this.__ownerID) {\n        return this;\n      }\n      var newMap = this._map && this._map.__ensureOwner(ownerID);\n      if (!ownerID) {\n        this.__ownerID = ownerID;\n        this._map = newMap;\n        return this;\n      }\n      return makeRecord(this, newMap, ownerID);\n    };\n\n\n  var RecordPrototype = Record.prototype;\n  RecordPrototype[DELETE] = RecordPrototype.remove;\n  RecordPrototype.deleteIn =\n  RecordPrototype.removeIn = MapPrototype.removeIn;\n  RecordPrototype.merge = MapPrototype.merge;\n  RecordPrototype.mergeWith = MapPrototype.mergeWith;\n  RecordPrototype.mergeIn = MapPrototype.mergeIn;\n  RecordPrototype.mergeDeep = MapPrototype.mergeDeep;\n  RecordPrototype.mergeDeepWith = MapPrototype.mergeDeepWith;\n  RecordPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n  RecordPrototype.setIn = MapPrototype.setIn;\n  RecordPrototype.update = MapPrototype.update;\n  RecordPrototype.updateIn = MapPrototype.updateIn;\n  RecordPrototype.withMutations = MapPrototype.withMutations;\n  RecordPrototype.asMutable = MapPrototype.asMutable;\n  RecordPrototype.asImmutable = MapPrototype.asImmutable;\n\n\n  function makeRecord(likeRecord, map, ownerID) {\n    var record = Object.create(Object.getPrototypeOf(likeRecord));\n    record._map = map;\n    record.__ownerID = ownerID;\n    return record;\n  }\n\n  function recordName(record) {\n    return record._name || record.constructor.name || 'Record';\n  }\n\n  function setProps(prototype, names) {\n    try {\n      names.forEach(setProp.bind(undefined, prototype));\n    } catch (error) {\n      // Object.defineProperty failed. Probably IE8.\n    }\n  }\n\n  function setProp(prototype, name) {\n    Object.defineProperty(prototype, name, {\n      get: function() {\n        return this.get(name);\n      },\n      set: function(value) {\n        invariant(this.__ownerID, 'Cannot set on an immutable record.');\n        this.set(name, value);\n      }\n    });\n  }\n\n  createClass(Set, SetCollection);\n\n    // @pragma Construction\n\n    function Set(value) {\n      return value === null || value === undefined ? emptySet() :\n        isSet(value) && !isOrdered(value) ? value :\n        emptySet().withMutations(function(set ) {\n          var iter = SetIterable(value);\n          assertNotInfinite(iter.size);\n          iter.forEach(function(v ) {return set.add(v)});\n        });\n    }\n\n    Set.of = function(/*...values*/) {\n      return this(arguments);\n    };\n\n    Set.fromKeys = function(value) {\n      return this(KeyedIterable(value).keySeq());\n    };\n\n    Set.prototype.toString = function() {\n      return this.__toString('Set {', '}');\n    };\n\n    // @pragma Access\n\n    Set.prototype.has = function(value) {\n      return this._map.has(value);\n    };\n\n    // @pragma Modification\n\n    Set.prototype.add = function(value) {\n      return updateSet(this, this._map.set(value, true));\n    };\n\n    Set.prototype.remove = function(value) {\n      return updateSet(this, this._map.remove(value));\n    };\n\n    Set.prototype.clear = function() {\n      return updateSet(this, this._map.clear());\n    };\n\n    // @pragma Composition\n\n    Set.prototype.union = function() {var iters = SLICE$0.call(arguments, 0);\n      iters = iters.filter(function(x ) {return x.size !== 0});\n      if (iters.length === 0) {\n        return this;\n      }\n      if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n        return this.constructor(iters[0]);\n      }\n      return this.withMutations(function(set ) {\n        for (var ii = 0; ii < iters.length; ii++) {\n          SetIterable(iters[ii]).forEach(function(value ) {return set.add(value)});\n        }\n      });\n    };\n\n    Set.prototype.intersect = function() {var iters = SLICE$0.call(arguments, 0);\n      if (iters.length === 0) {\n        return this;\n      }\n      iters = iters.map(function(iter ) {return SetIterable(iter)});\n      var originalSet = this;\n      return this.withMutations(function(set ) {\n        originalSet.forEach(function(value ) {\n          if (!iters.every(function(iter ) {return iter.includes(value)})) {\n            set.remove(value);\n          }\n        });\n      });\n    };\n\n    Set.prototype.subtract = function() {var iters = SLICE$0.call(arguments, 0);\n      if (iters.length === 0) {\n        return this;\n      }\n      iters = iters.map(function(iter ) {return SetIterable(iter)});\n      var originalSet = this;\n      return this.withMutations(function(set ) {\n        originalSet.forEach(function(value ) {\n          if (iters.some(function(iter ) {return iter.includes(value)})) {\n            set.remove(value);\n          }\n        });\n      });\n    };\n\n    Set.prototype.merge = function() {\n      return this.union.apply(this, arguments);\n    };\n\n    Set.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n      return this.union.apply(this, iters);\n    };\n\n    Set.prototype.sort = function(comparator) {\n      // Late binding\n      return OrderedSet(sortFactory(this, comparator));\n    };\n\n    Set.prototype.sortBy = function(mapper, comparator) {\n      // Late binding\n      return OrderedSet(sortFactory(this, comparator, mapper));\n    };\n\n    Set.prototype.wasAltered = function() {\n      return this._map.wasAltered();\n    };\n\n    Set.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n      return this._map.__iterate(function(_, k)  {return fn(k, k, this$0)}, reverse);\n    };\n\n    Set.prototype.__iterator = function(type, reverse) {\n      return this._map.map(function(_, k)  {return k}).__iterator(type, reverse);\n    };\n\n    Set.prototype.__ensureOwner = function(ownerID) {\n      if (ownerID === this.__ownerID) {\n        return this;\n      }\n      var newMap = this._map.__ensureOwner(ownerID);\n      if (!ownerID) {\n        this.__ownerID = ownerID;\n        this._map = newMap;\n        return this;\n      }\n      return this.__make(newMap, ownerID);\n    };\n\n\n  function isSet(maybeSet) {\n    return !!(maybeSet && maybeSet[IS_SET_SENTINEL]);\n  }\n\n  Set.isSet = isSet;\n\n  var IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\n\n  var SetPrototype = Set.prototype;\n  SetPrototype[IS_SET_SENTINEL] = true;\n  SetPrototype[DELETE] = SetPrototype.remove;\n  SetPrototype.mergeDeep = SetPrototype.merge;\n  SetPrototype.mergeDeepWith = SetPrototype.mergeWith;\n  SetPrototype.withMutations = MapPrototype.withMutations;\n  SetPrototype.asMutable = MapPrototype.asMutable;\n  SetPrototype.asImmutable = MapPrototype.asImmutable;\n\n  SetPrototype.__empty = emptySet;\n  SetPrototype.__make = makeSet;\n\n  function updateSet(set, newMap) {\n    if (set.__ownerID) {\n      set.size = newMap.size;\n      set._map = newMap;\n      return set;\n    }\n    return newMap === set._map ? set :\n      newMap.size === 0 ? set.__empty() :\n      set.__make(newMap);\n  }\n\n  function makeSet(map, ownerID) {\n    var set = Object.create(SetPrototype);\n    set.size = map ? map.size : 0;\n    set._map = map;\n    set.__ownerID = ownerID;\n    return set;\n  }\n\n  var EMPTY_SET;\n  function emptySet() {\n    return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n  }\n\n  createClass(OrderedSet, Set);\n\n    // @pragma Construction\n\n    function OrderedSet(value) {\n      return value === null || value === undefined ? emptyOrderedSet() :\n        isOrderedSet(value) ? value :\n        emptyOrderedSet().withMutations(function(set ) {\n          var iter = SetIterable(value);\n          assertNotInfinite(iter.size);\n          iter.forEach(function(v ) {return set.add(v)});\n        });\n    }\n\n    OrderedSet.of = function(/*...values*/) {\n      return this(arguments);\n    };\n\n    OrderedSet.fromKeys = function(value) {\n      return this(KeyedIterable(value).keySeq());\n    };\n\n    OrderedSet.prototype.toString = function() {\n      return this.__toString('OrderedSet {', '}');\n    };\n\n\n  function isOrderedSet(maybeOrderedSet) {\n    return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n  }\n\n  OrderedSet.isOrderedSet = isOrderedSet;\n\n  var OrderedSetPrototype = OrderedSet.prototype;\n  OrderedSetPrototype[IS_ORDERED_SENTINEL] = true;\n\n  OrderedSetPrototype.__empty = emptyOrderedSet;\n  OrderedSetPrototype.__make = makeOrderedSet;\n\n  function makeOrderedSet(map, ownerID) {\n    var set = Object.create(OrderedSetPrototype);\n    set.size = map ? map.size : 0;\n    set._map = map;\n    set.__ownerID = ownerID;\n    return set;\n  }\n\n  var EMPTY_ORDERED_SET;\n  function emptyOrderedSet() {\n    return EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()));\n  }\n\n  createClass(Stack, IndexedCollection);\n\n    // @pragma Construction\n\n    function Stack(value) {\n      return value === null || value === undefined ? emptyStack() :\n        isStack(value) ? value :\n        emptyStack().unshiftAll(value);\n    }\n\n    Stack.of = function(/*...values*/) {\n      return this(arguments);\n    };\n\n    Stack.prototype.toString = function() {\n      return this.__toString('Stack [', ']');\n    };\n\n    // @pragma Access\n\n    Stack.prototype.get = function(index, notSetValue) {\n      var head = this._head;\n      index = wrapIndex(this, index);\n      while (head && index--) {\n        head = head.next;\n      }\n      return head ? head.value : notSetValue;\n    };\n\n    Stack.prototype.peek = function() {\n      return this._head && this._head.value;\n    };\n\n    // @pragma Modification\n\n    Stack.prototype.push = function(/*...values*/) {\n      if (arguments.length === 0) {\n        return this;\n      }\n      var newSize = this.size + arguments.length;\n      var head = this._head;\n      for (var ii = arguments.length - 1; ii >= 0; ii--) {\n        head = {\n          value: arguments[ii],\n          next: head\n        };\n      }\n      if (this.__ownerID) {\n        this.size = newSize;\n        this._head = head;\n        this.__hash = undefined;\n        this.__altered = true;\n        return this;\n      }\n      return makeStack(newSize, head);\n    };\n\n    Stack.prototype.pushAll = function(iter) {\n      iter = IndexedIterable(iter);\n      if (iter.size === 0) {\n        return this;\n      }\n      assertNotInfinite(iter.size);\n      var newSize = this.size;\n      var head = this._head;\n      iter.reverse().forEach(function(value ) {\n        newSize++;\n        head = {\n          value: value,\n          next: head\n        };\n      });\n      if (this.__ownerID) {\n        this.size = newSize;\n        this._head = head;\n        this.__hash = undefined;\n        this.__altered = true;\n        return this;\n      }\n      return makeStack(newSize, head);\n    };\n\n    Stack.prototype.pop = function() {\n      return this.slice(1);\n    };\n\n    Stack.prototype.unshift = function(/*...values*/) {\n      return this.push.apply(this, arguments);\n    };\n\n    Stack.prototype.unshiftAll = function(iter) {\n      return this.pushAll(iter);\n    };\n\n    Stack.prototype.shift = function() {\n      return this.pop.apply(this, arguments);\n    };\n\n    Stack.prototype.clear = function() {\n      if (this.size === 0) {\n        return this;\n      }\n      if (this.__ownerID) {\n        this.size = 0;\n        this._head = undefined;\n        this.__hash = undefined;\n        this.__altered = true;\n        return this;\n      }\n      return emptyStack();\n    };\n\n    Stack.prototype.slice = function(begin, end) {\n      if (wholeSlice(begin, end, this.size)) {\n        return this;\n      }\n      var resolvedBegin = resolveBegin(begin, this.size);\n      var resolvedEnd = resolveEnd(end, this.size);\n      if (resolvedEnd !== this.size) {\n        // super.slice(begin, end);\n        return IndexedCollection.prototype.slice.call(this, begin, end);\n      }\n      var newSize = this.size - resolvedBegin;\n      var head = this._head;\n      while (resolvedBegin--) {\n        head = head.next;\n      }\n      if (this.__ownerID) {\n        this.size = newSize;\n        this._head = head;\n        this.__hash = undefined;\n        this.__altered = true;\n        return this;\n      }\n      return makeStack(newSize, head);\n    };\n\n    // @pragma Mutability\n\n    Stack.prototype.__ensureOwner = function(ownerID) {\n      if (ownerID === this.__ownerID) {\n        return this;\n      }\n      if (!ownerID) {\n        this.__ownerID = ownerID;\n        this.__altered = false;\n        return this;\n      }\n      return makeStack(this.size, this._head, ownerID, this.__hash);\n    };\n\n    // @pragma Iteration\n\n    Stack.prototype.__iterate = function(fn, reverse) {\n      if (reverse) {\n        return this.reverse().__iterate(fn);\n      }\n      var iterations = 0;\n      var node = this._head;\n      while (node) {\n        if (fn(node.value, iterations++, this) === false) {\n          break;\n        }\n        node = node.next;\n      }\n      return iterations;\n    };\n\n    Stack.prototype.__iterator = function(type, reverse) {\n      if (reverse) {\n        return this.reverse().__iterator(type);\n      }\n      var iterations = 0;\n      var node = this._head;\n      return new Iterator(function()  {\n        if (node) {\n          var value = node.value;\n          node = node.next;\n          return iteratorValue(type, iterations++, value);\n        }\n        return iteratorDone();\n      });\n    };\n\n\n  function isStack(maybeStack) {\n    return !!(maybeStack && maybeStack[IS_STACK_SENTINEL]);\n  }\n\n  Stack.isStack = isStack;\n\n  var IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\n\n  var StackPrototype = Stack.prototype;\n  StackPrototype[IS_STACK_SENTINEL] = true;\n  StackPrototype.withMutations = MapPrototype.withMutations;\n  StackPrototype.asMutable = MapPrototype.asMutable;\n  StackPrototype.asImmutable = MapPrototype.asImmutable;\n  StackPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n  function makeStack(size, head, ownerID, hash) {\n    var map = Object.create(StackPrototype);\n    map.size = size;\n    map._head = head;\n    map.__ownerID = ownerID;\n    map.__hash = hash;\n    map.__altered = false;\n    return map;\n  }\n\n  var EMPTY_STACK;\n  function emptyStack() {\n    return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n  }\n\n  /**\n   * Contributes additional methods to a constructor\n   */\n  function mixin(ctor, methods) {\n    var keyCopier = function(key ) { ctor.prototype[key] = methods[key]; };\n    Object.keys(methods).forEach(keyCopier);\n    Object.getOwnPropertySymbols &&\n      Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n    return ctor;\n  }\n\n  Iterable.Iterator = Iterator;\n\n  mixin(Iterable, {\n\n    // ### Conversion to other types\n\n    toArray: function() {\n      assertNotInfinite(this.size);\n      var array = new Array(this.size || 0);\n      this.valueSeq().__iterate(function(v, i)  { array[i] = v; });\n      return array;\n    },\n\n    toIndexedSeq: function() {\n      return new ToIndexedSequence(this);\n    },\n\n    toJS: function() {\n      return this.toSeq().map(\n        function(value ) {return value && typeof value.toJS === 'function' ? value.toJS() : value}\n      ).__toJS();\n    },\n\n    toJSON: function() {\n      return this.toSeq().map(\n        function(value ) {return value && typeof value.toJSON === 'function' ? value.toJSON() : value}\n      ).__toJS();\n    },\n\n    toKeyedSeq: function() {\n      return new ToKeyedSequence(this, true);\n    },\n\n    toMap: function() {\n      // Use Late Binding here to solve the circular dependency.\n      return Map(this.toKeyedSeq());\n    },\n\n    toObject: function() {\n      assertNotInfinite(this.size);\n      var object = {};\n      this.__iterate(function(v, k)  { object[k] = v; });\n      return object;\n    },\n\n    toOrderedMap: function() {\n      // Use Late Binding here to solve the circular dependency.\n      return OrderedMap(this.toKeyedSeq());\n    },\n\n    toOrderedSet: function() {\n      // Use Late Binding here to solve the circular dependency.\n      return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n    },\n\n    toSet: function() {\n      // Use Late Binding here to solve the circular dependency.\n      return Set(isKeyed(this) ? this.valueSeq() : this);\n    },\n\n    toSetSeq: function() {\n      return new ToSetSequence(this);\n    },\n\n    toSeq: function() {\n      return isIndexed(this) ? this.toIndexedSeq() :\n        isKeyed(this) ? this.toKeyedSeq() :\n        this.toSetSeq();\n    },\n\n    toStack: function() {\n      // Use Late Binding here to solve the circular dependency.\n      return Stack(isKeyed(this) ? this.valueSeq() : this);\n    },\n\n    toList: function() {\n      // Use Late Binding here to solve the circular dependency.\n      return List(isKeyed(this) ? this.valueSeq() : this);\n    },\n\n\n    // ### Common JavaScript methods and properties\n\n    toString: function() {\n      return '[Iterable]';\n    },\n\n    __toString: function(head, tail) {\n      if (this.size === 0) {\n        return head + tail;\n      }\n      return head + ' ' + this.toSeq().map(this.__toStringMapper).join(', ') + ' ' + tail;\n    },\n\n\n    // ### ES6 Collection methods (ES6 Array and Map)\n\n    concat: function() {var values = SLICE$0.call(arguments, 0);\n      return reify(this, concatFactory(this, values));\n    },\n\n    includes: function(searchValue) {\n      return this.some(function(value ) {return is(value, searchValue)});\n    },\n\n    entries: function() {\n      return this.__iterator(ITERATE_ENTRIES);\n    },\n\n    every: function(predicate, context) {\n      assertNotInfinite(this.size);\n      var returnValue = true;\n      this.__iterate(function(v, k, c)  {\n        if (!predicate.call(context, v, k, c)) {\n          returnValue = false;\n          return false;\n        }\n      });\n      return returnValue;\n    },\n\n    filter: function(predicate, context) {\n      return reify(this, filterFactory(this, predicate, context, true));\n    },\n\n    find: function(predicate, context, notSetValue) {\n      var entry = this.findEntry(predicate, context);\n      return entry ? entry[1] : notSetValue;\n    },\n\n    forEach: function(sideEffect, context) {\n      assertNotInfinite(this.size);\n      return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n    },\n\n    join: function(separator) {\n      assertNotInfinite(this.size);\n      separator = separator !== undefined ? '' + separator : ',';\n      var joined = '';\n      var isFirst = true;\n      this.__iterate(function(v ) {\n        isFirst ? (isFirst = false) : (joined += separator);\n        joined += v !== null && v !== undefined ? v.toString() : '';\n      });\n      return joined;\n    },\n\n    keys: function() {\n      return this.__iterator(ITERATE_KEYS);\n    },\n\n    map: function(mapper, context) {\n      return reify(this, mapFactory(this, mapper, context));\n    },\n\n    reduce: function(reducer, initialReduction, context) {\n      assertNotInfinite(this.size);\n      var reduction;\n      var useFirst;\n      if (arguments.length < 2) {\n        useFirst = true;\n      } else {\n        reduction = initialReduction;\n      }\n      this.__iterate(function(v, k, c)  {\n        if (useFirst) {\n          useFirst = false;\n          reduction = v;\n        } else {\n          reduction = reducer.call(context, reduction, v, k, c);\n        }\n      });\n      return reduction;\n    },\n\n    reduceRight: function(reducer, initialReduction, context) {\n      var reversed = this.toKeyedSeq().reverse();\n      return reversed.reduce.apply(reversed, arguments);\n    },\n\n    reverse: function() {\n      return reify(this, reverseFactory(this, true));\n    },\n\n    slice: function(begin, end) {\n      return reify(this, sliceFactory(this, begin, end, true));\n    },\n\n    some: function(predicate, context) {\n      return !this.every(not(predicate), context);\n    },\n\n    sort: function(comparator) {\n      return reify(this, sortFactory(this, comparator));\n    },\n\n    values: function() {\n      return this.__iterator(ITERATE_VALUES);\n    },\n\n\n    // ### More sequential methods\n\n    butLast: function() {\n      return this.slice(0, -1);\n    },\n\n    isEmpty: function() {\n      return this.size !== undefined ? this.size === 0 : !this.some(function()  {return true});\n    },\n\n    count: function(predicate, context) {\n      return ensureSize(\n        predicate ? this.toSeq().filter(predicate, context) : this\n      );\n    },\n\n    countBy: function(grouper, context) {\n      return countByFactory(this, grouper, context);\n    },\n\n    equals: function(other) {\n      return deepEqual(this, other);\n    },\n\n    entrySeq: function() {\n      var iterable = this;\n      if (iterable._cache) {\n        // We cache as an entries array, so we can just return the cache!\n        return new ArraySeq(iterable._cache);\n      }\n      var entriesSequence = iterable.toSeq().map(entryMapper).toIndexedSeq();\n      entriesSequence.fromEntrySeq = function()  {return iterable.toSeq()};\n      return entriesSequence;\n    },\n\n    filterNot: function(predicate, context) {\n      return this.filter(not(predicate), context);\n    },\n\n    findEntry: function(predicate, context, notSetValue) {\n      var found = notSetValue;\n      this.__iterate(function(v, k, c)  {\n        if (predicate.call(context, v, k, c)) {\n          found = [k, v];\n          return false;\n        }\n      });\n      return found;\n    },\n\n    findKey: function(predicate, context) {\n      var entry = this.findEntry(predicate, context);\n      return entry && entry[0];\n    },\n\n    findLast: function(predicate, context, notSetValue) {\n      return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n    },\n\n    findLastEntry: function(predicate, context, notSetValue) {\n      return this.toKeyedSeq().reverse().findEntry(predicate, context, notSetValue);\n    },\n\n    findLastKey: function(predicate, context) {\n      return this.toKeyedSeq().reverse().findKey(predicate, context);\n    },\n\n    first: function() {\n      return this.find(returnTrue);\n    },\n\n    flatMap: function(mapper, context) {\n      return reify(this, flatMapFactory(this, mapper, context));\n    },\n\n    flatten: function(depth) {\n      return reify(this, flattenFactory(this, depth, true));\n    },\n\n    fromEntrySeq: function() {\n      return new FromEntriesSequence(this);\n    },\n\n    get: function(searchKey, notSetValue) {\n      return this.find(function(_, key)  {return is(key, searchKey)}, undefined, notSetValue);\n    },\n\n    getIn: function(searchKeyPath, notSetValue) {\n      var nested = this;\n      // Note: in an ES6 environment, we would prefer:\n      // for (var key of searchKeyPath) {\n      var iter = forceIterator(searchKeyPath);\n      var step;\n      while (!(step = iter.next()).done) {\n        var key = step.value;\n        nested = nested && nested.get ? nested.get(key, NOT_SET) : NOT_SET;\n        if (nested === NOT_SET) {\n          return notSetValue;\n        }\n      }\n      return nested;\n    },\n\n    groupBy: function(grouper, context) {\n      return groupByFactory(this, grouper, context);\n    },\n\n    has: function(searchKey) {\n      return this.get(searchKey, NOT_SET) !== NOT_SET;\n    },\n\n    hasIn: function(searchKeyPath) {\n      return this.getIn(searchKeyPath, NOT_SET) !== NOT_SET;\n    },\n\n    isSubset: function(iter) {\n      iter = typeof iter.includes === 'function' ? iter : Iterable(iter);\n      return this.every(function(value ) {return iter.includes(value)});\n    },\n\n    isSuperset: function(iter) {\n      iter = typeof iter.isSubset === 'function' ? iter : Iterable(iter);\n      return iter.isSubset(this);\n    },\n\n    keyOf: function(searchValue) {\n      return this.findKey(function(value ) {return is(value, searchValue)});\n    },\n\n    keySeq: function() {\n      return this.toSeq().map(keyMapper).toIndexedSeq();\n    },\n\n    last: function() {\n      return this.toSeq().reverse().first();\n    },\n\n    lastKeyOf: function(searchValue) {\n      return this.toKeyedSeq().reverse().keyOf(searchValue);\n    },\n\n    max: function(comparator) {\n      return maxFactory(this, comparator);\n    },\n\n    maxBy: function(mapper, comparator) {\n      return maxFactory(this, comparator, mapper);\n    },\n\n    min: function(comparator) {\n      return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator);\n    },\n\n    minBy: function(mapper, comparator) {\n      return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator, mapper);\n    },\n\n    rest: function() {\n      return this.slice(1);\n    },\n\n    skip: function(amount) {\n      return this.slice(Math.max(0, amount));\n    },\n\n    skipLast: function(amount) {\n      return reify(this, this.toSeq().reverse().skip(amount).reverse());\n    },\n\n    skipWhile: function(predicate, context) {\n      return reify(this, skipWhileFactory(this, predicate, context, true));\n    },\n\n    skipUntil: function(predicate, context) {\n      return this.skipWhile(not(predicate), context);\n    },\n\n    sortBy: function(mapper, comparator) {\n      return reify(this, sortFactory(this, comparator, mapper));\n    },\n\n    take: function(amount) {\n      return this.slice(0, Math.max(0, amount));\n    },\n\n    takeLast: function(amount) {\n      return reify(this, this.toSeq().reverse().take(amount).reverse());\n    },\n\n    takeWhile: function(predicate, context) {\n      return reify(this, takeWhileFactory(this, predicate, context));\n    },\n\n    takeUntil: function(predicate, context) {\n      return this.takeWhile(not(predicate), context);\n    },\n\n    valueSeq: function() {\n      return this.toIndexedSeq();\n    },\n\n\n    // ### Hashable Object\n\n    hashCode: function() {\n      return this.__hash || (this.__hash = hashIterable(this));\n    }\n\n\n    // ### Internal\n\n    // abstract __iterate(fn, reverse)\n\n    // abstract __iterator(type, reverse)\n  });\n\n  // var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n  // var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n  // var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n  // var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n  var IterablePrototype = Iterable.prototype;\n  IterablePrototype[IS_ITERABLE_SENTINEL] = true;\n  IterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.values;\n  IterablePrototype.__toJS = IterablePrototype.toArray;\n  IterablePrototype.__toStringMapper = quoteString;\n  IterablePrototype.inspect =\n  IterablePrototype.toSource = function() { return this.toString(); };\n  IterablePrototype.chain = IterablePrototype.flatMap;\n  IterablePrototype.contains = IterablePrototype.includes;\n\n  mixin(KeyedIterable, {\n\n    // ### More sequential methods\n\n    flip: function() {\n      return reify(this, flipFactory(this));\n    },\n\n    mapEntries: function(mapper, context) {var this$0 = this;\n      var iterations = 0;\n      return reify(this,\n        this.toSeq().map(\n          function(v, k)  {return mapper.call(context, [k, v], iterations++, this$0)}\n        ).fromEntrySeq()\n      );\n    },\n\n    mapKeys: function(mapper, context) {var this$0 = this;\n      return reify(this,\n        this.toSeq().flip().map(\n          function(k, v)  {return mapper.call(context, k, v, this$0)}\n        ).flip()\n      );\n    }\n\n  });\n\n  var KeyedIterablePrototype = KeyedIterable.prototype;\n  KeyedIterablePrototype[IS_KEYED_SENTINEL] = true;\n  KeyedIterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.entries;\n  KeyedIterablePrototype.__toJS = IterablePrototype.toObject;\n  KeyedIterablePrototype.__toStringMapper = function(v, k)  {return JSON.stringify(k) + ': ' + quoteString(v)};\n\n\n\n  mixin(IndexedIterable, {\n\n    // ### Conversion to other types\n\n    toKeyedSeq: function() {\n      return new ToKeyedSequence(this, false);\n    },\n\n\n    // ### ES6 Collection methods (ES6 Array and Map)\n\n    filter: function(predicate, context) {\n      return reify(this, filterFactory(this, predicate, context, false));\n    },\n\n    findIndex: function(predicate, context) {\n      var entry = this.findEntry(predicate, context);\n      return entry ? entry[0] : -1;\n    },\n\n    indexOf: function(searchValue) {\n      var key = this.keyOf(searchValue);\n      return key === undefined ? -1 : key;\n    },\n\n    lastIndexOf: function(searchValue) {\n      var key = this.lastKeyOf(searchValue);\n      return key === undefined ? -1 : key;\n    },\n\n    reverse: function() {\n      return reify(this, reverseFactory(this, false));\n    },\n\n    slice: function(begin, end) {\n      return reify(this, sliceFactory(this, begin, end, false));\n    },\n\n    splice: function(index, removeNum /*, ...values*/) {\n      var numArgs = arguments.length;\n      removeNum = Math.max(removeNum | 0, 0);\n      if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n        return this;\n      }\n      // If index is negative, it should resolve relative to the size of the\n      // collection. However size may be expensive to compute if not cached, so\n      // only call count() if the number is in fact negative.\n      index = resolveBegin(index, index < 0 ? this.count() : this.size);\n      var spliced = this.slice(0, index);\n      return reify(\n        this,\n        numArgs === 1 ?\n          spliced :\n          spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n      );\n    },\n\n\n    // ### More collection methods\n\n    findLastIndex: function(predicate, context) {\n      var entry = this.findLastEntry(predicate, context);\n      return entry ? entry[0] : -1;\n    },\n\n    first: function() {\n      return this.get(0);\n    },\n\n    flatten: function(depth) {\n      return reify(this, flattenFactory(this, depth, false));\n    },\n\n    get: function(index, notSetValue) {\n      index = wrapIndex(this, index);\n      return (index < 0 || (this.size === Infinity ||\n          (this.size !== undefined && index > this.size))) ?\n        notSetValue :\n        this.find(function(_, key)  {return key === index}, undefined, notSetValue);\n    },\n\n    has: function(index) {\n      index = wrapIndex(this, index);\n      return index >= 0 && (this.size !== undefined ?\n        this.size === Infinity || index < this.size :\n        this.indexOf(index) !== -1\n      );\n    },\n\n    interpose: function(separator) {\n      return reify(this, interposeFactory(this, separator));\n    },\n\n    interleave: function(/*...iterables*/) {\n      var iterables = [this].concat(arrCopy(arguments));\n      var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, iterables);\n      var interleaved = zipped.flatten(true);\n      if (zipped.size) {\n        interleaved.size = zipped.size * iterables.length;\n      }\n      return reify(this, interleaved);\n    },\n\n    keySeq: function() {\n      return Range(0, this.size);\n    },\n\n    last: function() {\n      return this.get(-1);\n    },\n\n    skipWhile: function(predicate, context) {\n      return reify(this, skipWhileFactory(this, predicate, context, false));\n    },\n\n    zip: function(/*, ...iterables */) {\n      var iterables = [this].concat(arrCopy(arguments));\n      return reify(this, zipWithFactory(this, defaultZipper, iterables));\n    },\n\n    zipWith: function(zipper/*, ...iterables */) {\n      var iterables = arrCopy(arguments);\n      iterables[0] = this;\n      return reify(this, zipWithFactory(this, zipper, iterables));\n    }\n\n  });\n\n  IndexedIterable.prototype[IS_INDEXED_SENTINEL] = true;\n  IndexedIterable.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n\n  mixin(SetIterable, {\n\n    // ### ES6 Collection methods (ES6 Array and Map)\n\n    get: function(value, notSetValue) {\n      return this.has(value) ? value : notSetValue;\n    },\n\n    includes: function(value) {\n      return this.has(value);\n    },\n\n\n    // ### More sequential methods\n\n    keySeq: function() {\n      return this.valueSeq();\n    }\n\n  });\n\n  SetIterable.prototype.has = IterablePrototype.includes;\n  SetIterable.prototype.contains = SetIterable.prototype.includes;\n\n\n  // Mixin subclasses\n\n  mixin(KeyedSeq, KeyedIterable.prototype);\n  mixin(IndexedSeq, IndexedIterable.prototype);\n  mixin(SetSeq, SetIterable.prototype);\n\n  mixin(KeyedCollection, KeyedIterable.prototype);\n  mixin(IndexedCollection, IndexedIterable.prototype);\n  mixin(SetCollection, SetIterable.prototype);\n\n\n  // #pragma Helper functions\n\n  function keyMapper(v, k) {\n    return k;\n  }\n\n  function entryMapper(v, k) {\n    return [k, v];\n  }\n\n  function not(predicate) {\n    return function() {\n      return !predicate.apply(this, arguments);\n    }\n  }\n\n  function neg(predicate) {\n    return function() {\n      return -predicate.apply(this, arguments);\n    }\n  }\n\n  function quoteString(value) {\n    return typeof value === 'string' ? JSON.stringify(value) : String(value);\n  }\n\n  function defaultZipper() {\n    return arrCopy(arguments);\n  }\n\n  function defaultNegComparator(a, b) {\n    return a < b ? 1 : a > b ? -1 : 0;\n  }\n\n  function hashIterable(iterable) {\n    if (iterable.size === Infinity) {\n      return 0;\n    }\n    var ordered = isOrdered(iterable);\n    var keyed = isKeyed(iterable);\n    var h = ordered ? 1 : 0;\n    var size = iterable.__iterate(\n      keyed ?\n        ordered ?\n          function(v, k)  { h = 31 * h + hashMerge(hash(v), hash(k)) | 0; } :\n          function(v, k)  { h = h + hashMerge(hash(v), hash(k)) | 0; } :\n        ordered ?\n          function(v ) { h = 31 * h + hash(v) | 0; } :\n          function(v ) { h = h + hash(v) | 0; }\n    );\n    return murmurHashOfSize(size, h);\n  }\n\n  function murmurHashOfSize(size, h) {\n    h = imul(h, 0xCC9E2D51);\n    h = imul(h << 15 | h >>> -15, 0x1B873593);\n    h = imul(h << 13 | h >>> -13, 5);\n    h = (h + 0xE6546B64 | 0) ^ size;\n    h = imul(h ^ h >>> 16, 0x85EBCA6B);\n    h = imul(h ^ h >>> 13, 0xC2B2AE35);\n    h = smi(h ^ h >>> 16);\n    return h;\n  }\n\n  function hashMerge(a, b) {\n    return a ^ b + 0x9E3779B9 + (a << 6) + (a >> 2) | 0; // int\n  }\n\n  var Immutable = {\n\n    Iterable: Iterable,\n\n    Seq: Seq,\n    Collection: Collection,\n    Map: Map,\n    OrderedMap: OrderedMap,\n    List: List,\n    Stack: Stack,\n    Set: Set,\n    OrderedSet: OrderedSet,\n\n    Record: Record,\n    Range: Range,\n    Repeat: Repeat,\n\n    is: is,\n    fromJS: fromJS\n\n  };\n\n  return Immutable;\n\n}));","(function() {\n  var base64map\n      = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n\n  crypt = {\n    // Bit-wise rotation left\n    rotl: function(n, b) {\n      return (n << b) | (n >>> (32 - b));\n    },\n\n    // Bit-wise rotation right\n    rotr: function(n, b) {\n      return (n << (32 - b)) | (n >>> b);\n    },\n\n    // Swap big-endian to little-endian and vice versa\n    endian: function(n) {\n      // If number given, swap endian\n      if (n.constructor == Number) {\n        return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;\n      }\n\n      // Else, assume array and swap all items\n      for (var i = 0; i < n.length; i++)\n        n[i] = crypt.endian(n[i]);\n      return n;\n    },\n\n    // Generate an array of any length of random bytes\n    randomBytes: function(n) {\n      for (var bytes = []; n > 0; n--)\n        bytes.push(Math.floor(Math.random() * 256));\n      return bytes;\n    },\n\n    // Convert a byte array to big-endian 32-bit words\n    bytesToWords: function(bytes) {\n      for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)\n        words[b >>> 5] |= bytes[i] << (24 - b % 32);\n      return words;\n    },\n\n    // Convert big-endian 32-bit words to a byte array\n    wordsToBytes: function(words) {\n      for (var bytes = [], b = 0; b < words.length * 32; b += 8)\n        bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);\n      return bytes;\n    },\n\n    // Convert a byte array to a hex string\n    bytesToHex: function(bytes) {\n      for (var hex = [], i = 0; i < bytes.length; i++) {\n        hex.push((bytes[i] >>> 4).toString(16));\n        hex.push((bytes[i] & 0xF).toString(16));\n      }\n      return hex.join('');\n    },\n\n    // Convert a hex string to a byte array\n    hexToBytes: function(hex) {\n      for (var bytes = [], c = 0; c < hex.length; c += 2)\n        bytes.push(parseInt(hex.substr(c, 2), 16));\n      return bytes;\n    },\n\n    // Convert a byte array to a base-64 string\n    bytesToBase64: function(bytes) {\n      for (var base64 = [], i = 0; i < bytes.length; i += 3) {\n        var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n        for (var j = 0; j < 4; j++)\n          if (i * 8 + j * 6 <= bytes.length * 8)\n            base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F));\n          else\n            base64.push('=');\n      }\n      return base64.join('');\n    },\n\n    // Convert a base-64 string to a byte array\n    base64ToBytes: function(base64) {\n      // Remove non-base-64 characters\n      base64 = base64.replace(/[^A-Z0-9+\\/]/ig, '');\n\n      for (var bytes = [], i = 0, imod4 = 0; i < base64.length;\n          imod4 = ++i % 4) {\n        if (imod4 == 0) continue;\n        bytes.push(((base64map.indexOf(base64.charAt(i - 1))\n            & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2))\n            | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2)));\n      }\n      return bytes;\n    }\n  };\n\n  module.exports = crypt;\n})();\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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 counterRegex = require('../../lib/regex').counter;\n\nmodule.exports = {\n    idRegex: {\n        x: counterRegex('x', '( domain)?'),\n        y: counterRegex('y', '( domain)?')\n    },\n\n    attrRegex: counterRegex('[xy]axis'),\n\n    // axis match regular expression\n    xAxisMatch: counterRegex('xaxis'),\n    yAxisMatch: counterRegex('yaxis'),\n\n    // pattern matching axis ids and names\n    // note that this is more permissive than counterRegex, as\n    // id2name, name2id, and cleanId accept \"x1\" etc\n    AX_ID_PATTERN: /^[xyz][0-9]*( domain)?$/,\n    AX_NAME_PATTERN: /^[xyz]axis[0-9]*$/,\n\n    // and for 2D subplots\n    SUBPLOT_PATTERN: /^x([0-9]*)y([0-9]*)$/,\n\n    HOUR_PATTERN: 'hour',\n    WEEKDAY_PATTERN: 'day of week',\n\n    // pixels to move mouse before you stop clamping to starting point\n    MINDRAG: 8,\n\n    // smallest dimension allowed for a select box\n    MINSELECT: 12,\n\n    // smallest dimension allowed for a zoombox\n    MINZOOM: 20,\n\n    // width of axis drag regions\n    DRAGGERSIZE: 20,\n\n    // max pixels off straight before a lasso select line counts as bent\n    BENDPX: 1.5,\n\n    // delay before a redraw (relayout) after smooth panning and zooming\n    REDRAWDELAY: 50,\n\n    // throttling limit (ms) for selectPoints calls\n    SELECTDELAY: 100,\n\n    // cache ID suffix for throttle\n    SELECTID: '-select',\n\n    // last resort axis ranges for x and y axes if we have no data\n    DFLTRANGEX: [-1, 6],\n    DFLTRANGEY: [-1, 4],\n\n    // Layers to keep trace types in the right order\n    // N.B. each  'unique' plot method must have its own layer\n    traceLayerClasses: [\n        'imagelayer',\n        'heatmaplayer',\n        'contourcarpetlayer', 'contourlayer',\n        'funnellayer', 'waterfalllayer', 'barlayer',\n        'carpetlayer',\n        'violinlayer',\n        'boxlayer',\n        'ohlclayer',\n        'scattercarpetlayer', 'scatterlayer'\n    ],\n\n    clipOnAxisFalseQuery: [\n        '.scatterlayer',\n        '.barlayer',\n        '.funnellayer',\n        '.waterfalllayer'\n    ],\n\n    layerValue2layerClass: {\n        'above traces': 'above',\n        'below traces': 'below'\n    }\n};\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nconst NodesActions = Reflux.createActions({\n  list: { asyncResult: true },\n});\n\nexport default NodesActions;\n","module.exports = rotate;\n\n/**\n * Rotates a mat4 by the given angle\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @param {vec3} axis the axis to rotate around\n * @returns {mat4} out\n */\nfunction rotate(out, a, rad, axis) {\n    var x = axis[0], y = axis[1], z = axis[2],\n        len = Math.sqrt(x * x + y * y + z * z),\n        s, c, t,\n        a00, a01, a02, a03,\n        a10, a11, a12, a13,\n        a20, a21, a22, a23,\n        b00, b01, b02,\n        b10, b11, b12,\n        b20, b21, b22;\n\n    if (Math.abs(len) < 0.000001) { return null; }\n    \n    len = 1 / len;\n    x *= len;\n    y *= len;\n    z *= len;\n\n    s = Math.sin(rad);\n    c = Math.cos(rad);\n    t = 1 - c;\n\n    a00 = a[0]; a01 = a[1]; a02 = a[2]; a03 = a[3];\n    a10 = a[4]; a11 = a[5]; a12 = a[6]; a13 = a[7];\n    a20 = a[8]; a21 = a[9]; a22 = a[10]; a23 = a[11];\n\n    // Construct the elements of the rotation matrix\n    b00 = x * x * t + c; b01 = y * x * t + z * s; b02 = z * x * t - y * s;\n    b10 = x * y * t - z * s; b11 = y * y * t + c; b12 = z * y * t + x * s;\n    b20 = x * z * t + y * s; b21 = y * z * t - x * s; b22 = z * z * t + c;\n\n    // Perform rotation-specific matrix multiplication\n    out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n    out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n    out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n    out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n    out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n    out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n    out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n    out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n    out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n    out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n    out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n    out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n\n    if (a !== out) { // If the source and destination differ, copy the unchanged last row\n        out[12] = a[12];\n        out[13] = a[13];\n        out[14] = a[14];\n        out[15] = a[15];\n    }\n    return out;\n};","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\n\nimport { QueryId } from 'views/logic/queries/Query';\nimport { SearchTypeId } from 'views/logic/SearchType';\n\nexport type SearchErrorResponse = {\n  query_id: QueryId,\n  search_type_id: SearchTypeId,\n  type: string,\n  backtrace: string,\n  description: string,\n};\n\nexport type SearchErrorState = {\n  backtrace: string,\n  description: string,\n  query_id: QueryId,\n  search_type_id: SearchTypeId,\n  type: string,\n};\n\nexport default class SearchError {\n  protected _state: SearchErrorState;\n\n  constructor(error: SearchErrorResponse) {\n    const { backtrace, description, query_id, search_type_id, type } = error;\n\n    this._state = {\n      backtrace,\n      description,\n      query_id,\n      search_type_id,\n      type,\n    };\n  }\n\n  get backtrace() { return this._state.backtrace; }\n\n  get description() { return this._state.description; }\n\n  get queryId() { return this._state.query_id; }\n\n  get searchTypeId() { return this._state.search_type_id; }\n\n  get type() { return this._state.type; }\n}\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport { mapValues } from 'lodash';\nimport { MessageResult, SearchTypeResults } from 'views/types';\n\nimport searchTypeDefinition from 'views/logic/SearchType';\nimport { TimeRange } from 'views/logic/queries/Query';\n\nimport SearchError, { SearchErrorResponse } from './SearchError';\n\ntype Results = {\n  searchTypes: SearchTypeResults,\n};\n\nconst _findMessages = (results: Results): (MessageResult | undefined) => {\n  return Object.keys(results.searchTypes)\n    .map((id) => results.searchTypes[id])\n    .find((searchType) => searchType.type.toLocaleLowerCase() === 'messages') as MessageResult;\n};\n\nconst _searchTypePlugin = (type: string) => {\n  const typeDefinition = searchTypeDefinition(type);\n\n  return typeDefinition && typeDefinition.handler ? searchTypeDefinition(type).handler\n    : {\n      convert: (result) => {\n        // eslint-disable-next-line no-console\n        console.log(`No search type handler for type '${type}' result:`, result);\n\n        return result;\n      },\n    };\n};\n\ntype State = {\n  query: any,\n  errors: Array,\n  duration: number,\n  timestamp: string,\n  effectiveTimerange: TimeRange,\n  searchTypes: SearchTypeResults,\n};\n\ntype QueryResultResponse = {\n  execution_stats: {\n    duration: number,\n    timestamp: string,\n    effective_timerange: TimeRange,\n  },\n  query: any,\n  errors: Array,\n  search_types: {\n    [id: string]: { type: string },\n  },\n};\n\nexport default class QueryResult {\n  _state: State;\n\n  constructor(queryResult: QueryResultResponse) {\n    const { duration, timestamp, effective_timerange } = queryResult.execution_stats;\n\n    this._state = {\n      query: queryResult.query,\n      errors: queryResult.errors.map((error) => new SearchError(error)),\n      duration,\n      timestamp,\n      effectiveTimerange: effective_timerange,\n      searchTypes: mapValues(queryResult.search_types, (searchType) => {\n        // each search type has a custom data structure attached to it, let the plugin convert the value\n        return _searchTypePlugin(searchType.type).convert(searchType);\n      }),\n    };\n  }\n\n  get documentCount() {\n    const messages = _findMessages(this);\n\n    return messages ? messages.total : 0;\n  }\n\n  get duration() { return this._state.duration; }\n\n  get effectiveTimerange() { return this._state.effectiveTimerange; }\n\n  get errors() { return this._state.errors; }\n\n  get messages() {\n    return _findMessages(this);\n  }\n\n  get query() { return this._state.query; }\n\n  get searchTypes() { return this._state.searchTypes; }\n\n  get timestamp() { return this._state.timestamp; }\n}\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport { QueryId } from 'views/logic/queries/Query';\nimport { SearchTypeId } from 'views/logic/SearchType';\nimport SearchResult from 'views/logic/SearchResult';\n\nimport SearchError, { SearchErrorResponse, SearchErrorState } from './SearchError';\n\ntype ResultWindowLimitErrorState = SearchErrorState & {};\n\nexport type ResultWindowLimitErrorResponse = SearchErrorResponse & {\n  type: 'result_window_limit',\n  result_window_limit: number,\n};\n\nexport const isResultWindowLimitErrorResponse = (error: SearchErrorResponse): error is ResultWindowLimitErrorResponse => (error?.type === 'result_window_limit');\n\nexport default class ResultWindowLimitError extends SearchError {\n  protected readonly _state: ResultWindowLimitErrorState;\n\n  private readonly _resultWindowLimit: number;\n\n  constructor(error: ResultWindowLimitErrorResponse, result: SearchResult) {\n    super(error);\n    const { result_window_limit: resultWindowLimit } = error;\n\n    this._state = {\n      ...this._state,\n      description: ResultWindowLimitError._extendDescription(result, this.description, this.queryId, this.searchTypeId, resultWindowLimit),\n    };\n\n    this._resultWindowLimit = resultWindowLimit;\n  }\n\n  static _extendDescription(result: SearchResult, description: string, queryId: QueryId, searchTypeId: SearchTypeId, resultWindowLimit: number) {\n    const pageSize = ResultWindowLimitError._getPageSizeFromResult(result, queryId, searchTypeId);\n    const validPages = Math.floor(resultWindowLimit / pageSize);\n    const validPagesMessage = `Elasticsearch limits the search result to ${resultWindowLimit} messages. With a page size of ${pageSize} messages, you can use the first ${validPages} pages.`;\n\n    return `${validPagesMessage} ${description}`;\n  }\n\n  static _getPageSizeFromResult(result: SearchResult, queryId: QueryId, searchTypeId: SearchTypeId) {\n    const searchTypes = result.results[queryId].query.search_types;\n    const searchType = searchTypes.find(({ id }) => id === searchTypeId);\n\n    return searchType.limit;\n  }\n\n  get resultWindowLimit() { return this._resultWindowLimit; }\n}\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport { List, fromJS, Map } from 'immutable';\nimport { mapValues, compact } from 'lodash';\n\nimport { QueryId } from 'views/logic/queries/Query';\nimport { SearchTypeId } from 'views/logic/SearchType';\nimport { SearchJobResult } from 'views/stores/SearchStore';\n\nimport QueryResult from './QueryResult';\nimport SearchError, { SearchErrorResponse } from './SearchError';\nimport ResultWindowLimitError, {\n  isResultWindowLimitErrorResponse,\n  ResultWindowLimitErrorResponse,\n} from './ResultWindowLimitError';\n\nclass SearchResult {\n  private readonly _result: Map;\n\n  private readonly _results: Map;\n\n  private readonly _errors: List;\n\n  constructor(result: SearchJobResult) {\n    this._result = fromJS(result);\n\n    this._results = fromJS(mapValues(result.results, (queryResult) => new QueryResult(queryResult)));\n\n    this._errors = fromJS(result?.errors ?? [].map((error: SearchErrorResponse | ResultWindowLimitErrorResponse) => {\n      if (isResultWindowLimitErrorResponse(error)) {\n        return new ResultWindowLimitError(error, this);\n      }\n\n      return new SearchError(error);\n    }));\n  }\n\n  get result(): SearchJobResult {\n    return this._result.toJS();\n  }\n\n  get results(): Record {\n    return this._results.toJS();\n  }\n\n  get errors(): Array {\n    return this._errors.toJS();\n  }\n\n  forId(queryId: QueryId) {\n    return this._results.get(queryId);\n  }\n\n  updateSearchTypes(searchTypeResults) {\n    const updatedResult = this.result;\n\n    searchTypeResults.forEach((searchTypeResult: { id: string; }) => {\n      const searchQuery = this._getQueryBySearchTypeId(searchTypeResult.id);\n\n      updatedResult.results[searchQuery.query.id].search_types[searchTypeResult.id] = searchTypeResult;\n    });\n\n    return new SearchResult(updatedResult);\n  }\n\n  getSearchTypesFromResponse(searchTypeIds: Array) {\n    const searchTypes = searchTypeIds.map((searchTypeId) => {\n      const relatedQuery = this._getQueryBySearchTypeId(searchTypeId);\n\n      return SearchResult._getSearchTypeFromQuery(relatedQuery, searchTypeId);\n    });\n\n    return SearchResult._filterFailedSearchTypes(searchTypes);\n  }\n\n  _getQueryBySearchTypeId(searchTypeId: SearchTypeId) {\n    return Object.values(this.result.results).find((query) => SearchResult._getSearchTypeFromQuery(query, searchTypeId));\n  }\n\n  private static _getSearchTypeFromQuery(query, searchTypeId: SearchTypeId) {\n    return (query && query.search_types) ? query.search_types[searchTypeId] : undefined;\n  }\n\n  private static _filterFailedSearchTypes(searchTypes) {\n    return compact(searchTypes);\n  }\n}\n\nexport default SearchResult;\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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 isNumeric = require('fast-isnumeric');\nvar loggers = require('./loggers');\nvar identity = require('./identity');\nvar BADNUM = require('../constants/numerical').BADNUM;\n\n// don't trust floating point equality - fraction of bin size to call\n// \"on the line\" and ensure that they go the right way specified by\n// linelow\nvar roundingError = 1e-9;\n\n\n/**\n * findBin - find the bin for val - note that it can return outside the\n * bin range any pos. or neg. integer for linear bins, or -1 or\n * bins.length-1 for explicit.\n * bins is either an object {start,size,end} or an array length #bins+1\n * bins can be either increasing or decreasing but must be monotonic\n * for linear bins, we can just calculate. For listed bins, run a binary\n * search linelow (truthy) says the bin boundary should be attributed to\n * the lower bin rather than the default upper bin\n */\nexports.findBin = function(val, bins, linelow) {\n    if(isNumeric(bins.start)) {\n        return linelow ?\n            Math.ceil((val - bins.start) / bins.size - roundingError) - 1 :\n            Math.floor((val - bins.start) / bins.size + roundingError);\n    } else {\n        var n1 = 0;\n        var n2 = bins.length;\n        var c = 0;\n        var binSize = (n2 > 1) ? (bins[n2 - 1] - bins[0]) / (n2 - 1) : 1;\n        var n, test;\n        if(binSize >= 0) {\n            test = linelow ? lessThan : lessOrEqual;\n        } else {\n            test = linelow ? greaterOrEqual : greaterThan;\n        }\n        val += binSize * roundingError * (linelow ? -1 : 1) * (binSize >= 0 ? 1 : -1);\n        // c is just to avoid infinite loops if there's an error\n        while(n1 < n2 && c++ < 100) {\n            n = Math.floor((n1 + n2) / 2);\n            if(test(bins[n], val)) n1 = n + 1;\n            else n2 = n;\n        }\n        if(c > 90) loggers.log('Long binary search...');\n        return n1 - 1;\n    }\n};\n\nfunction lessThan(a, b) { return a < b; }\nfunction lessOrEqual(a, b) { return a <= b; }\nfunction greaterThan(a, b) { return a > b; }\nfunction greaterOrEqual(a, b) { return a >= b; }\n\nexports.sorterAsc = function(a, b) { return a - b; };\nexports.sorterDes = function(a, b) { return b - a; };\n\n/**\n * find distinct values in an array, lumping together ones that appear to\n * just be off by a rounding error\n * return the distinct values and the minimum difference between any two\n */\nexports.distinctVals = function(valsIn, opts) {\n    var unitMinDiff = (opts || {}).unitMinDiff;\n\n    var vals = valsIn.slice();  // otherwise we sort the original array...\n    vals.sort(exports.sorterAsc); // undefined listed in the end - also works on IE11\n\n    var last;\n    for(last = vals.length - 1; last > -1; last--) {\n        if(vals[last] !== BADNUM) break;\n    }\n\n    var minDiff = 1;\n    if(!unitMinDiff) minDiff = (vals[last] - vals[0]) || 1;\n\n    var errDiff = minDiff / (last || 1) / 10000;\n    var newVals = [];\n    var preV;\n    for(var i = 0; i <= last; i++) {\n        var v = vals[i];\n\n        // make sure values aren't just off by a rounding error\n        var diff = v - preV;\n\n        if(preV === undefined) {\n            newVals.push(v);\n            preV = v;\n        } else if(diff > errDiff) {\n            minDiff = Math.min(minDiff, diff);\n\n            newVals.push(v);\n            preV = v;\n        }\n    }\n\n    return {vals: newVals, minDiff: minDiff};\n};\n\n/**\n * return the smallest element from (sorted) array arrayIn that's bigger than val,\n * or (reverse) the largest element smaller than val\n * used to find the best tick given the minimum (non-rounded) tick\n * particularly useful for date/time where things are not powers of 10\n * binary search is probably overkill here...\n */\nexports.roundUp = function(val, arrayIn, reverse) {\n    var low = 0;\n    var high = arrayIn.length - 1;\n    var mid;\n    var c = 0;\n    var dlow = reverse ? 0 : 1;\n    var dhigh = reverse ? 1 : 0;\n    var rounded = reverse ? Math.ceil : Math.floor;\n    // c is just to avoid infinite loops if there's an error\n    while(low < high && c++ < 100) {\n        mid = rounded((low + high) / 2);\n        if(arrayIn[mid] <= val) low = mid + dlow;\n        else high = mid - dhigh;\n    }\n    return arrayIn[low];\n};\n\n/**\n * Tweak to Array.sort(sortFn) that improves performance for pre-sorted arrays\n *\n * Note that newer browsers (such as Chrome v70+) are starting to pick up\n * on pre-sorted arrays which may render the following optimization unnecessary\n * in the future.\n *\n * Motivation: sometimes we need to sort arrays but the input is likely to\n * already be sorted. Browsers don't seem to pick up on pre-sorted arrays,\n * and in fact Chrome is actually *slower* sorting pre-sorted arrays than purely\n * random arrays. FF is at least faster if the array is pre-sorted, but still\n * not as fast as it could be.\n * Here's how this plays out sorting a length-1e6 array:\n *\n * Calls to Sort FN  |  Chrome bare  |  FF bare  |  Chrome tweak  |  FF tweak\n *                   |  v68.0 Mac    |  v61.0 Mac|                |\n * ------------------+---------------+-----------+----------------+------------\n * ordered           |  30.4e6       |  10.1e6   |  1e6           |  1e6\n * reversed          |  29.4e6       |  9.9e6    |  1e6 + reverse |  1e6 + reverse\n * random            |  ~21e6        |  ~18.7e6  |  ~21e6         |  ~18.7e6\n *\n * So this is a substantial win for pre-sorted (ordered or exactly reversed)\n * arrays. Including this wrapper on an unsorted array adds a penalty that will\n * in general be only a few calls to the sort function. The only case this\n * penalty will be significant is if the array is mostly sorted but there are\n * a few unsorted items near the end, but the penalty is still at most N calls\n * out of (for N=1e6) ~20N total calls\n *\n * @param {Array} array: the array, to be sorted in place\n * @param {function} sortFn: As in Array.sort, function(a, b) that puts\n *     item a before item b if the return is negative, a after b if positive,\n *     and no change if zero.\n * @return {Array}: the original array, sorted in place.\n */\nexports.sort = function(array, sortFn) {\n    var notOrdered = 0;\n    var notReversed = 0;\n    for(var i = 1; i < array.length; i++) {\n        var pairOrder = sortFn(array[i], array[i - 1]);\n        if(pairOrder < 0) notOrdered = 1;\n        else if(pairOrder > 0) notReversed = 1;\n        if(notOrdered && notReversed) return array.sort(sortFn);\n    }\n    return notReversed ? array : array.reverse();\n};\n\n/**\n * find index in array 'arr' that minimizes 'fn'\n *\n * @param {array} arr : array where to search\n * @param {fn (optional)} fn : function to minimize,\n *   if not given, fn is the identity function\n * @return {integer}\n */\nexports.findIndexOfMin = function(arr, fn) {\n    fn = fn || identity;\n\n    var min = Infinity;\n    var ind;\n\n    for(var i = 0; i < arr.length; i++) {\n        var v = fn(arr[i]);\n        if(v < min) {\n            min = v;\n            ind = i;\n        }\n    }\n    return ind;\n};\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport fetch from 'logic/rest/FetchProvider';\nimport ActionsProvider from 'injection/ActionsProvider';\nimport UserNotification from 'util/UserNotification';\nimport * as URLUtils from 'util/URLUtils';\n\nconst GettingStartedActions = ActionsProvider.getActions('GettingStarted');\n\nconst GettingStartedStore = Reflux.createStore({\n  listenables: [GettingStartedActions],\n  sourceUrl: '/system/gettingstarted',\n  status: undefined,\n\n  init() {\n    this.getStatus();\n  },\n\n  getInitialState() {\n    return { status: this.status };\n  },\n\n  get() {\n    return this.status;\n  },\n\n  getStatus() {\n    const promise = fetch('GET', URLUtils.qualifyUrl(this.sourceUrl));\n\n    promise\n      .then(\n        (response) => {\n          this.status = response;\n          this.trigger({ status: this.status });\n\n          return response;\n        },\n        (error) => console.error(error),\n      );\n\n    GettingStartedActions.getStatus.promise(promise);\n  },\n\n  dismiss() {\n    const promise = fetch('POST', URLUtils.qualifyUrl(`${this.sourceUrl}/dismiss`), '{}');\n\n    promise\n      .then(\n        (response) => {\n          this.getStatus();\n\n          return response;\n        },\n        (error) => {\n          UserNotification.error(`Dismissing Getting Started Guide failed with status: ${error}`,\n            'Could not dismiss guide');\n        },\n      );\n\n    GettingStartedActions.dismiss.promise(promise);\n  },\n});\n\nexport default GettingStartedStore;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport * as URLUtils from 'util/URLUtils';\nimport fetch from 'logic/rest/FetchProvider';\nimport ActionsProvider from 'injection/ActionsProvider';\n\nconst ClusterTrafficActions = ActionsProvider.getActions('ClusterTraffic');\n\nconst ClusterTrafficStore = Reflux.createStore({\n  listenables: ClusterTrafficActions,\n\n  traffic() {\n    const promise = fetch('GET', URLUtils.qualifyUrl('/system/cluster/traffic'));\n\n    promise.then((response) => {\n      this.trigger(response);\n    });\n\n    return promise;\n  },\n\n});\n\nexport default ClusterTrafficStore;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Immutable from 'immutable';\n\nexport default class Constraint {\n  constructor(type, version, plugin = 'server') {\n    this._value = { type, plugin, version };\n  }\n\n  get type() {\n    return this._value.type;\n  }\n\n  get plugin() {\n    return this._value.plugin;\n  }\n\n  get version() {\n    return this._value.version;\n  }\n\n  toBuilder() {\n    const { type, plugin, version } = this._value;\n\n    // eslint-disable-next-line no-use-before-define\n    return new Builder(Immutable.Map({ type, plugin, version }));\n  }\n\n  static create(type, version, plugin = 'server') {\n    return new Constraint(type, version, plugin);\n  }\n\n  toJSON() {\n    const { type, plugin, version } = this._value;\n\n    if (plugin === 'server') {\n      return {\n        type,\n        version,\n      };\n    }\n\n    return {\n      type,\n      plugin,\n      version,\n    };\n  }\n\n  equals(other) {\n    if (!other.version || !other.plugin || !other.type) {\n      return false;\n    }\n\n    return other.version === this.version\n      && other.type === this.type\n      && other.plugin === this.plugin;\n  }\n\n  static fromJSON(value) {\n    const { type, version, plugin } = value;\n\n    return Constraint.create(type, version, plugin);\n  }\n\n  static builder() {\n    // eslint-disable-next-line no-use-before-define\n    return new Builder()\n      .plugin('server');\n  }\n}\n\nclass Builder {\n  constructor(value = Immutable.Map()) {\n    this.value = value;\n  }\n\n  type(value) {\n    return new Builder(this.value.set('type', value));\n  }\n\n  plugin(value) {\n    return new Builder(this.value.set('plugin', value));\n  }\n\n  version(value) {\n    return new Builder(this.value.set('version', value));\n  }\n\n  build() {\n    const { type, plugin, version } = this.value.toObject();\n\n    return new Constraint(type, version, plugin);\n  }\n}\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport { Map } from 'immutable';\nimport { findIndex } from 'lodash';\n\nimport ValueRefHelper from 'util/ValueRefHelper';\n\nimport Constraint from './Constraint';\n\nexport default class Entity {\n  constructor(v, type, id, data, fromServer = false, constraintValues = [], parameters = []) {\n    const constraints = constraintValues.map((c) => {\n      if (c instanceof Constraint) {\n        return c;\n      }\n\n      return Constraint.fromJSON(c);\n    });\n\n    this._value = {\n      v,\n      type,\n      id,\n      data,\n      constraints,\n      fromServer,\n      parameters,\n    };\n  }\n\n  static fromJSON(value, fromServer = true, parameters = []) {\n    const { v, type, id, data, constraints } = value;\n\n    return new Entity(v, type, id, data, fromServer, constraints, parameters);\n  }\n\n  get v() {\n    return this._value.v;\n  }\n\n  get type() {\n    return this._value.type;\n  }\n\n  get id() {\n    return this._value.id;\n  }\n\n  get data() {\n    return this._value.data;\n  }\n\n  get fromServer() {\n    return this._value.fromServer;\n  }\n\n  get constraints() {\n    return this._value.constraints;\n  }\n\n  get title() {\n    let value = this.getValueFromData('title');\n\n    if (!value) {\n      value = this.getValueFromData('name');\n    }\n\n    return value || '';\n  }\n\n  get description() {\n    return this.getValueFromData('description') || '';\n  }\n\n  /* eslint-disable-next-line class-methods-use-this */\n  get isEntity() {\n    return true;\n  }\n\n  /* implement custom instanceof */\n  static [Symbol.hasInstance](obj) {\n    if (obj.isEntity) {\n      return true;\n    }\n\n    return false;\n  }\n\n  getValueFromData(key) {\n    const { data } = this._value;\n\n    if (!data || !data[key]) {\n      return undefined;\n    }\n\n    if (ValueRefHelper.dataIsValueRef(data[key])) {\n      const value = (data[key] || {})[ValueRefHelper.VALUE_REF_VALUE_FIELD];\n\n      if (ValueRefHelper.dataValueIsParameter(data[key])) {\n        const index = findIndex(this._value.parameters, { name: value });\n\n        if (index >= 0 && this._value.parameters[index].default_value) {\n          return this._value.parameters[index].default_value;\n        }\n      }\n\n      return value;\n    }\n\n    return data[key];\n  }\n\n  toBuilder() {\n    const {\n      v,\n      type,\n      id,\n      data,\n      constraints,\n      fromServer,\n      parameters,\n    } = this._value;\n\n    /* eslint-disable-next-line no-use-before-define */\n    return new Builder(Map({\n      v,\n      type,\n      id,\n      data,\n      constraints,\n      fromServer,\n      parameters,\n    }));\n  }\n\n  static builder() {\n    /* eslint-disable-next-line no-use-before-define */\n    return new Builder();\n  }\n\n  toJSON() {\n    const {\n      v,\n      type,\n      id,\n      data,\n      constraints,\n    } = this._value;\n\n    return {\n      v,\n      type,\n      id,\n      data,\n      constraints,\n    };\n  }\n}\n\nclass Builder {\n  constructor(value = Map()) {\n    this.value = value;\n  }\n\n  v(value) {\n    this.value = this.value.set('v', value);\n\n    return this;\n  }\n\n  type(value) {\n    this.value = this.value.set('type', value);\n\n    return this;\n  }\n\n  id(value) {\n    this.value = this.value.set('id', value);\n\n    return this;\n  }\n\n  data(value) {\n    this.value = this.value.set('data', value);\n\n    return this;\n  }\n\n  fromServer(value) {\n    this.value = this.value.set('fromServer', value);\n\n    return this;\n  }\n\n  constraints(value) {\n    this.value = this.value.set('constraints', value);\n\n    return this;\n  }\n\n  parameters(value) {\n    this.value = this.value.set('parameters', value);\n\n    return this;\n  }\n\n  build() {\n    const {\n      v,\n      type,\n      id,\n      data,\n      constraints,\n      fromServer,\n      parameters,\n    } = this.value.toObject();\n\n    return new Entity(v, type, id, data, fromServer, constraints, parameters);\n  }\n}\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport * as URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport fetch from 'logic/rest/FetchProvider';\n\nconst SystemProcessingStore = Reflux.createStore({\n  sourceUrl: (nodeId) => `/cluster/${nodeId}/processing`,\n\n  pause(nodeId) {\n    return fetch('POST', URLUtils.qualifyUrl(`${this.sourceUrl(nodeId)}/pause`))\n      .then(\n        () => {\n          this.trigger({});\n          UserNotification.success(`Message processing paused successfully in '${nodeId}'`);\n        },\n        (error) => {\n          UserNotification.error(`Pausing message processing in '${nodeId}' failed: ${error}`,\n            `Could not pause message processing in node '${nodeId}'`);\n        },\n      );\n  },\n\n  resume(nodeId) {\n    return fetch('POST', URLUtils.qualifyUrl(`${this.sourceUrl(nodeId)}/resume`))\n      .then(\n        () => {\n          this.trigger({});\n          UserNotification.success(`Message processing resumed successfully in '${nodeId}'`);\n        },\n        (error) => {\n          UserNotification.error(`Resuming message processing in '${nodeId}' failed: ${error}`,\n            `Could not resume message processing in node '${nodeId}'`);\n        },\n      );\n  },\n});\n\nexport default SystemProcessingStore;\n","var identity = require('./identity');\n\nmodule.exports = lookAt;\n\n/**\n * Generates a look-at matrix with the given eye position, focal point, and up axis\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {vec3} eye Position of the viewer\n * @param {vec3} center Point the viewer is looking at\n * @param {vec3} up vec3 pointing up\n * @returns {mat4} out\n */\nfunction lookAt(out, eye, center, up) {\n    var x0, x1, x2, y0, y1, y2, z0, z1, z2, len,\n        eyex = eye[0],\n        eyey = eye[1],\n        eyez = eye[2],\n        upx = up[0],\n        upy = up[1],\n        upz = up[2],\n        centerx = center[0],\n        centery = center[1],\n        centerz = center[2];\n\n    if (Math.abs(eyex - centerx) < 0.000001 &&\n        Math.abs(eyey - centery) < 0.000001 &&\n        Math.abs(eyez - centerz) < 0.000001) {\n        return identity(out);\n    }\n\n    z0 = eyex - centerx;\n    z1 = eyey - centery;\n    z2 = eyez - centerz;\n\n    len = 1 / Math.sqrt(z0 * z0 + z1 * z1 + z2 * z2);\n    z0 *= len;\n    z1 *= len;\n    z2 *= len;\n\n    x0 = upy * z2 - upz * z1;\n    x1 = upz * z0 - upx * z2;\n    x2 = upx * z1 - upy * z0;\n    len = Math.sqrt(x0 * x0 + x1 * x1 + x2 * x2);\n    if (!len) {\n        x0 = 0;\n        x1 = 0;\n        x2 = 0;\n    } else {\n        len = 1 / len;\n        x0 *= len;\n        x1 *= len;\n        x2 *= len;\n    }\n\n    y0 = z1 * x2 - z2 * x1;\n    y1 = z2 * x0 - z0 * x2;\n    y2 = z0 * x1 - z1 * x0;\n\n    len = Math.sqrt(y0 * y0 + y1 * y1 + y2 * y2);\n    if (!len) {\n        y0 = 0;\n        y1 = 0;\n        y2 = 0;\n    } else {\n        len = 1 / len;\n        y0 *= len;\n        y1 *= len;\n        y2 *= len;\n    }\n\n    out[0] = x0;\n    out[1] = y0;\n    out[2] = z0;\n    out[3] = 0;\n    out[4] = x1;\n    out[5] = y1;\n    out[6] = z1;\n    out[7] = 0;\n    out[8] = x2;\n    out[9] = y2;\n    out[10] = z2;\n    out[11] = 0;\n    out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n    out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n    out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n    out[15] = 1;\n\n    return out;\n};","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport fetch, { fetchPlainText } from 'logic/rest/FetchProvider';\nimport PaginationURL from 'util/PaginationURL';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport { qualifyUrl } from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\n\ntype GrokPattern = {\n  id: string,\n  name: string,\n  pattern: string,\n  content_pack: string,\n};\n\ntype PaginatedResponse = {\n  count: number,\n  total: number,\n  page: number,\n  per_page: number,\n  patterns: Array,\n};\n\ntype GrokPatternTest = {\n  name: string,\n  pattern: string,\n  sampleData: string,\n};\n\nconst GrokPatternsStore = Reflux.createStore({\n  URL: qualifyUrl('/system/grok'),\n\n  loadPatterns(callback: (patterns: Array) => void) {\n    const failCallback = (error) => {\n      UserNotification.error(`Loading Grok patterns failed with status: ${error.message}`,\n        'Could not load Grok patterns');\n    };\n\n    // get the current list of patterns and sort it by name\n    return fetch('GET', this.URL)\n      .then(\n        (resp: any) => {\n          const { patterns } = resp;\n\n          patterns.sort((pattern1: GrokPattern, pattern2: GrokPattern) => {\n            return pattern1.name.toLowerCase()\n              .localeCompare(pattern2.name.toLowerCase());\n          });\n\n          callback(patterns);\n\n          return resp;\n        },\n        failCallback,\n      );\n  },\n\n  searchPaginated(page, perPage, query) {\n    const url = PaginationURL(ApiRoutes.GrokPatternsController.paginated().url, page, perPage, query);\n\n    return fetch('GET', qualifyUrl(url))\n      .then((response: PaginatedResponse) => {\n        const pagination = {\n          count: response.count,\n          total: response.total,\n          page: response.page,\n          perPage: response.per_page,\n          query: query,\n        };\n\n        return {\n          patterns: response.patterns,\n          pagination: pagination,\n        };\n      })\n      .catch((errorThrown) => {\n        UserNotification.error(`Loading patterns failed with status: ${errorThrown}`,\n          'Could not load streams');\n      });\n  },\n\n  testPattern(pattern: GrokPatternTest, callback: (request: any) => void, errCallback: (errorMessage: string) => void) {\n    const failCallback = (error) => {\n      let errorMessage = error.message;\n      const errorBody = error.additional.body;\n\n      if (errorBody && errorBody.message) {\n        errorMessage = error.additional.body.message;\n      }\n\n      errCallback(errorMessage);\n    };\n\n    const requestPatternTest = {\n      grok_pattern: {\n        name: pattern.name,\n        pattern: pattern.pattern,\n      },\n      sampleData: pattern.sampleData,\n    };\n\n    fetch('POST', qualifyUrl(ApiRoutes.GrokPatternsController.test().url), requestPatternTest)\n      .then(\n        (response) => {\n          callback(response);\n\n          return response;\n        },\n        failCallback,\n      );\n  },\n\n  savePattern(pattern: GrokPattern, callback: () => void) {\n    const failCallback = (error) => {\n      let errorMessage = error.message;\n      const errorBody = error.additional.body;\n\n      if (errorBody && errorBody.message) {\n        errorMessage = error.additional.body.message;\n      }\n\n      UserNotification.error(`Testing Grok pattern \"${pattern.name}\" failed with status: ${errorMessage}`,\n        'Could not test Grok pattern');\n    };\n\n    const requestPattern = {\n      id: pattern.id,\n      pattern: pattern.pattern,\n      name: pattern.name,\n      content_pack: pattern.content_pack,\n    };\n\n    let url = this.URL;\n    let method;\n\n    if (pattern.id === '') {\n      method = 'POST';\n    } else {\n      url += `/${pattern.id}`;\n      method = 'PUT';\n    }\n\n    fetch(method, url, requestPattern)\n      .then(\n        (response) => {\n          callback();\n          const action = pattern.id === '' ? 'created' : 'updated';\n          const message = `Grok pattern \"${pattern.name}\" successfully ${action}`;\n\n          UserNotification.success(message);\n\n          return response;\n        },\n        failCallback,\n      );\n  },\n\n  deletePattern(pattern: GrokPattern, callback: () => void) {\n    const failCallback = (error) => {\n      UserNotification.error(`Deleting Grok pattern \"${pattern.name}\" failed with status: ${error.message}`,\n        'Could not delete Grok pattern');\n    };\n\n    fetch('DELETE', `${this.URL}/${pattern.id}`)\n      .then(\n        (response) => {\n          callback();\n          UserNotification.success(`Grok pattern \"${pattern.name}\" successfully deleted`);\n\n          return response;\n        },\n        failCallback,\n      );\n  },\n\n  bulkImport(patterns: string, replaceAll: boolean) {\n    const failCallback = (error) => {\n      let errorMessage = error.message;\n      const errorBody = error.additional.body;\n\n      if (errorBody && errorBody.validation_errors && errorBody.validation_errors._) {\n        errorMessage = '';\n        const errors = errorBody.validation_errors._;\n\n        // eslint-disable-next-line no-plusplus\n        for (let i = 0, len = errors.length; i < len; i++) {\n          errorMessage = errorMessage.concat(errors[i].error);\n        }\n      }\n\n      UserNotification.error(`Importing Grok pattern file failed with status: ${errorMessage}`,\n        'Could not load Grok patterns');\n    };\n\n    const promise = fetchPlainText('POST', `${this.URL}?replace=${String(replaceAll)}`, patterns);\n\n    promise.catch(failCallback);\n\n    return promise;\n  },\n});\n\nexport default GrokPatternsStore;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport * as URLUtils from 'util/URLUtils';\nimport fetch from 'logic/rest/FetchProvider';\nimport ActionsProvider from 'injection/ActionsProvider';\n\nconst SingleNodeActions = ActionsProvider.getActions('SingleNode');\n\nconst SingleNodeStore = Reflux.createStore({\n  listenables: [SingleNodeActions],\n  sourceUrl: '/system/cluster/node',\n  node: undefined,\n\n  init() {\n    this._propagateState();\n  },\n\n  getInitialState() {\n    return this._getNodeInfo();\n  },\n\n  _getNodeInfo() {\n    return { node: this.node };\n  },\n\n  _propagateState() {\n    this.trigger(this._getNodeInfo());\n  },\n\n  get(nodeId) {\n    const promise = fetch('GET', URLUtils.qualifyUrl(nodeId ? URLUtils.concatURLPath(this.sourceUrl, nodeId) : this.sourceUrl))\n      .then((response) => {\n        this.node = response;\n        this._propagateState();\n      });\n\n    SingleNodeActions.get.promise(promise);\n  },\n});\n\nexport default SingleNodeStore;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\nimport URI from 'urijs';\nimport lodash from 'lodash';\n\nimport * as URLUtils from 'util/URLUtils';\nimport fetch from 'logic/rest/FetchProvider';\nimport CombinedProvider from 'injection/CombinedProvider';\n\nconst { EventsActions } = CombinedProvider.get('Events');\n\nconst EventsStore = Reflux.createStore({\n  listenables: [EventsActions],\n  sourceUrl: '/events/search',\n  events: undefined,\n  totalEvents: undefined,\n  context: undefined,\n  parameters: {\n    page: undefined,\n    pageSize: undefined,\n    query: undefined,\n    filter: undefined,\n    timerange: undefined,\n  },\n\n  getInitialState() {\n    return this.getState();\n  },\n\n  propagateChanges() {\n    this.trigger(this.getState());\n  },\n\n  getState() {\n    return {\n      events: this.events,\n      parameters: this.parameters,\n      totalEvents: this.totalEvents,\n      context: this.context,\n    };\n  },\n\n  eventsUrl({ segments = [], query = {} }) {\n    const uri = new URI(this.sourceUrl);\n    const nextSegments = lodash.concat(uri.segment(), segments);\n\n    uri.segmentCoded(nextSegments);\n    uri.query(query);\n\n    return URLUtils.qualifyUrl(uri.resource());\n  },\n\n  refresh() {\n    const { query, page, pageSize, filter } = this.parameters;\n\n    this.search({\n      query: query,\n      page: page,\n      pageSize: pageSize,\n      filter: filter,\n    });\n  },\n\n  search({ query = '', page = 1, pageSize = 25, filter = { alerts: 'only' }, timerange }) {\n    const promise = fetch('POST', this.eventsUrl({}), {\n      query: query,\n      page: page,\n      per_page: pageSize,\n      filter: filter,\n      timerange: timerange,\n    });\n\n    promise.then((response) => {\n      this.events = response.events;\n\n      this.parameters = {\n        query: response.parameters.query,\n        page: response.parameters.page,\n        pageSize: response.parameters.per_page,\n        filter: response.parameters.filter,\n        timerange: response.parameters.timerange,\n      };\n\n      this.totalEvents = response.total_events;\n      this.context = response.context;\n      this.propagateChanges();\n\n      return response;\n    });\n\n    EventsActions.search.promise(promise);\n  },\n});\n\nexport default EventsStore;\n","/* @preserve\n * The MIT License (MIT)\n * \n * Copyright (c) 2013-2018 Petka Antonov\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\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 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\n * THE SOFTWARE.\n * \n */\n/**\n * bluebird build version 3.7.2\n * Features enabled: core, race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, using, timers, filter, any, each\n*/\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var f;\"undefined\"!=typeof window?f=window:\"undefined\"!=typeof global?f=global:\"undefined\"!=typeof self&&(f=self),f.Promise=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof _dereq_==\"function\"&&_dereq_;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 _dereq_==\"function\"&&_dereq_;for(var o=0;o 0) {\n        _drainQueueStep(queue);\n    }\n}\n\nfunction _drainQueueStep(queue) {\n    var fn = queue.shift();\n    if (typeof fn !== \"function\") {\n        fn._settlePromises();\n    } else {\n        var receiver = queue.shift();\n        var arg = queue.shift();\n        fn.call(receiver, arg);\n    }\n}\n\nAsync.prototype._drainQueues = function () {\n    _drainQueue(this._normalQueue);\n    this._reset();\n    this._haveDrainedQueues = true;\n    _drainQueue(this._lateQueue);\n};\n\nAsync.prototype._queueTick = function () {\n    if (!this._isTickUsed) {\n        this._isTickUsed = true;\n        this._schedule(this.drainQueues);\n    }\n};\n\nAsync.prototype._reset = function () {\n    this._isTickUsed = false;\n};\n\nmodule.exports = Async;\nmodule.exports.firstLineError = firstLineError;\n\n},{\"./queue\":26,\"./schedule\":29}],3:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise, debug) {\nvar calledBind = false;\nvar rejectThis = function(_, e) {\n    this._reject(e);\n};\n\nvar targetRejected = function(e, context) {\n    context.promiseRejectionQueued = true;\n    context.bindingPromise._then(rejectThis, rejectThis, null, this, e);\n};\n\nvar bindingResolved = function(thisArg, context) {\n    if (((this._bitField & 50397184) === 0)) {\n        this._resolveCallback(context.target);\n    }\n};\n\nvar bindingRejected = function(e, context) {\n    if (!context.promiseRejectionQueued) this._reject(e);\n};\n\nPromise.prototype.bind = function (thisArg) {\n    if (!calledBind) {\n        calledBind = true;\n        Promise.prototype._propagateFrom = debug.propagateFromFunction();\n        Promise.prototype._boundValue = debug.boundValueFunction();\n    }\n    var maybePromise = tryConvertToPromise(thisArg);\n    var ret = new Promise(INTERNAL);\n    ret._propagateFrom(this, 1);\n    var target = this._target();\n    ret._setBoundTo(maybePromise);\n    if (maybePromise instanceof Promise) {\n        var context = {\n            promiseRejectionQueued: false,\n            promise: ret,\n            target: target,\n            bindingPromise: maybePromise\n        };\n        target._then(INTERNAL, targetRejected, undefined, ret, context);\n        maybePromise._then(\n            bindingResolved, bindingRejected, undefined, ret, context);\n        ret._setOnCancel(maybePromise);\n    } else {\n        ret._resolveCallback(target);\n    }\n    return ret;\n};\n\nPromise.prototype._setBoundTo = function (obj) {\n    if (obj !== undefined) {\n        this._bitField = this._bitField | 2097152;\n        this._boundTo = obj;\n    } else {\n        this._bitField = this._bitField & (~2097152);\n    }\n};\n\nPromise.prototype._isBound = function () {\n    return (this._bitField & 2097152) === 2097152;\n};\n\nPromise.bind = function (thisArg, value) {\n    return Promise.resolve(value).bind(thisArg);\n};\n};\n\n},{}],4:[function(_dereq_,module,exports){\n\"use strict\";\nvar old;\nif (typeof Promise !== \"undefined\") old = Promise;\nfunction noConflict() {\n    try { if (Promise === bluebird) Promise = old; }\n    catch (e) {}\n    return bluebird;\n}\nvar bluebird = _dereq_(\"./promise\")();\nbluebird.noConflict = noConflict;\nmodule.exports = bluebird;\n\n},{\"./promise\":22}],5:[function(_dereq_,module,exports){\n\"use strict\";\nvar cr = Object.create;\nif (cr) {\n    var callerCache = cr(null);\n    var getterCache = cr(null);\n    callerCache[\" size\"] = getterCache[\" size\"] = 0;\n}\n\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar isIdentifier = util.isIdentifier;\n\nvar getMethodCaller;\nvar getGetter;\nif (!true) {\nvar makeMethodCaller = function (methodName) {\n    return new Function(\"ensureMethod\", \"                                    \\n\\\n        return function(obj) {                                               \\n\\\n            'use strict'                                                     \\n\\\n            var len = this.length;                                           \\n\\\n            ensureMethod(obj, 'methodName');                                 \\n\\\n            switch(len) {                                                    \\n\\\n                case 1: return obj.methodName(this[0]);                      \\n\\\n                case 2: return obj.methodName(this[0], this[1]);             \\n\\\n                case 3: return obj.methodName(this[0], this[1], this[2]);    \\n\\\n                case 0: return obj.methodName();                             \\n\\\n                default:                                                     \\n\\\n                    return obj.methodName.apply(obj, this);                  \\n\\\n            }                                                                \\n\\\n        };                                                                   \\n\\\n        \".replace(/methodName/g, methodName))(ensureMethod);\n};\n\nvar makeGetter = function (propertyName) {\n    return new Function(\"obj\", \"                                             \\n\\\n        'use strict';                                                        \\n\\\n        return obj.propertyName;                                             \\n\\\n        \".replace(\"propertyName\", propertyName));\n};\n\nvar getCompiled = function(name, compiler, cache) {\n    var ret = cache[name];\n    if (typeof ret !== \"function\") {\n        if (!isIdentifier(name)) {\n            return null;\n        }\n        ret = compiler(name);\n        cache[name] = ret;\n        cache[\" size\"]++;\n        if (cache[\" size\"] > 512) {\n            var keys = Object.keys(cache);\n            for (var i = 0; i < 256; ++i) delete cache[keys[i]];\n            cache[\" size\"] = keys.length - 256;\n        }\n    }\n    return ret;\n};\n\ngetMethodCaller = function(name) {\n    return getCompiled(name, makeMethodCaller, callerCache);\n};\n\ngetGetter = function(name) {\n    return getCompiled(name, makeGetter, getterCache);\n};\n}\n\nfunction ensureMethod(obj, methodName) {\n    var fn;\n    if (obj != null) fn = obj[methodName];\n    if (typeof fn !== \"function\") {\n        var message = \"Object \" + util.classString(obj) + \" has no method '\" +\n            util.toString(methodName) + \"'\";\n        throw new Promise.TypeError(message);\n    }\n    return fn;\n}\n\nfunction caller(obj) {\n    var methodName = this.pop();\n    var fn = ensureMethod(obj, methodName);\n    return fn.apply(obj, this);\n}\nPromise.prototype.call = function (methodName) {\n    var args = [].slice.call(arguments, 1);;\n    if (!true) {\n        if (canEvaluate) {\n            var maybeCaller = getMethodCaller(methodName);\n            if (maybeCaller !== null) {\n                return this._then(\n                    maybeCaller, undefined, undefined, args, undefined);\n            }\n        }\n    }\n    args.push(methodName);\n    return this._then(caller, undefined, undefined, args, undefined);\n};\n\nfunction namedGetter(obj) {\n    return obj[this];\n}\nfunction indexedGetter(obj) {\n    var index = +this;\n    if (index < 0) index = Math.max(0, index + obj.length);\n    return obj[index];\n}\nPromise.prototype.get = function (propertyName) {\n    var isIndex = (typeof propertyName === \"number\");\n    var getter;\n    if (!isIndex) {\n        if (canEvaluate) {\n            var maybeGetter = getGetter(propertyName);\n            getter = maybeGetter !== null ? maybeGetter : namedGetter;\n        } else {\n            getter = namedGetter;\n        }\n    } else {\n        getter = indexedGetter;\n    }\n    return this._then(getter, undefined, undefined, propertyName, undefined);\n};\n};\n\n},{\"./util\":36}],6:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, PromiseArray, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nPromise.prototype[\"break\"] = Promise.prototype.cancel = function() {\n    if (!debug.cancellation()) return this._warn(\"cancellation is disabled\");\n\n    var promise = this;\n    var child = promise;\n    while (promise._isCancellable()) {\n        if (!promise._cancelBy(child)) {\n            if (child._isFollowing()) {\n                child._followee().cancel();\n            } else {\n                child._cancelBranched();\n            }\n            break;\n        }\n\n        var parent = promise._cancellationParent;\n        if (parent == null || !parent._isCancellable()) {\n            if (promise._isFollowing()) {\n                promise._followee().cancel();\n            } else {\n                promise._cancelBranched();\n            }\n            break;\n        } else {\n            if (promise._isFollowing()) promise._followee().cancel();\n            promise._setWillBeCancelled();\n            child = promise;\n            promise = parent;\n        }\n    }\n};\n\nPromise.prototype._branchHasCancelled = function() {\n    this._branchesRemainingToCancel--;\n};\n\nPromise.prototype._enoughBranchesHaveCancelled = function() {\n    return this._branchesRemainingToCancel === undefined ||\n           this._branchesRemainingToCancel <= 0;\n};\n\nPromise.prototype._cancelBy = function(canceller) {\n    if (canceller === this) {\n        this._branchesRemainingToCancel = 0;\n        this._invokeOnCancel();\n        return true;\n    } else {\n        this._branchHasCancelled();\n        if (this._enoughBranchesHaveCancelled()) {\n            this._invokeOnCancel();\n            return true;\n        }\n    }\n    return false;\n};\n\nPromise.prototype._cancelBranched = function() {\n    if (this._enoughBranchesHaveCancelled()) {\n        this._cancel();\n    }\n};\n\nPromise.prototype._cancel = function() {\n    if (!this._isCancellable()) return;\n    this._setCancelled();\n    async.invoke(this._cancelPromises, this, undefined);\n};\n\nPromise.prototype._cancelPromises = function() {\n    if (this._length() > 0) this._settlePromises();\n};\n\nPromise.prototype._unsetOnCancel = function() {\n    this._onCancelField = undefined;\n};\n\nPromise.prototype._isCancellable = function() {\n    return this.isPending() && !this._isCancelled();\n};\n\nPromise.prototype.isCancellable = function() {\n    return this.isPending() && !this.isCancelled();\n};\n\nPromise.prototype._doInvokeOnCancel = function(onCancelCallback, internalOnly) {\n    if (util.isArray(onCancelCallback)) {\n        for (var i = 0; i < onCancelCallback.length; ++i) {\n            this._doInvokeOnCancel(onCancelCallback[i], internalOnly);\n        }\n    } else if (onCancelCallback !== undefined) {\n        if (typeof onCancelCallback === \"function\") {\n            if (!internalOnly) {\n                var e = tryCatch(onCancelCallback).call(this._boundValue());\n                if (e === errorObj) {\n                    this._attachExtraTrace(e.e);\n                    async.throwLater(e.e);\n                }\n            }\n        } else {\n            onCancelCallback._resultCancelled(this);\n        }\n    }\n};\n\nPromise.prototype._invokeOnCancel = function() {\n    var onCancelCallback = this._onCancel();\n    this._unsetOnCancel();\n    async.invoke(this._doInvokeOnCancel, this, onCancelCallback);\n};\n\nPromise.prototype._invokeInternalOnCancel = function() {\n    if (this._isCancellable()) {\n        this._doInvokeOnCancel(this._onCancel(), true);\n        this._unsetOnCancel();\n    }\n};\n\nPromise.prototype._resultCancelled = function() {\n    this.cancel();\n};\n\n};\n\n},{\"./util\":36}],7:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar getKeys = _dereq_(\"./es5\").keys;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction catchFilter(instances, cb, promise) {\n    return function(e) {\n        var boundTo = promise._boundValue();\n        predicateLoop: for (var i = 0; i < instances.length; ++i) {\n            var item = instances[i];\n\n            if (item === Error ||\n                (item != null && item.prototype instanceof Error)) {\n                if (e instanceof item) {\n                    return tryCatch(cb).call(boundTo, e);\n                }\n            } else if (typeof item === \"function\") {\n                var matchesPredicate = tryCatch(item).call(boundTo, e);\n                if (matchesPredicate === errorObj) {\n                    return matchesPredicate;\n                } else if (matchesPredicate) {\n                    return tryCatch(cb).call(boundTo, e);\n                }\n            } else if (util.isObject(e)) {\n                var keys = getKeys(item);\n                for (var j = 0; j < keys.length; ++j) {\n                    var key = keys[j];\n                    if (item[key] != e[key]) {\n                        continue predicateLoop;\n                    }\n                }\n                return tryCatch(cb).call(boundTo, e);\n            }\n        }\n        return NEXT_FILTER;\n    };\n}\n\nreturn catchFilter;\n};\n\n},{\"./es5\":13,\"./util\":36}],8:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar longStackTraces = false;\nvar contextStack = [];\n\nPromise.prototype._promiseCreated = function() {};\nPromise.prototype._pushContext = function() {};\nPromise.prototype._popContext = function() {return null;};\nPromise._peekContext = Promise.prototype._peekContext = function() {};\n\nfunction Context() {\n    this._trace = new Context.CapturedTrace(peekContext());\n}\nContext.prototype._pushContext = function () {\n    if (this._trace !== undefined) {\n        this._trace._promiseCreated = null;\n        contextStack.push(this._trace);\n    }\n};\n\nContext.prototype._popContext = function () {\n    if (this._trace !== undefined) {\n        var trace = contextStack.pop();\n        var ret = trace._promiseCreated;\n        trace._promiseCreated = null;\n        return ret;\n    }\n    return null;\n};\n\nfunction createContext() {\n    if (longStackTraces) return new Context();\n}\n\nfunction peekContext() {\n    var lastIndex = contextStack.length - 1;\n    if (lastIndex >= 0) {\n        return contextStack[lastIndex];\n    }\n    return undefined;\n}\nContext.CapturedTrace = null;\nContext.create = createContext;\nContext.deactivateLongStackTraces = function() {};\nContext.activateLongStackTraces = function() {\n    var Promise_pushContext = Promise.prototype._pushContext;\n    var Promise_popContext = Promise.prototype._popContext;\n    var Promise_PeekContext = Promise._peekContext;\n    var Promise_peekContext = Promise.prototype._peekContext;\n    var Promise_promiseCreated = Promise.prototype._promiseCreated;\n    Context.deactivateLongStackTraces = function() {\n        Promise.prototype._pushContext = Promise_pushContext;\n        Promise.prototype._popContext = Promise_popContext;\n        Promise._peekContext = Promise_PeekContext;\n        Promise.prototype._peekContext = Promise_peekContext;\n        Promise.prototype._promiseCreated = Promise_promiseCreated;\n        longStackTraces = false;\n    };\n    longStackTraces = true;\n    Promise.prototype._pushContext = Context.prototype._pushContext;\n    Promise.prototype._popContext = Context.prototype._popContext;\n    Promise._peekContext = Promise.prototype._peekContext = peekContext;\n    Promise.prototype._promiseCreated = function() {\n        var ctx = this._peekContext();\n        if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this;\n    };\n};\nreturn Context;\n};\n\n},{}],9:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, Context,\n    enableAsyncHooks, disableAsyncHooks) {\nvar async = Promise._async;\nvar Warning = _dereq_(\"./errors\").Warning;\nvar util = _dereq_(\"./util\");\nvar es5 = _dereq_(\"./es5\");\nvar canAttachTrace = util.canAttachTrace;\nvar unhandledRejectionHandled;\nvar possiblyUnhandledRejection;\nvar bluebirdFramePattern =\n    /[\\\\\\/]bluebird[\\\\\\/]js[\\\\\\/](release|debug|instrumented)/;\nvar nodeFramePattern = /\\((?:timers\\.js):\\d+:\\d+\\)/;\nvar parseLinePattern = /[\\/<\\(](.+?):(\\d+):(\\d+)\\)?\\s*$/;\nvar stackFramePattern = null;\nvar formatStack = null;\nvar indentStackFrames = false;\nvar printWarning;\nvar debugging = !!(util.env(\"BLUEBIRD_DEBUG\") != 0 &&\n                        (true ||\n                         util.env(\"BLUEBIRD_DEBUG\") ||\n                         util.env(\"NODE_ENV\") === \"development\"));\n\nvar warnings = !!(util.env(\"BLUEBIRD_WARNINGS\") != 0 &&\n    (debugging || util.env(\"BLUEBIRD_WARNINGS\")));\n\nvar longStackTraces = !!(util.env(\"BLUEBIRD_LONG_STACK_TRACES\") != 0 &&\n    (debugging || util.env(\"BLUEBIRD_LONG_STACK_TRACES\")));\n\nvar wForgottenReturn = util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\") != 0 &&\n    (warnings || !!util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\"));\n\nvar deferUnhandledRejectionCheck;\n(function() {\n    var promises = [];\n\n    function unhandledRejectionCheck() {\n        for (var i = 0; i < promises.length; ++i) {\n            promises[i]._notifyUnhandledRejection();\n        }\n        unhandledRejectionClear();\n    }\n\n    function unhandledRejectionClear() {\n        promises.length = 0;\n    }\n\n    deferUnhandledRejectionCheck = function(promise) {\n        promises.push(promise);\n        setTimeout(unhandledRejectionCheck, 1);\n    };\n\n    es5.defineProperty(Promise, \"_unhandledRejectionCheck\", {\n        value: unhandledRejectionCheck\n    });\n    es5.defineProperty(Promise, \"_unhandledRejectionClear\", {\n        value: unhandledRejectionClear\n    });\n})();\n\nPromise.prototype.suppressUnhandledRejections = function() {\n    var target = this._target();\n    target._bitField = ((target._bitField & (~1048576)) |\n                      524288);\n};\n\nPromise.prototype._ensurePossibleRejectionHandled = function () {\n    if ((this._bitField & 524288) !== 0) return;\n    this._setRejectionIsUnhandled();\n    deferUnhandledRejectionCheck(this);\n};\n\nPromise.prototype._notifyUnhandledRejectionIsHandled = function () {\n    fireRejectionEvent(\"rejectionHandled\",\n                                  unhandledRejectionHandled, undefined, this);\n};\n\nPromise.prototype._setReturnedNonUndefined = function() {\n    this._bitField = this._bitField | 268435456;\n};\n\nPromise.prototype._returnedNonUndefined = function() {\n    return (this._bitField & 268435456) !== 0;\n};\n\nPromise.prototype._notifyUnhandledRejection = function () {\n    if (this._isRejectionUnhandled()) {\n        var reason = this._settledValue();\n        this._setUnhandledRejectionIsNotified();\n        fireRejectionEvent(\"unhandledRejection\",\n                                      possiblyUnhandledRejection, reason, this);\n    }\n};\n\nPromise.prototype._setUnhandledRejectionIsNotified = function () {\n    this._bitField = this._bitField | 262144;\n};\n\nPromise.prototype._unsetUnhandledRejectionIsNotified = function () {\n    this._bitField = this._bitField & (~262144);\n};\n\nPromise.prototype._isUnhandledRejectionNotified = function () {\n    return (this._bitField & 262144) > 0;\n};\n\nPromise.prototype._setRejectionIsUnhandled = function () {\n    this._bitField = this._bitField | 1048576;\n};\n\nPromise.prototype._unsetRejectionIsUnhandled = function () {\n    this._bitField = this._bitField & (~1048576);\n    if (this._isUnhandledRejectionNotified()) {\n        this._unsetUnhandledRejectionIsNotified();\n        this._notifyUnhandledRejectionIsHandled();\n    }\n};\n\nPromise.prototype._isRejectionUnhandled = function () {\n    return (this._bitField & 1048576) > 0;\n};\n\nPromise.prototype._warn = function(message, shouldUseOwnTrace, promise) {\n    return warn(message, shouldUseOwnTrace, promise || this);\n};\n\nPromise.onPossiblyUnhandledRejection = function (fn) {\n    var context = Promise._getContext();\n    possiblyUnhandledRejection = util.contextBind(context, fn);\n};\n\nPromise.onUnhandledRejectionHandled = function (fn) {\n    var context = Promise._getContext();\n    unhandledRejectionHandled = util.contextBind(context, fn);\n};\n\nvar disableLongStackTraces = function() {};\nPromise.longStackTraces = function () {\n    if (async.haveItemsQueued() && !config.longStackTraces) {\n        throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n    }\n    if (!config.longStackTraces && longStackTracesIsSupported()) {\n        var Promise_captureStackTrace = Promise.prototype._captureStackTrace;\n        var Promise_attachExtraTrace = Promise.prototype._attachExtraTrace;\n        var Promise_dereferenceTrace = Promise.prototype._dereferenceTrace;\n        config.longStackTraces = true;\n        disableLongStackTraces = function() {\n            if (async.haveItemsQueued() && !config.longStackTraces) {\n                throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n            }\n            Promise.prototype._captureStackTrace = Promise_captureStackTrace;\n            Promise.prototype._attachExtraTrace = Promise_attachExtraTrace;\n            Promise.prototype._dereferenceTrace = Promise_dereferenceTrace;\n            Context.deactivateLongStackTraces();\n            config.longStackTraces = false;\n        };\n        Promise.prototype._captureStackTrace = longStackTracesCaptureStackTrace;\n        Promise.prototype._attachExtraTrace = longStackTracesAttachExtraTrace;\n        Promise.prototype._dereferenceTrace = longStackTracesDereferenceTrace;\n        Context.activateLongStackTraces();\n    }\n};\n\nPromise.hasLongStackTraces = function () {\n    return config.longStackTraces && longStackTracesIsSupported();\n};\n\n\nvar legacyHandlers = {\n    unhandledrejection: {\n        before: function() {\n            var ret = util.global.onunhandledrejection;\n            util.global.onunhandledrejection = null;\n            return ret;\n        },\n        after: function(fn) {\n            util.global.onunhandledrejection = fn;\n        }\n    },\n    rejectionhandled: {\n        before: function() {\n            var ret = util.global.onrejectionhandled;\n            util.global.onrejectionhandled = null;\n            return ret;\n        },\n        after: function(fn) {\n            util.global.onrejectionhandled = fn;\n        }\n    }\n};\n\nvar fireDomEvent = (function() {\n    var dispatch = function(legacy, e) {\n        if (legacy) {\n            var fn;\n            try {\n                fn = legacy.before();\n                return !util.global.dispatchEvent(e);\n            } finally {\n                legacy.after(fn);\n            }\n        } else {\n            return !util.global.dispatchEvent(e);\n        }\n    };\n    try {\n        if (typeof CustomEvent === \"function\") {\n            var event = new CustomEvent(\"CustomEvent\");\n            util.global.dispatchEvent(event);\n            return function(name, event) {\n                name = name.toLowerCase();\n                var eventData = {\n                    detail: event,\n                    cancelable: true\n                };\n                var domEvent = new CustomEvent(name, eventData);\n                es5.defineProperty(\n                    domEvent, \"promise\", {value: event.promise});\n                es5.defineProperty(\n                    domEvent, \"reason\", {value: event.reason});\n\n                return dispatch(legacyHandlers[name], domEvent);\n            };\n        } else if (typeof Event === \"function\") {\n            var event = new Event(\"CustomEvent\");\n            util.global.dispatchEvent(event);\n            return function(name, event) {\n                name = name.toLowerCase();\n                var domEvent = new Event(name, {\n                    cancelable: true\n                });\n                domEvent.detail = event;\n                es5.defineProperty(domEvent, \"promise\", {value: event.promise});\n                es5.defineProperty(domEvent, \"reason\", {value: event.reason});\n                return dispatch(legacyHandlers[name], domEvent);\n            };\n        } else {\n            var event = document.createEvent(\"CustomEvent\");\n            event.initCustomEvent(\"testingtheevent\", false, true, {});\n            util.global.dispatchEvent(event);\n            return function(name, event) {\n                name = name.toLowerCase();\n                var domEvent = document.createEvent(\"CustomEvent\");\n                domEvent.initCustomEvent(name, false, true,\n                    event);\n                return dispatch(legacyHandlers[name], domEvent);\n            };\n        }\n    } catch (e) {}\n    return function() {\n        return false;\n    };\n})();\n\nvar fireGlobalEvent = (function() {\n    if (util.isNode) {\n        return function() {\n            return process.emit.apply(process, arguments);\n        };\n    } else {\n        if (!util.global) {\n            return function() {\n                return false;\n            };\n        }\n        return function(name) {\n            var methodName = \"on\" + name.toLowerCase();\n            var method = util.global[methodName];\n            if (!method) return false;\n            method.apply(util.global, [].slice.call(arguments, 1));\n            return true;\n        };\n    }\n})();\n\nfunction generatePromiseLifecycleEventObject(name, promise) {\n    return {promise: promise};\n}\n\nvar eventToObjectGenerator = {\n    promiseCreated: generatePromiseLifecycleEventObject,\n    promiseFulfilled: generatePromiseLifecycleEventObject,\n    promiseRejected: generatePromiseLifecycleEventObject,\n    promiseResolved: generatePromiseLifecycleEventObject,\n    promiseCancelled: generatePromiseLifecycleEventObject,\n    promiseChained: function(name, promise, child) {\n        return {promise: promise, child: child};\n    },\n    warning: function(name, warning) {\n        return {warning: warning};\n    },\n    unhandledRejection: function (name, reason, promise) {\n        return {reason: reason, promise: promise};\n    },\n    rejectionHandled: generatePromiseLifecycleEventObject\n};\n\nvar activeFireEvent = function (name) {\n    var globalEventFired = false;\n    try {\n        globalEventFired = fireGlobalEvent.apply(null, arguments);\n    } catch (e) {\n        async.throwLater(e);\n        globalEventFired = true;\n    }\n\n    var domEventFired = false;\n    try {\n        domEventFired = fireDomEvent(name,\n                    eventToObjectGenerator[name].apply(null, arguments));\n    } catch (e) {\n        async.throwLater(e);\n        domEventFired = true;\n    }\n\n    return domEventFired || globalEventFired;\n};\n\nPromise.config = function(opts) {\n    opts = Object(opts);\n    if (\"longStackTraces\" in opts) {\n        if (opts.longStackTraces) {\n            Promise.longStackTraces();\n        } else if (!opts.longStackTraces && Promise.hasLongStackTraces()) {\n            disableLongStackTraces();\n        }\n    }\n    if (\"warnings\" in opts) {\n        var warningsOption = opts.warnings;\n        config.warnings = !!warningsOption;\n        wForgottenReturn = config.warnings;\n\n        if (util.isObject(warningsOption)) {\n            if (\"wForgottenReturn\" in warningsOption) {\n                wForgottenReturn = !!warningsOption.wForgottenReturn;\n            }\n        }\n    }\n    if (\"cancellation\" in opts && opts.cancellation && !config.cancellation) {\n        if (async.haveItemsQueued()) {\n            throw new Error(\n                \"cannot enable cancellation after promises are in use\");\n        }\n        Promise.prototype._clearCancellationData =\n            cancellationClearCancellationData;\n        Promise.prototype._propagateFrom = cancellationPropagateFrom;\n        Promise.prototype._onCancel = cancellationOnCancel;\n        Promise.prototype._setOnCancel = cancellationSetOnCancel;\n        Promise.prototype._attachCancellationCallback =\n            cancellationAttachCancellationCallback;\n        Promise.prototype._execute = cancellationExecute;\n        propagateFromFunction = cancellationPropagateFrom;\n        config.cancellation = true;\n    }\n    if (\"monitoring\" in opts) {\n        if (opts.monitoring && !config.monitoring) {\n            config.monitoring = true;\n            Promise.prototype._fireEvent = activeFireEvent;\n        } else if (!opts.monitoring && config.monitoring) {\n            config.monitoring = false;\n            Promise.prototype._fireEvent = defaultFireEvent;\n        }\n    }\n    if (\"asyncHooks\" in opts && util.nodeSupportsAsyncResource) {\n        var prev = config.asyncHooks;\n        var cur = !!opts.asyncHooks;\n        if (prev !== cur) {\n            config.asyncHooks = cur;\n            if (cur) {\n                enableAsyncHooks();\n            } else {\n                disableAsyncHooks();\n            }\n        }\n    }\n    return Promise;\n};\n\nfunction defaultFireEvent() { return false; }\n\nPromise.prototype._fireEvent = defaultFireEvent;\nPromise.prototype._execute = function(executor, resolve, reject) {\n    try {\n        executor(resolve, reject);\n    } catch (e) {\n        return e;\n    }\n};\nPromise.prototype._onCancel = function () {};\nPromise.prototype._setOnCancel = function (handler) { ; };\nPromise.prototype._attachCancellationCallback = function(onCancel) {\n    ;\n};\nPromise.prototype._captureStackTrace = function () {};\nPromise.prototype._attachExtraTrace = function () {};\nPromise.prototype._dereferenceTrace = function () {};\nPromise.prototype._clearCancellationData = function() {};\nPromise.prototype._propagateFrom = function (parent, flags) {\n    ;\n    ;\n};\n\nfunction cancellationExecute(executor, resolve, reject) {\n    var promise = this;\n    try {\n        executor(resolve, reject, function(onCancel) {\n            if (typeof onCancel !== \"function\") {\n                throw new TypeError(\"onCancel must be a function, got: \" +\n                                    util.toString(onCancel));\n            }\n            promise._attachCancellationCallback(onCancel);\n        });\n    } catch (e) {\n        return e;\n    }\n}\n\nfunction cancellationAttachCancellationCallback(onCancel) {\n    if (!this._isCancellable()) return this;\n\n    var previousOnCancel = this._onCancel();\n    if (previousOnCancel !== undefined) {\n        if (util.isArray(previousOnCancel)) {\n            previousOnCancel.push(onCancel);\n        } else {\n            this._setOnCancel([previousOnCancel, onCancel]);\n        }\n    } else {\n        this._setOnCancel(onCancel);\n    }\n}\n\nfunction cancellationOnCancel() {\n    return this._onCancelField;\n}\n\nfunction cancellationSetOnCancel(onCancel) {\n    this._onCancelField = onCancel;\n}\n\nfunction cancellationClearCancellationData() {\n    this._cancellationParent = undefined;\n    this._onCancelField = undefined;\n}\n\nfunction cancellationPropagateFrom(parent, flags) {\n    if ((flags & 1) !== 0) {\n        this._cancellationParent = parent;\n        var branchesRemainingToCancel = parent._branchesRemainingToCancel;\n        if (branchesRemainingToCancel === undefined) {\n            branchesRemainingToCancel = 0;\n        }\n        parent._branchesRemainingToCancel = branchesRemainingToCancel + 1;\n    }\n    if ((flags & 2) !== 0 && parent._isBound()) {\n        this._setBoundTo(parent._boundTo);\n    }\n}\n\nfunction bindingPropagateFrom(parent, flags) {\n    if ((flags & 2) !== 0 && parent._isBound()) {\n        this._setBoundTo(parent._boundTo);\n    }\n}\nvar propagateFromFunction = bindingPropagateFrom;\n\nfunction boundValueFunction() {\n    var ret = this._boundTo;\n    if (ret !== undefined) {\n        if (ret instanceof Promise) {\n            if (ret.isFulfilled()) {\n                return ret.value();\n            } else {\n                return undefined;\n            }\n        }\n    }\n    return ret;\n}\n\nfunction longStackTracesCaptureStackTrace() {\n    this._trace = new CapturedTrace(this._peekContext());\n}\n\nfunction longStackTracesAttachExtraTrace(error, ignoreSelf) {\n    if (canAttachTrace(error)) {\n        var trace = this._trace;\n        if (trace !== undefined) {\n            if (ignoreSelf) trace = trace._parent;\n        }\n        if (trace !== undefined) {\n            trace.attachExtraTrace(error);\n        } else if (!error.__stackCleaned__) {\n            var parsed = parseStackAndMessage(error);\n            util.notEnumerableProp(error, \"stack\",\n                parsed.message + \"\\n\" + parsed.stack.join(\"\\n\"));\n            util.notEnumerableProp(error, \"__stackCleaned__\", true);\n        }\n    }\n}\n\nfunction longStackTracesDereferenceTrace() {\n    this._trace = undefined;\n}\n\nfunction checkForgottenReturns(returnValue, promiseCreated, name, promise,\n                               parent) {\n    if (returnValue === undefined && promiseCreated !== null &&\n        wForgottenReturn) {\n        if (parent !== undefined && parent._returnedNonUndefined()) return;\n        if ((promise._bitField & 65535) === 0) return;\n\n        if (name) name = name + \" \";\n        var handlerLine = \"\";\n        var creatorLine = \"\";\n        if (promiseCreated._trace) {\n            var traceLines = promiseCreated._trace.stack.split(\"\\n\");\n            var stack = cleanStack(traceLines);\n            for (var i = stack.length - 1; i >= 0; --i) {\n                var line = stack[i];\n                if (!nodeFramePattern.test(line)) {\n                    var lineMatches = line.match(parseLinePattern);\n                    if (lineMatches) {\n                        handlerLine  = \"at \" + lineMatches[1] +\n                            \":\" + lineMatches[2] + \":\" + lineMatches[3] + \" \";\n                    }\n                    break;\n                }\n            }\n\n            if (stack.length > 0) {\n                var firstUserLine = stack[0];\n                for (var i = 0; i < traceLines.length; ++i) {\n\n                    if (traceLines[i] === firstUserLine) {\n                        if (i > 0) {\n                            creatorLine = \"\\n\" + traceLines[i - 1];\n                        }\n                        break;\n                    }\n                }\n\n            }\n        }\n        var msg = \"a promise was created in a \" + name +\n            \"handler \" + handlerLine + \"but was not returned from it, \" +\n            \"see http://goo.gl/rRqMUw\" +\n            creatorLine;\n        promise._warn(msg, true, promiseCreated);\n    }\n}\n\nfunction deprecated(name, replacement) {\n    var message = name +\n        \" is deprecated and will be removed in a future version.\";\n    if (replacement) message += \" Use \" + replacement + \" instead.\";\n    return warn(message);\n}\n\nfunction warn(message, shouldUseOwnTrace, promise) {\n    if (!config.warnings) return;\n    var warning = new Warning(message);\n    var ctx;\n    if (shouldUseOwnTrace) {\n        promise._attachExtraTrace(warning);\n    } else if (config.longStackTraces && (ctx = Promise._peekContext())) {\n        ctx.attachExtraTrace(warning);\n    } else {\n        var parsed = parseStackAndMessage(warning);\n        warning.stack = parsed.message + \"\\n\" + parsed.stack.join(\"\\n\");\n    }\n\n    if (!activeFireEvent(\"warning\", warning)) {\n        formatAndLogError(warning, \"\", true);\n    }\n}\n\nfunction reconstructStack(message, stacks) {\n    for (var i = 0; i < stacks.length - 1; ++i) {\n        stacks[i].push(\"From previous event:\");\n        stacks[i] = stacks[i].join(\"\\n\");\n    }\n    if (i < stacks.length) {\n        stacks[i] = stacks[i].join(\"\\n\");\n    }\n    return message + \"\\n\" + stacks.join(\"\\n\");\n}\n\nfunction removeDuplicateOrEmptyJumps(stacks) {\n    for (var i = 0; i < stacks.length; ++i) {\n        if (stacks[i].length === 0 ||\n            ((i + 1 < stacks.length) && stacks[i][0] === stacks[i+1][0])) {\n            stacks.splice(i, 1);\n            i--;\n        }\n    }\n}\n\nfunction removeCommonRoots(stacks) {\n    var current = stacks[0];\n    for (var i = 1; i < stacks.length; ++i) {\n        var prev = stacks[i];\n        var currentLastIndex = current.length - 1;\n        var currentLastLine = current[currentLastIndex];\n        var commonRootMeetPoint = -1;\n\n        for (var j = prev.length - 1; j >= 0; --j) {\n            if (prev[j] === currentLastLine) {\n                commonRootMeetPoint = j;\n                break;\n            }\n        }\n\n        for (var j = commonRootMeetPoint; j >= 0; --j) {\n            var line = prev[j];\n            if (current[currentLastIndex] === line) {\n                current.pop();\n                currentLastIndex--;\n            } else {\n                break;\n            }\n        }\n        current = prev;\n    }\n}\n\nfunction cleanStack(stack) {\n    var ret = [];\n    for (var i = 0; i < stack.length; ++i) {\n        var line = stack[i];\n        var isTraceLine = \"    (No stack trace)\" === line ||\n            stackFramePattern.test(line);\n        var isInternalFrame = isTraceLine && shouldIgnore(line);\n        if (isTraceLine && !isInternalFrame) {\n            if (indentStackFrames && line.charAt(0) !== \" \") {\n                line = \"    \" + line;\n            }\n            ret.push(line);\n        }\n    }\n    return ret;\n}\n\nfunction stackFramesAsArray(error) {\n    var stack = error.stack.replace(/\\s+$/g, \"\").split(\"\\n\");\n    for (var i = 0; i < stack.length; ++i) {\n        var line = stack[i];\n        if (\"    (No stack trace)\" === line || stackFramePattern.test(line)) {\n            break;\n        }\n    }\n    if (i > 0 && error.name != \"SyntaxError\") {\n        stack = stack.slice(i);\n    }\n    return stack;\n}\n\nfunction parseStackAndMessage(error) {\n    var stack = error.stack;\n    var message = error.toString();\n    stack = typeof stack === \"string\" && stack.length > 0\n                ? stackFramesAsArray(error) : [\"    (No stack trace)\"];\n    return {\n        message: message,\n        stack: error.name == \"SyntaxError\" ? stack : cleanStack(stack)\n    };\n}\n\nfunction formatAndLogError(error, title, isSoft) {\n    if (typeof console !== \"undefined\") {\n        var message;\n        if (util.isObject(error)) {\n            var stack = error.stack;\n            message = title + formatStack(stack, error);\n        } else {\n            message = title + String(error);\n        }\n        if (typeof printWarning === \"function\") {\n            printWarning(message, isSoft);\n        } else if (typeof console.log === \"function\" ||\n            typeof console.log === \"object\") {\n            console.log(message);\n        }\n    }\n}\n\nfunction fireRejectionEvent(name, localHandler, reason, promise) {\n    var localEventFired = false;\n    try {\n        if (typeof localHandler === \"function\") {\n            localEventFired = true;\n            if (name === \"rejectionHandled\") {\n                localHandler(promise);\n            } else {\n                localHandler(reason, promise);\n            }\n        }\n    } catch (e) {\n        async.throwLater(e);\n    }\n\n    if (name === \"unhandledRejection\") {\n        if (!activeFireEvent(name, reason, promise) && !localEventFired) {\n            formatAndLogError(reason, \"Unhandled rejection \");\n        }\n    } else {\n        activeFireEvent(name, promise);\n    }\n}\n\nfunction formatNonError(obj) {\n    var str;\n    if (typeof obj === \"function\") {\n        str = \"[function \" +\n            (obj.name || \"anonymous\") +\n            \"]\";\n    } else {\n        str = obj && typeof obj.toString === \"function\"\n            ? obj.toString() : util.toString(obj);\n        var ruselessToString = /\\[object [a-zA-Z0-9$_]+\\]/;\n        if (ruselessToString.test(str)) {\n            try {\n                var newStr = JSON.stringify(obj);\n                str = newStr;\n            }\n            catch(e) {\n\n            }\n        }\n        if (str.length === 0) {\n            str = \"(empty array)\";\n        }\n    }\n    return (\"(<\" + snip(str) + \">, no stack trace)\");\n}\n\nfunction snip(str) {\n    var maxChars = 41;\n    if (str.length < maxChars) {\n        return str;\n    }\n    return str.substr(0, maxChars - 3) + \"...\";\n}\n\nfunction longStackTracesIsSupported() {\n    return typeof captureStackTrace === \"function\";\n}\n\nvar shouldIgnore = function() { return false; };\nvar parseLineInfoRegex = /[\\/<\\(]([^:\\/]+):(\\d+):(?:\\d+)\\)?\\s*$/;\nfunction parseLineInfo(line) {\n    var matches = line.match(parseLineInfoRegex);\n    if (matches) {\n        return {\n            fileName: matches[1],\n            line: parseInt(matches[2], 10)\n        };\n    }\n}\n\nfunction setBounds(firstLineError, lastLineError) {\n    if (!longStackTracesIsSupported()) return;\n    var firstStackLines = (firstLineError.stack || \"\").split(\"\\n\");\n    var lastStackLines = (lastLineError.stack || \"\").split(\"\\n\");\n    var firstIndex = -1;\n    var lastIndex = -1;\n    var firstFileName;\n    var lastFileName;\n    for (var i = 0; i < firstStackLines.length; ++i) {\n        var result = parseLineInfo(firstStackLines[i]);\n        if (result) {\n            firstFileName = result.fileName;\n            firstIndex = result.line;\n            break;\n        }\n    }\n    for (var i = 0; i < lastStackLines.length; ++i) {\n        var result = parseLineInfo(lastStackLines[i]);\n        if (result) {\n            lastFileName = result.fileName;\n            lastIndex = result.line;\n            break;\n        }\n    }\n    if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName ||\n        firstFileName !== lastFileName || firstIndex >= lastIndex) {\n        return;\n    }\n\n    shouldIgnore = function(line) {\n        if (bluebirdFramePattern.test(line)) return true;\n        var info = parseLineInfo(line);\n        if (info) {\n            if (info.fileName === firstFileName &&\n                (firstIndex <= info.line && info.line <= lastIndex)) {\n                return true;\n            }\n        }\n        return false;\n    };\n}\n\nfunction CapturedTrace(parent) {\n    this._parent = parent;\n    this._promisesCreated = 0;\n    var length = this._length = 1 + (parent === undefined ? 0 : parent._length);\n    captureStackTrace(this, CapturedTrace);\n    if (length > 32) this.uncycle();\n}\nutil.inherits(CapturedTrace, Error);\nContext.CapturedTrace = CapturedTrace;\n\nCapturedTrace.prototype.uncycle = function() {\n    var length = this._length;\n    if (length < 2) return;\n    var nodes = [];\n    var stackToIndex = {};\n\n    for (var i = 0, node = this; node !== undefined; ++i) {\n        nodes.push(node);\n        node = node._parent;\n    }\n    length = this._length = i;\n    for (var i = length - 1; i >= 0; --i) {\n        var stack = nodes[i].stack;\n        if (stackToIndex[stack] === undefined) {\n            stackToIndex[stack] = i;\n        }\n    }\n    for (var i = 0; i < length; ++i) {\n        var currentStack = nodes[i].stack;\n        var index = stackToIndex[currentStack];\n        if (index !== undefined && index !== i) {\n            if (index > 0) {\n                nodes[index - 1]._parent = undefined;\n                nodes[index - 1]._length = 1;\n            }\n            nodes[i]._parent = undefined;\n            nodes[i]._length = 1;\n            var cycleEdgeNode = i > 0 ? nodes[i - 1] : this;\n\n            if (index < length - 1) {\n                cycleEdgeNode._parent = nodes[index + 1];\n                cycleEdgeNode._parent.uncycle();\n                cycleEdgeNode._length =\n                    cycleEdgeNode._parent._length + 1;\n            } else {\n                cycleEdgeNode._parent = undefined;\n                cycleEdgeNode._length = 1;\n            }\n            var currentChildLength = cycleEdgeNode._length + 1;\n            for (var j = i - 2; j >= 0; --j) {\n                nodes[j]._length = currentChildLength;\n                currentChildLength++;\n            }\n            return;\n        }\n    }\n};\n\nCapturedTrace.prototype.attachExtraTrace = function(error) {\n    if (error.__stackCleaned__) return;\n    this.uncycle();\n    var parsed = parseStackAndMessage(error);\n    var message = parsed.message;\n    var stacks = [parsed.stack];\n\n    var trace = this;\n    while (trace !== undefined) {\n        stacks.push(cleanStack(trace.stack.split(\"\\n\")));\n        trace = trace._parent;\n    }\n    removeCommonRoots(stacks);\n    removeDuplicateOrEmptyJumps(stacks);\n    util.notEnumerableProp(error, \"stack\", reconstructStack(message, stacks));\n    util.notEnumerableProp(error, \"__stackCleaned__\", true);\n};\n\nvar captureStackTrace = (function stackDetection() {\n    var v8stackFramePattern = /^\\s*at\\s*/;\n    var v8stackFormatter = function(stack, error) {\n        if (typeof stack === \"string\") return stack;\n\n        if (error.name !== undefined &&\n            error.message !== undefined) {\n            return error.toString();\n        }\n        return formatNonError(error);\n    };\n\n    if (typeof Error.stackTraceLimit === \"number\" &&\n        typeof Error.captureStackTrace === \"function\") {\n        Error.stackTraceLimit += 6;\n        stackFramePattern = v8stackFramePattern;\n        formatStack = v8stackFormatter;\n        var captureStackTrace = Error.captureStackTrace;\n\n        shouldIgnore = function(line) {\n            return bluebirdFramePattern.test(line);\n        };\n        return function(receiver, ignoreUntil) {\n            Error.stackTraceLimit += 6;\n            captureStackTrace(receiver, ignoreUntil);\n            Error.stackTraceLimit -= 6;\n        };\n    }\n    var err = new Error();\n\n    if (typeof err.stack === \"string\" &&\n        err.stack.split(\"\\n\")[0].indexOf(\"stackDetection@\") >= 0) {\n        stackFramePattern = /@/;\n        formatStack = v8stackFormatter;\n        indentStackFrames = true;\n        return function captureStackTrace(o) {\n            o.stack = new Error().stack;\n        };\n    }\n\n    var hasStackAfterThrow;\n    try { throw new Error(); }\n    catch(e) {\n        hasStackAfterThrow = (\"stack\" in e);\n    }\n    if (!(\"stack\" in err) && hasStackAfterThrow &&\n        typeof Error.stackTraceLimit === \"number\") {\n        stackFramePattern = v8stackFramePattern;\n        formatStack = v8stackFormatter;\n        return function captureStackTrace(o) {\n            Error.stackTraceLimit += 6;\n            try { throw new Error(); }\n            catch(e) { o.stack = e.stack; }\n            Error.stackTraceLimit -= 6;\n        };\n    }\n\n    formatStack = function(stack, error) {\n        if (typeof stack === \"string\") return stack;\n\n        if ((typeof error === \"object\" ||\n            typeof error === \"function\") &&\n            error.name !== undefined &&\n            error.message !== undefined) {\n            return error.toString();\n        }\n        return formatNonError(error);\n    };\n\n    return null;\n\n})([]);\n\nif (typeof console !== \"undefined\" && typeof console.warn !== \"undefined\") {\n    printWarning = function (message) {\n        console.warn(message);\n    };\n    if (util.isNode && process.stderr.isTTY) {\n        printWarning = function(message, isSoft) {\n            var color = isSoft ? \"\\u001b[33m\" : \"\\u001b[31m\";\n            console.warn(color + message + \"\\u001b[0m\\n\");\n        };\n    } else if (!util.isNode && typeof (new Error().stack) === \"string\") {\n        printWarning = function(message, isSoft) {\n            console.warn(\"%c\" + message,\n                        isSoft ? \"color: darkorange\" : \"color: red\");\n        };\n    }\n}\n\nvar config = {\n    warnings: warnings,\n    longStackTraces: false,\n    cancellation: false,\n    monitoring: false,\n    asyncHooks: false\n};\n\nif (longStackTraces) Promise.longStackTraces();\n\nreturn {\n    asyncHooks: function() {\n        return config.asyncHooks;\n    },\n    longStackTraces: function() {\n        return config.longStackTraces;\n    },\n    warnings: function() {\n        return config.warnings;\n    },\n    cancellation: function() {\n        return config.cancellation;\n    },\n    monitoring: function() {\n        return config.monitoring;\n    },\n    propagateFromFunction: function() {\n        return propagateFromFunction;\n    },\n    boundValueFunction: function() {\n        return boundValueFunction;\n    },\n    checkForgottenReturns: checkForgottenReturns,\n    setBounds: setBounds,\n    warn: warn,\n    deprecated: deprecated,\n    CapturedTrace: CapturedTrace,\n    fireDomEvent: fireDomEvent,\n    fireGlobalEvent: fireGlobalEvent\n};\n};\n\n},{\"./errors\":12,\"./es5\":13,\"./util\":36}],10:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction returner() {\n    return this.value;\n}\nfunction thrower() {\n    throw this.reason;\n}\n\nPromise.prototype[\"return\"] =\nPromise.prototype.thenReturn = function (value) {\n    if (value instanceof Promise) value.suppressUnhandledRejections();\n    return this._then(\n        returner, undefined, undefined, {value: value}, undefined);\n};\n\nPromise.prototype[\"throw\"] =\nPromise.prototype.thenThrow = function (reason) {\n    return this._then(\n        thrower, undefined, undefined, {reason: reason}, undefined);\n};\n\nPromise.prototype.catchThrow = function (reason) {\n    if (arguments.length <= 1) {\n        return this._then(\n            undefined, thrower, undefined, {reason: reason}, undefined);\n    } else {\n        var _reason = arguments[1];\n        var handler = function() {throw _reason;};\n        return this.caught(reason, handler);\n    }\n};\n\nPromise.prototype.catchReturn = function (value) {\n    if (arguments.length <= 1) {\n        if (value instanceof Promise) value.suppressUnhandledRejections();\n        return this._then(\n            undefined, returner, undefined, {value: value}, undefined);\n    } else {\n        var _value = arguments[1];\n        if (_value instanceof Promise) _value.suppressUnhandledRejections();\n        var handler = function() {return _value;};\n        return this.caught(value, handler);\n    }\n};\n};\n\n},{}],11:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseReduce = Promise.reduce;\nvar PromiseAll = Promise.all;\n\nfunction promiseAllThis() {\n    return PromiseAll(this);\n}\n\nfunction PromiseMapSeries(promises, fn) {\n    return PromiseReduce(promises, fn, INTERNAL, INTERNAL);\n}\n\nPromise.prototype.each = function (fn) {\n    return PromiseReduce(this, fn, INTERNAL, 0)\n              ._then(promiseAllThis, undefined, undefined, this, undefined);\n};\n\nPromise.prototype.mapSeries = function (fn) {\n    return PromiseReduce(this, fn, INTERNAL, INTERNAL);\n};\n\nPromise.each = function (promises, fn) {\n    return PromiseReduce(promises, fn, INTERNAL, 0)\n              ._then(promiseAllThis, undefined, undefined, promises, undefined);\n};\n\nPromise.mapSeries = PromiseMapSeries;\n};\n\n\n},{}],12:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar Objectfreeze = es5.freeze;\nvar util = _dereq_(\"./util\");\nvar inherits = util.inherits;\nvar notEnumerableProp = util.notEnumerableProp;\n\nfunction subError(nameProperty, defaultMessage) {\n    function SubError(message) {\n        if (!(this instanceof SubError)) return new SubError(message);\n        notEnumerableProp(this, \"message\",\n            typeof message === \"string\" ? message : defaultMessage);\n        notEnumerableProp(this, \"name\", nameProperty);\n        if (Error.captureStackTrace) {\n            Error.captureStackTrace(this, this.constructor);\n        } else {\n            Error.call(this);\n        }\n    }\n    inherits(SubError, Error);\n    return SubError;\n}\n\nvar _TypeError, _RangeError;\nvar Warning = subError(\"Warning\", \"warning\");\nvar CancellationError = subError(\"CancellationError\", \"cancellation error\");\nvar TimeoutError = subError(\"TimeoutError\", \"timeout error\");\nvar AggregateError = subError(\"AggregateError\", \"aggregate error\");\ntry {\n    _TypeError = TypeError;\n    _RangeError = RangeError;\n} catch(e) {\n    _TypeError = subError(\"TypeError\", \"type error\");\n    _RangeError = subError(\"RangeError\", \"range error\");\n}\n\nvar methods = (\"join pop push shift unshift slice filter forEach some \" +\n    \"every map indexOf lastIndexOf reduce reduceRight sort reverse\").split(\" \");\n\nfor (var i = 0; i < methods.length; ++i) {\n    if (typeof Array.prototype[methods[i]] === \"function\") {\n        AggregateError.prototype[methods[i]] = Array.prototype[methods[i]];\n    }\n}\n\nes5.defineProperty(AggregateError.prototype, \"length\", {\n    value: 0,\n    configurable: false,\n    writable: true,\n    enumerable: true\n});\nAggregateError.prototype[\"isOperational\"] = true;\nvar level = 0;\nAggregateError.prototype.toString = function() {\n    var indent = Array(level * 4 + 1).join(\" \");\n    var ret = \"\\n\" + indent + \"AggregateError of:\" + \"\\n\";\n    level++;\n    indent = Array(level * 4 + 1).join(\" \");\n    for (var i = 0; i < this.length; ++i) {\n        var str = this[i] === this ? \"[Circular AggregateError]\" : this[i] + \"\";\n        var lines = str.split(\"\\n\");\n        for (var j = 0; j < lines.length; ++j) {\n            lines[j] = indent + lines[j];\n        }\n        str = lines.join(\"\\n\");\n        ret += str + \"\\n\";\n    }\n    level--;\n    return ret;\n};\n\nfunction OperationalError(message) {\n    if (!(this instanceof OperationalError))\n        return new OperationalError(message);\n    notEnumerableProp(this, \"name\", \"OperationalError\");\n    notEnumerableProp(this, \"message\", message);\n    this.cause = message;\n    this[\"isOperational\"] = true;\n\n    if (message instanceof Error) {\n        notEnumerableProp(this, \"message\", message.message);\n        notEnumerableProp(this, \"stack\", message.stack);\n    } else if (Error.captureStackTrace) {\n        Error.captureStackTrace(this, this.constructor);\n    }\n\n}\ninherits(OperationalError, Error);\n\nvar errorTypes = Error[\"__BluebirdErrorTypes__\"];\nif (!errorTypes) {\n    errorTypes = Objectfreeze({\n        CancellationError: CancellationError,\n        TimeoutError: TimeoutError,\n        OperationalError: OperationalError,\n        RejectionError: OperationalError,\n        AggregateError: AggregateError\n    });\n    es5.defineProperty(Error, \"__BluebirdErrorTypes__\", {\n        value: errorTypes,\n        writable: false,\n        enumerable: false,\n        configurable: false\n    });\n}\n\nmodule.exports = {\n    Error: Error,\n    TypeError: _TypeError,\n    RangeError: _RangeError,\n    CancellationError: errorTypes.CancellationError,\n    OperationalError: errorTypes.OperationalError,\n    TimeoutError: errorTypes.TimeoutError,\n    AggregateError: errorTypes.AggregateError,\n    Warning: Warning\n};\n\n},{\"./es5\":13,\"./util\":36}],13:[function(_dereq_,module,exports){\nvar isES5 = (function(){\n    \"use strict\";\n    return this === undefined;\n})();\n\nif (isES5) {\n    module.exports = {\n        freeze: Object.freeze,\n        defineProperty: Object.defineProperty,\n        getDescriptor: Object.getOwnPropertyDescriptor,\n        keys: Object.keys,\n        names: Object.getOwnPropertyNames,\n        getPrototypeOf: Object.getPrototypeOf,\n        isArray: Array.isArray,\n        isES5: isES5,\n        propertyIsWritable: function(obj, prop) {\n            var descriptor = Object.getOwnPropertyDescriptor(obj, prop);\n            return !!(!descriptor || descriptor.writable || descriptor.set);\n        }\n    };\n} else {\n    var has = {}.hasOwnProperty;\n    var str = {}.toString;\n    var proto = {}.constructor.prototype;\n\n    var ObjectKeys = function (o) {\n        var ret = [];\n        for (var key in o) {\n            if (has.call(o, key)) {\n                ret.push(key);\n            }\n        }\n        return ret;\n    };\n\n    var ObjectGetDescriptor = function(o, key) {\n        return {value: o[key]};\n    };\n\n    var ObjectDefineProperty = function (o, key, desc) {\n        o[key] = desc.value;\n        return o;\n    };\n\n    var ObjectFreeze = function (obj) {\n        return obj;\n    };\n\n    var ObjectGetPrototypeOf = function (obj) {\n        try {\n            return Object(obj).constructor.prototype;\n        }\n        catch (e) {\n            return proto;\n        }\n    };\n\n    var ArrayIsArray = function (obj) {\n        try {\n            return str.call(obj) === \"[object Array]\";\n        }\n        catch(e) {\n            return false;\n        }\n    };\n\n    module.exports = {\n        isArray: ArrayIsArray,\n        keys: ObjectKeys,\n        names: ObjectKeys,\n        defineProperty: ObjectDefineProperty,\n        getDescriptor: ObjectGetDescriptor,\n        freeze: ObjectFreeze,\n        getPrototypeOf: ObjectGetPrototypeOf,\n        isES5: isES5,\n        propertyIsWritable: function() {\n            return true;\n        }\n    };\n}\n\n},{}],14:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseMap = Promise.map;\n\nPromise.prototype.filter = function (fn, options) {\n    return PromiseMap(this, fn, options, INTERNAL);\n};\n\nPromise.filter = function (promises, fn, options) {\n    return PromiseMap(promises, fn, options, INTERNAL);\n};\n};\n\n},{}],15:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, tryConvertToPromise, NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar CancellationError = Promise.CancellationError;\nvar errorObj = util.errorObj;\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\n\nfunction PassThroughHandlerContext(promise, type, handler) {\n    this.promise = promise;\n    this.type = type;\n    this.handler = handler;\n    this.called = false;\n    this.cancelPromise = null;\n}\n\nPassThroughHandlerContext.prototype.isFinallyHandler = function() {\n    return this.type === 0;\n};\n\nfunction FinallyHandlerCancelReaction(finallyHandler) {\n    this.finallyHandler = finallyHandler;\n}\n\nFinallyHandlerCancelReaction.prototype._resultCancelled = function() {\n    checkCancel(this.finallyHandler);\n};\n\nfunction checkCancel(ctx, reason) {\n    if (ctx.cancelPromise != null) {\n        if (arguments.length > 1) {\n            ctx.cancelPromise._reject(reason);\n        } else {\n            ctx.cancelPromise._cancel();\n        }\n        ctx.cancelPromise = null;\n        return true;\n    }\n    return false;\n}\n\nfunction succeed() {\n    return finallyHandler.call(this, this.promise._target()._settledValue());\n}\nfunction fail(reason) {\n    if (checkCancel(this, reason)) return;\n    errorObj.e = reason;\n    return errorObj;\n}\nfunction finallyHandler(reasonOrValue) {\n    var promise = this.promise;\n    var handler = this.handler;\n\n    if (!this.called) {\n        this.called = true;\n        var ret = this.isFinallyHandler()\n            ? handler.call(promise._boundValue())\n            : handler.call(promise._boundValue(), reasonOrValue);\n        if (ret === NEXT_FILTER) {\n            return ret;\n        } else if (ret !== undefined) {\n            promise._setReturnedNonUndefined();\n            var maybePromise = tryConvertToPromise(ret, promise);\n            if (maybePromise instanceof Promise) {\n                if (this.cancelPromise != null) {\n                    if (maybePromise._isCancelled()) {\n                        var reason =\n                            new CancellationError(\"late cancellation observer\");\n                        promise._attachExtraTrace(reason);\n                        errorObj.e = reason;\n                        return errorObj;\n                    } else if (maybePromise.isPending()) {\n                        maybePromise._attachCancellationCallback(\n                            new FinallyHandlerCancelReaction(this));\n                    }\n                }\n                return maybePromise._then(\n                    succeed, fail, undefined, this, undefined);\n            }\n        }\n    }\n\n    if (promise.isRejected()) {\n        checkCancel(this);\n        errorObj.e = reasonOrValue;\n        return errorObj;\n    } else {\n        checkCancel(this);\n        return reasonOrValue;\n    }\n}\n\nPromise.prototype._passThrough = function(handler, type, success, fail) {\n    if (typeof handler !== \"function\") return this.then();\n    return this._then(success,\n                      fail,\n                      undefined,\n                      new PassThroughHandlerContext(this, type, handler),\n                      undefined);\n};\n\nPromise.prototype.lastly =\nPromise.prototype[\"finally\"] = function (handler) {\n    return this._passThrough(handler,\n                             0,\n                             finallyHandler,\n                             finallyHandler);\n};\n\n\nPromise.prototype.tap = function (handler) {\n    return this._passThrough(handler, 1, finallyHandler);\n};\n\nPromise.prototype.tapCatch = function (handlerOrPredicate) {\n    var len = arguments.length;\n    if(len === 1) {\n        return this._passThrough(handlerOrPredicate,\n                                 1,\n                                 undefined,\n                                 finallyHandler);\n    } else {\n         var catchInstances = new Array(len - 1),\n            j = 0, i;\n        for (i = 0; i < len - 1; ++i) {\n            var item = arguments[i];\n            if (util.isObject(item)) {\n                catchInstances[j++] = item;\n            } else {\n                return Promise.reject(new TypeError(\n                    \"tapCatch statement predicate: \"\n                    + \"expecting an object but got \" + util.classString(item)\n                ));\n            }\n        }\n        catchInstances.length = j;\n        var handler = arguments[i];\n        return this._passThrough(catchFilter(catchInstances, handler, this),\n                                 1,\n                                 undefined,\n                                 finallyHandler);\n    }\n\n};\n\nreturn PassThroughHandlerContext;\n};\n\n},{\"./catch_filter\":7,\"./util\":36}],16:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n                          apiRejection,\n                          INTERNAL,\n                          tryConvertToPromise,\n                          Proxyable,\n                          debug) {\nvar errors = _dereq_(\"./errors\");\nvar TypeError = errors.TypeError;\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nvar yieldHandlers = [];\n\nfunction promiseFromYieldHandler(value, yieldHandlers, traceParent) {\n    for (var i = 0; i < yieldHandlers.length; ++i) {\n        traceParent._pushContext();\n        var result = tryCatch(yieldHandlers[i])(value);\n        traceParent._popContext();\n        if (result === errorObj) {\n            traceParent._pushContext();\n            var ret = Promise.reject(errorObj.e);\n            traceParent._popContext();\n            return ret;\n        }\n        var maybePromise = tryConvertToPromise(result, traceParent);\n        if (maybePromise instanceof Promise) return maybePromise;\n    }\n    return null;\n}\n\nfunction PromiseSpawn(generatorFunction, receiver, yieldHandler, stack) {\n    if (debug.cancellation()) {\n        var internal = new Promise(INTERNAL);\n        var _finallyPromise = this._finallyPromise = new Promise(INTERNAL);\n        this._promise = internal.lastly(function() {\n            return _finallyPromise;\n        });\n        internal._captureStackTrace();\n        internal._setOnCancel(this);\n    } else {\n        var promise = this._promise = new Promise(INTERNAL);\n        promise._captureStackTrace();\n    }\n    this._stack = stack;\n    this._generatorFunction = generatorFunction;\n    this._receiver = receiver;\n    this._generator = undefined;\n    this._yieldHandlers = typeof yieldHandler === \"function\"\n        ? [yieldHandler].concat(yieldHandlers)\n        : yieldHandlers;\n    this._yieldedPromise = null;\n    this._cancellationPhase = false;\n}\nutil.inherits(PromiseSpawn, Proxyable);\n\nPromiseSpawn.prototype._isResolved = function() {\n    return this._promise === null;\n};\n\nPromiseSpawn.prototype._cleanup = function() {\n    this._promise = this._generator = null;\n    if (debug.cancellation() && this._finallyPromise !== null) {\n        this._finallyPromise._fulfill();\n        this._finallyPromise = null;\n    }\n};\n\nPromiseSpawn.prototype._promiseCancelled = function() {\n    if (this._isResolved()) return;\n    var implementsReturn = typeof this._generator[\"return\"] !== \"undefined\";\n\n    var result;\n    if (!implementsReturn) {\n        var reason = new Promise.CancellationError(\n            \"generator .return() sentinel\");\n        Promise.coroutine.returnSentinel = reason;\n        this._promise._attachExtraTrace(reason);\n        this._promise._pushContext();\n        result = tryCatch(this._generator[\"throw\"]).call(this._generator,\n                                                         reason);\n        this._promise._popContext();\n    } else {\n        this._promise._pushContext();\n        result = tryCatch(this._generator[\"return\"]).call(this._generator,\n                                                          undefined);\n        this._promise._popContext();\n    }\n    this._cancellationPhase = true;\n    this._yieldedPromise = null;\n    this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseFulfilled = function(value) {\n    this._yieldedPromise = null;\n    this._promise._pushContext();\n    var result = tryCatch(this._generator.next).call(this._generator, value);\n    this._promise._popContext();\n    this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseRejected = function(reason) {\n    this._yieldedPromise = null;\n    this._promise._attachExtraTrace(reason);\n    this._promise._pushContext();\n    var result = tryCatch(this._generator[\"throw\"])\n        .call(this._generator, reason);\n    this._promise._popContext();\n    this._continue(result);\n};\n\nPromiseSpawn.prototype._resultCancelled = function() {\n    if (this._yieldedPromise instanceof Promise) {\n        var promise = this._yieldedPromise;\n        this._yieldedPromise = null;\n        promise.cancel();\n    }\n};\n\nPromiseSpawn.prototype.promise = function () {\n    return this._promise;\n};\n\nPromiseSpawn.prototype._run = function () {\n    this._generator = this._generatorFunction.call(this._receiver);\n    this._receiver =\n        this._generatorFunction = undefined;\n    this._promiseFulfilled(undefined);\n};\n\nPromiseSpawn.prototype._continue = function (result) {\n    var promise = this._promise;\n    if (result === errorObj) {\n        this._cleanup();\n        if (this._cancellationPhase) {\n            return promise.cancel();\n        } else {\n            return promise._rejectCallback(result.e, false);\n        }\n    }\n\n    var value = result.value;\n    if (result.done === true) {\n        this._cleanup();\n        if (this._cancellationPhase) {\n            return promise.cancel();\n        } else {\n            return promise._resolveCallback(value);\n        }\n    } else {\n        var maybePromise = tryConvertToPromise(value, this._promise);\n        if (!(maybePromise instanceof Promise)) {\n            maybePromise =\n                promiseFromYieldHandler(maybePromise,\n                                        this._yieldHandlers,\n                                        this._promise);\n            if (maybePromise === null) {\n                this._promiseRejected(\n                    new TypeError(\n                        \"A value %s was yielded that could not be treated as a promise\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\\u000a\".replace(\"%s\", String(value)) +\n                        \"From coroutine:\\u000a\" +\n                        this._stack.split(\"\\n\").slice(1, -7).join(\"\\n\")\n                    )\n                );\n                return;\n            }\n        }\n        maybePromise = maybePromise._target();\n        var bitField = maybePromise._bitField;\n        ;\n        if (((bitField & 50397184) === 0)) {\n            this._yieldedPromise = maybePromise;\n            maybePromise._proxy(this, null);\n        } else if (((bitField & 33554432) !== 0)) {\n            Promise._async.invoke(\n                this._promiseFulfilled, this, maybePromise._value()\n            );\n        } else if (((bitField & 16777216) !== 0)) {\n            Promise._async.invoke(\n                this._promiseRejected, this, maybePromise._reason()\n            );\n        } else {\n            this._promiseCancelled();\n        }\n    }\n};\n\nPromise.coroutine = function (generatorFunction, options) {\n    if (typeof generatorFunction !== \"function\") {\n        throw new TypeError(\"generatorFunction must be a function\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n    }\n    var yieldHandler = Object(options).yieldHandler;\n    var PromiseSpawn$ = PromiseSpawn;\n    var stack = new Error().stack;\n    return function () {\n        var generator = generatorFunction.apply(this, arguments);\n        var spawn = new PromiseSpawn$(undefined, undefined, yieldHandler,\n                                      stack);\n        var ret = spawn.promise();\n        spawn._generator = generator;\n        spawn._promiseFulfilled(undefined);\n        return ret;\n    };\n};\n\nPromise.coroutine.addYieldHandler = function(fn) {\n    if (typeof fn !== \"function\") {\n        throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n    }\n    yieldHandlers.push(fn);\n};\n\nPromise.spawn = function (generatorFunction) {\n    debug.deprecated(\"Promise.spawn()\", \"Promise.coroutine()\");\n    if (typeof generatorFunction !== \"function\") {\n        return apiRejection(\"generatorFunction must be a function\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n    }\n    var spawn = new PromiseSpawn(generatorFunction, this);\n    var ret = spawn.promise();\n    spawn._run(Promise.spawn);\n    return ret;\n};\n};\n\n},{\"./errors\":12,\"./util\":36}],17:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, tryConvertToPromise, INTERNAL, async) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar reject;\n\nif (!true) {\nif (canEvaluate) {\n    var thenCallback = function(i) {\n        return new Function(\"value\", \"holder\", \"                             \\n\\\n            'use strict';                                                    \\n\\\n            holder.pIndex = value;                                           \\n\\\n            holder.checkFulfillment(this);                                   \\n\\\n            \".replace(/Index/g, i));\n    };\n\n    var promiseSetter = function(i) {\n        return new Function(\"promise\", \"holder\", \"                           \\n\\\n            'use strict';                                                    \\n\\\n            holder.pIndex = promise;                                         \\n\\\n            \".replace(/Index/g, i));\n    };\n\n    var generateHolderClass = function(total) {\n        var props = new Array(total);\n        for (var i = 0; i < props.length; ++i) {\n            props[i] = \"this.p\" + (i+1);\n        }\n        var assignment = props.join(\" = \") + \" = null;\";\n        var cancellationCode= \"var promise;\\n\" + props.map(function(prop) {\n            return \"                                                         \\n\\\n                promise = \" + prop + \";                                      \\n\\\n                if (promise instanceof Promise) {                            \\n\\\n                    promise.cancel();                                        \\n\\\n                }                                                            \\n\\\n            \";\n        }).join(\"\\n\");\n        var passedArguments = props.join(\", \");\n        var name = \"Holder$\" + total;\n\n\n        var code = \"return function(tryCatch, errorObj, Promise, async) {    \\n\\\n            'use strict';                                                    \\n\\\n            function [TheName](fn) {                                         \\n\\\n                [TheProperties]                                              \\n\\\n                this.fn = fn;                                                \\n\\\n                this.asyncNeeded = true;                                     \\n\\\n                this.now = 0;                                                \\n\\\n            }                                                                \\n\\\n                                                                             \\n\\\n            [TheName].prototype._callFunction = function(promise) {          \\n\\\n                promise._pushContext();                                      \\n\\\n                var ret = tryCatch(this.fn)([ThePassedArguments]);           \\n\\\n                promise._popContext();                                       \\n\\\n                if (ret === errorObj) {                                      \\n\\\n                    promise._rejectCallback(ret.e, false);                   \\n\\\n                } else {                                                     \\n\\\n                    promise._resolveCallback(ret);                           \\n\\\n                }                                                            \\n\\\n            };                                                               \\n\\\n                                                                             \\n\\\n            [TheName].prototype.checkFulfillment = function(promise) {       \\n\\\n                var now = ++this.now;                                        \\n\\\n                if (now === [TheTotal]) {                                    \\n\\\n                    if (this.asyncNeeded) {                                  \\n\\\n                        async.invoke(this._callFunction, this, promise);     \\n\\\n                    } else {                                                 \\n\\\n                        this._callFunction(promise);                         \\n\\\n                    }                                                        \\n\\\n                                                                             \\n\\\n                }                                                            \\n\\\n            };                                                               \\n\\\n                                                                             \\n\\\n            [TheName].prototype._resultCancelled = function() {              \\n\\\n                [CancellationCode]                                           \\n\\\n            };                                                               \\n\\\n                                                                             \\n\\\n            return [TheName];                                                \\n\\\n        }(tryCatch, errorObj, Promise, async);                               \\n\\\n        \";\n\n        code = code.replace(/\\[TheName\\]/g, name)\n            .replace(/\\[TheTotal\\]/g, total)\n            .replace(/\\[ThePassedArguments\\]/g, passedArguments)\n            .replace(/\\[TheProperties\\]/g, assignment)\n            .replace(/\\[CancellationCode\\]/g, cancellationCode);\n\n        return new Function(\"tryCatch\", \"errorObj\", \"Promise\", \"async\", code)\n                           (tryCatch, errorObj, Promise, async);\n    };\n\n    var holderClasses = [];\n    var thenCallbacks = [];\n    var promiseSetters = [];\n\n    for (var i = 0; i < 8; ++i) {\n        holderClasses.push(generateHolderClass(i + 1));\n        thenCallbacks.push(thenCallback(i + 1));\n        promiseSetters.push(promiseSetter(i + 1));\n    }\n\n    reject = function (reason) {\n        this._reject(reason);\n    };\n}}\n\nPromise.join = function () {\n    var last = arguments.length - 1;\n    var fn;\n    if (last > 0 && typeof arguments[last] === \"function\") {\n        fn = arguments[last];\n        if (!true) {\n            if (last <= 8 && canEvaluate) {\n                var ret = new Promise(INTERNAL);\n                ret._captureStackTrace();\n                var HolderClass = holderClasses[last - 1];\n                var holder = new HolderClass(fn);\n                var callbacks = thenCallbacks;\n\n                for (var i = 0; i < last; ++i) {\n                    var maybePromise = tryConvertToPromise(arguments[i], ret);\n                    if (maybePromise instanceof Promise) {\n                        maybePromise = maybePromise._target();\n                        var bitField = maybePromise._bitField;\n                        ;\n                        if (((bitField & 50397184) === 0)) {\n                            maybePromise._then(callbacks[i], reject,\n                                               undefined, ret, holder);\n                            promiseSetters[i](maybePromise, holder);\n                            holder.asyncNeeded = false;\n                        } else if (((bitField & 33554432) !== 0)) {\n                            callbacks[i].call(ret,\n                                              maybePromise._value(), holder);\n                        } else if (((bitField & 16777216) !== 0)) {\n                            ret._reject(maybePromise._reason());\n                        } else {\n                            ret._cancel();\n                        }\n                    } else {\n                        callbacks[i].call(ret, maybePromise, holder);\n                    }\n                }\n\n                if (!ret._isFateSealed()) {\n                    if (holder.asyncNeeded) {\n                        var context = Promise._getContext();\n                        holder.fn = util.contextBind(context, holder.fn);\n                    }\n                    ret._setAsyncGuaranteed();\n                    ret._setOnCancel(holder);\n                }\n                return ret;\n            }\n        }\n    }\n    var args = [].slice.call(arguments);;\n    if (fn) args.pop();\n    var ret = new PromiseArray(args).promise();\n    return fn !== undefined ? ret.spread(fn) : ret;\n};\n\n};\n\n},{\"./util\":36}],18:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n                          PromiseArray,\n                          apiRejection,\n                          tryConvertToPromise,\n                          INTERNAL,\n                          debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nfunction MappingPromiseArray(promises, fn, limit, _filter) {\n    this.constructor$(promises);\n    this._promise._captureStackTrace();\n    var context = Promise._getContext();\n    this._callback = util.contextBind(context, fn);\n    this._preservedValues = _filter === INTERNAL\n        ? new Array(this.length())\n        : null;\n    this._limit = limit;\n    this._inFlight = 0;\n    this._queue = [];\n    async.invoke(this._asyncInit, this, undefined);\n    if (util.isArray(promises)) {\n        for (var i = 0; i < promises.length; ++i) {\n            var maybePromise = promises[i];\n            if (maybePromise instanceof Promise) {\n                maybePromise.suppressUnhandledRejections();\n            }\n        }\n    }\n}\nutil.inherits(MappingPromiseArray, PromiseArray);\n\nMappingPromiseArray.prototype._asyncInit = function() {\n    this._init$(undefined, -2);\n};\n\nMappingPromiseArray.prototype._init = function () {};\n\nMappingPromiseArray.prototype._promiseFulfilled = function (value, index) {\n    var values = this._values;\n    var length = this.length();\n    var preservedValues = this._preservedValues;\n    var limit = this._limit;\n\n    if (index < 0) {\n        index = (index * -1) - 1;\n        values[index] = value;\n        if (limit >= 1) {\n            this._inFlight--;\n            this._drainQueue();\n            if (this._isResolved()) return true;\n        }\n    } else {\n        if (limit >= 1 && this._inFlight >= limit) {\n            values[index] = value;\n            this._queue.push(index);\n            return false;\n        }\n        if (preservedValues !== null) preservedValues[index] = value;\n\n        var promise = this._promise;\n        var callback = this._callback;\n        var receiver = promise._boundValue();\n        promise._pushContext();\n        var ret = tryCatch(callback).call(receiver, value, index, length);\n        var promiseCreated = promise._popContext();\n        debug.checkForgottenReturns(\n            ret,\n            promiseCreated,\n            preservedValues !== null ? \"Promise.filter\" : \"Promise.map\",\n            promise\n        );\n        if (ret === errorObj) {\n            this._reject(ret.e);\n            return true;\n        }\n\n        var maybePromise = tryConvertToPromise(ret, this._promise);\n        if (maybePromise instanceof Promise) {\n            maybePromise = maybePromise._target();\n            var bitField = maybePromise._bitField;\n            ;\n            if (((bitField & 50397184) === 0)) {\n                if (limit >= 1) this._inFlight++;\n                values[index] = maybePromise;\n                maybePromise._proxy(this, (index + 1) * -1);\n                return false;\n            } else if (((bitField & 33554432) !== 0)) {\n                ret = maybePromise._value();\n            } else if (((bitField & 16777216) !== 0)) {\n                this._reject(maybePromise._reason());\n                return true;\n            } else {\n                this._cancel();\n                return true;\n            }\n        }\n        values[index] = ret;\n    }\n    var totalResolved = ++this._totalResolved;\n    if (totalResolved >= length) {\n        if (preservedValues !== null) {\n            this._filter(values, preservedValues);\n        } else {\n            this._resolve(values);\n        }\n        return true;\n    }\n    return false;\n};\n\nMappingPromiseArray.prototype._drainQueue = function () {\n    var queue = this._queue;\n    var limit = this._limit;\n    var values = this._values;\n    while (queue.length > 0 && this._inFlight < limit) {\n        if (this._isResolved()) return;\n        var index = queue.pop();\n        this._promiseFulfilled(values[index], index);\n    }\n};\n\nMappingPromiseArray.prototype._filter = function (booleans, values) {\n    var len = values.length;\n    var ret = new Array(len);\n    var j = 0;\n    for (var i = 0; i < len; ++i) {\n        if (booleans[i]) ret[j++] = values[i];\n    }\n    ret.length = j;\n    this._resolve(ret);\n};\n\nMappingPromiseArray.prototype.preservedValues = function () {\n    return this._preservedValues;\n};\n\nfunction map(promises, fn, options, _filter) {\n    if (typeof fn !== \"function\") {\n        return apiRejection(\"expecting a function but got \" + util.classString(fn));\n    }\n\n    var limit = 0;\n    if (options !== undefined) {\n        if (typeof options === \"object\" && options !== null) {\n            if (typeof options.concurrency !== \"number\") {\n                return Promise.reject(\n                    new TypeError(\"'concurrency' must be a number but it is \" +\n                                    util.classString(options.concurrency)));\n            }\n            limit = options.concurrency;\n        } else {\n            return Promise.reject(new TypeError(\n                            \"options argument must be an object but it is \" +\n                             util.classString(options)));\n        }\n    }\n    limit = typeof limit === \"number\" &&\n        isFinite(limit) && limit >= 1 ? limit : 0;\n    return new MappingPromiseArray(promises, fn, limit, _filter).promise();\n}\n\nPromise.prototype.map = function (fn, options) {\n    return map(this, fn, options, null);\n};\n\nPromise.map = function (promises, fn, options, _filter) {\n    return map(promises, fn, options, _filter);\n};\n\n\n};\n\n},{\"./util\":36}],19:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nPromise.method = function (fn) {\n    if (typeof fn !== \"function\") {\n        throw new Promise.TypeError(\"expecting a function but got \" + util.classString(fn));\n    }\n    return function () {\n        var ret = new Promise(INTERNAL);\n        ret._captureStackTrace();\n        ret._pushContext();\n        var value = tryCatch(fn).apply(this, arguments);\n        var promiseCreated = ret._popContext();\n        debug.checkForgottenReturns(\n            value, promiseCreated, \"Promise.method\", ret);\n        ret._resolveFromSyncValue(value);\n        return ret;\n    };\n};\n\nPromise.attempt = Promise[\"try\"] = function (fn) {\n    if (typeof fn !== \"function\") {\n        return apiRejection(\"expecting a function but got \" + util.classString(fn));\n    }\n    var ret = new Promise(INTERNAL);\n    ret._captureStackTrace();\n    ret._pushContext();\n    var value;\n    if (arguments.length > 1) {\n        debug.deprecated(\"calling Promise.try with more than 1 argument\");\n        var arg = arguments[1];\n        var ctx = arguments[2];\n        value = util.isArray(arg) ? tryCatch(fn).apply(ctx, arg)\n                                  : tryCatch(fn).call(ctx, arg);\n    } else {\n        value = tryCatch(fn)();\n    }\n    var promiseCreated = ret._popContext();\n    debug.checkForgottenReturns(\n        value, promiseCreated, \"Promise.try\", ret);\n    ret._resolveFromSyncValue(value);\n    return ret;\n};\n\nPromise.prototype._resolveFromSyncValue = function (value) {\n    if (value === util.errorObj) {\n        this._rejectCallback(value.e, false);\n    } else {\n        this._resolveCallback(value, true);\n    }\n};\n};\n\n},{\"./util\":36}],20:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar errors = _dereq_(\"./errors\");\nvar OperationalError = errors.OperationalError;\nvar es5 = _dereq_(\"./es5\");\n\nfunction isUntypedError(obj) {\n    return obj instanceof Error &&\n        es5.getPrototypeOf(obj) === Error.prototype;\n}\n\nvar rErrorKey = /^(?:name|message|stack|cause)$/;\nfunction wrapAsOperationalError(obj) {\n    var ret;\n    if (isUntypedError(obj)) {\n        ret = new OperationalError(obj);\n        ret.name = obj.name;\n        ret.message = obj.message;\n        ret.stack = obj.stack;\n        var keys = es5.keys(obj);\n        for (var i = 0; i < keys.length; ++i) {\n            var key = keys[i];\n            if (!rErrorKey.test(key)) {\n                ret[key] = obj[key];\n            }\n        }\n        return ret;\n    }\n    util.markAsOriginatingFromRejection(obj);\n    return obj;\n}\n\nfunction nodebackForPromise(promise, multiArgs) {\n    return function(err, value) {\n        if (promise === null) return;\n        if (err) {\n            var wrapped = wrapAsOperationalError(maybeWrapAsError(err));\n            promise._attachExtraTrace(wrapped);\n            promise._reject(wrapped);\n        } else if (!multiArgs) {\n            promise._fulfill(value);\n        } else {\n            var args = [].slice.call(arguments, 1);;\n            promise._fulfill(args);\n        }\n        promise = null;\n    };\n}\n\nmodule.exports = nodebackForPromise;\n\n},{\"./errors\":12,\"./es5\":13,\"./util\":36}],21:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar async = Promise._async;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction spreadAdapter(val, nodeback) {\n    var promise = this;\n    if (!util.isArray(val)) return successAdapter.call(promise, val, nodeback);\n    var ret =\n        tryCatch(nodeback).apply(promise._boundValue(), [null].concat(val));\n    if (ret === errorObj) {\n        async.throwLater(ret.e);\n    }\n}\n\nfunction successAdapter(val, nodeback) {\n    var promise = this;\n    var receiver = promise._boundValue();\n    var ret = val === undefined\n        ? tryCatch(nodeback).call(receiver, null)\n        : tryCatch(nodeback).call(receiver, null, val);\n    if (ret === errorObj) {\n        async.throwLater(ret.e);\n    }\n}\nfunction errorAdapter(reason, nodeback) {\n    var promise = this;\n    if (!reason) {\n        var newReason = new Error(reason + \"\");\n        newReason.cause = reason;\n        reason = newReason;\n    }\n    var ret = tryCatch(nodeback).call(promise._boundValue(), reason);\n    if (ret === errorObj) {\n        async.throwLater(ret.e);\n    }\n}\n\nPromise.prototype.asCallback = Promise.prototype.nodeify = function (nodeback,\n                                                                     options) {\n    if (typeof nodeback == \"function\") {\n        var adapter = successAdapter;\n        if (options !== undefined && Object(options).spread) {\n            adapter = spreadAdapter;\n        }\n        this._then(\n            adapter,\n            errorAdapter,\n            undefined,\n            this,\n            nodeback\n        );\n    }\n    return this;\n};\n};\n\n},{\"./util\":36}],22:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function() {\nvar makeSelfResolutionError = function () {\n    return new TypeError(\"circular promise resolution chain\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n};\nvar reflectHandler = function() {\n    return new Promise.PromiseInspection(this._target());\n};\nvar apiRejection = function(msg) {\n    return Promise.reject(new TypeError(msg));\n};\nfunction Proxyable() {}\nvar UNDEFINED_BINDING = {};\nvar util = _dereq_(\"./util\");\nutil.setReflectHandler(reflectHandler);\n\nvar getDomain = function() {\n    var domain = process.domain;\n    if (domain === undefined) {\n        return null;\n    }\n    return domain;\n};\nvar getContextDefault = function() {\n    return null;\n};\nvar getContextDomain = function() {\n    return {\n        domain: getDomain(),\n        async: null\n    };\n};\nvar AsyncResource = util.isNode && util.nodeSupportsAsyncResource ?\n    _dereq_(\"async_hooks\").AsyncResource : null;\nvar getContextAsyncHooks = function() {\n    return {\n        domain: getDomain(),\n        async: new AsyncResource(\"Bluebird::Promise\")\n    };\n};\nvar getContext = util.isNode ? getContextDomain : getContextDefault;\nutil.notEnumerableProp(Promise, \"_getContext\", getContext);\nvar enableAsyncHooks = function() {\n    getContext = getContextAsyncHooks;\n    util.notEnumerableProp(Promise, \"_getContext\", getContextAsyncHooks);\n};\nvar disableAsyncHooks = function() {\n    getContext = getContextDomain;\n    util.notEnumerableProp(Promise, \"_getContext\", getContextDomain);\n};\n\nvar es5 = _dereq_(\"./es5\");\nvar Async = _dereq_(\"./async\");\nvar async = new Async();\nes5.defineProperty(Promise, \"_async\", {value: async});\nvar errors = _dereq_(\"./errors\");\nvar TypeError = Promise.TypeError = errors.TypeError;\nPromise.RangeError = errors.RangeError;\nvar CancellationError = Promise.CancellationError = errors.CancellationError;\nPromise.TimeoutError = errors.TimeoutError;\nPromise.OperationalError = errors.OperationalError;\nPromise.RejectionError = errors.OperationalError;\nPromise.AggregateError = errors.AggregateError;\nvar INTERNAL = function(){};\nvar APPLY = {};\nvar NEXT_FILTER = {};\nvar tryConvertToPromise = _dereq_(\"./thenables\")(Promise, INTERNAL);\nvar PromiseArray =\n    _dereq_(\"./promise_array\")(Promise, INTERNAL,\n                               tryConvertToPromise, apiRejection, Proxyable);\nvar Context = _dereq_(\"./context\")(Promise);\n /*jshint unused:false*/\nvar createContext = Context.create;\n\nvar debug = _dereq_(\"./debuggability\")(Promise, Context,\n    enableAsyncHooks, disableAsyncHooks);\nvar CapturedTrace = debug.CapturedTrace;\nvar PassThroughHandlerContext =\n    _dereq_(\"./finally\")(Promise, tryConvertToPromise, NEXT_FILTER);\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nfunction check(self, executor) {\n    if (self == null || self.constructor !== Promise) {\n        throw new TypeError(\"the promise constructor cannot be invoked directly\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n    }\n    if (typeof executor !== \"function\") {\n        throw new TypeError(\"expecting a function but got \" + util.classString(executor));\n    }\n\n}\n\nfunction Promise(executor) {\n    if (executor !== INTERNAL) {\n        check(this, executor);\n    }\n    this._bitField = 0;\n    this._fulfillmentHandler0 = undefined;\n    this._rejectionHandler0 = undefined;\n    this._promise0 = undefined;\n    this._receiver0 = undefined;\n    this._resolveFromExecutor(executor);\n    this._promiseCreated();\n    this._fireEvent(\"promiseCreated\", this);\n}\n\nPromise.prototype.toString = function () {\n    return \"[object Promise]\";\n};\n\nPromise.prototype.caught = Promise.prototype[\"catch\"] = function (fn) {\n    var len = arguments.length;\n    if (len > 1) {\n        var catchInstances = new Array(len - 1),\n            j = 0, i;\n        for (i = 0; i < len - 1; ++i) {\n            var item = arguments[i];\n            if (util.isObject(item)) {\n                catchInstances[j++] = item;\n            } else {\n                return apiRejection(\"Catch statement predicate: \" +\n                    \"expecting an object but got \" + util.classString(item));\n            }\n        }\n        catchInstances.length = j;\n        fn = arguments[i];\n\n        if (typeof fn !== \"function\") {\n            throw new TypeError(\"The last argument to .catch() \" +\n                \"must be a function, got \" + util.toString(fn));\n        }\n        return this.then(undefined, catchFilter(catchInstances, fn, this));\n    }\n    return this.then(undefined, fn);\n};\n\nPromise.prototype.reflect = function () {\n    return this._then(reflectHandler,\n        reflectHandler, undefined, this, undefined);\n};\n\nPromise.prototype.then = function (didFulfill, didReject) {\n    if (debug.warnings() && arguments.length > 0 &&\n        typeof didFulfill !== \"function\" &&\n        typeof didReject !== \"function\") {\n        var msg = \".then() only accepts functions but was passed: \" +\n                util.classString(didFulfill);\n        if (arguments.length > 1) {\n            msg += \", \" + util.classString(didReject);\n        }\n        this._warn(msg);\n    }\n    return this._then(didFulfill, didReject, undefined, undefined, undefined);\n};\n\nPromise.prototype.done = function (didFulfill, didReject) {\n    var promise =\n        this._then(didFulfill, didReject, undefined, undefined, undefined);\n    promise._setIsFinal();\n};\n\nPromise.prototype.spread = function (fn) {\n    if (typeof fn !== \"function\") {\n        return apiRejection(\"expecting a function but got \" + util.classString(fn));\n    }\n    return this.all()._then(fn, undefined, undefined, APPLY, undefined);\n};\n\nPromise.prototype.toJSON = function () {\n    var ret = {\n        isFulfilled: false,\n        isRejected: false,\n        fulfillmentValue: undefined,\n        rejectionReason: undefined\n    };\n    if (this.isFulfilled()) {\n        ret.fulfillmentValue = this.value();\n        ret.isFulfilled = true;\n    } else if (this.isRejected()) {\n        ret.rejectionReason = this.reason();\n        ret.isRejected = true;\n    }\n    return ret;\n};\n\nPromise.prototype.all = function () {\n    if (arguments.length > 0) {\n        this._warn(\".all() was passed arguments but it does not take any\");\n    }\n    return new PromiseArray(this).promise();\n};\n\nPromise.prototype.error = function (fn) {\n    return this.caught(util.originatesFromRejection, fn);\n};\n\nPromise.getNewLibraryCopy = module.exports;\n\nPromise.is = function (val) {\n    return val instanceof Promise;\n};\n\nPromise.fromNode = Promise.fromCallback = function(fn) {\n    var ret = new Promise(INTERNAL);\n    ret._captureStackTrace();\n    var multiArgs = arguments.length > 1 ? !!Object(arguments[1]).multiArgs\n                                         : false;\n    var result = tryCatch(fn)(nodebackForPromise(ret, multiArgs));\n    if (result === errorObj) {\n        ret._rejectCallback(result.e, true);\n    }\n    if (!ret._isFateSealed()) ret._setAsyncGuaranteed();\n    return ret;\n};\n\nPromise.all = function (promises) {\n    return new PromiseArray(promises).promise();\n};\n\nPromise.cast = function (obj) {\n    var ret = tryConvertToPromise(obj);\n    if (!(ret instanceof Promise)) {\n        ret = new Promise(INTERNAL);\n        ret._captureStackTrace();\n        ret._setFulfilled();\n        ret._rejectionHandler0 = obj;\n    }\n    return ret;\n};\n\nPromise.resolve = Promise.fulfilled = Promise.cast;\n\nPromise.reject = Promise.rejected = function (reason) {\n    var ret = new Promise(INTERNAL);\n    ret._captureStackTrace();\n    ret._rejectCallback(reason, true);\n    return ret;\n};\n\nPromise.setScheduler = function(fn) {\n    if (typeof fn !== \"function\") {\n        throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n    }\n    return async.setScheduler(fn);\n};\n\nPromise.prototype._then = function (\n    didFulfill,\n    didReject,\n    _,    receiver,\n    internalData\n) {\n    var haveInternalData = internalData !== undefined;\n    var promise = haveInternalData ? internalData : new Promise(INTERNAL);\n    var target = this._target();\n    var bitField = target._bitField;\n\n    if (!haveInternalData) {\n        promise._propagateFrom(this, 3);\n        promise._captureStackTrace();\n        if (receiver === undefined &&\n            ((this._bitField & 2097152) !== 0)) {\n            if (!((bitField & 50397184) === 0)) {\n                receiver = this._boundValue();\n            } else {\n                receiver = target === this ? undefined : this._boundTo;\n            }\n        }\n        this._fireEvent(\"promiseChained\", this, promise);\n    }\n\n    var context = getContext();\n    if (!((bitField & 50397184) === 0)) {\n        var handler, value, settler = target._settlePromiseCtx;\n        if (((bitField & 33554432) !== 0)) {\n            value = target._rejectionHandler0;\n            handler = didFulfill;\n        } else if (((bitField & 16777216) !== 0)) {\n            value = target._fulfillmentHandler0;\n            handler = didReject;\n            target._unsetRejectionIsUnhandled();\n        } else {\n            settler = target._settlePromiseLateCancellationObserver;\n            value = new CancellationError(\"late cancellation observer\");\n            target._attachExtraTrace(value);\n            handler = didReject;\n        }\n\n        async.invoke(settler, target, {\n            handler: util.contextBind(context, handler),\n            promise: promise,\n            receiver: receiver,\n            value: value\n        });\n    } else {\n        target._addCallbacks(didFulfill, didReject, promise,\n                receiver, context);\n    }\n\n    return promise;\n};\n\nPromise.prototype._length = function () {\n    return this._bitField & 65535;\n};\n\nPromise.prototype._isFateSealed = function () {\n    return (this._bitField & 117506048) !== 0;\n};\n\nPromise.prototype._isFollowing = function () {\n    return (this._bitField & 67108864) === 67108864;\n};\n\nPromise.prototype._setLength = function (len) {\n    this._bitField = (this._bitField & -65536) |\n        (len & 65535);\n};\n\nPromise.prototype._setFulfilled = function () {\n    this._bitField = this._bitField | 33554432;\n    this._fireEvent(\"promiseFulfilled\", this);\n};\n\nPromise.prototype._setRejected = function () {\n    this._bitField = this._bitField | 16777216;\n    this._fireEvent(\"promiseRejected\", this);\n};\n\nPromise.prototype._setFollowing = function () {\n    this._bitField = this._bitField | 67108864;\n    this._fireEvent(\"promiseResolved\", this);\n};\n\nPromise.prototype._setIsFinal = function () {\n    this._bitField = this._bitField | 4194304;\n};\n\nPromise.prototype._isFinal = function () {\n    return (this._bitField & 4194304) > 0;\n};\n\nPromise.prototype._unsetCancelled = function() {\n    this._bitField = this._bitField & (~65536);\n};\n\nPromise.prototype._setCancelled = function() {\n    this._bitField = this._bitField | 65536;\n    this._fireEvent(\"promiseCancelled\", this);\n};\n\nPromise.prototype._setWillBeCancelled = function() {\n    this._bitField = this._bitField | 8388608;\n};\n\nPromise.prototype._setAsyncGuaranteed = function() {\n    if (async.hasCustomScheduler()) return;\n    var bitField = this._bitField;\n    this._bitField = bitField |\n        (((bitField & 536870912) >> 2) ^\n        134217728);\n};\n\nPromise.prototype._setNoAsyncGuarantee = function() {\n    this._bitField = (this._bitField | 536870912) &\n        (~134217728);\n};\n\nPromise.prototype._receiverAt = function (index) {\n    var ret = index === 0 ? this._receiver0 : this[\n            index * 4 - 4 + 3];\n    if (ret === UNDEFINED_BINDING) {\n        return undefined;\n    } else if (ret === undefined && this._isBound()) {\n        return this._boundValue();\n    }\n    return ret;\n};\n\nPromise.prototype._promiseAt = function (index) {\n    return this[\n            index * 4 - 4 + 2];\n};\n\nPromise.prototype._fulfillmentHandlerAt = function (index) {\n    return this[\n            index * 4 - 4 + 0];\n};\n\nPromise.prototype._rejectionHandlerAt = function (index) {\n    return this[\n            index * 4 - 4 + 1];\n};\n\nPromise.prototype._boundValue = function() {};\n\nPromise.prototype._migrateCallback0 = function (follower) {\n    var bitField = follower._bitField;\n    var fulfill = follower._fulfillmentHandler0;\n    var reject = follower._rejectionHandler0;\n    var promise = follower._promise0;\n    var receiver = follower._receiverAt(0);\n    if (receiver === undefined) receiver = UNDEFINED_BINDING;\n    this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._migrateCallbackAt = function (follower, index) {\n    var fulfill = follower._fulfillmentHandlerAt(index);\n    var reject = follower._rejectionHandlerAt(index);\n    var promise = follower._promiseAt(index);\n    var receiver = follower._receiverAt(index);\n    if (receiver === undefined) receiver = UNDEFINED_BINDING;\n    this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._addCallbacks = function (\n    fulfill,\n    reject,\n    promise,\n    receiver,\n    context\n) {\n    var index = this._length();\n\n    if (index >= 65535 - 4) {\n        index = 0;\n        this._setLength(0);\n    }\n\n    if (index === 0) {\n        this._promise0 = promise;\n        this._receiver0 = receiver;\n        if (typeof fulfill === \"function\") {\n            this._fulfillmentHandler0 = util.contextBind(context, fulfill);\n        }\n        if (typeof reject === \"function\") {\n            this._rejectionHandler0 = util.contextBind(context, reject);\n        }\n    } else {\n        var base = index * 4 - 4;\n        this[base + 2] = promise;\n        this[base + 3] = receiver;\n        if (typeof fulfill === \"function\") {\n            this[base + 0] =\n                util.contextBind(context, fulfill);\n        }\n        if (typeof reject === \"function\") {\n            this[base + 1] =\n                util.contextBind(context, reject);\n        }\n    }\n    this._setLength(index + 1);\n    return index;\n};\n\nPromise.prototype._proxy = function (proxyable, arg) {\n    this._addCallbacks(undefined, undefined, arg, proxyable, null);\n};\n\nPromise.prototype._resolveCallback = function(value, shouldBind) {\n    if (((this._bitField & 117506048) !== 0)) return;\n    if (value === this)\n        return this._rejectCallback(makeSelfResolutionError(), false);\n    var maybePromise = tryConvertToPromise(value, this);\n    if (!(maybePromise instanceof Promise)) return this._fulfill(value);\n\n    if (shouldBind) this._propagateFrom(maybePromise, 2);\n\n\n    var promise = maybePromise._target();\n\n    if (promise === this) {\n        this._reject(makeSelfResolutionError());\n        return;\n    }\n\n    var bitField = promise._bitField;\n    if (((bitField & 50397184) === 0)) {\n        var len = this._length();\n        if (len > 0) promise._migrateCallback0(this);\n        for (var i = 1; i < len; ++i) {\n            promise._migrateCallbackAt(this, i);\n        }\n        this._setFollowing();\n        this._setLength(0);\n        this._setFollowee(maybePromise);\n    } else if (((bitField & 33554432) !== 0)) {\n        this._fulfill(promise._value());\n    } else if (((bitField & 16777216) !== 0)) {\n        this._reject(promise._reason());\n    } else {\n        var reason = new CancellationError(\"late cancellation observer\");\n        promise._attachExtraTrace(reason);\n        this._reject(reason);\n    }\n};\n\nPromise.prototype._rejectCallback =\nfunction(reason, synchronous, ignoreNonErrorWarnings) {\n    var trace = util.ensureErrorObject(reason);\n    var hasStack = trace === reason;\n    if (!hasStack && !ignoreNonErrorWarnings && debug.warnings()) {\n        var message = \"a promise was rejected with a non-error: \" +\n            util.classString(reason);\n        this._warn(message, true);\n    }\n    this._attachExtraTrace(trace, synchronous ? hasStack : false);\n    this._reject(reason);\n};\n\nPromise.prototype._resolveFromExecutor = function (executor) {\n    if (executor === INTERNAL) return;\n    var promise = this;\n    this._captureStackTrace();\n    this._pushContext();\n    var synchronous = true;\n    var r = this._execute(executor, function(value) {\n        promise._resolveCallback(value);\n    }, function (reason) {\n        promise._rejectCallback(reason, synchronous);\n    });\n    synchronous = false;\n    this._popContext();\n\n    if (r !== undefined) {\n        promise._rejectCallback(r, true);\n    }\n};\n\nPromise.prototype._settlePromiseFromHandler = function (\n    handler, receiver, value, promise\n) {\n    var bitField = promise._bitField;\n    if (((bitField & 65536) !== 0)) return;\n    promise._pushContext();\n    var x;\n    if (receiver === APPLY) {\n        if (!value || typeof value.length !== \"number\") {\n            x = errorObj;\n            x.e = new TypeError(\"cannot .spread() a non-array: \" +\n                                    util.classString(value));\n        } else {\n            x = tryCatch(handler).apply(this._boundValue(), value);\n        }\n    } else {\n        x = tryCatch(handler).call(receiver, value);\n    }\n    var promiseCreated = promise._popContext();\n    bitField = promise._bitField;\n    if (((bitField & 65536) !== 0)) return;\n\n    if (x === NEXT_FILTER) {\n        promise._reject(value);\n    } else if (x === errorObj) {\n        promise._rejectCallback(x.e, false);\n    } else {\n        debug.checkForgottenReturns(x, promiseCreated, \"\",  promise, this);\n        promise._resolveCallback(x);\n    }\n};\n\nPromise.prototype._target = function() {\n    var ret = this;\n    while (ret._isFollowing()) ret = ret._followee();\n    return ret;\n};\n\nPromise.prototype._followee = function() {\n    return this._rejectionHandler0;\n};\n\nPromise.prototype._setFollowee = function(promise) {\n    this._rejectionHandler0 = promise;\n};\n\nPromise.prototype._settlePromise = function(promise, handler, receiver, value) {\n    var isPromise = promise instanceof Promise;\n    var bitField = this._bitField;\n    var asyncGuaranteed = ((bitField & 134217728) !== 0);\n    if (((bitField & 65536) !== 0)) {\n        if (isPromise) promise._invokeInternalOnCancel();\n\n        if (receiver instanceof PassThroughHandlerContext &&\n            receiver.isFinallyHandler()) {\n            receiver.cancelPromise = promise;\n            if (tryCatch(handler).call(receiver, value) === errorObj) {\n                promise._reject(errorObj.e);\n            }\n        } else if (handler === reflectHandler) {\n            promise._fulfill(reflectHandler.call(receiver));\n        } else if (receiver instanceof Proxyable) {\n            receiver._promiseCancelled(promise);\n        } else if (isPromise || promise instanceof PromiseArray) {\n            promise._cancel();\n        } else {\n            receiver.cancel();\n        }\n    } else if (typeof handler === \"function\") {\n        if (!isPromise) {\n            handler.call(receiver, value, promise);\n        } else {\n            if (asyncGuaranteed) promise._setAsyncGuaranteed();\n            this._settlePromiseFromHandler(handler, receiver, value, promise);\n        }\n    } else if (receiver instanceof Proxyable) {\n        if (!receiver._isResolved()) {\n            if (((bitField & 33554432) !== 0)) {\n                receiver._promiseFulfilled(value, promise);\n            } else {\n                receiver._promiseRejected(value, promise);\n            }\n        }\n    } else if (isPromise) {\n        if (asyncGuaranteed) promise._setAsyncGuaranteed();\n        if (((bitField & 33554432) !== 0)) {\n            promise._fulfill(value);\n        } else {\n            promise._reject(value);\n        }\n    }\n};\n\nPromise.prototype._settlePromiseLateCancellationObserver = function(ctx) {\n    var handler = ctx.handler;\n    var promise = ctx.promise;\n    var receiver = ctx.receiver;\n    var value = ctx.value;\n    if (typeof handler === \"function\") {\n        if (!(promise instanceof Promise)) {\n            handler.call(receiver, value, promise);\n        } else {\n            this._settlePromiseFromHandler(handler, receiver, value, promise);\n        }\n    } else if (promise instanceof Promise) {\n        promise._reject(value);\n    }\n};\n\nPromise.prototype._settlePromiseCtx = function(ctx) {\n    this._settlePromise(ctx.promise, ctx.handler, ctx.receiver, ctx.value);\n};\n\nPromise.prototype._settlePromise0 = function(handler, value, bitField) {\n    var promise = this._promise0;\n    var receiver = this._receiverAt(0);\n    this._promise0 = undefined;\n    this._receiver0 = undefined;\n    this._settlePromise(promise, handler, receiver, value);\n};\n\nPromise.prototype._clearCallbackDataAtIndex = function(index) {\n    var base = index * 4 - 4;\n    this[base + 2] =\n    this[base + 3] =\n    this[base + 0] =\n    this[base + 1] = undefined;\n};\n\nPromise.prototype._fulfill = function (value) {\n    var bitField = this._bitField;\n    if (((bitField & 117506048) >>> 16)) return;\n    if (value === this) {\n        var err = makeSelfResolutionError();\n        this._attachExtraTrace(err);\n        return this._reject(err);\n    }\n    this._setFulfilled();\n    this._rejectionHandler0 = value;\n\n    if ((bitField & 65535) > 0) {\n        if (((bitField & 134217728) !== 0)) {\n            this._settlePromises();\n        } else {\n            async.settlePromises(this);\n        }\n        this._dereferenceTrace();\n    }\n};\n\nPromise.prototype._reject = function (reason) {\n    var bitField = this._bitField;\n    if (((bitField & 117506048) >>> 16)) return;\n    this._setRejected();\n    this._fulfillmentHandler0 = reason;\n\n    if (this._isFinal()) {\n        return async.fatalError(reason, util.isNode);\n    }\n\n    if ((bitField & 65535) > 0) {\n        async.settlePromises(this);\n    } else {\n        this._ensurePossibleRejectionHandled();\n    }\n};\n\nPromise.prototype._fulfillPromises = function (len, value) {\n    for (var i = 1; i < len; i++) {\n        var handler = this._fulfillmentHandlerAt(i);\n        var promise = this._promiseAt(i);\n        var receiver = this._receiverAt(i);\n        this._clearCallbackDataAtIndex(i);\n        this._settlePromise(promise, handler, receiver, value);\n    }\n};\n\nPromise.prototype._rejectPromises = function (len, reason) {\n    for (var i = 1; i < len; i++) {\n        var handler = this._rejectionHandlerAt(i);\n        var promise = this._promiseAt(i);\n        var receiver = this._receiverAt(i);\n        this._clearCallbackDataAtIndex(i);\n        this._settlePromise(promise, handler, receiver, reason);\n    }\n};\n\nPromise.prototype._settlePromises = function () {\n    var bitField = this._bitField;\n    var len = (bitField & 65535);\n\n    if (len > 0) {\n        if (((bitField & 16842752) !== 0)) {\n            var reason = this._fulfillmentHandler0;\n            this._settlePromise0(this._rejectionHandler0, reason, bitField);\n            this._rejectPromises(len, reason);\n        } else {\n            var value = this._rejectionHandler0;\n            this._settlePromise0(this._fulfillmentHandler0, value, bitField);\n            this._fulfillPromises(len, value);\n        }\n        this._setLength(0);\n    }\n    this._clearCancellationData();\n};\n\nPromise.prototype._settledValue = function() {\n    var bitField = this._bitField;\n    if (((bitField & 33554432) !== 0)) {\n        return this._rejectionHandler0;\n    } else if (((bitField & 16777216) !== 0)) {\n        return this._fulfillmentHandler0;\n    }\n};\n\nif (typeof Symbol !== \"undefined\" && Symbol.toStringTag) {\n    es5.defineProperty(Promise.prototype, Symbol.toStringTag, {\n        get: function () {\n            return \"Object\";\n        }\n    });\n}\n\nfunction deferResolve(v) {this.promise._resolveCallback(v);}\nfunction deferReject(v) {this.promise._rejectCallback(v, false);}\n\nPromise.defer = Promise.pending = function() {\n    debug.deprecated(\"Promise.defer\", \"new Promise\");\n    var promise = new Promise(INTERNAL);\n    return {\n        promise: promise,\n        resolve: deferResolve,\n        reject: deferReject\n    };\n};\n\nutil.notEnumerableProp(Promise,\n                       \"_makeSelfResolutionError\",\n                       makeSelfResolutionError);\n\n_dereq_(\"./method\")(Promise, INTERNAL, tryConvertToPromise, apiRejection,\n    debug);\n_dereq_(\"./bind\")(Promise, INTERNAL, tryConvertToPromise, debug);\n_dereq_(\"./cancel\")(Promise, PromiseArray, apiRejection, debug);\n_dereq_(\"./direct_resolve\")(Promise);\n_dereq_(\"./synchronous_inspection\")(Promise);\n_dereq_(\"./join\")(\n    Promise, PromiseArray, tryConvertToPromise, INTERNAL, async);\nPromise.Promise = Promise;\nPromise.version = \"3.7.2\";\n_dereq_('./call_get.js')(Promise);\n_dereq_('./generators.js')(Promise, apiRejection, INTERNAL, tryConvertToPromise, Proxyable, debug);\n_dereq_('./map.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./nodeify.js')(Promise);\n_dereq_('./promisify.js')(Promise, INTERNAL);\n_dereq_('./props.js')(Promise, PromiseArray, tryConvertToPromise, apiRejection);\n_dereq_('./race.js')(Promise, INTERNAL, tryConvertToPromise, apiRejection);\n_dereq_('./reduce.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./settle.js')(Promise, PromiseArray, debug);\n_dereq_('./some.js')(Promise, PromiseArray, apiRejection);\n_dereq_('./timers.js')(Promise, INTERNAL, debug);\n_dereq_('./using.js')(Promise, apiRejection, tryConvertToPromise, createContext, INTERNAL, debug);\n_dereq_('./any.js')(Promise);\n_dereq_('./each.js')(Promise, INTERNAL);\n_dereq_('./filter.js')(Promise, INTERNAL);\n                                                         \n    util.toFastProperties(Promise);                                          \n    util.toFastProperties(Promise.prototype);                                \n    function fillTypes(value) {                                              \n        var p = new Promise(INTERNAL);                                       \n        p._fulfillmentHandler0 = value;                                      \n        p._rejectionHandler0 = value;                                        \n        p._promise0 = value;                                                 \n        p._receiver0 = value;                                                \n    }                                                                        \n    // Complete slack tracking, opt out of field-type tracking and           \n    // stabilize map                                                         \n    fillTypes({a: 1});                                                       \n    fillTypes({b: 2});                                                       \n    fillTypes({c: 3});                                                       \n    fillTypes(1);                                                            \n    fillTypes(function(){});                                                 \n    fillTypes(undefined);                                                    \n    fillTypes(false);                                                        \n    fillTypes(new Promise(INTERNAL));                                        \n    debug.setBounds(Async.firstLineError, util.lastLineError);               \n    return Promise;                                                          \n\n};\n\n},{\"./any.js\":1,\"./async\":2,\"./bind\":3,\"./call_get.js\":5,\"./cancel\":6,\"./catch_filter\":7,\"./context\":8,\"./debuggability\":9,\"./direct_resolve\":10,\"./each.js\":11,\"./errors\":12,\"./es5\":13,\"./filter.js\":14,\"./finally\":15,\"./generators.js\":16,\"./join\":17,\"./map.js\":18,\"./method\":19,\"./nodeback\":20,\"./nodeify.js\":21,\"./promise_array\":23,\"./promisify.js\":24,\"./props.js\":25,\"./race.js\":27,\"./reduce.js\":28,\"./settle.js\":30,\"./some.js\":31,\"./synchronous_inspection\":32,\"./thenables\":33,\"./timers.js\":34,\"./using.js\":35,\"./util\":36,\"async_hooks\":undefined}],23:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise,\n    apiRejection, Proxyable) {\nvar util = _dereq_(\"./util\");\nvar isArray = util.isArray;\n\nfunction toResolutionValue(val) {\n    switch(val) {\n    case -2: return [];\n    case -3: return {};\n    case -6: return new Map();\n    }\n}\n\nfunction PromiseArray(values) {\n    var promise = this._promise = new Promise(INTERNAL);\n    if (values instanceof Promise) {\n        promise._propagateFrom(values, 3);\n        values.suppressUnhandledRejections();\n    }\n    promise._setOnCancel(this);\n    this._values = values;\n    this._length = 0;\n    this._totalResolved = 0;\n    this._init(undefined, -2);\n}\nutil.inherits(PromiseArray, Proxyable);\n\nPromiseArray.prototype.length = function () {\n    return this._length;\n};\n\nPromiseArray.prototype.promise = function () {\n    return this._promise;\n};\n\nPromiseArray.prototype._init = function init(_, resolveValueIfEmpty) {\n    var values = tryConvertToPromise(this._values, this._promise);\n    if (values instanceof Promise) {\n        values = values._target();\n        var bitField = values._bitField;\n        ;\n        this._values = values;\n\n        if (((bitField & 50397184) === 0)) {\n            this._promise._setAsyncGuaranteed();\n            return values._then(\n                init,\n                this._reject,\n                undefined,\n                this,\n                resolveValueIfEmpty\n           );\n        } else if (((bitField & 33554432) !== 0)) {\n            values = values._value();\n        } else if (((bitField & 16777216) !== 0)) {\n            return this._reject(values._reason());\n        } else {\n            return this._cancel();\n        }\n    }\n    values = util.asArray(values);\n    if (values === null) {\n        var err = apiRejection(\n            \"expecting an array or an iterable object but got \" + util.classString(values)).reason();\n        this._promise._rejectCallback(err, false);\n        return;\n    }\n\n    if (values.length === 0) {\n        if (resolveValueIfEmpty === -5) {\n            this._resolveEmptyArray();\n        }\n        else {\n            this._resolve(toResolutionValue(resolveValueIfEmpty));\n        }\n        return;\n    }\n    this._iterate(values);\n};\n\nPromiseArray.prototype._iterate = function(values) {\n    var len = this.getActualLength(values.length);\n    this._length = len;\n    this._values = this.shouldCopyValues() ? new Array(len) : this._values;\n    var result = this._promise;\n    var isResolved = false;\n    var bitField = null;\n    for (var i = 0; i < len; ++i) {\n        var maybePromise = tryConvertToPromise(values[i], result);\n\n        if (maybePromise instanceof Promise) {\n            maybePromise = maybePromise._target();\n            bitField = maybePromise._bitField;\n        } else {\n            bitField = null;\n        }\n\n        if (isResolved) {\n            if (bitField !== null) {\n                maybePromise.suppressUnhandledRejections();\n            }\n        } else if (bitField !== null) {\n            if (((bitField & 50397184) === 0)) {\n                maybePromise._proxy(this, i);\n                this._values[i] = maybePromise;\n            } else if (((bitField & 33554432) !== 0)) {\n                isResolved = this._promiseFulfilled(maybePromise._value(), i);\n            } else if (((bitField & 16777216) !== 0)) {\n                isResolved = this._promiseRejected(maybePromise._reason(), i);\n            } else {\n                isResolved = this._promiseCancelled(i);\n            }\n        } else {\n            isResolved = this._promiseFulfilled(maybePromise, i);\n        }\n    }\n    if (!isResolved) result._setAsyncGuaranteed();\n};\n\nPromiseArray.prototype._isResolved = function () {\n    return this._values === null;\n};\n\nPromiseArray.prototype._resolve = function (value) {\n    this._values = null;\n    this._promise._fulfill(value);\n};\n\nPromiseArray.prototype._cancel = function() {\n    if (this._isResolved() || !this._promise._isCancellable()) return;\n    this._values = null;\n    this._promise._cancel();\n};\n\nPromiseArray.prototype._reject = function (reason) {\n    this._values = null;\n    this._promise._rejectCallback(reason, false);\n};\n\nPromiseArray.prototype._promiseFulfilled = function (value, index) {\n    this._values[index] = value;\n    var totalResolved = ++this._totalResolved;\n    if (totalResolved >= this._length) {\n        this._resolve(this._values);\n        return true;\n    }\n    return false;\n};\n\nPromiseArray.prototype._promiseCancelled = function() {\n    this._cancel();\n    return true;\n};\n\nPromiseArray.prototype._promiseRejected = function (reason) {\n    this._totalResolved++;\n    this._reject(reason);\n    return true;\n};\n\nPromiseArray.prototype._resultCancelled = function() {\n    if (this._isResolved()) return;\n    var values = this._values;\n    this._cancel();\n    if (values instanceof Promise) {\n        values.cancel();\n    } else {\n        for (var i = 0; i < values.length; ++i) {\n            if (values[i] instanceof Promise) {\n                values[i].cancel();\n            }\n        }\n    }\n};\n\nPromiseArray.prototype.shouldCopyValues = function () {\n    return true;\n};\n\nPromiseArray.prototype.getActualLength = function (len) {\n    return len;\n};\n\nreturn PromiseArray;\n};\n\n},{\"./util\":36}],24:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar THIS = {};\nvar util = _dereq_(\"./util\");\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar withAppended = util.withAppended;\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar canEvaluate = util.canEvaluate;\nvar TypeError = _dereq_(\"./errors\").TypeError;\nvar defaultSuffix = \"Async\";\nvar defaultPromisified = {__isPromisified__: true};\nvar noCopyProps = [\n    \"arity\",    \"length\",\n    \"name\",\n    \"arguments\",\n    \"caller\",\n    \"callee\",\n    \"prototype\",\n    \"__isPromisified__\"\n];\nvar noCopyPropsPattern = new RegExp(\"^(?:\" + noCopyProps.join(\"|\") + \")$\");\n\nvar defaultFilter = function(name) {\n    return util.isIdentifier(name) &&\n        name.charAt(0) !== \"_\" &&\n        name !== \"constructor\";\n};\n\nfunction propsFilter(key) {\n    return !noCopyPropsPattern.test(key);\n}\n\nfunction isPromisified(fn) {\n    try {\n        return fn.__isPromisified__ === true;\n    }\n    catch (e) {\n        return false;\n    }\n}\n\nfunction hasPromisified(obj, key, suffix) {\n    var val = util.getDataPropertyOrDefault(obj, key + suffix,\n                                            defaultPromisified);\n    return val ? isPromisified(val) : false;\n}\nfunction checkValid(ret, suffix, suffixRegexp) {\n    for (var i = 0; i < ret.length; i += 2) {\n        var key = ret[i];\n        if (suffixRegexp.test(key)) {\n            var keyWithoutAsyncSuffix = key.replace(suffixRegexp, \"\");\n            for (var j = 0; j < ret.length; j += 2) {\n                if (ret[j] === keyWithoutAsyncSuffix) {\n                    throw new TypeError(\"Cannot promisify an API that has normal methods with '%s'-suffix\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\"\n                        .replace(\"%s\", suffix));\n                }\n            }\n        }\n    }\n}\n\nfunction promisifiableMethods(obj, suffix, suffixRegexp, filter) {\n    var keys = util.inheritedDataKeys(obj);\n    var ret = [];\n    for (var i = 0; i < keys.length; ++i) {\n        var key = keys[i];\n        var value = obj[key];\n        var passesDefaultFilter = filter === defaultFilter\n            ? true : defaultFilter(key, value, obj);\n        if (typeof value === \"function\" &&\n            !isPromisified(value) &&\n            !hasPromisified(obj, key, suffix) &&\n            filter(key, value, obj, passesDefaultFilter)) {\n            ret.push(key, value);\n        }\n    }\n    checkValid(ret, suffix, suffixRegexp);\n    return ret;\n}\n\nvar escapeIdentRegex = function(str) {\n    return str.replace(/([$])/, \"\\\\$\");\n};\n\nvar makeNodePromisifiedEval;\nif (!true) {\nvar switchCaseArgumentOrder = function(likelyArgumentCount) {\n    var ret = [likelyArgumentCount];\n    var min = Math.max(0, likelyArgumentCount - 1 - 3);\n    for(var i = likelyArgumentCount - 1; i >= min; --i) {\n        ret.push(i);\n    }\n    for(var i = likelyArgumentCount + 1; i <= 3; ++i) {\n        ret.push(i);\n    }\n    return ret;\n};\n\nvar argumentSequence = function(argumentCount) {\n    return util.filledRange(argumentCount, \"_arg\", \"\");\n};\n\nvar parameterDeclaration = function(parameterCount) {\n    return util.filledRange(\n        Math.max(parameterCount, 3), \"_arg\", \"\");\n};\n\nvar parameterCount = function(fn) {\n    if (typeof fn.length === \"number\") {\n        return Math.max(Math.min(fn.length, 1023 + 1), 0);\n    }\n    return 0;\n};\n\nmakeNodePromisifiedEval =\nfunction(callback, receiver, originalName, fn, _, multiArgs) {\n    var newParameterCount = Math.max(0, parameterCount(fn) - 1);\n    var argumentOrder = switchCaseArgumentOrder(newParameterCount);\n    var shouldProxyThis = typeof callback === \"string\" || receiver === THIS;\n\n    function generateCallForArgumentCount(count) {\n        var args = argumentSequence(count).join(\", \");\n        var comma = count > 0 ? \", \" : \"\";\n        var ret;\n        if (shouldProxyThis) {\n            ret = \"ret = callback.call(this, {{args}}, nodeback); break;\\n\";\n        } else {\n            ret = receiver === undefined\n                ? \"ret = callback({{args}}, nodeback); break;\\n\"\n                : \"ret = callback.call(receiver, {{args}}, nodeback); break;\\n\";\n        }\n        return ret.replace(\"{{args}}\", args).replace(\", \", comma);\n    }\n\n    function generateArgumentSwitchCase() {\n        var ret = \"\";\n        for (var i = 0; i < argumentOrder.length; ++i) {\n            ret += \"case \" + argumentOrder[i] +\":\" +\n                generateCallForArgumentCount(argumentOrder[i]);\n        }\n\n        ret += \"                                                             \\n\\\n        default:                                                             \\n\\\n            var args = new Array(len + 1);                                   \\n\\\n            var i = 0;                                                       \\n\\\n            for (var i = 0; i < len; ++i) {                                  \\n\\\n               args[i] = arguments[i];                                       \\n\\\n            }                                                                \\n\\\n            args[i] = nodeback;                                              \\n\\\n            [CodeForCall]                                                    \\n\\\n            break;                                                           \\n\\\n        \".replace(\"[CodeForCall]\", (shouldProxyThis\n                                ? \"ret = callback.apply(this, args);\\n\"\n                                : \"ret = callback.apply(receiver, args);\\n\"));\n        return ret;\n    }\n\n    var getFunctionCode = typeof callback === \"string\"\n                                ? (\"this != null ? this['\"+callback+\"'] : fn\")\n                                : \"fn\";\n    var body = \"'use strict';                                                \\n\\\n        var ret = function (Parameters) {                                    \\n\\\n            'use strict';                                                    \\n\\\n            var len = arguments.length;                                      \\n\\\n            var promise = new Promise(INTERNAL);                             \\n\\\n            promise._captureStackTrace();                                    \\n\\\n            var nodeback = nodebackForPromise(promise, \" + multiArgs + \");   \\n\\\n            var ret;                                                         \\n\\\n            var callback = tryCatch([GetFunctionCode]);                      \\n\\\n            switch(len) {                                                    \\n\\\n                [CodeForSwitchCase]                                          \\n\\\n            }                                                                \\n\\\n            if (ret === errorObj) {                                          \\n\\\n                promise._rejectCallback(maybeWrapAsError(ret.e), true, true);\\n\\\n            }                                                                \\n\\\n            if (!promise._isFateSealed()) promise._setAsyncGuaranteed();     \\n\\\n            return promise;                                                  \\n\\\n        };                                                                   \\n\\\n        notEnumerableProp(ret, '__isPromisified__', true);                   \\n\\\n        return ret;                                                          \\n\\\n    \".replace(\"[CodeForSwitchCase]\", generateArgumentSwitchCase())\n        .replace(\"[GetFunctionCode]\", getFunctionCode);\n    body = body.replace(\"Parameters\", parameterDeclaration(newParameterCount));\n    return new Function(\"Promise\",\n                        \"fn\",\n                        \"receiver\",\n                        \"withAppended\",\n                        \"maybeWrapAsError\",\n                        \"nodebackForPromise\",\n                        \"tryCatch\",\n                        \"errorObj\",\n                        \"notEnumerableProp\",\n                        \"INTERNAL\",\n                        body)(\n                    Promise,\n                    fn,\n                    receiver,\n                    withAppended,\n                    maybeWrapAsError,\n                    nodebackForPromise,\n                    util.tryCatch,\n                    util.errorObj,\n                    util.notEnumerableProp,\n                    INTERNAL);\n};\n}\n\nfunction makeNodePromisifiedClosure(callback, receiver, _, fn, __, multiArgs) {\n    var defaultThis = (function() {return this;})();\n    var method = callback;\n    if (typeof method === \"string\") {\n        callback = fn;\n    }\n    function promisified() {\n        var _receiver = receiver;\n        if (receiver === THIS) _receiver = this;\n        var promise = new Promise(INTERNAL);\n        promise._captureStackTrace();\n        var cb = typeof method === \"string\" && this !== defaultThis\n            ? this[method] : callback;\n        var fn = nodebackForPromise(promise, multiArgs);\n        try {\n            cb.apply(_receiver, withAppended(arguments, fn));\n        } catch(e) {\n            promise._rejectCallback(maybeWrapAsError(e), true, true);\n        }\n        if (!promise._isFateSealed()) promise._setAsyncGuaranteed();\n        return promise;\n    }\n    util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n    return promisified;\n}\n\nvar makeNodePromisified = canEvaluate\n    ? makeNodePromisifiedEval\n    : makeNodePromisifiedClosure;\n\nfunction promisifyAll(obj, suffix, filter, promisifier, multiArgs) {\n    var suffixRegexp = new RegExp(escapeIdentRegex(suffix) + \"$\");\n    var methods =\n        promisifiableMethods(obj, suffix, suffixRegexp, filter);\n\n    for (var i = 0, len = methods.length; i < len; i+= 2) {\n        var key = methods[i];\n        var fn = methods[i+1];\n        var promisifiedKey = key + suffix;\n        if (promisifier === makeNodePromisified) {\n            obj[promisifiedKey] =\n                makeNodePromisified(key, THIS, key, fn, suffix, multiArgs);\n        } else {\n            var promisified = promisifier(fn, function() {\n                return makeNodePromisified(key, THIS, key,\n                                           fn, suffix, multiArgs);\n            });\n            util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n            obj[promisifiedKey] = promisified;\n        }\n    }\n    util.toFastProperties(obj);\n    return obj;\n}\n\nfunction promisify(callback, receiver, multiArgs) {\n    return makeNodePromisified(callback, receiver, undefined,\n                                callback, null, multiArgs);\n}\n\nPromise.promisify = function (fn, options) {\n    if (typeof fn !== \"function\") {\n        throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n    }\n    if (isPromisified(fn)) {\n        return fn;\n    }\n    options = Object(options);\n    var receiver = options.context === undefined ? THIS : options.context;\n    var multiArgs = !!options.multiArgs;\n    var ret = promisify(fn, receiver, multiArgs);\n    util.copyDescriptors(fn, ret, propsFilter);\n    return ret;\n};\n\nPromise.promisifyAll = function (target, options) {\n    if (typeof target !== \"function\" && typeof target !== \"object\") {\n        throw new TypeError(\"the target of promisifyAll must be an object or a function\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n    }\n    options = Object(options);\n    var multiArgs = !!options.multiArgs;\n    var suffix = options.suffix;\n    if (typeof suffix !== \"string\") suffix = defaultSuffix;\n    var filter = options.filter;\n    if (typeof filter !== \"function\") filter = defaultFilter;\n    var promisifier = options.promisifier;\n    if (typeof promisifier !== \"function\") promisifier = makeNodePromisified;\n\n    if (!util.isIdentifier(suffix)) {\n        throw new RangeError(\"suffix must be a valid identifier\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n    }\n\n    var keys = util.inheritedDataKeys(target);\n    for (var i = 0; i < keys.length; ++i) {\n        var value = target[keys[i]];\n        if (keys[i] !== \"constructor\" &&\n            util.isClass(value)) {\n            promisifyAll(value.prototype, suffix, filter, promisifier,\n                multiArgs);\n            promisifyAll(value, suffix, filter, promisifier, multiArgs);\n        }\n    }\n\n    return promisifyAll(target, suffix, filter, promisifier, multiArgs);\n};\n};\n\n\n},{\"./errors\":12,\"./nodeback\":20,\"./util\":36}],25:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n    Promise, PromiseArray, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar isObject = util.isObject;\nvar es5 = _dereq_(\"./es5\");\nvar Es6Map;\nif (typeof Map === \"function\") Es6Map = Map;\n\nvar mapToEntries = (function() {\n    var index = 0;\n    var size = 0;\n\n    function extractEntry(value, key) {\n        this[index] = value;\n        this[index + size] = key;\n        index++;\n    }\n\n    return function mapToEntries(map) {\n        size = map.size;\n        index = 0;\n        var ret = new Array(map.size * 2);\n        map.forEach(extractEntry, ret);\n        return ret;\n    };\n})();\n\nvar entriesToMap = function(entries) {\n    var ret = new Es6Map();\n    var length = entries.length / 2 | 0;\n    for (var i = 0; i < length; ++i) {\n        var key = entries[length + i];\n        var value = entries[i];\n        ret.set(key, value);\n    }\n    return ret;\n};\n\nfunction PropertiesPromiseArray(obj) {\n    var isMap = false;\n    var entries;\n    if (Es6Map !== undefined && obj instanceof Es6Map) {\n        entries = mapToEntries(obj);\n        isMap = true;\n    } else {\n        var keys = es5.keys(obj);\n        var len = keys.length;\n        entries = new Array(len * 2);\n        for (var i = 0; i < len; ++i) {\n            var key = keys[i];\n            entries[i] = obj[key];\n            entries[i + len] = key;\n        }\n    }\n    this.constructor$(entries);\n    this._isMap = isMap;\n    this._init$(undefined, isMap ? -6 : -3);\n}\nutil.inherits(PropertiesPromiseArray, PromiseArray);\n\nPropertiesPromiseArray.prototype._init = function () {};\n\nPropertiesPromiseArray.prototype._promiseFulfilled = function (value, index) {\n    this._values[index] = value;\n    var totalResolved = ++this._totalResolved;\n    if (totalResolved >= this._length) {\n        var val;\n        if (this._isMap) {\n            val = entriesToMap(this._values);\n        } else {\n            val = {};\n            var keyOffset = this.length();\n            for (var i = 0, len = this.length(); i < len; ++i) {\n                val[this._values[i + keyOffset]] = this._values[i];\n            }\n        }\n        this._resolve(val);\n        return true;\n    }\n    return false;\n};\n\nPropertiesPromiseArray.prototype.shouldCopyValues = function () {\n    return false;\n};\n\nPropertiesPromiseArray.prototype.getActualLength = function (len) {\n    return len >> 1;\n};\n\nfunction props(promises) {\n    var ret;\n    var castValue = tryConvertToPromise(promises);\n\n    if (!isObject(castValue)) {\n        return apiRejection(\"cannot await properties of a non-object\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n    } else if (castValue instanceof Promise) {\n        ret = castValue._then(\n            Promise.props, undefined, undefined, undefined, undefined);\n    } else {\n        ret = new PropertiesPromiseArray(castValue).promise();\n    }\n\n    if (castValue instanceof Promise) {\n        ret._propagateFrom(castValue, 2);\n    }\n    return ret;\n}\n\nPromise.prototype.props = function () {\n    return props(this);\n};\n\nPromise.props = function (promises) {\n    return props(promises);\n};\n};\n\n},{\"./es5\":13,\"./util\":36}],26:[function(_dereq_,module,exports){\n\"use strict\";\nfunction arrayMove(src, srcIndex, dst, dstIndex, len) {\n    for (var j = 0; j < len; ++j) {\n        dst[j + dstIndex] = src[j + srcIndex];\n        src[j + srcIndex] = void 0;\n    }\n}\n\nfunction Queue(capacity) {\n    this._capacity = capacity;\n    this._length = 0;\n    this._front = 0;\n}\n\nQueue.prototype._willBeOverCapacity = function (size) {\n    return this._capacity < size;\n};\n\nQueue.prototype._pushOne = function (arg) {\n    var length = this.length();\n    this._checkCapacity(length + 1);\n    var i = (this._front + length) & (this._capacity - 1);\n    this[i] = arg;\n    this._length = length + 1;\n};\n\nQueue.prototype.push = function (fn, receiver, arg) {\n    var length = this.length() + 3;\n    if (this._willBeOverCapacity(length)) {\n        this._pushOne(fn);\n        this._pushOne(receiver);\n        this._pushOne(arg);\n        return;\n    }\n    var j = this._front + length - 3;\n    this._checkCapacity(length);\n    var wrapMask = this._capacity - 1;\n    this[(j + 0) & wrapMask] = fn;\n    this[(j + 1) & wrapMask] = receiver;\n    this[(j + 2) & wrapMask] = arg;\n    this._length = length;\n};\n\nQueue.prototype.shift = function () {\n    var front = this._front,\n        ret = this[front];\n\n    this[front] = undefined;\n    this._front = (front + 1) & (this._capacity - 1);\n    this._length--;\n    return ret;\n};\n\nQueue.prototype.length = function () {\n    return this._length;\n};\n\nQueue.prototype._checkCapacity = function (size) {\n    if (this._capacity < size) {\n        this._resizeTo(this._capacity << 1);\n    }\n};\n\nQueue.prototype._resizeTo = function (capacity) {\n    var oldCapacity = this._capacity;\n    this._capacity = capacity;\n    var front = this._front;\n    var length = this._length;\n    var moveItemsCount = (front + length) & (oldCapacity - 1);\n    arrayMove(this, 0, this, oldCapacity, moveItemsCount);\n};\n\nmodule.exports = Queue;\n\n},{}],27:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n    Promise, INTERNAL, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\n\nvar raceLater = function (promise) {\n    return promise.then(function(array) {\n        return race(array, promise);\n    });\n};\n\nfunction race(promises, parent) {\n    var maybePromise = tryConvertToPromise(promises);\n\n    if (maybePromise instanceof Promise) {\n        return raceLater(maybePromise);\n    } else {\n        promises = util.asArray(promises);\n        if (promises === null)\n            return apiRejection(\"expecting an array or an iterable object but got \" + util.classString(promises));\n    }\n\n    var ret = new Promise(INTERNAL);\n    if (parent !== undefined) {\n        ret._propagateFrom(parent, 3);\n    }\n    var fulfill = ret._fulfill;\n    var reject = ret._reject;\n    for (var i = 0, len = promises.length; i < len; ++i) {\n        var val = promises[i];\n\n        if (val === undefined && !(i in promises)) {\n            continue;\n        }\n\n        Promise.cast(val)._then(fulfill, reject, undefined, ret, null);\n    }\n    return ret;\n}\n\nPromise.race = function (promises) {\n    return race(promises, undefined);\n};\n\nPromise.prototype.race = function () {\n    return race(this, undefined);\n};\n\n};\n\n},{\"./util\":36}],28:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n                          PromiseArray,\n                          apiRejection,\n                          tryConvertToPromise,\n                          INTERNAL,\n                          debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nfunction ReductionPromiseArray(promises, fn, initialValue, _each) {\n    this.constructor$(promises);\n    var context = Promise._getContext();\n    this._fn = util.contextBind(context, fn);\n    if (initialValue !== undefined) {\n        initialValue = Promise.resolve(initialValue);\n        initialValue._attachCancellationCallback(this);\n    }\n    this._initialValue = initialValue;\n    this._currentCancellable = null;\n    if(_each === INTERNAL) {\n        this._eachValues = Array(this._length);\n    } else if (_each === 0) {\n        this._eachValues = null;\n    } else {\n        this._eachValues = undefined;\n    }\n    this._promise._captureStackTrace();\n    this._init$(undefined, -5);\n}\nutil.inherits(ReductionPromiseArray, PromiseArray);\n\nReductionPromiseArray.prototype._gotAccum = function(accum) {\n    if (this._eachValues !== undefined &&\n        this._eachValues !== null &&\n        accum !== INTERNAL) {\n        this._eachValues.push(accum);\n    }\n};\n\nReductionPromiseArray.prototype._eachComplete = function(value) {\n    if (this._eachValues !== null) {\n        this._eachValues.push(value);\n    }\n    return this._eachValues;\n};\n\nReductionPromiseArray.prototype._init = function() {};\n\nReductionPromiseArray.prototype._resolveEmptyArray = function() {\n    this._resolve(this._eachValues !== undefined ? this._eachValues\n                                                 : this._initialValue);\n};\n\nReductionPromiseArray.prototype.shouldCopyValues = function () {\n    return false;\n};\n\nReductionPromiseArray.prototype._resolve = function(value) {\n    this._promise._resolveCallback(value);\n    this._values = null;\n};\n\nReductionPromiseArray.prototype._resultCancelled = function(sender) {\n    if (sender === this._initialValue) return this._cancel();\n    if (this._isResolved()) return;\n    this._resultCancelled$();\n    if (this._currentCancellable instanceof Promise) {\n        this._currentCancellable.cancel();\n    }\n    if (this._initialValue instanceof Promise) {\n        this._initialValue.cancel();\n    }\n};\n\nReductionPromiseArray.prototype._iterate = function (values) {\n    this._values = values;\n    var value;\n    var i;\n    var length = values.length;\n    if (this._initialValue !== undefined) {\n        value = this._initialValue;\n        i = 0;\n    } else {\n        value = Promise.resolve(values[0]);\n        i = 1;\n    }\n\n    this._currentCancellable = value;\n\n    for (var j = i; j < length; ++j) {\n        var maybePromise = values[j];\n        if (maybePromise instanceof Promise) {\n            maybePromise.suppressUnhandledRejections();\n        }\n    }\n\n    if (!value.isRejected()) {\n        for (; i < length; ++i) {\n            var ctx = {\n                accum: null,\n                value: values[i],\n                index: i,\n                length: length,\n                array: this\n            };\n\n            value = value._then(gotAccum, undefined, undefined, ctx, undefined);\n\n            if ((i & 127) === 0) {\n                value._setNoAsyncGuarantee();\n            }\n        }\n    }\n\n    if (this._eachValues !== undefined) {\n        value = value\n            ._then(this._eachComplete, undefined, undefined, this, undefined);\n    }\n    value._then(completed, completed, undefined, value, this);\n};\n\nPromise.prototype.reduce = function (fn, initialValue) {\n    return reduce(this, fn, initialValue, null);\n};\n\nPromise.reduce = function (promises, fn, initialValue, _each) {\n    return reduce(promises, fn, initialValue, _each);\n};\n\nfunction completed(valueOrReason, array) {\n    if (this.isFulfilled()) {\n        array._resolve(valueOrReason);\n    } else {\n        array._reject(valueOrReason);\n    }\n}\n\nfunction reduce(promises, fn, initialValue, _each) {\n    if (typeof fn !== \"function\") {\n        return apiRejection(\"expecting a function but got \" + util.classString(fn));\n    }\n    var array = new ReductionPromiseArray(promises, fn, initialValue, _each);\n    return array.promise();\n}\n\nfunction gotAccum(accum) {\n    this.accum = accum;\n    this.array._gotAccum(accum);\n    var value = tryConvertToPromise(this.value, this.array._promise);\n    if (value instanceof Promise) {\n        this.array._currentCancellable = value;\n        return value._then(gotValue, undefined, undefined, this, undefined);\n    } else {\n        return gotValue.call(this, value);\n    }\n}\n\nfunction gotValue(value) {\n    var array = this.array;\n    var promise = array._promise;\n    var fn = tryCatch(array._fn);\n    promise._pushContext();\n    var ret;\n    if (array._eachValues !== undefined) {\n        ret = fn.call(promise._boundValue(), value, this.index, this.length);\n    } else {\n        ret = fn.call(promise._boundValue(),\n                              this.accum, value, this.index, this.length);\n    }\n    if (ret instanceof Promise) {\n        array._currentCancellable = ret;\n    }\n    var promiseCreated = promise._popContext();\n    debug.checkForgottenReturns(\n        ret,\n        promiseCreated,\n        array._eachValues !== undefined ? \"Promise.each\" : \"Promise.reduce\",\n        promise\n    );\n    return ret;\n}\n};\n\n},{\"./util\":36}],29:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar schedule;\nvar noAsyncScheduler = function() {\n    throw new Error(\"No async scheduler available\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n};\nvar NativePromise = util.getNativePromise();\nif (util.isNode && typeof MutationObserver === \"undefined\") {\n    var GlobalSetImmediate = global.setImmediate;\n    var ProcessNextTick = process.nextTick;\n    schedule = util.isRecentNode\n                ? function(fn) { GlobalSetImmediate.call(global, fn); }\n                : function(fn) { ProcessNextTick.call(process, fn); };\n} else if (typeof NativePromise === \"function\" &&\n           typeof NativePromise.resolve === \"function\") {\n    var nativePromise = NativePromise.resolve();\n    schedule = function(fn) {\n        nativePromise.then(fn);\n    };\n} else if ((typeof MutationObserver !== \"undefined\") &&\n          !(typeof window !== \"undefined\" &&\n            window.navigator &&\n            (window.navigator.standalone || window.cordova)) &&\n          (\"classList\" in document.documentElement)) {\n    schedule = (function() {\n        var div = document.createElement(\"div\");\n        var opts = {attributes: true};\n        var toggleScheduled = false;\n        var div2 = document.createElement(\"div\");\n        var o2 = new MutationObserver(function() {\n            div.classList.toggle(\"foo\");\n            toggleScheduled = false;\n        });\n        o2.observe(div2, opts);\n\n        var scheduleToggle = function() {\n            if (toggleScheduled) return;\n            toggleScheduled = true;\n            div2.classList.toggle(\"foo\");\n        };\n\n        return function schedule(fn) {\n            var o = new MutationObserver(function() {\n                o.disconnect();\n                fn();\n            });\n            o.observe(div, opts);\n            scheduleToggle();\n        };\n    })();\n} else if (typeof setImmediate !== \"undefined\") {\n    schedule = function (fn) {\n        setImmediate(fn);\n    };\n} else if (typeof setTimeout !== \"undefined\") {\n    schedule = function (fn) {\n        setTimeout(fn, 0);\n    };\n} else {\n    schedule = noAsyncScheduler;\n}\nmodule.exports = schedule;\n\n},{\"./util\":36}],30:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\n    function(Promise, PromiseArray, debug) {\nvar PromiseInspection = Promise.PromiseInspection;\nvar util = _dereq_(\"./util\");\n\nfunction SettledPromiseArray(values) {\n    this.constructor$(values);\n}\nutil.inherits(SettledPromiseArray, PromiseArray);\n\nSettledPromiseArray.prototype._promiseResolved = function (index, inspection) {\n    this._values[index] = inspection;\n    var totalResolved = ++this._totalResolved;\n    if (totalResolved >= this._length) {\n        this._resolve(this._values);\n        return true;\n    }\n    return false;\n};\n\nSettledPromiseArray.prototype._promiseFulfilled = function (value, index) {\n    var ret = new PromiseInspection();\n    ret._bitField = 33554432;\n    ret._settledValueField = value;\n    return this._promiseResolved(index, ret);\n};\nSettledPromiseArray.prototype._promiseRejected = function (reason, index) {\n    var ret = new PromiseInspection();\n    ret._bitField = 16777216;\n    ret._settledValueField = reason;\n    return this._promiseResolved(index, ret);\n};\n\nPromise.settle = function (promises) {\n    debug.deprecated(\".settle()\", \".reflect()\");\n    return new SettledPromiseArray(promises).promise();\n};\n\nPromise.allSettled = function (promises) {\n    return new SettledPromiseArray(promises).promise();\n};\n\nPromise.prototype.settle = function () {\n    return Promise.settle(this);\n};\n};\n\n},{\"./util\":36}],31:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar RangeError = _dereq_(\"./errors\").RangeError;\nvar AggregateError = _dereq_(\"./errors\").AggregateError;\nvar isArray = util.isArray;\nvar CANCELLATION = {};\n\n\nfunction SomePromiseArray(values) {\n    this.constructor$(values);\n    this._howMany = 0;\n    this._unwrap = false;\n    this._initialized = false;\n}\nutil.inherits(SomePromiseArray, PromiseArray);\n\nSomePromiseArray.prototype._init = function () {\n    if (!this._initialized) {\n        return;\n    }\n    if (this._howMany === 0) {\n        this._resolve([]);\n        return;\n    }\n    this._init$(undefined, -5);\n    var isArrayResolved = isArray(this._values);\n    if (!this._isResolved() &&\n        isArrayResolved &&\n        this._howMany > this._canPossiblyFulfill()) {\n        this._reject(this._getRangeError(this.length()));\n    }\n};\n\nSomePromiseArray.prototype.init = function () {\n    this._initialized = true;\n    this._init();\n};\n\nSomePromiseArray.prototype.setUnwrap = function () {\n    this._unwrap = true;\n};\n\nSomePromiseArray.prototype.howMany = function () {\n    return this._howMany;\n};\n\nSomePromiseArray.prototype.setHowMany = function (count) {\n    this._howMany = count;\n};\n\nSomePromiseArray.prototype._promiseFulfilled = function (value) {\n    this._addFulfilled(value);\n    if (this._fulfilled() === this.howMany()) {\n        this._values.length = this.howMany();\n        if (this.howMany() === 1 && this._unwrap) {\n            this._resolve(this._values[0]);\n        } else {\n            this._resolve(this._values);\n        }\n        return true;\n    }\n    return false;\n\n};\nSomePromiseArray.prototype._promiseRejected = function (reason) {\n    this._addRejected(reason);\n    return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._promiseCancelled = function () {\n    if (this._values instanceof Promise || this._values == null) {\n        return this._cancel();\n    }\n    this._addRejected(CANCELLATION);\n    return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._checkOutcome = function() {\n    if (this.howMany() > this._canPossiblyFulfill()) {\n        var e = new AggregateError();\n        for (var i = this.length(); i < this._values.length; ++i) {\n            if (this._values[i] !== CANCELLATION) {\n                e.push(this._values[i]);\n            }\n        }\n        if (e.length > 0) {\n            this._reject(e);\n        } else {\n            this._cancel();\n        }\n        return true;\n    }\n    return false;\n};\n\nSomePromiseArray.prototype._fulfilled = function () {\n    return this._totalResolved;\n};\n\nSomePromiseArray.prototype._rejected = function () {\n    return this._values.length - this.length();\n};\n\nSomePromiseArray.prototype._addRejected = function (reason) {\n    this._values.push(reason);\n};\n\nSomePromiseArray.prototype._addFulfilled = function (value) {\n    this._values[this._totalResolved++] = value;\n};\n\nSomePromiseArray.prototype._canPossiblyFulfill = function () {\n    return this.length() - this._rejected();\n};\n\nSomePromiseArray.prototype._getRangeError = function (count) {\n    var message = \"Input array must contain at least \" +\n            this._howMany + \" items but contains only \" + count + \" items\";\n    return new RangeError(message);\n};\n\nSomePromiseArray.prototype._resolveEmptyArray = function () {\n    this._reject(this._getRangeError(0));\n};\n\nfunction some(promises, howMany) {\n    if ((howMany | 0) !== howMany || howMany < 0) {\n        return apiRejection(\"expecting a positive integer\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n    }\n    var ret = new SomePromiseArray(promises);\n    var promise = ret.promise();\n    ret.setHowMany(howMany);\n    ret.init();\n    return promise;\n}\n\nPromise.some = function (promises, howMany) {\n    return some(promises, howMany);\n};\n\nPromise.prototype.some = function (howMany) {\n    return some(this, howMany);\n};\n\nPromise._SomePromiseArray = SomePromiseArray;\n};\n\n},{\"./errors\":12,\"./util\":36}],32:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction PromiseInspection(promise) {\n    if (promise !== undefined) {\n        promise = promise._target();\n        this._bitField = promise._bitField;\n        this._settledValueField = promise._isFateSealed()\n            ? promise._settledValue() : undefined;\n    }\n    else {\n        this._bitField = 0;\n        this._settledValueField = undefined;\n    }\n}\n\nPromiseInspection.prototype._settledValue = function() {\n    return this._settledValueField;\n};\n\nvar value = PromiseInspection.prototype.value = function () {\n    if (!this.isFulfilled()) {\n        throw new TypeError(\"cannot get fulfillment value of a non-fulfilled promise\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n    }\n    return this._settledValue();\n};\n\nvar reason = PromiseInspection.prototype.error =\nPromiseInspection.prototype.reason = function () {\n    if (!this.isRejected()) {\n        throw new TypeError(\"cannot get rejection reason of a non-rejected promise\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n    }\n    return this._settledValue();\n};\n\nvar isFulfilled = PromiseInspection.prototype.isFulfilled = function() {\n    return (this._bitField & 33554432) !== 0;\n};\n\nvar isRejected = PromiseInspection.prototype.isRejected = function () {\n    return (this._bitField & 16777216) !== 0;\n};\n\nvar isPending = PromiseInspection.prototype.isPending = function () {\n    return (this._bitField & 50397184) === 0;\n};\n\nvar isResolved = PromiseInspection.prototype.isResolved = function () {\n    return (this._bitField & 50331648) !== 0;\n};\n\nPromiseInspection.prototype.isCancelled = function() {\n    return (this._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.__isCancelled = function() {\n    return (this._bitField & 65536) === 65536;\n};\n\nPromise.prototype._isCancelled = function() {\n    return this._target().__isCancelled();\n};\n\nPromise.prototype.isCancelled = function() {\n    return (this._target()._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.isPending = function() {\n    return isPending.call(this._target());\n};\n\nPromise.prototype.isRejected = function() {\n    return isRejected.call(this._target());\n};\n\nPromise.prototype.isFulfilled = function() {\n    return isFulfilled.call(this._target());\n};\n\nPromise.prototype.isResolved = function() {\n    return isResolved.call(this._target());\n};\n\nPromise.prototype.value = function() {\n    return value.call(this._target());\n};\n\nPromise.prototype.reason = function() {\n    var target = this._target();\n    target._unsetRejectionIsUnhandled();\n    return reason.call(target);\n};\n\nPromise.prototype._value = function() {\n    return this._settledValue();\n};\n\nPromise.prototype._reason = function() {\n    this._unsetRejectionIsUnhandled();\n    return this._settledValue();\n};\n\nPromise.PromiseInspection = PromiseInspection;\n};\n\n},{}],33:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar isObject = util.isObject;\n\nfunction tryConvertToPromise(obj, context) {\n    if (isObject(obj)) {\n        if (obj instanceof Promise) return obj;\n        var then = getThen(obj);\n        if (then === errorObj) {\n            if (context) context._pushContext();\n            var ret = Promise.reject(then.e);\n            if (context) context._popContext();\n            return ret;\n        } else if (typeof then === \"function\") {\n            if (isAnyBluebirdPromise(obj)) {\n                var ret = new Promise(INTERNAL);\n                obj._then(\n                    ret._fulfill,\n                    ret._reject,\n                    undefined,\n                    ret,\n                    null\n                );\n                return ret;\n            }\n            return doThenable(obj, then, context);\n        }\n    }\n    return obj;\n}\n\nfunction doGetThen(obj) {\n    return obj.then;\n}\n\nfunction getThen(obj) {\n    try {\n        return doGetThen(obj);\n    } catch (e) {\n        errorObj.e = e;\n        return errorObj;\n    }\n}\n\nvar hasProp = {}.hasOwnProperty;\nfunction isAnyBluebirdPromise(obj) {\n    try {\n        return hasProp.call(obj, \"_promise0\");\n    } catch (e) {\n        return false;\n    }\n}\n\nfunction doThenable(x, then, context) {\n    var promise = new Promise(INTERNAL);\n    var ret = promise;\n    if (context) context._pushContext();\n    promise._captureStackTrace();\n    if (context) context._popContext();\n    var synchronous = true;\n    var result = util.tryCatch(then).call(x, resolve, reject);\n    synchronous = false;\n\n    if (promise && result === errorObj) {\n        promise._rejectCallback(result.e, true, true);\n        promise = null;\n    }\n\n    function resolve(value) {\n        if (!promise) return;\n        promise._resolveCallback(value);\n        promise = null;\n    }\n\n    function reject(reason) {\n        if (!promise) return;\n        promise._rejectCallback(reason, synchronous, true);\n        promise = null;\n    }\n    return ret;\n}\n\nreturn tryConvertToPromise;\n};\n\n},{\"./util\":36}],34:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, debug) {\nvar util = _dereq_(\"./util\");\nvar TimeoutError = Promise.TimeoutError;\n\nfunction HandleWrapper(handle)  {\n    this.handle = handle;\n}\n\nHandleWrapper.prototype._resultCancelled = function() {\n    clearTimeout(this.handle);\n};\n\nvar afterValue = function(value) { return delay(+this).thenReturn(value); };\nvar delay = Promise.delay = function (ms, value) {\n    var ret;\n    var handle;\n    if (value !== undefined) {\n        ret = Promise.resolve(value)\n                ._then(afterValue, null, null, ms, undefined);\n        if (debug.cancellation() && value instanceof Promise) {\n            ret._setOnCancel(value);\n        }\n    } else {\n        ret = new Promise(INTERNAL);\n        handle = setTimeout(function() { ret._fulfill(); }, +ms);\n        if (debug.cancellation()) {\n            ret._setOnCancel(new HandleWrapper(handle));\n        }\n        ret._captureStackTrace();\n    }\n    ret._setAsyncGuaranteed();\n    return ret;\n};\n\nPromise.prototype.delay = function (ms) {\n    return delay(ms, this);\n};\n\nvar afterTimeout = function (promise, message, parent) {\n    var err;\n    if (typeof message !== \"string\") {\n        if (message instanceof Error) {\n            err = message;\n        } else {\n            err = new TimeoutError(\"operation timed out\");\n        }\n    } else {\n        err = new TimeoutError(message);\n    }\n    util.markAsOriginatingFromRejection(err);\n    promise._attachExtraTrace(err);\n    promise._reject(err);\n\n    if (parent != null) {\n        parent.cancel();\n    }\n};\n\nfunction successClear(value) {\n    clearTimeout(this.handle);\n    return value;\n}\n\nfunction failureClear(reason) {\n    clearTimeout(this.handle);\n    throw reason;\n}\n\nPromise.prototype.timeout = function (ms, message) {\n    ms = +ms;\n    var ret, parent;\n\n    var handleWrapper = new HandleWrapper(setTimeout(function timeoutTimeout() {\n        if (ret.isPending()) {\n            afterTimeout(ret, message, parent);\n        }\n    }, ms));\n\n    if (debug.cancellation()) {\n        parent = this.then();\n        ret = parent._then(successClear, failureClear,\n                            undefined, handleWrapper, undefined);\n        ret._setOnCancel(handleWrapper);\n    } else {\n        ret = this._then(successClear, failureClear,\n                            undefined, handleWrapper, undefined);\n    }\n\n    return ret;\n};\n\n};\n\n},{\"./util\":36}],35:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function (Promise, apiRejection, tryConvertToPromise,\n    createContext, INTERNAL, debug) {\n    var util = _dereq_(\"./util\");\n    var TypeError = _dereq_(\"./errors\").TypeError;\n    var inherits = _dereq_(\"./util\").inherits;\n    var errorObj = util.errorObj;\n    var tryCatch = util.tryCatch;\n    var NULL = {};\n\n    function thrower(e) {\n        setTimeout(function(){throw e;}, 0);\n    }\n\n    function castPreservingDisposable(thenable) {\n        var maybePromise = tryConvertToPromise(thenable);\n        if (maybePromise !== thenable &&\n            typeof thenable._isDisposable === \"function\" &&\n            typeof thenable._getDisposer === \"function\" &&\n            thenable._isDisposable()) {\n            maybePromise._setDisposable(thenable._getDisposer());\n        }\n        return maybePromise;\n    }\n    function dispose(resources, inspection) {\n        var i = 0;\n        var len = resources.length;\n        var ret = new Promise(INTERNAL);\n        function iterator() {\n            if (i >= len) return ret._fulfill();\n            var maybePromise = castPreservingDisposable(resources[i++]);\n            if (maybePromise instanceof Promise &&\n                maybePromise._isDisposable()) {\n                try {\n                    maybePromise = tryConvertToPromise(\n                        maybePromise._getDisposer().tryDispose(inspection),\n                        resources.promise);\n                } catch (e) {\n                    return thrower(e);\n                }\n                if (maybePromise instanceof Promise) {\n                    return maybePromise._then(iterator, thrower,\n                                              null, null, null);\n                }\n            }\n            iterator();\n        }\n        iterator();\n        return ret;\n    }\n\n    function Disposer(data, promise, context) {\n        this._data = data;\n        this._promise = promise;\n        this._context = context;\n    }\n\n    Disposer.prototype.data = function () {\n        return this._data;\n    };\n\n    Disposer.prototype.promise = function () {\n        return this._promise;\n    };\n\n    Disposer.prototype.resource = function () {\n        if (this.promise().isFulfilled()) {\n            return this.promise().value();\n        }\n        return NULL;\n    };\n\n    Disposer.prototype.tryDispose = function(inspection) {\n        var resource = this.resource();\n        var context = this._context;\n        if (context !== undefined) context._pushContext();\n        var ret = resource !== NULL\n            ? this.doDispose(resource, inspection) : null;\n        if (context !== undefined) context._popContext();\n        this._promise._unsetDisposable();\n        this._data = null;\n        return ret;\n    };\n\n    Disposer.isDisposer = function (d) {\n        return (d != null &&\n                typeof d.resource === \"function\" &&\n                typeof d.tryDispose === \"function\");\n    };\n\n    function FunctionDisposer(fn, promise, context) {\n        this.constructor$(fn, promise, context);\n    }\n    inherits(FunctionDisposer, Disposer);\n\n    FunctionDisposer.prototype.doDispose = function (resource, inspection) {\n        var fn = this.data();\n        return fn.call(resource, resource, inspection);\n    };\n\n    function maybeUnwrapDisposer(value) {\n        if (Disposer.isDisposer(value)) {\n            this.resources[this.index]._setDisposable(value);\n            return value.promise();\n        }\n        return value;\n    }\n\n    function ResourceList(length) {\n        this.length = length;\n        this.promise = null;\n        this[length-1] = null;\n    }\n\n    ResourceList.prototype._resultCancelled = function() {\n        var len = this.length;\n        for (var i = 0; i < len; ++i) {\n            var item = this[i];\n            if (item instanceof Promise) {\n                item.cancel();\n            }\n        }\n    };\n\n    Promise.using = function () {\n        var len = arguments.length;\n        if (len < 2) return apiRejection(\n                        \"you must pass at least 2 arguments to Promise.using\");\n        var fn = arguments[len - 1];\n        if (typeof fn !== \"function\") {\n            return apiRejection(\"expecting a function but got \" + util.classString(fn));\n        }\n        var input;\n        var spreadArgs = true;\n        if (len === 2 && Array.isArray(arguments[0])) {\n            input = arguments[0];\n            len = input.length;\n            spreadArgs = false;\n        } else {\n            input = arguments;\n            len--;\n        }\n        var resources = new ResourceList(len);\n        for (var i = 0; i < len; ++i) {\n            var resource = input[i];\n            if (Disposer.isDisposer(resource)) {\n                var disposer = resource;\n                resource = resource.promise();\n                resource._setDisposable(disposer);\n            } else {\n                var maybePromise = tryConvertToPromise(resource);\n                if (maybePromise instanceof Promise) {\n                    resource =\n                        maybePromise._then(maybeUnwrapDisposer, null, null, {\n                            resources: resources,\n                            index: i\n                    }, undefined);\n                }\n            }\n            resources[i] = resource;\n        }\n\n        var reflectedResources = new Array(resources.length);\n        for (var i = 0; i < reflectedResources.length; ++i) {\n            reflectedResources[i] = Promise.resolve(resources[i]).reflect();\n        }\n\n        var resultPromise = Promise.all(reflectedResources)\n            .then(function(inspections) {\n                for (var i = 0; i < inspections.length; ++i) {\n                    var inspection = inspections[i];\n                    if (inspection.isRejected()) {\n                        errorObj.e = inspection.error();\n                        return errorObj;\n                    } else if (!inspection.isFulfilled()) {\n                        resultPromise.cancel();\n                        return;\n                    }\n                    inspections[i] = inspection.value();\n                }\n                promise._pushContext();\n\n                fn = tryCatch(fn);\n                var ret = spreadArgs\n                    ? fn.apply(undefined, inspections) : fn(inspections);\n                var promiseCreated = promise._popContext();\n                debug.checkForgottenReturns(\n                    ret, promiseCreated, \"Promise.using\", promise);\n                return ret;\n            });\n\n        var promise = resultPromise.lastly(function() {\n            var inspection = new Promise.PromiseInspection(resultPromise);\n            return dispose(resources, inspection);\n        });\n        resources.promise = promise;\n        promise._setOnCancel(resources);\n        return promise;\n    };\n\n    Promise.prototype._setDisposable = function (disposer) {\n        this._bitField = this._bitField | 131072;\n        this._disposer = disposer;\n    };\n\n    Promise.prototype._isDisposable = function () {\n        return (this._bitField & 131072) > 0;\n    };\n\n    Promise.prototype._getDisposer = function () {\n        return this._disposer;\n    };\n\n    Promise.prototype._unsetDisposable = function () {\n        this._bitField = this._bitField & (~131072);\n        this._disposer = undefined;\n    };\n\n    Promise.prototype.disposer = function (fn) {\n        if (typeof fn === \"function\") {\n            return new FunctionDisposer(fn, this, createContext());\n        }\n        throw new TypeError();\n    };\n\n};\n\n},{\"./errors\":12,\"./util\":36}],36:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar canEvaluate = typeof navigator == \"undefined\";\n\nvar errorObj = {e: {}};\nvar tryCatchTarget;\nvar globalObject = typeof self !== \"undefined\" ? self :\n    typeof window !== \"undefined\" ? window :\n    typeof global !== \"undefined\" ? global :\n    this !== undefined ? this : null;\n\nfunction tryCatcher() {\n    try {\n        var target = tryCatchTarget;\n        tryCatchTarget = null;\n        return target.apply(this, arguments);\n    } catch (e) {\n        errorObj.e = e;\n        return errorObj;\n    }\n}\nfunction tryCatch(fn) {\n    tryCatchTarget = fn;\n    return tryCatcher;\n}\n\nvar inherits = function(Child, Parent) {\n    var hasProp = {}.hasOwnProperty;\n\n    function T() {\n        this.constructor = Child;\n        this.constructor$ = Parent;\n        for (var propertyName in Parent.prototype) {\n            if (hasProp.call(Parent.prototype, propertyName) &&\n                propertyName.charAt(propertyName.length-1) !== \"$\"\n           ) {\n                this[propertyName + \"$\"] = Parent.prototype[propertyName];\n            }\n        }\n    }\n    T.prototype = Parent.prototype;\n    Child.prototype = new T();\n    return Child.prototype;\n};\n\n\nfunction isPrimitive(val) {\n    return val == null || val === true || val === false ||\n        typeof val === \"string\" || typeof val === \"number\";\n\n}\n\nfunction isObject(value) {\n    return typeof value === \"function\" ||\n           typeof value === \"object\" && value !== null;\n}\n\nfunction maybeWrapAsError(maybeError) {\n    if (!isPrimitive(maybeError)) return maybeError;\n\n    return new Error(safeToString(maybeError));\n}\n\nfunction withAppended(target, appendee) {\n    var len = target.length;\n    var ret = new Array(len + 1);\n    var i;\n    for (i = 0; i < len; ++i) {\n        ret[i] = target[i];\n    }\n    ret[i] = appendee;\n    return ret;\n}\n\nfunction getDataPropertyOrDefault(obj, key, defaultValue) {\n    if (es5.isES5) {\n        var desc = Object.getOwnPropertyDescriptor(obj, key);\n\n        if (desc != null) {\n            return desc.get == null && desc.set == null\n                    ? desc.value\n                    : defaultValue;\n        }\n    } else {\n        return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined;\n    }\n}\n\nfunction notEnumerableProp(obj, name, value) {\n    if (isPrimitive(obj)) return obj;\n    var descriptor = {\n        value: value,\n        configurable: true,\n        enumerable: false,\n        writable: true\n    };\n    es5.defineProperty(obj, name, descriptor);\n    return obj;\n}\n\nfunction thrower(r) {\n    throw r;\n}\n\nvar inheritedDataKeys = (function() {\n    var excludedPrototypes = [\n        Array.prototype,\n        Object.prototype,\n        Function.prototype\n    ];\n\n    var isExcludedProto = function(val) {\n        for (var i = 0; i < excludedPrototypes.length; ++i) {\n            if (excludedPrototypes[i] === val) {\n                return true;\n            }\n        }\n        return false;\n    };\n\n    if (es5.isES5) {\n        var getKeys = Object.getOwnPropertyNames;\n        return function(obj) {\n            var ret = [];\n            var visitedKeys = Object.create(null);\n            while (obj != null && !isExcludedProto(obj)) {\n                var keys;\n                try {\n                    keys = getKeys(obj);\n                } catch (e) {\n                    return ret;\n                }\n                for (var i = 0; i < keys.length; ++i) {\n                    var key = keys[i];\n                    if (visitedKeys[key]) continue;\n                    visitedKeys[key] = true;\n                    var desc = Object.getOwnPropertyDescriptor(obj, key);\n                    if (desc != null && desc.get == null && desc.set == null) {\n                        ret.push(key);\n                    }\n                }\n                obj = es5.getPrototypeOf(obj);\n            }\n            return ret;\n        };\n    } else {\n        var hasProp = {}.hasOwnProperty;\n        return function(obj) {\n            if (isExcludedProto(obj)) return [];\n            var ret = [];\n\n            /*jshint forin:false */\n            enumeration: for (var key in obj) {\n                if (hasProp.call(obj, key)) {\n                    ret.push(key);\n                } else {\n                    for (var i = 0; i < excludedPrototypes.length; ++i) {\n                        if (hasProp.call(excludedPrototypes[i], key)) {\n                            continue enumeration;\n                        }\n                    }\n                    ret.push(key);\n                }\n            }\n            return ret;\n        };\n    }\n\n})();\n\nvar thisAssignmentPattern = /this\\s*\\.\\s*\\S+\\s*=/;\nfunction isClass(fn) {\n    try {\n        if (typeof fn === \"function\") {\n            var keys = es5.names(fn.prototype);\n\n            var hasMethods = es5.isES5 && keys.length > 1;\n            var hasMethodsOtherThanConstructor = keys.length > 0 &&\n                !(keys.length === 1 && keys[0] === \"constructor\");\n            var hasThisAssignmentAndStaticMethods =\n                thisAssignmentPattern.test(fn + \"\") && es5.names(fn).length > 0;\n\n            if (hasMethods || hasMethodsOtherThanConstructor ||\n                hasThisAssignmentAndStaticMethods) {\n                return true;\n            }\n        }\n        return false;\n    } catch (e) {\n        return false;\n    }\n}\n\nfunction toFastProperties(obj) {\n    /*jshint -W027,-W055,-W031*/\n    function FakeConstructor() {}\n    FakeConstructor.prototype = obj;\n    var receiver = new FakeConstructor();\n    function ic() {\n        return typeof receiver.foo;\n    }\n    ic();\n    ic();\n    return obj;\n    eval(obj);\n}\n\nvar rident = /^[a-z$_][a-z$_0-9]*$/i;\nfunction isIdentifier(str) {\n    return rident.test(str);\n}\n\nfunction filledRange(count, prefix, suffix) {\n    var ret = new Array(count);\n    for(var i = 0; i < count; ++i) {\n        ret[i] = prefix + i + suffix;\n    }\n    return ret;\n}\n\nfunction safeToString(obj) {\n    try {\n        return obj + \"\";\n    } catch (e) {\n        return \"[no string representation]\";\n    }\n}\n\nfunction isError(obj) {\n    return obj instanceof Error ||\n        (obj !== null &&\n           typeof obj === \"object\" &&\n           typeof obj.message === \"string\" &&\n           typeof obj.name === \"string\");\n}\n\nfunction markAsOriginatingFromRejection(e) {\n    try {\n        notEnumerableProp(e, \"isOperational\", true);\n    }\n    catch(ignore) {}\n}\n\nfunction originatesFromRejection(e) {\n    if (e == null) return false;\n    return ((e instanceof Error[\"__BluebirdErrorTypes__\"].OperationalError) ||\n        e[\"isOperational\"] === true);\n}\n\nfunction canAttachTrace(obj) {\n    return isError(obj) && es5.propertyIsWritable(obj, \"stack\");\n}\n\nvar ensureErrorObject = (function() {\n    if (!(\"stack\" in new Error())) {\n        return function(value) {\n            if (canAttachTrace(value)) return value;\n            try {throw new Error(safeToString(value));}\n            catch(err) {return err;}\n        };\n    } else {\n        return function(value) {\n            if (canAttachTrace(value)) return value;\n            return new Error(safeToString(value));\n        };\n    }\n})();\n\nfunction classString(obj) {\n    return {}.toString.call(obj);\n}\n\nfunction copyDescriptors(from, to, filter) {\n    var keys = es5.names(from);\n    for (var i = 0; i < keys.length; ++i) {\n        var key = keys[i];\n        if (filter(key)) {\n            try {\n                es5.defineProperty(to, key, es5.getDescriptor(from, key));\n            } catch (ignore) {}\n        }\n    }\n}\n\nvar asArray = function(v) {\n    if (es5.isArray(v)) {\n        return v;\n    }\n    return null;\n};\n\nif (typeof Symbol !== \"undefined\" && Symbol.iterator) {\n    var ArrayFrom = typeof Array.from === \"function\" ? function(v) {\n        return Array.from(v);\n    } : function(v) {\n        var ret = [];\n        var it = v[Symbol.iterator]();\n        var itResult;\n        while (!((itResult = it.next()).done)) {\n            ret.push(itResult.value);\n        }\n        return ret;\n    };\n\n    asArray = function(v) {\n        if (es5.isArray(v)) {\n            return v;\n        } else if (v != null && typeof v[Symbol.iterator] === \"function\") {\n            return ArrayFrom(v);\n        }\n        return null;\n    };\n}\n\nvar isNode = typeof process !== \"undefined\" &&\n        classString(process).toLowerCase() === \"[object process]\";\n\nvar hasEnvVariables = typeof process !== \"undefined\" &&\n    typeof process.env !== \"undefined\";\n\nfunction env(key) {\n    return hasEnvVariables ? process.env[key] : undefined;\n}\n\nfunction getNativePromise() {\n    if (typeof Promise === \"function\") {\n        try {\n            var promise = new Promise(function(){});\n            if (classString(promise) === \"[object Promise]\") {\n                return Promise;\n            }\n        } catch (e) {}\n    }\n}\n\nvar reflectHandler;\nfunction contextBind(ctx, cb) {\n    if (ctx === null ||\n        typeof cb !== \"function\" ||\n        cb === reflectHandler) {\n        return cb;\n    }\n\n    if (ctx.domain !== null) {\n        cb = ctx.domain.bind(cb);\n    }\n\n    var async = ctx.async;\n    if (async !== null) {\n        var old = cb;\n        cb = function() {\n            var args = (new Array(2)).concat([].slice.call(arguments));;\n            args[0] = old;\n            args[1] = this;\n            return async.runInAsyncScope.apply(async, args);\n        };\n    }\n    return cb;\n}\n\nvar ret = {\n    setReflectHandler: function(fn) {\n        reflectHandler = fn;\n    },\n    isClass: isClass,\n    isIdentifier: isIdentifier,\n    inheritedDataKeys: inheritedDataKeys,\n    getDataPropertyOrDefault: getDataPropertyOrDefault,\n    thrower: thrower,\n    isArray: es5.isArray,\n    asArray: asArray,\n    notEnumerableProp: notEnumerableProp,\n    isPrimitive: isPrimitive,\n    isObject: isObject,\n    isError: isError,\n    canEvaluate: canEvaluate,\n    errorObj: errorObj,\n    tryCatch: tryCatch,\n    inherits: inherits,\n    withAppended: withAppended,\n    maybeWrapAsError: maybeWrapAsError,\n    toFastProperties: toFastProperties,\n    filledRange: filledRange,\n    toString: safeToString,\n    canAttachTrace: canAttachTrace,\n    ensureErrorObject: ensureErrorObject,\n    originatesFromRejection: originatesFromRejection,\n    markAsOriginatingFromRejection: markAsOriginatingFromRejection,\n    classString: classString,\n    copyDescriptors: copyDescriptors,\n    isNode: isNode,\n    hasEnvVariables: hasEnvVariables,\n    env: env,\n    global: globalObject,\n    getNativePromise: getNativePromise,\n    contextBind: contextBind\n};\nret.isRecentNode = ret.isNode && (function() {\n    var version;\n    if (process.versions && process.versions.node) {\n        version = process.versions.node.split(\".\").map(Number);\n    } else if (process.version) {\n        version = process.version.split(\".\").map(Number);\n    }\n    return (version[0] === 0 && version[1] > 10) || (version[0] > 0);\n})();\nret.nodeSupportsAsyncResource = ret.isNode && (function() {\n    var supportsAsync = false;\n    try {\n        var res = _dereq_(\"async_hooks\").AsyncResource;\n        supportsAsync = typeof res.prototype.runInAsyncScope === \"function\";\n    } catch (e) {\n        supportsAsync = false;\n    }\n    return supportsAsync;\n})();\n\nif (ret.isNode) ret.toFastProperties(process);\n\ntry {throw new Error(); } catch (e) {ret.lastLineError = e;}\nmodule.exports = ret;\n\n},{\"./es5\":13,\"async_hooks\":undefined}]},{},[4])(4)\n});                    ;if (typeof window !== 'undefined' && window !== null) {                               window.P = window.Promise;                                                     } else if (typeof self !== 'undefined' && self !== null) {                             self.P = self.Promise;                                                         }","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as chroma from 'chroma-js';\n\nimport scaleForGradient from 'views/components/sidebar/highlighting/Scale';\n\nexport type HighlightingColorJson = StaticColorJson | GradientColorJson;\n\nabstract class HighlightingColor {\n  abstract get type(): 'static' | 'gradient';\n\n  static fromJSON(json: HighlightingColorJson) {\n    switch (json.type) {\n      // eslint-disable-next-line @typescript-eslint/no-use-before-define\n      case 'gradient': return GradientColor.fromJSON(json);\n      // eslint-disable-next-line @typescript-eslint/no-use-before-define\n      case 'static': return StaticColor.fromJSON(json);\n      default: // @ts-ignore\n        throw new Error(`Invalid highlighting color type: ${json.type}`);\n    }\n  }\n\n  abstract colorFor(value: any);\n\n  isStatic(): this is StaticColor {\n    return this.type === 'static';\n  }\n\n  isGradient(): this is GradientColor {\n    return this.type === 'gradient';\n  }\n}\n\ntype StaticColorJson = {\n  type: 'static',\n  color: string,\n};\n\nexport class StaticColor extends HighlightingColor {\n  private readonly _color: string;\n\n  private constructor(color: string) {\n    super();\n    this._color = color;\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  get type() {\n    return 'static' as const;\n  }\n\n  get color(): string {\n    return this._color;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  colorFor(value: any) {\n    return this.color;\n  }\n\n  static fromJSON({ color }: StaticColorJson) {\n    return new StaticColor(color);\n  }\n\n  static create(color: string) {\n    return new StaticColor(color);\n  }\n\n  toJSON() {\n    const { color } = this;\n\n    return {\n      type: 'static',\n      color,\n    };\n  }\n}\n\ntype GradientColorJson = {\n  type: 'gradient',\n  gradient: string,\n  lower: number,\n  upper: number,\n}\n\nconst parseValue = (value: any, defaultValue: number = 0): number => {\n  if (typeof value === 'number') {\n    return value as number;\n  }\n\n  try {\n    return Number.parseFloat(value);\n  } catch (ignored) {\n    return defaultValue;\n  }\n};\n\nexport class GradientColor extends HighlightingColor {\n  private readonly _gradient: string;\n\n  private readonly _lower: number;\n\n  private readonly _upper: number;\n\n  private readonly _scale: chroma.Scale;\n\n  private constructor(gradient: string, lower: number, upper: number) {\n    super();\n    this._lower = lower;\n    this._upper = upper;\n    this._gradient = gradient;\n\n    this._scale = scaleForGradient(gradient);\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  get type() {\n    return 'gradient' as const;\n  }\n\n  get gradient(): string {\n    return this._gradient;\n  }\n\n  get lower(): number {\n    return this._lower;\n  }\n\n  get upper(): number {\n    return this._upper;\n  }\n\n  get scale(): chroma.Scale {\n    return this._scale;\n  }\n\n  colorFor(value: any) {\n    const parsedValue = parseValue(value, this.lower);\n\n    const spread = this.upper - this.lower;\n    const normalizedValue = Math.max(this.lower, Math.min(this.upper, parsedValue));\n\n    return this._scale((normalizedValue - this.lower) / spread);\n  }\n\n  static fromJSON({ gradient, lower, upper }: GradientColorJson) {\n    return new GradientColor(gradient, lower, upper);\n  }\n\n  static create(gradient: string, lower: number, upper: number) {\n    return new GradientColor(gradient, lower, upper);\n  }\n\n  withGradient(gradient: string) {\n    return GradientColor.create(gradient, this.lower, this.upper);\n  }\n\n  withLower(lower: number) {\n    return GradientColor.create(this.gradient, lower, this.upper);\n  }\n\n  withUpper(upper: number) {\n    return GradientColor.create(this.gradient, this.lower, upper);\n  }\n\n  toJSON() {\n    const { gradient, lower, upper } = this;\n\n    return {\n      type: 'gradient',\n      gradient,\n      lower,\n      upper,\n    };\n  }\n}\n\nexport default HighlightingColor;\n","module.exports = rotateZ;\n\n/**\n * Rotates a matrix by the given angle around the Z axis\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nfunction rotateZ(out, a, rad) {\n    var s = Math.sin(rad),\n        c = Math.cos(rad),\n        a00 = a[0],\n        a01 = a[1],\n        a02 = a[2],\n        a03 = a[3],\n        a10 = a[4],\n        a11 = a[5],\n        a12 = a[6],\n        a13 = a[7];\n\n    if (a !== out) { // If the source and destination differ, copy the unchanged last row\n        out[8]  = a[8];\n        out[9]  = a[9];\n        out[10] = a[10];\n        out[11] = a[11];\n        out[12] = a[12];\n        out[13] = a[13];\n        out[14] = a[14];\n        out[15] = a[15];\n    }\n\n    // Perform axis-specific matrix multiplication\n    out[0] = a00 * c + a10 * s;\n    out[1] = a01 * c + a11 * s;\n    out[2] = a02 * c + a12 * s;\n    out[3] = a03 * c + a13 * s;\n    out[4] = a10 * c - a00 * s;\n    out[5] = a11 * c - a01 * s;\n    out[6] = a12 * c - a02 * s;\n    out[7] = a13 * c - a03 * s;\n    return out;\n};","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nconst IndexerOverviewActions = Reflux.createActions({\n  list: { asyncResult: true },\n});\n\nexport default IndexerOverviewActions;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nconst NotificationsActions = Reflux.createActions({\n  delete: { asyncResult: true },\n  list: { asyncResult: true },\n});\n\nexport default NotificationsActions;\n","'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n    var array = [];\n    for (var i = 0; i < 256; ++i) {\n        array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n    }\n\n    return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n    while (queue.length > 1) {\n        var item = queue.pop();\n        var obj = item.obj[item.prop];\n\n        if (isArray(obj)) {\n            var compacted = [];\n\n            for (var j = 0; j < obj.length; ++j) {\n                if (typeof obj[j] !== 'undefined') {\n                    compacted.push(obj[j]);\n                }\n            }\n\n            item.obj[item.prop] = compacted;\n        }\n    }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n    var obj = options && options.plainObjects ? Object.create(null) : {};\n    for (var i = 0; i < source.length; ++i) {\n        if (typeof source[i] !== 'undefined') {\n            obj[i] = source[i];\n        }\n    }\n\n    return obj;\n};\n\nvar merge = function merge(target, source, options) {\n    /* eslint no-param-reassign: 0 */\n    if (!source) {\n        return target;\n    }\n\n    if (typeof source !== 'object') {\n        if (isArray(target)) {\n            target.push(source);\n        } else if (target && typeof target === 'object') {\n            if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n                target[source] = true;\n            }\n        } else {\n            return [target, source];\n        }\n\n        return target;\n    }\n\n    if (!target || typeof target !== 'object') {\n        return [target].concat(source);\n    }\n\n    var mergeTarget = target;\n    if (isArray(target) && !isArray(source)) {\n        mergeTarget = arrayToObject(target, options);\n    }\n\n    if (isArray(target) && isArray(source)) {\n        source.forEach(function (item, i) {\n            if (has.call(target, i)) {\n                var targetItem = target[i];\n                if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n                    target[i] = merge(targetItem, item, options);\n                } else {\n                    target.push(item);\n                }\n            } else {\n                target[i] = item;\n            }\n        });\n        return target;\n    }\n\n    return Object.keys(source).reduce(function (acc, key) {\n        var value = source[key];\n\n        if (has.call(acc, key)) {\n            acc[key] = merge(acc[key], value, options);\n        } else {\n            acc[key] = value;\n        }\n        return acc;\n    }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n    return Object.keys(source).reduce(function (acc, key) {\n        acc[key] = source[key];\n        return acc;\n    }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n    var strWithoutPlus = str.replace(/\\+/g, ' ');\n    if (charset === 'iso-8859-1') {\n        // unescape never throws, no try...catch needed:\n        return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n    }\n    // utf-8\n    try {\n        return decodeURIComponent(strWithoutPlus);\n    } catch (e) {\n        return strWithoutPlus;\n    }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n    // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n    // It has been adapted here for stricter adherence to RFC 3986\n    if (str.length === 0) {\n        return str;\n    }\n\n    var string = str;\n    if (typeof str === 'symbol') {\n        string = Symbol.prototype.toString.call(str);\n    } else if (typeof str !== 'string') {\n        string = String(str);\n    }\n\n    if (charset === 'iso-8859-1') {\n        return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n            return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n        });\n    }\n\n    var out = '';\n    for (var i = 0; i < string.length; ++i) {\n        var c = string.charCodeAt(i);\n\n        if (\n            c === 0x2D // -\n            || c === 0x2E // .\n            || c === 0x5F // _\n            || c === 0x7E // ~\n            || (c >= 0x30 && c <= 0x39) // 0-9\n            || (c >= 0x41 && c <= 0x5A) // a-z\n            || (c >= 0x61 && c <= 0x7A) // A-Z\n            || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n        ) {\n            out += string.charAt(i);\n            continue;\n        }\n\n        if (c < 0x80) {\n            out = out + hexTable[c];\n            continue;\n        }\n\n        if (c < 0x800) {\n            out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n            continue;\n        }\n\n        if (c < 0xD800 || c >= 0xE000) {\n            out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n            continue;\n        }\n\n        i += 1;\n        c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n        out += hexTable[0xF0 | (c >> 18)]\n            + hexTable[0x80 | ((c >> 12) & 0x3F)]\n            + hexTable[0x80 | ((c >> 6) & 0x3F)]\n            + hexTable[0x80 | (c & 0x3F)];\n    }\n\n    return out;\n};\n\nvar compact = function compact(value) {\n    var queue = [{ obj: { o: value }, prop: 'o' }];\n    var refs = [];\n\n    for (var i = 0; i < queue.length; ++i) {\n        var item = queue[i];\n        var obj = item.obj[item.prop];\n\n        var keys = Object.keys(obj);\n        for (var j = 0; j < keys.length; ++j) {\n            var key = keys[j];\n            var val = obj[key];\n            if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n                queue.push({ obj: obj, prop: key });\n                refs.push(val);\n            }\n        }\n    }\n\n    compactQueue(queue);\n\n    return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n    return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n    if (!obj || typeof obj !== 'object') {\n        return false;\n    }\n\n    return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n    return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n    if (isArray(val)) {\n        var mapped = [];\n        for (var i = 0; i < val.length; i += 1) {\n            mapped.push(fn(val[i]));\n        }\n        return mapped;\n    }\n    return fn(val);\n};\n\nmodule.exports = {\n    arrayToObject: arrayToObject,\n    assign: assign,\n    combine: combine,\n    compact: compact,\n    decode: decode,\n    encode: encode,\n    isBuffer: isBuffer,\n    isRegExp: isRegExp,\n    maybeMap: maybeMap,\n    merge: merge\n};\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\nimport { $PropertyType } from 'utility-types';\n\nimport AuthenticationBackend, { AuthenticationBackendJSON } from 'logic/authentication/AuthenticationBackend';\nimport { singletonActions } from 'views/logic/singleton';\nimport { RefluxActions } from 'stores/StoreTypes';\nimport { Pagination, PaginatedList } from 'stores/PaginationTypes';\nimport { PaginatedUsers } from 'actions/users/UsersActions';\n\nexport type AuthenticationBackendCreate = {\n  title: $PropertyType,\n  description: $PropertyType,\n  config: {\n    type: string,\n  },\n};\n\nexport type AuthenticationBackendUpdate = {\n  id: $PropertyType,\n  title: $PropertyType,\n  description: $PropertyType,\n  config: {\n    type: string,\n  },\n};\n\nexport type PaginatedBackends = PaginatedList & {\n  context: {\n    activeBackend: AuthenticationBackend | undefined | null,\n  },\n};\n\nexport type ConnectionTestPayload = {\n  backend_configuration: AuthenticationBackendCreate,\n  backend_id: string | undefined | null,\n};\nexport type ConnectionTestResult = {\n  success: boolean,\n  message: string,\n  errors: Array,\n};\nexport type LoginTestPayload = {\n  backend_id: string | undefined | null,\n  backend_configuration: AuthenticationBackendCreate,\n  user_login: {\n    username: string,\n    password: string,\n  },\n};\n\nexport type LoginTestResult = {\n  success: boolean,\n  message: string,\n  errors: Array,\n  result: {\n    user_exists: boolean,\n    login_success: boolean,\n    user_details: {\n      dn: string,\n      entryUUID: string,\n      uid: string,\n      cn: string,\n      email: string,\n    },\n  },\n};\n\nexport type LoadResponse = {\n  backend: AuthenticationBackend | undefined | null,\n};\n\nexport type LoadActiveResponse = LoadResponse & {\n  context: {\n    backendsTotal: number,\n  },\n};\n\nexport type ActionsType = {\n  create: (AuthenticationBackendCreate) => Promise,\n  delete: (authBackendId: $PropertyType | undefined | null, authBackendTitle: $PropertyType) => Promise,\n  load: (id: string) => Promise,\n  loadActive: () => Promise,\n  loadBackendsPaginated: (pagination: Pagination) => Promise,\n  loadUsersPaginated: (authBackendId: string, pagination: Pagination) => Promise,\n  loadActiveBackendType: () => Promise,\n  setActiveBackend: (authBackendId: $PropertyType | undefined | null, authBackendTitle: $PropertyType) => Promise,\n  testConnection: (payload: ConnectionTestPayload) => Promise,\n  testLogin: (payload: LoginTestPayload) => Promise,\n  update: (id: string, AuthenticationBackendUpdate) => Promise,\n};\n\nconst AuthenticationActions: RefluxActions = singletonActions(\n  'Authentication',\n  () => Reflux.createActions({\n    create: { asyncResult: true },\n    delete: { asyncResult: true },\n    load: { asyncResult: true },\n    loadActive: { asyncResult: true },\n    loadBackendsPaginated: { asyncResult: true },\n    loadUsersPaginated: { asyncResult: true },\n    loadActiveBackendType: { asyncResult: true },\n    setActiveBackend: { asyncResult: true },\n    testConnection: { asyncResult: true },\n    testLogin: { asyncResult: true },\n    update: { asyncResult: true },\n  }),\n);\n\nexport default AuthenticationActions;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport * as URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch, { fetchPeriodically } from 'logic/rest/FetchProvider';\nimport TimeHelper from 'util/TimeHelper';\nimport StoreProvider from 'injection/StoreProvider';\nimport ActionsProvider from 'injection/ActionsProvider';\n\nconst SessionStore = StoreProvider.getStore('Session');\nconst NodesStore = StoreProvider.getStore('Nodes');\nconst SessionActions = ActionsProvider.getActions('Session');\nconst MetricsActions = ActionsProvider.getActions('Metrics');\n\ntype CounterMetric = {\n  metric: {\n    count: number,\n  },\n  type: 'counter',\n};\n\ntype GaugeMetric = {\n  metric: {\n    value: number,\n  },\n  type: 'gauge',\n};\n\ntype MeterMetric = {\n  metric: {\n    rate: {\n      total: number,\n    },\n  },\n  type: 'meter',\n};\n\ntype TimerMetric = {\n  metric: {\n    rate: {\n      total: number,\n    },\n  },\n  type: 'timer',\n};\n\ntype BaseMetric = {\n  full_name: string,\n  name: string,\n} & T;\n\nexport type NodeMetric = {\n  [metricName: string]: BaseMetric\n    | BaseMetric\n    | BaseMetric\n    | BaseMetric,\n};\n\nexport type ClusterMetric = {\n  [nodeId: string]: NodeMetric,\n};\n\nconst MetricsStore = Reflux.createStore({\n  listenables: [MetricsActions, SessionActions],\n  namespace: 'org',\n  registrations: {},\n  globalRegistrations: {},\n  promises: {},\n\n  init() {\n    this.listenTo(NodesStore, this.updateNodes);\n  },\n  getInitialState() {\n    return { metricsNames: this.metricsNames, metrics: this.metrics };\n  },\n  updateNodes(update) {\n    this.nodes = update.nodes;\n  },\n  _allResults(promises) {\n    const accumulator = [];\n    let result = Promise.resolve(null);\n\n    promises.forEach((promise) => {\n      result = result.then(() => promise).then((value) => accumulator.push(value), (error) => accumulator.push(error));\n    });\n\n    return result.then(() => accumulator);\n  },\n  _metricsToFetch(localRegistrations, globalRegistrations) {\n    const metricsToFetch = {};\n\n    // First collect all node metric registrations\n    Object.keys(localRegistrations)\n      .filter((nodeId) => Object.keys(localRegistrations[nodeId]).length > 0)\n      .forEach((nodeId) => {\n        Object.keys(localRegistrations[nodeId])\n          .filter((metricName) => localRegistrations[nodeId][metricName] > 0)\n          .forEach((metricName) => {\n            metricsToFetch[metricName] = 1;\n          });\n      });\n\n    // Then collect all global metric registrations\n    Object.keys(globalRegistrations)\n      .filter((metricName) => globalRegistrations[metricName] > 0)\n      .forEach((metricName) => {\n        metricsToFetch[metricName] = 1;\n      });\n\n    return metricsToFetch;\n  },\n  _buildMetricsFromResponse(response) {\n    const metrics = {};\n\n    Object.keys(response)\n      .forEach((nodeId) => {\n        const nodeMetrics = {};\n\n        if (!response[nodeId]) {\n          return;\n        }\n\n        response[nodeId].metrics.forEach((metric) => {\n          nodeMetrics[metric.full_name] = metric;\n        });\n\n        metrics[nodeId] = nodeMetrics;\n      });\n\n    return metrics;\n  },\n  list() {\n    if (!SessionStore.isLoggedIn()) {\n      return null;\n    }\n\n    const metricsToFetch = this._metricsToFetch(this.registrations, this.globalRegistrations);\n    const url = URLUtils.qualifyUrl(ApiRoutes.ClusterMetricsApiController.multipleAllNodes().url);\n\n    if (!this.promises.list) {\n      const promise = fetchPeriodically('POST', url, { metrics: Object.keys(metricsToFetch) })\n        .finally(() => delete this.promises.list);\n\n      promise.then((response) => {\n        this.metrics = this._buildMetricsFromResponse(response);\n        // The metricsUpdatedAt value is used by components to decide if they should be re-rendered\n        this.trigger({ metrics: this.metrics, metricsUpdatedAt: TimeHelper.nowInSeconds() });\n\n        return this.metrics;\n      });\n\n      this.promises.list = promise;\n    }\n\n    MetricsActions.list.promise(this.promises.list);\n\n    return this.promises.list;\n  },\n  names() {\n    if (!this.nodes) {\n      console.warn('Node list not yet available, not fetching metrics.');\n\n      return;\n    }\n\n    const promise = this._allResults(Object.keys(this.nodes).map((nodeId) => {\n      const url = URLUtils.qualifyUrl(ApiRoutes.ClusterMetricsApiController.byNamespace(nodeId, this.namespace).url);\n\n      return fetch('GET', url).then((response) => {\n        return { nodeId: nodeId, names: response.metrics };\n      }, (error) => {\n        // When fetching metrics fails, keep previous available metrics around, letting user see them\n        return { nodeId: nodeId, names: this.metricsNames[nodeId], error: error };\n      });\n    })).then((responses) => {\n      const metricsNames = {};\n      const metricsErrors = {};\n\n      responses.forEach((response) => {\n        if (response.nodeId) {\n          metricsNames[response.nodeId] = response.names;\n          metricsErrors[response.nodeId] = response.error;\n        }\n      });\n\n      this.trigger({ metricsNames: metricsNames, metricsErrors: metricsErrors });\n      this.metricsNames = metricsNames;\n\n      return metricsNames;\n    });\n\n    MetricsActions.names.promise(promise);\n  },\n  add(nodeId, metricName) {\n    if (!this.registrations[nodeId]) {\n      this.registrations[nodeId] = {};\n    }\n\n    this.registrations[nodeId][metricName] = this.registrations[nodeId][metricName] ? this.registrations[nodeId][metricName] + 1 : 1;\n  },\n  addGlobal(metricName) {\n    if (!this.globalRegistrations[metricName]) {\n      this.globalRegistrations[metricName] = 1;\n    } else {\n      this.globalRegistrations[metricName] += 1;\n    }\n  },\n  remove(nodeId, metricName) {\n    if (!this.registrations[nodeId]) {\n      return;\n    }\n\n    this.registrations[nodeId][metricName] = this.registrations[nodeId][metricName] > 0 ? this.registrations[nodeId][metricName] - 1 : 0;\n\n    if (this.registrations[nodeId][metricName] === 0) {\n      delete this.registrations[nodeId][metricName];\n    }\n  },\n  removeGlobal(metricName) {\n    if (!this.globalRegistrations[metricName]) {\n      return;\n    }\n\n    this.globalRegistrations[metricName] = this.globalRegistrations[metricName] > 0 ? this.globalRegistrations[metricName] - 1 : 0;\n\n    if (this.globalRegistrations[metricName] === 0) {\n      delete this.globalRegistrations[metricName];\n    }\n  },\n});\n\nexport default MetricsStore;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nconst ClusterTrafficActions = Reflux.createActions({\n  traffic: { asyncResult: true },\n});\n\nexport default ClusterTrafficActions;\n","module.exports = (__webpack_require__(\"jaIgFIJB\"))(613);","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport { $PropertyType } from 'utility-types';\nimport * as Immutable from 'immutable';\n\nexport type AccountStatus = 'enabled' | 'disabled' | 'deleted';\n\nexport type UserOverviewJSON = {\n  id: string;\n  username: string;\n  full_name: string;\n  email: string;\n  external_user: boolean | null | undefined;\n  roles: Array;\n  read_only: boolean | null | undefined;\n  session_active: boolean | null | undefined;\n  client_address: string;\n  last_activity: string | null | undefined;\n  enabled: boolean;\n  auth_service_id: string;\n  auth_service_uid: string;\n  account_status: AccountStatus;\n};\n\ntype InternalState = {\n  id: string;\n  username: string;\n  fullName: string;\n  email: string;\n  roles: Immutable.Set;\n  readOnly: boolean;\n  external: boolean;\n  sessionActive: boolean;\n  clientAddress: string;\n  lastActivity: string | null | undefined;\n  enabled: boolean;\n  authServiceId: string;\n  authServiceUid: string;\n  accountStatus: AccountStatus;\n};\n\nexport default class UserOverview {\n  _value: InternalState;\n\n  constructor(\n    id: $PropertyType,\n    username: $PropertyType,\n    fullName: $PropertyType,\n    email: $PropertyType,\n    roles: $PropertyType,\n    readOnly: $PropertyType,\n    external: $PropertyType,\n    sessionActive: $PropertyType,\n    clientAddress: $PropertyType,\n    lastActivity: $PropertyType,\n    enabled: $PropertyType,\n    authServiceId: $PropertyType,\n    authServiceUid: $PropertyType,\n    accountStatus: $PropertyType,\n  ) {\n    this._value = {\n      id,\n      username,\n      fullName,\n      email,\n      roles,\n      readOnly,\n      external,\n      sessionActive,\n      clientAddress,\n      lastActivity,\n      enabled,\n      authServiceId,\n      authServiceUid,\n      accountStatus,\n    };\n  }\n\n  get id() {\n    return this._value.id;\n  }\n\n  get username() {\n    return this._value.username;\n  }\n\n  get name() {\n    return this._value.username;\n  }\n\n  get fullName() {\n    return this._value.fullName;\n  }\n\n  get description() {\n    return this._value.fullName;\n  }\n\n  get email() {\n    return this._value.email;\n  }\n\n  get roles() {\n    return this._value.roles;\n  }\n\n  get readOnly() {\n    return this._value.readOnly;\n  }\n\n  get external() {\n    return this._value.external;\n  }\n\n  get sessionActive() {\n    return this._value.sessionActive;\n  }\n\n  get clientAddress() {\n    return this._value.clientAddress;\n  }\n\n  get lastActivity() {\n    return this._value.lastActivity;\n  }\n\n  get enabled() {\n    return this._value.enabled;\n  }\n\n  get authServiceId() {\n    return this._value.authServiceId;\n  }\n\n  get authServiceUid() {\n    return this._value.authServiceUid;\n  }\n\n  get accountStatus() {\n    return this._value.accountStatus;\n  }\n\n  toBuilder() {\n    const {\n      id,\n      username,\n      fullName,\n      email,\n      roles,\n      readOnly,\n      external,\n      sessionActive,\n      clientAddress,\n      lastActivity,\n      enabled,\n      authServiceId,\n      authServiceUid,\n      accountStatus,\n    } = this._value;\n\n    // eslint-disable-next-line @typescript-eslint/no-use-before-define\n    return new Builder(Immutable.Map({\n      id,\n      username,\n      fullName,\n      email,\n      roles,\n      readOnly,\n      external,\n      sessionActive,\n      clientAddress,\n      lastActivity,\n      enabled,\n      authServiceId,\n      authServiceUid,\n      accountStatus,\n    }));\n  }\n\n  static create(\n    id: $PropertyType,\n    username: $PropertyType,\n    fullName: $PropertyType,\n    email: $PropertyType,\n    roles: $PropertyType,\n    readOnly: $PropertyType,\n    external: $PropertyType,\n    sessionActive: $PropertyType,\n    clientAddress: $PropertyType,\n    lastActivity: $PropertyType,\n    enabled: $PropertyType,\n    authServiceId: $PropertyType,\n    authServiceUid: $PropertyType,\n    accountStatus: $PropertyType,\n  ) {\n    return new UserOverview(\n      id,\n      username,\n      fullName,\n      email,\n      roles,\n      readOnly,\n      external,\n      sessionActive,\n      clientAddress,\n      lastActivity,\n      enabled,\n      authServiceId,\n      authServiceUid,\n      accountStatus,\n    );\n  }\n\n  toJSON(): UserOverviewJSON {\n    const {\n      id,\n      username,\n      fullName,\n      email,\n      roles,\n      readOnly,\n      external,\n      sessionActive,\n      clientAddress,\n      lastActivity,\n      enabled,\n      authServiceId,\n      authServiceUid,\n      accountStatus,\n    } = this._value;\n\n    return {\n      id,\n      username,\n      full_name: fullName,\n      email,\n      roles: roles.toArray(),\n      read_only: readOnly,\n      external_user: external,\n      session_active: sessionActive,\n      client_address: clientAddress,\n      last_activity: lastActivity,\n      enabled,\n      auth_service_id: authServiceId,\n      auth_service_uid: authServiceUid,\n      account_status: accountStatus,\n    };\n  }\n\n  static fromJSON(value: UserOverviewJSON) {\n    const {\n      id,\n      username,\n      full_name: fullName,\n      email,\n      roles,\n      read_only: readOnly,\n      external_user: external,\n      session_active: sessionActive,\n      client_address: clientAddress,\n      last_activity: lastActivity,\n      enabled,\n      auth_service_id: authServiceId,\n      auth_service_uid: authServiceUid,\n      account_status: accountStatus,\n    } = value;\n\n    return UserOverview.create(id,\n      username,\n      fullName,\n      email,\n      Immutable.Set(roles),\n      readOnly ?? false,\n      external ?? false,\n      sessionActive ?? false,\n      clientAddress,\n      lastActivity,\n      enabled,\n      authServiceId,\n      authServiceUid,\n      accountStatus);\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-use-before-define\n  static builder(): Builder {\n    // eslint-disable-next-line @typescript-eslint/no-use-before-define\n    return new Builder();\n  }\n}\n\ntype BuilderState = Immutable.Map;\n\nclass Builder {\n  value: BuilderState;\n\n  constructor(value: BuilderState = Immutable.Map()) {\n    this.value = value;\n  }\n\n  id(value: $PropertyType) {\n    return new Builder(this.value.set('id', value));\n  }\n\n  username(value: $PropertyType) {\n    return new Builder(this.value.set('username', value));\n  }\n\n  fullName(value: $PropertyType) {\n    return new Builder(this.value.set('fullName', value));\n  }\n\n  email(value: $PropertyType) {\n    return new Builder(this.value.set('email', value));\n  }\n\n  roles(value: $PropertyType) {\n    return new Builder(this.value.set('roles', value));\n  }\n\n  readOnly(value: $PropertyType) {\n    return new Builder(this.value.set('readOnly', value));\n  }\n\n  external(value: $PropertyType) {\n    return new Builder(this.value.set('external', value));\n  }\n\n  sessionActive(value: $PropertyType) {\n    return new Builder(this.value.set('sessionActive', value));\n  }\n\n  clientAddress(value: $PropertyType) {\n    return new Builder(this.value.set('clientAddress', value));\n  }\n\n  lastActivity(value: $PropertyType) {\n    return new Builder(this.value.set('lastActivity', value));\n  }\n\n  enabled(value: $PropertyType) {\n    return new Builder(this.value.set('enabled', value));\n  }\n\n  authServiceId(value: $PropertyType) {\n    return new Builder(this.value.set('authServiceId', value));\n  }\n\n  authServiceUid(value: $PropertyType) {\n    return new Builder(this.value.set('authServiceUid', value));\n  }\n\n  accountStatus(value: $PropertyType) {\n    return new Builder(this.value.set('accountStatus', value));\n  }\n\n  build() {\n    const {\n      id,\n      username,\n      fullName,\n      email,\n      roles,\n      readOnly,\n      external,\n      sessionActive,\n      clientAddress,\n      lastActivity,\n      enabled,\n      authServiceId,\n      authServiceUid,\n      accountStatus,\n    } = this.value.toObject();\n\n    return new UserOverview(\n      id,\n      username,\n      fullName,\n      email,\n      roles,\n      readOnly,\n      external,\n      sessionActive,\n      clientAddress,\n      lastActivity,\n      enabled,\n      authServiceId,\n      authServiceUid,\n      accountStatus,\n    );\n  }\n}\n","module.exports = determinant;\n\n/**\n * Calculates the determinant of a mat4\n *\n * @param {mat4} a the source matrix\n * @returns {Number} determinant of a\n */\nfunction determinant(a) {\n    var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3],\n        a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7],\n        a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11],\n        a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15],\n\n        b00 = a00 * a11 - a01 * a10,\n        b01 = a00 * a12 - a02 * a10,\n        b02 = a00 * a13 - a03 * a10,\n        b03 = a01 * a12 - a02 * a11,\n        b04 = a01 * a13 - a03 * a11,\n        b05 = a02 * a13 - a03 * a12,\n        b06 = a20 * a31 - a21 * a30,\n        b07 = a20 * a32 - a22 * a30,\n        b08 = a20 * a33 - a23 * a30,\n        b09 = a21 * a32 - a22 * a31,\n        b10 = a21 * a33 - a23 * a31,\n        b11 = a22 * a33 - a23 * a32;\n\n    // Calculate the determinant\n    return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n};","module.exports = copy;\n\n/**\n * Copy the values from one mat4 to another\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the source matrix\n * @returns {mat4} out\n */\nfunction copy(out, a) {\n    out[0] = a[0];\n    out[1] = a[1];\n    out[2] = a[2];\n    out[3] = a[3];\n    out[4] = a[4];\n    out[5] = a[5];\n    out[6] = a[6];\n    out[7] = a[7];\n    out[8] = a[8];\n    out[9] = a[9];\n    out[10] = a[10];\n    out[11] = a[11];\n    out[12] = a[12];\n    out[13] = a[13];\n    out[14] = a[14];\n    out[15] = a[15];\n    return out;\n};","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\nimport naturalSort from 'javascript-natural-sort';\n\nimport UserNotification from 'util/UserNotification';\nimport { qualifyUrl } from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\nimport CombinedProvider from 'injection/CombinedProvider';\n\nconst { RulesActions } = CombinedProvider.get('Rules');\n\nexport type RuleType = {\n  id?: string,\n  source: string,\n  title: string,\n  description: string,\n  created_at: string,\n  modified_at: string,\n  errors?: [],\n};\n\nconst RulesStore = Reflux.createStore({\n  listenables: [RulesActions],\n  rules: undefined,\n  functionDescriptors: undefined,\n  metricsConfig: undefined,\n\n  getInitialState() {\n    return { rules: this.rules, functionDescriptors: this.functionDescriptors, metricsConfig: this.metricsConfig };\n  },\n\n  _updateRulesState(rule) {\n    if (!this.rules) {\n      this.rules = [rule];\n    } else {\n      const doesRuleExist = this.rules.some((r) => r.id === rule.id);\n\n      if (doesRuleExist) {\n        this.rules = this.rules.map((r) => (r.id === rule.id ? rule : r));\n      } else {\n        this.rules.push(rule);\n      }\n    }\n\n    this.trigger({ rules: this.rules, functionDescriptors: this.functionDescriptors });\n  },\n\n  _updateFunctionDescriptors(functions) {\n    if (functions) {\n      this.functionDescriptors = functions.sort((fn1, fn2) => naturalSort(fn1.name, fn2.name));\n    }\n\n    this.trigger({ rules: this.rules, functionDescriptors: this.functionDescriptors });\n  },\n\n  list() {\n    const failCallback = (error) => {\n      UserNotification.error(`Fetching rules failed with status: ${error.message}`,\n        'Could not retrieve processing rules');\n    };\n\n    const url = qualifyUrl(ApiRoutes.RulesController.list().url);\n\n    return fetch('GET', url).then((response) => {\n      this.rules = response;\n      this.trigger({ rules: response, functionDescriptors: this.functionDescriptors });\n    }, failCallback);\n  },\n\n  get(ruleId) {\n    const failCallback = (error) => {\n      UserNotification.error(`Fetching rule \"${ruleId}\" failed with status: ${error.message}`,\n        `Could not retrieve processing rule \"${ruleId}\"`);\n    };\n\n    const url = qualifyUrl(ApiRoutes.RulesController.get(ruleId).url);\n    const promise = fetch('GET', url);\n\n    promise.then(this._updateRulesState, failCallback);\n\n    return promise;\n  },\n\n  save(ruleSource: RuleType) {\n    const failCallback = (error) => {\n      UserNotification.error(`Saving rule \"${ruleSource.title}\" failed with status: ${error.message}`,\n        `Could not save processing rule \"${ruleSource.title}\"`);\n    };\n\n    const url = qualifyUrl(ApiRoutes.RulesController.create().url);\n    const rule = {\n      title: ruleSource.title,\n      description: ruleSource.description,\n      source: ruleSource.source,\n    };\n    const promise = fetch('POST', url, rule);\n\n    promise.then((response) => {\n      this._updateRulesState(response);\n      UserNotification.success(`Rule \"${response.title}\" created successfully`);\n\n      return response;\n    }, failCallback);\n\n    RulesActions.save.promise(promise);\n\n    return promise;\n  },\n\n  update(ruleSource: RuleType) {\n    const failCallback = (error) => {\n      UserNotification.error(`Updating rule \"${ruleSource.title}\" failed with status: ${error.message}`,\n        `Could not update processing rule \"${ruleSource.title}\"`);\n    };\n\n    const url = qualifyUrl(ApiRoutes.RulesController.update(ruleSource.id).url);\n    const rule = {\n      id: ruleSource.id,\n      title: ruleSource.title,\n      description: ruleSource.description,\n      source: ruleSource.source,\n    };\n    const promise = fetch('PUT', url, rule);\n\n    promise.then((response) => {\n      this._updateRulesState(response);\n      UserNotification.success(`Rule \"${response.title}\" updated successfully`);\n\n      return response;\n    }, failCallback);\n\n    RulesActions.update.promise(promise);\n\n    return promise;\n  },\n  delete(rule) {\n    const failCallback = (error) => {\n      UserNotification.error(`Deleting rule \"${rule.title}\" failed with status: ${error.message}`,\n        `Could not delete processing rule \"${rule.title}\"`);\n    };\n\n    const url = qualifyUrl(ApiRoutes.RulesController.delete(rule.id).url);\n\n    return fetch('DELETE', url).then(() => {\n      this.rules = this.rules.filter((el) => el.id !== rule.id);\n      this.trigger({ rules: this.rules, functionDescriptors: this.functionDescriptors });\n      UserNotification.success(`Rule \"${rule.title}\" was deleted successfully`);\n    }, failCallback);\n  },\n  parse(ruleSource, callback) {\n    const url = qualifyUrl(ApiRoutes.RulesController.parse().url);\n    const rule = {\n      title: ruleSource.title,\n      description: ruleSource.description,\n      source: ruleSource.source,\n    };\n\n    return fetch('POST', url, rule).then(\n      (response) => {\n        // call to clear the errors, the parsing was successful\n        callback([]);\n\n        return response;\n      },\n      (error) => {\n        // a Bad Request indicates a parse error, set all the returned errors in the editor\n        if (error.status === 400) {\n          callback(error.additional.body);\n        }\n      },\n    );\n  },\n  multiple(ruleNames, callback) {\n    const url = qualifyUrl(ApiRoutes.RulesController.multiple().url);\n    const promise = fetch('POST', url, { rules: ruleNames });\n\n    promise.then(callback);\n\n    return promise;\n  },\n  loadFunctions() {\n    if (this.functionDescriptors) {\n      return undefined;\n    }\n\n    const url = qualifyUrl(ApiRoutes.RulesController.functions().url);\n\n    return fetch('GET', url)\n      .then(this._updateFunctionDescriptors);\n  },\n  loadMetricsConfig() {\n    const url = qualifyUrl(ApiRoutes.RulesController.metricsConfig().url);\n    const promise = fetch('GET', url);\n\n    promise.then(\n      (response) => {\n        this.metricsConfig = response;\n        this.trigger({ rules: this.rules, functionDescriptors: this.functionDescriptors, metricsConfig: this.metricsConfig });\n      },\n      (error) => {\n        UserNotification.error(`Couldn't load rule metrics config: ${error.message}`, \"Couldn't load rule metrics config\");\n      },\n    );\n\n    RulesActions.loadMetricsConfig.promise(promise);\n  },\n  updateMetricsConfig(nextConfig) {\n    const url = qualifyUrl(ApiRoutes.RulesController.metricsConfig().url);\n    const promise = fetch('PUT', url, nextConfig);\n\n    promise.then(\n      (response) => {\n        this.metricsConfig = response;\n        this.trigger({ rules: this.rules, functionDescriptors: this.functionDescriptors, metricsConfig: this.metricsConfig });\n        UserNotification.success('Successfully updated rule metrics config');\n      },\n      (error) => {\n        UserNotification.error(`Couldn't update rule metrics config: ${error.message}`, \"Couldn't update rule metrics config\");\n      },\n    );\n\n    RulesActions.updateMetricsConfig.promise(promise);\n  },\n});\n\nexport default RulesStore;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nconst DeflectorActions = Reflux.createActions({\n  cycle: { asyncResult: true },\n  list: { asyncResult: true },\n});\n\nexport default DeflectorActions;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nexport default Reflux.createActions({\n  loadUserPreferences: { asyncResult: true },\n  saveUserPreferences: { asyncResult: true },\n});\n","/**\n* Copyright 2012-2020, Plotly, Inc.\n* All rights reserved.\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// more info: http://stackoverflow.com/questions/18531624/isplainobject-thing\nmodule.exports = function isPlainObject(obj) {\n    // We need to be a little less strict in the `imagetest` container because\n    // of how async image requests are handled.\n    //\n    // N.B. isPlainObject(new Constructor()) will return true in `imagetest`\n    if(window && window.process && window.process.versions) {\n        return Object.prototype.toString.call(obj) === '[object Object]';\n    }\n\n    return (\n        Object.prototype.toString.call(obj) === '[object Object]' &&\n        Object.getPrototypeOf(obj) === Object.prototype\n    );\n};\n","module.exports = scale;\n\n/**\n * Scales the mat4 by the dimensions in the given vec3\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to scale\n * @param {vec3} v the vec3 to scale the matrix by\n * @returns {mat4} out\n **/\nfunction scale(out, a, v) {\n    var x = v[0], y = v[1], z = v[2];\n\n    out[0] = a[0] * x;\n    out[1] = a[1] * x;\n    out[2] = a[2] * x;\n    out[3] = a[3] * x;\n    out[4] = a[4] * y;\n    out[5] = a[5] * y;\n    out[6] = a[6] * y;\n    out[7] = a[7] * y;\n    out[8] = a[8] * z;\n    out[9] = a[9] * z;\n    out[10] = a[10] * z;\n    out[11] = a[11] * z;\n    out[12] = a[12];\n    out[13] = a[13];\n    out[14] = a[14];\n    out[15] = a[15];\n    return out;\n};","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as Immutable from 'immutable';\nimport { $PropertyType } from 'utility-types';\n\nimport { PreferencesMap } from 'stores/users/PreferencesStore';\n\nimport { AccountStatus } from './UserOverview';\n\ntype StartPage = {\n  id: string;\n  type: string;\n};\n\nexport type UserJSON = {\n  client_address: string;\n  email: string;\n  external: boolean;\n  full_name: string;\n  first_name: string;\n  last_name: string;\n  id: string;\n  last_activity: string | null | undefined;\n  permissions: string[];\n  grn_permissions?: string[];\n  preferences: PreferencesMap;\n  read_only: boolean;\n  roles: string[];\n  session_active: boolean;\n  session_timeout_ms: number;\n  startpage?: StartPage;\n  timezone: string | null | undefined;\n  username: string;\n  account_status: AccountStatus;\n  service_account: boolean;\n};\n\ntype InternalState = {\n  id: string;\n  username: string;\n  fullName: string;\n  firstName: string;\n  lastName: string;\n  email: string;\n  grnPermissions: Immutable.List;\n  permissions: Immutable.List;\n  timezone: string | null | undefined;\n  preferences: PreferencesMap;\n  roles: Immutable.Set;\n  readOnly: boolean;\n  external: boolean;\n  sessionTimeoutMs: number;\n  startpage?: StartPage;\n  sessionActive: boolean;\n  clientAddress: string;\n  lastActivity: string | null | undefined;\n  accountStatus: AccountStatus;\n  serviceAccount: boolean;\n};\n\nexport default class User {\n  _value: InternalState;\n\n  constructor(\n    id: $PropertyType,\n    username: $PropertyType,\n    fullName: $PropertyType,\n    firstName: $PropertyType,\n    lastName: $PropertyType,\n    email: $PropertyType,\n    permissions: $PropertyType,\n    timezone: $PropertyType,\n    preferences: $PropertyType,\n    roles: $PropertyType,\n    readOnly: $PropertyType,\n    external: $PropertyType,\n    sessionTimeoutMs: $PropertyType,\n    startpage: $PropertyType,\n    sessionActive: $PropertyType,\n    clientAddress: $PropertyType,\n    lastActivity: $PropertyType,\n    accountStatus: $PropertyType,\n    serviceAccount: $PropertyType,\n    grnPermissions: $PropertyType,\n  ) {\n    this._value = {\n      id,\n      username,\n      fullName,\n      firstName,\n      lastName,\n      email,\n      permissions,\n      timezone,\n      preferences,\n      roles,\n      readOnly,\n      external,\n      sessionTimeoutMs,\n      startpage,\n      sessionActive,\n      clientAddress,\n      lastActivity,\n      accountStatus,\n      grnPermissions,\n      serviceAccount,\n    };\n  }\n\n  get id() {\n    return this._value.id;\n  }\n\n  get username() {\n    return this._value.username;\n  }\n\n  get fullName() {\n    return this._value.fullName;\n  }\n\n  get firstName() {\n    return this._value.firstName;\n  }\n\n  get lastName() {\n    return this._value.lastName;\n  }\n\n  get email() {\n    return this._value.email;\n  }\n\n  get grnPermissions() {\n    return this._value.grnPermissions;\n  }\n\n  get permissions() {\n    return this._value.permissions;\n  }\n\n  get timezone() {\n    return this._value.timezone;\n  }\n\n  get preferences() {\n    return this._value.preferences;\n  }\n\n  get roles() {\n    return this._value.roles;\n  }\n\n  get readOnly() {\n    return this._value.readOnly;\n  }\n\n  get external() {\n    return this._value.external;\n  }\n\n  get accountStatus() {\n    return this._value.accountStatus;\n  }\n\n  get serviceAccount() {\n    return this._value.serviceAccount;\n  }\n\n  get sessionTimeoutMs() {\n    return this._value.sessionTimeoutMs;\n  }\n\n  get sessionTimeout() {\n    if (!this.sessionTimeoutMs) {\n      return undefined;\n    }\n\n    const MS_DAY = 24 * 60 * 60 * 1000;\n    const MS_HOUR = 60 * 60 * 1000;\n    const MS_MINUTE = 60 * 1000;\n    const MS_SECOND = 1000;\n\n    const _estimateUnit = (value): [number, string] => {\n      if (value === 0) {\n        return [MS_SECOND, 'Seconds'];\n      }\n\n      if (value % MS_DAY === 0) {\n        return [MS_DAY, 'Days'];\n      }\n\n      if (value % MS_HOUR === 0) {\n        return [MS_HOUR, 'Hours'];\n      }\n\n      if (value % MS_MINUTE === 0) {\n        return [MS_MINUTE, 'Minutes'];\n      }\n\n      return [MS_SECOND, 'Seconds'];\n    };\n\n    const unit = _estimateUnit(this.sessionTimeoutMs);\n    const value = Math.floor(this.sessionTimeoutMs / unit[0]);\n\n    return {\n      value,\n      unitMS: unit[0],\n      unitString: unit[1],\n    };\n  }\n\n  get startpage() {\n    return this._value.startpage;\n  }\n\n  get sessionActive() {\n    return this._value.sessionActive;\n  }\n\n  get clientAddress() {\n    return this._value.clientAddress;\n  }\n\n  get lastActivity() {\n    return this._value.lastActivity;\n  }\n\n  toBuilder() {\n    const {\n      id,\n      username,\n      fullName,\n      firstName,\n      lastName,\n      email,\n      permissions,\n      grnPermissions,\n      timezone,\n      preferences,\n      roles,\n      readOnly,\n      external,\n      sessionTimeoutMs,\n      startpage,\n      sessionActive,\n      clientAddress,\n      lastActivity,\n      accountStatus,\n      serviceAccount,\n    } = this._value;\n\n    // eslint-disable-next-line @typescript-eslint/no-use-before-define\n    return new Builder(Immutable.Map({\n      id,\n      username,\n      fullName,\n      firstName,\n      lastName,\n      email,\n      permissions,\n      timezone,\n      grnPermissions,\n      preferences,\n      roles,\n      readOnly,\n      external,\n      sessionTimeoutMs,\n      startpage,\n      sessionActive,\n      clientAddress,\n      lastActivity,\n      accountStatus,\n      serviceAccount,\n    }));\n  }\n\n  static create(\n    id: $PropertyType,\n    username: $PropertyType,\n    fullName: $PropertyType,\n    firstName: $PropertyType,\n    lastName: $PropertyType,\n    email: $PropertyType,\n    permissions: $PropertyType,\n    timezone: $PropertyType,\n    preferences: $PropertyType,\n    roles: $PropertyType,\n    readOnly: $PropertyType,\n    external: $PropertyType,\n    sessionTimeoutMs: $PropertyType,\n    startpage: $PropertyType,\n    sessionActive: $PropertyType,\n    clientAddress: $PropertyType,\n    lastActivity: $PropertyType,\n    accountStatus: $PropertyType,\n    serviceAccount: $PropertyType,\n    grnPermissions: $PropertyType,\n  ) {\n    return new User(\n      id,\n      username,\n      fullName,\n      firstName,\n      lastName,\n      email,\n      permissions,\n      timezone,\n      preferences,\n      roles,\n      readOnly,\n      external,\n      sessionTimeoutMs,\n      startpage,\n      sessionActive,\n      clientAddress,\n      lastActivity,\n      accountStatus,\n      serviceAccount,\n      grnPermissions,\n    );\n  }\n\n  static empty() {\n    // @ts-ignore\n    return User.create('', '', '', '', Immutable.List(), '', {}, Immutable.Set(), false, false, -1, undefined, false, '', '', 'enabled');\n  }\n\n  toJSON(): UserJSON {\n    const {\n      id,\n      username,\n      fullName,\n      firstName,\n      lastName,\n      email,\n      grnPermissions,\n      permissions,\n      timezone,\n      preferences,\n      roles,\n      readOnly,\n      external,\n      sessionTimeoutMs,\n      startpage,\n      sessionActive,\n      clientAddress,\n      lastActivity,\n      accountStatus,\n      serviceAccount,\n    } = this._value;\n\n    return {\n      id,\n      username,\n      full_name: fullName,\n      first_name: firstName,\n      last_name: lastName,\n      email,\n      grn_permissions: grnPermissions ? grnPermissions.toJS() : [],\n      permissions: permissions ? permissions.toArray() : [],\n      timezone,\n      preferences,\n      roles: roles ? roles.toArray() : [],\n      read_only: readOnly,\n      external,\n      session_timeout_ms: sessionTimeoutMs,\n      startpage,\n      session_active: sessionActive,\n      client_address: clientAddress,\n      last_activity: lastActivity,\n      account_status: accountStatus,\n      service_account: serviceAccount,\n    };\n  }\n\n  static fromJSON(value: UserJSON) {\n    const {\n      id,\n      username,\n      full_name,\n      first_name,\n      last_name,\n      email,\n      grn_permissions,\n      permissions,\n      timezone,\n      preferences,\n      roles,\n      read_only,\n      external,\n      session_timeout_ms,\n      startpage,\n      session_active,\n      client_address,\n      last_activity,\n      account_status,\n      service_account,\n    } = value;\n\n    return User.create(\n      id,\n      username,\n      full_name,\n      first_name,\n      last_name,\n      email,\n      Immutable.List(permissions),\n      timezone,\n      preferences,\n      Immutable.Set(roles),\n      read_only,\n      external,\n      session_timeout_ms,\n      startpage,\n      session_active,\n      client_address,\n      last_activity,\n      account_status,\n      service_account,\n      Immutable.List(grn_permissions),\n    );\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-use-before-define\n  static builder(): Builder {\n    // eslint-disable-next-line @typescript-eslint/no-use-before-define\n    return new Builder();\n  }\n}\n\ntype BuilderState = Immutable.Map;\n\nclass Builder {\n  value: BuilderState;\n\n  constructor(value: BuilderState = Immutable.Map()) {\n    this.value = value;\n  }\n\n  id(value: $PropertyType) {\n    return new Builder(this.value.set('id', value));\n  }\n\n  username(value: $PropertyType) {\n    return new Builder(this.value.set('username', value));\n  }\n\n  fullName(value: $PropertyType) {\n    return new Builder(this.value.set('fullName', value));\n  }\n\n  firstName(value: $PropertyType) {\n    return new Builder(this.value.set('firstName', value));\n  }\n\n  lastName(value: $PropertyType) {\n    return new Builder(this.value.set('lastName', value));\n  }\n\n  email(value: $PropertyType) {\n    return new Builder(this.value.set('email', value));\n  }\n\n  grnPermissions(value: $PropertyType) {\n    return new Builder(this.value.set('grnPermissions', value));\n  }\n\n  permissions(value: $PropertyType) {\n    return new Builder(this.value.set('permissions', value));\n  }\n\n  timezone(value: $PropertyType) {\n    return new Builder(this.value.set('timezone', value));\n  }\n\n  preferences(value: $PropertyType) {\n    return new Builder(this.value.set('preferences', value));\n  }\n\n  roles(value: $PropertyType) {\n    return new Builder(this.value.set('roles', value));\n  }\n\n  readOnly(value: $PropertyType) {\n    return new Builder(this.value.set('readOnly', value));\n  }\n\n  external(value: $PropertyType) {\n    return new Builder(this.value.set('external', value));\n  }\n\n  sessionTimeoutMs(value: $PropertyType) {\n    return new Builder(this.value.set('sessionTimeoutMs', value));\n  }\n\n  startpage(value: $PropertyType) {\n    return new Builder(this.value.set('startpage', value));\n  }\n\n  sessionActive(value: $PropertyType) {\n    return new Builder(this.value.set('sessionActive', value));\n  }\n\n  clientAddress(value: $PropertyType) {\n    return new Builder(this.value.set('clientAddress', value));\n  }\n\n  lastActivity(value: $PropertyType) {\n    return new Builder(this.value.set('lastActivity', value));\n  }\n\n  accountStatus(value: $PropertyType) {\n    return new Builder(this.value.set('accountStatus', value));\n  }\n\n  serviceAccount(value: $PropertyType) {\n    return new Builder(this.value.set('serviceAccount', value));\n  }\n\n  build() {\n    const {\n      id,\n      username,\n      fullName,\n      firstName,\n      lastName,\n      email,\n      permissions,\n      timezone,\n      preferences,\n      roles,\n      readOnly,\n      external,\n      sessionTimeoutMs,\n      startpage,\n      sessionActive,\n      clientAddress,\n      lastActivity,\n      accountStatus,\n      serviceAccount,\n      grnPermissions,\n    } = this.value.toObject();\n\n    return new User(\n      id,\n      username,\n      fullName,\n      firstName,\n      lastName,\n      email,\n      permissions,\n      timezone,\n      preferences,\n      roles,\n      readOnly,\n      external,\n      sessionTimeoutMs,\n      startpage,\n      sessionActive,\n      clientAddress,\n      lastActivity,\n      accountStatus,\n      serviceAccount,\n      grnPermissions,\n    );\n  }\n}\n","\"use strict\";\n\nvar isOldIE = function isOldIE() {\n  var memo;\n  return function memorize() {\n    if (typeof memo === 'undefined') {\n      // Test for IE <= 9 as proposed by Browserhacks\n      // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n      // Tests for existence of standard globals is to allow style-loader\n      // to operate correctly into non-standard environments\n      // @see https://github.com/webpack-contrib/style-loader/issues/177\n      memo = Boolean(window && document && document.all && !window.atob);\n    }\n\n    return memo;\n  };\n}();\n\nvar getTarget = function getTarget() {\n  var memo = {};\n  return function memorize(target) {\n    if (typeof memo[target] === 'undefined') {\n      var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n      if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n        try {\n          // This will throw an exception if access to iframe is blocked\n          // due to cross-origin restrictions\n          styleTarget = styleTarget.contentDocument.head;\n        } catch (e) {\n          // istanbul ignore next\n          styleTarget = null;\n        }\n      }\n\n      memo[target] = styleTarget;\n    }\n\n    return memo[target];\n  };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n  var result = -1;\n\n  for (var i = 0; i < stylesInDom.length; i++) {\n    if (stylesInDom[i].identifier === identifier) {\n      result = i;\n      break;\n    }\n  }\n\n  return result;\n}\n\nfunction modulesToDom(list, options) {\n  var idCountMap = {};\n  var identifiers = [];\n\n  for (var i = 0; i < list.length; i++) {\n    var item = list[i];\n    var id = options.base ? item[0] + options.base : item[0];\n    var count = idCountMap[id] || 0;\n    var identifier = \"\".concat(id, \" \").concat(count);\n    idCountMap[id] = count + 1;\n    var index = getIndexByIdentifier(identifier);\n    var obj = {\n      css: item[1],\n      media: item[2],\n      sourceMap: item[3]\n    };\n\n    if (index !== -1) {\n      stylesInDom[index].references++;\n      stylesInDom[index].updater(obj);\n    } else {\n      stylesInDom.push({\n        identifier: identifier,\n        updater: addStyle(obj, options),\n        references: 1\n      });\n    }\n\n    identifiers.push(identifier);\n  }\n\n  return identifiers;\n}\n\nfunction insertStyleElement(options) {\n  var style = document.createElement('style');\n  var attributes = options.attributes || {};\n\n  if (typeof attributes.nonce === 'undefined') {\n    var nonce = typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n\n    if (nonce) {\n      attributes.nonce = nonce;\n    }\n  }\n\n  Object.keys(attributes).forEach(function (key) {\n    style.setAttribute(key, attributes[key]);\n  });\n\n  if (typeof options.insert === 'function') {\n    options.insert(style);\n  } else {\n    var target = getTarget(options.insert || 'head');\n\n    if (!target) {\n      throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n    }\n\n    target.appendChild(style);\n  }\n\n  return style;\n}\n\nfunction removeStyleElement(style) {\n  // istanbul ignore if\n  if (style.parentNode === null) {\n    return false;\n  }\n\n  style.parentNode.removeChild(style);\n}\n/* istanbul ignore next  */\n\n\nvar replaceText = function replaceText() {\n  var textStore = [];\n  return function replace(index, replacement) {\n    textStore[index] = replacement;\n    return textStore.filter(Boolean).join('\\n');\n  };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n  var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n  /* istanbul ignore if  */\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = replaceText(index, css);\n  } else {\n    var cssNode = document.createTextNode(css);\n    var childNodes = style.childNodes;\n\n    if (childNodes[index]) {\n      style.removeChild(childNodes[index]);\n    }\n\n    if (childNodes.length) {\n      style.insertBefore(cssNode, childNodes[index]);\n    } else {\n      style.appendChild(cssNode);\n    }\n  }\n}\n\nfunction applyToTag(style, options, obj) {\n  var css = obj.css;\n  var media = obj.media;\n  var sourceMap = obj.sourceMap;\n\n  if (media) {\n    style.setAttribute('media', media);\n  } else {\n    style.removeAttribute('media');\n  }\n\n  if (sourceMap && typeof btoa !== 'undefined') {\n    css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n  } // For old IE\n\n  /* istanbul ignore if  */\n\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = css;\n  } else {\n    while (style.firstChild) {\n      style.removeChild(style.firstChild);\n    }\n\n    style.appendChild(document.createTextNode(css));\n  }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n  var style;\n  var update;\n  var remove;\n\n  if (options.singleton) {\n    var styleIndex = singletonCounter++;\n    style = singleton || (singleton = insertStyleElement(options));\n    update = applyToSingletonTag.bind(null, style, styleIndex, false);\n    remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n  } else {\n    style = insertStyleElement(options);\n    update = applyToTag.bind(null, style, options);\n\n    remove = function remove() {\n      removeStyleElement(style);\n    };\n  }\n\n  update(obj);\n  return function updateStyle(newObj) {\n    if (newObj) {\n      if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n        return;\n      }\n\n      update(obj = newObj);\n    } else {\n      remove();\n    }\n  };\n}\n\nmodule.exports = function (list, options) {\n  options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of