1 line
2.0 MiB
1 line
2.0 MiB
{"version":3,"sources":["webpack://[name]/webpack/bootstrap","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/build/node_modules/react/index.js","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/node_modules/css-loader/lib/css-base.js","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/node_modules/style-loader/lib/addStyles.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Settings/SettingsShared.css?36d8","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/build/node_modules/react-dom/index.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/Profiler.css?c827","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/KeyValue.css?397d","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/InspectedElementSharedStyles.css?e11f","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/InspectedElementHooksTree.css?d170","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/SidebarCommitInfo.css?fcdf","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/InspectedElementView.css?1e77","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/OwnersStack.css?b5d1","webpack://[name]/../react-devtools-shared/src/devtools/views/TabBar.css?d331","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/WhatChanged.css?b71e","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/node_modules/clipboard-js/clipboard.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/InspectedElement.css?01d3","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/build/node_modules/react-is/index.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/Element.css?26ab","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/NativeStyleEditor/LayoutViewer.css?e2c3","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/NativeStyleEditor/StyleEditor.css?af0b","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/node_modules/prop-types/index.js","webpack://[name]/../react-devtools-shared/src/devtools/views/ErrorBoundary.css?73d4","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/SearchInput.css?e3d9","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/Tree.css?10aa","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/SidebarInteractions.css?e5c5","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/SidebarSelectedFiberInfo.css?7414","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/Components.css?98dd","webpack://[name]/../react-devtools-shared/src/devtools/views/DevTools.css?2ecd","webpack://[name]/./node_modules/ws/lib/constants.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Tooltip.css?4c6b","webpack://[name]/external \"path\"","webpack://[name]/../react-devtools-shared/src/devtools/views/ModalDialog.css?2706","webpack://[name]/../react-devtools-shared/src/devtools/views/Settings/SettingsModal.css?75bb","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/InteractionListItem.css?1b66","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/SnapshotSelector.css?637a","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/build/node_modules/scheduler/index.js","webpack://[name]/external \"fs\"","webpack://[name]/../react-devtools-shared/node_modules/semver/semver.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Toggle.css?7ee8","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/ChartNode.css?45ec","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/HoveredFiberInfo.css?2c08","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/ProfilingImportExportButtons.css?69e5","webpack://[name]/./node_modules/ws/lib/permessage-deflate.js","webpack://[name]/./node_modules/ws/lib/buffer-util.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/EditableValue.css?b922","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/NewArrayValue.css?fa12","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/NewKeyValue.css?d898","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/NoCommitData.css?f44c","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/Tooltip.css?2f62","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/NoInteractions.css?81e1","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/RecordToggle.css?7a80","webpack://[name]/../react-devtools-shared/src/devtools/views/UnsupportedVersionDialog.css?0fd0","webpack://[name]/external \"child_process\"","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/node_modules/object-assign/index.js","webpack://[name]/external \"http\"","webpack://[name]/external \"crypto\"","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/Badge.css?9cf5","webpack://[name]/../react-devtools-shared/src/devtools/views/Button.css?51ba","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/SelectedTreeHighlight.css?ffe0","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/HocBadges.css?21d5","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/CommitFlamegraph.css?1a26","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/Interactions.css?9b21","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/SnapshotCommitListItem.css?1067","webpack://[name]/./node_modules/ws/lib/websocket.js","webpack://[name]/external \"events\"","webpack://[name]/external \"https\"","webpack://[name]/./node_modules/ws/lib/receiver.js","webpack://[name]/external \"stream\"","webpack://[name]/./node_modules/ws/lib/validation.js","webpack://[name]/./node_modules/ws/lib/sender.js","webpack://[name]/./node_modules/ws/lib/extension.js","webpack://[name]/external \"util\"","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/node_modules/lru-cache/index.js","webpack://[name]/./node_modules/ws/index.js","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/build/node_modules/react-debug-tools/index.js","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/node_modules/escape-string-regexp/index.js","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/node_modules/lodash.throttle/index.js","webpack://[name]/../react-devtools-shared/src/devtools/views/ButtonIcon.css?f7ac","webpack://[name]/../react-devtools-shared/src/devtools/views/Icon.css?61d0","webpack://[name]/../react-devtools-shared/src/devtools/ContextMenu/ContextMenu.css?42be","webpack://[name]/../react-devtools-shared/src/devtools/ContextMenu/ContextMenuItem.css?18e5","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/NativeStyleEditor/AutoSizeInput.css?42be","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/EditableName.css?250a","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/ExpandCollapseToggle.css?e1e0","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/CommitRanked.css?6ee6","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/RootSelector.css?3eaf","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/SnapshotCommitList.css?af4e","webpack://[name]/../react-devtools-shared/src/devtools/views/ReactLogo.css?3a0c","webpack://[name]/../react-devtools-shared/src/devtools/views/WarnIfLegacyBackendDetected.css?f493","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/node_modules/shell-quote/index.js","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/build/node_modules/react/cjs/react.production.min.js","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/build/node_modules/react-dom/cjs/react-dom.production.min.js","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/build/node_modules/scheduler/unstable_no_dom.js","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/build/node_modules/scheduler/cjs/scheduler-unstable_no_dom.production.min.js","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/build/node_modules/scheduler/cjs/scheduler.production.min.js","webpack://[name]/../react-devtools-shared/src/devtools/views/root.css","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/node_modules/lru-cache/node_modules/yallist/yallist.js","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/node_modules/lru-cache/node_modules/yallist/iterator.js","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/build/node_modules/react-is/cjs/react-is.production.min.js","webpack://[name]/external \"net\"","webpack://[name]/external \"tls\"","webpack://[name]/external \"url\"","webpack://[name]/external \"zlib\"","webpack://[name]/./node_modules/ws/lib/limiter.js","webpack://[name]/./node_modules/ws/lib/event-target.js","webpack://[name]/./node_modules/ws/lib/stream.js","webpack://[name]/./node_modules/ws/lib/websocket-server.js","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/build/node_modules/react-debug-tools/cjs/react-debug-tools.production.min.js","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/node_modules/error-stack-parser/error-stack-parser.js","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/node_modules/stackframe/stackframe.js","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/node_modules/@reach/menu-button/styles.css?d0e4","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/node_modules/@reach/menu-button/styles.css","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/node_modules/style-loader/lib/urls.js","webpack://[name]/../react-devtools-shared/node_modules/@reach/tooltip/styles.css?05ee","webpack://[name]/../react-devtools-shared/node_modules/@reach/tooltip/styles.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/Badge.css","webpack://[name]/../react-devtools-shared/src/devtools/views/ButtonIcon.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/Element.css","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/node_modules/prop-types/factoryWithThrowingShims.js","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Toggle.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Tooltip.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Button.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/OwnersStack.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Icon.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/SearchInput.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/SelectedTreeHighlight.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/Tree.css","webpack://[name]/../react-devtools-shared/src/devtools/views/ErrorBoundary.css","webpack://[name]/../react-devtools-shared/src/devtools/views/ModalDialog.css","webpack://[name]/../react-devtools-shared/src/devtools/ContextMenu/ContextMenu.css","webpack://[name]/../react-devtools-shared/src/devtools/ContextMenu/ContextMenuItem.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/HocBadges.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/NativeStyleEditor/AutoSizeInput.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/EditableName.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/EditableValue.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/NewArrayValue.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/NewKeyValue.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/ExpandCollapseToggle.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/KeyValue.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/InspectedElementSharedStyles.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/InspectedElementHooksTree.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/NativeStyleEditor/LayoutViewer.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/NativeStyleEditor/StyleEditor.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/InspectedElementView.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/InspectedElement.css","webpack://[name]/../react-devtools-shared/src/devtools/views/TabBar.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Settings/SettingsShared.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Settings/SettingsModal.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/Components.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/NoCommitData.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/ChartNode.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/WhatChanged.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/HoveredFiberInfo.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/Tooltip.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/CommitFlamegraph.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/CommitRanked.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/InteractionListItem.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/NoInteractions.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/Interactions.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/RootSelector.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/RecordToggle.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/ProfilingImportExportButtons.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/SnapshotCommitListItem.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/SnapshotCommitList.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/SnapshotSelector.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/SidebarCommitInfo.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/SidebarInteractions.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/SidebarSelectedFiberInfo.css","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/Profiler.css","webpack://[name]/../react-devtools-shared/src/devtools/views/ReactLogo.css","webpack://[name]/../react-devtools-shared/src/devtools/views/UnsupportedVersionDialog.css","webpack://[name]/../react-devtools-shared/src/devtools/views/WarnIfLegacyBackendDetected.css","webpack://[name]/../react-devtools-shared/src/devtools/views/DevTools.css","webpack://[name]/../react-devtools-shared/src/devtools/views/root.css?6fb3","webpack://[name]/../react-devtools-shared/src/devtools/views/root.css?87e9","webpack://[name]/../react-devtools-shared/src/events.js","webpack://[name]/../react-devtools-shared/src/bridge.js","webpack://[name]/../react-devtools-shared/src/constants.js","webpack://[name]/../shared/ReactSymbols.js","webpack://[name]/../react-devtools-shared/src/storage.js","webpack://[name]/../react-devtools-shared/src/hydration.js","webpack://[name]/../react-devtools-shared/src/utils.js","webpack://[name]/../react-devtools-shared/src/types.js","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/node_modules/json5/dist/index.mjs","webpack://[name]/../react-devtools-shared/src/devtools/utils.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/utils.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/CommitTreeBuilder.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/FlamegraphChartBuilder.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/InteractionsChartBuilder.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/RankedChartBuilder.js","webpack://[name]/../react-devtools-shared/src/devtools/ProfilingCache.js","webpack://[name]/../react-devtools-shared/src/devtools/ProfilerStore.js","webpack://[name]/../react-devtools-shared/src/devtools/store.js","webpack://[name]/../react-devtools-shared/src/backend/renderer.js","webpack://[name]/../react-devtools-shared/src/backend/ReactSymbols.js","webpack://[name]/../shared/ConsolePatchingDev.js","webpack://[name]/../react-devtools-shared/src/backend/DevToolsComponentStackFrame.js","webpack://[name]/../react-devtools-shared/src/backend/DevToolsFiberComponentStack.js","webpack://[name]/../react-devtools-shared/src/backend/console.js","webpack://[name]/../react-devtools-shared/src/devtools/views/context.js","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/node_modules/react-virtualized-auto-sizer/dist/index.esm.js","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/node_modules/@babel/runtime/helpers/esm/extends.js","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/node_modules/memoize-one/esm/index.js","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://[name]/../react-devtools-shared/src/node_modules/react-window/dist/index.esm.js","webpack://[name]/../react-devtools-shared/src/devtools/views/utils.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/TreeContext.js","webpack://[name]/../react-devtools-shared/src/devtools/views/hooks.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Settings/SettingsContext.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/Badge.js","webpack://[name]/../react-devtools-shared/src/devtools/views/ButtonIcon.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/Element.js","webpack://[name]/../react-devtools-shared/node_modules/@reach/auto-id/es/index.js","webpack://[name]/../react-devtools-shared/node_modules/@reach/utils/es/index.js","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/node_modules/@reach/component-component/es/index.js","webpack://[name]/../react-devtools-shared/node_modules/@reach/portal/es/index.js","webpack://[name]/../react-devtools-shared/node_modules/@reach/visually-hidden/es/index.js","webpack://[name]/../src/index.js","webpack://[name]/../react-devtools-shared/node_modules/@reach/rect/es/index.js","webpack://[name]/../react-devtools-shared/node_modules/@reach/tooltip/es/index.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Toggle.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/InspectHostNodesToggle.js","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/node_modules/@reach/menu-button/node_modules/@reach/portal/es/index.js","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/node_modules/@reach/menu-button/node_modules/@reach/rect/es/index.js","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/node_modules/@reach/window-size/es/index.js","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/node_modules/@reach/menu-button/node_modules/@reach/utils/es/index.js","webpack://[name]//Users/bvaughn/Documents/git/react.alt2/node_modules/@reach/menu-button/es/index.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Button.js","webpack://[name]/../react-devtools-shared/src/devtools/cache.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/OwnersListContext.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/OwnersStack.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Icon.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/SearchInput.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Settings/SettingsModalContext.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Settings/SettingsModalContextToggle.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/TreeFocusedContext.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/SelectedTreeHighlight.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/Tree.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/InspectedElementContext.js","webpack://[name]/../react-devtools-shared/src/devtools/views/ErrorBoundary.js","webpack://[name]/../react-devtools-shared/src/devtools/views/portaledContent.js","webpack://[name]/../react-devtools-shared/src/devtools/views/ModalDialog.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/ViewElementSourceContext.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/CannotSuspendWarningMessage.js","webpack://[name]/../react-devtools-shared/src/devtools/ContextMenu/Contexts.js","webpack://[name]/../react-devtools-shared/src/devtools/ContextMenu/ContextMenu.js","webpack://[name]/../react-devtools-shared/src/devtools/ContextMenu/ContextMenuItem.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/HocBadges.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/NativeStyleEditor/AutoSizeInput.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/EditableName.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/EditableValue.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/utils.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/NewArrayValue.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/NewKeyValue.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/ExpandCollapseToggle.js","webpack://[name]/../react-devtools-shared/src/devtools/ContextMenu/useContextMenu.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/KeyValue.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/InspectedElementContextTree.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/InspectedElementHooksTree.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/InspectedElementPropsTree.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/InspectedElementStateTree.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/InspectedElementSuspenseToggle.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/NativeStyleEditor/context.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/NativeStyleEditor/LayoutViewer.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/NativeStyleEditor/StyleEditor.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/NativeStyleEditor/index.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/InspectedElementView.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/InspectedElement.js","webpack://[name]/../react-devtools-shared/src/devtools/views/TabBar.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Settings/ComponentsSettings.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Settings/DebuggingSettings.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Settings/GeneralSettings.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/ProfilerContext.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Settings/ProfilerSettings.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Settings/SettingsModal.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Components/Components.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/ClearProfilingDataButton.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/NoCommitData.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/ChartNode.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/CommitFlamegraphListItem.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/constants.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/WhatChanged.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/HoveredFiberInfo.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/Tooltip.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/CommitFlamegraph.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/CommitRankedListItem.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/CommitRanked.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/InteractionListItem.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/NoInteractions.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/Interactions.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/RootSelector.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/RecordToggle.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/ReloadAndProfileButton.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/ProfilingImportExportButtons.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/SnapshotCommitListItem.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/SnapshotCommitList.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/SnapshotSelector.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/SidebarCommitInfo.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/SidebarInteractions.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/SidebarSelectedFiberInfo.js","webpack://[name]/../react-devtools-shared/src/devtools/views/Profiler/Profiler.js","webpack://[name]/../react-devtools-shared/src/devtools/views/ReactLogo.js","webpack://[name]/../react-devtools-shared/src/devtools/views/UnsupportedVersionDialog.js","webpack://[name]/../react-devtools-shared/src/devtools/views/WarnIfLegacyBackendDetected.js","webpack://[name]/../react-devtools-shared/src/devtools/views/DevTools.js","webpack://[name]/./src/editor.js","webpack://[name]/../react-devtools-shared/src/hook.js","webpack://[name]/./src/standalone.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","require","useSourceMap","list","toString","this","map","item","content","cssMapping","btoa","sourceMapping","sourceMap","unescape","encodeURIComponent","JSON","stringify","sourceURLs","sources","source","sourceRoot","concat","join","cssWithMappingToString","mediaQuery","alreadyImportedModules","length","id","push","fn","memo","stylesInDom","isOldIE","window","document","all","atob","apply","arguments","getTarget","target","parent","querySelector","getElement","styleTarget","HTMLIFrameElement","contentDocument","head","e","singleton","singletonCounter","stylesInsertedAtTop","fixUrls","addStylesToDom","styles","options","domStyle","refs","j","parts","addStyle","listToStyles","newStyles","base","part","css","media","insertStyleElement","style","insertInto","Error","lastStyleElementInsertedAtTop","insertAt","nextSibling","insertBefore","appendChild","firstChild","before","removeStyleElement","parentNode","removeChild","idx","indexOf","splice","createStyleElement","createElement","undefined","attrs","type","nonce","getNonce","addAttrs","el","keys","forEach","setAttribute","obj","update","remove","result","transform","default","styleIndex","applyToSingletonTag","URL","createObjectURL","revokeObjectURL","Blob","link","rel","createLinkElement","updateLink","href","applyToTag","newObj","DEBUG","newList","mayRemove","textStore","replaceText","index","replacement","filter","Boolean","styleSheet","cssText","cssNode","createTextNode","childNodes","autoFixUrls","convertToAbsoluteUrls","blob","oldSrc","locals","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","process","err","console","error","addEventListener","_resolve","_dataType","_intercept","clipboard","copy","_data","_bogusSelection","cleanup","getSelection","removeAllRanges","clipboardData","setData","preventDefault","data","Promise","resolve","reject","Node","XMLSerializer","serializeToString","triggerCopy","tryBogusSelect","execCommand","sel","queryCommandEnabled","isCollapsed","range","createRange","selectNodeContents","body","addRange","bogusSelect","paste","getData","dataType","ClipboardEvent","a","b","TypeError","_state","_value","_deferreds","f","onFulfilled","onRejected","then","g","h","immediateFn","setImmediate","setTimeout","k","Array","isArray","slice","constructor","race","strData","definition","BINARY_TYPES","GUID","kStatusCode","kWebSocket","EMPTY_BUFFER","Buffer","alloc","NOOP","MessageChannel","debug","SemVer","env","NODE_DEBUG","test","args","unshift","log","SEMVER_SPEC_VERSION","MAX_SAFE_INTEGER","Number","re","src","tokens","R","tok","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","MAINVERSION","MAINVERSIONLOOSE","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","PRERELEASE","PRERELEASELOOSE","BUILDIDENTIFIER","BUILD","FULLPLAIN","FULL","LOOSEPLAIN","LOOSE","GTLT","XRANGEIDENTIFIERLOOSE","XRANGEIDENTIFIER","XRANGEPLAIN","XRANGEPLAINLOOSE","XRANGE","XRANGELOOSE","COERCE","COERCERTL","RegExp","LONETILDE","TILDETRIM","TILDE","TILDELOOSE","LONECARET","CARETTRIM","CARET","CARETLOOSE","COMPARATORLOOSE","COMPARATOR","COMPARATORTRIM","HYPHENRANGE","HYPHENRANGELOOSE","STAR","parse","version","loose","includePrerelease","er","trim","match","raw","major","minor","patch","prerelease","split","num","build","format","valid","v","clean","replace","compare","other","compareMain","comparePre","compareIdentifiers","compareBuild","inc","release","identifier","isNaN","diff","version1","version2","eq","v1","v2","prefix","defaultResult","numeric","anum","bnum","gt","lt","neq","gte","lte","cmp","op","Comparator","comp","semver","ANY","operator","rcompareIdentifiers","compareLoose","versionA","versionB","rcompare","sort","rsort","Range","set","parseRange","isSatisfiable","comparators","remainingComparators","testComparator","pop","every","otherComparator","intersects","isX","toLowerCase","hyphenReplace","$0","from","fM","fm","fp","fpr","fb","to","tM","tm","tp","tpr","tb","testSet","allowed","satisfies","outside","hilo","gtfn","ltefn","ltfn","ecomp","high","low","comparator","rangeTmp","sameDirectionIncreasing","sameDirectionDecreasing","sameSemVer","differentDirectionsInclusive","oppositeDirectionsLessThan","oppositeDirectionsGreaterThan","comps","hr","compRe","_","M","pr","ret","replaceCaret","replaceCarets","replaceTilde","replaceTildes","gtlt","xM","xm","xp","anyX","replaceXRange","replaceXRanges","replaceStars","parseComparator","some","thisComparators","rangeComparators","thisComparator","rangeComparator","toComparators","maxSatisfying","versions","max","maxSV","rangeObj","minSatisfying","min","minSV","minVersion","minver","compver","validRange","ltr","gtr","parsed","r1","r2","coerce","String","rtl","next","exec","lastIndex","zlib","bufferUtil","Limiter","TRAILER","kPerMessageDeflate","kTotalLength","kCallback","kBuffers","kError","zlibLimiter","deflateOnData","chunk","inflateOnData","_maxPayload","RangeError","removeListener","reset","inflateOnError","_inflate","isServer","maxPayload","_options","_threshold","threshold","_isServer","_deflate","params","concurrency","concurrencyLimit","offer","serverNoContextTakeover","server_no_context_takeover","clientNoContextTakeover","client_no_context_takeover","serverMaxWindowBits","server_max_window_bits","clientMaxWindowBits","client_max_window_bits","accept","configurations","normalizeParams","acceptAsServer","acceptAsClient","close","offers","opts","accepted","find","response","isInteger","decompress","fin","callback","add","done","_decompress","compress","_compress","endpoint","windowBits","Z_DEFAULT_WINDOWBITS","createInflateRaw","zlibInflateOptions","on","write","flush","createDeflateRaw","zlibDeflateOptions","Z_SYNC_FLUSH","totalLength","allocUnsafe","offset","buf","_mask","mask","output","_unmask","buffer","toArrayBuffer","byteLength","byteOffset","toBuffer","readOnly","isBuffer","ArrayBuffer","isView","view","viewToBuffer","bu","BufferUtil","unmask","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","toObject","val","assign","test1","getOwnPropertyNames","test2","fromCharCode","test3","letter","shouldUseNative","symbols","EventEmitter","https","http","net","tls","randomBytes","createHash","PerMessageDeflate","Receiver","Sender","removeEventListener","readyStates","protocolVersions","WebSocket","address","protocols","super","readyState","CONNECTING","protocol","_binaryType","_closeFrameReceived","_closeFrameSent","_closeMessage","_closeTimer","_closeCode","_extensions","_receiver","_sender","_socket","_bufferedAmount","_redirects","initAsClient","websocket","protocolVersion","perMessageDeflate","followRedirects","maxRedirects","createConnection","socketPath","hostname","timeout","method","auth","host","path","port","includes","parsedUrl","url","isUnixSocket","pathname","isSecure","defaultPort","tlsConnect","netConnect","startsWith","headers","Connection","Upgrade","search","handshakeTimeout","extensionName","origin","Origin","username","password","req","_req","abortHandshake","aborted","CLOSING","emit","emitClose","res","location","statusCode","abort","addr","socket","digest","serverProt","protList","protError","extensions","setSocket","CLOSED","OPEN","bufferSize","_bufferedBytes","receiver","receiverOnConclude","receiverOnDrain","receiverOnError","receiverOnMessage","receiverOnPing","receiverOnPong","setNoDelay","socketOnClose","socketOnData","socketOnEnd","socketOnError","removeAllListeners","code","msg","end","destroy","ping","cb","sendAfterClose","pong","send","binary","terminate","connect","servername","stream","message","captureStackTrace","setHeader","once","reason","resume","receiverOnFinish","read","clearTimeout","_writableState","finished","errorEmitted","pause","listeners","_listener","listener","Writable","isValidStatusCode","isValidUTF8","ErrorCtor","binaryType","_buffers","_compressed","_payloadLength","_fragmented","_masked","_fin","_opcode","_totalPayloadLength","_messageLength","_fragments","_loop","_write","encoding","startLoop","consume","shift","dst","Uint8Array","getInfo","getPayloadLength16","getPayloadLength64","getMask","compressed","haveLength","readUInt16BE","readUInt32BE","Math","pow","controlMessage","dataMessage","messageLength","fragments","Validation","randomFillSync","applyMask","_firstFragment","_deflating","_queue","merge","payloadLength","opcode","rsv1","writeUInt16BE","writeUInt32BE","enqueue","doClose","sendFrame","frame","doPing","doPong","dispatch","dequeue","Reflect","cork","uncork","tokenChars","dest","elem","extension","values","header","paramName","mustUnescape","isEscaping","inQuotes","start","charCodeAt","SyntaxError","token","Yallist","MAX","LENGTH","LENGTH_CALCULATOR","ALLOW_STALE","MAX_AGE","DISPOSE","NO_DISPOSE_ON_SET","LRU_LIST","CACHE","UPDATE_AGE_ON_GET","naiveLength","self","doUse","node","hit","isStale","del","now","Date","unshiftNode","maxAge","walker","tail","prev","delete","removeNode","Entry","forEachStep","thisp","Infinity","lc","stale","dispose","noDisposeOnSet","updateAgeOnGet","mL","allowStale","mA","lC","rforEach","toArray","Map","dump","dumpLru","len","has","peek","load","arr","expiresAt","prune","createWebSocketStream","Server","matchOperatorsRe","str","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","freeGlobal","global","freeSelf","root","Function","objectToString","nativeMax","nativeMin","debounce","func","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","thisArg","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","remainingWait","debounced","isInvoking","toNumber","isObject","cancel","isObjectLike","isSymbol","valueOf","isBinary","quote","xs","CONTROL","TOKEN","random","mapped","chunker","commented","BS","escape","esc","out","isGlob","charAt","parseEnvVar","comment","pattern","varend","varname","substr","pre","getVar","reduce","arg","acc","x","Fragment","StrictMode","Profiler","q","Suspense","unstable_SuspenseList","u","unstable_DebugTracingMode","unstable_LegacyHidden","for","w","iterator","z","A","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","B","C","props","context","updater","D","E","isReactComponent","setState","forceUpdate","F","isPureReactComponent","G","current","H","I","ref","__self","__source","J","children","defaultProps","$$typeof","_owner","L","N","O","K","y","P","Q","_status","_result","S","T","transition","U","ReactCurrentDispatcher","ReactCurrentBatchConfig","ReactCurrentOwner","IsSomeRendererActing","Children","count","only","Component","PureComponent","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","cloneElement","createContext","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","Provider","Consumer","_context","createFactory","createRef","forwardRef","render","isValidElement","lazy","_payload","_init","unstable_createMutableSource","_getVersion","_source","_workInProgressVersionPrimary","_workInProgressVersionSecondary","unstable_getCacheForType","getCacheForType","unstable_startTransition","unstable_useDeferredValue","useDeferredValue","unstable_useMutableSource","useMutableSource","unstable_useOpaqueIdentifier","useOpaqueIdentifier","unstable_useTransition","useTransition","useCallback","useContext","useDebugValue","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useState","aa","ba","Set","ca","da","ea","fa","ha","ia","ja","ka","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","oa","pa","toUpperCase","qa","ma","na","la","removeAttribute","setAttributeNS","xlinkHref","ra","sa","ta","ua","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","La","Ja","Ka","Ma","stack","Na","Oa","prepareStackTrace","construct","displayName","Pa","tag","Qa","Ra","Sa","nodeName","Ua","_valueTracker","getOwnPropertyDescriptor","configurable","getValue","setValue","stopTracking","Ta","Va","checked","Wa","activeElement","Xa","defaultChecked","defaultValue","_wrapperState","initialChecked","Ya","initialValue","controlled","Za","$a","ab","bb","ownerDocument","db","eb","selected","defaultSelected","disabled","dangerouslySetInnerHTML","gb","hb","ib","textContent","jb","kb","lb","mb","nb","MSApp","execUnsafeLocalFunction","namespaceURI","innerHTML","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","setProperty","substring","menuitem","area","br","col","embed","img","input","keygen","meta","param","track","wbr","ub","vb","is","wb","srcElement","correspondingUseElement","xb","yb","zb","Ab","Bb","stateNode","Cb","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Nb","Ob","Pb","Qb","onError","Rb","Sb","Tb","Ub","Vb","Wb","Yb","alternate","return","flags","Zb","memoizedState","dehydrated","$b","bc","child","sibling","ac","cc","dc","ec","fc","gc","hc","ic","jc","kc","mc","nc","oc","pc","qc","rc","sc","tc","blockedOn","domEventName","eventSystemFlags","nativeEvent","targetContainers","uc","vc","wc","pointerId","xc","zc","Ac","lanePriority","unstable_runWithPriority","priority","hydrate","containerInfo","Bc","Cc","Dc","Ec","unstable_scheduleCallback","unstable_NormalPriority","Fc","Gc","Hc","animationend","animationiteration","animationstart","transitionend","Ic","Jc","Kc","animation","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","Tc","Uc","Vc","unstable_cancelCallback","Wc","unstable_shouldYield","Xc","unstable_requestPaint","Yc","unstable_now","Zc","unstable_getCurrentPriorityLevel","$c","unstable_ImmediatePriority","ad","unstable_UserBlockingPriority","bd","cd","unstable_LowPriority","dd","unstable_IdlePriority","ed","fd","gd","hd","jd","kd","ld","md","nd","od","pd","qd","rd","ud","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","vd","entangledLanes","entanglements","wd","xd","yd","zd","Ad","eventTimes","clz32","Cd","Dd","LN2","Ed","Fd","Gd","Hd","Id","Jd","Kd","yc","Ld","Md","Nd","Od","Pd","Qd","keyCode","charCode","Rd","Sd","Td","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","stopPropagation","cancelBubble","persist","isPersistent","Yd","Zd","$d","Ud","eventPhase","bubbles","cancelable","timeStamp","isTrusted","Vd","Wd","detail","Xd","be","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","ae","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","ce","ee","dataTransfer","ge","ie","animationName","elapsedTime","pseudoElement","ke","me","ne","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","oe","8","9","12","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","pe","Alt","Control","Meta","Shift","qe","se","repeat","locale","which","ue","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","we","touches","targetTouches","changedTouches","ye","Ae","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Be","Ce","De","documentMode","Ee","Fe","Ge","He","Ie","Je","Ke","Ne","color","date","datetime","email","month","number","tel","text","week","Oe","Pe","Qe","event","Re","Se","Te","Ue","Ve","We","Xe","Ye","Ze","$e","af","oninput","bf","detachEvent","cf","df","attachEvent","ef","ff","gf","jf","kf","lf","mf","nf","pf","contentWindow","qf","contentEditable","rf","sf","tf","uf","vf","wf","selectionStart","selectionEnd","anchorNode","defaultView","anchorOffset","focusNode","focusOffset","xf","yf","zf","Af","Bf","Xb","instance","Cf","Df","Ef","Ff","Gf","capture","passive","Mb","Hf","If","parentWindow","Jf","Kf","Le","char","Me","Lf","Mf","Nf","Of","autoFocus","Pf","__html","Qf","Rf","Sf","Tf","Uf","Vf","previousSibling","Wf","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","gg","childContextTypes","hg","ig","jg","getChildContext","kg","__reactInternalMemoizedMergedChildContext","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","childLanes","xg","dependencies","firstContext","lanes","yg","zg","observedBits","responders","Ag","Bg","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","Cg","Dg","eventTime","lane","payload","Eg","Fg","Gg","Hg","Ig","Jg","Kg","Og","_reactInternals","Lg","Mg","Ng","Pg","shouldComponentUpdate","Qg","contextType","state","Rg","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Sg","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Tg","Ug","_stringRef","Vg","Wg","Xg","lastEffect","nextEffect","firstEffect","Yg","Zg","elementType","$g","implementation","ah","bh","ch","dh","eh","fh","gh","hh","ih","jh","documentElement","tagName","kh","lh","mh","nh","memoizedProps","revealOrder","oh","ph","qh","rh","sh","th","pendingProps","retryLane","uh","vh","wh","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","baseQueue","queue","Nh","Oh","Ph","lastRenderedReducer","action","eagerReducer","eagerState","lastRenderedState","Qh","Rh","mutableReadLanes","Sh","getSnapshot","subscribe","setSnapshot","Th","Uh","Vh","Wh","deps","Xh","Yh","Zh","$h","ai","bi","ci","di","ei","fi","gi","hi","ii","readContext","unstable_isNewReconciler","Xf","ji","ki","li","mi","ni","oi","pi","qi","ri","baseLanes","si","ti","ui","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","vi","getDerivedStateFromError","wi","pendingContext","Ki","Mi","Ni","xi","yi","fallback","unstable_avoidThisFallback","zi","unstable_expectedLoadTime","Ai","Bi","V","Ci","Di","Ei","_reactRetry","Fi","Gi","Hi","Ii","isBackwards","rendering","renderingStartTime","last","tailMode","Ji","Oi","Pi","wasMultiple","multiple","onClick","onclick","size","createElementNS","W","subtreeFlags","deletions","Qi","Ri","Si","Ti","Ui","Vi","WeakMap","Wi","element","Xi","Yi","Zi","componentDidCatch","$i","componentStack","aj","WeakSet","bj","cj","dj","__reactInternalSnapshotBeforeUpdate","ej","fj","gj","focus","hj","display","ij","onCommitFiberUnmount","componentWillUnmount","jj","kj","lj","mj","nj","_reactRootContainer","oj","pj","qj","rj","sj","tj","uj","ceil","vj","wj","X","Y","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","mk","Z","Fj","Gj","Hj","Ij","Jj","Kj","Lj","Mj","Nj","Oj","Pj","Qj","Rj","sd","Sj","Tj","Uj","Vj","callbackNode","expirationTimes","callbackPriority","td","Wj","Xj","Yj","Zj","ak","bk","ck","finishedWork","finishedLanes","dk","timeoutHandle","fk","gk","hk","pingCache","ik","jk","xa","kk","lk","nk","rangeCount","focusedElem","selectionRange","ok","of","contains","compareDocumentPosition","extend","setStart","setEnd","left","scrollLeft","top","scrollTop","onCommitFiberRoot","pk","qk","rk","tk","pendingChildren","uk","mutableSourceEagerHydrationData","vk","wk","xk","yk","zk","Ak","Ck","_internalRoot","Dk","Ek","hydrationOptions","mutableSources","Fk","Hk","hasAttribute","Gk","Ik","sk","unstable_observedBits","unmount","querySelectorAll","form","ek","Jk","Events","Kk","findFiberByHostInstance","bundleType","rendererPackageName","Lk","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","Mk","isDisabled","supportsFiber","inject","createPortal","findDOMNode","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createBlockingRoot","unstable_createPortal","unstable_createRoot","unstable_flushControlled","unstable_renderSubtreeIntoContainer","unstable_scheduleHydration","sortIndex","performance","startTime","expirationTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","delay","unstable_wrapCallback","cancelAnimationFrame","requestAnimationFrame","port2","postMessage","port1","onmessage","floor","insert","inserted","pushNode","forEachReverse","getReverse","mapReverse","initial","reduceReverse","toArrayReverse","sliceReverse","deleteCount","reverse","ContextConsumer","ContextProvider","Element","ForwardRef","Lazy","Memo","Portal","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","getModuleId","typeOf","kDone","kRun","jobs","job","Event","MessageEvent","CloseEvent","wasClean","OpenEvent","ErrorEvent","EventTarget","onMessage","onClose","onOpen","Duplex","duplexOnEnd","destroyed","duplexOnError","listenerCount","ws","resumeOnReceiverDrain","duplex","autoDestroy","objectMode","writableObjectMode","_destroy","nextTick","_final","_readableState","endEmitted","_read","needDrain","createServer","STATUS_CODES","keyRegex","kUsedByWebSocketServer","server","writable","handleProtocols","clientTracking","verifyClient","noServer","backlog","_server","writeHead","listen","_removeListeners","addListeners","listening","upgrade","handleUpgrade","clients","shouldHandle","info","secure","connection","authorized","encrypted","verified","completeUpgrade","readable","primitive","stackError","lastIndexOf","functionName","isStateEditable","subHooks","inspectHooks","inspectHooksOfFiber","factory","define","StackFrame","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","stacktrace","parseOpera","parseV8OrIE","parseFFOrSafari","extractLocation","urlLike","line","sanitizedLine","locationParts","fileName","lineNumber","columnNumber","functionNameRegex","matches","parseOpera9","parseOpera11","parseOpera10","lineRE","lines","argsRaw","functionCall","_capitalize","_getter","booleanProps","numericProps","stringProps","getArgs","setArgs","getEvalOrigin","evalOrigin","setEvalOrigin","getFileName","getLineNumber","getColumnNumber","getFunctionName","getIsEval","fromString","argsStartIndex","argsEndIndex","locationString","parseFloat","isFinite","baseUrl","currentDir","fullMatch","origUrl","newUrl","unquotedOrigUrl","$1","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","secret","getShim","isRequired","ReactPropTypes","array","bool","string","symbol","any","arrayOf","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","addListener","listenersMap","didThrow","caughtError","clonedListeners","clear","Bridge","wall","_timeoutID","_messageQueue","_wall","_flush","rendererID","wasForwarded","_wallUnlisten","overrideValueAtPath","_isShutdown","warn","shutdown","wallUnlisten","COMFORTABLE_LINE_HEIGHT","COMPACT_LINE_HEIGHT","rawStyleString","extractVar","varName","regExp","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_FUNDAMENTAL_TYPE","REACT_SCOPE_TYPE","REACT_OPAQUE_ID_TYPE","REACT_DEBUG_TRACING_MODE_TYPE","REACT_OFFSCREEN_TYPE","REACT_LEGACY_HIDDEN_TYPE","symbolFor","localStorageGetItem","localStorage","getItem","localStorageSetItem","setItem","inspectable","inspected","preview_long","preview_short","readonly","unserializable","cleaned","getInObject","NaN","replaced","upgradeUnserializable","destination","defineProperties","cachedDisplayNames","LRU","alphaSortKeys","getAllEnumerableKeys","currentKeys","descriptors","getOwnPropertyDescriptors","getPrototypeOf","getDisplayName","fallbackName","nameFromCache","utfDecodeString","fromCodePoint","getSavedComponentFilters","isEnabled","saveComponentFilters","componentFilters","separateDisplayNameAndHOCs","hocDisplayNames","shallowDiffers","attribute","reduced","attr","setInObject","getDataType","HTMLElement","toStringValue","getDisplayNameForReactElement","SuspenseList","truncateForDisplay","formatDataForPreview","showFormattedValue","formatted","shortName","entryOrEntries","unicode","Space_Separator","ID_Start","ID_Continue","util","isSpaceSeparator","isIdStartChar","isIdContinueChar","isDigit","isHexDigit","parseState","pos","column","lexState","doubleQuote","sign","lex","lexStates","codePointAt","newToken","invalidChar","literal","unicodeEscape","invalidIdentifier","hexEscape","formatChar","separatorChar","parseStates","invalidEOF","syntaxError","replacements","hexString","reviver","internalize","holder","replacer","space","propertyList","replacerFunc","indent","gap","serializeProperty","toJSON5","toJSON","quoteString","stepback","final","partial","propertyString","properties","separator","serializeArray","member","serializeKey","serializeObject","quotes","product","quoteChar","firstChar","sanitizeForParse","smartParse","JSON5","smartStringify","commitGradient","getGradientColor","maxIndex","round","formatDuration","duration","formatTime","timestamp","scale","minValue","maxValue","minRange","maxRange","fallbackValue","rootToCommitTreeMap","getCommitTree","commitIndex","profilerStore","rootID","commitTrees","profilingData","dataForRoot","dataForRoots","operations","nodes","recursivelyInitializeTree","parentID","snapshots","treeBaseDuration","initialTreeBaseDurations","childID","commitTree","updateTree","previousCommitTree","getClonedNode","clonedNode","stringTable","stringTableSize","stringTableEnd","nextLength","nextString","operation","removeLength","removeIndex","numChildren","cachedChartData","ProfilingCache","_profilerStore","fiberID","cachedFiberCommits","_fiberCommits","fiberCommits","getDataForRoot","commitData","commitDatum","fiberActualDurations","getCommitData","fiberSelfDurations","chartDataKey","idToDepthMap","renderPathNodes","rows","maxDepth","maxSelfDuration","walkTree","rightOffset","currentDepth","actualDuration","selfDuration","didRender","maybeKey","maybeBadge","label","chartNode","baseDuration","currentID","chartData","depth","getFlamegraphChartData","interactions","lastInteractionTime","maxCommitDuration","getInteractionsChartData","chartNodes","getRankedChartData","invalidate","ProfilerStore","bridge","store","defaultIsProfiling","elementID","profilingSnapshots","_store","getElementByID","snapshotNode","_takeProfilingSnapshotRecursive","_isProfiling","profilingOperations","_inProgressOperationsByRootID","_initialRendererIDs","_initialSnapshotsByRootID","_rendererIDsThatReportedProfilingData","dataBackend","_rendererQueue","_dataBackends","_dataFrontend","dataBackends","operationsByRootID","snapshotsByRootID","interactionCommits","convertedCommitData","commitDataBackend","changeDescriptions","interactionIDs","imported","prepareProfilingDataFrontendFromBackendAndStore","_bridge","onBridgeOperations","onBridgeProfilingData","onProfilingStatus","onBridgeShutdown","isProfiling","rootIDToRendererID","roots","_cache","startProfiling","recordChangeDescriptions","stopProfiling","Store","config","parentElement","weightDelta","isInsideCollapsedSubTree","weight","_idToElement","_weightAcrossRoots","isSupported","validAttributes","_isNativeStyleEditorSupported","_nativeStyleEditorValidAttributes","haveRootsChanged","addedElementIDs","removedElementIDs","ownerID","supportsProfiling","hasOwnerMetadata","_roots","_rootIDToRendererID","_rootIDToCapabilities","displayNameWithoutHOCs","_collapseNodesByDefault","_adjustParentTreeWeight","_ownersMap","_revision","prevSupportsProfiling","_supportsProfiling","_hasOwnerMetadata","_componentFilters","onBridgeStorageSupported","isBackendStorageAPISupported","_isBackendStorageAPISupported","_unsupportedRendererVersionDetected","_recordChangeDescriptions","supportsNativeInspection","supportsReloadAndProfile","supportsTraceUpdates","_supportsNativeInspection","_supportsReloadAndProfile","_supportsTraceUpdates","onBridgeOverrideComponentFilters","onBridgeNativeStyleEditorSupported","onBridgeUnsupportedRendererVersion","assertExpectedRootMapSizes","assertMapSizeMatchesRootCount","mapName","expectedSize","inspect","prevEnabledComponentFilters","nextEnabledComponentFilters","haveEnabledFiltersChanged","containsElement","getElementAtIndex","numElements","rootWeight","currentElement","currentWeight","childWeight","getElementIDAtIndex","getIndexOfElementID","previousID","getOwnersListForElement","unsortedIDs","depthMap","idA","idB","innerElement","getRendererIDForElement","getRootIDForElement","toggleIsCollapsed","didMutate","oldWeight","weightAcrossRoots","getInternalReactConstants","ReactTypeOfWork","getTypeSymbol","symbolOrNumber","ClassComponent","CoroutineComponent","CoroutineHandlerPhase","DehydratedSuspenseComponent","FunctionComponent","HostComponent","HostPortal","HostRoot","HostText","IncompleteClassComponent","IndeterminateComponent","LazyComponent","LegacyHiddenComponent","MemoComponent","Mode","OffscreenComponent","ScopeComponent","SimpleMemoComponent","SuspenseComponent","SuspenseListComponent","YieldComponent","getDisplayNameForFiber","fiber","resolvedType","resolveFiberType","resolvedContext","ReactPriorityLevels","ImmediatePriority","UserBlockingPriority","NormalPriority","LowPriority","IdlePriority","NoPriority","ReactTypeOfSideEffect","NoFlags","PerformedWork","Placement","describeBuiltInComponentFrame","ownerFn","reentry","describeNativeComponentFrame","control","previousPrepareStackTrace","previousDispatcher","Fake","sample","sampleLines","controlLines","describeFunctionComponentFrame","describeFiber","workTagMap","workInProgress","ctor","describeClassComponentFrame","getStackByFiberInDevAndProd","APPEND_STACK_TO_METHODS","PREFIX_REGEX","ROW_COLUMN_NUMBER_REGEX","injectedRenderers","targetConsole","targetConsoleMethods","unpatchFn","registerRenderer","renderer","consoleSettingsRef","appendComponentStack","breakOnConsoleErrors","originalConsoleMethods","originalMethod","overrideMethod","latestAppendComponentStack","lastArg","__REACT_DEVTOOLS_ORIGINAL_METHOD__","BridgeContext","StoreContext","ContextMenuContext","isEnabledForInspectedElement","viewAttributeSourceFunction","createDetectElementResize","_window","raf","requestFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","cancelFrame","mozCancelAnimationFrame","webkitCancelAnimationFrame","resetTriggers","triggers","__resizeTriggers__","expand","firstElementChild","contract","lastElementChild","expandChild","scrollWidth","scrollHeight","offsetWidth","offsetHeight","scrollListener","className","__resizeRAF__","__resizeLast__","checkTriggers","__resizeListeners__","keyframeprefix","animationstartevent","domPrefixes","startEvents","elm","animationKeyframes","animationStyle","addResizeListener","doc","elementStyle","getComputedStyle","position","getElementById","getElementsByTagName","createStyles","__animationListener__","removeResizeListener","classCallCheck","Constructor","createClass","descriptor","protoProps","staticProps","_extends","possibleConstructorReturn","ReferenceError","AutoSizer","_React$PureComponent","_ref","_temp","_this","_len","_key","__proto__","defaultHeight","defaultWidth","_onResize","_this$props","disableHeight","disableWidth","onResize","_parentNode","_height","_width","_style","paddingLeft","paddingRight","paddingTop","paddingBottom","newHeight","newWidth","_setRef","autoSizer","_autoSizer","subClass","superClass","setPrototypeOf","inherits","_detectElementResize","_props","outerStyle","overflow","childParams","bailoutOnChildren","_inheritsLoose","_assertThisInitialized","simpleIsEqual","resultFn","isEqual","lastResult","calledOnce","isNewArgEqualToLast","newArg","newArgs","_objectWithoutPropertiesLoose","excluded","sourceKeys","cancelTimeout","timeoutID","requestTimeout","tick","cachedRTLResult","getRTLOffsetType","recalculate","outerDiv","direction","innerDiv","innerStyle","defaultItemKey$1","createListComponent","_class","getItemOffset","getEstimatedTotalSize","getItemSize","getOffsetForIndexAndAlignment","getStartIndexForOffset","getStopIndexForStartIndex","initInstanceProps","shouldResetStyleCacheOnItemSizeChange","validateProps","_PureComponent","List","_instanceProps","_outerRef","_resetIsScrollingTimeoutId","isScrolling","scrollDirection","scrollOffset","initialScrollOffset","scrollUpdateWasRequested","_callOnItemsRendered","memoizeOne","overscanStartIndex","overscanStopIndex","visibleStartIndex","visibleStopIndex","onItemsRendered","_callOnScroll","onScroll","_getItemStyle","itemSize","layout","itemStyleCache","_getItemStyleCache","_offset","isHorizontal","__","___","_onScrollHorizontal","_event$currentTarget","clientWidth","prevState","_resetIsScrollingDebounced","_onScrollVertical","_event$currentTarget2","clientHeight","_outerRefSetter","outerRef","_resetIsScrolling","nextProps","validateSharedProps$1","_proto","scrollTo","scrollToItem","align","itemCount","_this$props2","_callPropsCallbacks","_this$props3","_this$state","_this$props4","innerRef","innerElementType","innerTagName","itemData","_this$props4$itemKey","itemKey","outerElementType","outerTagName","useIsScrolling","_this$_getRangeToRend","_getRangeToRender","startIndex","stopIndex","items","_index","estimatedTotalSize","WebkitOverflowScrolling","willChange","pointerEvents","_this$_getRangeToRend2","_overscanStartIndex","_overscanStopIndex","_visibleStartIndex","_visibleStopIndex","_this$state2","_scrollDirection","_scrollOffset","_scrollUpdateWasRequested","_this$props5","overscanCount","_this$state3","overscanBackward","overscanForward","_ref2","_ref3","FixedSizeList","_ref4","lastItemOffset","maxOffset","minOffset","middleOffset","_ref5","_ref6","numVisibleItems","_ref7","_attribute","areEqual","prevProps","prevStyle","prevRest","nextStyle","nextRest","alphaSortEntries","entryA","entryB","createRegExp","isLetter","matchAnyCase","escaped","escapeStringRegExp","restRegex","getMetaValueLabel","sanitize","serializeDataForCopy","cloned","downloadUrl","TreeStateContext","TreeDispatcherContext","reduceSearchState","searchIndex","searchResults","searchText","selectedElementID","selectedElementIndex","prevSearchIndex","prevSearchText","numPrevSearchResults","didRequestSearch","newElementIndex","foundMatch","resultID","recursivelySearchTree","findIndex","innerIndex","getNearestResultIndex","newSearchIndex","TreeContextController","defaultInspectedElementID","defaultOwnerID","defaultSelectedElementID","defaultSelectedElementIndex","initialRevision","revision","reducer","ownerSubtreeLeafElementID","lookupIDForIndex","removedIDs","selectedElement","firstChildID","firstChildIndex","selectedChildIndex","nextChildID","leafElement","ownerIndex","parentIndex","reduceTreeState","inspectedElementID","reduceSuspenseState","ownerFlatTree","prevSelectedElementIndex","reduceOwnersState","dispatchWrapper","runWithPriority","handleSelectFiber","prevSelectedElementID","handleStoreMutated","useEditableValueReducer","editableValue","externalValue","hasPendingChanges","isValid","parsedValue","newParsedValue","isNewValueValid","useLocalStorage","getValueFromLocalStorage","storedValue","setStoredValue","valueToStore","onStorage","newValue","useModalDismissSignal","modalRef","dismissCallback","dismissOnClickOutside","handleDocumentKeyDown","handleDocumentClick","useSubscription","getCurrentValue","didUnsubscribe","checkForUpdates","unsubscribe","useHighlightNativeElement","highlightNativeElement","hideAfterTimeout","openNativeElementsPanel","scrollIntoView","clearHighlightNativeElement","SettingsContext","SettingsContextController","browserTheme","componentsPortalContainer","profilerPortalContainer","displayDensity","setDisplayDensity","theme","setTheme","setAppendComponentStack","setBreakOnConsoleErrors","traceUpdatesEnabled","setTraceUpdatesEnabled","documentElements","updateDisplayDensity","updateThemeVariables","updateStyleHelper","themeKey","setStyleVariable","fontSize","getPropertyValue","scrollbarColor","Badge","totalBadgeCount","ExtraLabel","ButtonIcon","pathData","PATH_ADD","PATH_CANCEL","PATH_CLEAR","PATH_CLOSE","PATH_COLLAPSED","PATH_COPY","PATH_DELETE","PATH_DOWN","PATH_EXPANDED","PATH_EXPORT","PATH_FILTER","PATH_IMPORT","PATH_LOG_DATA","PATH_MORE","PATH_NEXT","PATH_PREVIOUS","PATH_RECORD","PATH_RELOAD","PATH_SAVE","PATH_SEARCH","PATH_SETTINGS","PATH_SUSPEND","PATH_UNDO","PATH_UP","PATH_VIEW_DOM","PATH_VIEW_SOURCE","xmlns","viewBox","fill","ElementView","isHovered","setIsHovered","isNavigatingWithKeyboard","onElementMouseEnter","treeFocused","isSelected","SelectedElement","InactiveSelectedElement","HoveredElement","onMouseEnter","onMouseLeave","onMouseDown","onDoubleClick","data-depth","Wrapper","ExpandCollapseToggle","DisplayName","KeyName","KeyValue","title","swallowDoubleClick","isSearchResult","isCurrentResult","CurrentHighlight","Highlight","useId","_useState","setId","wrapEvent","theirHandler","ourHandler","_classCallCheck","_possibleConstructorReturn","cleanProps","initialState","getInitialState","getRefs","didMount","didUpdate","willUnmount","shouldUpdate","_objectWithoutProperties","_React$Component","_initialiseProps","_inherits","_setState","_forceUpdate","_refs","nextState","snapshot","React","_this2","_ref$type","mountNode","portalNode","div","border","clip","margin","padding","rectChanged","prop","let","rect","rafId","observe","newRect","getBoundingClientRect","observer","observeRect","onChange","unobserve","Rect","useRect","nodeRef","setRect","observerRef","_states","IDLE","FOCUSED","VISIBLE","chart","states","enter","clearContextId","mouseenter","restTimeout","leave","mousemove","mouseleave","mousedown","blur","rest","selectWithKeyboard","globalMouseMove","leavingVisibleTimer","timecomplete","newContext","stateDef","nextDef","subscriptions","Tooltip","ariaLabel","DEBUG_STYLE","_useTooltip","onMouseMove","onFocus","onKeyDown","onBlur","isVisible","setIsVisible","triggerRef","triggerRect","handleMouseEnter","handleMouseMove","handleFocus","__REACH_DISABLE_TOOLTIPS","handleMouseLeave","handleBlur","handleMouseDown","handleKeyDown","trigger","tooltip","useTooltip","TooltipPopup","TooltipContent","_ref4$position","positionDefault","useAriaLabel","tooltipRef","tooltipRect","role","getStyles","VisuallyHidden","visibility","pageXOffset","pageYOffset","collisions","right","innerWidth","bottom","innerHeight","directionUp","Toggle","isChecked","defaultClassName","ToggleDisabled","ToggleOn","ToggleOff","handleClick","toggle","ToggleContent","tabIndex","tooltipStyles","InspectHostNodesToggle","isInspecting","setIsInspecting","handleChange","onStopInspectingNative","hasWindow","resize","removeEvent","WindowSize","assignRef","_createContext","checkIfAppManagedFocus","isOpen","menu","manageFocusOnUpdate","appManagedFocus","selectionIndex","openAtFirstItem","closingWithClick","genId","getMenuRefs","getInitialMenuState","buttonRect","buttonId","checkIfStylesIncluded","MenuButton","rectRef","propTypes","MenuItem","_ref8","_ref9","onSelect","_ref8$role","select","selectItemAtIndex","MenuLink","_ref10","_ref11","Comp","component","_ref10$as","as","AsComp","Link","MenuList","_ref12","_ref13","menuRect","menuRef","MenuListImpl","focusableChildrenTypes","isFocusableChildType","_ref14","_ref15","focusableChildren","focusable","getFocusableMenuChildren","nextIndex","_nextIndex","focusIndex","haventMeasuredMenuYet","minWidth","Button","ButtonContent","Context","dispatcher","CacheContext","entries","resourceConfigs","getEntriesForResource","resource","entriesForResource","useWeakMap","accessResult","fetch","entry","thenable","newResult","status","resolvedResult","rejectedResult","createResource","hashInput","preload","OwnersListContext","inProgressRequests","request","promise","resolveFn","OwnersListContextController","onOwnersList","ownersList","owners","owner","dialogReducer","selectedIndex","OwnerStack","treeDispatch","isInStore","selectOwner","elementsTotalWidth","setElementsTotalWidth","elementsBarRef","isOverflowing","containerRef","totalChildWidth","setIsOverflowing","container","handleResize","throttle","ownerWindow","useIsOverflowing","selectedOwner","totalWidth","computedStyle","marginLeft","marginRight","Bar","ElementsDropdown","BackToOwnerButton","VRule","IconButton","menuItems","NotInStore","MenuButtonContent","Modal","Icon","PATH_ARROW","PATH_BUG","PATH_CODE","PATH_COMPONENTS","PATH_FLAME_CHART","PATH_INTERACTIONS","PATH_PROFILER","PATH_RANKED_CHART","PATH_STORE_AS_GLOBAL_VARIABLE","SearchInput","inputRef","handleTextChange","resetSearch","handleInputKeyPress","handleWindowKey","InputIcon","Input","onKeyPress","placeholder","IndexLabel","LeftVRule","SettingsModalContext","SettingsModalContextController","isModalShowing","setIsModalShowing","SettingsModalContextToggle","showFilterModal","TreeFocusedContext","SelectedTreeHighlight","lastChildID","Active","Inactive","Tree","setIsNavigatingWithKeyboard","treeRef","focusTargetRef","setTreeFocused","listCallbackRef","handleStopInspectingNative","didSelectNode","lastScrolledIDRef","handleKeyPress","searchRef","didSelectNewSearchResult","handleElementMouseEnter","Loading","AutoSizerWrapper","InnerElementType","updateIndentationSizeVar","cachedChildWidths","indentationSizeRef","prevListWidthRef","listWidth","maxIndentationSize","getAttribute","childWidth","cachedChildWidth","remainingWidth","prevOwnerIDRef","divRef","InspectedElementContext","InspectedElementContextController","storeAsGlobalCount","storeAsGlobal","copyInspectedElementPath","getInspectedElementPath","getInspectedElement","currentlyInspectedElement","setCurrentlyInspectedElement","onInspectedElement","hydrateHelper","inspectedElement","unserializablePath","isMatch","fillInPath","canEditFunctionProps","canEditFunctionPropsDeletePaths","canEditFunctionPropsRenamePaths","canEditHooks","canEditHooksAndDeletePaths","canEditHooksAndRenamePaths","canToggleSuspense","canViewSource","hasLegacyContext","hooks","rendererVersion","rootType","batchedUpdates","sendRequest","dehydratedData","cleanedPath","InitialState","callStack","errorMessage","hasError","ErrorBoundary","onRetry","bugURL","encodeURI","Header","IconAndLinkRow","RetryButton","handleRetry","RetryIcon","ReportIcon","ReportLink","Stack","portaledContent","onErrorRetry","portalContainer","ModalDialogContext","canBeDismissed","ModalDialogContextController","ModalDialog","ModalDialogImpl","dismissModal","dialogRef","Background","Dialog","Title","Buttons","ViewElementSourceContext","CannotSuspendWarningMessage","idToShowFnMap","idToHideFnMap","currentHideFn","RegistryContext","hideMenu","showMenu","showFn","registerMenu","hideFn","HIDDEN_STATE","ContextMenu","bodyAccessorRef","hideUnlessContains","hide","repositionToFit","ContextMenuItem","onTouchEnd","HocBadges","hocDisplayName","AutoSizeInput","isEmpty","EditableName","allowEmpty","allowWhiteSpace","overrideName","editableName","setEditableName","setIsValid","basePath","EditableValue","overrideValue","useEditableValue","applyChanges","isBool","autoComplete","Invalid","Checkbox","parseHookPathForEdit","NewArrayValue","hidden","hookID","setKey","isInvalid","setIsInvalid","oldPath","newPath","newIsInvalid","NewKeyValue","newPropKey","setNewPropKey","newPropName","setNewPropName","setIsOpen","prevIsOpen","useContextMenu","handleContextMenu","alphaSort","canDeletePaths","canEditValues","canRenamePaths","canRenamePathsAtDepth","isDirectChildOfAnArray","pathRoot","prevIsOpenRef","contextMenuTriggerRef","isInspectable","isReadOnly","toggleIsOpen","isSimpleType","deletePath","pathToDelete","renamePath","renderedName","canRenameTheCurrentPath","DeleteToggle","Name","displayValue","Item","ExpandCollapseToggleSpacer","AfterName","Value","hasChildren","innerValue","keyValue","DeleteArrayItemButton","InspectedElementContextTree","handleCopy","InspectedElementTree","HeaderRow","Empty","InspectedElementHooksTree","serializeHooksForCopy","HooksTreeView","InnerHooksTreeView","hook","HookView","Hook","NameValueRow","TruncationIndicator","isCustomHook","isComplexDisplayValue","subHooksView","NameAnonymous","InspectedElementPropsTree","InspectedElementStateTree","InspectedElementSuspenseToggle","isSuspended","ToggleSuspenseRow","forceFallback","NativeStyleContext","NativeStyleContextController","getStyleAndLayout","currentStyleAndLayout","setCurrentStyleAndLayout","onStyleAndLayout","styleAndLayout","LayoutViewer","DashedBox","LabelRow","Label","BoxRow","SolidBox","toFixed","StyleEditor","changeAttribute","oldName","newName","changeValue","Brackets","Row","nativeStyleEditorValidAttributes","NewRow","newAttributeRef","attributePlaceholder","oldAttribute","newAttribute","valuePlaceholder","localAttribute","setLocalAttribute","localValue","setLocalValue","isAttributeValid","setIsAttributeValid","isValueValid","setIsValueValid","Field","Attribute","onReset","onSubmit","parsedLocalValue","NativeStyleEditorWrapper","supportsNativeStyleEditor","NativeStyleEditor","maybeStyleAndLayout","InspectedElementView","isContextMenuEnabledForInspectedElement","rendererLabel","showOwnersList","showRenderedBy","InspectedElement","Owners","OwnersHeader","OwnerView","OwnersMetaField","Source","ContextMenuIcon","SourceHeaderRow","SourceHeader","SourceOneLiner","BEFORE_SLASH_RE","nameOnly","pathBeforeSlash","formatSourceForDisplay","OwnerButton","OwnerContent","Owner","InspectedElementWrapper","canViewElementSourceFunction","viewElementSourceFunction","modalDialogDispatch","highlightElement","logElement","viewSource","toggleSuspended","nearestSuspenseElement","nearestSuspenseElementID","TitleRow","Key","KeyArrow","SelectedComponentName","TabBar","currentTab","groupName","selectTab","tabs","tab","iconSizeClassName","tabLabelClassName","tabSizeClassName","IconSizeNavigation","TabLabelNavigation","TabSizeNavigation","IconSizeProfiler","TabLabelProfiler","TabSizeProfiler","IconSizeSettings","TabLabelSettings","TabSizeSettings","icon","TabDisabled","Tab","TabCurrent","IconDisabled","ComponentsSettings","collapseNodesByDefault","updateCollapseNodesByDefault","setComponentFilters","addFilter","prevComponentFilters","changeFilterType","componentFilter","updateFilterValueElementType","updateFilterValueRegExp","removeFilter","toggleFilterIsEnabled","componentFiltersRef","Settings","Setting","Table","TableRow","NoFiltersCell","TableCell","InvalidRegExp","ToggleIcon","Select","ToggleOnInvalid","ToggleOffInvalid","ToggleInsideOn","ToggleInsideOff","DebuggingSettings","GeneralSettings","RadioLabel","ReleaseNotes","ReleaseNotesLink","ProfilerContext","ProfilerContextController","didRecordCommits","isProcessingData","prevProfilingData","setPrevProfilingData","setRootID","selectedFiberID","selectFiberID","selectedFiberName","selectFiberName","selectFiber","setRootIDAndClearFiber","firstRootID","selectedElementRootID","isCommitFilterEnabled","setIsCommitFilterEnabled","minCommitDuration","setMinCommitDuration","selectedCommitIndex","selectCommitIndex","selectedTabID","selectedInteractionID","selectInteraction","ProfilerSettings","updateRecordChangeDescriptions","updateMinCommitDuration","updateIsCommitFilterEnabled","minCommitDurationInputRef","SettingsModal","SettingsModalImpl","Tabs","Spacer","Content","LOCAL_STORAGE_KEY","MINIMUM_SIZE","initResizeState","horizontalPercentage","verticalPercentage","isResizing","resizeReducer","setResizeCSSVariable","resizeElement","orientation","percentage","wrapperElementRef","resizeElementRef","onResizeEnd","wrapperElement","getOrientation","currentMousePosition","resizedElementDimension","actionType","Components","onMouseUp","TreeWrapper","ResizeBarWrapper","ResizeBar","ClearProfilingDataButton","NoCommitData","FilterMessage","ChartNode","isDimmed","textStyle","Group","ForeignObject","Div","CommitFlamegraphListItem","onElementMouseLeave","scaleX","selectedChartNode","selectedChartNodeIndex","row","selectedNodeOffset","nodeOffset","nodeWidth","textColor","nodeData","WhatChanged","changeDescription","isFirstMount","changes","didHooksChange","HoveredFiberInfo","fiberData","commitIndices","profilingCache","getFiberCommits","renderDurationInfo","CurrentCommit","Toolbar","initialTooltipState","mouseX","mouseY","updateTooltipPosition","mousePosition","TOOLTIP_OFFSET","getTooltipPosition","relativeContainer","mouseEvent","targetContainer","getMousePosition","tooltipClassName","Container","CommitFlamegraphAutoSizer","deselectCurrentFiber","CommitFlamegraph","hoveredFiberData","setHoveredFiberData","handleElementMouseLeave","tooltipLabel","patternUnits","PatternPath","CommitRankedListItem","selectedFiberIndex","CommitRankedAutoSizer","CommitRanked","getNodeIndex","InteractionListItem","labelWidth","interaction","commits","stopTime","SelectedInteraction","Interaction","maxWidth","InteractionLine","CommitBox","viewCommit","backgroundColor","NoInteractions","InteractionsAutoSizer","Interactions","interactionCommitSize","interactionLabelWidth","timelineWidth","FocusTarget","RootSelector","RecordToggle","InactiveRecordToggle","DisabledRecordToggle","ActiveRecordToggle","ReloadAndProfileButton","reloadAndProfile","ProfilingImportExportButtons","downloadRef","downloadData","anchorElement","profilingDataExport","profilingDataFrontend","prepareProfilingDataExport","filename","click","downloadFile","toLocaleDateString","year","day","toLocaleTimeString","hour12","uploadData","handleFiles","files","fileReader","FileReader","prepareProfilingDataFrontendFromExport","ErrorMessage","readAsText","SnapshotCommitListItem","commitDurations","commitTimes","filteredCommitIndices","maxDuration","startCommitDrag","commitDuration","commitTime","Outer","sizeIncrement","borderBottom","Inner","SnapshotCommitList","selectedFilteredCommitIndex","listRef","prevCommitIndexRef","maxCommitIndex","dragState","setDragState","handleDragCommit","newCommitIndex","newCommitLeft","newCommitRectRight","SnapshotSelector","numFilteredCommits","padStart","viewNextCommit","nextCommitIndex","viewPrevCommit","Commits","NoCommits","SidebarCommitInfo","NothingSelected","ListItem","InteractionList","interactionID","viewInteraction","SidebarInteractions","listItems","SidebarSelectedFiberInfo","selectedListItemRef","block","inline","Commit","prevIndex","NoProfilingData","Column","ProfilingNotSupported","Paragraph","ProcessingData","RecordingInProgress","sidebar","LeftColumn","RightColumn","ReactLogo","cx","cy","stroke","rx","ry","UnsupportedVersionDialog","showDialog","DialogContent","unsupportedRendererVersionDetected","WarnIfLegacyBackendDetected","unlisten","InvalidBackendDetected","Command","DevTools","defaultTab","enabledInspectedElementContextMenu","overrideTab","showTabBar","warnIfLegacyBackendDetected","warnIfUnsupportedVersionDetected","setTab","viewElementSource","contextMenu","devToolsRef","DevToolsVersion","TabContent","COMMON_EDITORS","childProcess","getValidFilePath","maybeRelativePath","absoluteProjectRoots","isAbsolute","existsSync","projectRoot","joinedPath","launchEditor","filePath","REACT_EDITOR","platform","execSync","processNames","processName","VISUAL","EDITOR","guessEditor","editor","destructuredArgs","basename","getArgumentsForLineNumber","isTerminalEditor","kill","spawn","stdio","errorCode","uidCounter","hasDetectedBadDCE","fiberRoots","rendererInterfaces","renderers","getFiberRoots","reactBuildType","Mount","_renderNewRootComponent","renderRootCode","detectReactBuildType","__REACT_DEVTOOLS_APPEND_COMPONENT_STACK__","__REACT_DEVTOOLS_BREAK_ON_CONSOLE_ERRORS__","registerRendererWithConsole","patchConsole","attach","__REACT_DEVTOOLS_ATTACH__","rendererInterface","off","sub","handleCommitFiberUnmount","mountedRoots","isKnownRoot","isUnmounting","handleCommitFiberRoot","__DEV__","installHook","nodeWaitingToConnectHTML","projectRoots","statusListener","safeUnmount","onDisconnected","initialize","transferable","createRoot","startServerTimeoutID","DevtoolsUI","connectToSocket","onerror","onclose","setContentDOMNode","setProjectRoots","setStatusListener","startServer","httpsOptions","useHttps","httpServer","connected","backendFile","readFileSync","__dirname","savedPreferencesString","getAppendComponentStack","getBreakOnConsoleErrors"],"mappings":"2BACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QA0Df,OArDAF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,GAIjBlC,EAAoBA,EAAoBmC,EAAI,K,+BC/EnDhC,EAAOD,QAAUkC,EAAQ,K,cCE3BjC,EAAOD,QAAU,SAASmC,GACzB,IAAIC,EAAO,GAwCX,OArCAA,EAAKC,SAAW,WACf,OAAOC,KAAKC,KAAI,SAAUC,GACzB,IAAIC,EAsCP,SAAgCD,EAAML,GACrC,IAAIM,EAAUD,EAAK,IAAM,GACrBE,EAAaF,EAAK,GACtB,IAAKE,EACJ,OAAOD,EAGR,GAAIN,GAAgC,mBAATQ,KAAqB,CAC/C,IAAIC,GAYaC,EAZaH,EAiBxB,mEAHMC,KAAKG,SAASC,mBAAmBC,KAAKC,UAAUJ,MAGtC,OAhBlBK,EAAaR,EAAWS,QAAQZ,KAAI,SAAUa,GACjD,MAAO,iBAAmBV,EAAWW,WAAaD,EAAS,SAG5D,MAAO,CAACX,GAASa,OAAOJ,GAAYI,OAAO,CAACV,IAAgBW,KAAK,MAOnE,IAAmBV,EAJlB,MAAO,CAACJ,GAASc,KAAK,MAtDNC,CAAuBhB,EAAML,GAC3C,OAAGK,EAAK,GACA,UAAYA,EAAK,GAAK,IAAMC,EAAU,IAEtCA,KAENc,KAAK,KAITnB,EAAKlC,EAAI,SAASE,EAASqD,GACJ,iBAAZrD,IACTA,EAAU,CAAC,CAAC,KAAMA,EAAS,MAE5B,IADA,IAAIsD,EAAyB,GACrBxD,EAAI,EAAGA,EAAIoC,KAAKqB,OAAQzD,IAAK,CACpC,IAAI0D,EAAKtB,KAAKpC,GAAG,GACA,iBAAP0D,IACTF,EAAuBE,IAAM,GAE/B,IAAI1D,EAAI,EAAGA,EAAIE,EAAQuD,OAAQzD,IAAK,CACnC,IAAIsC,EAAOpC,EAAQF,GAKG,iBAAZsC,EAAK,IAAoBkB,EAAuBlB,EAAK,MAC3DiB,IAAejB,EAAK,GACtBA,EAAK,GAAKiB,EACDA,IACTjB,EAAK,GAAK,IAAMA,EAAK,GAAK,UAAYiB,EAAa,KAEpDrB,EAAKyB,KAAKrB,MAINJ,I,gBCzCR,IAEwB0B,EACnBC,EAHDC,EAAc,GAWdC,GAToBH,EASF,WAMrB,OAAOI,QAAUC,UAAYA,SAASC,MAAQF,OAAOG,MAZ9C,WAEN,YADoB,IAATN,IAAsBA,EAAOD,EAAGQ,MAAMhC,KAAMiC,YAChDR,IAaLS,EAAY,SAAUC,EAAQC,GAChC,OAAIA,EACKA,EAAOC,cAAcF,GAEvBN,SAASQ,cAAcF,IAG5BG,EAAa,SAAWd,GAC3B,IAAIC,EAAO,GAEX,OAAO,SAASU,EAAQC,GAMT,GAAsB,mBAAXD,EACH,OAAOA,IAEf,QAA4B,IAAjBV,EAAKU,GAAyB,CACtD,IAAII,EAAcL,EAAUnE,KAAKiC,KAAMmC,EAAQC,GAE/C,GAAIR,OAAOY,mBAAqBD,aAAuBX,OAAOY,kBAC7D,IAGCD,EAAcA,EAAYE,gBAAgBC,KACzC,MAAMC,GACPJ,EAAc,KAGhBd,EAAKU,GAAUI,EAEhB,OAAOd,EAAKU,IA1BG,GA8BbS,EAAY,KACZC,EAAmB,EACnBC,EAAsB,GAEtBC,EAAU,EAAQ,KAqDtB,SAASC,EAAgBC,EAAQC,GAChC,IAAK,IAAItF,EAAI,EAAGA,EAAIqF,EAAO5B,OAAQzD,IAAK,CACvC,IAAIsC,EAAO+C,EAAOrF,GACduF,EAAWzB,EAAYxB,EAAKoB,IAEhC,GAAG6B,EAAU,CACZA,EAASC,OAET,IAAI,IAAIC,EAAI,EAAGA,EAAIF,EAASG,MAAMjC,OAAQgC,IACzCF,EAASG,MAAMD,GAAGnD,EAAKoD,MAAMD,IAG9B,KAAMA,EAAInD,EAAKoD,MAAMjC,OAAQgC,IAC5BF,EAASG,MAAM/B,KAAKgC,EAASrD,EAAKoD,MAAMD,GAAIH,QAEvC,CACN,IAAII,EAAQ,GAEZ,IAAQD,EAAI,EAAGA,EAAInD,EAAKoD,MAAMjC,OAAQgC,IACrCC,EAAM/B,KAAKgC,EAASrD,EAAKoD,MAAMD,GAAIH,IAGpCxB,EAAYxB,EAAKoB,IAAM,CAACA,GAAIpB,EAAKoB,GAAI8B,KAAM,EAAGE,MAAOA,KAKxD,SAASE,EAAc1D,EAAMoD,GAI5B,IAHA,IAAID,EAAS,GACTQ,EAAY,GAEP7F,EAAI,EAAGA,EAAIkC,EAAKuB,OAAQzD,IAAK,CACrC,IAAIsC,EAAOJ,EAAKlC,GACZ0D,EAAK4B,EAAQQ,KAAOxD,EAAK,GAAKgD,EAAQQ,KAAOxD,EAAK,GAIlDyD,EAAO,CAACC,IAHF1D,EAAK,GAGO2D,MAFV3D,EAAK,GAEmBK,UADpBL,EAAK,IAGjBuD,EAAUnC,GACTmC,EAAUnC,GAAIgC,MAAM/B,KAAKoC,GADXV,EAAO1B,KAAKkC,EAAUnC,GAAM,CAACA,GAAIA,EAAIgC,MAAO,CAACK,KAIjE,OAAOV,EAGR,SAASa,EAAoBZ,EAASa,GACrC,IAAI5B,EAASG,EAAWY,EAAQc,YAEhC,IAAK7B,EACJ,MAAM,IAAI8B,MAAM,+GAGjB,IAAIC,EAAgCpB,EAAoBA,EAAoBzB,OAAS,GAErF,GAAyB,QAArB6B,EAAQiB,SACND,EAEMA,EAA8BE,YACxCjC,EAAOkC,aAAaN,EAAOG,EAA8BE,aAEzDjC,EAAOmC,YAAYP,GAJnB5B,EAAOkC,aAAaN,EAAO5B,EAAOoC,YAMnCzB,EAAoBvB,KAAKwC,QACnB,GAAyB,WAArBb,EAAQiB,SAClBhC,EAAOmC,YAAYP,OACb,IAAgC,iBAArBb,EAAQiB,WAAyBjB,EAAQiB,SAASK,OAInE,MAAM,IAAIP,MAAM,8LAHhB,IAAIG,EAAc9B,EAAWY,EAAQiB,SAASK,OAAQrC,GACtDA,EAAOkC,aAAaN,EAAOK,IAM7B,SAASK,EAAoBV,GAC5B,GAAyB,OAArBA,EAAMW,WAAqB,OAAO,EACtCX,EAAMW,WAAWC,YAAYZ,GAE7B,IAAIa,EAAM9B,EAAoB+B,QAAQd,GACnCa,GAAO,GACT9B,EAAoBgC,OAAOF,EAAK,GAIlC,SAASG,EAAoB7B,GAC5B,IAAIa,EAAQlC,SAASmD,cAAc,SAMnC,QAJ0BC,IAAvB/B,EAAQgC,MAAMC,OAChBjC,EAAQgC,MAAMC,KAAO,iBAGKF,IAAxB/B,EAAQgC,MAAME,MAAqB,CACrC,IAAIA,EAgCN,WACK,EAIJ,OAAO,KArCMC,GACRD,IACHlC,EAAQgC,MAAME,MAAQA,GAOxB,OAHAE,EAASvB,EAAOb,EAAQgC,OACxBpB,EAAmBZ,EAASa,GAErBA,EAiBR,SAASuB,EAAUC,EAAIL,GACtB5G,OAAOkH,KAAKN,GAAOO,SAAQ,SAAUtG,GACpCoG,EAAGG,aAAavG,EAAK+F,EAAM/F,OAY7B,SAASoE,EAAUoC,EAAKzC,GACvB,IAAIa,EAAO6B,EAAQC,EAAQC,EAG3B,GAAI5C,EAAQ6C,WAAaJ,EAAI/B,IAAK,CAK9B,KAJAkC,EAAsC,mBAAtB5C,EAAQ6C,UACxB7C,EAAQ6C,UAAUJ,EAAI/B,KACtBV,EAAQ6C,UAAUC,QAAQL,EAAI/B,MAS7B,OAAO,aAJP+B,EAAI/B,IAAMkC,EAUf,GAAI5C,EAAQN,UAAW,CACtB,IAAIqD,EAAapD,IAEjBkB,EAAQnB,IAAcA,EAAYmC,EAAmB7B,IAErD0C,EAASM,EAAoB9G,KAAK,KAAM2E,EAAOkC,GAAY,GAC3DJ,EAASK,EAAoB9G,KAAK,KAAM2E,EAAOkC,GAAY,QAG3DN,EAAIpF,WACW,mBAAR4F,KACwB,mBAAxBA,IAAIC,iBACoB,mBAAxBD,IAAIE,iBACK,mBAATC,MACS,mBAATjG,MAEP0D,EAlEF,SAA4Bb,GAC3B,IAAIqD,EAAO1E,SAASmD,cAAc,QAUlC,YAR0BC,IAAvB/B,EAAQgC,MAAMC,OAChBjC,EAAQgC,MAAMC,KAAO,YAEtBjC,EAAQgC,MAAMsB,IAAM,aAEpBlB,EAASiB,EAAMrD,EAAQgC,OACvBpB,EAAmBZ,EAASqD,GAErBA,EAuDEE,CAAkBvD,GAC1B0C,EAASc,EAAWtH,KAAK,KAAM2E,EAAOb,GACtC2C,EAAS,WACRpB,EAAmBV,GAEhBA,EAAM4C,MAAMR,IAAIE,gBAAgBtC,EAAM4C,SAG1C5C,EAAQgB,EAAmB7B,GAC3B0C,EAASgB,EAAWxH,KAAK,KAAM2E,GAC/B8B,EAAS,WACRpB,EAAmBV,KAMrB,OAFA6B,EAAOD,GAEA,SAAsBkB,GAC5B,GAAIA,EAAQ,CACX,GACCA,EAAOjD,MAAQ+B,EAAI/B,KACnBiD,EAAOhD,QAAU8B,EAAI9B,OACrBgD,EAAOtG,YAAcoF,EAAIpF,UAEzB,OAGDqF,EAAOD,EAAMkB,QAEbhB,KA1PHlI,EAAOD,QAAU,SAASoC,EAAMoD,GAC/B,GAAqB,oBAAV4D,OAAyBA,OACX,iBAAbjF,SAAuB,MAAM,IAAIoC,MAAM,iEAGnDf,EAAUA,GAAW,IAEbgC,MAAiC,iBAAlBhC,EAAQgC,MAAqBhC,EAAQgC,MAAQ,GAI/DhC,EAAQN,WAA0C,kBAAtBM,EAAQN,YAAyBM,EAAQN,UAAYjB,KAG1EuB,EAAQc,aAAYd,EAAQc,WAAa,QAGhDd,EAAQiB,WAAUjB,EAAQiB,SAAW,UAE1C,IAAIlB,EAASO,EAAa1D,EAAMoD,GAIhC,OAFAF,EAAeC,EAAQC,GAEhB,SAAiB6D,GAGvB,IAFA,IAAIC,EAAY,GAEPpJ,EAAI,EAAGA,EAAIqF,EAAO5B,OAAQzD,IAAK,CACvC,IAAIsC,EAAO+C,EAAOrF,IACduF,EAAWzB,EAAYxB,EAAKoB,KAEvB8B,OACT4D,EAAUzF,KAAK4B,GAGb4D,GAEF/D,EADgBQ,EAAauD,EAAS7D,GACZA,GAG3B,IAAStF,EAAI,EAAGA,EAAIoJ,EAAU3F,OAAQzD,IAAK,CAC1C,IAAIuF,EAEJ,GAAqB,KAFjBA,EAAW6D,EAAUpJ,IAEbwF,KAAY,CACvB,IAAK,IAAIC,EAAI,EAAGA,EAAIF,EAASG,MAAMjC,OAAQgC,IAAKF,EAASG,MAAMD,YAExD3B,EAAYyB,EAAS7B,QAkNhC,IACK2F,EADDC,GACCD,EAAY,GAET,SAAUE,EAAOC,GAGvB,OAFAH,EAAUE,GAASC,EAEZH,EAAUI,OAAOC,SAASrG,KAAK,QAIxC,SAASiF,EAAqBnC,EAAOoD,EAAOtB,EAAQF,GACnD,IAAI/B,EAAMiC,EAAS,GAAKF,EAAI/B,IAE5B,GAAIG,EAAMwD,WACTxD,EAAMwD,WAAWC,QAAUN,EAAYC,EAAOvD,OACxC,CACN,IAAI6D,EAAU5F,SAAS6F,eAAe9D,GAClC+D,EAAa5D,EAAM4D,WAEnBA,EAAWR,IAAQpD,EAAMY,YAAYgD,EAAWR,IAEhDQ,EAAWtG,OACd0C,EAAMM,aAAaoD,EAASE,EAAWR,IAEvCpD,EAAMO,YAAYmD,IAKrB,SAASb,EAAY7C,EAAO4B,GAC3B,IAAI/B,EAAM+B,EAAI/B,IACVC,EAAQ8B,EAAI9B,MAMhB,GAJGA,GACFE,EAAM2B,aAAa,QAAS7B,GAG1BE,EAAMwD,WACRxD,EAAMwD,WAAWC,QAAU5D,MACrB,CACN,KAAMG,EAAMQ,YACXR,EAAMY,YAAYZ,EAAMQ,YAGzBR,EAAMO,YAAYzC,SAAS6F,eAAe9D,KAI5C,SAAS8C,EAAYH,EAAMrD,EAASyC,GACnC,IAAI/B,EAAM+B,EAAI/B,IACVrD,EAAYoF,EAAIpF,UAQhBqH,OAAgD3C,IAAlC/B,EAAQ2E,uBAAuCtH,GAE7D2C,EAAQ2E,uBAAyBD,KACpChE,EAAMb,EAAQa,IAGXrD,IAEHqD,GAAO,uDAAyDvD,KAAKG,SAASC,mBAAmBC,KAAKC,UAAUJ,MAAgB,OAGjI,IAAIuH,EAAO,IAAIxB,KAAK,CAAC1C,GAAM,CAAEuB,KAAM,aAE/B4C,EAASxB,EAAKI,KAElBJ,EAAKI,KAAOR,IAAIC,gBAAgB0B,GAE7BC,GAAQ5B,IAAIE,gBAAgB0B,K,gBC7YhC,IAAI5H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,8BCf5C,SAASC,IAEP,GAC4C,oBAAnCC,gCAC4C,mBAA5CA,+BAA+BD,SAFxC,CAMIE,EAUJ,IAEED,+BAA+BD,SAASA,GACxC,MAAOG,GAGPC,QAAQC,MAAMF,KAOhBH,GACAtK,EAAOD,QAAUkC,EAAQ,K,gBCjC3B,IAAIO,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAsE9E,EAAS+C,GAEzF/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBCfHrK,EAAOD,QAGjC,WACb,GAAwB,oBAAbmE,WAA6BA,SAAS0G,iBAC/C,OAAO,KAGT,IA+FMC,EACAC,EAFAC,EA9FFC,EAAY,GAqKhB,OAnKAA,EAAUC,KAAQ,WAChB,IAAIF,GAAa,EACbG,EAAQ,KACRC,GAAkB,EAEtB,SAASC,IACPL,GAAa,EACbG,EAAQ,KACJC,GACFlH,OAAOoH,eAAeC,kBAExBH,GAAkB,EAuCpB,OApCAjH,SAAS0G,iBAAiB,QAAQ,SAAS5F,GACzC,GAAI+F,EAAY,CACd,IAAK,IAAIvJ,KAAO0J,EACdlG,EAAEuG,cAAcC,QAAQhK,EAAK0J,EAAM1J,IAErCwD,EAAEyG,qBA+BC,SAASC,GACd,OAAO,IAAIC,SAAQ,SAASC,EAASC,GACnCd,GAAa,EACO,iBAATW,EACTR,EAAQ,CAAC,aAAcQ,GACdA,aAAgBI,KACzBZ,EAAQ,CAAC,aAAa,IAAIa,eAAgBC,kBAAkBN,IACnDA,aAAgB/K,OACzBuK,EAAQQ,EAERG,EAAO,4FAGT,SAASI,EAAYC,GACnB,IACE,GAAIhI,SAASiI,YAAY,QAGvBf,IACAQ,QAEG,CACH,GAAKM,EAKH,MADAd,IACM,IAAI9E,MAAM,gEArD5B,WACE,IAAI8F,EAAMlI,SAASmH,eAEnB,IAAKnH,SAASmI,oBAAoB,SAAWD,EAAIE,YAAa,CAe5D,IAAIC,EAAQrI,SAASsI,cACrBD,EAAME,mBAAmBvI,SAASwI,MAClCN,EAAId,kBACJc,EAAIO,SAASJ,GACbpB,GAAkB,GA2BVyB,GACAX,GAAY,IAMhB,MAAOjH,GACPoG,IACAS,EAAO7G,IAGXiH,EAAY,OArFA,GA2FlBjB,EAAU6B,OACJ9B,GAAa,EAIjB7G,SAAS0G,iBAAiB,SAAS,SAAS5F,GAC1C,GAAI+F,EAAY,CACdA,GAAa,EACb/F,EAAEyG,iBACF,IAAIG,EAAUf,EACdA,EAAW,KACXe,EAAQ5G,EAAEuG,cAAcuB,QAAQhC,QAI7B,SAASiC,GACd,OAAO,IAAIpB,SAAQ,SAASC,EAASC,GACnCd,GAAa,EACbF,EAAWe,EACXd,EAAYiC,GAAY,aACxB,IACO7I,SAASiI,YAAY,WACxBpB,GAAa,EACbc,EAAO,IAAIvF,MAAM,6EAEnB,MAAOtB,GACP+F,GAAa,EACbc,EAAO,IAAIvF,MAAMtB,UAOK,oBAAnBgI,qBACyB,IAAzB/I,OAAOsH,oBAC0B,IAAjCtH,OAAOsH,cAAcC;;AAG9B,SAAUyB,GAAG,SAASC,EAAED,EAAEC,GAAG,OAAO,WAAWD,EAAE5I,MAAM6I,EAAE5I,YAAY,SAAShE,EAAE2M,GAAG,GAAG,iBAAiB5K,KAAK,MAAM,IAAI8K,UAAU,wCAAwC,GAAG,mBAAmBF,EAAE,MAAM,IAAIE,UAAU,kBAAkB9K,KAAK+K,OAAO,KAAK/K,KAAKgL,OAAO,KAAKhL,KAAKiL,WAAW,GAAGrN,EAAEgN,EAAEC,EAAElI,EAAE3C,MAAM6K,EAAEK,EAAElL,OAAO,SAAS9B,EAAE0M,GAAG,IAAIC,EAAE7K,KAAK,OAAO,OAAOA,KAAK+K,YAAY/K,KAAKiL,WAAW1J,KAAKqJ,QAAQvH,GAAE,WAAW,IAAIpF,EAAE4M,EAAEE,OAAOH,EAAEO,YAAYP,EAAEQ,WAAW,GAAG,OAAOnN,EAAV,CAA+D,IAAIC,EAAE,IAAIA,EAAED,EAAE4M,EAAEG,QAAQ,MAAMrI,GAAG,YAAYiI,EAAEpB,OAAO7G,GAAGiI,EAAErB,QAAQrL,QAA1G2M,EAAEE,OAAOH,EAAErB,QAAQqB,EAAEpB,QAAQqB,EAAEG,WAAgF,SAASrI,EAAEiI,GAAG,IAAI,GAAGA,IAAI5K,KAAK,MAAM,IAAI8K,UAAU,6CAA6C,GAAGF,IAAI,iBAAiBA,GAAG,mBAAmBA,GAAG,CAAC,IAAI3M,EAAE2M,EAAES,KAAK,GAAG,mBAAmBpN,EAAE,YAAYL,EAAEiN,EAAE5M,EAAE2M,GAAGC,EAAElI,EAAE3C,MAAM6K,EAAEK,EAAElL,OAAOA,KAAK+K,QAAO,EAAG/K,KAAKgL,OAAOJ,EAAEU,EAAEvN,KAAKiC,MAAM,MAAM9B,GAAGgN,EAAEnN,KAAKiC,KAAK9B,IAAI,SAASgN,EAAEN,GAAG5K,KAAK+K,QAAO,EAAG/K,KAAKgL,OAAOJ,EAAEU,EAAEvN,KAAKiC,MAAM,SAASsL,IAAI,IAAI,IAAIV,EAAE,EAAEC,EAAE7K,KAAKiL,WAAW5J,OAAOwJ,EAAED,EAAEA,IAAI1M,EAAEH,KAAKiC,KAAKA,KAAKiL,WAAWL,IAAI5K,KAAKiL,WAAW,KAAK,SAASM,EAAEX,EAAEC,EAAE5M,EAAEC,GAAG8B,KAAKmL,YAAY,mBAAmBP,EAAEA,EAAE,KAAK5K,KAAKoL,WAAW,mBAAmBP,EAAEA,EAAE,KAAK7K,KAAKuJ,QAAQtL,EAAE+B,KAAKwJ,OAAOtL,EAAE,SAASN,EAAEgN,EAAEC,EAAE5M,GAAG,IAAIC,GAAE,EAAG,IAAI0M,GAAE,SAASA,GAAG1M,IAAIA,GAAE,EAAG2M,EAAED,OAAK,SAASA,GAAG1M,IAAIA,GAAE,EAAGD,EAAE2M,OAAM,MAAMjI,GAAG,GAAGzE,EAAE,OAAOA,GAAE,EAAGD,EAAE0E,IAAI,IAAIU,EAAEpF,EAAEuN,aAAa,mBAAmBC,cAAcA,cAAc,SAASb,GAAGc,WAAWd,EAAE,IAAIe,EAAEC,MAAMC,SAAS,SAASjB,GAAG,MAAM,mBAAmBtM,OAAOkB,UAAUO,SAAShC,KAAK6M,IAAI3M,EAAEuB,UAAF,MAAqB,SAASoL,GAAG,OAAO5K,KAAKqL,KAAK,KAAKT,IAAI3M,EAAEuB,UAAU6L,KAAK,SAAST,EAAEC,GAAG,IAAIlI,EAAE3C,KAAK,OAAO,IAAI/B,GAAE,SAASA,EAAEiN,GAAGhN,EAAEH,KAAK4E,EAAE,IAAI4I,EAAEX,EAAEC,EAAE5M,EAAEiN,QAAOjN,EAAE6D,IAAI,WAAW,IAAI8I,EAAEgB,MAAMpM,UAAUsM,MAAM/N,KAAK,IAAIkE,UAAUZ,QAAQsK,EAAE1J,UAAU,IAAIA,UAAU,GAAGA,WAAW,OAAO,IAAIhE,GAAE,SAAS4M,EAAE5M,GAAG,SAASC,EAAEgN,EAAEI,GAAG,IAAI,GAAGA,IAAI,iBAAiBA,GAAG,mBAAmBA,GAAG,CAAC,IAAIC,EAAED,EAAED,KAAK,GAAG,mBAAmBE,EAAE,YAAYA,EAAExN,KAAKuN,GAAE,SAASV,GAAG1M,EAAEgN,EAAEN,KAAI3M,GAAG2M,EAAEM,GAAGI,EAAE,KAAM3I,GAAGkI,EAAED,GAAG,MAAMhN,GAAGK,EAAEL,IAAI,GAAG,IAAIgN,EAAEvJ,OAAO,OAAOwJ,EAAE,IAAI,IAAI,IAAIlI,EAAEiI,EAAEvJ,OAAO6J,EAAE,EAAEA,EAAEN,EAAEvJ,OAAO6J,IAAIhN,EAAEgN,EAAEN,EAAEM,QAAOjN,EAAEsL,QAAQ,SAASqB,GAAG,OAAOA,GAAG,iBAAiBA,GAAGA,EAAEmB,cAAc9N,EAAE2M,EAAE,IAAI3M,GAAE,SAAS4M,GAAGA,EAAED,OAAM3M,EAAEuL,OAAO,SAASoB,GAAG,OAAO,IAAI3M,GAAE,SAAS4M,EAAE5M,GAAGA,EAAE2M,OAAM3M,EAAE+N,KAAK,SAASpB,GAAG,OAAO,IAAI3M,GAAE,SAAS4M,EAAE5M,GAAG,IAAI,IAAIC,EAAE,EAAEyE,EAAEiI,EAAEvJ,OAAOsB,EAAEzE,EAAEA,IAAI0M,EAAE1M,GAAGmN,KAAKR,EAAE5M,OAAkCN,EAAOD,QAAQC,EAAOD,QAAQO,EAAE2M,EAAEtB,UAAUsB,EAAEtB,QAAQrL,GAA50E,CAAi1E+B,MAEj1E2I,EAAUC,KAAO,SAASS,GACxB,OAAO,IAAIC,SAAQ,SAASC,EAASC,GAGnC,GAAoB,iBAATH,KAAuB,eAAgBA,GAChD,MAAM,IAAIpF,MAAM,uCAGlB,IAAIgI,EAA2B,iBAAT5C,EAAoBA,EAAOA,EAAK,cAClCzH,OAAOsH,cAAcC,QAAQ,OAAQ8C,GAEvD1C,IAEAC,EAAO,IAAIvF,MAAM,8BAKvB0E,EAAU6B,MAAQ,WAChB,OAAO,IAAIlB,SAAQ,SAASC,EAASC,GACnC,IAAIyC,EAAUrK,OAAOsH,cAAcuB,QAAQ,QACvCwB,EACF1C,EAAQ0C,GAGRzC,EAAO,IAAIvF,MAAM,+BAMlB0E,EA7KiDuD,I,gBCD1D,IAAI/L,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,6BCd1CrK,EAAOD,QAAUkC,EAAQ,K,gBCF3B,IAAIO,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAA4E9E,EAAS+C,GAE/F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAA4E9E,EAAS+C,GAE/F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBCA1CrK,EAAOD,QAAUkC,EAAQ,IAARA,I,gBChBnB,IAAIO,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAsE9E,EAAS+C,GAEzF/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAsE9E,EAAS+C,GAEzF/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,6BCf5CrK,EAAOD,QAAU,CACfyO,aAAc,CAAC,aAAc,cAAe,aAC5CC,KAAM,uCACNC,YAAa1N,OAAO,eACpB2N,WAAY3N,OAAO,aACnB4N,aAAcC,OAAOC,MAAM,GAC3BC,KAAM,S,gBCPR,IAAIvM,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAsE9E,EAAS+C,GAEzF/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,cCjB5CrK,EAAOD,QAAUkC,QAAQ,S,gBCCzB,IAAIO,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAsE9E,EAAS+C,GAEzF/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,6BCftB,oBAAXpG,QAAoD,mBAAnB+K,eAC1ChP,EAAOD,QAAUkC,EAAQ,IAEzBjC,EAAOD,QAAUkC,EAAQ,K,cCL3BjC,EAAOD,QAAUkC,QAAQ,O,cCEzB,IAAIgN,EAFJlP,EAAUC,EAAOD,QAAUmP,EAQzBD,EAJqB,iBAAZzE,SACPA,QAAQ2E,KACR3E,QAAQ2E,IAAIC,YACZ,cAAcC,KAAK7E,QAAQ2E,IAAIC,YACzB,WACN,IAAIE,EAAOrB,MAAMpM,UAAUsM,MAAM/N,KAAKkE,UAAW,GACjDgL,EAAKC,QAAQ,UACb7E,QAAQ8E,IAAInL,MAAMqG,QAAS4E,IAGrB,aAKVvP,EAAQ0P,oBAAsB,QAE9B,IACIC,EAAmBC,OAAOD,kBACD,iBAMzBE,EAAK7P,EAAQ6P,GAAK,GAClBC,EAAM9P,EAAQ8P,IAAM,GACpB1O,EAAIpB,EAAQ+P,OAAS,GACrBC,EAAI,EAER,SAASC,EAAKtO,GACZP,EAAEO,GAAKqO,IASTC,EAAI,qBACJH,EAAI1O,EAAE8O,mBAAqB,cAC3BD,EAAI,0BACJH,EAAI1O,EAAE+O,wBAA0B,SAMhCF,EAAI,wBACJH,EAAI1O,EAAEgP,sBAAwB,6BAK9BH,EAAI,eACJH,EAAI1O,EAAEiP,aAAe,IAAMP,EAAI1O,EAAE8O,mBAAZ,QACIJ,EAAI1O,EAAE8O,mBADV,QAEIJ,EAAI1O,EAAE8O,mBAAqB,IAEpDD,EAAI,oBACJH,EAAI1O,EAAEkP,kBAAoB,IAAMR,EAAI1O,EAAE+O,wBAAZ,QACIL,EAAI1O,EAAE+O,wBADV,QAEIL,EAAI1O,EAAE+O,wBAA0B,IAK9DF,EAAI,wBACJH,EAAI1O,EAAEmP,sBAAwB,MAAQT,EAAI1O,EAAE8O,mBAChB,IAAMJ,EAAI1O,EAAEgP,sBAAwB,IAEhEH,EAAI,6BACJH,EAAI1O,EAAEoP,2BAA6B,MAAQV,EAAI1O,EAAE+O,wBAChB,IAAML,EAAI1O,EAAEgP,sBAAwB,IAMrEH,EAAI,cACJH,EAAI1O,EAAEqP,YAAc,QAAUX,EAAI1O,EAAEmP,sBAClB,SAAWT,EAAI1O,EAAEmP,sBAAwB,OAE3DN,EAAI,mBACJH,EAAI1O,EAAEsP,iBAAmB,SAAWZ,EAAI1O,EAAEoP,2BACnB,SAAWV,EAAI1O,EAAEoP,2BAA6B,OAKrEP,EAAI,mBACJH,EAAI1O,EAAEuP,iBAAmB,gBAMzBV,EAAI,SACJH,EAAI1O,EAAEwP,OAAS,UAAYd,EAAI1O,EAAEuP,iBACpB,SAAWb,EAAI1O,EAAEuP,iBAAmB,OAWjDV,EAAI,QACJA,EAAI,aACJH,EAAI1O,EAAEyP,WAAa,KAAOf,EAAI1O,EAAEiP,aACdP,EAAI1O,EAAEqP,YAAc,IACpBX,EAAI1O,EAAEwP,OAAS,IAEjCd,EAAI1O,EAAE0P,MAAQ,IAAMhB,EAAI1O,EAAEyP,WAAa,IAKvCZ,EAAI,cACJH,EAAI1O,EAAE2P,YAAc,WAAajB,EAAI1O,EAAEkP,kBACrBR,EAAI1O,EAAEsP,iBAAmB,IACzBZ,EAAI1O,EAAEwP,OAAS,IAEjCX,EAAI,SACJH,EAAI1O,EAAE4P,OAAS,IAAMlB,EAAI1O,EAAE2P,YAAc,IAEzCd,EAAI,QACJH,EAAI1O,EAAE6P,MAAQ,eAKdhB,EAAI,yBACJH,EAAI1O,EAAE8P,uBAAyBpB,EAAI1O,EAAE+O,wBAA0B,WAC/DF,EAAI,oBACJH,EAAI1O,EAAE+P,kBAAoBrB,EAAI1O,EAAE8O,mBAAqB,WAErDD,EAAI,eACJH,EAAI1O,EAAEgQ,aAAe,YAActB,EAAI1O,EAAE+P,kBAApB,WACUrB,EAAI1O,EAAE+P,kBADhB,WAEUrB,EAAI1O,EAAE+P,kBAFhB,OAGMrB,EAAI1O,EAAEqP,YAAc,KAC5BX,EAAI1O,EAAEwP,OAJJ,QAOrBX,EAAI,oBACJH,EAAI1O,EAAEiQ,kBAAoB,YAAcvB,EAAI1O,EAAE8P,uBAApB,WACUpB,EAAI1O,EAAE8P,uBADhB,WAEUpB,EAAI1O,EAAE8P,uBAFhB,OAGMpB,EAAI1O,EAAEsP,iBAAmB,KACjCZ,EAAI1O,EAAEwP,OAJJ,QAO1BX,EAAI,UACJH,EAAI1O,EAAEkQ,QAAU,IAAMxB,EAAI1O,EAAE6P,MAAQ,OAASnB,EAAI1O,EAAEgQ,aAAe,IAClEnB,EAAI,eACJH,EAAI1O,EAAEmQ,aAAe,IAAMzB,EAAI1O,EAAE6P,MAAQ,OAASnB,EAAI1O,EAAEiQ,kBAAoB,IAI5EpB,EAAI,UACJH,EAAI1O,EAAEoQ,QAAU,0EAKhBvB,EAAI,aACJJ,EAAGzO,EAAEqQ,WAAa,IAAIC,OAAO5B,EAAI1O,EAAEoQ,QAAS,KAI5CvB,EAAI,aACJH,EAAI1O,EAAEuQ,WAAa,UAEnB1B,EAAI,aACJH,EAAI1O,EAAEwQ,WAAa,SAAW9B,EAAI1O,EAAEuQ,WAAa,OACjD9B,EAAGzO,EAAEwQ,WAAa,IAAIF,OAAO5B,EAAI1O,EAAEwQ,WAAY,KAG/C3B,EAAI,SACJH,EAAI1O,EAAEyQ,OAAS,IAAM/B,EAAI1O,EAAEuQ,WAAa7B,EAAI1O,EAAEgQ,aAAe,IAC7DnB,EAAI,cACJH,EAAI1O,EAAE0Q,YAAc,IAAMhC,EAAI1O,EAAEuQ,WAAa7B,EAAI1O,EAAEiQ,kBAAoB,IAIvEpB,EAAI,aACJH,EAAI1O,EAAE2Q,WAAa,UAEnB9B,EAAI,aACJH,EAAI1O,EAAE4Q,WAAa,SAAWlC,EAAI1O,EAAE2Q,WAAa,OACjDlC,EAAGzO,EAAE4Q,WAAa,IAAIN,OAAO5B,EAAI1O,EAAE4Q,WAAY,KAG/C/B,EAAI,SACJH,EAAI1O,EAAE6Q,OAAS,IAAMnC,EAAI1O,EAAE2Q,WAAajC,EAAI1O,EAAEgQ,aAAe,IAC7DnB,EAAI,cACJH,EAAI1O,EAAE8Q,YAAc,IAAMpC,EAAI1O,EAAE2Q,WAAajC,EAAI1O,EAAEiQ,kBAAoB,IAGvEpB,EAAI,mBACJH,EAAI1O,EAAE+Q,iBAAmB,IAAMrC,EAAI1O,EAAE6P,MAAQ,QAAUnB,EAAI1O,EAAE2P,YAAc,QAC3Ed,EAAI,cACJH,EAAI1O,EAAEgR,YAAc,IAAMtC,EAAI1O,EAAE6P,MAAQ,QAAUnB,EAAI1O,EAAEyP,WAAa,QAIrEZ,EAAI,kBACJH,EAAI1O,EAAEiR,gBAAkB,SAAWvC,EAAI1O,EAAE6P,MACnB,QAAUnB,EAAI1O,EAAE2P,YAAc,IAAMjB,EAAI1O,EAAEgQ,aAAe,IAG/EvB,EAAGzO,EAAEiR,gBAAkB,IAAIX,OAAO5B,EAAI1O,EAAEiR,gBAAiB,KAOzDpC,EAAI,eACJH,EAAI1O,EAAEkR,aAAe,SAAWxC,EAAI1O,EAAEgQ,aAAjB,cAEItB,EAAI1O,EAAEgQ,aAFV,SAKrBnB,EAAI,oBACJH,EAAI1O,EAAEmR,kBAAoB,SAAWzC,EAAI1O,EAAEiQ,kBAAjB,cAEIvB,EAAI1O,EAAEiQ,kBAFV,SAM1BpB,EAAI,QACJH,EAAI1O,EAAEoR,MAAQ,kBAId,IAAK,IAAItS,EAAI,EAAGA,EAAI8P,EAAG9P,IACrBgP,EAAMhP,EAAG4P,EAAI5P,IACR2P,EAAG3P,KACN2P,EAAG3P,GAAK,IAAIwR,OAAO5B,EAAI5P,KAK3B,SAASuS,EAAOC,EAASlN,GAQvB,GAPKA,GAA8B,iBAAZA,IACrBA,EAAU,CACRmN,QAASnN,EACToN,mBAAmB,IAInBF,aAAmBvD,EACrB,OAAOuD,EAGT,GAAuB,iBAAZA,EACT,OAAO,KAGT,GAAIA,EAAQ/O,OAxPG,IAyPb,OAAO,KAIT,KADQ6B,EAAQmN,MAAQ9C,EAAGzO,EAAE4P,OAASnB,EAAGzO,EAAE0P,OACpCxB,KAAKoD,GACV,OAAO,KAGT,IACE,OAAO,IAAIvD,EAAOuD,EAASlN,GAC3B,MAAOqN,GACP,OAAO,MAkBX,SAAS1D,EAAQuD,EAASlN,GAOxB,GANKA,GAA8B,iBAAZA,IACrBA,EAAU,CACRmN,QAASnN,EACToN,mBAAmB,IAGnBF,aAAmBvD,EAAQ,CAC7B,GAAIuD,EAAQC,QAAUnN,EAAQmN,MAC5B,OAAOD,EAEPA,EAAUA,EAAQA,aAEf,GAAuB,iBAAZA,EAChB,MAAM,IAAItF,UAAU,oBAAsBsF,GAG5C,GAAIA,EAAQ/O,OAvSG,IAwSb,MAAM,IAAIyJ,UAAU,yCAGtB,KAAM9K,gBAAgB6M,GACpB,OAAO,IAAIA,EAAOuD,EAASlN,GAG7B0J,EAAM,SAAUwD,EAASlN,GACzBlD,KAAKkD,QAAUA,EACflD,KAAKqQ,QAAUnN,EAAQmN,MAEvB,IAAIrS,EAAIoS,EAAQI,OAAOC,MAAMvN,EAAQmN,MAAQ9C,EAAGzO,EAAE4P,OAASnB,EAAGzO,EAAE0P,OAEhE,IAAKxQ,EACH,MAAM,IAAI8M,UAAU,oBAAsBsF,GAU5C,GAPApQ,KAAK0Q,IAAMN,EAGXpQ,KAAK2Q,OAAS3S,EAAE,GAChBgC,KAAK4Q,OAAS5S,EAAE,GAChBgC,KAAK6Q,OAAS7S,EAAE,GAEZgC,KAAK2Q,MAAQtD,GAAoBrN,KAAK2Q,MAAQ,EAChD,MAAM,IAAI7F,UAAU,yBAGtB,GAAI9K,KAAK4Q,MAAQvD,GAAoBrN,KAAK4Q,MAAQ,EAChD,MAAM,IAAI9F,UAAU,yBAGtB,GAAI9K,KAAK6Q,MAAQxD,GAAoBrN,KAAK6Q,MAAQ,EAChD,MAAM,IAAI/F,UAAU,yBAIjB9M,EAAE,GAGLgC,KAAK8Q,WAAa9S,EAAE,GAAG+S,MAAM,KAAK9Q,KAAI,SAAUqB,GAC9C,GAAI,WAAW0L,KAAK1L,GAAK,CACvB,IAAI0P,GAAO1P,EACX,GAAI0P,GAAO,GAAKA,EAAM3D,EACpB,OAAO2D,EAGX,OAAO1P,KATTtB,KAAK8Q,WAAa,GAapB9Q,KAAKiR,MAAQjT,EAAE,GAAKA,EAAE,GAAG+S,MAAM,KAAO,GACtC/Q,KAAKkR,SArHPxT,EAAQyS,MAAQA,EAiChBzS,EAAQyT,MACR,SAAgBf,EAASlN,GACvB,IAAIkO,EAAIjB,EAAMC,EAASlN,GACvB,OAAOkO,EAAIA,EAAEhB,QAAU,MAGzB1S,EAAQ2T,MACR,SAAgBjB,EAASlN,GACvB,IAAIvD,EAAIwQ,EAAMC,EAAQI,OAAOc,QAAQ,SAAU,IAAKpO,GACpD,OAAOvD,EAAIA,EAAEyQ,QAAU,MAGzB1S,EAAQmP,OAASA,EA2EjBA,EAAOrN,UAAU0R,OAAS,WAKxB,OAJAlR,KAAKoQ,QAAUpQ,KAAK2Q,MAAQ,IAAM3Q,KAAK4Q,MAAQ,IAAM5Q,KAAK6Q,MACtD7Q,KAAK8Q,WAAWzP,SAClBrB,KAAKoQ,SAAW,IAAMpQ,KAAK8Q,WAAW7P,KAAK,MAEtCjB,KAAKoQ,SAGdvD,EAAOrN,UAAUO,SAAW,WAC1B,OAAOC,KAAKoQ,SAGdvD,EAAOrN,UAAU+R,QAAU,SAAUC,GAMnC,OALA5E,EAAM,iBAAkB5M,KAAKoQ,QAASpQ,KAAKkD,QAASsO,GAC9CA,aAAiB3E,IACrB2E,EAAQ,IAAI3E,EAAO2E,EAAOxR,KAAKkD,UAG1BlD,KAAKyR,YAAYD,IAAUxR,KAAK0R,WAAWF,IAGpD3E,EAAOrN,UAAUiS,YAAc,SAAUD,GAKvC,OAJMA,aAAiB3E,IACrB2E,EAAQ,IAAI3E,EAAO2E,EAAOxR,KAAKkD,UAG1ByO,EAAmB3R,KAAK2Q,MAAOa,EAAMb,QACrCgB,EAAmB3R,KAAK4Q,MAAOY,EAAMZ,QACrCe,EAAmB3R,KAAK6Q,MAAOW,EAAMX,QAG9ChE,EAAOrN,UAAUkS,WAAa,SAAUF,GAMtC,GALMA,aAAiB3E,IACrB2E,EAAQ,IAAI3E,EAAO2E,EAAOxR,KAAKkD,UAI7BlD,KAAK8Q,WAAWzP,SAAWmQ,EAAMV,WAAWzP,OAC9C,OAAQ,EACH,IAAKrB,KAAK8Q,WAAWzP,QAAUmQ,EAAMV,WAAWzP,OACrD,OAAO,EACF,IAAKrB,KAAK8Q,WAAWzP,SAAWmQ,EAAMV,WAAWzP,OACtD,OAAO,EAGT,IAAIzD,EAAI,EACR,EAAG,CACD,IAAIgN,EAAI5K,KAAK8Q,WAAWlT,GACpBiN,EAAI2G,EAAMV,WAAWlT,GAEzB,GADAgP,EAAM,qBAAsBhP,EAAGgN,EAAGC,QACxB5F,IAAN2F,QAAyB3F,IAAN4F,EACrB,OAAO,EACF,QAAU5F,IAAN4F,EACT,OAAO,EACF,QAAU5F,IAAN2F,EACT,OAAQ,EACH,GAAIA,IAAMC,EAGf,OAAO8G,EAAmB/G,EAAGC,WAEtBjN,IAGbiP,EAAOrN,UAAUoS,aAAe,SAAUJ,GAClCA,aAAiB3E,IACrB2E,EAAQ,IAAI3E,EAAO2E,EAAOxR,KAAKkD,UAGjC,IAAItF,EAAI,EACR,EAAG,CACD,IAAIgN,EAAI5K,KAAKiR,MAAMrT,GACfiN,EAAI2G,EAAMP,MAAMrT,GAEpB,GADAgP,EAAM,qBAAsBhP,EAAGgN,EAAGC,QACxB5F,IAAN2F,QAAyB3F,IAAN4F,EACrB,OAAO,EACF,QAAU5F,IAAN4F,EACT,OAAO,EACF,QAAU5F,IAAN2F,EACT,OAAQ,EACH,GAAIA,IAAMC,EAGf,OAAO8G,EAAmB/G,EAAGC,WAEtBjN,IAKbiP,EAAOrN,UAAUqS,IAAM,SAAUC,EAASC,GACxC,OAAQD,GACN,IAAK,WACH9R,KAAK8Q,WAAWzP,OAAS,EACzBrB,KAAK6Q,MAAQ,EACb7Q,KAAK4Q,MAAQ,EACb5Q,KAAK2Q,QACL3Q,KAAK6R,IAAI,MAAOE,GAChB,MACF,IAAK,WACH/R,KAAK8Q,WAAWzP,OAAS,EACzBrB,KAAK6Q,MAAQ,EACb7Q,KAAK4Q,QACL5Q,KAAK6R,IAAI,MAAOE,GAChB,MACF,IAAK,WAIH/R,KAAK8Q,WAAWzP,OAAS,EACzBrB,KAAK6R,IAAI,QAASE,GAClB/R,KAAK6R,IAAI,MAAOE,GAChB,MAGF,IAAK,aAC4B,IAA3B/R,KAAK8Q,WAAWzP,QAClBrB,KAAK6R,IAAI,QAASE,GAEpB/R,KAAK6R,IAAI,MAAOE,GAChB,MAEF,IAAK,QAKgB,IAAf/R,KAAK4Q,OACU,IAAf5Q,KAAK6Q,OACsB,IAA3B7Q,KAAK8Q,WAAWzP,QAClBrB,KAAK2Q,QAEP3Q,KAAK4Q,MAAQ,EACb5Q,KAAK6Q,MAAQ,EACb7Q,KAAK8Q,WAAa,GAClB,MACF,IAAK,QAKgB,IAAf9Q,KAAK6Q,OAA0C,IAA3B7Q,KAAK8Q,WAAWzP,QACtCrB,KAAK4Q,QAEP5Q,KAAK6Q,MAAQ,EACb7Q,KAAK8Q,WAAa,GAClB,MACF,IAAK,QAK4B,IAA3B9Q,KAAK8Q,WAAWzP,QAClBrB,KAAK6Q,QAEP7Q,KAAK8Q,WAAa,GAClB,MAGF,IAAK,MACH,GAA+B,IAA3B9Q,KAAK8Q,WAAWzP,OAClBrB,KAAK8Q,WAAa,CAAC,OACd,CAEL,IADA,IAAIlT,EAAIoC,KAAK8Q,WAAWzP,SACfzD,GAAK,GACsB,iBAAvBoC,KAAK8Q,WAAWlT,KACzBoC,KAAK8Q,WAAWlT,KAChBA,GAAK,IAGE,IAAPA,GAEFoC,KAAK8Q,WAAWvP,KAAK,GAGrBwQ,IAGE/R,KAAK8Q,WAAW,KAAOiB,EACrBC,MAAMhS,KAAK8Q,WAAW,MACxB9Q,KAAK8Q,WAAa,CAACiB,EAAY,IAGjC/R,KAAK8Q,WAAa,CAACiB,EAAY,IAGnC,MAEF,QACE,MAAM,IAAI9N,MAAM,+BAAiC6N,GAIrD,OAFA9R,KAAKkR,SACLlR,KAAK0Q,IAAM1Q,KAAKoQ,QACTpQ,MAGTtC,EAAQmU,IACR,SAAczB,EAAS0B,EAASzB,EAAO0B,GACd,iBAAX1B,IACV0B,EAAa1B,EACbA,OAAQpL,GAGV,IACE,OAAO,IAAI4H,EAAOuD,EAASC,GAAOwB,IAAIC,EAASC,GAAY3B,QAC3D,MAAOG,GACP,OAAO,OAIX7S,EAAQuU,KACR,SAAeC,EAAUC,GACvB,GAAIC,EAAGF,EAAUC,GACf,OAAO,KAEP,IAAIE,EAAKlC,EAAM+B,GACXI,EAAKnC,EAAMgC,GACXI,EAAS,GACb,GAAIF,EAAGvB,WAAWzP,QAAUiR,EAAGxB,WAAWzP,OAAQ,CAChDkR,EAAS,MACT,IAAIC,EAAgB,aAEtB,IAAK,IAAIrT,KAAOkT,EACd,IAAY,UAARlT,GAA2B,UAARA,GAA2B,UAARA,IACpCkT,EAAGlT,KAASmT,EAAGnT,GACjB,OAAOoT,EAASpT,EAItB,OAAOqT,GAIX9U,EAAQiU,mBAAqBA,EAE7B,IAAIc,EAAU,WACd,SAASd,EAAoB/G,EAAGC,GAC9B,IAAI6H,EAAOD,EAAQzF,KAAKpC,GACpB+H,EAAOF,EAAQzF,KAAKnC,GAOxB,OALI6H,GAAQC,IACV/H,GAAKA,EACLC,GAAKA,GAGAD,IAAMC,EAAI,EACZ6H,IAASC,GAAS,EAClBA,IAASD,EAAQ,EAClB9H,EAAIC,GAAK,EACT,EAwBN,SAAS0G,EAAS3G,EAAGC,EAAGwF,GACtB,OAAO,IAAIxD,EAAOjC,EAAGyF,GAAOkB,QAAQ,IAAI1E,EAAOhC,EAAGwF,IAmCpD,SAASuC,EAAIhI,EAAGC,EAAGwF,GACjB,OAAOkB,EAAQ3G,EAAGC,EAAGwF,GAAS,EAIhC,SAASwC,EAAIjI,EAAGC,EAAGwF,GACjB,OAAOkB,EAAQ3G,EAAGC,EAAGwF,GAAS,EAIhC,SAAS+B,EAAIxH,EAAGC,EAAGwF,GACjB,OAAgC,IAAzBkB,EAAQ3G,EAAGC,EAAGwF,GAIvB,SAASyC,EAAKlI,EAAGC,EAAGwF,GAClB,OAAgC,IAAzBkB,EAAQ3G,EAAGC,EAAGwF,GAIvB,SAAS0C,EAAKnI,EAAGC,EAAGwF,GAClB,OAAOkB,EAAQ3G,EAAGC,EAAGwF,IAAU,EAIjC,SAAS2C,EAAKpI,EAAGC,EAAGwF,GAClB,OAAOkB,EAAQ3G,EAAGC,EAAGwF,IAAU,EAIjC,SAAS4C,EAAKrI,EAAGsI,EAAIrI,EAAGwF,GACtB,OAAQ6C,GACN,IAAK,MAKH,MAJiB,iBAANtI,IACTA,EAAIA,EAAEwF,SACS,iBAANvF,IACTA,EAAIA,EAAEuF,SACDxF,IAAMC,EAEf,IAAK,MAKH,MAJiB,iBAAND,IACTA,EAAIA,EAAEwF,SACS,iBAANvF,IACTA,EAAIA,EAAEuF,SACDxF,IAAMC,EAEf,IAAK,GACL,IAAK,IACL,IAAK,KACH,OAAOuH,EAAGxH,EAAGC,EAAGwF,GAElB,IAAK,KACH,OAAOyC,EAAIlI,EAAGC,EAAGwF,GAEnB,IAAK,IACH,OAAOuC,EAAGhI,EAAGC,EAAGwF,GAElB,IAAK,KACH,OAAO0C,EAAInI,EAAGC,EAAGwF,GAEnB,IAAK,IACH,OAAOwC,EAAGjI,EAAGC,EAAGwF,GAElB,IAAK,KACH,OAAO2C,EAAIpI,EAAGC,EAAGwF,GAEnB,QACE,MAAM,IAAIvF,UAAU,qBAAuBoI,IAKjD,SAASC,EAAYC,EAAMlQ,GAQzB,GAPKA,GAA8B,iBAAZA,IACrBA,EAAU,CACRmN,QAASnN,EACToN,mBAAmB,IAInB8C,aAAgBD,EAAY,CAC9B,GAAIC,EAAK/C,UAAYnN,EAAQmN,MAC3B,OAAO+C,EAEPA,EAAOA,EAAKvU,MAIhB,KAAMmB,gBAAgBmT,GACpB,OAAO,IAAIA,EAAWC,EAAMlQ,GAG9B0J,EAAM,aAAcwG,EAAMlQ,GAC1BlD,KAAKkD,QAAUA,EACflD,KAAKqQ,QAAUnN,EAAQmN,MACvBrQ,KAAKmQ,MAAMiD,GAEPpT,KAAKqT,SAAWC,EAClBtT,KAAKnB,MAAQ,GAEbmB,KAAKnB,MAAQmB,KAAKuT,SAAWvT,KAAKqT,OAAOjD,QAG3CxD,EAAM,OAAQ5M,MAhKhBtC,EAAQ8V,oBACR,SAA8B5I,EAAGC,GAC/B,OAAO8G,EAAmB9G,EAAGD,IAG/BlN,EAAQiT,MACR,SAAgB/F,EAAGyF,GACjB,OAAO,IAAIxD,EAAOjC,EAAGyF,GAAOM,OAG9BjT,EAAQkT,MACR,SAAgBhG,EAAGyF,GACjB,OAAO,IAAIxD,EAAOjC,EAAGyF,GAAOO,OAG9BlT,EAAQmT,MACR,SAAgBjG,EAAGyF,GACjB,OAAO,IAAIxD,EAAOjC,EAAGyF,GAAOQ,OAG9BnT,EAAQ6T,QAAUA,EAKlB7T,EAAQ+V,aACR,SAAuB7I,EAAGC,GACxB,OAAO0G,EAAQ3G,EAAGC,GAAG,IAGvBnN,EAAQkU,aACR,SAAuBhH,EAAGC,EAAGwF,GAC3B,IAAIqD,EAAW,IAAI7G,EAAOjC,EAAGyF,GACzBsD,EAAW,IAAI9G,EAAOhC,EAAGwF,GAC7B,OAAOqD,EAASnC,QAAQoC,IAAaD,EAAS9B,aAAa+B,IAG7DjW,EAAQkW,SACR,SAAmBhJ,EAAGC,EAAGwF,GACvB,OAAOkB,EAAQ1G,EAAGD,EAAGyF,IAGvB3S,EAAQmW,KACR,SAAe/T,EAAMuQ,GACnB,OAAOvQ,EAAK+T,MAAK,SAAUjJ,EAAGC,GAC5B,OAAOnN,EAAQkU,aAAahH,EAAGC,EAAGwF,OAItC3S,EAAQoW,MACR,SAAgBhU,EAAMuQ,GACpB,OAAOvQ,EAAK+T,MAAK,SAAUjJ,EAAGC,GAC5B,OAAOnN,EAAQkU,aAAa/G,EAAGD,EAAGyF,OAItC3S,EAAQkV,GAAKA,EAKblV,EAAQmV,GAAKA,EAKbnV,EAAQ0U,GAAKA,EAKb1U,EAAQoV,IAAMA,EAKdpV,EAAQqV,IAAMA,EAKdrV,EAAQsV,IAAMA,EAKdtV,EAAQuV,IAAMA,EA0CdvV,EAAQyV,WAAaA,EAmCrB,IAAIG,EAAM,GAiGV,SAASS,EAAO7J,EAAOhH,GAQrB,GAPKA,GAA8B,iBAAZA,IACrBA,EAAU,CACRmN,QAASnN,EACToN,mBAAmB,IAInBpG,aAAiB6J,EACnB,OAAI7J,EAAMmG,UAAYnN,EAAQmN,OAC1BnG,EAAMoG,sBAAwBpN,EAAQoN,kBACjCpG,EAEA,IAAI6J,EAAM7J,EAAMwG,IAAKxN,GAIhC,GAAIgH,aAAiBiJ,EACnB,OAAO,IAAIY,EAAM7J,EAAMrL,MAAOqE,GAGhC,KAAMlD,gBAAgB+T,GACpB,OAAO,IAAIA,EAAM7J,EAAOhH,GAgB1B,GAbAlD,KAAKkD,QAAUA,EACflD,KAAKqQ,QAAUnN,EAAQmN,MACvBrQ,KAAKsQ,oBAAsBpN,EAAQoN,kBAGnCtQ,KAAK0Q,IAAMxG,EACXlK,KAAKgU,IAAM9J,EAAM6G,MAAM,cAAc9Q,KAAI,SAAUiK,GACjD,OAAOlK,KAAKiU,WAAW/J,EAAMsG,UAC5BxQ,MAAMqH,QAAO,SAAUpJ,GAExB,OAAOA,EAAEoD,WAGNrB,KAAKgU,IAAI3S,OACZ,MAAM,IAAIyJ,UAAU,yBAA2BZ,GAGjDlK,KAAKkR,SA8EP,SAASgD,EAAeC,EAAajR,GAKnC,IAJA,IAAI4C,GAAS,EACTsO,EAAuBD,EAAYrI,QACnCuI,EAAiBD,EAAqBE,MAEnCxO,GAAUsO,EAAqB/S,QACpCyE,EAASsO,EAAqBG,OAAM,SAAUC,GAC5C,OAAOH,EAAeI,WAAWD,EAAiBtR,MAGpDmR,EAAiBD,EAAqBE,MAGxC,OAAOxO,EA6BT,SAAS4O,EAAKpT,GACZ,OAAQA,GAA2B,MAArBA,EAAGqT,eAAgC,MAAPrT,EAuM5C,SAASsT,EAAeC,EACtBC,EAAMC,EAAIC,EAAIC,EAAIC,EAAKC,EACvBC,EAAIC,EAAIC,EAAIC,EAAIC,EAAKC,GAuBrB,QArBEX,EADEJ,EAAIK,GACC,GACEL,EAAIM,GACN,KAAOD,EAAK,OACVL,EAAIO,GACN,KAAOF,EAAK,IAAMC,EAAK,KAEvB,KAAOF,GAeD,KAXbM,EADEV,EAAIW,GACD,GACIX,EAAIY,GACR,MAAQD,EAAK,GAAK,OACdX,EAAIa,GACR,IAAMF,EAAK,MAAQC,EAAK,GAAK,KACzBE,EACJ,KAAOH,EAAK,IAAMC,EAAK,IAAMC,EAAK,IAAMC,EAExC,KAAOJ,IAGW5E,OAyB3B,SAASkF,EAAS1B,EAAK5D,EAASlN,GAC9B,IAAK,IAAItF,EAAI,EAAGA,EAAIoW,EAAI3S,OAAQzD,IAC9B,IAAKoW,EAAIpW,GAAGoP,KAAKoD,GACf,OAAO,EAIX,GAAIA,EAAQU,WAAWzP,SAAW6B,EAAQoN,kBAAmB,CAM3D,IAAK1S,EAAI,EAAGA,EAAIoW,EAAI3S,OAAQzD,IAE1B,GADAgP,EAAMoH,EAAIpW,GAAGyV,QACTW,EAAIpW,GAAGyV,SAAWC,GAIlBU,EAAIpW,GAAGyV,OAAOvC,WAAWzP,OAAS,EAAG,CACvC,IAAIsU,EAAU3B,EAAIpW,GAAGyV,OACrB,GAAIsC,EAAQhF,QAAUP,EAAQO,OAC1BgF,EAAQ/E,QAAUR,EAAQQ,OAC1B+E,EAAQ9E,QAAUT,EAAQS,MAC5B,OAAO,EAMb,OAAO,EAGT,OAAO,EAIT,SAAS+E,EAAWxF,EAASlG,EAAOhH,GAClC,IACEgH,EAAQ,IAAI6J,EAAM7J,EAAOhH,GACzB,MAAOqN,GACP,OAAO,EAET,OAAOrG,EAAM8C,KAAKoD,GA6HpB,SAASyF,EAASzF,EAASlG,EAAO4L,EAAM5S,GAItC,IAAI6S,EAAMC,EAAOC,EAAM7C,EAAM8C,EAC7B,OAJA9F,EAAU,IAAIvD,EAAOuD,EAASlN,GAC9BgH,EAAQ,IAAI6J,EAAM7J,EAAOhH,GAGjB4S,GACN,IAAK,IACHC,EAAOnD,EACPoD,EAAQhD,EACRiD,EAAOpD,EACPO,EAAO,IACP8C,EAAQ,KACR,MACF,IAAK,IACHH,EAAOlD,EACPmD,EAAQjD,EACRkD,EAAOrD,EACPQ,EAAO,IACP8C,EAAQ,KACR,MACF,QACE,MAAM,IAAIpL,UAAU,yCAIxB,GAAI8K,EAAUxF,EAASlG,EAAOhH,GAC5B,OAAO,EAMT,IAAK,IAAItF,EAAI,EAAGA,EAAIsM,EAAM8J,IAAI3S,SAAUzD,EAAG,CACzC,IAAIuW,EAAcjK,EAAM8J,IAAIpW,GAExBuY,EAAO,KACPC,EAAM,KAiBV,GAfAjC,EAAY1O,SAAQ,SAAU4Q,GACxBA,EAAWhD,SAAWC,IACxB+C,EAAa,IAAIlD,EAAW,YAE9BgD,EAAOA,GAAQE,EACfD,EAAMA,GAAOC,EACTN,EAAKM,EAAWhD,OAAQ8C,EAAK9C,OAAQnQ,GACvCiT,EAAOE,EACEJ,EAAKI,EAAWhD,OAAQ+C,EAAI/C,OAAQnQ,KAC7CkT,EAAMC,MAMNF,EAAK5C,WAAaH,GAAQ+C,EAAK5C,WAAa2C,EAC9C,OAAO,EAKT,KAAME,EAAI7C,UAAY6C,EAAI7C,WAAaH,IACnC4C,EAAM5F,EAASgG,EAAI/C,QACrB,OAAO,EACF,GAAI+C,EAAI7C,WAAa2C,GAASD,EAAK7F,EAASgG,EAAI/C,QACrD,OAAO,EAGX,OAAO,EAtuBTF,EAAW3T,UAAU2Q,MAAQ,SAAUiD,GACrC,IAAI1U,EAAIsB,KAAKkD,QAAQmN,MAAQ9C,EAAGzO,EAAE+Q,iBAAmBtC,EAAGzO,EAAEgR,YACtD9R,EAAIoV,EAAK3C,MAAM/R,GAEnB,IAAKV,EACH,MAAM,IAAI8M,UAAU,uBAAyBsI,GAG/CpT,KAAKuT,cAAoBtO,IAATjH,EAAE,GAAmBA,EAAE,GAAK,GACtB,MAAlBgC,KAAKuT,WACPvT,KAAKuT,SAAW,IAIbvV,EAAE,GAGLgC,KAAKqT,OAAS,IAAIxG,EAAO7O,EAAE,GAAIgC,KAAKkD,QAAQmN,OAF5CrQ,KAAKqT,OAASC,GAMlBH,EAAW3T,UAAUO,SAAW,WAC9B,OAAOC,KAAKnB,OAGdsU,EAAW3T,UAAUwN,KAAO,SAAUoD,GAGpC,GAFAxD,EAAM,kBAAmBwD,EAASpQ,KAAKkD,QAAQmN,OAE3CrQ,KAAKqT,SAAWC,GAAOlD,IAAYkD,EACrC,OAAO,EAGT,GAAuB,iBAAZlD,EACT,IACEA,EAAU,IAAIvD,EAAOuD,EAASpQ,KAAKkD,SACnC,MAAOqN,GACP,OAAO,EAIX,OAAO0C,EAAI7C,EAASpQ,KAAKuT,SAAUvT,KAAKqT,OAAQrT,KAAKkD,UAGvDiQ,EAAW3T,UAAUiV,WAAa,SAAUrB,EAAMlQ,GAChD,KAAMkQ,aAAgBD,GACpB,MAAM,IAAIrI,UAAU,4BAUtB,IAAIwL,EAEJ,GATKpT,GAA8B,iBAAZA,IACrBA,EAAU,CACRmN,QAASnN,EACToN,mBAAmB,IAMD,KAAlBtQ,KAAKuT,SACP,MAAmB,KAAfvT,KAAKnB,QAGTyX,EAAW,IAAIvC,EAAMX,EAAKvU,MAAOqE,GAC1B0S,EAAU5V,KAAKnB,MAAOyX,EAAUpT,IAClC,GAAsB,KAAlBkQ,EAAKG,SACd,MAAmB,KAAfH,EAAKvU,QAGTyX,EAAW,IAAIvC,EAAM/T,KAAKnB,MAAOqE,GAC1B0S,EAAUxC,EAAKC,OAAQiD,EAAUpT,IAG1C,IAAIqT,IACiB,OAAlBvW,KAAKuT,UAAuC,MAAlBvT,KAAKuT,UACb,OAAlBH,EAAKG,UAAuC,MAAlBH,EAAKG,UAC9BiD,IACiB,OAAlBxW,KAAKuT,UAAuC,MAAlBvT,KAAKuT,UACb,OAAlBH,EAAKG,UAAuC,MAAlBH,EAAKG,UAC9BkD,EAAazW,KAAKqT,OAAOjD,UAAYgD,EAAKC,OAAOjD,QACjDsG,IACiB,OAAlB1W,KAAKuT,UAAuC,OAAlBvT,KAAKuT,UACb,OAAlBH,EAAKG,UAAuC,OAAlBH,EAAKG,UAC9BoD,EACF1D,EAAIjT,KAAKqT,OAAQ,IAAKD,EAAKC,OAAQnQ,KACf,OAAlBlD,KAAKuT,UAAuC,MAAlBvT,KAAKuT,YACd,OAAlBH,EAAKG,UAAuC,MAAlBH,EAAKG,UAC9BqD,EACF3D,EAAIjT,KAAKqT,OAAQ,IAAKD,EAAKC,OAAQnQ,KACf,OAAlBlD,KAAKuT,UAAuC,MAAlBvT,KAAKuT,YACd,OAAlBH,EAAKG,UAAuC,MAAlBH,EAAKG,UAElC,OAAOgD,GAA2BC,GAC/BC,GAAcC,GACfC,GAA8BC,GAGlClZ,EAAQqW,MAAQA,EA8ChBA,EAAMvU,UAAU0R,OAAS,WAIvB,OAHAlR,KAAKkK,MAAQlK,KAAKgU,IAAI/T,KAAI,SAAU4W,GAClC,OAAOA,EAAM5V,KAAK,KAAKuP,UACtBvP,KAAK,MAAMuP,OACPxQ,KAAKkK,OAGd6J,EAAMvU,UAAUO,SAAW,WACzB,OAAOC,KAAKkK,OAGd6J,EAAMvU,UAAUyU,WAAa,SAAU/J,GACrC,IAAImG,EAAQrQ,KAAKkD,QAAQmN,MACzBnG,EAAQA,EAAMsG,OAEd,IAAIsG,EAAKzG,EAAQ9C,EAAGzO,EAAEmR,kBAAoB1C,EAAGzO,EAAEkR,aAC/C9F,EAAQA,EAAMoH,QAAQwF,EAAIlC,GAC1BhI,EAAM,iBAAkB1C,GAExBA,EAAQA,EAAMoH,QAAQ/D,EAAGzO,EAAEiR,gBAvtBD,UAwtB1BnD,EAAM,kBAAmB1C,EAAOqD,EAAGzO,EAAEiR,iBASrC7F,GAHAA,GAHAA,EAAQA,EAAMoH,QAAQ/D,EAAGzO,EAAEwQ,WA/vBN,QAkwBPgC,QAAQ/D,EAAGzO,EAAE4Q,WAnvBN,QAsvBPqB,MAAM,OAAO9P,KAAK,KAKhC,IAAI8V,EAAS1G,EAAQ9C,EAAGzO,EAAE+Q,iBAAmBtC,EAAGzO,EAAEgR,YAC9CkE,EAAM9J,EAAM6G,MAAM,KAAK9Q,KAAI,SAAUmT,GACvC,OAoEJ,SAA0BA,EAAMlQ,GAU9B,OATA0J,EAAM,OAAQwG,EAAMlQ,GACpBkQ,EA6DF,SAAwBA,EAAMlQ,GAC5B,OAAOkQ,EAAK5C,OAAOO,MAAM,OAAO9Q,KAAI,SAAUmT,GAC5C,OAIJ,SAAuBA,EAAMlQ,GAC3B0J,EAAM,QAASwG,EAAMlQ,GACrB,IAAIxE,EAAIwE,EAAQmN,MAAQ9C,EAAGzO,EAAE8Q,YAAcrC,EAAGzO,EAAE6Q,OAChD,OAAOyD,EAAK9B,QAAQ5S,GAAG,SAAUsY,EAAGC,EAAGjZ,EAAG0B,EAAGwX,GAE3C,IAAIC,EA2CJ,OA5CAvK,EAAM,QAASwG,EAAM4D,EAAGC,EAAGjZ,EAAG0B,EAAGwX,GAG7BxC,EAAIuC,GACNE,EAAM,GACGzC,EAAI1W,GACbmZ,EAAM,KAAOF,EAAI,WAAaA,EAAI,GAAK,OAC9BvC,EAAIhV,GAEXyX,EADQ,MAANF,EACI,KAAOA,EAAI,IAAMjZ,EAAI,OAASiZ,EAAI,MAAQjZ,EAAI,GAAK,KAEnD,KAAOiZ,EAAI,IAAMjZ,EAAI,SAAWiZ,EAAI,GAAK,OAExCC,GACTtK,EAAM,kBAAmBsK,GAGrBC,EAFM,MAANF,EACQ,MAANjZ,EACI,KAAOiZ,EAAI,IAAMjZ,EAAI,IAAM0B,EAAI,IAAMwX,EACrC,KAAOD,EAAI,IAAMjZ,EAAI,MAAQ0B,EAAI,GAEjC,KAAOuX,EAAI,IAAMjZ,EAAI,IAAM0B,EAAI,IAAMwX,EACrC,KAAOD,EAAI,MAAQjZ,EAAI,GAAK,KAG9B,KAAOiZ,EAAI,IAAMjZ,EAAI,IAAM0B,EAAI,IAAMwX,EACrC,OAASD,EAAI,GAAK,SAG1BrK,EAAM,SAGFuK,EAFM,MAANF,EACQ,MAANjZ,EACI,KAAOiZ,EAAI,IAAMjZ,EAAI,IAAM0B,EAC3B,KAAOuX,EAAI,IAAMjZ,EAAI,MAAQ0B,EAAI,GAEjC,KAAOuX,EAAI,IAAMjZ,EAAI,IAAM0B,EAC3B,KAAOuX,EAAI,MAAQjZ,EAAI,GAAK,KAG9B,KAAOiZ,EAAI,IAAMjZ,EAAI,IAAM0B,EAC3B,OAASuX,EAAI,GAAK,QAI5BrK,EAAM,eAAgBuK,GACfA,KApDAC,CAAahE,EAAMlQ,MACzBjC,KAAK,KAhEDoW,CAAcjE,EAAMlQ,GAC3B0J,EAAM,QAASwG,GACfA,EAmBF,SAAwBA,EAAMlQ,GAC5B,OAAOkQ,EAAK5C,OAAOO,MAAM,OAAO9Q,KAAI,SAAUmT,GAC5C,OAIJ,SAAuBA,EAAMlQ,GAC3B,IAAIxE,EAAIwE,EAAQmN,MAAQ9C,EAAGzO,EAAE0Q,YAAcjC,EAAGzO,EAAEyQ,OAChD,OAAO6D,EAAK9B,QAAQ5S,GAAG,SAAUsY,EAAGC,EAAGjZ,EAAG0B,EAAGwX,GAE3C,IAAIC,EAoBJ,OArBAvK,EAAM,QAASwG,EAAM4D,EAAGC,EAAGjZ,EAAG0B,EAAGwX,GAG7BxC,EAAIuC,GACNE,EAAM,GACGzC,EAAI1W,GACbmZ,EAAM,KAAOF,EAAI,WAAaA,EAAI,GAAK,OAC9BvC,EAAIhV,GAEbyX,EAAM,KAAOF,EAAI,IAAMjZ,EAAI,OAASiZ,EAAI,MAAQjZ,EAAI,GAAK,KAChDkZ,GACTtK,EAAM,kBAAmBsK,GACzBC,EAAM,KAAOF,EAAI,IAAMjZ,EAAI,IAAM0B,EAAI,IAAMwX,EACrC,KAAOD,EAAI,MAAQjZ,EAAI,GAAK,MAGlCmZ,EAAM,KAAOF,EAAI,IAAMjZ,EAAI,IAAM0B,EAC3B,KAAOuX,EAAI,MAAQjZ,EAAI,GAAK,KAGpC4O,EAAM,eAAgBuK,GACfA,KA5BAG,CAAalE,EAAMlQ,MACzBjC,KAAK,KAtBDsW,CAAcnE,EAAMlQ,GAC3B0J,EAAM,SAAUwG,GAChBA,EAmHF,SAAyBA,EAAMlQ,GAE7B,OADA0J,EAAM,iBAAkBwG,EAAMlQ,GACvBkQ,EAAKrC,MAAM,OAAO9Q,KAAI,SAAUmT,GACrC,OAIJ,SAAwBA,EAAMlQ,GAC5BkQ,EAAOA,EAAK5C,OACZ,IAAI9R,EAAIwE,EAAQmN,MAAQ9C,EAAGzO,EAAEmQ,aAAe1B,EAAGzO,EAAEkQ,QACjD,OAAOoE,EAAK9B,QAAQ5S,GAAG,SAAUyY,EAAKK,EAAMP,EAAGjZ,EAAG0B,EAAGwX,GACnDtK,EAAM,SAAUwG,EAAM+D,EAAKK,EAAMP,EAAGjZ,EAAG0B,EAAGwX,GAC1C,IAAIO,EAAK/C,EAAIuC,GACTS,EAAKD,GAAM/C,EAAI1W,GACf2Z,EAAKD,GAAMhD,EAAIhV,GACfkY,EAAOD,EA4DX,MA1Da,MAATH,GAAgBI,IAClBJ,EAAO,IAKTN,EAAKhU,EAAQoN,kBAAoB,KAAO,GAEpCmH,EAGAN,EAFW,MAATK,GAAyB,MAATA,EAEZ,WAGA,IAECA,GAAQI,GAGbF,IACF1Z,EAAI,GAEN0B,EAAI,EAES,MAAT8X,GAIFA,EAAO,KACHE,GACFT,GAAKA,EAAI,EACTjZ,EAAI,EACJ0B,EAAI,IAEJ1B,GAAKA,EAAI,EACT0B,EAAI,IAEY,OAAT8X,IAGTA,EAAO,IACHE,EACFT,GAAKA,EAAI,EAETjZ,GAAKA,EAAI,GAIbmZ,EAAMK,EAAOP,EAAI,IAAMjZ,EAAI,IAAM0B,EAAIwX,GAC5BQ,EACTP,EAAM,KAAOF,EAAI,OAASC,EAAK,OAASD,EAAI,GAAK,OAASC,EACjDS,IACTR,EAAM,KAAOF,EAAI,IAAMjZ,EAAI,KAAOkZ,EAChC,KAAOD,EAAI,MAAQjZ,EAAI,GAAK,KAAOkZ,GAGvCtK,EAAM,gBAAiBuK,GAEhBA,KAxEAU,CAAczE,EAAMlQ,MAC1BjC,KAAK,KAvHD6W,CAAe1E,EAAMlQ,GAC5B0J,EAAM,SAAUwG,GAChBA,EAkMF,SAAuBA,EAAMlQ,GAG3B,OAFA0J,EAAM,eAAgBwG,EAAMlQ,GAErBkQ,EAAK5C,OAAOc,QAAQ/D,EAAGzO,EAAEoR,MAAO,IArMhC6H,CAAa3E,EAAMlQ,GAC1B0J,EAAM,QAASwG,GACRA,EA9EE4E,CAAgB5E,EAAMpT,KAAKkD,WACjClD,MAAMiB,KAAK,KAAK8P,MAAM,OAWzB,OAVI/Q,KAAKkD,QAAQmN,QAEf2D,EAAMA,EAAI3M,QAAO,SAAU+L,GACzB,QAASA,EAAK3C,MAAMsG,OAGxB/C,EAAMA,EAAI/T,KAAI,SAAUmT,GACtB,OAAO,IAAID,EAAWC,EAAMpT,KAAKkD,WAChClD,OAKL+T,EAAMvU,UAAUiV,WAAa,SAAUvK,EAAOhH,GAC5C,KAAMgH,aAAiB6J,GACrB,MAAM,IAAIjJ,UAAU,uBAGtB,OAAO9K,KAAKgU,IAAIiE,MAAK,SAAUC,GAC7B,OACEhE,EAAcgE,EAAiBhV,IAC/BgH,EAAM8J,IAAIiE,MAAK,SAAUE,GACvB,OACEjE,EAAciE,EAAkBjV,IAChCgV,EAAgB3D,OAAM,SAAU6D,GAC9B,OAAOD,EAAiB5D,OAAM,SAAU8D,GACtC,OAAOD,EAAe3D,WAAW4D,EAAiBnV,gBA4BhExF,EAAQ4a,cACR,SAAwBpO,EAAOhH,GAC7B,OAAO,IAAI6Q,EAAM7J,EAAOhH,GAAS8Q,IAAI/T,KAAI,SAAUmT,GACjD,OAAOA,EAAKnT,KAAI,SAAUhC,GACxB,OAAOA,EAAEY,SACRoC,KAAK,KAAKuP,OAAOO,MAAM,SAyP9BgD,EAAMvU,UAAUwN,KAAO,SAAUoD,GAC/B,IAAKA,EACH,OAAO,EAGT,GAAuB,iBAAZA,EACT,IACEA,EAAU,IAAIvD,EAAOuD,EAASpQ,KAAKkD,SACnC,MAAOqN,GACP,OAAO,EAIX,IAAK,IAAI3S,EAAI,EAAGA,EAAIoC,KAAKgU,IAAI3S,OAAQzD,IACnC,GAAI8X,EAAQ1V,KAAKgU,IAAIpW,GAAIwS,EAASpQ,KAAKkD,SACrC,OAAO,EAGX,OAAO,GAuCTxF,EAAQkY,UAAYA,EAUpBlY,EAAQ6a,cACR,SAAwBC,EAAUtO,EAAOhH,GACvC,IAAIuV,EAAM,KACNC,EAAQ,KACZ,IACE,IAAIC,EAAW,IAAI5E,EAAM7J,EAAOhH,GAChC,MAAOqN,GACP,OAAO,KAYT,OAVAiI,EAAS/S,SAAQ,SAAU2L,GACrBuH,EAAS3L,KAAKoE,KAEXqH,IAA6B,IAAtBC,EAAMnH,QAAQH,KAGxBsH,EAAQ,IAAI7L,EADZ4L,EAAMrH,EACkBlO,QAIvBuV,GAGT/a,EAAQkb,cACR,SAAwBJ,EAAUtO,EAAOhH,GACvC,IAAI2V,EAAM,KACNC,EAAQ,KACZ,IACE,IAAIH,EAAW,IAAI5E,EAAM7J,EAAOhH,GAChC,MAAOqN,GACP,OAAO,KAYT,OAVAiI,EAAS/S,SAAQ,SAAU2L,GACrBuH,EAAS3L,KAAKoE,KAEXyH,GAA4B,IAArBC,EAAMvH,QAAQH,KAGxB0H,EAAQ,IAAIjM,EADZgM,EAAMzH,EACkBlO,QAIvB2V,GAGTnb,EAAQqb,WACR,SAAqB7O,EAAOmG,GAC1BnG,EAAQ,IAAI6J,EAAM7J,EAAOmG,GAEzB,IAAI2I,EAAS,IAAInM,EAAO,SACxB,GAAI3C,EAAM8C,KAAKgM,GACb,OAAOA,EAIT,GADAA,EAAS,IAAInM,EAAO,WAChB3C,EAAM8C,KAAKgM,GACb,OAAOA,EAGTA,EAAS,KACT,IAAK,IAAIpb,EAAI,EAAGA,EAAIsM,EAAM8J,IAAI3S,SAAUzD,EAAG,CACvBsM,EAAM8J,IAAIpW,GAEhB6H,SAAQ,SAAU4Q,GAE5B,IAAI4C,EAAU,IAAIpM,EAAOwJ,EAAWhD,OAAOjD,SAC3C,OAAQiG,EAAW9C,UACjB,IAAK,IAC+B,IAA9B0F,EAAQnI,WAAWzP,OACrB4X,EAAQpI,QAERoI,EAAQnI,WAAWvP,KAAK,GAE1B0X,EAAQvI,IAAMuI,EAAQ/H,SAExB,IAAK,GACL,IAAK,KACE8H,IAAUpG,EAAGoG,EAAQC,KACxBD,EAASC,GAEX,MACF,IAAK,IACL,IAAK,KAEH,MAEF,QACE,MAAM,IAAIhV,MAAM,yBAA2BoS,EAAW9C,cAK9D,GAAIyF,GAAU9O,EAAM8C,KAAKgM,GACvB,OAAOA,EAGT,OAAO,MAGTtb,EAAQwb,WACR,SAAqBhP,EAAOhH,GAC1B,IAGE,OAAO,IAAI6Q,EAAM7J,EAAOhH,GAASgH,OAAS,IAC1C,MAAOqG,GACP,OAAO,OAKX7S,EAAQyb,IACR,SAAc/I,EAASlG,EAAOhH,GAC5B,OAAO2S,EAAQzF,EAASlG,EAAO,IAAKhH,IAItCxF,EAAQ0b,IACR,SAAchJ,EAASlG,EAAOhH,GAC5B,OAAO2S,EAAQzF,EAASlG,EAAO,IAAKhH,IAGtCxF,EAAQmY,QAAUA,EAsElBnY,EAAQoT,WACR,SAAqBV,EAASlN,GAC5B,IAAImW,EAASlJ,EAAMC,EAASlN,GAC5B,OAAQmW,GAAUA,EAAOvI,WAAWzP,OAAUgY,EAAOvI,WAAa,MAGpEpT,EAAQ+W,WACR,SAAqB6E,EAAIC,EAAIrW,GAG3B,OAFAoW,EAAK,IAAIvF,EAAMuF,EAAIpW,GACnBqW,EAAK,IAAIxF,EAAMwF,EAAIrW,GACZoW,EAAG7E,WAAW8E,IAGvB7b,EAAQ8b,OACR,SAAiBpJ,EAASlN,GACxB,GAAIkN,aAAmBvD,EACrB,OAAOuD,EAGc,iBAAZA,IACTA,EAAUqJ,OAAOrJ,IAGnB,GAAuB,iBAAZA,EACT,OAAO,KAKT,IAAIK,EAAQ,KACZ,IAHAvN,EAAUA,GAAW,IAGRwW,IAEN,CAUL,IADA,IAAIC,GACIA,EAAOpM,EAAGzO,EAAEqQ,WAAWyK,KAAKxJ,OAChCK,GAASA,EAAMtJ,MAAQsJ,EAAM,GAAGpP,SAAW+O,EAAQ/O,SAEhDoP,GACDkJ,EAAKxS,MAAQwS,EAAK,GAAGtY,SAAWoP,EAAMtJ,MAAQsJ,EAAM,GAAGpP,SACzDoP,EAAQkJ,GAEVpM,EAAGzO,EAAEqQ,WAAW0K,UAAYF,EAAKxS,MAAQwS,EAAK,GAAGtY,OAASsY,EAAK,GAAGtY,OAGpEkM,EAAGzO,EAAEqQ,WAAW0K,WAAa,OArB7BpJ,EAAQL,EAAQK,MAAMlD,EAAGzO,EAAEoQ,SAwB7B,GAAc,OAAVuB,EACF,OAAO,KAGT,OAAON,EAAMM,EAAM,GACjB,KAAOA,EAAM,IAAM,KACnB,KAAOA,EAAM,IAAM,KAAMvN,K,gBCzjD7B,IAAI/C,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAsE9E,EAAS+C,GAEzF/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,otBCf5C,MAAM8R,EAAOla,EAAQ,KAEfma,EAAana,EAAQ,IACrBoa,EAAUpa,EAAQ,K,EACMA,EAAQ,IAA9ByM,E,EAAAA,YAAaK,E,EAAAA,KAEfuN,EAAUzN,OAAOsI,KAAK,CAAC,EAAM,EAAM,IAAM,MACzCoF,EAAqBvb,OAAO,sBAC5Bwb,EAAexb,OAAO,gBACtByb,EAAYzb,OAAO,YACnB0b,EAAW1b,OAAO,WAClB2b,EAAS3b,OAAO,SAStB,IAAI4b,EA8bJ,SAASC,EAAcC,GACrBza,KAAKqa,GAAU9Y,KAAKkZ,GACpBza,KAAKma,IAAiBM,EAAMpZ,OAS9B,SAASqZ,EAAcD,GACrBza,KAAKma,IAAiBM,EAAMpZ,OAG1BrB,KAAKka,GAAoBS,YAAc,GACvC3a,KAAKma,IAAiBna,KAAKka,GAAoBS,YAE/C3a,KAAKqa,GAAU9Y,KAAKkZ,IAItBza,KAAKsa,GAAU,IAAIM,WAAW,6BAC9B5a,KAAKsa,GAAQjO,GAAe,KAC5BrM,KAAK6a,eAAe,OAAQH,GAC5B1a,KAAK8a,SASP,SAASC,EAAe3S,GAKtBpI,KAAKka,GAAoBc,SAAW,KACpC5S,EAAIiE,GAAe,KACnBrM,KAAKoa,GAAWhS,GAjDlBzK,EAAOD,QAjbP,MAuBEqO,YAAY7I,EAAS+X,EAAUC,GAW7B,GAVAlb,KAAK2a,YAA2B,EAAbO,EACnBlb,KAAKmb,SAAWjY,GAAW,GAC3BlD,KAAKob,gBACyBnW,IAA5BjF,KAAKmb,SAASE,UAA0Brb,KAAKmb,SAASE,UAAY,KACpErb,KAAKsb,YAAcL,EACnBjb,KAAKub,SAAW,KAChBvb,KAAKgb,SAAW,KAEhBhb,KAAKwb,OAAS,MAETjB,EAAa,CAChB,MAAMkB,OAC+BxW,IAAnCjF,KAAKmb,SAASO,iBACV1b,KAAKmb,SAASO,iBACd,GACNnB,EAAc,IAAIP,EAAQyB,IAO9B,2BACE,MAAO,qBASTE,QACE,MAAMH,EAAS,GAiBf,OAfIxb,KAAKmb,SAASS,0BAChBJ,EAAOK,4BAA6B,GAElC7b,KAAKmb,SAASW,0BAChBN,EAAOO,4BAA6B,GAElC/b,KAAKmb,SAASa,sBAChBR,EAAOS,uBAAyBjc,KAAKmb,SAASa,qBAE5Chc,KAAKmb,SAASe,oBAChBV,EAAOW,uBAAyBnc,KAAKmb,SAASe,oBACA,MAArClc,KAAKmb,SAASe,sBACvBV,EAAOW,wBAAyB,GAG3BX,EAUTY,OAAOC,GAOL,OANAA,EAAiBrc,KAAKsc,gBAAgBD,GAEtCrc,KAAKwb,OAASxb,KAAKsb,UACftb,KAAKuc,eAAeF,GACpBrc,KAAKwc,eAAeH,GAEjBrc,KAAKwb,OAQdzS,UACM/I,KAAKgb,WACPhb,KAAKgb,SAASyB,QACdzc,KAAKgb,SAAW,MAGdhb,KAAKub,WACHvb,KAAKub,SAASnB,IAChBpa,KAAKub,SAASnB,KAGhBpa,KAAKub,SAASkB,QACdzc,KAAKub,SAAW,MAWpBgB,eAAeG,GACb,MAAMC,EAAO3c,KAAKmb,SACZyB,EAAWF,EAAOG,KAAMrB,MAEQ,IAAjCmB,EAAKf,yBACJJ,EAAOK,4BACRL,EAAOS,0BACwB,IAA7BU,EAAKX,qBACiC,iBAA7BW,EAAKX,qBACXW,EAAKX,oBAAsBR,EAAOS,yBACH,iBAA7BU,EAAKT,sBACVV,EAAOW,yBAQd,IAAKS,EACH,MAAM,IAAI3Y,MAAM,gDAqBlB,OAlBI0Y,EAAKf,0BACPgB,EAASf,4BAA6B,GAEpCc,EAAKb,0BACPc,EAASb,4BAA6B,GAEA,iBAA7BY,EAAKX,sBACdY,EAASX,uBAAyBU,EAAKX,qBAED,iBAA7BW,EAAKT,oBACdU,EAAST,uBAAyBQ,EAAKT,qBAEH,IAApCU,EAAST,yBACoB,IAA7BQ,EAAKT,4BAEEU,EAAST,uBAGXS,EAUTJ,eAAeM,GACb,MAAMtB,EAASsB,EAAS,GAExB,IAC4C,IAA1C9c,KAAKmb,SAASW,yBACdN,EAAOO,2BAEP,MAAM,IAAI9X,MAAM,qDAGlB,GAAKuX,EAAOW,wBAIL,IACiC,IAAtCnc,KAAKmb,SAASe,qBACgC,iBAAtClc,KAAKmb,SAASe,qBACpBV,EAAOW,uBAAyBnc,KAAKmb,SAASe,oBAEhD,MAAM,IAAIjY,MACR,gEAT+C,iBAAtCjE,KAAKmb,SAASe,sBACvBV,EAAOW,uBAAyBnc,KAAKmb,SAASe,qBAYlD,OAAOV,EAUTc,gBAAgBD,GAkDd,OAjDAA,EAAe5W,QAAS+V,IACtBld,OAAOkH,KAAKgW,GAAQ/V,QAAStG,IAC3B,IAAIN,EAAQ2c,EAAOrc,GAEnB,GAAIN,EAAMwC,OAAS,EACjB,MAAM,IAAI4C,MAAO,cAAa9E,oCAKhC,GAFAN,EAAQA,EAAM,GAEF,2BAARM,GACF,IAAc,IAAVN,EAAgB,CAClB,MAAMmS,GAAOnS,EACb,IAAKyO,OAAOyP,UAAU/L,IAAQA,EAAM,GAAKA,EAAM,GAC7C,MAAM,IAAIlG,UACP,gCAA+B3L,OAASN,KAG7CA,EAAQmS,OACH,IAAKhR,KAAKsb,UACf,MAAM,IAAIxQ,UACP,gCAA+B3L,OAASN,UAGxC,GAAY,2BAARM,EAAkC,CAC3C,MAAM6R,GAAOnS,EACb,IAAKyO,OAAOyP,UAAU/L,IAAQA,EAAM,GAAKA,EAAM,GAC7C,MAAM,IAAIlG,UACP,gCAA+B3L,OAASN,KAG7CA,EAAQmS,MACH,IACG,+BAAR7R,GACQ,+BAARA,EAQA,MAAM,IAAI8E,MAAO,sBAAqB9E,MANtC,IAAc,IAAVN,EACF,MAAM,IAAIiM,UACP,gCAA+B3L,OAASN,KAO/C2c,EAAOrc,GAAON,MAIXwd,EAWTW,WAAW3T,EAAM4T,EAAKC,GACpB3C,EAAY4C,IAAKC,IACfpd,KAAKqd,YAAYhU,EAAM4T,EAAK,CAAC7U,EAAKtC,KAChCsX,IACAF,EAAS9U,EAAKtC,OAapBwX,SAASjU,EAAM4T,EAAKC,GAClB3C,EAAY4C,IAAKC,IACfpd,KAAKud,UAAUlU,EAAM4T,EAAK,CAAC7U,EAAKtC,KAC9BsX,KACIhV,GAAOtC,IACToX,EAAS9U,EAAKtC,OActBuX,YAAYhU,EAAM4T,EAAKC,GACrB,MAAMM,EAAWxd,KAAKsb,UAAY,SAAW,SAE7C,IAAKtb,KAAKgb,SAAU,CAClB,MAAM7b,EAASqe,EAAF,mBACPC,EACwB,iBAArBzd,KAAKwb,OAAOrc,GACf2a,EAAK4D,qBACL1d,KAAKwb,OAAOrc,GAElBa,KAAKgb,SAAWlB,EAAK6D,iBAAL,OACX3d,KAAKmb,SAASyC,oBADH,IAEdH,gBAEFzd,KAAKgb,SAASd,GAAsBla,KACpCA,KAAKgb,SAASb,GAAgB,EAC9Bna,KAAKgb,SAASX,GAAY,GAC1Bra,KAAKgb,SAAS6C,GAAG,QAAS9C,GAC1B/a,KAAKgb,SAAS6C,GAAG,OAAQnD,GAG3B1a,KAAKgb,SAASZ,GAAa8C,EAE3Bld,KAAKgb,SAAS8C,MAAMzU,GAChB4T,GAAKjd,KAAKgb,SAAS8C,MAAM7D,GAE7Bja,KAAKgb,SAAS+C,MAAM,KAClB,MAAM3V,EAAMpI,KAAKgb,SAASV,GAE1B,GAAIlS,EAIF,OAHApI,KAAKgb,SAASyB,QACdzc,KAAKgb,SAAW,UAChBkC,EAAS9U,GAIX,MAAMiB,EAAO0Q,EAAW/Y,OACtBhB,KAAKgb,SAASX,GACdra,KAAKgb,SAASb,IAGZ8C,GAAOjd,KAAKwb,OAAUgC,EAAF,yBACtBxd,KAAKgb,SAASyB,QACdzc,KAAKgb,SAAW,OAEhBhb,KAAKgb,SAASb,GAAgB,EAC9Bna,KAAKgb,SAASX,GAAY,IAG5B6C,EAAS,KAAM7T,KAYnBkU,UAAUlU,EAAM4T,EAAKC,GACnB,MAAMM,EAAWxd,KAAKsb,UAAY,SAAW,SAE7C,IAAKtb,KAAKub,SAAU,CAClB,MAAMpc,EAASqe,EAAF,mBACPC,EACwB,iBAArBzd,KAAKwb,OAAOrc,GACf2a,EAAK4D,qBACL1d,KAAKwb,OAAOrc,GAElBa,KAAKub,SAAWzB,EAAKkE,iBAAL,OACXhe,KAAKmb,SAAS8C,oBADH,IAEdR,gBAGFzd,KAAKub,SAASpB,GAAgB,EAC9Bna,KAAKub,SAASlB,GAAY,GAQ1Bra,KAAKub,SAASsC,GAAG,QAASnR,GAC1B1M,KAAKub,SAASsC,GAAG,OAAQrD,GAG3Bxa,KAAKub,SAASnB,GAAa8C,EAE3Bld,KAAKub,SAASuC,MAAMzU,GACpBrJ,KAAKub,SAASwC,MAAMjE,EAAKoE,aAAc,KACrC,IAAKle,KAAKub,SAOR,OAGF,IAAIlS,EAAO0Q,EAAW/Y,OACpBhB,KAAKub,SAASlB,GACdra,KAAKub,SAASpB,IAGZ8C,IAAK5T,EAAOA,EAAKyC,MAAM,EAAGzC,EAAKhI,OAAS,IAM5CrB,KAAKub,SAASnB,GAAa,KAEvB6C,GAAOjd,KAAKwb,OAAUgC,EAAF,yBACtBxd,KAAKub,SAASkB,QACdzc,KAAKub,SAAW,OAEhBvb,KAAKub,SAASpB,GAAgB,EAC9Bna,KAAKub,SAASlB,GAAY,IAG5B6C,EAAS,KAAM7T,Q,mCCrcbkD,EAAiB3M,EAAQ,IAAzB2M,aAUR,SAASvL,EAAOlB,EAAMqe,GACpB,GAAoB,IAAhBre,EAAKuB,OAAc,OAAOkL,EAC9B,GAAoB,IAAhBzM,EAAKuB,OAAc,OAAOvB,EAAK,GAEnC,MAAMqC,EAASqK,OAAO4R,YAAYD,GAClC,IAAIE,EAAS,EAEb,IAAK,IAAIzgB,EAAI,EAAGA,EAAIkC,EAAKuB,OAAQzD,IAAK,CACpC,MAAM0gB,EAAMxe,EAAKlC,GACjBuE,EAAO6R,IAAIsK,EAAKD,GAChBA,GAAUC,EAAIjd,OAGhB,OAAIgd,EAASF,EAAoBhc,EAAO2J,MAAM,EAAGuS,GAE1Clc,EAaT,SAASoc,EAAMzd,EAAQ0d,EAAMC,EAAQJ,EAAQhd,GAC3C,IAAK,IAAIzD,EAAI,EAAGA,EAAIyD,EAAQzD,IAC1B6gB,EAAOJ,EAASzgB,GAAKkD,EAAOlD,GAAK4gB,EAAS,EAAJ5gB,GAW1C,SAAS8gB,EAAQC,EAAQH,GAEvB,MAAMnd,EAASsd,EAAOtd,OACtB,IAAK,IAAIzD,EAAI,EAAGA,EAAIyD,EAAQzD,IAC1B+gB,EAAO/gB,IAAM4gB,EAAS,EAAJ5gB,GAWtB,SAASghB,EAAcN,GACrB,OAAIA,EAAIO,aAAeP,EAAIK,OAAOE,WACzBP,EAAIK,OAGNL,EAAIK,OAAO7S,MAAMwS,EAAIQ,WAAYR,EAAIQ,WAAaR,EAAIO,YAW/D,SAASE,EAAS1V,GAGhB,GAFA0V,EAASC,UAAW,EAEhBxS,OAAOyS,SAAS5V,GAAO,OAAOA,EAElC,IAAIiV,EAWJ,OATIjV,aAAgB6V,YAClBZ,EAAM9R,OAAOsI,KAAKzL,GACT6V,YAAYC,OAAO9V,GAC5BiV,EAgBJ,SAAsBc,GACpB,MAAMd,EAAM9R,OAAOsI,KAAKsK,EAAKT,QAE7B,GAAIS,EAAKP,aAAeO,EAAKT,OAAOE,WAClC,OAAOP,EAAIxS,MAAMsT,EAAKN,WAAYM,EAAKN,WAAaM,EAAKP,YAG3D,OAAOP,EAvBCe,CAAahW,IAEnBiV,EAAM9R,OAAOsI,KAAKzL,GAClB0V,EAASC,UAAW,GAGfV,EAoBT,IACE,MAAMvE,EAAana,GAAQ,oGACrB0f,EAAKvF,EAAWwF,YAAcxF,EAEpCpc,EAAOD,QAAU,CACfsD,SACAwd,KAAK1d,EAAQ0d,EAAMC,EAAQJ,EAAQhd,GAC7BA,EAAS,GAAIkd,EAAMzd,EAAQ0d,EAAMC,EAAQJ,EAAQhd,GAChDie,EAAGd,KAAK1d,EAAQ0d,EAAMC,EAAQJ,EAAQhd,IAE7Cud,gBACAG,WACAS,OAAOb,EAAQH,GACTG,EAAOtd,OAAS,GAAIqd,EAAQC,EAAQH,GACnCc,EAAGE,OAAOb,EAAQH,KAG3B,MAAO7b,GACPhF,EAAOD,QAAU,CACfsD,SACAwd,KAAMD,EACNK,gBACAG,WACAS,OAAQd,K,gBC9IZ,IAAIve,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAsE9E,EAAS+C,GAEzF/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,cCjB5CrK,EAAOD,QAAUkC,QAAQ,kB;;;;;ECQzB,IAAI6f,EAAwBnhB,OAAOmhB,sBAC/BhgB,EAAiBnB,OAAOkB,UAAUC,eAClCigB,EAAmBphB,OAAOkB,UAAUmgB,qBAExC,SAASC,EAASC,GACjB,GAAIA,QACH,MAAM,IAAI/U,UAAU,yDAGrB,OAAOxM,OAAOuhB,GA+CfliB,EAAOD,QA5CP,WACC,IACC,IAAKY,OAAOwhB,OACX,OAAO,EAMR,IAAIC,EAAQ,IAAItG,OAAO,OAEvB,GADAsG,EAAM,GAAK,KACkC,MAAzCzhB,OAAO0hB,oBAAoBD,GAAO,GACrC,OAAO,EAKR,IADA,IAAIE,EAAQ,GACHriB,EAAI,EAAGA,EAAI,GAAIA,IACvBqiB,EAAM,IAAMxG,OAAOyG,aAAatiB,IAAMA,EAKvC,GAAwB,eAHXU,OAAO0hB,oBAAoBC,GAAOhgB,KAAI,SAAUZ,GAC5D,OAAO4gB,EAAM5gB,MAEH4B,KAAK,IACf,OAAO,EAIR,IAAIkf,EAAQ,GAIZ,MAHA,uBAAuBpP,MAAM,IAAItL,SAAQ,SAAU2a,GAClDD,EAAMC,GAAUA,KAGf,yBADE9hB,OAAOkH,KAAKlH,OAAOwhB,OAAO,GAAIK,IAAQlf,KAAK,IAM9C,MAAOmH,GAER,OAAO,GAIQiY,GAAoB/hB,OAAOwhB,OAAS,SAAU3d,EAAQrB,GAKtE,IAJA,IAAIgU,EAEAwL,EADAlL,EAAKwK,EAASzd,GAGTxC,EAAI,EAAGA,EAAIsC,UAAUZ,OAAQ1B,IAAK,CAG1C,IAAK,IAAIR,KAFT2V,EAAOxW,OAAO2D,UAAUtC,IAGnBF,EAAe1B,KAAK+W,EAAM3V,KAC7BiW,EAAGjW,GAAO2V,EAAK3V,IAIjB,GAAIsgB,EAAuB,CAC1Ba,EAAUb,EAAsB3K,GAChC,IAAK,IAAIlX,EAAI,EAAGA,EAAI0iB,EAAQjf,OAAQzD,IAC/B8hB,EAAiB3hB,KAAK+W,EAAMwL,EAAQ1iB,MACvCwX,EAAGkL,EAAQ1iB,IAAMkX,EAAKwL,EAAQ1iB,MAMlC,OAAOwX,I,cCxFRzX,EAAOD,QAAUkC,QAAQ,S,cCAzBjC,EAAOD,QAAUkC,QAAQ,W,gBCCzB,IAAIO,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAsE9E,EAAS+C,GAEzF/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,otBCf5C,MAAMuY,EAAe3gB,EAAQ,IACvB4gB,EAAQ5gB,EAAQ,IAChB6gB,EAAO7gB,EAAQ,IACf8gB,EAAM9gB,EAAQ,IACd+gB,EAAM/gB,EAAQ,K,EACgBA,EAAQ,IAApCghB,E,EAAAA,YAAaC,E,EAAAA,WACb1a,EAAQvG,EAAQ,KAAhBuG,IAEF2a,EAAoBlhB,EAAQ,IAC5BmhB,EAAWnhB,EAAQ,IACnBohB,EAASphB,EAAQ,I,EAQnBA,EAAQ,IANVuM,E,EAAAA,aACAI,E,EAAAA,aACAH,E,EAAAA,KACAC,E,EAAAA,YACAC,E,EAAAA,WACAI,E,EAAAA,K,EAEgD9M,EAAQ,KAAlD2I,E,EAAAA,iBAAkB0Y,E,EAAAA,oB,EACArhB,EAAQ,IAA1BsR,E,EAAAA,OAAQf,E,EAAAA,MACR4O,EAAanf,EAAQ,IAArBmf,SAEFmC,EAAc,CAAC,aAAc,OAAQ,UAAW,UAChDC,EAAmB,CAAC,EAAG,IAQ7B,MAAMC,UAAkBb,EAQtBxU,YAAYsV,EAASC,EAAWpe,GAC9Bqe,QAEAvhB,KAAKwhB,WAAaJ,EAAUK,WAC5BzhB,KAAK0hB,SAAW,GAEhB1hB,KAAK2hB,YAAcxV,EAAa,GAChCnM,KAAK4hB,qBAAsB,EAC3B5hB,KAAK6hB,iBAAkB,EACvB7hB,KAAK8hB,cAAgB,GACrB9hB,KAAK+hB,YAAc,KACnB/hB,KAAKgiB,WAAa,KAClBhiB,KAAKiiB,YAAc,GACnBjiB,KAAKkiB,UAAY,KACjBliB,KAAKmiB,QAAU,KACfniB,KAAKoiB,QAAU,KAEC,OAAZf,GACFrhB,KAAKqiB,gBAAkB,EACvBriB,KAAKsb,WAAY,EACjBtb,KAAKsiB,WAAa,EAEd1W,MAAMC,QAAQyV,GAChBA,EAAYA,EAAUrgB,KAAK,MACG,iBAAdqgB,GAAwC,OAAdA,IAC1Cpe,EAAUoe,EACVA,OAAYrc,GAuXpB,SAASsd,EAAaC,EAAWnB,EAASC,EAAWpe,GACnD,MAAMyZ,EAAO,EAAH,GACR8F,gBAAiBtB,EAAiB,GAClCjG,WAAY,UACZwH,mBAAmB,EACnBC,iBAAiB,EACjBC,aAAc,IACX1f,GANK,IAOR2f,sBAAkB5d,EAClB6d,gBAAY7d,EACZ8d,cAAU9d,EACVyc,cAAUzc,EACV+d,aAAS/d,EACTge,YAAQhe,EACRie,UAAMje,EACNke,UAAMle,EACNme,UAAMne,EACNoe,UAAMpe,IAGR,IAAKkc,EAAiBmC,SAAS3G,EAAK8F,iBAClC,MAAM,IAAI7H,WACP,iCAAgC+B,EAAK8F,wCACZtB,EAAiBlgB,KAAK,UAIpD,IAAIsiB,EAEAlC,aAAmBlb,GACrBod,EAAYlC,EACZmB,EAAUgB,IAAMnC,EAAQ1a,OAExB4c,EAAY,IAAIpd,EAAIkb,GACpBmB,EAAUgB,IAAMnC,GAGlB,MAAMoC,EAAsC,aAAvBF,EAAU7B,SAE/B,KAAK6B,EAAUJ,MAAUM,GAAiBF,EAAUG,UAClD,MAAM,IAAIzf,MAAO,gBAAeue,EAAUgB,KAG5C,MAAMG,EACmB,SAAvBJ,EAAU7B,UAA8C,WAAvB6B,EAAU7B,SACvCkC,EAAcD,EAAW,IAAM,GAC/BxkB,EAAMyhB,EAAY,IAAI7gB,SAAS,UAC/BtB,EAAMklB,EAAWnD,EAAM/hB,IAAMgiB,EAAKhiB,IACxC,IAAIikB,EAEJ/F,EAAKkG,iBAAmBc,EAAWE,EAAaC,EAChDnH,EAAKiH,YAAcjH,EAAKiH,aAAeA,EACvCjH,EAAK0G,KAAOE,EAAUF,MAAQO,EAC9BjH,EAAKwG,KAAOI,EAAUR,SAASgB,WAAW,KACtCR,EAAUR,SAASjX,MAAM,GAAI,GAC7ByX,EAAUR,SACdpG,EAAKqH,QAAL,GACE,wBAAyBrH,EAAK8F,gBAC9B,oBAAqBtjB,EACrB8kB,WAAY,UACZC,QAAS,aACNvH,EAAKqH,SAEVrH,EAAKyG,KAAOG,EAAUG,SAAWH,EAAUY,OAC3CxH,EAAKqG,QAAUrG,EAAKyH,iBAEhBzH,EAAK+F,oBACPA,EAAoB,IAAI5B,GACK,IAA3BnE,EAAK+F,kBAA6B/F,EAAK+F,kBAAoB,IAC3D,EACA/F,EAAKzB,YAEPyB,EAAKqH,QAAQ,4BAA8B9S,EAAO,CAChD,CAAC4P,EAAkBuD,eAAgB3B,EAAkB/G,WAGrD2F,IACF3E,EAAKqH,QAAQ,0BAA4B1C,GAEvC3E,EAAK2H,SACH3H,EAAK8F,gBAAkB,GACzB9F,EAAKqH,QAAQ,wBAA0BrH,EAAK2H,OAE5C3H,EAAKqH,QAAQO,OAAS5H,EAAK2H,SAG3Bf,EAAUiB,UAAYjB,EAAUkB,YAClC9H,EAAKuG,KAAQ,GAAEK,EAAUiB,YAAYjB,EAAUkB,YAGjD,GAAIhB,EAAc,CAChB,MAAMngB,EAAQqZ,EAAKyG,KAAKrS,MAAM,KAE9B4L,EAAKmG,WAAaxf,EAAM,GACxBqZ,EAAKyG,KAAO9f,EAAM,GAGpB,IAAIohB,EAAOlC,EAAUmC,KAAOlmB,EAAIke,GAE5BA,EAAKqG,SACP0B,EAAI7G,GAAG,UAAW,KAChB+G,EAAepC,EAAWkC,EAAK,qCAInCA,EAAI7G,GAAG,QAAUzV,IACXoa,EAAUmC,KAAKE,UAEnBH,EAAMlC,EAAUmC,KAAO,KACvBnC,EAAUhB,WAAaJ,EAAU0D,QACjCtC,EAAUuC,KAAK,QAAS3c,GACxBoa,EAAUwC,eAGZN,EAAI7G,GAAG,WAAaoH,IAClB,MAAMC,EAAWD,EAAIjB,QAAQkB,SACvBC,EAAaF,EAAIE,WAEvB,GACED,GACAvI,EAAKgG,iBACLwC,GAAc,KACdA,EAAa,IACb,CACA,KAAM3C,EAAUF,WAAa3F,EAAKiG,aAEhC,YADAgC,EAAepC,EAAWkC,EAAK,8BAIjCA,EAAIU,QAEJ,MAAMC,EAAO,IAAIlf,EAAI+e,EAAU7D,GAE/BkB,EAAaC,EAAW6C,EAAM/D,EAAWpe,QAC/Bsf,EAAUuC,KAAK,sBAAuBL,EAAKO,IACrDL,EACEpC,EACAkC,EACC,+BAA8BO,EAAIE,cAKzCT,EAAI7G,GAAG,UAAW,CAACoH,EAAKK,EAAQ5iB,KAO9B,GANA8f,EAAUuC,KAAK,UAAWE,GAMtBzC,EAAUhB,aAAeJ,EAAUK,WAAY,OAEnDiD,EAAMlC,EAAUmC,KAAO,KAEvB,MAAMY,EAAS1E,EAAW,QACvBjb,OAAOzG,EAAMiN,GACbmZ,OAAO,UAEV,GAAIN,EAAIjB,QAAQ,0BAA4BuB,EAE1C,YADAX,EAAepC,EAAW8C,EAAQ,uCAIpC,MAAME,EAAaP,EAAIjB,QAAQ,0BACzByB,GAAYnE,GAAa,IAAIvQ,MAAM,OACzC,IAAI2U,EAUJ,IARKpE,GAAakE,EAChBE,EAAY,mDACHpE,IAAckE,EACvBE,EAAY,6BACHF,IAAeC,EAASnC,SAASkC,KAC1CE,EAAY,sCAGVA,EACFd,EAAepC,EAAW8C,EAAQI,OADpC,CAOA,GAFIF,IAAYhD,EAAUd,SAAW8D,GAEjC9C,EACF,IACE,MAAMiD,EAAaxV,EAAM8U,EAAIjB,QAAQ,6BAEjC2B,EAAW7E,EAAkBuD,iBAC/B3B,EAAkBtG,OAAOuJ,EAAW7E,EAAkBuD,gBACtD7B,EAAUP,YACRnB,EAAkBuD,eAChB3B,GAEN,MAAOta,GAMP,YALAwc,EACEpC,EACA8C,EACA,2CAMN9C,EAAUoD,UAAUN,EAAQ5iB,EAAMia,EAAKzB,eA9jBrCqH,CAAaviB,KAAMqhB,EAASC,EAAWpe,IAEvClD,KAAKsb,WAAY,EAIrB,iBACE,OAAO8F,EAAUK,WAEnB,cACE,OAAOL,EAAU0D,QAEnB,aACE,OAAO1D,EAAUyE,OAEnB,WACE,OAAOzE,EAAU0E,KAUnB,iBACE,OAAO9lB,KAAK2hB,YAGd,eAAexc,GACRgH,EAAamX,SAASne,KAE3BnF,KAAK2hB,YAAcxc,EAKfnF,KAAKkiB,YAAWliB,KAAKkiB,UAAUP,YAAcxc,IAMnD,qBACE,OAAKnF,KAAKoiB,SAKFpiB,KAAKoiB,QAAQ2D,YAAc,GAAK/lB,KAAKmiB,QAAQ6D,eAL3BhmB,KAAKqiB,gBAWjC,iBACE,OAAO/jB,OAAOkH,KAAKxF,KAAKiiB,aAAahhB,OAWvC2kB,UAAUN,EAAQ5iB,EAAMwY,GACtB,MAAM+K,EAAW,IAAIlF,EACnB/gB,KAAK2hB,YACL3hB,KAAKiiB,YACL/G,GAGFlb,KAAKmiB,QAAU,IAAInB,EAAOsE,EAAQtlB,KAAKiiB,aACvCjiB,KAAKkiB,UAAY+D,EACjBjmB,KAAKoiB,QAAUkD,EAEfW,EAAS3Z,GAActM,KACvBslB,EAAOhZ,GAActM,KAErBimB,EAASpI,GAAG,WAAYqI,GACxBD,EAASpI,GAAG,QAASsI,GACrBF,EAASpI,GAAG,QAASuI,GACrBH,EAASpI,GAAG,UAAWwI,GACvBJ,EAASpI,GAAG,OAAQyI,GACpBL,EAASpI,GAAG,OAAQ0I,GAEpBjB,EAAO5Z,WAAW,GAClB4Z,EAAOkB,aAEH9jB,EAAKrB,OAAS,GAAGikB,EAAOpY,QAAQxK,GAEpC4iB,EAAOzH,GAAG,QAAS4I,GACnBnB,EAAOzH,GAAG,OAAQ6I,GAClBpB,EAAOzH,GAAG,MAAO8I,GACjBrB,EAAOzH,GAAG,QAAS+I,GAEnB5mB,KAAKwhB,WAAaJ,EAAU0E,KAC5B9lB,KAAK+kB,KAAK,QAQZC,YACEhlB,KAAKwhB,WAAaJ,EAAUyE,OAEvB7lB,KAAKoiB,SAKNpiB,KAAKiiB,YAAYnB,EAAkBuD,gBACrCrkB,KAAKiiB,YAAYnB,EAAkBuD,eAAetb,UAGpD/I,KAAKkiB,UAAU2E,qBACf7mB,KAAK+kB,KAAK,QAAS/kB,KAAKgiB,WAAYhiB,KAAK8hB,gBATvC9hB,KAAK+kB,KAAK,QAAS/kB,KAAKgiB,WAAYhiB,KAAK8hB,eA+B7CrF,MAAMqK,EAAMzd,GACV,GAAIrJ,KAAKwhB,aAAeJ,EAAUyE,OAAlC,CACA,GAAI7lB,KAAKwhB,aAAeJ,EAAUK,WAAY,CAC5C,MAAMsF,EAAM,6DACZ,OAAOnC,EAAe5kB,KAAMA,KAAK2kB,KAAMoC,GAGrC/mB,KAAKwhB,aAAeJ,EAAU0D,SAKlC9kB,KAAKwhB,WAAaJ,EAAU0D,QAC5B9kB,KAAKmiB,QAAQ1F,MAAMqK,EAAMzd,GAAOrJ,KAAKsb,UAAYlT,IAK3CA,IAEJpI,KAAK6hB,iBAAkB,EACnB7hB,KAAK4hB,qBAAqB5hB,KAAKoiB,QAAQ4E,SAM7ChnB,KAAK+hB,YAAcrW,WACjB1L,KAAKoiB,QAAQ6E,QAAQ7nB,KAAKY,KAAKoiB,SAvNhB,MAmMXpiB,KAAK6hB,iBAAmB7hB,KAAK4hB,qBAAqB5hB,KAAKoiB,QAAQ4E,OAiCvEE,KAAK7d,EAAMmV,EAAM2I,GACf,GAAInnB,KAAKwhB,aAAeJ,EAAUK,WAChC,MAAM,IAAIxd,MAAM,oDAGE,mBAAToF,GACT8d,EAAK9d,EACLA,EAAOmV,OAAOvZ,GACW,mBAATuZ,IAChB2I,EAAK3I,EACLA,OAAOvZ,GAGW,iBAAToE,IAAmBA,EAAOA,EAAKtJ,YAEtCC,KAAKwhB,aAAeJ,EAAU0E,WAKrB7gB,IAATuZ,IAAoBA,GAAQxe,KAAKsb,WACrCtb,KAAKmiB,QAAQ+E,KAAK7d,GAAQkD,EAAciS,EAAM2I,IAL5CC,EAAepnB,KAAMqJ,EAAM8d,GAgB/BE,KAAKhe,EAAMmV,EAAM2I,GACf,GAAInnB,KAAKwhB,aAAeJ,EAAUK,WAChC,MAAM,IAAIxd,MAAM,oDAGE,mBAAToF,GACT8d,EAAK9d,EACLA,EAAOmV,OAAOvZ,GACW,mBAATuZ,IAChB2I,EAAK3I,EACLA,OAAOvZ,GAGW,iBAAToE,IAAmBA,EAAOA,EAAKtJ,YAEtCC,KAAKwhB,aAAeJ,EAAU0E,WAKrB7gB,IAATuZ,IAAoBA,GAAQxe,KAAKsb,WACrCtb,KAAKmiB,QAAQkF,KAAKhe,GAAQkD,EAAciS,EAAM2I,IAL5CC,EAAepnB,KAAMqJ,EAAM8d,GAqB/BG,KAAKje,EAAMnG,EAASikB,GAClB,GAAInnB,KAAKwhB,aAAeJ,EAAUK,WAChC,MAAM,IAAIxd,MAAM,oDAUlB,GAPuB,mBAAZf,IACTikB,EAAKjkB,EACLA,EAAU,IAGQ,iBAATmG,IAAmBA,EAAOA,EAAKtJ,YAEtCC,KAAKwhB,aAAeJ,EAAU0E,KAEhC,YADAsB,EAAepnB,KAAMqJ,EAAM8d,GAI7B,MAAMxK,EAAO,EAAH,CACR4K,OAAwB,iBAATle,EACfmV,MAAOxe,KAAKsb,UACZgC,UAAU,EACVL,KAAK,GACF/Z,GAGAlD,KAAKiiB,YAAYnB,EAAkBuD,iBACtC1H,EAAKW,UAAW,GAGlBtd,KAAKmiB,QAAQmF,KAAKje,GAAQkD,EAAcoQ,EAAMwK,GAQhDK,YACE,GAAIxnB,KAAKwhB,aAAeJ,EAAUyE,OAAlC,CACA,GAAI7lB,KAAKwhB,aAAeJ,EAAUK,WAAY,CAC5C,MAAMsF,EAAM,6DACZ,OAAOnC,EAAe5kB,KAAMA,KAAK2kB,KAAMoC,GAGrC/mB,KAAKoiB,UACPpiB,KAAKwhB,WAAaJ,EAAU0D,QAC5B9kB,KAAKoiB,QAAQ6E,aA8RnB,SAASnD,EAAW5gB,GAElB,OADAA,EAAQkgB,KAAOlgB,EAAQ4f,WAChBpC,EAAI+G,QAAQvkB,GAUrB,SAAS2gB,EAAW3gB,GAOlB,OANAA,EAAQkgB,UAAOne,EAEV/B,EAAQwkB,YAAqC,KAAvBxkB,EAAQwkB,aACjCxkB,EAAQwkB,WAAaxkB,EAAQigB,MAGxBxC,EAAI8G,QAAQvkB,GAYrB,SAAS0hB,EAAepC,EAAWmF,EAAQC,GACzCpF,EAAUhB,WAAaJ,EAAU0D,QAEjC,MAAM1c,EAAM,IAAInE,MAAM2jB,GACtB3jB,MAAM4jB,kBAAkBzf,EAAKwc,GAEzB+C,EAAOG,WACTH,EAAOvC,QACPuC,EAAOI,KAAK,QAASvF,EAAUwC,UAAU5lB,KAAKojB,IAC9CA,EAAUuC,KAAK,QAAS3c,KAExBuf,EAAOV,QAAQ7e,GACfuf,EAAOI,KAAK,QAASvF,EAAUuC,KAAK3lB,KAAKojB,EAAW,UACpDmF,EAAOI,KAAK,QAASvF,EAAUwC,UAAU5lB,KAAKojB,KAalD,SAAS4E,EAAe5E,EAAWnZ,EAAM8d,GACvC,GAAI9d,EAAM,CACR,MAAMhI,EAAS0d,EAAS1V,GAAMhI,OAQ1BmhB,EAAUJ,QAASI,EAAUL,QAAQ6D,gBAAkB3kB,EACtDmhB,EAAUH,iBAAmBhhB,EAGpC,GAAI8lB,EAAI,CAKNA,EAJY,IAAIljB,MACb,qCAAoCue,EAAUhB,eACzCN,EAAYsB,EAAUhB,kBAalC,SAAS0E,EAAmBY,EAAMkB,GAChC,MAAMxF,EAAYxiB,KAAKsM,GAEvBkW,EAAUJ,QAAQvH,eAAe,OAAQ6L,GACzClE,EAAUJ,QAAQ6F,SAElBzF,EAAUZ,qBAAsB,EAChCY,EAAUV,cAAgBkG,EAC1BxF,EAAUR,WAAa8E,EAEV,OAATA,EAAetE,EAAU/F,QACxB+F,EAAU/F,MAAMqK,EAAMkB,GAQ7B,SAAS7B,IACPnmB,KAAKsM,GAAY8V,QAAQ6F,SAS3B,SAAS7B,EAAgBhe,GACvB,MAAMoa,EAAYxiB,KAAKsM,GAEvBkW,EAAUJ,QAAQvH,eAAe,OAAQ6L,GAEzClE,EAAUhB,WAAaJ,EAAU0D,QACjCtC,EAAUR,WAAa5Z,EAAIiE,GAC3BmW,EAAUuC,KAAK,QAAS3c,GACxBoa,EAAUJ,QAAQ6E,UAQpB,SAASiB,IACPloB,KAAKsM,GAAY0Y,YASnB,SAASqB,EAAkBhd,GACzBrJ,KAAKsM,GAAYyY,KAAK,UAAW1b,GASnC,SAASid,EAAejd,GACtB,MAAMmZ,EAAYxiB,KAAKsM,GAEvBkW,EAAU6E,KAAKhe,GAAOmZ,EAAUlH,UAAW5O,GAC3C8V,EAAUuC,KAAK,OAAQ1b,GASzB,SAASkd,EAAeld,GACtBrJ,KAAKsM,GAAYyY,KAAK,OAAQ1b,GAQhC,SAASod,IACP,MAAMjE,EAAYxiB,KAAKsM,GAEvBtM,KAAK6a,eAAe,QAAS4L,GAC7BzmB,KAAK6a,eAAe,MAAO8L,GAE3BnE,EAAUhB,WAAaJ,EAAU0D,QAYjCtC,EAAUJ,QAAQ+F,OAClB3F,EAAUN,UAAU8E,MAEpBhnB,KAAK6a,eAAe,OAAQ6L,GAC5B1mB,KAAKsM,QAAcrH,EAEnBmjB,aAAa5F,EAAUT,aAGrBS,EAAUN,UAAUmG,eAAeC,UACnC9F,EAAUN,UAAUmG,eAAeE,aAEnC/F,EAAUwC,aAEVxC,EAAUN,UAAUrE,GAAG,QAASqK,GAChC1F,EAAUN,UAAUrE,GAAG,SAAUqK,IAUrC,SAASxB,EAAajM,GACfza,KAAKsM,GAAY4V,UAAUpE,MAAMrD,IACpCza,KAAKwoB,QAST,SAAS7B,IACP,MAAMnE,EAAYxiB,KAAKsM,GAEvBkW,EAAUhB,WAAaJ,EAAU0D,QACjCtC,EAAUN,UAAU8E,MACpBhnB,KAAKgnB,MAQP,SAASJ,IACP,MAAMpE,EAAYxiB,KAAKsM,GAEvBtM,KAAK6a,eAAe,QAAS+L,GAC7B5mB,KAAK6d,GAAG,QAASnR,GAEb8V,IACFA,EAAUhB,WAAaJ,EAAU0D,QACjC9kB,KAAKinB,WAlhBT/F,EAAYzb,QAAQ,CAAC+b,EAAY5jB,KAC/BwjB,EAAUI,GAAc5jB,IAO1B,CAAC,OAAQ,QAAS,QAAS,WAAW6H,QAASwd,IAC7C3kB,OAAOC,eAAe6iB,EAAU5hB,UAAY,KAAIyjB,EAAU,CAOxDxkB,MACE,MAAMgqB,EAAYzoB,KAAKyoB,UAAUxF,GACjC,IAAK,IAAIrlB,EAAI,EAAGA,EAAI6qB,EAAUpnB,OAAQzD,IACpC,GAAI6qB,EAAU7qB,GAAG8qB,UAAW,OAAOD,EAAU7qB,GAAG8qB,WAWpD1U,IAAI2U,GACF,MAAMF,EAAYzoB,KAAKyoB,UAAUxF,GACjC,IAAK,IAAIrlB,EAAI,EAAGA,EAAI6qB,EAAUpnB,OAAQzD,IAIhC6qB,EAAU7qB,GAAG8qB,WAAW1oB,KAAK6a,eAAeoI,EAAQwF,EAAU7qB,IAEpEoC,KAAKuI,iBAAiB0a,EAAQ0F,QAKpCvH,EAAU5hB,UAAU+I,iBAAmBA,EACvC6Y,EAAU5hB,UAAUyhB,oBAAsBA,EAE1CtjB,EAAOD,QAAU0jB,G,cCrajBzjB,EAAOD,QAAUkC,QAAQ,W,cCAzBjC,EAAOD,QAAUkC,QAAQ,U,mCCEjBgpB,EAAahpB,EAAQ,IAArBgpB,SAEF9H,EAAoBlhB,EAAQ,I,EAM9BA,EAAQ,IAJVuM,E,EAAAA,aACAI,E,EAAAA,aACAF,E,EAAAA,YACAC,E,EAAAA,W,EAEwC1M,EAAQ,IAA1CoB,E,EAAAA,OAAQ4d,E,EAAAA,cAAeY,E,EAAAA,O,EACY5f,EAAQ,IAA3CipB,E,EAAAA,kBAAmBC,E,EAAAA,YAwd3B,SAASxgB,EAAMygB,EAAWnB,EAASrV,EAAQ4S,GACzC,MAAM/c,EAAM,IAAI2gB,EACdxW,EAAU,4BAA2BqV,EAAYA,GAKnD,OAFA3jB,MAAM4jB,kBAAkBzf,EAAKE,GAC7BF,EAAIiE,GAAe8Y,EACZ/c,EApBTzK,EAAOD,QA7bP,cAAuBkrB,EAQrB7c,YAAYid,EAAYrD,EAAYzK,GAClCqG,QAEAvhB,KAAK2hB,YAAcqH,GAAc7c,EAAa,GAC9CnM,KAAKsM,QAAcrH,EACnBjF,KAAKiiB,YAAc0D,GAAc,GACjC3lB,KAAK2a,YAA2B,EAAbO,EAEnBlb,KAAKgmB,eAAiB,EACtBhmB,KAAKipB,SAAW,GAEhBjpB,KAAKkpB,aAAc,EACnBlpB,KAAKmpB,eAAiB,EACtBnpB,KAAKue,WAAQtZ,EACbjF,KAAKopB,YAAc,EACnBppB,KAAKqpB,SAAU,EACfrpB,KAAKspB,MAAO,EACZtpB,KAAKupB,QAAU,EAEfvpB,KAAKwpB,oBAAsB,EAC3BxpB,KAAKypB,eAAiB,EACtBzpB,KAAK0pB,WAAa,GAElB1pB,KAAK+K,OA3CQ,EA4Cb/K,KAAK2pB,OAAQ,EAUfC,OAAOnP,EAAOoP,EAAU1C,GACtB,GAAqB,IAAjBnnB,KAAKupB,SAvDI,GAuDgBvpB,KAAK+K,OAAoB,OAAOoc,IAE7DnnB,KAAKgmB,gBAAkBvL,EAAMpZ,OAC7BrB,KAAKipB,SAAS1nB,KAAKkZ,GACnBza,KAAK8pB,UAAU3C,GAUjB4C,QAAQ1qB,GAGN,GAFAW,KAAKgmB,gBAAkB3mB,EAEnBA,IAAMW,KAAKipB,SAAS,GAAG5nB,OAAQ,OAAOrB,KAAKipB,SAASe,QAExD,GAAI3qB,EAAIW,KAAKipB,SAAS,GAAG5nB,OAAQ,CAC/B,MAAMid,EAAMte,KAAKipB,SAAS,GAE1B,OADAjpB,KAAKipB,SAAS,GAAK3K,EAAIxS,MAAMzM,GACtBif,EAAIxS,MAAM,EAAGzM,GAGtB,MAAM4qB,EAAMzd,OAAO4R,YAAY/e,GAE/B,EAAG,CACD,MAAMif,EAAMte,KAAKipB,SAAS,GACpB5K,EAAS4L,EAAI5oB,OAAShC,EAExBA,GAAKif,EAAIjd,OACX4oB,EAAIjW,IAAIhU,KAAKipB,SAASe,QAAS3L,IAE/B4L,EAAIjW,IAAI,IAAIkW,WAAW5L,EAAIK,OAAQL,EAAIQ,WAAYzf,GAAIgf,GACvDre,KAAKipB,SAAS,GAAK3K,EAAIxS,MAAMzM,IAG/BA,GAAKif,EAAIjd,aACFhC,EAAI,GAEb,OAAO4qB,EASTH,UAAU3C,GACR,IAAI/e,EACJpI,KAAK2pB,OAAQ,EAEb,GACE,OAAQ3pB,KAAK+K,QACX,KA/GS,EAgHP3C,EAAMpI,KAAKmqB,UACX,MACF,KAjHsB,EAkHpB/hB,EAAMpI,KAAKoqB,qBACX,MACF,KAnHsB,EAoHpBhiB,EAAMpI,KAAKqqB,qBACX,MACF,KArHS,EAsHPrqB,KAAKsqB,UACL,MACF,KAvHS,EAwHPliB,EAAMpI,KAAKyK,QAAQ0c,GACnB,MACF,QAGE,YADAnnB,KAAK2pB,OAAQ,UAGV3pB,KAAK2pB,OAEdxC,EAAG/e,GASL+hB,UACE,GAAInqB,KAAKgmB,eAAiB,EAExB,YADAhmB,KAAK2pB,OAAQ,GAIf,MAAMrL,EAAMte,KAAK+pB,QAAQ,GAEzB,GAAwB,IAAV,GAATzL,EAAI,IAEP,OADAte,KAAK2pB,OAAQ,EACNrhB,EAAMsS,WAAY,+BAA+B,EAAM,MAGhE,MAAM2P,EAAiC,KAAV,GAATjM,EAAI,IAExB,GAAIiM,IAAevqB,KAAKiiB,YAAYnB,EAAkBuD,eAEpD,OADArkB,KAAK2pB,OAAQ,EACNrhB,EAAMsS,WAAY,sBAAsB,EAAM,MAOvD,GAJA5a,KAAKspB,KAA2B,MAAV,IAAThL,EAAI,IACjBte,KAAKupB,QAAmB,GAATjL,EAAI,GACnBte,KAAKmpB,eAA0B,IAAT7K,EAAI,GAEL,IAAjBte,KAAKupB,QAAkB,CACzB,GAAIgB,EAEF,OADAvqB,KAAK2pB,OAAQ,EACNrhB,EAAMsS,WAAY,sBAAsB,EAAM,MAGvD,IAAK5a,KAAKopB,YAER,OADAppB,KAAK2pB,OAAQ,EACNrhB,EAAMsS,WAAY,oBAAoB,EAAM,MAGrD5a,KAAKupB,QAAUvpB,KAAKopB,iBACf,GAAqB,IAAjBppB,KAAKupB,SAAqC,IAAjBvpB,KAAKupB,QAAkB,CACzD,GAAIvpB,KAAKopB,YAEP,OADAppB,KAAK2pB,OAAQ,EACNrhB,EAAMsS,WAAa,kBAAiB5a,KAAKupB,SAAW,EAAM,MAGnEvpB,KAAKkpB,YAAcqB,MACd,MAAIvqB,KAAKupB,QAAU,GAAQvpB,KAAKupB,QAAU,IAsB/C,OADAvpB,KAAK2pB,OAAQ,EACNrhB,EAAMsS,WAAa,kBAAiB5a,KAAKupB,SAAW,EAAM,MArBjE,IAAKvpB,KAAKspB,KAER,OADAtpB,KAAK2pB,OAAQ,EACNrhB,EAAMsS,WAAY,mBAAmB,EAAM,MAGpD,GAAI2P,EAEF,OADAvqB,KAAK2pB,OAAQ,EACNrhB,EAAMsS,WAAY,sBAAsB,EAAM,MAGvD,GAAI5a,KAAKmpB,eAAiB,IAExB,OADAnpB,KAAK2pB,OAAQ,EACNrhB,EACLsS,WACC,0BAAyB5a,KAAKmpB,gBAC/B,EACA,MAWN,GAHKnpB,KAAKspB,MAAStpB,KAAKopB,cAAappB,KAAKopB,YAAcppB,KAAKupB,SAC7DvpB,KAAKqpB,QAA8B,MAAV,IAAT/K,EAAI,IAEQ,MAAxBte,KAAKmpB,eAAwBnpB,KAAK+K,OApNZ,MAqNrB,IAA4B,MAAxB/K,KAAKmpB,eACT,OAAOnpB,KAAKwqB,aADqBxqB,KAAK+K,OApNjB,GA8N5Bqf,qBACE,KAAIpqB,KAAKgmB,eAAiB,GAM1B,OADAhmB,KAAKmpB,eAAiBnpB,KAAK+pB,QAAQ,GAAGU,aAAa,GAC5CzqB,KAAKwqB,aALVxqB,KAAK2pB,OAAQ,EAcjBU,qBACE,GAAIrqB,KAAKgmB,eAAiB,EAExB,YADAhmB,KAAK2pB,OAAQ,GAIf,MAAMrL,EAAMte,KAAK+pB,QAAQ,GACnB/Y,EAAMsN,EAAIoM,aAAa,GAM7B,OAAI1Z,EAAM2Z,KAAKC,IAAI,EAAG,IAAW,GAC/B5qB,KAAK2pB,OAAQ,EACNrhB,EACLsS,WACA,0DACA,EACA,QAIJ5a,KAAKmpB,eAAiBnY,EAAM2Z,KAAKC,IAAI,EAAG,IAAMtM,EAAIoM,aAAa,GACxD1qB,KAAKwqB,cASdA,aACE,GAAIxqB,KAAKmpB,gBAAkBnpB,KAAKupB,QAAU,IACxCvpB,KAAKwpB,qBAAuBxpB,KAAKmpB,eAC7BnpB,KAAKwpB,oBAAsBxpB,KAAK2a,aAAe3a,KAAK2a,YAAc,GAEpE,OADA3a,KAAK2pB,OAAQ,EACNrhB,EAAMsS,WAAY,6BAA6B,EAAO,MAI7D5a,KAAKqpB,QAASrpB,KAAK+K,OAvRV,EAwRR/K,KAAK+K,OAvRG,EA+Rfuf,UACMtqB,KAAKgmB,eAAiB,EACxBhmB,KAAK2pB,OAAQ,GAIf3pB,KAAKue,MAAQve,KAAK+pB,QAAQ,GAC1B/pB,KAAK+K,OAtSQ,GAgTfN,QAAQ0c,GACN,IAAI9d,EAAOkD,EAEX,GAAIvM,KAAKmpB,eAAgB,CACvB,GAAInpB,KAAKgmB,eAAiBhmB,KAAKmpB,eAE7B,YADAnpB,KAAK2pB,OAAQ,GAIftgB,EAAOrJ,KAAK+pB,QAAQ/pB,KAAKmpB,gBACrBnpB,KAAKqpB,SAAS7J,EAAOnW,EAAMrJ,KAAKue,OAGtC,OAAIve,KAAKupB,QAAU,EAAavpB,KAAK6qB,eAAexhB,GAEhDrJ,KAAKkpB,aACPlpB,KAAK+K,OA/TO,OAgUZ/K,KAAKgd,WAAW3T,EAAM8d,KAIpB9d,EAAKhI,SAKPrB,KAAKypB,eAAiBzpB,KAAKwpB,oBAC3BxpB,KAAK0pB,WAAWnoB,KAAK8H,IAGhBrJ,KAAK8qB,eAUd9N,WAAW3T,EAAM8d,GACWnnB,KAAKiiB,YAAYnB,EAAkBuD,eAE3CrH,WAAW3T,EAAMrJ,KAAKspB,KAAM,CAAClhB,EAAKkW,KAClD,GAAIlW,EAAK,OAAO+e,EAAG/e,GAEnB,GAAIkW,EAAIjd,OAAQ,CAEd,GADArB,KAAKypB,gBAAkBnL,EAAIjd,OACvBrB,KAAKypB,eAAiBzpB,KAAK2a,aAAe3a,KAAK2a,YAAc,EAC/D,OAAOwM,EACL7e,EAAMsS,WAAY,6BAA6B,EAAO,OAI1D5a,KAAK0pB,WAAWnoB,KAAK+c,GAGvB,MAAM/N,EAAKvQ,KAAK8qB,cAChB,GAAIva,EAAI,OAAO4W,EAAG5W,GAElBvQ,KAAK8pB,UAAU3C,KAUnB2D,cACE,GAAI9qB,KAAKspB,KAAM,CACb,MAAMyB,EAAgB/qB,KAAKypB,eACrBuB,EAAYhrB,KAAK0pB,WAOvB,GALA1pB,KAAKwpB,oBAAsB,EAC3BxpB,KAAKypB,eAAiB,EACtBzpB,KAAKopB,YAAc,EACnBppB,KAAK0pB,WAAa,GAEG,IAAjB1pB,KAAKupB,QAAe,CACtB,IAAIlgB,EAGFA,EADuB,eAArBrJ,KAAK2hB,YACA3gB,EAAOgqB,EAAWD,GACK,gBAArB/qB,KAAK2hB,YACP/C,EAAc5d,EAAOgqB,EAAWD,IAEhCC,EAGThrB,KAAK+kB,KAAK,UAAW1b,OAChB,CACL,MAAMiV,EAAMtd,EAAOgqB,EAAWD,GAE9B,IAAKjC,EAAYxK,GAEf,OADAte,KAAK2pB,OAAQ,EACNrhB,EAAMrE,MAAO,0BAA0B,EAAM,MAGtDjE,KAAK+kB,KAAK,UAAWzG,EAAIve,aAI7BC,KAAK+K,OA5ZQ,EAsaf8f,eAAexhB,GACb,GAAqB,IAAjBrJ,KAAKupB,QAGP,GAFAvpB,KAAK2pB,OAAQ,EAEO,IAAhBtgB,EAAKhI,OACPrB,KAAK+kB,KAAK,WAAY,KAAM,IAC5B/kB,KAAKgnB,UACA,IAAoB,IAAhB3d,EAAKhI,OACd,OAAOiH,EAAMsS,WAAY,4BAA4B,EAAM,MACtD,CACL,MAAMkM,EAAOzd,EAAKohB,aAAa,GAE/B,IAAK5B,EAAkB/B,GACrB,OAAOxe,EAAMsS,WAAa,uBAAsBkM,GAAQ,EAAM,MAGhE,MAAMxI,EAAMjV,EAAKyC,MAAM,GAEvB,IAAKgd,EAAYxK,GACf,OAAOhW,EAAMrE,MAAO,0BAA0B,EAAM,MAGtDjE,KAAK+kB,KAAK,WAAY+B,EAAMxI,EAAIve,YAChCC,KAAKgnB,YAEmB,IAAjBhnB,KAAKupB,QACdvpB,KAAK+kB,KAAK,OAAQ1b,GAElBrJ,KAAK+kB,KAAK,OAAQ1b,GAGpBrJ,KAAK+K,OArcQ,K,cCdjBpN,EAAOD,QAAUkC,QAAQ,W,6BCEzB,IACE,MAAMkpB,EAAclpB,GAAQ,wGAE5BlC,EAAQorB,YACiB,iBAAhBA,EACHA,EAAYmC,WAAWnC,YACvBA,EACN,MAAOnmB,GACPjF,EAAQorB,YAAc,KAAM,EAU9BprB,EAAQmrB,kBAAqB/B,GAExBA,GAAQ,KACPA,GAAQ,MACC,OAATA,GACS,OAATA,GACS,OAATA,GACDA,GAAQ,KAAQA,GAAQ,M,mCCzBrBoE,EAAmBtrB,EAAQ,IAA3BsrB,eAEFpK,EAAoBlhB,EAAQ,IAC1B2M,EAAiB3M,EAAQ,IAAzB2M,aACAsc,EAAsBjpB,EAAQ,IAA9BipB,kB,EAC8BjpB,EAAQ,IAAhCurB,E,EAAN3M,KAAiBO,E,EAAAA,SAEnBP,EAAOhS,OAAOC,MAAM,GAK1B,MAAMuU,EAOJjV,YAAYuZ,EAAQK,GAClB3lB,KAAKiiB,YAAc0D,GAAc,GACjC3lB,KAAKoiB,QAAUkD,EAEftlB,KAAKorB,gBAAiB,EACtBprB,KAAKud,WAAY,EAEjBvd,KAAKgmB,eAAiB,EACtBhmB,KAAKqrB,YAAa,EAClBrrB,KAAKsrB,OAAS,GAgBhB,aAAajiB,EAAMnG,GACjB,MAAMqoB,EAAQroB,EAAQsb,MAAQtb,EAAQ8b,SACtC,IAAIX,EAASnb,EAAQsb,KAAO,EAAI,EAC5BgN,EAAgBniB,EAAKhI,OAErBgI,EAAKhI,QAAU,OACjBgd,GAAU,EACVmN,EAAgB,KACPniB,EAAKhI,OAAS,MACvBgd,GAAU,EACVmN,EAAgB,KAGlB,MAAMrpB,EAASqK,OAAO4R,YAAYmN,EAAQliB,EAAKhI,OAASgd,EAASA,GAcjE,OAZAlc,EAAO,GAAKe,EAAQ+Z,IAAuB,IAAjB/Z,EAAQuoB,OAAgBvoB,EAAQuoB,OACtDvoB,EAAQwoB,OAAMvpB,EAAO,IAAM,IAE/BA,EAAO,GAAKqpB,EAEU,MAAlBA,EACFrpB,EAAOwpB,cAActiB,EAAKhI,OAAQ,GACP,MAAlBmqB,IACTrpB,EAAOypB,cAAc,EAAG,GACxBzpB,EAAOypB,cAAcviB,EAAKhI,OAAQ,IAG/B6B,EAAQsb,MAEb0M,EAAe1M,EAAM,EAAG,GAExBrc,EAAO,IAAM,IACbA,EAAOkc,EAAS,GAAKG,EAAK,GAC1Brc,EAAOkc,EAAS,GAAKG,EAAK,GAC1Brc,EAAOkc,EAAS,GAAKG,EAAK,GAC1Brc,EAAOkc,EAAS,GAAKG,EAAK,GAEtB+M,GACFJ,EAAU9hB,EAAMmV,EAAMrc,EAAQkc,EAAQhV,EAAKhI,QACpC,CAACc,KAGVgpB,EAAU9hB,EAAMmV,EAAMnV,EAAM,EAAGA,EAAKhI,QAC7B,CAACc,EAAQkH,KAhBU,CAAClH,EAAQkH,GA4BrCoT,MAAMqK,EAAMzd,EAAMmV,EAAM2I,GACtB,IAAI7I,EAEJ,QAAarZ,IAAT6hB,EACFxI,EAAM/R,MACD,IAAoB,iBAATua,IAAsB+B,EAAkB/B,GACxD,MAAM,IAAIhc,UAAU,yDACF7F,IAAToE,GAA+B,KAATA,GAC/BiV,EAAM9R,OAAO4R,YAAY,GACzBE,EAAIqN,cAAc7E,EAAM,KAExBxI,EAAM9R,OAAO4R,YAAY,EAAI5R,OAAOqS,WAAWxV,IAC/CiV,EAAIqN,cAAc7E,EAAM,GACxBxI,EAAIR,MAAMzU,EAAM,IAGdrJ,KAAKqrB,WACPrrB,KAAK6rB,QAAQ,CAAC7rB,KAAK8rB,QAASxN,EAAKE,EAAM2I,IAEvCnnB,KAAK8rB,QAAQxN,EAAKE,EAAM2I,GAY5B2E,QAAQziB,EAAMmV,EAAM2I,GAClBnnB,KAAK+rB,UACH/K,EAAOgL,MAAM3iB,EAAM,CACjB4T,KAAK,EACLyO,MAAM,EACND,OAAQ,EACRjN,OACAQ,UAAU,IAEZmI,GAYJD,KAAK7d,EAAMmV,EAAM2I,GACf,MAAM7I,EAAMS,EAAS1V,GAEjBrJ,KAAKqrB,WACPrrB,KAAK6rB,QAAQ,CAAC7rB,KAAKisB,OAAQ3N,EAAKE,EAAMO,EAASC,SAAUmI,IAEzDnnB,KAAKisB,OAAO3N,EAAKE,EAAMO,EAASC,SAAUmI,GAa9C8E,OAAO5iB,EAAMmV,EAAMQ,EAAUmI,GAC3BnnB,KAAK+rB,UACH/K,EAAOgL,MAAM3iB,EAAM,CACjB4T,KAAK,EACLyO,MAAM,EACND,OAAQ,EACRjN,OACAQ,aAEFmI,GAYJE,KAAKhe,EAAMmV,EAAM2I,GACf,MAAM7I,EAAMS,EAAS1V,GAEjBrJ,KAAKqrB,WACPrrB,KAAK6rB,QAAQ,CAAC7rB,KAAKksB,OAAQ5N,EAAKE,EAAMO,EAASC,SAAUmI,IAEzDnnB,KAAKksB,OAAO5N,EAAKE,EAAMO,EAASC,SAAUmI,GAa9C+E,OAAO7iB,EAAMmV,EAAMQ,EAAUmI,GAC3BnnB,KAAK+rB,UACH/K,EAAOgL,MAAM3iB,EAAM,CACjB4T,KAAK,EACLyO,MAAM,EACND,OAAQ,GACRjN,OACAQ,aAEFmI,GAgBJG,KAAKje,EAAMnG,EAASikB,GAClB,MAAM7I,EAAMS,EAAS1V,GACfqZ,EAAoB1iB,KAAKiiB,YAAYnB,EAAkBuD,eAC7D,IAAIoH,EAASvoB,EAAQqkB,OAAS,EAAI,EAC9BmE,EAAOxoB,EAAQoa,SAenB,GAbItd,KAAKorB,gBACPprB,KAAKorB,gBAAiB,EAClBM,GAAQhJ,IACVgJ,EAAOpN,EAAIjd,QAAUqhB,EAAkBtH,YAEzCpb,KAAKud,UAAYmO,IAEjBA,GAAO,EACPD,EAAS,GAGPvoB,EAAQ+Z,MAAKjd,KAAKorB,gBAAiB,GAEnC1I,EAAmB,CACrB,MAAM/F,EAAO,CACXM,IAAK/Z,EAAQ+Z,IACbyO,OACAD,SACAjN,KAAMtb,EAAQsb,KACdQ,SAAUD,EAASC,UAGjBhf,KAAKqrB,WACPrrB,KAAK6rB,QAAQ,CAAC7rB,KAAKmsB,SAAU7N,EAAKte,KAAKud,UAAWZ,EAAMwK,IAExDnnB,KAAKmsB,SAAS7N,EAAKte,KAAKud,UAAWZ,EAAMwK,QAG3CnnB,KAAK+rB,UACH/K,EAAOgL,MAAM1N,EAAK,CAChBrB,IAAK/Z,EAAQ+Z,IACbyO,MAAM,EACND,SACAjN,KAAMtb,EAAQsb,KACdQ,SAAUD,EAASC,WAErBmI,GAmBNgF,SAAS9iB,EAAMiU,EAAUpa,EAASikB,GAChC,IAAK7J,EAEH,YADAtd,KAAK+rB,UAAU/K,EAAOgL,MAAM3iB,EAAMnG,GAAUikB,GAI9C,MAAMzE,EAAoB1iB,KAAKiiB,YAAYnB,EAAkBuD,eAE7DrkB,KAAKqrB,YAAa,EAClB3I,EAAkBpF,SAASjU,EAAMnG,EAAQ+Z,IAAK,CAACjG,EAAGsH,KAChDte,KAAKqrB,YAAa,EAClBnoB,EAAQ8b,UAAW,EACnBhf,KAAK+rB,UAAU/K,EAAOgL,MAAM1N,EAAKpb,GAAUikB,GAC3CnnB,KAAKosB,YASTA,UACE,MAAQpsB,KAAKqrB,YAAcrrB,KAAKsrB,OAAOjqB,QAAQ,CAC7C,MAAMma,EAASxb,KAAKsrB,OAAOtB,QAE3BhqB,KAAKgmB,gBAAkBxK,EAAO,GAAGna,OACjCgrB,QAAQrqB,MAAMwZ,EAAO,GAAIxb,KAAMwb,EAAO1P,MAAM,KAUhD+f,QAAQrQ,GACNxb,KAAKgmB,gBAAkBxK,EAAO,GAAGna,OACjCrB,KAAKsrB,OAAO/pB,KAAKia,GAUnBuQ,UAAUjsB,EAAMqnB,GACM,IAAhBrnB,EAAKuB,QACPrB,KAAKoiB,QAAQkK,OACbtsB,KAAKoiB,QAAQtE,MAAMhe,EAAK,IACxBE,KAAKoiB,QAAQtE,MAAMhe,EAAK,GAAIqnB,GAC5BnnB,KAAKoiB,QAAQmK,UAEbvsB,KAAKoiB,QAAQtE,MAAMhe,EAAK,GAAIqnB,IAKlCxpB,EAAOD,QAAUsjB,G,6BCzVjB,MAAMwL,EAAa,CACjB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAa/C,SAASjrB,EAAKkrB,EAAMtuB,EAAMuuB,QACLznB,IAAfwnB,EAAKtuB,GAAqBsuB,EAAKtuB,GAAQ,CAACuuB,GACvCD,EAAKtuB,GAAMoD,KAAKmrB,GAyLvB/uB,EAAOD,QAAU,CAAEwT,OAxBnB,SAAgByU,GACd,OAAOrnB,OAAOkH,KAAKmgB,GAChB1lB,IAAK0sB,IACJ,IAAItQ,EAAiBsJ,EAAWgH,GAEhC,OADK/gB,MAAMC,QAAQwQ,KAAiBA,EAAiB,CAACA,IAC/CA,EACJpc,IAAKub,GACG,CAACmR,GACL3rB,OACC1C,OAAOkH,KAAKgW,GAAQvb,IAAK0L,IACvB,IAAIihB,EAASpR,EAAO7P,GAEpB,OADKC,MAAMC,QAAQ+gB,KAASA,EAAS,CAACA,IAC/BA,EACJ3sB,IAAKmR,IAAa,IAANA,EAAazF,EAAK,GAAEA,KAAKyF,KACrCnQ,KAAK,SAGXA,KAAK,OAETA,KAAK,QAETA,KAAK,OAGiBkP,MA/K3B,SAAe0c,GACb,MAAMnQ,EAASpe,OAAOY,OAAO,MAE7B,QAAe+F,IAAX4nB,GAAmC,KAAXA,EAAe,OAAOnQ,EAElD,IAII2H,EACAyI,EALAtR,EAASld,OAAOY,OAAO,MACvB6tB,GAAe,EACfC,GAAa,EACbC,GAAW,EAGXC,GAAS,EACTlG,GAAO,EACPppB,EAAI,EAER,KAAOA,EAAIivB,EAAOxrB,OAAQzD,IAAK,CAC7B,MAAMkpB,EAAO+F,EAAOM,WAAWvvB,GAE/B,QAAsBqH,IAAlBof,EACF,IAAa,IAAT2C,GAAmC,IAArBwF,EAAW1F,IACZ,IAAXoG,IAAcA,EAAQtvB,QACrB,GAAa,KAATkpB,GAAoC,IAATA,GACvB,IAATE,IAAyB,IAAXkG,IAAclG,EAAMppB,OACjC,IAAa,KAATkpB,GAAoC,KAATA,EAgBpC,MAAM,IAAIsG,YAAa,iCAAgCxvB,GAhBM,CAC7D,IAAe,IAAXsvB,EACF,MAAM,IAAIE,YAAa,iCAAgCxvB,IAG5C,IAATopB,IAAYA,EAAMppB,GACtB,MAAMO,EAAO0uB,EAAO/gB,MAAMohB,EAAOlG,GACpB,KAATF,GACFvlB,EAAKmb,EAAQve,EAAMqd,GACnBA,EAASld,OAAOY,OAAO,OAEvBmlB,EAAgBlmB,EAGlB+uB,EAAQlG,GAAO,QAIZ,QAAkB/hB,IAAd6nB,EACT,IAAa,IAAT9F,GAAmC,IAArBwF,EAAW1F,IACZ,IAAXoG,IAAcA,EAAQtvB,QACrB,GAAa,KAATkpB,GAA0B,IAATA,GACb,IAATE,IAAyB,IAAXkG,IAAclG,EAAMppB,QACjC,GAAa,KAATkpB,GAA0B,KAATA,EAAe,CACzC,IAAe,IAAXoG,EACF,MAAM,IAAIE,YAAa,iCAAgCxvB,IAG5C,IAATopB,IAAYA,EAAMppB,GACtB2D,EAAKia,EAAQqR,EAAO/gB,MAAMohB,EAAOlG,IAAM,GAC1B,KAATF,IACFvlB,EAAKmb,EAAQ2H,EAAe7I,GAC5BA,EAASld,OAAOY,OAAO,MACvBmlB,OAAgBpf,GAGlBioB,EAAQlG,GAAO,MACV,IAAa,KAATF,IAAsC,IAAXoG,IAAyB,IAATlG,EAIpD,MAAM,IAAIoG,YAAa,iCAAgCxvB,GAHvDkvB,EAAYD,EAAO/gB,MAAMohB,EAAOtvB,GAChCsvB,EAAQlG,GAAO,OAUjB,GAAIgG,EAAY,CACd,GAAyB,IAArBR,EAAW1F,GACb,MAAM,IAAIsG,YAAa,iCAAgCxvB,IAE1C,IAAXsvB,EAAcA,EAAQtvB,EAChBmvB,IAAcA,GAAe,GACvCC,GAAa,OACR,GAAIC,EACT,GAAyB,IAArBT,EAAW1F,IACE,IAAXoG,IAAcA,EAAQtvB,QACrB,GAAa,KAATkpB,IAAsC,IAAXoG,EACpCD,GAAW,EACXjG,EAAMppB,MACD,IAAa,KAATkpB,EAGT,MAAM,IAAIsG,YAAa,iCAAgCxvB,GAFvDovB,GAAa,OAIV,GAAa,KAATlG,GAA8C,KAA7B+F,EAAOM,WAAWvvB,EAAI,GAChDqvB,GAAW,OACN,IAAa,IAATjG,GAAmC,IAArBwF,EAAW1F,IACnB,IAAXoG,IAAcA,EAAQtvB,QACrB,IAAe,IAAXsvB,GAA0B,KAATpG,GAA0B,IAATA,EAEtC,IAAa,KAATA,GAA0B,KAATA,EAqB1B,MAAM,IAAIsG,YAAa,iCAAgCxvB,GArBd,CACzC,IAAe,IAAXsvB,EACF,MAAM,IAAIE,YAAa,iCAAgCxvB,IAG5C,IAATopB,IAAYA,EAAMppB,GACtB,IAAIiB,EAAQguB,EAAO/gB,MAAMohB,EAAOlG,GAC5B+F,IACFluB,EAAQA,EAAMyS,QAAQ,MAAO,IAC7Byb,GAAe,GAEjBxrB,EAAKia,EAAQsR,EAAWjuB,GACX,KAATioB,IACFvlB,EAAKmb,EAAQ2H,EAAe7I,GAC5BA,EAASld,OAAOY,OAAO,MACvBmlB,OAAgBpf,GAGlB6nB,OAAY7nB,EACZioB,EAAQlG,GAAO,QApBF,IAATA,IAAYA,EAAMppB,GA2B5B,IAAe,IAAXsvB,GAAgBD,EAClB,MAAM,IAAIG,YAAY,4BAGX,IAATpG,IAAYA,EAAMppB,GACtB,MAAMyvB,EAAQR,EAAO/gB,MAAMohB,EAAOlG,GAclC,YAbsB/hB,IAAlBof,EACF9iB,EAAKmb,EAAQ2Q,EAAO7R,SAEFvW,IAAd6nB,EACFvrB,EAAKia,EAAQ6R,GAAO,GAEpB9rB,EAAKia,EAAQsR,EADJC,EACeM,EAAM/b,QAAQ,MAAO,IAErB+b,GAE1B9rB,EAAKmb,EAAQ2H,EAAe7I,IAGvBkB,K,cC5LT/e,EAAOD,QAAUkC,QAAQ,S,6BCGzB,MAAM0tB,EAAU1tB,EAAQ,IAElB2tB,EAAM5uB,OAAO,OACb6uB,EAAS7uB,OAAO,UAChB8uB,EAAoB9uB,OAAO,oBAC3B+uB,EAAc/uB,OAAO,cACrBgvB,EAAUhvB,OAAO,UACjBivB,EAAUjvB,OAAO,WACjBkvB,EAAoBlvB,OAAO,kBAC3BmvB,EAAWnvB,OAAO,WAClBovB,EAAQpvB,OAAO,SACfqvB,EAAoBrvB,OAAO,kBAE3BsvB,EAAc,IAAM,EAkP1B,MAAMxvB,EAAM,CAACyvB,EAAM/uB,EAAKgvB,KACtB,MAAMC,EAAOF,EAAKH,GAAOtvB,IAAIU,GAC7B,GAAIivB,EAAM,CACR,MAAMC,EAAMD,EAAKvvB,MACjB,GAAIyvB,EAAQJ,EAAMG,IAEhB,GADAE,EAAIL,EAAME,IACLF,EAAKR,GACR,YAEES,IACED,EAAKF,KACPI,EAAKvvB,MAAM2vB,IAAMC,KAAKD,OACxBN,EAAKJ,GAAUY,YAAYN,IAG/B,OAAOC,EAAIxvB,QAITyvB,EAAU,CAACJ,EAAMG,KACrB,IAAKA,IAASA,EAAIM,SAAWT,EAAKP,GAChC,OAAO,EAET,MAAM1b,EAAOwc,KAAKD,MAAQH,EAAIG,IAC9B,OAAOH,EAAIM,OAAS1c,EAAOoc,EAAIM,OAC3BT,EAAKP,IAAa1b,EAAOic,EAAKP,IAG9Bnd,EAAO0d,IACX,GAAIA,EAAKV,GAAUU,EAAKX,GACtB,IAAK,IAAIqB,EAASV,EAAKJ,GAAUe,KAC/BX,EAAKV,GAAUU,EAAKX,IAAmB,OAAXqB,GAAkB,CAI9C,MAAME,EAAOF,EAAOE,KACpBP,EAAIL,EAAMU,GACVA,EAASE,IAKTP,EAAM,CAACL,EAAME,KACjB,GAAIA,EAAM,CACR,MAAMC,EAAMD,EAAKvvB,MACbqvB,EAAKN,IACPM,EAAKN,GAASS,EAAIlvB,IAAKkvB,EAAIxvB,OAE7BqvB,EAAKV,IAAWa,EAAIhtB,OACpB6sB,EAAKH,GAAOgB,OAAOV,EAAIlvB,KACvB+uB,EAAKJ,GAAUkB,WAAWZ,KAI9B,MAAMa,EACJljB,YAAa5M,EAAKN,EAAOwC,EAAQmtB,EAAKG,GACpC3uB,KAAKb,IAAMA,EACXa,KAAKnB,MAAQA,EACbmB,KAAKqB,OAASA,EACdrB,KAAKwuB,IAAMA,EACXxuB,KAAK2uB,OAASA,GAAU,GAI5B,MAAMO,EAAc,CAAChB,EAAM1sB,EAAI4sB,EAAMe,KACnC,IAAId,EAAMD,EAAKvvB,MACXyvB,EAAQJ,EAAMG,KAChBE,EAAIL,EAAME,GACLF,EAAKR,KACRW,OAAMppB,IAENopB,GACF7sB,EAAGzD,KAAKoxB,EAAOd,EAAIxvB,MAAOwvB,EAAIlvB,IAAK+uB,IAGvCvwB,EAAOD,QAnTP,MACEqO,YAAa7I,GAOX,GANuB,iBAAZA,IACTA,EAAU,CAAEuV,IAAKvV,IAEdA,IACHA,EAAU,IAERA,EAAQuV,MAA+B,iBAAhBvV,EAAQuV,KAAoBvV,EAAQuV,IAAM,GACnE,MAAM,IAAI3N,UAAU,qCAEV9K,KAAKutB,GAAOrqB,EAAQuV,KAAO2W,IAAvC,MAEMC,EAAKnsB,EAAQ7B,QAAU4sB,EAG7B,GAFAjuB,KAAKytB,GAAoC,mBAAP4B,EAAqBpB,EAAcoB,EACrErvB,KAAK0tB,GAAexqB,EAAQosB,QAAS,EACjCpsB,EAAQyrB,QAAoC,iBAAnBzrB,EAAQyrB,OACnC,MAAM,IAAI7jB,UAAU,2BACtB9K,KAAK2tB,GAAWzqB,EAAQyrB,QAAU,EAClC3uB,KAAK4tB,GAAW1qB,EAAQqsB,QACxBvvB,KAAK6tB,GAAqB3qB,EAAQssB,iBAAkB,EACpDxvB,KAAKguB,GAAqB9qB,EAAQusB,iBAAkB,EACpDzvB,KAAK8a,QAIP,QAAS4U,GACP,GAAkB,iBAAPA,GAAmBA,EAAK,EACjC,MAAM,IAAI5kB,UAAU,qCAEtB9K,KAAKutB,GAAOmC,GAAMN,IAClB5e,EAAKxQ,MAEP,UACE,OAAOA,KAAKutB,GAGd,eAAgBoC,GACd3vB,KAAK0tB,KAAiBiC,EAExB,iBACE,OAAO3vB,KAAK0tB,GAGd,WAAYkC,GACV,GAAkB,iBAAPA,EACT,MAAM,IAAI9kB,UAAU,wCAEtB9K,KAAK2tB,GAAWiC,EAChBpf,EAAKxQ,MAEP,aACE,OAAOA,KAAK2tB,GAId,qBAAsBkC,GACF,mBAAPA,IACTA,EAAK5B,GAEH4B,IAAO7vB,KAAKytB,KACdztB,KAAKytB,GAAqBoC,EAC1B7vB,KAAKwtB,GAAU,EACfxtB,KAAK8tB,GAAUroB,QAAQ4oB,IACrBA,EAAIhtB,OAASrB,KAAKytB,GAAmBY,EAAIxvB,MAAOwvB,EAAIlvB,KACpDa,KAAKwtB,IAAWa,EAAIhtB,UAGxBmP,EAAKxQ,MAEP,uBAA0B,OAAOA,KAAKytB,GAEtC,aAAgB,OAAOztB,KAAKwtB,GAC5B,gBAAmB,OAAOxtB,KAAK8tB,GAAUzsB,OAEzCyuB,SAAUtuB,EAAI2tB,GACZA,EAAQA,GAASnvB,KACjB,IAAK,IAAI4uB,EAAS5uB,KAAK8tB,GAAUe,KAAiB,OAAXD,GAAkB,CACvD,MAAME,EAAOF,EAAOE,KACpBI,EAAYlvB,KAAMwB,EAAIotB,EAAQO,GAC9BP,EAASE,GAIbrpB,QAASjE,EAAI2tB,GACXA,EAAQA,GAASnvB,KACjB,IAAK,IAAI4uB,EAAS5uB,KAAK8tB,GAAUprB,KAAiB,OAAXksB,GAAkB,CACvD,MAAMjV,EAAOiV,EAAOjV,KACpBuV,EAAYlvB,KAAMwB,EAAIotB,EAAQO,GAC9BP,EAASjV,GAIbnU,OACE,OAAOxF,KAAK8tB,GAAUiC,UAAU9vB,IAAI0L,GAAKA,EAAExM,KAG7CytB,SACE,OAAO5sB,KAAK8tB,GAAUiC,UAAU9vB,IAAI0L,GAAKA,EAAE9M,OAG7Cic,QACM9a,KAAK4tB,IACL5tB,KAAK8tB,IACL9tB,KAAK8tB,GAAUzsB,QACjBrB,KAAK8tB,GAAUroB,QAAQ4oB,GAAOruB,KAAK4tB,GAASS,EAAIlvB,IAAKkvB,EAAIxvB,QAG3DmB,KAAK+tB,GAAS,IAAIiC,IAClBhwB,KAAK8tB,GAAY,IAAIR,EACrBttB,KAAKwtB,GAAU,EAGjByC,OACE,OAAOjwB,KAAK8tB,GAAU7tB,IAAIouB,IACxBC,EAAQtuB,KAAMquB,IAAe,CAC3B1iB,EAAG0iB,EAAIlvB,IACPiS,EAAGid,EAAIxvB,MACP8D,EAAG0rB,EAAIG,KAAOH,EAAIM,QAAU,KAC3BoB,UAAU1oB,OAAOkE,GAAKA,GAG7B2kB,UACE,OAAOlwB,KAAK8tB,GAGd9Z,IAAK7U,EAAKN,EAAO8vB,GAGf,IAFAA,EAASA,GAAU3uB,KAAK2tB,KAEQ,iBAAXgB,EACnB,MAAM,IAAI7jB,UAAU,2BAEtB,MAAM0jB,EAAMG,EAASF,KAAKD,MAAQ,EAC5B2B,EAAMnwB,KAAKytB,GAAmB5uB,EAAOM,GAE3C,GAAIa,KAAK+tB,GAAOqC,IAAIjxB,GAAM,CACxB,GAAIgxB,EAAMnwB,KAAKutB,GAEb,OADAgB,EAAIvuB,KAAMA,KAAK+tB,GAAOtvB,IAAIU,KACnB,EAGT,MACMe,EADOF,KAAK+tB,GAAOtvB,IAAIU,GACXN,MAgBlB,OAZImB,KAAK4tB,KACF5tB,KAAK6tB,IACR7tB,KAAK4tB,GAASzuB,EAAKe,EAAKrB,QAG5BqB,EAAKsuB,IAAMA,EACXtuB,EAAKyuB,OAASA,EACdzuB,EAAKrB,MAAQA,EACbmB,KAAKwtB,IAAW2C,EAAMjwB,EAAKmB,OAC3BnB,EAAKmB,OAAS8uB,EACdnwB,KAAKvB,IAAIU,GACTqR,EAAKxQ,OACE,EAGT,MAAMquB,EAAM,IAAIY,EAAM9vB,EAAKN,EAAOsxB,EAAK3B,EAAKG,GAG5C,OAAIN,EAAIhtB,OAASrB,KAAKutB,IAChBvtB,KAAK4tB,IACP5tB,KAAK4tB,GAASzuB,EAAKN,IAEd,IAGTmB,KAAKwtB,IAAWa,EAAIhtB,OACpBrB,KAAK8tB,GAAU5gB,QAAQmhB,GACvBruB,KAAK+tB,GAAO/Z,IAAI7U,EAAKa,KAAK8tB,GAAUprB,MACpC8N,EAAKxQ,OACE,GAGTowB,IAAKjxB,GACH,IAAKa,KAAK+tB,GAAOqC,IAAIjxB,GAAM,OAAO,EAClC,MAAMkvB,EAAMruB,KAAK+tB,GAAOtvB,IAAIU,GAAKN,MACjC,OAAQyvB,EAAQtuB,KAAMquB,GAGxB5vB,IAAKU,GACH,OAAOV,EAAIuB,KAAMb,GAAK,GAGxBkxB,KAAMlxB,GACJ,OAAOV,EAAIuB,KAAMb,GAAK,GAGxBmV,MACE,MAAM8Z,EAAOpuB,KAAK8tB,GAAUe,KAC5B,OAAKT,GAGLG,EAAIvuB,KAAMouB,GACHA,EAAKvvB,OAHH,KAMX0vB,IAAKpvB,GACHovB,EAAIvuB,KAAMA,KAAK+tB,GAAOtvB,IAAIU,IAG5BmxB,KAAMC,GAEJvwB,KAAK8a,QAEL,MAAM0T,EAAMC,KAAKD,MAEjB,IAAK,IAAI3wB,EAAI0yB,EAAIlvB,OAAS,EAAGxD,GAAK,EAAGA,IAAK,CACxC,MAAMwwB,EAAMkC,EAAI1yB,GACV2yB,EAAYnC,EAAI1rB,GAAK,EAC3B,GAAkB,IAAd6tB,EAEFxwB,KAAKgU,IAAIqa,EAAI1iB,EAAG0iB,EAAIjd,OACjB,CACH,MAAMud,EAAS6B,EAAYhC,EAEvBG,EAAS,GACX3uB,KAAKgU,IAAIqa,EAAI1iB,EAAG0iB,EAAIjd,EAAGud,KAM/B8B,QACEzwB,KAAK+tB,GAAOtoB,QAAQ,CAAC5G,EAAOM,IAAQV,EAAIuB,KAAMb,GAAK,O,6BC5PvD,MAAMiiB,EAAYxhB,EAAQ,IAE1BwhB,EAAUsP,sBAAwB9wB,EAAQ,KAC1CwhB,EAAUuP,OAAS/wB,EAAQ,KAC3BwhB,EAAUL,SAAWnhB,EAAQ,IAC7BwhB,EAAUJ,OAASphB,EAAQ,IAE3BjC,EAAOD,QAAU0jB,G,6BCNfzjB,EAAOD,QAAUkC,EAAQ,M,6BCD3B,IAAIgxB,EAAmB,sBAEvBjzB,EAAOD,QAAU,SAAUmzB,GAC1B,GAAmB,iBAARA,EACV,MAAM,IAAI/lB,UAAU,qBAGrB,OAAO+lB,EAAIvf,QAAQsf,EAAkB,U,cCCtC,IASIE,EAAS,aAGTC,EAAa,qBAGbC,EAAa,aAGbC,EAAY,cAGZC,EAAeC,SAGfC,EAA8B,iBAAVC,QAAsBA,QAAUA,OAAO/yB,SAAWA,QAAU+yB,OAGhFC,EAA0B,iBAARpD,MAAoBA,MAAQA,KAAK5vB,SAAWA,QAAU4vB,KAGxEqD,EAAOH,GAAcE,GAAYE,SAAS,cAATA,GAUjCC,EAPcnzB,OAAOkB,UAOQO,SAG7B2xB,EAAY/G,KAAKlS,IACjBkZ,EAAYhH,KAAK9R,IAkBjB2V,EAAM,WACR,OAAO+C,EAAK9C,KAAKD,OAyDnB,SAASoD,EAASC,EAAMC,EAAM5uB,GAC5B,IAAI6uB,EACAC,EACAC,EACAnsB,EACAosB,EACAC,EACAC,EAAiB,EACjBC,GAAU,EACVC,GAAS,EACTC,GAAW,EAEf,GAAmB,mBAARV,EACT,MAAM,IAAI/mB,UArIQ,uBA+IpB,SAAS0nB,EAAWC,GAClB,IAAIxlB,EAAO8kB,EACPW,EAAUV,EAKd,OAHAD,EAAWC,OAAW/sB,EACtBmtB,EAAiBK,EACjB3sB,EAAS+rB,EAAK7vB,MAAM0wB,EAASzlB,GAI/B,SAAS0lB,EAAYF,GAMnB,OAJAL,EAAiBK,EAEjBP,EAAUxmB,WAAWknB,EAAcd,GAE5BO,EAAUG,EAAWC,GAAQ3sB,EAWtC,SAAS+sB,EAAaJ,GACpB,IAAIK,EAAoBL,EAAON,EAM/B,YAAyBltB,IAAjBktB,GAA+BW,GAAqBhB,GACzDgB,EAAoB,GAAOR,GANJG,EAAOL,GAM8BH,EAGjE,SAASW,IACP,IAAIH,EAAOjE,IACX,GAAIqE,EAAaJ,GACf,OAAOM,EAAaN,GAGtBP,EAAUxmB,WAAWknB,EAzBvB,SAAuBH,GACrB,IAEI3sB,EAASgsB,GAFWW,EAAON,GAI/B,OAAOG,EAASX,EAAU7rB,EAAQmsB,GAHRQ,EAAOL,IAGkCtsB,EAoBhCktB,CAAcP,IAGnD,SAASM,EAAaN,GAKpB,OAJAP,OAAUjtB,EAINstB,GAAYR,EACPS,EAAWC,IAEpBV,EAAWC,OAAW/sB,EACfa,GAeT,SAASmtB,IACP,IAAIR,EAAOjE,IACP0E,EAAaL,EAAaJ,GAM9B,GAJAV,EAAW9vB,UACX+vB,EAAWhyB,KACXmyB,EAAeM,EAEXS,EAAY,CACd,QAAgBjuB,IAAZitB,EACF,OAAOS,EAAYR,GAErB,GAAIG,EAGF,OADAJ,EAAUxmB,WAAWknB,EAAcd,GAC5BU,EAAWL,GAMtB,YAHgBltB,IAAZitB,IACFA,EAAUxmB,WAAWknB,EAAcd,IAE9BhsB,EAIT,OAxGAgsB,EAAOqB,EAASrB,IAAS,EACrBsB,EAASlwB,KACXmvB,IAAYnvB,EAAQmvB,QAEpBJ,GADAK,EAAS,YAAapvB,GACHwuB,EAAUyB,EAASjwB,EAAQ+uB,UAAY,EAAGH,GAAQG,EACrEM,EAAW,aAAcrvB,IAAYA,EAAQqvB,SAAWA,GAiG1DU,EAAUI,OAnCV,gBACkBpuB,IAAZitB,GACF9J,aAAa8J,GAEfE,EAAiB,EACjBL,EAAWI,EAAeH,EAAWE,OAAUjtB,GA+BjDguB,EAAUlV,MA5BV,WACE,YAAmB9Y,IAAZitB,EAAwBpsB,EAASitB,EAAavE,MA4BhDyE,EA0FT,SAASG,EAASv0B,GAChB,IAAIsG,SAActG,EAClB,QAASA,IAAkB,UAARsG,GAA4B,YAARA,GA4EzC,SAASguB,EAASt0B,GAChB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAhCF,SAAkBA,GAChB,MAAuB,iBAATA,GAtBhB,SAAsBA,GACpB,QAASA,GAAyB,iBAATA,EAsBtBy0B,CAAaz0B,IAvXF,mBAuXY4yB,EAAe1zB,KAAKc,GA8B1C00B,CAAS10B,GACX,OAzZM,IA2ZR,GAAIu0B,EAASv0B,GAAQ,CACnB,IAAI2S,EAAgC,mBAAjB3S,EAAM20B,QAAwB30B,EAAM20B,UAAY30B,EACnEA,EAAQu0B,EAAS5hB,GAAUA,EAAQ,GAAMA,EAE3C,GAAoB,iBAAT3S,EACT,OAAiB,IAAVA,EAAcA,GAASA,EAEhCA,EAAQA,EAAMyS,QAAQwf,EAAQ,IAC9B,IAAI2C,EAAWzC,EAAWhkB,KAAKnO,GAC/B,OAAQ40B,GAAYxC,EAAUjkB,KAAKnO,GAC/BqyB,EAAaryB,EAAMiN,MAAM,GAAI2nB,EAAW,EAAI,GAC3C1C,EAAW/jB,KAAKnO,GAtab,KAsa6BA,EAGvClB,EAAOD,QA9IP,SAAkBm0B,EAAMC,EAAM5uB,GAC5B,IAAImvB,GAAU,EACVE,GAAW,EAEf,GAAmB,mBAARV,EACT,MAAM,IAAI/mB,UAnSQ,uBAySpB,OAJIsoB,EAASlwB,KACXmvB,EAAU,YAAanvB,IAAYA,EAAQmvB,QAAUA,EACrDE,EAAW,aAAcrvB,IAAYA,EAAQqvB,SAAWA,GAEnDX,EAASC,EAAMC,EAAM,CAC1B,QAAWO,EACX,QAAWP,EACX,SAAYS,M,gBCrThB,IAAIpyB,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAsE9E,EAAS+C,GAEzF/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAsE9E,EAAS+C,GAEzF/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAsE9E,EAAS+C,GAEzF/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAsE9E,EAAS+C,GAEzF/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAA4E9E,EAAS+C,GAE/F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAyE9E,EAAS+C,GAE5F/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAsE9E,EAAS+C,GAEzF/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,gBChB5C,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAsE9E,EAAS+C,GAEzF/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,cCjB5CtK,EAAQg2B,MAAQ,SAAUC,GACtB,OAAOA,EAAG1zB,KAAI,SAAUN,GACpB,OAAIA,GAAkB,iBAANA,EACLA,EAAEuT,GAAG5B,QAAQ,OAAQ,QAEvB,QAAQtE,KAAKrN,KAAO,IAAIqN,KAAKrN,GAC3B,IAAMA,EAAE2R,QAAQ,WAAY,QAAU,IAExC,SAAStE,KAAKrN,GACZ,IAAMA,EAAE2R,QAAQ,cAAe,QAAU,IAMhD3R,GAHAA,EAAI8Z,OAAO9Z,GAAG2R,QAAQ,6CAA8C,WAG9DA,QAAQ,QAAS,SAG5BrQ,KAAK,MAcZ,IATA,IAAI2yB,EAAU,MAAQ,CAClB,SAAU,SAAU,KAAM,SAAU,SAAU,KAAM,OAAQ,aAC9D3yB,KAAK,KAAO,IAMV4yB,EAAQ,GACHj2B,EAAI,EAAGA,EAAI,EAAGA,IACnBi2B,IAAUlJ,KAAKC,IAAI,GAAG,GAAGD,KAAKmJ,UAAU/zB,SAAS,IAGrDrC,EAAQyS,MAAQ,SAAUxQ,EAAGmN,EAAK6P,GAC9B,IAAIoX,EAeR,SAAgBp0B,EAAGmN,EAAK6P,GACpB,IAAIqX,EAAU,IAAI5kB,OAAO,CACrB,IAAMwkB,EAAU,IAChB,6FACF3yB,KAAK,KAAM,KACTwP,EAAQ9Q,EAAE8Q,MAAMujB,GAAS3sB,OAAOC,SAChC2sB,GAAY,EAEhB,IAAKxjB,EAAO,MAAO,GACd3D,IAAKA,EAAM,IACX6P,IAAMA,EAAO,IAClB,OAAOlM,EAAMxQ,KAAI,SAAUN,EAAG0D,GAC1B,IAAI4wB,EAAJ,CAGA,GAAI7kB,OAAO,IAAMwkB,EAAU,KAAK5mB,KAAKrN,GACjC,MAAO,CAAEuT,GAAIvT,GAuBjB,IATA,IAGIu0B,EAAKvX,EAAKwX,QAAU,KACpBT,GAAQ,EACRU,GAAM,EACNC,EAAM,GACNC,GAAS,EAEJ12B,EAAI,EAAGuyB,EAAMxwB,EAAE0B,OAAQzD,EAAIuyB,EAAKvyB,IAAK,CAC1C,IAAIK,EAAI0B,EAAE40B,OAAO32B,GAEjB,GADA02B,EAASA,IAAYZ,IAAgB,MAANz1B,GAAmB,MAANA,GACxCm2B,EACAC,GAAOp2B,EACPm2B,GAAM,OAEL,GAAIV,EACDz1B,IAAMy1B,EACNA,GAAQ,EAlBX,KAoBQA,EACLW,GAAOp2B,EAGHA,IAAMi2B,GACNt2B,GAAK,EAGDy2B,GA3BX,OAyBOp2B,EAAI0B,EAAE40B,OAAO32B,KACGK,IAAMi2B,GAzB7B,MAyBmCj2B,EACjBA,EAEAi2B,EAAKj2B,GAIhBo2B,GAhCP,MA+BYp2B,EACEu2B,IAGAv2B,OAId,GAxCA,MAwCIA,GAzCJ,MAyCgBA,EACjBy1B,EAAQz1B,MAEP,IAAImR,OAAO,IAAMwkB,EAAU,KAAK5mB,KAAK/O,GACtC,MAAO,CAAEiV,GAAIvT,GAEZ,GAAIyP,OAAO,OAAOpC,KAAK/O,GAExB,OADAg2B,GAAY,EACRI,EAAIhzB,OACG,CAACgzB,EAAK,CAAEI,QAAS90B,EAAEmM,MAAMlO,EAAE,GAAK6S,EAAM3E,MAAMzI,EAAE,GAAGpC,KAAK,OAE1D,CAAC,CAAEwzB,QAAS90B,EAAEmM,MAAMlO,EAAE,GAAK6S,EAAM3E,MAAMzI,EAAE,GAAGpC,KAAK,OAEnDhD,IAAMi2B,EACXE,GAAM,EAGNC,GAxDC,MAuDIp2B,EACEu2B,IAECv2B,GAGhB,OAAIq2B,EAAe,CAACphB,GAAI,OAAQwhB,QAASL,GAElCA,EAEP,SAASG,IAEL,IAAIG,EAAQC,EAEZ,GAHAh3B,GAAK,EAGe,MAAhB+B,EAAE40B,OAAO32B,GAAY,CAErB,GADAA,GAAK,EACe,MAAhB+B,EAAE40B,OAAO32B,GACT,MAAM,IAAIqG,MAAM,qBAAuBtE,EAAEk1B,OAAOj3B,EAAI,EAAG,IAG3D,IADA+2B,EAASh1B,EAAEkF,QAAQ,IAAKjH,IACX,EACT,MAAM,IAAIqG,MAAM,qBAAuBtE,EAAEk1B,OAAOj3B,IAEpDg3B,EAAUj1B,EAAEk1B,OAAOj3B,EAAG+2B,EAAS/2B,GAC/BA,EAAI+2B,MAEC,cAAc3nB,KAAKrN,EAAE40B,OAAO32B,KACjCg3B,EAAUj1B,EAAE40B,OAAO32B,GACnBA,GAAK,IAGL+2B,EAASh1B,EAAEk1B,OAAOj3B,GAAG6S,MAAM,cAKvBmkB,EAAUj1B,EAAEk1B,OAAOj3B,EAAG+2B,EAAOxtB,OAC7BvJ,GAAK+2B,EAAOxtB,MAAQ,IAJpBytB,EAAUj1B,EAAEk1B,OAAOj3B,GACnBA,EAAI+B,EAAE0B,QAMd,OAWR,SAAiB2V,EAAG8d,EAAK31B,GACrB,IAAIT,EAAmB,mBAARoO,EAAqBA,EAAI3N,GAAO2N,EAAI3N,QACzC8F,IAANvG,GAA0B,IAAPS,EACnBT,EAAI,QACOuG,IAANvG,IACLA,EAAI,KAER,MAAiB,iBAANA,EACAo2B,EAAMjB,EAAQnzB,KAAKC,UAAUjC,GAAKm1B,EAEjCiB,EAAMp2B,EArBPq2B,CAAO,EAAM,GAAIH,OAI/BI,QAAO,SAASlG,EAAMmG,GACnB,YAAYhwB,IAARgwB,EACOnG,EAEJA,EAAK9tB,OAAOi0B,KACrB,IAvJW9kB,CAAMxQ,EAAGmN,EAAK6P,GAC3B,MAAmB,mBAAR7P,EAA2BinB,EAC/BA,EAAOiB,QAAO,SAAUE,EAAKv1B,GAChC,GAAiB,iBAANA,EAAgB,OAAOu1B,EAAIl0B,OAAOrB,GAC7C,IAAIg0B,EAAKh0B,EAAEoR,MAAM3B,OAAO,IAAMykB,EAAQ,MAAQA,EAAQ,IAAK,MAC3D,OAAkB,IAAdF,EAAGtyB,OAAqB6zB,EAAIl0B,OAAO2yB,EAAG,IACnCuB,EAAIl0B,OAAO2yB,EAAGtsB,OAAOC,SAASrH,KAAI,SAAUk1B,GAC/C,OAAI/lB,OAAO,IAAMykB,GAAO7mB,KAAKmoB,GAClBz0B,KAAKyP,MAAMglB,EAAEpkB,MAAM8iB,GAAO,IAEzBsB,QAEjB,M;;;;;;;;GCzCM,IAAIt3B,EAAE+B,EAAQ,IAAiB5B,EAAE,MAAM0B,EAAE,MAAMhC,EAAQ03B,SAAS,MAAM13B,EAAQ23B,WAAW,MAAM33B,EAAQ43B,SAAS,MAAM,IAAIC,EAAE,MAAM72B,EAAE,MAAMI,EAAE,MAAMpB,EAAQ83B,SAAS,MAAM93B,EAAQ+3B,sBAAsB,MAAM,IAAIC,EAAE,MAAMtkB,EAAE,MACxO,GAD8O1T,EAAQi4B,0BAA0B,MAAMj4B,EAAQk4B,sBAAsB,MACjT,mBAAoBj3B,QAAQA,OAAOk3B,IAAI,CAAC,IAAIC,EAAEn3B,OAAOk3B,IAAI73B,EAAE83B,EAAE,iBAAiBp2B,EAAEo2B,EAAE,gBAAgBp4B,EAAQ03B,SAASU,EAAE,kBAAkBp4B,EAAQ23B,WAAWS,EAAE,qBAAqBp4B,EAAQ43B,SAASQ,EAAE,kBAAkBP,EAAEO,EAAE,kBAAkBp3B,EAAEo3B,EAAE,iBAAiBh3B,EAAEg3B,EAAE,qBAAqBp4B,EAAQ83B,SAASM,EAAE,kBAAkBp4B,EAAQ+3B,sBAAsBK,EAAE,uBAAuBJ,EAAEI,EAAE,cAAc1kB,EAAE0kB,EAAE,cAAcp4B,EAAQi4B,0BAA0BG,EAAE,0BAA0Bp4B,EAAQk4B,sBACneE,EAAE,uBAAuB,IAAIX,EAAE,mBAAoBx2B,QAAQA,OAAOo3B,SAClE,SAASC,EAAEprB,GAAG,IAAI,IAAIC,EAAE,yDAAyDD,EAAE3M,EAAE,EAAEA,EAAEgE,UAAUZ,OAAOpD,IAAI4M,GAAG,WAAWpK,mBAAmBwB,UAAUhE,IAAI,MAAM,yBAAyB2M,EAAE,WAAWC,EAAE,iHAAiH,IAAIorB,EAAE,CAACC,UAAU,WAAW,OAAM,GAAIC,mBAAmB,aAAaC,oBAAoB,aAAaC,gBAAgB,cAAcC,EAAE,GACnc,SAASC,EAAE3rB,EAAEC,EAAE5M,GAAG+B,KAAKw2B,MAAM5rB,EAAE5K,KAAKy2B,QAAQ5rB,EAAE7K,KAAKoD,KAAKkzB,EAAEt2B,KAAK02B,QAAQz4B,GAAGg4B,EAA6R,SAASU,KAA6B,SAASC,EAAEhsB,EAAEC,EAAE5M,GAAG+B,KAAKw2B,MAAM5rB,EAAE5K,KAAKy2B,QAAQ5rB,EAAE7K,KAAKoD,KAAKkzB,EAAEt2B,KAAK02B,QAAQz4B,GAAGg4B,EAA3YM,EAAE/2B,UAAUq3B,iBAAiB,GAAGN,EAAE/2B,UAAUs3B,SAAS,SAASlsB,EAAEC,GAAG,GAAG,iBAAkBD,GAAG,mBAAoBA,GAAG,MAAMA,EAAE,MAAM3G,MAAM+xB,EAAE,KAAKh2B,KAAK02B,QAAQL,gBAAgBr2B,KAAK4K,EAAEC,EAAE,aAAa0rB,EAAE/2B,UAAUu3B,YAAY,SAASnsB,GAAG5K,KAAK02B,QAAQP,mBAAmBn2B,KAAK4K,EAAE,gBAA8B+rB,EAAEn3B,UAAU+2B,EAAE/2B,UAAsF,IAAIw3B,EAAEJ,EAAEp3B,UAAU,IAAIm3B,EAC/eK,EAAEjrB,YAAY6qB,EAAE/4B,EAAEm5B,EAAET,EAAE/2B,WAAWw3B,EAAEC,sBAAqB,EAAG,IAAIC,EAAE,CAACC,QAAQ,MAAMC,EAAE94B,OAAOkB,UAAUC,eAAe43B,EAAE,CAACl4B,KAAI,EAAGm4B,KAAI,EAAGC,QAAO,EAAGC,UAAS,GACtJ,SAASC,EAAE7sB,EAAEC,EAAE5M,GAAG,IAAI0E,EAAEzE,EAAE,GAAGyN,EAAE,KAAKJ,EAAE,KAAK,GAAG,MAAMV,EAAE,IAAIlI,UAAK,IAASkI,EAAEysB,MAAM/rB,EAAEV,EAAEysB,UAAK,IAASzsB,EAAE1L,MAAMwM,EAAE,GAAGd,EAAE1L,KAAK0L,EAAEusB,EAAEr5B,KAAK8M,EAAElI,KAAK00B,EAAE53B,eAAekD,KAAKzE,EAAEyE,GAAGkI,EAAElI,IAAI,IAAI2I,EAAErJ,UAAUZ,OAAO,EAAE,GAAG,IAAIiK,EAAEpN,EAAEw5B,SAASz5B,OAAO,GAAG,EAAEqN,EAAE,CAAC,IAAI,IAAIJ,EAAEU,MAAMN,GAAGjM,EAAE,EAAEA,EAAEiM,EAAEjM,IAAI6L,EAAE7L,GAAG4C,UAAU5C,EAAE,GAAGnB,EAAEw5B,SAASxsB,EAAE,GAAGN,GAAGA,EAAE+sB,aAAa,IAAIh1B,KAAK2I,EAAEV,EAAE+sB,kBAAe,IAASz5B,EAAEyE,KAAKzE,EAAEyE,GAAG2I,EAAE3I,IAAI,MAAM,CAACi1B,SAAS55B,EAAEmH,KAAKyF,EAAEzL,IAAIwM,EAAE2rB,IAAI/rB,EAAEirB,MAAMt4B,EAAE25B,OAAOX,EAAEC,SACxU,SAASW,EAAEltB,GAAG,MAAM,iBAAkBA,GAAG,OAAOA,GAAGA,EAAEgtB,WAAW55B,EAAqG,IAAIiZ,EAAE,OAAO,SAAS8gB,EAAEntB,EAAEC,GAAG,MAAM,iBAAkBD,GAAG,OAAOA,GAAG,MAAMA,EAAEzL,IAA7K,SAAgByL,GAAG,IAAIC,EAAE,CAAC,IAAI,KAAK,IAAI,MAAM,MAAM,IAAID,EAAE0G,QAAQ,SAAQ,SAAS1G,GAAG,OAAOC,EAAED,MAAmFupB,CAAO,GAAGvpB,EAAEzL,KAAK0L,EAAE9K,SAAS,IAC5W,SAASi4B,EAAEptB,EAAEC,EAAE5M,EAAE0E,EAAEzE,GAAG,IAAIyN,SAASf,EAAK,cAAce,GAAG,YAAYA,IAAEf,EAAE,MAAK,IAAIW,GAAE,EAAG,GAAG,OAAOX,EAAEW,GAAE,OAAQ,OAAOI,GAAG,IAAK,SAAS,IAAK,SAASJ,GAAE,EAAG,MAAM,IAAK,SAAS,OAAOX,EAAEgtB,UAAU,KAAK55B,EAAE,KAAK0B,EAAE6L,GAAE,GAAI,GAAGA,EAAE,OAAWrN,EAAEA,EAANqN,EAAEX,GAASA,EAAE,KAAKjI,EAAE,IAAIo1B,EAAExsB,EAAE,GAAG5I,EAAEiJ,MAAMC,QAAQ3N,IAAID,EAAE,GAAG,MAAM2M,IAAI3M,EAAE2M,EAAE0G,QAAQ2F,EAAE,OAAO,KAAK+gB,EAAE95B,EAAE2M,EAAE5M,EAAE,IAAG,SAAS2M,GAAG,OAAOA,MAAK,MAAM1M,IAAI45B,EAAE55B,KAAKA,EAD/W,SAAW0M,EAAEC,GAAG,MAAM,CAAC+sB,SAAS55B,EAAEmH,KAAKyF,EAAEzF,KAAKhG,IAAI0L,EAAEysB,IAAI1sB,EAAE0sB,IAAId,MAAM5rB,EAAE4rB,MAAMqB,OAAOjtB,EAAEitB,QAC4RI,CAAE/5B,EAAED,IAAIC,EAAEiB,KAAKoM,GAAGA,EAAEpM,MAAMjB,EAAEiB,IAAI,IAAI,GAAGjB,EAAEiB,KAAKmS,QAAQ2F,EAAE,OAAO,KAAKrM,IAAIC,EAAEtJ,KAAKrD,IAAI,EAAyB,GAAvBqN,EAAE,EAAE5I,EAAE,KAAKA,EAAE,IAAIA,EAAE,IAAOiJ,MAAMC,QAAQjB,GAAG,IAAI,IAAIU,EACzf,EAAEA,EAAEV,EAAEvJ,OAAOiK,IAAI,CAAQ,IAAIJ,EAAEvI,EAAEo1B,EAAfpsB,EAAEf,EAAEU,GAAeA,GAAGC,GAAGysB,EAAErsB,EAAEd,EAAE5M,EAAEiN,EAAEhN,QAAQ,GAAU,mBAAPgN,EAPW,SAAWN,GAAG,OAAG,OAAOA,GAAG,iBAAkBA,EAAS,KAAsC,mBAAjCA,EAAEuqB,GAAGvqB,EAAEuqB,IAAIvqB,EAAE,eAA0CA,EAAE,KAO7HstB,CAAEttB,IAAyB,IAAIA,EAAEM,EAAEnN,KAAK6M,GAAGU,EAAE,IAAIK,EAAEf,EAAE+O,QAAQyD,MAA6B7R,GAAGysB,EAA1BrsB,EAAEA,EAAE9M,MAA0BgM,EAAE5M,EAAtBiN,EAAEvI,EAAEo1B,EAAEpsB,EAAEL,KAAkBpN,QAAQ,GAAG,WAAWyN,EAAE,MAAMd,EAAE,GAAGD,EAAE3G,MAAM+xB,EAAE,GAAG,oBAAoBnrB,EAAE,qBAAqBvM,OAAOkH,KAAKoF,GAAG3J,KAAK,MAAM,IAAI4J,IAAI,OAAOU,EAAE,SAAS4sB,EAAEvtB,EAAEC,EAAE5M,GAAG,GAAG,MAAM2M,EAAE,OAAOA,EAAE,IAAIjI,EAAE,GAAGzE,EAAE,EAAmD,OAAjD85B,EAAEptB,EAAEjI,EAAE,GAAG,IAAG,SAASiI,GAAG,OAAOC,EAAE9M,KAAKE,EAAE2M,EAAE1M,QAAcyE,EAC1Z,SAASy1B,EAAExtB,GAAG,IAAI,IAAIA,EAAEytB,QAAQ,CAAC,IAAIxtB,EAAED,EAAE0tB,QAAQztB,EAAEA,IAAID,EAAEytB,QAAQ,EAAEztB,EAAE0tB,QAAQztB,EAAEA,EAAEQ,MAAK,SAASR,GAAG,IAAID,EAAEytB,UAAUxtB,EAAEA,EAAE7E,QAAQ4E,EAAEytB,QAAQ,EAAEztB,EAAE0tB,QAAQztB,MAAI,SAASA,GAAG,IAAID,EAAEytB,UAAUztB,EAAEytB,QAAQ,EAAEztB,EAAE0tB,QAAQztB,MAAK,GAAG,IAAID,EAAEytB,QAAQ,OAAOztB,EAAE0tB,QAAQ,MAAM1tB,EAAE0tB,QAAS,IAAI5qB,EAAE,CAACypB,QAAQ,MAAM,SAASoB,IAAI,IAAI3tB,EAAE8C,EAAEypB,QAAQ,GAAG,OAAOvsB,EAAE,MAAM3G,MAAM+xB,EAAE,MAAM,OAAOprB,EAAE,IAAI4tB,EAAE,CAACC,WAAW,GAAGC,EAAE,CAACC,uBAAuBjrB,EAAEkrB,wBAAwBJ,EAAEK,kBAAkB3B,EAAE4B,qBAAqB,CAAC3B,SAAQ,GAAIrX,OAAOjiB,GACreH,EAAQq7B,SAAS,CAAC94B,IAAIk4B,EAAE1yB,QAAQ,SAASmF,EAAEC,EAAE5M,GAAGk6B,EAAEvtB,GAAE,WAAWC,EAAE7I,MAAMhC,KAAKiC,aAAYhE,IAAI+6B,MAAM,SAASpuB,GAAG,IAAIC,EAAE,EAAuB,OAArBstB,EAAEvtB,GAAE,WAAWC,OAAaA,GAAGklB,QAAQ,SAASnlB,GAAG,OAAOutB,EAAEvtB,GAAE,SAASA,GAAG,OAAOA,MAAK,IAAIquB,KAAK,SAASruB,GAAG,IAAIktB,EAAEltB,GAAG,MAAM3G,MAAM+xB,EAAE,MAAM,OAAOprB,IAAIlN,EAAQw7B,UAAU3C,EAAE74B,EAAQy7B,cAAcvC,EAAEl5B,EAAQ07B,mDAAmDV,EAChXh7B,EAAQ27B,aAAa,SAASzuB,EAAEC,EAAE5M,GAAG,GAAG,MAAO2M,EAAc,MAAM3G,MAAM+xB,EAAE,IAAIprB,IAAI,IAAIjI,EAAE9E,EAAE,GAAG+M,EAAE4rB,OAAOt4B,EAAE0M,EAAEzL,IAAIwM,EAAEf,EAAE0sB,IAAI/rB,EAAEX,EAAEitB,OAAO,GAAG,MAAMhtB,EAAE,CAAoE,QAAnE,IAASA,EAAEysB,MAAM3rB,EAAEd,EAAEysB,IAAI/rB,EAAE2rB,EAAEC,cAAS,IAAStsB,EAAE1L,MAAMjB,EAAE,GAAG2M,EAAE1L,KAAQyL,EAAEzF,MAAMyF,EAAEzF,KAAKwyB,aAAa,IAAIrsB,EAAEV,EAAEzF,KAAKwyB,aAAa,IAAIzsB,KAAKL,EAAEusB,EAAEr5B,KAAK8M,EAAEK,KAAKmsB,EAAE53B,eAAeyL,KAAKvI,EAAEuI,QAAG,IAASL,EAAEK,SAAI,IAASI,EAAEA,EAAEJ,GAAGL,EAAEK,IAAI,IAAIA,EAAEjJ,UAAUZ,OAAO,EAAE,GAAG,IAAI6J,EAAEvI,EAAE+0B,SAASz5B,OAAO,GAAG,EAAEiN,EAAE,CAACI,EAAEM,MAAMV,GAAG,IAAI,IAAI7L,EAAE,EAAEA,EAAE6L,EAAE7L,IAAIiM,EAAEjM,GAAG4C,UAAU5C,EAAE,GAAGsD,EAAE+0B,SAASpsB,EAAE,MAAM,CAACssB,SAAS55B,EAAEmH,KAAKyF,EAAEzF,KACxfhG,IAAIjB,EAAEo5B,IAAI3rB,EAAE6qB,MAAM7zB,EAAEk1B,OAAOtsB,IAAI7N,EAAQ47B,cAAc,SAAS1uB,EAAEC,GAA8K,YAA3K,IAASA,IAAIA,EAAE,OAAMD,EAAE,CAACgtB,SAASl5B,EAAE66B,sBAAsB1uB,EAAE2uB,cAAc5uB,EAAE6uB,eAAe7uB,EAAE8uB,aAAa,EAAEC,SAAS,KAAKC,SAAS,OAAQD,SAAS,CAAC/B,SAASrC,EAAEsE,SAASjvB,GAAUA,EAAEgvB,SAAShvB,GAAGlN,EAAQsH,cAAcyyB,EAAE/5B,EAAQo8B,cAAc,SAASlvB,GAAG,IAAIC,EAAE4sB,EAAEr4B,KAAK,KAAKwL,GAAY,OAATC,EAAE1F,KAAKyF,EAASC,GAAGnN,EAAQq8B,UAAU,WAAW,MAAM,CAAC5C,QAAQ,OAAOz5B,EAAQs8B,WAAW,SAASpvB,GAAG,MAAM,CAACgtB,SAAS94B,EAAEm7B,OAAOrvB,IAAIlN,EAAQw8B,eAAepC,EAC3ep6B,EAAQy8B,KAAK,SAASvvB,GAAG,MAAM,CAACgtB,SAASxmB,EAAEgpB,SAAS,CAAC/B,SAAS,EAAEC,QAAQ1tB,GAAGyvB,MAAMjC,IAAI16B,EAAQ+D,KAAK,SAASmJ,EAAEC,GAAG,MAAM,CAAC+sB,SAASlC,EAAEvwB,KAAKyF,EAAE2G,aAAQ,IAAS1G,EAAE,KAAKA,IAAInN,EAAQ48B,6BAA6B,SAAS1vB,EAAEC,GAAG,MAAM,CAAC0vB,YAAY1vB,EAAE2vB,QAAQ5vB,EAAE6vB,8BAA8B,KAAKC,gCAAgC,OAAOh9B,EAAQi9B,yBAAyB,SAAS/vB,GAAG,OAAO2tB,IAAIqC,gBAAgBhwB,IACzYlN,EAAQm9B,yBAAyB,SAASjwB,GAAG,IAAIC,EAAE2tB,EAAEC,WAAWD,EAAEC,WAAW,EAAE,IAAI7tB,IAAJ,QAAgB4tB,EAAEC,WAAW5tB,IAAInN,EAAQo9B,0BAA0B,SAASlwB,GAAG,OAAO2tB,IAAIwC,iBAAiBnwB,IAAIlN,EAAQs9B,0BAA0B,SAASpwB,EAAEC,EAAE5M,GAAG,OAAOs6B,IAAI0C,iBAAiBrwB,EAAEC,EAAE5M,IAAIP,EAAQw9B,6BAA6B,WAAW,OAAO3C,IAAI4C,uBAAuBz9B,EAAQ09B,uBAAuB,WAAW,OAAO7C,IAAI8C,iBAAiB39B,EAAQ49B,YAAY,SAAS1wB,EAAEC,GAAG,OAAO0tB,IAAI+C,YAAY1wB,EAAEC,IACvenN,EAAQ69B,WAAW,SAAS3wB,EAAEC,GAAG,OAAO0tB,IAAIgD,WAAW3wB,EAAEC,IAAInN,EAAQ89B,cAAc,aAAa99B,EAAQ+9B,UAAU,SAAS7wB,EAAEC,GAAG,OAAO0tB,IAAIkD,UAAU7wB,EAAEC,IAAInN,EAAQg+B,oBAAoB,SAAS9wB,EAAEC,EAAE5M,GAAG,OAAOs6B,IAAImD,oBAAoB9wB,EAAEC,EAAE5M,IAAIP,EAAQi+B,gBAAgB,SAAS/wB,EAAEC,GAAG,OAAO0tB,IAAIoD,gBAAgB/wB,EAAEC,IAAInN,EAAQk+B,QAAQ,SAAShxB,EAAEC,GAAG,OAAO0tB,IAAIqD,QAAQhxB,EAAEC,IAAInN,EAAQm+B,WAAW,SAASjxB,EAAEC,EAAE5M,GAAG,OAAOs6B,IAAIsD,WAAWjxB,EAAEC,EAAE5M,IAAIP,EAAQo+B,OAAO,SAASlxB,GAAG,OAAO2tB,IAAIuD,OAAOlxB,IAAIlN,EAAQq+B,SAAS,SAASnxB,GAAG,OAAO2tB,IAAIwD,SAASnxB,IAC/gBlN,EAAQ0S,QAAQ,iC;;;;;;;;GCdH,IAAI4rB,EAAGp8B,EAAQ,GAAS5B,EAAE4B,EAAQ,IAAiB81B,EAAE91B,EAAQ,IAAa,SAASk2B,EAAElrB,GAAG,IAAI,IAAIC,EAAE,yDAAyDD,EAAE3M,EAAE,EAAEA,EAAEgE,UAAUZ,OAAOpD,IAAI4M,GAAG,WAAWpK,mBAAmBwB,UAAUhE,IAAI,MAAM,yBAAyB2M,EAAE,WAAWC,EAAE,iHAAiH,IAAImxB,EAAG,MAAM/3B,MAAM6xB,EAAE,MAAM,IAAImG,EAAG,IAAIC,IAAIC,EAAG,GAAG,SAASC,EAAGxxB,EAAEC,GAAGwxB,EAAGzxB,EAAEC,GAAGwxB,EAAGzxB,EAAE,UAAUC,GAC3e,SAASwxB,EAAGzxB,EAAEC,GAAW,IAARsxB,EAAGvxB,GAAGC,EAAMD,EAAE,EAAEA,EAAEC,EAAExJ,OAAOuJ,IAAIqxB,EAAG9e,IAAItS,EAAED,IACzD,IAAI0xB,IAAK,oBAAqB16B,aAAQ,IAAqBA,OAAOC,eAAU,IAAqBD,OAAOC,SAASmD,eAAeu3B,EAAG,8VAA8VC,EAAGl+B,OAAOkB,UAAUC,eACrfg9B,EAAG,GAAGC,EAAG,GAC+M,SAASzG,EAAErrB,EAAEC,EAAE5M,EAAEC,EAAEyE,EAAEuI,EAAEI,GAAGtL,KAAK28B,gBAAgB,IAAI9xB,GAAG,IAAIA,GAAG,IAAIA,EAAE7K,KAAK48B,cAAc1+B,EAAE8B,KAAK68B,mBAAmBl6B,EAAE3C,KAAK88B,gBAAgB7+B,EAAE+B,KAAK+8B,aAAanyB,EAAE5K,KAAKmF,KAAK0F,EAAE7K,KAAKg9B,YAAY9xB,EAAElL,KAAKi9B,kBAAkB3xB,EAAE,IAAIirB,EAAE,GACnb,uIAAuIxlB,MAAM,KAAKtL,SAAQ,SAASmF,GAAG2rB,EAAE3rB,GAAG,IAAIqrB,EAAErrB,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,MAAM,CAAC,CAAC,gBAAgB,kBAAkB,CAAC,YAAY,SAAS,CAAC,UAAU,OAAO,CAAC,YAAY,eAAenF,SAAQ,SAASmF,GAAG,IAAIC,EAAED,EAAE,GAAG2rB,EAAE1rB,GAAG,IAAIorB,EAAEprB,EAAE,GAAE,EAAGD,EAAE,GAAG,MAAK,GAAG,MAAM,CAAC,kBAAkB,YAAY,aAAa,SAASnF,SAAQ,SAASmF,GAAG2rB,EAAE3rB,GAAG,IAAIqrB,EAAErrB,EAAE,GAAE,EAAGA,EAAE+J,cAAc,MAAK,GAAG,MACve,CAAC,cAAc,4BAA4B,YAAY,iBAAiBlP,SAAQ,SAASmF,GAAG2rB,EAAE3rB,GAAG,IAAIqrB,EAAErrB,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,MAAM,8OAA8OmG,MAAM,KAAKtL,SAAQ,SAASmF,GAAG2rB,EAAE3rB,GAAG,IAAIqrB,EAAErrB,EAAE,GAAE,EAAGA,EAAE+J,cAAc,MAAK,GAAG,MACrb,CAAC,UAAU,WAAW,QAAQ,YAAYlP,SAAQ,SAASmF,GAAG2rB,EAAE3rB,GAAG,IAAIqrB,EAAErrB,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,MAAM,CAAC,UAAU,YAAYnF,SAAQ,SAASmF,GAAG2rB,EAAE3rB,GAAG,IAAIqrB,EAAErrB,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,MAAM,CAAC,OAAO,OAAO,OAAO,QAAQnF,SAAQ,SAASmF,GAAG2rB,EAAE3rB,GAAG,IAAIqrB,EAAErrB,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,MAAM,CAAC,UAAU,SAASnF,SAAQ,SAASmF,GAAG2rB,EAAE3rB,GAAG,IAAIqrB,EAAErrB,EAAE,GAAE,EAAGA,EAAE+J,cAAc,MAAK,GAAG,MAAM,IAAIuoB,EAAG,gBAAgB,SAASC,EAAGvyB,GAAG,OAAOA,EAAE,GAAGwyB,cAI3Y,SAASC,EAAGzyB,EAAEC,EAAE5M,EAAEC,GAAG,IAAIyE,EAAE4zB,EAAE92B,eAAeoL,GAAG0rB,EAAE1rB,GAAG,MAAW,OAAOlI,EAAE,IAAIA,EAAEwC,MAAKjH,IAAO,EAAE2M,EAAExJ,SAAS,MAAMwJ,EAAE,IAAI,MAAMA,EAAE,MAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,QAPnJ,SAAYD,EAAEC,EAAE5M,EAAEC,GAAG,GAAG,MAAO2M,GADgG,SAAYD,EAAEC,EAAE5M,EAAEC,GAAG,GAAG,OAAOD,GAAG,IAAIA,EAAEkH,KAAK,OAAM,EAAG,cAAc0F,GAAG,IAAK,WAAW,IAAK,SAAS,OAAM,EAAG,IAAK,UAAU,OAAG3M,IAAc,OAAOD,GAASA,EAAE0+B,gBAAmD,WAAnC/xB,EAAEA,EAAE+J,cAAc7I,MAAM,EAAE,KAAsB,UAAUlB,GAAE,QAAQ,OAAM,GAC/T0yB,CAAG1yB,EAAEC,EAAE5M,EAAEC,GAAG,OAAM,EAAG,GAAGA,EAAE,OAAM,EAAG,GAAG,OAAOD,EAAE,OAAOA,EAAEkH,MAAM,KAAK,EAAE,OAAO0F,EAAE,KAAK,EAAE,OAAM,IAAKA,EAAE,KAAK,EAAE,OAAOmH,MAAMnH,GAAG,KAAK,EAAE,OAAOmH,MAAMnH,IAAI,EAAEA,EAAE,OAAM,EAOrD0yB,CAAG1yB,EAAE5M,EAAE0E,EAAEzE,KAAKD,EAAE,MAAMC,GAAG,OAAOyE,EARpL,SAAYiI,GAAG,QAAG4xB,EAAGz+B,KAAK2+B,EAAG9xB,KAAe4xB,EAAGz+B,KAAK0+B,EAAG7xB,KAAe2xB,EAAGvvB,KAAKpC,GAAU8xB,EAAG9xB,IAAG,GAAG6xB,EAAG7xB,IAAG,GAAS,IAQsE4yB,CAAG3yB,KAAK,OAAO5M,EAAE2M,EAAE6yB,gBAAgB5yB,GAAGD,EAAElF,aAAamF,EAAE,GAAG5M,IAAI0E,EAAEm6B,gBAAgBlyB,EAAEjI,EAAEo6B,cAAc,OAAO9+B,EAAE,IAAI0E,EAAEwC,MAAQ,GAAGlH,GAAG4M,EAAElI,EAAEi6B,cAAc1+B,EAAEyE,EAAEk6B,mBAAmB,OAAO5+B,EAAE2M,EAAE6yB,gBAAgB5yB,IAAa5M,EAAE,KAAX0E,EAAEA,EAAEwC,OAAc,IAAIxC,IAAG,IAAK1E,EAAE,GAAG,GAAGA,EAAEC,EAAE0M,EAAE8yB,eAAex/B,EAAE2M,EAAE5M,GAAG2M,EAAElF,aAAamF,EAAE5M,MAH5d,0jCAA0jC8S,MAAM,KAAKtL,SAAQ,SAASmF,GAAG,IAAIC,EAAED,EAAE0G,QAAQ4rB,EACzmCC,GAAI5G,EAAE1rB,GAAG,IAAIorB,EAAEprB,EAAE,GAAE,EAAGD,EAAE,MAAK,GAAG,MAAM,2EAA2EmG,MAAM,KAAKtL,SAAQ,SAASmF,GAAG,IAAIC,EAAED,EAAE0G,QAAQ4rB,EAAGC,GAAI5G,EAAE1rB,GAAG,IAAIorB,EAAEprB,EAAE,GAAE,EAAGD,EAAE,gCAA+B,GAAG,MAAM,CAAC,WAAW,WAAW,aAAanF,SAAQ,SAASmF,GAAG,IAAIC,EAAED,EAAE0G,QAAQ4rB,EAAGC,GAAI5G,EAAE1rB,GAAG,IAAIorB,EAAEprB,EAAE,GAAE,EAAGD,EAAE,wCAAuC,GAAG,MAAM,CAAC,WAAW,eAAenF,SAAQ,SAASmF,GAAG2rB,EAAE3rB,GAAG,IAAIqrB,EAAErrB,EAAE,GAAE,EAAGA,EAAE+J,cAAc,MAAK,GAAG,MAC/c4hB,EAAEoH,UAAU,IAAI1H,EAAE,YAAY,GAAE,EAAG,aAAa,gCAA+B,GAAG,GAAI,CAAC,MAAM,OAAO,SAAS,cAAcxwB,SAAQ,SAASmF,GAAG2rB,EAAE3rB,GAAG,IAAIqrB,EAAErrB,EAAE,GAAE,EAAGA,EAAE+J,cAAc,MAAK,GAAG,MAEzL,IAAIipB,EAAG5B,EAAG5C,mDAAmDyE,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MACvM,GAAG,mBAAoBjgC,QAAQA,OAAOk3B,IAAI,CAAC,IAAIc,EAAEh4B,OAAOk3B,IAAIgI,EAAGlH,EAAE,iBAAiBmH,EAAGnH,EAAE,gBAAgBoH,EAAGpH,EAAE,kBAAkBqH,EAAGrH,EAAE,qBAAqBsH,EAAGtH,EAAE,kBAAkBuH,EAAGvH,EAAE,kBAAkBwH,EAAGxH,EAAE,iBAAiByH,EAAGzH,EAAE,qBAAqB0H,EAAG1H,EAAE,kBAAkB2H,EAAG3H,EAAE,uBAAuB4H,EAAG5H,EAAE,cAAc6H,EAAG7H,EAAE,cAAcA,EAAE,eAAe8H,EAAG9H,EAAE,mBAAmB+H,EAAG/H,EAAE,0BAA0BgI,EAAGhI,EAAE,mBAAmBiI,EAAGjI,EAAE,uBAAuB,IAC3UkI,EAD+UC,EAAG,mBAAoBngC,QAAQA,OAAOo3B,SACrf,SAASgJ,EAAGn0B,GAAG,OAAG,OAAOA,GAAG,iBAAkBA,EAAS,KAAwC,mBAAnCA,EAAEk0B,GAAIl0B,EAAEk0B,IAAKl0B,EAAE,eAA0CA,EAAE,KAAY,SAASo0B,EAAGp0B,GAAG,QAAG,IAASi0B,EAAG,IAAI,MAAM56B,QAAS,MAAMhG,GAAG,IAAI4M,EAAE5M,EAAEghC,MAAMzuB,OAAOC,MAAM,gBAAgBouB,EAAGh0B,GAAGA,EAAE,IAAI,GAAG,MAAM,KAAKg0B,EAAGj0B,EAAE,IAAIs0B,GAAG,EAC9Q,SAASC,EAAGv0B,EAAEC,GAAG,IAAID,GAAGs0B,EAAG,MAAM,GAAGA,GAAG,EAAG,IAAIjhC,EAAEgG,MAAMm7B,kBAAkBn7B,MAAMm7B,uBAAkB,EAAO,IAAI,GAAGv0B,EAAE,GAAGA,EAAE,WAAW,MAAM5G,SAAU3F,OAAOC,eAAesM,EAAErL,UAAU,QAAQ,CAACwU,IAAI,WAAW,MAAM/P,WAAY,iBAAkBooB,SAASA,QAAQgT,UAAU,CAAC,IAAIhT,QAAQgT,UAAUx0B,EAAE,IAAI,MAAMc,GAAG,IAAIzN,EAAEyN,EAAE0gB,QAAQgT,UAAUz0B,EAAE,GAAGC,OAAO,CAAC,IAAIA,EAAE9M,OAAO,MAAM4N,GAAGzN,EAAEyN,EAAEf,EAAE7M,KAAK8M,EAAErL,eAAe,CAAC,IAAI,MAAMyE,QAAS,MAAM0H,GAAGzN,EAAEyN,EAAEf,KAAK,MAAMe,GAAG,GAAGA,GAAGzN,GAAG,iBAAkByN,EAAEszB,MAAM,CAAC,IAAI,IAAIt8B,EAAEgJ,EAAEszB,MAAMluB,MAAM,MACnf7F,EAAEhN,EAAE+gC,MAAMluB,MAAM,MAAMzF,EAAE3I,EAAEtB,OAAO,EAAEkK,EAAEL,EAAE7J,OAAO,EAAE,GAAGiK,GAAG,GAAGC,GAAG5I,EAAE2I,KAAKJ,EAAEK,IAAIA,IAAI,KAAK,GAAGD,GAAG,GAAGC,EAAED,IAAIC,IAAI,GAAG5I,EAAE2I,KAAKJ,EAAEK,GAAG,CAAC,GAAG,IAAID,GAAG,IAAIC,EAAG,GAAG,GAAGD,IAAQ,IAAJC,GAAS5I,EAAE2I,KAAKJ,EAAEK,GAAG,MAAM,KAAK5I,EAAE2I,GAAGgG,QAAQ,WAAW,cAAc,GAAGhG,GAAG,GAAGC,GAAG,QAD3H,QAC2I2zB,GAAG,EAAGj7B,MAAMm7B,kBAAkBnhC,EAAE,OAAO2M,EAAEA,EAAEA,EAAE00B,aAAa10B,EAAEzM,KAAK,IAAI6gC,EAAGp0B,GAAG,GAC7T,SAAS20B,EAAG30B,GAAG,OAAOA,EAAE40B,KAAK,KAAK,EAAE,OAAOR,EAAGp0B,EAAEzF,MAAM,KAAK,GAAG,OAAO65B,EAAG,QAAQ,KAAK,GAAG,OAAOA,EAAG,YAAY,KAAK,GAAG,OAAOA,EAAG,gBAAgB,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,OAAOp0B,EAAEu0B,EAAGv0B,EAAEzF,MAAK,GAAM,KAAK,GAAG,OAAOyF,EAAEu0B,EAAGv0B,EAAEzF,KAAK80B,QAAO,GAAM,KAAK,EAAE,OAAOrvB,EAAEu0B,EAAGv0B,EAAEzF,MAAK,GAAM,QAAQ,MAAM,IACrR,SAASs6B,EAAG70B,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,mBAAoBA,EAAE,OAAOA,EAAE00B,aAAa10B,EAAEzM,MAAM,KAAK,GAAG,iBAAkByM,EAAE,OAAOA,EAAE,OAAOA,GAAG,KAAKmzB,EAAG,MAAM,WAAW,KAAKD,EAAG,MAAM,SAAS,KAAKG,EAAG,MAAM,WAAW,KAAKD,EAAG,MAAM,aAAa,KAAKK,EAAG,MAAM,WAAW,KAAKC,EAAG,MAAM,eAAe,GAAG,iBAAkB1zB,EAAE,OAAOA,EAAEgtB,UAAU,KAAKuG,EAAG,OAAOvzB,EAAE00B,aAAa,WAAW,YAAY,KAAKpB,EAAG,OAAOtzB,EAAEivB,SAASyF,aAAa,WAAW,YAAY,KAAKlB,EAAG,IAAIvzB,EAAED,EAAEqvB,OACnd,OAD0dpvB,EAAEA,EAAEy0B,aAAaz0B,EAAE1M,MAAM,GAC5eyM,EAAE00B,cAAc,KAAKz0B,EAAE,cAAcA,EAAE,IAAI,cAAc,KAAK0zB,EAAG,OAAOkB,EAAG70B,EAAEzF,MAAM,KAAKq5B,EAAG3zB,EAAED,EAAEwvB,SAASxvB,EAAEA,EAAEyvB,MAAM,IAAI,OAAOoF,EAAG70B,EAAEC,IAAI,MAAM5M,KAAK,OAAO,KAAK,SAASyhC,EAAG90B,GAAG,cAAcA,GAAG,IAAK,UAAU,IAAK,SAAS,IAAK,SAAS,IAAK,SAAS,IAAK,YAAY,OAAOA,EAAE,QAAQ,MAAM,IAAI,SAAS+0B,EAAG/0B,GAAG,IAAIC,EAAED,EAAEzF,KAAK,OAAOyF,EAAEA,EAAEg1B,WAAW,UAAUh1B,EAAE+J,gBAAgB,aAAa9J,GAAG,UAAUA,GAE7X,SAASg1B,EAAGj1B,GAAGA,EAAEk1B,gBAAgBl1B,EAAEk1B,cADvD,SAAYl1B,GAAG,IAAIC,EAAE80B,EAAG/0B,GAAG,UAAU,QAAQ3M,EAAEK,OAAOyhC,yBAAyBn1B,EAAEmB,YAAYvM,UAAUqL,GAAG3M,EAAE,GAAG0M,EAAEC,GAAG,IAAID,EAAEnL,eAAeoL,SAAI,IAAqB5M,GAAG,mBAAoBA,EAAEQ,KAAK,mBAAoBR,EAAE+V,IAAI,CAAC,IAAIrR,EAAE1E,EAAEQ,IAAIyM,EAAEjN,EAAE+V,IAAiL,OAA7K1V,OAAOC,eAAeqM,EAAEC,EAAE,CAACm1B,cAAa,EAAGvhC,IAAI,WAAW,OAAOkE,EAAE5E,KAAKiC,OAAOgU,IAAI,SAASpJ,GAAG1M,EAAE,GAAG0M,EAAEM,EAAEnN,KAAKiC,KAAK4K,MAAMtM,OAAOC,eAAeqM,EAAEC,EAAE,CAACrM,WAAWP,EAAEO,aAAmB,CAACyhC,SAAS,WAAW,OAAO/hC,GAAGgiC,SAAS,SAASt1B,GAAG1M,EAAE,GAAG0M,GAAGu1B,aAAa,WAAWv1B,EAAEk1B,cACxf,YAAYl1B,EAAEC,MAAuDu1B,CAAGx1B,IAAI,SAASy1B,EAAGz1B,GAAG,IAAIA,EAAE,OAAM,EAAG,IAAIC,EAAED,EAAEk1B,cAAc,IAAIj1B,EAAE,OAAM,EAAG,IAAI5M,EAAE4M,EAAEo1B,WAAe/hC,EAAE,GAAqD,OAAlD0M,IAAI1M,EAAEyhC,EAAG/0B,GAAGA,EAAE01B,QAAQ,OAAO,QAAQ11B,EAAE/L,QAAO+L,EAAE1M,KAAaD,IAAG4M,EAAEq1B,SAASt1B,IAAG,GAAO,SAAS21B,EAAG31B,GAAwD,QAAG,KAAxDA,EAAEA,IAAI,oBAAqB/I,SAASA,cAAS,IAAkC,OAAO,KAAK,IAAI,OAAO+I,EAAE41B,eAAe51B,EAAEP,KAAK,MAAMQ,GAAG,OAAOD,EAAEP,MAC/Z,SAASo2B,EAAG71B,EAAEC,GAAG,IAAI5M,EAAE4M,EAAEy1B,QAAQ,OAAOtiC,EAAE,GAAG6M,EAAE,CAAC61B,oBAAe,EAAOC,kBAAa,EAAO9hC,WAAM,EAAOyhC,QAAQ,MAAMriC,EAAEA,EAAE2M,EAAEg2B,cAAcC,iBAAiB,SAASC,EAAGl2B,EAAEC,GAAG,IAAI5M,EAAE,MAAM4M,EAAE81B,aAAa,GAAG91B,EAAE81B,aAAaziC,EAAE,MAAM2M,EAAEy1B,QAAQz1B,EAAEy1B,QAAQz1B,EAAE61B,eAAeziC,EAAEyhC,EAAG,MAAM70B,EAAEhM,MAAMgM,EAAEhM,MAAMZ,GAAG2M,EAAEg2B,cAAc,CAACC,eAAe3iC,EAAE6iC,aAAa9iC,EAAE+iC,WAAW,aAAan2B,EAAE1F,MAAM,UAAU0F,EAAE1F,KAAK,MAAM0F,EAAEy1B,QAAQ,MAAMz1B,EAAEhM,OAAO,SAASoiC,GAAGr2B,EAAEC,GAAe,OAAZA,EAAEA,EAAEy1B,UAAiBjD,EAAGzyB,EAAE,UAAUC,GAAE,GAC3d,SAASq2B,GAAGt2B,EAAEC,GAAGo2B,GAAGr2B,EAAEC,GAAG,IAAI5M,EAAEyhC,EAAG70B,EAAEhM,OAAOX,EAAE2M,EAAE1F,KAAK,GAAG,MAAMlH,EAAK,WAAWC,GAAM,IAAID,GAAG,KAAK2M,EAAE/L,OAAO+L,EAAE/L,OAAOZ,KAAE2M,EAAE/L,MAAM,GAAGZ,GAAO2M,EAAE/L,QAAQ,GAAGZ,IAAI2M,EAAE/L,MAAM,GAAGZ,QAAQ,GAAG,WAAWC,GAAG,UAAUA,EAA8B,YAA3B0M,EAAE6yB,gBAAgB,SAAgB5yB,EAAEpL,eAAe,SAAS0hC,GAAGv2B,EAAEC,EAAE1F,KAAKlH,GAAG4M,EAAEpL,eAAe,iBAAiB0hC,GAAGv2B,EAAEC,EAAE1F,KAAKu6B,EAAG70B,EAAE81B,eAAe,MAAM91B,EAAEy1B,SAAS,MAAMz1B,EAAE61B,iBAAiB91B,EAAE81B,iBAAiB71B,EAAE61B,gBACnZ,SAASU,GAAGx2B,EAAEC,EAAE5M,GAAG,GAAG4M,EAAEpL,eAAe,UAAUoL,EAAEpL,eAAe,gBAAgB,CAAC,IAAIvB,EAAE2M,EAAE1F,KAAK,KAAK,WAAWjH,GAAG,UAAUA,QAAG,IAAS2M,EAAEhM,OAAO,OAAOgM,EAAEhM,OAAO,OAAOgM,EAAE,GAAGD,EAAEg2B,cAAcG,aAAa9iC,GAAG4M,IAAID,EAAE/L,QAAQ+L,EAAE/L,MAAMgM,GAAGD,EAAE+1B,aAAa91B,EAAW,MAAT5M,EAAE2M,EAAEzM,QAAcyM,EAAEzM,KAAK,IAAIyM,EAAE81B,iBAAiB91B,EAAEg2B,cAAcC,eAAe,KAAK5iC,IAAI2M,EAAEzM,KAAKF,GACvV,SAASkjC,GAAGv2B,EAAEC,EAAE5M,GAAM,WAAW4M,GAAG01B,EAAG31B,EAAEy2B,iBAAiBz2B,IAAE,MAAM3M,EAAE2M,EAAE+1B,aAAa,GAAG/1B,EAAEg2B,cAAcG,aAAan2B,EAAE+1B,eAAe,GAAG1iC,IAAI2M,EAAE+1B,aAAa,GAAG1iC,IAAwF,SAASqjC,GAAG12B,EAAEC,GAA6D,OAA1DD,EAAE5M,EAAE,CAAC05B,cAAS,GAAQ7sB,IAAMA,EAAlI,SAAYD,GAAG,IAAIC,EAAE,GAAuD,OAApDmxB,EAAGjD,SAAStzB,QAAQmF,GAAE,SAASA,GAAG,MAAMA,IAAIC,GAAGD,MAAYC,EAAiDsc,CAAGtc,EAAE6sB,aAAU9sB,EAAE8sB,SAAS7sB,GAASD,EACvU,SAAS22B,GAAG32B,EAAEC,EAAE5M,EAAEC,GAAe,GAAZ0M,EAAEA,EAAE1H,QAAW2H,EAAE,CAACA,EAAE,GAAG,IAAI,IAAIlI,EAAE,EAAEA,EAAE1E,EAAEoD,OAAOsB,IAAIkI,EAAE,IAAI5M,EAAE0E,KAAI,EAAG,IAAI1E,EAAE,EAAEA,EAAE2M,EAAEvJ,OAAOpD,IAAI0E,EAAEkI,EAAEpL,eAAe,IAAImL,EAAE3M,GAAGY,OAAO+L,EAAE3M,GAAGujC,WAAW7+B,IAAIiI,EAAE3M,GAAGujC,SAAS7+B,GAAGA,GAAGzE,IAAI0M,EAAE3M,GAAGwjC,iBAAgB,OAAQ,CAAmB,IAAlBxjC,EAAE,GAAGyhC,EAAGzhC,GAAG4M,EAAE,KAASlI,EAAE,EAAEA,EAAEiI,EAAEvJ,OAAOsB,IAAI,CAAC,GAAGiI,EAAEjI,GAAG9D,QAAQZ,EAAiD,OAA9C2M,EAAEjI,GAAG6+B,UAAS,OAAGtjC,IAAI0M,EAAEjI,GAAG8+B,iBAAgB,IAAW,OAAO52B,GAAGD,EAAEjI,GAAG++B,WAAW72B,EAAED,EAAEjI,IAAI,OAAOkI,IAAIA,EAAE22B,UAAS,IACpY,SAASrsB,GAAGvK,EAAEC,GAAG,GAAG,MAAMA,EAAE82B,wBAAwB,MAAM19B,MAAM6xB,EAAE,KAAK,OAAO93B,EAAE,GAAG6M,EAAE,CAAChM,WAAM,EAAO8hC,kBAAa,EAAOjJ,SAAS,GAAG9sB,EAAEg2B,cAAcG,eAAe,SAASa,GAAGh3B,EAAEC,GAAG,IAAI5M,EAAE4M,EAAEhM,MAAM,GAAG,MAAMZ,EAAE,CAA+B,GAA9BA,EAAE4M,EAAE6sB,SAAS7sB,EAAEA,EAAE81B,aAAgB,MAAM1iC,EAAE,CAAC,GAAG,MAAM4M,EAAE,MAAM5G,MAAM6xB,EAAE,KAAK,GAAGlqB,MAAMC,QAAQ5N,GAAG,CAAC,KAAK,GAAGA,EAAEoD,QAAQ,MAAM4C,MAAM6xB,EAAE,KAAK73B,EAAEA,EAAE,GAAG4M,EAAE5M,EAAE,MAAM4M,IAAIA,EAAE,IAAI5M,EAAE4M,EAAED,EAAEg2B,cAAc,CAACG,aAAarB,EAAGzhC,IAC/Y,SAAS4jC,GAAGj3B,EAAEC,GAAG,IAAI5M,EAAEyhC,EAAG70B,EAAEhM,OAAOX,EAAEwhC,EAAG70B,EAAE81B,cAAc,MAAM1iC,KAAIA,EAAE,GAAGA,KAAM2M,EAAE/L,QAAQ+L,EAAE/L,MAAMZ,GAAG,MAAM4M,EAAE81B,cAAc/1B,EAAE+1B,eAAe1iC,IAAI2M,EAAE+1B,aAAa1iC,IAAI,MAAMC,IAAI0M,EAAE+1B,aAAa,GAAGziC,GAAG,SAAS4jC,GAAGl3B,GAAG,IAAIC,EAAED,EAAEm3B,YAAYl3B,IAAID,EAAEg2B,cAAcG,cAAc,KAAKl2B,GAAG,OAAOA,IAAID,EAAE/L,MAAMgM,GAAG,IAAIm3B,GAAS,+BAATA,GAAwF,6BAC9X,SAASC,GAAGr3B,GAAG,OAAOA,GAAG,IAAK,MAAM,MAAM,6BAA6B,IAAK,OAAO,MAAM,qCAAqC,QAAQ,MAAM,gCAAgC,SAASs3B,GAAGt3B,EAAEC,GAAG,OAAO,MAAMD,GAAG,iCAAiCA,EAAEq3B,GAAGp3B,GAAG,+BAA+BD,GAAG,kBAAkBC,EAAE,+BAA+BD,EAC3U,IAAIu3B,GAAGC,GAAG,SAASx3B,GAAG,MAAM,oBAAqBy3B,OAAOA,MAAMC,wBAAwB,SAASz3B,EAAE5M,EAAEC,EAAEyE,GAAG0/B,MAAMC,yBAAwB,WAAW,OAAO13B,EAAEC,EAAE5M,OAAU2M,EAA5J,EAA+J,SAASA,EAAEC,GAAG,GAAGD,EAAE23B,eAAeP,IAAQ,cAAcp3B,EAAEA,EAAE43B,UAAU33B,MAAM,CAA2F,KAA1Fs3B,GAAGA,IAAItgC,SAASmD,cAAc,QAAUw9B,UAAU,QAAQ33B,EAAE2oB,UAAUzzB,WAAW,SAAa8K,EAAEs3B,GAAG59B,WAAWqG,EAAErG,YAAYqG,EAAEjG,YAAYiG,EAAErG,YAAY,KAAKsG,EAAEtG,YAAYqG,EAAEtG,YAAYuG,EAAEtG,gBACjb,SAASk+B,GAAG73B,EAAEC,GAAG,GAAGA,EAAE,CAAC,IAAI5M,EAAE2M,EAAErG,WAAW,GAAGtG,GAAGA,IAAI2M,EAAE83B,WAAW,IAAIzkC,EAAE0kC,SAAwB,YAAd1kC,EAAE2kC,UAAU/3B,GAAUD,EAAEm3B,YAAYl3B,EACrH,IAAIg4B,GAAG,CAACC,yBAAwB,EAAGC,mBAAkB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,SAAQ,EAAGC,cAAa,EAAGC,iBAAgB,EAAGC,aAAY,EAAGC,SAAQ,EAAGC,MAAK,EAAGC,UAAS,EAAGC,cAAa,EAAGC,YAAW,EAAGC,cAAa,EAAGC,WAAU,EAAGC,UAAS,EAAGC,SAAQ,EAAGC,YAAW,EAAGC,aAAY,EAAGC,cAAa,EAAGC,YAAW,EAAGC,eAAc,EAAGC,gBAAe,EAAGC,iBAAgB,EAAGC,YAAW,EAAGC,WAAU,EAAGC,YAAW,EAAGC,SAAQ,EAAGC,OAAM,EAAGC,SAAQ,EAAGC,SAAQ,EAAGC,QAAO,EAAGC,QAAO,EAAGC,MAAK,EAAGC,aAAY,EAC1fC,cAAa,EAAGC,aAAY,EAAGC,iBAAgB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,eAAc,EAAGC,aAAY,GAAIC,GAAG,CAAC,SAAS,KAAK,MAAM,KAA6H,SAASC,GAAG76B,EAAEC,EAAE5M,GAAG,OAAO,MAAM4M,GAAG,kBAAmBA,GAAG,KAAKA,EAAE,GAAG5M,GAAG,iBAAkB4M,GAAG,IAAIA,GAAGg4B,GAAGpjC,eAAemL,IAAIi4B,GAAGj4B,IAAI,GAAGC,GAAG2F,OAAO3F,EAAE,KAC9Z,SAAS66B,GAAG96B,EAAEC,GAAa,IAAI,IAAI5M,KAAlB2M,EAAEA,EAAE7G,MAAmB8G,EAAE,GAAGA,EAAEpL,eAAexB,GAAG,CAAC,IAAIC,EAAE,IAAID,EAAE4G,QAAQ,MAAMlC,EAAE8iC,GAAGxnC,EAAE4M,EAAE5M,GAAGC,GAAG,UAAUD,IAAIA,EAAE,YAAYC,EAAE0M,EAAE+6B,YAAY1nC,EAAE0E,GAAGiI,EAAE3M,GAAG0E,GADTrE,OAAOkH,KAAKq9B,IAAIp9B,SAAQ,SAASmF,GAAG46B,GAAG//B,SAAQ,SAASoF,GAAGA,EAAEA,EAAED,EAAE2pB,OAAO,GAAG6I,cAAcxyB,EAAEg7B,UAAU,GAAG/C,GAAGh4B,GAAGg4B,GAAGj4B,SACrG,IAAI6K,GAAGzX,EAAE,CAAC6nC,UAAS,GAAI,CAACC,MAAK,EAAGpiC,MAAK,EAAGqiC,IAAG,EAAGC,KAAI,EAAGC,OAAM,EAAGnvB,IAAG,EAAGovB,KAAI,EAAGC,OAAM,EAAGC,QAAO,EAAG7/B,MAAK,EAAG8/B,MAAK,EAAGC,OAAM,EAAGxlC,QAAO,EAAGylC,OAAM,EAAGC,KAAI,IAClT,SAASC,GAAG77B,EAAEC,GAAG,GAAGA,EAAE,CAAC,GAAG4K,GAAG7K,KAAK,MAAMC,EAAE6sB,UAAU,MAAM7sB,EAAE82B,yBAAyB,MAAM19B,MAAM6xB,EAAE,IAAIlrB,IAAI,GAAG,MAAMC,EAAE82B,wBAAwB,CAAC,GAAG,MAAM92B,EAAE6sB,SAAS,MAAMzzB,MAAM6xB,EAAE,KAAK,GAAK,iBAAkBjrB,EAAE82B,2BAAyB,WAAW92B,EAAE82B,yBAAyB,MAAM19B,MAAM6xB,EAAE,KAAM,GAAG,MAAMjrB,EAAE9G,OAAO,iBAAkB8G,EAAE9G,MAAM,MAAME,MAAM6xB,EAAE,MAC5V,SAAS4Q,GAAG97B,EAAEC,GAAG,IAAI,IAAID,EAAE/F,QAAQ,KAAK,MAAM,iBAAkBgG,EAAE87B,GAAG,OAAO/7B,GAAG,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,YAAY,IAAK,gBAAgB,IAAK,gBAAgB,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,gBAAgB,OAAM,EAAG,QAAQ,OAAM,GAAI,SAASg8B,GAAGh8B,GAA6F,OAA1FA,EAAEA,EAAEzI,QAAQyI,EAAEi8B,YAAYjlC,QAASklC,0BAA0Bl8B,EAAEA,EAAEk8B,yBAAgC,IAAIl8B,EAAE+3B,SAAS/3B,EAAElG,WAAWkG,EAAE,IAAIm8B,GAAG,KAAKC,GAAG,KAAKC,GAAG,KACxb,SAASC,GAAGt8B,GAAG,GAAGA,EAAEu8B,GAAGv8B,GAAG,CAAC,GAAG,mBAAoBm8B,GAAG,MAAM9iC,MAAM6xB,EAAE,MAAM,IAAIjrB,EAAED,EAAEw8B,UAAUv8B,IAAIA,EAAEw8B,GAAGx8B,GAAGk8B,GAAGn8B,EAAEw8B,UAAUx8B,EAAEzF,KAAK0F,KAAK,SAASy8B,GAAG18B,GAAGo8B,GAAGC,GAAGA,GAAG1lC,KAAKqJ,GAAGq8B,GAAG,CAACr8B,GAAGo8B,GAAGp8B,EAAE,SAAS28B,KAAK,GAAGP,GAAG,CAAC,IAAIp8B,EAAEo8B,GAAGn8B,EAAEo8B,GAAoB,GAAjBA,GAAGD,GAAG,KAAKE,GAAGt8B,GAAMC,EAAE,IAAID,EAAE,EAAEA,EAAEC,EAAExJ,OAAOuJ,IAAIs8B,GAAGr8B,EAAED,KAAK,SAAS48B,GAAG58B,EAAEC,GAAG,OAAOD,EAAEC,GAAG,SAAS48B,GAAG78B,EAAEC,EAAE5M,EAAEC,EAAEyE,GAAG,OAAOiI,EAAEC,EAAE5M,EAAEC,EAAEyE,GAAG,SAAS+kC,MAAM,IAAIC,GAAGH,GAAGI,IAAG,EAAGC,IAAG,EAAG,SAASC,KAAQ,OAAOd,IAAI,OAAOC,KAAGS,KAAKH,MAE9Z,SAASQ,GAAGn9B,EAAEC,GAAG,IAAI5M,EAAE2M,EAAEw8B,UAAU,GAAG,OAAOnpC,EAAE,OAAO,KAAK,IAAIC,EAAEmpC,GAAGppC,GAAG,GAAG,OAAOC,EAAE,OAAO,KAAKD,EAAEC,EAAE2M,GAAGD,EAAE,OAAOC,GAAG,IAAK,UAAU,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,uBAAuB,IAAK,cAAc,IAAK,qBAAqB,IAAK,cAAc,IAAK,qBAAqB,IAAK,YAAY,IAAK,mBAAmB,IAAK,gBAAgB3M,GAAGA,EAAEwjC,YAAqBxjC,IAAI,YAAb0M,EAAEA,EAAEzF,OAAuB,UAAUyF,GAAG,WAAWA,GAAG,aAAaA,IAAIA,GAAG1M,EAAE,MAAM0M,EAAE,QAAQA,GAAE,EAAG,GAAGA,EAAE,OAAO,KAAK,GAAG3M,GAAG,mBACleA,EAAE,MAAMgG,MAAM6xB,EAAE,IAAIjrB,SAAS5M,IAAI,OAAOA,EAAE,IAAI+pC,IAAG,EAAG,GAAG1L,EAAG,IAAI,IAAI2L,GAAG,GAAG3pC,OAAOC,eAAe0pC,GAAG,UAAU,CAACxpC,IAAI,WAAWupC,IAAG,KAAMpmC,OAAO2G,iBAAiB,OAAO0/B,GAAGA,IAAIrmC,OAAOqf,oBAAoB,OAAOgnB,GAAGA,IAAI,MAAMr9B,GAAGo9B,IAAG,EAAG,SAASE,GAAGt9B,EAAEC,EAAE5M,EAAEC,EAAEyE,EAAEuI,EAAEI,EAAEC,EAAEI,GAAG,IAAI9N,EAAE+N,MAAMpM,UAAUsM,MAAM/N,KAAKkE,UAAU,GAAG,IAAI4I,EAAE7I,MAAM/D,EAAEJ,GAAG,MAAM6B,GAAGM,KAAKmoC,QAAQzoC,IAAI,IAAI0oC,IAAG,EAAGC,GAAG,KAAKC,IAAG,EAAGC,GAAG,KAAKC,GAAG,CAACL,QAAQ,SAASv9B,GAAGw9B,IAAG,EAAGC,GAAGz9B,IAAI,SAAS69B,GAAG79B,EAAEC,EAAE5M,EAAEC,EAAEyE,EAAEuI,EAAEI,EAAEC,EAAEI,GAAGy8B,IAAG,EAAGC,GAAG,KAAKH,GAAGlmC,MAAMwmC,GAAGvmC,WACvV,SAASymC,GAAG99B,GAAG,IAAIC,EAAED,EAAE3M,EAAE2M,EAAE,GAAGA,EAAE+9B,UAAU,KAAK99B,EAAE+9B,QAAQ/9B,EAAEA,EAAE+9B,WAAW,CAACh+B,EAAEC,EAAE,GAAO,IAAa,MAAjBA,EAAED,GAASi+B,SAAc5qC,EAAE4M,EAAE+9B,QAAQh+B,EAAEC,EAAE+9B,aAAah+B,GAAG,OAAO,IAAIC,EAAE20B,IAAIvhC,EAAE,KAAK,SAAS6qC,GAAGl+B,GAAG,GAAG,KAAKA,EAAE40B,IAAI,CAAC,IAAI30B,EAAED,EAAEm+B,cAAsE,GAAxD,OAAOl+B,IAAkB,QAAdD,EAAEA,EAAE+9B,aAAqB99B,EAAED,EAAEm+B,gBAAmB,OAAOl+B,EAAE,OAAOA,EAAEm+B,WAAW,OAAO,KAAK,SAASC,GAAGr+B,GAAG,GAAG89B,GAAG99B,KAAKA,EAAE,MAAM3G,MAAM6xB,EAAE,MAEpS,SAASoT,GAAGt+B,GAAW,OAAO,QAAfA,EADtN,SAAYA,GAAG,IAAIC,EAAED,EAAE+9B,UAAU,IAAI99B,EAAE,CAAS,GAAG,QAAXA,EAAE69B,GAAG99B,IAAe,MAAM3G,MAAM6xB,EAAE,MAAM,OAAOjrB,IAAID,EAAE,KAAKA,EAAE,IAAI,IAAI3M,EAAE2M,EAAE1M,EAAE2M,IAAI,CAAC,IAAIlI,EAAE1E,EAAE2qC,OAAO,GAAG,OAAOjmC,EAAE,MAAM,IAAIuI,EAAEvI,EAAEgmC,UAAU,GAAG,OAAOz9B,EAAE,CAAY,GAAG,QAAdhN,EAAEyE,EAAEimC,QAAmB,CAAC3qC,EAAEC,EAAE,SAAS,MAAM,GAAGyE,EAAEwmC,QAAQj+B,EAAEi+B,MAAM,CAAC,IAAIj+B,EAAEvI,EAAEwmC,MAAMj+B,GAAG,CAAC,GAAGA,IAAIjN,EAAE,OAAOgrC,GAAGtmC,GAAGiI,EAAE,GAAGM,IAAIhN,EAAE,OAAO+qC,GAAGtmC,GAAGkI,EAAEK,EAAEA,EAAEk+B,QAAQ,MAAMnlC,MAAM6xB,EAAE,MAAO,GAAG73B,EAAE2qC,SAAS1qC,EAAE0qC,OAAO3qC,EAAE0E,EAAEzE,EAAEgN,MAAM,CAAC,IAAI,IAAII,GAAE,EAAGC,EAAE5I,EAAEwmC,MAAM59B,GAAG,CAAC,GAAGA,IAAItN,EAAE,CAACqN,GAAE,EAAGrN,EAAE0E,EAAEzE,EAAEgN,EAAE,MAAM,GAAGK,IAAIrN,EAAE,CAACoN,GAAE,EAAGpN,EAAEyE,EAAE1E,EAAEiN,EAAE,MAAMK,EAAEA,EAAE69B,QAAQ,IAAI99B,EAAE,CAAC,IAAIC,EAAEL,EAAEi+B,MAAM59B,GAAG,CAAC,GAAGA,IAC5ftN,EAAE,CAACqN,GAAE,EAAGrN,EAAEiN,EAAEhN,EAAEyE,EAAE,MAAM,GAAG4I,IAAIrN,EAAE,CAACoN,GAAE,EAAGpN,EAAEgN,EAAEjN,EAAE0E,EAAE,MAAM4I,EAAEA,EAAE69B,QAAQ,IAAI99B,EAAE,MAAMrH,MAAM6xB,EAAE,OAAQ,GAAG73B,EAAE0qC,YAAYzqC,EAAE,MAAM+F,MAAM6xB,EAAE,MAAO,GAAG,IAAI73B,EAAEuhC,IAAI,MAAMv7B,MAAM6xB,EAAE,MAAM,OAAO73B,EAAEmpC,UAAUjQ,UAAUl5B,EAAE2M,EAAEC,EAAmBw+B,CAAGz+B,IAA8B,SAAS0+B,EAAG1+B,GAAG,GAAG,IAAIA,EAAE40B,KAAK,IAAI50B,EAAE40B,IAAI,OAAO50B,EAAE,IAAIA,EAAEA,EAAEu+B,MAAM,OAAOv+B,GAAG,CAAC,IAAIC,EAAEy+B,EAAG1+B,GAAG,GAAG,OAAOC,EAAE,OAAOA,EAAED,EAAEA,EAAEw+B,QAAQ,OAAO,KAAxIE,CAAG1+B,GAAG,KAAuI,SAAS2+B,GAAG3+B,EAAEC,GAAG,IAAI,IAAI5M,EAAE2M,EAAE+9B,UAAU,OAAO99B,GAAG,CAAC,GAAGA,IAAID,GAAGC,IAAI5M,EAAE,OAAM,EAAG4M,EAAEA,EAAE+9B,OAAO,OAAM,EACvd,IAAIY,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,IAAG,EAAGza,GAAG,GAAG0a,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKC,GAAG,IAAIla,IAAIma,GAAG,IAAIna,IAAIoa,GAAG,GAAGC,GAAG,6PAA6Pt5B,MAAM,KAAK,SAASu5B,GAAG1/B,EAAEC,EAAE5M,EAAEC,EAAEyE,GAAG,MAAM,CAAC4nC,UAAU3/B,EAAE4/B,aAAa3/B,EAAE4/B,iBAAmB,GAAFxsC,EAAKysC,YAAY/nC,EAAEgoC,iBAAiB,CAACzsC,IAChd,SAAS0sC,GAAGhgC,EAAEC,EAAE5M,EAAEC,EAAEyE,GAA8B,GAA3BiI,EAAE0/B,GAAG1/B,EAAEC,EAAE5M,EAAEC,EAAEyE,GAAG0sB,GAAG9tB,KAAKqJ,GAAM,IAAIykB,GAAGhuB,OAAO,KAAK,OAAOuJ,EAAE2/B,WAAiC,QAArB1/B,EAAEs8B,GAAGv8B,EAAE2/B,cAA6Bf,GAAG3+B,GAAM,OAAOD,EAAE2/B,YAAUM,KAAiB,SAASC,GAAGlgC,EAAEC,GAAG,OAAOD,GAAG,IAAK,UAAU,IAAK,WAAWm/B,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,YAAYC,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,WAAWC,GAAG,KAAK,MAAM,IAAK,cAAc,IAAK,aAAaC,GAAGnb,OAAOlkB,EAAEkgC,WAAW,MAAM,IAAK,oBAAoB,IAAK,qBAAqBZ,GAAGpb,OAAOlkB,EAAEkgC,YACtd,SAASC,GAAGpgC,EAAEC,EAAE5M,EAAEC,EAAEyE,EAAEuI,GAAG,OAAG,OAAON,GAAGA,EAAE8/B,cAAcx/B,GAASN,EAAE0/B,GAAGz/B,EAAE5M,EAAEC,EAAEyE,EAAEuI,GAAG,OAAOL,IAAY,QAARA,EAAEs8B,GAAGt8B,KAAa6+B,GAAG7+B,IAAID,IAAEA,EAAE6/B,kBAAkBvsC,EAAE2M,EAAED,EAAE+/B,iBAAiB,OAAOhoC,IAAI,IAAIkI,EAAEhG,QAAQlC,IAAIkI,EAAEtJ,KAAKoB,GAAUiI,GAE9M,SAASqgC,GAAGrgC,GAAG,IAAIC,EAAEqgC,GAAGtgC,EAAEzI,QAAQ,GAAG,OAAO0I,EAAE,CAAC,IAAI5M,EAAEyqC,GAAG79B,GAAG,GAAG,OAAO5M,EAAE,GAAW,MAAR4M,EAAE5M,EAAEuhC,MAAY,GAAW,QAAR30B,EAAEi+B,GAAG7qC,IAAmH,OAAtG2M,EAAE2/B,UAAU1/B,OAAEg/B,GAAGj/B,EAAEugC,cAAa,WAAWzV,EAAE0V,yBAAyBxgC,EAAEygC,UAAS,WAAW1B,GAAG1rC,cAAoB,GAAG,IAAI4M,GAAG5M,EAAEmpC,UAAUkE,QAA8D,YAArD1gC,EAAE2/B,UAAU,IAAItsC,EAAEuhC,IAAIvhC,EAAEmpC,UAAUmE,cAAc,MAAa3gC,EAAE2/B,UAAU,KAC1U,SAASiB,GAAG5gC,GAAG,GAAG,OAAOA,EAAE2/B,UAAU,OAAM,EAAG,IAAI,IAAI1/B,EAAED,EAAE+/B,iBAAiB,EAAE9/B,EAAExJ,QAAQ,CAAC,IAAIpD,EAAEwtC,GAAG7gC,EAAE4/B,aAAa5/B,EAAE6/B,iBAAiB5/B,EAAE,GAAGD,EAAE8/B,aAAa,GAAG,OAAOzsC,EAAE,OAAe,QAAR4M,EAAEs8B,GAAGlpC,KAAayrC,GAAG7+B,GAAGD,EAAE2/B,UAAUtsC,GAAE,EAAG4M,EAAEmf,QAAQ,OAAM,EAAG,SAAS0hB,GAAG9gC,EAAEC,EAAE5M,GAAGutC,GAAG5gC,IAAI3M,EAAE8wB,OAAOlkB,GACzQ,SAASggC,KAAK,IAAIf,IAAG,EAAG,EAAEza,GAAGhuB,QAAQ,CAAC,IAAIuJ,EAAEykB,GAAG,GAAG,GAAG,OAAOzkB,EAAE2/B,UAAU,CAAmB,QAAlB3/B,EAAEu8B,GAAGv8B,EAAE2/B,aAAqBd,GAAG7+B,GAAG,MAAM,IAAI,IAAIC,EAAED,EAAE+/B,iBAAiB,EAAE9/B,EAAExJ,QAAQ,CAAC,IAAIpD,EAAEwtC,GAAG7gC,EAAE4/B,aAAa5/B,EAAE6/B,iBAAiB5/B,EAAE,GAAGD,EAAE8/B,aAAa,GAAG,OAAOzsC,EAAE,CAAC2M,EAAE2/B,UAAUtsC,EAAE,MAAM4M,EAAEmf,QAAQ,OAAOpf,EAAE2/B,WAAWlb,GAAGrF,QAAQ,OAAO+f,IAAIyB,GAAGzB,MAAMA,GAAG,MAAM,OAAOC,IAAIwB,GAAGxB,MAAMA,GAAG,MAAM,OAAOC,IAAIuB,GAAGvB,MAAMA,GAAG,MAAMC,GAAGzkC,QAAQimC,IAAIvB,GAAG1kC,QAAQimC,IACrZ,SAASC,GAAG/gC,EAAEC,GAAGD,EAAE2/B,YAAY1/B,IAAID,EAAE2/B,UAAU,KAAKT,KAAKA,IAAG,EAAGpU,EAAEkW,0BAA0BlW,EAAEmW,wBAAwBhB,MACrH,SAASiB,GAAGlhC,GAAG,SAASC,EAAEA,GAAG,OAAO8gC,GAAG9gC,EAAED,GAAG,GAAG,EAAEykB,GAAGhuB,OAAO,CAACsqC,GAAGtc,GAAG,GAAGzkB,GAAG,IAAI,IAAI3M,EAAE,EAAEA,EAAEoxB,GAAGhuB,OAAOpD,IAAI,CAAC,IAAIC,EAAEmxB,GAAGpxB,GAAGC,EAAEqsC,YAAY3/B,IAAI1M,EAAEqsC,UAAU,OAA+F,IAAxF,OAAOR,IAAI4B,GAAG5B,GAAGn/B,GAAG,OAAOo/B,IAAI2B,GAAG3B,GAAGp/B,GAAG,OAAOq/B,IAAI0B,GAAG1B,GAAGr/B,GAAGs/B,GAAGzkC,QAAQoF,GAAGs/B,GAAG1kC,QAAQoF,GAAO5M,EAAE,EAAEA,EAAEmsC,GAAG/oC,OAAOpD,KAAIC,EAAEksC,GAAGnsC,IAAKssC,YAAY3/B,IAAI1M,EAAEqsC,UAAU,MAAM,KAAK,EAAEH,GAAG/oC,QAAiB,QAARpD,EAAEmsC,GAAG,IAAYG,WAAYU,GAAGhtC,GAAG,OAAOA,EAAEssC,WAAWH,GAAGpgB,QAC/X,SAAS+hB,GAAGnhC,EAAEC,GAAG,IAAI5M,EAAE,GAAkF,OAA/EA,EAAE2M,EAAE+J,eAAe9J,EAAE8J,cAAc1W,EAAE,SAAS2M,GAAG,SAASC,EAAE5M,EAAE,MAAM2M,GAAG,MAAMC,EAAS5M,EAAE,IAAI+tC,GAAG,CAACC,aAAaF,GAAG,YAAY,gBAAgBG,mBAAmBH,GAAG,YAAY,sBAAsBI,eAAeJ,GAAG,YAAY,kBAAkBK,cAAcL,GAAG,aAAa,kBAAkBM,GAAG,GAAGC,GAAG,GACnF,SAASC,GAAG3hC,GAAG,GAAGyhC,GAAGzhC,GAAG,OAAOyhC,GAAGzhC,GAAG,IAAIohC,GAAGphC,GAAG,OAAOA,EAAE,IAAY3M,EAAR4M,EAAEmhC,GAAGphC,GAAK,IAAI3M,KAAK4M,EAAE,GAAGA,EAAEpL,eAAexB,IAAIA,KAAKquC,GAAG,OAAOD,GAAGzhC,GAAGC,EAAE5M,GAAG,OAAO2M,EAA9X0xB,IAAKgQ,GAAGzqC,SAASmD,cAAc,OAAOjB,MAAM,mBAAmBnC,gBAAgBoqC,GAAGC,aAAaO,iBAAiBR,GAAGE,mBAAmBM,iBAAiBR,GAAGG,eAAeK,WAAW,oBAAoB5qC,eAAeoqC,GAAGI,cAAc3T,YACxO,IAAIgU,GAAGF,GAAG,gBAAgBG,GAAGH,GAAG,sBAAsBI,GAAGJ,GAAG,kBAAkBK,GAAGL,GAAG,iBAAiBM,GAAG,IAAI7c,IAAI8c,GAAG,IAAI9c,IAAI+c,GAAG,CAAC,QAAQ,QAAQN,GAAG,eAAeC,GAAG,qBAAqBC,GAAG,iBAAiB,UAAU,UAAU,iBAAiB,iBAAiB,iBAAiB,iBAAiB,UAAU,UAAU,YAAY,YAAY,QAAQ,QAAQ,QAAQ,QAAQ,oBAAoB,oBAAoB,OAAO,OAAO,aAAa,aAAa,iBAAiB,iBAAiB,YAAY,YAC/e,qBAAqB,qBAAqB,UAAU,UAAU,WAAW,WAAW,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,aAAa,aAAaC,GAAG,gBAAgB,UAAU,WAAW,SAASI,GAAGpiC,EAAEC,GAAG,IAAI,IAAI5M,EAAE,EAAEA,EAAE2M,EAAEvJ,OAAOpD,GAAG,EAAE,CAAC,IAAIC,EAAE0M,EAAE3M,GAAG0E,EAAEiI,EAAE3M,EAAE,GAAG0E,EAAE,MAAMA,EAAE,GAAGy6B,cAAcz6B,EAAEmJ,MAAM,IAAIghC,GAAG94B,IAAI9V,EAAE2M,GAAGgiC,GAAG74B,IAAI9V,EAAEyE,GAAGy5B,EAAGz5B,EAAE,CAACzE,KACzV,IAAI+uC,GAAGvX,EAAE0V,yBAAyB8B,GAAGxX,EAAEkW,0BAA0BuB,GAAGzX,EAAE0X,wBAAwBC,GAAG3X,EAAE4X,qBAAqBC,GAAG7X,EAAE8X,sBAAsBC,GAAG/X,EAAEgY,aAAaC,GAAGjY,EAAEkY,iCAAiCC,GAAGnY,EAAEoY,2BAA2BC,GAAGrY,EAAEsY,8BAA8BC,GAAGvY,EAAEmW,wBAAwBqC,GAAGxY,EAAEyY,qBAAqBC,GAAG1Y,EAAE2Y,sBAAsBC,GAAG,GAAGC,QAAG,IAAShB,GAAGA,GAAG,aAAaiB,GAAG,KAAKC,GAAG,KAAKntC,IAAG,EAAGotC,GAAGjB,KAAK7W,GAAE,IAAI8X,GAAGjB,GAAG,WAAW,OAAOA,KAAKiB,IACtc,SAASC,KAAK,OAAOhB,MAAM,KAAKE,GAAG,OAAO,GAAG,KAAKE,GAAG,OAAO,GAAG,KAAKE,GAAG,OAAO,GAAG,KAAKC,GAAG,OAAO,GAAG,KAAKE,GAAG,OAAO,GAAG,QAAQ,MAAMnqC,MAAM6xB,EAAE,OAAQ,SAAS8Y,GAAGhkC,GAAG,OAAOA,GAAG,KAAK,GAAG,OAAOijC,GAAG,KAAK,GAAG,OAAOE,GAAG,KAAK,GAAG,OAAOE,GAAG,KAAK,GAAG,OAAOC,GAAG,KAAK,GAAG,OAAOE,GAAG,QAAQ,MAAMnqC,MAAM6xB,EAAE,OAAQ,SAAS+Y,GAAGjkC,EAAEC,GAAW,OAARD,EAAEgkC,GAAGhkC,GAAUqiC,GAAGriC,EAAEC,GAAG,SAASikC,GAAGlkC,EAAEC,EAAE5M,GAAW,OAAR2M,EAAEgkC,GAAGhkC,GAAUsiC,GAAGtiC,EAAEC,EAAE5M,GAAG,SAAS8wC,KAAK,GAAG,OAAON,GAAG,CAAC,IAAI7jC,EAAE6jC,GAAGA,GAAG,KAAKtB,GAAGviC,GAAGokC,KAC3a,SAASA,KAAK,IAAI1tC,IAAI,OAAOktC,GAAG,CAACltC,IAAG,EAAG,IAAIsJ,EAAE,EAAE,IAAI,IAAIC,EAAE2jC,GAAGK,GAAG,IAAG,WAAW,KAAKjkC,EAAEC,EAAExJ,OAAOuJ,IAAI,CAAC,IAAI3M,EAAE4M,EAAED,GAAG,GAAG3M,EAAEA,GAAE,SAAU,OAAOA,OAAMuwC,GAAG,KAAK,MAAMvwC,GAAG,MAAM,OAAOuwC,KAAKA,GAAGA,GAAG1iC,MAAMlB,EAAE,IAAIsiC,GAAGW,GAAGkB,IAAI9wC,EAA3J,QAAsKqD,IAAG,IAAK,IAAI2tC,GAAG,EAAEjY,GAAE,EACxO,SAASkY,GAAGtkC,GAAG,GAAG,IAAK,EAAEA,GAAG,OAAOosB,GAAE,GAAG,EAAE,GAAG,IAAK,EAAEpsB,GAAG,OAAOosB,GAAE,GAAG,EAAE,GAAG,IAAK,EAAEpsB,GAAG,OAAOosB,GAAE,GAAG,EAAE,IAAInsB,EAAE,GAAGD,EAAE,OAAG,IAAIC,GAASmsB,GAAE,GAAGnsB,GAAK,IAAO,GAAFD,IAAaosB,GAAE,GAAG,IAAc,KAAXnsB,EAAE,IAAID,IAAkBosB,GAAE,GAAGnsB,GAAK,IAAO,IAAFD,IAAcosB,GAAE,EAAE,KAAgB,KAAZnsB,EAAE,KAAKD,IAAkBosB,GAAE,EAAEnsB,GAAK,IAAO,KAAFD,IAAeosB,GAAE,EAAE,MAAoB,KAAfnsB,EAAE,QAAQD,IAAkBosB,GAAE,EAAEnsB,GAAkB,KAAhBA,EAAE,SAASD,IAAkBosB,GAAE,EAAEnsB,GAAO,SAAFD,GAAkBosB,GAAE,EAAE,UAAY,IAAO,UAAFpsB,IAAoBosB,GAAE,EAAE,WAA2B,KAAjBnsB,EAAE,UAAUD,IAAkBosB,GAAE,EAAEnsB,GAAK,IAAK,WAAWD,IAAUosB,GAAE,EAAE,aACjfA,GAAE,EAASpsB,GACX,SAASukC,GAAGvkC,EAAEC,GAAG,IAAI5M,EAAE2M,EAAEwkC,aAAa,GAAG,IAAInxC,EAAE,OAAO+4B,GAAE,EAAE,IAAI94B,EAAE,EAAEyE,EAAE,EAAEuI,EAAEN,EAAEykC,aAAa/jC,EAAEV,EAAE0kC,eAAe/jC,EAAEX,EAAE2kC,YAAY,GAAG,IAAIrkC,EAAEhN,EAAEgN,EAAEvI,EAAEq0B,GAAE,QAAQ,GAAiB,KAAd9rB,EAAI,UAAFjN,GAAkB,CAAC,IAAI0N,EAAET,GAAGI,EAAE,IAAIK,GAAGzN,EAAEgxC,GAAGvjC,GAAGhJ,EAAEq0B,IAAS,KAALzrB,GAAGL,KAAUhN,EAAEgxC,GAAG3jC,GAAG5I,EAAEq0B,SAAgB,KAAP9rB,EAAEjN,GAAGqN,IAASpN,EAAEgxC,GAAGhkC,GAAGvI,EAAEq0B,IAAG,IAAIzrB,IAAIrN,EAAEgxC,GAAG3jC,GAAG5I,EAAEq0B,IAAG,GAAG,IAAI94B,EAAE,OAAO,EAAqC,GAAxBA,EAAED,IAAI,GAAjBC,EAAE,GAAGsxC,GAAGtxC,IAAa,EAAE,GAAGA,IAAI,GAAG,EAAK,IAAI2M,GAAGA,IAAI3M,GAAG,IAAK2M,EAAES,GAAG,CAAO,GAAN4jC,GAAGrkC,GAAMlI,GAAGq0B,GAAE,OAAOnsB,EAAEmsB,GAAEr0B,EAAqB,GAAG,KAAtBkI,EAAED,EAAE6kC,gBAAwB,IAAI7kC,EAAEA,EAAE8kC,cAAc7kC,GAAG3M,EAAE,EAAE2M,GAAclI,EAAE,IAAb1E,EAAE,GAAGuxC,GAAG3kC,IAAU3M,GAAG0M,EAAE3M,GAAG4M,IAAIlI,EAAE,OAAOzE,EAC1e,SAASyxC,GAAG/kC,GAAgC,OAAO,KAApCA,GAAkB,WAAhBA,EAAEwkC,cAAsCxkC,EAAI,WAAFA,EAAa,WAAW,EAAE,SAASglC,GAAGhlC,EAAEC,GAAG,OAAOD,GAAG,KAAK,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK,GAAG,OAAmB,KAAZA,EAAEilC,GAAG,IAAIhlC,IAAS+kC,GAAG,GAAG/kC,GAAGD,EAAE,KAAK,GAAG,OAAoB,KAAbA,EAAEilC,GAAG,KAAKhlC,IAAS+kC,GAAG,EAAE/kC,GAAGD,EAAE,KAAK,EAAE,OAAqB,KAAdA,EAAEilC,GAAG,MAAMhlC,MAA4B,KAAjBD,EAAEilC,GAAG,SAAShlC,MAAWD,EAAE,MAAMA,EAAE,KAAK,EAAE,OAA0B,KAAnBC,EAAEglC,GAAG,WAAWhlC,MAAWA,EAAE,WAAWA,EAAE,MAAM5G,MAAM6xB,EAAE,IAAIlrB,IAAK,SAASilC,GAAGjlC,GAAG,OAAOA,GAAGA,EAAE,SAASklC,GAAGllC,GAAG,IAAI,IAAIC,EAAE,GAAG5M,EAAE,EAAE,GAAGA,EAAEA,IAAI4M,EAAEtJ,KAAKqJ,GAAG,OAAOC,EACrd,SAASklC,GAAGnlC,EAAEC,EAAE5M,GAAG2M,EAAEwkC,cAAcvkC,EAAE,IAAI3M,EAAE2M,EAAE,EAAED,EAAE0kC,gBAAgBpxC,EAAE0M,EAAE2kC,aAAarxC,GAAE0M,EAAEA,EAAEolC,YAAWnlC,EAAE,GAAG2kC,GAAG3kC,IAAQ5M,EAAE,IAAIuxC,GAAG7kB,KAAKslB,MAAMtlB,KAAKslB,MAAiC,SAAYrlC,GAAG,OAAO,IAAIA,EAAE,GAAG,IAAIslC,GAAGtlC,GAAGulC,GAAG,GAAG,GAAvED,GAAGvlB,KAAKxd,IAAIgjC,GAAGxlB,KAAKylB,KAA2EC,EAAf3a,EAAEgY,gBAAkB,IAAI4C,GAAG5a,EAAEsY,8BAA8BuC,GAAG7a,EAAE0V,yBAAyBoF,IAAG,EAAG,SAASC,GAAG7lC,EAAEC,EAAE5M,EAAEC,GAAG0pC,IAAIF,KAAK,IAAI/kC,EAAE+tC,GAAGxlC,EAAE08B,GAAGA,IAAG,EAAG,IAAIH,GAAG9kC,EAAEiI,EAAEC,EAAE5M,EAAEC,GAAf,SAA2B0pC,GAAG18B,IAAI48B,MAAM,SAAS6I,GAAG/lC,EAAEC,EAAE5M,EAAEC,GAAGqyC,GAAGD,GAAGI,GAAGtxC,KAAK,KAAKwL,EAAEC,EAAE5M,EAAEC,IAC5c,SAASwyC,GAAG9lC,EAAEC,EAAE5M,EAAEC,GAAG,GAAGsyC,GAAG,CAAC,IAAI7tC,EAAE,IAAO,EAAFkI,GAAK,GAAGlI,GAAG,EAAE0sB,GAAGhuB,SAAS,EAAEgpC,GAAGxlC,QAAQ+F,GAAGggC,GAAG,KAAKhgC,EAAEC,EAAE5M,EAAEC,OAAO,CAAC,IAAIgN,EAAEugC,GAAG7gC,EAAEC,EAAE5M,EAAEC,GAAG,GAAG,OAAOgN,EAAEvI,GAAGmoC,GAAGlgC,EAAE1M,OAAO,CAAC,GAAGyE,EAAE,CAAC,IAAI,EAAE0nC,GAAGxlC,QAAQ+F,GAAkB,YAAdggC,GAAG1/B,EAAEN,EAAEC,EAAE5M,EAAEC,GAAU,GAlBpM,SAAY0M,EAAEC,EAAE5M,EAAEC,EAAEyE,GAAG,OAAOkI,GAAG,IAAK,UAAU,OAAOk/B,GAAGiB,GAAGjB,GAAGn/B,EAAEC,EAAE5M,EAAEC,EAAEyE,IAAG,EAAG,IAAK,YAAY,OAAOqnC,GAAGgB,GAAGhB,GAAGp/B,EAAEC,EAAE5M,EAAEC,EAAEyE,IAAG,EAAG,IAAK,YAAY,OAAOsnC,GAAGe,GAAGf,GAAGr/B,EAAEC,EAAE5M,EAAEC,EAAEyE,IAAG,EAAG,IAAK,cAAc,IAAIuI,EAAEvI,EAAEooC,UAAkD,OAAxCb,GAAGl2B,IAAI9I,EAAE8/B,GAAGd,GAAGzrC,IAAIyM,IAAI,KAAKN,EAAEC,EAAE5M,EAAEC,EAAEyE,KAAU,EAAG,IAAK,oBAAoB,OAAOuI,EAAEvI,EAAEooC,UAAUZ,GAAGn2B,IAAI9I,EAAE8/B,GAAGb,GAAG1rC,IAAIyM,IAAI,KAAKN,EAAEC,EAAE5M,EAAEC,EAAEyE,KAAI,EAAG,OAAM,EAkB1JiuC,CAAG1lC,EAAEN,EAAEC,EAAE5M,EAAEC,GAAG,OAAO4sC,GAAGlgC,EAAE1M,GAAG2yC,GAAGjmC,EAAEC,EAAE3M,EAAE,KAAKD,MAClP,SAASwtC,GAAG7gC,EAAEC,EAAE5M,EAAEC,GAAG,IAAIyE,EAAEikC,GAAG1oC,GAAW,GAAG,QAAXyE,EAAEuoC,GAAGvoC,IAAe,CAAC,IAAIuI,EAAEw9B,GAAG/lC,GAAG,GAAG,OAAOuI,EAAEvI,EAAE,SAAS,CAAC,IAAI2I,EAAEJ,EAAEs0B,IAAI,GAAG,KAAKl0B,EAAE,CAAS,GAAG,QAAX3I,EAAEmmC,GAAG59B,IAAe,OAAOvI,EAAEA,EAAE,UAAU,GAAG,IAAI2I,EAAE,CAAC,GAAGJ,EAAEk8B,UAAUkE,QAAQ,OAAO,IAAIpgC,EAAEs0B,IAAIt0B,EAAEk8B,UAAUmE,cAAc,KAAK5oC,EAAE,UAAUuI,IAAIvI,IAAIA,EAAE,OAAqB,OAAdkuC,GAAGjmC,EAAEC,EAAE3M,EAAEyE,EAAE1E,GAAU,KAAK,IAAI6yC,GAAG,KAAKC,GAAG,KAAKC,GAAG,KACzT,SAASC,KAAK,GAAGD,GAAG,OAAOA,GAAG,IAAIpmC,EAAkB1M,EAAhB2M,EAAEkmC,GAAG9yC,EAAE4M,EAAExJ,OAASsB,EAAE,UAAUmuC,GAAGA,GAAGjyC,MAAMiyC,GAAG/O,YAAY72B,EAAEvI,EAAEtB,OAAO,IAAIuJ,EAAE,EAAEA,EAAE3M,GAAG4M,EAAED,KAAKjI,EAAEiI,GAAGA,KAAK,IAAIU,EAAErN,EAAE2M,EAAE,IAAI1M,EAAE,EAAEA,GAAGoN,GAAGT,EAAE5M,EAAEC,KAAKyE,EAAEuI,EAAEhN,GAAGA,KAAK,OAAO8yC,GAAGruC,EAAEmJ,MAAMlB,EAAE,EAAE1M,EAAE,EAAEA,OAAE,GAAQ,SAASgzC,GAAGtmC,GAAG,IAAIC,EAAED,EAAEumC,QAA+E,MAAvE,aAAavmC,EAAgB,KAAbA,EAAEA,EAAEwmC,WAAgB,KAAKvmC,IAAID,EAAE,IAAKA,EAAEC,EAAE,KAAKD,IAAIA,EAAE,IAAW,IAAIA,GAAG,KAAKA,EAAEA,EAAE,EAAE,SAASymC,KAAK,OAAM,EAAG,SAASC,KAAK,OAAM,EACjY,SAASC,GAAG3mC,GAAG,SAASC,EAAEA,EAAE3M,EAAEyE,EAAEuI,EAAEI,GAA6G,IAAI,IAAIrN,KAAlH+B,KAAKwxC,WAAW3mC,EAAE7K,KAAKyxC,YAAY9uC,EAAE3C,KAAKmF,KAAKjH,EAAE8B,KAAK0qC,YAAYx/B,EAAElL,KAAKmC,OAAOmJ,EAAEtL,KAAK0xC,cAAc,KAAkB9mC,EAAEA,EAAEnL,eAAexB,KAAK4M,EAAED,EAAE3M,GAAG+B,KAAK/B,GAAG4M,EAAEA,EAAEK,GAAGA,EAAEjN,IAAgI,OAA5H+B,KAAK2xC,oBAAoB,MAAMzmC,EAAE0mC,iBAAiB1mC,EAAE0mC,kBAAiB,IAAK1mC,EAAE2mC,aAAaR,GAAGC,GAAGtxC,KAAK8xC,qBAAqBR,GAAUtxC,KAC1E,OAD+EhC,EAAE6M,EAAErL,UAAU,CAAC4J,eAAe,WAAWpJ,KAAK4xC,kBAAiB,EAAG,IAAIhnC,EAAE5K,KAAK0qC,YAAY9/B,IAAIA,EAAExB,eAAewB,EAAExB,iBAAiB,kBAAmBwB,EAAEinC,cAC7ejnC,EAAEinC,aAAY,GAAI7xC,KAAK2xC,mBAAmBN,KAAKU,gBAAgB,WAAW,IAAInnC,EAAE5K,KAAK0qC,YAAY9/B,IAAIA,EAAEmnC,gBAAgBnnC,EAAEmnC,kBAAkB,kBAAmBnnC,EAAEonC,eAAepnC,EAAEonC,cAAa,GAAIhyC,KAAK8xC,qBAAqBT,KAAKY,QAAQ,aAAaC,aAAab,KAAYxmC,EAChR,IAAoLsnC,GAAGC,GAAGC,GAAtLC,GAAG,CAACC,WAAW,EAAEC,QAAQ,EAAEC,WAAW,EAAEC,UAAU,SAAS9nC,GAAG,OAAOA,EAAE8nC,WAAWjkB,KAAKD,OAAOojB,iBAAiB,EAAEe,UAAU,GAAGC,GAAGrB,GAAGe,IAAIO,GAAG70C,EAAE,GAAGs0C,GAAG,CAAClzB,KAAK,EAAE0zB,OAAO,IAAIC,GAAGxB,GAAGsB,IAAaG,GAAGh1C,EAAE,GAAG60C,GAAG,CAACI,QAAQ,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,iBAAiBC,GAAGC,OAAO,EAAEC,QAAQ,EAAEC,cAAc,SAASnpC,GAAG,YAAO,IAASA,EAAEmpC,cAAcnpC,EAAEopC,cAAcppC,EAAEi8B,WAAWj8B,EAAEqpC,UAAUrpC,EAAEopC,YAAYppC,EAAEmpC,eAAeG,UAAU,SAAStpC,GAAG,MAAG,cAC3eA,EAASA,EAAEspC,WAAUtpC,IAAIynC,KAAKA,IAAI,cAAcznC,EAAEzF,MAAMgtC,GAAGvnC,EAAEqoC,QAAQZ,GAAGY,QAAQb,GAAGxnC,EAAEsoC,QAAQb,GAAGa,SAASd,GAAGD,GAAG,EAAEE,GAAGznC,GAAUunC,KAAIgC,UAAU,SAASvpC,GAAG,MAAM,cAAcA,EAAEA,EAAEupC,UAAU/B,MAAMgC,GAAG7C,GAAGyB,IAAiCqB,GAAG9C,GAA7BvzC,EAAE,GAAGg1C,GAAG,CAACsB,aAAa,KAA4CC,GAAGhD,GAA9BvzC,EAAE,GAAG60C,GAAG,CAACkB,cAAc,KAA0ES,GAAGjD,GAA5DvzC,EAAE,GAAGs0C,GAAG,CAACmC,cAAc,EAAEC,YAAY,EAAEC,cAAc,KAAsHC,GAAGrD,GAAxGvzC,EAAE,GAAGs0C,GAAG,CAACppC,cAAc,SAAS0B,GAAG,MAAM,kBAAkBA,EAAEA,EAAE1B,cAActH,OAAOsH,kBAAgD2rC,GAAGtD,GAArBvzC,EAAE,GAAGs0C,GAAG,CAACjpC,KAAK,KAAcyrC,GAAG,CAACC,IAAI,SACxfC,SAAS,IAAIC,KAAK,YAAYC,GAAG,UAAUC,MAAM,aAAaC,KAAK,YAAYC,IAAI,SAASC,IAAI,KAAKC,KAAK,cAAcC,KAAK,cAAcC,OAAO,aAAaC,gBAAgB,gBAAgBC,GAAG,CAACC,EAAE,YAAYC,EAAE,MAAMC,GAAG,QAAQC,GAAG,QAAQC,GAAG,QAAQC,GAAG,UAAUC,GAAG,MAAMC,GAAG,QAAQC,GAAG,WAAWC,GAAG,SAASC,GAAG,IAAIC,GAAG,SAASC,GAAG,WAAWC,GAAG,MAAMC,GAAG,OAAOC,GAAG,YAAYC,GAAG,UAAUC,GAAG,aAAaC,GAAG,YAAYC,GAAG,SAASC,GAAG,SAASC,IAAI,KAAKC,IAAI,KAAKC,IAAI,KAAKC,IAAI,KAAKC,IAAI,KAAKC,IAAI,KAAKC,IAAI,KACtfC,IAAI,KAAKC,IAAI,KAAKC,IAAI,MAAMC,IAAI,MAAMC,IAAI,MAAMC,IAAI,UAAUC,IAAI,aAAaC,IAAI,QAAQC,GAAG,CAACC,IAAI,SAASC,QAAQ,UAAUC,KAAK,UAAUC,MAAM,YAAY,SAASC,GAAGztC,GAAG,IAAIC,EAAE7K,KAAK0qC,YAAY,OAAO7/B,EAAE8oC,iBAAiB9oC,EAAE8oC,iBAAiB/oC,MAAIA,EAAEotC,GAAGptC,OAAMC,EAAED,GAAM,SAASgpC,KAAK,OAAOyE,GAC9R,IACiEC,GAAG/G,GAD7DvzC,EAAE,GAAG60C,GAAG,CAAC1zC,IAAI,SAASyL,GAAG,GAAGA,EAAEzL,IAAI,CAAC,IAAI0L,EAAEiqC,GAAGlqC,EAAEzL,MAAMyL,EAAEzL,IAAI,GAAG,iBAAiB0L,EAAE,OAAOA,EAAE,MAAM,aAAaD,EAAEzF,KAAc,MAARyF,EAAEsmC,GAAGtmC,IAAU,QAAQ6O,OAAOyG,aAAatV,GAAI,YAAYA,EAAEzF,MAAM,UAAUyF,EAAEzF,KAAKwwC,GAAG/qC,EAAEumC,UAAU,eAAe,IAAIrqB,KAAK,EAAE5B,SAAS,EAAEquB,QAAQ,EAAEC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,EAAE6E,OAAO,EAAEC,OAAO,EAAE7E,iBAAiBC,GAAGxC,SAAS,SAASxmC,GAAG,MAAM,aAAaA,EAAEzF,KAAK+rC,GAAGtmC,GAAG,GAAGumC,QAAQ,SAASvmC,GAAG,MAAM,YAAYA,EAAEzF,MAAM,UAAUyF,EAAEzF,KAAKyF,EAAEumC,QAAQ,GAAGsH,MAAM,SAAS7tC,GAAG,MAAM,aAC7eA,EAAEzF,KAAK+rC,GAAGtmC,GAAG,YAAYA,EAAEzF,MAAM,UAAUyF,EAAEzF,KAAKyF,EAAEumC,QAAQ,MAA4IuH,GAAGnH,GAA7HvzC,EAAE,GAAGg1C,GAAG,CAACjI,UAAU,EAAE4N,MAAM,EAAEC,OAAO,EAAEC,SAAS,EAAEC,mBAAmB,EAAEC,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAEC,YAAY,EAAEC,UAAU,KAAmIC,GAAG7H,GAArHvzC,EAAE,GAAG60C,GAAG,CAACwG,QAAQ,EAAEC,cAAc,EAAEC,eAAe,EAAE9F,OAAO,EAAEC,QAAQ,EAAEH,QAAQ,EAAEC,SAAS,EAAEG,iBAAiBC,MAA0E4F,GAAGjI,GAA3DvzC,EAAE,GAAGs0C,GAAG,CAACvV,aAAa,EAAE2X,YAAY,EAAEC,cAAc,KAC/P8E,GAAGlI,GAD6QvzC,EAAE,GAAGg1C,GAAG,CAAC0G,OAAO,SAAS9uC,GAAG,MAAM,WAAWA,EAAEA,EAAE8uC,OAAO,gBAAgB9uC,GAAGA,EAAE+uC,YAAY,GAClfC,OAAO,SAAShvC,GAAG,MAAM,WAAWA,EAAEA,EAAEgvC,OAAO,gBAAgBhvC,GAAGA,EAAEivC,YAAY,eAAejvC,GAAGA,EAAEkvC,WAAW,GAAGC,OAAO,EAAEC,UAAU,KAAcC,GAAG,CAAC,EAAE,GAAG,GAAG,IAAIC,GAAG5d,GAAI,qBAAqB16B,OAAOu4C,GAAG,KAAK7d,GAAI,iBAAiBz6B,WAAWs4C,GAAGt4C,SAASu4C,cAAc,IAAIC,GAAG/d,GAAI,cAAc16B,SAASu4C,GAAGG,GAAGhe,KAAM4d,IAAIC,IAAI,EAAEA,IAAI,IAAIA,IAAII,GAAG9gC,OAAOyG,aAAa,IAAIs6B,IAAG,EAC1W,SAASC,GAAG7vC,EAAEC,GAAG,OAAOD,GAAG,IAAK,QAAQ,OAAO,IAAIqvC,GAAGp1C,QAAQgG,EAAEsmC,SAAS,IAAK,UAAU,OAAO,MAAMtmC,EAAEsmC,QAAQ,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,OAAM,EAAG,QAAQ,OAAM,GAAI,SAASuJ,GAAG9vC,GAAc,MAAM,iBAAjBA,EAAEA,EAAEkoC,SAAkC,SAASloC,EAAEA,EAAEvB,KAAK,KAAK,IAAIsxC,IAAG,EAE9Q,IAAIC,GAAG,CAACC,OAAM,EAAGC,MAAK,EAAGC,UAAS,EAAG,kBAAiB,EAAGC,OAAM,EAAGC,OAAM,EAAGC,QAAO,EAAGz2B,UAAS,EAAGva,OAAM,EAAGia,QAAO,EAAGg3B,KAAI,EAAGC,MAAK,EAAG3oB,MAAK,EAAGjP,KAAI,EAAG63B,MAAK,GAAI,SAASC,GAAG1wC,GAAG,IAAIC,EAAED,GAAGA,EAAEg1B,UAAUh1B,EAAEg1B,SAASjrB,cAAc,MAAM,UAAU9J,IAAI+vC,GAAGhwC,EAAEzF,MAAM,aAAa0F,EAAQ,SAAS0wC,GAAG3wC,EAAEC,EAAE5M,EAAEC,GAAGopC,GAAGppC,GAAsB,GAAnB2M,EAAE2wC,GAAG3wC,EAAE,aAAgBxJ,SAASpD,EAAE,IAAI20C,GAAG,WAAW,SAAS,KAAK30C,EAAEC,GAAG0M,EAAErJ,KAAK,CAACk6C,MAAMx9C,EAAEwqB,UAAU5d,KAAK,IAAI6wC,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAGhxC,GAAGixC,GAAGjxC,EAAE,GAAG,SAASkxC,GAAGlxC,GAAe,GAAGy1B,EAAT0b,GAAGnxC,IAAY,OAAOA,EACne,SAASoxC,GAAGpxC,EAAEC,GAAG,GAAG,WAAWD,EAAE,OAAOC,EAAE,IAAIoxC,IAAG,EAAG,GAAG3f,EAAG,CAAC,IAAI4f,GAAG,GAAG5f,EAAG,CAAC,IAAI6f,GAAG,YAAYt6C,SAAS,IAAIs6C,GAAG,CAAC,IAAIC,GAAGv6C,SAASmD,cAAc,OAAOo3C,GAAG12C,aAAa,UAAU,WAAWy2C,GAAG,mBAAoBC,GAAGC,QAAQH,GAAGC,QAAQD,IAAG,EAAGD,GAAGC,MAAMr6C,SAASu4C,cAAc,EAAEv4C,SAASu4C,cAAc,SAASkC,KAAKZ,KAAKA,GAAGa,YAAY,mBAAmBC,IAAIb,GAAGD,GAAG,MAAM,SAASc,GAAG5xC,GAAG,GAAG,UAAUA,EAAEmyB,cAAc+e,GAAGH,IAAI,CAAC,IAAI9wC,EAAE,GAAyB,GAAtB0wC,GAAG1wC,EAAE8wC,GAAG/wC,EAAEg8B,GAAGh8B,IAAIA,EAAEgxC,GAAMhU,GAAGh9B,EAAEC,OAAO,CAAC+8B,IAAG,EAAG,IAAIJ,GAAG58B,EAAEC,GAAT,QAAoB+8B,IAAG,EAAGE,QAC3e,SAAS2U,GAAG7xC,EAAEC,EAAE5M,GAAG,YAAY2M,GAAG0xC,KAAUX,GAAG19C,GAARy9C,GAAG7wC,GAAU6xC,YAAY,mBAAmBF,KAAK,aAAa5xC,GAAG0xC,KAAK,SAASK,GAAG/xC,GAAG,GAAG,oBAAoBA,GAAG,UAAUA,GAAG,YAAYA,EAAE,OAAOkxC,GAAGH,IAAI,SAASiB,GAAGhyC,EAAEC,GAAG,GAAG,UAAUD,EAAE,OAAOkxC,GAAGjxC,GAAG,SAASgyC,GAAGjyC,EAAEC,GAAG,GAAG,UAAUD,GAAG,WAAWA,EAAE,OAAOkxC,GAAGjxC,GAAmE,IAAIiyC,GAAG,mBAAoBx+C,OAAOqoC,GAAGroC,OAAOqoC,GAA5G,SAAY/7B,EAAEC,GAAG,OAAOD,IAAIC,IAAI,IAAID,GAAG,EAAEA,GAAI,EAAEC,IAAID,GAAIA,GAAGC,GAAIA,GAAoDkyC,GAAGz+C,OAAOkB,UAAUC,eAC7a,SAASu9C,GAAGpyC,EAAEC,GAAG,GAAGiyC,GAAGlyC,EAAEC,GAAG,OAAM,EAAG,GAAG,iBAAkBD,GAAG,OAAOA,GAAG,iBAAkBC,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAI5M,EAAEK,OAAOkH,KAAKoF,GAAG1M,EAAEI,OAAOkH,KAAKqF,GAAG,GAAG5M,EAAEoD,SAASnD,EAAEmD,OAAO,OAAM,EAAG,IAAInD,EAAE,EAAEA,EAAED,EAAEoD,OAAOnD,IAAI,IAAI6+C,GAAGh/C,KAAK8M,EAAE5M,EAAEC,MAAM4+C,GAAGlyC,EAAE3M,EAAEC,IAAI2M,EAAE5M,EAAEC,KAAK,OAAM,EAAG,OAAM,EAAG,SAAS++C,GAAGryC,GAAG,KAAKA,GAAGA,EAAErG,YAAYqG,EAAEA,EAAErG,WAAW,OAAOqG,EAClU,SAASsyC,GAAGtyC,EAAEC,GAAG,IAAwB3M,EAApBD,EAAEg/C,GAAGryC,GAAO,IAAJA,EAAE,EAAY3M,GAAG,CAAC,GAAG,IAAIA,EAAE0kC,SAAS,CAA0B,GAAzBzkC,EAAE0M,EAAE3M,EAAE8jC,YAAY1gC,OAAUuJ,GAAGC,GAAG3M,GAAG2M,EAAE,MAAM,CAACujB,KAAKnwB,EAAEogB,OAAOxT,EAAED,GAAGA,EAAE1M,EAAE0M,EAAE,CAAC,KAAK3M,GAAG,CAAC,GAAGA,EAAEmG,YAAY,CAACnG,EAAEA,EAAEmG,YAAY,MAAMwG,EAAE3M,EAAEA,EAAEyG,WAAWzG,OAAE,EAAOA,EAAEg/C,GAAGh/C,IAC1N,SAASk/C,KAAK,IAAI,IAAIvyC,EAAEhJ,OAAOiJ,EAAE01B,IAAK11B,aAAaD,EAAEpI,mBAAmB,CAAC,IAAI,IAAIvE,EAAE,iBAAkB4M,EAAEuyC,cAAcl4B,SAASve,KAAK,MAAMzI,GAAGD,GAAE,EAAG,IAAGA,EAAyB,MAAM4M,EAAE01B,GAA/B31B,EAAEC,EAAEuyC,eAAgCv7C,UAAU,OAAOgJ,EAAE,SAASwyC,GAAGzyC,GAAG,IAAIC,EAAED,GAAGA,EAAEg1B,UAAUh1B,EAAEg1B,SAASjrB,cAAc,OAAO9J,IAAI,UAAUA,IAAI,SAASD,EAAEzF,MAAM,WAAWyF,EAAEzF,MAAM,QAAQyF,EAAEzF,MAAM,QAAQyF,EAAEzF,MAAM,aAAayF,EAAEzF,OAAO,aAAa0F,GAAG,SAASD,EAAE0yC,iBACxZ,IAAIC,GAAGjhB,GAAI,iBAAiBz6B,UAAU,IAAIA,SAASu4C,aAAaoD,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKC,IAAG,EAC3F,SAASC,GAAGhzC,EAAEC,EAAE5M,GAAG,IAAIC,EAAED,EAAE2D,SAAS3D,EAAEA,EAAE4D,SAAS,IAAI5D,EAAE0kC,SAAS1kC,EAAEA,EAAEojC,cAAcsc,IAAI,MAAMH,IAAIA,KAAKjd,EAAGriC,KAAU,mBAALA,EAAEs/C,KAAyBH,GAAGn/C,GAAGA,EAAE,CAACgvB,MAAMhvB,EAAE2/C,eAAe72B,IAAI9oB,EAAE4/C,cAAuF5/C,EAAE,CAAC6/C,YAA3E7/C,GAAGA,EAAEmjC,eAAenjC,EAAEmjC,cAAc2c,aAAap8C,QAAQoH,gBAA+B+0C,WAAWE,aAAa//C,EAAE+/C,aAAaC,UAAUhgD,EAAEggD,UAAUC,YAAYjgD,EAAEigD,aAAcT,IAAIV,GAAGU,GAAGx/C,KAAKw/C,GAAGx/C,EAAsB,GAApBA,EAAEs9C,GAAGiC,GAAG,aAAgBp8C,SAASwJ,EAAE,IAAI+nC,GAAG,WAAW,SAAS,KAAK/nC,EAAE5M,GAAG2M,EAAErJ,KAAK,CAACk6C,MAAM5wC,EAAE4d,UAAUvqB,IAAI2M,EAAE1I,OAAOq7C,MACjfxQ,GAAG,mjBAAmjBj8B,MAAM,KAC5jB,GAAGi8B,GAAG,oRAAoRj8B,MAAM,KAAK,GAAGi8B,GAAGD,GAAG,GAAG,IAAI,IAAIqR,GAAG,qFAAqFrtC,MAAM,KAAKstC,GAAG,EAAEA,GAAGD,GAAG/8C,OAAOg9C,KAAKvR,GAAG94B,IAAIoqC,GAAGC,IAAI,GAAGhiB,EAAG,eAAe,CAAC,WAAW,cACleA,EAAG,eAAe,CAAC,WAAW,cAAcA,EAAG,iBAAiB,CAAC,aAAa,gBAAgBA,EAAG,iBAAiB,CAAC,aAAa,gBAAgBD,EAAG,WAAW,oEAAoErrB,MAAM,MAAMqrB,EAAG,WAAW,uFAAuFrrB,MAAM,MAAMqrB,EAAG,gBAAgB,CAAC,iBAAiB,WAAW,YAAY,UAAUA,EAAG,mBAAmB,2DAA2DrrB,MAAM,MAC5fqrB,EAAG,qBAAqB,6DAA6DrrB,MAAM,MAAMqrB,EAAG,sBAAsB,8DAA8DrrB,MAAM,MAAM,IAAIutC,GAAG,sNAAsNvtC,MAAM,KAAKwtC,GAAG,IAAIriB,IAAI,0CAA0CnrB,MAAM,KAAK/P,OAAOs9C,KACnf,SAASE,GAAG5zC,EAAEC,EAAE5M,GAAG,IAAIC,EAAE0M,EAAEzF,MAAM,gBAAgByF,EAAE8mC,cAAczzC,EAlDjE,SAAY2M,EAAEC,EAAE5M,EAAEC,EAAEyE,EAAEuI,EAAEI,EAAEC,EAAEI,GAA4B,GAAzB88B,GAAGzmC,MAAMhC,KAAKiC,WAAcmmC,GAAG,CAAC,IAAGA,GAAgC,MAAMnkC,MAAM6xB,EAAE,MAA1C,IAAIj4B,EAAEwqC,GAAGD,IAAG,EAAGC,GAAG,KAA8BC,KAAKA,IAAG,EAAGC,GAAG1qC,IAkDjE4gD,CAAGvgD,EAAE2M,OAAE,EAAOD,GAAGA,EAAE8mC,cAAc,KACpG,SAASmK,GAAGjxC,EAAEC,GAAGA,EAAE,IAAO,EAAFA,GAAK,IAAI,IAAI5M,EAAE,EAAEA,EAAE2M,EAAEvJ,OAAOpD,IAAI,CAAC,IAAIC,EAAE0M,EAAE3M,GAAG0E,EAAEzE,EAAEu9C,MAAMv9C,EAAEA,EAAEuqB,UAAU7d,EAAE,CAAC,IAAIM,OAAE,EAAO,GAAGL,EAAE,IAAI,IAAIS,EAAEpN,EAAEmD,OAAO,EAAE,GAAGiK,EAAEA,IAAI,CAAC,IAAIC,EAAErN,EAAEoN,GAAGK,EAAEJ,EAAEmzC,SAAS7gD,EAAE0N,EAAEmmC,cAA2B,GAAbnmC,EAAEA,EAAEod,SAAYhd,IAAIT,GAAGvI,EAAEmvC,uBAAuB,MAAMlnC,EAAE4zC,GAAG77C,EAAE4I,EAAE1N,GAAGqN,EAAES,OAAO,IAAIL,EAAE,EAAEA,EAAEpN,EAAEmD,OAAOiK,IAAI,CAAoD,GAA5CK,GAAPJ,EAAErN,EAAEoN,IAAOozC,SAAS7gD,EAAE0N,EAAEmmC,cAAcnmC,EAAEA,EAAEod,SAAYhd,IAAIT,GAAGvI,EAAEmvC,uBAAuB,MAAMlnC,EAAE4zC,GAAG77C,EAAE4I,EAAE1N,GAAGqN,EAAES,IAAI,GAAG28B,GAAG,MAAM19B,EAAE29B,GAAGD,IAAG,EAAGC,GAAG,KAAK39B,EAC1a,SAASssB,GAAEtsB,EAAEC,GAAG,IAAI5M,EAAE4M,EAAE8zC,SAAI,IAAS1gD,IAAIA,EAAE4M,EAAE8zC,IAAI,IAAIziB,KAAK,IAAIh+B,EAAE0M,EAAE,WAAW3M,EAAEmyB,IAAIlyB,KAAK0gD,GAAG/zC,EAAED,EAAE,GAAE,GAAI3M,EAAEkf,IAAIjf,IAAI,SAAS2gD,GAAGj0C,EAAEC,EAAE5M,GAAG,IAAIC,EAAE,EAAE2M,IAAI3M,GAAG,GAAG0gD,GAAG3gD,EAAE2M,EAAE1M,EAAE2M,GAAG,IAAIi0C,GAAG,kBAAkBn0B,KAAKmJ,SAAS/zB,SAAS,IAAI+L,MAAM,GAAG,SAASizC,GAAGn0C,GAAG,IAAIA,EAAEk0C,IAAI,CAACl0C,EAAEk0C,KAAI,EAAG7iB,EAAGx2B,SAAQ,SAASoF,GAAG,oBAAoBA,IAAI0zC,GAAGnuB,IAAIvlB,IAAIg0C,GAAGh0C,GAAE,EAAGD,GAAGi0C,GAAGh0C,GAAE,EAAGD,OAAM,IAAIC,EAAE,IAAID,EAAE+3B,SAAS/3B,EAAEA,EAAEy2B,cAAc,OAAOx2B,GAAGA,EAAEi0C,MAAMj0C,EAAEi0C,KAAI,EAAGD,GAAG,mBAAkB,EAAGh0C,KAC7a,SAAS+zC,GAAGh0C,EAAEC,EAAE5M,EAAEC,GAAG,IAAIyE,EAAEmqC,GAAGruC,IAAIoM,GAAG,YAAO,IAASlI,EAAE,EAAEA,GAAG,KAAK,EAAEA,EAAE8tC,GAAG,MAAM,KAAK,EAAE9tC,EAAEguC,GAAG,MAAM,QAAQhuC,EAAE+tC,GAAGzyC,EAAE0E,EAAEvD,KAAK,KAAKyL,EAAE5M,EAAE2M,GAAGjI,OAAE,GAAQqlC,IAAI,eAAen9B,GAAG,cAAcA,GAAG,UAAUA,IAAIlI,GAAE,GAAIzE,OAAE,IAASyE,EAAEiI,EAAErC,iBAAiBsC,EAAE5M,EAAE,CAAC+gD,SAAQ,EAAGC,QAAQt8C,IAAIiI,EAAErC,iBAAiBsC,EAAE5M,GAAE,QAAI,IAAS0E,EAAEiI,EAAErC,iBAAiBsC,EAAE5M,EAAE,CAACghD,QAAQt8C,IAAIiI,EAAErC,iBAAiBsC,EAAE5M,GAAE,GACpW,SAAS4yC,GAAGjmC,EAAEC,EAAE5M,EAAEC,EAAEyE,GAAG,IAAIuI,EAAEhN,EAAE,GAAG,IAAO,EAAF2M,IAAM,IAAO,EAAFA,IAAM,OAAO3M,EAAE0M,EAAE,OAAO,CAAC,GAAG,OAAO1M,EAAE,OAAO,IAAIoN,EAAEpN,EAAEshC,IAAI,GAAG,IAAIl0B,GAAG,IAAIA,EAAE,CAAC,IAAIC,EAAErN,EAAEkpC,UAAUmE,cAAc,GAAGhgC,IAAI5I,GAAG,IAAI4I,EAAEo3B,UAAUp3B,EAAE7G,aAAa/B,EAAE,MAAM,GAAG,IAAI2I,EAAE,IAAIA,EAAEpN,EAAE0qC,OAAO,OAAOt9B,GAAG,CAAC,IAAIK,EAAEL,EAAEk0B,IAAI,IAAG,IAAI7zB,GAAG,IAAIA,MAAKA,EAAEL,EAAE87B,UAAUmE,iBAAkB5oC,GAAG,IAAIgJ,EAAEg3B,UAAUh3B,EAAEjH,aAAa/B,GAAE,OAAO2I,EAAEA,EAAEs9B,OAAO,KAAK,OAAOr9B,GAAG,CAAS,GAAG,QAAXD,EAAE4/B,GAAG3/B,IAAe,OAAe,GAAG,KAAXI,EAAEL,EAAEk0B,MAAc,IAAI7zB,EAAE,CAACzN,EAAEgN,EAAEI,EAAE,SAASV,EAAEW,EAAEA,EAAE7G,YAAYxG,EAAEA,EAAE0qC,QAzD7c,SAAYh+B,EAAEC,EAAE5M,GAAG,GAAG4pC,GAAG,OAAOj9B,EAAEC,EAAE5M,GAAG4pC,IAAG,EAAG,IAAWF,GAAG/8B,EAAEC,EAAE5M,GAAlB,QAA6B4pC,IAAG,EAAGC,MAyDoYoX,EAAG,WAAW,IAAIhhD,EAAEgN,EAAEvI,EAAEikC,GAAG3oC,GAAGqN,EAAE,GACpfV,EAAE,CAAC,IAAIW,EAAEshC,GAAGpuC,IAAImM,GAAG,QAAG,IAASW,EAAE,CAAC,IAAII,EAAEinC,GAAG1a,EAAEttB,EAAE,OAAOA,GAAG,IAAK,WAAW,GAAG,IAAIsmC,GAAGjzC,GAAG,MAAM2M,EAAE,IAAK,UAAU,IAAK,QAAQe,EAAE2sC,GAAG,MAAM,IAAK,UAAUpgB,EAAE,QAAQvsB,EAAE4oC,GAAG,MAAM,IAAK,WAAWrc,EAAE,OAAOvsB,EAAE4oC,GAAG,MAAM,IAAK,aAAa,IAAK,YAAY5oC,EAAE4oC,GAAG,MAAM,IAAK,QAAQ,GAAG,IAAIt2C,EAAE41C,OAAO,MAAMjpC,EAAE,IAAK,WAAW,IAAK,WAAW,IAAK,YAAY,IAAK,YAAY,IAAK,UAAU,IAAK,WAAW,IAAK,YAAY,IAAK,cAAce,EAAEyoC,GAAG,MAAM,IAAK,OAAO,IAAK,UAAU,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,OAAOzoC,EAC1iB0oC,GAAG,MAAM,IAAK,cAAc,IAAK,WAAW,IAAK,YAAY,IAAK,aAAa1oC,EAAEytC,GAAG,MAAM,KAAK3M,GAAG,KAAKC,GAAG,KAAKC,GAAGhhC,EAAE6oC,GAAG,MAAM,KAAK5H,GAAGjhC,EAAE6tC,GAAG,MAAM,IAAK,SAAS7tC,EAAEonC,GAAG,MAAM,IAAK,QAAQpnC,EAAE8tC,GAAG,MAAM,IAAK,OAAO,IAAK,MAAM,IAAK,QAAQ9tC,EAAEipC,GAAG,MAAM,IAAK,oBAAoB,IAAK,qBAAqB,IAAK,gBAAgB,IAAK,cAAc,IAAK,cAAc,IAAK,aAAa,IAAK,cAAc,IAAK,YAAYjpC,EAAE+sC,GAAG,IAAItnC,EAAE,IAAO,EAAFvG,GAAKwsB,GAAGjmB,GAAG,WAAWxG,EAAEuqB,EAAE/jB,EAAE,OAAO7F,EAAEA,EAAE,UAAU,KAAKA,EAAE6F,EAAE,GAAG,IAAI,IAAQ/R,EAAJX,EAAER,EAAI,OAC/eQ,GAAG,CAAK,IAAI62B,GAARl2B,EAAEX,GAAU0oC,UAAsF,GAA5E,IAAI/nC,EAAEmgC,KAAK,OAAOjK,IAAIl2B,EAAEk2B,EAAE,OAAOJ,IAAc,OAAVI,EAAEwS,GAAGrpC,EAAEy2B,KAAY/jB,EAAE7P,KAAK49C,GAAGzgD,EAAE62B,EAAEl2B,MAASg4B,EAAE,MAAM34B,EAAEA,EAAEkqC,OAAO,EAAEx3B,EAAE/P,SAASkK,EAAE,IAAII,EAAEJ,EAAE2sB,EAAE,KAAKj6B,EAAE0E,GAAG2I,EAAE/J,KAAK,CAACk6C,MAAMlwC,EAAEkd,UAAUrX,MAAM,GAAG,IAAO,EAAFvG,GAAK,CAA4E,GAAnCc,EAAE,aAAaf,GAAG,eAAeA,KAAtEW,EAAE,cAAcX,GAAG,gBAAgBA,IAA2C,IAAO,GAAFC,MAAQqtB,EAAEj6B,EAAE81C,eAAe91C,EAAE+1C,eAAe9I,GAAGhT,KAAIA,EAAEknB,OAAgBzzC,GAAGJ,KAAGA,EAAE5I,EAAEf,SAASe,EAAEA,GAAG4I,EAAE5I,EAAE0+B,eAAe91B,EAAEyyC,aAAazyC,EAAE8zC,aAAaz9C,OAAU+J,GAAqCA,EAAEzN,EAAiB,QAAfg6B,GAAnCA,EAAEj6B,EAAE81C,eAAe91C,EAAEg2C,WAAkB/I,GAAGhT,GAAG,QACleA,KAARb,EAAEqR,GAAGxQ,KAAU,IAAIA,EAAEsH,KAAK,IAAItH,EAAEsH,OAAKtH,EAAE,QAAUvsB,EAAE,KAAKusB,EAAEh6B,GAAKyN,IAAIusB,GAAE,CAAgU,GAA/T9mB,EAAEgjC,GAAG7e,EAAE,eAAeJ,EAAE,eAAez2B,EAAE,QAAW,eAAekM,GAAG,gBAAgBA,IAAEwG,EAAEsnC,GAAGnjB,EAAE,iBAAiBJ,EAAE,iBAAiBz2B,EAAE,WAAU24B,EAAE,MAAM1rB,EAAEJ,EAAEwwC,GAAGpwC,GAAGtM,EAAE,MAAM64B,EAAE3sB,EAAEwwC,GAAG7jB,IAAG3sB,EAAE,IAAI6F,EAAEmkB,EAAE72B,EAAE,QAAQiN,EAAE1N,EAAE0E,IAAKR,OAAOk1B,EAAE9rB,EAAEwoC,cAAc10C,EAAEk2B,EAAE,KAAK2V,GAAGvoC,KAAKzE,KAAIkT,EAAE,IAAIA,EAAE+jB,EAAEz2B,EAAE,QAAQw5B,EAAEj6B,EAAE0E,IAAKR,OAAO9C,EAAE+R,EAAE2iC,cAAc1c,EAAE9B,EAAEnkB,GAAGimB,EAAE9B,EAAK5pB,GAAGusB,EAAErtB,EAAE,CAAa,IAARsqB,EAAE+C,EAAEx5B,EAAE,EAAMW,EAAhB+R,EAAEzF,EAAkBtM,EAAEA,EAAEigD,GAAGjgD,GAAGX,IAAQ,IAAJW,EAAE,EAAMk2B,EAAEJ,EAAEI,EAAEA,EAAE+pB,GAAG/pB,GAAGl2B,IAAI,KAAK,EAAEX,EAAEW,GAAG+R,EAAEkuC,GAAGluC,GAAG1S,IAAI,KAAK,EAAEW,EAAEX,GAAGy2B,EACpfmqB,GAAGnqB,GAAG91B,IAAI,KAAKX,KAAK,CAAC,GAAG0S,IAAI+jB,GAAG,OAAOA,GAAG/jB,IAAI+jB,EAAEwT,UAAU,MAAM99B,EAAEuG,EAAEkuC,GAAGluC,GAAG+jB,EAAEmqB,GAAGnqB,GAAG/jB,EAAE,UAAUA,EAAE,KAAK,OAAOzF,GAAG4zC,GAAGj0C,EAAEC,EAAEI,EAAEyF,GAAE,GAAI,OAAO8mB,GAAG,OAAOb,GAAGkoB,GAAGj0C,EAAE+rB,EAAEa,EAAE9mB,GAAE,GAAiE,GAAG,YAA1CzF,GAAjBJ,EAAErN,EAAE69C,GAAG79C,GAAG0D,QAAWg+B,UAAUr0B,EAAEq0B,SAASjrB,gBAA+B,UAAUhJ,GAAG,SAASJ,EAAEpG,KAAK,IAAI8yB,EAAE+jB,QAAQ,GAAGV,GAAG/vC,GAAG,GAAG0wC,GAAGhkB,EAAE4kB,OAAO,CAAC5kB,EAAE0kB,GAAG,IAAI7kB,EAAE2kB,QAAQ9wC,EAAEJ,EAAEq0B,WAAW,UAAUj0B,EAAEgJ,gBAAgB,aAAapJ,EAAEpG,MAAM,UAAUoG,EAAEpG,QAAQ8yB,EAAE2kB,IAClV,OADyV3kB,IAAIA,EAAEA,EAAErtB,EAAE1M,IAAKq9C,GAAGjwC,EAAE2sB,EAAEh6B,EAAE0E,IAAWm1B,GAAGA,EAAEltB,EAAEW,EAAErN,GAAG,aAAa0M,IAAIktB,EAAEvsB,EAAEq1B,gBACte9I,EAAEkJ,YAAY,WAAWz1B,EAAEpG,MAAMg8B,GAAG51B,EAAE,SAASA,EAAE1M,QAAOi5B,EAAE55B,EAAE69C,GAAG79C,GAAG0D,OAAcgJ,GAAG,IAAK,WAAa0wC,GAAGxjB,IAAI,SAASA,EAAEwlB,mBAAgBE,GAAG1lB,EAAE2lB,GAAGv/C,EAAEw/C,GAAG,MAAK,MAAM,IAAK,WAAWA,GAAGD,GAAGD,GAAG,KAAK,MAAM,IAAK,YAAYG,IAAG,EAAG,MAAM,IAAK,cAAc,IAAK,UAAU,IAAK,UAAUA,IAAG,EAAGC,GAAGtyC,EAAErN,EAAE0E,GAAG,MAAM,IAAK,kBAAkB,GAAG46C,GAAG,MAAM,IAAK,UAAU,IAAK,QAAQK,GAAGtyC,EAAErN,EAAE0E,GAAG,IAAI+K,EAAE,GAAGwsC,GAAGrvC,EAAE,CAAC,OAAOD,GAAG,IAAK,mBAAmB,IAAIqM,EAAE,qBAAqB,MAAMpM,EAAE,IAAK,iBAAiBoM,EAAE,mBAAmB,MAAMpM,EACrf,IAAK,oBAAoBoM,EAAE,sBAAsB,MAAMpM,EAAEoM,OAAE,OAAY0jC,GAAGF,GAAG7vC,EAAE3M,KAAKgZ,EAAE,oBAAoB,YAAYrM,GAAG,MAAM3M,EAAEkzC,UAAUl6B,EAAE,sBAAsBA,IAAIqjC,IAAI,OAAOr8C,EAAEu6C,SAASmC,IAAI,uBAAuB1jC,EAAE,qBAAqBA,GAAG0jC,KAAKjtC,EAAEujC,OAAYF,GAAG,UAARD,GAAGnuC,GAAkBmuC,GAAGjyC,MAAMiyC,GAAG/O,YAAY4Y,IAAG,IAAe,GAAV7iB,EAAE0jB,GAAGt9C,EAAE+Y,IAAO5V,SAAS4V,EAAE,IAAI49B,GAAG59B,EAAErM,EAAE,KAAK3M,EAAE0E,GAAG2I,EAAE/J,KAAK,CAACk6C,MAAMxkC,EAAEwR,UAAUqP,IAAIpqB,EAAEuJ,EAAE5N,KAAKqE,EAAW,QAARA,EAAEgtC,GAAGz8C,MAAcgZ,EAAE5N,KAAKqE,MAASA,EAAE2sC,GAzBjK,SAAYzvC,EAAEC,GAAG,OAAOD,GAAG,IAAK,iBAAiB,OAAO8vC,GAAG7vC,GAAG,IAAK,WAAW,OAAG,KAAKA,EAAE4tC,MAAa,MAAK+B,IAAG,EAAUD,IAAG,IAAK,YAAY,OAAO3vC,EAAEC,EAAExB,QAASkxC,IAAIC,GAAG,KAAK5vC,EAAE,QAAQ,OAAO,MAyBxB40C,CAAG50C,EAAE3M,GAxB1b,SAAY2M,EAAEC,GAAG,GAAG8vC,GAAG,MAAM,mBAAmB/vC,IAAIsvC,IAAIO,GAAG7vC,EAAEC,IAAID,EAAEqmC,KAAKD,GAAGD,GAAGD,GAAG,KAAK6J,IAAG,EAAG/vC,GAAG,KAAK,OAAOA,GAAG,IAAK,QAAQ,OAAO,KAAK,IAAK,WAAW,KAAKC,EAAE0oC,SAAS1oC,EAAE4oC,QAAQ5oC,EAAE6oC,UAAU7oC,EAAE0oC,SAAS1oC,EAAE4oC,OAAO,CAAC,GAAG5oC,EAAE40C,MAAM,EAAE50C,EAAE40C,KAAKp+C,OAAO,OAAOwJ,EAAE40C,KAAK,GAAG50C,EAAE4tC,MAAM,OAAOh/B,OAAOyG,aAAarV,EAAE4tC,OAAO,OAAO,KAAK,IAAK,iBAAiB,OAAO6B,IAAI,OAAOzvC,EAAE2tC,OAAO,KAAK3tC,EAAExB,KAAK,QAAQ,OAAO,MAwB2Dq2C,CAAG90C,EAAE3M,MAA2B,GAAxBC,EAAEs9C,GAAGt9C,EAAE,kBAAqBmD,SAASsB,EAAE,IAAIkyC,GAAG,gBACnf,cAAc,KAAK52C,EAAE0E,GAAG2I,EAAE/J,KAAK,CAACk6C,MAAM94C,EAAE8lB,UAAUvqB,IAAIyE,EAAE0G,KAAKqE,IAAGmuC,GAAGvwC,EAAET,MAAK,SAASs0C,GAAGv0C,EAAEC,EAAE5M,GAAG,MAAM,CAACygD,SAAS9zC,EAAE+d,SAAS9d,EAAE6mC,cAAczzC,GAAG,SAASu9C,GAAG5wC,EAAEC,GAAG,IAAI,IAAI5M,EAAE4M,EAAE,UAAU3M,EAAE,GAAG,OAAO0M,GAAG,CAAC,IAAIjI,EAAEiI,EAAEM,EAAEvI,EAAEykC,UAAU,IAAIzkC,EAAE68B,KAAK,OAAOt0B,IAAIvI,EAAEuI,EAAY,OAAVA,EAAE68B,GAAGn9B,EAAE3M,KAAYC,EAAEgP,QAAQiyC,GAAGv0C,EAAEM,EAAEvI,IAAc,OAAVuI,EAAE68B,GAAGn9B,EAAEC,KAAY3M,EAAEqD,KAAK49C,GAAGv0C,EAAEM,EAAEvI,KAAKiI,EAAEA,EAAEg+B,OAAO,OAAO1qC,EAAE,SAASohD,GAAG10C,GAAG,GAAG,OAAOA,EAAE,OAAO,KAAK,GAAGA,EAAEA,EAAEg+B,aAAah+B,GAAG,IAAIA,EAAE40B,KAAK,OAAO50B,GAAI,KACxa,SAAS20C,GAAG30C,EAAEC,EAAE5M,EAAEC,EAAEyE,GAAG,IAAI,IAAIuI,EAAEL,EAAE2mC,WAAWlmC,EAAE,GAAG,OAAOrN,GAAGA,IAAIC,GAAG,CAAC,IAAIqN,EAAEtN,EAAE0N,EAAEJ,EAAEo9B,UAAU9qC,EAAE0N,EAAE67B,UAAU,GAAG,OAAOz7B,GAAGA,IAAIzN,EAAE,MAAM,IAAIqN,EAAEi0B,KAAK,OAAO3hC,IAAI0N,EAAE1N,EAAE8E,EAAa,OAAVgJ,EAAEo8B,GAAG9pC,EAAEiN,KAAYI,EAAE4B,QAAQiyC,GAAGlhD,EAAE0N,EAAEJ,IAAK5I,GAAc,OAAVgJ,EAAEo8B,GAAG9pC,EAAEiN,KAAYI,EAAE/J,KAAK49C,GAAGlhD,EAAE0N,EAAEJ,KAAMtN,EAAEA,EAAE2qC,OAAO,IAAIt9B,EAAEjK,QAAQuJ,EAAErJ,KAAK,CAACk6C,MAAM5wC,EAAE4d,UAAUnd,IAAI,SAASq0C,MAAM,IAAIC,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAGl1C,EAAEC,GAAG,OAAOD,GAAG,IAAK,SAAS,IAAK,QAAQ,IAAK,SAAS,IAAK,WAAW,QAAQC,EAAEk1C,UAAU,OAAM,EAC3b,SAASC,GAAGp1C,EAAEC,GAAG,MAAM,aAAaD,GAAG,WAAWA,GAAG,aAAaA,GAAG,iBAAkBC,EAAE6sB,UAAU,iBAAkB7sB,EAAE6sB,UAAU,iBAAkB7sB,EAAE82B,yBAAyB,OAAO92B,EAAE82B,yBAAyB,MAAM92B,EAAE82B,wBAAwBse,OAAO,IAAIC,GAAG,mBAAoBx0C,WAAWA,gBAAW,EAAOy0C,GAAG,mBAAoB/3B,aAAaA,kBAAa,EAChW,SAASg4B,GAAGx1C,EAAEC,GAAG,IAAI5M,EAAE4M,EAAE3M,EAAE,EAAE,EAAE,CAAC,IAAIyE,EAAE1E,EAAEmG,YAA6B,GAAjBwG,EAAEjG,YAAY1G,GAAM0E,GAAG,IAAIA,EAAEggC,SAAS,GAAY,QAAT1kC,EAAE0E,EAAE0G,MAAc,CAAC,GAAG,IAAInL,EAA0B,OAAvB0M,EAAEjG,YAAYhC,QAAGmpC,GAAGjhC,GAAU3M,QAAQ,MAAMD,GAAG,OAAOA,GAAG,OAAOA,GAAGC,IAAID,EAAE0E,QAAQ1E,GAAG6tC,GAAGjhC,GAAG,SAASw1C,GAAGz1C,GAAG,IAAIA,EAAE+3B,SAAS/3B,EAAEm3B,YAAY,GAAG,IAAIn3B,EAAE+3B,WAAoB,OAAT/3B,EAAEA,EAAEP,QAAeO,EAAEm3B,YAAY,KAAK,SAASue,GAAG11C,GAAG,KAAK,MAAMA,EAAEA,EAAEA,EAAExG,YAAY,CAAC,IAAIyG,EAAED,EAAE+3B,SAAS,GAAG,IAAI93B,GAAG,IAAIA,EAAE,MAAM,GAAG,IAAIA,IAAa,OAATA,EAAED,EAAEvB,OAAc,OAAOwB,GAAG,OAAOA,GAAG,MAAM,OAAOD,EAC5c,SAAS21C,GAAG31C,GAAGA,EAAEA,EAAE41C,gBAAgB,IAAI,IAAI31C,EAAE,EAAED,GAAG,CAAC,GAAG,IAAIA,EAAE+3B,SAAS,CAAC,IAAI1kC,EAAE2M,EAAEvB,KAAK,GAAG,MAAMpL,GAAG,OAAOA,GAAG,OAAOA,EAAE,CAAC,GAAG,IAAI4M,EAAE,OAAOD,EAAEC,QAAQ,OAAO5M,GAAG4M,IAAID,EAAEA,EAAE41C,gBAAgB,OAAO,KAAK,IAAIC,GAAG,EAA0D,IAAIC,GAAG/1B,KAAKmJ,SAAS/zB,SAAS,IAAI+L,MAAM,GAAG60C,GAAG,gBAAgBD,GAAGE,GAAG,gBAAgBF,GAAGtB,GAAG,oBAAoBsB,GAAG/B,GAAG,iBAAiB+B,GACjY,SAASxV,GAAGtgC,GAAG,IAAIC,EAAED,EAAE+1C,IAAI,GAAG91C,EAAE,OAAOA,EAAE,IAAI,IAAI5M,EAAE2M,EAAElG,WAAWzG,GAAG,CAAC,GAAG4M,EAAE5M,EAAEmhD,KAAKnhD,EAAE0iD,IAAI,CAAe,GAAd1iD,EAAE4M,EAAE89B,UAAa,OAAO99B,EAAEs+B,OAAO,OAAOlrC,GAAG,OAAOA,EAAEkrC,MAAM,IAAIv+B,EAAE21C,GAAG31C,GAAG,OAAOA,GAAG,CAAC,GAAG3M,EAAE2M,EAAE+1C,IAAI,OAAO1iD,EAAE2M,EAAE21C,GAAG31C,GAAG,OAAOC,EAAM5M,GAAJ2M,EAAE3M,GAAMyG,WAAW,OAAO,KAAK,SAASyiC,GAAGv8B,GAAkB,QAAfA,EAAEA,EAAE+1C,KAAK/1C,EAAEw0C,MAAc,IAAIx0C,EAAE40B,KAAK,IAAI50B,EAAE40B,KAAK,KAAK50B,EAAE40B,KAAK,IAAI50B,EAAE40B,IAAI,KAAK50B,EAAE,SAASmxC,GAAGnxC,GAAG,GAAG,IAAIA,EAAE40B,KAAK,IAAI50B,EAAE40B,IAAI,OAAO50B,EAAEw8B,UAAU,MAAMnjC,MAAM6xB,EAAE,KAAM,SAASuR,GAAGz8B,GAAG,OAAOA,EAAEg2C,KAAK,KAAK,IAAIC,GAAG,GAAGC,IAAI,EAAE,SAASC,GAAGn2C,GAAG,MAAM,CAACusB,QAAQvsB,GACre,SAASwsB,GAAExsB,GAAG,EAAEk2C,KAAKl2C,EAAEusB,QAAQ0pB,GAAGC,IAAID,GAAGC,IAAI,KAAKA,MAAM,SAASrpB,GAAE7sB,EAAEC,GAAGi2C,KAAKD,GAAGC,IAAIl2C,EAAEusB,QAAQvsB,EAAEusB,QAAQtsB,EAAE,IAAIm2C,GAAG,GAAGjpB,GAAEgpB,GAAGC,IAAIhpB,GAAE+oB,IAAG,GAAIE,GAAGD,GAAG,SAASE,GAAGt2C,EAAEC,GAAG,IAAI5M,EAAE2M,EAAEzF,KAAKg8C,aAAa,IAAIljD,EAAE,OAAO+iD,GAAG,IAAI9iD,EAAE0M,EAAEw8B,UAAU,GAAGlpC,GAAGA,EAAEkjD,8CAA8Cv2C,EAAE,OAAO3M,EAAEmjD,0CAA0C,IAASn2C,EAALvI,EAAE,GAAK,IAAIuI,KAAKjN,EAAE0E,EAAEuI,GAAGL,EAAEK,GAAoH,OAAjHhN,KAAI0M,EAAEA,EAAEw8B,WAAYga,4CAA4Cv2C,EAAED,EAAEy2C,0CAA0C1+C,GAAUA,EAC5d,SAAS2+C,GAAG12C,GAAyB,OAAO,OAA7BA,EAAEA,EAAE22C,mBAA8C,SAASC,KAAKpqB,GAAEY,IAAGZ,GAAEW,IAAG,SAAS0pB,GAAG72C,EAAEC,EAAE5M,GAAG,GAAG85B,GAAEZ,UAAU6pB,GAAG,MAAM/8C,MAAM6xB,EAAE,MAAM2B,GAAEM,GAAEltB,GAAG4sB,GAAEO,GAAE/5B,GAAG,SAASyjD,GAAG92C,EAAEC,EAAE5M,GAAG,IAAIC,EAAE0M,EAAEw8B,UAAgC,GAAtBx8B,EAAEC,EAAE02C,kBAAqB,mBAAoBrjD,EAAEyjD,gBAAgB,OAAO1jD,EAAwB,IAAI,IAAI0E,KAA9BzE,EAAEA,EAAEyjD,kBAAiC,KAAKh/C,KAAKiI,GAAG,MAAM3G,MAAM6xB,EAAE,IAAI2J,EAAG50B,IAAI,UAAUlI,IAAI,OAAO3E,EAAE,GAAGC,EAAEC,GACpX,SAAS0jD,GAAGh3C,GAAyG,OAAtGA,GAAGA,EAAEA,EAAEw8B,YAAYx8B,EAAEi3C,2CAA2Cb,GAAGC,GAAGlpB,GAAEZ,QAAQM,GAAEM,GAAEntB,GAAG6sB,GAAEO,GAAEA,GAAEb,UAAe,EAAG,SAAS2qB,GAAGl3C,EAAEC,EAAE5M,GAAG,IAAIC,EAAE0M,EAAEw8B,UAAU,IAAIlpC,EAAE,MAAM+F,MAAM6xB,EAAE,MAAM73B,GAAG2M,EAAE82C,GAAG92C,EAAEC,EAAEo2C,IAAI/iD,EAAE2jD,0CAA0Cj3C,EAAEwsB,GAAEY,IAAGZ,GAAEW,IAAGN,GAAEM,GAAEntB,IAAIwsB,GAAEY,IAAGP,GAAEO,GAAE/5B,GAAG,IAAI8jD,GAAG,KAAKC,GAAG,KAAKC,GAAGrkB,EAAGhF,wBAAwB,SAASspB,GAAGt3C,EAAEC,GAAG,GAAGD,GAAGA,EAAE+sB,aAAa,CAA4B,IAAI,IAAI15B,KAAnC4M,EAAE7M,EAAE,GAAG6M,GAAGD,EAAEA,EAAE+sB,kBAA4B,IAAS9sB,EAAE5M,KAAK4M,EAAE5M,GAAG2M,EAAE3M,IAAI,OAAO4M,EAAE,OAAOA,EAAE,IAAIs3C,GAAGpB,GAAG,MAAMqB,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAC5e,SAASC,KAAKD,GAAGD,GAAGD,GAAG,KAAK,SAASI,GAAG53C,GAAG,IAAIC,EAAEs3C,GAAGhrB,QAAQC,GAAE+qB,IAAIv3C,EAAEzF,KAAK00B,SAASL,cAAc3uB,EAAE,SAAS43C,GAAG73C,EAAEC,GAAG,KAAK,OAAOD,GAAG,CAAC,IAAI3M,EAAE2M,EAAE+9B,UAAU,IAAI/9B,EAAE83C,WAAW73C,KAAKA,EAAtB,CAAwB,GAAG,OAAO5M,IAAIA,EAAEykD,WAAW73C,KAAKA,EAAE,MAAW5M,EAAEykD,YAAY73C,OAAOD,EAAE83C,YAAY73C,EAAE,OAAO5M,IAAIA,EAAEykD,YAAY73C,GAAGD,EAAEA,EAAEg+B,QAAQ,SAAS+Z,GAAG/3C,EAAEC,GAAGu3C,GAAGx3C,EAAE03C,GAAGD,GAAG,KAAsB,QAAjBz3C,EAAEA,EAAEg4C,eAAuB,OAAOh4C,EAAEi4C,eAAe,IAAKj4C,EAAEk4C,MAAMj4C,KAAKk4C,IAAG,GAAIn4C,EAAEi4C,aAAa,MACna,SAASG,GAAGp4C,EAAEC,GAAG,GAAGy3C,KAAK13C,IAAG,IAAKC,GAAG,IAAIA,EAAmG,GAA7F,iBAAkBA,GAAG,aAAaA,IAAEy3C,GAAG13C,EAAEC,EAAE,YAAWA,EAAE,CAAC4rB,QAAQ7rB,EAAEq4C,aAAap4C,EAAE8O,KAAK,MAAS,OAAO0oC,GAAG,CAAC,GAAG,OAAOD,GAAG,MAAMn+C,MAAM6xB,EAAE,MAAMusB,GAAGx3C,EAAEu3C,GAAGQ,aAAa,CAACE,MAAM,EAAED,aAAah4C,EAAEq4C,WAAW,WAAWb,GAAGA,GAAG1oC,KAAK9O,EAAE,OAAOD,EAAE4uB,cAAc,IAAI2pB,IAAG,EAAG,SAASC,GAAGx4C,GAAGA,EAAEy4C,YAAY,CAACC,UAAU14C,EAAEm+B,cAAcwa,gBAAgB,KAAKC,eAAe,KAAKC,OAAO,CAACC,QAAQ,MAAMC,QAAQ,MAC1a,SAASC,GAAGh5C,EAAEC,GAAGD,EAAEA,EAAEy4C,YAAYx4C,EAAEw4C,cAAcz4C,IAAIC,EAAEw4C,YAAY,CAACC,UAAU14C,EAAE04C,UAAUC,gBAAgB34C,EAAE24C,gBAAgBC,eAAe54C,EAAE44C,eAAeC,OAAO74C,EAAE64C,OAAOE,QAAQ/4C,EAAE+4C,UAAU,SAASE,GAAGj5C,EAAEC,GAAG,MAAM,CAACi5C,UAAUl5C,EAAEm5C,KAAKl5C,EAAE20B,IAAI,EAAEwkB,QAAQ,KAAK9mC,SAAS,KAAKvD,KAAK,MAAM,SAASsqC,GAAGr5C,EAAEC,GAAmB,GAAG,QAAnBD,EAAEA,EAAEy4C,aAAwB,CAAY,IAAIplD,GAAf2M,EAAEA,EAAE64C,QAAeC,QAAQ,OAAOzlD,EAAE4M,EAAE8O,KAAK9O,GAAGA,EAAE8O,KAAK1b,EAAE0b,KAAK1b,EAAE0b,KAAK9O,GAAGD,EAAE84C,QAAQ74C,GACrZ,SAASq5C,GAAGt5C,EAAEC,GAAG,IAAI5M,EAAE2M,EAAEy4C,YAAYnlD,EAAE0M,EAAE+9B,UAAU,GAAG,OAAOzqC,GAAoBD,KAAhBC,EAAEA,EAAEmlD,aAAmB,CAAC,IAAI1gD,EAAE,KAAKuI,EAAE,KAAyB,GAAG,QAAvBjN,EAAEA,EAAEslD,iBAA4B,CAAC,EAAE,CAAC,IAAIj4C,EAAE,CAACw4C,UAAU7lD,EAAE6lD,UAAUC,KAAK9lD,EAAE8lD,KAAKvkB,IAAIvhC,EAAEuhC,IAAIwkB,QAAQ/lD,EAAE+lD,QAAQ9mC,SAASjf,EAAEif,SAASvD,KAAK,MAAM,OAAOzO,EAAEvI,EAAEuI,EAAEI,EAAEJ,EAAEA,EAAEyO,KAAKrO,EAAErN,EAAEA,EAAE0b,WAAW,OAAO1b,GAAG,OAAOiN,EAAEvI,EAAEuI,EAAEL,EAAEK,EAAEA,EAAEyO,KAAK9O,OAAOlI,EAAEuI,EAAEL,EAAiH,OAA/G5M,EAAE,CAACqlD,UAAUplD,EAAEolD,UAAUC,gBAAgB5gD,EAAE6gD,eAAet4C,EAAEu4C,OAAOvlD,EAAEulD,OAAOE,QAAQzlD,EAAEylD,cAAS/4C,EAAEy4C,YAAYplD,GAA4B,QAAnB2M,EAAE3M,EAAEulD,gBAAwBvlD,EAAEslD,gBAAgB14C,EAAED,EAAE+O,KACnf9O,EAAE5M,EAAEulD,eAAe34C,EACnB,SAASs5C,GAAGv5C,EAAEC,EAAE5M,EAAEC,GAAG,IAAIyE,EAAEiI,EAAEy4C,YAAYF,IAAG,EAAG,IAAIj4C,EAAEvI,EAAE4gD,gBAAgBj4C,EAAE3I,EAAE6gD,eAAej4C,EAAE5I,EAAE8gD,OAAOC,QAAQ,GAAG,OAAOn4C,EAAE,CAAC5I,EAAE8gD,OAAOC,QAAQ,KAAK,IAAI/3C,EAAEJ,EAAE1N,EAAE8N,EAAEgO,KAAKhO,EAAEgO,KAAK,KAAK,OAAOrO,EAAEJ,EAAErN,EAAEyN,EAAEqO,KAAK9b,EAAEyN,EAAEK,EAAE,IAAIjM,EAAEkL,EAAE+9B,UAAU,GAAG,OAAOjpC,EAAE,CAAiB,IAAIs2B,GAApBt2B,EAAEA,EAAE2jD,aAAoBG,eAAextB,IAAI1qB,IAAI,OAAO0qB,EAAEt2B,EAAE6jD,gBAAgB1lD,EAAEm4B,EAAErc,KAAK9b,EAAE6B,EAAE8jD,eAAe73C,IAAI,GAAG,OAAOT,EAAE,CAA8B,IAA7B8qB,EAAErzB,EAAE2gD,UAAUh4C,EAAE,EAAE5L,EAAE7B,EAAE8N,EAAE,OAAO,CAACJ,EAAEL,EAAE64C,KAAK,IAAIjlD,EAAEoM,EAAE44C,UAAU,IAAI5lD,EAAEqN,KAAKA,EAAE,CAAC,OAAO7L,IAAIA,EAAEA,EAAEia,KAAK,CAACmqC,UAAUhlD,EAAEilD,KAAK,EAAEvkB,IAAIt0B,EAAEs0B,IAAIwkB,QAAQ94C,EAAE84C,QAAQ9mC,SAAShS,EAAEgS,SACrfvD,KAAK,OAAO/O,EAAE,CAAC,IAAI0rB,EAAE1rB,EAAEstB,EAAEhtB,EAAU,OAARK,EAAEV,EAAE/L,EAAEb,EAASi6B,EAAEsH,KAAK,KAAK,EAAc,GAAG,mBAAflJ,EAAE4B,EAAE8rB,SAAiC,CAAChuB,EAAEM,EAAEv4B,KAAKe,EAAEk3B,EAAEzqB,GAAG,MAAMX,EAAEorB,EAAEM,EAAE,MAAM1rB,EAAE,KAAK,EAAE0rB,EAAEuS,OAAe,MAATvS,EAAEuS,MAAa,IAAI,KAAK,EAAsD,GAAG,OAA3Ct9B,EAAE,mBAAd+qB,EAAE4B,EAAE8rB,SAAgC1tB,EAAEv4B,KAAKe,EAAEk3B,EAAEzqB,GAAG+qB,GAA0B,MAAM1rB,EAAEorB,EAAEh4B,EAAE,GAAGg4B,EAAEzqB,GAAG,MAAMX,EAAE,KAAK,EAAEu4C,IAAG,GAAI,OAAOj4C,EAAEgS,WAAWtS,EAAEi+B,OAAO,GAAe,QAAZt9B,EAAE5I,EAAEghD,SAAiBhhD,EAAEghD,QAAQ,CAACz4C,GAAGK,EAAEhK,KAAK2J,SAASpM,EAAE,CAACglD,UAAUhlD,EAAEilD,KAAKx4C,EAAEi0B,IAAIt0B,EAAEs0B,IAAIwkB,QAAQ94C,EAAE84C,QAAQ9mC,SAAShS,EAAEgS,SAASvD,KAAK,MAAM,OAAOja,GAAG7B,EAAE6B,EAAEZ,EAAE6M,EAAEqqB,GAAGt2B,EAAEA,EAAEia,KAAK7a,EAAEwM,GAAGC,EAAW,GAAG,QAAZL,EAAEA,EAAEyO,MAC5e,IAAsB,QAAnBpO,EAAE5I,EAAE8gD,OAAOC,SAAiB,MAAWx4C,EAAEK,EAAEoO,KAAKpO,EAAEoO,KAAK,KAAKhX,EAAE6gD,eAAej4C,EAAE5I,EAAE8gD,OAAOC,QAAQ,MAAc,OAAOhkD,IAAIiM,EAAEqqB,GAAGrzB,EAAE2gD,UAAU33C,EAAEhJ,EAAE4gD,gBAAgB1lD,EAAE8E,EAAE6gD,eAAe9jD,EAAE0kD,IAAI94C,EAAEV,EAAEk4C,MAAMx3C,EAAEV,EAAEm+B,cAAc/S,GAAG,SAASquB,GAAGz5C,EAAEC,EAAE5M,GAA8B,GAA3B2M,EAAEC,EAAE84C,QAAQ94C,EAAE84C,QAAQ,KAAQ,OAAO/4C,EAAE,IAAIC,EAAE,EAAEA,EAAED,EAAEvJ,OAAOwJ,IAAI,CAAC,IAAI3M,EAAE0M,EAAEC,GAAGlI,EAAEzE,EAAEgf,SAAS,GAAG,OAAOva,EAAE,CAAqB,GAApBzE,EAAEgf,SAAS,KAAKhf,EAAED,EAAK,mBAAoB0E,EAAE,MAAMsB,MAAM6xB,EAAE,IAAInzB,IAAIA,EAAE5E,KAAKG,KAAK,IAAIomD,IAAI,IAAItoB,EAAG9C,WAAW91B,KAC3b,SAASmhD,GAAG35C,EAAEC,EAAE5M,EAAEC,GAA8BD,EAAE,OAAXA,EAAEA,EAAEC,EAAtB2M,EAAED,EAAEm+B,gBAA8Cl+B,EAAE7M,EAAE,GAAG6M,EAAE5M,GAAG2M,EAAEm+B,cAAc9qC,EAAE,IAAI2M,EAAEk4C,QAAQl4C,EAAEy4C,YAAYC,UAAUrlD,GAC3I,IAAIumD,GAAG,CAACtuB,UAAU,SAAStrB,GAAG,SAAOA,EAAEA,EAAE65C,kBAAiB/b,GAAG99B,KAAKA,GAAMyrB,gBAAgB,SAASzrB,EAAEC,EAAE5M,GAAG2M,EAAEA,EAAE65C,gBAAgB,IAAIvmD,EAAEwmD,KAAK/hD,EAAEgiD,GAAG/5C,GAAGM,EAAE24C,GAAG3lD,EAAEyE,GAAGuI,EAAE84C,QAAQn5C,EAAE,MAAS5M,IAAciN,EAAEgS,SAASjf,GAAGgmD,GAAGr5C,EAAEM,GAAG05C,GAAGh6C,EAAEjI,EAAEzE,IAAIk4B,oBAAoB,SAASxrB,EAAEC,EAAE5M,GAAG2M,EAAEA,EAAE65C,gBAAgB,IAAIvmD,EAAEwmD,KAAK/hD,EAAEgiD,GAAG/5C,GAAGM,EAAE24C,GAAG3lD,EAAEyE,GAAGuI,EAAEs0B,IAAI,EAAEt0B,EAAE84C,QAAQn5C,EAAE,MAAS5M,IAAciN,EAAEgS,SAASjf,GAAGgmD,GAAGr5C,EAAEM,GAAG05C,GAAGh6C,EAAEjI,EAAEzE,IAAIi4B,mBAAmB,SAASvrB,EAAEC,GAAGD,EAAEA,EAAE65C,gBAAgB,IAAIxmD,EAAEymD,KAAKxmD,EAAEymD,GAAG/5C,GAAGjI,EAAEkhD,GAAG5lD,EAAEC,GAAGyE,EAAE68B,IAAI,EAAE,MAAS30B,IAAclI,EAAEua,SACjfrS,GAAGo5C,GAAGr5C,EAAEjI,GAAGiiD,GAAGh6C,EAAE1M,EAAED,KAAK,SAAS4mD,GAAGj6C,EAAEC,EAAE5M,EAAEC,EAAEyE,EAAEuI,EAAEI,GAAiB,MAAM,mBAApBV,EAAEA,EAAEw8B,WAAsC0d,sBAAsBl6C,EAAEk6C,sBAAsB5mD,EAAEgN,EAAEI,IAAGT,EAAErL,YAAWqL,EAAErL,UAAUy3B,wBAAsB+lB,GAAG/+C,EAAEC,KAAK8+C,GAAGr6C,EAAEuI,IAC/M,SAAS65C,GAAGn6C,EAAEC,EAAE5M,GAAG,IAAIC,GAAE,EAAGyE,EAAEq+C,GAAO91C,EAAEL,EAAEm6C,YAA2W,MAA/V,iBAAkB95C,GAAG,OAAOA,EAAEA,EAAE83C,GAAG93C,IAAIvI,EAAE2+C,GAAGz2C,GAAGo2C,GAAGlpB,GAAEZ,QAAyBjsB,GAAGhN,EAAE,OAAtBA,EAAE2M,EAAEs2C,eAAwCD,GAAGt2C,EAAEjI,GAAGq+C,IAAIn2C,EAAE,IAAIA,EAAE5M,EAAEiN,GAAGN,EAAEm+B,cAAc,OAAOl+B,EAAEo6C,YAAO,IAASp6C,EAAEo6C,MAAMp6C,EAAEo6C,MAAM,KAAKp6C,EAAE6rB,QAAQ8tB,GAAG55C,EAAEw8B,UAAUv8B,EAAEA,EAAE45C,gBAAgB75C,EAAE1M,KAAI0M,EAAEA,EAAEw8B,WAAYga,4CAA4Cz+C,EAAEiI,EAAEy2C,0CAA0Cn2C,GAAUL,EAC3Z,SAASq6C,GAAGt6C,EAAEC,EAAE5M,EAAEC,GAAG0M,EAAEC,EAAEo6C,MAAM,mBAAoBp6C,EAAEs6C,2BAA2Bt6C,EAAEs6C,0BAA0BlnD,EAAEC,GAAG,mBAAoB2M,EAAEu6C,kCAAkCv6C,EAAEu6C,iCAAiCnnD,EAAEC,GAAG2M,EAAEo6C,QAAQr6C,GAAG45C,GAAGpuB,oBAAoBvrB,EAAEA,EAAEo6C,MAAM,MAC/P,SAASI,GAAGz6C,EAAEC,EAAE5M,EAAEC,GAAG,IAAIyE,EAAEiI,EAAEw8B,UAAUzkC,EAAE6zB,MAAMv4B,EAAE0E,EAAEsiD,MAAMr6C,EAAEm+B,cAAcpmC,EAAES,KAAKkhD,GAAGlB,GAAGx4C,GAAG,IAAIM,EAAEL,EAAEm6C,YAAY,iBAAkB95C,GAAG,OAAOA,EAAEvI,EAAE8zB,QAAQusB,GAAG93C,IAAIA,EAAEo2C,GAAGz2C,GAAGo2C,GAAGlpB,GAAEZ,QAAQx0B,EAAE8zB,QAAQyqB,GAAGt2C,EAAEM,IAAIi5C,GAAGv5C,EAAE3M,EAAE0E,EAAEzE,GAAGyE,EAAEsiD,MAAMr6C,EAAEm+B,cAA2C,mBAA7B79B,EAAEL,EAAEy6C,4BAAiDf,GAAG35C,EAAEC,EAAEK,EAAEjN,GAAG0E,EAAEsiD,MAAMr6C,EAAEm+B,eAAe,mBAAoBl+B,EAAEy6C,0BAA0B,mBAAoB3iD,EAAE4iD,yBAAyB,mBAAoB5iD,EAAE6iD,2BAA2B,mBAAoB7iD,EAAE8iD,qBACve56C,EAAElI,EAAEsiD,MAAM,mBAAoBtiD,EAAE8iD,oBAAoB9iD,EAAE8iD,qBAAqB,mBAAoB9iD,EAAE6iD,2BAA2B7iD,EAAE6iD,4BAA4B36C,IAAIlI,EAAEsiD,OAAOT,GAAGpuB,oBAAoBzzB,EAAEA,EAAEsiD,MAAM,MAAMd,GAAGv5C,EAAE3M,EAAE0E,EAAEzE,GAAGyE,EAAEsiD,MAAMr6C,EAAEm+B,eAAe,mBAAoBpmC,EAAE+iD,oBAAoB96C,EAAEi+B,OAAO,GAAG,IAAI8c,GAAG/5C,MAAMC,QACvT,SAAS+5C,GAAGh7C,EAAEC,EAAE5M,GAAW,GAAG,QAAX2M,EAAE3M,EAAEq5B,MAAiB,mBAAoB1sB,GAAG,iBAAkBA,EAAE,CAAC,GAAG3M,EAAE45B,OAAO,CAAY,GAAX55B,EAAEA,EAAE45B,OAAY,CAAC,GAAG,IAAI55B,EAAEuhC,IAAI,MAAMv7B,MAAM6xB,EAAE,MAAM,IAAI53B,EAAED,EAAEmpC,UAAU,IAAIlpC,EAAE,MAAM+F,MAAM6xB,EAAE,IAAIlrB,IAAI,IAAIjI,EAAE,GAAGiI,EAAE,OAAG,OAAOC,GAAG,OAAOA,EAAEysB,KAAK,mBAAoBzsB,EAAEysB,KAAKzsB,EAAEysB,IAAIuuB,aAAaljD,EAASkI,EAAEysB,MAAIzsB,EAAE,SAASD,GAAG,IAAIC,EAAE3M,EAAEkF,KAAKyH,IAAIy5C,KAAKz5C,EAAE3M,EAAEkF,KAAK,IAAI,OAAOwH,SAASC,EAAElI,GAAGkI,EAAElI,GAAGiI,IAAKi7C,WAAWljD,EAASkI,GAAE,GAAG,iBAAkBD,EAAE,MAAM3G,MAAM6xB,EAAE,MAAM,IAAI73B,EAAE45B,OAAO,MAAM5zB,MAAM6xB,EAAE,IAAIlrB,IAAK,OAAOA,EAChe,SAASk7C,GAAGl7C,EAAEC,GAAG,GAAG,aAAaD,EAAEzF,KAAK,MAAMlB,MAAM6xB,EAAE,GAAG,oBAAoBx3B,OAAOkB,UAAUO,SAAShC,KAAK8M,GAAG,qBAAqBvM,OAAOkH,KAAKqF,GAAG5J,KAAK,MAAM,IAAI4J,IAAK,SAASk7C,GAAGn7C,GAAiB,OAAOC,EAAfD,EAAEyvB,OAAezvB,EAAEwvB,UAC/M,SAAS4rB,GAAGp7C,GAAG,SAASC,EAAEA,EAAE5M,GAAG,GAAG2M,EAAE,CAAC,IAAI1M,EAAE2M,EAAEo7C,WAAW,OAAO/nD,GAAGA,EAAEgoD,WAAWjoD,EAAE4M,EAAEo7C,WAAWhoD,GAAG4M,EAAEs7C,YAAYt7C,EAAEo7C,WAAWhoD,EAAEA,EAAEioD,WAAW,KAAKjoD,EAAE4qC,MAAM,GAAG,SAAS5qC,EAAEA,EAAEC,GAAG,IAAI0M,EAAE,OAAO,KAAK,KAAK,OAAO1M,GAAG2M,EAAE5M,EAAEC,GAAGA,EAAEA,EAAEkrC,QAAQ,OAAO,KAAK,SAASlrC,EAAE0M,EAAEC,GAAG,IAAID,EAAE,IAAIolB,IAAI,OAAOnlB,GAAG,OAAOA,EAAE1L,IAAIyL,EAAEoJ,IAAInJ,EAAE1L,IAAI0L,GAAGD,EAAEoJ,IAAInJ,EAAE1D,MAAM0D,GAAGA,EAAEA,EAAEu+B,QAAQ,OAAOx+B,EAAE,SAASjI,EAAEiI,EAAEC,GAAsC,OAAnCD,EAAEw7C,GAAGx7C,EAAEC,IAAK1D,MAAM,EAAEyD,EAAEw+B,QAAQ,KAAYx+B,EAAE,SAASM,EAAEL,EAAE5M,EAAEC,GAAa,OAAV2M,EAAE1D,MAAMjJ,EAAM0M,EAA4B,QAAjB1M,EAAE2M,EAAE89B,YAA6BzqC,EAAEA,EAAEiJ,OAAQlJ,GAAG4M,EAAEg+B,MAAM,EACpf5qC,GAAGC,GAAE2M,EAAEg+B,MAAM,EAAS5qC,GADoaA,EACla,SAASqN,EAAET,GAAsC,OAAnCD,GAAG,OAAOC,EAAE89B,YAAY99B,EAAEg+B,MAAM,GAAUh+B,EAAE,SAASU,EAAEX,EAAEC,EAAE5M,EAAEC,GAAG,OAAG,OAAO2M,GAAG,IAAIA,EAAE20B,MAAW30B,EAAEw7C,GAAGpoD,EAAE2M,EAAE7L,KAAKb,IAAK0qC,OAAOh+B,EAAEC,KAAEA,EAAElI,EAAEkI,EAAE5M,IAAK2qC,OAAOh+B,EAASC,GAAE,SAASc,EAAEf,EAAEC,EAAE5M,EAAEC,GAAG,IAAIgN,EAAEjN,EAAEkH,KAAK,OAAG+F,IAAI6yB,EAAUr+B,EAAEkL,EAAEC,EAAE5M,EAAEu4B,MAAMkB,SAASx5B,EAAED,EAAEkB,KAAQ,OAAO0L,IAAIA,EAAEy7C,cAAcp7C,GAAG,iBAAkBA,GAAG,OAAOA,GAAGA,EAAE0sB,WAAW4G,GAAIunB,GAAG76C,KAAKL,EAAE1F,QAAajH,EAAEyE,EAAEkI,EAAE5M,EAAEu4B,QAASc,IAAIsuB,GAAGh7C,EAAEC,EAAE5M,GAAGC,EAAE0qC,OAAOh+B,EAAE1M,KAAEA,EAAEqoD,GAAGtoD,EAAEkH,KAAKlH,EAAEkB,IAAIlB,EAAEu4B,MAAM,KAAK5rB,EAAE7L,KAAKb,IAAKo5B,IAAIsuB,GAAGh7C,EAAEC,EAAE5M,GAAGC,EAAE0qC,OAAOh+B,EAAS1M,GAAE,SAASL,EAAE+M,EAC7fC,EAAE5M,EAAEC,GAAG,OAAG,OAAO2M,GAAG,IAAIA,EAAE20B,KAAK30B,EAAEu8B,UAAUmE,gBAAgBttC,EAAEstC,eAAe1gC,EAAEu8B,UAAUof,iBAAiBvoD,EAAEuoD,iBAAsB37C,EAAE47C,GAAGxoD,EAAE2M,EAAE7L,KAAKb,IAAK0qC,OAAOh+B,EAAEC,KAAEA,EAAElI,EAAEkI,EAAE5M,EAAEy5B,UAAU,KAAMkR,OAAOh+B,EAASC,GAAE,SAASnL,EAAEkL,EAAEC,EAAE5M,EAAEC,EAAEgN,GAAG,OAAG,OAAOL,GAAG,IAAIA,EAAE20B,MAAW30B,EAAE67C,GAAGzoD,EAAE2M,EAAE7L,KAAKb,EAAEgN,IAAK09B,OAAOh+B,EAAEC,KAAEA,EAAElI,EAAEkI,EAAE5M,IAAK2qC,OAAOh+B,EAASC,GAAE,SAASmrB,EAAEprB,EAAEC,EAAE5M,GAAG,GAAG,iBAAkB4M,GAAG,iBAAkBA,EAAE,OAAOA,EAAEw7C,GAAG,GAAGx7C,EAAED,EAAE7L,KAAKd,IAAK2qC,OAAOh+B,EAAEC,EAAE,GAAG,iBAAkBA,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAE+sB,UAAU,KAAKiG,EAAG,OAAO5/B,EAAEsoD,GAAG17C,EAAE1F,KAAK0F,EAAE1L,IAClf0L,EAAE2rB,MAAM,KAAK5rB,EAAE7L,KAAKd,IAAKq5B,IAAIsuB,GAAGh7C,EAAE,KAAKC,GAAG5M,EAAE2qC,OAAOh+B,EAAE3M,EAAE,KAAK6/B,EAAG,OAAOjzB,EAAE47C,GAAG57C,EAAED,EAAE7L,KAAKd,IAAK2qC,OAAOh+B,EAAEC,EAAE,KAAK2zB,EAAiB,OAAOxI,EAAEprB,GAAE1M,EAAnB2M,EAAEwvB,OAAmBxvB,EAAEuvB,UAAUn8B,GAAG,GAAG0nD,GAAG96C,IAAIk0B,EAAGl0B,GAAG,OAAOA,EAAE67C,GAAG77C,EAAED,EAAE7L,KAAKd,EAAE,OAAQ2qC,OAAOh+B,EAAEC,EAAEi7C,GAAGl7C,EAAEC,GAAG,OAAO,KAAK,SAAS/L,EAAE8L,EAAEC,EAAE5M,EAAEC,GAAG,IAAIyE,EAAE,OAAOkI,EAAEA,EAAE1L,IAAI,KAAK,GAAG,iBAAkBlB,GAAG,iBAAkBA,EAAE,OAAO,OAAO0E,EAAE,KAAK4I,EAAEX,EAAEC,EAAE,GAAG5M,EAAEC,GAAG,GAAG,iBAAkBD,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAE25B,UAAU,KAAKiG,EAAG,OAAO5/B,EAAEkB,MAAMwD,EAAEgJ,EAAEf,EAAEC,EAAE5M,EAAEC,GAAG,KAAK,KAAK4/B,EAAG,OAAO7/B,EAAEkB,MAAMwD,EAAE9E,EAAE+M,EAAEC,EAAE5M,EAAEC,GAAG,KAAK,KAAKsgC,EAAG,OACxe1/B,EAAE8L,EAAEC,GAD2elI,EACvf1E,EAAEo8B,OAAcp8B,EAAEm8B,UAAUl8B,GAAG,GAAGynD,GAAG1nD,IAAI8gC,EAAG9gC,GAAG,OAAO,OAAO0E,EAAE,KAAKjD,EAAEkL,EAAEC,EAAE5M,EAAEC,EAAE,MAAM4nD,GAAGl7C,EAAE3M,GAAG,OAAO,KAAK,SAASq4B,EAAE1rB,EAAEC,EAAE5M,EAAEC,EAAEyE,GAAG,GAAG,iBAAkBzE,GAAG,iBAAkBA,EAAE,OAAwBqN,EAAEV,EAAnBD,EAAEA,EAAEnM,IAAIR,IAAI,KAAW,GAAGC,EAAEyE,GAAG,GAAG,iBAAkBzE,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAE05B,UAAU,KAAKiG,EAAG,OAA2ClyB,EAAEd,EAAtCD,EAAEA,EAAEnM,IAAI,OAAOP,EAAEiB,IAAIlB,EAAEC,EAAEiB,MAAM,KAAWjB,EAAEyE,GAAG,KAAKm7B,EAAG,OAA2CjgC,EAAEgN,EAAtCD,EAAEA,EAAEnM,IAAI,OAAOP,EAAEiB,IAAIlB,EAAEC,EAAEiB,MAAM,KAAWjB,EAAEyE,GAAG,KAAK67B,EAAiB,OAAOlI,EAAE1rB,EAAEC,EAAE5M,GAAEiN,EAAvBhN,EAAEm8B,OAAuBn8B,EAAEk8B,UAAUz3B,GAAG,GAAGgjD,GAAGznD,IAAI6gC,EAAG7gC,GAAG,OAAwBwB,EAAEmL,EAAnBD,EAAEA,EAAEnM,IAAIR,IAAI,KAAWC,EAAEyE,EAAE,MAAMmjD,GAAGj7C,EAAE3M,GAAG,OAAO,KAC9f,SAASg6B,EAAEv1B,EAAE2I,EAAEC,EAAEI,GAAG,IAAI,IAAI9N,EAAE,KAAKa,EAAE,KAAKW,EAAEiM,EAAE6pB,EAAE7pB,EAAE,EAAEiqB,EAAE,KAAK,OAAOl2B,GAAG81B,EAAE5pB,EAAElK,OAAO8zB,IAAI,CAAC91B,EAAE8H,MAAMguB,GAAGI,EAAEl2B,EAAEA,EAAE,MAAMk2B,EAAEl2B,EAAE+pC,QAAQ,IAAI1pC,EAAEZ,EAAE6D,EAAEtD,EAAEkM,EAAE4pB,GAAGxpB,GAAG,GAAG,OAAOjM,EAAE,CAAC,OAAOL,IAAIA,EAAEk2B,GAAG,MAAM3qB,GAAGvL,GAAG,OAAOK,EAAEipC,WAAW99B,EAAElI,EAAEtD,GAAGiM,EAAEJ,EAAExL,EAAE4L,EAAE6pB,GAAG,OAAOz2B,EAAEb,EAAE6B,EAAEhB,EAAE0qC,QAAQ1pC,EAAEhB,EAAEgB,EAAEL,EAAEk2B,EAAE,GAAGJ,IAAI5pB,EAAElK,OAAO,OAAOpD,EAAE0E,EAAEtD,GAAGxB,EAAE,GAAG,OAAOwB,EAAE,CAAC,KAAK81B,EAAE5pB,EAAElK,OAAO8zB,IAAkB,QAAd91B,EAAE22B,EAAErzB,EAAE4I,EAAE4pB,GAAGxpB,MAAcL,EAAEJ,EAAE7L,EAAEiM,EAAE6pB,GAAG,OAAOz2B,EAAEb,EAAEwB,EAAEX,EAAE0qC,QAAQ/pC,EAAEX,EAAEW,GAAG,OAAOxB,EAAE,IAAIwB,EAAEnB,EAAEyE,EAAEtD,GAAG81B,EAAE5pB,EAAElK,OAAO8zB,IAAsB,QAAlBI,EAAEe,EAAEj3B,EAAEsD,EAAEwyB,EAAE5pB,EAAE4pB,GAAGxpB,MAAcf,GAAG,OAAO2qB,EAAEoT,WAAWtpC,EAAE0vB,OAAO,OAAOwG,EAAEp2B,IAAIg2B,EAAEI,EAAEp2B,KAClfmM,EAAEJ,EAAEqqB,EAAEjqB,EAAE6pB,GAAG,OAAOz2B,EAAEb,EAAE03B,EAAE72B,EAAE0qC,QAAQ7T,EAAE72B,EAAE62B,GAA4C,OAAzC3qB,GAAGvL,EAAEoG,SAAQ,SAASmF,GAAG,OAAOC,EAAElI,EAAEiI,MAAY/M,EAAE,SAASuT,EAAEzO,EAAE2I,EAAEC,EAAEI,GAAG,IAAI9N,EAAEkhC,EAAGxzB,GAAG,GAAG,mBAAoB1N,EAAE,MAAMoG,MAAM6xB,EAAE,MAAkB,GAAG,OAAfvqB,EAAE1N,EAAEE,KAAKwN,IAAc,MAAMtH,MAAM6xB,EAAE,MAAM,IAAI,IAAIz2B,EAAExB,EAAE,KAAKa,EAAE4M,EAAE6pB,EAAE7pB,EAAE,EAAEiqB,EAAE,KAAK71B,EAAE6L,EAAEoO,OAAO,OAAOjb,IAAIgB,EAAE0d,KAAK+X,IAAIz1B,EAAE6L,EAAEoO,OAAO,CAACjb,EAAEyI,MAAMguB,GAAGI,EAAE72B,EAAEA,EAAE,MAAM62B,EAAE72B,EAAE0qC,QAAQ,IAAIh4B,EAAEtS,EAAE6D,EAAEjE,EAAEgB,EAAEb,MAAM8M,GAAG,GAAG,OAAOyF,EAAE,CAAC,OAAO1S,IAAIA,EAAE62B,GAAG,MAAM3qB,GAAGlM,GAAG,OAAO0S,EAAEu3B,WAAW99B,EAAElI,EAAEjE,GAAG4M,EAAEJ,EAAEkG,EAAE9F,EAAE6pB,GAAG,OAAO91B,EAAExB,EAAEuT,EAAE/R,EAAE+pC,QAAQh4B,EAAE/R,EAAE+R,EAAE1S,EAAE62B,EAAE,GAAG71B,EAAE0d,KAAK,OAAOnf,EAAE0E,EAAEjE,GAAGb,EAAE,GAAG,OAAOa,EAAE,CAAC,MAAMgB,EAAE0d,KAAK+X,IAChgBz1B,EAAE6L,EAAEoO,OAAwB,QAAjBja,EAAEs2B,EAAErzB,EAAEjD,EAAEb,MAAM8M,MAAcL,EAAEJ,EAAExL,EAAE4L,EAAE6pB,GAAG,OAAO91B,EAAExB,EAAE6B,EAAEL,EAAE+pC,QAAQ1pC,EAAEL,EAAEK,GAAG,OAAO7B,EAAE,IAAIa,EAAER,EAAEyE,EAAEjE,IAAIgB,EAAE0d,KAAK+X,IAAIz1B,EAAE6L,EAAEoO,OAA4B,QAArBja,EAAE42B,EAAE53B,EAAEiE,EAAEwyB,EAAEz1B,EAAEb,MAAM8M,MAAcf,GAAG,OAAOlL,EAAEipC,WAAWjqC,EAAEqwB,OAAO,OAAOrvB,EAAEP,IAAIg2B,EAAEz1B,EAAEP,KAAKmM,EAAEJ,EAAExL,EAAE4L,EAAE6pB,GAAG,OAAO91B,EAAExB,EAAE6B,EAAEL,EAAE+pC,QAAQ1pC,EAAEL,EAAEK,GAA4C,OAAzCkL,GAAGlM,EAAE+G,SAAQ,SAASmF,GAAG,OAAOC,EAAElI,EAAEiI,MAAY/M,EAGrJ,OAHuJ,SAASw5B,EAAEzsB,EAAE1M,EAAEgN,EAAEK,GAAG,IAAII,EAAE,iBAAkBT,GAAG,OAAOA,GAAGA,EAAE/F,OAAO44B,GAAI,OAAO7yB,EAAE/L,IAAIwM,IAAIT,EAAEA,EAAEsrB,MAAMkB,UAAU,IAAI75B,EAAE,iBAAkBqN,GAAG,OAAOA,EAAE,GAAGrN,EAAE,OAAOqN,EAAE0sB,UAAU,KAAKiG,EAAGjzB,EAAE,CAAS,IAAR/M,EAAEqN,EAAE/L,IAAQwM,EAAEzN,EAAE,OAChfyN,GAAG,CAAC,GAAGA,EAAExM,MAAMtB,EAAE,CAAU,IAATA,EAAEqN,EAAE/F,QAAY44B,GAAI,GAAG,IAAIpyB,EAAE6zB,IAAI,CAACvhC,EAAE2M,EAAEe,EAAEy9B,UAASlrC,EAAEyE,EAAEgJ,EAAET,EAAEsrB,MAAMkB,WAAYkR,OAAOh+B,EAAEA,EAAE1M,EAAE,MAAM0M,QAAQ,GAAGe,EAAE26C,cAAczoD,GAAG,iBAAkBA,GAAG,OAAOA,GAAGA,EAAE+5B,WAAW4G,GAAIunB,GAAGloD,KAAK8N,EAAExG,KAAK,CAAClH,EAAE2M,EAAEe,EAAEy9B,UAASlrC,EAAEyE,EAAEgJ,EAAET,EAAEsrB,QAASc,IAAIsuB,GAAGh7C,EAAEe,EAAET,GAAGhN,EAAE0qC,OAAOh+B,EAAEA,EAAE1M,EAAE,MAAM0M,EAAE3M,EAAE2M,EAAEe,GAAG,MAAWd,EAAED,EAAEe,GAAGA,EAAEA,EAAEy9B,QAAQl+B,EAAE/F,OAAO44B,IAAI7/B,EAAEwoD,GAAGx7C,EAAEsrB,MAAMkB,SAAS9sB,EAAE7L,KAAKwM,EAAEL,EAAE/L,MAAOypC,OAAOh+B,EAAEA,EAAE1M,KAAIqN,EAAEg7C,GAAGr7C,EAAE/F,KAAK+F,EAAE/L,IAAI+L,EAAEsrB,MAAM,KAAK5rB,EAAE7L,KAAKwM,IAAK+rB,IAAIsuB,GAAGh7C,EAAE1M,EAAEgN,GAAGK,EAAEq9B,OAAOh+B,EAAEA,EAAEW,GAAG,OAAOD,EAAEV,GAAG,KAAKkzB,EAAGlzB,EAAE,CAAC,IAAIe,EAAET,EAAE/L,IAAI,OAAOjB,GAAG,CAAC,GAAGA,EAAEiB,MACxfwM,EADmf,CACjf,GAAG,IAAIzN,EAAEshC,KAAKthC,EAAEkpC,UAAUmE,gBAAgBrgC,EAAEqgC,eAAertC,EAAEkpC,UAAUof,iBAAiBt7C,EAAEs7C,eAAe,CAACvoD,EAAE2M,EAAE1M,EAAEkrC,UAASlrC,EAAEyE,EAAEzE,EAAEgN,EAAEwsB,UAAU,KAAMkR,OAAOh+B,EAAEA,EAAE1M,EAAE,MAAM0M,EAAO3M,EAAE2M,EAAE1M,GAAG,MAAW2M,EAAED,EAAE1M,GAAGA,EAAEA,EAAEkrC,SAAQlrC,EAAEuoD,GAAGv7C,EAAEN,EAAE7L,KAAKwM,IAAKq9B,OAAOh+B,EAAEA,EAAE1M,EAAE,OAAOoN,EAAEV,GAAG,KAAK4zB,EAAG,OAAiBnH,EAAEzsB,EAAE1M,GAAdyN,EAAET,EAAEmvB,OAAcnvB,EAAEkvB,UAAU7uB,GAAG,GAAG,iBAAkBL,GAAG,iBAAkBA,EAAE,OAAOA,EAAE,GAAGA,EAAE,OAAOhN,GAAG,IAAIA,EAAEshC,KAAKvhC,EAAE2M,EAAE1M,EAAEkrC,UAASlrC,EAAEyE,EAAEzE,EAAEgN,IAAK09B,OAAOh+B,EAAEA,EAAE1M,IAAID,EAAE2M,EAAE1M,IAAGA,EAAEmoD,GAAGn7C,EAAEN,EAAE7L,KAAKwM,IAAKq9B,OAAOh+B,EAAEA,EAAE1M,GAAGoN,EAAEV,GAAG,GAAG+6C,GAAGz6C,GAAG,OAAOgtB,EAAEttB,EAAE1M,EAAEgN,EAAEK,GAAG,GAAGwzB,EAAG7zB,GAAG,OAAOkG,EAAExG,EAChgB1M,EAAEgN,EAAEK,GAAc,GAAX1N,GAAGioD,GAAGl7C,EAAEM,QAAM,IAAqBA,IAAIS,EAAE,OAAOf,EAAE40B,KAAK,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,MAAMv7B,MAAM6xB,EAAE,IAAI2J,EAAG70B,EAAEzF,OAAO,cAAe,OAAOlH,EAAE2M,EAAE1M,IAAY,IAAIyoD,GAAGX,IAAG,GAAIY,GAAGZ,IAAG,GAAIa,GAAG,GAAGC,GAAG/F,GAAG8F,IAAIE,GAAGhG,GAAG8F,IAAIG,GAAGjG,GAAG8F,IAAI,SAASI,GAAGr8C,GAAG,GAAGA,IAAIi8C,GAAG,MAAM5iD,MAAM6xB,EAAE,MAAM,OAAOlrB,EAChR,SAASs8C,GAAGt8C,EAAEC,GAAyC,OAAtC4sB,GAAEuvB,GAAGn8C,GAAG4sB,GAAEsvB,GAAGn8C,GAAG6sB,GAAEqvB,GAAGD,IAAIj8C,EAAEC,EAAE83B,UAAmB,KAAK,EAAE,KAAK,GAAG93B,GAAGA,EAAEA,EAAEs8C,iBAAiBt8C,EAAE03B,aAAaL,GAAG,KAAK,IAAI,MAAM,QAAkEr3B,EAAEq3B,GAArCr3B,GAAvBD,EAAE,IAAIA,EAAEC,EAAEnG,WAAWmG,GAAM03B,cAAc,KAAK33B,EAAEA,EAAEw8C,SAAkBhwB,GAAE0vB,IAAIrvB,GAAEqvB,GAAGj8C,GAAG,SAASw8C,KAAKjwB,GAAE0vB,IAAI1vB,GAAE2vB,IAAI3vB,GAAE4vB,IAAI,SAASM,GAAG18C,GAAGq8C,GAAGD,GAAG7vB,SAAS,IAAItsB,EAAEo8C,GAAGH,GAAG3vB,SAAal5B,EAAEikC,GAAGr3B,EAAED,EAAEzF,MAAM0F,IAAI5M,IAAIw5B,GAAEsvB,GAAGn8C,GAAG6sB,GAAEqvB,GAAG7oD,IAAI,SAASspD,GAAG38C,GAAGm8C,GAAG5vB,UAAUvsB,IAAIwsB,GAAE0vB,IAAI1vB,GAAE2vB,KAAK,IAAI5uB,GAAE4oB,GAAG,GACxZ,SAASyG,GAAG58C,GAAG,IAAI,IAAIC,EAAED,EAAE,OAAOC,GAAG,CAAC,GAAG,KAAKA,EAAE20B,IAAI,CAAC,IAAIvhC,EAAE4M,EAAEk+B,cAAc,GAAG,OAAO9qC,IAAmB,QAAfA,EAAEA,EAAE+qC,aAAqB,OAAO/qC,EAAEoL,MAAM,OAAOpL,EAAEoL,MAAM,OAAOwB,OAAO,GAAG,KAAKA,EAAE20B,UAAK,IAAS30B,EAAE48C,cAAcC,aAAa,GAAG,IAAa,IAAR78C,EAAEg+B,OAAW,OAAOh+B,OAAO,GAAG,OAAOA,EAAEs+B,MAAM,CAACt+B,EAAEs+B,MAAMP,OAAO/9B,EAAEA,EAAEA,EAAEs+B,MAAM,SAAS,GAAGt+B,IAAID,EAAE,MAAM,KAAK,OAAOC,EAAEu+B,SAAS,CAAC,GAAG,OAAOv+B,EAAE+9B,QAAQ/9B,EAAE+9B,SAASh+B,EAAE,OAAO,KAAKC,EAAEA,EAAE+9B,OAAO/9B,EAAEu+B,QAAQR,OAAO/9B,EAAE+9B,OAAO/9B,EAAEA,EAAEu+B,QAAQ,OAAO,KAAK,IAAIue,GAAG,KAAKC,GAAG,KAAKC,IAAG,EACrd,SAASC,GAAGl9C,EAAEC,GAAG,IAAI5M,EAAE8pD,GAAG,EAAE,KAAK,KAAK,GAAG9pD,EAAEqoD,YAAY,UAAUroD,EAAEkH,KAAK,UAAUlH,EAAEmpC,UAAUv8B,EAAE5M,EAAE2qC,OAAOh+B,EAAE3M,EAAE4qC,MAAM,EAAE,OAAOj+B,EAAEq7C,YAAYr7C,EAAEq7C,WAAWC,WAAWjoD,EAAE2M,EAAEq7C,WAAWhoD,GAAG2M,EAAEu7C,YAAYv7C,EAAEq7C,WAAWhoD,EAC/M,SAAS+pD,GAAGp9C,EAAEC,GAAG,OAAOD,EAAE40B,KAAK,KAAK,EAAE,IAAIvhC,EAAE2M,EAAEzF,KAAyE,OAAO,QAA3E0F,EAAE,IAAIA,EAAE83B,UAAU1kC,EAAE0W,gBAAgB9J,EAAE+0B,SAASjrB,cAAc,KAAK9J,KAAmBD,EAAEw8B,UAAUv8B,GAAE,GAAO,KAAK,EAAE,OAAoD,QAA7CA,EAAE,KAAKD,EAAEq9C,cAAc,IAAIp9C,EAAE83B,SAAS,KAAK93B,KAAYD,EAAEw8B,UAAUv8B,GAAE,GAAO,KAAK,GAAG,OAA+B,QAAxBA,EAAE,IAAIA,EAAE83B,SAAS,KAAK93B,KAAYD,EAAEm+B,cAAc,CAACC,WAAWn+B,EAAEq9C,UAAU,aAAYjqD,EAAE8pD,GAAG,GAAG,KAAK,KAAK,IAAK3gB,UAAUv8B,EAAE5M,EAAE2qC,OAAOh+B,EAAEA,EAAEu+B,MAAMlrC,GAAE,GAAO,QAAQ,OAAM,GACza,SAASkqD,GAAGv9C,GAAG,GAAGi9C,GAAG,CAAC,IAAIh9C,EAAE+8C,GAAG,GAAG/8C,EAAE,CAAC,IAAI5M,EAAE4M,EAAE,IAAIm9C,GAAGp9C,EAAEC,GAAG,CAAqB,KAApBA,EAAEy1C,GAAGriD,EAAEmG,gBAAqB4jD,GAAGp9C,EAAEC,GAAuC,OAAnCD,EAAEi+B,OAAe,KAATj+B,EAAEi+B,MAAY,EAAEgf,IAAG,OAAGF,GAAG/8C,GAASk9C,GAAGH,GAAG1pD,GAAG0pD,GAAG/8C,EAAEg9C,GAAGtH,GAAGz1C,EAAEtG,iBAAiBqG,EAAEi+B,OAAe,KAATj+B,EAAEi+B,MAAY,EAAEgf,IAAG,EAAGF,GAAG/8C,GAAG,SAASw9C,GAAGx9C,GAAG,IAAIA,EAAEA,EAAEg+B,OAAO,OAAOh+B,GAAG,IAAIA,EAAE40B,KAAK,IAAI50B,EAAE40B,KAAK,KAAK50B,EAAE40B,KAAK50B,EAAEA,EAAEg+B,OAAO+e,GAAG/8C,EAC5S,SAASy9C,GAAGz9C,GAAG,GAAGA,IAAI+8C,GAAG,OAAM,EAAG,IAAIE,GAAG,OAAOO,GAAGx9C,GAAGi9C,IAAG,GAAG,EAAG,IAAIh9C,EAAED,EAAEzF,KAAK,GAAG,IAAIyF,EAAE40B,KAAK,SAAS30B,GAAG,SAASA,IAAIm1C,GAAGn1C,EAAED,EAAE68C,eAAe,IAAI58C,EAAE+8C,GAAG/8C,GAAGi9C,GAAGl9C,EAAEC,GAAGA,EAAEy1C,GAAGz1C,EAAEzG,aAAmB,GAANgkD,GAAGx9C,GAAM,KAAKA,EAAE40B,IAAI,CAAgD,KAA7B50B,EAAE,QAApBA,EAAEA,EAAEm+B,eAAyBn+B,EAAEo+B,WAAW,MAAW,MAAM/kC,MAAM6xB,EAAE,MAAMlrB,EAAE,CAAiB,IAAhBA,EAAEA,EAAExG,YAAgByG,EAAE,EAAED,GAAG,CAAC,GAAG,IAAIA,EAAE+3B,SAAS,CAAC,IAAI1kC,EAAE2M,EAAEvB,KAAK,GAAG,OAAOpL,EAAE,CAAC,GAAG,IAAI4M,EAAE,CAAC+8C,GAAGtH,GAAG11C,EAAExG,aAAa,MAAMwG,EAAEC,QAAQ,MAAM5M,GAAG,OAAOA,GAAG,OAAOA,GAAG4M,IAAID,EAAEA,EAAExG,YAAYwjD,GAAG,WAAWA,GAAGD,GAAGrH,GAAG11C,EAAEw8B,UAAUhjC,aAAa,KAAK,OAAM,EACtf,SAASkkD,KAAKV,GAAGD,GAAG,KAAKE,IAAG,EAAG,IAAIU,GAAG,GAAG,SAASC,KAAK,IAAI,IAAI59C,EAAE,EAAEA,EAAE29C,GAAGlnD,OAAOuJ,IAAI29C,GAAG39C,GAAG6vB,8BAA8B,KAAK8tB,GAAGlnD,OAAO,EAAE,IAAIonD,GAAG7qB,EAAGjF,uBAAuB+vB,GAAG9qB,EAAGhF,wBAAwB+vB,GAAG,EAAEvwB,GAAE,KAAKG,GAAE,KAAKC,GAAE,KAAKowB,IAAG,EAAGC,IAAG,EAAG,SAASC,KAAK,MAAM7kD,MAAM6xB,EAAE,MAAO,SAASizB,GAAGn+C,EAAEC,GAAG,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAI,IAAI5M,EAAE,EAAEA,EAAE4M,EAAExJ,QAAQpD,EAAE2M,EAAEvJ,OAAOpD,IAAI,IAAI6+C,GAAGlyC,EAAE3M,GAAG4M,EAAE5M,IAAI,OAAM,EAAG,OAAM,EAC9X,SAAS+qD,GAAGp+C,EAAEC,EAAE5M,EAAEC,EAAEyE,EAAEuI,GAAyH,GAAtHy9C,GAAGz9C,EAAEktB,GAAEvtB,EAAEA,EAAEk+B,cAAc,KAAKl+B,EAAEw4C,YAAY,KAAKx4C,EAAEi4C,MAAM,EAAE2F,GAAGtxB,QAAQ,OAAOvsB,GAAG,OAAOA,EAAEm+B,cAAckgB,GAAGC,GAAGt+C,EAAE3M,EAAEC,EAAEyE,GAAMkmD,GAAG,CAAC39C,EAAE,EAAE,EAAE,CAAO,GAAN29C,IAAG,IAAQ,GAAG39C,GAAG,MAAMjH,MAAM6xB,EAAE,MAAM5qB,GAAG,EAAEstB,GAAED,GAAE,KAAK1tB,EAAEw4C,YAAY,KAAKoF,GAAGtxB,QAAQgyB,GAAGv+C,EAAE3M,EAAEC,EAAEyE,SAASkmD,IAAkE,GAA9DJ,GAAGtxB,QAAQiyB,GAAGv+C,EAAE,OAAO0tB,IAAG,OAAOA,GAAE5e,KAAKgvC,GAAG,EAAEnwB,GAAED,GAAEH,GAAE,KAAKwwB,IAAG,EAAM/9C,EAAE,MAAM5G,MAAM6xB,EAAE,MAAM,OAAOlrB,EAAE,SAASy+C,KAAK,IAAIz+C,EAAE,CAACm+B,cAAc,KAAKua,UAAU,KAAKgG,UAAU,KAAKC,MAAM,KAAK5vC,KAAK,MAA8C,OAAxC,OAAO6e,GAAEJ,GAAE2Q,cAAcvQ,GAAE5tB,EAAE4tB,GAAEA,GAAE7e,KAAK/O,EAAS4tB,GAC/e,SAASgxB,KAAK,GAAG,OAAOjxB,GAAE,CAAC,IAAI3tB,EAAEwtB,GAAEuQ,UAAU/9B,EAAE,OAAOA,EAAEA,EAAEm+B,cAAc,UAAUn+B,EAAE2tB,GAAE5e,KAAK,IAAI9O,EAAE,OAAO2tB,GAAEJ,GAAE2Q,cAAcvQ,GAAE7e,KAAK,GAAG,OAAO9O,EAAE2tB,GAAE3tB,EAAE0tB,GAAE3tB,MAAM,CAAC,GAAG,OAAOA,EAAE,MAAM3G,MAAM6xB,EAAE,MAAUlrB,EAAE,CAACm+B,eAAPxQ,GAAE3tB,GAAqBm+B,cAAcua,UAAU/qB,GAAE+qB,UAAUgG,UAAU/wB,GAAE+wB,UAAUC,MAAMhxB,GAAEgxB,MAAM5vC,KAAK,MAAM,OAAO6e,GAAEJ,GAAE2Q,cAAcvQ,GAAE5tB,EAAE4tB,GAAEA,GAAE7e,KAAK/O,EAAE,OAAO4tB,GAAE,SAASixB,GAAG7+C,EAAEC,GAAG,MAAM,mBAAoBA,EAAEA,EAAED,GAAGC,EACvY,SAAS6+C,GAAG9+C,GAAG,IAAIC,EAAE2+C,KAAKvrD,EAAE4M,EAAE0+C,MAAM,GAAG,OAAOtrD,EAAE,MAAMgG,MAAM6xB,EAAE,MAAM73B,EAAE0rD,oBAAoB/+C,EAAE,IAAI1M,EAAEq6B,GAAE51B,EAAEzE,EAAEorD,UAAUp+C,EAAEjN,EAAEylD,QAAQ,GAAG,OAAOx4C,EAAE,CAAC,GAAG,OAAOvI,EAAE,CAAC,IAAI2I,EAAE3I,EAAEgX,KAAKhX,EAAEgX,KAAKzO,EAAEyO,KAAKzO,EAAEyO,KAAKrO,EAAEpN,EAAEorD,UAAU3mD,EAAEuI,EAAEjN,EAAEylD,QAAQ,KAAK,GAAG,OAAO/gD,EAAE,CAACA,EAAEA,EAAEgX,KAAKzb,EAAEA,EAAEolD,UAAU,IAAI/3C,EAAED,EAAEJ,EAAE,KAAKS,EAAEhJ,EAAE,EAAE,CAAC,IAAI9E,EAAE8N,EAAEo4C,KAAK,IAAI4E,GAAG9qD,KAAKA,EAAE,OAAO0N,IAAIA,EAAEA,EAAEoO,KAAK,CAACoqC,KAAK,EAAE6F,OAAOj+C,EAAEi+C,OAAOC,aAAal+C,EAAEk+C,aAAaC,WAAWn+C,EAAEm+C,WAAWnwC,KAAK,OAAOzb,EAAEyN,EAAEk+C,eAAej/C,EAAEe,EAAEm+C,WAAWl/C,EAAE1M,EAAEyN,EAAEi+C,YAAY,CAAC,IAAIlqD,EAAE,CAACqkD,KAAKlmD,EAAE+rD,OAAOj+C,EAAEi+C,OAAOC,aAAal+C,EAAEk+C,aAC9fC,WAAWn+C,EAAEm+C,WAAWnwC,KAAK,MAAM,OAAOpO,GAAGD,EAAEC,EAAE7L,EAAEwL,EAAEhN,GAAGqN,EAAEA,EAAEoO,KAAKja,EAAE04B,GAAE0qB,OAAOjlD,EAAEumD,IAAIvmD,EAAE8N,EAAEA,EAAEgO,WAAW,OAAOhO,GAAGA,IAAIhJ,GAAG,OAAO4I,EAAEL,EAAEhN,EAAEqN,EAAEoO,KAAKrO,EAAEwxC,GAAG5+C,EAAE2M,EAAEk+B,iBAAiBga,IAAG,GAAIl4C,EAAEk+B,cAAc7qC,EAAE2M,EAAEy4C,UAAUp4C,EAAEL,EAAEy+C,UAAU/9C,EAAEtN,EAAE8rD,kBAAkB7rD,EAAE,MAAM,CAAC2M,EAAEk+B,cAAc9qC,EAAEkuB,UACtQ,SAAS69B,GAAGp/C,GAAG,IAAIC,EAAE2+C,KAAKvrD,EAAE4M,EAAE0+C,MAAM,GAAG,OAAOtrD,EAAE,MAAMgG,MAAM6xB,EAAE,MAAM73B,EAAE0rD,oBAAoB/+C,EAAE,IAAI1M,EAAED,EAAEkuB,SAASxpB,EAAE1E,EAAEylD,QAAQx4C,EAAEL,EAAEk+B,cAAc,GAAG,OAAOpmC,EAAE,CAAC1E,EAAEylD,QAAQ,KAAK,IAAIp4C,EAAE3I,EAAEA,EAAEgX,KAAK,GAAGzO,EAAEN,EAAEM,EAAEI,EAAEs+C,QAAQt+C,EAAEA,EAAEqO,WAAWrO,IAAI3I,GAAGm6C,GAAG5xC,EAAEL,EAAEk+B,iBAAiBga,IAAG,GAAIl4C,EAAEk+B,cAAc79B,EAAE,OAAOL,EAAEy+C,YAAYz+C,EAAEy4C,UAAUp4C,GAAGjN,EAAE8rD,kBAAkB7+C,EAAE,MAAM,CAACA,EAAEhN,GACnV,SAAS+rD,GAAGr/C,EAAEC,EAAE5M,GAAG,IAAIC,EAAE2M,EAAE0vB,YAAYr8B,EAAEA,EAAE2M,EAAE2vB,SAAS,IAAI73B,EAAEkI,EAAE4vB,8BAAyI,GAAxG,OAAO93B,EAAEiI,EAAEjI,IAAIzE,GAAU0M,EAAEA,EAAEs/C,kBAAiBt/C,GAAG+9C,GAAG/9C,KAAKA,KAAEC,EAAE4vB,8BAA8Bv8B,EAAEqqD,GAAGhnD,KAAKsJ,KAAMD,EAAE,OAAO3M,EAAE4M,EAAE2vB,SAAoB,MAAX+tB,GAAGhnD,KAAKsJ,GAAS5G,MAAM6xB,EAAE,MACzP,SAASq0B,GAAGv/C,EAAEC,EAAE5M,EAAEC,GAAG,IAAIyE,EAAE+1B,GAAE,GAAG,OAAO/1B,EAAE,MAAMsB,MAAM6xB,EAAE,MAAM,IAAI5qB,EAAEL,EAAE0vB,YAAYjvB,EAAEJ,EAAEL,EAAE2vB,SAASjvB,EAAEk9C,GAAGtxB,QAAQxrB,EAAEJ,EAAEwwB,UAAS,WAAW,OAAOkuB,GAAGtnD,EAAEkI,EAAE5M,MAAKJ,EAAE8N,EAAE,GAAGjM,EAAEiM,EAAE,GAAGA,EAAE6sB,GAAE,IAAIxC,EAAEprB,EAAEm+B,cAAcjqC,EAAEk3B,EAAE5yB,KAAKkzB,EAAEx3B,EAAEsrD,YAAYlyB,EAAElC,EAAEl1B,OAAOk1B,EAAEA,EAAEq0B,UAAU,IAAIj5C,EAAEgnB,GACuO,OADrOxtB,EAAEm+B,cAAc,CAAC3lC,KAAKtE,EAAEgC,OAAO+J,EAAEw/C,UAAUnsD,GAAGqN,EAAEkwB,WAAU,WAAW38B,EAAEsrD,YAAYnsD,EAAEa,EAAEwrD,YAAYzsD,EAAE,IAAI+M,EAAEM,EAAEL,EAAE2vB,SAAS,IAAIsiB,GAAGxxC,EAAEV,GAAG,CAACA,EAAE3M,EAAE4M,EAAE2vB,SAASsiB,GAAGp9C,EAAEkL,KAAK/M,EAAE+M,GAAGA,EAAE+5C,GAAGvzC,GAAGzO,EAAEunD,kBAAkBt/C,EAAEjI,EAAEysC,cAAcxkC,EAAEjI,EAAEunD,iBAAiBvnD,EAAE8sC,gBAAgB7kC,EAAE,IAAI,IAAI1M,EAC5fyE,EAAE+sC,cAAcnkC,EAAEX,EAAE,EAAEW,GAAG,CAAC,IAAII,EAAE,GAAG6jC,GAAGjkC,GAAGgqB,EAAE,GAAG5pB,EAAEzN,EAAEyN,IAAIf,EAAEW,IAAIgqB,MAAK,CAACt3B,EAAE4M,EAAE3M,IAAIqN,EAAEkwB,WAAU,WAAW,OAAOv9B,EAAE2M,EAAE2vB,SAAQ,WAAW,IAAI5vB,EAAE9L,EAAEsrD,YAAYnsD,EAAEa,EAAEwrD,YAAY,IAAIrsD,EAAE2M,EAAEC,EAAE2vB,UAAU,IAAIt8B,EAAEymD,GAAGvzC,GAAGzO,EAAEunD,kBAAkBhsD,EAAEyE,EAAEysC,aAAa,MAAM/vC,GAAGpB,GAAE,WAAW,MAAMoB,WAAS,CAACwL,EAAE3M,IAAI4+C,GAAGxmB,EAAEr4B,IAAI6+C,GAAG5kB,EAAErtB,IAAIiyC,GAAG9mB,EAAE93B,MAAK0M,EAAE,CAAC84C,QAAQ,KAAKv3B,SAAS,KAAKw9B,oBAAoBF,GAAGM,kBAAkBrqD,IAAKysB,SAAStuB,EAAE0sD,GAAGnrD,KAAK,KAAKg5B,GAAExtB,GAAGe,EAAE49C,MAAM3+C,EAAEe,EAAE29C,UAAU,KAAK5pD,EAAEuqD,GAAGtnD,EAAEkI,EAAE5M,GAAG0N,EAAEo9B,cAAcp9B,EAAE23C,UAAU5jD,GAAUA,EACte,SAAS8qD,GAAG5/C,EAAEC,EAAE5M,GAAc,OAAOksD,GAAZX,KAAiB5+C,EAAEC,EAAE5M,GAAG,SAASwsD,GAAG7/C,GAAG,IAAIC,EAAEw+C,KAAmL,MAA9K,mBAAoBz+C,IAAIA,EAAEA,KAAKC,EAAEk+B,cAAcl+B,EAAEy4C,UAAU14C,EAAoFA,GAAlFA,EAAEC,EAAE0+C,MAAM,CAAC7F,QAAQ,KAAKv3B,SAAS,KAAKw9B,oBAAoBF,GAAGM,kBAAkBn/C,IAAOuhB,SAASo+B,GAAGnrD,KAAK,KAAKg5B,GAAExtB,GAAS,CAACC,EAAEk+B,cAAcn+B,GAChR,SAAS8/C,GAAG9/C,EAAEC,EAAE5M,EAAEC,GAAkO,OAA/N0M,EAAE,CAAC40B,IAAI50B,EAAE1L,OAAO2L,EAAEoc,QAAQhpB,EAAE0sD,KAAKzsD,EAAEyb,KAAK,MAAsB,QAAhB9O,EAAEutB,GAAEirB,cAAsBx4C,EAAE,CAACo7C,WAAW,MAAM7tB,GAAEirB,YAAYx4C,EAAEA,EAAEo7C,WAAWr7C,EAAE+O,KAAK/O,GAAmB,QAAf3M,EAAE4M,EAAEo7C,YAAoBp7C,EAAEo7C,WAAWr7C,EAAE+O,KAAK/O,GAAG1M,EAAED,EAAE0b,KAAK1b,EAAE0b,KAAK/O,EAAEA,EAAE+O,KAAKzb,EAAE2M,EAAEo7C,WAAWr7C,GAAWA,EAAE,SAASggD,KAAK,OAAOpB,KAAKzgB,cAAc,SAAS8hB,GAAGjgD,EAAEC,EAAE5M,EAAEC,GAAG,IAAIyE,EAAE0mD,KAAKjxB,GAAEyQ,OAAOj+B,EAAEjI,EAAEomC,cAAc2hB,GAAG,EAAE7/C,EAAE5M,OAAE,OAAO,IAASC,EAAE,KAAKA,GAChY,SAAS4sD,GAAGlgD,EAAEC,EAAE5M,EAAEC,GAAG,IAAIyE,EAAE6mD,KAAKtrD,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIgN,OAAE,EAAO,GAAG,OAAOqtB,GAAE,CAAC,IAAIjtB,EAAEitB,GAAEwQ,cAA0B,GAAZ79B,EAAEI,EAAE2b,QAAW,OAAO/oB,GAAG6qD,GAAG7qD,EAAEoN,EAAEq/C,MAAmB,YAAZD,GAAG7/C,EAAE5M,EAAEiN,EAAEhN,GAAWk6B,GAAEyQ,OAAOj+B,EAAEjI,EAAEomC,cAAc2hB,GAAG,EAAE7/C,EAAE5M,EAAEiN,EAAEhN,GAAG,SAAS6sD,GAAGngD,EAAEC,GAAG,OAAOggD,GAAG,KAAK,EAAEjgD,EAAEC,GAAG,SAASmgD,GAAGpgD,EAAEC,GAAG,OAAOigD,GAAG,KAAK,EAAElgD,EAAEC,GAAG,SAASogD,GAAGrgD,EAAEC,GAAG,OAAOigD,GAAG,EAAE,EAAElgD,EAAEC,GAAG,SAASqgD,GAAGtgD,EAAEC,GAAG,MAAG,mBAAoBA,GAASD,EAAEA,IAAIC,EAAED,GAAG,WAAWC,EAAE,QAAU,MAAOA,GAAqBD,EAAEA,IAAIC,EAAEssB,QAAQvsB,EAAE,WAAWC,EAAEssB,QAAQ,YAAtE,EAC1Y,SAASg0B,GAAGvgD,EAAEC,EAAE5M,GAA6C,OAA1CA,EAAE,MAAOA,EAAcA,EAAE+C,OAAO,CAAC4J,IAAI,KAAYkgD,GAAG,EAAE,EAAEI,GAAG9rD,KAAK,KAAKyL,EAAED,GAAG3M,GAAG,SAASmtD,MAAM,SAASC,GAAGzgD,EAAEC,GAAG,IAAI5M,EAAEurD,KAAK3+C,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAI3M,EAAED,EAAE8qC,cAAc,OAAG,OAAO7qC,GAAG,OAAO2M,GAAGk+C,GAAGl+C,EAAE3M,EAAE,IAAWA,EAAE,IAAGD,EAAE8qC,cAAc,CAACn+B,EAAEC,GAAUD,GAAE,SAAS0gD,GAAG1gD,EAAEC,GAAG,IAAI5M,EAAEurD,KAAK3+C,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAI3M,EAAED,EAAE8qC,cAAc,OAAG,OAAO7qC,GAAG,OAAO2M,GAAGk+C,GAAGl+C,EAAE3M,EAAE,IAAWA,EAAE,IAAG0M,EAAEA,IAAI3M,EAAE8qC,cAAc,CAACn+B,EAAEC,GAAUD,GACzZ,SAAS2gD,GAAG3gD,EAAEC,GAAG,IAAI5M,EAAE0wC,KAAKE,GAAG,GAAG5wC,EAAE,GAAGA,GAAE,WAAW2M,GAAE,MAAMikC,GAAG,GAAG5wC,EAAE,GAAGA,GAAE,WAAW,IAAIA,EAAEyqD,GAAGjwB,WAAWiwB,GAAGjwB,WAAW,EAAE,IAAI7tB,GAAE,GAAIC,IAAV,QAAsB69C,GAAGjwB,WAAWx6B,MAC5J,SAASssD,GAAG3/C,EAAEC,EAAE5M,GAAG,IAAIC,EAAEwmD,KAAK/hD,EAAEgiD,GAAG/5C,GAAGM,EAAE,CAAC64C,KAAKphD,EAAEinD,OAAO3rD,EAAE4rD,aAAa,KAAKC,WAAW,KAAKnwC,KAAK,MAAMrO,EAAET,EAAE64C,QAA6E,GAArE,OAAOp4C,EAAEJ,EAAEyO,KAAKzO,GAAGA,EAAEyO,KAAKrO,EAAEqO,KAAKrO,EAAEqO,KAAKzO,GAAGL,EAAE64C,QAAQx4C,EAAEI,EAAEV,EAAE+9B,UAAa/9B,IAAIwtB,IAAG,OAAO9sB,GAAGA,IAAI8sB,GAAEywB,GAAGD,IAAG,MAAO,CAAC,GAAG,IAAIh+C,EAAEk4C,QAAQ,OAAOx3C,GAAG,IAAIA,EAAEw3C,QAAiC,QAAxBx3C,EAAET,EAAE8+C,qBAA8B,IAAI,IAAIp+C,EAAEV,EAAEk/C,kBAAkBp+C,EAAEL,EAAEC,EAAEtN,GAAmC,GAAhCiN,EAAE2+C,aAAav+C,EAAEJ,EAAE4+C,WAAWn+C,EAAKmxC,GAAGnxC,EAAEJ,GAAG,OAAO,MAAM1N,IAAa+mD,GAAGh6C,EAAEjI,EAAEzE,IAAI,SAASstD,KAAK,MAAMvnD,MAAM6xB,EAAE,MAC9b,IAAIszB,GAAG,CAACqC,YAAYzI,GAAG1nB,YAAYwtB,GAAGvtB,WAAWutB,GAAGrtB,UAAUqtB,GAAGptB,oBAAoBotB,GAAGntB,gBAAgBmtB,GAAGltB,QAAQktB,GAAGjtB,WAAWitB,GAAGhtB,OAAOgtB,GAAG/sB,SAAS+sB,GAAGttB,cAAcstB,GAAG/tB,iBAAiB+tB,GAAGztB,cAAcytB,GAAG7tB,iBAAiB6tB,GAAG3tB,oBAAoB2tB,GAAG4C,0BAAyB,GAAItC,GAAGxuB,gBAAgB4wB,GAC3S,IAAIvC,GAAG,CAACwC,YAAYzI,GAAG1nB,YAAY,SAAS1wB,EAAEC,GAA4C,OAAzCw+C,KAAKtgB,cAAc,CAACn+B,OAAE,IAASC,EAAE,KAAKA,GAAUD,GAAG2wB,WAAWynB,GAAGvnB,UAAUsvB,GAAGrvB,oBAAoB,SAAS9wB,EAAEC,EAAE5M,GAA6C,OAA1CA,EAAE,MAAOA,EAAcA,EAAE+C,OAAO,CAAC4J,IAAI,KAAYigD,GAAG,EAAE,EAAEK,GAAG9rD,KAAK,KAAKyL,EAAED,GAAG3M,IAAI09B,gBAAgB,SAAS/wB,EAAEC,GAAG,OAAOggD,GAAG,EAAE,EAAEjgD,EAAEC,IAAI+wB,QAAQ,SAAShxB,EAAEC,GAAG,IAAI5M,EAAEorD,KAAqD,OAAhDx+C,OAAE,IAASA,EAAE,KAAKA,EAAED,EAAEA,IAAI3M,EAAE8qC,cAAc,CAACn+B,EAAEC,GAAUD,GAAGixB,WAAW,SAASjxB,EAAEC,EAAE5M,GAAG,IAAIC,EAAEmrD,KACrV,OAD0Vx+C,OAAE,IAAS5M,EAAEA,EAAE4M,GAAGA,EAAE3M,EAAE6qC,cAAc7qC,EAAEolD,UAAUz4C,EACzaD,GAD2aA,EAAE1M,EAAEqrD,MAAM,CAAC7F,QAAQ,KAAKv3B,SAAS,KACvfw9B,oBAAoB/+C,EAAEm/C,kBAAkBl/C,IAAOshB,SAASo+B,GAAGnrD,KAAK,KAAKg5B,GAAExtB,GAAS,CAAC1M,EAAE6qC,cAAcn+B,IAAIkxB,OAAO,SAASlxB,GAA4B,OAAdA,EAAE,CAACusB,QAAQvsB,GAAhBy+C,KAA4BtgB,cAAcn+B,GAAGmxB,SAAS0uB,GAAGjvB,cAAc4vB,GAAGrwB,iBAAiB,SAASnwB,GAAG,IAAIC,EAAE4/C,GAAG7/C,GAAG3M,EAAE4M,EAAE,GAAG3M,EAAE2M,EAAE,GAA6F,OAA1FkgD,IAAG,WAAW,IAAIlgD,EAAE69C,GAAGjwB,WAAWiwB,GAAGjwB,WAAW,EAAE,IAAIv6B,EAAE0M,GAAN,QAAiB89C,GAAGjwB,WAAW5tB,KAAI,CAACD,IAAW3M,GAAGo9B,cAAc,WAAW,IAAIzwB,EAAE6/C,IAAG,GAAI5/C,EAAED,EAAE,GAA6C,OAA1CA,EAAE2gD,GAAGnsD,KAAK,KAAKwL,EAAE,IAAIy+C,KAAKtgB,cAAcn+B,EAAQ,CAACA,EAAEC,IAAIowB,iBAAiB,SAASrwB,EAAEC,EAAE5M,GAAG,IAAIC,EAAEmrD,KACjb,OADsbnrD,EAAE6qC,cACrf,CAAC3lC,KAAK,CAACgnD,YAAYv/C,EAAEy/C,YAAY,MAAMxpD,OAAO8J,EAAEy/C,UAAUpsD,GAAUksD,GAAGjsD,EAAE0M,EAAEC,EAAE5M,IAAIk9B,oBAAoB,WAAW,GAAG0sB,GAAG,CAAC,IAAIj9C,GAAE,EAAGC,EAzDoE,SAAYD,GAAG,MAAM,CAACgtB,SAAS6G,EAAG1+B,SAAS6K,EAAE4oB,QAAQ5oB,GAyDvH+gD,EAAG,WAAiD,MAAtC/gD,IAAIA,GAAE,EAAG3M,EAAE,MAAMwiD,MAAM1gD,SAAS,MAAYkE,MAAM6xB,EAAE,SAAS73B,EAAEwsD,GAAG5/C,GAAG,GAA6F,OAA1F,IAAY,EAAPutB,GAAEr5B,QAAUq5B,GAAEyQ,OAAO,KAAK6hB,GAAG,GAAE,WAAWzsD,EAAE,MAAMwiD,MAAM1gD,SAAS,YAAM,EAAO,OAAc8K,EAAmC,OAAN4/C,GAA3B5/C,EAAE,MAAM41C,MAAM1gD,SAAS,KAAiB8K,GAAG6gD,0BAAyB,GAAIzC,GAAGruB,gBAAgB4wB,GACtZ,IAAItC,GAAG,CAACuC,YAAYzI,GAAG1nB,YAAY+vB,GAAG9vB,WAAWynB,GAAGvnB,UAAUuvB,GAAGtvB,oBAAoByvB,GAAGxvB,gBAAgBsvB,GAAGrvB,QAAQ0vB,GAAGzvB,WAAW6tB,GAAG5tB,OAAO8uB,GAAG7uB,SAAS,WAAW,OAAO2tB,GAAGD,KAAKjuB,cAAc4vB,GAAGrwB,iBAAiB,SAASnwB,GAAG,IAAIC,EAAE6+C,GAAGD,IAAIxrD,EAAE4M,EAAE,GAAG3M,EAAE2M,EAAE,GAA6F,OAA1FmgD,IAAG,WAAW,IAAIngD,EAAE69C,GAAGjwB,WAAWiwB,GAAGjwB,WAAW,EAAE,IAAIv6B,EAAE0M,GAAN,QAAiB89C,GAAGjwB,WAAW5tB,KAAI,CAACD,IAAW3M,GAAGo9B,cAAc,WAAW,IAAIzwB,EAAE8+C,GAAGD,IAAI,GAAG,MAAM,CAACD,KAAKzgB,cAAcn+B,IAAIqwB,iBAAiBuvB,GAAGrvB,oBAAoB,WAAW,OAAOuuB,GAAGD,IAAI,IAAIiC,0BAAyB,GACngBxC,GAAGtuB,gBAAgB4wB,GACnB,IAAIrC,GAAG,CAACsC,YAAYzI,GAAG1nB,YAAY+vB,GAAG9vB,WAAWynB,GAAGvnB,UAAUuvB,GAAGtvB,oBAAoByvB,GAAGxvB,gBAAgBsvB,GAAGrvB,QAAQ0vB,GAAGzvB,WAAWmuB,GAAGluB,OAAO8uB,GAAG7uB,SAAS,WAAW,OAAOiuB,GAAGP,KAAKjuB,cAAc4vB,GAAGrwB,iBAAiB,SAASnwB,GAAG,IAAIC,EAAEm/C,GAAGP,IAAIxrD,EAAE4M,EAAE,GAAG3M,EAAE2M,EAAE,GAA6F,OAA1FmgD,IAAG,WAAW,IAAIngD,EAAE69C,GAAGjwB,WAAWiwB,GAAGjwB,WAAW,EAAE,IAAIv6B,EAAE0M,GAAN,QAAiB89C,GAAGjwB,WAAW5tB,KAAI,CAACD,IAAW3M,GAAGo9B,cAAc,WAAW,IAAIzwB,EAAEo/C,GAAGP,IAAI,GAAG,MAAM,CAACD,KAAKzgB,cAAcn+B,IAAIqwB,iBAAiBuvB,GAAGrvB,oBAAoB,WAAW,OAAO6uB,GAAGP,IAAI,IAAIiC,0BAAyB,GACngBvC,GAAGvuB,gBAAgB4wB,GAAG,IAAII,GAAGhuB,EAAG/E,kBAAkBkqB,IAAG,EAAG,SAAS8I,GAAGjhD,EAAEC,EAAE5M,EAAEC,GAAG2M,EAAEs+B,MAAM,OAAOv+B,EAAEg8C,GAAG/7C,EAAE,KAAK5M,EAAEC,GAAGyoD,GAAG97C,EAAED,EAAEu+B,MAAMlrC,EAAEC,GAAG,SAAS4tD,GAAGlhD,EAAEC,EAAE5M,EAAEC,EAAEyE,GAAG1E,EAAEA,EAAEg8B,OAAO,IAAI/uB,EAAEL,EAAEysB,IAA8B,OAA1BqrB,GAAG93C,EAAElI,GAAGzE,EAAE8qD,GAAGp+C,EAAEC,EAAE5M,EAAEC,EAAEgN,EAAEvI,GAAM,OAAOiI,GAAIm4C,IAA2El4C,EAAEg+B,OAAO,EAAEgjB,GAAGjhD,EAAEC,EAAE3M,EAAEyE,GAAUkI,EAAEs+B,QAAjGt+B,EAAEw4C,YAAYz4C,EAAEy4C,YAAYx4C,EAAEg+B,QAAQ,KAAKj+B,EAAEk4C,QAAQngD,EAAEopD,GAAGnhD,EAAEC,EAAElI,IAC7R,SAASqpD,GAAGphD,EAAEC,EAAE5M,EAAEC,EAAEyE,EAAEuI,GAAG,GAAG,OAAON,EAAE,CAAC,IAAIU,EAAErN,EAAEkH,KAAK,MAAG,mBAAoBmG,GAAI2gD,GAAG3gD,SAAI,IAASA,EAAEqsB,cAAc,OAAO15B,EAAEsT,cAAS,IAAStT,EAAE05B,eAAsD/sB,EAAE27C,GAAGtoD,EAAEkH,KAAK,KAAKjH,EAAE2M,EAAEA,EAAE9L,KAAKmM,IAAKosB,IAAIzsB,EAAEysB,IAAI1sB,EAAEg+B,OAAO/9B,EAASA,EAAEs+B,MAAMv+B,IAAvGC,EAAE20B,IAAI,GAAG30B,EAAE1F,KAAKmG,EAAE4gD,GAAGthD,EAAEC,EAAES,EAAEpN,EAAEyE,EAAEuI,IAAoF,OAAVI,EAAEV,EAAEu+B,MAAS,IAAKxmC,EAAEuI,KAAKvI,EAAE2I,EAAEm8C,eAA0BxpD,EAAE,QAAdA,EAAEA,EAAEsT,SAAmBtT,EAAE++C,IAAKr6C,EAAEzE,IAAI0M,EAAE0sB,MAAMzsB,EAAEysB,KAAYy0B,GAAGnhD,EAAEC,EAAEK,IAAGL,EAAEg+B,OAAO,GAAEj+B,EAAEw7C,GAAG96C,EAAEpN,IAAKo5B,IAAIzsB,EAAEysB,IAAI1sB,EAAEg+B,OAAO/9B,EAASA,EAAEs+B,MAAMv+B,GAClb,SAASshD,GAAGthD,EAAEC,EAAE5M,EAAEC,EAAEyE,EAAEuI,GAAG,GAAG,OAAON,GAAGoyC,GAAGpyC,EAAE68C,cAAcvpD,IAAI0M,EAAE0sB,MAAMzsB,EAAEysB,IAAI,IAAGyrB,IAAG,EAAG,IAAK73C,EAAEvI,GAAqC,OAAOkI,EAAEi4C,MAAMl4C,EAAEk4C,MAAMiJ,GAAGnhD,EAAEC,EAAEK,GAAhE,IAAa,MAARN,EAAEi+B,SAAeka,IAAG,GAA0C,OAAOoJ,GAAGvhD,EAAEC,EAAE5M,EAAEC,EAAEgN,GACnL,SAASkhD,GAAGxhD,EAAEC,EAAE5M,GAAG,IAAIC,EAAE2M,EAAEo9C,aAAatlD,EAAEzE,EAAEw5B,SAASxsB,EAAE,OAAON,EAAEA,EAAEm+B,cAAc,KAAK,GAAG,WAAW7qC,EAAEa,MAAM,kCAAkCb,EAAEa,KAAK,GAAG,IAAY,EAAP8L,EAAE9L,MAAQ8L,EAAEk+B,cAAc,CAACsjB,UAAU,GAAGC,GAAGzhD,EAAE5M,OAAQ,IAAG,IAAO,WAAFA,GAA8E,OAAO2M,EAAE,OAAOM,EAAEA,EAAEmhD,UAAUpuD,EAAEA,EAAE4M,EAAEi4C,MAAMj4C,EAAE63C,WAAW,WAAW73C,EAAEk+B,cAAc,CAACsjB,UAAUzhD,GAAG0hD,GAAGzhD,EAAED,GAAG,KAAxKC,EAAEk+B,cAAc,CAACsjB,UAAU,GAAGC,GAAGzhD,EAAE,OAAOK,EAAEA,EAAEmhD,UAAUpuD,QAA0H,OAAOiN,GAAGhN,EAAEgN,EAAEmhD,UAAUpuD,EAAE4M,EAAEk+B,cAAc,MAAM7qC,EAAED,EAAEquD,GAAGzhD,EAAE3M,GAAe,OAAZ2tD,GAAGjhD,EAAEC,EAAElI,EAAE1E,GAAU4M,EAAEs+B,MAC1e,SAASojB,GAAG3hD,EAAEC,GAAG,IAAI5M,EAAE4M,EAAEysB,KAAO,OAAO1sB,GAAG,OAAO3M,GAAG,OAAO2M,GAAGA,EAAE0sB,MAAMr5B,KAAE4M,EAAEg+B,OAAO,KAAI,SAASsjB,GAAGvhD,EAAEC,EAAE5M,EAAEC,EAAEyE,GAAG,IAAIuI,EAAEo2C,GAAGrjD,GAAGgjD,GAAGlpB,GAAEZ,QAA4C,OAApCjsB,EAAEg2C,GAAGr2C,EAAEK,GAAGy3C,GAAG93C,EAAElI,GAAG1E,EAAE+qD,GAAGp+C,EAAEC,EAAE5M,EAAEC,EAAEgN,EAAEvI,GAAM,OAAOiI,GAAIm4C,IAA2El4C,EAAEg+B,OAAO,EAAEgjB,GAAGjhD,EAAEC,EAAE5M,EAAE0E,GAAUkI,EAAEs+B,QAAjGt+B,EAAEw4C,YAAYz4C,EAAEy4C,YAAYx4C,EAAEg+B,QAAQ,KAAKj+B,EAAEk4C,QAAQngD,EAAEopD,GAAGnhD,EAAEC,EAAElI,IAC/P,SAAS6pD,GAAG5hD,EAAEC,EAAE5M,EAAEC,EAAEyE,GAAG,GAAG2+C,GAAGrjD,GAAG,CAAC,IAAIiN,GAAE,EAAG02C,GAAG/2C,QAAQK,GAAE,EAAW,GAARy3C,GAAG93C,EAAElI,GAAM,OAAOkI,EAAEu8B,UAAU,OAAOx8B,IAAIA,EAAE+9B,UAAU,KAAK99B,EAAE89B,UAAU,KAAK99B,EAAEg+B,OAAO,GAAGkc,GAAGl6C,EAAE5M,EAAEC,GAAGmnD,GAAGx6C,EAAE5M,EAAEC,EAAEyE,GAAGzE,GAAE,OAAQ,GAAG,OAAO0M,EAAE,CAAC,IAAIU,EAAET,EAAEu8B,UAAU77B,EAAEV,EAAE48C,cAAcn8C,EAAEkrB,MAAMjrB,EAAE,IAAII,EAAEL,EAAEmrB,QAAQ54B,EAAEI,EAAE+mD,YAAY,iBAAkBnnD,GAAG,OAAOA,EAAEA,EAAEmlD,GAAGnlD,GAAyBA,EAAEqjD,GAAGr2C,EAA1BhN,EAAEyjD,GAAGrjD,GAAGgjD,GAAGlpB,GAAEZ,SAAmB,IAAIz3B,EAAEzB,EAAEqnD,yBAAyBtvB,EAAE,mBAAoBt2B,GAAG,mBAAoB4L,EAAEi6C,wBAAwBvvB,GAAG,mBAAoB1qB,EAAE85C,kCACpd,mBAAoB95C,EAAE65C,4BAA4B55C,IAAIrN,GAAGyN,IAAI9N,IAAIqnD,GAAGr6C,EAAES,EAAEpN,EAAEL,GAAGslD,IAAG,EAAG,IAAIrkD,EAAE+L,EAAEk+B,cAAcz9B,EAAE25C,MAAMnmD,EAAEqlD,GAAGt5C,EAAE3M,EAAEoN,EAAE3I,GAAGgJ,EAAEd,EAAEk+B,cAAcx9B,IAAIrN,GAAGY,IAAI6M,GAAGqsB,GAAEb,SAASgsB,IAAI,mBAAoBzjD,IAAI6kD,GAAG15C,EAAE5M,EAAEyB,EAAExB,GAAGyN,EAAEd,EAAEk+B,gBAAgBx9B,EAAE43C,IAAI0B,GAAGh6C,EAAE5M,EAAEsN,EAAErN,EAAEY,EAAE6M,EAAE9N,KAAKm4B,GAAG,mBAAoB1qB,EAAEk6C,2BAA2B,mBAAoBl6C,EAAEm6C,qBAAqB,mBAAoBn6C,EAAEm6C,oBAAoBn6C,EAAEm6C,qBAAqB,mBAAoBn6C,EAAEk6C,2BAA2Bl6C,EAAEk6C,6BAA6B,mBACzel6C,EAAEo6C,oBAAoB76C,EAAEg+B,OAAO,KAAK,mBAAoBv9B,EAAEo6C,oBAAoB76C,EAAEg+B,OAAO,GAAGh+B,EAAE48C,cAAcvpD,EAAE2M,EAAEk+B,cAAcp9B,GAAGL,EAAEkrB,MAAMt4B,EAAEoN,EAAE25C,MAAMt5C,EAAEL,EAAEmrB,QAAQ54B,EAAEK,EAAEqN,IAAI,mBAAoBD,EAAEo6C,oBAAoB76C,EAAEg+B,OAAO,GAAG3qC,GAAE,OAAQ,CAACoN,EAAET,EAAEu8B,UAAUwc,GAAGh5C,EAAEC,GAAGU,EAAEV,EAAE48C,cAAc5pD,EAAEgN,EAAE1F,OAAO0F,EAAEy7C,YAAY/6C,EAAE22C,GAAGr3C,EAAE1F,KAAKoG,GAAGD,EAAEkrB,MAAM34B,EAAEm4B,EAAEnrB,EAAEo9C,aAAanpD,EAAEwM,EAAEmrB,QAAwB,iBAAhB9qB,EAAE1N,EAAE+mD,cAAiC,OAAOr5C,EAAEA,EAAEq3C,GAAGr3C,GAAyBA,EAAEu1C,GAAGr2C,EAA1Bc,EAAE21C,GAAGrjD,GAAGgjD,GAAGlpB,GAAEZ,SAAmB,IAAIb,EAAEr4B,EAAEqnD,0BAA0B5lD,EAAE,mBAAoB42B,GACnf,mBAAoBhrB,EAAEi6C,0BAA0B,mBAAoBj6C,EAAE85C,kCAAkC,mBAAoB95C,EAAE65C,4BAA4B55C,IAAIyqB,GAAGl3B,IAAI6M,IAAIu5C,GAAGr6C,EAAES,EAAEpN,EAAEyN,GAAGw3C,IAAG,EAAGrkD,EAAE+L,EAAEk+B,cAAcz9B,EAAE25C,MAAMnmD,EAAEqlD,GAAGt5C,EAAE3M,EAAEoN,EAAE3I,GAAG,IAAIu1B,EAAErtB,EAAEk+B,cAAcx9B,IAAIyqB,GAAGl3B,IAAIo5B,GAAGF,GAAEb,SAASgsB,IAAI,mBAAoB7sB,IAAIiuB,GAAG15C,EAAE5M,EAAEq4B,EAAEp4B,GAAGg6B,EAAErtB,EAAEk+B,gBAAgBlrC,EAAEslD,IAAI0B,GAAGh6C,EAAE5M,EAAEJ,EAAEK,EAAEY,EAAEo5B,EAAEvsB,KAAKjM,GAAG,mBAAoB4L,EAAEmhD,4BAA4B,mBAAoBnhD,EAAEohD,sBAAsB,mBAAoBphD,EAAEohD,qBAAqBphD,EAAEohD,oBAAoBxuD,EAC1gBg6B,EAAEvsB,GAAG,mBAAoBL,EAAEmhD,4BAA4BnhD,EAAEmhD,2BAA2BvuD,EAAEg6B,EAAEvsB,IAAI,mBAAoBL,EAAEqhD,qBAAqB9hD,EAAEg+B,OAAO,GAAG,mBAAoBv9B,EAAEi6C,0BAA0B16C,EAAEg+B,OAAO,OAAO,mBAAoBv9B,EAAEqhD,oBAAoBphD,IAAIX,EAAE68C,eAAe3oD,IAAI8L,EAAEm+B,gBAAgBl+B,EAAEg+B,OAAO,GAAG,mBAAoBv9B,EAAEi6C,yBAAyBh6C,IAAIX,EAAE68C,eAAe3oD,IAAI8L,EAAEm+B,gBAAgBl+B,EAAEg+B,OAAO,KAAKh+B,EAAE48C,cAAcvpD,EAAE2M,EAAEk+B,cAAc7Q,GAAG5sB,EAAEkrB,MAAMt4B,EAAEoN,EAAE25C,MAAM/sB,EAAE5sB,EAAEmrB,QAAQ9qB,EAAEzN,EAAEL,IAAI,mBAAoByN,EAAEqhD,oBAC7fphD,IAAIX,EAAE68C,eAAe3oD,IAAI8L,EAAEm+B,gBAAgBl+B,EAAEg+B,OAAO,GAAG,mBAAoBv9B,EAAEi6C,yBAAyBh6C,IAAIX,EAAE68C,eAAe3oD,IAAI8L,EAAEm+B,gBAAgBl+B,EAAEg+B,OAAO,KAAK3qC,GAAE,GAAI,OAAO0uD,GAAGhiD,EAAEC,EAAE5M,EAAEC,EAAEgN,EAAEvI,GACzL,SAASiqD,GAAGhiD,EAAEC,EAAE5M,EAAEC,EAAEyE,EAAEuI,GAAGqhD,GAAG3hD,EAAEC,GAAG,IAAIS,EAAE,IAAa,IAART,EAAEg+B,OAAW,IAAI3qC,IAAIoN,EAAE,OAAO3I,GAAGm/C,GAAGj3C,EAAE5M,GAAE,GAAI8tD,GAAGnhD,EAAEC,EAAEK,GAAGhN,EAAE2M,EAAEu8B,UAAUwkB,GAAGz0B,QAAQtsB,EAAE,IAAIU,EAAED,GAAG,mBAAoBrN,EAAE4uD,yBAAyB,KAAK3uD,EAAE+7B,SAAwI,OAA/HpvB,EAAEg+B,OAAO,EAAE,OAAOj+B,GAAGU,GAAGT,EAAEs+B,MAAMwd,GAAG97C,EAAED,EAAEu+B,MAAM,KAAKj+B,GAAGL,EAAEs+B,MAAMwd,GAAG97C,EAAE,KAAKU,EAAEL,IAAI2gD,GAAGjhD,EAAEC,EAAEU,EAAEL,GAAGL,EAAEk+B,cAAc7qC,EAAE+mD,MAAMtiD,GAAGm/C,GAAGj3C,EAAE5M,GAAE,GAAW4M,EAAEs+B,MAAM,SAAS2jB,GAAGliD,GAAG,IAAIC,EAAED,EAAEw8B,UAAUv8B,EAAEkiD,eAAetL,GAAG72C,EAAEC,EAAEkiD,eAAeliD,EAAEkiD,iBAAiBliD,EAAE4rB,SAAS5rB,EAAE4rB,SAASgrB,GAAG72C,EAAEC,EAAE4rB,SAAQ,GAAIywB,GAAGt8C,EAAEC,EAAE0gC,eAC9d,IAW0VyhB,GAAMC,GAAGC,GAX/VC,GAAG,CAACnkB,WAAW,KAAKkf,UAAU,GAClC,SAASkF,GAAGxiD,EAAEC,EAAE5M,GAAG,IAA0DsN,EAAtDrN,EAAE2M,EAAEo9C,aAAatlD,EAAEw1B,GAAEhB,QAAQjsB,GAAE,EAAGI,EAAE,IAAa,IAART,EAAEg+B,OAAuM,IAAzLt9B,EAAED,KAAKC,GAAE,OAAOX,GAAG,OAAOA,EAAEm+B,gBAAiB,IAAO,EAAFpmC,IAAM4I,GAAGL,GAAE,EAAGL,EAAEg+B,QAAQ,KAAK,OAAOj+B,GAAG,OAAOA,EAAEm+B,oBAAe,IAAS7qC,EAAEmvD,WAAU,IAAKnvD,EAAEovD,6BAA6B3qD,GAAG,GAAG80B,GAAEU,GAAI,EAAFx1B,GAAQ,OAAOiI,EAAE,CAAC,QAAG,IAAS1M,EAAEmvD,WAAWlF,GAAGt9C,GAAqB,QAAlBD,EAAEC,EAAEk+B,gBAAwC,QAAfn+B,EAAEA,EAAEo+B,aAAsB,OAAO,IAAY,EAAPn+B,EAAE9L,MAAQ8L,EAAEi4C,MAAM,EAAE,OAAOl4C,EAAEvB,KAAKwB,EAAEi4C,MAAM,IAAIj4C,EAAEi4C,MAAM,WAAW,KAAKl4C,EAAE1M,EAAEw5B,SAAS,IAAI/rB,EAAEzN,EAAEmvD,SAAS,OAAOniD,GAAGN,EAAE2iD,GAAG1iD,EAAED,EAAEe,EAAE1N,GAAG4M,EAAEs+B,MAAMJ,cAC5f,CAACsjB,UAAUpuD,GAAG4M,EAAEk+B,cAAcokB,GAAGviD,GAAG,iBAAkB1M,EAAEsvD,2BAA2B5iD,EAAE2iD,GAAG1iD,EAAED,EAAEe,EAAE1N,GAAG4M,EAAEs+B,MAAMJ,cAAc,CAACsjB,UAAUpuD,GAAG4M,EAAEk+B,cAAcokB,GAAGtiD,EAAEi4C,MAAM,SAASl4C,GAAG6iD,GAAG5iD,EAAED,EAAE3M,GAAqB,GAAG,QAArB0E,EAAEiI,EAAEm+B,eAA0B,CAAgB,GAAG,QAAlBx9B,EAAE5I,EAAEqmC,YAAuB,CAAC,GAAG19B,EAAG,OAAG,OAAOT,EAAEk+B,eAAqBl+B,EAAEs+B,MAAMv+B,EAAEu+B,MAAMt+B,EAAEg+B,OAAO,IAAI,OAAK39B,EAAEhN,EAAEmvD,SAAS1hD,EAAEd,EAAE9L,KAAKb,EAAEwvD,GAAGxvD,EAAEw5B,SAAS/rB,EAAE,EAAE,OAAMT,EAAEw7C,GAAGx7C,EAAES,EAAE1N,EAAE,OAAQ4qC,OAAO,EAAE3qC,EAAE0qC,OAAO/9B,EAAEK,EAAE09B,OAAO/9B,EAAE3M,EAAEkrC,QAAQl+B,EAAEL,EAAEs+B,MAAMjrC,EAAE,IAAY,EAAP2M,EAAE9L,OAAS4nD,GAAG97C,EAAED,EAAEu+B,MAAM,KAAKlrC,GAAG4M,EAAEs+B,MAAMJ,cAAc,CAACsjB,UAAUpuD,GACxf4M,EAAEk+B,cAAcokB,GAAUjiD,GAAE,GAAG,IAAO,GAAFyiD,KAAO,IAAY,EAAP9iD,EAAE9L,OAAS,OAAOwM,EAAElC,KAAKwB,EAAE+iD,GAAGhjD,EAAEC,EAAE5M,QAAQ,GAAGC,EAAE,IAAKD,EAAE2M,EAAE83C,YAAYK,IAAI7kD,EAAE,CAAK,GAAG,QAAPA,EAAEw6B,IAAc,CAAO,OAANwW,GAAGjxC,GAAU+4B,IAAG,KAAK,GAAG,KAAK,GAAGrrB,EAAE,EAAE,MAAM,KAAK,GAAG,KAAK,GAAGA,EAAE,EAAE,MAAM,KAAK,GAAG,KAAK,GAAGA,EAAE,GAAG,MAAM,KAAK,EAAE,KAAK,EAAEA,EAAE,IAAI,MAAM,KAAK,EAAE,KAAK,EAAe,KAAK,EAAEA,EAAE,KAAK,MAAM,KAAK,EAAEA,EAAE,SAAS,MAAM,KAAK,EAAE,KAAK,EAAEA,EAAE,UAAU,MAAM,KAAK,EAAE,KAAK,EAAEA,EAAE,EAAE,MAAM,QAAQ,MAAM1H,MAAM6xB,EAAE,IAAInqB,IAAwC,KAAnCzN,EAAE,IAAKyN,GAAGzN,EAAEoxC,eAAerxC,IAAI,EAAE0N,IAASzN,IAAIyE,EAAEulD,YAAYvlD,EAAEulD,UAAUhqD,EAAE0mD,GAAGh6C,EAAE1M,GAAG,IAAI2vD,KACzfhjD,EAAE+iD,GAAGhjD,EAAEC,EAAE5M,OAAO,OAAOsN,EAAElC,MAAMwB,EAAEg+B,OAAO,IAAIh+B,EAAEs+B,MAAMv+B,EAAEu+B,MAAMt+B,EAAEijD,GAAG1uD,KAAK,KAAKwL,GAAGW,EAAEwiD,YAAYljD,EAAEA,EAAE,OAAO+8C,GAAGtH,GAAG/0C,EAAEnH,aAAagkD,GAAGv9C,GAAGg9C,IAAG,GAAGh9C,EAAE4iD,GAAG5iD,EAAEA,EAAEo9C,aAAavwB,SAASz5B,IAAK4qC,OAAO,MAAM,OAAOh+B,EAAE,OAAGK,GAAShN,EAAE8vD,GAAGpjD,EAAEC,EAAE3M,EAAEw5B,SAASx5B,EAAEmvD,SAASpvD,GAAGiN,EAAEL,EAAEs+B,MAAMx9B,EAAEf,EAAEu+B,MAAMJ,cAAc79B,EAAE69B,cAAc,OAAOp9B,EAAE,CAAC0gD,UAAUpuD,GAAG,CAACouD,UAAU1gD,EAAE0gD,UAAUpuD,GAAGiN,EAAEw3C,WAAW93C,EAAE83C,YAAYzkD,EAAE4M,EAAEk+B,cAAcokB,GAAGjvD,IAAED,EAAEgwD,GAAGrjD,EAAEC,EAAE3M,EAAEw5B,SAASz5B,GAAG4M,EAAEk+B,cAAc,KAAY9qC,GAAE,OAAGiN,GAAShN,EAAE8vD,GAAGpjD,EAAEC,EAAE3M,EAAEw5B,SAASx5B,EAAEmvD,SAASpvD,GAAGiN,EAAEL,EAAEs+B,MAAMx9B,EAAEf,EAAEu+B,MAAMJ,cAC5f79B,EAAE69B,cAAc,OAAOp9B,EAAE,CAAC0gD,UAAUpuD,GAAG,CAACouD,UAAU1gD,EAAE0gD,UAAUpuD,GAAGiN,EAAEw3C,WAAW93C,EAAE83C,YAAYzkD,EAAE4M,EAAEk+B,cAAcokB,GAAGjvD,IAAED,EAAEgwD,GAAGrjD,EAAEC,EAAE3M,EAAEw5B,SAASz5B,GAAG4M,EAAEk+B,cAAc,KAAY9qC,GAAE,SAASwvD,GAAG7iD,EAAEC,EAAE5M,GAA8D,OAA3D4M,EAAE6iD,GAAG,CAAC3uD,KAAK,UAAU24B,SAAS7sB,GAAGD,EAAE7L,KAAKd,EAAE,OAAQ2qC,OAAOh+B,EAASA,EAAEu+B,MAAMt+B,EAAE,SAAS0iD,GAAG3iD,EAAEC,EAAE5M,EAAEC,GAAG,IAAIyE,EAAEiI,EAAE7L,KAAKmM,EAAEN,EAAEu+B,MAAuK,OAAjKt+B,EAAE,CAAC9L,KAAK,SAAS24B,SAAS7sB,GAAG,IAAO,EAAFlI,IAAM,OAAOuI,GAAGA,EAAEw3C,WAAW,EAAEx3C,EAAE+8C,aAAap9C,GAAGK,EAAEwiD,GAAG7iD,EAAElI,EAAE,EAAE,MAAM1E,EAAEyoD,GAAGzoD,EAAE0E,EAAEzE,EAAE,MAAMgN,EAAE09B,OAAOh+B,EAAE3M,EAAE2qC,OAAOh+B,EAAEM,EAAEk+B,QAAQnrC,EAAE2M,EAAEu+B,MAAMj+B,EAASjN,EAC3d,SAASgwD,GAAGrjD,EAAEC,EAAE5M,EAAEC,GAAG,IAAIyE,EAAEiI,EAAEu+B,MAAiL,OAA3Kv+B,EAAEjI,EAAEymC,QAAQnrC,EAAEmoD,GAAGzjD,EAAE,CAAC5D,KAAK,UAAU24B,SAASz5B,IAAI,IAAY,EAAP4M,EAAE9L,QAAUd,EAAE6kD,MAAM5kD,GAAGD,EAAE2qC,OAAO/9B,EAAE5M,EAAEmrC,QAAQ,KAAK,OAAOx+B,IAAIA,EAAEs7C,WAAW,KAAKt7C,EAAEi+B,MAAM,EAAEh+B,EAAEs7C,YAAYt7C,EAAEo7C,WAAWr7C,GAAUC,EAAEs+B,MAAMlrC,EAC7N,SAAS+vD,GAAGpjD,EAAEC,EAAE5M,EAAEC,EAAEyE,GAAG,IAAIuI,EAAEL,EAAE9L,KAAKuM,EAAEV,EAAEu+B,MAAMv+B,EAAEU,EAAE89B,QAAQ,IAAI79B,EAAE,CAACxM,KAAK,SAAS24B,SAASz5B,GAAoS,OAAjS,IAAO,EAAFiN,IAAML,EAAEs+B,QAAQ79B,IAAGrN,EAAE4M,EAAEs+B,OAAQuZ,WAAW,EAAEzkD,EAAEgqD,aAAa18C,EAAiB,QAAfD,EAAErN,EAAEgoD,aAAqBp7C,EAAEs7C,YAAYloD,EAAEkoD,YAAYt7C,EAAEo7C,WAAW36C,EAAEA,EAAE46C,WAAW,MAAMr7C,EAAEs7C,YAAYt7C,EAAEo7C,WAAW,MAAMhoD,EAAEmoD,GAAG96C,EAAEC,GAAG,OAAOX,EAAE1M,EAAEkoD,GAAGx7C,EAAE1M,IAAIA,EAAEwoD,GAAGxoD,EAAEgN,EAAEvI,EAAE,OAAQkmC,OAAO,EAAG3qC,EAAE0qC,OAAO/9B,EAAE5M,EAAE2qC,OAAO/9B,EAAE5M,EAAEmrC,QAAQlrC,EAAE2M,EAAEs+B,MAAMlrC,EAASC,EACnY,SAAS0vD,GAAGhjD,EAAEC,EAAE5M,GAA0F,OAAvF0oD,GAAG97C,EAAED,EAAEu+B,MAAM,KAAKlrC,IAAG2M,EAAE6iD,GAAG5iD,EAAEA,EAAEo9C,aAAavwB,SAASz5B,IAAK4qC,OAAO,EAAEh+B,EAAEk+B,cAAc,KAAYn+B,EAAE,SAASsjD,GAAGtjD,EAAEC,GAAGD,EAAEk4C,OAAOj4C,EAAE,IAAI5M,EAAE2M,EAAE+9B,UAAU,OAAO1qC,IAAIA,EAAE6kD,OAAOj4C,GAAG43C,GAAG73C,EAAEg+B,OAAO/9B,GAAG,SAASsjD,GAAGvjD,EAAEC,EAAE5M,EAAEC,EAAEyE,EAAEuI,GAAG,IAAII,EAAEV,EAAEm+B,cAAc,OAAOz9B,EAAEV,EAAEm+B,cAAc,CAACqlB,YAAYvjD,EAAEwjD,UAAU,KAAKC,mBAAmB,EAAEC,KAAKrwD,EAAE2wB,KAAK5wB,EAAEuwD,SAAS7rD,EAAEsjD,WAAW/6C,IAAII,EAAE8iD,YAAYvjD,EAAES,EAAE+iD,UAAU,KAAK/iD,EAAEgjD,mBAAmB,EAAEhjD,EAAEijD,KAAKrwD,EAAEoN,EAAEujB,KAAK5wB,EAAEqN,EAAEkjD,SAAS7rD,EAAE2I,EAAE26C,WAAW/6C,GAC9c,SAASujD,GAAG7jD,EAAEC,EAAE5M,GAAG,IAAIC,EAAE2M,EAAEo9C,aAAatlD,EAAEzE,EAAEwpD,YAAYx8C,EAAEhN,EAAE2wB,KAAsC,GAAjCg9B,GAAGjhD,EAAEC,EAAE3M,EAAEw5B,SAASz5B,GAAkB,IAAO,GAAtBC,EAAEi6B,GAAEhB,UAAqBj5B,EAAI,EAAFA,EAAI,EAAE2M,EAAEg+B,OAAO,QAAQ,CAAC,GAAG,OAAOj+B,GAAG,IAAa,IAARA,EAAEi+B,OAAWj+B,EAAE,IAAIA,EAAEC,EAAEs+B,MAAM,OAAOv+B,GAAG,CAAC,GAAG,KAAKA,EAAE40B,IAAI,OAAO50B,EAAEm+B,eAAemlB,GAAGtjD,EAAE3M,QAAQ,GAAG,KAAK2M,EAAE40B,IAAI0uB,GAAGtjD,EAAE3M,QAAQ,GAAG,OAAO2M,EAAEu+B,MAAM,CAACv+B,EAAEu+B,MAAMP,OAAOh+B,EAAEA,EAAEA,EAAEu+B,MAAM,SAAS,GAAGv+B,IAAIC,EAAE,MAAMD,EAAE,KAAK,OAAOA,EAAEw+B,SAAS,CAAC,GAAG,OAAOx+B,EAAEg+B,QAAQh+B,EAAEg+B,SAAS/9B,EAAE,MAAMD,EAAEA,EAAEA,EAAEg+B,OAAOh+B,EAAEw+B,QAAQR,OAAOh+B,EAAEg+B,OAAOh+B,EAAEA,EAAEw+B,QAAQlrC,GAAG,EAAS,GAAPu5B,GAAEU,GAAEj6B,GAAM,IAAY,EAAP2M,EAAE9L,MAAQ8L,EAAEk+B,cAC3e,UAAU,OAAOpmC,GAAG,IAAK,WAAqB,IAAV1E,EAAE4M,EAAEs+B,MAAUxmC,EAAE,KAAK,OAAO1E,GAAiB,QAAd2M,EAAE3M,EAAE0qC,YAAoB,OAAO6e,GAAG58C,KAAKjI,EAAE1E,GAAGA,EAAEA,EAAEmrC,QAAY,QAAJnrC,EAAE0E,IAAYA,EAAEkI,EAAEs+B,MAAMt+B,EAAEs+B,MAAM,OAAOxmC,EAAE1E,EAAEmrC,QAAQnrC,EAAEmrC,QAAQ,MAAM+kB,GAAGtjD,GAAE,EAAGlI,EAAE1E,EAAEiN,EAAEL,EAAEo7C,YAAY,MAAM,IAAK,YAA6B,IAAjBhoD,EAAE,KAAK0E,EAAEkI,EAAEs+B,MAAUt+B,EAAEs+B,MAAM,KAAK,OAAOxmC,GAAG,CAAe,GAAG,QAAjBiI,EAAEjI,EAAEgmC,YAAuB,OAAO6e,GAAG58C,GAAG,CAACC,EAAEs+B,MAAMxmC,EAAE,MAAMiI,EAAEjI,EAAEymC,QAAQzmC,EAAEymC,QAAQnrC,EAAEA,EAAE0E,EAAEA,EAAEiI,EAAEujD,GAAGtjD,GAAE,EAAG5M,EAAE,KAAKiN,EAAEL,EAAEo7C,YAAY,MAAM,IAAK,WAAWkI,GAAGtjD,GAAE,EAAG,KAAK,UAAK,EAAOA,EAAEo7C,YAAY,MAAM,QAAQp7C,EAAEk+B,cAAc,KAAK,OAAOl+B,EAAEs+B,MAC/f,SAAS4iB,GAAGnhD,EAAEC,EAAE5M,GAAyD,GAAtD,OAAO2M,IAAIC,EAAE+3C,aAAah4C,EAAEg4C,cAAcwB,IAAIv5C,EAAEi4C,MAAS,IAAK7kD,EAAE4M,EAAE63C,YAAY,CAAC,GAAG,OAAO93C,GAAGC,EAAEs+B,QAAQv+B,EAAEu+B,MAAM,MAAMllC,MAAM6xB,EAAE,MAAM,GAAG,OAAOjrB,EAAEs+B,MAAM,CAA4C,IAAjClrC,EAAEmoD,GAAZx7C,EAAEC,EAAEs+B,MAAav+B,EAAEq9C,cAAcp9C,EAAEs+B,MAAMlrC,EAAMA,EAAE2qC,OAAO/9B,EAAE,OAAOD,EAAEw+B,SAASx+B,EAAEA,EAAEw+B,SAAQnrC,EAAEA,EAAEmrC,QAAQgd,GAAGx7C,EAAEA,EAAEq9C,eAAgBrf,OAAO/9B,EAAE5M,EAAEmrC,QAAQ,KAAK,OAAOv+B,EAAEs+B,MAAM,OAAO,KAK5P,SAASulB,GAAG9jD,EAAEC,GAAG,IAAIg9C,GAAG,OAAOj9C,EAAE4jD,UAAU,IAAK,SAAS3jD,EAAED,EAAEikB,KAAK,IAAI,IAAI5wB,EAAE,KAAK,OAAO4M,GAAG,OAAOA,EAAE89B,YAAY1qC,EAAE4M,GAAGA,EAAEA,EAAEu+B,QAAQ,OAAOnrC,EAAE2M,EAAEikB,KAAK,KAAK5wB,EAAEmrC,QAAQ,KAAK,MAAM,IAAK,YAAYnrC,EAAE2M,EAAEikB,KAAK,IAAI,IAAI3wB,EAAE,KAAK,OAAOD,GAAG,OAAOA,EAAE0qC,YAAYzqC,EAAED,GAAGA,EAAEA,EAAEmrC,QAAQ,OAAOlrC,EAAE2M,GAAG,OAAOD,EAAEikB,KAAKjkB,EAAEikB,KAAK,KAAKjkB,EAAEikB,KAAKua,QAAQ,KAAKlrC,EAAEkrC,QAAQ,MAC7Z,SAASulB,GAAG/jD,EAAEC,EAAE5M,GAAG,IAAIC,EAAE2M,EAAEo9C,aAAa,OAAOp9C,EAAE20B,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,OAAO,KAAK,KAAK,EAAE,OAAO8hB,GAAGz2C,EAAE1F,OAAOq8C,KAAK,KAAK,KAAK,EAAsL,OAApL6F,KAAKjwB,GAAEY,IAAGZ,GAAEW,IAAGywB,MAAKtqD,EAAE2M,EAAEu8B,WAAY2lB,iBAAiB7uD,EAAEu4B,QAAQv4B,EAAE6uD,eAAe7uD,EAAE6uD,eAAe,MAAS,OAAOniD,GAAG,OAAOA,EAAEu+B,QAAMkf,GAAGx9C,GAAGA,EAAEg+B,OAAO,EAAE3qC,EAAEotC,UAAUzgC,EAAEg+B,OAAO,MAAkB,KAAK,KAAK,EAAE0e,GAAG18C,GAAG,IAAIlI,EAAEskD,GAAGD,GAAG7vB,SAAkB,GAATl5B,EAAE4M,EAAE1F,KAAQ,OAAOyF,GAAG,MAAMC,EAAEu8B,UAAU6lB,GAAGriD,EAAEC,EAAE5M,EAAEC,GAAK0M,EAAE0sB,MAAMzsB,EAAEysB,MAAMzsB,EAAEg+B,OAAO,SAAS,CAAC,IAAI3qC,EAAE,CAAC,GAAG,OAC7f2M,EAAEu8B,UAAU,MAAMnjC,MAAM6xB,EAAE,MAAM,OAAO,KAAsB,GAAjBlrB,EAAEq8C,GAAGH,GAAG3vB,SAAYkxB,GAAGx9C,GAAG,CAAC3M,EAAE2M,EAAEu8B,UAAUnpC,EAAE4M,EAAE1F,KAAK,IAAI+F,EAAEL,EAAE48C,cAA8B,OAAhBvpD,EAAEyiD,IAAI91C,EAAE3M,EAAE0iD,IAAI11C,EAASjN,GAAG,IAAK,SAASi5B,GAAE,SAASh5B,GAAGg5B,GAAE,QAAQh5B,GAAG,MAAM,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQg5B,GAAE,OAAOh5B,GAAG,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAI0M,EAAE,EAAEA,EAAE0zC,GAAGj9C,OAAOuJ,IAAIssB,GAAEonB,GAAG1zC,GAAG1M,GAAG,MAAM,IAAK,SAASg5B,GAAE,QAAQh5B,GAAG,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAOg5B,GAAE,QAAQh5B,GAAGg5B,GAAE,OAAOh5B,GAAG,MAAM,IAAK,UAAUg5B,GAAE,SAASh5B,GAAG,MAAM,IAAK,QAAQ4iC,EAAG5iC,EAAEgN,GAAGgsB,GAAE,UAAUh5B,GAAG,MAAM,IAAK,SAASA,EAAE0iC,cAC5f,CAACguB,cAAc1jD,EAAE2jD,UAAU33B,GAAE,UAAUh5B,GAAG,MAAM,IAAK,WAAW0jC,GAAG1jC,EAAEgN,GAAGgsB,GAAE,UAAUh5B,GAAkB,IAAI,IAAIoN,KAAvBm7B,GAAGxoC,EAAEiN,GAAGN,EAAE,KAAkBM,EAAEA,EAAEzL,eAAe6L,KAAK3I,EAAEuI,EAAEI,GAAG,aAAaA,EAAE,iBAAkB3I,EAAEzE,EAAE6jC,cAAcp/B,IAAIiI,EAAE,CAAC,WAAWjI,IAAI,iBAAkBA,GAAGzE,EAAE6jC,cAAc,GAAGp/B,IAAIiI,EAAE,CAAC,WAAW,GAAGjI,IAAIw5B,EAAG18B,eAAe6L,IAAI,MAAM3I,GAAG,aAAa2I,GAAG4rB,GAAE,SAASh5B,IAAI,OAAOD,GAAG,IAAK,QAAQ4hC,EAAG3hC,GAAGkjC,GAAGljC,EAAEgN,GAAE,GAAI,MAAM,IAAK,WAAW20B,EAAG3hC,GAAG4jC,GAAG5jC,GAAG,MAAM,IAAK,SAAS,IAAK,SAAS,MAAM,QAAQ,mBAAoBgN,EAAE4jD,UAAU5wD,EAAE6wD,QACtfpP,IAAIzhD,EAAE0M,EAAEC,EAAEw4C,YAAYnlD,EAAE,OAAOA,IAAI2M,EAAEg+B,OAAO,OAAO,CAAiZ,OAAhZv9B,EAAE,IAAI3I,EAAEggC,SAAShgC,EAAEA,EAAE0+B,cAAcz2B,IAAIo3B,KAAUp3B,EAAEq3B,GAAGhkC,IAAI2M,IAAIo3B,GAAQ,WAAW/jC,IAAG2M,EAAEU,EAAEtG,cAAc,QAASw9B,UAAU,qBAAuB53B,EAAEA,EAAEjG,YAAYiG,EAAErG,aAAa,iBAAkBrG,EAAEyoC,GAAG/7B,EAAEU,EAAEtG,cAAc/G,EAAE,CAAC0oC,GAAGzoC,EAAEyoC,MAAM/7B,EAAEU,EAAEtG,cAAc/G,GAAG,WAAWA,IAAIqN,EAAEV,EAAE1M,EAAE2wD,SAASvjD,EAAEujD,UAAS,EAAG3wD,EAAE8wD,OAAO1jD,EAAE0jD,KAAK9wD,EAAE8wD,QAAQpkD,EAAEU,EAAE2jD,gBAAgBrkD,EAAE3M,GAAG2M,EAAE+1C,IAAI91C,EAAED,EAAEg2C,IAAI1iD,EAAE8uD,GAAGpiD,EAAEC,GAASA,EAAEu8B,UAAUx8B,EAAEU,EAAEo7B,GAAGzoC,EAAEC,GAAUD,GAAG,IAAK,SAASi5B,GAAE,SAAStsB,GAAGssB,GAAE,QAAQtsB,GACpfjI,EAAEzE,EAAE,MAAM,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQg5B,GAAE,OAAOtsB,GAAGjI,EAAEzE,EAAE,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAIyE,EAAE,EAAEA,EAAE27C,GAAGj9C,OAAOsB,IAAIu0B,GAAEonB,GAAG37C,GAAGiI,GAAGjI,EAAEzE,EAAE,MAAM,IAAK,SAASg5B,GAAE,QAAQtsB,GAAGjI,EAAEzE,EAAE,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAOg5B,GAAE,QAAQtsB,GAAGssB,GAAE,OAAOtsB,GAAGjI,EAAEzE,EAAE,MAAM,IAAK,UAAUg5B,GAAE,SAAStsB,GAAGjI,EAAEzE,EAAE,MAAM,IAAK,QAAQ4iC,EAAGl2B,EAAE1M,GAAGyE,EAAE89B,EAAG71B,EAAE1M,GAAGg5B,GAAE,UAAUtsB,GAAG,MAAM,IAAK,SAASjI,EAAE2+B,GAAG12B,EAAE1M,GAAG,MAAM,IAAK,SAAS0M,EAAEg2B,cAAc,CAACguB,cAAc1wD,EAAE2wD,UAAUlsD,EAAE3E,EAAE,GAAGE,EAAE,CAACW,WAAM,IAASq4B,GAAE,UAAUtsB,GAAG,MAAM,IAAK,WAAWg3B,GAAGh3B,EAAE1M,GAAGyE,EACpfwS,GAAGvK,EAAE1M,GAAGg5B,GAAE,UAAUtsB,GAAG,MAAM,QAAQjI,EAAEzE,EAAEuoC,GAAGxoC,EAAE0E,GAAG,IAAI4I,EAAE5I,EAAE,IAAIuI,KAAKK,EAAE,GAAGA,EAAE9L,eAAeyL,GAAG,CAAC,IAAIS,EAAEJ,EAAEL,GAAG,UAAUA,EAAEw6B,GAAG96B,EAAEe,GAAG,4BAA4BT,EAAuB,OAApBS,EAAEA,EAAEA,EAAEs0C,YAAO,IAAgB7d,GAAGx3B,EAAEe,GAAI,aAAaT,EAAE,iBAAkBS,GAAG,aAAa1N,GAAG,KAAK0N,IAAI82B,GAAG73B,EAAEe,GAAG,iBAAkBA,GAAG82B,GAAG73B,EAAE,GAAGe,GAAG,mCAAmCT,GAAG,6BAA6BA,GAAG,cAAcA,IAAIixB,EAAG18B,eAAeyL,GAAG,MAAMS,GAAG,aAAaT,GAAGgsB,GAAE,SAAStsB,GAAG,MAAMe,GAAG0xB,EAAGzyB,EAAEM,EAAES,EAAEL,IAAI,OAAOrN,GAAG,IAAK,QAAQ4hC,EAAGj1B,GAAGw2B,GAAGx2B,EAAE1M,GAAE,GACnf,MAAM,IAAK,WAAW2hC,EAAGj1B,GAAGk3B,GAAGl3B,GAAG,MAAM,IAAK,SAAS,MAAM1M,EAAEW,OAAO+L,EAAElF,aAAa,QAAQ,GAAGg6B,EAAGxhC,EAAEW,QAAQ,MAAM,IAAK,SAAS+L,EAAEikD,WAAW3wD,EAAE2wD,SAAmB,OAAV3jD,EAAEhN,EAAEW,OAAc0iC,GAAG32B,IAAI1M,EAAE2wD,SAAS3jD,GAAE,GAAI,MAAMhN,EAAEyiC,cAAcY,GAAG32B,IAAI1M,EAAE2wD,SAAS3wD,EAAEyiC,cAAa,GAAI,MAAM,QAAQ,mBAAoBh+B,EAAEmsD,UAAUlkD,EAAEmkD,QAAQpP,IAAIG,GAAG7hD,EAAEC,KAAK2M,EAAEg+B,OAAO,GAAG,OAAOh+B,EAAEysB,MAAMzsB,EAAEg+B,OAAO,KAAK,OAAO,KAAK,KAAK,EAAE,GAAGj+B,GAAG,MAAMC,EAAEu8B,UAAU8lB,GAAGtiD,EAAEC,EAAED,EAAE68C,cAAcvpD,OAAO,CAAC,GAAG,iBAAkBA,GAAG,OAAO2M,EAAEu8B,UAAU,MAAMnjC,MAAM6xB,EAAE,MAC/e73B,EAAEgpD,GAAGD,GAAG7vB,SAAS8vB,GAAGH,GAAG3vB,SAASkxB,GAAGx9C,IAAI3M,EAAE2M,EAAEu8B,UAAUnpC,EAAE4M,EAAE48C,cAAcvpD,EAAEyiD,IAAI91C,EAAE3M,EAAE0kC,YAAY3kC,IAAI4M,EAAEg+B,OAAO,MAAK3qC,GAAG,IAAID,EAAE0kC,SAAS1kC,EAAEA,EAAEojC,eAAe35B,eAAexJ,IAAKyiD,IAAI91C,EAAEA,EAAEu8B,UAAUlpC,GAAG,OAAO,KAAK,KAAK,GAA0B,GAAvBk5B,GAAEe,IAAwB,QAArBj6B,EAAE2M,EAAEk+B,gBAA2B,OAAO7qC,EAAE8qC,WAAW,CAAC,GAAG,OAAOp+B,EAAE,CAAC,IAAIy9C,GAAGx9C,GAAG,MAAM5G,MAAM6xB,EAAE,MAAqD,KAA7B53B,EAAE,QAApBA,EAAE2M,EAAEk+B,eAAyB7qC,EAAE8qC,WAAW,MAAW,MAAM/kC,MAAM6xB,EAAE,MAAM53B,EAAEyiD,IAAI91C,OAAOy9C,KAAK,IAAa,IAARz9C,EAAEg+B,SAAah+B,EAAEk+B,cAAc,MAAMl+B,EAAEg+B,OAAO,EAAE,OAAO,KAAK,OAAG,IAAa,IAARh+B,EAAEg+B,QAAkBh+B,EAAEi4C,MAC/e7kD,EAAE4M,IAAE3M,EAAE,OAAOA,EAAED,GAAE,EAAG,OAAO2M,OAAE,IAASC,EAAE48C,cAAc4F,UAAUhF,GAAGx9C,GAAG5M,EAAE,OAAO2M,EAAEm+B,cAAc7qC,IAAID,GAAG,IAAY,EAAP4M,EAAE9L,QAAU,OAAO6L,IAAG,IAAKC,EAAE48C,cAAc6F,4BAA4B,IAAe,EAAVn1B,GAAEhB,SAAW,IAAI+3B,KAAIA,GAAE,GAAGrB,OAAS3vD,GAAGD,KAAE4M,EAAEg+B,OAAO,GAAS,MAAK,KAAK,EAAE,OAAOwe,KAAW,OAAOz8C,GAAGm0C,GAAGl0C,EAAEu8B,UAAUmE,eAAe,KAAK,KAAK,GAAG,OAAOiX,GAAG33C,GAAG,KAAK,KAAK,GAAG,OAAOy2C,GAAGz2C,EAAE1F,OAAOq8C,KAAK,KAAK,KAAK,GAA0B,GAAvBpqB,GAAEe,IAAwB,QAArBj6B,EAAE2M,EAAEk+B,eAA0B,OAAO,KAAuC,GAAlC79B,EAAE,IAAa,IAARL,EAAEg+B,OAA4B,QAAjBv9B,EAAEpN,EAAEmwD,WAAsB,GAAGnjD,EAAEwjD,GAAGxwD,GAAE,OAAQ,CAAC,GAAG,IACtfgxD,IAAG,OAAOtkD,GAAG,IAAa,IAARA,EAAEi+B,OAAW,IAAIj+B,EAAEC,EAAEs+B,MAAM,OAAOv+B,GAAG,CAAS,GAAG,QAAXU,EAAEk8C,GAAG58C,IAAe,CAAsJ,IAArJC,EAAEg+B,OAAO,IAAI6lB,GAAGxwD,GAAE,GAAoB,QAAhBgN,EAAEI,EAAE+3C,eAAuBx4C,EAAEw4C,YAAYn4C,EAAEL,EAAEg+B,OAAO,GAAG,OAAO3qC,EAAE+nD,aAAap7C,EAAEs7C,YAAY,MAAMt7C,EAAEo7C,WAAW/nD,EAAE+nD,WAAW/nD,EAAED,EAAMA,EAAE4M,EAAEs+B,MAAM,OAAOlrC,GAAO2M,EAAE1M,GAANgN,EAAEjN,GAAQ4qC,OAAO,EAAE39B,EAAEg7C,WAAW,KAAKh7C,EAAEi7C,YAAY,KAAKj7C,EAAE+6C,WAAW,KAAmB,QAAd36C,EAAEJ,EAAEy9B,YAAoBz9B,EAAEw3C,WAAW,EAAEx3C,EAAE43C,MAAMl4C,EAAEM,EAAEi+B,MAAM,KAAKj+B,EAAEikD,aAAa,EAAEjkD,EAAEu8C,cAAc,KAAKv8C,EAAE69B,cAAc,KAAK79B,EAAEm4C,YAAY,KAAKn4C,EAAE03C,aAAa,KAAK13C,EAAEk8B,UAAU,OAC/el8B,EAAEw3C,WAAWp3C,EAAEo3C,WAAWx3C,EAAE43C,MAAMx3C,EAAEw3C,MAAM53C,EAAEi+B,MAAM79B,EAAE69B,MAAMj+B,EAAEikD,aAAa7jD,EAAE6jD,aAAajkD,EAAEkkD,UAAU,KAAKlkD,EAAEu8C,cAAcn8C,EAAEm8C,cAAcv8C,EAAE69B,cAAcz9B,EAAEy9B,cAAc79B,EAAEm4C,YAAY/3C,EAAE+3C,YAAYn4C,EAAE/F,KAAKmG,EAAEnG,KAAKyF,EAAEU,EAAEs3C,aAAa13C,EAAE03C,aAAa,OAAOh4C,EAAE,KAAK,CAACk4C,MAAMl4C,EAAEk4C,MAAMD,aAAaj4C,EAAEi4C,eAAe5kD,EAAEA,EAAEmrC,QAA2B,OAAnB3R,GAAEU,GAAY,EAAVA,GAAEhB,QAAU,GAAUtsB,EAAEs+B,MAAMv+B,EAAEA,EAAEw+B,QAAQ,OAAOlrC,EAAE2wB,MAAM+H,KAAIy4B,KAAKxkD,EAAEg+B,OAAO,IAAI39B,GAAE,EAAGwjD,GAAGxwD,GAAE,GAAI2M,EAAEi4C,MAAM,cAAc,CAAC,IAAI53C,EAAE,GAAW,QAARN,EAAE48C,GAAGl8C,KAAa,GAAGT,EAAEg+B,OAAO,IAAI39B,GAAE,EAAmB,QAAhBjN,EAAE2M,EAAEy4C,eACnex4C,EAAEw4C,YAAYplD,EAAE4M,EAAEg+B,OAAO,GAAG6lB,GAAGxwD,GAAE,GAAI,OAAOA,EAAE2wB,MAAM,WAAW3wB,EAAEswD,WAAWljD,EAAEq9B,YAAYkf,GAAG,OAAmC,QAA5Bh9C,EAAEA,EAAEo7C,WAAW/nD,EAAE+nD,cAAsBp7C,EAAEq7C,WAAW,MAAM,UAAU,EAAEtvB,KAAI14B,EAAEowD,mBAAmBe,IAAI,aAAapxD,IAAI4M,EAAEg+B,OAAO,IAAI39B,GAAE,EAAGwjD,GAAGxwD,GAAE,GAAI2M,EAAEi4C,MAAM,UAAU5kD,EAAEkwD,aAAa9iD,EAAE89B,QAAQv+B,EAAEs+B,MAAMt+B,EAAEs+B,MAAM79B,IAAa,QAATrN,EAAEC,EAAEqwD,MAActwD,EAAEmrC,QAAQ99B,EAAET,EAAEs+B,MAAM79B,EAAEpN,EAAEqwD,KAAKjjD,GAAG,OAAO,OAAOpN,EAAE2wB,MAAM5wB,EAAEC,EAAE2wB,KAAK3wB,EAAEmwD,UAAUpwD,EAAEC,EAAE2wB,KAAK5wB,EAAEmrC,QAAQlrC,EAAE+nD,WAAWp7C,EAAEo7C,WAAW/nD,EAAEowD,mBAAmB13B,KAAI34B,EAAEmrC,QAAQ,KAAKv+B,EAAEstB,GAAEhB,QAAQM,GAAEU,GACtfjtB,EAAI,EAAFL,EAAI,EAAI,EAAFA,GAAK5M,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,OAAOqxD,KAAK,OAAO1kD,GAAG,OAAOA,EAAEm+B,gBAAiB,OAAOl+B,EAAEk+B,gBAAgB,kCAAkC7qC,EAAEa,OAAO8L,EAAEg+B,OAAO,GAAG,KAAK,MAAM5kC,MAAM6xB,EAAE,IAAIjrB,EAAE20B,MAC9L,SAAS+vB,GAAG3kD,GAAG,OAAOA,EAAE40B,KAAK,KAAK,EAAE8hB,GAAG12C,EAAEzF,OAAOq8C,KAAK,IAAI32C,EAAED,EAAEi+B,MAAM,OAAS,MAAFh+B,GAASD,EAAEi+B,OAAS,MAAHh+B,EAAS,IAAID,GAAG,KAAK,KAAK,EAAgC,GAA9By8C,KAAKjwB,GAAEY,IAAGZ,GAAEW,IAAGywB,KAAkB,IAAO,KAApB39C,EAAED,EAAEi+B,QAAqB,MAAM5kC,MAAM6xB,EAAE,MAA2B,OAArBlrB,EAAEi+B,OAAS,MAAHh+B,EAAS,IAAWD,EAAE,KAAK,EAAE,OAAO28C,GAAG38C,GAAG,KAAK,KAAK,GAA0B,GAAvBwsB,GAAEe,IAAwB,QAArBttB,EAAED,EAAEm+B,gBAA2B,OAAOl+B,EAAEm+B,WAAW,CAAC,GAAG,OAAOp+B,EAAE+9B,UAAU,MAAM1kC,MAAM6xB,EAAE,MAAMwyB,KAAe,OAAS,OAAnBz9C,EAAED,EAAEi+B,QAAsBj+B,EAAEi+B,OAAS,MAAHh+B,EAAS,IAAID,GAAG,KAAK,KAAK,GAAG,OAAOwsB,GAAEe,IAAG,KAAK,KAAK,EAAE,OAAOkvB,KAAK,KAAK,KAAK,GAAG,OAAO7E,GAAG53C,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,OAAO0kD,KACxf,KAAK,QAAQ,OAAO,MAAM,SAASE,GAAG5kD,EAAEC,GAAG,IAAI,IAAI5M,EAAE,GAAGC,EAAE2M,EAAE,GAAG5M,GAAGshC,EAAGrhC,GAAGA,EAAEA,EAAE0qC,aAAa1qC,GAAG,IAAIyE,EAAE1E,EAAE,MAAMiN,GAAGvI,EAAE,6BAA6BuI,EAAE0c,QAAQ,KAAK1c,EAAE+zB,MAAM,MAAM,CAACpgC,MAAM+L,EAAE9J,OAAO+J,EAAEo0B,MAAMt8B,GAAG,SAAS8sD,GAAG7kD,EAAEC,GAAG,IAAIxC,QAAQC,MAAMuC,EAAEhM,OAAO,MAAMZ,GAAGyN,YAAW,WAAW,MAAMzN,MAnBrR+uD,GAAG,SAASpiD,EAAEC,GAAG,IAAI,IAAI5M,EAAE4M,EAAEs+B,MAAM,OAAOlrC,GAAG,CAAC,GAAG,IAAIA,EAAEuhC,KAAK,IAAIvhC,EAAEuhC,IAAI50B,EAAEtG,YAAYrG,EAAEmpC,gBAAgB,GAAG,IAAInpC,EAAEuhC,KAAK,OAAOvhC,EAAEkrC,MAAM,CAAClrC,EAAEkrC,MAAMP,OAAO3qC,EAAEA,EAAEA,EAAEkrC,MAAM,SAAS,GAAGlrC,IAAI4M,EAAE,MAAM,KAAK,OAAO5M,EAAEmrC,SAAS,CAAC,GAAG,OAAOnrC,EAAE2qC,QAAQ3qC,EAAE2qC,SAAS/9B,EAAE,OAAO5M,EAAEA,EAAE2qC,OAAO3qC,EAAEmrC,QAAQR,OAAO3qC,EAAE2qC,OAAO3qC,EAAEA,EAAEmrC,UAChS6jB,GAAG,SAASriD,EAAEC,EAAE5M,EAAEC,GAAG,IAAIyE,EAAEiI,EAAE68C,cAAc,GAAG9kD,IAAIzE,EAAE,CAAC0M,EAAEC,EAAEu8B,UAAU6f,GAAGH,GAAG3vB,SAAS,IAAyU7rB,EAArUJ,EAAE,KAAK,OAAOjN,GAAG,IAAK,QAAQ0E,EAAE89B,EAAG71B,EAAEjI,GAAGzE,EAAEuiC,EAAG71B,EAAE1M,GAAGgN,EAAE,GAAG,MAAM,IAAK,SAASvI,EAAE2+B,GAAG12B,EAAEjI,GAAGzE,EAAEojC,GAAG12B,EAAE1M,GAAGgN,EAAE,GAAG,MAAM,IAAK,SAASvI,EAAE3E,EAAE,GAAG2E,EAAE,CAAC9D,WAAM,IAASX,EAAEF,EAAE,GAAGE,EAAE,CAACW,WAAM,IAASqM,EAAE,GAAG,MAAM,IAAK,WAAWvI,EAAEwS,GAAGvK,EAAEjI,GAAGzE,EAAEiX,GAAGvK,EAAE1M,GAAGgN,EAAE,GAAG,MAAM,QAAQ,mBAAoBvI,EAAEmsD,SAAS,mBAAoB5wD,EAAE4wD,UAAUlkD,EAAEmkD,QAAQpP,IAAyB,IAAI9hD,KAAzB4oC,GAAGxoC,EAAEC,GAASD,EAAE,KAAc0E,EAAE,IAAIzE,EAAEuB,eAAe5B,IAAI8E,EAAElD,eAAe5B,IAAI,MAAM8E,EAAE9E,GAAG,GAAG,UAC3eA,EAAE,CAAC,IAAI0N,EAAE5I,EAAE9E,GAAG,IAAIyN,KAAKC,EAAEA,EAAE9L,eAAe6L,KAAKrN,IAAIA,EAAE,IAAIA,EAAEqN,GAAG,QAAQ,4BAA4BzN,GAAG,aAAaA,GAAG,mCAAmCA,GAAG,6BAA6BA,GAAG,cAAcA,IAAIs+B,EAAG18B,eAAe5B,GAAGqN,IAAIA,EAAE,KAAKA,EAAEA,GAAG,IAAI3J,KAAK1D,EAAE,OAAO,IAAIA,KAAKK,EAAE,CAAC,IAAIyN,EAAEzN,EAAEL,GAAyB,GAAtB0N,EAAE,MAAM5I,EAAEA,EAAE9E,QAAG,EAAUK,EAAEuB,eAAe5B,IAAI8N,IAAIJ,IAAI,MAAMI,GAAG,MAAMJ,GAAG,GAAG,UAAU1N,EAAE,GAAG0N,EAAE,CAAC,IAAID,KAAKC,GAAGA,EAAE9L,eAAe6L,IAAIK,GAAGA,EAAElM,eAAe6L,KAAKrN,IAAIA,EAAE,IAAIA,EAAEqN,GAAG,IAAI,IAAIA,KAAKK,EAAEA,EAAElM,eAAe6L,IAAIC,EAAED,KAAKK,EAAEL,KAAKrN,IAClfA,EAAE,IAAIA,EAAEqN,GAAGK,EAAEL,SAASrN,IAAIiN,IAAIA,EAAE,IAAIA,EAAE3J,KAAK1D,EAAEI,IAAIA,EAAE0N,MAAM,4BAA4B9N,GAAG8N,EAAEA,EAAEA,EAAEs0C,YAAO,EAAO10C,EAAEA,EAAEA,EAAE00C,YAAO,EAAO,MAAMt0C,GAAGJ,IAAII,IAAIT,EAAEA,GAAG,IAAI3J,KAAK1D,EAAE8N,IAAI,aAAa9N,EAAE,iBAAkB8N,GAAG,iBAAkBA,IAAIT,EAAEA,GAAG,IAAI3J,KAAK1D,EAAE,GAAG8N,GAAG,mCAAmC9N,GAAG,6BAA6BA,IAAIs+B,EAAG18B,eAAe5B,IAAI,MAAM8N,GAAG,aAAa9N,GAAGq5B,GAAE,SAAStsB,GAAGM,GAAGK,IAAII,IAAIT,EAAE,KAAK,iBAAkBS,GAAG,OAAOA,GAAGA,EAAEisB,WAAW6G,EAAG9yB,EAAE5L,YAAYmL,EAAEA,GAAG,IAAI3J,KAAK1D,EAAE8N,IAAI1N,IAAIiN,EAAEA,GAAG,IAAI3J,KAAK,QAC/etD,GAAG,IAAIJ,EAAEqN,GAAKL,EAAEw4C,YAAYxlD,KAAEgN,EAAEg+B,OAAO,KAAIqkB,GAAG,SAAStiD,EAAEC,EAAE5M,EAAEC,GAAGD,IAAIC,IAAI2M,EAAEg+B,OAAO,IAe0M,IAAI6mB,GAAG,mBAAoBC,QAAQA,QAAQ3/B,IAAI,SAAS4/B,GAAGhlD,EAAEC,EAAE5M,IAAGA,EAAE4lD,IAAI,EAAE5lD,IAAKuhC,IAAI,EAAEvhC,EAAE+lD,QAAQ,CAAC6L,QAAQ,MAAM,IAAI3xD,EAAE2M,EAAEhM,MAAsD,OAAhDZ,EAAEif,SAAS,WAAW4yC,KAAKA,IAAG,EAAGC,GAAG7xD,GAAGuxD,GAAG7kD,EAAEC,IAAW5M,EAC9c,SAAS+xD,GAAGplD,EAAEC,EAAE5M,IAAGA,EAAE4lD,IAAI,EAAE5lD,IAAKuhC,IAAI,EAAE,IAAIthC,EAAE0M,EAAEzF,KAAK0nD,yBAAyB,GAAG,mBAAoB3uD,EAAE,CAAC,IAAIyE,EAAEkI,EAAEhM,MAAMZ,EAAE+lD,QAAQ,WAAmB,OAARyL,GAAG7kD,EAAEC,GAAU3M,EAAEyE,IAAI,IAAIuI,EAAEN,EAAEw8B,UAA8O,OAApO,OAAOl8B,GAAG,mBAAoBA,EAAE+kD,oBAAoBhyD,EAAEif,SAAS,WAAW,mBAAoBhf,IAAI,OAAOgyD,GAAGA,GAAG,IAAIh0B,IAAI,CAACl8B,OAAOkwD,GAAG/yC,IAAInd,MAAMyvD,GAAG7kD,EAAEC,IAAI,IAAI5M,EAAE4M,EAAEo0B,MAAMj/B,KAAKiwD,kBAAkBplD,EAAEhM,MAAM,CAACsxD,eAAe,OAAOlyD,EAAEA,EAAE,OAAcA,EAAE,IAAImyD,GAAG,mBAAoBC,QAAQA,QAAQn0B,IACxc,SAASo0B,GAAG1lD,GAAG,IAAIC,EAAED,EAAE0sB,IAAI,GAAG,OAAOzsB,EAAE,GAAG,mBAAoBA,EAAE,IAAIA,EAAE,MAAM,MAAM5M,GAAGsyD,GAAG3lD,EAAE3M,QAAQ4M,EAAEssB,QAAQ,KAAK,SAASq5B,GAAG5lD,EAAEC,GAAG,OAAOA,EAAE20B,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,OAAO,KAAK,EAAE,GAAW,IAAR30B,EAAEg+B,OAAW,OAAOj+B,EAAE,CAAC,IAAI3M,EAAE2M,EAAE68C,cAAcvpD,EAAE0M,EAAEm+B,cAA4Bl+B,GAAdD,EAAEC,EAAEu8B,WAAcme,wBAAwB16C,EAAEy7C,cAAcz7C,EAAE1F,KAAKlH,EAAEikD,GAAGr3C,EAAE1F,KAAKlH,GAAGC,GAAG0M,EAAE6lD,oCAAoC5lD,EAAE,OAAO,KAAK,EAA6C,YAAnC,IAARA,EAAEg+B,OAAWwX,GAAGx1C,EAAEu8B,UAAUmE,gBAAsB,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,MAAMtnC,MAAM6xB,EAAE,MACpe,SAAS46B,GAAG9lD,EAAEC,EAAE5M,GAAG,OAAOA,EAAEuhC,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAgD,GAAG,QAAhC30B,EAAE,QAAlBA,EAAE5M,EAAEolD,aAAuBx4C,EAAEo7C,WAAW,MAAiB,CAACr7C,EAAEC,EAAEA,EAAE8O,KAAK,EAAE,CAAC,GAAG,IAAW,EAAN/O,EAAE40B,KAAO,CAAC,IAAIthC,EAAE0M,EAAE1L,OAAO0L,EAAEqc,QAAQ/oB,IAAI0M,EAAEA,EAAE+O,WAAW/O,IAAIC,GAAgD,GAAG,QAAhCA,EAAE,QAAlBA,EAAE5M,EAAEolD,aAAuBx4C,EAAEo7C,WAAW,MAAiB,CAACr7C,EAAEC,EAAEA,EAAE8O,KAAK,EAAE,CAAC,IAAIhX,EAAEiI,EAAE1M,EAAEyE,EAAEgX,KAAa,IAAO,GAAfhX,EAAEA,EAAE68B,OAAe,IAAO,EAAF78B,KAAOguD,GAAG1yD,EAAE2M,GAAGgmD,GAAG3yD,EAAE2M,IAAIA,EAAE1M,QAAQ0M,IAAIC,GAAG,OAAO,KAAK,EAC9Q,OADgRD,EAAE3M,EAAEmpC,UAAkB,EAARnpC,EAAE4qC,QAAU,OAAOh+B,EAAED,EAAE86C,qBAAqBxnD,EAAED,EAAEqoD,cAAcroD,EAAEkH,KAAK0F,EAAE48C,cAAcvF,GAAGjkD,EAAEkH,KAAK0F,EAAE48C,eAAe78C,EAAE+hD,mBAAmBzuD,EAChgB2M,EAAEk+B,cAAcn+B,EAAE6lD,4CAAuD,QAAhB5lD,EAAE5M,EAAEolD,cAAsBgB,GAAGpmD,EAAE4M,EAAED,IAAU,KAAK,EAAkB,GAAG,QAAnBC,EAAE5M,EAAEolD,aAAwB,CAAQ,GAAPz4C,EAAE,KAAQ,OAAO3M,EAAEkrC,MAAM,OAAOlrC,EAAEkrC,MAAM3J,KAAK,KAAK,EAAE50B,EAAE3M,EAAEkrC,MAAM/B,UAAU,MAAM,KAAK,EAAEx8B,EAAE3M,EAAEkrC,MAAM/B,UAAUid,GAAGpmD,EAAE4M,EAAED,GAAG,OAAO,KAAK,EAA2E,OAAzEA,EAAE3M,EAAEmpC,eAAU,OAAOv8B,GAAW,EAAR5M,EAAE4qC,OAASiX,GAAG7hD,EAAEkH,KAAKlH,EAAEwpD,gBAAgB78C,EAAEimD,SAAe,KAAK,EAAS,KAAK,EAAS,KAAK,GAAG,OAAO,KAAK,GACzY,YAD4Y,OAAO5yD,EAAE8qC,gBAAgB9qC,EAAEA,EAAE0qC,UAAU,OAAO1qC,IAAIA,EAAEA,EAAE8qC,cAAc,OAAO9qC,IAAIA,EAAEA,EAAE+qC,WAAW,OAAO/qC,GAAG6tC,GAAG7tC,OAChf,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,MAAMgG,MAAM6xB,EAAE,MAC5E,SAASg7B,GAAGlmD,EAAEC,GAAG,IAAI,IAAI5M,EAAE2M,IAAI,CAAC,GAAG,IAAI3M,EAAEuhC,IAAI,CAAC,IAAIthC,EAAED,EAAEmpC,UAAU,GAAGv8B,EAAY,mBAAV3M,EAAEA,EAAE6F,OAA4B4hC,YAAYznC,EAAEynC,YAAY,UAAU,OAAO,aAAaznC,EAAE6yD,QAAQ,WAAW,CAAC7yD,EAAED,EAAEmpC,UAAU,IAAIzkC,EAAE1E,EAAEwpD,cAAc1jD,MAAMpB,EAAE,MAASA,GAAaA,EAAElD,eAAe,WAAWkD,EAAEouD,QAAQ,KAAK7yD,EAAE6F,MAAMgtD,QAAQtrB,GAAG,UAAU9iC,SAAS,GAAG,IAAI1E,EAAEuhC,IAAIvhC,EAAEmpC,UAAUxE,UAAU/3B,EAAE,GAAG5M,EAAEwpD,mBAAmB,IAAI,KAAKxpD,EAAEuhC,KAAK,KAAKvhC,EAAEuhC,KAAK,OAAOvhC,EAAE8qC,eAAe9qC,IAAI2M,IAAI,OAAO3M,EAAEkrC,MAAM,CAAClrC,EAAEkrC,MAAMP,OAAO3qC,EAAEA,EAAEA,EAAEkrC,MAAM,SAAS,GAAGlrC,IACtf2M,EAAE,MAAM,KAAK,OAAO3M,EAAEmrC,SAAS,CAAC,GAAG,OAAOnrC,EAAE2qC,QAAQ3qC,EAAE2qC,SAASh+B,EAAE,OAAO3M,EAAEA,EAAE2qC,OAAO3qC,EAAEmrC,QAAQR,OAAO3qC,EAAE2qC,OAAO3qC,EAAEA,EAAEmrC,SACjH,SAAS4nB,GAAGpmD,EAAEC,GAAG,GAAGm3C,IAAI,mBAAoBA,GAAGiP,qBAAqB,IAAIjP,GAAGiP,qBAAqBlP,GAAGl3C,GAAG,MAAMK,IAAI,OAAOL,EAAE20B,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAmB,GAAG,QAAnB50B,EAAEC,EAAEw4C,cAAyC,QAAfz4C,EAAEA,EAAEq7C,YAAqB,CAAC,IAAIhoD,EAAE2M,EAAEA,EAAE+O,KAAK,EAAE,CAAC,IAAIzb,EAAED,EAAE0E,EAAEzE,EAAE+oB,QAAgB,GAAR/oB,EAAEA,EAAEshC,SAAO,IAAS78B,EAAE,GAAG,IAAO,EAAFzE,GAAKyyD,GAAG9lD,EAAE5M,OAAO,CAACC,EAAE2M,EAAE,IAAIlI,IAAI,MAAMuI,GAAGqlD,GAAGryD,EAAEgN,IAAIjN,EAAEA,EAAE0b,WAAW1b,IAAI2M,GAAG,MAAM,KAAK,EAAsB,GAApB0lD,GAAGzlD,GAAoB,mBAAjBD,EAAEC,EAAEu8B,WAAmC8pB,qBAAqB,IAAItmD,EAAE4rB,MAAM3rB,EAAE48C,cAAc78C,EAAEq6C,MAAMp6C,EAAEk+B,cAAcn+B,EAAEsmD,uBAAuB,MAAMhmD,GAAGqlD,GAAG1lD,EACvgBK,GAAG,MAAM,KAAK,EAAEolD,GAAGzlD,GAAG,MAAM,KAAK,EAAEsmD,GAAGvmD,EAAEC,IAAI,SAASumD,GAAGxmD,GAAGA,EAAE+9B,UAAU,KAAK/9B,EAAEu+B,MAAM,KAAKv+B,EAAEg4C,aAAa,KAAKh4C,EAAEu7C,YAAY,KAAKv7C,EAAEq7C,WAAW,KAAKr7C,EAAE68C,cAAc,KAAK78C,EAAEm+B,cAAc,KAAKn+B,EAAEq9C,aAAa,KAAKr9C,EAAEg+B,OAAO,KAAKh+B,EAAEy4C,YAAY,KAAK,SAASgO,GAAGzmD,GAAG,OAAO,IAAIA,EAAE40B,KAAK,IAAI50B,EAAE40B,KAAK,IAAI50B,EAAE40B,IACnS,SAAS8xB,GAAG1mD,GAAGA,EAAE,CAAC,IAAI,IAAIC,EAAED,EAAEg+B,OAAO,OAAO/9B,GAAG,CAAC,GAAGwmD,GAAGxmD,GAAG,MAAMD,EAAEC,EAAEA,EAAE+9B,OAAO,MAAM3kC,MAAM6xB,EAAE,MAAO,IAAI73B,EAAE4M,EAAgB,OAAdA,EAAE5M,EAAEmpC,UAAiBnpC,EAAEuhC,KAAK,KAAK,EAAE,IAAIthC,GAAE,EAAG,MAAM,KAAK,EAA+B,KAAK,EAAE2M,EAAEA,EAAE0gC,cAAcrtC,GAAE,EAAG,MAAM,QAAQ,MAAM+F,MAAM6xB,EAAE,MAAe,GAAR73B,EAAE4qC,QAAWpG,GAAG53B,EAAE,IAAI5M,EAAE4qC,QAAQ,IAAIj+B,EAAEC,EAAE,IAAI5M,EAAE2M,IAAI,CAAC,KAAK,OAAO3M,EAAEmrC,SAAS,CAAC,GAAG,OAAOnrC,EAAE2qC,QAAQyoB,GAAGpzD,EAAE2qC,QAAQ,CAAC3qC,EAAE,KAAK,MAAM2M,EAAE3M,EAAEA,EAAE2qC,OAAiC,IAA1B3qC,EAAEmrC,QAAQR,OAAO3qC,EAAE2qC,OAAW3qC,EAAEA,EAAEmrC,QAAQ,IAAInrC,EAAEuhC,KAAK,IAAIvhC,EAAEuhC,KAAK,KAAKvhC,EAAEuhC,KAAK,CAAC,GAAW,EAARvhC,EAAE4qC,MAAQ,SAASh+B,EAAE,GAAG,OAC/e5M,EAAEkrC,OAAO,IAAIlrC,EAAEuhC,IAAI,SAAS30B,EAAO5M,EAAEkrC,MAAMP,OAAO3qC,EAAEA,EAAEA,EAAEkrC,MAAM,KAAa,EAARlrC,EAAE4qC,OAAS,CAAC5qC,EAAEA,EAAEmpC,UAAU,MAAMx8B,GAAG1M,EACtG,SAASqzD,EAAG3mD,EAAEC,EAAE5M,GAAG,IAAIC,EAAE0M,EAAE40B,IAAI78B,EAAE,IAAIzE,GAAG,IAAIA,EAAE,GAAGyE,EAAEiI,EAAEjI,EAAEiI,EAAEw8B,UAAUx8B,EAAEw8B,UAAUsX,SAAS7zC,EAAE,IAAI5M,EAAE0kC,SAAS1kC,EAAEyG,WAAWL,aAAauG,EAAEC,GAAG5M,EAAEoG,aAAauG,EAAEC,IAAI,IAAI5M,EAAE0kC,UAAU93B,EAAE5M,EAAEyG,YAAaL,aAAauG,EAAE3M,IAAK4M,EAAE5M,GAAIqG,YAAYsG,GAA4B,QAAxB3M,EAAEA,EAAEuzD,2BAA8B,IAASvzD,GAAG,OAAO4M,EAAEkkD,UAAUlkD,EAAEkkD,QAAQpP,UAAU,GAAG,IAAIzhD,GAAc,QAAV0M,EAAEA,EAAEu+B,OAAgB,IAAIooB,EAAG3mD,EAAEC,EAAE5M,GAAG2M,EAAEA,EAAEw+B,QAAQ,OAAOx+B,GAAG2mD,EAAG3mD,EAAEC,EAAE5M,GAAG2M,EAAEA,EAAEw+B,QADtSmoB,CAAG3mD,EAAE3M,EAAE4M,GAE/G,SAAS4mD,EAAG7mD,EAAEC,EAAE5M,GAAG,IAAIC,EAAE0M,EAAE40B,IAAI78B,EAAE,IAAIzE,GAAG,IAAIA,EAAE,GAAGyE,EAAEiI,EAAEjI,EAAEiI,EAAEw8B,UAAUx8B,EAAEw8B,UAAUsX,SAAS7zC,EAAE5M,EAAEoG,aAAauG,EAAEC,GAAG5M,EAAEqG,YAAYsG,QAAQ,GAAG,IAAI1M,GAAc,QAAV0M,EAAEA,EAAEu+B,OAAgB,IAAIsoB,EAAG7mD,EAAEC,EAAE5M,GAAG2M,EAAEA,EAAEw+B,QAAQ,OAAOx+B,GAAG6mD,EAAG7mD,EAAEC,EAAE5M,GAAG2M,EAAEA,EAAEw+B,QAFnGqoB,CAAG7mD,EAAE3M,EAAE4M,GAGzH,SAASsmD,GAAGvmD,EAAEC,GAAG,IAAI,IAAalI,EAAEuI,EAAXjN,EAAE4M,EAAE3M,GAAE,IAAS,CAAC,IAAIA,EAAE,CAACA,EAAED,EAAE2qC,OAAOh+B,EAAE,OAAO,CAAC,GAAG,OAAO1M,EAAE,MAAM+F,MAAM6xB,EAAE,MAAoB,OAAdnzB,EAAEzE,EAAEkpC,UAAiBlpC,EAAEshC,KAAK,KAAK,EAAEt0B,GAAE,EAAG,MAAMN,EAAE,KAAK,EAAiC,KAAK,EAAEjI,EAAEA,EAAE4oC,cAAcrgC,GAAE,EAAG,MAAMN,EAAE1M,EAAEA,EAAE0qC,OAAO1qC,GAAE,EAAG,GAAG,IAAID,EAAEuhC,KAAK,IAAIvhC,EAAEuhC,IAAI,CAAC50B,EAAE,IAAI,IAAIU,EAAEV,EAAEW,EAAEtN,EAAE0N,EAAEJ,IAAI,GAAGylD,GAAG1lD,EAAEK,GAAG,OAAOA,EAAEw9B,OAAO,IAAIx9B,EAAE6zB,IAAI7zB,EAAEw9B,MAAMP,OAAOj9B,EAAEA,EAAEA,EAAEw9B,UAAU,CAAC,GAAGx9B,IAAIJ,EAAE,MAAMX,EAAE,KAAK,OAAOe,EAAEy9B,SAAS,CAAC,GAAG,OAAOz9B,EAAEi9B,QAAQj9B,EAAEi9B,SAASr9B,EAAE,MAAMX,EAAEe,EAAEA,EAAEi9B,OAAOj9B,EAAEy9B,QAAQR,OAAOj9B,EAAEi9B,OAAOj9B,EAAEA,EAAEy9B,QAAQl+B,GAAGI,EAAE3I,EAAE4I,EAAEtN,EAAEmpC,UACrf,IAAI97B,EAAEq3B,SAASr3B,EAAE5G,WAAWC,YAAY4G,GAAGD,EAAE3G,YAAY4G,IAAI5I,EAAEgC,YAAY1G,EAAEmpC,gBAAgB,GAAG,KAAKnpC,EAAEuhC,IAAIt0B,GAAGI,EAAE3I,EAAE4I,EAAEtN,EAAEmpC,UAAU,IAAI97B,EAAEq3B,SAASyd,GAAG90C,EAAE5G,WAAW6G,GAAG,IAAID,EAAEq3B,UAAUyd,GAAG90C,EAAEC,GAAGugC,GAAGxgC,IAAI80C,GAAGz9C,EAAE1E,EAAEmpC,gBAAgB,GAAG,IAAInpC,EAAEuhC,KAAK,GAAG,OAAOvhC,EAAEkrC,MAAM,CAACxmC,EAAE1E,EAAEmpC,UAAUmE,cAAcrgC,GAAE,EAAGjN,EAAEkrC,MAAMP,OAAO3qC,EAAEA,EAAEA,EAAEkrC,MAAM,eAAe,GAAG6nB,GAAGpmD,EAAE3M,GAAG,OAAOA,EAAEkrC,MAAM,CAAClrC,EAAEkrC,MAAMP,OAAO3qC,EAAEA,EAAEA,EAAEkrC,MAAM,SAAS,GAAGlrC,IAAI4M,EAAE,MAAM,KAAK,OAAO5M,EAAEmrC,SAAS,CAAC,GAAG,OAAOnrC,EAAE2qC,QAAQ3qC,EAAE2qC,SAAS/9B,EAAE,OAAkB,KAAX5M,EAAEA,EAAE2qC,QAAapJ,MAAMthC,GAAE,GAAID,EAAEmrC,QAAQR,OACzf3qC,EAAE2qC,OAAO3qC,EAAEA,EAAEmrC,SACb,SAASsoB,GAAG9mD,EAAEC,GAAG,OAAOA,EAAE20B,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAIvhC,EAAE4M,EAAEw4C,YAAyC,GAAG,QAAhCplD,EAAE,OAAOA,EAAEA,EAAEgoD,WAAW,MAAiB,CAAC,IAAI/nD,EAAED,EAAEA,EAAE0b,KAAK,GAAG,IAAW,EAANzb,EAAEshC,OAAS50B,EAAE1M,EAAE+oB,QAAQ/oB,EAAE+oB,aAAQ,OAAO,IAASrc,GAAGA,KAAK1M,EAAEA,EAAEyb,WAAWzb,IAAID,GAAG,OAAO,KAAK,EAAE,OAAO,KAAK,EAAgB,GAAG,OAAjBA,EAAE4M,EAAEu8B,WAAqB,CAAClpC,EAAE2M,EAAE48C,cAAc,IAAI9kD,EAAE,OAAOiI,EAAEA,EAAE68C,cAAcvpD,EAAE0M,EAAEC,EAAE1F,KAAK,IAAI+F,EAAEL,EAAEw4C,YAA+B,GAAnBx4C,EAAEw4C,YAAY,KAAQ,OAAOn4C,EAAE,CAAgF,IAA/EjN,EAAE2iD,IAAI1iD,EAAE,UAAU0M,GAAG,UAAU1M,EAAEiH,MAAM,MAAMjH,EAAEC,MAAM8iC,GAAGhjC,EAAEC,GAAGwoC,GAAG97B,EAAEjI,GAAGkI,EAAE67B,GAAG97B,EAAE1M,GAAOyE,EAAE,EAAEA,EAAEuI,EAAE7J,OAAOsB,GAAG,EAAE,CAAC,IAAI2I,EACpfJ,EAAEvI,GAAG4I,EAAEL,EAAEvI,EAAE,GAAG,UAAU2I,EAAEo6B,GAAGznC,EAAEsN,GAAG,4BAA4BD,EAAE82B,GAAGnkC,EAAEsN,GAAG,aAAaD,EAAEm3B,GAAGxkC,EAAEsN,GAAG8xB,EAAGp/B,EAAEqN,EAAEC,EAAEV,GAAG,OAAOD,GAAG,IAAK,QAAQs2B,GAAGjjC,EAAEC,GAAG,MAAM,IAAK,WAAW2jC,GAAG5jC,EAAEC,GAAG,MAAM,IAAK,SAAS0M,EAAE3M,EAAE2iC,cAAcguB,YAAY3wD,EAAE2iC,cAAcguB,cAAc1wD,EAAE2wD,SAAmB,OAAV3jD,EAAEhN,EAAEW,OAAc0iC,GAAGtjC,IAAIC,EAAE2wD,SAAS3jD,GAAE,GAAIN,MAAM1M,EAAE2wD,WAAW,MAAM3wD,EAAEyiC,aAAaY,GAAGtjC,IAAIC,EAAE2wD,SAAS3wD,EAAEyiC,cAAa,GAAIY,GAAGtjC,IAAIC,EAAE2wD,SAAS3wD,EAAE2wD,SAAS,GAAG,IAAG,MAAO,OAAO,KAAK,EAAE,GAAG,OAAOhkD,EAAEu8B,UAAU,MAAMnjC,MAAM6xB,EAAE,MACtd,YAD4djrB,EAAEu8B,UAAUxE,UAAU/3B,EAAE48C,eAC7e,KAAK,EAA8D,aAA5DxpD,EAAE4M,EAAEu8B,WAAYkE,UAAUrtC,EAAEqtC,SAAQ,EAAGQ,GAAG7tC,EAAEstC,iBAAuB,KAAK,GAAG,OAAO,KAAK,GAAyD,OAAtD,OAAO1gC,EAAEk+B,gBAAgB4oB,GAAG/6B,KAAIk6B,GAAGjmD,EAAEs+B,OAAM,SAAKyoB,GAAG/mD,GAAU,KAAK,GAAS,YAAN+mD,GAAG/mD,GAAU,KAAK,GAAG,OAAO,KAAK,GAAG,KAAK,GAAgC,YAA7BimD,GAAGjmD,EAAE,OAAOA,EAAEk+B,eAAsB,MAAM9kC,MAAM6xB,EAAE,MAAO,SAAS87B,GAAGhnD,GAAG,IAAIC,EAAED,EAAEy4C,YAAY,GAAG,OAAOx4C,EAAE,CAACD,EAAEy4C,YAAY,KAAK,IAAIplD,EAAE2M,EAAEw8B,UAAU,OAAOnpC,IAAIA,EAAE2M,EAAEw8B,UAAU,IAAIgpB,IAAIvlD,EAAEpF,SAAQ,SAASoF,GAAG,IAAI3M,EAAE2zD,GAAGzyD,KAAK,KAAKwL,EAAEC,GAAG5M,EAAEmyB,IAAIvlB,KAAK5M,EAAEkf,IAAItS,GAAGA,EAAEQ,KAAKnN,EAAEA,QACnd,SAAS4zD,GAAGlnD,EAAEC,GAAG,OAAO,OAAOD,IAAsB,QAAlBA,EAAEA,EAAEm+B,gBAAwB,OAAOn+B,EAAEo+B,cAA+B,QAAlBn+B,EAAEA,EAAEk+B,gBAAwB,OAAOl+B,EAAEm+B,YAAe,IAAI+oB,GAAGpnC,KAAKqnC,KAAKC,GAAGr0B,EAAGjF,uBAAuBu5B,GAAGt0B,EAAG/E,kBAAkB80B,GAAE,EAAEj1B,GAAE,KAAKy5B,GAAE,KAAKC,GAAE,EAAEC,GAAG,EAAEC,GAAGvR,GAAG,GAAGmO,GAAE,EAAEqD,GAAG,KAAKC,GAAG,EAAEpO,GAAG,EAAEqO,GAAG,EAAEC,GAAG,EAAEC,GAAG,KAAKhB,GAAG,EAAEtC,GAAGjgC,IAAS,SAASwjC,KAAKvD,GAAGz4B,KAAI,IAAI,IAgCnHi8B,GAhCuHC,GAAE,KAAKhD,IAAG,EAAGC,GAAG,KAAKG,GAAG,KAAK6C,IAAG,EAAGC,GAAG,KAAKC,GAAG,GAAGC,GAAG,GAAGC,GAAG,GAAGC,GAAG,KAAKC,GAAG,EAAEC,GAAG,KAAKC,IAAI,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,KAAKC,IAAG,EAAG,SAASjP,KAAK,OAAO,IAAO,GAAFiJ,IAAM/2B,MAAK,IAAI28B,GAAGA,GAAGA,GAAG38B,KAC3e,SAAS+tB,GAAG/5C,GAAY,GAAG,IAAO,GAAnBA,EAAEA,EAAE7L,OAAkB,OAAO,EAAE,GAAG,IAAO,EAAF6L,GAAK,OAAO,KAAK+jC,KAAK,EAAE,EAAkB,GAAhB,IAAI6kB,KAAKA,GAAGhB,IAAO,IAAIvQ,GAAGxpB,WAAW,CAAC,IAAIg7B,KAAKA,GAAG,OAAOd,GAAGA,GAAGvjB,aAAa,GAAGxkC,EAAE4oD,GAAG,IAAI3oD,EAAE,SAAS4oD,GAAsD,OAA7C,KAAN5oD,IAAIA,KAA8B,KAAPA,GAAbD,EAAE,SAASA,IAAOA,KAAUC,EAAE,OAAcA,EAA4D,OAA1DD,EAAE+jC,KAAK,IAAO,EAAFgf,KAAM,KAAK/iD,EAAEA,EAAEglC,GAAG,GAAG4jB,IAAa5oD,EAAEglC,GAAVhlC,EA3K3Q,SAAYA,GAAG,OAAOA,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO,EAAE,QAAQ,OAAO,GA2KuJgpD,CAAGhpD,GAAU4oD,IAAY5oD,EACnT,SAASg6C,GAAGh6C,EAAEC,EAAE5M,GAAG,GAAG,GAAGo1D,GAAG,MAAMA,GAAG,EAAEC,GAAG,KAAKrvD,MAAM6xB,EAAE,MAAgB,GAAG,QAAblrB,EAAEipD,GAAGjpD,EAAEC,IAAe,OAAO,KAAKklC,GAAGnlC,EAAEC,EAAE5M,GAAG2M,IAAI8tB,KAAI+5B,IAAI5nD,EAAE,IAAIqkD,IAAG4E,GAAGlpD,EAAEwnD,KAAI,IAAIl0D,EAAEywC,KAAK,IAAI9jC,EAAE,IAAO,EAAF8iD,KAAM,IAAO,GAAFA,IAAMoG,GAAGnpD,IAAIopD,GAAGppD,EAAE3M,GAAG,IAAI0vD,KAAIiF,KAAK7jB,QAAQ,IAAO,EAAF4e,KAAM,KAAKzvD,GAAG,KAAKA,IAAI,OAAOk1D,GAAGA,GAAG,IAAIl3B,IAAI,CAACtxB,IAAIwoD,GAAGj2C,IAAIvS,IAAIopD,GAAGppD,EAAE3M,IAAI00D,GAAG/nD,EAAE,SAASipD,GAAGjpD,EAAEC,GAAGD,EAAEk4C,OAAOj4C,EAAE,IAAI5M,EAAE2M,EAAE+9B,UAAqC,IAA3B,OAAO1qC,IAAIA,EAAE6kD,OAAOj4C,GAAG5M,EAAE2M,EAAMA,EAAEA,EAAEg+B,OAAO,OAAOh+B,GAAGA,EAAE83C,YAAY73C,EAAgB,QAAd5M,EAAE2M,EAAE+9B,aAAqB1qC,EAAEykD,YAAY73C,GAAG5M,EAAE2M,EAAEA,EAAEA,EAAEg+B,OAAO,OAAO,IAAI3qC,EAAEuhC,IAAIvhC,EAAEmpC,UAAU,KACze,SAAS4sB,GAAGppD,EAAEC,GAAG,IAAI,IAAI5M,EAAE2M,EAAEqpD,aAAa/1D,EAAE0M,EAAE0kC,eAAe3sC,EAAEiI,EAAE2kC,YAAYrkC,EAAEN,EAAEspD,gBAAgB5oD,EAAEV,EAAEwkC,aAAa,EAAE9jC,GAAG,CAAC,IAAIC,EAAE,GAAGikC,GAAGlkC,GAAGK,EAAE,GAAGJ,EAAE1N,EAAEqN,EAAEK,GAAG,IAAI,IAAI1N,GAAG,GAAG,IAAK8N,EAAEzN,IAAI,IAAKyN,EAAEhJ,GAAG,CAAC9E,EAAEgN,EAAEqkC,GAAGvjC,GAAG,IAAIjM,EAAEs3B,GAAE9rB,EAAEK,GAAG,IAAI7L,EAAE7B,EAAE,IAAI,GAAG6B,EAAE7B,EAAE,KAAK,QAAQA,GAAGgN,IAAID,EAAEykC,cAAc1jC,GAAGL,IAAIK,EAAwB,GAAtBzN,EAAEixC,GAAGvkC,EAAEA,IAAI8tB,GAAE05B,GAAE,GAAGvnD,EAAEmsB,GAAK,IAAI94B,EAAE,OAAOD,IAAIA,IAAIqwC,IAAInB,GAAGlvC,GAAG2M,EAAEqpD,aAAa,KAAKrpD,EAAEupD,iBAAiB,OAAO,CAAC,GAAG,OAAOl2D,EAAE,CAAC,GAAG2M,EAAEupD,mBAAmBtpD,EAAE,OAAO5M,IAAIqwC,IAAInB,GAAGlvC,GAAG,KAAK4M,GAAG5M,EAAE81D,GAAG30D,KAAK,KAAKwL,GAAG,OAAO4jC,IAAIA,GAAG,CAACvwC,GAAGwwC,GAAGvB,GAAGW,GAAGmB,KAAKR,GAAGjtC,KAAKtD,GACrfA,EAAEqwC,IAAI,KAAKzjC,EAAE5M,EAAE6wC,GAAG,GAAGilB,GAAG30D,KAAK,KAAKwL,IAAa3M,EAAE6wC,GAAV7wC,EA9K+F,SAAY2M,GAAG,OAAOA,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,OAAO,GAAG,QAAQ,MAAM3G,MAAM6xB,EAAE,IAAIlrB,KA8KxTwpD,CAAGvpD,GAAUwpD,GAAGj1D,KAAK,KAAKwL,IAAKA,EAAEupD,iBAAiBtpD,EAAED,EAAEqpD,aAAah2D,GAC5G,SAASo2D,GAAGzpD,GAAiB,GAAd2oD,IAAI,EAAEE,GAAGD,GAAG,EAAK,IAAO,GAAF7F,IAAM,MAAM1pD,MAAM6xB,EAAE,MAAM,IAAIjrB,EAAED,EAAEqpD,aAAa,GAAGK,MAAM1pD,EAAEqpD,eAAeppD,EAAE,OAAO,KAAK,IAAI5M,EAAEkxC,GAAGvkC,EAAEA,IAAI8tB,GAAE05B,GAAE,GAAG,GAAG,IAAIn0D,EAAE,OAAO,KAAK,IAAIC,EAAED,EAAM0E,EAAEgrD,GAAEA,IAAG,GAAG,IAAIziD,EAAEqpD,KAAkC,IAA1B77B,KAAI9tB,GAAGwnD,KAAIl0D,IAAE00D,KAAK4B,GAAG5pD,EAAE1M,MAAM,IAAIu2D,KAAK,MAAM,MAAMlpD,GAAGmpD,GAAG9pD,EAAEW,GAAgE,GAApDg3C,KAAK0P,GAAG96B,QAAQjsB,EAAEyiD,GAAEhrD,EAAE,OAAOwvD,GAAEj0D,EAAE,GAAGw6B,GAAE,KAAK05B,GAAE,EAAEl0D,EAAEgxD,IAAM,IAAKsD,GAAGC,IAAI+B,GAAG5pD,EAAE,QAAQ,GAAG,IAAI1M,EAAE,CAAyF,GAAxF,IAAIA,IAAIyvD,IAAG,GAAG/iD,EAAE0gC,UAAU1gC,EAAE0gC,SAAQ,EAAG+U,GAAGz1C,EAAE2gC,gBAAwB,KAARttC,EAAE0xC,GAAG/kC,MAAW1M,EAAEy2D,GAAG/pD,EAAE3M,KAAQ,IAAIC,EAAE,MAAM2M,EAAE0nD,GAAGiC,GAAG5pD,EAAE,GAAGkpD,GAAGlpD,EAAE3M,GAAG+1D,GAAGppD,EAAEgsB,MAAK/rB,EAC3c,OAD6cD,EAAEgqD,aACrfhqD,EAAEusB,QAAQwR,UAAU/9B,EAAEiqD,cAAc52D,EAASC,GAAG,KAAK,EAAE,KAAK,EAAE,MAAM+F,MAAM6xB,EAAE,MAAM,KAAK,EAAEg/B,GAAGlqD,GAAG,MAAM,KAAK,EAAU,GAARkpD,GAAGlpD,EAAE3M,IAAS,SAAFA,KAAcA,GAAiB,IAAbC,EAAEyzD,GAAG,IAAI/6B,MAAU,CAAC,GAAG,IAAIuY,GAAGvkC,EAAE,GAAG,MAAyB,KAAnBjI,EAAEiI,EAAE0kC,gBAAqBrxC,KAAKA,EAAE,CAACymD,KAAK95C,EAAE2kC,aAAa3kC,EAAE0kC,eAAe3sC,EAAE,MAAMiI,EAAEmqD,cAAc7U,GAAG4U,GAAG11D,KAAK,KAAKwL,GAAG1M,GAAG,MAAM42D,GAAGlqD,GAAG,MAAM,KAAK,EAAU,GAARkpD,GAAGlpD,EAAE3M,IAAS,QAAFA,KAAaA,EAAE,MAAqB,IAAfC,EAAE0M,EAAEolC,WAAertC,GAAG,EAAE,EAAE1E,GAAG,CAAC,IAAIqN,EAAE,GAAGkkC,GAAGvxC,GAAGiN,EAAE,GAAGI,GAAEA,EAAEpN,EAAEoN,IAAK3I,IAAIA,EAAE2I,GAAGrN,IAAIiN,EACjZ,GADmZjN,EAAE0E,EAClZ,IAD4Z1E,GAAG,KAAXA,EAAE24B,KAAI34B,GAAW,IAAI,IAAIA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAKA,EAAE,KAAK,IAAIA,EAAE,IAAI,KAClfA,EAAE,KAAK,KAAK8zD,GAAG9zD,EAAE,OAAOA,GAAU,CAAC2M,EAAEmqD,cAAc7U,GAAG4U,GAAG11D,KAAK,KAAKwL,GAAG3M,GAAG,MAAM62D,GAAGlqD,GAAG,MAAM,KAAK,EAAEkqD,GAAGlqD,GAAG,MAAM,QAAQ,MAAM3G,MAAM6xB,EAAE,OAAkB,OAAVk+B,GAAGppD,EAAEgsB,MAAYhsB,EAAEqpD,eAAeppD,EAAEwpD,GAAGj1D,KAAK,KAAKwL,GAAG,KAAK,SAASkpD,GAAGlpD,EAAEC,GAAuD,IAApDA,IAAI6nD,GAAG7nD,IAAI4nD,GAAG7nD,EAAE0kC,gBAAgBzkC,EAAED,EAAE2kC,cAAc1kC,EAAMD,EAAEA,EAAEspD,gBAAgB,EAAErpD,GAAG,CAAC,IAAI5M,EAAE,GAAGuxC,GAAG3kC,GAAG3M,EAAE,GAAGD,EAAE2M,EAAE3M,IAAI,EAAE4M,IAAI3M,GAC1U,SAAS61D,GAAGnpD,GAAG,GAAG,IAAO,GAAF+iD,IAAM,MAAM1pD,MAAM6xB,EAAE,MAAW,GAALw+B,KAAQ1pD,IAAI8tB,IAAG,IAAK9tB,EAAEykC,aAAa+iB,IAAG,CAAC,IAAIvnD,EAAEunD,GAAMn0D,EAAE02D,GAAG/pD,EAAEC,GAAG,IAAK2nD,GAAGC,MAAgBx0D,EAAE02D,GAAG/pD,EAAfC,EAAEskC,GAAGvkC,EAAEC,UAA6B5M,EAAE02D,GAAG/pD,EAAfC,EAAEskC,GAAGvkC,EAAE,IAAgH,GAAnG,IAAIA,EAAE40B,KAAK,IAAIvhC,IAAI0vD,IAAG,GAAG/iD,EAAE0gC,UAAU1gC,EAAE0gC,SAAQ,EAAG+U,GAAGz1C,EAAE2gC,gBAAwB,KAAR1gC,EAAE8kC,GAAG/kC,MAAW3M,EAAE02D,GAAG/pD,EAAEC,KAAQ,IAAI5M,EAAE,MAAMA,EAAEs0D,GAAGiC,GAAG5pD,EAAE,GAAGkpD,GAAGlpD,EAAEC,GAAGmpD,GAAGppD,EAAEgsB,MAAK34B,EAAuE,OAArE2M,EAAEgqD,aAAahqD,EAAEusB,QAAQwR,UAAU/9B,EAAEiqD,cAAchqD,EAAEiqD,GAAGlqD,GAAGopD,GAAGppD,EAAEgsB,MAAY,KACnR,SAASo+B,GAAGpqD,EAAEC,GAAG,IAAI5M,EAAE0vD,GAAEA,IAAG,EAAE,IAAI,OAAO/iD,EAAEC,GAAb,QAA4B,KAAJ8iD,GAAE1vD,KAAU20D,KAAK7jB,OAAO,SAASkmB,GAAGrqD,EAAEC,GAAG,IAAI5M,EAAE0vD,GAAEA,KAAI,EAAEA,IAAG,EAAE,IAAI,OAAO/iD,EAAEC,GAAb,QAA4B,KAAJ8iD,GAAE1vD,KAAU20D,KAAK7jB,OAAO,SAASmmB,GAAGtqD,EAAEC,GAAG,IAAI5M,EAAE0vD,GAAE,GAAG,IAAO,GAAF1vD,GAAM,OAAO2M,EAAEC,GAAG8iD,IAAG,EAAE,IAAI,GAAG/iD,EAAE,OAAOikC,GAAG,GAAGjkC,EAAExL,KAAK,KAAKyL,IAAlC,QAA8C8iD,GAAE1vD,EAAE8wC,MAAM,SAASud,GAAG1hD,EAAEC,GAAG4sB,GAAE66B,GAAGD,IAAIA,IAAIxnD,EAAE2nD,IAAI3nD,EAAE,SAASykD,KAAK+C,GAAGC,GAAGn7B,QAAQC,GAAEk7B,IAC5c,SAASkC,GAAG5pD,EAAEC,GAAGD,EAAEgqD,aAAa,KAAKhqD,EAAEiqD,cAAc,EAAE,IAAI52D,EAAE2M,EAAEmqD,cAAiD,IAAlC,IAAI92D,IAAI2M,EAAEmqD,eAAe,EAAE5U,GAAGliD,IAAO,OAAOk0D,GAAE,IAAIl0D,EAAEk0D,GAAEvpB,OAAO,OAAO3qC,GAAG,CAAC,IAAIC,EAAED,EAAE,OAAOC,EAAEshC,KAAK,KAAK,EAA6B,OAA3BthC,EAAEA,EAAEiH,KAAKo8C,oBAAwCC,KAAK,MAAM,KAAK,EAAE6F,KAAKjwB,GAAEY,IAAGZ,GAAEW,IAAGywB,KAAK,MAAM,KAAK,EAAEjB,GAAGrpD,GAAG,MAAM,KAAK,EAAEmpD,KAAK,MAAM,KAAK,GAAc,KAAK,GAAGjwB,GAAEe,IAAG,MAAM,KAAK,GAAGqqB,GAAGtkD,GAAG,MAAM,KAAK,GAAG,KAAK,GAAGoxD,KAAKrxD,EAAEA,EAAE2qC,OAAOlQ,GAAE9tB,EAAEunD,GAAE/L,GAAGx7C,EAAEusB,QAAQ,MAAMi7B,GAAEC,GAAGG,GAAG3nD,EAAEqkD,GAAE,EAAEqD,GAAG,KAAKG,GAAGD,GAAGrO,GAAG,EACvc,SAASsQ,GAAG9pD,EAAEC,GAAG,OAAE,CAAC,IAAI5M,EAAEk0D,GAAE,IAAuB,GAAnB5P,KAAKkG,GAAGtxB,QAAQiyB,GAAMR,GAAG,CAAC,IAAI,IAAI1qD,EAAEk6B,GAAE2Q,cAAc,OAAO7qC,GAAG,CAAC,IAAIyE,EAAEzE,EAAEqrD,MAAM,OAAO5mD,IAAIA,EAAE+gD,QAAQ,MAAMxlD,EAAEA,EAAEyb,KAAKivC,IAAG,EAAyC,GAAtCD,GAAG,EAAEnwB,GAAED,GAAEH,GAAE,KAAKywB,IAAG,EAAGqJ,GAAG/6B,QAAQ,KAAQ,OAAOl5B,GAAG,OAAOA,EAAE2qC,OAAO,CAACsmB,GAAE,EAAEqD,GAAG1nD,EAAEsnD,GAAE,KAAK,MAAMvnD,EAAE,CAAC,IAAIM,EAAEN,EAAEU,EAAErN,EAAE2qC,OAAOr9B,EAAEtN,EAAE0N,EAAEd,EAAoD,GAAlDA,EAAEunD,GAAE7mD,EAAEs9B,OAAO,KAAKt9B,EAAE46C,YAAY56C,EAAE06C,WAAW,KAAQ,OAAOt6C,GAAG,iBAAkBA,GAAG,mBAAoBA,EAAEN,KAAK,CAAC,IAAIxN,EAAE8N,EAAE,GAAG,IAAY,EAAPJ,EAAExM,MAAQ,CAAC,IAAIW,EAAE6L,EAAEo9B,UAAUjpC,GAAG6L,EAAE83C,YAAY3jD,EAAE2jD,YAAY93C,EAAEw9B,cAAcrpC,EAAEqpC,cAAcx9B,EAAEu3C,MAAMpjD,EAAEojD,QACpfv3C,EAAE83C,YAAY,KAAK93C,EAAEw9B,cAAc,MAAM,IAAI/S,EAAE,IAAe,EAAVmC,GAAEhB,SAAWr4B,EAAEwM,EAAE,EAAE,CAAC,IAAIgrB,EAAE,GAAGA,EAAE,KAAKx3B,EAAE0gC,IAAI,CAAC,IAAItH,EAAEp5B,EAAEiqC,cAAc,GAAG,OAAO7Q,EAAE5B,EAAE,OAAO4B,EAAE8Q,eAAqB,CAAC,IAAI53B,EAAEtS,EAAE2oD,cAAcnxB,OAAE,IAASllB,EAAEi8C,YAAY,IAAKj8C,EAAEk8C,6BAA8Bt3B,IAAS,GAAGM,EAAE,CAAC,IAAIe,EAAEv4B,EAAEukD,YAAY,GAAG,OAAOhsB,EAAE,CAAC,IAAIlC,EAAE,IAAI+G,IAAI/G,EAAEhY,IAAItf,GAAGiB,EAAEukD,YAAYluB,OAAOkC,EAAEla,IAAItf,GAAG,GAAG,IAAY,EAAPiB,EAAEC,OAASD,IAAIwM,EAAE,CAA6C,GAA5CxM,EAAE+pC,OAAO,IAAIt9B,EAAEs9B,OAAO,MAAMt9B,EAAEs9B,QAAQ,MAAS,IAAIt9B,EAAEi0B,IAAI,GAAG,OAAOj0B,EAAEo9B,UAAUp9B,EAAEi0B,IAAI,OAAO,CAAC,IAAI9gC,EAAEmlD,IAAI,EAAE,GAAGnlD,EAAE8gC,IAAI,EAAEykB,GAAG14C,EAAE7M,GAAG6M,EAAEu3C,OACpf,EAAE,MAAMl4C,EAAEe,OAAE,EAAOJ,EAAEV,EAAE,IAAIxL,EAAE6L,EAAEiqD,UAA+G,GAArG,OAAO91D,GAAGA,EAAE6L,EAAEiqD,UAAU,IAAIzF,GAAG/jD,EAAE,IAAIuwB,IAAI78B,EAAE2U,IAAInW,EAAE8N,SAAgB,KAAXA,EAAEtM,EAAEZ,IAAIZ,MAAgB8N,EAAE,IAAIuwB,IAAI78B,EAAE2U,IAAInW,EAAE8N,KAASA,EAAEykB,IAAI7kB,GAAG,CAACI,EAAEwR,IAAI5R,GAAG,IAAIgqB,EAAE6/B,GAAGh2D,KAAK,KAAK8L,EAAErN,EAAE0N,GAAG1N,EAAEwN,KAAKkqB,EAAEA,GAAGz2B,EAAE+pC,OAAO,MAAM/pC,EAAEgkD,MAAMj4C,EAAE,MAAMD,EAAE9L,EAAEA,EAAE8pC,aAAa,OAAO9pC,GAAG6M,EAAE1H,OAAOw7B,EAAGl0B,EAAEpG,OAAO,qBAAqB,yLAAyL,IAAI+pD,KAAIA,GAAE,GACpfvjD,EAAE6jD,GAAG7jD,EAAEJ,GAAGzM,EAAEwM,EAAE,EAAE,CAAC,OAAOxM,EAAE0gC,KAAK,KAAK,EAAEt0B,EAAES,EAAE7M,EAAE+pC,OAAO,MAAMh+B,IAAIA,EAAE/L,EAAEgkD,OAAOj4C,EAAkBq5C,GAAGplD,EAAb8wD,GAAG9wD,EAAEoM,EAAEL,IAAW,MAAMD,EAAE,KAAK,EAAEM,EAAES,EAAE,IAAImsB,EAAEh5B,EAAEqG,KAAKuI,EAAE5O,EAAEsoC,UAAU,GAAG,IAAa,IAARtoC,EAAE+pC,SAAa,mBAAoB/Q,EAAE+0B,0BAA0B,OAAOn/C,GAAG,mBAAoBA,EAAEuiD,oBAAoB,OAAOC,KAAKA,GAAG9/B,IAAI1iB,KAAK,CAAC5O,EAAE+pC,OAAO,MAAMh+B,IAAIA,EAAE/L,EAAEgkD,OAAOj4C,EAAkBq5C,GAAGplD,EAAbkxD,GAAGlxD,EAAEoM,EAAEL,IAAW,MAAMD,GAAG9L,EAAEA,EAAE8pC,aAAa,OAAO9pC,GAAGu2D,GAAGp3D,GAAG,MAAMq3D,GAAIzqD,EAAEyqD,EAAGnD,KAAIl0D,GAAG,OAAOA,IAAIk0D,GAAEl0D,EAAEA,EAAE2qC,QAAQ,SAAS,OAC9b,SAAS2rB,KAAK,IAAI3pD,EAAEqnD,GAAG96B,QAAsB,OAAd86B,GAAG96B,QAAQiyB,GAAU,OAAOx+C,EAAEw+C,GAAGx+C,EAAE,SAASijD,KAAQ,IAAIqB,IAAG,IAAIA,KAAEA,GAAE,GAAE,OAAOx2B,IAAG,IAAQ,UAAH0rB,KAAe,IAAQ,UAAHqO,KAAeqB,GAAGp7B,GAAE05B,IAAG,SAASuC,GAAG/pD,EAAEC,GAAG,IAAI5M,EAAE0vD,GAAEA,IAAG,GAAG,IAAIzvD,EAAEq2D,KAA2B,IAAtB77B,KAAI9tB,GAAGwnD,KAAIvnD,GAAG2pD,GAAG5pD,EAAEC,KAAM,IAAI0qD,KAAK,MAAM,MAAM5yD,GAAG+xD,GAAG9pD,EAAEjI,GAAkC,GAAtB4/C,KAAKoL,GAAE1vD,EAAEg0D,GAAG96B,QAAQj5B,EAAK,OAAOi0D,GAAE,MAAMluD,MAAM6xB,EAAE,MAAiB,OAAX4C,GAAE,KAAK05B,GAAE,EAASlD,GAAE,SAASqG,KAAK,KAAK,OAAOpD,IAAGqD,GAAGrD,IAAG,SAASsC,KAAK,KAAK,OAAOtC,KAAI9kB,MAAMmoB,GAAGrD,IAC9Z,SAASqD,GAAG5qD,GAAG,IAAIC,EAAEgoD,GAAGjoD,EAAE+9B,UAAU/9B,EAAEynD,IAAIznD,EAAE68C,cAAc78C,EAAEq9C,aAAa,OAAOp9C,EAAEwqD,GAAGzqD,GAAGunD,GAAEtnD,EAAEqnD,GAAG/6B,QAAQ,KACvG,SAASk+B,GAAGzqD,GAAG,IAAIC,EAAED,EAAE,EAAE,CAAC,IAAI3M,EAAE4M,EAAE89B,UAAqB,GAAX/9B,EAAEC,EAAE+9B,OAAU,IAAa,KAAR/9B,EAAEg+B,OAAY,CAAc,GAAG,QAAhB5qC,EAAE0wD,GAAG1wD,EAAE4M,EAAEwnD,KAAqB,YAAJF,GAAEl0D,GAAa,GAAG,MAAPA,EAAE4M,GAAY20B,KAAK,KAAKvhC,EAAEuhC,KAAK,OAAOvhC,EAAE8qC,eAAe,IAAQ,WAAHspB,KAAgB,IAAY,EAAPp0D,EAAEc,MAAQ,CAAC,IAAI,IAAIb,EAAE,EAAEyE,EAAE1E,EAAEkrC,MAAM,OAAOxmC,GAAGzE,GAAGyE,EAAEmgD,MAAMngD,EAAE+/C,WAAW//C,EAAEA,EAAEymC,QAAQnrC,EAAEykD,WAAWxkD,EAAE,OAAO0M,GAAG,IAAa,KAARA,EAAEi+B,SAAc,OAAOj+B,EAAEu7C,cAAcv7C,EAAEu7C,YAAYt7C,EAAEs7C,aAAa,OAAOt7C,EAAEo7C,aAAa,OAAOr7C,EAAEq7C,aAAar7C,EAAEq7C,WAAWC,WAAWr7C,EAAEs7C,aAAav7C,EAAEq7C,WAAWp7C,EAAEo7C,YAAY,EAAEp7C,EAAEg+B,QAAQ,OAC/ej+B,EAAEq7C,WAAWr7C,EAAEq7C,WAAWC,WAAWr7C,EAAED,EAAEu7C,YAAYt7C,EAAED,EAAEq7C,WAAWp7C,QAAQ,CAAS,GAAG,QAAX5M,EAAEsxD,GAAG1kD,IAAkC,OAAlB5M,EAAE4qC,OAAO,UAAKspB,GAAEl0D,GAAS,OAAO2M,IAAIA,EAAEu7C,YAAYv7C,EAAEq7C,WAAW,KAAKr7C,EAAEi+B,OAAO,MAAkB,GAAG,QAAfh+B,EAAEA,EAAEu+B,SAAyB,YAAJ+oB,GAAEtnD,GAASsnD,GAAEtnD,EAAED,QAAQ,OAAOC,GAAG,IAAIqkD,KAAIA,GAAE,GAAG,SAAS4F,GAAGlqD,GAAG,IAAIC,EAAE8jC,KAA8B,OAAzBE,GAAG,GAAG4mB,GAAGr2D,KAAK,KAAKwL,EAAEC,IAAW,KACtT,SAAS4qD,GAAG7qD,EAAEC,GAAG,GAAGypD,WAAW,OAAOtB,IAAI,GAAG,IAAO,GAAFrF,IAAM,MAAM1pD,MAAM6xB,EAAE,MAAM,IAAI73B,EAAE2M,EAAEgqD,aAAa,GAAG,OAAO32D,EAAE,OAAO,KAA2C,GAAtC2M,EAAEgqD,aAAa,KAAKhqD,EAAEiqD,cAAc,EAAK52D,IAAI2M,EAAEusB,QAAQ,MAAMlzB,MAAM6xB,EAAE,MAAMlrB,EAAEqpD,aAAa,KAAK,IAAI/1D,EAAED,EAAE6kD,MAAM7kD,EAAEykD,WAAW//C,EAAEzE,EAAEgN,EAAEN,EAAEwkC,cAAczsC,EAAEiI,EAAEwkC,aAAazsC,EAAEiI,EAAE0kC,eAAe,EAAE1kC,EAAE2kC,YAAY,EAAE3kC,EAAEykC,cAAc1sC,EAAEiI,EAAEs/C,kBAAkBvnD,EAAEiI,EAAE6kC,gBAAgB9sC,EAAEA,EAAEiI,EAAE8kC,cAAc,IAAI,IAAIpkC,EAAEV,EAAEolC,WAAWzkC,EAAEX,EAAEspD,gBAAgB,EAAEhpD,GAAG,CAAC,IAAIS,EAAE,GAAG6jC,GAAGtkC,GAAGrN,EAAE,GAAG8N,EAAEhJ,EAAEgJ,GAAG,EAAEL,EAAEK,IAAI,EAAEJ,EAAEI,IAAI,EAAET,IAAIrN,EACnV,GADqV,OACjfu1D,IAAI,IAAO,GAAFl1D,IAAOk1D,GAAGhjC,IAAIxlB,IAAIwoD,GAAGrkC,OAAOnkB,GAAGA,IAAI8tB,KAAIy5B,GAAEz5B,GAAE,KAAK05B,GAAE,GAAG,EAAEn0D,EAAE4qC,MAAM,OAAO5qC,EAAEgoD,YAAYhoD,EAAEgoD,WAAWC,WAAWjoD,EAAEC,EAAED,EAAEkoD,aAAajoD,EAAED,EAAEC,EAAED,EAAEkoD,YAAe,OAAOjoD,EAAE,CAAwC,GAAvCyE,EAAEgrD,GAAEA,IAAG,GAAGuE,GAAG/6B,QAAQ,KAAKyoB,GAAGpP,GAAa6M,GAAV/xC,EAAE6xC,MAAc,CAAC,GAAG,mBAAmB7xC,EAAEC,EAAE,CAAC2hB,MAAM5hB,EAAEuyC,eAAe72B,IAAI1b,EAAEwyC,mBAAmBlzC,EAAE,GAAGW,GAAGA,EAAED,EAAE+1B,gBAAgB91B,EAAEyyC,aAAap8C,QAAQ/D,EAAE0N,EAAEvC,cAAcuC,EAAEvC,iBAAiB,IAAInL,EAAE63D,WAAW,CAACnqD,EAAE1N,EAAEkgD,WAAW7yC,EAAErN,EAAEogD,aAAatyC,EAAE9N,EAAEqgD,UAAUrgD,EAAEA,EAAEsgD,YAAY,IAAI5yC,EAAEo3B,SAASh3B,EAAEg3B,SAAS,MAAM2yB,GAAI/pD,EAAE,KACnf,MAAMX,EAAE,IAAIlL,EAAE,EAAEs2B,GAAG,EAAEl3B,GAAG,EAAEw3B,EAAE,EAAE4B,EAAE,EAAE9mB,EAAE9F,EAAE+rB,EAAE,KAAKxsB,EAAE,OAAO,CAAC,IAAI,IAAIsqB,EAAK/jB,IAAI7F,GAAG,IAAIL,GAAG,IAAIkG,EAAEuxB,WAAW3M,EAAEt2B,EAAEwL,GAAGkG,IAAIzF,GAAG,IAAI9N,GAAG,IAAIuT,EAAEuxB,WAAW7jC,EAAEY,EAAE7B,GAAG,IAAIuT,EAAEuxB,WAAWjjC,GAAG0R,EAAEwxB,UAAUvhC,QAAW,QAAQ8zB,EAAE/jB,EAAE7M,aAAkB8yB,EAAEjmB,EAAEA,EAAE+jB,EAAE,OAAO,CAAC,GAAG/jB,IAAI9F,EAAE,MAAMT,EAA8C,GAA5CwsB,IAAI9rB,KAAK+qB,IAAIprB,IAAI8qB,EAAEt2B,GAAG23B,IAAI1rB,KAAKusB,IAAIr6B,IAAIiB,EAAEY,GAAM,QAAQy1B,EAAE/jB,EAAEhN,aAAa,MAAUizB,GAAJjmB,EAAEimB,GAAM3yB,WAAW0M,EAAE+jB,EAAE5pB,GAAG,IAAIyqB,IAAI,IAAIl3B,EAAE,KAAK,CAACouB,MAAM8I,EAAEhP,IAAIloB,QAAQyM,EAAE,KAAKA,EAAEA,GAAG,CAAC2hB,MAAM,EAAElG,IAAI,QAAQzb,EAAE,KAAKs0C,GAAG,CAAC8V,YAAYrqD,EAAEsqD,eAAerqD,GAAGilC,IAAG,EAAGkjB,GAAG,KAAKC,IAAG,EAAGb,GAAE50D,EAAE,GAAG,IAAI23D,KAAK,MAAMP,GAAI,GAAG,OACvgBxC,GAAE,MAAM7uD,MAAM6xB,EAAE,MAAMy6B,GAAGuC,GAAEwC,GAAIxC,GAAEA,GAAE5M,kBAAiB,OAAO4M,IAAGY,GAAG,KAAKZ,GAAE50D,EAAE,GAAG,IAAI,IAAIoN,EAAEV,EAAE,OAAOkoD,IAAG,CAAC,IAAIp0D,EAAEo0D,GAAEjqB,MAA+B,GAAvB,GAAFnqC,GAAM+jC,GAAGqwB,GAAE1rB,UAAU,IAAS,IAAF1oC,EAAM,CAAC,IAAIW,EAAEyzD,GAAEnqB,UAAU,GAAG,OAAOtpC,EAAE,CAAC,IAAIk2B,EAAEl2B,EAAEi4B,IAAI,OAAO/B,IAAI,mBAAoBA,EAAEA,EAAE,MAAMA,EAAE4B,QAAQ,OAAO,OAAS,KAAFz4B,GAAQ,KAAK,EAAE4yD,GAAGwB,IAAGA,GAAEjqB,QAAQ,EAAE,MAAM,KAAK,EAAEyoB,GAAGwB,IAAGA,GAAEjqB,QAAQ,EAAE6oB,GAAGoB,GAAEnqB,UAAUmqB,IAAG,MAAM,KAAK,KAAKA,GAAEjqB,QAAQ,KAAK,MAAM,KAAK,KAAKiqB,GAAEjqB,QAAQ,KAAK6oB,GAAGoB,GAAEnqB,UAAUmqB,IAAG,MAAM,KAAK,EAAEpB,GAAGoB,GAAEnqB,UAAUmqB,IAAG,MAAM,KAAK,EAAM3B,GAAG7lD,EAAPC,EAAEunD,IAAU,IAAI76B,EAAE1sB,EAAEo9B,UAAUyoB,GAAG7lD,GAAG,OACnf0sB,GAAGm5B,GAAGn5B,GAAG66B,GAAEA,GAAE5M,YAAY,MAAMoP,GAAI,GAAG,OAAOxC,GAAE,MAAM7uD,MAAM6xB,EAAE,MAAMy6B,GAAGuC,GAAEwC,GAAIxC,GAAEA,GAAE5M,kBAAiB,OAAO4M,IAAkD,GAA/Cv9B,EAAEsqB,GAAGxgD,EAAE89C,KAAKz+C,EAAE62B,EAAEogC,YAAYrqD,EAAEiqB,EAAEqgC,eAAkBv2D,IAAIX,GAAGA,GAAGA,EAAE2iC,eA3KqD,SAASy0B,EAAGlrD,EAAEC,GAAG,SAAOD,IAAGC,KAAED,IAAIC,KAAKD,GAAG,IAAIA,EAAE+3B,YAAY93B,GAAG,IAAIA,EAAE83B,SAASmzB,EAAGlrD,EAAEC,EAAEnG,YAAY,aAAakG,EAAEA,EAAEmrD,SAASlrD,KAAGD,EAAEorD,4BAAwD,GAA7BprD,EAAEorD,wBAAwBnrD,MA2K1NirD,CAAGp3D,EAAE2iC,cAAc8lB,gBAAgBzoD,GAAG,CAAC,OAAO4M,GAAG+xC,GAAG3+C,KAAKW,EAAEiM,EAAE4hB,WAAc,KAARqI,EAAEjqB,EAAE0b,OAAiBuO,EAAEl2B,GAAG,mBAAmBX,GAAGA,EAAEm/C,eAAex+C,EAAEX,EAAEo/C,aAAanzB,KAAK9R,IAAI0c,EAAE72B,EAAEG,MAAMwC,UAAUk0B,GAAGl2B,EAAEX,EAAE2iC,eAAex/B,WAAWxC,EAAE2+C,aAAap8C,QAASoH,eAAeusB,EAAEA,EAAEvsB,eAAeuC,EAAE7M,EAAEqjC,YAAY1gC,OAAO42B,EAAEtN,KAAK9R,IAAIvN,EAAE4hB,MAAM3hB,GAAGD,OAAE,IACpfA,EAAE0b,IAAIiR,EAAEtN,KAAK9R,IAAIvN,EAAE0b,IAAIzb,IAAIgqB,EAAE0gC,QAAQh+B,EAAE3sB,IAAIC,EAAED,EAAEA,EAAE2sB,EAAEA,EAAE1sB,GAAGA,EAAE2xC,GAAGx+C,EAAEu5B,GAAG/sB,EAAEgyC,GAAGx+C,EAAE4M,GAAGC,GAAGL,IAAI,IAAIqqB,EAAEmgC,YAAYngC,EAAEwoB,aAAaxyC,EAAE6iB,MAAMmH,EAAE0oB,eAAe1yC,EAAE8S,QAAQkX,EAAE2oB,YAAYhzC,EAAEkjB,MAAMmH,EAAE4oB,cAAcjzC,EAAEmT,WAAUhf,EAAEA,EAAE8K,eAAgB+rD,SAAS3qD,EAAE6iB,KAAK7iB,EAAE8S,QAAQkX,EAAEtsB,kBAAkBgvB,EAAE3sB,GAAGiqB,EAAEjrB,SAASjL,GAAGk2B,EAAE0gC,OAAO/qD,EAAEkjB,KAAKljB,EAAEmT,UAAUhf,EAAE82D,OAAOjrD,EAAEkjB,KAAKljB,EAAEmT,QAAQkX,EAAEjrB,SAASjL,OAAQA,EAAE,GAAG,IAAIk2B,EAAE72B,EAAE62B,EAAEA,EAAE7wB,YAAY,IAAI6wB,EAAEoN,UAAUtjC,EAAEkC,KAAK,CAACsuD,QAAQt6B,EAAE6gC,KAAK7gC,EAAE8gC,WAAWC,IAAI/gC,EAAEghC,YAAmD,IAAvC,mBAAoB73D,EAAEmyD,OAAOnyD,EAAEmyD,QAAYnyD,EACrf,EAAEA,EAAEW,EAAEgC,OAAO3C,KAAI62B,EAAEl2B,EAAEX,IAAKmxD,QAAQwG,WAAW9gC,EAAE6gC,KAAK7gC,EAAEs6B,QAAQ0G,UAAUhhC,EAAE+gC,IAAI9lB,KAAKoP,GAAGC,GAAGD,GAAG,KAAKh1C,EAAEusB,QAAQl5B,EAAE60D,GAAE50D,EAAE,GAAG,IAAI,IAAIQ,EAAEkM,EAAE,OAAOkoD,IAAG,CAAC,IAAIh7B,EAAEg7B,GAAEjqB,MAAgC,GAAxB,GAAF/Q,GAAM44B,GAAGhyD,EAAEo0D,GAAEnqB,UAAUmqB,IAAQ,IAAFh7B,EAAM,CAACz4B,OAAE,EAAO,IAAIqO,EAAEolD,GAAEx7B,IAAI,GAAG,OAAO5pB,EAAE,CAAC,IAAIuJ,EAAE67C,GAAE1rB,UAAU,OAAO0rB,GAAEtzB,KAAK,KAAK,EAAEngC,EAAE4X,EAAE,MAAM,QAAQ5X,EAAE4X,EAAE,mBAAoBvJ,EAAEA,EAAErO,GAAGqO,EAAEypB,QAAQ93B,GAAGyzD,GAAEA,GAAE5M,YAAY,MAAMoP,GAAI,GAAG,OAAOxC,GAAE,MAAM7uD,MAAM6xB,EAAE,MAAMy6B,GAAGuC,GAAEwC,GAAIxC,GAAEA,GAAE5M,kBAAiB,OAAO4M,IAAGA,GAAE,KAAKvkB,KAAKof,GAAEhrD,OAAOiI,EAAEusB,QAAQl5B,EAAE,GAAG80D,GAAGA,IAAG,EAAGC,GAAGpoD,EAAEqoD,GAAGpoD,OAAO,IAAIioD,GAAE50D,EAAE,OAAO40D,IAAGjoD,EACpfioD,GAAE5M,WAAW4M,GAAE5M,WAAW,KAAa,EAAR4M,GAAEjqB,SAAU/Q,EAAEg7B,IAAI1pB,QAAQ,KAAKtR,EAAEsP,UAAU,MAAM0rB,GAAEjoD,EAAyF,GAAtE,KAAjB3M,EAAE0M,EAAEwkC,gBAAqB8gB,GAAG,MAAM,IAAO,EAAFhyD,GAAK0M,IAAI0oD,GAAGD,MAAMA,GAAG,EAAEC,GAAG1oD,GAAGyoD,GAAG,EAAEp1D,EAAEA,EAAEmpC,UAAa4a,IAAI,mBAAoBA,GAAGwU,kBAAkB,IAAIxU,GAAGwU,kBAAkBzU,GAAG9jD,OAAE,EAAO,MAAuB,IAAhBA,EAAEk5B,QAAQ0R,QAAY,MAAMysB,IAAe,GAAVtB,GAAGppD,EAAEgsB,MAAQk5B,GAAG,MAAMA,IAAG,EAAGllD,EAAEmlD,GAAGA,GAAG,KAAKnlD,EAAE,OAAG,IAAO,EAAF+iD,KAAiB5e,KAAL,KACvW,SAAS8mB,KAAK,KAAK,OAAO/C,IAAG,CAAC,IAAIloD,EAAEkoD,GAAEnqB,UAAUgrB,IAAI,OAAOD,KAAK,IAAa,EAARZ,GAAEjqB,OAASU,GAAGupB,GAAEY,MAAMC,IAAG,GAAI,KAAKb,GAAEtzB,KAAKsyB,GAAGlnD,EAAEkoD,KAAIvpB,GAAGupB,GAAEY,MAAMC,IAAG,IAAK,IAAI9oD,EAAEioD,GAAEjqB,MAAM,IAAO,IAAFh+B,IAAQ2lD,GAAG5lD,EAAEkoD,IAAG,IAAO,KAAFjoD,IAASkoD,KAAKA,IAAG,EAAGjkB,GAAG,IAAG,WAAgB,OAALwlB,KAAY,SAAQxB,GAAEA,GAAE5M,YAAY,SAASoO,KAAK,GAAG,KAAKrB,GAAG,CAAC,IAAIroD,EAAE,GAAGqoD,GAAG,GAAGA,GAAS,OAANA,GAAG,GAAUpkB,GAAGjkC,EAAE6rD,IAAI,OAAM,EAAG,SAAS7F,GAAGhmD,EAAEC,GAAGqoD,GAAG3xD,KAAKsJ,EAAED,GAAGmoD,KAAKA,IAAG,EAAGjkB,GAAG,IAAG,WAAgB,OAALwlB,KAAY,SAAQ,SAAS3D,GAAG/lD,EAAEC,GAAGsoD,GAAG5xD,KAAKsJ,EAAED,GAAGmoD,KAAKA,IAAG,EAAGjkB,GAAG,IAAG,WAAgB,OAALwlB,KAAY,SAC1d,SAASmC,KAAK,GAAG,OAAOzD,GAAG,OAAM,EAAG,IAAIpoD,EAAEooD,GAAW,GAARA,GAAG,KAAQ,IAAO,GAAFrF,IAAM,MAAM1pD,MAAM6xB,EAAE,MAAM,IAAIjrB,EAAE8iD,GAAEA,IAAG,GAAG,IAAI1vD,EAAEk1D,GAAGA,GAAG,GAAG,IAAI,IAAIj1D,EAAE,EAAEA,EAAED,EAAEoD,OAAOnD,GAAG,EAAE,CAAC,IAAIyE,EAAE1E,EAAEC,GAAGgN,EAAEjN,EAAEC,EAAE,GAAGoN,EAAE3I,EAAEskB,QAAyB,GAAjBtkB,EAAEskB,aAAQ,EAAU,mBAAoB3b,EAAE,IAAIA,IAAI,MAAMK,GAAG,GAAG,OAAOT,EAAE,MAAMjH,MAAM6xB,EAAE,MAAMy6B,GAAGrlD,EAAES,IAAe,IAAX1N,EAAEi1D,GAAGA,GAAG,GAAOh1D,EAAE,EAAEA,EAAED,EAAEoD,OAAOnD,GAAG,EAAE,CAACyE,EAAE1E,EAAEC,GAAGgN,EAAEjN,EAAEC,EAAE,GAAG,IAAI,IAAIqN,EAAE5I,EAAEzD,OAAOyD,EAAEskB,QAAQ1b,IAAI,MAAMI,GAAG,GAAG,OAAOT,EAAE,MAAMjH,MAAM6xB,EAAE,MAAMy6B,GAAGrlD,EAAES,IAAI,IAAIJ,EAAEX,EAAEusB,QAAQgvB,YAAY,OAAO56C,GAAGX,EAAEW,EAAE26C,WAAW36C,EAAE26C,WAAW,KAAa,EAAR36C,EAAEs9B,QAAUt9B,EAAE69B,QACjf,KAAK79B,EAAE67B,UAAU,MAAM77B,EAAEX,EAAW,OAAT+iD,GAAE9iD,EAAEkkC,MAAW,EAAG,SAAS2nB,GAAG9rD,EAAEC,EAAE5M,GAAyBgmD,GAAGr5C,EAAfC,EAAE+kD,GAAGhlD,EAAfC,EAAE2kD,GAAGvxD,EAAE4M,GAAY,IAAWA,EAAE65C,KAAe,QAAV95C,EAAEipD,GAAGjpD,EAAE,MAAcmlC,GAAGnlC,EAAE,EAAEC,GAAGmpD,GAAGppD,EAAEC,IACzI,SAAS0lD,GAAG3lD,EAAEC,GAAG,GAAG,IAAID,EAAE40B,IAAIk3B,GAAG9rD,EAAEA,EAAEC,QAAQ,IAAI,IAAI5M,EAAE2M,EAAEg+B,OAAO,OAAO3qC,GAAG,CAAC,GAAG,IAAIA,EAAEuhC,IAAI,CAACk3B,GAAGz4D,EAAE2M,EAAEC,GAAG,MAAW,GAAG,IAAI5M,EAAEuhC,IAAI,CAAC,IAAIthC,EAAED,EAAEmpC,UAAU,GAAG,mBAAoBnpC,EAAEkH,KAAK0nD,0BAA0B,mBAAoB3uD,EAAE+xD,oBAAoB,OAAOC,KAAKA,GAAG9/B,IAAIlyB,IAAI,CAAuB+lD,GAAGhmD,EAAf2M,EAAEolD,GAAG/xD,EAAf2M,EAAE4kD,GAAG3kD,EAAED,GAAY,IAAWA,EAAE85C,KAAe,QAAVzmD,EAAE41D,GAAG51D,EAAE,MAAc8xC,GAAG9xC,EAAE,EAAE2M,GAAGopD,GAAG/1D,EAAE2M,IAAI,OAAO3M,EAAEA,EAAE2qC,QAChW,SAASwsB,GAAGxqD,EAAEC,EAAE5M,GAAG,IAAIC,EAAE0M,EAAEuqD,UAAU,OAAOj3D,GAAGA,EAAE6wB,OAAOlkB,GAAGA,EAAE65C,KAAK95C,EAAE2kC,aAAa3kC,EAAE0kC,eAAerxC,EAAEy6B,KAAI9tB,IAAIwnD,GAAEn0D,KAAKA,IAAI,IAAIixD,IAAG,IAAIA,KAAM,SAAFkD,MAAcA,IAAG,IAAIx7B,KAAI+6B,GAAG6C,GAAG5pD,EAAE,GAAG8nD,IAAIz0D,GAAG+1D,GAAGppD,EAAEC,GAAG,SAAS8rD,GAAG/rD,EAAEC,GAAG,IAAIA,IAAa,IAAO,GAAhBA,EAAED,EAAE7L,OAAe8L,EAAE,EAAE,IAAO,EAAFA,GAAKA,EAAE,KAAK8jC,KAAK,EAAE,GAAG,IAAI6kB,KAAKA,GAAGhB,IAAuB,KAAnB3nD,EAAEglC,GAAG,UAAU2jB,OAAY3oD,EAAE,WAAW,IAAI5M,EAAEymD,KAAe,QAAV95C,EAAEipD,GAAGjpD,EAAEC,MAAcklC,GAAGnlC,EAAEC,EAAE5M,GAAG+1D,GAAGppD,EAAE3M,IAAI,SAAS6vD,GAAGljD,GAAG,IAAIC,EAAED,EAAEm+B,cAAc9qC,EAAE,EAAE,OAAO4M,IAAI5M,EAAE4M,EAAEq9C,WAAWyO,GAAG/rD,EAAE3M,GACvb,SAAS4zD,GAAGjnD,EAAEC,GAAG,IAAI5M,EAAE,EAAE,OAAO2M,EAAE40B,KAAK,KAAK,GAAG,IAAIthC,EAAE0M,EAAEw8B,UAAczkC,EAAEiI,EAAEm+B,cAAc,OAAOpmC,IAAI1E,EAAE0E,EAAEulD,WAAW,MAAM,KAAK,GAAGhqD,EAAE0M,EAAEw8B,UAAU,MAAM,QAAQ,MAAMnjC,MAAM6xB,EAAE,MAAO,OAAO53B,GAAGA,EAAE6wB,OAAOlkB,GAAG8rD,GAAG/rD,EAAE3M,GAW3M,SAAS24D,GAAGhsD,EAAEC,EAAE5M,EAAEC,GAAG8B,KAAKw/B,IAAI50B,EAAE5K,KAAKb,IAAIlB,EAAE+B,KAAKopC,QAAQppC,KAAKmpC,MAAMnpC,KAAK4oC,OAAO5oC,KAAKonC,UAAUpnC,KAAKmF,KAAKnF,KAAKsmD,YAAY,KAAKtmD,KAAKmH,MAAM,EAAEnH,KAAKs3B,IAAI,KAAKt3B,KAAKioD,aAAap9C,EAAE7K,KAAK4iD,aAAa5iD,KAAK+oC,cAAc/oC,KAAKqjD,YAAYrjD,KAAKynD,cAAc,KAAKznD,KAAKjB,KAAKb,EAAE8B,KAAK6oC,MAAM,EAAE7oC,KAAKimD,WAAWjmD,KAAKmmD,YAAYnmD,KAAKkmD,WAAW,KAAKlmD,KAAKmvD,aAAa,EAAEnvD,KAAKovD,UAAU,KAAKpvD,KAAK0iD,WAAW1iD,KAAK8iD,MAAM,EAAE9iD,KAAK2oC,UAAU,KAAK,SAASof,GAAGn9C,EAAEC,EAAE5M,EAAEC,GAAG,OAAO,IAAI04D,GAAGhsD,EAAEC,EAAE5M,EAAEC,GAC5c,SAAS+tD,GAAGrhD,GAAiB,UAAdA,EAAEA,EAAEpL,aAAuBoL,EAAEisB,kBAC5C,SAASuvB,GAAGx7C,EAAEC,GAAG,IAAI5M,EAAE2M,EAAE+9B,UACoD,OAD1C,OAAO1qC,IAAGA,EAAE8pD,GAAGn9C,EAAE40B,IAAI30B,EAAED,EAAEzL,IAAIyL,EAAE7L,OAAQunD,YAAY17C,EAAE07C,YAAYroD,EAAEkH,KAAKyF,EAAEzF,KAAKlH,EAAEmpC,UAAUx8B,EAAEw8B,UAAUnpC,EAAE0qC,UAAU/9B,EAAEA,EAAE+9B,UAAU1qC,IAAIA,EAAEgqD,aAAap9C,EAAE5M,EAAEkH,KAAKyF,EAAEzF,KAAKlH,EAAE4qC,MAAM,EAAE5qC,EAAEioD,WAAW,KAAKjoD,EAAEkoD,YAAY,KAAKloD,EAAEgoD,WAAW,KAAKhoD,EAAEkxD,aAAa,EAAElxD,EAAEmxD,UAAU,MAAMnxD,EAAEykD,WAAW93C,EAAE83C,WAAWzkD,EAAE6kD,MAAMl4C,EAAEk4C,MAAM7kD,EAAEkrC,MAAMv+B,EAAEu+B,MAAMlrC,EAAEwpD,cAAc78C,EAAE68C,cAAcxpD,EAAE8qC,cAAcn+B,EAAEm+B,cAAc9qC,EAAEolD,YAAYz4C,EAAEy4C,YAAYx4C,EAAED,EAAEg4C,aAAa3kD,EAAE2kD,aAAa,OAAO/3C,EAAE,KAAK,CAACi4C,MAAMj4C,EAAEi4C,MACxfD,aAAah4C,EAAEg4C,cAAc5kD,EAAEmrC,QAAQx+B,EAAEw+B,QAAQnrC,EAAEkJ,MAAMyD,EAAEzD,MAAMlJ,EAAEq5B,IAAI1sB,EAAE0sB,IAAWr5B,EACpF,SAASsoD,GAAG37C,EAAEC,EAAE5M,EAAEC,EAAEyE,EAAEuI,GAAG,IAAII,EAAE,EAAM,GAAJpN,EAAE0M,EAAK,mBAAoBA,EAAEqhD,GAAGrhD,KAAKU,EAAE,QAAQ,GAAG,iBAAkBV,EAAEU,EAAE,OAAOV,EAAE,OAAOA,GAAG,KAAKmzB,EAAG,OAAO2oB,GAAGzoD,EAAEy5B,SAAS/0B,EAAEuI,EAAEL,GAAG,KAAK6zB,EAAGpzB,EAAE,EAAE3I,GAAG,GAAG,MAAM,KAAKq7B,EAAG1yB,EAAE,EAAE3I,GAAG,EAAE,MAAM,KAAKs7B,EAAG,OAAOrzB,EAAEm9C,GAAG,GAAG9pD,EAAE4M,EAAI,EAAFlI,IAAO2jD,YAAYroB,EAAGrzB,EAAEzF,KAAK84B,EAAGrzB,EAAEk4C,MAAM53C,EAAEN,EAAE,KAAKyzB,EAAG,OAAOzzB,EAAEm9C,GAAG,GAAG9pD,EAAE4M,EAAElI,IAAKwC,KAAKk5B,EAAGzzB,EAAE07C,YAAYjoB,EAAGzzB,EAAEk4C,MAAM53C,EAAEN,EAAE,KAAK0zB,EAAG,OAAO1zB,EAAEm9C,GAAG,GAAG9pD,EAAE4M,EAAElI,IAAK2jD,YAAYhoB,EAAG1zB,EAAEk4C,MAAM53C,EAAEN,EAAE,KAAK+zB,EAAG,OAAO+uB,GAAGzvD,EAAE0E,EAAEuI,EAAEL,GAAG,KAAK+zB,EAAG,OAAOh0B,EAAEm9C,GAAG,GAAG9pD,EAAE4M,EAAElI,IAAK2jD,YAAY1nB,EAAGh0B,EAAEk4C,MAAM53C,EAAEN,EAAE,QAAQ,GAAG,iBAChfA,GAAG,OAAOA,EAAE,OAAOA,EAAEgtB,UAAU,KAAKsG,EAAG5yB,EAAE,GAAG,MAAMV,EAAE,KAAKuzB,EAAG7yB,EAAE,EAAE,MAAMV,EAAE,KAAKwzB,EAAG9yB,EAAE,GAAG,MAAMV,EAAE,KAAK2zB,EAAGjzB,EAAE,GAAG,MAAMV,EAAE,KAAK4zB,EAAGlzB,EAAE,GAAGpN,EAAE,KAAK,MAAM0M,EAAE,MAAM3G,MAAM6xB,EAAE,IAAI,MAAMlrB,EAAEA,SAASA,EAAE,KAAuD,OAAjDC,EAAEk9C,GAAGz8C,EAAErN,EAAE4M,EAAElI,IAAK2jD,YAAY17C,EAAEC,EAAE1F,KAAKjH,EAAE2M,EAAEi4C,MAAM53C,EAASL,EAAE,SAAS67C,GAAG97C,EAAEC,EAAE5M,EAAEC,GAA2B,OAAxB0M,EAAEm9C,GAAG,EAAEn9C,EAAE1M,EAAE2M,IAAKi4C,MAAM7kD,EAAS2M,EAAE,SAAS8iD,GAAG9iD,EAAEC,EAAE5M,EAAEC,GAA6C,OAA1C0M,EAAEm9C,GAAG,GAAGn9C,EAAE1M,EAAE2M,IAAKy7C,YAAY3nB,EAAG/zB,EAAEk4C,MAAM7kD,EAAS2M,EAAE,SAASy7C,GAAGz7C,EAAEC,EAAE5M,GAA8B,OAA3B2M,EAAEm9C,GAAG,EAAEn9C,EAAE,KAAKC,IAAKi4C,MAAM7kD,EAAS2M,EAC7a,SAAS67C,GAAG77C,EAAEC,EAAE5M,GAA8J,OAA3J4M,EAAEk9C,GAAG,EAAE,OAAOn9C,EAAE8sB,SAAS9sB,EAAE8sB,SAAS,GAAG9sB,EAAEzL,IAAI0L,IAAKi4C,MAAM7kD,EAAE4M,EAAEu8B,UAAU,CAACmE,cAAc3gC,EAAE2gC,cAAcsrB,gBAAgB,KAAKrQ,eAAe57C,EAAE47C,gBAAuB37C,EACrL,SAASisD,GAAGlsD,EAAEC,EAAE5M,GAAG+B,KAAKw/B,IAAI30B,EAAE7K,KAAKurC,cAAc3gC,EAAE5K,KAAK40D,aAAa50D,KAAKm1D,UAAUn1D,KAAKm3B,QAAQn3B,KAAK62D,gBAAgB,KAAK72D,KAAK+0D,eAAe,EAAE/0D,KAAK+sD,eAAe/sD,KAAKy2B,QAAQ,KAAKz2B,KAAKsrC,QAAQrtC,EAAE+B,KAAKi0D,aAAa,KAAKj0D,KAAKm0D,iBAAiB,EAAEn0D,KAAKgwC,WAAWF,GAAG,GAAG9vC,KAAKk0D,gBAAgBpkB,IAAI,GAAG9vC,KAAKyvC,eAAezvC,KAAK60D,cAAc70D,KAAKkqD,iBAAiBlqD,KAAKqvC,aAAarvC,KAAKuvC,YAAYvvC,KAAKsvC,eAAetvC,KAAKovC,aAAa,EAAEpvC,KAAK0vC,cAAcI,GAAG,GAAG9vC,KAAK+2D,gCAAgC,KAC7e,SAASC,GAAGpsD,EAAEC,EAAE5M,GAAG,IAAIC,EAAE,EAAE+D,UAAUZ,aAAQ,IAASY,UAAU,GAAGA,UAAU,GAAG,KAAK,MAAM,CAAC21B,SAASkG,EAAG3+B,IAAI,MAAMjB,EAAE,KAAK,GAAGA,EAAEw5B,SAAS9sB,EAAE2gC,cAAc1gC,EAAE27C,eAAevoD,GACxK,SAASg5D,GAAGrsD,EAAEC,EAAE5M,EAAEC,GAAG,IAAIyE,EAAEkI,EAAEssB,QAAQjsB,EAAEw5C,KAAKp5C,EAAEq5C,GAAGhiD,GAAGiI,EAAE,GAAG3M,EAAE,CAAqB4M,EAAE,CAAC,GAAG69B,GAA1BzqC,EAAEA,EAAEwmD,mBAA8BxmD,GAAG,IAAIA,EAAEuhC,IAAI,MAAMv7B,MAAM6xB,EAAE,MAAM,IAAIvqB,EAAEtN,EAAE,EAAE,CAAC,OAAOsN,EAAEi0B,KAAK,KAAK,EAAEj0B,EAAEA,EAAE67B,UAAU3Q,QAAQ,MAAM5rB,EAAE,KAAK,EAAE,GAAGy2C,GAAG/1C,EAAEpG,MAAM,CAACoG,EAAEA,EAAE67B,UAAUya,0CAA0C,MAAMh3C,GAAGU,EAAEA,EAAEq9B,aAAa,OAAOr9B,GAAG,MAAMtH,MAAM6xB,EAAE,MAAO,GAAG,IAAI73B,EAAEuhC,IAAI,CAAC,IAAI7zB,EAAE1N,EAAEkH,KAAK,GAAGm8C,GAAG31C,GAAG,CAAC1N,EAAEyjD,GAAGzjD,EAAE0N,EAAEJ,GAAG,MAAMX,GAAG3M,EAAEsN,OAAOtN,EAAE+iD,GACrW,OADwW,OAAOn2C,EAAE4rB,QAAQ5rB,EAAE4rB,QAAQx4B,EAAE4M,EAAEkiD,eAAe9uD,GAAE4M,EAAEg5C,GAAG34C,EAAEI,IAAK04C,QAAQ,CAAC6L,QAAQjlD,GAAuB,QAApB1M,OAAE,IAASA,EAAE,KAAKA,KAC1e2M,EAAEqS,SAAShf,GAAG+lD,GAAGthD,EAAEkI,GAAG+5C,GAAGjiD,EAAE2I,EAAEJ,GAAUI,EAAE,SAAS4rD,GAAGtsD,GAAe,KAAZA,EAAEA,EAAEusB,SAAcgS,MAAM,OAAO,KAAK,OAAOv+B,EAAEu+B,MAAM3J,KAAK,KAAK,EAA2B,QAAQ,OAAO50B,EAAEu+B,MAAM/B,WAAW,SAAS+vB,GAAGvsD,EAAEC,GAAqB,GAAG,QAArBD,EAAEA,EAAEm+B,gBAA2B,OAAOn+B,EAAEo+B,WAAW,CAAC,IAAI/qC,EAAE2M,EAAEs9C,UAAUt9C,EAAEs9C,UAAU,IAAIjqD,GAAGA,EAAE4M,EAAE5M,EAAE4M,GAAG,SAASusD,GAAGxsD,EAAEC,GAAGssD,GAAGvsD,EAAEC,IAAID,EAAEA,EAAE+9B,YAAYwuB,GAAGvsD,EAAEC,GAAG,SAASwsD,GAAGzsD,EAAEC,GAAG,IAAI5M,EAAEgxC,GAAG,IAAI,OAAOA,GAAGrkC,EAAEC,IAAhB,QAA4BokC,GAAGhxC,GAA6B,SAASq5D,GAAG1sD,EAAEC,GAAG7K,KAAKu3D,cAAcC,GAAG5sD,EAAE,EAAEC,GAC5d,SAAS4sD,GAAG7sD,EAAEC,EAAE5M,GAAG+B,KAAKu3D,cAAcC,GAAG5sD,EAAEC,EAAE5M,GAC7C,SAASu5D,GAAG5sD,EAAEC,EAAE5M,GAAG,IAAIC,EAAE,MAAMD,GAAG,MAAMA,EAAEy5D,kBAAkBz5D,EAAEy5D,iBAAiBC,gBAAgB,KAAiK,GAA5J15D,EAAE,IAAI64D,GAAGlsD,EAAEC,EAAE,MAAM5M,IAAG,IAAKA,EAAEqtC,SAASzgC,EAAEk9C,GAAG,EAAE,KAAK,KAAK,IAAIl9C,EAAE,EAAE,IAAIA,EAAE,EAAE,GAAG5M,EAAEk5B,QAAQtsB,EAAEA,EAAEu8B,UAAUnpC,EAAEmlD,GAAGv4C,GAAGD,EAAEw0C,IAAInhD,EAAEk5B,QAAQ4nB,GAAG,IAAIn0C,EAAE+3B,SAAS/3B,EAAElG,WAAWkG,GAAM1M,EAAE,IAAI0M,EAAE,EAAEA,EAAE1M,EAAEmD,OAAOuJ,IAAI,CAAQ,IAAIjI,GAAXkI,EAAE3M,EAAE0M,IAAW2vB,YAAY53B,EAAEA,EAAEkI,EAAE2vB,SAAS,MAAMv8B,EAAE84D,gCAAgC94D,EAAE84D,gCAAgC,CAAClsD,EAAElI,GAAG1E,EAAE84D,gCAAgCx1D,KAAKsJ,EAAElI,GAAG,OAAO1E,EAC1c,SAAS25D,GAAGhtD,GAAG,SAASA,GAAG,IAAIA,EAAE+3B,UAAU,IAAI/3B,EAAE+3B,UAAU,KAAK/3B,EAAE+3B,WAAW,IAAI/3B,EAAE+3B,UAAU,iCAAiC/3B,EAAEg4B,YAChI,SAASi1B,GAAGjtD,EAAEC,EAAE5M,EAAEC,EAAEyE,GAAG,IAAIuI,EAAEjN,EAAEuzD,oBAAoB,GAAGtmD,EAAE,CAAC,IAAII,EAAEJ,EAAEqsD,cAAc,GAAG,mBAAoB50D,EAAE,CAAC,IAAI4I,EAAE5I,EAAEA,EAAE,WAAW,IAAIiI,EAAEssD,GAAG5rD,GAAGC,EAAExN,KAAK6M,IAAIqsD,GAAGpsD,EAAES,EAAEV,EAAEjI,OAAO,CAAmD,GAAlDuI,EAAEjN,EAAEuzD,oBAD9B,SAAY5mD,EAAEC,GAA0H,GAAvHA,IAA2DA,MAAvDA,EAAED,EAAE,IAAIA,EAAE+3B,SAAS/3B,EAAEu8C,gBAAgBv8C,EAAErG,WAAW,OAAa,IAAIsG,EAAE83B,WAAW93B,EAAEitD,aAAa,qBAAwBjtD,EAAE,IAAI,IAAI5M,EAAEA,EAAE2M,EAAE83B,WAAW93B,EAAEjG,YAAY1G,GAAG,OAAO,IAAIw5D,GAAG7sD,EAAE,EAAEC,EAAE,CAACygC,SAAQ,QAAI,GACvKysB,CAAG95D,EAAEC,GAAGoN,EAAEJ,EAAEqsD,cAAiB,mBAAoB50D,EAAE,CAAC,IAAIgJ,EAAEhJ,EAAEA,EAAE,WAAW,IAAIiI,EAAEssD,GAAG5rD,GAAGK,EAAE5N,KAAK6M,IAAIqqD,IAAG,WAAWgC,GAAGpsD,EAAES,EAAEV,EAAEjI,MAAK,OAAOu0D,GAAG5rD,GAGlG,SAAS0sD,GAAGptD,EAAEC,GAAG,IAAI5M,EAAE,EAAEgE,UAAUZ,aAAQ,IAASY,UAAU,GAAGA,UAAU,GAAG,KAAK,IAAI21D,GAAG/sD,GAAG,MAAM5G,MAAM6xB,EAAE,MAAM,OAAOkhC,GAAGpsD,EAAEC,EAAE,KAAK5M,GA3BtW40D,GAAG,SAASjoD,EAAEC,EAAE5M,GAAG,IAAIC,EAAE2M,EAAEi4C,MAAM,GAAG,OAAOl4C,EAAE,GAAGA,EAAE68C,gBAAgB58C,EAAEo9C,cAAcjwB,GAAEb,QAAQ4rB,IAAG,MAAQ,IAAG,IAAK9kD,EAAEC,GAAoC,CAAO,OAAN6kD,IAAG,EAAUl4C,EAAE20B,KAAK,KAAK,EAAEstB,GAAGjiD,GAAGy9C,KAAK,MAAM,KAAK,EAAEhB,GAAGz8C,GAAG,MAAM,KAAK,EAAEy2C,GAAGz2C,EAAE1F,OAAOy8C,GAAG/2C,GAAG,MAAM,KAAK,EAAEq8C,GAAGr8C,EAAEA,EAAEu8B,UAAUmE,eAAe,MAAM,KAAK,GAAGrtC,EAAE2M,EAAE48C,cAAc5oD,MAAM,IAAI8D,EAAEkI,EAAE1F,KAAK00B,SAASpC,GAAE0qB,GAAGx/C,EAAE62B,eAAe72B,EAAE62B,cAAct7B,EAAE,MAAM,KAAK,GAAqB,GAAG,QAArBA,EAAE2M,EAAEk+B,eAA2B,OAAG,OAAO7qC,EAAE8qC,YAAkBvR,GAAEU,GAAY,EAAVA,GAAEhB,SAAWtsB,EAAEg+B,OAAO,IAAI,MAAQ,IAAK5qC,EACrf4M,EAAEs+B,MAAMuZ,YAAmB0K,GAAGxiD,EAAEC,EAAE5M,IAAGw5B,GAAEU,GAAY,EAAVA,GAAEhB,SAA8B,QAAnBtsB,EAAEkhD,GAAGnhD,EAAEC,EAAE5M,IAAmB4M,EAAEu+B,QAAQ,MAAK3R,GAAEU,GAAY,EAAVA,GAAEhB,SAAW,MAAM,KAAK,GAA0B,GAAvBj5B,EAAE,IAAKD,EAAE4M,EAAE63C,YAAe,IAAa,IAAR93C,EAAEi+B,OAAW,CAAC,GAAG3qC,EAAE,OAAOuwD,GAAG7jD,EAAEC,EAAE5M,GAAG4M,EAAEg+B,OAAO,IAAgG,GAA1E,QAAlBlmC,EAAEkI,EAAEk+B,iBAAyBpmC,EAAE0rD,UAAU,KAAK1rD,EAAEksB,KAAK,KAAKlsB,EAAEsjD,WAAW,MAAMxuB,GAAEU,GAAEA,GAAEhB,SAAYj5B,EAAE,MAAW,OAAO,KAAK,KAAK,GAAG,KAAK,GAAG,OAAO2M,EAAEi4C,MAAM,EAAEsJ,GAAGxhD,EAAEC,EAAE5M,GAAG,OAAO8tD,GAAGnhD,EAAEC,EAAE5M,GAD7Q8kD,GAAG,IAAa,MAARn4C,EAAEi+B,YAC2Qka,IAAG,EAAa,OAAVl4C,EAAEi4C,MAAM,EAASj4C,EAAE20B,KAAK,KAAK,EAClX,GADoXthC,EAAE2M,EAAE1F,KAAK,OAAOyF,IAAIA,EAAE+9B,UAAU,KAAK99B,EAAE89B,UAAU,KAAK99B,EAAEg+B,OAAO,GAAGj+B,EAAEC,EAAEo9C,aACpftlD,EAAEu+C,GAAGr2C,EAAEktB,GAAEZ,SAASwrB,GAAG93C,EAAE5M,GAAG0E,EAAEqmD,GAAG,KAAKn+C,EAAE3M,EAAE0M,EAAEjI,EAAE1E,GAAG4M,EAAEg+B,OAAO,EAAK,iBAAkBlmC,GAAG,OAAOA,GAAG,mBAAoBA,EAAEs3B,aAAQ,IAASt3B,EAAEi1B,SAAS,CAAiD,GAAhD/sB,EAAE20B,IAAI,EAAE30B,EAAEk+B,cAAc,KAAKl+B,EAAEw4C,YAAY,KAAQ/B,GAAGpjD,GAAG,CAAC,IAAIgN,GAAE,EAAG02C,GAAG/2C,QAAQK,GAAE,EAAGL,EAAEk+B,cAAc,OAAOpmC,EAAEsiD,YAAO,IAAStiD,EAAEsiD,MAAMtiD,EAAEsiD,MAAM,KAAK7B,GAAGv4C,GAAG,IAAIS,EAAEpN,EAAEonD,yBAAyB,mBAAoBh6C,GAAGi5C,GAAG15C,EAAE3M,EAAEoN,EAAEV,GAAGjI,EAAE+zB,QAAQ8tB,GAAG35C,EAAEu8B,UAAUzkC,EAAEA,EAAE8hD,gBAAgB55C,EAAEw6C,GAAGx6C,EAAE3M,EAAE0M,EAAE3M,GAAG4M,EAAE+hD,GAAG,KAAK/hD,EAAE3M,GAAE,EAAGgN,EAAEjN,QAAQ4M,EAAE20B,IAAI,EAAEqsB,GAAG,KAAKhhD,EAAElI,EAAE1E,GAAG4M,EAAEA,EAAEs+B,MAAM,OAAOt+B,EAAE,KAAK,GAAGlI,EAAEkI,EAAEy7C,YACtf17C,EAAE,CAAsI,OAArI,OAAOA,IAAIA,EAAE+9B,UAAU,KAAK99B,EAAE89B,UAAU,KAAK99B,EAAEg+B,OAAO,GAAGj+B,EAAEC,EAAEo9C,aAAuBtlD,GAAVuI,EAAEvI,EAAE03B,OAAU13B,EAAEy3B,UAAUvvB,EAAE1F,KAAKxC,EAAEuI,EAAEL,EAAE20B,IAQtD,SAAY50B,GAAG,GAAG,mBAAoBA,EAAE,OAAOqhD,GAAGrhD,GAAG,EAAE,EAAE,GAAG,MAASA,EAAY,CAAc,IAAbA,EAAEA,EAAEgtB,YAAgBwG,EAAG,OAAO,GAAG,GAAGxzB,IAAI2zB,EAAG,OAAO,GAAG,OAAO,EARpF05B,CAAGt1D,GAAGiI,EAAEs3C,GAAGv/C,EAAEiI,GAAUM,GAAG,KAAK,EAAEL,EAAEshD,GAAG,KAAKthD,EAAElI,EAAEiI,EAAE3M,GAAG,MAAM2M,EAAE,KAAK,EAAEC,EAAE2hD,GAAG,KAAK3hD,EAAElI,EAAEiI,EAAE3M,GAAG,MAAM2M,EAAE,KAAK,GAAGC,EAAEihD,GAAG,KAAKjhD,EAAElI,EAAEiI,EAAE3M,GAAG,MAAM2M,EAAE,KAAK,GAAGC,EAAEmhD,GAAG,KAAKnhD,EAAElI,EAAEu/C,GAAGv/C,EAAEwC,KAAKyF,GAAG1M,EAAED,GAAG,MAAM2M,EAAE,MAAM3G,MAAM6xB,EAAE,IAAInzB,EAAE,KAAM,OAAOkI,EAAE,KAAK,EAAE,OAAO3M,EAAE2M,EAAE1F,KAAKxC,EAAEkI,EAAEo9C,aAA2CkE,GAAGvhD,EAAEC,EAAE3M,EAArCyE,EAAEkI,EAAEy7C,cAAcpoD,EAAEyE,EAAEu/C,GAAGhkD,EAAEyE,GAAc1E,GAAG,KAAK,EAAE,OAAOC,EAAE2M,EAAE1F,KAAKxC,EAAEkI,EAAEo9C,aAA2CuE,GAAG5hD,EAAEC,EAAE3M,EAArCyE,EAAEkI,EAAEy7C,cAAcpoD,EAAEyE,EAAEu/C,GAAGhkD,EAAEyE,GAAc1E,GAAG,KAAK,EACze,GAD2e6uD,GAAGjiD,GAC9f3M,EAAE2M,EAAEw4C,YAAe,OAAOz4C,GAAG,OAAO1M,EAAE,MAAM+F,MAAM6xB,EAAE,MAAoH,GAA9G53B,EAAE2M,EAAEo9C,aAA+BtlD,EAAE,QAApBA,EAAEkI,EAAEk+B,eAAyBpmC,EAAEktD,QAAQ,KAAKjM,GAAGh5C,EAAEC,GAAGs5C,GAAGt5C,EAAE3M,EAAE,KAAKD,IAAGC,EAAE2M,EAAEk+B,cAAc8mB,WAAeltD,EAAE2lD,KAAKz9C,EAAEkhD,GAAGnhD,EAAEC,EAAE5M,OAAO,CAAuF,IAArEiN,GAAjBvI,EAAEkI,EAAEu8B,WAAiBkE,WAAQsc,GAAGtH,GAAGz1C,EAAEu8B,UAAUmE,cAAchnC,YAAYojD,GAAG98C,EAAEK,EAAE28C,IAAG,GAAM38C,EAAE,CAAqC,GAAG,OAAvCN,EAAEjI,EAAEo0D,iCAA2C,IAAIp0D,EAAE,EAAEA,EAAEiI,EAAEvJ,OAAOsB,GAAG,GAAEuI,EAAEN,EAAEjI,IAAK83B,8BAA8B7vB,EAAEjI,EAAE,GAAG4lD,GAAGhnD,KAAK2J,GAAoB,IAAjBjN,EAAE2oD,GAAG/7C,EAAE,KAAK3M,EAAED,GAAO4M,EAAEs+B,MAAMlrC,EAAEA,GAAGA,EAAE4qC,OAAe,EAAT5qC,EAAE4qC,MAAS,KAAK5qC,EAAEA,EAAEmrC,aAAayiB,GAAGjhD,EAAEC,EACnf3M,EAAED,GAAGqqD,KAAKz9C,EAAEA,EAAEs+B,MAAM,OAAOt+B,EAAE,KAAK,EAAE,OAAOy8C,GAAGz8C,GAAG,OAAOD,GAAGu9C,GAAGt9C,GAAG3M,EAAE2M,EAAE1F,KAAKxC,EAAEkI,EAAEo9C,aAAa/8C,EAAE,OAAON,EAAEA,EAAE68C,cAAc,KAAKn8C,EAAE3I,EAAE+0B,SAASsoB,GAAG9hD,EAAEyE,GAAG2I,EAAE,KAAK,OAAOJ,GAAG80C,GAAG9hD,EAAEgN,KAAKL,EAAEg+B,OAAO,IAAI0jB,GAAG3hD,EAAEC,GAAGghD,GAAGjhD,EAAEC,EAAES,EAAErN,GAAG4M,EAAEs+B,MAAM,KAAK,EAAE,OAAO,OAAOv+B,GAAGu9C,GAAGt9C,GAAG,KAAK,KAAK,GAAG,OAAOuiD,GAAGxiD,EAAEC,EAAE5M,GAAG,KAAK,EAAE,OAAOipD,GAAGr8C,EAAEA,EAAEu8B,UAAUmE,eAAertC,EAAE2M,EAAEo9C,aAAa,OAAOr9C,EAAEC,EAAEs+B,MAAMwd,GAAG97C,EAAE,KAAK3M,EAAED,GAAG4tD,GAAGjhD,EAAEC,EAAE3M,EAAED,GAAG4M,EAAEs+B,MAAM,KAAK,GAAG,OAAOjrC,EAAE2M,EAAE1F,KAAKxC,EAAEkI,EAAEo9C,aAA2C6D,GAAGlhD,EAAEC,EAAE3M,EAArCyE,EAAEkI,EAAEy7C,cAAcpoD,EAAEyE,EAAEu/C,GAAGhkD,EAAEyE,GAAc1E,GAAG,KAAK,EAAE,OAAO4tD,GAAGjhD,EAAEC,EAAEA,EAAEo9C,aAC/ehqD,GAAG4M,EAAEs+B,MAAM,KAAK,EAAmD,KAAK,GAAG,OAAO0iB,GAAGjhD,EAAEC,EAAEA,EAAEo9C,aAAavwB,SAASz5B,GAAG4M,EAAEs+B,MAAM,KAAK,GAAGv+B,EAAE,CAAC1M,EAAE2M,EAAE1F,KAAK00B,SAASl3B,EAAEkI,EAAEo9C,aAAa38C,EAAET,EAAE48C,cAAcv8C,EAAEvI,EAAE9D,MAAM,IAAI0M,EAAEV,EAAE1F,KAAK00B,SAAiD,GAAxCpC,GAAE0qB,GAAG52C,EAAEiuB,eAAejuB,EAAEiuB,cAActuB,EAAK,OAAOI,EAAE,GAAGC,EAAED,EAAEzM,MAA0G,KAApGqM,EAAE4xC,GAAGvxC,EAAEL,GAAG,EAAwF,GAArF,mBAAoBhN,EAAEq7B,sBAAsBr7B,EAAEq7B,sBAAsBhuB,EAAEL,GAAG,cAAqB,GAAGI,EAAEosB,WAAW/0B,EAAE+0B,WAAWM,GAAEb,QAAQ,CAACtsB,EAAEkhD,GAAGnhD,EAAEC,EAAE5M,GAAG,MAAM2M,QAAQ,IAAc,QAAVU,EAAET,EAAEs+B,SAAiB79B,EAAEs9B,OAAO/9B,GAAG,OAC/eS,GAAG,CAAC,IAAIK,EAAEL,EAAEs3C,aAAa,GAAG,OAAOj3C,EAAE,CAACJ,EAAED,EAAE69B,MAAM,IAAI,IAAItrC,EAAE8N,EAAEk3C,aAAa,OAAOhlD,GAAG,CAAC,GAAGA,EAAE44B,UAAUv4B,GAAG,IAAKL,EAAEolD,aAAa/3C,GAAG,CAAC,IAAII,EAAEk0B,OAAM3hC,EAAEgmD,IAAI,EAAE5lD,GAAGA,IAAKuhC,IAAI,EAAEykB,GAAG34C,EAAEzN,IAAIyN,EAAEw3C,OAAO7kD,EAAgB,QAAdJ,EAAEyN,EAAEq9B,aAAqB9qC,EAAEilD,OAAO7kD,GAAGwkD,GAAGn3C,EAAEs9B,OAAO3qC,GAAG0N,EAAEm3C,OAAO7kD,EAAE,MAAMJ,EAAEA,EAAE8b,WAAW,GAAG,KAAKrO,EAAEk0B,IAAIj0B,EAAED,EAAEnG,OAAO0F,EAAE1F,KAAK,KAAKmG,EAAE69B,WAAW,GAAG,KAAK79B,EAAEk0B,IAAI,CAAY,GAAG,QAAdj0B,EAAED,EAAEs9B,QAAmB,MAAM3kC,MAAM6xB,EAAE,MAAMvqB,EAAEu3C,OAAO7kD,EAAgB,QAAd0N,EAAEJ,EAAEo9B,aAAqBh9B,EAAEm3C,OAAO7kD,GAAGwkD,GAAGl3C,EAAEtN,GAAGsN,EAAED,EAAE89B,aAAa79B,EAAED,EAAE69B,MAAM,GAAG,OAAO59B,EAAEA,EAAEq9B,OAAOt9B,OAAO,IAAIC,EAAED,EAAE,OAAOC,GAAG,CAAC,GAAGA,IACzfV,EAAE,CAACU,EAAE,KAAK,MAAkB,GAAG,QAAfD,EAAEC,EAAE69B,SAAoB,CAAC99B,EAAEs9B,OAAOr9B,EAAEq9B,OAAOr9B,EAAED,EAAE,MAAMC,EAAEA,EAAEq9B,OAAOt9B,EAAEC,EAAEsgD,GAAGjhD,EAAEC,EAAElI,EAAE+0B,SAASz5B,GAAG4M,EAAEA,EAAEs+B,MAAM,OAAOt+B,EAAE,KAAK,EAAE,OAAOlI,EAAEkI,EAAE1F,KAAsBjH,GAAjBgN,EAAEL,EAAEo9C,cAAiBvwB,SAASirB,GAAG93C,EAAE5M,GAAmCC,EAAEA,EAAlCyE,EAAEqgD,GAAGrgD,EAAEuI,EAAEgtD,wBAA8BrtD,EAAEg+B,OAAO,EAAEgjB,GAAGjhD,EAAEC,EAAE3M,EAAED,GAAG4M,EAAEs+B,MAAM,KAAK,GAAG,OAAgBj+B,EAAEg3C,GAAXv/C,EAAEkI,EAAE1F,KAAY0F,EAAEo9C,cAA6B+D,GAAGphD,EAAEC,EAAElI,EAAtBuI,EAAEg3C,GAAGv/C,EAAEwC,KAAK+F,GAAchN,EAAED,GAAG,KAAK,GAAG,OAAOiuD,GAAGthD,EAAEC,EAAEA,EAAE1F,KAAK0F,EAAEo9C,aAAa/pD,EAAED,GAAG,KAAK,GAAG,OAAOC,EAAE2M,EAAE1F,KAAKxC,EAAEkI,EAAEo9C,aAAatlD,EAAEkI,EAAEy7C,cAAcpoD,EAAEyE,EAAEu/C,GAAGhkD,EAAEyE,GAAG,OAAOiI,IAAIA,EAAE+9B,UAAU,KAAK99B,EAAE89B,UAAU,KAAK99B,EAAEg+B,OACpf,GAAGh+B,EAAE20B,IAAI,EAAE8hB,GAAGpjD,IAAI0M,GAAE,EAAGg3C,GAAG/2C,IAAID,GAAE,EAAG+3C,GAAG93C,EAAE5M,GAAG8mD,GAAGl6C,EAAE3M,EAAEyE,GAAG0iD,GAAGx6C,EAAE3M,EAAEyE,EAAE1E,GAAG2uD,GAAG,KAAK/hD,EAAE3M,GAAE,EAAG0M,EAAE3M,GAAG,KAAK,GAAG,OAAOwwD,GAAG7jD,EAAEC,EAAE5M,GAAG,KAAK,GAAoB,KAAK,GAAG,OAAOmuD,GAAGxhD,EAAEC,EAAE5M,GAAG,MAAMgG,MAAM6xB,EAAE,IAAIjrB,EAAE20B,OAYpI83B,GAAG93D,UAAUy6B,OAAOw9B,GAAGj4D,UAAUy6B,OAAO,SAASrvB,GAAGqsD,GAAGrsD,EAAE5K,KAAKu3D,cAAc,KAAK,OAAOD,GAAG93D,UAAU24D,QAAQV,GAAGj4D,UAAU24D,QAAQ,WAAW,IAAIvtD,EAAE5K,KAAKu3D,cAAc1sD,EAAED,EAAE2gC,cAAc0rB,GAAG,KAAKrsD,EAAE,MAAK,WAAWC,EAAEu0C,IAAI,SAIxQ5V,GAAG,SAAS5+B,GAAG,OAAOA,EAAE40B,KAAK,KAAK,EAAE,IAAI30B,EAAED,EAAEw8B,UAAU,GAAGv8B,EAAEygC,QAAQ,CAAC,IAAIrtC,EAAEixC,GAAGrkC,EAAEukC,cAAcvkC,EAAEwkC,cAAcpxC,EAAE4M,EAAEukC,aAAa4kB,GAAGnpD,EAAE+rB,MAAK,IAAO,GAAF+2B,MAAQiF,KAAK7jB,MAAM,MAAM,KAAK,GAAG,IAAI7wC,EAAEwmD,KAAKwQ,IAAG,WAAW,OAAOtQ,GAAGh6C,EAAE,EAAE1M,MAAKk5D,GAAGxsD,EAAE,KAAK6+B,GAAG,SAAS7+B,GAAM,KAAKA,EAAE40B,MAAgBolB,GAAGh6C,EAAE,EAAV85C,MAAe0S,GAAGxsD,EAAE,KAAK8+B,GAAG,SAAS9+B,GAAM,KAAKA,EAAE40B,MAAgBolB,GAAGh6C,EAAE,SAAV85C,MAAsB0S,GAAGxsD,EAAE,YAAY++B,GAAG,SAAS/+B,GAAG,GAAG,KAAKA,EAAE40B,IAAI,CAAC,IAAI30B,EAAE65C,KAAKzmD,EAAE0mD,GAAG/5C,GAAGg6C,GAAGh6C,EAAE3M,EAAE4M,GAAGusD,GAAGxsD,EAAE3M,KAAK2rC,GAAG,WAAW,OAAOqF,IAAIpF,GAAGwtB,GAC7ctwB,GAAG,SAASn8B,EAAEC,EAAE5M,GAAG,OAAO4M,GAAG,IAAK,QAAyB,GAAjBq2B,GAAGt2B,EAAE3M,GAAG4M,EAAE5M,EAAEE,KAAQ,UAAUF,EAAEkH,MAAM,MAAM0F,EAAE,CAAC,IAAI5M,EAAE2M,EAAE3M,EAAEyG,YAAYzG,EAAEA,EAAEyG,WAAsF,IAA3EzG,EAAEA,EAAEm6D,iBAAiB,cAAc13D,KAAKC,UAAU,GAAGkK,GAAG,mBAAuBA,EAAE,EAAEA,EAAE5M,EAAEoD,OAAOwJ,IAAI,CAAC,IAAI3M,EAAED,EAAE4M,GAAG,GAAG3M,IAAI0M,GAAG1M,EAAEm6D,OAAOztD,EAAEytD,KAAK,CAAC,IAAI11D,EAAE0kC,GAAGnpC,GAAG,IAAIyE,EAAE,MAAMsB,MAAM6xB,EAAE,KAAKuK,EAAGniC,GAAGgjC,GAAGhjC,EAAEyE,KAAK,MAAM,IAAK,WAAWk/B,GAAGj3B,EAAE3M,GAAG,MAAM,IAAK,SAAmB,OAAV4M,EAAE5M,EAAEY,QAAe0iC,GAAG32B,IAAI3M,EAAE4wD,SAAShkD,GAAE,KAAM28B,GAAGwtB,GAC9ZvtB,GAAG,SAAS78B,EAAEC,EAAE5M,EAAEC,EAAEyE,GAAG,IAAIuI,EAAEyiD,GAAEA,IAAG,EAAE,IAAI,OAAO9e,GAAG,GAAGjkC,EAAExL,KAAK,KAAKyL,EAAE5M,EAAEC,EAAEyE,IAAnC,QAAmD,KAAJgrD,GAAEziD,KAAU0nD,KAAK7jB,QAAQrH,GAAG,WAAW,IAAO,GAAFimB,MAnD/H,WAAc,GAAG,OAAOyF,GAAG,CAAC,IAAIxoD,EAAEwoD,GAAGA,GAAG,KAAKxoD,EAAEnF,SAAQ,SAASmF,GAAGA,EAAEykC,cAAc,GAAGzkC,EAAEwkC,aAAa4kB,GAAGppD,EAAEgsB,SAAOmY,KAmDsBupB,GAAKhE,OAAO3sB,GAAG,SAAS/8B,EAAEC,GAAG,IAAI5M,EAAE0vD,GAAEA,IAAG,EAAE,IAAI,OAAO/iD,EAAEC,GAAb,QAA4B,KAAJ8iD,GAAE1vD,KAAU20D,KAAK7jB,QAA+I,IAAIwpB,GAAG,CAACC,OAAO,CAACrxB,GAAG4U,GAAG1U,GAAGC,GAAGC,GAAG+sB,GAAG,CAACn9B,SAAQ,KAAMshC,GAAG,CAACC,wBAAwBxtB,GAAGytB,WAAW,EAAEvoD,QAAQ,gCAAgCwoD,oBAAoB,aAC9fC,GAAG,CAACF,WAAWF,GAAGE,WAAWvoD,QAAQqoD,GAAGroD,QAAQwoD,oBAAoBH,GAAGG,oBAAoBE,eAAeL,GAAGK,eAAeC,kBAAkB,KAAKC,4BAA4B,KAAKC,4BAA4B,KAAKC,cAAc,KAAKC,wBAAwB,KAAKC,wBAAwB,KAAKC,mBAAmB,KAAKC,eAAe,KAAKC,qBAAqB37B,EAAGjF,uBAAuB6gC,wBAAwB,SAAS5uD,GAAW,OAAO,QAAfA,EAAEs+B,GAAGt+B,IAAmB,KAAKA,EAAEw8B,WAAWsxB,wBAAwBD,GAAGC,yBARnF,WAAc,OAAO,MASzae,4BAA4B,KAAKC,gBAAgB,KAAKC,aAAa,KAAKC,kBAAkB,KAAKC,gBAAgB,MAAM,GAAG,oBAAqB3xD,+BAA+B,CAAC,IAAI4xD,GAAG5xD,+BAA+B,IAAI4xD,GAAGC,YAAYD,GAAGE,cAAc,IAAIjY,GAAG+X,GAAGG,OAAOpB,IAAI7W,GAAG8X,GAAG,MAAMlvD,KAAKlN,EAAQ07B,mDAAmDm/B,GAAG76D,EAAQw8D,aAAalC,GACnXt6D,EAAQy8D,YAAY,SAASvvD,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,IAAIA,EAAE+3B,SAAS,OAAO/3B,EAAE,IAAIC,EAAED,EAAE65C,gBAAgB,QAAG,IAAS55C,EAAE,CAAC,GAAG,mBAAoBD,EAAEqvB,OAAO,MAAMh2B,MAAM6xB,EAAE,MAAM,MAAM7xB,MAAM6xB,EAAE,IAAIx3B,OAAOkH,KAAKoF,KAA0C,OAA5BA,EAAE,QAAVA,EAAEs+B,GAAGr+B,IAAc,KAAKD,EAAEw8B,WAAoB1pC,EAAQ08D,UAAUlF,GAAGx3D,EAAQ4tC,QAAQ,SAAS1gC,EAAEC,EAAE5M,GAAG,IAAI25D,GAAG/sD,GAAG,MAAM5G,MAAM6xB,EAAE,MAAM,OAAO+hC,GAAG,KAAKjtD,EAAEC,GAAE,EAAG5M,IAAIP,EAAQu8B,OAAO,SAASrvB,EAAEC,EAAE5M,GAAG,IAAI25D,GAAG/sD,GAAG,MAAM5G,MAAM6xB,EAAE,MAAM,OAAO+hC,GAAG,KAAKjtD,EAAEC,GAAE,EAAG5M,IAC/bP,EAAQ28D,uBAAuB,SAASzvD,GAAG,IAAIgtD,GAAGhtD,GAAG,MAAM3G,MAAM6xB,EAAE,KAAK,QAAOlrB,EAAE4mD,sBAAqByD,IAAG,WAAW4C,GAAG,KAAK,KAAKjtD,GAAE,GAAG,WAAWA,EAAE4mD,oBAAoB,KAAK5mD,EAAEw0C,IAAI,YAAS,IAAQ1hD,EAAQ48D,wBAAwBtF,GAAGt3D,EAAQ68D,4BAA4B,SAAS3vD,EAAEC,GAAG,IAAI+sD,GAAGhtD,GAAG,MAAM3G,MAAM6xB,EAAE,MAAM,OAAO,IAAI2hC,GAAG7sD,EAAE,EAAEC,IAAInN,EAAQ88D,sBAAsB,SAAS5vD,EAAEC,GAAG,OAAOmtD,GAAGptD,EAAEC,EAAE,EAAE5I,UAAUZ,aAAQ,IAASY,UAAU,GAAGA,UAAU,GAAG,OAC7bvE,EAAQ+8D,oBAAoB,SAAS7vD,EAAEC,GAAG,IAAI+sD,GAAGhtD,GAAG,MAAM3G,MAAM6xB,EAAE,MAAM,OAAO,IAAIwhC,GAAG1sD,EAAEC,IAAInN,EAAQg9D,yBAAyB,SAAS9vD,GAAG,IAAIC,EAAE8iD,GAAEA,IAAG,EAAE,IAAI9e,GAAG,GAAGjkC,GAAV,QAAyB,KAAJ+iD,GAAE9iD,KAAU+nD,KAAK7jB,QAAQrxC,EAAQi9D,oCAAoC,SAAS/vD,EAAEC,EAAE5M,EAAEC,GAAG,IAAI05D,GAAG35D,GAAG,MAAMgG,MAAM6xB,EAAE,MAAM,GAAG,MAAMlrB,QAAG,IAASA,EAAE65C,gBAAgB,MAAMxgD,MAAM6xB,EAAE,KAAK,OAAO+hC,GAAGjtD,EAAEC,EAAE5M,GAAE,EAAGC,IAAIR,EAAQ0tC,yBAAyBisB,GAClZ35D,EAAQk9D,2BAA2B,SAAShwD,GAAG,GAAGA,EAAE,CAAC,IAAIC,EAAE6qB,EAAEkY,mCAAmC3vC,EAAE2rC,KAA2D,IAAtDh/B,EAAE,CAAC2/B,UAAU,KAAKpoC,OAAOyI,EAAEygC,SAASxgC,EAAEsgC,aAAaltC,GAAOA,EAAE,EAAEA,EAAEmsC,GAAG/oC,UAAUwJ,GAAGu/B,GAAGnsC,GAAGotC,UAAUptC,KAAKmsC,GAAGtlC,OAAO7G,EAAE,EAAE2M,GAAG,IAAI3M,GAAGgtC,GAAGrgC,KAAKlN,EAAQ0S,QAAQ,iC,6BCjT1PzS,EAAOD,QAAUkC,EAAQ,K;;;;;;;;GCKd,SAASsL,EAAEN,EAAEC,GAAG,IAAI5M,EAAE2M,EAAEvJ,OAAOuJ,EAAErJ,KAAKsJ,GAAGD,EAAE,OAAO,CAAC,IAAI1M,EAAED,EAAE,IAAI,EAAE0E,EAAEiI,EAAE1M,GAAG,UAAG,IAASyE,GAAG,EAAE2I,EAAE3I,EAAEkI,IAA0B,MAAMD,EAA7BA,EAAE1M,GAAG2M,EAAED,EAAE3M,GAAG0E,EAAE1E,EAAEC,GAAgB,SAASqN,EAAEX,GAAU,YAAO,KAAdA,EAAEA,EAAE,IAAqB,KAAKA,EAAE,SAASe,EAAEf,GAAG,IAAIC,EAAED,EAAE,GAAG,QAAG,IAASC,EAAE,CAAC,IAAI5M,EAAE2M,EAAE0J,MAAM,GAAGrW,IAAI4M,EAAE,CAACD,EAAE,GAAG3M,EAAE2M,EAAE,IAAI,IAAI1M,EAAE,EAAEyE,EAAEiI,EAAEvJ,OAAOnD,EAAEyE,GAAG,CAAC,IAAI3E,EAAE,GAAGE,EAAE,GAAG,EAAEmB,EAAEuL,EAAE5M,GAAGU,EAAEV,EAAE,EAAEu3B,EAAE3qB,EAAElM,GAAG,QAAG,IAASW,GAAG,EAAEiM,EAAEjM,EAAEpB,QAAG,IAASs3B,GAAG,EAAEjqB,EAAEiqB,EAAEl2B,IAAIuL,EAAE1M,GAAGq3B,EAAE3qB,EAAElM,GAAGT,EAAEC,EAAEQ,IAAIkM,EAAE1M,GAAGmB,EAAEuL,EAAE5M,GAAGC,EAAEC,EAAEF,OAAQ,WAAG,IAASu3B,GAAG,EAAEjqB,EAAEiqB,EAAEt3B,IAA0B,MAAM2M,EAA7BA,EAAE1M,GAAGq3B,EAAE3qB,EAAElM,GAAGT,EAAEC,EAAEQ,IAAgB,OAAOmM,EAAE,OAAO,KACve,SAASS,EAAEV,EAAEC,GAAG,IAAI5M,EAAE2M,EAAEiwD,UAAUhwD,EAAEgwD,UAAU,OAAO,IAAI58D,EAAEA,EAAE2M,EAAEtJ,GAAGuJ,EAAEvJ,GAAG,IAAIzD,EAAE,GAAG6B,EAAE,GAAGZ,EAAE,EAAE42B,EAAE,KAAKtkB,EAAE,EAAE0kB,GAAE,EAAGX,GAAE,EAAG+C,GAAE,EAAG,GAAG,iBAAkB4iC,aAAa,mBAAoBA,YAAYtsC,IAAI,CAAC,IAAIwH,EAAE8kC,YAAYp9D,EAAQgwC,aAAa,WAAW,OAAO1X,EAAExH,WAAW,CAAC,IAAIyH,EAAExH,KAAK6H,EAAEL,EAAEzH,MAAM9wB,EAAQgwC,aAAa,WAAW,OAAOzX,EAAEzH,MAAM8H,GAAG,SAASC,EAAE3rB,GAAG,IAAI,IAAIC,EAAEU,EAAE7L,GAAG,OAAOmL,GAAG,CAAC,GAAG,OAAOA,EAAEqS,SAASvR,EAAEjM,OAAQ,MAAGmL,EAAEkwD,WAAWnwD,GAAgD,MAA9Ce,EAAEjM,GAAGmL,EAAEgwD,UAAUhwD,EAAEmwD,eAAe9vD,EAAErN,EAAEgN,GAAcA,EAAEU,EAAE7L,IACzd,SAASi3B,EAAE/rB,GAAa,GAAVstB,GAAE,EAAG3B,EAAE3rB,IAAOuqB,EAAE,GAAG,OAAO5pB,EAAE1N,GAAGs3B,GAAE,EAAGyB,EAAEI,OAAO,CAAC,IAAInsB,EAAEU,EAAE7L,GAAG,OAAOmL,IAAIqsB,EAAExrB,WAAWirB,EAAE9rB,EAAEkwD,UAAUnwD,KAC7G,SAASosB,EAAEpsB,EAAEC,GAAGsqB,GAAE,EAAG+C,IAAIA,GAAE,EAAG9P,aAAa8O,IAAIpB,GAAE,EAAG,IAAI73B,EAAEmT,EAAE,IAAS,IAALmlB,EAAE1rB,GAAO6qB,EAAEnqB,EAAE1N,KAAK,OAAO63B,GAAGA,EAAEslC,eAAenwD,IAAID,IAAI,CAAC,IAAI1M,EAAEw3B,EAAExY,SAAS,GAAG,mBAAoBhf,EAAE,CAACw3B,EAAExY,SAAS,KAAK9L,EAAEskB,EAAEulC,cAAc,IAAIt4D,EAAEzE,EAAEw3B,EAAEslC,gBAAgBnwD,GAAGA,EAAEnN,EAAQgwC,eAAe,mBAAoB/qC,EAAE+yB,EAAExY,SAASva,EAAE+yB,IAAInqB,EAAE1N,IAAI8N,EAAE9N,GAAG04B,EAAE1rB,QAAQc,EAAE9N,GAAG63B,EAAEnqB,EAAE1N,GAAG,GAAG,OAAO63B,EAAE,IAAI13B,GAAE,MAAO,CAAC,IAAIqB,EAAEkM,EAAE7L,GAAG,OAAOL,IAAI63B,EAAExrB,WAAWirB,EAAEt3B,EAAE07D,UAAUlwD,IAAI7M,GAAE,EAAG,OAAOA,EAAhW,QAA0W03B,EAAE,KAAKtkB,EAAEnT,EAAE63B,GAAE,GAAI,IAAIsB,EAAE,KAAKF,EAAE,KACpc,SAASG,IAAI,GAAG,OAAOD,EAAE,IAAI,IAAIxsB,EAAElN,EAAQgwC,eAAetW,GAAE,EAAGxsB,GAAGwsB,EAAE,KAAK,MAAMvsB,GAAG,MAAMa,WAAW2rB,EAAE,GAAGxsB,GAAI,SAAS+rB,EAAEhsB,GAAG,OAAOwsB,EAAE1rB,WAAWkrB,EAAE,EAAEhsB,IAAIwsB,EAAExsB,EAAEc,WAAW2rB,EAAE,IAAI35B,EAAQ2wC,sBAAsB,EAAE3wC,EAAQowC,2BAA2B,EAAEpwC,EAAQywC,qBAAqB,EAAEzwC,EAAQmuC,wBAAwB,EAAEnuC,EAAQw9D,mBAAmB,KAAKx9D,EAAQswC,8BAA8B,EAAEtwC,EAAQ0vC,wBAAwB,SAASxiC,GAAGA,EAAEsS,SAAS,MAAMxf,EAAQy9D,2BAA2B,WAAWhmC,GAAGW,IAAIX,GAAE,EAAGyB,EAAEI,KAClft5B,EAAQ09D,wBAAwB,aAAa19D,EAAQkwC,iCAAiC,WAAW,OAAOx8B,GAAG1T,EAAQ29D,8BAA8B,WAAW,OAAO9vD,EAAE1N,IAAIH,EAAQ49D,cAAc,SAAS1wD,GAAG,OAAOwG,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAIvG,EAAE,EAAE,MAAM,QAAQA,EAAEuG,EAAE,IAAInT,EAAEmT,EAAEA,EAAEvG,EAAE,IAAI,OAAOD,IAAX,QAAuBwG,EAAEnT,IAAIP,EAAQ69D,wBAAwB,aAAa79D,EAAQ8vC,sBAAsB,aACxX9vC,EAAQ0tC,yBAAyB,SAASxgC,EAAEC,GAAG,OAAOD,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQA,EAAE,EAAE,IAAI3M,EAAEmT,EAAEA,EAAExG,EAAE,IAAI,OAAOC,IAAX,QAAuBuG,EAAEnT,IACnJP,EAAQkuC,0BAA0B,SAAShhC,EAAEC,EAAE5M,GAAG,IAAIC,EAAER,EAAQgwC,eAA8F,OAA/E,iBAAkBzvC,GAAG,OAAOA,EAAaA,EAAE,iBAAZA,EAAEA,EAAEu9D,QAA6B,EAAEv9D,EAAEC,EAAED,EAAEC,EAAGD,EAAEC,EAAS0M,GAAG,KAAK,EAAE,IAAIjI,GAAG,EAAE,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,KAAK,EAAEA,EAAE,WAAW,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,QAAQA,EAAE,IAAkO,OAAxNiI,EAAE,CAACtJ,GAAGxC,IAAIoe,SAASrS,EAAEowD,cAAcrwD,EAAEmwD,UAAU98D,EAAE+8D,eAAvDr4D,EAAE1E,EAAE0E,EAAoEk4D,WAAW,GAAG58D,EAAEC,GAAG0M,EAAEiwD,UAAU58D,EAAEiN,EAAExL,EAAEkL,GAAG,OAAOW,EAAE1N,IAAI+M,IAAIW,EAAE7L,KAAKw4B,EAAE9P,aAAa8O,GAAGgB,GAAE,EAAGhB,EAAExrB,WAAWirB,EAAE14B,EAAEC,MAAM0M,EAAEiwD,UAAUl4D,EAAEuI,EAAErN,EAAE+M,GAAGuqB,GAAGW,IAAIX,GAAE,EAAGyB,EAAEI,KAAYpsB,GACjflN,EAAQ4vC,qBAAqB,WAAW,OAAM,GAAI5vC,EAAQ+9D,sBAAsB,SAAS7wD,GAAG,IAAIC,EAAEuG,EAAE,OAAO,WAAW,IAAInT,EAAEmT,EAAEA,EAAEvG,EAAE,IAAI,OAAOD,EAAE5I,MAAMhC,KAAKiC,WAAxB,QAA2CmP,EAAEnT,M;;;;;;;;GCRlK,SAASiN,EAAEN,EAAEC,GAAG,IAAI5M,EAAE2M,EAAEvJ,OAAOuJ,EAAErJ,KAAKsJ,GAAGD,EAAE,OAAO,CAAC,IAAI1M,EAAED,EAAE,IAAI,EAAE0E,EAAEiI,EAAE1M,GAAG,UAAG,IAASyE,GAAG,EAAE2I,EAAE3I,EAAEkI,IAA0B,MAAMD,EAA7BA,EAAE1M,GAAG2M,EAAED,EAAE3M,GAAG0E,EAAE1E,EAAEC,GAAgB,SAASqN,EAAEX,GAAU,YAAO,KAAdA,EAAEA,EAAE,IAAqB,KAAKA,EAAE,SAASe,EAAEf,GAAG,IAAIC,EAAED,EAAE,GAAG,QAAG,IAASC,EAAE,CAAC,IAAI5M,EAAE2M,EAAE0J,MAAM,GAAGrW,IAAI4M,EAAE,CAACD,EAAE,GAAG3M,EAAE2M,EAAE,IAAI,IAAI1M,EAAE,EAAEyE,EAAEiI,EAAEvJ,OAAOnD,EAAEyE,GAAG,CAAC,IAAI3E,EAAE,GAAGE,EAAE,GAAG,EAAEmB,EAAEuL,EAAE5M,GAAGU,EAAEV,EAAE,EAAEu3B,EAAE3qB,EAAElM,GAAG,QAAG,IAASW,GAAG,EAAEiM,EAAEjM,EAAEpB,QAAG,IAASs3B,GAAG,EAAEjqB,EAAEiqB,EAAEl2B,IAAIuL,EAAE1M,GAAGq3B,EAAE3qB,EAAElM,GAAGT,EAAEC,EAAEQ,IAAIkM,EAAE1M,GAAGmB,EAAEuL,EAAE5M,GAAGC,EAAEC,EAAEF,OAAQ,WAAG,IAASu3B,GAAG,EAAEjqB,EAAEiqB,EAAEt3B,IAA0B,MAAM2M,EAA7BA,EAAE1M,GAAGq3B,EAAE3qB,EAAElM,GAAGT,EAAEC,EAAEQ,IAAgB,OAAOmM,EAAE,OAAO,KACve,SAASS,EAAEV,EAAEC,GAAG,IAAI5M,EAAE2M,EAAEiwD,UAAUhwD,EAAEgwD,UAAU,OAAO,IAAI58D,EAAEA,EAAE2M,EAAEtJ,GAAGuJ,EAAEvJ,GAAG,GAAG,iBAAkBw5D,aAAa,mBAAoBA,YAAYtsC,IAAI,CAAC,IAAI3wB,EAAEi9D,YAAYp9D,EAAQgwC,aAAa,WAAW,OAAO7vC,EAAE2wB,WAAW,CAAC,IAAI9uB,EAAE+uB,KAAK3vB,EAAEY,EAAE8uB,MAAM9wB,EAAQgwC,aAAa,WAAW,OAAOhuC,EAAE8uB,MAAM1vB,GAAG,IAAI42B,EAAE,GAAGtkB,EAAE,GAAG0kB,EAAE,EAAEX,EAAE,KAAK+C,EAAE,EAAElC,GAAE,EAAGC,GAAE,EAAGK,GAAE,EAAGC,EAAE30B,OAAO8J,WAAWirB,EAAE/0B,OAAOwmB,aACrW,GAAG,oBAAqB/f,QAAQ,CAAC,IAAIuuB,EAAEh1B,OAAO85D,qBAAqB,mBAAoB95D,OAAO+5D,uBAAuBtzD,QAAQC,MAAM,sJAAsJ,mBAAoBsuB,GAAGvuB,QAAQC,MAAM,qJAC9T,SAAS0uB,EAAEpsB,GAAG,IAAI,IAAIC,EAAEU,EAAE6F,GAAG,OAAOvG,GAAG,CAAC,GAAG,OAAOA,EAAEqS,SAASvR,EAAEyF,OAAQ,MAAGvG,EAAEkwD,WAAWnwD,GAAgD,MAA9Ce,EAAEyF,GAAGvG,EAAEgwD,UAAUhwD,EAAEmwD,eAAe9vD,EAAEwqB,EAAE7qB,GAAcA,EAAEU,EAAE6F,IAAI,SAAS8lB,EAAEtsB,GAAa,GAAV0rB,GAAE,EAAGU,EAAEpsB,IAAOqrB,EAAE,GAAG,OAAO1qB,EAAEmqB,GAAGO,GAAE,EAAGmB,EAAEC,OAAO,CAAC,IAAIxsB,EAAEU,EAAE6F,GAAG,OAAOvG,GAAG4sB,EAAEP,EAAErsB,EAAEkwD,UAAUnwD,IACtP,SAASysB,EAAEzsB,EAAEC,GAAGorB,GAAE,EAAGK,IAAIA,GAAE,EAAGK,EAAEsB,GAAGA,GAAG,GAAGjC,GAAE,EAAG,IAAI/3B,EAAEi6B,EAAE,IAAS,IAALlB,EAAEnsB,GAAOsqB,EAAE5pB,EAAEmqB,GAAG,OAAOP,MAAMA,EAAE6lC,eAAenwD,IAAID,IAAIktB,MAAM,CAAC,IAAI55B,EAAEi3B,EAAEjY,SAAS,GAAG,mBAAoBhf,EAAE,CAACi3B,EAAEjY,SAAS,KAAKgb,EAAE/C,EAAE8lC,cAAc,IAAIt4D,EAAEzE,EAAEi3B,EAAE6lC,gBAAgBnwD,GAAGA,EAAEnN,EAAQgwC,eAAe,mBAAoB/qC,EAAEwyB,EAAEjY,SAASva,EAAEwyB,IAAI5pB,EAAEmqB,IAAI/pB,EAAE+pB,GAAGsB,EAAEnsB,QAAQc,EAAE+pB,GAAGP,EAAE5pB,EAAEmqB,GAAG,GAAG,OAAOP,EAAE,IAAIn3B,GAAE,MAAO,CAAC,IAAIqB,EAAEkM,EAAE6F,GAAG,OAAO/R,GAAGo4B,EAAEP,EAAE73B,EAAE07D,UAAUlwD,GAAG7M,GAAE,EAAG,OAAOA,EAA1V,QAAoWm3B,EAAE,KAAK+C,EAAEj6B,EAAE+3B,GAAE,GAAI,IAAI/e,GAAE,EAAG8gB,EAAE,KAAKE,GAAG,EAAED,EAAE,EAAEG,EAAE,EACtc,SAASL,IAAI,OAAOp6B,EAAQgwC,gBAAgBvV,EAAE,IAAIC,EAAE,IAAIzrB,eAAee,EAAE0qB,EAAEwjC,MAAmL,SAASxkC,EAAExsB,GAAGmtB,EAAEntB,EAAEqM,IAAIA,GAAE,EAAGvJ,EAAEmuD,YAAY,OAAO,SAASpkC,EAAE7sB,EAAEC,GAAGotB,EAAE1B,GAAE,WAAW3rB,EAAElN,EAAQgwC,kBAAiB7iC,GAAvRutB,EAAE0jC,MAAMC,UAAU,WAAW,GAAG,OAAOhkC,EAAE,CAAC,IAAIntB,EAAElN,EAAQgwC,eAAevV,EAAEvtB,EAAEotB,EAAE,IAAID,GAAE,EAAGntB,GAAG8C,EAAEmuD,YAAY,OAAO5kD,GAAE,EAAG8gB,EAAE,MAAM,MAAMltB,GAAG,MAAM6C,EAAEmuD,YAAY,MAAMhxD,QAASoM,GAAE,GAAiHvZ,EAAQ2wC,sBAAsB,EAAE3wC,EAAQowC,2BAA2B,EAAEpwC,EAAQywC,qBAAqB,EAAEzwC,EAAQmuC,wBAAwB,EAC/enuC,EAAQw9D,mBAAmB,KAAKx9D,EAAQswC,8BAA8B,EAAEtwC,EAAQ0vC,wBAAwB,SAASxiC,GAAGA,EAAEsS,SAAS,MAAMxf,EAAQy9D,2BAA2B,WAAWllC,GAAGD,IAAIC,GAAE,EAAGmB,EAAEC,KAAK35B,EAAQ09D,wBAAwB,SAASxwD,GAAG,EAAEA,GAAG,IAAIA,EAAEvC,QAAQC,MAAM,mHAAmH0vB,EAAE,EAAEptB,EAAE+f,KAAKqxC,MAAM,IAAIpxD,GAAG,GAAGlN,EAAQkwC,iCAAiC,WAAW,OAAO1V,GACpdx6B,EAAQ29D,8BAA8B,WAAW,OAAO9vD,EAAEmqB,IAAIh4B,EAAQ49D,cAAc,SAAS1wD,GAAG,OAAOstB,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAIrtB,EAAE,EAAE,MAAM,QAAQA,EAAEqtB,EAAE,IAAIj6B,EAAEi6B,EAAEA,EAAErtB,EAAE,IAAI,OAAOD,IAAX,QAAuBstB,EAAEj6B,IAAIP,EAAQ69D,wBAAwB,aAAa79D,EAAQ8vC,sBAAsB,aAAa9vC,EAAQ0tC,yBAAyB,SAASxgC,EAAEC,GAAG,OAAOD,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQA,EAAE,EAAE,IAAI3M,EAAEi6B,EAAEA,EAAEttB,EAAE,IAAI,OAAOC,IAAX,QAAuBqtB,EAAEj6B,IAC7aP,EAAQkuC,0BAA0B,SAAShhC,EAAEC,EAAE5M,GAAG,IAAIC,EAAER,EAAQgwC,eAA8F,OAA/E,iBAAkBzvC,GAAG,OAAOA,EAAaA,EAAE,iBAAZA,EAAEA,EAAEu9D,QAA6B,EAAEv9D,EAAEC,EAAED,EAAEC,EAAGD,EAAEC,EAAS0M,GAAG,KAAK,EAAE,IAAIjI,GAAG,EAAE,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,KAAK,EAAEA,EAAE,WAAW,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,QAAQA,EAAE,IAAmN,OAAzMiI,EAAE,CAACtJ,GAAGw0B,IAAI5Y,SAASrS,EAAEowD,cAAcrwD,EAAEmwD,UAAU98D,EAAE+8D,eAAvDr4D,EAAE1E,EAAE0E,EAAoEk4D,WAAW,GAAG58D,EAAEC,GAAG0M,EAAEiwD,UAAU58D,EAAEiN,EAAEkG,EAAExG,GAAG,OAAOW,EAAEmqB,IAAI9qB,IAAIW,EAAE6F,KAAKklB,GAAGK,EAAEsB,GAAGA,GAAG,GAAG3B,GAAE,EAAGmB,EAAEP,EAAEj5B,EAAEC,MAAM0M,EAAEiwD,UAAUl4D,EAAEuI,EAAEwqB,EAAE9qB,GAAGqrB,GAAGD,IAAIC,GAAE,EAAGmB,EAAEC,KAAYzsB,GAClelN,EAAQ4vC,qBAAqBxV,EAAEp6B,EAAQ+9D,sBAAsB,SAAS7wD,GAAG,IAAIC,EAAEqtB,EAAE,OAAO,WAAW,IAAIj6B,EAAEi6B,EAAEA,EAAErtB,EAAE,IAAI,OAAOD,EAAE5I,MAAMhC,KAAKiC,WAAxB,QAA2Ci2B,EAAEj6B,M,6BCjB5J,OAAe,u4Q,6BCMf,SAASqvB,EAASxtB,GAChB,IAAIouB,EAAOluB,KASX,GARMkuB,aAAgBZ,IACpBY,EAAO,IAAIZ,GAGbY,EAAKW,KAAO,KACZX,EAAKxrB,KAAO,KACZwrB,EAAK7sB,OAAS,EAEVvB,GAAgC,mBAAjBA,EAAK2F,QACtB3F,EAAK2F,SAAQ,SAAUvF,GACrBguB,EAAK3sB,KAAKrB,WAEP,GAAI+B,UAAUZ,OAAS,EAC5B,IAAK,IAAIzD,EAAI,EAAGC,EAAIoE,UAAUZ,OAAQzD,EAAIC,EAAGD,IAC3CswB,EAAK3sB,KAAKU,UAAUrE,IAIxB,OAAOswB,EAoVT,SAAS+tC,EAAQ/tC,EAAME,EAAMvvB,GAC3B,IAAIq9D,EAAW9tC,IAASF,EAAKxrB,KAC3B,IAAI+G,EAAK5K,EAAO,KAAMuvB,EAAMF,GAC5B,IAAIzkB,EAAK5K,EAAOuvB,EAAMA,EAAKzU,KAAMuU,GAWnC,OATsB,OAAlBguC,EAASviD,OACXuU,EAAKW,KAAOqtC,GAEQ,OAAlBA,EAASptC,OACXZ,EAAKxrB,KAAOw5D,GAGdhuC,EAAK7sB,SAEE66D,EAGT,SAAS36D,EAAM2sB,EAAMhuB,GACnBguB,EAAKW,KAAO,IAAIplB,EAAKvJ,EAAMguB,EAAKW,KAAM,KAAMX,GACvCA,EAAKxrB,OACRwrB,EAAKxrB,KAAOwrB,EAAKW,MAEnBX,EAAK7sB,SAGP,SAAS6L,EAASghB,EAAMhuB,GACtBguB,EAAKxrB,KAAO,IAAI+G,EAAKvJ,EAAM,KAAMguB,EAAKxrB,KAAMwrB,GACvCA,EAAKW,OACRX,EAAKW,KAAOX,EAAKxrB,MAEnBwrB,EAAK7sB,SAGP,SAASoI,EAAM5K,EAAOiwB,EAAMnV,EAAM7Z,GAChC,KAAME,gBAAgByJ,GACpB,OAAO,IAAIA,EAAK5K,EAAOiwB,EAAMnV,EAAM7Z,GAGrCE,KAAKF,KAAOA,EACZE,KAAKnB,MAAQA,EAETiwB,GACFA,EAAKnV,KAAO3Z,KACZA,KAAK8uB,KAAOA,GAEZ9uB,KAAK8uB,KAAO,KAGVnV,GACFA,EAAKmV,KAAO9uB,KACZA,KAAK2Z,KAAOA,GAEZ3Z,KAAK2Z,KAAO,KAjahBhc,EAAOD,QAAU4vB,EAEjBA,EAAQ7jB,KAAOA,EACf6jB,EAAQpuB,OAASouB,EAyBjBA,EAAQ9tB,UAAUwvB,WAAa,SAAUZ,GACvC,GAAIA,EAAKtuB,OAASE,KAChB,MAAM,IAAIiE,MAAM,oDAGlB,IAAI0V,EAAOyU,EAAKzU,KACZmV,EAAOV,EAAKU,KAsBhB,OApBInV,IACFA,EAAKmV,KAAOA,GAGVA,IACFA,EAAKnV,KAAOA,GAGVyU,IAASpuB,KAAK0C,OAChB1C,KAAK0C,KAAOiX,GAEVyU,IAASpuB,KAAK6uB,OAChB7uB,KAAK6uB,KAAOC,GAGdV,EAAKtuB,KAAKuB,SACV+sB,EAAKzU,KAAO,KACZyU,EAAKU,KAAO,KACZV,EAAKtuB,KAAO,KAEL6Z,GAGT2T,EAAQ9tB,UAAUkvB,YAAc,SAAUN,GACxC,GAAIA,IAASpuB,KAAK0C,KAAlB,CAII0rB,EAAKtuB,MACPsuB,EAAKtuB,KAAKkvB,WAAWZ,GAGvB,IAAI1rB,EAAO1C,KAAK0C,KAChB0rB,EAAKtuB,KAAOE,KACZouB,EAAKzU,KAAOjX,EACRA,IACFA,EAAKosB,KAAOV,GAGdpuB,KAAK0C,KAAO0rB,EACPpuB,KAAK6uB,OACR7uB,KAAK6uB,KAAOT,GAEdpuB,KAAKqB,WAGPisB,EAAQ9tB,UAAU28D,SAAW,SAAU/tC,GACrC,GAAIA,IAASpuB,KAAK6uB,KAAlB,CAIIT,EAAKtuB,MACPsuB,EAAKtuB,KAAKkvB,WAAWZ,GAGvB,IAAIS,EAAO7uB,KAAK6uB,KAChBT,EAAKtuB,KAAOE,KACZouB,EAAKU,KAAOD,EACRA,IACFA,EAAKlV,KAAOyU,GAGdpuB,KAAK6uB,KAAOT,EACPpuB,KAAK0C,OACR1C,KAAK0C,KAAO0rB,GAEdpuB,KAAKqB,WAGPisB,EAAQ9tB,UAAU+B,KAAO,WACvB,IAAK,IAAI3D,EAAI,EAAGC,EAAIoE,UAAUZ,OAAQzD,EAAIC,EAAGD,IAC3C2D,EAAKvB,KAAMiC,UAAUrE,IAEvB,OAAOoC,KAAKqB,QAGdisB,EAAQ9tB,UAAU0N,QAAU,WAC1B,IAAK,IAAItP,EAAI,EAAGC,EAAIoE,UAAUZ,OAAQzD,EAAIC,EAAGD,IAC3CsP,EAAQlN,KAAMiC,UAAUrE,IAE1B,OAAOoC,KAAKqB,QAGdisB,EAAQ9tB,UAAU8U,IAAM,WACtB,GAAKtU,KAAK6uB,KAAV,CAIA,IAAI5J,EAAMjlB,KAAK6uB,KAAKhwB,MAQpB,OAPAmB,KAAK6uB,KAAO7uB,KAAK6uB,KAAKC,KAClB9uB,KAAK6uB,KACP7uB,KAAK6uB,KAAKlV,KAAO,KAEjB3Z,KAAK0C,KAAO,KAEd1C,KAAKqB,SACE4jB,IAGTqI,EAAQ9tB,UAAUwqB,MAAQ,WACxB,GAAKhqB,KAAK0C,KAAV,CAIA,IAAIuiB,EAAMjlB,KAAK0C,KAAK7D,MAQpB,OAPAmB,KAAK0C,KAAO1C,KAAK0C,KAAKiX,KAClB3Z,KAAK0C,KACP1C,KAAK0C,KAAKosB,KAAO,KAEjB9uB,KAAK6uB,KAAO,KAEd7uB,KAAKqB,SACE4jB,IAGTqI,EAAQ9tB,UAAUiG,QAAU,SAAUjE,EAAI2tB,GACxCA,EAAQA,GAASnvB,KACjB,IAAK,IAAI4uB,EAAS5uB,KAAK0C,KAAM9E,EAAI,EAAc,OAAXgxB,EAAiBhxB,IACnD4D,EAAGzD,KAAKoxB,EAAOP,EAAO/vB,MAAOjB,EAAGoC,MAChC4uB,EAASA,EAAOjV,MAIpB2T,EAAQ9tB,UAAU48D,eAAiB,SAAU56D,EAAI2tB,GAC/CA,EAAQA,GAASnvB,KACjB,IAAK,IAAI4uB,EAAS5uB,KAAK6uB,KAAMjxB,EAAIoC,KAAKqB,OAAS,EAAc,OAAXutB,EAAiBhxB,IACjE4D,EAAGzD,KAAKoxB,EAAOP,EAAO/vB,MAAOjB,EAAGoC,MAChC4uB,EAASA,EAAOE,MAIpBxB,EAAQ9tB,UAAUf,IAAM,SAAUY,GAChC,IAAK,IAAIzB,EAAI,EAAGgxB,EAAS5uB,KAAK0C,KAAiB,OAAXksB,GAAmBhxB,EAAIyB,EAAGzB,IAE5DgxB,EAASA,EAAOjV,KAElB,GAAI/b,IAAMyB,GAAgB,OAAXuvB,EACb,OAAOA,EAAO/vB,OAIlByuB,EAAQ9tB,UAAU68D,WAAa,SAAUh9D,GACvC,IAAK,IAAIzB,EAAI,EAAGgxB,EAAS5uB,KAAK6uB,KAAiB,OAAXD,GAAmBhxB,EAAIyB,EAAGzB,IAE5DgxB,EAASA,EAAOE,KAElB,GAAIlxB,IAAMyB,GAAgB,OAAXuvB,EACb,OAAOA,EAAO/vB,OAIlByuB,EAAQ9tB,UAAUS,IAAM,SAAUuB,EAAI2tB,GACpCA,EAAQA,GAASnvB,KAEjB,IADA,IAAIilB,EAAM,IAAIqI,EACLsB,EAAS5uB,KAAK0C,KAAiB,OAAXksB,GAC3B3J,EAAI1jB,KAAKC,EAAGzD,KAAKoxB,EAAOP,EAAO/vB,MAAOmB,OACtC4uB,EAASA,EAAOjV,KAElB,OAAOsL,GAGTqI,EAAQ9tB,UAAU88D,WAAa,SAAU96D,EAAI2tB,GAC3CA,EAAQA,GAASnvB,KAEjB,IADA,IAAIilB,EAAM,IAAIqI,EACLsB,EAAS5uB,KAAK6uB,KAAiB,OAAXD,GAC3B3J,EAAI1jB,KAAKC,EAAGzD,KAAKoxB,EAAOP,EAAO/vB,MAAOmB,OACtC4uB,EAASA,EAAOE,KAElB,OAAO7J,GAGTqI,EAAQ9tB,UAAUw1B,OAAS,SAAUxzB,EAAI+6D,GACvC,IAAIrnC,EACAtG,EAAS5uB,KAAK0C,KAClB,GAAIT,UAAUZ,OAAS,EACrB6zB,EAAMqnC,MACD,KAAIv8D,KAAK0C,KAId,MAAM,IAAIoI,UAAU,8CAHpB8jB,EAAS5uB,KAAK0C,KAAKiX,KACnBub,EAAMl1B,KAAK0C,KAAK7D,MAKlB,IAAK,IAAIjB,EAAI,EAAc,OAAXgxB,EAAiBhxB,IAC/Bs3B,EAAM1zB,EAAG0zB,EAAKtG,EAAO/vB,MAAOjB,GAC5BgxB,EAASA,EAAOjV,KAGlB,OAAOub,GAGT5H,EAAQ9tB,UAAUg9D,cAAgB,SAAUh7D,EAAI+6D,GAC9C,IAAIrnC,EACAtG,EAAS5uB,KAAK6uB,KAClB,GAAI5sB,UAAUZ,OAAS,EACrB6zB,EAAMqnC,MACD,KAAIv8D,KAAK6uB,KAId,MAAM,IAAI/jB,UAAU,8CAHpB8jB,EAAS5uB,KAAK6uB,KAAKC,KACnBoG,EAAMl1B,KAAK6uB,KAAKhwB,MAKlB,IAAK,IAAIjB,EAAIoC,KAAKqB,OAAS,EAAc,OAAXutB,EAAiBhxB,IAC7Cs3B,EAAM1zB,EAAG0zB,EAAKtG,EAAO/vB,MAAOjB,GAC5BgxB,EAASA,EAAOE,KAGlB,OAAOoG,GAGT5H,EAAQ9tB,UAAUuwB,QAAU,WAE1B,IADA,IAAIQ,EAAM,IAAI3kB,MAAM5L,KAAKqB,QAChBzD,EAAI,EAAGgxB,EAAS5uB,KAAK0C,KAAiB,OAAXksB,EAAiBhxB,IACnD2yB,EAAI3yB,GAAKgxB,EAAO/vB,MAChB+vB,EAASA,EAAOjV,KAElB,OAAO4W,GAGTjD,EAAQ9tB,UAAUi9D,eAAiB,WAEjC,IADA,IAAIlsC,EAAM,IAAI3kB,MAAM5L,KAAKqB,QAChBzD,EAAI,EAAGgxB,EAAS5uB,KAAK6uB,KAAiB,OAAXD,EAAiBhxB,IACnD2yB,EAAI3yB,GAAKgxB,EAAO/vB,MAChB+vB,EAASA,EAAOE,KAElB,OAAOyB,GAGTjD,EAAQ9tB,UAAUsM,MAAQ,SAAUgJ,EAAMM,IACxCA,EAAKA,GAAMpV,KAAKqB,QACP,IACP+T,GAAMpV,KAAKqB,SAEbyT,EAAOA,GAAQ,GACJ,IACTA,GAAQ9U,KAAKqB,QAEf,IAAI8V,EAAM,IAAImW,EACd,GAAIlY,EAAKN,GAAQM,EAAK,EACpB,OAAO+B,EAELrC,EAAO,IACTA,EAAO,GAELM,EAAKpV,KAAKqB,SACZ+T,EAAKpV,KAAKqB,QAEZ,IAAK,IAAIzD,EAAI,EAAGgxB,EAAS5uB,KAAK0C,KAAiB,OAAXksB,GAAmBhxB,EAAIkX,EAAMlX,IAC/DgxB,EAASA,EAAOjV,KAElB,KAAkB,OAAXiV,GAAmBhxB,EAAIwX,EAAIxX,IAAKgxB,EAASA,EAAOjV,KACrDxC,EAAI5V,KAAKqtB,EAAO/vB,OAElB,OAAOsY,GAGTmW,EAAQ9tB,UAAUk9D,aAAe,SAAU5nD,EAAMM,IAC/CA,EAAKA,GAAMpV,KAAKqB,QACP,IACP+T,GAAMpV,KAAKqB,SAEbyT,EAAOA,GAAQ,GACJ,IACTA,GAAQ9U,KAAKqB,QAEf,IAAI8V,EAAM,IAAImW,EACd,GAAIlY,EAAKN,GAAQM,EAAK,EACpB,OAAO+B,EAELrC,EAAO,IACTA,EAAO,GAELM,EAAKpV,KAAKqB,SACZ+T,EAAKpV,KAAKqB,QAEZ,IAAK,IAAIzD,EAAIoC,KAAKqB,OAAQutB,EAAS5uB,KAAK6uB,KAAiB,OAAXD,GAAmBhxB,EAAIwX,EAAIxX,IACvEgxB,EAASA,EAAOE,KAElB,KAAkB,OAAXF,GAAmBhxB,EAAIkX,EAAMlX,IAAKgxB,EAASA,EAAOE,KACvD3X,EAAI5V,KAAKqtB,EAAO/vB,OAElB,OAAOsY,GAGTmW,EAAQ9tB,UAAUsF,OAAS,SAAUooB,EAAOyvC,GACtCzvC,EAAQltB,KAAKqB,SACf6rB,EAAQltB,KAAKqB,OAAS,GAEpB6rB,EAAQ,IACVA,EAAQltB,KAAKqB,OAAS6rB,GAGxB,IAAK,IAAItvB,EAAI,EAAGgxB,EAAS5uB,KAAK0C,KAAiB,OAAXksB,GAAmBhxB,EAAIsvB,EAAOtvB,IAChEgxB,EAASA,EAAOjV,KAGlB,IAAIxC,EAAM,GACV,IAASvZ,EAAI,EAAGgxB,GAAUhxB,EAAI++D,EAAa/+D,IACzCuZ,EAAI5V,KAAKqtB,EAAO/vB,OAChB+vB,EAAS5uB,KAAKgvB,WAAWJ,GAEZ,OAAXA,IACFA,EAAS5uB,KAAK6uB,MAGZD,IAAW5uB,KAAK0C,MAAQksB,IAAW5uB,KAAK6uB,OAC1CD,EAASA,EAAOE,MAGlB,IAASlxB,EAAI,EAAGA,EAAIqE,UAAUZ,OAAQzD,IACpCgxB,EAASqtC,EAAOj8D,KAAM4uB,EAAQ3sB,UAAUrE,IAE1C,OAAOuZ,GAGTmW,EAAQ9tB,UAAUo9D,QAAU,WAG1B,IAFA,IAAIl6D,EAAO1C,KAAK0C,KACZmsB,EAAO7uB,KAAK6uB,KACPD,EAASlsB,EAAiB,OAAXksB,EAAiBA,EAASA,EAAOE,KAAM,CAC7D,IAAIpvB,EAAIkvB,EAAOE,KACfF,EAAOE,KAAOF,EAAOjV,KACrBiV,EAAOjV,KAAOja,EAIhB,OAFAM,KAAK0C,KAAOmsB,EACZ7uB,KAAK6uB,KAAOnsB,EACL1C,MA2DT,IAEEJ,EAAQ,GAARA,CAAyB0tB,GACzB,MAAO/c,M,6BCxaT5S,EAAOD,QAAU,SAAU4vB,GACzBA,EAAQ9tB,UAAUb,OAAOo3B,UAAzB,yBAAqC,mGAC1BnH,EAAS5uB,KAAK0C,KADY,WACNksB,EADM,gBAEjC,OAFiC,SAE3BA,EAAO/vB,MAFoB,OACE+vB,EAASA,EAAOjV,KADlB,gE;;;;;;;;GCM1B,IAAI9O,EAAE,MAAM5M,EAAE,MAAMC,EAAE,MAAMyE,EAAE,MAAMuI,EAAE,MAAMI,EAAE,MAAMC,EAAE,MAAMI,EAAE,MAAM9N,EAAE,MAAMG,EAAE,MAAMqB,EAAE,MAAMK,EAAE,MAAM61B,EAAE,MAAM72B,EAAE,MAAMg3B,EAAE,MACnI,GAAG,mBAAoB/2B,QAAQA,OAAOk3B,IAAI,CAAC,IAAIzkB,EAAEzS,OAAOk3B,IAAIhrB,EAAEuG,EAAE,iBAAiBnT,EAAEmT,EAAE,gBAAgBlT,EAAEkT,EAAE,kBAAkBzO,EAAEyO,EAAE,qBAAqBlG,EAAEkG,EAAE,kBAAkB9F,EAAE8F,EAAE,kBAAkB7F,EAAE6F,EAAE,iBAAiBzF,EAAEyF,EAAE,qBAAqBvT,EAAEuT,EAAE,kBAAkBpT,EAAEoT,EAAE,uBAAuB/R,EAAE+R,EAAE,cAAc1R,EAAE0R,EAAE,cAAcmkB,EAAEnkB,EAAE,qBAAqB1S,EAAE0S,EAAE,0BAA0BskB,EAAEtkB,EAAE,uBAAuB,IAAI0kB,EAAE,EAC3Z,SAASX,EAAEvqB,GAAG,GAAG,iBAAkBA,GAAG,OAAOA,EAAE,CAAC,IAAI9L,EAAE8L,EAAEgtB,SAAS,OAAO94B,GAAG,KAAK+L,EAAE,OAAOD,EAAEA,EAAEzF,MAAQ,KAAKjH,EAAE,KAAKgN,EAAE,KAAKvI,EAAE,KAAK9E,EAAE,KAAKG,EAAE,OAAO4M,EAAE,QAAQ,OAAOA,EAAEA,GAAGA,EAAEgtB,UAAY,KAAKrsB,EAAE,KAAKI,EAAE,KAAKjM,EAAE,KAAKL,EAAE,KAAKiM,EAAE,OAAOV,EAAE,QAAQ,OAAO9L,GAAG,KAAKb,EAAE,OAAOa,IAD8J,mBAAoBH,SAASm3B,EAAEn3B,OAAOk3B,IAAI,2BACpM,IAAIqC,EAAE5sB,EAAE0qB,EAAEnrB,EAAEorB,EAAEtqB,EAAE2qB,EAAEp4B,EAAEq4B,EAAE72B,EAAEi3B,EAAEt3B,EAAEu3B,EAAE34B,EAAE+4B,EAAE9rB,EAAEgsB,EAAEv0B,EAAEy0B,EAAEv5B,EAAEH,EAAQm/D,gBAAgBtxD,EAAE7N,EAAQo/D,gBAAgB5kC,EAAEx6B,EAAQq/D,QAAQ/mC,EAAEt4B,EAAQs/D,WAAW/mC,EAAEv4B,EAAQ03B,SAASkB,EAAE54B,EAAQu/D,KAAK1mC,EAAE74B,EAAQw/D,KAAKvmC,EAAEj5B,EAAQy/D,OAAOvmC,EAAEl5B,EAAQ43B,SAAS0B,EAAEt5B,EAAQ23B,WAAW6B,EAClfx5B,EAAQ83B,SAAS4B,EAAE15B,EAAQ0/D,YAAY,WAAW,OAAM,GAAI1/D,EAAQ2/D,iBAAiB,WAAW,OAAM,GAAI3/D,EAAQ4/D,kBAAkB,SAAS1yD,GAAG,OAAOuqB,EAAEvqB,KAAKW,GAAG7N,EAAQ6/D,kBAAkB,SAAS3yD,GAAG,OAAOuqB,EAAEvqB,KAAKU,GAAG5N,EAAQ8/D,UAAU,SAAS5yD,GAAG,MAAM,iBAAkBA,GAAG,OAAOA,GAAGA,EAAEgtB,WAAW/sB,GAAGnN,EAAQ+/D,aAAa,SAAS7yD,GAAG,OAAOuqB,EAAEvqB,KAAKe,GAAGjO,EAAQggE,WAAW,SAAS9yD,GAAG,OAAOuqB,EAAEvqB,KAAK1M,GAAGR,EAAQigE,OAAO,SAAS/yD,GAAG,OAAOuqB,EAAEvqB,KAAKlL,GAAGhC,EAAQkgE,OAAO,SAAShzD,GAAG,OAAOuqB,EAAEvqB,KAAKvL,GACle3B,EAAQmgE,SAAS,SAASjzD,GAAG,OAAOuqB,EAAEvqB,KAAK3M,GAAGP,EAAQogE,WAAW,SAASlzD,GAAG,OAAOuqB,EAAEvqB,KAAKM,GAAGxN,EAAQqgE,aAAa,SAASnzD,GAAG,OAAOuqB,EAAEvqB,KAAKjI,GAAGjF,EAAQsgE,WAAW,SAASpzD,GAAG,OAAOuqB,EAAEvqB,KAAK/M,GAC7LH,EAAQugE,mBAAmB,SAASrzD,GAAG,MAAM,iBAAkBA,GAAG,mBAAoBA,GAAGA,IAAI1M,GAAG0M,IAAIM,GAAGN,IAAIlM,GAAGkM,IAAIjI,GAAGiI,IAAI/M,GAAG+M,IAAI5M,GAAG4M,IAAI8qB,GAAG,iBAAkB9qB,GAAG,OAAOA,IAAIA,EAAEgtB,WAAWl4B,GAAGkL,EAAEgtB,WAAWv4B,GAAGuL,EAAEgtB,WAAWtsB,GAAGV,EAAEgtB,WAAWrsB,GAAGX,EAAEgtB,WAAWjsB,GAAGf,EAAEgtB,WAAWrC,GAAG3qB,EAAEgtB,WAAW9B,QAAG,IAASlrB,EAAEszD,cAAoBxgE,EAAQygE,OAAOhpC,G,cCbxUx3B,EAAOD,QAAUkC,QAAQ,Q,cCAzBjC,EAAOD,QAAUkC,QAAQ,Q,cCAzBjC,EAAOD,QAAUkC,QAAQ,Q,cCAzBjC,EAAOD,QAAUkC,QAAQ,S,6BCEzB,MAAMw+D,EAAQz/D,OAAO,SACf0/D,EAAO1/D,OAAO,QAkDpBhB,EAAOD,QA5CP,MAOEqO,YAAY0P,GACVzb,KAAKo+D,GAAS,KACZp+D,KAAK0jD,UACL1jD,KAAKq+D,MAEPr+D,KAAKyb,YAAcA,GAAe2T,IAClCpvB,KAAKs+D,KAAO,GACZt+D,KAAK0jD,QAAU,EAQjBvmC,IAAIohD,GACFv+D,KAAKs+D,KAAK/8D,KAAKg9D,GACfv+D,KAAKq+D,KAQP,CAACA,KACC,GAAIr+D,KAAK0jD,UAAY1jD,KAAKyb,aAEtBzb,KAAKs+D,KAAKj9D,OAAQ,CACpB,MAAMk9D,EAAMv+D,KAAKs+D,KAAKt0C,QAEtBhqB,KAAK0jD,UACL6a,EAAIv+D,KAAKo+D,Q,6BCzCf,MAAMI,EAOJzyD,YAAY5G,EAAMhD,GAChBnC,KAAKmC,OAASA,EACdnC,KAAKmF,KAAOA,GAUhB,MAAMs5D,UAAqBD,EAOzBzyD,YAAY1C,EAAMlH,GAChBof,MAAM,UAAWpf,GAEjBnC,KAAKqJ,KAAOA,GAUhB,MAAMq1D,UAAmBF,EAQvBzyD,YAAY+a,EAAMkB,EAAQ7lB,GACxBof,MAAM,QAASpf,GAEfnC,KAAK2+D,SAAWx8D,EAAOyf,qBAAuBzf,EAAO0f,gBACrD7hB,KAAKgoB,OAASA,EACdhoB,KAAK8mB,KAAOA,GAUhB,MAAM83C,UAAkBJ,EAMtBzyD,YAAY5J,GACVof,MAAM,OAAQpf,IAUlB,MAAM08D,UAAmBL,EAOvBzyD,YAAYzD,EAAOnG,GACjBof,MAAM,QAASpf,GAEfnC,KAAK4nB,QAAUtf,EAAMsf,QACrB5nB,KAAKsI,MAAQA,GAUjB,MAAMw2D,EAAc,CAQlBv2D,iBAAiB0a,EAAQ0F,GAGvB,SAASo2C,EAAU11D,GACjBsf,EAAS5qB,KAAKiC,KAAM,IAAIy+D,EAAap1D,EAAMrJ,OAG7C,SAASg/D,EAAQl4C,EAAMc,GACrBe,EAAS5qB,KAAKiC,KAAM,IAAI0+D,EAAW53C,EAAMc,EAAS5nB,OAGpD,SAASmoC,EAAQ7/B,GACfqgB,EAAS5qB,KAAKiC,KAAM,IAAI6+D,EAAWv2D,EAAOtI,OAG5C,SAASi/D,IACPt2C,EAAS5qB,KAAKiC,KAAM,IAAI4+D,EAAU5+D,OAfZ,mBAAb2oB,IAkBI,YAAX1F,GACF87C,EAAUr2C,UAAYC,EACtB3oB,KAAK6d,GAAGoF,EAAQ87C,IACI,UAAX97C,GACT+7C,EAAQt2C,UAAYC,EACpB3oB,KAAK6d,GAAGoF,EAAQ+7C,IACI,UAAX/7C,GACTklB,EAAQzf,UAAYC,EACpB3oB,KAAK6d,GAAGoF,EAAQklB,IACI,SAAXllB,GACTg8C,EAAOv2C,UAAYC,EACnB3oB,KAAK6d,GAAGoF,EAAQg8C,IAEhBj/D,KAAK6d,GAAGoF,EAAQ0F,KAWpB1H,oBAAoBgC,EAAQ0F,GAC1B,MAAMF,EAAYzoB,KAAKyoB,UAAUxF,GAEjC,IAAK,IAAIrlB,EAAI,EAAGA,EAAI6qB,EAAUpnB,OAAQzD,IAChC6qB,EAAU7qB,KAAO+qB,GAAYF,EAAU7qB,GAAG8qB,YAAcC,GAC1D3oB,KAAK6a,eAAeoI,EAAQwF,EAAU7qB,MAM9CD,EAAOD,QAAUohE,G,0tBCvKTI,EAAWt/D,EAAQ,IAAnBs/D,OAQR,SAASl6C,EAAU2C,GACjBA,EAAO5C,KAAK,SAQd,SAASo6C,KACFn/D,KAAKo/D,WAAap/D,KAAKqoB,eAAeC,UACzCtoB,KAAKinB,UAST,SAASo4C,EAAcj3D,GACrBpI,KAAK6a,eAAe,QAASwkD,GAC7Br/D,KAAKinB,UAC+B,IAAhCjnB,KAAKs/D,cAAc,UAErBt/D,KAAK+kB,KAAK,QAAS3c,GAiHvBzK,EAAOD,QArGP,SAA+B6hE,EAAIr8D,GACjC,IAAIs8D,GAAwB,EAE5B,SAASr5C,IACHq5C,GAAuBD,EAAGn9C,QAAQ6F,SAGpCs3C,EAAG/9C,aAAe+9C,EAAG99C,WACvB89C,EAAGx3C,KAAK,QAAQ,WACdw3C,EAAGr9C,UAAU2E,mBAAmB,SAChC04C,EAAGr9C,UAAUrE,GAAG,QAASsI,OAG3Bo5C,EAAGr9C,UAAU2E,mBAAmB,SAChC04C,EAAGr9C,UAAUrE,GAAG,QAASsI,IAG3B,MAAMs5C,EAAS,IAAIP,EAAJ,OACVh8D,GADU,IAEbw8D,aAAa,EACb16C,WAAW,EACX26C,YAAY,EACZC,oBAAoB,KA4EtB,OAzEAL,EAAG1hD,GAAG,WAAW,SAAiBkJ,GAC3B04C,EAAOl+D,KAAKwlB,KACfy4C,GAAwB,EACxBD,EAAGn9C,QAAQoG,YAIf+2C,EAAGx3C,KAAK,SAAS,SAAe3f,GAC9Bq3D,EAAOx4C,QAAQ7e,MAGjBm3D,EAAGx3C,KAAK,SAAS,WACX03C,EAAOL,WAEXK,EAAOl+D,KAAK,SAGdk+D,EAAOI,SAAW,SAASz3D,EAAK8U,GAC9B,GAAIqiD,EAAG/9C,aAAe+9C,EAAG15C,OAGvB,OAFA3I,EAAS9U,QACTD,QAAQ23D,SAAS96C,EAAWy6C,GAI9BF,EAAGx3C,KAAK,SAAS,WACf7K,EAAS9U,GACTD,QAAQ23D,SAAS96C,EAAWy6C,MAE9BF,EAAG/3C,aAGLi4C,EAAOM,OAAS,SAAS7iD,GACnBqiD,EAAG/9C,aAAe+9C,EAAG99C,WAOrB89C,EAAGn9C,QAAQiG,eAAeC,UACxBm3C,EAAOO,eAAeC,YAAYR,EAAOx4C,UAC7C/J,MAEAqiD,EAAGn9C,QAAQ2F,KAAK,UAAU,WAIxB7K,OAEFqiD,EAAG9iD,SAhBH8iD,EAAGx3C,KAAK,QAAQ,WACd03C,EAAOM,OAAO7iD,OAmBpBuiD,EAAOS,MAAQ,WACTX,EAAG/9C,aAAe+9C,EAAGz5C,MAAS05C,IAChCA,GAAwB,EACnBD,EAAGr9C,UAAUmG,eAAe83C,WAAWZ,EAAGn9C,QAAQ6F,WAI3Dw3C,EAAO71C,OAAS,SAASnP,EAAOoP,EAAU3M,GACpCqiD,EAAG/9C,aAAe+9C,EAAG99C,WAOzB89C,EAAGj4C,KAAK7M,EAAOyC,GANbqiD,EAAGx3C,KAAK,QAAQ,WACd03C,EAAO71C,OAAOnP,EAAOoP,EAAU3M,OAQrCuiD,EAAO5hD,GAAG,MAAOshD,GACjBM,EAAO5hD,GAAG,QAASwhD,GACZI,I,quDC/IT,MAAMl/C,EAAe3gB,EAAQ,IACrBihB,EAAejhB,EAAQ,IAAvBihB,W,EAC+BjhB,EAAQ,IAAvCwgE,E,EAAAA,aAAcC,E,EAAAA,aAEhBv/C,EAAoBlhB,EAAQ,IAC5BwhB,EAAYxhB,EAAQ,I,EACAA,EAAQ,IAA1BsR,E,EAAAA,OAAQf,E,EAAAA,MACR/D,EAASxM,EAAQ,IAAjBwM,KAEFk0D,EAAW,wBACXC,EAAyB5hE,OAAO,0BA6VtC,SAASqmB,EAAUw7C,GACjBA,EAAOz7C,KAAK,SAQd,SAAS6B,IACP5mB,KAAKinB,UAYP,SAASrC,EAAeU,EAAQwB,EAAMc,EAAS5D,GACzCsB,EAAOm7C,WACT74C,EAAUA,GAAWy4C,EAAav5C,GAClC9C,EAAU,EAAH,CACLC,WAAY,QACZ,eAAgB,YAChB,iBAAkBzX,OAAOqS,WAAW+I,IACjC5D,GAGLsB,EAAOxH,MACJ,YAAWgJ,KAAQu5C,EAAav5C,SAC/BxoB,OAAOkH,KAAKwe,GACT/jB,IAAKsL,GAAO,GAAEA,MAAMyY,EAAQzY,MAC5BtK,KAAK,QACR,WACA2mB,IAINtC,EAAOzK,eAAe,QAAS+L,GAC/BtB,EAAO2B,UAtETtpB,EAAOD,QA3TP,cAA8B6iB,EAqB5BxU,YAAY7I,EAASga,GAkBnB,GAjBAqE,QAiBoB,OAfpBre,EAAU,EAAH,CACLgY,WAAY,UACZwH,mBAAmB,EACnBg+C,gBAAiB,KACjBC,gBAAgB,EAChBC,aAAc,KACdC,UAAU,EACVC,QAAS,KACTN,OAAQ,KACRr9C,KAAM,KACNC,KAAM,KACNC,KAAM,MACHngB,IAGOmgB,OAAiBngB,EAAQs9D,SAAWt9D,EAAQ29D,SACtD,MAAM,IAAI/1D,UACR,wEAIJ,GAAoB,MAAhB5H,EAAQmgB,KACVrjB,KAAK+gE,QAAUX,EAAa,CAAC17C,EAAKO,KAChC,MAAM5a,EAAOg2D,EAAa,KAE1Bp7C,EAAI+7C,UAAU,IAAK,CACjB,iBAAkB32D,EAAKhJ,OACvB,eAAgB,eAElB4jB,EAAI+B,IAAI3c,KAEVrK,KAAK+gE,QAAQE,OACX/9D,EAAQmgB,KACRngB,EAAQigB,KACRjgB,EAAQ49D,QACR5jD,QAEG,GAAIha,EAAQs9D,OAAQ,CACzB,GAAIt9D,EAAQs9D,OAAOD,GACjB,MAAM,IAAIt8D,MACR,uEAIJf,EAAQs9D,OAAOD,IAA0B,EACzCvgE,KAAK+gE,QAAU79D,EAAQs9D,OAGrBxgE,KAAK+gE,UACP/gE,KAAKkhE,iBA6PX,SAAsBV,EAAQvgE,GAC5B,cAAoB3B,OAAOkH,KAAKvF,GAAhC,gBAAK,MAAMw7C,EAAK,KAAsB+kB,EAAO3iD,GAAG49B,EAAOx7C,EAAIw7C,IAE3D,OAAO,WACL,cAAoBn9C,OAAOkH,KAAKvF,GAAhC,eAAsC,CAAjC,MAAMw7C,EAAK,KACd+kB,EAAO3lD,eAAe4gC,EAAOx7C,EAAIw7C,MAlQT0lB,CAAanhE,KAAK+gE,QAAS,CACjDK,UAAWphE,KAAK+kB,KAAK3lB,KAAKY,KAAM,aAChCsI,MAAOtI,KAAK+kB,KAAK3lB,KAAKY,KAAM,SAC5BqhE,QAAS,CAAC38C,EAAKY,EAAQ5iB,KACrB1C,KAAKshE,cAAc58C,EAAKY,EAAQ5iB,EAAO68D,IACrCv/D,KAAK+kB,KAAK,aAAcw6C,EAAI76C,UAMF,IAA9BxhB,EAAQwf,oBAA4Bxf,EAAQwf,kBAAoB,IAChExf,EAAQy9D,iBAAgB3gE,KAAKuhE,QAAU,IAAIrlC,KAC/Cl8B,KAAKkD,QAAUA,EAYjBme,UACE,GAAIrhB,KAAKkD,QAAQ29D,SACf,MAAM,IAAI58D,MAAM,8CAGlB,OAAKjE,KAAK+gE,QACH/gE,KAAK+gE,QAAQ1/C,UADM,KAU5B5E,MAAM0K,GAMJ,GALIA,GAAInnB,KAAK+nB,KAAK,QAASZ,GAKvBnnB,KAAKuhE,QAAS,WACKvhE,KAAKuhE,SADV,IAChB,oCAA0C/5C,aAD1B,+BAIlB,MAAMg5C,EAASxgE,KAAK+gE,QAEpB,GAAIP,EAAQ,CAOV,GANAxgE,KAAKkhE,mBACLlhE,KAAKkhE,iBAAmBlhE,KAAK+gE,QAAU,KAKd,MAArB/gE,KAAKkD,QAAQmgB,KAEf,YADAm9C,EAAO/jD,MAAM,IAAMzc,KAAK+kB,KAAK,iBAIxBy7C,EAAOD,GAGhBp4D,QAAQ23D,SAAS96C,EAAWhlB,MAU9BwhE,aAAa98C,GACX,GAAI1kB,KAAKkD,QAAQkgB,KAAM,CACrB,MAAMjc,EAAQud,EAAIlB,IAAI3e,QAAQ,KAG9B,KAF4B,IAAXsC,EAAeud,EAAIlB,IAAI1X,MAAM,EAAG3E,GAASud,EAAIlB,OAE7CxjB,KAAKkD,QAAQkgB,KAAM,OAAO,EAG7C,OAAO,EAYTk+C,cAAc58C,EAAKY,EAAQ5iB,EAAMykB,GAC/B7B,EAAOzH,GAAG,QAAS+I,GAEnB,MAAMznB,OACiC8F,IAArCyf,EAAIV,QAAQ,sBACRU,EAAIV,QAAQ,qBAAqBxT,OAEjCJ,GAAWsU,EAAIV,QAAQ,yBACvB2B,EAAa,GAEnB,GACiB,QAAfjB,EAAIzB,QACkC,cAAtCyB,EAAIV,QAAQq9C,QAAQ1sD,gBACnBxV,IACAmhE,EAAStzD,KAAK7N,IACF,IAAZiR,GAA6B,KAAZA,IACjBpQ,KAAKwhE,aAAa98C,GAEnB,OAAOE,EAAeU,EAAQ,KAGhC,GAAItlB,KAAKkD,QAAQwf,kBAAmB,CAClC,MAAMA,EAAoB,IAAI5B,EAC5B9gB,KAAKkD,QAAQwf,mBACb,EACA1iB,KAAKkD,QAAQgY,YAGf,IACE,MAAMwB,EAASvM,EAAMuU,EAAIV,QAAQ,6BAE7BtH,EAAOoE,EAAkBuD,iBAC3B3B,EAAkBtG,OAAOM,EAAOoE,EAAkBuD,gBAClDsB,EAAW7E,EAAkBuD,eAAiB3B,GAEhD,MAAOta,GACP,OAAOwc,EAAeU,EAAQ,MAOlC,GAAItlB,KAAKkD,QAAQ09D,aAAc,CAC7B,MAAMa,EAAO,CACXn9C,OACEI,EAAIV,QAAS,IAAc,IAAZ5T,EAAgB,uBAAyB,WAC1DsxD,UAAWh9C,EAAIi9C,WAAWC,aAAcl9C,EAAIi9C,WAAWE,WACvDn9C,OAGF,GAAyC,IAArC1kB,KAAKkD,QAAQ09D,aAAav/D,OAQ5B,YAPArB,KAAKkD,QAAQ09D,aAAaa,EAAM,CAACK,EAAUh7C,EAAMc,EAAS5D,KACxD,IAAK89C,EACH,OAAOl9C,EAAeU,EAAQwB,GAAQ,IAAKc,EAAS5D,GAGtDhkB,KAAK+hE,gBAAgB5iE,EAAKwmB,EAAYjB,EAAKY,EAAQ5iB,EAAMykB,KAK7D,IAAKnnB,KAAKkD,QAAQ09D,aAAaa,GAAO,OAAO78C,EAAeU,EAAQ,KAGtEtlB,KAAK+hE,gBAAgB5iE,EAAKwmB,EAAYjB,EAAKY,EAAQ5iB,EAAMykB,GAc3D46C,gBAAgB5iE,EAAKwmB,EAAYjB,EAAKY,EAAQ5iB,EAAMykB,GAIlD,IAAK7B,EAAO08C,WAAa18C,EAAOm7C,SAAU,OAAOn7C,EAAO2B,UAExD,MAIMjD,EAAU,CACd,mCACA,qBACA,sBACC,yBARYnD,EAAW,QACvBjb,OAAOzG,EAAMiN,GACbmZ,OAAO,WASJg6C,EAAK,IAAIn+C,EAAU,MACzB,IAAIM,EAAWgD,EAAIV,QAAQ,0BAoB3B,GAlBItC,IACFA,EAAWA,EAASlR,OAAOO,MAAM,SAM/B2Q,EADE1hB,KAAKkD,QAAQw9D,gBACJ1gE,KAAKkD,QAAQw9D,gBAAgBh/C,EAAUgD,GAEvChD,EAAS,GAGlBA,IACFsC,EAAQziB,KAAM,2BAA0BmgB,GACxC69C,EAAG79C,SAAWA,IAIdiE,EAAW7E,EAAkBuD,eAAgB,CAC/C,MAAM7I,EAASmK,EAAW7E,EAAkBuD,eAAe7I,OACrD3c,EAAQqS,EAAO,CACnB,CAAC4P,EAAkBuD,eAAgB,CAAC7I,KAEtCwI,EAAQziB,KAAM,6BAA4B1C,GAC1C0gE,EAAGt9C,YAAc0D,EAMnB3lB,KAAK+kB,KAAK,UAAWf,EAASU,GAE9BY,EAAOxH,MAAMkG,EAAQhjB,OAAO,QAAQC,KAAK,SACzCqkB,EAAOzK,eAAe,QAAS+L,GAE/B24C,EAAG35C,UAAUN,EAAQ5iB,EAAM1C,KAAKkD,QAAQgY,YAEpClb,KAAKuhE,UACPvhE,KAAKuhE,QAAQpkD,IAAIoiD,GACjBA,EAAG1hD,GAAG,QAAS,IAAM7d,KAAKuhE,QAAQxyC,OAAOwwC,KAG3Cp4C,EAAGo4C,M;;;;;;;;GClUM,IAAIj0D,EAAE1L,EAAQ,IAAiB+L,EAAE/L,EAAQ,KAAkV,IAAIwR,EAAExR,EAAQ,GAASw5B,mDAAmDtD,EAAE,MACpd,GAAG,mBAAoBn3B,QAAQA,OAAOk3B,IAAI,CAAC,IAAIV,EAAEx2B,OAAOk3B,IAAIC,EAAEX,EAAE,mBAAmB,IAAI+C,EAAE,GAAGlC,EAAE,KAAKC,EAAE,KACrG,SAASK,IAAI,GAAG,OAAON,EAAE,CAAC,IAAIprB,EAAE,IAAIolB,IAAI,IAAIuG,EAAEgF,WAAW,CAAC/B,cAAc,OAAOjD,EAAEwF,SAAS,MAAMxF,EAAEsF,YAAW,SAASjxB,GAAG,OAAOA,IAAG,MAAM2rB,EAAEuF,OAAO,MAAMvF,EAAEoF,iBAAgB,eAAcpF,EAAEkF,WAAU,eAAclF,EAAEmF,yBAAoB,GAAO,WAAW,OAAO,QAAOnF,EAAEiF,cAAc,MAAMjF,EAAE+E,aAAY,eAAc/E,EAAEqF,SAAQ,WAAW,OAAO,QAA9S,QAA6T,IAAI/wB,EAAEqtB,EAAEA,EAAE,GAAG,IAAI,IAAIj6B,EAAE,EAAEA,EAAE4M,EAAExJ,OAAOpD,IAAI,CAAC,IAAIC,EAAE2M,EAAE5M,GAAG2M,EAAEoJ,IAAI9V,EAAE+jE,UAAUt2D,EAAEwE,MAAMjS,EAAEgkE,aAAalsC,EAAEprB,EAAE,OAAOorB,EAAE,IAAIW,EAAE,KACrd,SAASC,IAAI,IAAIhsB,EAAE+rB,EAAuB,OAArB,OAAO/rB,IAAI+rB,EAAE/rB,EAAE+O,MAAa/O,EACjD,IAAI2rB,EAAE,CAACqE,gBAAgB,WAAW,MAAM32B,MAJoC,SAAW2G,GAAG,IAAI,IAAIC,EAAE,yDAAyDD,EAAE3M,EAAE,EAAEA,EAAEgE,UAAUZ,OAAOpD,IAAI4M,GAAG,WAAWpK,mBAAmBwB,UAAUhE,IAAI,MAAM,yBAAyB2M,EAAE,WAAWC,EAAE,iHAIzOnL,CAAE,OAAQ+rD,YAAY,SAAS7gD,GAAG,OAAOA,EAAE4uB,eAAe8B,YAAY,SAAS1wB,GAAG,IAAIC,EAAE+rB,IAA0F,OAAtFsB,EAAE32B,KAAK,CAAC0gE,UAAU,WAAWC,WAAWj+D,QAAQpF,MAAM,OAAOgM,EAAEA,EAAEk+B,cAAc,GAAGn+B,IAAWA,GAAG2wB,WAAW,SAAS3wB,GAA0E,OAAvEstB,EAAE32B,KAAK,CAAC0gE,UAAU,UAAUC,WAAWj+D,QAAQpF,MAAM+L,EAAE4uB,gBAAuB5uB,EAAE4uB,eAAeiC,UAAU,SAAS7wB,GAAGgsB,IAAIsB,EAAE32B,KAAK,CAAC0gE,UAAU,SAASC,WAAWj+D,QAAQpF,MAAM+L,KAAK8wB,oBAAoB,SAAS9wB,GAAGgsB,IAAI,IAAI/rB,OAAE,EAAO,OAAOD,GAAG,iBACveA,IAAIC,EAAED,EAAEusB,SAASe,EAAE32B,KAAK,CAAC0gE,UAAU,mBAAmBC,WAAWj+D,QAAQpF,MAAMgM,KAAK2wB,cAAc,SAAS5wB,EAAEC,GAAGqtB,EAAE32B,KAAK,CAAC0gE,UAAU,aAAaC,WAAWj+D,QAAQpF,MAAM,mBAAoBgM,EAAEA,EAAED,GAAGA,KAAK+wB,gBAAgB,SAAS/wB,GAAGgsB,IAAIsB,EAAE32B,KAAK,CAAC0gE,UAAU,eAAeC,WAAWj+D,QAAQpF,MAAM+L,KAAKgxB,QAAQ,SAAShxB,GAAG,IAAIC,EAAE+rB,IAA4F,OAAxFhsB,EAAE,OAAOC,EAAEA,EAAEk+B,cAAc,GAAGn+B,IAAIstB,EAAE32B,KAAK,CAAC0gE,UAAU,OAAOC,WAAWj+D,QAAQpF,MAAM+L,IAAWA,GAAGixB,WAAW,SAASjxB,EAAEC,EAAE5M,GACtY,OAD+Y4M,EAAE,QAARD,EAAEgsB,KAAehsB,EAAEm+B,mBAAc,IAAS9qC,EACnfA,EAAE4M,GAAGA,EAAEqtB,EAAE32B,KAAK,CAAC0gE,UAAU,UAAUC,WAAWj+D,QAAQpF,MAAMgM,IAAU,CAACA,EAAE,eAAeixB,OAAO,SAASlxB,GAAG,IAAIC,EAAE+rB,IAAwG,OAApGhsB,EAAE,OAAOC,EAAEA,EAAEk+B,cAAc,CAAC5R,QAAQvsB,GAAGstB,EAAE32B,KAAK,CAAC0gE,UAAU,MAAMC,WAAWj+D,QAAQpF,MAAM+L,EAAEusB,UAAiBvsB,GAAGmxB,SAAS,SAASnxB,GAAG,IAAIC,EAAE+rB,IAAkH,OAA9GhsB,EAAE,OAAOC,EAAEA,EAAEk+B,cAAc,mBAAoBn+B,EAAEA,IAAIA,EAAEstB,EAAE32B,KAAK,CAAC0gE,UAAU,QAAQC,WAAWj+D,QAAQpF,MAAM+L,IAAU,CAACA,EAAE,eAAeywB,cAAc,WAAoF,OAAzEzE,IAAIA,IAAIsB,EAAE32B,KAAK,CAAC0gE,UAAU,aAAaC,WAAWj+D,QAAQpF,WAAM,IAAe,CAAC,cACjf,IAAKo8B,iBAAiB,SAASrwB,EAAEC,GAAiG,OAA9F+rB,IAAIA,IAAIA,IAAIA,IAAIhsB,EAAEC,EAAED,EAAE4vB,SAAStC,EAAE32B,KAAK,CAAC0gE,UAAU,gBAAgBC,WAAWj+D,QAAQpF,MAAM+L,IAAWA,GAAGmwB,iBAAiB,SAASnwB,GAA0E,OAAvEgsB,IAAIA,IAAIsB,EAAE32B,KAAK,CAAC0gE,UAAU,gBAAgBC,WAAWj+D,QAAQpF,MAAM+L,IAAWA,GAAGuwB,oBAAoB,WAAW,IAAIvwB,EAAEgsB,IAAyJ,OAArJX,GAAG,IAAIA,EAAEl3B,MAAM63B,KAAKhsB,EAAE,OAAOA,OAAE,EAAOA,EAAEm+B,gBAAgBn+B,EAAEgtB,WAAW9B,IAAIlrB,OAAE,GAAQstB,EAAE32B,KAAK,CAAC0gE,UAAU,mBAAmBC,WAAWj+D,QAAQpF,MAAM+L,IAAWA,IAAIosB,EAAE,EACrc,SAASE,EAAEtsB,EAAEC,EAAE5M,GAAG,IAAIC,EAAE2M,EAAE5M,GAAG6C,OAAO6B,EAAE,EAAEiI,EAAE,KAAKjI,EAAEiI,EAAEvJ,OAAOsB,IAAI,GAAGiI,EAAEjI,GAAG7B,SAAS5C,EAAE,CAAC,IAAI,IAAImB,EAAEpB,EAAE,EAAEs3B,EAAE5yB,EAAE,EAAEtD,EAAEwL,EAAExJ,QAAQk0B,EAAE3qB,EAAEvJ,OAAOhC,IAAIk2B,IAAI,GAAG3qB,EAAE2qB,GAAGz0B,SAAS+J,EAAExL,GAAGyB,OAAO,SAAS8J,EAAE,OAAOjI,EAAE,OAAO,EAAE,SAASy0B,EAAExsB,EAAEC,GAAG,QAAID,IAAWC,EAAE,MAAMA,IAASD,EAAEvJ,OAAOwJ,EAAExJ,SAAUuJ,EAAEu3D,YAAYt3D,KAAKD,EAAEvJ,OAAOwJ,EAAExJ,QAAO,SAASg2B,EAAEzsB,GAAG,IAAIA,EAAE,MAAM,GAAG,IAAIC,EAAED,EAAEu3D,YAAY,KAAiD,OAA3C,IAAIt3D,IAAIA,EAAE,GAAG,QAAQD,EAAEiqB,OAAOhqB,EAAE,KAAKA,GAAG,GAAUD,EAAEiqB,OAAOhqB,GAC3Z,SAAS4sB,EAAE7sB,EAAEC,GAAG,IAAI,IAAI5M,EAAE,GAAGC,EAAE,KAAKyE,EAAE1E,EAAEoB,EAAE,EAAEk2B,EAAE,GAAGG,EAAE,EAAEA,EAAE7qB,EAAExJ,OAAOq0B,IAAI,CAAC,IAAI52B,EAAE+L,EAAE6qB,GAAOxqB,EAAEN,EAAMW,EAAEI,EAAEwE,MAAMrR,EAAEojE,YAAYr3D,EAAE,CAAC,IAAI7M,EAAEuN,EAAE7M,EAAEw4B,EAAEl5B,EAAEkN,EAAE8rB,GAAG,IAAI,IAAIt4B,EAAEwM,EAAExM,MAAM,CAAC,IAAI,IAAIb,EAAE,EAAEA,EAAEqN,EAAE7J,QAAQ,EAAExD,EAAEA,IAAI,IAAe,KAAZa,EAAEw4B,EAAEl5B,EAAEkN,EAAErN,IAAU,CAACm5B,EAAEn5B,EAAEqN,EAAExM,EAAE,MAAMmM,EAAEK,GAAG,GAAGL,EAAE,CAA4B,GAA3B7M,EAAEuN,OAA4B,KAA1B7M,EAAE43B,IAAI73B,IAAIK,EAAEmjE,YAAyB,IAAIpkE,EAAE,EAAEA,EAAEa,EAAE2C,QAAQxD,EAAEG,EAAEqD,OAAOxD,IAAI,GAAGa,EAAEb,GAAGiD,SAAS9C,EAAEH,GAAGiD,OAAO,CAACjD,EAAEG,EAAEqD,OAAO,GAAG+1B,EAAEp5B,EAAEH,GAAGukE,aAAatjE,EAAEmjE,YAAYpkE,IAAIA,EAAEG,EAAEqD,OAAO,GAAG+1B,EAAEp5B,EAAEH,GAAGukE,aAAatjE,EAAEmjE,YAAYpkE,IAAIG,EAAEH,EAAE,MAAMgN,EAAE7M,GAAG,EACxc,GAAG,QADucuN,GAAG,IAAIL,IAAI,IAAIlN,GAAG,EAAEkN,EAAElN,EAAE,KAAKuN,EAAEO,MAAM9N,EACpfkN,EAAE,IAAe,CAAK,GAAJA,EAAE,EAAK,OAAOhN,EAAE,CAAC,KAAKgN,EAAEK,EAAElK,QAAQ6J,EAAEhN,EAAEmD,QAAQkK,EAAEA,EAAElK,OAAO6J,EAAE,GAAGpK,SAAS5C,EAAEA,EAAEmD,OAAO6J,EAAE,GAAGpK,QAAQoK,IAAI,IAAIhN,EAAEA,EAAEmD,OAAO,EAAEnD,EAAEgN,EAAEhN,IAAIyE,EAAE4yB,EAAEjhB,MAAM,IAAIpW,EAAEqN,EAAElK,OAAO6J,EAAE,EAAE,GAAGhN,EAAEA,IAAIgN,EAAE,GAAGvI,EAAEpB,KAAK,CAACD,GAAG,KAAK+gE,iBAAgB,EAAGlkE,KAAKk5B,EAAE9rB,EAAErN,EAAE,GAAGkkE,cAAcvjE,WAAM,EAAOyjE,SAASp3D,IAAIqqB,EAAEh0B,KAAKoB,GAAGA,EAAEuI,EAAEhN,EAAEqN,EAAgBL,EAAE,aAAhBK,EAAEzM,EAAEmjE,YAA2B,eAAe12D,EAAE,KAAKlM,IAAIsD,EAAEpB,KAAK,CAACD,GAAG4J,EAAEm3D,gBAAgB,YAAY92D,GAAG,UAAUA,EAAEpN,KAAKoN,EAAE1M,MAAMC,EAAED,MAAMyjE,SAAS,KAAe,OAClc,SAASrqC,EAAErtB,EAAEC,GAAG,IAAI,IAAI5M,EAAE,GAAGC,EAAE,EAAEA,EAAE0M,EAAEvJ,OAAOnD,IAAI,CAAC,IAAIyE,EAAEiI,EAAE1M,GAAG,eAAeyE,EAAExE,MAAM,IAAIwE,EAAE2/D,SAASjhE,QAAQuJ,EAAE9F,OAAO5G,EAAE,GAAGA,IAAID,EAAEsD,KAAKoB,IAAIs1B,EAAEt1B,EAAE2/D,SAAS3/D,GAAG,OAAOkI,IAAI,IAAI5M,EAAEoD,OAAOwJ,EAAEhM,MAAMZ,EAAE,GAAGY,MAAM,EAAEZ,EAAEoD,SAASwJ,EAAEhM,MAAMZ,EAAEgC,KAAI,SAAS2K,GAAG,OAAOA,EAAE/L,WADsMo5B,CAAEh6B,EAAE,MAAaA,EAC7M,SAAS65B,EAAEltB,EAAEC,EAAE5M,GAAG,MAAMA,IAAIA,EAAEmT,EAAEunB,wBAAwB,IAAIz6B,EAAED,EAAEk5B,QAAQl5B,EAAEk5B,QAAQZ,EAAE,IAAI,IAAI5zB,EAAEsB,QAAQ2G,EAAEC,GAApB,QAA+BD,EAAEstB,EAAEA,EAAE,GAAGj6B,EAAEk5B,QAAQj5B,EAAe,OAAOu5B,EAApBx5B,EAAE0N,EAAEwE,MAAMxN,GAAciI,GAC5ZlN,EAAQ6kE,aAAazqC,EACrBp6B,EAAQ8kE,oBAAoB,SAAS53D,EAAEC,GAA6C,GAA1C,MAAMA,IAAIA,EAAEuG,EAAEunB,wBAAwB1C,EAAErrB,EAAK,IAAIA,EAAE40B,KAAK,KAAK50B,EAAE40B,KAAK,KAAK50B,EAAE40B,IAAI,MAAMv7B,MAAM,qEAAqEqyB,IAAI,IAAIr4B,EAAE2M,EAAEzF,KAAKjH,EAAE0M,EAAE68C,cAAc,GAAGxpD,IAAI2M,EAAE07C,aAAaroD,GAAGA,EAAE05B,aAAa,CAACz5B,EAAEoN,EAAE,GAAGpN,GAAG,IAAIyE,EAAE1E,EAAE05B,aAAa,IAAIt4B,KAAKsD,OAAE,IAASzE,EAAEmB,KAAKnB,EAAEmB,GAAGsD,EAAEtD,IAAIs3B,EAAE/rB,EAAEm+B,cAAc,IAAI1pC,EAAE,IAAI2wB,IAAI,IAAI,IAAIrtB,EAAEiI,EAAEjI,GAAG,CAAC,GAAG,KAAKA,EAAE68B,IAAI,CAAC,IAAIjK,EAAE5yB,EAAEwC,KAAK00B,SAASx6B,EAAE+wB,IAAImF,KAAKl2B,EAAE2U,IAAIuhB,EAAEA,EAAEiE,eAAejE,EAAEiE,cAAc72B,EAAE8kD,cAAc5oD,OAAO8D,EAC3fA,EAAEimC,OAAO,GAAG,KAAKh+B,EAAE40B,IAAI,CAAC,IAAI9J,EAAEz3B,EAAEg8B,OAAOh8B,EAAEC,EAAE,IAAIY,EAAE8L,EAAE0sB,IAAYpsB,GAARN,EAAEC,GAAUssB,QAAQvsB,EAAEusB,QAAQZ,EAAE,IAAI,IAAIhrB,EAAEtH,QAAQyxB,EAAEz3B,EAAEa,GAAtB,QAAiC,IAAId,EAAEk6B,EAAEA,EAAE,GAAGttB,EAAEusB,QAAQjsB,EAAmB,OAAOusB,EAAlB9rB,EAAEwE,MAAM5E,GAAcvN,GAAG,OAAO85B,EAAE75B,EAAEC,EAAE2M,GAD8L,QACnL8rB,EAAE,KAHqN,SAAW/rB,GAAGA,EAAEnF,SAAQ,SAASmF,EAAE3M,GAAG,OAAOA,EAAEu7B,cAAc5uB,KAG7QqM,CAAE5X,M,gBCtBhN,oBAASkyB,EAAMkxC,GACZ,aAKIC,EAA6B,CAAC,aAAxB,4BAMN,SAA0BC,GAG9B,IAAIC,EAA8B,eAC9BC,EAAyB,iCACzBC,EAA4B,8BAEhC,MAAO,CAOH3yD,MAAO,SAAiC7H,GACpC,QAAgC,IAArBA,EAAMy6D,iBAAkE,IAA7Bz6D,EAAM,mBACxD,OAAOtI,KAAKgjE,WAAW16D,GACpB,GAAIA,EAAM22B,OAAS32B,EAAM22B,MAAMxuB,MAAMoyD,GACxC,OAAO7iE,KAAKijE,YAAY36D,GACrB,GAAIA,EAAM22B,MACb,OAAOj/B,KAAKkjE,gBAAgB56D,GAE5B,MAAM,IAAIrE,MAAM,oCAKxBk/D,gBAAiB,SAA2CC,GAExD,IAA8B,IAA1BA,EAAQv+D,QAAQ,KAChB,MAAO,CAACu+D,GAGZ,IACI9/D,EADS,+BACMsW,KAAKwpD,EAAQ9xD,QAAQ,QAAS,KACjD,MAAO,CAAChO,EAAM,GAAIA,EAAM,SAAM2B,EAAW3B,EAAM,SAAM2B,IAGzDg+D,YAAa,SAAuC36D,GAKhD,OAJeA,EAAM22B,MAAMluB,MAAM,MAAM1J,QAAO,SAASg8D,GACnD,QAASA,EAAK5yD,MAAMoyD,KACrB7iE,MAEaC,KAAI,SAASojE,GACrBA,EAAKx+D,QAAQ,WAAa,IAE1Bw+D,EAAOA,EAAK/xD,QAAQ,aAAc,QAAQA,QAAQ,+BAAgC,KAEtF,IAAIgyD,EAAgBD,EAAK/xD,QAAQ,OAAQ,IAAIA,QAAQ,eAAgB,KAIjE4T,EAAWo+C,EAAc7yD,MAAM,4BAK/BhD,GAFJ61D,EAAgBp+C,EAAWo+C,EAAchyD,QAAQ4T,EAAS,GAAI,IAAMo+C,GAEzCvyD,MAAM,OAAOjF,MAAM,GAE1Cy3D,EAAgBvjE,KAAKmjE,gBAAgBj+C,EAAWA,EAAS,GAAKzX,EAAO6G,OACrE8tD,EAAe30D,EAAOxM,KAAK,WAAQgE,EACnCu+D,EAAW,CAAC,OAAQ,eAAe3+D,QAAQ0+D,EAAc,KAAO,OAAIt+D,EAAYs+D,EAAc,GAElG,OAAO,IAAIZ,EAAW,CAClBP,aAAcA,EACdoB,SAAUA,EACVC,WAAYF,EAAc,GAC1BG,aAAcH,EAAc,GAC5BziE,OAAQuiE,MAEbrjE,OAGPkjE,gBAAiB,SAA2C56D,GAKxD,OAJeA,EAAM22B,MAAMluB,MAAM,MAAM1J,QAAO,SAASg8D,GACnD,OAAQA,EAAK5yD,MAAMqyD,KACpB9iE,MAEaC,KAAI,SAASojE,GAMzB,GAJIA,EAAKx+D,QAAQ,YAAc,IAC3Bw+D,EAAOA,EAAK/xD,QAAQ,mDAAoD,SAGjD,IAAvB+xD,EAAKx+D,QAAQ,OAAsC,IAAvBw+D,EAAKx+D,QAAQ,KAEzC,OAAO,IAAI89D,EAAW,CAClBP,aAAciB,IAGlB,IAAIM,EAAoB,6BACpBC,EAAUP,EAAK5yD,MAAMkzD,GACrBvB,EAAewB,GAAWA,EAAQ,GAAKA,EAAQ,QAAK3+D,EACpDs+D,EAAgBvjE,KAAKmjE,gBAAgBE,EAAK/xD,QAAQqyD,EAAmB,KAEzE,OAAO,IAAIhB,EAAW,CAClBP,aAAcA,EACdoB,SAAUD,EAAc,GACxBE,WAAYF,EAAc,GAC1BG,aAAcH,EAAc,GAC5BziE,OAAQuiE,MAGjBrjE,OAGPgjE,WAAY,SAAsCrgE,GAC9C,OAAKA,EAAEogE,YAAepgE,EAAEilB,QAAQ/iB,QAAQ,OAAS,GAC7ClC,EAAEilB,QAAQ7W,MAAM,MAAM1P,OAASsB,EAAEogE,WAAWhyD,MAAM,MAAM1P,OACjDrB,KAAK6jE,YAAYlhE,GAChBA,EAAEs8B,MAGHj/B,KAAK8jE,aAAanhE,GAFlB3C,KAAK+jE,aAAaphE,IAMjCkhE,YAAa,SAAuClhE,GAKhD,IAJA,IAAIqhE,EAAS,oCACTC,EAAQthE,EAAEilB,QAAQ7W,MAAM,MACxBjL,EAAS,GAEJlI,EAAI,EAAGuyB,EAAM8zC,EAAM5iE,OAAQzD,EAAIuyB,EAAKvyB,GAAK,EAAG,CACjD,IAAI6S,EAAQuzD,EAAOpqD,KAAKqqD,EAAMrmE,IAC1B6S,GACA3K,EAAOvE,KAAK,IAAIohE,EAAW,CACvBa,SAAU/yD,EAAM,GAChBgzD,WAAYhzD,EAAM,GAClB3P,OAAQmjE,EAAMrmE,MAK1B,OAAOkI,GAGXi+D,aAAc,SAAwCphE,GAKlD,IAJA,IAAIqhE,EAAS,6DACTC,EAAQthE,EAAEogE,WAAWhyD,MAAM,MAC3BjL,EAAS,GAEJlI,EAAI,EAAGuyB,EAAM8zC,EAAM5iE,OAAQzD,EAAIuyB,EAAKvyB,GAAK,EAAG,CACjD,IAAI6S,EAAQuzD,EAAOpqD,KAAKqqD,EAAMrmE,IAC1B6S,GACA3K,EAAOvE,KACH,IAAIohE,EAAW,CACXP,aAAc3xD,EAAM,SAAMxL,EAC1Bu+D,SAAU/yD,EAAM,GAChBgzD,WAAYhzD,EAAM,GAClB3P,OAAQmjE,EAAMrmE,MAM9B,OAAOkI,GAIXg+D,aAAc,SAAwCx7D,GAKlD,OAJeA,EAAM22B,MAAMluB,MAAM,MAAM1J,QAAO,SAASg8D,GACnD,QAASA,EAAK5yD,MAAMmyD,KAAiCS,EAAK5yD,MAAM,uBACjEzQ,MAEaC,KAAI,SAASojE,GACzB,IAMIa,EANAz2D,EAAS41D,EAAKtyD,MAAM,KACpBwyD,EAAgBvjE,KAAKmjE,gBAAgB11D,EAAO6G,OAC5C6vD,EAAgB12D,EAAOuc,SAAW,GAClCo4C,EAAe+B,EACd7yD,QAAQ,iCAAkC,MAC1CA,QAAQ,aAAc,UAAOrM,EAE9Bk/D,EAAa1zD,MAAM,iBACnByzD,EAAUC,EAAa7yD,QAAQ,qBAAsB,OAEzD,IAAIrE,OAAoBhI,IAAZi/D,GAAqC,8BAAZA,OACjCj/D,EAAYi/D,EAAQnzD,MAAM,KAE9B,OAAO,IAAI4xD,EAAW,CAClBP,aAAcA,EACdn1D,KAAMA,EACNu2D,SAAUD,EAAc,GACxBE,WAAYF,EAAc,GAC1BG,aAAcH,EAAc,GAC5BziE,OAAQuiE,MAEbrjE,UAhMD,+BANb,I,gBCAA,oBAASuxB,EAAMkxC,GACZ,aAKIC,EAAqB,QAAf,4BAMN,WAMJ,SAAS0B,EAAYvzC,GACjB,OAAOA,EAAI0D,OAAO,GAAG6I,cAAgBvM,EAAI+U,UAAU,GAGvD,SAASy+B,EAAQ3kE,GACb,OAAO,WACH,OAAOM,KAAKN,IAIpB,IAAI4kE,EAAe,CAAC,gBAAiB,SAAU,WAAY,cACvDC,EAAe,CAAC,eAAgB,cAChCC,EAAc,CAAC,WAAY,eAAgB,UAG3ChuC,EAAQ8tC,EAAatjE,OAAOujE,EAAcC,EAF7B,CAAC,SAIlB,SAAS7B,EAAWh9D,GAChB,GAAKA,EACL,IAAK,IAAI/H,EAAI,EAAGA,EAAI44B,EAAMn1B,OAAQzD,SACRqH,IAAlBU,EAAI6wB,EAAM54B,KACVoC,KAAK,MAAQokE,EAAY5tC,EAAM54B,KAAK+H,EAAI6wB,EAAM54B,KAK1D+kE,EAAWnjE,UAAY,CACnBilE,QAAS,WACL,OAAOzkE,KAAKiN,MAEhBy3D,QAAS,SAAStzD,GACd,GAA0C,mBAAtC9S,OAAOkB,UAAUO,SAAShC,KAAKqT,GAC/B,MAAM,IAAItG,UAAU,yBAExB9K,KAAKiN,KAAOmE,GAGhBuzD,cAAe,WACX,OAAO3kE,KAAK4kE,YAEhBC,cAAe,SAASzzD,GACpB,GAAIA,aAAauxD,EACb3iE,KAAK4kE,WAAaxzD,MACf,MAAIA,aAAa9S,QAGpB,MAAM,IAAIwM,UAAU,+CAFpB9K,KAAK4kE,WAAa,IAAIjC,EAAWvxD,KAMzCrR,SAAU,WACN,IAAIyjE,EAAWxjE,KAAK8kE,eAAiB,GACjCrB,EAAazjE,KAAK+kE,iBAAmB,GACrCrB,EAAe1jE,KAAKglE,mBAAqB,GACzC5C,EAAepiE,KAAKilE,mBAAqB,GAC7C,OAAIjlE,KAAKklE,YACD1B,EACO,WAAaA,EAAW,IAAMC,EAAa,IAAMC,EAAe,IAEpE,UAAYD,EAAa,IAAMC,EAEtCtB,EACOA,EAAe,KAAOoB,EAAW,IAAMC,EAAa,IAAMC,EAAe,IAE7EF,EAAW,IAAMC,EAAa,IAAMC,IAInDf,EAAWwC,WAAa,SAAgCt0C,GACpD,IAAIu0C,EAAiBv0C,EAAIhsB,QAAQ,KAC7BwgE,EAAex0C,EAAIsxC,YAAY,KAE/BC,EAAevxC,EAAI+U,UAAU,EAAGw/B,GAChCn4D,EAAO4jB,EAAI+U,UAAUw/B,EAAiB,EAAGC,GAAct0D,MAAM,KAC7Du0D,EAAiBz0C,EAAI+U,UAAUy/B,EAAe,GAElD,GAAoC,IAAhCC,EAAezgE,QAAQ,KACvB,IAAIvB,EAAQ,gCAAgCsW,KAAK0rD,EAAgB,IAC7D9B,EAAWlgE,EAAM,GACjBmgE,EAAangE,EAAM,GACnBogE,EAAepgE,EAAM,GAG7B,OAAO,IAAIq/D,EAAW,CAClBP,aAAcA,EACdn1D,KAAMA,QAAQhI,EACdu+D,SAAUA,EACVC,WAAYA,QAAcx+D,EAC1By+D,aAAcA,QAAgBz+D,KAItC,IAAK,IAAIrH,EAAI,EAAGA,EAAI0mE,EAAajjE,OAAQzD,IACrC+kE,EAAWnjE,UAAU,MAAQ4kE,EAAYE,EAAa1mE,KAAOymE,EAAQC,EAAa1mE,IAClF+kE,EAAWnjE,UAAU,MAAQ4kE,EAAYE,EAAa1mE,KAAQ,SAAS8B,GACnE,OAAO,SAAS0R,GACZpR,KAAKN,GAAK4H,QAAQ8J,IAFoC,CAI3DkzD,EAAa1mE,IAGpB,IAAK,IAAIyF,EAAI,EAAGA,EAAIkhE,EAAaljE,OAAQgC,IACrCs/D,EAAWnjE,UAAU,MAAQ4kE,EAAYG,EAAalhE,KAAOghE,EAAQE,EAAalhE,IAClFs/D,EAAWnjE,UAAU,MAAQ4kE,EAAYG,EAAalhE,KAAQ,SAAS3D,GACnE,OAAO,SAAS0R,GACZ,GA7GO/R,EA6GQ+R,EA5GfY,MAAMuzD,WAAWlmE,MAAOmmE,SAASnmE,GA6G7B,MAAM,IAAIyL,UAAUpL,EAAI,qBA9GxC,IAAmBL,EAgHPW,KAAKN,GAAK4N,OAAO8D,IALqC,CAO3DmzD,EAAalhE,IAGpB,IAAK,IAAIsI,EAAI,EAAGA,EAAI64D,EAAYnjE,OAAQsK,IACpCg3D,EAAWnjE,UAAU,MAAQ4kE,EAAYI,EAAY74D,KAAO04D,EAAQG,EAAY74D,IAChFg3D,EAAWnjE,UAAU,MAAQ4kE,EAAYI,EAAY74D,KAAQ,SAASjM,GAClE,OAAO,SAAS0R,GACZpR,KAAKN,GAAK+Z,OAAOrI,IAFoC,CAI1DozD,EAAY74D,IAGnB,OAAOg3D,IAtIG,+BANb,I,gBCCD,IAAIxiE,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAgD9E,EAAS+C,GAEnE/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,iBCjBlCrK,EAAOD,QAAU,EAAQ,EAAR,EAA4C,IAK/D6D,KAAK,CAAC5D,EAAOC,EAAI,uyCAAwyC,M,cCSj0CD,EAAOD,QAAU,SAAUkG,GAEzB,IAAIshB,EAA6B,oBAAXtjB,QAA0BA,OAAOsjB,SAEvD,IAAKA,EACH,MAAM,IAAIjhB,MAAM,oCAInB,IAAKL,GAAsB,iBAARA,EACjB,OAAOA,EAGR,IAAI6hE,EAAUvgD,EAASxD,SAAW,KAAOwD,EAAS/B,KAC9CuiD,EAAaD,EAAUvgD,EAASxB,SAASpS,QAAQ,YAAa,KA2DnE,OA/Be1N,EAAI0N,QAAQ,uDAAuD,SAASq0D,EAAWC,GAErG,IAWIC,EAXAC,EAAkBF,EACpBp1D,OACAc,QAAQ,YAAY,SAASjT,EAAG0nE,GAAK,OAAOA,KAC5Cz0D,QAAQ,YAAY,SAASjT,EAAG0nE,GAAK,OAAOA,KAG9C,MAAI,oDAAoD/4D,KAAK84D,GACpDH,GAQRE,EAFqC,IAAlCC,EAAgBjhE,QAAQ,MAElBihE,EACkC,IAAjCA,EAAgBjhE,QAAQ,KAEzB4gE,EAAUK,EAGVJ,EAAaI,EAAgBx0D,QAAQ,QAAS,IAIjD,OAAS5Q,KAAKC,UAAUklE,GAAU,U,gBClF3C,IAAI1lE,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAsE9E,EAAS+C,GAEzF/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,iBCjBlCrK,EAAOD,QAAU,EAAQ,EAAR,EAAkE,IAKrF6D,KAAK,CAAC5D,EAAOC,EAAI,4TAA6T,M,iBCLtVF,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,+fAAggB,KAGzhBF,EAAQsK,OAAS,CAChB,MAAS,gBACT,WAAc,uB,iBCVftK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAkE,IAKrF6D,KAAK,CAAC5D,EAAOC,EAAI,qFAAsF,KAG/GF,EAAQsK,OAAS,CAChB,WAAc,uB,iBCTftK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,20DAA40D,KAGr2DF,EAAQsK,OAAS,CAChB,QAAW,kBACX,wBAA2B,kCAC3B,gBAAmB,0BACnB,eAAkB,yBAClB,QAAW,kBACX,aAAgB,uBAChB,QAAW,kBACX,SAAY,mBACZ,UAAa,oBACb,iBAAoB,2BACpB,qBAAwB,+BACxB,MAAS,kB,6BCXV,IAAIg+D,EAAuBpmE,EAAQ,KAEnC,SAASqmE,KACT,SAASC,KACTA,EAAuBC,kBAAoBF,EAE3CtoE,EAAOD,QAAU,WACf,SAAS0oE,EAAK5vC,EAAO6vC,EAAUC,EAAephD,EAAUqhD,EAAcC,GACpE,GAAIA,IAAWR,EAAf,CAIA,IAAI59D,EAAM,IAAInE,MACZ,mLAKF,MADAmE,EAAIjK,KAAO,sBACLiK,GAGR,SAASq+D,IACP,OAAOL,EAFTA,EAAKM,WAAaN,EAMlB,IAAIO,EAAiB,CACnBC,MAAOR,EACPS,KAAMT,EACNv0C,KAAMu0C,EACNlrB,OAAQkrB,EACR9mE,OAAQ8mE,EACRU,OAAQV,EACRW,OAAQX,EAERY,IAAKZ,EACLa,QAASR,EACT5W,QAASuW,EACT9f,YAAa8f,EACbc,WAAYT,EACZr4C,KAAMg4C,EACNe,SAAUV,EACVW,MAAOX,EACPY,UAAWZ,EACXa,MAAOb,EACPc,MAAOd,EAEPe,eAAgBtB,EAChBC,kBAAmBF,GAKrB,OAFAU,EAAec,UAAYd,EAEpBA,I,6BCnDThpE,EAAOD,QAFoB,gD,iBCT3BA,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAkE,IAKrF6D,KAAK,CAAC5D,EAAOC,EAAI,4kCAA6kC,KAGtmCF,EAAQsK,OAAS,CAChB,eAAkB,yBAClB,SAAY,mBACZ,UAAa,oBACb,cAAiB,wBACjB,MAAS,kB,iBCbVtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAkE,IAKrF6D,KAAK,CAAC5D,EAAOC,EAAI,6VAA8V,KAGvXF,EAAQsK,OAAS,CAChB,QAAW,oB,iBCTZtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAkE,IAKrF6D,KAAK,CAAC5D,EAAOC,EAAI,izBAAkzB,KAG30BF,EAAQsK,OAAS,CAChB,OAAU,iBACV,cAAiB,0B,iBCVlBtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,83EAA+3E,KAGx5EF,EAAQsK,OAAS,CAChB,WAAc,qBACd,UAAa,oBACb,IAAO,cACP,MAAS,gBACT,WAAc,qBACd,kBAAqB,4BACrB,MAAS,gBACT,WAAc,qBACd,MAAS,kB,iBCjBVtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAkE,IAKrF6D,KAAK,CAAC5D,EAAOC,EAAI,+EAAgF,KAGzGF,EAAQsK,OAAS,CAChB,KAAQ,iB,iBCTTtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,kyBAAmyB,KAG5zBF,EAAQsK,OAAS,CAChB,YAAe,sBACf,MAAS,gBACT,UAAa,oBACb,WAAc,qBACd,UAAa,oBACb,WAAc,uB,iBCdftK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,gUAAiU,KAG1VF,EAAQsK,OAAS,CAChB,OAAU,iBACV,SAAY,qB,iBCVbtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,8pCAA+pC,KAGxrCF,EAAQsK,OAAS,CAChB,KAAQ,eACR,KAAQ,eACR,iBAAoB,2BACpB,YAAe,sBACf,iBAAoB,2BACpB,MAAS,gBACT,QAAW,oB,iBCfZtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAkE,IAKrF6D,KAAK,CAAC5D,EAAOC,EAAI,mnCAAonC,KAG7oCF,EAAQsK,OAAS,CAChB,cAAiB,wBACjB,OAAU,iBACV,MAAS,gBACT,eAAkB,yBAClB,UAAa,oBACb,YAAe,sBACf,WAAc,qBACd,WAAc,uB,iBChBftK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAkE,IAKrF6D,KAAK,CAAC5D,EAAOC,EAAI,g1BAAi1B,KAG12BF,EAAQsK,OAAS,CAChB,WAAc,qBACd,OAAU,iBACV,MAAS,gBACT,QAAW,kBACX,OAAU,mB,iBCbXtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAkE,IAKrF6D,KAAK,CAAC5D,EAAOC,EAAI,+KAAgL,KAGzMF,EAAQsK,OAAS,CAChB,YAAe,wB,iBCThBtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAkE,IAKrF6D,KAAK,CAAC5D,EAAOC,EAAI,gpBAAipB,KAG1qBF,EAAQsK,OAAS,CAChB,gBAAmB,4B,iBCTpBtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,saAAua,KAGhcF,EAAQsK,OAAS,CAChB,UAAa,oBACb,MAAS,kB,iBCVVtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAwE,IAK3F6D,KAAK,CAAC5D,EAAOC,EAAI,kUAAmU,KAG5VF,EAAQsK,OAAS,CAChB,MAAS,kB,iBCTVtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,sNAAuN,KAGhPF,EAAQsK,OAAS,CAChB,MAAS,kB,iBCTVtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,i8BAAk8B,KAG39BF,EAAQsK,OAAS,CAChB,SAAY,mBACZ,MAAS,gBACT,QAAW,kBACX,YAAe,wB,iBCZhBtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,oYAAqY,KAG9ZF,EAAQsK,OAAS,CAChB,cAAiB,wBACjB,aAAgB,uBAChB,QAAW,kBACX,MAAS,kB,iBCZVtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,uMAAwM,KAGjOF,EAAQsK,OAAS,CAChB,YAAe,sBACf,aAAgB,uBAChB,cAAiB,0B,iBCXlBtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,yJAA0J,KAGnLF,EAAQsK,OAAS,CAChB,qBAAwB,iC,iBCTzBtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,4xBAA6xB,KAGtzBF,EAAQsK,OAAS,CAChB,KAAQ,eACR,KAAQ,eACR,aAAgB,uBAChB,UAAa,oBACb,MAAS,gBACT,KAAQ,eACR,2BAA8B,qCAC9B,MAAS,gBACT,sBAAyB,kC,iBCjB1BtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,i/BAAk/B,KAG3gCF,EAAQsK,OAAS,CAChB,qBAAwB,+BACxB,UAAa,oBACb,OAAU,iBACV,KAAQ,eACR,KAAQ,eACR,MAAS,gBACT,KAAQ,eACR,MAAS,gBACT,kBAAqB,4BACrB,cAAiB,0B,iBClBlBtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,upCAAwpC,KAGjrCF,EAAQsK,OAAS,CAChB,cAAiB,wBACjB,KAAQ,eACR,SAAY,mBACZ,UAAa,oBACb,OAAU,iBACV,aAAgB,uBAChB,KAAQ,eACR,cAAiB,wBACjB,aAAgB,uBAChB,MAAS,gBACT,KAAQ,eACR,oBAAuB,8BACvB,2BAA8B,uC,iBCrB/BtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAwE,IAK3F6D,KAAK,CAAC5D,EAAOC,EAAI,u7BAAw7B,KAGj9BF,EAAQsK,OAAS,CAChB,aAAgB,uBAChB,OAAU,iBACV,UAAa,oBACb,SAAY,mBACZ,SAAY,mBACZ,MAAS,gBACT,OAAU,mB,iBCfXtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAwE,IAK3F6D,KAAK,CAAC5D,EAAOC,EAAI,+mCAAgnC,KAGzoCF,EAAQsK,OAAS,CAChB,YAAe,sBACf,UAAa,oBACb,OAAU,iBACV,SAAY,mBACZ,IAAO,cACP,QAAW,kBACX,UAAa,oBACb,MAAS,gBACT,MAAS,gBACT,MAAS,kB,iBClBVtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,24DAA44D,KAGr6DF,EAAQsK,OAAS,CAChB,OAAU,iBACV,aAAgB,uBAChB,OAAU,iBACV,gBAAmB,0BACnB,aAAgB,uBAChB,eAAkB,yBAClB,MAAS,gBACT,iBAAoB,2BACpB,WAAc,qBACd,YAAe,sBACf,aAAgB,uBAChB,gBAAmB,0BACnB,gBAAmB,4B,iBCrBpBtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,skDAAukD,KAGhmDF,EAAQsK,OAAS,CAChB,iBAAoB,2BACpB,SAAY,mBACZ,IAAO,cACP,SAAY,mBACZ,sBAAyB,gCACzB,UAAa,oBACb,QAAW,oB,iBCfZtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAkE,IAKrF6D,KAAK,CAAC5D,EAAOC,EAAI,kjEAAmjE,KAG5kEF,EAAQsK,OAAS,CAChB,IAAO,cACP,WAAc,qBACd,YAAe,sBACf,kBAAqB,4BACrB,gBAAmB,0BACnB,gBAAmB,0BACnB,MAAS,gBACT,mBAAsB,6BACtB,iBAAoB,2BACpB,iBAAoB,2BACpB,aAAgB,uBAChB,mBAAsB,6BACtB,iBAAoB,2BACpB,iBAAoB,6B,iBCtBrBtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,orFAAqrF,KAG9sFF,EAAQsK,OAAS,CAChB,SAAY,mBACZ,QAAW,kBACX,YAAe,sBACf,WAAc,qBACd,OAAU,iBACV,eAAkB,yBAClB,MAAS,gBACT,OAAU,iBACV,WAAc,qBACd,cAAiB,wBACjB,MAAS,gBACT,SAAY,mBACZ,UAAa,oBACb,MAAS,gBACT,cAAiB,wBACjB,iBAAoB,2BACpB,gBAAmB,0BACnB,UAAa,oBACb,SAAY,mBACZ,gBAAmB,0BACnB,eAAkB,yBAClB,aAAgB,uBAChB,iBAAoB,6B,iBC/BrBtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,m4BAAo4B,KAG75BF,EAAQsK,OAAS,CAChB,WAAc,qBACd,MAAS,gBACT,OAAU,iBACV,KAAQ,eACR,QAAW,oB,iBCbZtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,m0CAAo0C,KAG71CF,EAAQsK,OAAS,CAChB,WAAc,qBACd,YAAe,sBACf,wBAA2B,kCAC3B,iBAAoB,2BACpB,UAAa,oBACb,QAAW,oB,iBCdZtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,uUAAwU,KAGjWF,EAAQsK,OAAS,CAChB,aAAgB,uBAChB,OAAU,iBACV,cAAiB,0B,iBCXlBtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,orBAAqrB,KAG9sBF,EAAQsK,OAAS,CAChB,MAAS,gBACT,KAAQ,eACR,cAAiB,wBACjB,IAAO,gB,iBCZRtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,4bAA6b,KAGtdF,EAAQsK,OAAS,CAChB,UAAa,oBACb,KAAQ,eACR,IAAO,cACP,MAAS,kB,iBCZVtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,qqBAAsqB,KAG/rBF,EAAQsK,OAAS,CAChB,QAAW,kBACX,QAAW,kBACX,UAAa,oBACb,MAAS,gBACT,cAAiB,0B,iBCblBtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,yiBAA0iB,KAGnkBF,EAAQsK,OAAS,CAChB,QAAW,kBACX,OAAU,iBACV,UAAa,sB,iBCXdtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,oLAAqL,KAG9MF,EAAQsK,OAAS,CAChB,UAAa,oBACb,YAAe,wB,iBCVhBtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,4EAA6E,KAGtGF,EAAQsK,OAAS,CAChB,UAAa,sB,iBCTdtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,6+BAA8+B,KAGvgCF,EAAQsK,OAAS,CAChB,YAAe,sBACf,oBAAuB,8BACvB,KAAQ,eACR,SAAY,mBACZ,gBAAmB,0BACnB,UAAa,sB,iBCddtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,2RAA4R,KAGrTF,EAAQsK,OAAS,CAChB,eAAkB,yBAClB,OAAU,iBACV,KAAQ,iB,iBCXTtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,iIAAkI,KAG3JF,EAAQsK,OAAS,CAChB,UAAa,oBACb,YAAe,wB,iBCVhBtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,qCAAsC,KAG/DF,EAAQsK,OAAS,CAChB,OAAU,mB,iBCTXtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,y7BAA07B,KAGn9BF,EAAQsK,OAAS,CAChB,mBAAsB,6BACtB,qBAAwB,+BACxB,qBAAwB,iC,iBCXzBtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,8jBAA+jB,KAGxlBF,EAAQsK,OAAS,CAChB,MAAS,gBACT,MAAS,gBACT,aAAgB,yB,iBCXjBtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,qXAAsX,KAG/YF,EAAQsK,OAAS,CAChB,MAAS,gBACT,MAAS,kB,iBCVVtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,iaAAka,KAG3bF,EAAQsK,OAAS,CAChB,KAAQ,iB,iBCTTtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,ujBAAwjB,KAGjlBF,EAAQsK,OAAS,CAChB,OAAU,iBACV,QAAW,kBACX,WAAc,qBACd,UAAa,sB,iBCZdtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,gpCAAipC,KAG1qCF,EAAQsK,OAAS,CAChB,QAAW,kBACX,QAAW,kBACX,KAAQ,eACR,SAAY,mBACZ,eAAkB,yBAClB,aAAgB,uBAChB,YAAe,sBACf,MAAS,gBACT,MAAS,gBACT,gBAAmB,4B,iBClBpBtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,27BAA47B,KAGr9BF,EAAQsK,OAAS,CAChB,QAAW,kBACX,QAAW,kBACX,KAAQ,eACR,gBAAmB,0BACnB,QAAW,kBACX,KAAQ,eACR,SAAY,mBACZ,UAAa,sB,iBChBdtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,qnCAAsnC,KAG/oCF,EAAQsK,OAAS,CAChB,QAAW,kBACX,QAAW,kBACX,YAAe,sBACf,UAAa,oBACb,MAAS,gBACT,cAAiB,wBACjB,OAAU,mB,iBCfXtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAqE,IAKxF6D,KAAK,CAAC5D,EAAOC,EAAI,+wEAAgxE,KAGzyEF,EAAQsK,OAAS,CAChB,SAAY,mBACZ,WAAc,qBACd,YAAe,sBACf,QAAW,kBACX,OAAU,iBACV,UAAa,oBACb,IAAO,cACP,OAAU,iBACV,QAAW,kBACX,MAAS,gBACT,OAAU,iBACV,oBAAuB,8BACvB,gBAAmB,0BACnB,yBAA4B,mCAC5B,KAAQ,iB,iBCvBTtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAkE,IAKrF6D,KAAK,CAAC5D,EAAOC,EAAI,yIAA0I,KAGnKF,EAAQsK,OAAS,CAChB,UAAa,sB,iBCTdtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAkE,IAKrF6D,KAAK,CAAC5D,EAAOC,EAAI,gXAAiX,KAG1YF,EAAQsK,OAAS,CAChB,IAAO,cACP,OAAU,iBACV,MAAS,gBACT,iBAAoB,6B,iBCZrBtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAkE,IAKrF6D,KAAK,CAAC5D,EAAOC,EAAI,gJAAiJ,KAG1KF,EAAQsK,OAAS,CAChB,QAAW,oB,iBCTZtK,EAAUC,EAAOD,QAAU,EAAQ,EAAR,EAAkE,IAKrF6D,KAAK,CAAC5D,EAAOC,EAAI,isCAAksC,KAG3tCF,EAAQsK,OAAS,CAChB,SAAY,mBACZ,OAAU,iBACV,OAAU,iBACV,WAAc,qBACd,gBAAmB,4B,gBCZpB,IAAI7H,EAAU,EAAQ,KAEA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAOhE,IAAI+C,EAAU,CAAC,KAAM,EAErB,eAPI6C,EAQJ,gBAAqBd,GAER,EAAQ,EAAR,CAAsE9E,EAAS+C,GAEzF/C,EAAQ6H,SAAQrK,EAAOD,QAAUyC,EAAQ6H,S,iBCjBlCrK,EAAOD,QAAU,EAAQ,EAAR,EAAkE,IAKrF6D,KAAK,CAAC5D,EAAOC,EAAI,43QAA63Q,M,+DCIv4Q,MAAM2iB,EAA6B,c,YAAA,K,EAAA,e,EACH,IAAIyP,I,6FAEjD03C,YACEjsB,EACA9yB,GAEA,MAAMF,EAAYzoB,KAAK2nE,aAAalpE,IAAIg9C,GACxC,QAAkBx2C,IAAdwjB,EACFzoB,KAAK2nE,aAAa3zD,IAAIynC,EAAO,CAAC9yB,QACzB,CACSF,EAAU5jB,QAAQ8jB,GACpB,GACVF,EAAUlnB,KAAKonB,IAKrB5D,KACE02B,KACGxuC,GAEH,MAAMwb,EAAYzoB,KAAK2nE,aAAalpE,IAAIg9C,GACxC,QAAkBx2C,IAAdwjB,EACF,GAAyB,IAArBA,EAAUpnB,OAAc,CAETonB,EAAU,GAClBzmB,MAAM,KAAMiL,OAChB,CACL,IAAI26D,GAAW,EACXC,EAAc,KAElB,MAAMC,EAAkBl8D,MAAMkJ,KAAK2T,GACnC,IAAK,IAAI7qB,EAAI,EAAGA,EAAIkqE,EAAgBzmE,OAAQzD,IAAK,CAC/C,MAAM+qB,EAAWm/C,EAAgBlqE,GACjC,IACE+qB,EAAS3mB,MAAM,KAAMiL,GACrB,MAAO3E,GACa,OAAhBu/D,IACFD,GAAW,EACXC,EAAcv/D,IAKpB,GAAIs/D,EACF,MAAMC,GAMdhhD,qBACE7mB,KAAK2nE,aAAaI,QAGpBltD,eAAe4gC,EAAsB9yB,GACnC,MAAMF,EAAYzoB,KAAK2nE,aAAalpE,IAAIg9C,GACxC,QAAkBx2C,IAAdwjB,EAAyB,CAC3B,MAAMthB,EAAQshB,EAAU5jB,QAAQ8jB,GAC5BxhB,GAAS,GACXshB,EAAU3jB,OAAOqC,EAAO,K,wHC0SjB6gE,MAjLf,cAGUznD,EAURxU,YAAYk8D,GACV1mD,QADsB,sBAND,GAMC,uBALI,IAKJ,oBAJO,MAIP,uBAFS,MAET,gBAwFf,KAUP,GALwB,OAApBvhB,KAAKkoE,aACP9/C,aAAapoB,KAAKkoE,YAClBloE,KAAKkoE,WAAa,MAGhBloE,KAAKmoE,cAAc9mE,OAAQ,CAC7B,IAAK,IAAIzD,EAAI,EAAGA,EAAIoC,KAAKmoE,cAAc9mE,OAAQzD,GAAK,EAClDoC,KAAKooE,MAAM9gD,KAAKtnB,KAAKmoE,cAAcvqE,MAAOoC,KAAKmoE,cAAcvqE,EAAI,IAEnEoC,KAAKmoE,cAAc9mE,OAAS,EAK5BrB,KAAKkoE,WAAax8D,WAAW1L,KAAKqoE,OAnSjB,QAwLG,6BAiHF,EACpB/mE,KACA8hB,OACAklD,aACAnjE,OACAtG,YAEA,OAAQsG,GACN,IAAK,UACHnF,KAAKsnB,KAAK,kBAAmB,CAC3BhmB,KACA8hB,OACAklD,aACAC,cAAc,EACd1pE,UAEF,MACF,IAAK,QACHmB,KAAKsnB,KAAK,oBAAqB,CAC7BhmB,KACA8hB,OACAklD,aACAC,cAAc,EACd1pE,UAEF,MACF,IAAK,QACHmB,KAAKsnB,KAAK,gBAAiB,CACzBhmB,KACA8hB,OACAklD,aACAC,cAAc,EACd1pE,UAEF,MACF,IAAK,QACHmB,KAAKsnB,KAAK,gBAAiB,CACzBhmB,KACA8hB,OACAklD,aACAC,cAAc,EACd1pE,aAvJNmB,KAAKooE,MAAQH,EAEbjoE,KAAKwoE,cACHP,EAAKhH,OAAQr5C,IACV5nB,KAAW+kB,KAAK6C,EAAQ6zB,MAAO7zB,EAAQo8B,YACpC,KAKRhkD,KAAK0nE,YAAY,sBAAuB1nE,KAAKyoE,qBAK/C,WACE,OAAOzoE,KAAKooE,MAGd9gD,KACEm0B,KACGuI,GAEChkD,KAAK0oE,YACPrgE,QAAQsgE,KACL,wBAAuBltB,gDAa5Bz7C,KAAKmoE,cAAc5mE,KAAKk6C,EAAOuI,GAC1BhkD,KAAKkoE,aACRloE,KAAKkoE,WAAax8D,WAAW1L,KAAKqoE,OAAQ,KAI9CO,WACE,GAAI5oE,KAAK0oE,YAEP,YADArgE,QAAQsgE,KAAK,gCAKf3oE,KAAKsnB,KAAK,YAGVtnB,KAAK0oE,aAAc,EAInB1oE,KAAK0nE,YAAc,aAEnB1nE,KAAK+kB,KAAO,aAIZ/kB,KAAK6mB,qBAGL,MAAMgiD,EAAe7oE,KAAKwoE,cACtBK,GACFA,IAKF,GACE7oE,KAAKqoE,eACEroE,KAAKmoE,cAAc9mE,QAGJ,OAApBrB,KAAKkoE,aACP9/C,aAAapoB,KAAKkoE,YAClBloE,KAAKkoE,WAAa,Q,QC5OxB,IAAIY,EACAC,EAEJ,IAEE,MAAMC,EAAiBppE,EAAQ,IAC5BoG,QAEGijE,EAAaC,IACjB,MAAMC,EAAS,IAAI/5D,OAAU85D,EAAF,cACrBz4D,EAAQu4D,EAAev4D,MAAM04D,GACnC,OAAOh4C,SAAS1gB,EAAM,GAAI,KAG5Bq4D,EAA0BG,EAAW,gCACrCF,EAAsBE,EAAW,4BACjC,MAAO3gE,GAGPwgE,EAA0B,GAC1BC,EAAsB,G,6BCzDjB,IAAIK,EAAqB,MACrBC,EAAoB,MACpBC,EAAsB,MACtBC,EAAyB,MACzBC,EAAsB,MACtBC,EAAsB,MACtBC,EAAqB,MACrBC,EAAyB,MACzBC,EAAsB,MACtBC,EAA2B,MAC3BC,EAAkB,MAClBC,EAAkB,MAClBC,EAAyB,MACzBC,EAAmB,MACnBC,EAAuB,MACvBC,EAAgC,MAChCC,EAAuB,MACvBC,EAA2B,MAEtC,GAAsB,mBAAX1rE,QAAyBA,OAAOk3B,IAAK,CAC9C,MAAMy0C,EAAY3rE,OAAOk3B,IACzBuzC,EAAqBkB,EAAU,iBAC/BjB,EAAoBiB,EAAU,gBAC9BhB,EAAsBgB,EAAU,kBAChCf,EAAyBe,EAAU,qBACnCd,EAAsBc,EAAU,kBAChCb,EAAsBa,EAAU,kBAChCZ,EAAqBY,EAAU,iBAC/BX,EAAyBW,EAAU,qBACnCV,EAAsBU,EAAU,kBAChCT,EAA2BS,EAAU,uBACrCR,EAAkBQ,EAAU,cAC5BP,EAAkBO,EAAU,cAC5BN,EAAyBM,EAAU,qBACnCL,EAAmBK,EAAU,eAC7BJ,EAAuBI,EAAU,mBACjCH,EAAgCG,EAAU,0BAC1CF,EAAuBE,EAAU,mBACjCD,EAA2BC,EAAU,uBAGS,mBAAX3rE,QAAyBA,OAAOo3B,SC/C9D,SAASw0C,EAAoBprE,GAClC,IACE,OAAOqrE,aAAaC,QAAQtrE,GAC5B,MAAOmJ,GACP,OAAO,MAUJ,SAASoiE,EAAoBvrE,EAAaN,GAC/C,IACE,OAAO2rE,aAAaG,QAAQxrE,EAAKN,GACjC,MAAOyJ,K,sVCNJ,MAAM+9B,EAAO,CAClBukC,YAAajsE,OAAO,eACpBksE,UAAWlsE,OAAO,aAClBR,KAAMQ,OAAO,QACbmsE,aAAcnsE,OAAO,gBACrBosE,cAAepsE,OAAO,iBACtBqsE,SAAUrsE,OAAO,YACjBqwD,KAAMrwD,OAAO,QACbwG,KAAMxG,OAAO,QACbssE,eAAgBtsE,OAAO,mBAqVlB,SAAS2sC,EACdhsC,EACA4rE,EACAD,GAmDA,OAjDAC,EAAQzlE,QAAS2d,IACf,MAAM/hB,EAAS+hB,EAAK/hB,OACdktD,EAAOnrC,EAAK/hB,EAAS,GACrBe,EAAS+oE,EAAY7rE,EAAQ8jB,EAAKtX,MAAM,EAAGzK,EAAS,IAC1D,IAAKe,IAAWA,EAAO3C,eAAe8uD,GACpC,OAGF,MAAM1vD,EAAQuD,EAAOmsD,GAErB,GAAmB,aAAf1vD,EAAMsG,KACR/C,EAAOmsD,GAAQn/B,SACV,GAAmB,QAAfvwB,EAAMsG,KACf/C,EAAOmsD,GAAQ6c,SACV,GAAmB,cAAfvsE,EAAMsG,KACf/C,EAAOmsD,QAAQtpD,MACV,CAEL,MAAMomE,EAAmD,GACzDA,EAAShlC,EAAKukC,eAAiB/rE,EAAM+rE,YACrCS,EAAShlC,EAAKwkC,YAAa,EAC3BQ,EAAShlC,EAAKloC,MAAQU,EAAMV,KAC5BktE,EAAShlC,EAAKykC,cAAgBjsE,EAAMisE,aACpCO,EAAShlC,EAAK0kC,eAAiBlsE,EAAMksE,cACrCM,EAAShlC,EAAK2oB,MAAQnwD,EAAMmwD,KAC5Bqc,EAAShlC,EAAK2kC,YAAcnsE,EAAMmsE,SAClCK,EAAShlC,EAAKlhC,MAAQtG,EAAMsG,KAE5B/C,EAAOmsD,GAAQ8c,KAGnBJ,EAAexlE,QAAS2d,IACtB,MAAM/hB,EAAS+hB,EAAK/hB,OACdktD,EAAOnrC,EAAK/hB,EAAS,GACrBe,EAAS+oE,EAAY7rE,EAAQ8jB,EAAKtX,MAAM,EAAGzK,EAAS,IAC1D,IAAKe,IAAWA,EAAO3C,eAAe8uD,GACpC,OAGF,MAAMngC,EAAOhsB,EAAOmsD,GAEdnnD,E,+VAAc,CAAH,GACZgnB,GAGLk9C,EAAsBlkE,EAAagnB,GAEnChsB,EAAOmsD,GAAQnnD,IAEV9H,EAGT,SAASgsE,EAAsBC,EAAqBzqE,GAClDxC,OAAOktE,iBAAiBD,EAAa,CACnC,CAACllC,EAAKwkC,WAAY,CAChB7qC,cAAc,EACdxhC,YAAY,EACZK,QAASiC,EAAO+pE,WAElB,CAACxkC,EAAKloC,MAAO,CACX6hC,cAAc,EACdxhC,YAAY,EACZK,MAAOiC,EAAO3C,MAEhB,CAACkoC,EAAKykC,cAAe,CACnB9qC,cAAc,EACdxhC,YAAY,EACZK,MAAOiC,EAAOgqE,cAEhB,CAACzkC,EAAK0kC,eAAgB,CACpB/qC,cAAc,EACdxhC,YAAY,EACZK,MAAOiC,EAAOiqE,eAEhB,CAAC1kC,EAAK2oB,MAAO,CACXhvB,cAAc,EACdxhC,YAAY,EACZK,MAAOiC,EAAOkuD,MAEhB,CAAC3oB,EAAK2kC,UAAW,CACfhrC,cAAc,EACdxhC,YAAY,EACZK,QAASiC,EAAOkqE,UAElB,CAAC3kC,EAAKlhC,MAAO,CACX66B,cAAc,EACdxhC,YAAY,EACZK,MAAOiC,EAAOqE,MAEhB,CAACkhC,EAAK4kC,gBAAiB,CACrBjrC,cAAc,EACdxhC,YAAY,EACZK,QAASiC,EAAOmqE,yBAIbM,EAAYV,iBACZU,EAAYptE,YACZotE,EAAYT,oBACZS,EAAYR,qBACZQ,EAAYvc,YACZuc,EAAYP,gBACZO,EAAYpmE,YACZomE,EAAYN,eC9arB,MAAMQ,EAAgD,IAAI9b,QAI/B,IAAI+b,IAAI,CAACjzD,IAAK,MAElC,SAASkzD,EACd/gE,EACAC,GAEA,OAAID,EAAE7K,WAAa8K,EAAE9K,WACZ,EACE8K,EAAE9K,WAAa6K,EAAE7K,YAClB,EAED,EAIJ,SAAS6rE,EACdjmE,GAEA,MAAMH,EAAO,GACb,IAAI2xB,EAAUxxB,EACd,KAAkB,MAAXwxB,GAAiB,CACtB,MAAM00C,EAAc,IACfvtE,OAAOkH,KAAK2xB,MACZ74B,OAAOmhB,sBAAsB0X,IAE5B20C,EAAcxtE,OAAOytE,0BAA0B50C,GACrD00C,EAAYpmE,QAAQtG,IAEd2sE,EAAY3sE,GAAKX,YACnBgH,EAAKjE,KAAKpC,KAGdg4B,EAAU74B,OAAO0tE,eAAe70C,GAElC,OAAO3xB,EAGF,SAASymE,EACd9mE,EACA+mE,EAAuB,aAEvB,MAAMC,EAAgBV,EAAmBhtE,IAAI0G,GAC7C,GAAqB,MAAjBgnE,EACF,OAAOA,EAGT,IAAI7sC,EAAc4sC,EAYlB,MAPgC,iBAArB/mE,EAAKm6B,YACdA,EAAcn6B,EAAKm6B,YACW,iBAAdn6B,EAAKhH,MAAmC,KAAdgH,EAAKhH,OAC/CmhC,EAAcn6B,EAAKhH,MAGrBstE,EAAmBz3D,IAAI7O,EAAMm6B,GACtBA,EASF,SAAS8sC,EAAgBxF,GAC9B,OAAOntD,OAAO4yD,iBAAiBzF,GAwH1B,SAAS0F,IACd,IACE,MAAM57D,EAAM65D,EJhOd,qCIiOE,GAAW,MAAP75D,EACF,OAAOhQ,KAAKyP,MAAMO,GAEpB,MAAOpI,IACT,MAhBO,CACL,CACEnD,KC7LoC,ED8LpCtG,MC/MkC,EDgNlC0tE,WAAW,IAeV,SAASC,EACdC,GAEA/B,EJ3OA,oCI6OEhqE,KAAKC,UAAU8rE,IAwCZ,SAASC,EACdptC,EACAn6B,GAEA,GAAoB,OAAhBm6B,EACF,MAAO,CAAC,KAAM,MAGhB,IAAIqtC,EAAkB,KAEtB,OAAQxnE,GACN,KC3R4B,ED4R5B,KCzRiC,ED0RjC,KC3R+B,ED4R/B,KCzR2B,ED0RzB,GAAIm6B,EAAYz6B,QAAQ,MAAQ,EAAG,CACjC,MAAM++D,EAAUtkC,EAAY7uB,MAAM,WACnB,MAAXmzD,IACFtkC,EAAcskC,EAAQtvD,MACtBq4D,EAAkB/I,IAsB1B,OCpT6B,IDsSzBz+D,EACsB,OAApBwnE,EACFA,EAAkB,CAAC,QAEnBA,EAAgBz/D,QAAQ,QC5SO,ID8SxB/H,IACe,OAApBwnE,EACFA,EAAkB,CAAC,cAEnBA,EAAgBz/D,QAAQ,eAIrB,CAACoyB,EAAaqtC,GAKhB,SAASC,EAAe99C,EAAcnV,GAC3C,IAAK,MAAMkzD,KAAa/9C,EACtB,KAAM+9C,KAAalzD,GACjB,OAAO,EAGX,IAAK,MAAMkzD,KAAalzD,EACtB,GAAImV,EAAK+9C,KAAelzD,EAAKkzD,GAC3B,OAAO,EAGX,OAAO,EAGF,SAAS1B,EAAY7rE,EAAgB8jB,GAC1C,OAAOA,EAAK4R,OAAO,CAAC83C,EAAiBC,KACnC,GAAID,EAAS,CACX,GAAIrtE,eAAe1B,KAAK+uE,EAASC,GAC/B,OAAOD,EAAQC,GAEjB,GAAwC,mBAA7BD,EAAQnuE,OAAOo3B,UAOxB,OAAOnqB,MAAMkJ,KAAKg4D,GAASC,GAI/B,OAAO,MACNztE,GA0CE,SAAS0tE,EACd1tE,EACA8jB,EACAvkB,GAEA,MAAMwC,EAAS+hB,EAAK/hB,OACdktD,EAAOnrC,EAAK/hB,EAAS,GAC3B,GAAc,MAAV/B,EAAgB,CAClB,MAAM8C,EAAS+oE,EAAY7rE,EAAQ8jB,EAAKtX,MAAM,EAAGzK,EAAS,IACtDe,IACFA,EAAOmsD,GAAQ1vD,IAiCd,SAASouE,EAAY5jE,GAC1B,GAAa,OAATA,EACF,MAAO,OACF,QAAapE,IAAToE,EACT,MAAO,YAGT,GAAIm0D,oBAAUn0D,GACZ,MAAO,gBAGT,GAA2B,oBAAhB6jE,aAA+B7jE,aAAgB6jE,YACxD,MAAO,eAIT,cADoB7jE,GAElB,IAAK,SACH,MAAO,SACT,IAAK,UACH,MAAO,UACT,IAAK,WACH,MAAO,WACT,IAAK,SACH,OAAIiE,OAAO0E,MAAM3I,GACR,MACGiE,OAAOk4D,SAASn8D,GAGnB,SAFA,WAIX,IAAK,SACH,GAAIuC,MAAMC,QAAQxC,GAChB,MAAO,QACF,GAAI6V,YAAYC,OAAO9V,GAC5B,OAAO5J,eAAe1B,KAAKsL,EAAK0C,YAAa,qBACzC,cACA,YACC,GAAI1C,EAAK0C,aAAyC,gBAA1B1C,EAAK0C,YAAY5N,KAK9C,MAAO,eACF,GAAqC,mBAA1BkL,EAAK1K,OAAOo3B,UAC5B,OAAO1sB,EAAK1K,OAAOo3B,cAAgB1sB,EAC/B,kBACA,WACC,GAAIA,EAAK0C,aAAyC,WAA1B1C,EAAK0C,YAAY5N,KAC9C,MAAO,SACF,CACL,MAAMgvE,EAAgB7uE,OAAOkB,UAAUO,SAAShC,KAAKsL,GACrD,GAAsB,kBAAlB8jE,EACF,MAAO,OACF,GAAsB,+BAAlBA,EACT,MAAO,sBAGX,MAAO,SACT,IAAK,SACH,MAAO,SACT,IAAK,SACH,MAAO,SACT,IAAK,YACH,MAC2C,+BAAzC7uE,OAAOkB,UAAUO,SAAShC,KAAKsL,GAExB,sBAEF,YACT,QACE,MAAO,WAIN,SAAS+jE,EACdvd,GAGA,OADoBsO,iBAAOtO,IAEzB,KAAKgN,kBACH,MAAO,kBACT,KAAKC,kBACH,MAAO,kBACT,KAAKE,aACH,MAAO,aACT,KAAK5nC,WACH,MAAO,WACT,KAAK6nC,OACH,MAAO,OACT,KAAKC,OACH,MAAO,OACT,KAAKC,SACH,MAAO,SACT,KAAK7nC,WACH,MAAO,WACT,KAAKD,aACH,MAAO,aACT,KAAKG,WACH,MAAO,WACT,KAAK63C,EACH,MAAO,eACT,cACSloE,EAAQ0qD,EAAR1qD,KACP,MAAoB,iBAATA,EACFA,EACkB,mBAATA,EACT8mE,EAAe9mE,EAAM,aACX,MAARA,EACF,2BAEA,WAOf,SAASmoE,EACPxG,EACAzlE,EAJgC,IAMhC,OAAIylE,EAAOzlE,OAASA,EACXylE,EAAOjyC,OAAO,EAAGxzB,GAAU,IAE3BylE,EA0BJ,SAASyG,GACdlkE,EACAmkE,GAEA,GAAY,MAARnkE,GAAgB5J,eAAe1B,KAAKsL,EAAMg9B,EAAKlhC,MACjD,OAAOqoE,EACHnkE,EAAKg9B,EAAKykC,cACVzhE,EAAKg9B,EAAK0kC,eAKhB,OAFakC,EAAY5jE,IAGvB,IAAK,eACH,MAAQ,IAAGikE,EAAmBjkE,EAAK+9C,QAAQzyC,oBAC7C,IAAK,WACH,OAAO24D,EACJ,KAAyB,mBAAdjkE,EAAKlL,KAAsB,GAAKkL,EAAKlL,aAErD,IAAK,SACH,MAAQ,IAAGkL,KACb,IAAK,SACH,OAAOikE,EAAmBjkE,EAAKtJ,WAAa,KAC9C,IAAK,SAEL,IAAK,SACH,OAAOutE,EAAmBjkE,EAAKtJ,YACjC,IAAK,gBACH,MAAQ,IAAGutE,EACTF,EAA8B/jE,IAAS,gBAE3C,IAAK,eACH,MAAQ,eAAcA,EAAKwV,cAC7B,IAAK,YACH,MAAQ,YAAWxV,EAAKsV,OAAOE,cACjC,IAAK,QACH,GAAI2uD,EAAoB,CACtB,IAAIC,EAAY,GAChB,IAAK,IAAI7vE,EAAI,EAAGA,EAAIyL,EAAKhI,SACnBzD,EAAI,IACN6vE,GAAa,MAEfA,GAAaF,GAAqBlkE,EAAKzL,IAAI,KACvC6vE,EAAUpsE,OA9EU,KAyEOzD,KAUjC,MAAQ,IAAG0vE,EAAmBG,MAK9B,MAAQ,SAHOhuE,eAAe1B,KAAKsL,EAAMg9B,EAAK2oB,MAC1C3lD,EAAKg9B,EAAK2oB,MACV3lD,EAAKhI,UAGb,IAAK,cACH,MAAMqsE,EAAa,GAAErkE,EAAK0C,YAAY5N,QAAQkL,EAAKhI,UACnD,GAAImsE,EAAoB,CACtB,IAAIC,EAAY,GAChB,IAAK,IAAI7vE,EAAI,EAAGA,EAAIyL,EAAKhI,SACnBzD,EAAI,IACN6vE,GAAa,MAEfA,GAAapkE,EAAKzL,KACd6vE,EAAUpsE,OAnGU,KA8FOzD,KAUjC,MAAQ,GAAE8vE,MAAcJ,EAAmBG,MAE3C,OAAOC,EAEX,IAAK,WACH,MAAMvvE,EAAOkL,EAAK0C,YAAY5N,KAE9B,GAAIqvE,EAAoB,CAKtB,MAAM5G,EAAQh7D,MAAMkJ,KAAKzL,GAEzB,IAAIokE,EAAY,GAChB,IAAK,IAAI7vE,EAAI,EAAGA,EAAIgpE,EAAMvlE,OAAQzD,IAAK,CACrC,MAAM+vE,EAAiB/G,EAAMhpE,GAW7B,GATIA,EAAI,IACN6vE,GAAa,MAQX7hE,MAAMC,QAAQ8hE,GAAiB,CAGjCF,GAAc,GAFFF,GAAqBI,EAAe,IAAI,SACtCJ,GAAqBI,EAAe,IAAI,UAGtDF,GAAaF,GAAqBI,GAAgB,GAGpD,GAAIF,EAAUpsE,OA3IU,GA6ItB,MAIJ,MAAQ,GAAElD,KAAQkL,EAAK2lD,UAAUse,EAAmBG,MAEpD,MAAQ,GAAEtvE,KAAQkL,EAAK2lD,QAE3B,IAAK,kBACH,OAAO3lD,EAAK1K,OAAOC,aAErB,IAAK,OACH,OAAOyK,EAAKtJ,WACd,IAAK,SACH,GAAIytE,EAAoB,CACtB,MAAMhoE,EAAOomE,EAAqBviE,GAAMwK,KAAK83D,GAE7C,IAAI8B,EAAY,GAChB,IAAK,IAAI7vE,EAAI,EAAGA,EAAI4H,EAAKnE,OAAQzD,IAAK,CACpC,MAAMuB,EAAMqG,EAAK5H,GAQjB,GAPIA,EAAI,IACN6vE,GAAa,MAEfA,GAAc,GAAEtuE,EAAIY,eAAewtE,GACjClkE,EAAKlK,IACL,KAEEsuE,EAAUpsE,OAxKU,GA0KtB,MAGJ,MAAQ,IAAGisE,EAAmBG,MAE9B,MAAO,MAEX,IAAK,UACL,IAAK,SACL,IAAK,WACL,IAAK,MACL,IAAK,OACL,IAAK,YACH,OAAOpkE,EACT,QACE,IACE,OAAOikE,EAAmB,GAAKjkE,GAC/B,MAAOf,GACP,MAAO,mBEzvBf,IAIIslE,GAAU,CACbC,gBALqB,0CAMrBC,SALc,s7NAMdC,YALiB,s2QAQdC,GAAO,CACPC,iBAAkBhwE,GACM,iBAANA,GAAkB2vE,GAAQC,gBAAgB7gE,KAAK/O,GAGjEiwE,cAAejwE,GACS,iBAANA,IACTA,GAAK,KAAOA,GAAK,KACrBA,GAAK,KAAOA,GAAK,KACX,MAANA,GAAqB,MAANA,GAChB2vE,GAAQE,SAAS9gE,KAAK/O,IAI1BkwE,iBAAkBlwE,GACM,iBAANA,IACTA,GAAK,KAAOA,GAAK,KACrBA,GAAK,KAAOA,GAAK,KACjBA,GAAK,KAAOA,GAAK,KACX,MAANA,GAAqB,MAANA,GACT,MAANA,GAA0B,MAANA,GACrB2vE,GAAQG,YAAY/gE,KAAK/O,IAI7BmwE,QAASnwE,GACe,iBAANA,GAAkB,QAAQ+O,KAAK/O,GAGjDowE,WAAYpwE,GACY,iBAANA,GAAkB,cAAc+O,KAAK/O,IAI3D,IAAI,GACAqwE,GACArvC,GACAsvC,GACAlL,GACAmL,GACAnhD,GACA,GACA,GA+CJ,IAAIohD,GACA9vD,GACA+vD,GACAC,GACA1wE,GAEJ,SAAS2wE,KAML,IALAH,GAAW,UACX9vD,GAAS,GACT+vD,IAAc,EACdC,GAAO,IAEE,CACL1wE,GAAIoyB,KAOJ,MAAMhD,EAAQwhD,GAAUJ,MACxB,GAAIphD,EACA,OAAOA,GAKnB,SAASgD,KACL,GAAI,GAAOk+C,IACP,OAAO90D,OAAO4yD,cAAc,GAAOyC,YAAYP,KAIvD,SAAS,KACL,MAAMtwE,EAAIoyB,KAeV,MAbU,OAANpyB,GACAolE,KACAmL,GAAS,GACFvwE,EACPuwE,IAAUvwE,EAAEoD,OAEZmtE,KAGAvwE,IACAswE,IAAOtwE,EAAEoD,QAGNpD,EAGX,MAAM4wE,GAAY,CACd,UACI,OAAQ5wE,IACR,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,IACL,IAAK,IACL,IAAK,SACL,IAAK,KACL,IAAK,KACL,IAAK,SACL,IAAK,SAED,YADA,KAGJ,IAAK,IAGD,OAFA,UACAwwE,GAAW,WAGf,UAAKxpE,EAED,OADA,KACO8pE,GAAS,OAGpB,IAAIf,GAAKC,iBAAiBhwE,IAU1B,OAAO4wE,GAAUP,MATb,MAYR,UACI,OAAQrwE,IACR,IAAK,IAGD,OAFA,UACAwwE,GAAW,oBAGf,IAAK,IAGD,OAFA,UACAA,GAAW,qBAIf,MAAMO,GAAY,OAGtB,mBACI,OAAQ/wE,IACR,IAAK,IAGD,OAFA,UACAwwE,GAAW,4BAGf,UAAKxpE,EACD,MAAM+pE,GAAY,MAGtB,MAGJ,2BACI,OAAQ/wE,IACR,IAAK,IAED,YADA,KAGJ,IAAK,IAGD,OAFA,UACAwwE,GAAW,WAGf,UAAKxpE,EACD,MAAM+pE,GAAY,MAGtB,KACAP,GAAW,oBAGf,oBACI,OAAQxwE,IACR,IAAK,KACL,IAAK,KACL,IAAK,SACL,IAAK,SAGD,OAFA,UACAwwE,GAAW,WAGf,UAAKxpE,EAED,OADA,KACO8pE,GAAS,OAGpB,MAGJ,QACI,OAAQ9wE,IACR,IAAK,IACL,IAAK,IACD,OAAO8wE,GAAS,aAAc,MAElC,IAAK,IAGD,OAFA,KACAE,GAAQ,OACDF,GAAS,OAAQ,MAE5B,IAAK,IAGD,OAFA,KACAE,GAAQ,OACDF,GAAS,WAAW,GAE/B,IAAK,IAGD,OAFA,KACAE,GAAQ,QACDF,GAAS,WAAW,GAE/B,IAAK,IACL,IAAK,IAMD,MALe,MAAX,OACAJ,IAAQ,QAGZF,GAAW,QAGf,IAAK,IAGD,OAFA9vD,GAAS,UACT8vD,GAAW,uBAGf,IAAK,IAGD,OAFA9vD,GAAS,UACT8vD,GAAW,QAGf,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IAGD,OAFA9vD,GAAS,UACT8vD,GAAW,kBAGf,IAAK,IAGD,OAFA,KACAQ,GAAQ,WACDF,GAAS,UAAW3/C,KAE/B,IAAK,IAGD,OAFA,KACA6/C,GAAQ,MACDF,GAAS,UAAW3D,KAE/B,IAAK,IACL,IAAK,IAID,OAHAsD,GAA0B,MAAX,KACf/vD,GAAS,QACT8vD,GAAW,UAIf,MAAMO,GAAY,OAGtB,4BACI,GAAU,MAAN/wE,GACA,MAAM+wE,GAAY,MAGtB,KACA,MAAMt5C,EAAIw5C,KACV,OAAQx5C,GACR,IAAK,IACL,IAAK,IACD,MAEJ,QACI,IAAKs4C,GAAKE,cAAcx4C,GACpB,MAAMy5C,KAMdxwD,IAAU+W,EACV+4C,GAAW,kBAGf,iBACI,OAAQxwE,IACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IAED,YADA0gB,IAAU,MAGd,IAAK,KAGD,OAFA,UACA8vD,GAAW,wBAIf,IAAIT,GAAKG,iBAAiBlwE,IAK1B,OAAO8wE,GAAS,aAAcpwD,IAJ1BA,IAAU,MAOlB,uBACI,GAAU,MAAN1gB,GACA,MAAM+wE,GAAY,MAGtB,KACA,MAAMt5C,EAAIw5C,KACV,OAAQx5C,GACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACD,MAEJ,QACI,IAAKs4C,GAAKG,iBAAiBz4C,GACvB,MAAMy5C,KAMdxwD,IAAU+W,EACV+4C,GAAW,kBAGf,OACI,OAAQxwE,IACR,IAAK,IAGD,OAFA0gB,GAAS,UACT8vD,GAAW,uBAGf,IAAK,IAGD,OAFA9vD,GAAS,UACT8vD,GAAW,QAGf,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IAGD,OAFA9vD,GAAS,UACT8vD,GAAW,kBAGf,IAAK,IAGD,OAFA,KACAQ,GAAQ,WACDF,GAAS,UAAWJ,IAAOv/C,MAEtC,IAAK,IAGD,OAFA,KACA6/C,GAAQ,MACDF,GAAS,UAAW3D,KAG/B,MAAM4D,GAAY,OAGtB,OACI,OAAQ/wE,IACR,IAAK,IAGD,OAFA0gB,IAAU,UACV8vD,GAAW,gBAGf,IAAK,IACL,IAAK,IAGD,OAFA9vD,IAAU,UACV8vD,GAAW,mBAGf,IAAK,IACL,IAAK,IAGD,OAFA9vD,IAAU,UACV8vD,GAAW,eAIf,OAAOM,GAAS,UAAkB,EAAPJ,KAG/B,iBACI,OAAQ1wE,IACR,IAAK,IAGD,OAFA0gB,IAAU,UACV8vD,GAAW,gBAGf,IAAK,IACL,IAAK,IAGD,OAFA9vD,IAAU,UACV8vD,GAAW,mBAIf,IAAIT,GAAKI,QAAQnwE,IAKjB,OAAO8wE,GAAS,UAAWJ,GAAOrhE,OAAOqR,KAJrCA,IAAU,MAOlB,sBACI,GAAIqvD,GAAKI,QAAQnwE,IAGb,OAFA0gB,IAAU,UACV8vD,GAAW,mBAIf,MAAMO,GAAY,OAGtB,eACI,OAAQ/wE,IACR,IAAK,IACL,IAAK,IAGD,OAFA0gB,IAAU,UACV8vD,GAAW,mBAIf,OAAIT,GAAKI,QAAQnwE,KACb0gB,IAAU,UACV8vD,GAAW,oBAIRM,GAAS,UAAWJ,GAAOrhE,OAAOqR,MAG7C,kBACI,OAAQ1gB,IACR,IAAK,IACL,IAAK,IAGD,OAFA0gB,IAAU,UACV8vD,GAAW,mBAIf,IAAIT,GAAKI,QAAQnwE,IAKjB,OAAO8wE,GAAS,UAAWJ,GAAOrhE,OAAOqR,KAJrCA,IAAU,MAOlB,kBACI,OAAQ1gB,IACR,IAAK,IACL,IAAK,IAGD,OAFA0gB,IAAU,UACV8vD,GAAW,uBAIf,GAAIT,GAAKI,QAAQnwE,IAGb,OAFA0gB,IAAU,UACV8vD,GAAW,0BAIf,MAAMO,GAAY,OAGtB,sBACI,GAAIhB,GAAKI,QAAQnwE,IAGb,OAFA0gB,IAAU,UACV8vD,GAAW,0BAIf,MAAMO,GAAY,OAGtB,yBACI,IAAIhB,GAAKI,QAAQnwE,IAKjB,OAAO8wE,GAAS,UAAWJ,GAAOrhE,OAAOqR,KAJrCA,IAAU,MAOlB,cACI,GAAIqvD,GAAKK,WAAWpwE,IAGhB,OAFA0gB,IAAU,UACV8vD,GAAW,sBAIf,MAAMO,GAAY,OAGtB,qBACI,IAAIhB,GAAKK,WAAWpwE,IAKpB,OAAO8wE,GAAS,UAAWJ,GAAOrhE,OAAOqR,KAJrCA,IAAU,MAOlB,SACI,OAAQ1gB,IACR,IAAK,KAGD,OAFA,UACA0gB,IA2JZ,WAEI,OADU0R,MAEV,IAAK,IAED,OADA,KACO,KAEX,IAAK,IAED,OADA,KACO,KAEX,IAAK,IAED,OADA,KACO,KAEX,IAAK,IAED,OADA,KACO,KAEX,IAAK,IAED,OADA,KACO,KAEX,IAAK,IAED,OADA,KACO,KAEX,IAAK,IAED,GADA,KACI29C,GAAKI,QAAQ/9C,MACb,MAAM2+C,GAAY,MAGtB,MAAO,KAEX,IAAK,IAED,OADA,KAuCR,WACI,IAAIrwD,EAAS,GACT1gB,EAAIoyB,KAER,IAAK29C,GAAKK,WAAWpwE,GACjB,MAAM+wE,GAAY,MAMtB,GAHArwD,GAAU,KAEV1gB,EAAIoyB,MACC29C,GAAKK,WAAWpwE,GACjB,MAAM+wE,GAAY,MAKtB,OAFArwD,GAAU,KAEHlF,OAAO4yD,cAAcl7C,SAASxS,EAAQ,KAvDlCywD,GAEX,IAAK,IAED,OADA,KACOF,KAEX,IAAK,KACL,IAAK,SACL,IAAK,SAED,OADA,KACO,GAEX,IAAK,KAMD,OALA,KACe,OAAX7+C,MACA,KAGG,GAEX,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IAGL,UAAKprB,EACD,MAAM+pE,GAAY,MAGtB,OAAO,KAnOW,IAGd,IAAK,IACD,OAAIN,IACA,KACOK,GAAS,SAAUpwD,UAG9BA,IAAU,MAGd,IAAK,IACD,OAAK+vD,QAKL/vD,IAAU,OAJN,KACOowD,GAAS,SAAUpwD,KAMlC,IAAK,KACL,IAAK,KACD,MAAMqwD,GAAY,MAEtB,IAAK,SACL,IAAK,UAwdb,SAAwB/wE,GACpBoK,QAAQsgE,KAAK,WAAW0G,GAAWpxE,6DAxd3BqxE,CAAcrxE,IACd,MAEJ,UAAKgH,EACD,MAAM+pE,GAAY,MAGtBrwD,IAAU,MAGd,QACI,OAAQ1gB,IACR,IAAK,IACL,IAAK,IACD,OAAO8wE,GAAS,aAAc,MAOlCN,GAAW,SAGf,qBACI,OAAQxwE,IACR,IAAK,IACL,IAAK,IAGD,OAFA0gB,GAAS,UACT8vD,GAAW,kBAGf,IAAK,KAGD,OAFA,UACAA,GAAW,6BAGf,IAAK,IACD,OAAOM,GAAS,aAAc,MAElC,IAAK,IACL,IAAK,IAGD,OAFAL,GAA0B,MAAX,UACfD,GAAW,UAIf,GAAIT,GAAKE,cAAcjwE,IAGnB,OAFA0gB,IAAU,UACV8vD,GAAW,kBAIf,MAAMO,GAAY,OAGtB,oBACI,GAAU,MAAN/wE,GACA,OAAO8wE,GAAS,aAAc,MAGlC,MAAMC,GAAY,OAGtB,sBACIP,GAAW,SAGf,qBACI,OAAQxwE,IACR,IAAK,IACL,IAAK,IACD,OAAO8wE,GAAS,aAAc,MAGlC,MAAMC,GAAY,OAGtB,mBACI,GAAU,MAAN/wE,GACA,OAAO8wE,GAAS,aAAc,MAGlCN,GAAW,SAGf,kBACI,OAAQxwE,IACR,IAAK,IACL,IAAK,IACD,OAAO8wE,GAAS,aAAc,MAGlC,MAAMC,GAAY,OAGtB,MAOI,MAAMA,GAAY,QAI1B,SAASD,GAAU5pE,EAAMtG,GACrB,MAAO,CACHsG,OACAtG,QACAwkE,QACAmL,WAIR,SAASS,GAAStvE,GACd,IAAK,MAAM1B,KAAK0B,EAAG,CAGf,GAFU0wB,OAEApyB,EACN,MAAM+wE,GAAY,MAGtB,MAmGR,SAASE,KACL,IAAIvwD,EAAS,GACTqa,EAAQ,EAEZ,KAAOA,KAAU,GAAG,CAChB,MAAM/6B,EAAIoyB,KACV,IAAK29C,GAAKK,WAAWpwE,GACjB,MAAM+wE,GAAY,MAGtBrwD,GAAU,KAGd,OAAOlF,OAAO4yD,cAAcl7C,SAASxS,EAAQ,KAGjD,MAAM4wD,GAAc,CAChB,QACI,GAAmB,QAAfliD,GAAMloB,KACN,MAAMqqE,KAGVjuE,MAGJ,qBACI,OAAQ8rB,GAAMloB,MACd,IAAK,aACL,IAAK,SAGD,OAFA,GAAMkoB,GAAMxuB,WACZyvE,GAAa,qBAGjB,IAAK,aAOD,YADAh6D,KAGJ,IAAK,MACD,MAAMk7D,OAOd,oBAMI,GAAmB,QAAfniD,GAAMloB,KACN,MAAMqqE,KAGVlB,GAAa,uBAGjB,sBACI,GAAmB,QAAfjhD,GAAMloB,KACN,MAAMqqE,KAGVjuE,MAGJ,mBACI,GAAmB,QAAf8rB,GAAMloB,KACN,MAAMqqE,KAGS,eAAfniD,GAAMloB,MAAyC,MAAhBkoB,GAAMxuB,MAKzC0C,KAJI+S,MAOR,qBAMI,GAAmB,QAAf+Y,GAAMloB,KACN,MAAMqqE,KAGV,OAAQniD,GAAMxuB,OACd,IAAK,IAED,YADAyvE,GAAa,sBAGjB,IAAK,IACDh6D,OAOR,kBAMI,GAAmB,QAAf+Y,GAAMloB,KACN,MAAMqqE,KAGV,OAAQniD,GAAMxuB,OACd,IAAK,IAED,YADAyvE,GAAa,oBAGjB,IAAK,IACDh6D,OAOR,SAQJ,SAAS/S,KACL,IAAI1C,EAEJ,OAAQwuB,GAAMloB,MACd,IAAK,aACD,OAAQkoB,GAAMxuB,OACd,IAAK,IACDA,EAAQ,GACR,MAEJ,IAAK,IACDA,EAAQ,GAIZ,MAEJ,IAAK,OACL,IAAK,UACL,IAAK,UACL,IAAK,SACDA,EAAQwuB,GAAMxuB,MAQlB,QAAaoG,IAAT,GACA,GAAOpG,MACJ,CACH,MAAMuD,EAAS68B,GAAMA,GAAM59B,OAAS,GAChCuK,MAAMC,QAAQzJ,GACdA,EAAOb,KAAK1C,GAEZuD,EAAO,IAAOvD,EAItB,GAAc,OAAVA,GAAmC,iBAAVA,EACzBogC,GAAM19B,KAAK1C,GAGPyvE,GADA1iE,MAAMC,QAAQhN,GACD,mBAEA,yBAEd,CACH,MAAMs4B,EAAU8H,GAAMA,GAAM59B,OAAS,GAEjCitE,GADW,MAAXn3C,EACa,MACNvrB,MAAMC,QAAQsrB,GACR,kBAEA,sBAKzB,SAAS7iB,KACL2qB,GAAM3qB,MAEN,MAAM6iB,EAAU8H,GAAMA,GAAM59B,OAAS,GAEjCitE,GADW,MAAXn3C,EACa,MACNvrB,MAAMC,QAAQsrB,GACR,kBAEA,qBAcrB,SAAS63C,GAAa/wE,GAClB,OACWwxE,QADDxqE,IAANhH,EACmB,kCAAkColE,MAAQmL,KAG9C,6BAA6Ba,GAAWpxE,UAAUolE,MAAQmL,MAGjF,SAASgB,KACL,OAAOC,GAAY,kCAAkCpM,MAAQmL,MAajE,SAASW,KAEL,OADAX,IAAU,EACHiB,GAAY,0CAA0CpM,MAAQmL,MAOzE,SAASa,GAAYpxE,GACjB,MAAMyxE,EAAe,CACjB,IAAK,MACL,IAAK,MACL,KAAM,OACN,KAAM,MACN,KAAM,MACN,KAAM,MACN,KAAM,MACN,KAAM,MACN,KAAM,MACN,KAAM,MACN,SAAU,UACV,SAAU,WAGd,GAAIA,EAAazxE,GACb,OAAOyxE,EAAazxE,GAGxB,GAAIA,EAAI,IAAK,CACT,MAAM0xE,EAAY1xE,EAAEkvB,WAAW,GAAGptB,SAAS,IAC3C,MAAO,OAAS,KAAO4vE,GAAW/pC,UAAU+pC,EAAUtuE,QAG1D,OAAOpD,EAGX,SAASwxE,GAAa7nD,GAClB,MAAMxf,EAAM,IAAIglB,YAAYxF,GAG5B,OAFAxf,EAAIq7D,WAAaJ,GACjBj7D,EAAIs7D,aAAe8K,GACZpmE,EA4QX,IAEe,GAPD,CACV+H,MAzzCQ,SAAgBirC,EAAMw0B,GAC9B,GAASn2D,OAAO2hC,GAChBkzB,GAAa,QACbrvC,GAAQ,GACRsvC,GAAM,EACNlL,GAAO,EACPmL,GAAS,EACTnhD,QAAQpoB,EACR,QAAMA,EACN,QAAOA,EAEP,GACIooB,GAAQuhD,KAORW,GAAYjB,YACQ,QAAfjhD,GAAMloB,MAEf,MAAuB,mBAAZyqE,EAOf,SAASC,EAAaC,EAAQ3xE,EAAMyxE,GAChC,MAAM/wE,EAAQixE,EAAO3xE,GACrB,GAAa,MAATU,GAAkC,iBAAVA,EACxB,IAAK,MAAMM,KAAON,EAAO,CACrB,MAAMuI,EAAcyoE,EAAYhxE,EAAOM,EAAKywE,QACxB3qE,IAAhBmC,SACOvI,EAAMM,GAEbN,EAAMM,GAAOiI,EAKzB,OAAOwoE,EAAQ7xE,KAAK+xE,EAAQ3xE,EAAMU,GAnBvBgxE,CAAY,CAAC,GAAI,IAAO,GAAID,GAGhC,IAgyCPjvE,UAtQY,SAAoB9B,EAAOkxE,EAAUC,GACjD,MAAM/wC,EAAQ,GACd,IACIgxC,EACAC,EAEAx8C,EAJAy8C,EAAS,GAGTC,EAAM,GAaV,GATgB,MAAZL,GACoB,iBAAbA,GACNnkE,MAAMC,QAAQkkE,KAEfC,EAAQD,EAASC,MACjBt8C,EAAQq8C,EAASr8C,MACjBq8C,EAAWA,EAASA,UAGA,mBAAbA,EACPG,EAAeH,OACZ,GAAInkE,MAAMC,QAAQkkE,GAAW,CAChCE,EAAe,GACf,IAAK,MAAM7+D,KAAK2+D,EAAU,CACtB,IAAI7vE,EAEa,iBAANkR,EACPlR,EAAOkR,GAEM,iBAANA,GACPA,aAAaqI,QACbrI,aAAa9D,UAEbpN,EAAOuZ,OAAOrI,SAGLnM,IAAT/E,GAAsB+vE,EAAaprE,QAAQ3E,GAAQ,GACnD+vE,EAAa1uE,KAAKrB,IAoB9B,OAfI8vE,aAAiB1iE,OACjB0iE,EAAQ1iE,OAAO0iE,GACRA,aAAiBv2D,SACxBu2D,EAAQv2D,OAAOu2D,IAGE,iBAAVA,EACHA,EAAQ,IACRA,EAAQrlD,KAAK9R,IAAI,GAAI8R,KAAKqxC,MAAMgU,IAChCI,EAAM,aAAav7C,OAAO,EAAGm7C,IAET,iBAAVA,IACdI,EAAMJ,EAAMn7C,OAAO,EAAG,KAGnBw7C,EAAkB,GAAI,CAAC,GAAIxxE,IAElC,SAASwxE,EAAmBlxE,EAAK2wE,GAC7B,IAAIjxE,EAAQixE,EAAO3wE,GAqBnB,OApBa,MAATN,IAC6B,mBAAlBA,EAAMyxE,QACbzxE,EAAQA,EAAMyxE,QAAQnxE,GACS,mBAAjBN,EAAM0xE,SACpB1xE,EAAQA,EAAM0xE,OAAOpxE,KAIzB+wE,IACArxE,EAAQqxE,EAAanyE,KAAK+xE,EAAQ3wE,EAAKN,IAGvCA,aAAiByO,OACjBzO,EAAQyO,OAAOzO,GACRA,aAAiB4a,OACxB5a,EAAQ4a,OAAO5a,GACRA,aAAiByI,UACxBzI,EAAQA,EAAM20B,WAGV30B,GACR,KAAK,KAAM,MAAO,OAClB,KAAK,EAAM,MAAO,OAClB,KAAK,EAAO,MAAO,QAGnB,MAAqB,iBAAVA,EACA2xE,EAAY3xE,GAGF,iBAAVA,EACA4a,OAAO5a,GAGG,iBAAVA,EACA+M,MAAMC,QAAQhN,GAiI7B,SAAyBA,GACrB,GAAIogC,EAAMp6B,QAAQhG,IAAU,EACxB,MAAMiM,UAAU,0CAGpBm0B,EAAM19B,KAAK1C,GAEX,IAAI4xE,EAAWN,EACfA,GAAkBC,EAElB,IAMIM,EANAC,EAAU,GACd,IAAK,IAAI/yE,EAAI,EAAGA,EAAIiB,EAAMwC,OAAQzD,IAAK,CACnC,MAAMgzE,EAAiBP,EAAkB52D,OAAO7b,GAAIiB,GACpD8xE,EAAQpvE,UAAyB0D,IAAnB2rE,EAAgCA,EAAiB,QAInE,GAAuB,IAAnBD,EAAQtvE,OACRqvE,EAAQ,UAER,GAAY,KAARN,EAAY,CACZ,IAAIS,EAAaF,EAAQ1vE,KAAK,KAC9ByvE,EAAQ,IAAMG,EAAa,QACxB,CACH,IAAIC,EAAY,MAAQX,EACpBU,EAAaF,EAAQ1vE,KAAK6vE,GAC9BJ,EAAQ,MAAQP,EAASU,EAAa,MAAQJ,EAAW,IAMjE,OAFAxxC,EAAM3qB,MACN67D,EAASM,EACFC,EAjK2BK,CAAelyE,GAkErD,SAA0BA,GACtB,GAAIogC,EAAMp6B,QAAQhG,IAAU,EACxB,MAAMiM,UAAU,0CAGpBm0B,EAAM19B,KAAK1C,GAEX,IAAI4xE,EAAWN,EACfA,GAAkBC,EAElB,IAcIM,EAdAlrE,EAAOyqE,GAAgB3xE,OAAOkH,KAAK3G,GACnC8xE,EAAU,GACd,IAAK,MAAMxxE,KAAOqG,EAAM,CACpB,MAAMorE,EAAiBP,EAAkBlxE,EAAKN,GAC9C,QAAuBoG,IAAnB2rE,EAA8B,CAC9B,IAAII,EAASC,EAAa9xE,GAAO,IACrB,KAARixE,IACAY,GAAU,KAEdA,GAAUJ,EACVD,EAAQpvE,KAAKyvE,IAKrB,GAAuB,IAAnBL,EAAQtvE,OACRqvE,EAAQ,SACL,CACH,IAAIG,EACJ,GAAY,KAART,EACAS,EAAaF,EAAQ1vE,KAAK,KAC1ByvE,EAAQ,IAAMG,EAAa,QACxB,CACH,IAAIC,EAAY,MAAQX,EACxBU,EAAaF,EAAQ1vE,KAAK6vE,GAC1BJ,EAAQ,MAAQP,EAASU,EAAa,MAAQJ,EAAW,KAMjE,OAFAxxC,EAAM3qB,MACN67D,EAASM,EACFC,EA3GmDQ,CAAgBryE,QAD1E,EAOJ,SAAS2xE,EAAa3xE,GAClB,MAAMsyE,EAAS,CACX,IAAK,GACL,IAAK,IAGHzB,EAAe,CACjB,IAAK,MACL,IAAK,MACL,KAAM,OACN,KAAM,MACN,KAAM,MACN,KAAM,MACN,KAAM,MACN,KAAM,MACN,KAAM,MACN,KAAM,MACN,SAAU,UACV,SAAU,WAGd,IAAI0B,EAAU,GAEd,IAAK,IAAIxzE,EAAI,EAAGA,EAAIiB,EAAMwC,OAAQzD,IAAK,CACnC,MAAMK,EAAIY,EAAMjB,GAChB,OAAQK,GACR,IAAK,IACL,IAAK,IACDkzE,EAAOlzE,KACPmzE,GAAWnzE,EACX,SAEJ,IAAK,KACD,GAAI+vE,GAAKI,QAAQvvE,EAAMjB,EAAI,IAAK,CAC5BwzE,GAAW,QACX,UAIR,GAAI1B,EAAazxE,GACbmzE,GAAW1B,EAAazxE,QAI5B,GAAIA,EAAI,IAAR,CACI,IAAI0xE,EAAY1xE,EAAEkvB,WAAW,GAAGptB,SAAS,IACzCqxE,GAAW,OAAS,KAAOzB,GAAW/pC,UAAU+pC,EAAUtuE,aAI9D+vE,GAAWnzE,EAGf,MAAMozE,EAAY39C,GAASp1B,OAAOkH,KAAK2rE,GAAQn8C,OAAO,CAACpqB,EAAGC,IAAOsmE,EAAOvmE,GAAKumE,EAAOtmE,GAAMD,EAAIC,GAI9F,OAFAumE,EAAUA,EAAQ9/D,QAAQ,IAAIlC,OAAOiiE,EAAW,KAAM3B,EAAa2B,IAE5DA,EAAYD,EAAUC,EA+CjC,SAASJ,EAAc9xE,GACnB,GAAmB,IAAfA,EAAIkC,OACJ,OAAOmvE,EAAYrxE,GAGvB,MAAMmyE,EAAY73D,OAAO4yD,cAAcltE,EAAI2vE,YAAY,IACvD,IAAKd,GAAKE,cAAcoD,GACpB,OAAOd,EAAYrxE,GAGvB,IAAK,IAAIvB,EAAI0zE,EAAUjwE,OAAQzD,EAAIuB,EAAIkC,OAAQzD,IAC3C,IAAKowE,GAAKG,iBAAiB10D,OAAO4yD,cAAcltE,EAAI2vE,YAAYlxE,KAC5D,OAAO4yE,EAAYrxE,GAI3B,OAAOA,KC7uCR,SAASoyE,GAAiB1yE,GAC/B,MAAqB,iBAAVA,GAEPA,EAAMwC,QAAU,GACI,MAApBxC,EAAM01B,OAAO,IACsB,MAAnC11B,EAAM01B,OAAO11B,EAAMwC,OAAS,GAErB,IAAMxC,EAAMg2B,OAAO,EAAGh2B,EAAMwC,OAAS,GAAK,IAG9CxC,EAGF,SAAS2yE,GAAW3yE,GACzB,OAAQA,GACN,IAAK,WACH,OAAOuwB,IACT,IAAK,MACH,OAAOg8C,IACT,IAAK,YACH,OACF,QACE,OAAOqG,GAAMthE,MAAMohE,GAAiB1yE,KAInC,SAAS6yE,GAAe7yE,GAC7B,GAAqB,iBAAVA,EAAoB,CAC7B,GAAIyO,OAAO0E,MAAMnT,GACf,MAAO,MACF,IAAKyO,OAAOk4D,SAAS3mE,GAC1B,MAAO,gBAEJ,QAAcoG,IAAVpG,EACT,MAAO,YAGT,OAAO6B,KAAKC,UAAU9B,GC5GxB,MAAM8yE,GAAiB,CACrB,iCACA,iCACA,iCACA,iCACA,iCACA,iCACA,iCACA,iCACA,iCACA,kCA6LK,MAAMC,GAAoB/yE,IAC/B,MAAMgzE,EAAWF,GAAetwE,OAAS,EACzC,IAAI8F,EAQJ,OANEA,EADEmG,OAAO0E,MAAMnT,GACP,EACEyO,OAAOk4D,SAAS3mE,GAGlB8rB,KAAKlS,IAAI,EAAGkS,KAAK9R,IAAIg5D,EAAUhzE,IAAUgzE,EAFzCA,EAIHF,GAAehnD,KAAKmnD,MAAM3qE,KAGtB4qE,GAAkBC,GAC7BrnD,KAAKmnD,MAAiB,GAAXE,GAAiB,IAAM,OAGvBC,GAAcC,GACzBvnD,KAAKmnD,MAAMnnD,KAAKmnD,MAAMI,GAAa,KAAO,GAE/BC,GAAQ,CACnBC,EACAC,EACAC,EACAC,IACG,CAAC1zE,EAAe2zE,IACnBH,EAAWD,GAAa,EACpBI,GACE3zE,EAAQuzE,IAAaC,EAAWD,IAAcG,EAAWD,GCjN3DG,GAAsD,IAAIziD,IAEzD,SAAS0iD,IAAc,YAC5BC,EAD4B,cAE5BC,EAF4B,OAG5BC,IAMKJ,GAAoBriD,IAAIyiD,IAC3BJ,GAAoBz+D,IAAI6+D,EAAQ,IAGlC,MAAMC,EAAgBL,GAAoBh0E,IACxCo0E,GAGF,GAAIF,EAAcG,EAAYzxE,OAC5B,OAAOyxE,EAAYH,GAVP,MAaPI,EAAiBH,EAAjBG,cACP,GAAsB,OAAlBA,EACF,MAAM9uE,MAAO,+BAGf,MAAM+uE,EAAcD,EAAcE,aAAax0E,IAAIo0E,GACnD,GAAmB,MAAfG,EACF,MAAM/uE,MAAO,2CAA0C4uE,MApB3C,MAuBPK,EAAcF,EAAdE,WAKP,GAAoB,IAAhBP,EAAmB,CACrB,MAAMQ,EAAQ,IAAInjD,IAMlB,GAqCJ,SAASojD,EACP9xE,EACA+xE,EACAF,EACAH,GAEA,MAAM5kD,EAAO4kD,EAAYM,UAAU70E,IAAI6C,GAC3B,MAAR8sB,IACF+kD,EAAMn/D,IAAI1S,EAAI,CACZA,KACAo2B,SAAUtJ,EAAKsJ,SACf4H,YAAalR,EAAKkR,YAClBqtC,gBAAiBv+C,EAAKu+C,gBACtBxtE,IAAKivB,EAAKjvB,IACVk0E,WACAE,iBAAoBP,EAAYQ,yBAAyB/0E,IACvD6C,GAEF6D,KAAMipB,EAAKjpB,OAGbipB,EAAKsJ,SAASjyB,QAAQguE,GACpBL,EAA0BK,EAASnyE,EAAI6xE,EAAOH,KA9DhDI,CAA0BP,EAAQ,EAAGM,EAAOH,GAG1B,MAAdE,GAAsBP,EAAcO,EAAW7xE,OAAQ,CACzD,MAAMqyE,EAAaC,GAAW,CAACR,QAAON,UAASK,EAAWP,IAO1D,OADAG,EAAYvxE,KAAKmyE,GACVA,OAEJ,CACL,MAAME,EAAqBlB,GAAc,CACvCC,YAAaA,EAAc,EAC3BC,gBACAC,WAGF,GAAkB,MAAdK,GAAsBP,EAAcO,EAAW7xE,OAAQ,CACzD,MAAMqyE,EAAaC,GACjBC,EACAV,EAAWP,IAQb,OADAG,EAAYvxE,KAAKmyE,GACVA,GAIX,MAAMzvE,MACH,yDAAwD4uE,iBAAsBF,KA+BnF,SAASgB,GACPD,EACAR,GAGA,MAAMC,EAAQ,IAAInjD,IAAI0jD,EAAWP,OAG3BU,EAAiBvyE,IACrB,MAAMwyE,EAAex1E,OAAOwhB,OAC1B,GACAqzD,EAAM10E,IAAI6C,IAGZ,OADA6xE,EAAMn/D,IAAI1S,EAAIwyE,GACPA,GAGT,IAAIl2E,EAAI,EACJ0D,EAAe,KAGnB,MAAMyyE,EAAc,CAClB,MAEIC,EAAkBd,EAAWt1E,KAC7Bq2E,EAAiBr2E,EAAIo2E,EAC3B,KAAOp2E,EAAIq2E,GAAgB,CACzB,MAAMC,EAAahB,EAAWt1E,KACxBu2E,EAAa/H,EAChB8G,EAAWpnE,MAAMlO,EAAGA,EAAIs2E,IAE3BH,EAAYxyE,KAAK4yE,GACjBv2E,GAAKs2E,EAGP,KAAOt2E,EAAIs1E,EAAW7xE,QAAQ,CAC5B,MAAM+yE,EAAYlB,EAAWt1E,GAE7B,OAAQw2E,GACN,KT9K4B,ES+K1B9yE,EAAO4xE,EAAWt1E,EAAI,GACtB,MAAMuH,EAAS+tE,EAAWt1E,EAAI,GAI9B,GAFAA,GAAK,EAEDu1E,EAAM/iD,IAAI9uB,GACZ,MAAM,IAAI2C,MACR,sCACE3C,EACA,sCAIN,GJzKuB,KIyKnB6D,EAA0B,CAC5BvH,IACAA,IAMA,MAAMwwB,EAAuB,CAC3BsJ,SAAU,GACV4H,YAAa,KACbqtC,gBAAiB,KACjBrrE,KACAnC,IAAK,KACLk0E,SAAU,EACVE,iBAAkB,EAClBpuE,QAGFguE,EAAMn/D,IAAI1S,EAAI8sB,OACT,CACL,MAAMilD,EAAaH,EAAWt1E,GAC9BA,IAEAA,IAEA,MACM0hC,EAAcy0C,EADQb,EAAWt1E,IAEvCA,IAEA,MACMuB,EAAM40E,EADQb,EAAWt1E,IAE/BA,IASA,MAAM8G,EAAamvE,EAAcR,GACjC3uE,EAAWgzB,SAAWhzB,EAAWgzB,SAAS12B,OAAOM,GAEjD,MAAM8sB,EAAuB,CAC3BsJ,SAAU,GACV4H,cACAqtC,gBAAiB,KACjBrrE,KACAnC,MACAk0E,WACAE,iBAAkB,EAClBpuE,QAGFguE,EAAMn/D,IAAI1S,EAAI8sB,GAGhB,MACF,KTtP+B,ESsPH,CAC1B,MAAMimD,EAAiBnB,EAAWt1E,EAAI,GACtCA,GAAK,EAEL,IAAK,IAAI02E,EAAc,EAAGA,EAAcD,EAAcC,IAAe,CAInE,GAHAhzE,EAAO4xE,EAAWt1E,GAClBA,KAEKu1E,EAAM/iD,IAAI9uB,GACb,MAAM,IAAI2C,MACR,sCACE3C,EACA,sCAIN,MACM+xE,EADOQ,EAAcvyE,GACL+xE,SAItB,GAFAF,EAAMpkD,OAAOztB,GAER6xE,EAAM/iD,IAAIijD,GAER,CACL,MAAM3uE,EAAamvE,EAAcR,GTjRpB,ESuRb3uE,EAAWgzB,SAAWhzB,EAAWgzB,SAASrwB,OACxCosE,GAAWA,IAAYnyE,SAI7B,MAEF,KT1RyC,ES0RH,CACpCA,EAAO4xE,EAAWt1E,EAAI,GACtB,MAAM22E,EAAgBrB,EAAWt1E,EAAI,GAC/B85B,EAAaw7C,EAAWpnE,MAC5BlO,EAAI,EACJA,EAAI,EAAI22E,GAGV32E,EAAIA,EAAI,EAAI22E,EAMCV,EAAcvyE,GACtBo2B,SAAW9rB,MAAMkJ,KAAK4iB,GAE3B,MAEF,KT5SkD,ES4SH,CAC7Cp2B,EAAK4xE,EAAWt1E,EAAI,GAEpB,MAAMwwB,EAAOylD,EAAcvyE,GAC3B8sB,EAAKmlD,iBAAmBL,EAAWt1E,EAAI,GAAK,IAS5CA,GAAK,EACL,MAEF,QACE,MAAMqG,MAAO,gCAA+BmwE,IAIlD,MAAO,CACLjB,QACAN,OAAQa,EAAWb,QASvB,MCzTM2B,GAA0C,IAAIxkD,ICfpD,MAAMwkD,GAA0C,IAAIxkD,ICWpD,MAAMwkD,GAA0C,IAAIxkD,I,yHCErC,MAAMykD,GAInB1oE,YAAY6mE,GAA8B,wBAHE,IAAI5iD,KAGN,wBAI1B,EACd2iD,cACAE,YAKAH,GAAc,CACZC,cACAC,cAAe5yE,KAAK00E,eACpB7B,YAdsC,0BAiBxB,EAChB8B,UACA9B,aAKA,MAAM+B,EAAqB50E,KAAK60E,cAAcp2E,IAAIk2E,GAClD,GAA0B,MAAtBC,EACF,OAAOA,EAGT,MAAME,EAAe,GAUrB,OAToB90E,KAAK00E,eAAeK,eAAelC,GAC3CmC,WAAWvvE,QAAQ,CAACwvE,EAAatC,KACvCsC,EAAYC,qBAAqB9kD,IAAIukD,IACvCG,EAAavzE,KAAKoxE,KAItB3yE,KAAK60E,cAAc7gE,IAAI2gE,EAASG,GAEzBA,IAvCiC,iCA0CjB,EACvBnC,cACAe,aACAb,YH7CG,UAAsB,YAC3BF,EAD2B,WAE3Be,EAF2B,cAG3Bd,EAH2B,OAI3BC,IAOA,MAAMoC,EAAcrC,EAAcuC,cAActC,EAAQF,GAEjDuC,EAA4CD,EAA5CC,qBAAsBE,EAAsBH,EAAtBG,mBACtBjC,EAASO,EAATP,MAEDkC,EAAgB,GAAExC,KAAUF,IAClC,GAAI6B,GAAgBpkD,IAAIilD,GACtB,OAASb,GAAgB/1E,IAAI42E,GAG/B,MAAMC,EAAoC,IAAItlD,IACxCulD,EAA+B,IAAIr5C,IACnCs5C,EAAgC,GAEtC,IAAIC,EAAW,EACXC,EAAkB,EAGtB,MAAMC,EAAW,CAACr0E,EAAYs0E,EAAqBC,KACjDP,EAAathE,IAAI1S,EAAIu0E,GAErB,MAAMznD,EAAO+kD,EAAM10E,IAAI6C,GACvB,GAAY,MAAR8sB,EACF,MAAMnqB,MAAO,gCAA+B3C,qBAL4B,MASxEo2B,EAKEtJ,EALFsJ,SACA4H,EAIElR,EAJFkR,YACAqtC,EAGEv+C,EAHFu+C,gBACAxtE,EAEEivB,EAFFjvB,IACAo0E,EACEnlD,EADFmlD,iBAGIuC,EAAiBZ,EAAqBz2E,IAAI6C,IAAO,EACjDy0E,EAAeX,EAAmB32E,IAAI6C,IAAO,EAC7C00E,EAAYd,EAAqB9kD,IAAI9uB,GAErCnD,EAAOmhC,GAAe,YACtB22C,EAAmB,OAAR92E,EAAgB,SAAQA,KAAS,GAElD,IAAI+2E,EAAa,GACO,OAApBvJ,GAA4BA,EAAgBtrE,OAAS,IACvD60E,EAAc,KAAIvJ,EAAgB,OAGpC,IAAIwJ,EAAS,GAAEh4E,IAAO+3E,IAAaD,IAC/BD,IACFG,GAAU,KAAIpE,GAAegE,WAAsBhE,GACjD+D,SAIJL,EAAW9qD,KAAKlS,IAAIg9D,EAAUI,GAC9BH,EAAkB/qD,KAAKlS,IAAIi9D,EAAiBK,GAE5C,MAAMK,EAAuB,CAC3BN,iBACAE,YACA10E,KACA60E,QACAh4E,OACAkgB,OAAQu3D,EAAcrC,EACtBwC,eACAxC,oBAGEsC,EAAeL,EAAKn0E,OACtBm0E,EAAKj0E,KAAK,CAAC60E,IAEXZ,EAAKK,EAAe,GAAGt0E,KAAK60E,GAG9B,IAAK,IAAIx4E,EAAI85B,EAASr2B,OAAS,EAAGzD,GAAK,EAAGA,IAAK,CAC7C,MAAM61E,EAAU/7C,EAAS95B,GAEzBg4E,GADuBD,EAASlC,EAASmC,EAAaC,EAAe,GACvCtC,iBAGhC,OAAO6C,GAGT,IAAIC,EAAe,EAGnB,GAAIlD,EAAMnkB,KAAO,EAAG,CAElB,MAAMz9B,EAAO4hD,EAAM10E,IAAIo0E,GACvB,GAAY,MAARthD,EACF,MAAMttB,MACH,qCAAoC4uE,qBAMzC,IAAK,IAAIj1E,EAAI2zB,EAAKmG,SAASr2B,OAAS,EAAGzD,GAAK,EAAGA,IAAK,CAClD,MAAM0D,EAAKiwB,EAAKmG,SAAS95B,GACnBwwB,EAAO+kD,EAAM10E,IAAI6C,GACvB,GAAY,MAAR8sB,EACF,MAAMnqB,MAAO,gCAA+B3C,qBAE9C+0E,GAAgBjoD,EAAKmlD,iBACrBoC,EAASr0E,EAAI+0E,EAAc,GAG7BnB,EAAqBzvE,QAAQ,CAACusE,EAAU1wE,KACtC,IAAI8sB,EAAO+kD,EAAM10E,IAAI6C,GACrB,GAAY,MAAR8sB,EAAc,CAChB,IAAIkoD,EAAYloD,EAAKilD,SACrB,KAAqB,IAAdiD,IACDf,EAAgBnlD,IAAIkmD,IAItBf,EAAgBp4D,IAAIm5D,GAGtBloD,EAAO+kD,EAAM10E,IAAI63E,GACjBA,EAAoB,MAARloD,EAAeA,EAAKilD,SAAW,KAMnD,MAAMkD,EAAY,CAChBF,eACAG,MAAOf,EACPH,eACAI,kBACAH,kBACAC,QAKF,OAFAhB,GAAgBxgE,IAAIqhE,EAAckB,GAE3BA,EGhGLE,CAAuB,CACrB9D,cACAe,aACAd,cAAe5yE,KAAK00E,eACpB7B,YAvDsC,mCA0Df,EACzBA,YF1EG,UAAsB,cAC3BD,EAD2B,OAE3BC,IAKA,GAAI2B,GAAgBpkD,IAAIyiD,GACtB,OAAS2B,GAAgB/1E,IAAIo0E,GAG/B,MAAMG,EAAcJ,EAAcmC,eAAelC,GACjD,GAAmB,MAAfG,EACF,MAAM/uE,MAAO,2CAA0C4uE,MAP5C,MAUNmC,EAA4BhC,EAA5BgC,WAAY0B,EAAgB1D,EAAhB0D,aAEbC,EACJ3B,EAAW3zE,OAAS,EAAI2zE,EAAWA,EAAW3zE,OAAS,GAAG6wE,UAAY,EAExE,IAAI0E,EAAoB,EAExB5B,EAAWvvE,QAAQwvE,IACjB2B,EAAoBjsD,KAAKlS,IAAIm+D,EAAmB3B,EAAYjD,YAG9D,MAAMuE,EAAY,CAChBG,aAAc9qE,MAAMkJ,KAAK4hE,EAAa9pD,UACtC+pD,sBACAC,qBAKF,OAFApC,GAAgBxgE,IAAI6+D,EAAQ0D,GAErBA,EE2CLM,CAAyB,CACvBjE,cAAe5yE,KAAK00E,eACpB7B,YAjEsC,6BAoErB,EACnBF,cACAe,aACAb,YD3EG,UAAsB,YAC3BF,EAD2B,WAE3Be,EAF2B,cAG3Bd,EAH2B,OAI3BC,IAOA,MAAMoC,EAAcrC,EAAcuC,cAActC,EAAQF,GAEjDuC,EAA4CD,EAA5CC,qBAAsBE,EAAsBH,EAAtBG,mBACtBjC,EAASO,EAATP,MAEDkC,EAAgB,GAAExC,KAAUF,IAClC,GAAI6B,GAAgBpkD,IAAIilD,GACtB,OAASb,GAAgB/1E,IAAI42E,GAG/B,IAAIK,EAAkB,EAEtB,MAAMoB,EAA+B,GACrC5B,EAAqBzvE,QAAQ,CAACqwE,EAAgBx0E,KAC5C,MAAM8sB,EAAO+kD,EAAM10E,IAAI6C,GAEvB,GAAY,MAAR8sB,EACF,MAAMnqB,MAAO,gCAA+B3C,qBAJK,MAO5Cg+B,EAAoClR,EAApCkR,YAAangC,EAAuBivB,EAAvBjvB,IAAKk0E,EAAkBjlD,EAAlBilD,SAAUluE,EAAQipB,EAARjpB,KAGnC,GAAiB,IAAbkuE,EACF,OAEF,MAAM0C,EAAeX,EAAmB32E,IAAI6C,IAAO,EACnDo0E,EAAkB/qD,KAAKlS,IAAIi9D,EAAiBK,GAE5C,MAAM53E,EAAOmhC,GAAe,YAG5B,IAAI42C,EAAa,GPjDgB,IOkD7B/wE,EACF+wE,EAAa,gBPjDY,IOkDhB/wE,IACT+wE,EAAa,WAGf,MAAMC,EAAS,GAAEh4E,IAAO+3E,IATC,OAAR/2E,EAAgB,SAAQA,KAAS,OASA4yE,GAChDgE,QAEFe,EAAWv1E,KAAK,CACdD,KACA60E,QACAh4E,OACAU,MAAOk3E,MAIX,MAAMQ,EAAY,CAChBlE,SAAUqD,EACVvC,MAAO2D,EAAWjjE,KAAK,CAACjJ,EAAGC,IAAMA,EAAEhM,MAAQ+L,EAAE/L,QAK/C,OAFA21E,GAAgBxgE,IAAIqhE,EAAckB,GAE3BA,ECaLQ,CAAmB,CACjBpE,cACAe,aACAd,cAAe5yE,KAAK00E,eACpB7B,YAhFF7yE,KAAK00E,eAAiB9B,EAmFxBoE,aACEh3E,KAAK60E,cAAc9M,QJ8NrB0K,GAAoB1K,QC5JpByM,GAAgBzM,QC/HhByM,GAAgBzM,QC4ChByM,GAAgBzM,S,8oCEjFH,MAAMkP,WAAsB12D,EAyDzCxU,YACEmrE,EACAC,EACAC,GAEA71D,QADA,wBAjD2C,IAiD3C,wBA3C4C,MA2C5C,8BApCiC,IAAI2a,KAoCrC,oCA3BkE,IAAIlM,KA2BtE,wCAnBiE,IAAIA,KAmBrE,wBAfsB,GAetB,gDAZmD,IAAIkM,KAYvD,yBAR4B,IAAIA,KAQhC,0CAuHgC,CAChCm7C,EACAC,KAEA,MAAMznB,EAAU7vD,KAAKu3E,OAAOC,eAAeH,GAC3C,GAAgB,OAAZxnB,EAAkB,CACpB,MAAM4nB,EAA6B,CACjCn2E,GAAI+1E,EACJ3/C,SAAUm4B,EAAQn4B,SAAS5rB,MAAM,GACjCwzB,YAAauwB,EAAQvwB,YACrBqtC,gBAAiB9c,EAAQ8c,gBACzBxtE,IAAK0wD,EAAQ1wD,IACbgG,KAAM0qD,EAAQ1qD,MAEhBmyE,EAAmBtjE,IAAIqjE,EAAWI,GAElC5nB,EAAQn4B,SAASjyB,QAAQguE,GACvBzzE,KAAK03E,gCAAgCjE,EAAS6D,OAxIlD,6BA6IoBpE,IAEpB,MAAM5K,EAAa4K,EAAW,GACxBL,EAASK,EAAW,GAE1B,GAAIlzE,KAAK23E,aAAc,CACrB,IAAIC,EAAsB53E,KAAK63E,8BAA8Bp5E,IAAIo0E,GACtC,MAAvB+E,GACFA,EAAsB,CAAC1E,GACvBlzE,KAAK63E,8BAA8B7jE,IAAI6+D,EAAQ+E,IAE/CA,EAAoBr2E,KAAK2xE,GAGtBlzE,KAAK83E,oBAAoB1nD,IAAIk4C,IAChCtoE,KAAK83E,oBAAoB36D,IAAImrD,GAG1BtoE,KAAK+3E,0BAA0B3nD,IAAIyiD,IACtC7yE,KAAK+3E,0BAA0B/jE,IAAI6+D,EAAQ,IAAI7iD,KAGjDhwB,KAAKg4E,sCAAsC76D,IAAImrD,MAnKjD,gCAuKuB2P,IACvB,GAAIj4E,KAAK23E,aAEP,OAH2D,MAMtDrP,EAAc2P,EAAd3P,WAEP,IAAKtoE,KAAKk4E,eAAe9nD,IAAIk4C,GAC3B,MAAMrkE,MACH,mDAAkDqkE,MAIvDtoE,KAAKm4E,cAAc52E,KAAK02E,GACxBj4E,KAAKk4E,eAAenpD,OAAOu5C,GAEM,IAA7BtoE,KAAKk4E,eAAelpB,OACtBhvD,KAAKo4E,cN1OJ,SACLC,EACAC,EACAC,GAEA,MAAMtF,EAA0D,IAAIjjD,IA6DpE,OA3DAqoD,EAAa5yE,QAAQwyE,IACnBA,EAAYhF,aAAaxtE,QACvB,EACEuvE,aACA11C,cACAk0C,2BACAgF,qBACA9B,eACA7D,aAEA,MAAMK,EAAaoF,EAAmB75E,IAAIo0E,GAC1C,GAAkB,MAAdK,EACF,MAAMjvE,MAAO,gDAA+C4uE,GAG9D,MAAMS,EAAYiF,EAAkB95E,IAAIo0E,GACxC,GAAiB,MAAbS,EACF,MAAMrvE,MAAO,+CAA8C4uE,GAW7D,MAAM4F,EAAsBzD,EAAW/0E,IACrC,CAACy4E,EAAmB/F,KAApB,CACEgG,mBAC0C,MAAxCD,EAAkBC,mBACd,IAAI3oD,IAAI0oD,EAAkBC,oBAC1B,KACN3G,SAAU0G,EAAkB1G,SAC5BkD,qBAAsB,IAAIllD,IACxB0oD,EAAkBxD,sBAEpBE,mBAAoB,IAAIplD,IAAI0oD,EAAkBtD,oBAC9CwD,eAAgBF,EAAkBE,eAClC3d,cAAeyd,EAAkBzd,cACjCiX,UAAWwG,EAAkBxG,aAIjCe,EAAaj/D,IAAI6+D,EAAQ,CACvBmC,WAAYyD,EACZn5C,cACAk0C,yBAA0B,IAAIxjD,IAAIwjD,GAClCgF,mBAAoB,IAAIxoD,IAAIwoD,GAC5B9B,aAAc,IAAI1mD,IAAI0mD,GACtBxD,aACAL,SACAS,kBAMD,CAACL,eAAc4F,UAAU,GMwKPC,CACnB94E,KAAKm4E,cACLn4E,KAAK63E,8BACL73E,KAAK+3E,2BAGP/3E,KAAKm4E,cAAcrzE,OAAO,GAE1B9E,KAAK+kB,KAAK,uBAjMZ,2BAqMiB,KACjB/kB,KAAK+4E,QAAQl+D,eAAe,aAAc7a,KAAKg5E,oBAC/Ch5E,KAAK+4E,QAAQl+D,eAAe,gBAAiB7a,KAAKi5E,uBAClDj5E,KAAK+4E,QAAQl+D,eAAe,kBAAmB7a,KAAKk5E,mBACpDl5E,KAAK+4E,QAAQl+D,eAAe,WAAY7a,KAAKm5E,oBAzM7C,4BA4MmBC,IACnB,GAAIA,EAAa,CACfp5E,KAAKm4E,cAAcrzE,OAAO,GAC1B9E,KAAKo4E,cAAgB,KACrBp4E,KAAK83E,oBAAoB/P,QACzB/nE,KAAK+3E,0BAA0BhQ,QAC/B/nE,KAAK63E,8BAA8B9P,QACnC/nE,KAAKg4E,sCAAsCjQ,QAC3C/nE,KAAKk4E,eAAenQ,QAPL,WAWU/nE,KAAKu3E,OAAO8B,mBAAmBzsD,UAXzC,IAWf,2BAAkE,OAAvD07C,EAAuD,QAC3DtoE,KAAK83E,oBAAoB1nD,IAAIk4C,IAChCtoE,KAAK83E,oBAAoB36D,IAAImrD,IAblB,8BAmBftoE,KAAKu3E,OAAO+B,MAAM7zE,QAAQotE,IACxB,MAAMyE,EAAqB,IAAItnD,IAC/BhwB,KAAK+3E,0BAA0B/jE,IAAI6+D,EAAQyE,GAC3Ct3E,KAAK03E,gCAAgC7E,EAAQyE,KAI7Ct3E,KAAK23E,eAAiByB,IACxBp5E,KAAK23E,aAAeyB,EAKpBp5E,KAAKu5E,OAAOvC,aAEZh3E,KAAK+kB,KAAK,eAKLq0D,IACHp5E,KAAKm4E,cAAcrzE,OAAO,GAC1B9E,KAAKk4E,eAAenQ,QAKpB/nE,KAAKg4E,sCAAsCvyE,QAAQ6iE,IAC5CtoE,KAAKk4E,eAAe9nD,IAAIk4C,KAC3BtoE,KAAKk4E,eAAe/6D,IAAImrD,GAExBtoE,KAAK+4E,QAAQzxD,KAAK,mBAAoB,CAACghD,kBAI3CtoE,KAAK+kB,KAAK,wBAhQd/kB,KAAK+4E,QAAU7B,EACfl3E,KAAK23E,aAAeP,EACpBp3E,KAAKu3E,OAASJ,EAEdD,EAAOxP,YAAY,aAAc1nE,KAAKg5E,oBACtC9B,EAAOxP,YAAY,gBAAiB1nE,KAAKi5E,uBACzC/B,EAAOxP,YAAY,kBAAmB1nE,KAAKk5E,mBAC3ChC,EAAOxP,YAAY,WAAY1nE,KAAKm5E,kBAIpCjC,EAAO5vD,KAAK,sBAEZtnB,KAAKu5E,OAAS,IAAI9E,GAAez0E,MAGnCm1E,cAActC,EAAgBF,GAC5B,GAA2B,OAAvB3yE,KAAKo4E,cAAwB,CAC/B,MAAMpF,EAAchzE,KAAKo4E,cAAcnF,aAAax0E,IAAIo0E,GACxD,GAAmB,MAAfG,EAAqB,CACvB,MAAMiC,EAAcjC,EAAYgC,WAAWrC,GAC3C,GAAmB,MAAfsC,EACF,OAAOA,GAKb,MAAMhxE,MACH,wCAAuC4uE,iBAAsBF,KAIlEoC,eAAelC,GACb,GAA2B,OAAvB7yE,KAAKo4E,cAAwB,CAC/B,MAAMpF,EAAchzE,KAAKo4E,cAAcnF,aAAax0E,IAAIo0E,GACxD,GAAmB,MAAfG,EACF,OAAOA,EAIX,MAAM/uE,MAAO,wCAAuC4uE,MAItD,uBACE,OACyB,OAAvB7yE,KAAKo4E,eAA0Bp4E,KAAKo4E,cAAcnF,aAAajkB,KAAO,EAI1E,uBACE,OAAOhvD,KAAKk4E,eAAelpB,KAAO,GAAKhvD,KAAKm4E,cAAc92E,OAAS,EAGrE,kBACE,OAAOrB,KAAK23E,aAGd,qBACE,OAAO33E,KAAKu5E,OAGd,oBACE,OAAOv5E,KAAKo4E,cAEd,kBAAkBv5E,GACZmB,KAAK23E,aACPtvE,QAAQsgE,KACN,qEAKJ3oE,KAAKm4E,cAAcrzE,OAAO,GAC1B9E,KAAKo4E,cAAgBv5E,EACrBmB,KAAK83E,oBAAoB/P,QACzB/nE,KAAK+3E,0BAA0BhQ,QAC/B/nE,KAAK63E,8BAA8B9P,QACnC/nE,KAAKu5E,OAAOvC,aAEZh3E,KAAK+kB,KAAK,kBAGZgjD,QACE/nE,KAAKm4E,cAAcrzE,OAAO,GAC1B9E,KAAKo4E,cAAgB,KACrBp4E,KAAK83E,oBAAoB/P,QACzB/nE,KAAK+3E,0BAA0BhQ,QAC/B/nE,KAAK63E,8BAA8B9P,QACnC/nE,KAAKk4E,eAAenQ,QAIpB/nE,KAAKu5E,OAAOvC,aAEZh3E,KAAK+kB,KAAK,iBAGZy0D,iBACEx5E,KAAK+4E,QAAQzxD,KAAK,iBAAkBtnB,KAAKu3E,OAAOkC,0BAQlDC,gBACE15E,KAAK+4E,QAAQzxD,KAAK,kB,woDChIP,MAAMqyD,WAAcp5D,EAqEjCxU,YAAYmrE,EAAwB0C,GAClCr4D,QADmD,mCAvDlB,GAuDkB,6BAlDxB,GAkDwB,uBA7ChB,IAAIyO,KA6CY,yCA1CZ,GA0CY,yCAtCZ,GAsCY,4CApCc,MAoCd,qBAhCd,IAAIA,KAgCU,qCA5BhB,GA4BgB,oBAxBjC,GAwBiC,iBApBpB,IAoBoB,gCAlBF,IAAIA,KAkBF,8BAfV,IAAIA,KAeM,qCAXhB,GAWgB,8BAVvB,GAUuB,qCAThB,GASgB,iCARpB,GAQoB,+CANN,GAMM,6BAFxB,GAEwB,kCAghB3B,CACxB6pD,EACAC,KAEA,IAAIC,GAA2B,EAE/B,KAAwB,MAAjBF,GAAuB,CAK5B,GAJAA,EAAcG,QAAUF,EAIpBD,EAAc5vE,YAAa,CAC7B8vE,GAA2B,EAC3B,MAGFF,EAAkB75E,KAAKi6E,aAAax7E,IAClCo7E,EAAcxG,UAKb0G,IACH/5E,KAAKk6E,oBAAsBJ,KAviBsB,6CA2iBhB,EACnCK,cACAC,sBAKAp6E,KAAKq6E,8BAAgCF,EACrCn6E,KAAKs6E,kCAAoCF,GAAmB,KAE5Dp6E,KAAK+kB,KAAK,+BArjByC,6BAwjB/BmuD,IAMpB,IAAIqH,GAAmB,EAGvB,MAAMjS,EAAa4K,EAAW,GAExBsH,EAAiC,GAEjCC,EAAyC,IAAIzqD,IAGnD,IAAIpyB,EAAI,EAGR,MAAMm2E,EAAc,CAClB,MAEIC,EAAkBd,EAAWt1E,KAC7Bq2E,EAAiBr2E,EAAIo2E,EAC3B,KAAOp2E,EAAIq2E,GAAgB,CACzB,MAAMC,EAAahB,EAAWt1E,KACxBu2E,EAAa/H,EAChB8G,EAAWpnE,MAAMlO,EAAGA,EAAIs2E,IAE3BH,EAAYxyE,KAAK4yE,GACjBv2E,GAAKs2E,EAGP,KAAOt2E,EAAIs1E,EAAW7xE,QAAQ,CAC5B,MAAM+yE,EAAYlB,EAAWt1E,GAC7B,OAAQw2E,GACN,KfxtB0B,EewtBD,CACvB,MAAM9yE,EAAO4xE,EAAWt1E,EAAI,GACtBuH,EAAS+tE,EAAWt1E,EAAI,GAI9B,GAFAA,GAAK,EAEDoC,KAAKi6E,aAAa7pD,IAAI9uB,GACxB,MAAM2C,MACH,mBAAkB3C,0DAIvB,IAAIo5E,EAAkB,EAClBrH,EAAqB,KACzB,GVntBqB,KUmtBjBluE,EAA0B,CfxuBf,Ee6uBb,MAAMw1E,EAAoBzH,EAAWt1E,GAAK,EAC1CA,IAEA,MAAMg9E,EAAmB1H,EAAWt1E,GAAK,EACzCA,IAEAoC,KAAK66E,OAAS76E,KAAK66E,OAAO75E,OAAOM,GACjCtB,KAAK86E,oBAAoB9mE,IAAI1S,EAAIgnE,GACjCtoE,KAAK+6E,sBAAsB/mE,IAAI1S,EAAI,CACjCs5E,mBACAD,sBAGF36E,KAAKi6E,aAAajmE,IAAI1S,EAAI,CACxBo2B,SAAU,GACV8+C,OAAQ,EACRl3C,YAAa,KACbqtC,gBAAiB,KACjBrrE,KACA2I,aAAa,EACb9K,IAAK,KACLu7E,QAAS,EACTrH,SAAU,EACVluE,OACA60E,OAAQ,IAGVO,GAAmB,MACd,CACLlH,EAAaH,EAAWt1E,GACxBA,IAEA88E,EAAYxH,EAAWt1E,GACvBA,IAEA,MACM0hC,EAAcy0C,EADQb,EAAWt1E,IAEvCA,IAEA,MACMuB,EAAM40E,EADQb,EAAWt1E,IAW/B,GATAA,KASKoC,KAAKi6E,aAAa7pD,IAAIijD,GACzB,MAAMpvE,MACH,oBAAmB3C,eAAgB+xE,qDAIxC,MAAMwG,EAAkB75E,KAAKi6E,aAAax7E,IACxC40E,GAEFwG,EAAcniD,SAASn2B,KAAKD,GA/BvB,WAoCDorE,EAA2BptC,EAAan6B,GApCvC,GAkCH61E,EAlCG,KAmCHrO,EAnCG,KAsCC9c,EAAmB,CACvBn4B,SAAU,GACV8+C,MAAOqD,EAAcrD,MAAQ,EAC7Bl3C,YAAa07C,EACbrO,kBACArrE,KACA2I,YAAajK,KAAKi7E,wBAClB97E,MACAu7E,UACArH,SAAUwG,EAAcv4E,GACxB6D,OACA60E,OAAQ,GAOV,GAJAh6E,KAAKi6E,aAAajmE,IAAI1S,EAAIuuD,GAC1B2qB,EAAgBj5E,KAAKD,GACrBtB,KAAKk7E,wBAAwBrB,EAAe,GAExCa,EAAU,EAAG,CACf,IAAI1mE,EAAMhU,KAAKm7E,WAAW18E,IAAIi8E,QAClBz1E,IAAR+O,IACFA,EAAM,IAAIkoB,IACVl8B,KAAKm7E,WAAWnnE,IAAI0mE,EAAS1mE,IAE/BA,EAAImJ,IAAI7b,IAGZ,MAEF,Kfz0B6B,Eey0BD,CAC1B,MAAM+yE,EAAiBnB,EAAWt1E,EAAI,GACtCA,GAAK,EAEL,IAAK,IAAI02E,EAAc,EAAGA,EAAcD,EAAcC,IAAe,CACnE,MAAMhzE,EAAO4xE,EAAWt1E,GAExB,IAAKoC,KAAKi6E,aAAa7pD,IAAI9uB,GACzB,MAAM2C,MACH,sBAAqB3C,sDAI1B1D,GAAK,EAEL,MAAMiyD,EAAY7vD,KAAKi6E,aAAax7E,IAAI6C,GACjCo2B,EAAuCm4B,EAAvCn4B,SAAUgjD,EAA6B7qB,EAA7B6qB,QAASrH,EAAoBxjB,EAApBwjB,SAAU2G,EAAUnqB,EAAVmqB,OACpC,GAAItiD,EAASr2B,OAAS,EACpB,MAAM,IAAI4C,MAAO,QAAO3C,sCAG1BtB,KAAKi6E,aAAalrD,OAAOztB,GAEzB,IAAIu4E,EAAgB,KACpB,GAAiB,IAAbxG,EAKFrzE,KAAK66E,OAAS76E,KAAK66E,OAAOxzE,OAAOwrE,GAAUA,IAAWvxE,GACtDtB,KAAK86E,oBAAoB/rD,OAAOztB,GAChCtB,KAAK+6E,sBAAsBhsD,OAAOztB,GAElCi5E,GAAmB,MACd,CAKL,GADAV,EAAkB75E,KAAKi6E,aAAax7E,IAAI40E,QAClBpuE,IAAlB40E,EACF,MAAM51E,MACH,sBAAqB3C,iBAAkB+xE,sDAG5C,MAAMlsE,EAAQ0yE,EAAcniD,SAAS7yB,QAAQvD,GAC7Cu4E,EAAcniD,SAAS5yB,OAAOqC,EAAO,GAOvC,GAJAnH,KAAKk7E,wBAAwBrB,GAAgBG,GAC7CS,EAAkBzmE,IAAI1S,EAAI+xE,GAE1BrzE,KAAKm7E,WAAWpsD,OAAOztB,GACnBo5E,EAAU,EAAG,CACf,MAAM1mE,EAAMhU,KAAKm7E,WAAW18E,IAAIi8E,QACpBz1E,IAAR+O,GACFA,EAAI+a,OAAOztB,IAIjB,MAEF,Kfr4BuC,Eeq4BD,CACpC,MAAMA,EAAO4xE,EAAWt1E,EAAI,GACtB22E,EAAgBrB,EAAWt1E,EAAI,GAGrC,GAFAA,GAAK,GAEAoC,KAAKi6E,aAAa7pD,IAAI9uB,GACzB,MAAM2C,MACH,oCAAmC3C,sDAIxC,MACMo2B,EADY13B,KAAKi6E,aAAax7E,IAAI6C,GACfo2B,SACzB,GAAIA,EAASr2B,SAAWkzE,EACtB,MAAMtwE,MACH,mEAIL,IAAK,IAAIZ,EAAI,EAAGA,EAAIkxE,EAAalxE,IAAK,CACpC,MAAMowE,EAAUP,EAAWt1E,EAAIyF,GAC/Bq0B,EAASr0B,GAAKowE,EAWhB71E,GAAK22E,EAKL,MAEF,Kf36BgD,Ee+6B9C32E,GAAK,EACL,MACF,QACE,MAAMqG,MAAO,gCAA+BmwE,IAMlD,GAFAp0E,KAAKo7E,YAEDb,EAAkB,CACpB,MAAMc,EAAwBr7E,KAAKs7E,mBAEnCt7E,KAAKu7E,mBAAoB,EACzBv7E,KAAKs7E,oBAAqB,EAC1Bt7E,KAAK+6E,sBAAsBt1E,QACzB,EAAEm1E,mBAAkBD,wBACdC,IACF56E,KAAKu7E,mBAAoB,GAEvBZ,IACF36E,KAAKs7E,oBAAqB,KAKhCt7E,KAAK+kB,KAAK,SAEN/kB,KAAKs7E,qBAAuBD,GAC9Br7E,KAAK+kB,KAAK,qBASd/kB,KAAK+kB,KAAK,UAAW,CAACy1D,EAAiBC,MA31BY,2CAo2BnDhO,IAEAzsE,KAAKw7E,kBAAoB/O,EAEzBD,EAAqBC,KAx2B8B,2BA22BlC,KAKjBzsE,KAAK+4E,QAAQl+D,eAAe,aAAc7a,KAAKg5E,oBAC/Ch5E,KAAK+4E,QAAQl+D,eAAe,WAAY7a,KAAKm5E,kBAC7Cn5E,KAAK+4E,QAAQl+D,eACX,+BACA7a,KAAKy7E,4BAp3B4C,mCAw3BzBC,IAC1B17E,KAAK27E,8BAAgCD,EAErC17E,KAAK+kB,KAAK,8BA33ByC,6CA83BhB,KACnC/kB,KAAK47E,qCAAsC,EAE3C57E,KAAK+kB,KAAK,wCA13BV/kB,KAAKi7E,wBAEH,SADA1Q,EAlGJ,2CAqGEvqE,KAAK67E,0BAEH,SADAtR,EApGJ,6CAuGEvqE,KAAKw7E,kBAAoBlP,IAEzB,IAAI8M,GAAc,EAClB,GAAc,MAAVQ,EAAgB,CAClBR,GAAqC,IAAvBQ,EAAOR,YADH,MAIhB0C,EAIElC,EAJFkC,yBACAnB,EAGEf,EAHFe,kBACAoB,EAEEnC,EAFFmC,yBACAC,EACEpC,EADFoC,qBAEFh8E,KAAKi8E,2BAAyD,IAA7BH,EAC7BnB,IACF36E,KAAKs7E,oBAAqB,GAExBS,IACF/7E,KAAKk8E,2BAA4B,GAE/BF,IACFh8E,KAAKm8E,uBAAwB,GAIjCn8E,KAAK+4E,QAAU7B,EACfA,EAAOxP,YAAY,aAAc1nE,KAAKg5E,oBACtC9B,EAAOxP,YACL,2BACA1nE,KAAKo8E,kCAEPlF,EAAOxP,YAAY,WAAY1nE,KAAKm5E,kBACpCjC,EAAOxP,YACL,+BACA1nE,KAAKy7E,0BAEPvE,EAAOxP,YACL,+BACA1nE,KAAKq8E,oCAEPnF,EAAOxP,YACL,6BACA1nE,KAAKs8E,oCAGPt8E,KAAK00E,eAAiB,IAAIuC,GAAcC,EAAQl3E,KAAMo5E,GAIxDmD,6BAC4B,IAAtBv8E,KAAKs5E,MAAMj4E,SAEbrB,KAAKw8E,8BAA8Bx8E,KAAKi6E,aAAc,gBACtDj6E,KAAKw8E,8BAA8Bx8E,KAAKm7E,WAAY,eAItDn7E,KAAKw8E,8BACHx8E,KAAK+6E,sBACL,yBAEF/6E,KAAKw8E,8BACHx8E,KAAK86E,oBACL,uBAKJ0B,8BAA8Bv8E,EAAoBw8E,GAChD,MAAMC,EAAe18E,KAAKs5E,MAAMj4E,OAChC,GAAIpB,EAAI+uD,OAAS0tB,EACf,MAAM,IAAIz4E,MACP,YAAWw4E,gBAAsBC,4BAChCz8E,EAAI+uD,iBACO2tB,kBAAQ18E,EAAK,CACxBu2E,MAAO,QAMf,6BACE,OAAOx2E,KAAKi7E,wBAEd,2BAA2Bp8E,GACzBmB,KAAKi7E,wBAA0Bp8E,EAE/B6rE,EA/LF,0CAiMI7rE,EAAQ,OAAS,SAGnBmB,KAAK+kB,KAAK,0BAGZ,uBACE,OAAO/kB,KAAKw7E,kBAEd,qBAAqB38E,GACnB,GAAImB,KAAK00E,eAAe0E,YAGtB,MAAMn1E,MAAM,oDAKd,MAAM24E,EAA8B58E,KAAKw7E,kBAAkBn0E,OACzDA,GAAUA,EAAOklE,WAEbsQ,EAA8Bh+E,EAAMwI,OACxCA,GAAUA,EAAOklE,WAEnB,IAAIuQ,EACFF,EAA4Bv7E,SAAWw7E,EAA4Bx7E,OACrE,IAAKy7E,EACH,IAAK,IAAIl/E,EAAI,EAAGA,EAAIi/E,EAA4Bx7E,OAAQzD,IAAK,CAG3D,GAAIgvE,EAFegQ,EAA4Bh/E,GAC5Bi/E,EAA4Bj/E,IACH,CAC1Ck/E,GAA4B,EAC5B,OAKN98E,KAAKw7E,kBAAoB38E,EAGzB2tE,EAAqB3tE,GAKjBi+E,GACF98E,KAAK+4E,QAAQzxD,KAAK,yBAA0BzoB,GAG9CmB,KAAK+kB,KAAK,oBAGZ,uBACE,OAAO/kB,KAAKu7E,kBAGd,uCACE,OAAOv7E,KAAKs6E,kCAGd,kBACE,OAAOt6E,KAAKk6E,mBAGd,oBACE,OAAOl6E,KAAK00E,eAGd,+BACE,OAAO10E,KAAK67E,0BAEd,6BAA6Bh9E,GAC3BmB,KAAK67E,0BAA4Bh9E,EAEjC6rE,EAzQF,4CA2QI7rE,EAAQ,OAAS,SAGnBmB,KAAK+kB,KAAK,4BAGZ,eACE,OAAO/kB,KAAKo7E,UAGd,yBACE,OAAOp7E,KAAK86E,oBAGd,YACE,OAAO96E,KAAK66E,OAGd,+BACE,OAAO76E,KAAKi8E,0BAGd,gCACE,OAAOj8E,KAAKq6E,8BAGd,wBACE,OAAOr6E,KAAKs7E,mBAEd,+BAIE,OAAOt7E,KAAKk8E,2BAA6Bl8E,KAAK27E,8BAGhD,2BACE,OAAO37E,KAAKm8E,sBAGd,yCACE,OAAOn8E,KAAK47E,oCAGdmB,gBAAgBz7E,GACd,OAAoC,MAA7BtB,KAAKi6E,aAAax7E,IAAI6C,GAG/B07E,kBAAkB71E,GAChB,GAAIA,EAAQ,GAAKA,GAASnH,KAAKi9E,YAK7B,OAJA50E,QAAQsgE,KACL,iBAAgBxhE,+BAAmCnH,KAAKi9E,sBAGpD,KAIT,IAAIpK,EACAthD,EACA2rD,EAAa,EACjB,IAAK,IAAIt/E,EAAI,EAAGA,EAAIoC,KAAK66E,OAAOx5E,OAAQzD,IAGtC,GAFAi1E,EAAS7yE,KAAK66E,OAAOj9E,GACrB2zB,EAASvxB,KAAKi6E,aAAax7E,IAAIo0E,GACF,IAAzBthD,EAAKmG,SAASr2B,OAAlB,CAEO,GAAI67E,EAAa3rD,EAAKyoD,OAAS7yE,EACpC,MAEA+1E,GAAc3rD,EAAKyoD,OAMvB,IAAImD,EAAmB5rD,EACnB6rD,EAAgBF,EAAa,EACjC,KAAO/1E,IAAUi2E,GAAe,CAC9B,MAAM7I,EAAc4I,EAAezlD,SAASr2B,OAC5C,IAAK,IAAIzD,EAAI,EAAGA,EAAI22E,EAAa32E,IAAK,CACpC,MAAM61E,EAAU0J,EAAezlD,SAAS95B,GAClCurC,EAAUnpC,KAAKi6E,aAAax7E,IAAIg1E,GAChC4J,EAAcl0C,EAAMl/B,YAAc,EAAIk/B,EAAM6wC,OAElD,GAAI7yE,GAASi2E,EAAgBC,EAAa,CACxCD,IACAD,EAAiBh0C,EACjB,MAEAi0C,GAAiBC,GAKvB,OAASF,GAAkC,KAG7CG,oBAAoBn2E,GAClB,MAAM0oD,EAA0B7vD,KAAKg9E,kBAAkB71E,GACvD,OAAmB,OAAZ0oD,EAAmB,KAAOA,EAAQvuD,GAG3Ck2E,eAAel2E,GACb,MAAMuuD,EAAU7vD,KAAKi6E,aAAax7E,IAAI6C,GACtC,OAAe,MAAXuuD,GACFxnD,QAAQsgE,KAAM,6BAA4BrnE,MACnC,MAGFuuD,EAGT0tB,oBAAoBj8E,GAClB,MAAMuuD,EAAU7vD,KAAKw3E,eAAel2E,GAEpC,GAAgB,OAAZuuD,GAAyC,IAArBA,EAAQwjB,SAC9B,OAAO,KAOT,IAAImK,EAAal8E,EACbg1E,EAAYzmB,EAAQwjB,SACpBlsE,EAAQ,EACZ,OAAa,CACX,MAAMgwB,EAAYn3B,KAAKi6E,aAAax7E,IAAI63E,GAEjC5+C,EAAYP,EAAZO,SACP,IAAK,IAAI95B,EAAI,EAAGA,EAAI85B,EAASr2B,OAAQzD,IAAK,CACxC,MAAM61E,EAAU/7C,EAAS95B,GACzB,GAAI61E,IAAY+J,EACd,MAEF,MAAMr0C,EAAUnpC,KAAKi6E,aAAax7E,IAAIg1E,GACtCtsE,GAASgiC,EAAMl/B,YAAc,EAAIk/B,EAAM6wC,OAGzC,GAAyB,IAArB7iD,EAAQk8C,SAEV,MAGFlsE,IAEAq2E,EAAarmD,EAAQ71B,GACrBg1E,EAAYn/C,EAAQk8C,SAKtB,IAAK,IAAIz1E,EAAI,EAAGA,EAAIoC,KAAK66E,OAAOx5E,OAAQzD,IAAK,CAC3C,MAAMi1E,EAAS7yE,KAAK66E,OAAOj9E,GAC3B,GAAIi1E,IAAWyD,EACb,MAGFnvE,GADenH,KAAKi6E,aAAax7E,IAAIo0E,GACvBmH,OAGhB,OAAO7yE,EAGTs2E,wBAAwB/C,GACtB,MAAM56E,EAAO,GACP+vD,EAAU7vD,KAAKi6E,aAAax7E,IAAIi8E,GACtC,GAAe,MAAX7qB,EAAiB,CACnB/vD,EAAKyB,KAAL,SACKsuD,GADL,IAEE2mB,MAAO,KAGT,MAAMkH,EAAc19E,KAAKm7E,WAAW18E,IAAIi8E,GACxC,QAAoBz1E,IAAhBy4E,EAA2B,CAC7B,MAAMC,EAAgC,IAAI3tD,IAAI,CAAC,CAAC0qD,EAAS,KAQvC9uE,MAAMkJ,KAAK4oE,GAAa7pE,KACxC,CAAC+pE,EAAKC,IACF79E,KAAKu9E,oBAAoBK,GACzB59E,KAAKu9E,oBAAoBM,IASrBp4E,QAAQnE,IAChB,MAAMw8E,EAAe99E,KAAKi6E,aAAax7E,IAAI6C,GAC3C,GAAoB,MAAhBw8E,EAAsB,CACxB,IAAIzK,EAAWyK,EAAazK,SAExBmD,EAAQ,EACZ,KAAOnD,EAAW,GAAG,CACnB,GAAIA,IAAaqH,GAAWgD,EAAYttD,IAAIijD,GAAW,CACrDmD,EAAQmH,EAASl/E,IAAI40E,GAAY,EACjCsK,EAAS3pE,IAAI1S,EAAIk1E,GACjB,MAEF,MAAMp0E,EAASpC,KAAKi6E,aAAax7E,IAAI40E,GACrC,GAAc,MAAVjxE,EACF,MAEFixE,EAAWjxE,EAAOixE,SAGpB,GAAc,IAAVmD,EACF,MAAMvyE,MAAM,uBAGdnE,EAAKyB,KAAL,SAAcu8E,GAAd,IAA4BtH,eAMpC,OAAO12E,EAGTi+E,wBAAwBz8E,GACtB,IAAI61B,EAAUn3B,KAAKi6E,aAAax7E,IAAI6C,GACpC,KAAkB,MAAX61B,GAAiB,CACtB,GAAyB,IAArBA,EAAQk8C,SAAgB,CAC1B,MAAM/K,EAAatoE,KAAK86E,oBAAoBr8E,IAAI04B,EAAQ71B,IACxD,OAAqB,MAAdgnE,EAAqB,KAAOA,EAEnCnxC,EAAUn3B,KAAKi6E,aAAax7E,IAAI04B,EAAQk8C,UAG5C,OAAO,KAGT2K,oBAAoB18E,GAClB,IAAI61B,EAAUn3B,KAAKi6E,aAAax7E,IAAI6C,GACpC,KAAkB,MAAX61B,GAAiB,CACtB,GAAyB,IAArBA,EAAQk8C,SACV,OAAOl8C,EAAQ71B,GAEf61B,EAAUn3B,KAAKi6E,aAAax7E,IAAI04B,EAAQk8C,UAG5C,OAAO,KAGT0G,yBAAyBz4E,GACvB,IAAI61B,EAAUn3B,KAAKi6E,aAAax7E,IAAI6C,GACpC,KAAkB,MAAX61B,GAAiB,CACtB,GAAyB,IAArBA,EAAQk8C,SACV,OAAO,EAGP,GADAl8C,EAAUn3B,KAAKi6E,aAAax7E,IAAI04B,EAAQk8C,UACzB,MAAXl8C,GAAmBA,EAAQltB,YAC7B,OAAO,EAIb,OAAO,EAITg0E,kBAAkB38E,EAAY2I,GAC5B,IAAIi0E,GAAY,EAEhB,MAAMruB,EAAU7vD,KAAKw3E,eAAel2E,GACpC,GAAgB,OAAZuuD,EAAkB,CACpB,GAAI5lD,EAAa,CACf,GV9iBuB,KU8iBnB4lD,EAAQ1qD,KACV,MAAMlB,MAAM,kCAGd,IAAK4rD,EAAQ5lD,YAAa,CACxBi0E,GAAY,EACZruB,EAAQ5lD,aAAc,EAEtB,MAAM6vE,EAAc,EAAIjqB,EAAQmqB,OAEhC,IAAIH,EAAkB75E,KAAKi6E,aAAax7E,IACtCoxD,EAAQwjB,UAEV,KAAwB,MAAjBwG,GAGLA,EAAcG,QAAUF,EACxBD,EAAgB75E,KAAKi6E,aAAax7E,IAAIo7E,EAAcxG,eAGnD,CACL,IAAI8J,EAAiBttB,EACrB,KAAyB,MAAlBstB,GAAwB,CAC7B,MAAMgB,EAAYhB,EAAelzE,YAC7B,EACAkzE,EAAenD,OAEnB,GAAImD,EAAelzE,YAAa,CAC9Bi0E,GAAY,EACZf,EAAelzE,aAAc,EAE7B,MAGM6vE,GAHYqD,EAAelzE,YAC7B,EACAkzE,EAAenD,QACamE,EAEhC,IAAItE,EAAkB75E,KAAKi6E,aAAax7E,IACtC0+E,EAAe9J,UAEjB,KAAwB,MAAjBwG,IACLA,EAAcG,QAAUF,GACpBD,EAAc5vE,cAMlB4vE,EAAgB75E,KAAKi6E,aAAax7E,IAAIo7E,EAAcxG,UAIxD8J,EAC8B,IAA5BA,EAAe9J,SACXrzE,KAAKw3E,eAAe2F,EAAe9J,UACnC,MAKV,GAAI6K,EAAW,CACb,IAAIE,EAAoB,EACxBp+E,KAAK66E,OAAOp1E,QAAQotE,IAAU,MACrBmH,EAAYh6E,KAAKw3E,eAAe3E,GAAhCmH,OACPoE,GAAqBpE,IAEvBh6E,KAAKk6E,mBAAqBkE,EAK1Bp+E,KAAK+kB,KAAK,UAAW,CAAC,GAAI,IAAIiL,S,uDCnhBb,iBAAhB8qC,aAAmCA,YAAYtsC,IAIjD,SAAS6vD,GACdjuE,GA8BA,IAAIkuE,EAAgC,KA8JpC,SAASC,EAAcp5E,GACrB,MAAMq5E,EACY,iBAATr5E,GAA8B,OAATA,EAAgBA,EAAKyyB,SAAWzyB,EAG9D,MAAiC,iBAAnBq5E,EACVA,EAAez+E,WACfy+E,EA5JJF,EADE1rE,cAAGxC,EAAS,UACI,CAChBquE,eAAgB,EAChB5hB,gBAAiB,EACjBC,gBAAiB,GACjB4hB,oBAAqB,EACrBC,uBAAwB,EACxBC,4BAA6B,GAC7B5hB,WAAY,GACZ5nC,SAAU,EACVypD,kBAAmB,EACnBC,cAAe,EACfC,WAAY,EACZC,SAAU,EACVC,SAAU,EACVC,yBAA0B,GAC1BC,uBAAwB,EACxBC,cAAe,GACfC,sBAAuB,GACvBC,cAAe,GACfC,KAAM,EACNC,mBAAoB,GACpBlqD,SAAU,GACVmqD,eAAgB,GAChBC,oBAAqB,GACrBC,kBAAmB,GACnBC,sBAAuB,GACvBC,gBAAiB,GAEV9sE,eAAI3C,EAAS,gBACJ,CAChBquE,eAAgB,EAChB5hB,gBAAiB,EACjBC,gBAAiB,GACjB4hB,oBAAqB,EACrBC,uBAAwB,EACxBC,4BAA6B,GAC7B5hB,WAAY,GACZ5nC,SAAU,EACVypD,kBAAmB,EACnBC,cAAe,EACfC,WAAY,EACZC,SAAU,EACVC,SAAU,EACVC,yBAA0B,GAC1BC,uBAAwB,EACxBC,cAAe,GACfC,sBAAuB,GACvBC,cAAe,GACfC,KAAM,EACNC,mBAAoB,GACpBlqD,SAAU,GACVmqD,eAAgB,GAChBC,oBAAqB,GACrBC,kBAAmB,GACnBC,sBAAuB,GACvBC,gBAAiB,GAEV9sE,eAAI3C,EAAS,iBACJ,CAChBquE,eAAgB,EAChB5hB,gBAAiB,EACjBC,gBAAiB,GACjB4hB,oBAAqB,EACrBC,uBAAwB,EACxBC,4BAA6B,GAC7B5hB,WAAY,GACZ5nC,SAAU,EACVypD,kBAAmB,EACnBC,cAAe,EACfC,WAAY,EACZC,SAAU,EACVC,SAAU,EACVC,yBAA0B,GAC1BC,uBAAwB,EACxBC,cAAe,GACfC,uBAAwB,EACxBC,cAAe,GACfC,KAAM,EACNC,oBAAqB,EACrBlqD,SAAU,GACVmqD,gBAAiB,EACjBC,oBAAqB,GACrBC,kBAAmB,GACnBC,sBAAuB,GACvBC,gBAAiB,GAEV9sE,eAAI3C,EAAS,gBACJ,CAChBquE,eAAgB,EAChB5hB,gBAAiB,GACjBC,gBAAiB,GACjB4hB,oBAAqB,EACrBC,uBAAwB,EACxBC,6BAA8B,EAC9B5hB,WAAY,GACZ5nC,SAAU,EACVypD,kBAAmB,EACnBC,cAAe,EACfC,WAAY,EACZC,SAAU,EACVC,SAAU,EACVC,0BAA2B,EAC3BC,uBAAwB,EACxBC,eAAgB,EAChBC,uBAAwB,EACxBC,eAAgB,EAChBC,KAAM,GACNC,oBAAqB,EACrBlqD,SAAU,GACVmqD,gBAAiB,EACjBC,qBAAsB,EACtBC,kBAAmB,GACnBC,uBAAwB,EACxBC,gBAAiB,GAGD,CAChBpB,eAAgB,EAChB5hB,gBAAiB,GACjBC,gBAAiB,GACjB4hB,mBAAoB,EACpBC,sBAAuB,EACvBC,6BAA8B,EAC9B5hB,WAAY,GACZ5nC,SAAU,GACVypD,kBAAmB,EACnBC,cAAe,EACfC,WAAY,EACZC,SAAU,EACVC,SAAU,EACVC,0BAA2B,EAC3BC,uBAAwB,EACxBC,eAAgB,EAChBC,uBAAwB,EACxBC,eAAgB,EAChBC,KAAM,GACNC,oBAAqB,EACrBlqD,SAAU,GACVmqD,gBAAiB,EACjBC,qBAAsB,EACtBC,kBAAmB,GACnBC,uBAAwB,EACxBC,eAAgB,GA9KnB,QAkNGvB,EAlBFG,EAhMD,EAgMCA,eACAS,EAjMD,EAiMCA,yBACAL,EAlMD,EAkMCA,kBACAM,EAnMD,EAmMCA,uBACAniB,EApMD,EAoMCA,WACAgiB,EArMD,EAqMCA,SACAF,EAtMD,EAsMCA,cACAC,EAvMD,EAuMCA,WACAE,EAxMD,EAwMCA,SACA7pD,EAzMD,EAyMCA,SACAgqD,EA1MD,EA0MCA,cACAC,EA3MD,EA2MCA,sBACAC,EA5MD,EA4MCA,cACAE,EA7MD,EA6MCA,mBACAC,EA9MD,EA8MCA,eACAC,EA/MD,EA+MCA,oBACAC,EAhND,EAgNCA,kBACAC,EAjND,EAiNCA,sBA8GF,MAAO,CACLE,uBA5FF,SAAgCC,GAA6B,MACpD56E,EAAa46E,EAAb56E,KAAMq6B,EAAOugD,EAAPvgD,IAEb,IAAIwgD,EAAe76E,EACC,iBAATA,GAA8B,OAATA,IAC9B66E,EArBJ,SAASC,EAAiB96E,GAExB,OADmBo5E,EAAcp5E,IAE/B,KCzTqB,MD0TrB,ICzT4B,qBD2T1B,OAAO86E,EAAiB96E,EAAKA,MAC/B,KCzU4B,MD0U5B,ICzUmC,4BD0UjC,OAAOA,EAAK80B,OACd,QACE,OAAO90B,GAUM86E,CAAiB96E,IAGlC,IAAI+6E,EAAuB,KAE3B,OAAQ1gD,GACN,KAAKi/C,EACL,KAAKS,EACH,OAAOjT,EAAe+T,GACxB,KAAKnB,EACL,KAAKM,EACH,OAAOlT,EAAe+T,GACxB,KAAKhjB,EAEH,OACG73D,GAAQA,EAAKm6B,aACd2sC,EAAe+T,EAAc,aAEjC,KAAKhB,EACH,OAAO,KACT,KAAKF,EACH,OAAO35E,EACT,KAAK45E,EACL,KAAKE,EACL,KAAK7pD,EACH,OAAO,KACT,KAAKgqD,EAIH,MAAO,OACT,KAAKE,EACL,KAAKI,EACH,OAAOzT,EAAe+T,EAAc,aACtC,KAAKL,EACH,MAAO,WACT,KAAKN,EACH,MAAO,eACT,KAAKG,EACH,MAAO,YACT,KAAKC,EACH,MAAO,QACT,KAAKG,EACH,MAAO,eACT,QAGE,OAFmBrB,EAAcp5E,IAG/B,KCtZ4B,MDuZ5B,ICtZmC,gCDuZnC,IClZyC,2BDmZvC,OAAO,KACT,KCnXqB,MDoXrB,ICnX4B,yBDwX1B,OADA+6E,EAAkBH,EAAM56E,KAAK00B,UAAYkmD,EAAM56E,KAAKsxB,SAC1CypD,EAAgB5gD,aAAe,WAAjC,YACV,KC9ZoB,MD+ZpB,IC9Z2B,wBDsazB,OAJA4gD,EAAkBH,EAAM56E,KAAK00B,UAAYkmD,EAAM56E,MAIrC+6E,EAAgB5gD,aAAe,WAAjC,YACV,KC9XwB,MD+XxB,IC9X+B,4BD+X7B,OAAO,KACT,KC1YqB,MD2YrB,IC1Y4B,yBD2Y1B,MAAQ,YAAWygD,EAAMt4B,cAAcnmD,MACzC,KCvYkB,MDwYlB,ICvYyB,sBDwYvB,MAAO,QACT,QAGE,OAAO,QAOfi9E,gBACA4B,oBApTmD,CACnDC,kBAAmB,GACnBC,qBAAsB,GACtBC,eAAgB,GAChBC,YAAa,GACbC,aAAc,GACdC,WAAY,IA+SZnC,kBACAoC,sBAnUuD,CACvDC,QAAS,EACTC,cAAe,EACfC,UAAW,IElIf,ICqBItuE,GACG,SAASuuE,GACd3iF,EACA2C,EACAigF,GAEA,QAAe97E,IAAXsN,GAEF,IACE,MAAMtO,QACN,MAAOkxB,GACP,MAAM1kB,EAAQ0kB,EAAE8J,MAAMzuB,OAAOC,MAAM,gBACnC8B,GAAU9B,GAASA,EAAM,IAAO,GAIpC,MAAO,KAAO8B,GAASpU,EAGzB,IAAI6iF,IAAU,EAOP,SAASC,GACdz/E,EACA69B,EACAk6B,GAGA,IAAK/3D,GAAMw/E,GACT,MAAO,GAUT,IAAIE,EAEJ,MAAMC,EAA4Bl9E,MAAMm7B,kBAExCn7B,MAAMm7B,uBAAoBn6B,EAE1B+7E,IAAU,EAOV,MAAMI,EAAqB7nB,EAAqBpiC,QAChDoiC,EAAqBpiC,QAAU,KAG/B,IAEE,GAAIkI,EAAW,CAEb,MAAMgiD,EAAO,WACX,MAAMp9E,SAUR,GAPA3F,OAAOC,eAAe8iF,EAAK7hF,UAAW,QAAS,CAC7CwU,IAAK,WAGH,MAAM/P,WAGa,iBAAZooB,SAAwBA,QAAQgT,UAAW,CAGpD,IACEhT,QAAQgT,UAAUgiD,EAAM,IACxB,MAAOlsD,GACP+rD,EAAU/rD,EAEZ9I,QAAQgT,UAAU79B,EAAI,GAAI6/E,OACrB,CACL,IACEA,EAAKtjF,OACL,MAAOo3B,GACP+rD,EAAU/rD,EAEZ3zB,EAAGzD,KAAKsjF,EAAK7hF,gBAEV,CACL,IACE,MAAMyE,QACN,MAAOkxB,GACP+rD,EAAU/rD,EAEZ3zB,KAEF,MAAO8/E,GAEP,GAAIA,GAAUJ,GAAmC,iBAAjBI,EAAOriD,MAAoB,CAGzD,MAAMsiD,EAAcD,EAAOriD,MAAMluB,MAAM,MACjCywE,EAAeN,EAAQjiD,MAAMluB,MAAM,MACzC,IAAIpR,EAAI4hF,EAAYlgF,OAAS,EACzBpD,EAAIujF,EAAangF,OAAS,EAC9B,KAAO1B,GAAK,GAAK1B,GAAK,GAAKsjF,EAAY5hF,KAAO6hF,EAAavjF,IAOzDA,IAEF,KAAO0B,GAAK,GAAK1B,GAAK,EAAG0B,IAAK1B,IAG5B,GAAIsjF,EAAY5hF,KAAO6hF,EAAavjF,GAAI,CAMtC,GAAU,IAAN0B,GAAiB,IAAN1B,EACb,GAKE,GAJA0B,IACA1B,IAGIA,EAAI,GAAKsjF,EAAY5hF,KAAO6hF,EAAavjF,GAAI,CAS/C,MAPc,KAAOsjF,EAAY5hF,GAAG2R,QAAQ,WAAY,eASnD3R,GAAK,GAAK1B,GAAK,GAE1B,QAtFR,QA2FE+iF,IAAU,EAEV/8E,MAAMm7B,kBAAoB+hD,EAE1B5nB,EAAqBpiC,QAAUiqD,EAIjC,MAAMjjF,EAAOqD,EAAKA,EAAG89B,aAAe99B,EAAGrD,KAAO,GAO9C,OANuBA,EAAO2iF,GAA8B3iF,GAAQ,GAkB/D,SAASsjF,GACdjgF,EACAV,EACAigF,EACAxnB,GAEA,OAAO0nB,GAA6Bz/E,GAAI,EAAO+3D,GCpMjD,SAASmoB,GACPC,EACAC,EACAroB,GACQ,MAENulB,EASE6C,EATF7C,cACAM,EAQEuC,EARFvC,cACAO,EAOEgC,EAPFhC,kBACAC,EAME+B,EANF/B,sBACAf,EAKE8C,EALF9C,kBACAM,EAIEwC,EAJFxC,uBACAO,EAGEiC,EAHFjC,oBACA1iB,EAEE2kB,EAFF3kB,WACAyhB,EACEkD,EADFlD,eASF,OAAQmD,EAAepiD,KACrB,KAAKs/C,EACH,OAAOgC,GAA8Bc,EAAez8E,MACtD,KAAKi6E,EACH,OAAO0B,GAA8B,QACvC,KAAKnB,EACH,OAAOmB,GAA8B,YACvC,KAAKlB,EACH,OAAOkB,GAA8B,gBACvC,KAAKjC,EACL,KAAKM,EACL,KAAKO,EACH,OAAO+B,GACLG,EAAez8E,KAdkC,EADnD,EAkBEo0D,GAEJ,KAAKyD,EACH,OAAOykB,GACLG,EAAez8E,KAAK80B,OArB6B,EADnD,EAyBEs/B,GAEJ,KAAKklB,EACH,ODoIC,SACLoD,EACA/gF,EACAigF,EACAxnB,GAEA,OAAO0nB,GAA6BY,GAAM,EAAMtoB,GC1IrCuoB,CACLF,EAAez8E,KA5BkC,EADnD,EAgCEo0D,GAEJ,QACE,MAAO,IAIN,SAASwoB,GACdJ,EACAC,EACAroB,GAEA,IACE,IAAIkI,EAAO,GACPrzC,EAAOwzD,EACX,GACEngB,GAAQigB,GAAcC,EAAYvzD,EAAMmrC,GACxCnrC,EAAOA,EAAKwa,aACLxa,GACT,OAAOqzC,EACP,MAAOtsC,GACP,MAAO,6BAA+BA,EAAEvN,QAAU,KAAOuN,EAAE8J,O,qhCClF/D,MAAM+iD,GAA0B,CAAC,QAAS,QAAS,QAI7CC,GAAe,oBAGfC,GAA0B,iBAE1BC,GAOF,IAAInyD,IAER,IAAIoyD,GAAwB/5E,QACxBg6E,GAAuB,GAC3B,IAAK,MAAMp/D,KAAU5a,QACnBg6E,GAAqBp/D,GAAU5a,QAAQ4a,GAGzC,IAAIq/D,GAAiC,KAiB9B,SAASC,GAAiBC,GAA+B,MAE5DjpB,EAIEipB,EAJFjpB,qBACAM,EAGE2oB,EAHF3oB,gBACAnB,EAEE8pB,EAFF9pB,wBACAtoD,EACEoyE,EADFpyE,QAIF,GAAuC,mBAA5BsoD,GAMiB,MAAxBa,GAA2D,mBAApBM,EAAgC,OAClEykB,EAAmBD,GAA0BjuE,GAA7CkuE,gBAEP6D,GAAkBnuE,IAAIwuE,EAAU,CAC9BjpB,uBACAM,kBACA8nB,WAAYrD,KAKlB,MAAMmE,GAAqB,CACzBC,sBAAsB,EACtBC,sBAAsB,GAKjB,SAAS9xE,IAAM,qBACpB6xE,EADoB,qBAEpBC,IAUA,GAHAF,GAAmBC,qBAAuBA,EAC1CD,GAAmBE,qBAAuBA,EAExB,OAAdL,GAEF,OAGF,MAAMM,EAAyB,GAE/BN,GAAY,KACV,IAAK,MAAMr/D,KAAU2/D,EACnB,IAEER,GAAcn/D,GAAU2/D,EAAuB3/D,GAC/C,MAAO3a,MAIb05E,GAAwBv8E,QAAQwd,IAC9B,IACE,MAAM4/D,EAAkBD,EAAuB3/D,GAC7Cm/D,GAAcn/D,GAEV6/D,EAAiB,IAAI71E,KACzB,MAAM81E,EACJN,GAAmBC,qBAEnBD,GAAmBE,qBAErB,GAAII,EACF,IAGE,MAAMC,EAAU/1E,EAAK5L,OAAS,EAAI4L,EAAKA,EAAK5L,OAAS,GAAK,KAM1D,KAJc,OAAZ2hF,IACCf,GAAaj1E,KAAKg2E,IACjBd,GAAwBl1E,KAAKg2E,KAEF,YAQxBb,GAAkBv1D,UARM,IAI7B,2BAIiC,iBAH/B2sC,EAG+B,EAH/BA,qBACAM,EAE+B,EAF/BA,gBACA8nB,EAC+B,EAD/BA,WAEMxqD,EAAkB0iC,IACxB,GAAe,MAAX1iC,EAAiB,CACnB,MAAMg5B,EAAiB4xB,GACrBJ,EACAxqD,EACAoiC,GAEqB,KAAnBpJ,GACFljD,EAAK1L,KAAK4uD,GAEZ,QAnByB,gCAuB/B,MAAO7nD,IAcXu6E,KAAkB51E,IAGpB61E,EAAeG,mCAAqCJ,EAGpDT,GAAcn/D,GAAU6/D,EACxB,MAAOx6E,O,cCvKN,MAAM46E,GAAgB5pD,wBACzB,MAEJ4pD,GAAc5jD,YAAc,gBAErB,MAAM6jD,GAAe7pD,wBAAuB,MACnD6pD,GAAa7jD,YAAc,eAOpB,MAAM8jD,GAAqB9pD,wBAAsC,CACtE+pD,8BAA8B,EAC9BC,4BAA6B,OChB/B,SAASC,GAA0Bn+E,GAEjC,IAAIo+E,EAEFA,EADoB,oBAAX5hF,OACCA,OACe,oBAATssB,KACNA,KAEAmD,OAGZ,IAaQgC,EATAowD,EAJJ/mC,EAAkC,oBAAb76C,UAA4BA,SAAS66C,YAE9D,IAAKA,EAAa,CAChB,IAAIgnC,GACED,EAAMD,EAAQ7nB,uBAAyB6nB,EAAQG,0BAA4BH,EAAQI,6BAA+B,SAAUpiF,GAC9H,OAAOgiF,EAAQ93E,WAAWlK,EAAI,KAEzB,SAAUA,GACf,OAAOiiF,EAAIjiF,KAIXqiF,GACExwD,EAASmwD,EAAQ9nB,sBAAwB8nB,EAAQM,yBAA2BN,EAAQO,4BAA8BP,EAAQp7D,aACvH,SAAU9mB,GACf,OAAO+xB,EAAO/xB,KAId0iF,EAAgB,SAAuBn0B,GACzC,IAAIo0B,EAAWp0B,EAAQq0B,mBACnBC,EAASF,EAASG,kBAClBC,EAAWJ,EAASK,iBACpBC,EAAcJ,EAAOC,kBACzBC,EAAShuB,WAAaguB,EAASG,YAC/BH,EAAS9tB,UAAY8tB,EAASI,aAC9BF,EAAYxgF,MAAM40C,MAAQwrC,EAAOO,YAAc,EAAI,KACnDH,EAAYxgF,MAAM60C,OAASurC,EAAOQ,aAAe,EAAI,KACrDR,EAAO9tB,WAAa8tB,EAAOK,YAC3BL,EAAO5tB,UAAY4tB,EAAOM,cAOxBG,EAAiB,SAAwBjiF,GAE3C,KAAIA,EAAER,OAAO0iF,UAAUhgF,QAAQ,oBAAsB,GAAKlC,EAAER,OAAO0iF,UAAUhgF,QAAQ,kBAAoB,GAAzG,CAIA,IAAIgrD,EAAU7vD,KACdgkF,EAAchkF,MACVA,KAAK8kF,eACPjB,EAAY7jF,KAAK8kF,eAEnB9kF,KAAK8kF,cAAgBpB,GAAa,YAfhB,SAAuB7zB,GACzC,OAAOA,EAAQ60B,aAAe70B,EAAQk1B,eAAepsC,OAASkX,EAAQ80B,cAAgB90B,EAAQk1B,eAAensC,QAevGosC,CAAcn1B,KAChBA,EAAQk1B,eAAepsC,MAAQkX,EAAQ60B,YACvC70B,EAAQk1B,eAAensC,OAASiX,EAAQ80B,aACxC90B,EAAQo1B,oBAAoBx/E,SAAQ,SAAUjE,GAC5CA,EAAGzD,KAAK8xD,EAASltD,YAOrB6pC,GAAY,EACZ04C,EAAiB,GACjBC,EAAsB,iBACtBC,EAAc,kBAAkBr0E,MAAM,KACtCs0E,EAAc,uEAAuEt0E,MAAM,KAGzFu0E,EAAMzjF,SAASmD,cAAc,eAKjC,QAJgCC,IAA5BqgF,EAAIvhF,MAAM0wC,gBACZjI,GAAY,IAGI,IAAdA,EACF,IAAK,IAAI5uC,EAAI,EAAGA,EAAIwnF,EAAY/jF,OAAQzD,IACtC,QAAoDqH,IAAhDqgF,EAAIvhF,MAAMqhF,EAAYxnF,GAAK,iBAAgC,CAE7DsnF,EAAiB,IADXE,EAAYxnF,GACS+W,cAAgB,IAC3CwwE,EAAsBE,EAAYznF,GAClC4uC,GAAY,EACZ,MAMR,IAAIiI,EAAgB,aAChB8wC,EAAqB,IAAML,EAAiB,aAAezwC,EAAgB,gDAC3E+wC,EAAiBN,EAAiB,kBAAoBzwC,EAAgB,KAgF5E,MAAO,CACLgxC,kBAtDsB,SAA2B51B,EAASruD,GAC1D,GAAIk7C,EACFmT,EAAQnT,YAAY,WAAYl7C,OAC3B,CACL,IAAKquD,EAAQq0B,mBAAoB,CAC/B,IAAIwB,EAAM71B,EAAQxuB,cACdskD,EAAenC,EAAQoC,iBAAiB/1B,GACxC81B,GAAyC,UAAzBA,EAAaE,WAC/Bh2B,EAAQ9rD,MAAM8hF,SAAW,YAhCd,SAAsBH,GACvC,IAAKA,EAAII,eAAe,uBAAwB,CAE9C,IAAIliF,GAAO2hF,GAA0C,IAAM,uBAAyBC,GAAkC,IAA5G,6VACN9iF,EAAOgjF,EAAIhjF,MAAQgjF,EAAIK,qBAAqB,QAAQ,GACpDhiF,EAAQ2hF,EAAI1gF,cAAc,SAE9BjB,EAAMzC,GAAK,sBACXyC,EAAMoB,KAAO,WAEA,MAATC,GACFrB,EAAM2B,aAAa,QAASN,GAG1BrB,EAAMwD,WACRxD,EAAMwD,WAAWC,QAAU5D,EAE3BG,EAAMO,YAAYohF,EAAIh+E,eAAe9D,IAGvClB,EAAK4B,YAAYP,IAcfiiF,CAAaN,GACb71B,EAAQk1B,eAAiB,GACzBl1B,EAAQo1B,oBAAsB,IAC7Bp1B,EAAQq0B,mBAAqBwB,EAAI1gF,cAAc,QAAQ6/E,UAAY,kBACpEh1B,EAAQq0B,mBAAmB1hD,UAAY,oFACvCqtB,EAAQvrD,YAAYurD,EAAQq0B,oBAC5BF,EAAcn0B,GACdA,EAAQtnD,iBAAiB,SAAUq8E,GAAgB,GAG/CO,IACFt1B,EAAQq0B,mBAAmB+B,sBAAwB,SAA2BtjF,GACxEA,EAAE8xC,eAAiBA,GACrBuvC,EAAcn0B,IAGlBA,EAAQq0B,mBAAmB37E,iBAAiB48E,EAAqBt1B,EAAQq0B,mBAAmB+B,wBAGhGp2B,EAAQo1B,oBAAoB1jF,KAAKC,KA0BnC0kF,qBAtByB,SAA8Br2B,EAASruD,GAChE,GAAIk7C,EACFmT,EAAQtT,YAAY,WAAY/6C,QAGhC,GADAquD,EAAQo1B,oBAAoBngF,OAAO+qD,EAAQo1B,oBAAoBpgF,QAAQrD,GAAK,IACvEquD,EAAQo1B,oBAAoB5jF,OAAQ,CACvCwuD,EAAQ5uC,oBAAoB,SAAU2jE,GAAgB,GAClD/0B,EAAQq0B,mBAAmB+B,wBAC7Bp2B,EAAQq0B,mBAAmBjjE,oBAAoBkkE,EAAqBt1B,EAAQq0B,mBAAmB+B,uBAC/Fp2B,EAAQq0B,mBAAmB+B,sBAAwB,MAErD,IACEp2B,EAAQq0B,oBAAsBr0B,EAAQlrD,YAAYkrD,EAAQq0B,oBAC1D,MAAOvhF,QDxJjBygF,GAAmB9jD,YAAc,qBCqKjC,IAAI6mD,GAAiB,SAAUznC,EAAU0nC,GACvC,KAAM1nC,aAAoB0nC,GACxB,MAAM,IAAIt7E,UAAU,sCAIpBu7E,GAAc,WAChB,SAAS7a,EAAiBrpE,EAAQq0B,GAChC,IAAK,IAAI54B,EAAI,EAAGA,EAAI44B,EAAMn1B,OAAQzD,IAAK,CACrC,IAAI0oF,EAAa9vD,EAAM54B,GACvB0oF,EAAW9nF,WAAa8nF,EAAW9nF,aAAc,EACjD8nF,EAAWtmD,cAAe,EACtB,UAAWsmD,IAAYA,EAAW7lB,UAAW,GACjDniE,OAAOC,eAAe4D,EAAQmkF,EAAWnnF,IAAKmnF,IAIlD,OAAO,SAAUF,EAAaG,EAAYC,GAGxC,OAFID,GAAY/a,EAAiB4a,EAAY5mF,UAAW+mF,GACpDC,GAAahb,EAAiB4a,EAAaI,GACxCJ,GAdO,GAkBdK,GAAWnoF,OAAOwhB,QAAU,SAAU3d,GACxC,IAAK,IAAIvE,EAAI,EAAGA,EAAIqE,UAAUZ,OAAQzD,IAAK,CACzC,IAAIkD,EAASmB,UAAUrE,GAEvB,IAAK,IAAIuB,KAAO2B,EACVxC,OAAOkB,UAAUC,eAAe1B,KAAK+C,EAAQ3B,KAC/CgD,EAAOhD,GAAO2B,EAAO3B,IAK3B,OAAOgD,GAmBLukF,GAA4B,SAAUx4D,EAAMnwB,GAC9C,IAAKmwB,EACH,MAAM,IAAIy4D,eAAe,6DAG3B,OAAO5oF,GAAyB,iBAATA,GAAqC,mBAATA,EAA8BmwB,EAAPnwB,GAGxE6oF,GAAY,SAAUC,GAGxB,SAASD,IACP,IAAIE,EAEAC,EAAOC,EAEXb,GAAenmF,KAAM4mF,GAErB,IAAK,IAAIK,EAAOhlF,UAAUZ,OAAQ4L,EAAOrB,MAAMq7E,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC3Ej6E,EAAKi6E,GAAQjlF,UAAUilF,GAGzB,OAAeH,EAASC,EAAQN,GAA0B1mF,MAAO8mF,EAAOF,EAAUO,WAAa7oF,OAAO0tE,eAAe4a,IAAY7oF,KAAKiE,MAAM8kF,EAAM,CAAC9mF,MAAMgB,OAAOiM,KAAiB+5E,EAAM/hC,MAAQ,CAC7LrM,OAAQouC,EAAMxwD,MAAM4wD,eAAiB,EACrCzuC,MAAOquC,EAAMxwD,MAAM6wD,cAAgB,GAClCL,EAAMM,UAAY,WACnB,IAAIC,EAAcP,EAAMxwD,MACpBgxD,EAAgBD,EAAYC,cAC5BC,EAAeF,EAAYE,aAC3BC,EAAWH,EAAYG,SAG3B,GAAIV,EAAMW,YAAa,CAKrB,IAAIC,EAAUZ,EAAMW,YAAYhD,cAAgB,EAC5CkD,EAASb,EAAMW,YAAYjD,aAAe,EAE1CoD,EAASlmF,OAAOgkF,iBAAiBoB,EAAMW,cAAgB,GACvDI,EAAc52D,SAAS22D,EAAOC,YAAa,KAAO,EAClDC,EAAe72D,SAAS22D,EAAOE,aAAc,KAAO,EACpDC,EAAa92D,SAAS22D,EAAOG,WAAY,KAAO,EAChDC,EAAgB/2D,SAAS22D,EAAOI,cAAe,KAAO,EAEtDC,EAAYP,EAAUK,EAAaC,EACnCE,EAAWP,EAASE,EAAcC,IAEjCR,GAAiBR,EAAM/hC,MAAMrM,SAAWuvC,IAAcV,GAAgBT,EAAM/hC,MAAMtM,QAAUyvC,KAC/FpB,EAAMlwD,SAAS,CACb8hB,OAAQgvC,EAAUK,EAAaC,EAC/BvvC,MAAOkvC,EAASE,EAAcC,IAGhCN,EAAS,CAAE9uC,OAAQgvC,EAASjvC,MAAOkvC,OAGtCb,EAAMqB,QAAU,SAAUC,GAC3BtB,EAAMuB,WAAaD,GACV5B,GAA0BM,EAAlCD,GA+EL,OA3Ja,SAAUyB,EAAUC,GACjC,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAI39E,UAAU,kEAAoE29E,GAG1FD,EAAShpF,UAAYlB,OAAOY,OAAOupF,GAAcA,EAAWjpF,UAAW,CACrEuM,YAAa,CACXlN,MAAO2pF,EACPhqF,YAAY,EACZiiE,UAAU,EACVzgC,cAAc,KAGdyoD,IAAYnqF,OAAOoqF,eAAiBpqF,OAAOoqF,eAAeF,EAAUC,GAAcD,EAASrB,UAAYsB,GAY3GE,CAAS/B,EAAWC,GAsDpBR,GAAYO,EAAW,CAAC,CACtBznF,IAAK,oBACLN,MAAO,WACL,IAAIuG,EAAQpF,KAAKw2B,MAAMpxB,MAEnBpF,KAAKuoF,YAAcvoF,KAAKuoF,WAAW7jF,YAAc1E,KAAKuoF,WAAW7jF,WAAW28B,eAAiBrhC,KAAKuoF,WAAW7jF,WAAW28B,cAAc2c,aAAeh+C,KAAKuoF,WAAW7jF,sBAAsB1E,KAAKuoF,WAAW7jF,WAAW28B,cAAc2c,YAAYkvB,cAIlPltE,KAAK2nF,YAAc3nF,KAAKuoF,WAAW7jF,WAInC1E,KAAK4oF,qBAAuBrF,GAA0Bn+E,GACtDpF,KAAK4oF,qBAAqBnD,kBAAkBzlF,KAAK2nF,YAAa3nF,KAAKsnF,WAEnEtnF,KAAKsnF,eAGR,CACDnoF,IAAK,uBACLN,MAAO,WACDmB,KAAK4oF,sBAAwB5oF,KAAK2nF,aACpC3nF,KAAK4oF,qBAAqB1C,qBAAqBlmF,KAAK2nF,YAAa3nF,KAAKsnF,aAGzE,CACDnoF,IAAK,SACLN,MAAO,WACL,IAAIgqF,EAAS7oF,KAAKw2B,MACdkB,EAAWmxD,EAAOnxD,SAClBmtD,EAAYgE,EAAOhE,UACnB2C,EAAgBqB,EAAOrB,cACvBC,EAAeoB,EAAOpB,aACtB1jF,EAAQ8kF,EAAO9kF,MACfgH,EAAS/K,KAAKilD,MACdrM,EAAS7tC,EAAO6tC,OAChBD,EAAQ5tC,EAAO4tC,MAMfmwC,EAAa,CAAEC,SAAU,WACzBC,EAAc,GAIdC,GAAoB,EAkBxB,OAhBKzB,IACY,IAAX5uC,IACFqwC,GAAoB,GAEtBH,EAAWlwC,OAAS,EACpBowC,EAAYpwC,OAASA,GAGlB6uC,IACW,IAAV9uC,IACFswC,GAAoB,GAEtBH,EAAWnwC,MAAQ,EACnBqwC,EAAYrwC,MAAQA,GAGf3zC,wBACL,MACA,CACE6/E,UAAWA,EACXvtD,IAAKt3B,KAAKqoF,QACVtkF,MAAO0iF,GAAS,GAAIqC,EAAY/kF,KACjCklF,GAAqBvxD,EAASsxD,QAI9BpC,EAnIO,CAoIdztD,iBAEFytD,GAAUjvD,aAAe,CACvB+vD,SAAU,aACVF,eAAe,EACfC,cAAc,EACd1jF,MAAO,IAGM6iF,UChZA,SAASH,KAetB,OAdAA,GAAWnoF,OAAOwhB,QAAU,SAAU3d,GACpC,IAAK,IAAIvE,EAAI,EAAGA,EAAIqE,UAAUZ,OAAQzD,IAAK,CACzC,IAAIkD,EAASmB,UAAUrE,GAEvB,IAAK,IAAIuB,KAAO2B,EACVxC,OAAOkB,UAAUC,eAAe1B,KAAK+C,EAAQ3B,KAC/CgD,EAAOhD,GAAO2B,EAAO3B,IAK3B,OAAOgD,IAGOH,MAAMhC,KAAMiC,WCff,SAASinF,GAAeV,EAAUC,GAC/CD,EAAShpF,UAAYlB,OAAOY,OAAOupF,EAAWjpF,WAC9CgpF,EAAShpF,UAAUuM,YAAcy8E,EACjCA,EAASrB,UAAYsB,ECHR,SAASU,GAAuBj7D,GAC7C,QAAa,IAATA,EACF,MAAM,IAAIy4D,eAAe,6DAG3B,OAAOz4D,ECHT,IAAIk7D,GAAgB,SAAuBx+E,EAAGC,GAC5C,OAAOD,IAAMC,GAGA,YAAUw+E,GACvB,IAAIC,EAAUrnF,UAAUZ,OAAS,QAAsB4D,IAAjBhD,UAAU,GAAmBA,UAAU,GAAKmnF,GAE9Ep3D,OAAW,EACXD,EAAW,GACXw3D,OAAa,EACbC,GAAa,EAEbC,EAAsB,SAA6BC,EAAQviF,GAC7D,OAAOmiF,EAAQI,EAAQ33D,EAAS5qB,KAG9BrB,EAAS,WACX,IAAK,IAAImhF,EAAOhlF,UAAUZ,OAAQsoF,EAAU/9E,MAAMq7E,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC9EyC,EAAQzC,GAAQjlF,UAAUilF,GAG5B,OAAIsC,GAAcx3D,IAAahyB,MAAQ2pF,EAAQtoF,SAAW0wB,EAAS1wB,QAAUsoF,EAAQp1E,MAAMk1E,GAClFF,GAGTC,GAAa,EACbx3D,EAAWhyB,KACX+xB,EAAW43D,EACXJ,EAAaF,EAASrnF,MAAMhC,KAAM2pF,KAIpC,OAAO7jF,GClCM,SAAS8jF,GAA8B9oF,EAAQ+oF,GAC5D,GAAc,MAAV/oF,EAAgB,MAAO,GAC3B,IAEI3B,EAAKvB,EAFLuE,EAAS,GACT2nF,EAAaxrF,OAAOkH,KAAK1E,GAG7B,IAAKlD,EAAI,EAAGA,EAAIksF,EAAWzoF,OAAQzD,IACjCuB,EAAM2qF,EAAWlsF,GACbisF,EAAShlF,QAAQ1F,IAAQ,IAC7BgD,EAAOhD,GAAO2B,EAAO3B,IAGvB,OAAOgD,ECFT,IACIqsB,GADiD,iBAAhBssC,aAAuD,mBAApBA,YAAYtsC,IAChD,WAClC,OAAOssC,YAAYtsC,OACjB,WACF,OAAOC,KAAKD,OAEd,SAASu7D,GAAcC,GACrBtuB,qBAAqBsuB,EAAU1oF,IAEjC,SAAS2oF,GAAe/sE,EAAUs+C,GAChC,IAAItuC,EAAQsB,KAUZ,IAAIw7D,EAAY,CACd1oF,GAAIq6D,uBATN,SAASuuB,IACH17D,KAAQtB,GAASsuC,EACnBt+C,EAASnf,KAAK,MAEdisF,EAAU1oF,GAAKq6D,sBAAsBuuB,OAOzC,OAAOF,EAuBT,IAAIG,GAAkB,KAOtB,SAASC,GAAiBC,GAKxB,QAJoB,IAAhBA,IACFA,GAAc,GAGQ,OAApBF,IAA4BE,EAAa,CAC3C,IAAIC,EAAWzoF,SAASmD,cAAc,OAClC8jF,EAAawB,EAASvmF,MAC1B+kF,EAAWnwC,MAAQ,OACnBmwC,EAAWlwC,OAAS,OACpBkwC,EAAWC,SAAW,SACtBD,EAAWyB,UAAY,MACvB,IAAIC,EAAW3oF,SAASmD,cAAc,OAClCylF,EAAaD,EAASzmF,MAmB1B,OAlBA0mF,EAAW9xC,MAAQ,QACnB8xC,EAAW7xC,OAAS,QACpB0xC,EAAShmF,YAAYkmF,GACrB3oF,SAASwI,KAAK/F,YAAYgmF,GAEtBA,EAASj0B,WAAa,EACxB8zB,GAAkB,uBAElBG,EAASj0B,WAAa,EAGpB8zB,GAD0B,IAAxBG,EAASj0B,WACO,WAEA,sBAItBx0D,SAASwI,KAAK1F,YAAY2lF,GACnBH,GAGT,OAAOA,GA0hBT,IA+XIO,GAAmB,SAAwBvjF,EAAOkC,GACpD,OAAOlC,GAmBT,SAASwjF,GAAoB7D,GAC3B,IAAI8D,EAAQ7D,EAER8D,EAAgB/D,EAAK+D,cACrBC,EAAwBhE,EAAKgE,sBAC7BC,EAAcjE,EAAKiE,YACnBC,EAAgClE,EAAKkE,8BACrCC,EAAyBnE,EAAKmE,uBAC9BC,EAA4BpE,EAAKoE,0BACjCC,EAAoBrE,EAAKqE,kBACzBC,EAAwCtE,EAAKsE,sCAC7CC,EAAgBvE,EAAKuE,cACzB,OAAOtE,EAAQ6D,EAEf,SAAUU,GAMR,SAASC,EAAK/0D,GACZ,IAAIwwD,EA2KJ,OAzKAA,EAAQsE,EAAevtF,KAAKiC,KAAMw2B,IAAUx2B,MACtCwrF,eAAiBL,EAAkBnE,EAAMxwD,MAAO2yD,GAAuBA,GAAuBnC,KACpGA,EAAMyE,eAAY,EAClBzE,EAAM0E,2BAA6B,KACnC1E,EAAM/hC,MAAQ,CACZvG,SAAUyqC,GAAuBA,GAAuBnC,IACxD2E,aAAa,EACbC,gBAAiB,UACjBC,aAAyD,iBAApC7E,EAAMxwD,MAAMs1D,oBAAmC9E,EAAMxwD,MAAMs1D,oBAAsB,EACtGC,0BAA0B,GAE5B/E,EAAMgF,0BAAuB,EAC7BhF,EAAMgF,qBAAuBC,IAAW,SAAUC,EAAoBC,EAAmBC,EAAmBC,GAC1G,OAAOrF,EAAMxwD,MAAM81D,gBAAgB,CACjCJ,mBAAoBA,EACpBC,kBAAmBA,EACnBC,kBAAmBA,EACnBC,iBAAkBA,OAGtBrF,EAAMuF,mBAAgB,EACtBvF,EAAMuF,cAAgBN,IAAW,SAAUL,EAAiBC,EAAcE,GACxE,OAAO/E,EAAMxwD,MAAMg2D,SAAS,CAC1BZ,gBAAiBA,EACjBC,aAAcA,EACdE,yBAA0BA,OAG9B/E,EAAMyF,mBAAgB,EAEtBzF,EAAMyF,cAAgB,SAAUtlF,GAC9B,IAOIpD,EAPAwjF,EAAcP,EAAMxwD,MACpB+zD,EAAYhD,EAAYgD,UACxBmC,EAAWnF,EAAYmF,SACvBC,EAASpF,EAAYoF,OAErBC,EAAiB5F,EAAM6F,mBAAmBzB,GAAyCsB,EAAUtB,GAAyCuB,EAAQvB,GAAyCb,GAI3L,GAAIqC,EAAentF,eAAe0H,GAChCpD,EAAQ6oF,EAAezlF,OAClB,CACL,IAAI2gF,EAEAgF,EAAUjC,EAAc7D,EAAMxwD,MAAOrvB,EAAO6/E,EAAMwE,gBAElDx8B,EAAO+7B,EAAY/D,EAAMxwD,MAAOrvB,EAAO6/E,EAAMwE,gBAE7CuB,EAA6B,eAAdxC,GAAyC,eAAXoC,EACjDC,EAAezlF,KAAkB2gF,EAAS,CACxCjC,SAAU,aACY,QAAd0E,EAAsB,QAAU,QAAUwC,EAAeD,EAAU,EAAGhF,EAAOxxB,IAAOy2B,EAAyB,EAAVD,EAAahF,EAAOlvC,OAAUm0C,EAAsB,OAAP/9B,EAAe84B,EAAOnvC,MAAQo0C,EAAe/9B,EAAO,OAFtLjrD,EAE8L+jF,GAGxN,OAAO/jF,GAGTijF,EAAM6F,wBAAqB,EAC3B7F,EAAM6F,mBAAqBZ,IAAW,SAAUj1E,EAAGg2E,EAAIC,GACrD,MAAO,MAGTjG,EAAMkG,oBAAsB,SAAUzxC,GACpC,IAAI0xC,EAAuB1xC,EAAM/J,cAC7B07C,EAAcD,EAAqBC,YACnC/2B,EAAa82B,EAAqB92B,WAClCmuB,EAAc2I,EAAqB3I,YAGvCpqB,oBAAU,KACR4sB,EAAMlwD,UAAS,SAAUu2D,GACvB,GAAIA,EAAUxB,eAAiBx1B,EAI7B,OAAO,KAGT,IAAIk0B,EAAYvD,EAAMxwD,MAAM+zD,UACxBsB,EAAex1B,EAEnB,GAAkB,QAAdk0B,EAKF,OAAQH,MACN,IAAK,WACHyB,GAAgBx1B,EAChB,MAEF,IAAK,sBACHw1B,EAAerH,EAAc4I,EAAc/2B,EAOjD,OADAw1B,EAAelhE,KAAKlS,IAAI,EAAGkS,KAAK9R,IAAIgzE,EAAcrH,EAAc4I,IACzD,CACLzB,aAAa,EACbC,gBAAiByB,EAAUxB,aAAex1B,EAAa,UAAY,WACnEw1B,aAAcA,EACdE,0BAA0B,KAE3B/E,EAAMsG,+BAIbtG,EAAMuG,kBAAoB,SAAU9xC,GAClC,IAAI+xC,EAAwB/xC,EAAM/J,cAC9B+7C,EAAeD,EAAsBC,aACrChJ,EAAe+I,EAAsB/I,aACrCluB,EAAYi3B,EAAsBj3B,UAGtC6D,oBAAU,KACR4sB,EAAMlwD,UAAS,SAAUu2D,GACvB,GAAIA,EAAUxB,eAAiBt1B,EAI7B,OAAO,KAIT,IAAIs1B,EAAelhE,KAAKlS,IAAI,EAAGkS,KAAK9R,IAAI09C,EAAWkuB,EAAegJ,IAClE,MAAO,CACL9B,aAAa,EACbC,gBAAiByB,EAAUxB,aAAeA,EAAe,UAAY,WACrEA,aAAcA,EACdE,0BAA0B,KAE3B/E,EAAMsG,+BAIbtG,EAAM0G,gBAAkB,SAAUp2D,GAChC,IAAIq2D,EAAW3G,EAAMxwD,MAAMm3D,SAC3B3G,EAAMyE,UAAYn0D,EAEM,mBAAbq2D,EACTA,EAASr2D,GACY,MAAZq2D,GAAwC,iBAAbA,GAAyBA,EAASluF,eAAe,aACrFkuF,EAASx2D,QAAUG,IAIvB0vD,EAAMsG,2BAA6B,WACQ,OAArCtG,EAAM0E,4BACR3B,GAAc/C,EAAM0E,4BAGtB1E,EAAM0E,2BAA6BzB,GAAejD,EAAM4G,kBAvMzB,MA0MjC5G,EAAM4G,kBAAoB,WACxB5G,EAAM0E,2BAA6B,KAEnC1E,EAAMlwD,SAAS,CACb60D,aAAa,IACZ,WAGD3E,EAAM6F,oBAAoB,EAAG,UAI1B7F,EAjLTkC,GAAeqC,EAAMD,GAoLrBC,EAAKjmC,yBAA2B,SAAkCuoC,EAAWR,GAG3E,OAFAS,GAAsBD,EAAWR,GACjChC,EAAcwC,GACP,MAGT,IAAIE,EAASxC,EAAK/rF,UAuNlB,OArNAuuF,EAAOC,SAAW,SAAkBnC,GAClCA,EAAelhE,KAAKlS,IAAI,EAAGozE,GAC3B7rF,KAAK82B,UAAS,SAAUu2D,GACtB,OAAIA,EAAUxB,eAAiBA,EACtB,KAGF,CACLD,gBAAiByB,EAAUxB,aAAeA,EAAe,UAAY,WACrEA,aAAcA,EACdE,0BAA0B,KAE3B/rF,KAAKstF,6BAGVS,EAAOE,aAAe,SAAsB9mF,EAAO+mF,QACnC,IAAVA,IACFA,EAAQ,QAGV,IAAIC,EAAYnuF,KAAKw2B,MAAM23D,UACvBtC,EAAe7rF,KAAKilD,MAAM4mC,aAC9B1kF,EAAQwjB,KAAKlS,IAAI,EAAGkS,KAAK9R,IAAI1R,EAAOgnF,EAAY,IAChDnuF,KAAKguF,SAAShD,EAA8BhrF,KAAKw2B,MAAOrvB,EAAO+mF,EAAOrC,EAAc7rF,KAAKwrF,kBAG3FuC,EAAOroC,kBAAoB,WACzB,IAAI0oC,EAAepuF,KAAKw2B,MACpB+zD,EAAY6D,EAAa7D,UACzBuB,EAAsBsC,EAAatC,oBACnCa,EAASyB,EAAazB,OAE1B,GAAmC,iBAAxBb,GAAsD,MAAlB9rF,KAAKyrF,UAAmB,CACrE,IAAIkC,EAAW3tF,KAAKyrF,UAEF,eAAdlB,GAAyC,eAAXoC,EAChCgB,EAASt3B,WAAay1B,EAEtB6B,EAASp3B,UAAYu1B,EAIzB9rF,KAAKquF,uBAGPN,EAAOphC,mBAAqB,WAC1B,IAAI2hC,EAAetuF,KAAKw2B,MACpB+zD,EAAY+D,EAAa/D,UACzBoC,EAAS2B,EAAa3B,OACtB4B,EAAcvuF,KAAKilD,MACnB4mC,EAAe0C,EAAY1C,aAG/B,GAF+B0C,EAAYxC,0BAEO,MAAlB/rF,KAAKyrF,UAAmB,CACtD,IAAIkC,EAAW3tF,KAAKyrF,UAEpB,GAAkB,eAAdlB,GAAyC,eAAXoC,EAChC,GAAkB,QAAdpC,EAIF,OAAQH,MACN,IAAK,WACHuD,EAASt3B,YAAcw1B,EACvB,MAEF,IAAK,qBACH8B,EAASt3B,WAAaw1B,EACtB,MAEF,QACE,IAAIuB,EAAcO,EAASP,YACvB5I,EAAcmJ,EAASnJ,YAC3BmJ,EAASt3B,WAAamuB,EAAc4I,EAAcvB,OAItD8B,EAASt3B,WAAaw1B,OAGxB8B,EAASp3B,UAAYs1B,EAIzB7rF,KAAKquF,uBAGPN,EAAO78B,qBAAuB,WACY,OAApClxD,KAAK0rF,4BACP3B,GAAc/pF,KAAK0rF,6BAIvBqC,EAAO9zD,OAAS,WACd,IAAIu0D,EAAexuF,KAAKw2B,MACpBkB,EAAW82D,EAAa92D,SACxBmtD,EAAY2J,EAAa3J,UACzB0F,EAAYiE,EAAajE,UACzB3xC,EAAS41C,EAAa51C,OACtB61C,EAAWD,EAAaC,SACxBC,EAAmBF,EAAaE,iBAChCC,EAAeH,EAAaG,aAC5BR,EAAYK,EAAaL,UACzBS,EAAWJ,EAAaI,SACxBC,EAAuBL,EAAaM,QACpCA,OAAmC,IAAzBD,EAAkCnE,GAAmBmE,EAC/DlC,EAAS6B,EAAa7B,OACtBoC,EAAmBP,EAAaO,iBAChCC,EAAeR,EAAaQ,aAC5BjrF,EAAQyqF,EAAazqF,MACrBkrF,EAAiBT,EAAaS,eAC9Bt2C,EAAQ61C,EAAa71C,MACrBgzC,EAAc3rF,KAAKilD,MAAM0mC,YAEzBoB,EAA6B,eAAdxC,GAAyC,eAAXoC,EAC7CH,EAAWO,EAAe/sF,KAAKktF,oBAAsBltF,KAAKutF,kBAE1D2B,EAAwBlvF,KAAKmvF,oBAC7BC,EAAaF,EAAsB,GACnCG,EAAYH,EAAsB,GAElCI,EAAQ,GAEZ,GAAInB,EAAY,EACd,IAAK,IAAIoB,EAASH,EAAYG,GAAUF,EAAWE,IACjDD,EAAM/tF,KAAKyD,wBAAc0yB,EAAU,CACjCruB,KAAMulF,EACNzvF,IAAK2vF,EAAQS,EAAQX,GACrBznF,MAAOooF,EACP5D,YAAasD,EAAiBtD,OAAc1mF,EAC5ClB,MAAO/D,KAAKysF,cAAc8C,MAOhC,IAAIC,EAAqB1E,EAAsB9qF,KAAKw2B,MAAOx2B,KAAKwrF,gBAChE,OAAOxmF,wBAAc+pF,GAAoBC,GAAgB,MAAO,CAC9DnK,UAAWA,EACX2H,SAAUA,EACVl1D,IAAKt3B,KAAK0tF,gBACV3pF,MAAO0iF,GAAS,CACdZ,SAAU,WACVjtC,OAAQA,EACRD,MAAOA,EACPowC,SAAU,OACV0G,wBAAyB,QACzBC,WAAY,YACZnF,UAAWA,GACVxmF,IACFiB,wBAAc0pF,GAAoBC,GAAgB,MAAO,CAC1Dj3D,SAAU43D,EACVh4D,IAAKm3D,EACL1qF,MAAO,CACL60C,OAAQm0C,EAAe,OAASyC,EAChCG,cAAehE,EAAc,YAAS1mF,EACtC0zC,MAAOo0C,EAAeyC,EAAqB,YAKjDzB,EAAOM,oBAAsB,WAC3B,GAA0C,mBAA/BruF,KAAKw2B,MAAM81D,iBACJtsF,KAAKw2B,MAAM23D,UAEX,EAAG,CACjB,IAAIyB,EAAyB5vF,KAAKmvF,oBAC9BU,EAAsBD,EAAuB,GAC7CE,EAAqBF,EAAuB,GAC5CG,EAAqBH,EAAuB,GAC5CI,EAAoBJ,EAAuB,GAE/C5vF,KAAKgsF,qBAAqB6D,EAAqBC,EAAoBC,EAAoBC,GAI3F,GAAmC,mBAAxBhwF,KAAKw2B,MAAMg2D,SAAyB,CAC7C,IAAIyD,EAAejwF,KAAKilD,MACpBirC,EAAmBD,EAAarE,gBAChCuE,EAAgBF,EAAapE,aAC7BuE,EAA4BH,EAAalE,yBAE7C/rF,KAAKusF,cAAc2D,EAAkBC,EAAeC,KAQxDrC,EAAOoB,kBAAoB,WACzB,IAAIkB,EAAerwF,KAAKw2B,MACpB23D,EAAYkC,EAAalC,UACzBmC,EAAgBD,EAAaC,cAC7BC,EAAevwF,KAAKilD,MACpB0mC,EAAc4E,EAAa5E,YAC3BC,EAAkB2E,EAAa3E,gBAC/BC,EAAe0E,EAAa1E,aAEhC,GAAkB,IAAdsC,EACF,MAAO,CAAC,EAAG,EAAG,EAAG,GAGnB,IAAIiB,EAAanE,EAAuBjrF,KAAKw2B,MAAOq1D,EAAc7rF,KAAKwrF,gBACnE6D,EAAYnE,EAA0BlrF,KAAKw2B,MAAO44D,EAAYvD,EAAc7rF,KAAKwrF,gBAGjFgF,EAAoB7E,GAAmC,aAApBC,EAA8D,EAA7BjhE,KAAKlS,IAAI,EAAG63E,GAChFG,EAAmB9E,GAAmC,YAApBC,EAA6D,EAA7BjhE,KAAKlS,IAAI,EAAG63E,GAClF,MAAO,CAAC3lE,KAAKlS,IAAI,EAAG22E,EAAaoB,GAAmB7lE,KAAKlS,IAAI,EAAGkS,KAAK9R,IAAIs1E,EAAY,EAAGkB,EAAYoB,IAAmBrB,EAAYC,IAG9H9D,EAlZT,CAmZEpyD,iBAAgByxD,EAAOjzD,aAAe,CACtC4yD,UAAW,MACXqE,cAAU3pF,EACV0nF,OAAQ,WACR2D,cAAe,EACfrB,gBAAgB,GACflI,EAOL,IAAI+G,GAAwB,SAA6B4C,EAAOC,GAC/CD,EAAMh5D,SACLg5D,EAAMnG,UACTmG,EAAM93C,OACN83C,EAAM/D,OACA+D,EAAM/B,aACN+B,EAAM1B,aACb0B,EAAM/3C,MACHg4C,EAAMjyC,UAucnBkyC,GAEJjG,GAAoB,CAClBE,cAAe,SAAuB/D,EAAM3/E,GAE1C,OAAOA,EADQ2/E,EAAK4F,UAGtB3B,YAAa,SAAqB2F,EAAOvpF,GAEvC,OADeupF,EAAMhE,UAGvB5B,sBAAuB,SAA+B6F,GACpD,IAAIxC,EAAYwC,EAAMxC,UAEtB,OADewC,EAAMjE,SACHyB,GAEpBnD,8BAA+B,SAAuC6F,EAAO1pF,EAAO+mF,EAAOrC,GACzF,IAAItB,EAAYsG,EAAMtG,UAClB3xC,EAASi4C,EAAMj4C,OACfu1C,EAAY0C,EAAM1C,UAClBzB,EAAWmE,EAAMnE,SACjBC,EAASkE,EAAMlE,OACfh0C,EAAQk4C,EAAMl4C,MAGdqW,EAD6B,eAAdu7B,GAAyC,eAAXoC,EACvBh0C,EAAQC,EAC9Bk4C,EAAiBnmE,KAAKlS,IAAI,EAAG01E,EAAYzB,EAAW19B,GACpD+hC,EAAYpmE,KAAK9R,IAAIi4E,EAAgB3pF,EAAQulF,GAC7CsE,EAAYrmE,KAAKlS,IAAI,EAAGtR,EAAQulF,EAAW19B,EAAO09B,GAUtD,OARc,UAAVwB,IAEAA,EADErC,GAAgBmF,EAAYhiC,GAAQ68B,GAAgBkF,EAAY/hC,EAC1D,OAEA,UAIJk/B,GACN,IAAK,QACH,OAAO6C,EAET,IAAK,MACH,OAAOC,EAET,IAAK,SAID,IAAIC,EAAetmE,KAAKmnD,MAAMkf,GAAaD,EAAYC,GAAa,GAEpE,OAAIC,EAAetmE,KAAKqnC,KAAKhD,EAAO,GAC3B,EACEiiC,EAAeH,EAAiBnmE,KAAKqxC,MAAMhN,EAAO,GACpD8hC,EAEAG,EAIb,IAAK,OACL,QACE,OAAIpF,GAAgBmF,GAAanF,GAAgBkF,EACxClF,EACEA,EAAemF,EACjBA,EAEAD,IAKf9F,uBAAwB,SAAgCiG,EAAO7yE,GAC7D,IAAI8vE,EAAY+C,EAAM/C,UAClBzB,EAAWwE,EAAMxE,SACrB,OAAO/hE,KAAKlS,IAAI,EAAGkS,KAAK9R,IAAIs1E,EAAY,EAAGxjE,KAAKqxC,MAAM39C,EAASquE,MAEjExB,0BAA2B,SAAmCiG,EAAO/B,EAAYvD,GAC/E,IAAItB,EAAY4G,EAAM5G,UAClB3xC,EAASu4C,EAAMv4C,OACfu1C,EAAYgD,EAAMhD,UAClBzB,EAAWyE,EAAMzE,SACjBC,EAASwE,EAAMxE,OACfh0C,EAAQw4C,EAAMx4C,MAGdt6B,EAAS+wE,EAAa1C,EACtB19B,EAF6B,eAAdu7B,GAAyC,eAAXoC,EAEvBh0C,EAAQC,EAC9Bw4C,EAAkBzmE,KAAKqnC,MAAMhD,EAAO68B,EAAextE,GAAUquE,GACjE,OAAO/hE,KAAKlS,IAAI,EAAGkS,KAAK9R,IAAIs1E,EAAY,EAAGiB,EAAagC,EAAkB,KAG5EjG,kBAAmB,SAA2B30D,KAE9C40D,uCAAuC,EACvCC,cAAe,SAAuBgG,GACrBA,EAAM3E,YAYzB,SAAS9f,GAAe99C,EAAMnV,GAC5B,IAAK,IAAIkzD,KAAa/9C,EACpB,KAAM+9C,KAAalzD,GACjB,OAAO,EAIX,IAAK,IAAI23E,KAAc33E,EACrB,GAAImV,EAAKwiE,KAAgB33E,EAAK23E,GAC5B,OAAO,EAIX,OAAO,EAMT,SAASC,GAASC,EAAW3D,GAC3B,IAAI4D,EAAYD,EAAUztF,MACtB2tF,EAAW9H,GAA8B4H,EAAW,CAAC,UAErDG,EAAY9D,EAAU9pF,MACtB6tF,EAAWhI,GAA8BiE,EAAW,CAAC,UAEzD,OAAQjhB,GAAe6kB,EAAWE,KAAe/kB,GAAe8kB,EAAUE,G,iCCngErE,SAASC,GACdC,EACAC,GAEA,MAAMnnF,EAAIknF,EAAO,GACXjnF,EAAIknF,EAAO,GACjB,MAAI,KAAMnnF,IAAMA,EACV,KAAMC,IAAMA,IAGRD,GAAKC,GAFH,EAEY,EAEjBD,EAAIC,GAAK,EAAI,EAGf,SAASmnF,GAAalrB,GAE3B,GAAkB,MAAdA,EAAO,GAAY,CAIa,OAFlCA,EAASA,EAAOlhC,UAAU,IAEfkhC,EAAOzlE,OAAS,KACzBylE,EAASA,EAAOlhC,UAAU,EAAGkhC,EAAOzlE,OAAS,IAE/C,IACE,OAAO,IAAI+N,OAAO03D,EAAQ,KAC1B,MAAO1+D,GAGP,OAAO,IAAIgH,OAAO,OAItB,SAAS6iF,EAASxyC,GAChB,OAAOA,EAAK9qC,gBAAkB8qC,EAAKriB,cAGrC,SAAS80D,EAAazyC,GACpB,OAAKwyC,EAASxyC,GAIP,IAAMA,EAAK9qC,cAAgB8qC,EAAKriB,cAAgB,IAF9CqiB,EAOX,MAAM0yC,EAAUC,KAAmBtrB,GAC7BwK,EAAY6gB,EAAQ,GAC1B,IAAIE,EAAY,GAGhB,IAAK,IAAIz0F,EAAI,EAAGA,EAAIu0F,EAAQ9wF,OAAQzD,IAClCy0F,GAAaH,EAAaC,EAAQv0F,IAGpC,OAAKq0F,EAAS3gB,GAOP,IAAIliE,OAOT,KACE8iF,EAAa5gB,GACb,IACAA,EAAUl0C,cACV,IACAi1D,GAhBK,IAAIjjF,OAAOkiE,EAAY+gB,GAoB3B,SAASC,GAAkBjpF,GAChC,OAAI5J,eAAe1B,KAAKsL,EAAMg9B,EAAKykC,cAC1BzhE,EAAKg9B,EAAKykC,cAEVyC,GAAqBlkE,GAAM,GAItC,SAASkpF,GAASlpF,GAChB,IAAK,MAAMlK,KAAOkK,EAAM,CACtB,MAAMxK,EAAQwK,EAAKlK,GAEfN,GAASA,EAAMwnC,EAAKlhC,MACtBkE,EAAKlK,GAAOmzF,GAAkBzzF,GACZ,MAATA,IACL+M,MAAMC,QAAQhN,IAEU,iBAAVA,IADhB0zF,GAAS1zF,IAQV,SAAS2zF,GAAqBh8D,GACnC,MAAMi8D,EAASn0F,OAAOwhB,OAAO,GAAI0W,GAEjC+7D,GAASE,GAET,IACE,OAAO/xF,KAAKC,UAAU8xF,EAAQ,KAAM,GACpC,MAAOnqF,GACP,MAAO,IAiCX,IAAIoqF,GAAc,K,woDCblB,MAAMC,GAAmBr5D,wBACrB,MAEJq5D,GAAiBrzD,YAAc,mBAE/B,MAAMszD,GAAwBt5D,wBAC1B,MAyPJ,SAASu5D,GAAkB1b,EAAclyB,EAAc2E,GAAuB,IAE1EkpC,EAKE7tC,EALF6tC,YACAC,EAIE9tC,EAJF8tC,cACAC,EAGE/tC,EAHF+tC,WACAC,EAEEhuC,EAFFguC,kBACAC,EACEjuC,EADFiuC,qBAEF,MAAMxY,EAAUz1B,EAAMy1B,QAEhByY,EAAkBL,EAClBM,EAAiBJ,EACjBK,EAAuBN,EAAc1xF,OAM3C,IAAIiyF,GAAmB,EAGvB,GAAgB,OAAZ5Y,EACF,OAAQ9wB,EAAOzkD,MACb,IAAK,2BACCkuF,EAAuB,IACzBC,GAAmB,EACnBR,EACEA,EAAc,EAAIO,EAAuBP,EAAc,EAAI,GAE/D,MACF,IAAK,+BACCO,EAAuB,IACzBC,GAAmB,EACnBR,EACIA,EAA6B,EACzBA,EAA6B,EAC/BO,EAAuB,GAE/B,MACF,IAAK,wBACH,GAAmB,KAAfL,EAAmB,YAIhBppC,EAAsC5F,QAJtB,GAEnBw2B,EAFmB,UAMH/0E,QAAQ,CAAC4tE,EAAU/xE,KAEnC,MAAM6F,EAAQ4rF,EAAcluF,QAAQvD,GAChC6F,GAAS,IACX4rF,EAAgBA,EACbjnF,MAAM,EAAG3E,GACTnG,OAAO+xF,EAAcjnF,MAAM3E,EAAQ,IAGT,IAAzB4rF,EAAc1xF,OAChByxF,EAAc,KACHA,GAA8BC,EAAc1xF,SACvDyxF,EAAcC,EAAc1xF,OAAS,MAK3Cm5E,EAAgB/0E,QAAQnE,IACtB,MAAMuuD,EAAYsnB,EAAMK,eAAel2E,GAIvC,GAAgB,OAAZuuD,EAAkB,OACbvwB,EAAeuwB,EAAfvwB,YAGD6pC,EAAS6oB,GAAagB,GAC5B,GAAoB,OAAhB1zD,GAAwB6pC,EAAOn8D,KAAKsyB,GAAc,CACpD,MAAMi0D,EAAoBpc,EAAMoG,oBAC9Bj8E,GAGF,IAAIkyF,GAAa,EACjB,IAAK,IAAIrsF,EAAQ,EAAGA,EAAQ4rF,EAAc1xF,OAAQ8F,IAAS,CACzD,MAAMssF,EAAWV,EAAc5rF,GAC/B,GACEosF,EACEpc,EAAMoG,oBAAoBkW,GAC5B,CACAD,GAAa,EACbT,EAAgBA,EACbjnF,MAAM,EAAG3E,GACTnG,OAAOyyF,GACPzyF,OAAO+xF,EAAcjnF,MAAM3E,IAC9B,OAGCqsF,IACHT,EAAgBA,EAAc/xF,OAAOM,IAGvCwxF,EAA8B,OAAhBA,EAAuB,EAAIA,MAKjD,MACF,IAAK,kBAKH,GAJAA,EAAc,KACdC,EAAgB,GAChBC,EAAcppC,EAAgC5F,QAE3B,KAAfgvC,EAAmB,CACrB,MAAM7pB,EAAS6oB,GAAagB,GAC5B7b,EAAMmC,MAAM7zE,QAAQotE,KA4Y9B,SAAS6gB,EACPvc,EACAE,EACAlO,EACA4pB,GACM,QAC6C5b,EAAMK,eACvDH,GADK3/C,EADD,EACCA,SAAU4H,EADX,EACWA,YAAaqtC,EADxB,EACwBA,iBAIX,MAAfrtC,IAAoD,IAA7B6pC,EAAOn8D,KAAKsyB,IAGlB,MAAnBqtC,GACAA,EAAgBtrE,OAAS,IAC2B,IAApDsrE,EAAgB10D,KAAK9Z,GAAQgrE,EAAOn8D,KAAK7O,MAJzC40F,EAAcxxF,KAAK81E,GASrB3/C,EAASjyB,QAAQguE,GACfigB,EAAsBvc,EAAO1D,EAAStK,EAAQ4pB,IAhatCW,CAAsBvc,EAAOtE,EAAQ1J,EAAQ4pB,KAE3CA,EAAc1xF,OAAS,IAGrByxF,EAFoB,OAApBK,EAC2B,OAAzBD,EAgalB,SACE/b,EACA4b,EACAG,GAEA,MAAM/rF,EAAQ4rF,EAAcY,UAAUryF,IACpC,MAAMsyF,EAAazc,EAAMoG,oBAAoBj8E,GAC7C,OAAsB,OAAfsyF,GAAuBA,GAAcV,IAG9C,OAAkB,IAAX/rF,EAAe,EAAIA,EAzaE0sF,CACZ1c,EACA4b,EACAG,GAGY,EAGFvoE,KAAK9R,IACfs6E,EACFJ,EAAc1xF,OAAS,IAK/B,MACF,QAEE,OAAO4jD,EAIb,GAAI+tC,IAAeI,EAAgB,CACjC,MAAMU,EAAiBf,EAAcluF,QAAQouF,IACrB,IAApBa,EAGFR,GAAmB,EAInBR,EAAcgB,EAUlB,OAPIR,GAAoC,OAAhBR,IACtBG,EAAsBF,EAAcD,GACpCI,EAAuB/b,EAAMoG,oBACzB0V,IAIN,SACKhuC,GADL,IAGEguC,oBACAC,uBAEAJ,cACAC,gBACAC,eAwLJ,SAASe,IAAsB,SAC7Br8D,EAD6B,0BAE7Bs8D,EAF6B,eAG7BC,EAH6B,yBAI7BC,EAJ6B,4BAK7BC,IAEA,MAAMjd,EAAS37C,qBAAW2nD,IACpB/L,EAAQ57C,qBAAW4nD,IAEnBiR,EAAkBx4D,kBAAQ,IAAMu7C,EAAMkd,SAAU,CAACld,IAKjDmd,EAAU14D,kBACd,IAAM,CAACqpB,EAAc2E,KAA0B,MACtCzkD,EAAQykD,EAARzkD,KACP,OAAQA,GACN,IAAK,2BACL,IAAK,+BACL,IAAK,wBACL,IAAK,oBACL,IAAK,0BACL,IAAK,uBACL,IAAK,+BACL,IAAK,8BACL,IAAK,8BACL,IAAK,yCACL,IAAK,6CACL,IAAK,gCACL,IAAK,kCACL,IAAK,kCACL,IAAK,eACL,IAAK,8BACL,IAAK,kBASH,OARA8/C,EAnmBV,SAAyBkyB,EAAclyB,EAAc2E,GAAuB,IAExEqzB,EAIEh4B,EAJFg4B,YACAsX,EAGEtvC,EAHFsvC,0BACArB,EAEEjuC,EAFFiuC,qBACAD,EACEhuC,EADFguC,kBAIEuB,GAAmB,EAGvB,GAAgB,OALAvvC,EAAMy1B,QAMpB,OAAQ9wB,EAAOzkD,MACb,IAAK,wBACH83E,EAAc9F,EAAM8F,YAGpB,MAAMwX,EAAa7qC,EAAO5F,QAAQ,GAIlC,KACwB,OAAtBivC,GACAwB,EAAWrkE,IAAI6iE,IAEfA,EAAsBwB,EAAWh2F,IAC/Bw0F,GAGsB,IAAtBA,IAEFC,EAAuB,MAEzB,MACF,IAAK,+BAGH,GAFAqB,EAA4B,KAEC,OAAzBrB,EAA+B,CACjC,MAAMwB,EAAkBvd,EAAM6F,kBAC1BkW,GAEJ,GACsB,OAApBwB,GACAA,EAAgBh9D,SAASr2B,OAAS,IACjCqzF,EAAgBzqF,YACjB,CACA,MAAM0qF,EAAeD,EAAgBh9D,SAAS,GACxCk9D,EAAkBzd,EAAMoG,oBAAoBoX,GAC1B,OAApBC,IACF1B,EAAuB0B,IAI7B,MACF,IAAK,0BACHL,EAA4B,KAE5BrB,EAAwBtpC,EAAwC5F,QAChE,MACF,IAAK,uBACHuwC,EAA4B,KAI5BC,GAAmB,EAEnBvB,EAAqBrpC,EAAqC5F,QAC1DkvC,EACwB,OAAtBD,EACI,KACA9b,EAAMoG,oBAAoB0V,GAChC,MACF,IAAK,8BACHsB,EAA4B,KAGD,OAAzBrB,GACAA,EAAuB,GAAKjW,EAE5BiW,EAAuB,EAEvBA,IAEF,MACF,IAAK,8BAGH,GAFAqB,EAA4B,KAEC,OAAzBrB,EAA+B,CACjC,MAAMwB,EAAkBvd,EAAM6F,kBAC1BkW,GAEJ,GAAwB,OAApBwB,GAAyD,IAA7BA,EAAgBrhB,SAAgB,CAC9D,MAAMjxE,EAAS+0E,EAAMK,eAAekd,EAAgBrhB,UACpD,GAAe,OAAXjxE,EAAiB,OACZs1B,EAAYt1B,EAAZs1B,SACDm9D,EAAqBn9D,EAAS7yB,QAAQ6vF,EAAgBpzF,IACtDwzF,EACJD,EAAqBn9D,EAASr2B,OAAS,EACnCq2B,EAASm9D,EAAqB,GAC9Bn9D,EAAS,GACfw7D,EAAuB/b,EAAMoG,oBAAoBuX,KAIvD,MACF,IAAK,yCACH,GAA6B,OAAzB5B,GAE8B,OAA9BqB,GACAA,IAA8BtB,EAC9B,CACA,MAAM8B,EAAc5d,EAAMK,eAAe+c,GACzC,GAAoB,OAAhBQ,EAAsB,CACxB,IAAI5X,EAAiB4X,EACrB,KAA0B,OAAnB5X,GAAyB,CAC9B,GAAIA,EAAezC,UAAYuY,EAAmB,CAChDC,EAAuB/b,EAAMoG,oBAC3BJ,EAAe77E,IAEjB,MACoC,IAA3B67E,EAAezC,UACxByC,EAAiBhG,EAAMK,eAAe2F,EAAezC,YAM/D,MACF,IAAK,6CACH,GAA6B,OAAzBwY,EAA+B,CACC,OAA9BqB,IAIFA,EAA4BtB,GAG9B,MAAMyB,EAAkBvd,EAAM6F,kBAC1BkW,GAEJ,GAAwB,OAApBwB,GAAwD,IAA5BA,EAAgBha,QAAe,CAC7D,MAAMsa,EAAa7d,EAAMoG,oBACvBmX,EAAgBha,SAEC,OAAfsa,IACF9B,EAAuB8B,IAI7B,MACF,IAAK,gCAGH,GAFAT,EAA4B,KAEC,OAAzBrB,EAA+B,CACjC,MAAMwB,EAAkBvd,EAAM6F,kBAC1BkW,GAEJ,GAAwB,OAApBwB,GAAyD,IAA7BA,EAAgBrhB,SAAgB,CAC9D,MAAM4hB,EAAc9d,EAAMoG,oBACxBmX,EAAgBrhB,UAEE,OAAhB4hB,IACF/B,EAAuB+B,IAI7B,MACF,IAAK,kCACHV,EAA4B,KAEC,OAAzBrB,GAA0D,IAAzBA,EACnCA,EAAuBjW,EAAc,EAErCiW,IAEF,MACF,IAAK,kCAGH,GAFAqB,EAA4B,KAEC,OAAzBrB,EAA+B,CACjC,MAAMwB,EAAkBvd,EAAM6F,kBAC1BkW,GAEJ,GAAwB,OAApBwB,GAAyD,IAA7BA,EAAgBrhB,SAAgB,CAC9D,MAAMjxE,EAAS+0E,EAAMK,eAAekd,EAAgBrhB,UACpD,GAAe,OAAXjxE,EAAiB,OACZs1B,EAAYt1B,EAAZs1B,SACDm9D,EAAqBn9D,EAAS7yB,QAAQ6vF,EAAgBpzF,IACtDwzF,EACJD,EAAqB,EACjBn9D,EAASm9D,EAAqB,GAC9Bn9D,EAASA,EAASr2B,OAAS,GACjC6xF,EAAuB/b,EAAMoG,oBAAoBuX,KAIvD,MACF,QAEE,OAAO7vC,EAeb,OAVIuvC,GAAoBtB,IAAyBjuC,EAAMiuC,uBAEnDD,EAD2B,OAAzBC,EACkB,KAEA/b,EAAMmG,oBACtB4V,IAKR,SACKjuC,GADL,IAGEg4B,cACAsX,4BACArB,uBACAD,sBAsYciC,CAAgB/d,EAAOlyB,EAAO2E,GACtC3E,EAAQ4tC,GAAkB1b,EAAOlyB,EAAO2E,GAQV,QAN9B3E,EAzEV,SACEkyB,EACAlyB,EACA2E,GAGA,OADeA,EAARzkD,MAEL,IAAK,8BACH,GAAI8/C,EAAMkwC,qBAAuBlwC,EAAMguC,kBACrC,gBACKhuC,GADL,IAEEkwC,mBAAoBlwC,EAAMguC,oBASlC,OAAOhuC,EAqDSmwC,CAAoBje,EAD5BlyB,EA1NV,SAA2BkyB,EAAclyB,EAAc2E,GAAuB,IAE1EqzB,EAKEh4B,EALFg4B,YACAgW,EAIEhuC,EAJFguC,kBACAC,EAGEjuC,EAHFiuC,qBACAxY,EAEEz1B,EAFFy1B,QACA2a,EACEpwC,EADFowC,cAN0E,MAQrEvC,EAA0C7tC,EAA1C6tC,YAAaC,EAA6B9tC,EAA7B8tC,cAAeC,EAAc/tC,EAAd+tC,WAEnC,IAAIsC,EAA2BpC,EAE/B,OAAQtpC,EAAOzkD,MACb,IAAK,wBACa,OAAZu1E,EACGvD,EAAM4F,gBAAgBrC,IAKzB2a,EAAgBle,EAAMsG,wBAAwB/C,GACpB,OAAtBuY,IAEFC,EAAuBmC,EAAc1B,UACnC9jC,GAAWA,EAAQvuD,KAAO2xF,MAR9BvY,EAAU,KACV2a,EAAgB,KAChBpC,EAAoB,MAWI,OAAtBA,IAEFC,EAAuB/b,EAAMoG,oBAAoB0V,KAGvB,IAA1BC,IAEFA,EAAuB,KACvBD,EAAoB,MAEtB,MACF,IAAK,oBACHvY,EAAU,KACV2a,EAAgB,KAChBnC,EACwB,OAAtBD,EACI9b,EAAMoG,oBAAoB0V,GAC1B,KACN,MACF,IAAK,0BACmB,OAAlBoC,IACFnC,EAAwBtpC,EAAwC5F,SAElE,MACF,IAAK,uBACH,GAAsB,OAAlBqxC,EAAwB,CAC1B,MAAMrxC,EAAW4F,EAAqC5F,QACtC,OAAZA,EACFkvC,EAAuB,MAEvBA,EAAuBmC,EAAc1B,UACnC9jC,GAAWA,EAAQvuD,KAAO0iD,GAMC,OAAzBkvC,GAAiCA,EAAuB,IAC1DxY,EAAU,KACV2a,EAAgB,KAChBnC,EAAuB/b,EAAMoG,oBAAoBv5B,KAIvD,MACF,IAAK,8BACmB,OAAlBqxC,GAA0BA,EAAch0F,OAAS,IACtB,OAAzB6xF,EACFA,EAAuB,EACdA,EAAuB,EAAImC,EAAch0F,QAClD6xF,KAGJ,MACF,IAAK,kCACmB,OAAlBmC,GAA0BA,EAAch0F,OAAS,GACtB,OAAzB6xF,GAAiCA,EAAuB,GAC1DA,IAGJ,MACF,IAAK,eAGC/b,EAAMyD,mBACRF,EAAW9wB,EAA6B5F,QACxCqxC,EAAgBle,EAAMsG,wBAAwB/C,GAG9CwY,EAAuB,EACvBoC,EAA2B,MAE7B,MACF,QAEE,OAAOrwC,EA0BX,OArBEowC,IAAkBpwC,EAAMowC,eACR,0BAAhBzrC,EAAOzkD,OAGL83E,EADoB,OAAlBoY,EACYle,EAAM8F,YAENoY,EAAch0F,QAK5B6xF,IAAyBoC,IACE,OAAzBpC,EACFD,EAAoB,KAEE,OAAlBoC,IACFpC,EAAoBoC,EAAcnC,GAAsB5xF,KAK9D,SACK2jD,GADL,IAGEg4B,cACAgW,oBACAC,uBAEAJ,cACAC,gBACAC,aAEAtY,UACA2a,kBA4EcE,CAAkBpe,EAAOlyB,EAAO2E,GACEA,IAMlCqpC,mBACN9b,EAAM4C,yBAAyB90B,EAAMguC,mBAErC,SACKhuC,GADL,IAEEiuC,qBAAsB,OAInBjuC,EACT,QACE,MAAM,IAAIhhD,MAAO,wBAAuBkB,QAG9C,CAACgyE,IArDK,KAwDkBt7C,qBAAWy4D,EAAS,CAE5CrX,YAAa9F,EAAM8F,YACnBsX,0BAA2B,KAC3BtB,kBAC8B,MAA5BiB,EAAmC,KAAOA,EAC5ChB,qBACiC,MAA/BiB,EAAsC,KAAOA,EAG/CrB,YAAa,KACbC,cAAe,GACfC,WAAY,GAGZtY,QAA2B,MAAlBuZ,EAAyB,KAAOA,EACzCoB,cAAe,KAGfF,mBAC+B,MAA7BnB,EAAoC,KAAOA,IA5EvC,GAwDD/uC,EAxDC,KAwDM94B,EAxDN,KA+EFqpE,EAAkBl6D,sBACrBsuB,IAIC6rC,oCAAgBpV,iCAAsB,IAAMl0D,EAASy9B,IACrDjwC,yBAAK,IAAMwS,EAAS,CAAChnB,KAAM,kCAE7B,CAACgnB,IAIHsP,oBAAU,KACR,MAAMi6D,EAAqBp0F,GACzBk0F,EAAgB,CAACrwF,KAAM,uBAAwB6+C,QAAS1iD,IAE1D,OADA41E,EAAOxP,YAAY,cAAeguB,GAC3B,IAAMxe,EAAOr8D,eAAe,cAAe66E,IACjD,CAACxe,EAAQse,IAIZ,MAAMG,EAAwB75D,iBAAsB,MA0CpD,OAzCAH,0BAAgB,KACd,GAAIspB,EAAMguC,oBAAsB0C,EAAsBx+D,UACpDw+D,EAAsBx+D,QAAU8tB,EAAMguC,kBAEN,OAA5BhuC,EAAMguC,mBAA4B,CACpC,MAAMpjC,EAAUsnB,EAAMK,eAAevyB,EAAMguC,mBAC3B,OAAZpjC,GAAoBA,EAAQwjB,SAAW,GACzC8D,EAAM8G,kBAAkBpuB,EAAQwjB,UAAU,KAI/C,CAACpuB,EAAMguC,kBAAmB9b,IAG7B17C,oBAAU,KACR,MAAMm6D,EAAqB,EAAEpb,EAAiBC,MAI5C+a,EAAgB,CACdrwF,KAAM,wBACN6+C,QAAS,CAACw2B,EAAiBC,MAiB/B,OAZItD,EAAMkd,WAAaD,GAIrBoB,EAAgB,CACdrwF,KAAM,wBACN6+C,QAAS,CAAC,GAAI,IAAIh0B,OAItBmnD,EAAMzP,YAAY,UAAWkuB,GAEtB,IAAMze,EAAMt8D,eAAe,UAAW+6E,IAC5C,CAACJ,EAAiBpB,EAAiBjd,IAGpC,gBAACwb,GAAiBh5D,SAAlB,CAA2B96B,MAAOomD,GAChC,gBAAC2tC,GAAsBj5D,SAAvB,CAAgC96B,MAAO22F,GACpC99D,IA5uBTk7D,GAAsBtzD,YAAc,wB,gqDC7GpC,SAASu2D,GAAwB5wC,EAAO2E,GACtC,OAAQA,EAAOzkD,MACb,IAAK,QACH,gBACK8/C,GADL,IAEE6wC,cAAepkB,GAAe9nB,EAAOmsC,eACrCA,cAAensC,EAAOmsC,cACtBC,mBAAmB,EACnBC,SAAS,EACTC,YAAatsC,EAAOmsC,gBAExB,IAAK,SACH,IACII,EADAC,GAAkB,EAEtB,IACED,EAAiB3kB,GAAW5nB,EAAOksC,eACnCM,GAAkB,EAClB,MAAO9tF,IACT,gBACK28C,GADL,IAEE6wC,cAAevkB,GAAiB3nB,EAAOksC,eACvCC,cAAensC,EAAOmsC,cACtBC,kBACEtkB,GAAe9nB,EAAOmsC,iBAAmBnsC,EAAOksC,cAClDG,QAASG,EACTF,YAAaE,EAAkBD,EAAiBlxC,EAAMixC,cAE1D,QACE,MAAM,IAAIjyF,MAAO,mBAAkB2lD,EAAOzkD,UAsEzC,SAASkxF,GACdl3F,EACA4hC,GAEA,MAAMu1D,EAA2Bh7D,sBAAY,KAC3C,IACE,MAAMp7B,EAAOqqE,EAAoBprE,GACjC,GAAY,MAARe,EACF,OAAOQ,KAAKyP,MAAMjQ,GAEpB,MAAOoI,GACPD,QAAQ8E,IAAI7E,GAEd,MAA4B,mBAAjBy4B,EACAA,IAEFA,GAER,CAACA,EAAc5hC,IAfmB,KAiBC48B,mBAAcu6D,GAjBf,GAiB9BC,EAjB8B,KAiBjBC,EAjBiB,KAmB/Bt2D,EAAW5E,sBACfz8B,IACE,IACE,MAAM43F,EACJ53F,aAAiB2yB,SAAY3yB,EAAY03F,GAAe13F,EAC1D23F,EAAeC,GACf/rB,EAAoBvrE,EAAKuB,KAAKC,UAAU81F,IACxC,MAAOnuF,GACPD,QAAQ8E,IAAI7E,KAGhB,CAACnJ,EAAKo3F,IAoBR,OAfA56D,0BAAgB,KACd,MAAM+6D,EAAYj7C,IAChB,MAAMk7C,EAAWL,IACbn3F,IAAQs8C,EAAMt8C,KAAOo3F,IAAgBI,GACvCz2D,EAASy2D,IAMb,OAFA/0F,OAAO2G,iBAAiB,UAAWmuF,GAE5B,KACL90F,OAAOqf,oBAAoB,UAAWy1E,KAEvC,CAACJ,EAA0Bn3F,EAAKo3F,EAAar2D,IAEzC,CAACq2D,EAAar2D,GAGhB,SAAS02D,GACdC,EACAC,EACAC,GAAkC,GAElCt7D,oBAAU,KACR,GAAyB,OAArBo7D,EAAS1/D,QACX,MAAO,OAGT,MAAM6/D,EAAwB,EAAE73F,UAClB,WAARA,GACF23F,KAIEG,EAAuBx7C,IAGJ,OAArBo7C,EAAS1/D,SACR0/D,EAAS1/D,QAAQ4+B,SAASta,EAAMt5C,UAEjCs5C,EAAM1J,kBACN0J,EAAMryC,iBAEN0tF,MAOEz1D,EAAgBw1D,EAAS1/D,QAAQkK,cAMvC,OALAA,EAAc94B,iBAAiB,UAAWyuF,GACtCD,GACF11D,EAAc94B,iBAAiB,QAAS0uF,GAGnC,KACL51D,EAAcpgB,oBAAoB,UAAW+1E,GAC7C31D,EAAcpgB,oBAAoB,QAASg2E,KAE5C,CAACJ,EAAUC,EAAiBC,IAI1B,SAASG,IAAuB,gBACrCC,EADqC,UAErC9sC,IAIS,WACiBtuB,mBAAS,CACjCo7D,kBACA9sC,YACAxrD,MAAOs4F,MAJA,GACFlyC,EADE,KACKnuB,EADL,KAoDT,OA5CEmuB,EAAMkyC,kBAAoBA,GAC1BlyC,EAAMoF,YAAcA,GAEpBvzB,EAAS,CACPqgE,kBACA9sC,YACAxrD,MAAOs4F,MAIX17D,oBAAU,KACR,IAAI27D,GAAiB,EAErB,MAAMC,EAAkB,KAClBD,GAIJtgE,EAASu2D,IACP,GACEA,EAAU8J,kBAAoBA,GAC9B9J,EAAUhjC,YAAcA,EAExB,OAAOgjC,EAGT,MAAMxuF,EAAQs4F,IACd,OAAI9J,EAAUxuF,QAAUA,EACfwuF,EAGT,SAAWA,GAAX,IAAsBxuF,aAGpBy4F,EAAcjtC,EAAUgtC,GAI9B,OAFAA,IAEO,KACLD,GAAiB,EACjBE,MAED,CAACH,EAAiB9sC,IAEdpF,EAAMpmD,MAGR,SAAS04F,KACd,MAAMrgB,EAAS37C,qBAAW2nD,IACpB/L,EAAQ57C,qBAAW4nD,IAwBzB,MAAO,CACLqU,uBAvB6Bl8D,sBAC5Bh6B,IACC,MAAMuuD,EAAUsnB,EAAMK,eAAel2E,GAC/BgnE,EAAa6O,EAAM4G,wBAAwBz8E,GACjC,OAAZuuD,GAAmC,OAAfyY,GACtB4O,EAAO5vD,KAAK,yBAA0B,CACpCgY,YAAauwB,EAAQvwB,YACrBm4D,kBAAkB,EAClBn2F,KACAo2F,yBAAyB,EACzBpvB,aACAqvB,gBAAgB,KAItB,CAACxgB,EAAOD,IASR0gB,4BANkCt8D,sBAAY,KAC9C47C,EAAO5vD,KAAK,gCACX,CAAC4vD,K,28BCrRN,MAAM2gB,GAAkBv+D,wBAAyB,MAYjD,SAASw+D,IAA0B,aACjCC,EADiC,SAEjCrgE,EAFiC,0BAGjCsgE,EAHiC,wBAIjCC,IAEA,MAAM/gB,EAAS37C,qBAAW2nD,IADlB,KAGoCmT,GAC1C,kCACA,WALM,GAGD6B,EAHC,KAGeC,EAHf,UAOkB9B,GACxB,yBACA,QATM,GAOD+B,EAPC,KAOMC,EAPN,UAcJhC,GjCnDJ,yCiCmDqE,GAd7D,GAYN3T,EAZM,KAaN4V,EAbM,UAkBJjC,GjC1DJ,yCiC4DE,GApBM,GAgBN1T,EAhBM,KAiBN4V,EAjBM,UAyBJlC,GjC3DJ,wCiC2DsE,GAzB9D,GAuBNmC,EAvBM,KAwBNC,EAxBM,KA2BFC,EAAmB98D,kBAA0B,KACjD,MAAMgrC,EAA4B,CAC9B/kE,SAASslD,iBAcb,OAZiC,MAA7B6wC,GACFpxB,EAAMrlE,KACFy2F,EAA0B32D,cACzB8lB,iBAGwB,MAA3B8wC,GACFrxB,EAAMrlE,KACF02F,EAAwB52D,cACvB8lB,iBAGAyf,GACN,CAACoxB,EAA2BC,IAE/Bt8D,0BAAgB,KACd,OAAQu8D,GACN,IAAK,cACHS,GAAqB,cAAeD,GACpC,MACF,IAAK,UACHC,GAAqB,UAAWD,GAChC,MACF,QACE,MAAMz0F,MAAO,qCAAoCi0F,QAEpD,CAACA,EAAgBQ,IAEpB/8D,0BAAgB,KACd,OAAQy8D,GACN,IAAK,QACHQ,GAAqB,QAASF,GAC9B,MACF,IAAK,OACHE,GAAqB,OAAQF,GAC7B,MACF,IAAK,OACHE,GAAqBb,EAAcW,GACnC,MACF,QACE,MAAMz0F,MAAO,4BAA2Bm0F,QAE3C,CAACL,EAAcK,EAAOM,IAEzBj9D,oBAAU,KACRy7C,EAAO5vD,KAAK,6BAA8B,CACxCo7D,uBACAC,0BAED,CAACzL,EAAQwL,EAAsBC,IAElClnD,oBAAU,KACRy7C,EAAO5vD,KAAK,yBAA0BkxE,IACrC,CAACthB,EAAQshB,IAEZ,MAAM35F,EAAQ+8B,kBACZ,KAAM,CACJ8mD,uBACAC,uBACAuV,iBACA1zD,WACqB,YAAnB0zD,EACInvB,EACAD,EACNwvB,0BACAC,0BACAJ,oBACAE,WACAI,yBACAL,QACAI,wBAEF,CACE9V,EACAC,EACAuV,EACAI,EACAC,EACAJ,EACAE,EACAI,EACAL,EACAI,IAIJ,OACE,gBAACX,GAAgBl+D,SAAjB,CAA0B96B,MAAOA,GAC9B64B,GAeP,SAASmhE,GACPC,EACA/0F,EACA20F,IAbF,SACEv6F,EACAU,EACA65F,GAEAA,EAAiBjzF,QAAQ0hD,GACvBA,EAAgBpjD,MAAM4hC,YAAYxnC,EAAMU,IAS1Ck6F,CACG,KAAIh1F,EACJ,SAAQ+0F,KAAY/0F,KACrB20F,GAIG,SAASC,GACdT,EACAQ,GAEAG,GACEX,EACA,6BACAQ,GAEFG,GACEX,EACA,4BACAQ,GAEFG,GACEX,EACA,4BACAQ,GAEFG,GAAkBX,EAAgB,wBAAyBQ,GAC3DG,GAAkBX,EAAgB,uBAAwBQ,GAC1DG,GAAkBX,EAAgB,uBAAwBQ,GAC1DG,GAAkBX,EAAgB,mBAAoBQ,GAItD,MACMM,EADgBpT,iBAAkB/jF,SAASwI,MAClB4uF,iBAC5B,KAAIf,oBAEQr2F,SAASQ,cAAc,SACjC0B,MAAMi1F,SAAWA,EAGjB,SAASJ,GACdR,EACAM,GAEAG,GAAkBT,EAAO,uBAAwBM,GACjDG,GACET,EACA,oCACAM,GAEFG,GAAkBT,EAAO,gCAAiCM,GAC1DG,GAAkBT,EAAO,wBAAyBM,GAClDG,GAAkBT,EAAO,iCAAkCM,GAC3DG,GAAkBT,EAAO,iCAAkCM,GAC3DG,GAAkBT,EAAO,mBAAoBM,GAC7CG,GAAkBT,EAAO,yBAA0BM,GACnDG,GAAkBT,EAAO,4BAA6BM,GACtDG,GAAkBT,EAAO,2BAA4BM,GACrDG,GAAkBT,EAAO,4BAA6BM,GACtDG,GAAkBT,EAAO,eAAgBM,GACzCG,GAAkBT,EAAO,0BAA2BM,GACpDG,GAAkBT,EAAO,gCAAiCM,GAC1DG,GAAkBT,EAAO,eAAgBM,GACzCG,GAAkBT,EAAO,sBAAuBM,GAChDG,GAAkBT,EAAO,wBAAyBM,GAClDG,GAAkBT,EAAO,qBAAsBM,GAC/CG,GAAkBT,EAAO,qBAAsBM,GAC/CG,GACET,EACA,mCACAM,GAEFG,GACET,EACA,wCACAM,GAEFG,GACET,EACA,sCACAM,GAEFG,GACET,EACA,2CACAM,GAEFG,GAAkBT,EAAO,0BAA2BM,GACpDG,GAAkBT,EAAO,0BAA2BM,GACpDG,GAAkBT,EAAO,0BAA2BM,GACpDG,GAAkBT,EAAO,0BAA2BM,GACpDG,GAAkBT,EAAO,0BAA2BM,GACpDG,GAAkBT,EAAO,0BAA2BM,GACpDG,GAAkBT,EAAO,0BAA2BM,GACpDG,GAAkBT,EAAO,0BAA2BM,GACpDG,GAAkBT,EAAO,0BAA2BM,GACpDG,GAAkBT,EAAO,0BAA2BM,GACpDG,GAAkBT,EAAO,6BAA8BM,GACvDG,GAAkBT,EAAO,uBAAwBM,GACjDG,GAAkBT,EAAO,gCAAiCM,GAC1DG,GACET,EACA,mCACAM,GAEFG,GACET,EACA,4CACAM,GAEFG,GAAkBT,EAAO,8BAA+BM,GACxDG,GACET,EACA,uCACAM,GAEFG,GAAkBT,EAAO,2BAA4BM,GACrDG,GAAkBT,EAAO,iCAAkCM,GAC3DG,GACET,EACA,oCACAM,GAEFG,GAAkBT,EAAO,uBAAwBM,GACjDG,GAAkBT,EAAO,qBAAsBM,GAC/CG,GAAkBT,EAAO,8BAA+BM,GACxDG,GAAkBT,EAAO,YAAaM,GACtCG,GAAkBT,EAAO,eAAgBM,GACzCG,GAAkBT,EAAO,gBAAiBM,GAC1CG,GAAkBT,EAAO,yBAA0BM,GACnDG,GAAkBT,EAAO,qBAAsBM,GAC/CG,GAAkBT,EAAO,mBAAoBM,GAC7CG,GAAkBT,EAAO,+BAAgCM,GACzDG,GAAkBT,EAAO,aAAcM,GACvCG,GAAkBT,EAAO,yBAA0BM,GACnDG,GAAkBT,EAAO,sBAAuBM,GAChDG,GAAkBT,EAAO,qBAAsBM,GAC/CG,GAAkBT,EAAO,wBAAyBM,GAClDG,GAAkBT,EAAO,2BAA4BM,GACrDG,GAAkBT,EAAO,2BAA4BM,GACrDG,GAAkBT,EAAO,qBAAsBM,GAC/CG,GAAkBT,EAAO,eAAgBM,GACzCG,GAAkBT,EAAO,6BAA8BM,GACvDG,GACET,EACA,uCACAM,GAEFG,GACET,EACA,yCACAM,GAEFG,GAAkBT,EAAO,4BAA6BM,GACtDG,GAAkBT,EAAO,aAAcM,GACvCG,GAAkBT,EAAO,qBAAsBM,GAC/CG,GAAkBT,EAAO,sBAAuBM,GAChDG,GAAkBT,EAAO,kCAAmCM,GAC5DG,GAAkBT,EAAO,6BAA8BM,GACvDG,GAAkBT,EAAO,8BAA+BM,GACxDG,GAAkBT,EAAO,oBAAqBM,GAC9CG,GAAkBT,EAAO,2BAA4BM,GACrDG,GAAkBT,EAAO,qBAAsBM,GAG/CG,GAAkBT,EAAO,iBAAkBM,GAM3CA,EAAiBjzF,QAAQ0hD,IAEvBA,EAAgBpjD,MAAMm1F,eAAkB,SAAWd,+BAAwCA,0BAzU/FP,GAAgBv4D,YAAc,kB,wBChCf,SAAS65D,IAAM,UAC5BtU,EAD4B,gBAE5BlY,EAF4B,KAG5BxnE,EAH4B,SAI5BuyB,IAEA,GAAwB,OAApBi1C,EACF,OAAO,KAGT,MAAMysB,EAAkBzsB,EAAgBtrE,OAExC,OACE,gBAAC,WAAD,KACE,uBAAKwjF,UAAY,GAAE5hF,KAAOk2F,SAAStU,GAAa,MAAOntD,GACtD0hE,EAAkB,GACjB,uBAAKvU,UAAW5hF,KAAOo2F,YAAvB,IAAqCD,EAAkB,I,wBCOhD,SAASE,IAAW,UAACzU,EAAY,GAAb,KAAiB1/E,IAClD,IAAIo0F,EAAW,KACf,OAAQp0F,GACN,IAAK,MACHo0F,EAAWC,GACX,MACF,IAAK,SACHD,EAAWE,GACX,MACF,IAAK,QACHF,EAAWG,GACX,MACF,IAAK,QACHH,EAAWI,GACX,MACF,IAAK,YACHJ,EAAWK,GACX,MACF,IAAK,OACHL,EAAWM,GACX,MACF,IAAK,SACHN,EAAWO,GACX,MACF,IAAK,OACHP,EAAWQ,GACX,MACF,IAAK,WACHR,EAAWS,GACX,MACF,IAAK,SACHT,EAAWU,GACX,MACF,IAAK,SACHV,EAAWW,GACX,MACF,IAAK,SACHX,EAAWY,GACX,MACF,IAAK,WACHZ,EAAWa,GACX,MACF,IAAK,OACHb,EAAWc,GACX,MACF,IAAK,OACHd,EAAWe,GACX,MACF,IAAK,WACHf,EAAWgB,GACX,MACF,IAAK,SACHhB,EAAWiB,GACX,MACF,IAAK,SACHjB,EAAWkB,GACX,MACF,IAAK,OACHlB,EAAWmB,GACX,MACF,IAAK,SACHnB,EAAWoB,GACX,MACF,IAAK,WACHpB,EAAWqB,GACX,MACF,IAAK,UACHrB,EAAWsB,GACX,MACF,IAAK,OACHtB,EAAWuB,GACX,MACF,IAAK,KACHvB,EAAWwB,GACX,MACF,IAAK,WACHxB,EAAWyB,GACX,MACF,IAAK,cACHzB,EAAW0B,GACX,MACF,QACE5yF,QAAQsgE,KAAM,qBAAoBxjE,+BAItC,OACE,uBACE+1F,MAAM,6BACNrW,UAAY,GAAE5hF,KAAOq2F,cAAczU,IACnClsC,MAAM,KACNC,OAAO,KACPuiD,QAAQ,aACR,wBAAMj9F,EAAE,gBAAgBk9F,KAAK,SAC7B,wBAAMA,KAAK,eAAel9F,EAAGq7F,KAKnC,MAAMC,GACJ,uGAEIC,GAAe,8GAIfC,GAAc,qPAKdC,GACJ,wGAEIC,GAAiB,qBAEjBC,GAAa,wNAKbC,GAAe,2LAKfC,GAAY,0DAEZC,GAAgB,iBAEhBC,GAAc,2DAEdC,GAAc,iDAEdC,GAAc,0DAEdC,GAAiB,wYAOjBC,GAAa,8JAKbC,GAAY,4DAEZC,GACJ,+DAEIC,GAAc,uCAEdC,GAAe,yNAMfC,GAAa,uJAIbC,GAAe,oLAKfC,GAAiB,2rBAUjBC,GAAgB,0PAKhBC,GAAa,0JAKbC,GAAU,iDAEVC,GAAiB,gOAMjBC,GAAoB,qG,m+BCrNX,SAASI,IAAY,KAAChyF,EAAD,MAAOlC,EAAP,MAAcpD,IAChD,MAAMozE,EAAQ57C,qBAAW4nD,IADsC,EAEX5nD,qBAClDo3D,IADK0C,EAFwD,EAExDA,cAAe3a,EAFyC,EAEzCA,QAASuY,EAFgC,EAEhCA,kBAGzB9mE,EAAWoP,qBAAWq3D,IAEtB/iC,EACc,OAAlBwlC,EACIA,EAAcluF,GACdgwE,EAAM6F,kBAAkB71E,GAViC,KAY7B40B,oBAAS,GAZoB,GAYxDu/D,EAZwD,KAY7CC,EAZ6C,KAcxDC,EAA8DnyF,EAA9DmyF,yBAA0BC,EAAoCpyF,EAApCoyF,oBAAqBC,EAAeryF,EAAfqyF,YAChDp6F,EAAiB,OAAZuuD,EAAmB,KAAOA,EAAQvuD,GACvCq6F,EAAa1I,IAAsB3xF,EAoCzC,GAAe,MAAXuuD,EAIF,OAHAxnD,QAAQsgE,KAAM,iDAAgDxhE,GAGvD,KAxDsD,QAiEzD0oD,EALJ2mB,EA5D6D,EA4D7DA,MACAl3C,EA7D6D,EA6D7DA,YACAqtC,EA9D6D,EA8D7DA,gBACAxtE,EA/D6D,EA+D7DA,IACAgG,EAhE6D,EAgE7DA,KAGF,IAAI0/E,EAAY5hF,KAAO85D,QASvB,OARI4+B,EACF9W,EAAY6W,EACRz4F,KAAO24F,gBACP34F,KAAO44F,wBACFP,IAAcE,IACvB3W,EAAY5hF,KAAO64F,gBAInB,uBACEjX,UAAWA,EACXkX,aA9CqB,KACvBR,GAAa,GACF,OAAPj6F,GACFm6F,EAAoBn6F,IA4CpB06F,aAxCqB,KACvBT,GAAa,IAwCXU,YAzDoB,EAAEvoD,cACb,OAAPpyC,GACF6qB,EAAS,CACPhnB,KAAM,uBACN6+C,QAAStQ,EAAU,KAAOpyC,KAsD5B46F,cAhEsB,KACb,OAAP56F,GACF6qB,EAAS,CAAChnB,KAAM,eAAgB6+C,QAAS1iD,KA+DzCyC,MAAOA,EACPo4F,aAAY3lB,GAEZ,uBACEqO,UAAW5hF,KAAOm5F,QAClBr4F,MAAO,CAGLgC,UAAY,mBAAkBywE,kCAEnB,OAAZkE,EACC,gBAAC2hB,GAAD,CAAsBxsC,QAASA,EAASsnB,MAAOA,IAC7C,KACJ,gBAACmlB,GAAD,CAAah9D,YAAaA,EAAah+B,GAAMA,IAC5CnC,GACC,gBAAC,WAAD,SACQ,wBAAM0lF,UAAW5hF,KAAOs5F,SAAxB,OADR,KAEE,wBACE1X,UAAW5hF,KAAOu5F,SAClBC,MAAOt9F,EACP+8F,cA3DiBzgD,IAG3BA,EAAM1J,kBACN0J,EAAMryC,mBAwDKjK,GANL,KAWmB,OAApBwtE,GAA4BA,EAAgBtrE,OAAS,EACpD,gBAAC,GAAD,CACEwjF,UAAW5hF,KAAOk2F,MAClBxsB,gBAAiBA,EACjBxnE,KAAMA,GACN,gBAACm3F,GAAD,CACEh9D,YAAaqtC,EAAgB,GAC7BrrE,GAAMA,KAGR,OAOZ,MAAMo7F,GAAqBjhD,IACzBA,EAAMryC,iBACNqyC,EAAM1J,mBAQR,SAASsqD,IAAqB,QAACxsC,EAAD,MAAUsnB,IAAmC,MAClEz/C,EAA6Bm4B,EAA7Bn4B,SAAUp2B,EAAmBuuD,EAAnBvuD,GAAI2I,EAAe4lD,EAAf5lD,YAcrB,OAAwB,IAApBytB,EAASr2B,OACJ,uBAAKwjF,UAAW5hF,KAAOo5F,uBAI9B,uBACExX,UAAW5hF,KAAOo5F,qBAClBJ,YAZoBxgD,IAEtBA,EAAM1J,mBAWJ+c,QApBoBrT,IACtBA,EAAMryC,iBACNqyC,EAAM1J,kBAENolC,EAAM8G,kBAAkB38E,GAAK2I,IAiB3BiyF,cAAeQ,IACf,gBAAC,GAAD,CAAYv3F,KAAM8E,EAAc,YAAc,cAUpD,SAASqyF,IAAY,YAACh9D,EAAD,GAAch+B,IAAuB,QACPi6B,qBAAWo3D,IAArDG,EADiD,EACjDA,YAAaC,EADoC,EACpCA,cAAeC,EADqB,EACrBA,WAC7B2J,EAAiB/gE,kBAAQ,IACtBm3D,EAAczvE,SAAShiB,GAC7B,CAACA,EAAIyxF,IACF6J,EACY,OAAhB9J,GAAwBxxF,IAAOyxF,EAAcD,GAE/C,IAAK6J,GAAkC,OAAhBr9D,EACrB,OAAOA,EAGT,MAAM7uB,EAAQuhF,GAAagB,GAAYp5E,KAAK0lB,GAE5C,GAAc,OAAV7uB,EACF,OAAO6uB,EAGT,MAAM8vD,EAAa3+E,EAAMtJ,MACnBkoF,EAAYD,EAAa3+E,EAAM,GAAGpP,OAElCq2B,EAAW,GAejB,OAdI03D,EAAa,GACf13D,EAASn2B,KAAK,wBAAMpC,IAAI,SAASmgC,EAAYxzB,MAAM,EAAGsjF,KAExD13D,EAASn2B,KACP,wBACEpC,IAAI,SACJ0lF,UAAW+X,EAAkB35F,KAAO45F,iBAAmB55F,KAAO65F,WAC7Dx9D,EAAYxzB,MAAMsjF,EAAYC,KAG/BA,EAAY/vD,EAAYj+B,QAC1Bq2B,EAASn2B,KAAK,wBAAMpC,IAAI,OAAOmgC,EAAYxzB,MAAMujF,KAG5C33D,ECtOT,IAAIp2B,GAAK,EAKEy7F,GAAQ,WACjB,IAAIC,EAAYjhE,mBAAS,MACrBz6B,EAAK07F,EAAU,GACfC,EAAQD,EAAU,GAKtB,OAHAvhE,qBAAU,WACR,OAAOwhE,IATA37F,MAUN,IACIA,GCFF,IAAI47F,GAAY,SAAmBC,EAAcC,GACtD,OAAO,SAAU3hD,GAEf,GADA0hD,GAAgBA,EAAa1hD,IACxBA,EAAM7J,iBACT,OAAOwrD,EAAW3hD,K,SCtBxB,SAAS4hD,GAAgB3+C,EAAU0nC,GAAe,KAAM1nC,aAAoB0nC,GAAgB,MAAM,IAAIt7E,UAAU,qCAEhH,SAASwyF,GAA2BpvE,EAAMnwB,GAAQ,IAAKmwB,EAAQ,MAAM,IAAIy4D,eAAe,6DAAgE,OAAO5oF,GAAyB,iBAATA,GAAqC,mBAATA,EAA8BmwB,EAAPnwB,EASlO,IAAIw/F,GAAa,SAAoB/mE,GAChBA,EAAMgnE,aACHhnE,EAAMinE,gBACjBjnE,EAAMpzB,KACHozB,EAAMknE,QACLlnE,EAAMmnE,SACLnnE,EAAMonE,UACJpnE,EAAMqnE,YACMrnE,EAAM+uB,wBACjB/uB,EAAMsnE,aACZtnE,EAAMyD,OAGnB,OAlBF,SAAkCt0B,EAAKH,GAAQ,IAAIrD,EAAS,GAAI,IAAK,IAAIvE,KAAK+H,EAAWH,EAAKX,QAAQjH,IAAM,GAAkBU,OAAOkB,UAAUC,eAAe1B,KAAK4H,EAAK/H,KAAcuE,EAAOvE,GAAK+H,EAAI/H,IAAM,OAAOuE,EAgBtM47F,CAAyBvnE,EAAO,CAAC,eAAgB,kBAAmB,OAAQ,UAAW,WAAY,YAAa,cAAe,0BAA2B,eAAgB,YAKnL0C,GAAY,SAAU8kE,GAGxB,SAAS9kE,IACP,IAAI6tD,EAAOC,EAEXqW,GAAgBr9F,KAAMk5B,GAEtB,IAAK,IAAI+tD,EAAOhlF,UAAUZ,OAAQ4L,EAAOrB,MAAMq7E,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC3Ej6E,EAAKi6E,GAAQjlF,UAAUilF,GAGzB,OAAeH,EAASC,EAAQsW,GAA2Bt9F,KAAMg+F,EAAiBjgG,KAAKiE,MAAMg8F,EAAkB,CAACh+F,MAAMgB,OAAOiM,KAAiBgxF,GAAiBlgG,KAAKipF,GAAgBsW,GAA2BtW,EAAnCD,GAkE9K,OArGF,SAAmByB,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAI39E,UAAU,kEAAoE29E,GAAeD,EAAShpF,UAAYlB,OAAOY,OAAOupF,GAAcA,EAAWjpF,UAAW,CAAEuM,YAAa,CAAElN,MAAO2pF,EAAUhqF,YAAY,EAAOiiE,UAAU,EAAMzgC,cAAc,KAAeyoD,IAAYnqF,OAAOoqF,eAAiBpqF,OAAOoqF,eAAeF,EAAUC,GAAcD,EAASrB,UAAYsB,GAwB/dyV,CAAUhlE,EAAW8kE,GAcrB9kE,EAAU15B,UAAUilE,QAAU,WAC5B,IAAIxf,EAAQjlD,KAAKilD,MACbzuB,EAAQx2B,KAAKw2B,MACbM,EAAW92B,KAAKm+F,UAChBpnE,EAAc/2B,KAAKo+F,aACnBh7F,EAAOpD,KAAKq+F,MAEhB,MAAO,CACLp5C,MAAOA,EACPzuB,MAAO+mE,GAAW/mE,GAClBpzB,KAAMA,EACN0zB,SAAUA,EACVC,YAAaA,IAIjBmC,EAAU15B,UAAUkmD,kBAAoB,WAClC1lD,KAAKw2B,MAAMmnE,UAAU39F,KAAKw2B,MAAMmnE,SAAS39F,KAAKykE,YAGpDvrC,EAAU15B,UAAUslD,sBAAwB,SAA+B+oC,EAAWyQ,GACpF,OAAIt+F,KAAKw2B,MAAMsnE,cAAqB99F,KAAKw2B,MAAMsnE,aAAa,CAC1DtnE,MAAOx2B,KAAKw2B,MACZyuB,MAAOjlD,KAAKilD,MACZ4oC,UAAW0P,GAAW1P,GACtByQ,UAAWA,KAIfplE,EAAU15B,UAAU0xD,qBAAuB,WACrClxD,KAAKw2B,MAAMqnE,aAAa79F,KAAKw2B,MAAMqnE,YAAY,CACjD54C,MAAOjlD,KAAKilD,MACZzuB,MAAO+mE,GAAWv9F,KAAKw2B,OACvBpzB,KAAMpD,KAAKq+F,SAIfnlE,EAAU15B,UAAUmtD,mBAAqB,SAA4B6kC,EAAWnE,EAAWkR,GACrFv+F,KAAKw2B,MAAMonE,WAAW59F,KAAKw2B,MAAMonE,UAAUt/F,OAAOwhB,OAAO9f,KAAKykE,UAAW,CAC3E+sB,UAAW+L,GAAW/L,GACtBnE,UAAWA,IACTkR,IAGNrlE,EAAU15B,UAAU+lD,wBAA0B,SAAiCisC,EAAWnE,GACxF,OAAIrtF,KAAKw2B,MAAM+uB,wBACNvlD,KAAKw2B,MAAM+uB,wBAAwBjnD,OAAOwhB,OAAO9f,KAAKykE,UAAW,CACtE+sB,UAAW+L,GAAW/L,GACtBnE,UAAWA,KAGN,MAIXn0D,EAAU15B,UAAUy6B,OAAS,WAC3B,IAAI4uD,EAAS7oF,KAAKw2B,MACdkB,EAAWmxD,EAAOnxD,SAClBuC,EAAS4uD,EAAO5uD,OAEpB,OAAOA,EAASA,EAAOj6B,KAAKykE,WAAiC,mBAAb/sC,EAA0BA,EAAS13B,KAAKykE,WAAa/sC,GAAY,MAG5GwB,EA9EO,CA+EdslE,IAAMtlE,WAERA,GAAUvB,aAAe,CACvB8lE,gBAAiB,aACjBC,QAAS,WACP,MAAO,KAIX,IAAIO,GAAmB,WACrB,IAAIQ,EAASz+F,KAEbA,KAAKilD,MAAQjlD,KAAKw2B,MAAMgnE,cAAgBx9F,KAAKw2B,MAAMinE,gBAAgBz9F,KAAKw2B,OACxEx2B,KAAKq+F,MAAQr+F,KAAKw2B,MAAMpzB,MAAQpD,KAAKw2B,MAAMknE,QAAQ19F,KAAKykE,WAExDzkE,KAAKm+F,UAAY,WACf,OAAOM,EAAO3nE,SAAS90B,MAAMy8F,EAAQx8F,YAGvCjC,KAAKo+F,aAAe,WAClB,OAAOK,EAAO1nE,YAAY/0B,MAAMy8F,EAAQx8F,aAmB7Bi3B,MCtGAikC,GAvCF,SAAgB2pB,GAC3B,IAAIpvD,EAAWovD,EAAKpvD,SAChBgnE,EAAY5X,EAAK3hF,KACjBA,OAAqBF,IAAdy5F,EAA0B,eAAiBA,EACtD,OAAOF,IAAMx5F,cAAck0B,GAAW,CACpCwkE,QAAS,WACP,MAAO,CAAEiB,UAAW,KAAMC,WAAY,OAExCjB,SAAU,SAAkBjN,GAC1B,IAAIttF,EAAOstF,EAAMttF,KACb2zB,EAAc25D,EAAM35D,YAIpBsK,EAAgBj+B,EAAKu7F,UAAUt9D,cACnCj+B,EAAKw7F,WAAav9D,EAAcr8B,cAAcG,GAC9Ck8B,EAAch3B,KAAK/F,YAAYlB,EAAKw7F,YACpC7nE,KAEF8mE,YAAa,SAAqBlN,GAChC,IAAIiO,EAAajO,EAAMvtF,KAAKw7F,WAE5BA,EAAWv9D,cAAch3B,KAAK1F,YAAYi6F,IAE5C3kE,OAAQ,SAAgB42D,GACtB,IAAIztF,EAAOytF,EAAMztF,KACbw7F,EAAax7F,EAAKw7F,WAEtB,OAAKA,EAKI1kC,uBAAaxiC,EAAUknE,GAJvBJ,IAAMx5F,cAAc,MAAO,CAAEsyB,IAAK,SAAaunE,GAClD,OAAOz7F,EAAKu7F,UAAYE,SClChCpY,GAAWnoF,OAAOwhB,QAAU,SAAU3d,GAAU,IAAK,IAAIvE,EAAI,EAAGA,EAAIqE,UAAUZ,OAAQzD,IAAK,CAAE,IAAIkD,EAASmB,UAAUrE,GAAI,IAAK,IAAIuB,KAAO2B,EAAcxC,OAAOkB,UAAUC,eAAe1B,KAAK+C,EAAQ3B,KAAQgD,EAAOhD,GAAO2B,EAAO3B,IAAY,OAAOgD,GAInP4B,GAAQ,CACV+6F,OAAQ,EACRC,KAAM,gBACNnmD,OAAQ,MACRD,MAAO,MACPqmD,OAAQ,OACRC,QAAS,EACTlW,SAAU,SACVlD,SAAU,YAGI,YAAUrvD,GACxB,OAAOgoE,IAAMx5F,cAAc,MAAOyhF,GAAS,CAAE1iF,MAAOA,IAASyyB,KChB3DA,IAAS,QAAS,SAAU,MAAO,QAAS,SAAU,QAEtD0oE,YAAet0F,EAAQC,gDAAW2rB,GAAMve,eAAKknF,UAAQv0F,EAAEu0F,KAAUt0F,EAAEs0F,OAEvE,YAAgB/wE,EAAMjH,GACpBi4E,IAAIC,EACAC,EAeJ,eAbIC,aACFH,IAAII,EAAUpxE,EAAKqxE,wBACfP,GAAYM,EAASH,IAEvBl4E,EADAk4E,EAAOG,GAGTF,EAAQ3jC,sBAAsB4jC,IAOvBA,qBAHP7jC,qBAAqB4jC,MClBrB7Y,GAAWnoF,OAAOwhB,QAAU,SAAU3d,GAAU,IAAK,IAAIvE,EAAI,EAAGA,EAAIqE,UAAUZ,OAAQzD,IAAK,CAAE,IAAIkD,EAASmB,UAAUrE,GAAI,IAAK,IAAIuB,KAAO2B,EAAcxC,OAAOkB,UAAUC,eAAe1B,KAAK+C,EAAQ3B,KAAQgD,EAAOhD,GAAO2B,EAAO3B,IAAY,OAAOgD,GAOnP83B,GAAS,SAAgB6sD,GAC3B,IAAI1jF,EAAO0jF,EAAK1jF,KAGhB,OAAOs0B,EAFQovD,EAAKtwD,MAAMkB,UAEV,CAAEJ,IAAK,SAAalJ,GAChC,OAAOhrB,EAAKgrB,KAAOA,GAClBixE,KAHMvY,EAAK7hC,MAAMo6C,QAMpB1B,GAAW,SAAkBjN,GAC/B,IAAI55D,EAAW45D,EAAM55D,SACjB1zB,EAAOstF,EAAMttF,KACbozB,EAAQk6D,EAAMl6D,MAEbpzB,EAAKgrB,MAIVhrB,EAAKs8F,SAAWC,GAAYv8F,EAAKgrB,MAAM,SAAUixE,GAC/C7oE,EAAMopE,UAAYppE,EAAMopE,SAASP,GACjCvoE,EAAS,CAAEuoE,KAAMA,OAEf7oE,EAAM+oE,SACRn8F,EAAKs8F,SAASH,WARdl3F,QAAQsgE,KAAK,8BAYbi1B,GAAY,SAAmBjN,GACjC,IAAIvtF,EAAOutF,EAAMvtF,KACbozB,EAAQm6D,EAAMn6D,MACdg7D,EAAYb,EAAMa,UAElBh7D,EAAM+oE,UAAY/N,EAAU+N,QAC9Bn8F,EAAKs8F,SAASH,WACJ/oE,EAAM+oE,SAAW/N,EAAU+N,SACrCn8F,EAAKs8F,SAASG,aAIdhC,GAAc,SAAqBhN,GAC1BA,EAAMztF,KAEZs8F,SAASG,aAGZC,GAAO,SAActpE,GACvB,OAAOgoE,IAAMx5F,cAAck0B,GAAWutD,GAAS,GAAIjwD,EAAO,CACxDpzB,KAAM,CACJgrB,UAAMnpB,EACNy6F,cAAUz6F,GAEZu4F,aAAc,CACZ6B,UAAMp6F,GAER04F,SAAUA,GACVC,UAAWA,GACXC,YAAaA,GACb5jE,OAAQA,OAcL,SAAS8lE,GAAQC,GACtB,IAAIT,IAAUt9F,UAAUZ,OAAS,QAAsB4D,IAAjBhD,UAAU,KAAmBA,UAAU,GAEzE+6F,EAAYjhE,mBAAS,MACrBsjE,EAAOrC,EAAU,GACjBiD,EAAUjD,EAAU,GAEpBkD,EAAcpkE,iBAAO,MAYzB,OAXAH,2BAAgB,WAOd,OANKukE,EAAY/oE,UACf+oE,EAAY/oE,QAAUwoE,GAAYK,EAAQ7oE,QAAS8oE,IAEjDV,GACFW,EAAY/oE,QAAQooE,UAEf,WACL,OAAOW,EAAY/oE,QAAQ0oE,eAE5B,CAACN,IACGF,EAvBTS,GAAKnoE,aAAe,CAClB4nE,SAAS,GAyBIO,IClGXK,GAFA1Z,GAAWnoF,OAAOwhB,QAAU,SAAU3d,GAAU,IAAK,IAAIvE,EAAI,EAAGA,EAAIqE,UAAUZ,OAAQzD,IAAK,CAAE,IAAIkD,EAASmB,UAAUrE,GAAI,IAAK,IAAIuB,KAAO2B,EAAcxC,OAAOkB,UAAUC,eAAe1B,KAAK+C,EAAQ3B,KAAQgD,EAAOhD,GAAO2B,EAAO3B,IAAY,OAAOgD,GAIvP,SAAS47F,GAAyBp4F,EAAKH,GAAQ,IAAIrD,EAAS,GAAI,IAAK,IAAIvE,KAAK+H,EAAWH,EAAKX,QAAQjH,IAAM,GAAkBU,OAAOkB,UAAUC,eAAe1B,KAAK4H,EAAK/H,KAAcuE,EAAOvE,GAAK+H,EAAI/H,IAAM,OAAOuE,EAmDnN,IAAIi+F,GAAO,OAGPC,GAAU,UAGVC,GAAU,UASVC,GAAQ,CACVhkC,QAAS6jC,GACTI,QAASL,GAAU,GAAIA,GAAQC,IAAQ,CACrCK,MAAOC,GACP7iF,GAAI,CACF8iF,WAAYN,GACZxvC,MAAOyvC,KAERH,GAAQE,IAAW,CACpBI,MAgHJ,WACEr4E,aAAaw4E,IACbA,GAAcl1F,YAAW,WACvB,OAAO+sB,GAAW,UACjB,MAnHDooE,MAsHJ,WACEz4E,aAAaw4E,KAtHX/iF,GAAI,CACFijF,UAAWT,GACXU,WAAYX,GACZY,UAhBU,YAiBVC,KAAMb,GACNc,KAAMZ,KAEPH,GAAQG,IAAW,CACpBziF,GAAI,CACFgzC,MAAOwvC,GACPM,WAAYN,GACZU,WA5BgB,iBA6BhBE,KA7BgB,iBA8BhBD,UA1BU,YA2BVG,mBA3BU,YA4BVC,gBAhCgB,mBAkCjBjB,GAAO,eAAoB,CAC5BM,MA0GJ,WACEr4E,aAAai5E,IACbA,GAAsB31F,YAAW,WAC/B,OAAO+sB,GAAW,kBACjB,MA7GDooE,MAAO,WAiHTz4E,aAAai5E,IA/GTX,MAEF7iF,GAAI,CACF8iF,WAAYL,GACZzvC,MAAOyvC,GACPgB,aAAclB,KAEfD,GAAO,UAAc,CACtBU,MAAO,WAELpqE,GAAQn1B,GAAK,MAEfuc,GAAI,CACFkjF,WAAYX,GACZa,KAAMb,KAEPD,KAKD1pE,GAAU,CAAEn1B,GAAI,MAChB2jD,GAAQs7C,GAAMhkC,QAQlB,SAAS9jC,GAAWmxB,EAAQ23C,GAC1B,IAAIC,EAAWjB,GAAMC,OAAOv7C,IACxBq5C,EAAYkD,EAAS3jF,GAAG+rC,GAK5B,IAAK00C,EACH,MAAM,IAAIr6F,MAAM,6BAAgC2lD,EAAS,iBAAqB3E,GAAQ,KAGpFu8C,EAASX,OACXW,EAASX,QAGPU,IACF9qE,GAAU8qE,GAGZ,IAAIE,EAAUlB,GAAMC,OAAOlC,GACvBmD,EAAQhB,OACVgB,EAAQhB,QAGVx7C,GAAQq5C,EAuBRoD,GAAcj8F,SAAQ,SAAUjE,GAC9B,OAAOA,EAAGyjD,GAAOxuB,OAXrB,IAAIirE,GAAgB,GAEpB,SAASr3C,GAAU7oD,GAEjB,OADAkgG,GAAcngG,KAAKC,GACZ,WACLkgG,GAAc58F,OAAO48F,GAAc78F,QAAQrD,GAAK,IAepD,IAAIo/F,QAAc,EAclB,IAAIS,QAAsB,EAe1B,SAASX,KACPjqE,GAAQn1B,GAAK,KAiJA,SAASqgG,GAAQjR,GAC9B,IAAIh5D,EAAWg5D,EAAMh5D,SACjBy+C,EAAQua,EAAMva,MACdyrB,EAAYlR,EAAMkR,UAClBC,EAAcnR,EAAMmR,YACpBX,EAAOnD,GAAyBrN,EAAO,CAAC,WAAY,QAAS,YAAa,gBAE1EoR,EAnJC,WACL,IAAIhb,EAAO7kF,UAAUZ,OAAS,QAAsB4D,IAAjBhD,UAAU,GAAmBA,UAAU,GAAK,GAC3E85F,EAAejV,EAAKiV,aACpBgG,EAAcjb,EAAKib,YACnB/F,EAAelV,EAAKkV,aACpBgG,EAAUlb,EAAKkb,QAEfC,GADSnb,EAAKob,OACFpb,EAAKmb,WACjBhG,EAAcnV,EAAKmV,YACnB3kE,EAAMwvD,EAAKxvD,IACXuqE,EAAc/a,EAAK+a,YAEnBvgG,EAAK,WAAay7F,KAElBC,EAAYjhE,qBAAS8lE,GAAqBprE,GAAQn1B,KAAOA,GAAM2jD,KAAUq7C,IACzE6B,EAAYnF,EAAU,GACtBoF,EAAepF,EAAU,GAKzBqF,EAAa/qE,GAAOwE,mBACpBwmE,EAAcvC,GAAQsC,EAAYF,GAEtC1mE,qBAAU,WACR,OAAO4uB,IAAU,WACX5zB,GAAQn1B,KAAOA,GAAO2jD,KAAUq7C,IA1LpB,mBA0L+Br7C,GAG7Cm9C,GAAa,GAFbA,GAAa,QAKhB,CAAC9gG,IAEJm6B,qBAAU,eAIV,IAAI8mE,EAAmB,WACrB,OAAQt9C,IACN,KAAKm7C,GACL,KAAKE,GACL,IA1MgB,iBA4MZ7nE,GAAW,aAAc,CAAEn3B,GAAIA,MAKnCkhG,EAAkB,WACpB,OAAQv9C,IACN,KAAKo7C,GAED5nE,GAAW,YAAa,CAAEn3B,GAAIA,MAKlCmhG,EAAc,SAAqBhnD,GACrC,IAAI75C,OAAO8gG,yBACX,OAAQz9C,IACN,KAAKm7C,GACL,KAAKE,GACL,IA/NgB,iBAiOZ7nE,GAAW,QAAS,CAAEn3B,GAAIA,MAK9BqhG,EAAmB,WACrB,OAAQ19C,IACN,KAAKo7C,GACL,KAAKC,GACL,IAtOU,YAwON7nE,GAAW,gBAKfmqE,EAAa,WAEf,GAAInsE,GAAQn1B,KAAOA,EACnB,OAAQ2jD,IACN,KAAKo7C,GACL,KAAKC,GACL,IAnPU,YAqPN7nE,GAAW,UAKfoqE,EAAkB,WAEpB,GAAIpsE,GAAQn1B,KAAOA,EACnB,OAAQ2jD,IACN,KAAKo7C,GACL,KAAKC,GAED7nE,GAAW,eAKfqqE,EAAgB,SAAuBrnD,GACzC,GAAkB,UAAdA,EAAMt8C,KAAiC,MAAds8C,EAAMt8C,IACjC,OAAQ8lD,IACN,KAAKq7C,GAED7nE,GAAW,wBAMjBsqE,EAAU,CACZ,mBAAoBzhG,EACpB,6BAA8B,GAC9Bg2B,IAAK+qE,EACLtG,aAAcmB,GAAUnB,EAAcwG,GACtCR,YAAa7E,GAAU6E,EAAaS,GACpCR,QAAS9E,GAAU8E,EAASS,GAC5BP,OAAQhF,GAAU8E,EAASY,GAC3B5G,aAAckB,GAAUlB,EAAc2G,GACtCV,UAAW/E,GAAU+E,EAAWa,GAChC7G,YAAaiB,GAAUjB,EAAa4G,IAGlCG,EAAU,CACZ1hG,GAAIA,EACJghG,YAAaA,EACbH,UAAWA,GAGb,MAAO,CAACY,EAASC,EAASb,GAWRc,CAAW,CAAEpB,YAAaA,IACxCkB,EAAUjB,EAAY,GACtBkB,EAAUlB,EAAY,GAE1B,OAAOtD,IAAMx5F,cACXowB,WACA,KACAiE,uBAAaN,WAASE,KAAKvB,GAAWqrE,GACtCvE,IAAMx5F,cAAck+F,GAAczc,GAAS,CACzCtQ,MAAOA,EACPyrB,UAAWA,GACVoB,EAAS9B,KAWhB,IAAIgC,GAAelpE,sBAAW,SAAsB22D,EAAO32D,GACzD,IAAIm8C,EAAQwa,EAAMxa,MACdyrB,EAAYjR,EAAMiR,UAClB/b,EAAW8K,EAAM9K,SACjBsc,EAAYxR,EAAMwR,UAClB7gG,EAAKqvF,EAAMrvF,GACXghG,EAAc3R,EAAM2R,YACpBpB,EAAOnD,GAAyBpN,EAAO,CAAC,QAAS,YAAa,WAAY,YAAa,KAAM,gBAEjG,OAAOwR,EAAY3D,IAAMx5F,cACvBm4D,GACA,KACAqhC,IAAMx5F,cAAcm+F,GAAgB1c,GAAS,CAC3CtQ,MAAOA,EACPyrB,UAAWA,EACX/b,SAAUA,EACVsc,UAAWA,EACX7gG,GAAIA,EACJghG,YAAaA,EACbhrE,IAAK0C,GACJknE,KACD,QAWFiC,GAAiBnpE,sBAAW,SAAwB62D,EAAO72D,GAC7D,IAAIm8C,EAAQ0a,EAAM1a,MACdyrB,EAAY/Q,EAAM+Q,UAClBwB,EAAiBvS,EAAMhL,SACvBA,OAA8B5gF,IAAnBm+F,EAA+BC,GAAkBD,EAC5DjB,EAAYtR,EAAMsR,UAClB7gG,EAAKuvF,EAAMvvF,GACXghG,EAAczR,EAAMyR,YACpBv+F,EAAQ8sF,EAAM9sF,MACdm9F,EAAOnD,GAAyBlN,EAAO,CAAC,QAAS,YAAa,WAAY,YAAa,KAAM,cAAe,UAE5GyS,EAA4B,MAAb1B,EACf2B,EAAaznE,mBACb0nE,EAAczD,GAAQwD,EAAYpB,GACtC,OAAO3D,IAAMx5F,cACXowB,WACA,KACAopE,IAAMx5F,cAAc,MAAOyhF,GAAS,CAClC,sBAAsB,EACtBgd,KAAMH,OAAer+F,EAAY,UACjC3D,GAAIgiG,OAAer+F,EAAY3D,EAC/Bo2B,SAAUy+C,EACVpyE,MAAO0iF,GAAS,GAAI1iF,EAAO2/F,GAAU7d,EAAUyc,EAAakB,IAC5DlsE,IAAK,SAAalJ,GAChBm1E,EAAWpsE,QAAU/I,EACjB4L,GAAYA,EAAW5L,KAE5B8yE,IACHoC,GAAgB9E,IAAMx5F,cACpB2+F,GACA,CAAEF,KAAM,UAAWniG,GAAIA,GACvBsgG,OAQF8B,GAAY,SAAmB7d,EAAUyc,EAAakB,GAExD,OADgCA,EAEvB,CAAEI,WAAY,UAEhB/d,EAASyc,EAAakB,IAG3BH,GAAkB,SAAyBf,EAAakB,GAC1D,IAAIvgG,EAAS,CACXmzD,KAAMksC,EAAYlsC,KAAOx0D,OAAOiiG,YAAc,KAC9CvtC,IAAKgsC,EAAYhsC,IAAMgsC,EAAY1pD,OAASh3C,OAAOkiG,YAAc,MAG/DC,EAAa,CACfztC,IAAKgsC,EAAYhsC,IAAMktC,EAAY5qD,OAAS,EAC5CorD,MAAOpiG,OAAOqiG,WAAa3B,EAAYlsC,KAAOotC,EAAY7qD,MAC1DurD,OAAQtiG,OAAOuiG,YAAc7B,EAAY4B,OAASV,EAAY5qD,OAnBrD,EAoBTwd,KAAMksC,EAAYlsC,KAAOotC,EAAY7qD,MAAQ,GAI3CyrD,EAAcL,EAAWG,SAAWH,EAAWztC,IAEnD,OAAOmwB,GAAS,GAAIxjF,EAAQ,CAC1BmzD,KAJmB2tC,EAAWC,QAAUD,EAAW3tC,KAI5BksC,EAAY0B,MAAQR,EAAY7qD,MAAQ/2C,OAAOiiG,YAAc,KAAOvB,EAAYlsC,KAAOx0D,OAAOiiG,YAAc,KACnIvtC,IAAK8tC,EAAc9B,EAAYhsC,IA5BtB,EA4BqCktC,EAAY5qD,OAASh3C,OAAOkiG,YAAc,KAAOxB,EAAYhsC,IA5BlG,EA4BiHgsC,EAAY1pD,OAASh3C,OAAOkiG,YAAc,Q,wCChdzJ,SAASO,IAAO,SAC7B3sE,EAD6B,UAE7BmtD,EAAY,GAFiB,WAG7B9qB,GAAa,EAHgB,UAI7BuqC,EAJ6B,SAK7B1E,EAL6B,MAM7BnD,IAEA,IAAI8H,EAEFA,EADExqC,EACiB92D,KAAOuhG,eACjBF,EACUrhG,KAAOwhG,SAEPxhG,KAAOyhG,UAG5B,MAAMC,EAAcrpE,sBAAY,IAAMskE,GAAU0E,GAAY,CAC1DA,EACA1E,IAGF,IAAIgF,EACF,0BACE/f,UAAY,GAAE0f,KAAoB1f,IAClCnjD,SAAUq4B,EACVjL,QAAS61C,GACT,wBAAM9f,UAAW5hF,KAAO4hG,cAAeC,UAAW,GAC/CptE,IAaP,OARI+kE,IACFmI,EACE,gBAACjD,GAAD,CAAS9c,UAAWkgB,KAAcpD,QAASxrB,MAAOsmB,GAC/CmI,IAKAA,E,28BCpDM,SAASI,KAAyB,WACPjpE,oBAAS,GADF,GACxCkpE,EADwC,KAC1BC,EAD0B,KAEzChuB,EAAS37C,qBAAW2nD,IAEpBiiB,EAAe7pE,sBAClBgpE,IACCY,EAAgBZ,GAEZA,EACFptB,EAAO5vD,KAAK,yBAEZ4vD,EAAO5vD,KAAK,wBAAwB,IAGxC,CAAC4vD,IAUH,OAPAz7C,oBAAU,KACR,MAAM2pE,EAAyB,IAAMF,GAAgB,GAErD,OADAhuB,EAAOxP,YAAY,uBAAwB09B,GACpC,IACLluB,EAAOr8D,eAAe,uBAAwBuqF,IAC/C,CAACluB,IAGF,gBAAC,GAAD,CACE0oB,SAAUuF,EACVb,UAAWW,EACXxI,MAAM,+CACN,gBAAC,GAAD,CAAYt3F,KAAK,YCxCvB,IAuCeg4D,GAvCF,SAAgB2pB,GAC3B,IAAIpvD,EAAWovD,EAAKpvD,SAChBgnE,EAAY5X,EAAK3hF,KACjBA,OAAqBF,IAAdy5F,EAA0B,eAAiBA,EACtD,OAAOF,IAAMx5F,cAAck0B,GAAW,CACpCwkE,QAAS,WACP,MAAO,CAAEiB,UAAW,KAAMC,WAAY,OAExCjB,SAAU,SAAkBjN,GAC1B,IAAIttF,EAAOstF,EAAMttF,KACb2zB,EAAc25D,EAAM35D,YAIpBsK,EAAgBj+B,EAAKu7F,UAAUt9D,cACnCj+B,EAAKw7F,WAAav9D,EAAcr8B,cAAcG,GAC9Ck8B,EAAch3B,KAAK/F,YAAYlB,EAAKw7F,YACpC7nE,KAEF8mE,YAAa,SAAqBlN,GAChC,IAAIiO,EAAajO,EAAMvtF,KAAKw7F,WAE5BA,EAAWv9D,cAAch3B,KAAK1F,YAAYi6F,IAE5C3kE,OAAQ,SAAgB42D,GACtB,IAAIztF,EAAOytF,EAAMztF,KACbw7F,EAAax7F,EAAKw7F,WAEtB,OAAKA,EAKI1kC,uBAAaxiC,EAAUknE,GAJvBJ,IAAMx5F,cAAc,MAAO,CAAEsyB,IAAK,SAAaunE,GAClD,OAAOz7F,EAAKu7F,UAAYE,SLlChCroE,IAAS,QAAS,SAAU,MAAO,QAAS,SAAU,QAI1D,YAAgBpI,EAAMjH,GACpBi4E,IAAIC,EACAC,EAeJ,eAbIC,aACFH,IAAII,EAAUpxE,EAAKqxE,yBAPnBP,SAAet0F,EAAQC,gDAAW2rB,GAAMve,eAAKknF,UAAQv0F,EAAEu0F,KAAUt0F,EAAEs0F,OAQ/DD,CAAYM,EAASH,IAEvBl4E,EADAk4E,EAAOG,GAGTF,EAAQ3jC,sBAAsB4jC,IAOvBA,qBAHP7jC,qBAAqB4jC,MMlBrB7Y,GAAWnoF,OAAOwhB,QAAU,SAAU3d,GAAU,IAAK,IAAIvE,EAAI,EAAGA,EAAIqE,UAAUZ,OAAQzD,IAAK,CAAE,IAAIkD,EAASmB,UAAUrE,GAAI,IAAK,IAAIuB,KAAO2B,EAAcxC,OAAOkB,UAAUC,eAAe1B,KAAK+C,EAAQ3B,KAAQgD,EAAOhD,GAAO2B,EAAO3B,IAAY,OAAOgD,GAOnP83B,GAAS,SAAgB6sD,GAC3B,IAAI1jF,EAAO0jF,EAAK1jF,KAGhB,OAAOs0B,EAFQovD,EAAKtwD,MAAMkB,UAEV,CAAEJ,IAAK,SAAalJ,GAChC,OAAOhrB,EAAKgrB,KAAOA,GAClBixE,KAHMvY,EAAK7hC,MAAMo6C,QAMpB1B,GAAW,SAAkBjN,GAC/B,IAAI55D,EAAW45D,EAAM55D,SACjB1zB,EAAOstF,EAAMttF,KACbozB,EAAQk6D,EAAMl6D,MAEbpzB,EAAKgrB,MAIVhrB,EAAKs8F,SAAWC,GAAYv8F,EAAKgrB,MAAM,SAAUixE,GAC/C7oE,EAAMopE,UAAYppE,EAAMopE,SAASP,GACjCvoE,EAAS,CAAEuoE,KAAMA,OAEf7oE,EAAM+oE,SACRn8F,EAAKs8F,SAASH,WARdl3F,QAAQsgE,KAAK,8BAYbi1B,GAAY,SAAmBjN,GACjC,IAAIvtF,EAAOutF,EAAMvtF,KACbozB,EAAQm6D,EAAMn6D,MACdg7D,EAAYb,EAAMa,UAElBh7D,EAAM+oE,UAAY/N,EAAU+N,QAC9Bn8F,EAAKs8F,SAASH,WACJ/oE,EAAM+oE,SAAW/N,EAAU+N,SACrCn8F,EAAKs8F,SAASG,aAIdhC,GAAc,SAAqBhN,GAC1BA,EAAMztF,KAEZs8F,SAASG,aAGZC,GAAO,SAActpE,GACvB,OAAOgoE,IAAMx5F,cAAck0B,GAAWutD,GAAS,GAAIjwD,EAAO,CACxDpzB,KAAM,CACJgrB,UAAMnpB,EACNy6F,cAAUz6F,GAEZu4F,aAAc,CACZ6B,UAAMp6F,GAER04F,SAAUA,GACVC,UAAWA,GACXC,YAAaA,GACb5jE,OAAQA,OAUZ6lE,GAAKnoE,aAAe,CAClB4nE,SAAS,GAyBIO,UChGXuF,GAA8B,oBAAXzjG,OAEnB+7F,GAAW,SAAkB7W,GAC/B,IAAI1jF,EAAO0jF,EAAK1jF,KACZ0zB,EAAWgwD,EAAKhwD,SAEhBwuE,EAAS,WACX,OAAOxuE,EAAS,CACd6hB,MAAO/2C,OAAOqiG,WACdrrD,OAAQh3C,OAAOuiG,eAGnBviG,OAAO2G,iBAAiB,SAAU+8F,GAClCliG,EAAKmiG,YAAc,WACjB3jG,OAAOqf,oBAAoB,SAAUqkF,KAIrCzH,GAAc,SAAqBnN,GAC1BA,EAAMttF,KAEZmiG,eAwBQC,GArBE,SAAoB7U,GACnC,IAAIj5D,EAAWi5D,EAAMj5D,SACrB,OAAO8mE,IAAMx5F,cAAck0B,GAAW,CACpC91B,KAAM,CAAEmiG,YAAa,MACrB/H,aAAc,CACZ7kD,MAAO0sD,IAAazjG,OAAOqiG,WAC3BrrD,OAAQysD,IAAazjG,OAAOuiG,aAE9BxG,SAAUA,GACVE,YAAaA,GACb5jE,OAAQ,SAAgB42D,GACtB,IAAI5rC,EAAQ4rC,EAAM5rC,MAClB,OAAOvtB,EAASutB,OCtBf,IAAIi4C,GAAY,SAAmBC,EAAcC,GACtD,OAAO,SAAU3hD,GAEf,GADA0hD,GAAgBA,EAAa1hD,IACxBA,EAAM7J,iBACT,OAAOwrD,EAAW3hD,KAKbgqD,GAAY,SAAmBnuE,EAAKz4B,GAC7C,GAAW,MAAPy4B,EACJ,GAAmB,mBAARA,EACTA,EAAIz4B,QAEJ,IACEy4B,EAAIH,QAAUt4B,EACd,MAAOyJ,GACP,MAAM,IAAIrE,MAAM,wBAA2BpF,EAAQ,aAAiBy4B,EAAM,OCnC5EmvD,GAAWnoF,OAAOwhB,QAAU,SAAU3d,GAAU,IAAK,IAAIvE,EAAI,EAAGA,EAAIqE,UAAUZ,OAAQzD,IAAK,CAAE,IAAIkD,EAASmB,UAAUrE,GAAI,IAAK,IAAIuB,KAAO2B,EAAcxC,OAAOkB,UAAUC,eAAe1B,KAAK+C,EAAQ3B,KAAQgD,EAAOhD,GAAO2B,EAAO3B,IAAY,OAAOgD,GAEvP,SAAS47F,GAAyBp4F,EAAKH,GAAQ,IAAIrD,EAAS,GAAI,IAAK,IAAIvE,KAAK+H,EAAWH,EAAKX,QAAQjH,IAAM,GAAkBU,OAAOkB,UAAUC,eAAe1B,KAAK4H,EAAK/H,KAAcuE,EAAOvE,GAAK+H,EAAI/H,IAAM,OAAOuE,EAenN,IAAIujG,GAAiBpsE,0BACjBK,GAAW+rE,GAAe/rE,SAC1BC,GAAW8rE,GAAe9rE,SAE1B+rE,GAAyB,SAAgC7e,GAC3D,IAAI1jF,EAAO0jF,EAAK1jF,KACZ6hD,EAAQ6hC,EAAK7hC,MACbooC,EAAYvG,EAAKuG,UAErB,QAAKpoC,EAAM2gD,SAAUvY,EAAUuY,UACrBxiG,EAAKyiG,KAAK9vC,SAASl0D,SAAS2+B,gBAKpCslE,GAAsB,SAA6BpV,EAAOqV,GAC5D,IAAI3iG,EAAOstF,EAAMttF,KACb6hD,EAAQyrC,EAAMzrC,MACdooC,EAAYqD,EAAMrD,UAElBpoC,EAAM2gD,SAAWvY,EAAUuY,QAC7BhkG,OAAO8gG,0BAA2B,GACJ,IAA1Bz9C,EAAM+gD,eAGRrqC,uBAAsB,WACpBv4D,EAAKksF,MAAMrqC,EAAM+gD,gBAAgBn1C,WAGnCztD,EAAKyiG,KAAKh1C,UAEF5L,EAAM2gD,QAAUvY,EAAUuY,QAC/BG,GACH3iG,EAAKywC,OAAOgd,QAKdjvD,OAAO8gG,0BAA2B,GACzBz9C,EAAM+gD,iBAAmB3Y,EAAU2Y,kBACd,IAA1B/gD,EAAM+gD,eAGR5iG,EAAKyiG,KAAKh1C,QAEVztD,EAAKksF,MAAMrqC,EAAM+gD,gBAAgBn1C,UAKnCo1C,GAAkB,SAAyBhhD,GAC7C,MAAO,CAAE2gD,QAAQ,EAAMI,eAAgB,IAGrCvpF,GAAQ,SAAewoC,GACzB,MAAO,CACL2gD,QAAQ,EACRI,gBAAiB,EACjBE,kBAAkB,IAYlBC,GAAQ,SAAe5zF,GACzB,OAAOA,EAAS,IAAMoY,KAAKmJ,SAAS/zB,SAAS,IAAI80B,OAAO,EAAG,IAIzDuxE,GAAc,WAChB,MAAO,CACLvyD,OAAQ,KACRgyD,KAAM,KACNvW,MAAO,KAIP+W,GAAsB,WACxB,MAAO,CACLT,QAAQ,EACRU,gBAAYrhG,EACZ+gG,gBAAiB,EACjBE,kBAAkB,EAClBK,SAAUJ,GAAM,YAIhBK,GAAwB,aAIxBjxD,GAAO,SAAco7C,GACvB,IAAIj5D,EAAWi5D,EAAMj5D,SACrB,OAAO8mE,IAAMx5F,cACXk0B,GACA,CACEwkE,QAAS0I,GACT3I,gBAAiB4I,GACjB1I,SAAU6I,GACV5I,UAAWkI,GACXvgD,wBAAyBogD,KAE3B,SAAUlvE,GACR,OAAO+nE,IAAMx5F,cACX20B,GACA,CAAE96B,MAAO43B,GACW,mBAAbiB,EAA0BA,EAAS,CAAEkuE,OAAQnvE,EAAQwuB,MAAM2gD,SAAYluE,OAWlF+uE,GAAajI,IAAMxkE,YAAW,SAAU62D,EAAOQ,GACjD,IAAIviC,EAAU+hC,EAAM/hC,QAChBmzC,EAAYpR,EAAMoR,UAClBhG,EAAcpL,EAAMoL,YACpBzlE,EAAQunE,GAAyBlN,EAAO,CAAC,UAAW,YAAa,gBAErE,OAAO2N,IAAMx5F,cACX40B,GACA,MACA,SAAUs3D,GACR,IAAI9tF,EAAO8tF,EAAM9tF,KACb6hD,EAAQisC,EAAMjsC,MACdnuB,EAAWo6D,EAAMp6D,SACrB,OAAO0nE,IAAMx5F,cACX86F,GACA,CACEP,QAASt6C,EAAM2gD,OACfhG,SAAU,SAAkB0G,GAC1B,OAAOxvE,EAAS,CAAEwvE,WAAYA,OAGlC,SAAUnV,GACR,IAAIuV,EAAUvV,EAAM75D,IACpB,OAAOknE,IAAMx5F,cAAc,SAAUyhF,GAAS,CAC5CnlF,GAAI2jD,EAAMshD,SACV,gBAAiB,OACjB,gBAAiBthD,EAAM2gD,OACvB,0BAA0B,EAC1BzgG,KAAM,SACNmyB,IAAK,SAAalJ,GAChBs4E,EAAQt4E,GACRq3E,GAAUpU,EAAOjjE,GACjBhrB,EAAKywC,OAASzlB,GAEhB6tE,YAAaiB,GAAUjB,GAAa,WAC9Bh3C,EAAM2gD,QACR9uE,EAAS,CAAEovE,kBAAkB,OAGjCp3C,QAASouC,GAAUpuC,GAAS,WACtB7J,EAAM2gD,OACR9uE,EAASra,IAETqa,EAASmvE,OAGbhE,UAAW/E,GAAU+E,GAAW,SAAUxmD,IACtB,cAAdA,EAAMt8C,KAGe,YAAds8C,EAAMt8C,OAFfs8C,EAAMryC,iBACN0tB,EAASmvE,SAMZzvE,aAObiwE,GAAWE,UAAY,CACrB73C,QAASj9B,QACTowE,UAAWpwE,QACX6F,SAAUtJ,SAGZ,IAAIw4E,GAAWpI,IAAMxkE,YAAW,SAAU6sE,EAAOC,GAC/C,IAAIC,EAAWF,EAAME,SACjBj4C,EAAU+3C,EAAM/3C,QAChBk4C,EAAaH,EAAMpD,KACnBA,OAAsBx+F,IAAf+hG,EAA2B,WAAaA,EAC/C/hD,EAAQ4hD,EAAM5hD,MACdnuB,EAAW+vE,EAAM/vE,SACjB3vB,EAAQ0/F,EAAM1/F,MACd86F,EAAY4E,EAAM5E,UAClBF,EAAc8E,EAAM9E,YACpB/F,EAAe6K,EAAM7K,aACrBlV,EAAO+f,EAAM/f,KACboa,EAAOnD,GAAyB8I,EAAO,CAAC,WAAY,UAAW,OAAQ,QAAS,WAAY,QAAS,YAAa,cAAe,eAAgB,SAEjJlL,EAAax0F,IAAU89C,EAAM+gD,eAC7BiB,EAAS,WACXF,IACAjwE,EAASra,KAEX,OAAO+hF,IAAMx5F,cAAc,MAAOyhF,GAAS,GAAIya,EAAM,CACnD5pE,IAAK,SAAalJ,GAChBq3E,GAAUqB,EAAO14E,GACjBq3E,GAAU3e,EAAM14D,IAElB,uBAAiC,aAATq1E,QAA6Bx+F,EACrDw+F,KAAMA,EACNqB,SAAU,KACV,kBAA0B,aAATrB,IAAuB9H,SAAoB12F,EAC5D6pD,QAASouC,GAAUpuC,GAAS,SAAUrT,GACpCwrD,OAEFhF,UAAW/E,GAAU+E,GAAW,SAAUxmD,GACtB,UAAdA,EAAMt8C,MAGRs8C,EAAMryC,iBACN69F,QAGJlF,YAAa7E,GAAU6E,GAAa,SAAUtmD,GACvCkgD,GACH7kE,EA1KgB,SAA2B3vB,GACjD,OAAO,SAAU89C,GACf,MAAO,CACL+gD,eAAgB7+F,IAuKL+/F,CAAkB//F,OAG/B60F,aAAckB,GAAUlB,GAAc,SAAUvgD,GAE9C3kB,EAAS,CAAEkvE,gBAAiB,aAiB9Br6F,GAAI,aAGJw7F,GAAW3I,IAAMxkE,YAAW,SAAUotE,EAAQC,GAChD,IAAIpF,EAAYmF,EAAOnF,UACnBnzC,EAAUs4C,EAAOt4C,QACjBw4C,EAAOF,EAAOG,UACdC,EAAYJ,EAAOK,GACnBC,OAAuBziG,IAAduiG,EAA0B,IAAMA,EACzCzjG,EAAQqjG,EAAOrjG,MACf+yB,EAAWswE,EAAOtwE,SAClBmuB,EAAQmiD,EAAOniD,MACf99C,EAAQigG,EAAOjgG,MACf2/E,EAAOsgB,EAAOtgB,KACdtwD,EAAQunE,GAAyBqJ,EAAQ,CAAC,YAAa,UAAW,YAAa,KAAM,QAAS,WAAY,QAAS,QAAS,SAE5HO,EAAOL,GAAQI,EAInB,OAHIJ,GACFj/F,QAAQsgE,KAAK,0EAER61B,IAAMx5F,cACX4hG,GACA,CACEnD,KAAM,OACNx+C,MAAOA,EACPnuB,SAAUA,EACV3vB,MAAOA,EACP4/F,SAAUp7F,GACVm7E,KAAMn7E,IAER6yF,IAAMx5F,cAAc2iG,EAAMlhB,GAAS,CACjCgd,KAAM,WACN,wBAAwB,EACxBqB,SAAU,KACV,gBAAiB39F,IAAU89C,EAAM+gD,qBAAwB/gG,EACzD6pD,QAASouC,GAAUpuC,GAAS,SAAUrT,GACpC3kB,EAASra,OAEXwlF,UAAW/E,GAAU+E,GAAW,SAAUxmD,GACtB,UAAdA,EAAMt8C,KAGRs8C,EAAM1J,qBAGVza,IAAK,SAAalJ,GAChBq3E,GAAU3e,EAAM14D,GAChBq3E,GAAU4B,EAAQj5E,IAEpBrqB,MAAO0iF,GAAS,GAAI1iF,IACnByyB,QAiBHoxE,GAAWpJ,IAAMxkE,YAAW,SAAUxD,EAAOc,GAC/C,OAAOknE,IAAMx5F,cACX40B,GACA,MACA,SAAUiuE,GACR,IAAIzkG,EAAOykG,EAAOzkG,KACd6hD,EAAQ4iD,EAAO5iD,MACfnuB,EAAW+wE,EAAO/wE,SACtB,OAAOmuB,EAAM2gD,QAAUpH,IAAMx5F,cAC3Bm4D,GACA,KACAqhC,IAAMx5F,cACJwgG,GACA,MACA,WACE,OAAOhH,IAAMx5F,cACX86F,GACA,MACA,SAAUgI,GACR,IAAIC,EAAWD,EAAOzI,KAClB2I,EAAUF,EAAOxwE,IACrB,OAAOknE,IAAMx5F,cACX,MACA,CACE,mBAAmB,EACnBsyB,IAAK0wE,EACLjkG,MAAO2/F,GAAUz+C,EAAMqhD,WAAYyB,IAErCvJ,IAAMx5F,cAAcijG,GAAcxhB,GAAS,GAAIjwD,EAAO,CACpDM,SAAUA,EACVmuB,MAAOA,EACP7hD,KAAMA,EACNk0B,IAAKA,mBAYzBswE,GAASjB,UAAY,CACnBjvE,SAAUtJ,SAGZ,IAAI85E,GAAyB,CAACtB,GAAUO,IAEpCgB,GAAuB,SAA8Bh/D,GACvD,OAAO++D,GAAuB5kF,SAAS6lB,EAAMhkC,OAU3C8iG,GAAezJ,IAAMxkE,YAAW,SAAUouE,EAAQC,GACpD,IAAIjlG,EAAOglG,EAAOhlG,KACd6hD,EAAQmjD,EAAOnjD,MACfnuB,EAAWsxE,EAAOtxE,SAClBY,EAAW0wE,EAAO1wE,SAClBuqE,EAAYmG,EAAOnG,UAEnBf,GADSkH,EAAOlG,OACTnE,GAAyBqK,EAAQ,CAAC,OAAQ,QAAS,WAAY,WAAY,YAAa,YAE/FE,EAjByB,SAAkC5wE,GAC/D,IAAI6wE,EAAY,GAIhB,OAHAxvE,WAAStzB,QAAQiyB,GAAU,SAAUyR,GAC/Bg/D,GAAqBh/D,IAAQo/D,EAAUhnG,KAAK4nC,MAE3Co/D,EAYiBC,CAAyB9wE,GACjD,OAAO8mE,IAAMx5F,cACX,MACAyhF,GAAS,CACP,wBAAwB,GACvBya,EAAM,CACPuC,KAAM,OACN,kBAAmBx+C,EAAMshD,SACzBzB,SAAU,KACVxtE,IAAK,SAAalJ,GAChBhrB,EAAKyiG,KAAOz3E,EACZq3E,GAAU4C,EAAQj6E,IAEpB8zE,OAAQ,SAAgBzmD,GACjBwJ,EAAMihD,kBAAqB9iG,EAAKyiG,KAAK9vC,SAASta,EAAM1H,gBACvDjd,EAASra,KAGbwlF,UAAW/E,GAAU+E,GAAW,SAAUxmD,GACxC,GAAkB,WAAdA,EAAMt8C,IACR23B,EAASra,SACJ,GAAkB,cAAdg/B,EAAMt8C,IAAqB,CACpCs8C,EAAMryC,iBACN,IAAIq/F,EAAYxjD,EAAM+gD,eAAiB,EACnCyC,IAAcH,EAAkBjnG,QAClCy1B,EAAS,CAAEkvE,eAAgByC,SAExB,GAAkB,YAAdhtD,EAAMt8C,IAAmB,CAClCs8C,EAAMryC,iBACN,IAAIs/F,EAAazjD,EAAM+gD,eAAiB,GACpB,IAAhB0C,GACF5xE,EAAS,CAAEkvE,eAAgB0C,QAEN,QAAdjtD,EAAMt8C,KACfs8C,EAAMryC,sBAIZ2vB,WAAS94B,IAAIy3B,GAAU,SAAUyR,EAAOhiC,GACtC,GAAIghG,GAAqBh/D,GAAQ,CAC/B,IAAIw/D,EAAaL,EAAkBzjG,QAAQskC,GAE3C,OAAOq1D,IAAMnlE,aAAa8P,EAAO,CAC/BrS,SAAUA,EACVmuB,MAAOA,EACP99C,MAAOwhG,EACP7hB,KAAM,SAAc14D,GAClB,OAAOhrB,EAAKksF,MAAMqZ,GAAcv6E,KAKtC,OAAO+a,SAcTu6D,GAAY,SAAmB4C,EAAYyB,GAE7C,IAD+BzB,EAE7B,MAAO,CAAE7hE,QAAS,GAGpB,IAAImkE,GAAyBb,EAEzB9kG,EAAS,CACXmzD,KAAMkwC,EAAWlwC,KAAOx0D,OAAOiiG,YAAc,KAC7CvtC,IAAKgwC,EAAWhwC,IAAMgwC,EAAW1tD,OAASh3C,OAAOkiG,YAAc,MAGjE,GAAI8E,EACF,OAAOniB,GAAS,GAAIxjF,EAAQ,CAC1BwhC,QAAS,IAIT6hE,EAAW3tD,MAAQ,MACrB11C,EAAO4lG,SAAWvC,EAAW3tD,OAG/B,IAAIorD,EAAa,CACfztC,IAAKgwC,EAAWhwC,IAAMyxC,EAASnvD,OAAS,EACxCorD,MAAOpiG,OAAOqiG,WAAaqC,EAAWlwC,KAAO2xC,EAASpvD,MACtDurD,OAAQtiG,OAAOuiG,YAAcmC,EAAWhwC,IAAMyxC,EAASnvD,OACvDwd,KAAMkwC,EAAWlwC,KAAO2xC,EAASpvD,MAAQ,GAIvCyrD,EAAcL,EAAWG,SAAWH,EAAWztC,IAEnD,OAAOmwB,GAAS,GAAIxjF,EAAQ,CAC1BmzD,KAJmB2tC,EAAWC,QAAUD,EAAW3tC,KAI5BkwC,EAAWtC,MAAQ+D,EAASpvD,MAAQ/2C,OAAOiiG,YAAc,KAAOyC,EAAWlwC,KAAOx0D,OAAOiiG,YAAc,KAC9HvtC,IAAK8tC,EAAckC,EAAWhwC,IAAMyxC,EAASnvD,OAASh3C,OAAOkiG,YAAc,KAAOwC,EAAWhwC,IAAMgwC,EAAW1tD,OAASh3C,OAAOkiG,YAAc,Q,0lBCvejI,SAASgF,GAAT,GAKL,IAJRpxE,EAIQ,EAJRA,SAIQ,IAHRmtD,iBAGQ,MAHI,GAGJ,MAFR4X,aAEQ,MAFA,GAEA,EADLyE,EACK,uCACJrtD,EACF,6BAAQgxC,UAAY,GAAE5hF,KAAO6lG,UAAUjkB,KAAiBqc,GACtD,wBAAMrc,UAAY,GAAE5hF,KAAO8lG,iBAAiBlkB,IAAaigB,UAAW,GACjEptE,IAaP,OARI+kE,IACF5oD,EACE,gBAAC8tD,GAAD,CAAS9c,UAAWkgB,KAAcpD,QAASxrB,MAAOsmB,GAC/C5oD,IAKAA,ECUT,MAIMlb,GAA0B6lE,qDACsB7lE,uBAEtD,SAAS8yB,GAAYu9C,EAAS/lD,GAC5B,MAAMgmD,EAAatwE,GAAuBxB,QAC1C,GAAmB,OAAf8xE,EACF,MAAM,IAAIhlG,MACR,qJAKJ,OAAOglG,EAAWx9C,YAAYu9C,EAAS/lD,GAGzC,MAAMimD,GAAe5vE,wBAAc,MAI7B6vE,GAGF,IAAIn5E,IACFo5E,GAAwD,IAAIp5E,IAElE,SAASq5E,GACPC,GAEA,IAAIC,EAAuBJ,GAAQ1qG,IAAI6qG,GACvC,QAA2BrkG,IAAvBskG,EAAkC,CACpC,MAAM3vB,EAASwvB,GAAgB3qG,IAAI6qG,GACnCC,OACatkG,IAAX20E,GAAwBA,EAAO4vB,WAAa,IAAI75C,QAAY,IAAI3/B,IAClEm5E,GAAQn1F,IAAIs1F,EAAUC,GAExB,OAAOA,EAGT,SAASE,GACPH,EACAI,EACAvjE,EACAhnC,GAEA,MAAMoqG,EAAqBF,GAAsBC,GAC3CK,EAAQJ,EAAmB9qG,IAAIU,GACrC,QAAc8F,IAAV0kG,EAAqB,CACvB,MAAMC,EAAWF,EAAMvjE,GACvByjE,EAASv+F,KACPxM,IACE,GAtDQ,IAsDJgrG,EAAUC,OAAoB,CAChC,MAAMC,EAAyCF,EAC/CE,EAAeD,OAvDR,EAwDPC,EAAelrG,MAAQA,IAG3ByJ,IACE,GA7DQ,IA6DJuhG,EAAUC,OAAoB,CAChC,MAAME,EAAkCH,EACxCG,EAAeF,OA7DR,EA8DPE,EAAenrG,MAAQyJ,KAI7B,MAAMuhG,EAA2B,CAC/BC,OArEU,EAsEVjrG,MAAO+qG,GAGT,OADAL,EAAmBv1F,IAAI7U,EAAK0qG,GACrBA,EAEP,OAAOF,EAIJ,SAASM,GACdP,EACAQ,EACAtwB,EAAkB,IAElB,MAAM0vB,EAAW,CACfvhC,QACEohC,GAAQp6E,OAAOu6E,IAGjBtyB,WAAW73E,GACkBkqG,GAAsBC,GAC9Bv6E,OAAO5vB,IAG5BgpB,KAAKge,GAEHslB,GAAYy9C,IAEZ,MAAM/pG,EAAM+qG,EAAU/jE,GAChBrgC,EAAwB2jG,GAAaH,EAAUI,EAAOvjE,EAAOhnC,GACnE,OAAQ2G,EAAOgkG,QACb,KArGQ,EAuGN,MADkBhkG,EAAOjH,MAG3B,KAxGS,EA0GP,OADciH,EAAOjH,MAGvB,KA3GS,EA6GP,MADciH,EAAOjH,MAGvB,QAEE,SAINsrG,QAAQhkE,GAENslB,GAAYy9C,IAEZ,MAAM/pG,EAAM+qG,EAAU/jE,GACtBsjE,GAAaH,EAAUI,EAAOvjE,EAAOhnC,IAGvC2e,MAAM3e,EAAUN,GACd,MAEMkrG,EAAwC,CAC5CD,OAlIS,EAmITjrG,SAJyBwqG,GAAsBC,GAO9Bt1F,IAAI7U,EAAK4qG,KAMhC,OAFAX,GAAgBp1F,IAAIs1F,EAAU1vB,GAEvB0vB,E,woDC1KT,MAAMc,GAAoB9wE,wBAAyB,MACnD8wE,GAAkB9qE,YAAc,oBAQhC,MAAM+qE,GAA0D,IAAI16C,QAC9D25C,GAAqDW,GACxDp6C,IACC,MAAMy6C,EAAUD,GAAmB5rG,IAAIoxD,GACvC,GAAe,MAAXy6C,EACF,OAAOA,EAAQC,QAGjB,IAAIC,EAAc,KAClB,MAAMD,EAAU,IAAIjhG,QAAQC,IAC1BihG,EAAYjhG,IAKd,OAFA8gG,GAAmBr2F,IAAI67C,EAAS,CAAC06C,UAASC,cAEnCD,GAER16C,GAAqBA,EACtB,CAAC25C,YAAY,IAOf,SAASiB,IAA4B,SAAC/yE,IACpC,MAAMw/C,EAAS37C,qBAAW2nD,IACpB/L,EAAQ57C,qBAAW4nD,IAClBzI,EAAWn/C,qBAAWo3D,IAAtBjY,QAEDvyD,EAAOmT,sBACVh6B,IACC,MAAMuuD,EAAUsnB,EAAMK,eAAel2E,GACrC,OAAgB,OAAZuuD,EACKy5C,GAASnhF,KAAK0nC,GAEd,MAGX,CAACsnB,IAiDH,OA9CA17C,oBAAU,KACR,MAAMivE,EAAgBC,IACpB,MAAMrpG,EAAKqpG,EAAWrpG,GAEhBuuD,EAAUsnB,EAAMK,eAAel2E,GACrC,GAAgB,OAAZuuD,EAAkB,CACpB,MAAMy6C,EAAUD,GAAmB5rG,IAAIoxD,GACxB,MAAXy6C,IACFD,GAAmBt7E,OAAO8gC,GAE1By6C,EAAQE,UACgB,OAAtBG,EAAWC,OACP,KACAD,EAAWC,OAAO3qG,IAAI4qG,IAAS,WAIzBn+B,EAA2Bm+B,EAAMvrE,YAAaurE,EAAM1lG,MAJ3B,GAE3B61E,EAF2B,KAG3BrO,EAH2B,KAM7B,gBACKk+B,GADL,IAEEvrE,YAAa07C,EACbrO,0BAShB,OADAuK,EAAOxP,YAAY,aAAcgjC,GAC1B,IAAMxzB,EAAOr8D,eAAe,aAAc6vF,IAChD,CAACxzB,EAAQC,IAGZ17C,oBAAU,KACR,GAAgB,OAAZi/C,EAAkB,CACpB,MAAMpS,EAAa6O,EAAM4G,wBAAwBrD,GAC9B,OAAfpS,GACF4O,EAAO5vD,KAAK,gBAAiB,CAAChmB,GAAIo5E,EAASpS,eAI/C,MAAO,QACN,CAAC4O,EAAQwD,EAASvD,IAGnB,gBAACizB,GAAkBzwE,SAAnB,CAA4B96B,MAAOspB,GAChCuP,G,gqDCvEP,SAASozE,GAAc7lD,EAAO2E,GAC5B,OAAQA,EAAOzkD,MACb,IAAK,kBACH,MAAM4lG,EAAgBnhD,EAAOghD,OAAOjX,UAClCkX,GAASA,EAAMvpG,KAAOsoD,EAAO8wB,SAE/B,MAAO,CACLA,QAAS9wB,EAAO8wB,QAChBkwB,OAAQhhD,EAAOghD,OACfG,iBAEJ,IAAK,wBACH,gBACK9lD,GADL,IAEE8lD,cAAenhD,EAAOmhD,gBAE1B,QACE,MAAM,IAAI9mG,MAAO,mBAAkB2lD,EAAOzkD,UAIjC,SAAS6lG,KACtB,MAAM7iF,EAAOoT,qBAAW6uE,IACjB1vB,EAAWn/C,qBAAWo3D,IAAtBjY,QACDuwB,EAAe1vE,qBAAWq3D,IAHG,KAKT/2D,qBAAiCivE,GAAe,CACxEpwB,QAAS,KACTkwB,OAAQ,GACRG,cAAe,IARkB,GAK5B9lD,EAL4B,KAKrB94B,EALqB,KAanC,GAAgB,OAAZuuD,EACFvuD,EAAS,CACPhnB,KAAM,kBACNu1E,QAAS,KACTkwB,OAAQ,UAEL,GAAIlwB,IAAYz1B,EAAMy1B,QAAS,CACpC,MAAMwwB,EACJjmD,EAAM2lD,OAAOjX,UAAUkX,GAASA,EAAMvpG,KAAOo5E,IAAY,EAC3DvuD,EAAS,CACPhnB,KAAM,kBACNu1E,UACAkwB,OAAQM,EAAYjmD,EAAM2lD,OAASziF,EAAKuyD,IAAY,KAzBrB,MA6B5BkwB,EAAyB3lD,EAAzB2lD,OAAQG,EAAiB9lD,EAAjB8lD,cAETI,EAAc7vE,sBACjBuvE,IACC,GAAc,OAAVA,EAAgB,CAClB,MAAM1jG,EAAQyjG,EAAO/lG,QAAQgmG,GAC7B1+E,EAAS,CACPhnB,KAAM,wBACN4lG,cAAe5jG,GAAS,EAAIA,EAAQ,IAEtC8jG,EAAa,CAAC9lG,KAAM,eAAgB6+C,QAAS6mD,EAAMvpG,UAEnD6qB,EAAS,CACPhnB,KAAM,wBACN4lG,cAAe,IAEjBE,EAAa,CAAC9lG,KAAM,uBAGxB,CAACylG,EAAQK,IAhDwB,KAmDiBlvE,mBAAS,GAnD1B,GAmD5BqvE,EAnD4B,KAmDRC,EAnDQ,KAoD7BC,EAAiBxvE,iBAA8B,MAC/CyvE,EvBjBD,SACLC,EACAC,GACS,WACiC1vE,oBAAkB,GADnD,GACFwvE,EADE,KACaG,EADb,KA0BT,OAtBA/vE,0BAAgB,KACd,GAA6B,OAAzB6vE,EAAar0E,QACf,MAAO,OAGT,MAAMw0E,EAAcH,EAAar0E,QAE3By0E,EAAeC,KACnB,IAAMH,EAAiBC,EAAUve,aAAeqe,GAChD,KAGFG,IAKA,MAAME,EAAcH,EAAUtqE,cAAc2c,YAE5C,OADA8tD,EAAYvjG,iBAAiB,SAAUqjG,GAChC,IAAME,EAAY7qF,oBAAoB,SAAU2qF,IACtD,CAACJ,EAAcC,IAEXF,EuBZeQ,CAAiBT,EAAgBF,GAEjDY,EAAgBpB,EAAOG,GAwB7B,OAtBApvE,0BAAgB,KAId,GAA+B,OAA3B2vE,EAAen0E,SAAoBo0E,EACrC,MAAO,OAGT,IAAIU,EAAa,EACjB,IAAK,IAAIruG,EAAI,EAAGA,EAAIgtG,EAAOvpG,OAAQzD,IAAK,CACtC,MAAMiyD,EAAUy7C,EAAen0E,QAAQO,SAAS95B,GAC1CsuG,EAAgBtmB,iBAAiB/1B,GAEvCo8C,GACEp8C,EAAQ60B,YACRvzD,SAAS+6E,EAAcC,WAAY,IACnCh7E,SAAS+6E,EAAcE,YAAa,IAGxCf,EAAsBY,IACrB,CAACX,EAAgBC,EAAeX,EAAOvpG,SAGxC,uBAAKwjF,UAAW5hF,KAAO+nG,YACrB,uBAAKnmB,UAAW5hF,KAAOopG,IAAK/0E,IAAKg0E,GAC9BC,GACC,gBAAC,WAAD,KACE,gBAACe,GAAD,CACE1B,OAAQA,EACRG,cAAeA,EACfI,YAAaA,IAEf,gBAACoB,GAAD,CACE3B,OAAQA,EACRG,cAAeA,EACfI,YAAaA,IAEG,MAAjBa,GACC,gBAAC,GAAD,CACEnB,MAAOmB,EACPrQ,YAAY,EACZwP,YAAaA,MAKnBI,GACAX,EAAO3qG,IAAI,CAAC4qG,EAAO1jG,IACjB,gBAAC,GAAD,CACEhI,IAAKgI,EACL0jG,MAAOA,EACPlP,WAAYx0F,IAAU4jG,EACtBI,YAAaA,MAIrB,uBAAKtmB,UAAW5hF,KAAOupG,QACvB,gBAAC,GAAD,CACE3nB,UAAW5hF,KAAOwpG,WAClB39C,QAAS,IAAMq8C,EAAY,MAC3B1O,MAAM,qBACN,gBAAC,GAAD,CAAYt3F,KAAK,YAYzB,SAASmnG,IAAiB,OACxB1B,EADwB,cAExBG,EAFwB,YAGxBI,IAEA,MAAMh0B,EAAQ57C,qBAAW4nD,IAEnBupB,EAAY,GAClB,IAAK,IAAIvlG,EAAQyjG,EAAOvpG,OAAS,EAAG8F,GAAS,EAAGA,IAAS,CACvD,MAAM0jG,EAAQD,EAAOzjG,GACf+jG,EAAY/zB,EAAM4F,gBAAgB8tB,EAAMvpG,IAC9CorG,EAAUnrG,KACR,gBAACqlG,GAAD,CACEznG,IAAK0rG,EAAMvpG,GACXujF,UAAY,GAAE5hF,KAAOi2B,aAAagyE,EAAY,GAAKjoG,KAAO0pG,aAC1D5F,SAAU,IAAOmE,EAAYC,EAAYN,GAAS,MACjDA,EAAMvrE,YAEP,gBAAC,GAAD,CACEulD,UAAW5hF,KAAOk2F,MAClBxsB,gBAAiBk+B,EAAMl+B,gBACvBxnE,KAAM0lG,EAAM1lG,SAMpB,OACE,gBAAC,GAAD,KACE,gBAACshG,GAAD,CAAY5hB,UAAW5hF,KAAOwjG,YAC5B,gBAAC9E,GAAD,CAASxrB,MAAM,0BACb,wBAAM0O,UAAW5hF,KAAO2pG,kBAAmB9H,UAAW,GACpD,gBAAC,GAAD,CAAY3/F,KAAK,YAIvB,gBAACyiG,GAAD,CAAU/iB,UAAW5hF,KAAO4pG,OAAQH,IAW1C,SAASrR,IAAY,WAACM,EAAD,MAAakP,EAAb,YAAoBM,IACvC,MAAMh0B,EAAQ57C,qBAAW4nD,IAElB7jD,EAAsCurE,EAAtCvrE,YAAaqtC,EAAyBk+B,EAAzBl+B,gBAAiBxnE,EAAQ0lG,EAAR1lG,KAC/B+lG,EAAY/zB,EAAM4F,gBAAgB8tB,EAAMvpG,IAExC6jG,EAAe7pE,sBAAY,KAC3B4vE,GACFC,EAAYN,IAEb,CAACK,EAAWC,EAAaN,IAE5B,OACE,gBAAC,GAAD,CACEhmB,UAAY,GAAE5hF,KAAOi2B,aAAagyE,EAAY,GAAKjoG,KAAO0pG,aAC1DrI,UAAW3I,EACXiE,SAAUuF,GACT7lE,EAED,gBAAC,GAAD,CACEulD,UAAW5hF,KAAOk2F,MAClBxsB,gBAAiBA,EACjBxnE,KAAMA,KAWd,SAASonG,IAAkB,OACzB3B,EADyB,cAEzBG,EAFyB,YAGzBI,IAEA,MAAMh0B,EAAQ57C,qBAAW4nD,IAEzB,GAAI4nB,GAAiB,EACnB,OAAO,KAGT,MAAMF,EAAQD,EAAOG,EAAgB,GAC/BG,EAAY/zB,EAAM4F,gBAAgB8tB,EAAMvpG,IAE9C,OACE,gBAAC,GAAD,CACEujF,UAAWqmB,OAAYjmG,EAAYhC,KAAO0pG,WAC1C79C,QAAS,IAAOo8C,EAAYC,EAAYN,GAAS,KACjDpO,MAAQ,UAAQoO,EAAMvrE,aAAe,UACrC,gBAAC,GAAD,CAAYn6B,KAAK,c,wBChRR,SAAS2nG,IAAK,UAACjoB,EAAY,GAAb,KAAiB1/E,IAC5C,IAAIo0F,EAAW,KACf,OAAQp0F,GACN,IAAK,QACHo0F,EAAWwT,GACX,MACF,IAAK,MACHxT,EAAWyT,GACX,MACF,IAAK,OACHzT,EAAW0T,GACX,MACF,IAAK,aACH1T,EAAW2T,GACX,MACF,IAAK,OACH3T,EAAWM,GACX,MACF,IAAK,cACHN,EAAW4T,GACX,MACF,IAAK,eACH5T,EAAW6T,GACX,MACF,IAAK,WACH7T,EAAW8T,GACX,MACF,IAAK,eACH9T,EAAW+T,GACX,MACF,IAAK,SACH/T,EAAWoB,GACX,MACF,IAAK,WACHpB,EAAWqB,GACX,MACF,IAAK,2BACHrB,EAAWgU,GACX,MACF,QACEllG,QAAQsgE,KAAM,qBAAoBxjE,yBAItC,OACE,uBACE+1F,MAAM,6BACNrW,UAAY,GAAE5hF,KAAO6pG,QAAQjoB,IAC7BlsC,MAAM,KACNC,OAAO,KACPuiD,QAAQ,aACR,wBAAMj9F,EAAE,gBAAgBk9F,KAAK,SAC7B,wBAAMA,KAAK,eAAel9F,EAAGq7F,KAKnC,MAAMwT,GAAa,gBAEbC,GAAY,wYAOZC,GAAa,qGAIbC,GACJ,6FAEIrT,GAAa,wNAKbsT,GAAoB,44BAapBC,GAAqB,gcAQrBC,GAAgB,sDAEhB1S,GAAe,yPAMf2S,GAAoB,0CAEpB1S,GAAiB,2rBAUjB2S,GAAiC,wY,wBClIxB,SAASC,GAAYh3E,GAAc,QACC+E,qBAAWo3D,IAArDG,EADyC,EACzCA,YAAaC,EAD4B,EAC5BA,cAAeC,EADa,EACbA,WAC7B7mE,EAAWoP,qBAAWq3D,IAEtB6a,EAAW3xE,iBAAgC,MAE3C4xE,EAAmBpyE,sBACvB,EAAEoW,mBACAvlB,EAAS,CAAChnB,KAAM,kBAAmB6+C,QAAStS,EAAc7yC,QAC5D,CAACstB,IAEGwhF,EAAcryE,sBAClB,IAAMnP,EAAS,CAAChnB,KAAM,kBAAmB6+C,QAAS,KAClD,CAAC73B,IAGG22E,EAAgBxnE,sBACpBmgB,IAEE,OAAQA,EAAMt8C,KACZ,IAAK,YACHgtB,EAAS,CAAChnB,KAAM,gCAChBs2C,EAAMryC,iBACN,MACF,IAAK,UACH+iB,EAAS,CAAChnB,KAAM,oCAChBs2C,EAAMryC,mBAMZ,CAAC+iB,IAGGyhF,EAAsBtyE,sBAC1B,EAAEn8B,MAAKq0C,eACO,UAARr0C,GAEAgtB,EADEqnB,EACO,CAACruC,KAAM,gCAEP,CAACA,KAAM,8BAItB,CAACgnB,IA6BH,OAzBAsP,oBAAU,KACR,GAAyB,OAArBgyE,EAASt2E,QACX,MAAO,OAGT,MAAM02E,EAAmBpyD,IAAyB,MACzCt8C,EAAgBs8C,EAAhBt8C,IAAKu0C,EAAW+H,EAAX/H,QACA,MAARv0C,GAAeu0C,GACQ,OAArB+5D,EAASt2E,UACXs2E,EAASt2E,QAAQ05B,QACjBpV,EAAMryC,iBACNqyC,EAAM1J,oBAQN1Q,EAAgBosE,EAASt2E,QAAQkK,cAGvC,OAFAA,EAAc94B,iBAAiB,UAAWslG,GAEnC,IAAMxsE,EAAcpgB,oBAAoB,UAAW4sF,IACzD,CAACJ,IAGF,uBAAK5oB,UAAW5hF,KAAOuqG,aACrB,gBAAC,GAAD,CAAM3oB,UAAW5hF,KAAO6qG,UAAW3oG,KAAK,WACxC,yBACE0/E,UAAW5hF,KAAO8qG,MAClBnO,SAAU8N,EACVzL,UAAWa,EACXkL,WAAYJ,EACZK,YAAY,2BACZ32E,IAAKm2E,EACL5uG,MAAOm0F,MAENA,GACD,wBAAMnO,UAAW5hF,KAAOirG,YACrBvjF,KAAK9R,IAAIi6E,EAAc,EAAGC,EAAc1xF,QAD3C,KACsD,IACnD0xF,EAAc1xF,QAGnB,uBAAKwjF,UAAW5hF,KAAOkrG,YACvB,gBAAC,GAAD,CACEtpB,UAAW5hF,KAAOwpG,WAClB/qE,UAAWsxD,EACXlkC,QAAS,IAAM3iC,EAAS,CAAChnB,KAAM,iCAC/Bs3F,MAAM,oCACN,gBAAC,GAAD,CAAYt3F,KAAK,QAEnB,gBAAC,GAAD,CACE0/E,UAAW5hF,KAAOwpG,WAClB/qE,UAAWsxD,EACXlkC,QAAS,IAAM3iC,EAAS,CAAChnB,KAAM,6BAC/Bs3F,MAAM,gCACN,gBAAC,GAAD,CAAYt3F,KAAK,UAEnB,gBAAC,GAAD,CACE0/E,UAAW5hF,KAAOwpG,WAClB/qE,UAAWsxD,EACXlkC,QAAS6+C,EACTlR,MAAM,gBACN,gBAAC,GAAD,CAAYt3F,KAAK,Y,28BC/GzB,MAAMipG,GAAuB90E,wBAAyB,MAGtD,SAAS+0E,IAA+B,SAAC32E,IAAqC,WAChCqE,oBAAkB,GADc,GACrEuyE,EADqE,KACrDC,EADqD,KAGtE1vG,EAAQ+8B,kBAAQ,KAAM,CAAE0yE,iBAAgBC,sBAAqB,CACjED,EACAC,IAGF,OACE,gBAACH,GAAqBz0E,SAAtB,CAA+B96B,MAAOA,GACnC64B,GCjBQ,SAAS82E,KAA6B,MAC5CD,EAAqBhzE,qBAAW6yE,IAAhCG,kBAEA37B,EADOr3C,qBAAW4nD,IAClBvQ,cAED67B,EAAkBnzE,sBAAY,IAAMizE,GAAkB,GAAO,CACjEA,IAeIn1B,EAAc8d,GAVYt7D,kBAC9B,KAAM,CACJu7D,gBAAiB,IAAMvkB,EAAcwG,YACrC/uB,UAAYntC,IACV01D,EAAclL,YAAY,cAAexqD,GAClC,IAAM01D,EAAc/3D,eAAe,cAAeqC,MAG7D,CAAC01D,KAIH,OACE,gBAAC,GAAD,CACElxC,SAAU03C,EACVtqB,QAAS2/C,EACThS,MAAM,iBACN,gBAAC,GAAD,CAAYt3F,KAAK,cDvBvBipG,GAAqB9uE,YAAc,uBETpBovE,OAFYp1E,yBAAuB,G,oBCanC,SAASq1E,GAAsB33F,GAAS,MAC9CwtB,EAAcjJ,qBAAWs8D,IAAzBrzD,WACD2yC,EAAQ57C,qBAAW4nD,IACnBuY,EAAcngE,qBAAWmzE,IAHsB,EAIhBnzE,qBAAWo3D,IAAzCjY,EAJ8C,EAI9CA,QAASuY,EAJqC,EAIrCA,kBAyDV5pF,EAAO6tF,GAvDQt7D,kBACnB,KAAM,CACJu7D,gBAAiB,KACf,GACwB,OAAtBlE,GACA9b,EAAM4C,yBAAyBkZ,GAE/B,OAAO,KAGT,MAAMpjC,EAAUsnB,EAAMK,eAAeyb,GACrC,GACc,OAAZpjC,GACAA,EAAQ5lD,aACoB,IAA5B4lD,EAAQn4B,SAASr2B,OAEjB,OAAO,KAGT,MAAM+tF,EAAajY,EAAMoG,oBAAoB1tB,EAAQn4B,SAAS,IAC9D,GAAmB,OAAf03D,EACF,OAAO,KAGT,IAAIC,EAAY,KACZl4D,EAAU04B,EACd,KAAmB,OAAZ14B,GACL,GAAIA,EAAQltB,aAA2C,IAA5BktB,EAAQO,SAASr2B,OAE1CguF,EAAYlY,EAAMoG,oBAAoBpmD,EAAQ71B,IAC9C61B,EAAU,SACL,CACL,MAAMy3E,EAAcz3E,EAAQO,SAASP,EAAQO,SAASr2B,OAAS,GAC/D81B,EAAUggD,EAAMK,eAAeo3B,GAInC,OAAkB,OAAdvf,EACK,KAGF,CACLD,aACAC,cAGJhlC,UAAYntC,IACVi6D,EAAMzP,YAAY,UAAWxqD,GACtB,KACLi6D,EAAMt8D,eAAe,UAAWqC,OAItC,CAAC+1E,EAAmB9b,KAItB,GAAgB,OAAZuD,EACF,OAAO,KAGT,GAAa,OAATrxE,EACF,OAAO,KApE4C,MAuE9C+lF,EAAyB/lF,EAAzB+lF,WAAYC,EAAahmF,EAAbgmF,UAEnB,OACE,uBACExK,UAAW6W,EAAcz4F,KAAO4rG,OAAS5rG,KAAO6rG,SAChD/qG,MAAO,CACL8hF,SAAU,WACVvvB,IAAQ84B,EAAa5qD,EAAf,KACNoU,QAAYy2C,EAAY,EAAID,GAAc5qD,EAAjC,Q,iiDCtDF,SAASuqE,GAAKv4E,GAC3B,MAAMrK,EAAWoP,qBAAWq3D,IADa,EASrCr3D,qBAAWo3D,IANb1V,EAHuC,EAGvCA,YACAvC,EAJuC,EAIvCA,QACAoY,EALuC,EAKvCA,YACAC,EANuC,EAMvCA,cACAE,EAPuC,EAOvCA,kBACAC,EARuC,EAQvCA,qBAEIhc,EAAS37C,qBAAW2nD,IACpB/L,EAAQ57C,qBAAW4nD,IAXgB,KAYuBpnD,oBAC9D,GAbuC,GAYlCy/D,EAZkC,KAYRwT,EAZQ,OAkBrCzX,KAFFC,EAhBuC,EAgBvCA,uBACAI,EAjBuC,EAiBvCA,4BAEIqX,EAAUnzE,iBAA8B,MACxCozE,EAAiBpzE,iBAA8B,MApBZ,KAsBHC,oBAAkB,GAtBf,GAsBlC2/D,EAtBkC,KAsBrByT,EAtBqB,KAwBlC3qE,EAAcjJ,qBAAWs8D,IAAzBrzD,WAaD4qE,EAAkB9zE,sBACtBx7B,IACc,MAARA,GAAyC,OAAzBozF,GAClBpzF,EAAKmuF,aAAaiF,EAAsB,UAG5C,CAACA,IAKHz3D,oBAAU,KACR,SAAS4zE,EAA2BC,GAC9BA,GAA4C,OAA3BJ,EAAe/3E,SAClC+3E,EAAe/3E,QAAQ05B,QAI3B,OADAqmB,EAAOxP,YAAY,uBAAwB2nC,GACpC,IACLn4B,EAAOr8D,eAAe,uBAAwBw0F,IAC/C,CAACn4B,IAKJ,MAAMq4B,EAAoBzzE,iBAAsB,MAGhDL,oBAAU,KACR,GAAwB,OAApBwzE,EAAQ93E,QACV,MAAO,OAGT,MAAM2rE,EAAiBrnD,IACrB,GAAoC,UAA/BA,EAAYt5C,OAAOilD,SAAuB3L,EAAM7J,iBACnD,OAOF,IAAIie,EACJ,OAAQpU,EAAMt8C,KACZ,IAAK,YACHs8C,EAAMryC,iBACFqyC,EAAMhI,OACRtnB,EAAS,CAAChnB,KAAM,gCAEhBgnB,EAAS,CAAChnB,KAAM,gCAElB,MACF,IAAK,YACHs2C,EAAMryC,iBACNymD,EACwB,OAAtBojC,EACI9b,EAAMK,eAAeyb,GACrB,KACU,OAAZpjC,IACEpU,EAAMhI,OACgB,OAApBoc,EAAQ6qB,SACVvuD,EAAS,CAAChnB,KAAM,+CAGd0qD,EAAQn4B,SAASr2B,OAAS,IAAMwuD,EAAQ5lD,YAC1CktE,EAAM8G,kBAAkBpuB,EAAQvuD,IAAI,GAEpC6qB,EAAS,CAAChnB,KAAM,mCAItB,MACF,IAAK,aACHs2C,EAAMryC,iBACNymD,EACwB,OAAtBojC,EACI9b,EAAMK,eAAeyb,GACrB,KACU,OAAZpjC,IACEpU,EAAMhI,OACRtnB,EAAS,CAAChnB,KAAM,2CAEZ0qD,EAAQn4B,SAASr2B,OAAS,GAAKwuD,EAAQ5lD,YACzCktE,EAAM8G,kBAAkBpuB,EAAQvuD,IAAI,GAEpC6qB,EAAS,CAAChnB,KAAM,kCAItB,MACF,IAAK,UACHs2C,EAAMryC,iBACFqyC,EAAMhI,OACRtnB,EAAS,CAAChnB,KAAM,oCAEhBgnB,EAAS,CAAChnB,KAAM,oCAElB,MACF,QACE,OAEJ6pG,GAA4B,IAMxB3tE,EAAgB4tE,EAAQ93E,QAAQkK,cAGtC,OAFAA,EAAc94B,iBAAiB,UAAWu6F,GAEnC,KACLzhE,EAAcpgB,oBAAoB,UAAW6hF,KAE9C,CAAC32E,EAAU8mE,EAAmB9b,IAGjC,MAAMyrB,EAAatnE,sBAAY,IAAM6zE,GAAe,GAAQ,IACtD1M,EAAcnnE,sBAAY,KAC9B6zE,GAAe,GAEc,OAAzBjc,GAAiCjW,EAAc,GACjD9wD,EAAS,CACPhnB,KAAM,0BACN6+C,QAAS,KAGZ,CAAC73B,EAAU8wD,EAAaiW,IAErBsc,EAAiBl0E,sBACrBmgB,IACE,OAAQA,EAAMt8C,KACZ,IAAK,QACL,IAAK,IACuB,OAAtB8zF,GACF9mE,EAAS,CAAChnB,KAAM,eAAgB6+C,QAASivC,MAOjD,CAAC9mE,EAAU8mE,IAKPwc,EAAY3zE,iBAAO,CAACg3D,cAAaC,kBACvCt3D,oBAAU,KACR,IAAIi0E,GAA2B,EAE7BD,EAAUt4E,QAAQ27D,cAAgBA,GAClC2c,EAAUt4E,QAAQ47D,gBAAkBA,IAEpC0c,EAAUt4E,QAAQ27D,YAAcA,EAChC2c,EAAUt4E,QAAQ47D,cAAgBA,EAClC2c,GAA2B,IAEzBlU,GAA4BkU,KACJ,OAAtBzc,EACFuE,EAAuBvE,GAEvB2E,MAGH,CACD1gB,EACAskB,EACAhE,EACA1E,EACAC,EACAE,IAIF,MAAM0c,EAA0Br0E,sBAC9Bh6B,IAGOk6F,GACHhE,EAAuBl2F,IAG3B,CAACk6F,EAA0BhE,IAGvBgL,EAAkBlnE,sBAAY,KAGlC0zE,GAA4B,IAC3B,IAEGrM,EAAmB/K,EAInBhJ,EAAWhzD,kBACf,KAAM,CACJqhD,cACAue,2BACAC,oBAAqBkU,EACrBJ,oBACA7T,gBAEF,CACEze,EACAue,EACAmU,EACAJ,EACA7T,IAIE5M,EAAUxzD,sBACbn0B,GAAkBgwE,EAAMmG,oBAAoBn2E,GAC7C,CAACgwE,IAGH,OACE,gBAAC,GAAmBx9C,SAApB,CAA6B96B,MAAO68F,GAClC,uBAAK7W,UAAW5hF,KAAO8rG,KAAMz3E,IAAK23E,GAChC,uBAAKpqB,UAAW5hF,KAAOuqG,aACpBr2B,EAAM2E,0BACL,gBAAC,WAAD,KACE,gBAACkpB,GAAD,MACA,uBAAKngB,UAAW5hF,KAAOupG,SAG3B,gBAAC,WAAD,CAAUn/C,SAAU,gBAACuiD,GAAD,OACL,OAAZl1B,EAAmB,gBAAC,GAAD,MAAkB,gBAAC,GAAD,OAExC,uBAAKmK,UAAW5hF,KAAOupG,QACvB,gBAACgC,GAAD,OAEF,uBACE3pB,UAAW5hF,KAAO4sG,iBAClB3N,OAAQU,EACRZ,QAASS,EACTuL,WAAYwB,EACZzN,YAAaS,EACbxG,aAAc2G,EACdrrE,IAAK43E,EACLpK,SAAU,GACV,gBAAC,GAAD,KACG,EAAElsD,SAAQD,WAET,gBAACi4C,GAAD,CACE/L,UAAW5hF,KAAOsoF,KAClB3yC,OAAQA,EACR81C,iBAAkBohB,GAClB3hB,UAAWlR,EACX2R,SAAUA,EACVE,QAASA,EACTpC,SAAUloD,EACVlN,IAAK83E,EACLz2D,MAAOA,GACN0iD,QAkDjB,SAAS0U,GACPvlB,EACAwlB,EACAC,EACAC,GAEA,MAAMpwG,EAAS0qF,EAAS3Q,cAClBs2B,EAAYrwG,EAAKstF,YAGvB,GAAkB,IAAd+iB,EACF,OAIEA,EAAYD,EAAiB/4E,UAC/B84E,EAAmB94E,QAlXU,IAoX/B+4E,EAAiB/4E,QAAUg5E,EAE3B,IAAIC,EAA6BH,EAAmB94E,QAf9C,Q,8nBAAA,CAkBcqzD,EAAS9yD,UAlBvB,IAkBN,2BAAuC,OAA5ByR,EAA4B,QAC/BqtC,EAAQrlD,SAASgY,EAAMknE,aAAa,cAAe,KAAO,EAEhE,IAAIC,EAAqB,EAEzB,MAAMC,EAAmBP,EAAkBvxG,IAAI0qC,GAC/C,GAAwB,MAApBonE,EACFD,EAAaC,MACR,OACEnsB,EAAqBj7C,EAArBi7C,kBAGkB,MAArBA,IACFksB,EAAalsB,EAAkBgJ,YAC/B4iB,EAAkBh8F,IAAIm1B,EAAOmnE,IAIjC,MAAME,EAAiB7lF,KAAKlS,IAAI,EAAG03F,EAAYG,GAE/CF,EAAqBzlF,KAAK9R,IAAIu3F,EAAoBI,EAAiBh6B,IAtC/D,8BAyCNy5B,EAAmB94E,QAAUi5E,EAE7BtwG,EAAKiE,MAAM4hC,YAAY,qBAAyByqE,EAAF,MAGhD,SAASN,GAAT,GAAsD,IAA3Bp4E,EAA2B,EAA3BA,SAAU3zB,EAAiB,EAAjBA,MAAUm9F,EAAO,iCAC7CxmB,EAAWn/C,qBAAWo3D,IAAtBjY,QAEDs1B,EAAoBp0E,kBACxB,IAAM,IAAI+zB,QACV,IAcIsgD,EAAqBn0E,iBAxaI,IAyazBo0E,EAAmBp0E,iBAAe,GAClC20E,EAAiB30E,iBAAsB4+C,GACvCg2B,EAAS50E,iBAA8B,MAyB7C,OArBI4+C,IAAY+1B,EAAet5E,UAC7Bs5E,EAAet5E,QAAUujD,EACzBu1B,EAAmB94E,QAjbU,IAqb/BsE,oBAAU,KACe,OAAnBi1E,EAAOv5E,SACT44E,GACEW,EAAOv5E,QACP64E,EACAC,EACAC,KAUJ,0BACErrB,UAAW5hF,KAAO6sG,iBAClBx4E,IAAKo5E,EACL3sG,MAAOA,GACHm9F,GACJ,gBAAC,GAAD,MACCxpE,GAKP,SAASk4E,KACP,OAAO,uBAAK/qB,UAAW5hF,KAAO2sG,SAAvB,c,woDC1bT,MAAMe,GAA0Br3E,wBAC5B,MAEJq3E,GAAwBrxE,YAAc,0BAQtC,MAAM+qE,GAA0D,IAAI16C,QAC9D25C,GAIFW,GACDp6C,IACC,MAAMy6C,EAAUD,GAAmB5rG,IAAIoxD,GACvC,GAAe,MAAXy6C,EACF,OAAOA,EAAQC,QAGjB,IAAIC,EAAc,KAClB,MAAMD,EAAU,IAAIjhG,QAAQC,IAC1BihG,EAAYjhG,IAKd,OAFA8gG,GAAmBr2F,IAAI67C,EAAS,CAAC06C,UAASC,cAEnCD,GAER16C,GAAqBA,EACtB,CAAC25C,YAAY,IAOf,SAASoH,IAAkC,SAACl5E,IAC1C,MAAMw/C,EAAS37C,qBAAW2nD,IACpB/L,EAAQ57C,qBAAW4nD,IAEnB0tB,EAAqB/0E,iBAAO,GAG5Bg1E,EAAgBx1E,sBACpB,CAACh6B,EAAY8hB,KACX,MAAMklD,EAAa6O,EAAM4G,wBAAwBz8E,GAC9B,OAAfgnE,GACF4O,EAAO5vD,KAAK,gBAAiB,CAC3B0R,MAAO63E,EAAmB15E,UAC1B71B,KACA8hB,OACAklD,gBAIN,CAAC4O,EAAQC,IAIL45B,EAA2Bz1E,sBAC/B,CAACh6B,EAAY8hB,KACX,MAAMklD,EAAa6O,EAAM4G,wBAAwBz8E,GAC9B,OAAfgnE,GACF4O,EAAO5vD,KAAK,kBAAmB,CAAChmB,KAAI8hB,OAAMklD,gBAG9C,CAAC4O,EAAQC,IAIL65B,EAA0B11E,sBAC9B,CAACh6B,EAAY8hB,KACX,MAAMklD,EAAa6O,EAAM4G,wBAAwBz8E,GAC9B,OAAfgnE,GACF4O,EAAO5vD,KAAK,iBAAkB,CAAChmB,KAAI8hB,OAAMklD,gBAG7C,CAAC4O,EAAQC,IAGL85B,EAAsB31E,sBACzBh6B,IACC,MAAMuuD,EAAUsnB,EAAMK,eAAel2E,GACrC,OAAgB,OAAZuuD,EACKy5C,GAASnhF,KAAK0nC,GAEd,MAGX,CAACsnB,IAMI8b,EAAqB13D,qBAAWo3D,IAAhCM,kBA3DqD,KAgExDl3D,mBAA0C,MAhEc,GA8D1Dm1E,EA9D0D,KA+D1DC,EA/D0D,KAmE5D11E,oBAAU,KACR,MAAM21E,EAAsB/nG,IAAkC,MACrD/H,EAAM+H,EAAN/H,GAEP,IAAIuuD,EAEJ,OAAQxmD,EAAKlE,MACX,IAAK,YACL,IAAK,YAEH,MACF,IAAK,gBAGH,GADA0qD,EAAUsnB,EAAMK,eAAel2E,GACf,OAAZuuD,GAC+B,MAA7BqhD,EAAmC,CACrC,MAAMryG,EAAQwyG,GAAchoG,EAAKxK,MAAOwK,EAAK+Z,MACvCkuF,EAAmB,MAAIJ,I5DqJpC,SACL5xG,EACA+J,EACA+Z,EACAvkB,GAEA,MAAMsD,EAASgpE,EAAY7rE,EAAQ8jB,GAcnC,GAbc,MAAVjhB,IACGA,EAAOkkC,EAAK4kC,yBACR9oE,EAAOkkC,EAAKukC,oBACZzoE,EAAOkkC,EAAKwkC,kBACZ1oE,EAAOkkC,EAAKloC,aACZgE,EAAOkkC,EAAKykC,qBACZ3oE,EAAOkkC,EAAK0kC,sBACZ5oE,EAAOkkC,EAAK2kC,iBACZ7oE,EAAOkkC,EAAK2oB,aACZ7sD,EAAOkkC,EAAKlhC,QAIT,OAAVtG,GAAkBwK,EAAK4hE,eAAe5pE,OAAS,EAAG,CACpD,MAAMkwG,EAAqBloG,EAAK4hE,eAAe,GAC/C,IAAIumC,EAAUD,EAAmBlwG,SAAW+hB,EAAK/hB,OACjD,IAAK,IAAIzD,EAAI,EAAGA,EAAIwlB,EAAK/hB,OAAQzD,IAC/B,GAAIwlB,EAAKxlB,KAAO2zG,EAAmB3zG,GAAI,CACrC4zG,GAAU,EACV,MAGAA,GACFlmC,EAAsBzsE,EAAOA,GAIjCmuE,EAAY1tE,EAAQ8jB,EAAMvkB,G4DrLd4yG,CAAWH,EAAkBjoG,EAAKxK,MAAOwK,EAAK+Z,KAAMvkB,GAEpDyqG,GAASxrF,MAAM+xC,EAASyhD,GAGpBhwG,IAAO2xF,GACTke,EAA6BG,GAInC,MACF,IAAK,YAAL,QAsBQjoG,EAAKxK,MApBT6yG,EAFJ,EAEIA,qBACAC,EAHJ,EAGIA,gCACAC,EAJJ,EAIIA,gCACAC,EALJ,EAKIA,aACAC,EANJ,EAMIA,2BACAC,EAPJ,EAOIA,2BACAC,EARJ,EAQIA,kBACAC,EATJ,EASIA,cACAC,EAVJ,EAUIA,iBACApxG,EAXJ,EAWIA,OACAqE,EAZJ,EAYIA,KACAylG,EAbJ,EAaIA,OACAn0E,EAdJ,EAcIA,QACA07E,EAfJ,EAeIA,MACA37E,EAhBJ,EAgBIA,MACAoiC,EAjBJ,EAiBIA,oBACAw5C,EAlBJ,EAkBIA,gBACAC,EAnBJ,EAmBIA,SACAptD,EApBJ,EAoBIA,MAIIqsD,EAA6C,CACjDI,uBACAC,kCACAC,kCACAC,eACAC,6BACAC,6BACAC,oBACAC,gBACAC,mBACA5wG,KACAnC,IAnCJ,EAqBIA,IAeAy5D,sBACAw5C,kBACAC,WACAvxG,SACAqE,OACAylG,OACa,OAAXA,EACI,KACAA,EAAO3qG,IAAI4qG,IAAS,WAIdn+B,EACFm+B,EAAMvrE,YACNurE,EAAM1lG,MANU,GAEhBm6B,EAFgB,KAGhBqtC,EAHgB,KAQlB,gBACKk+B,GADL,IAEEvrE,cACAqtC,sBAGVl2C,QAAS46E,GAAc56E,GACvB07E,MAAOd,GAAcc,GACrB37E,MAAO66E,GAAc76E,GACrByuB,MAAOosD,GAAcpsD,IAIvB,GADA4K,EAAUsnB,EAAMK,eAAel2E,GACf,OAAZuuD,EAAkB,CACpB,MAAMy6C,EAAUD,GAAmB5rG,IAAIoxD,GACxB,MAAXy6C,GACFD,GAAmBt7E,OAAO8gC,GAC1ByiD,kCAAe,KACbhI,EAAQE,UAAU8G,GAClBH,EAA6BG,OAG/BhI,GAASxrF,MAAM+xC,EAASyhD,GAGpBhwG,IAAO2xF,GACTke,EAA6BG,OAWzC,OADAp6B,EAAOxP,YAAY,mBAAoB0pC,GAChC,IAAMl6B,EAAOr8D,eAAe,mBAAoBu2F,IACtD,CAACl6B,EAAQg6B,EAA2Bje,EAAmB9b,IAG1D17C,oBAAU,KACR,GAA0B,OAAtBw3D,EACF,MAAO,OAGT,MAAM3qB,EAAa6O,EAAM4G,wBAAwBkV,GAEjD,IAAIjJ,EAA8B,KAElC,MAAMuoB,EAAc,KAClBvoB,EAAY,KAEO,OAAf1hB,GACF4O,EAAO5vD,KAAK,iBAAkB,CAAChmB,GAAI2xF,EAAmB3qB,gBAM1DiqC,IAEA,MAAMnB,EAAsB/nG,IAE1B,GAAIA,EAAK/H,KAAO2xF,EACd,OAAQ5pF,EAAKlE,MACX,IAAK,YACL,IAAK,YACL,IAAK,gBACe,OAAd6kF,GACF5hE,aAAa4hE,GAEfA,EAAYt+E,WAAW6mG,EAAa,OAU5C,OAFAr7B,EAAOxP,YAAY,mBAAoB0pC,GAEhC,KACLl6B,EAAOr8D,eAAe,mBAAoBu2F,GAExB,OAAdpnB,GACF5hE,aAAa4hE,KAGhB,CAAC9S,EAAQ+b,EAAmB9b,IAE/B,MAAMt4E,EAAQ+8B,kBACZ,KAAM,CACJm1E,2BACAE,sBACAD,0BACAF,kBAGF,CACEC,EACAG,EACAD,EACAD,EACAF,IAIJ,OACE,gBAACH,GAAwBh3E,SAAzB,CAAkC96B,MAAOA,GACtC64B,GAKP,SAAS25E,GACPmB,EACApvF,GAEA,GAAuB,OAAnBovF,EAAyB,OACpBtnC,EAAiCsnC,EAAjCtnC,QAAS7hE,EAAwBmpG,EAAxBnpG,KAAM4hE,EAAkBunC,EAAlBvnC,eAEtB,GAAI7nD,EAAM,OACD/hB,EAAU+hB,EAAV/hB,OACP,GAAIA,EAAS,EAGX,OAAOiqC,EACLjiC,EACA6hE,EAAQjrE,IAAIwyG,GAAeA,EAAY3mG,MAAMzK,IAC7C4pE,EAAehrE,IAAIsxG,GACjBA,EAAmBzlG,MAAMzK,KAMjC,OAAOiqC,EAAQjiC,EAAM6hE,EAASD,GAE9B,OAAO,K,iJCtWX,MAAMynC,GAAsB,CAC1BC,UAAW,KACXxiD,eAAgB,KAChByiD,aAAc,KACdC,UAAU,GAGG,MAAMC,WAAsB55E,YAAwB,8CAClDw5E,IADkD,sBAmGnD,KAAM,QACO1yG,KAAKw2B,MAAvBu8E,EADW,EACXA,QAAS57B,EADE,EACFA,MACO,mBAAZ47B,GACTA,EAAQ57B,GAGVn3E,KAAK82B,SAAS47E,MAtGhBziD,kBAAkB3nD,GAAY,eAAC6nD,IAC7B,MAAMyiD,EACa,iBAAVtqG,GAAsBA,EAAM7I,eAAe,WAC9C6I,EAAMsf,QACNtf,EAEAqqG,EACa,iBAAVrqG,GAAsBA,EAAM7I,eAAe,SAC9C6I,EAAM22B,MACHluB,MAAM,MACNjF,MAAM,GACN7K,KAAK,MACR,KAENjB,KAAK82B,SAAS,CACZ67E,YACAxiD,iBACAyiD,eACAC,UAAU,IAId54E,SAAS,MACAvC,EAAY13B,KAAKw2B,MAAjBkB,SADA,EAEqD13B,KAAKilD,MAA1D0tD,EAFA,EAEAA,UAAWxiD,EAFX,EAEWA,eAAgByiD,EAF3B,EAE2BA,aAAcC,EAFzC,EAEyCA,SAEhD,IAAIG,EAAS7qG,oCACb,GAAI6qG,EAAQ,CACV,MAAMvW,EAAS,WAAUmW,GAAgB,MACnCz8B,EAAQ,6BAEd,IAAI9rE,EAAO,sDACXA,GAAQ,QACRA,GAAQ,QACRA,GAAQ,QACRA,GAAQ,oDACRA,GAAQ,kDACRA,GAAQ,kDACRA,GAAS,0CACLsoG,IACFtoG,GAAS,mBAAkBsoG,EAAUniG,QAEnC2/C,IACF9lD,GAAS,wBAAuB8lD,EAAe3/C,QAGjDwiG,GAAW,sBAAqBC,UAAU98B,YAAgB88B,UACxDxW,WACQwW,UAAU5oG,KAGtB,OAAIwoG,EAEA,uBAAKhuB,UAAW5hF,KAAO6vG,eACrB,uBAAKjuB,UAAW5hF,KAAOiwG,QAAvB,mBACmBN,GAAgB,IAEnC,uBAAK/tB,UAAW5hF,KAAOkwG,gBACrB,gBAAC,GAAD,CACEtuB,UAAW5hF,KAAOmwG,YAClB3W,MAAM,QACN3tC,QAAS9uD,KAAKqzG,aACd,gBAAC,GAAD,CAAYxuB,UAAW5hF,KAAOqwG,UAAWnuG,KAAK,WAJhD,SAOC6tG,GACC,gCACE,gBAAC,GAAD,CAAMnuB,UAAW5hF,KAAOswG,WAAYpuG,KAAK,QACzC,qBACE0/E,UAAW5hF,KAAOuwG,WAClB7sG,KAAMqsG,EACNxsG,IAAI,sBACJrE,OAAO,SACPs6F,MAAM,cALR,yBAWHkW,GACD,uBAAK9tB,UAAW5hF,KAAOwwG,OAAvB,wBACwBd,EAAUniG,UAGjC2/C,GACD,uBAAK00B,UAAW5hF,KAAOwwG,OAAvB,sBACsBtjD,EAAe3/C,SAOtCknB,G,qXCnHI,SAASg8E,GACtBx6E,EACAy6E,GAEA,OAAO,YAA4D,IAAlCC,EAAkC,EAAlCA,gBAAoB1S,EAAc,0BACjE,MAAM/pB,EAAQ57C,qBAAW4nD,IAEnBzrD,EACJ,gBAAC,GAAD,CAAey/C,MAAOA,EAAO47B,QAASY,GACpC,gBAACz6E,EAAcgoE,IAInB,OAA0B,MAAnB0S,EACH15C,uBAAaxiC,EAAUk8E,GACvBl8E,G,m+BCgBR,MAAMm8E,GAAqBv6E,wBACvB,MAIJ,SAASwxE,GAAc7lD,EAAO2E,GAC5B,OAAQA,EAAOzkD,MACb,IAAK,OACH,MAAO,CACL2uG,gBAAgB,EAChB3zG,QAAS,KACTgiG,WAAW,EACX1F,MAAO,MAEX,IAAK,OACH,MAAO,CACLqX,gBAA0C,IAA1BlqD,EAAOkqD,eACvB3zG,QAASypD,EAAOzpD,QAChBgiG,WAAW,EACX1F,MAAO7yC,EAAO6yC,OAAS,MAE3B,QACE,MAAM,IAAIx4F,MAAO,mBAAkB2lD,EAAOzkD,UAQhD,SAAS4uG,IAA6B,SAACr8E,IAAkB,WAC7BmE,qBAAiCivE,GAAe,CACxEgJ,gBAAgB,EAChB3zG,QAAS,KACTgiG,WAAW,EACX1F,MAAO,OAL8C,GAChDx3C,EADgD,KACzC94B,EADyC,KAQjDttB,EAAQ+8B,kBACZ,KAAM,CACJk4E,eAAgB7uD,EAAM6uD,eACtB3zG,QAAS8kD,EAAM9kD,QACfgiG,UAAWl9C,EAAMk9C,UACjB1F,MAAOx3C,EAAMw3C,MACbtwE,aAEF,CAAC84B,EAAO94B,IAGV,OACE,gBAAC0nF,GAAmBl6E,SAApB,CAA6B96B,MAAOA,GACjC64B,GAKP,SAASs8E,GAAYh9F,GAEnB,OADoBukB,qBAAWs4E,IAAxB1R,UACY,gBAAC8R,GAAD,MAAsB,KAG3C,SAASA,GAAgBj9F,GAAS,QACmBukB,qBACjDs4E,IADKC,EADyB,EACzBA,eAAgB3zG,EADS,EACTA,QAASgsB,EADA,EACAA,SAAUswE,EADV,EACUA,MAGpCyX,EAAe54E,sBAAY,KAC3Bw4E,GACF3nF,EAAS,CAAChnB,KAAM,UAEjB,CAAC2uG,EAAgB3nF,IACdgoF,EAAYr4E,iBAA8B,MAMhD86D,GAAsBud,EAAWD,GAAc,GAW/C,OACE,uBAAKrvB,UAAW5hF,KAAOmxG,WAAYtlD,QAASolD,GAC1C,uBACE58E,IAAK68E,EACLtvB,UAAW5hF,KAAOoxG,OAClBvlD,QAZqBrT,IACzBA,EAAM1J,oBAYS,OAAV0qD,GAAkB,uBAAK5X,UAAW5hF,KAAOqxG,OAAQ7X,GACjDt8F,EACA2zG,GACC,uBAAKjvB,UAAW5hF,KAAOsxG,SACrB,gBAAC,GAAD,CACEx0D,WAAW,EACX8kC,UAAW5hF,KAAO6lG,OAClBh6C,QAASolD,GAHX,WA9FZL,GAAmBv0E,YAAc,qBC/BjC,MAAMk1E,GAA2Bl7E,wBAAyB,MAC1Dk7E,GAAyBl1E,YAAc,2BAExBk1E,UCPA,SAASC,KAWtB,QAVcl5E,qBAAW4nD,IACiB1W,iBAAiB5vD,KACzDxV,G/DwBsC,I+DvBpCA,EAAOlC,M/DWsB,K+DV7BkC,EAAOxI,OACPwI,EAAOklE,WAOP,wIAOA,2HCvBN,MAAMmoC,GAAgB,IAAI1kF,IACpB2kF,GAAgB,IAAI3kF,IAE1B,IAAI4kF,GAAgB,KAmDb,MAAMC,GAAkBv7E,wBAAmC,CAChEw7E,SAlDF,WAC+B,mBAAlBF,IACTA,MAiDFG,SA7CF,UAAkB,KAChB1rG,EADgB,GAEhB/H,EAFgB,MAGhB+xC,EAHgB,MAIhBC,IAOA,MAAM0hE,EAASN,GAAcj2G,IAAI6C,GACX,mBAAX0zG,IACTJ,GAAgBD,GAAcl2G,IAAI6C,GAClC0zG,EAAO,CAAC3rG,OAAMgqC,QAAOC,YAgCvB2hE,aA5BF,SAAsB3zG,EAAY0zG,EAAgBE,GAChD,GAAIR,GAActkF,IAAI9uB,GACpB,MAAM2C,MAAO,yBAAwB3C,0BAMvC,OAHAozG,GAAc1gG,IAAI1S,EAAI0zG,GACtBL,GAAc3gG,IAAI1S,EAAI4zG,GAEf,WACLR,GAAc3lF,OAAOztB,GACrBqzG,GAAc5lF,OAAOztB,O,m+BCVzB,MAAM6zG,GAAe,CACnB9rG,KAAM,KACN84F,WAAW,EACX9uD,MAAO,EACPC,MAAO,GAQM,SAAS8hE,IAAY,SAAC19E,EAAD,GAAWp2B,IAAY,MAClD2zG,EAAgB15E,qBAAgCs5E,IAAhDI,aADkD,KAG/Bl5E,mBAASo5E,IAHsB,GAGlDlwD,EAHkD,KAG3CnuB,EAH2C,KAKnDu+E,EAAkBv5E,iBAAO,MACzB0vE,EAAe1vE,iBAAO,MACtBksE,EAAUlsE,iBAAO,MA4DvB,GA1DAL,oBAAU,KACR,MAAMo0B,EAAUwlD,EAAgBl+E,QAChC,GAAgB,OAAZ04B,EAAkB,CACpB,MAAMxuB,EAAgBwuB,EAAQxuB,cAG9B,OAFAmqE,EAAar0E,QAAUkK,EAAcr8B,cAAc,OACnDq8B,EAAch3B,KAAK/F,YAAYknG,EAAar0E,SACrC,KACLkK,EAAch3B,KAAK1F,YAAY6mG,EAAar0E,YAG/C,IAEHsE,oBAAU,IAKDw5E,EAAa3zG,EAJH,EAAE+H,OAAMgqC,QAAOC,YAC9Bxc,EAAS,CAACztB,OAAM84F,WAAW,EAAM9uD,QAAOC,WAEzB,IAAMxc,EAASq+E,KAE/B,CAAC7zG,IAEJq6B,0BAAgB,KACd,IAAKspB,EAAMk9C,UACT,OAGF,MAAM0D,EAASmC,EAAQ7wE,QACjBw0E,EAAYH,EAAar0E,QAC/B,GAAkB,OAAdw0E,EAAoB,CACtB,MAAM2J,EAAqB75D,IACpBoqD,EAAK9vC,SAASta,EAAMt5C,SACvB20B,EAASq+E,KAIPI,EAAO95D,IACX3kB,EAASq+E,KAGL9zE,EAAgBsqE,EAAUtqE,cAChCA,EAAc94B,iBAAiB,YAAa+sG,GAC5Cj0E,EAAc94B,iBAAiB,aAAc+sG,GAC7Cj0E,EAAc94B,iBAAiB,UAAW+sG,GAE1C,MAAMxJ,EAAczqE,EAAc2c,YAKlC,OAJA8tD,EAAYvjG,iBAAiB,SAAUgtG,GA1F7C,SAAyB1lD,EAAsBxc,EAAeC,GAC5D,MAAMw4D,EAAcj8C,EAAQxuB,cAAc2c,YAC1B,OAAZ6R,IACEvc,EAAQuc,EAAQ80B,cAAgBmnB,EAAY3H,YAC1C7wD,EAAQuc,EAAQ80B,aAAe,EACjC90B,EAAQ9rD,MAAMuyD,IAAShjB,EAAQuc,EAAQ80B,aAAlB,KAErB90B,EAAQ9rD,MAAMuyD,IAAM,MAGtBzG,EAAQ9rD,MAAMuyD,IAAShjB,EAAF,KAGnBD,EAAQwc,EAAQ60B,aAAeonB,EAAY7H,WACzC5wD,EAAQwc,EAAQ60B,YAAc,EAChC70B,EAAQ9rD,MAAMqyD,KAAU/iB,EAAQwc,EAAQ60B,YAAlB,KAEtB70B,EAAQ9rD,MAAMqyD,KAAO,MAGvBvG,EAAQ9rD,MAAMqyD,KAAU/iB,EAAF,MAwEtBmiE,CAAgB3P,EAAM5gD,EAAM5R,MAAO4R,EAAM3R,OAElC,KACLjS,EAAcpgB,oBAAoB,YAAaq0F,GAC/Cj0E,EAAcpgB,oBAAoB,aAAcq0F,GAChDj0E,EAAcpgB,oBAAoB,UAAWq0F,GAE7CxJ,EAAY7qF,oBAAoB,SAAUs0F,MAG7C,CAACtwD,IAECA,EAAMk9C,UAEJ,CACL,MAAMwJ,EAAYH,EAAar0E,QAC/B,OAAkB,OAAdw0E,EACKzxC,uBACL,uBAAK5iC,IAAK0wE,EAASnjB,UAAW5hF,KAAOmyG,aAClC19E,EAASutB,EAAM57C,OAElBsiG,GAGK,KAXT,OAAO,uBAAKr0E,IAAK+9E,I,wBCpGN,SAASI,IAAgB,SAAC/9E,EAAD,QAAWo3B,EAAX,MAAoB2tC,IAAe,MAClEqY,EAAYv5E,qBAAgCs5E,IAA5CC,SAEDnQ,EAAclpD,IAClBqT,IACAgmD,KAGF,OACE,uBACEjwB,UAAW5hF,KAAOwyG,gBAClB3mD,QAAS61C,EACT+Q,WAAY/Q,GACXjtE,G,wBClBQ,SAASi+E,IAAU,QAAC9lD,IAAiB,MAC3C8c,EAAqB9c,EAArB8c,gBAEP,OAAwB,OAApBA,EACK,KAIP,uBAAKkY,UAAW5hF,KAAO0yG,WACA,OAApBhpC,GACCA,EAAgB1sE,IAAI21G,GAClB,uBAAKz2G,IAAKy2G,EAAgB/wB,UAAW5hF,KAAOk2F,OACzCyc,K,8lBCVE,SAASC,GAAT,GAML,IALRhxB,EAKQ,EALRA,UACAmd,EAIQ,EAJRA,QAIQ,IAHRiM,mBAGQ,MAHM,GAGN,EAFRpvG,EAEQ,EAFRA,MACGqiG,EACK,oDACR,MAYM4U,EAAoB,KAAVj3G,GAA0B,OAAVA,EAEhC,OACE,4BACEgmF,UAAW,CAAC5hF,KAAO8qG,MAAOlpB,GAAW5jF,KAAK,KAC1C+gG,QAjBmBvmD,IACrB,MAAMtV,EAAQsV,EAAMt5C,OACN,OAAVgkC,IACFA,EAAM0X,eAAiB,EACvB1X,EAAM2X,aAAej/C,EAAMwC,QAGN,mBAAZ2gG,GACTA,EAAQvmD,IAURwyD,YAAaA,EACblqG,MAAO,CACL40C,MAAQ,QAAOm9D,EAAU7H,EAAY5sG,OAASxC,EAAMwC,mBAEtDxC,MAAOi3G,EAAU,GAAKj3G,GAClBqiG,I,m+BCnBK,SAAS6U,IAAa,WACnCC,GAAa,EADsB,gBAEnCC,GAAkB,EAFiB,UAGnCl2D,GAAY,EAHuB,UAInC8kC,EAAY,GAJuB,aAKnC9jD,EAAe,GALoB,aAMnCm1E,EANmC,KAOnC9yF,EAPmC,KAQnCje,IACoB,WACoB42B,mBAASgF,GAD7B,GACbo1E,EADa,KACCC,EADD,UAEUr6E,oBAAS,GAFnB,GAEbk6D,EAFa,KAEJogB,EAFI,KAIdlR,EAAe7pE,sBACnB,EAAEn5B,aACA,IAAItD,EAAQsD,EAAOtD,MACdo3G,IACHp3G,EAAQA,EAAM2R,QAId6lG,KADEL,GAAwB,KAAVn3G,IAMlBu3G,EAAgBv3G,IAElB,CAACq3G,IAGGpT,EAAgBxnE,sBACpBmgB,IAIE,OAFAA,EAAM1J,kBAEE0J,EAAMt8C,KACZ,IAAK,QACL,IAAK,MACH,GAAI82F,EAAS,CACX,MAAMqgB,EAAWlzF,EAAKtX,MAAM,EAAGsX,EAAK/hB,OAAS,GAC7C60G,EACE,IAAII,EAAUv1E,GACd,IAAIu1E,EAAUH,IAGlB,MACF,IAAK,SACHC,EAAgBr1E,KAMtB,CAACo1E,EAAcC,EAAiBngB,EAASl1D,EAAcm1E,IAGzD,OACE,gBAAC,GAAD,CACEn2D,UAAWA,EACX8kC,UAAW,CAAC5hF,KAAO8qG,MAAOlpB,GAAW5jF,KAAK,KAC1C2+F,SAAUuF,EACVlD,UAAWa,EACXmL,YAAY,YACZ9oG,KAAK,OACLtG,MAAOs3G,I,m+BCzEE,SAASI,IAAc,UACpC1xB,EAAY,GADwB,cAEpC2xB,EAFoC,KAGpCpzF,EAHoC,MAIpCvkB,IACqB,W3CkDhB,SACLk3F,GACmD,WACzBl6D,qBAIxBg6D,GAAyB,CACzBC,cAAepkB,GAAeqkB,GAC9BA,gBACAC,mBAAmB,EACnBC,SAAS,EACTC,YAAaH,IAVoC,GAC5C9wC,EAD4C,KACrC94B,EADqC,KA2BnD,OAfK7tB,OAAOqoC,GAAGse,EAAM8wC,cAAeA,KAC7B9wC,EAAM+wC,kBAMT7pE,EAAS,CACPhnB,KAAM,SACN2wF,cAAe7wC,EAAM6wC,cACrBC,kBARF5pE,EAAS,CACPhnB,KAAM,QACN4wF,mBAWC,CAAC9wC,EAAO94B,G2C9EWsqF,CAAiB53G,GADtB,GACdomD,EADc,KACP94B,EADO,KAEd2pE,EAA0D7wC,EAA1D6wC,cAAeE,EAA2C/wC,EAA3C+wC,kBAAmBC,EAAwBhxC,EAAxBgxC,QAASC,EAAejxC,EAAfixC,YA8C5CwgB,EAAe,KACfzgB,GAAWD,GACbwgB,EAAcpzF,EAAM8yE,IAIxB,IAAI+X,EAAc,GAEhBA,OADoBhpG,IAAlB6wF,EACY,cAEA,mBAGhB,MAAM6gB,GAAyB,IAAhBzgB,IAAwC,IAAhBA,EAEvC,OACE,gBAAC,WAAD,KACE,yBACE0gB,aAAa,eACb/xB,UAAY,GAAEoR,EAAUhzF,KAAO8qG,MAAQ9qG,KAAO4zG,WAAWhyB,IACzDqd,OAAQwU,EACR9W,SA3De,EAAEz9F,YACrBgqB,EAAS,CACPhnB,KAAM,SACN2wF,cAAe3zF,EAAOtD,MACtBk3F,cAAel3F,IAwDbojG,UAtCgBxmD,IAIpB,OAFAA,EAAM1J,kBAEE0J,EAAMt8C,KACZ,IAAK,QACHu3G,IACA,MACF,IAAK,SAnCPvqF,EAAS,CACPhnB,KAAM,QACN4wF,cAAel3F,MAgEbovG,YAAaA,EACb9oG,KAAK,OACLtG,MAAOi3F,IAER6gB,GACC,yBACE9xB,UAAW5hF,KAAO6zG,SAClBx2E,QAAS41D,EACT/wF,KAAK,WACLy6F,SA/DqB,EAAEz9F,aAC7BgqB,EAAS,CACPhnB,KAAM,SACN2wF,cAAe3zF,EAAOm+B,QACtBy1D,cAAel3F,IAQjB23G,EAAcpzF,EAAMjhB,EAAOm+B,aCzCxB,SAASy2E,GACd3zF,GAEA,IAAIjc,EAAQ,EACZ,IAAK,IAAIvJ,EAAI,EAAGA,EAAIwlB,EAAK/hB,OAAQzD,IAC/B,GAAgB,UAAZwlB,EAAKxlB,GAAgB,CACvBuJ,EAAQvJ,EAAI,EACZ,MAGJ,OAAOwlB,EAAKtX,MAAM3E,G,m+BCML,SAAS6vG,IAAc,OACpC9/B,EADoC,MAEpCV,EAFoC,OAGpCygC,EAHoC,OAIpCC,EAJoC,MAKpC/vG,EALoC,iBAMpCmqG,EANoC,KAOpCluF,EAPoC,MAQpC+zD,EARoC,KASpChyE,IACQ,WACc42B,mBAAiB,GAD/B,GACD58B,EADC,KACIg4G,EADJ,UAE0Bp7E,oBAAS,GAFnC,GAEDq7E,EAFC,KAEUC,EAFV,KA2CR,OACE,uBACEl4G,IAAKA,EACL83G,OAAQA,EACRlzG,MAAO,CACLgkF,YAA8B,KAAbvR,EAAQ,GAAX,QAEhB,uBAAKqO,UAAW5hF,KAAO+zG,eACrB,gBAAC,GAAD,CACEf,iBAAiB,EACjBl2D,UAAW5gD,EAAM,EACjB0lF,UAAW,CAAC5hF,KAAO8yG,aAAcqB,GAAan0G,KAAO4zG,SAAS51G,KAC5D,KAEF8/B,aAAa,GACbm1E,aApDa,CAACoB,EAASC,KAC7B,MAAM14G,EAAQ04G,EAAQA,EAAQl2G,OAAS,GAEvC,IAAI60F,EACAshB,GAAe,EACnB,IACEthB,EAAc1kB,GAAW3yE,GACzB24G,GAAe,EACf,MAAOlvG,IAMT,GAJI8uG,IAAcI,GAChBH,EAAaG,IAGVA,EAAc,CACjBL,EAAOh4G,EAAM,GADI,MAGVmC,EAAMgwG,EAANhwG,GACDgnE,EAAa6O,EAAM4G,wBAAwBz8E,GACjD,GAAmB,OAAfgnE,EAAqB,CACvB,IAAIguC,EAAWlzF,EACD,MAAV8zF,IACFZ,EAAWS,GAAqBT,IAGlCp/B,EAAO5vD,KAAK,sBAAuB,CACjCniB,OACA+xG,SACA51G,KACA8hB,KAAM,IAAIkzF,EAAUnvG,GACpBmhE,aACAzpE,MAAOq3F,OAsBP9yE,KAAMA,M,m+BCtED,SAASq0F,IAAY,OAClCvgC,EADkC,MAElCV,EAFkC,OAGlCygC,EAHkC,OAIlCC,EAJkC,iBAKlC5F,EALkC,KAMlCluF,EANkC,MAOlC+zD,EAPkC,KAQlChyE,IACQ,WAC4B42B,mBAAiB,GAD7C,GACD27E,EADC,KACWC,EADX,UAE8B57E,mBAAiB,IAF/C,GAED67E,EAFC,KAEYC,EAFZ,KAmCR,OACE,uBACE14G,IAAKu4G,EACLT,OAAQA,EACRlzG,MAAO,CACLgkF,YAA8B,KAAbvR,EAAQ,GAAX,QAEhB,uBAAKqO,UAAW5hF,KAAOw0G,aACrB,gBAAC,GAAD,CACE13D,UAAW23D,EAAa,EACxB7yB,UAAW5hF,KAAO8yG,aAClBG,aA1CqB,CAACoB,EAASC,KACrCM,EAAeN,EAAQA,EAAQl2G,OAAS,KA0ClC+hB,KAAM,KALV,KAQE,gBAAC,GAAD,CACEyhE,UAAW5hF,KAAOszG,cAClBC,cA5CsB,CAACe,EAAS14G,KACtC,IAAK+4G,EACH,OAGFC,EAAe,IACfF,EAAcD,EAAa,GANqB,MAQzCp2G,EAAMgwG,EAANhwG,GACDgnE,EAAa6O,EAAM4G,wBAAwBz8E,GACjD,GAAmB,OAAfgnE,EAAqB,CACvB,IAAIguC,EAAWiB,EACD,MAAVL,IACFZ,EAAWS,GAAqBT,IAGlCp/B,EAAO5vD,KAAK,sBAAuB,CACjCniB,OACA+xG,SACA51G,KACA8hB,KAAMkzF,EACNhuC,aACAzpE,YAuBEukB,KAAM,IAAIA,EAAMw0F,GAChB/4G,MAAO,O,wBC1EF,SAASw9F,IAAqB,OAC3CuJ,EAD2C,UAE3CkS,IAEA,OACE,gBAAC,GAAD,CACEjzB,UAAW5hF,KAAOo5F,qBAClBvtC,QAAS,IAAMgpD,EAAUC,IAAeA,GACxCtb,OAAUmJ,EAAS,WAAa,UAAxB,eACR,gBAAC,GAAD,CAAYzgG,KAAMygG,EAAS,WAAa,eCd/B,SAASoS,IAAe,KACrC3uG,EADqC,GAErC/H,EAFqC,IAGrCg2B,IAKE,MACKy9E,EAAYx5E,qBAAgCs5E,IAA5CE,SAEPt5E,oBAAU,KACR,GAAoB,OAAhBnE,EAAIH,QAAkB,CACxB,MAAM8gF,EAAqBx8D,IACzBA,EAAMryC,iBACNqyC,EAAM1J,kBAEN,MAAMsB,EACHoI,EAAYpI,OACZoI,EAAMpC,SAAYoC,EAAYpC,QAAQ,GAAGhG,MACtCC,EACHmI,EAAYnI,OACZmI,EAAMpC,SAAYoC,EAAYpC,QAAQ,GAAG/F,MAE5CyhE,EAAS,CAAC1rG,OAAM/H,KAAI+xC,QAAOC,WAGvByvD,EAAUzrE,EAAIH,QAGpB,OAFA4rE,EAAQx6F,iBAAiB,cAAe0vG,GAEjC,KACLlV,EAAQ9hF,oBAAoB,cAAeg3F,MAG9C,CAAC5uG,EAAM/H,EAAIyzG,I,k+BCGD,SAASvY,IAAS,UAC/B0b,EAD+B,OAE/BhhC,EAF+B,eAG/BihC,EAH+B,cAI/BC,EAJ+B,eAK/BC,EAL+B,sBAM/BC,EAN+B,MAO/B9hC,EAP+B,wBAQ/Bw6B,EAR+B,iBAS/BM,EAT+B,uBAU/BiH,EAV+B,OAW/BtB,EAX+B,OAY/BC,EAZ+B,KAa/B/4G,EAb+B,KAc/BilB,EAd+B,SAe/Bo1F,EAf+B,MAgB/BrhC,EAhB+B,MAiB/Bt4E,IACgB,MACTyC,EAAMgwG,EAANhwG,GADS,KAGYy6B,oBAAkB,GAH9B,GAGT6pE,EAHS,KAGDkS,EAHC,KAIVW,EAAgB38E,iBAAO8pE,GACvB8S,EAAwB58E,iBAAO,MAErC,IAAI68E,GAAgB,EAChBC,GAAa,EACH,OAAV/5G,GAAmC,iBAAVA,IAC3B85G,EAAgB95G,EAAMwnC,EAAKukC,cAAqC,IAArB/rE,EAAMwnC,EAAK2oB,MACtD4pD,EAAa/5G,EAAMwnC,EAAK2kC,WAG1BvvC,oBAAU,KACJk9E,GAAiB/S,IAAW6S,EAActhF,SAC5C65E,EAAwB1vG,EAAI,CAACk3G,KAAap1F,IAE5Cq1F,EAActhF,QAAUyuE,GACvB,CAACoL,EAAyB2H,EAAe/S,EAAQxiF,EAAMo1F,IAE1D,MAAMK,EAAe,IAAMf,EAAUC,IAAeA,GAEpDC,GAAe,CACb3uG,KAAM,CACJ+Z,KAAM,CAACo1F,KAAap1F,GACpBje,KACY,OAAVtG,GACiB,iBAAVA,GACPY,eAAe1B,KAAKc,EAAOwnC,EAAKlhC,MAC5BtG,EAAMwnC,EAAKlhC,aACJtG,GAEfyC,GAAI,mBACJg2B,IAAKohF,IAGP,MAAMhuG,SAAkB7L,EAClBi6G,EACS,WAAbpuG,GACa,WAAbA,GACa,YAAbA,GACS,MAAT7L,EAEIkF,EAAQ,CACZgkF,YAA8B,KAAbvR,EAAQ,GAAX,OAGVggC,EAAgB,CAACe,EAAS5gB,KAChB,MAAVugB,IACFK,EAAUR,GAAqBQ,IAGjC,MAAMjvC,EAAa6O,EAAM4G,wBAAwBz8E,GAC9B,OAAfgnE,GACF4O,EAAO5vD,KAAK,sBAAuB,CACjC4vF,SACA51G,KACA8hB,KAAMm0F,EACNjvC,aACAnjE,KAAMqzG,EACN35G,MAAO83F,KAKPoiB,EAAaC,IACH,MAAV9B,IACF8B,EAAejC,GAAqBiC,IAGtC,MAAM1wC,EAAa6O,EAAM4G,wBAAwBz8E,GAC9B,OAAfgnE,GACF4O,EAAO5vD,KAAK,aAAc,CACxB4vF,SACA51G,KACA8hB,KAAM41F,EACN1wC,aACAnjE,KAAMqzG,KAKNS,EAAa,CAAC3B,EAASC,KAC3B,GAAoC,KAAhCA,EAAQA,EAAQl2G,OAAS,GAEvB82G,GACFY,EAAWzB,OAER,CACS,MAAVJ,IACFI,EAAUP,GAAqBO,GAC/BC,EAAUR,GAAqBQ,IAGjC,MAAMjvC,EAAa6O,EAAM4G,wBAAwBz8E,GAC9B,OAAfgnE,GACF4O,EAAO5vD,KAAK,aAAc,CACxB4vF,SACA51G,KACAi2G,UACAD,UACAhvC,aACAnjE,KAAMqzG,MAUd,IAKIU,EALAC,EAA0Bd,EAC1Bc,GAA4D,mBAA1Bb,IACpCa,EAA0Bb,EAAsB9hC,IAM9C0iC,EAFAX,EACEJ,EAEA,gBAACiB,GAAD,CAAcj7G,KAAMA,EAAM46G,WAAYA,EAAY31F,KAAMA,IAG3C,wBAAMyhE,UAAW5hF,KAAOo2G,MAAOl7G,GAEvCg7G,EAEP,gBAAC,GAAD,CACEnD,WAAYmC,EACZtzB,UAAW5hF,KAAO8yG,aAClBh1E,aAAc5iC,EACd+3G,aAAc+C,EACd71F,KAAMA,IAIK,wBAAMyhE,UAAW5hF,KAAOo2G,MAAOl7G,GAGhD,IAAIu5B,EAAW,KACf,GAAIohF,EAAc,CAChB,IAAIQ,EAAez6G,EACF,WAAb6L,EACF4uG,EAAgB,IAAGz6G,KACG,YAAb6L,EACT4uG,EAAez6G,EAAQ,OAAS,QACb,OAAVA,EACTy6G,EAAe,YACIr0G,IAAVpG,IACTy6G,EAAe,aAGjB5hF,EACE,uBACEv4B,IAAI,OACJ0lF,UAAW5hF,KAAOs2G,KAClBtC,OAAQA,EACR3/E,IAAKohF,EACL30G,MAAOA,GACP,uBAAK8gF,UAAW5hF,KAAOu2G,6BACtBN,EACD,uBAAKr0B,UAAW5hF,KAAOw2G,WAAvB,KACCrB,EACC,gBAAC,GAAD,CACE5B,cAAeA,EACfpzF,KAAMA,EACNvkB,MAAOA,IAGT,wBAAMgmF,UAAW5hF,KAAOy2G,OAAQJ,SAIjC,GACL75G,eAAe1B,KAAKc,EAAOwnC,EAAKlhC,QAC/B1F,eAAe1B,KAAKc,EAAOwnC,EAAK4kC,gBAEjCvzC,EACE,uBACEv4B,IAAI,OACJ0lF,UAAW5hF,KAAOs2G,KAClBtC,OAAQA,EACR3/E,IAAKohF,EACL30G,MAAOA,GACN40G,EACC,gBAAC,GAAD,CAAsB/S,OAAQA,EAAQkS,UAAWA,IAEjD,uBAAKjzB,UAAW5hF,KAAOu2G,6BAExBN,EACD,uBAAKr0B,UAAW5hF,KAAOw2G,WAAvB,KACA,wBACE50B,UAAW5hF,KAAOy2G,MAClB5qD,QAAS6pD,EAAgBE,OAAe5zG,GACvCqtF,GAAkBzzF,UAKzB,GAAI+M,MAAMC,QAAQhN,GAAQ,CACxB,MAAM86G,EAAc96G,EAAMwC,OAAS,GAAK+2G,EAClC94E,EAAcgzD,GAAkBzzF,GAEtC64B,EAAW74B,EAAMoB,IAAI,CAAC25G,EAAYzyG,IAChC,gBAAC,GAAD,CACEhI,IAAKgI,EACL+wG,UAAWA,EACXhhC,OAAQA,EACRihC,eAAgBA,IAAmBS,EACnCR,cAAeA,IAAkBQ,EACjCP,eAAgBA,IAAmBO,EACnCN,sBAAuBA,EACvB9hC,MAAOA,EAAQ,EACfw6B,wBAAyBA,EACzBkG,OAAQA,EACR5F,iBAAkBA,EAClBiH,wBAAwB,EACxBtB,OAAQA,IAAWrR,EACnBznG,KAAMgJ,EACNic,KAAMA,EAAKpiB,OAAOmG,GAClBqxG,SAAUA,EACVrhC,MAAOA,EACPt4E,MAAOA,EAAMsI,MAIbixG,IAAkBQ,GACpBlhF,EAASn2B,KACP,gBAAC,GAAD,CACEpC,IAAI,cACJ+3E,OAAQA,EACRV,MAAOA,EAAQ,EACfygC,OAAQA,IAAWrR,EACnBsR,OAAQA,EACR/vG,MAAOtI,EAAMwC,OACb2vG,wBAAyBA,EACzBM,iBAAkBA,EAClBluF,KAAMA,EACN+zD,MAAOA,EACPhyE,KAAMqzG,KAKZ9gF,EAASxqB,QACP,uBACE/N,IAAQq3E,EAAF,QACNqO,UAAW5hF,KAAOs2G,KAClBtC,OAAQA,EACR3/E,IAAKohF,EACL30G,MAAOA,GACN41G,EACC,gBAAC,GAAD,CAAsB/T,OAAQA,EAAQkS,UAAWA,IAEjD,uBAAKjzB,UAAW5hF,KAAOu2G,6BAExBN,EACD,uBAAKr0B,UAAW5hF,KAAOw2G,WAAvB,KACA,wBACE50B,UAAW5hF,KAAOy2G,MAClB5qD,QAAS6qD,EAAcd,OAAe5zG,GACrCq6B,SAIF,CAIL,MAAM6pE,EAAU7qG,OAAO6qG,QAAQtqG,GAC3Bq5G,GACF/O,EAAQt1F,KAAKg+E,IAGf,MAAM8nB,EAAcxQ,EAAQ9nG,OAAS,GAAK+2G,EACpC94E,EAAcgzD,GAAkBzzF,GAEtC64B,EAAWyxE,EAAQlpG,IAAkB,EAAEd,EAAK06G,KAC1C,gBAAC,GAAD,CACE16G,IAAKA,EACL+4G,UAAWA,EACXhhC,OAAQA,EACRihC,eAAgBA,IAAmBS,EACnCR,cAAeA,IAAkBQ,EACjCP,eAAgBA,IAAmBO,EACnCN,sBAAuBA,EACvB9hC,MAAOA,EAAQ,EACfw6B,wBAAyBA,EACzBkG,OAAQA,EACR5F,iBAAkBA,EAClB2F,OAAQA,IAAWrR,EACnBznG,KAAMgB,EACNikB,KAAMA,EAAKpiB,OAAO7B,GAClBq5G,SAAUA,EACVrhC,MAAOA,EACPt4E,MAAOg7G,KAIPzB,IAAkBQ,GACpBlhF,EAASn2B,KACP,gBAAC,GAAD,CACEpC,IAAI,cACJ+3E,OAAQA,EACRV,MAAOA,EAAQ,EACfw6B,wBAAyBA,EACzBiG,OAAQA,IAAWrR,EACnBsR,OAAQA,EACR5F,iBAAkBA,EAClBluF,KAAMA,EACN+zD,MAAOA,EACPhyE,KAAMqzG,KAKZ9gF,EAASxqB,QACP,uBACE/N,IAAQq3E,EAAF,QACNqO,UAAW5hF,KAAOs2G,KAClBtC,OAAQA,EACR3/E,IAAKohF,EACL30G,MAAOA,GACN41G,EACC,gBAAC,GAAD,CAAsB/T,OAAQA,EAAQkS,UAAWA,IAEjD,uBAAKjzB,UAAW5hF,KAAOu2G,6BAExBN,EACD,uBAAKr0B,UAAW5hF,KAAOw2G,WAAvB,KACA,wBACE50B,UAAW5hF,KAAOy2G,MAClB5qD,QAAS6qD,EAAcd,OAAe5zG,GACrCq6B,KAOX,OAAO5H,EAGT,SAAS0hF,IAAa,WAACL,EAAD,KAAa56G,EAAb,KAAmBilB,IAMvC,OACE,gCACE,gBAAC,GAAD,CACEyhE,UAAW5hF,KAAO62G,sBAClBhrD,QATcrT,IAClBA,EAAM1J,kBACNgnE,EAAW31F,IAQPq5E,MAAM,gBACN,gBAAC,GAAD,CAAYt3F,KAAK,YAEnB,wBAAM0/E,UAAW5hF,KAAOo2G,MAAOl7G,I,uBC5YtB,SAAS47G,IAA4B,OAClD7iC,EADkD,wBAElD85B,EAFkD,iBAGlDM,EAHkD,MAIlDn6B,IACQ,MACD+6B,EAAmCZ,EAAnCY,iBAAkBz7E,EAAiB66E,EAAjB76E,QAAStxB,EAAQmsG,EAARnsG,KAE5ByzG,E7ElBwB,I6EkBXzzG,G7EhBc,I6EgBeA,EAE1CgkG,EAAqB,MAAX1yE,EAAkBn4B,OAAO6qG,QAAQ1yE,GAAW,KAC5C,OAAZ0yE,GACFA,EAAQt1F,KAAKg+E,IAGf,MAAMikB,EAAsB,OAAZ3M,GAAuC,IAAnBA,EAAQ9nG,OAEtC24G,EAAa,IAAMpxG,gBAAK4pF,GAAuB/7D,IAK/C6hF,EAAwB9hC,GAASA,EAAQ,EAE/C,OAAIs/B,EACK,KAGL,uBAAKjxB,UAAW5hF,KAAOg3G,sBACrB,uBAAKp1B,UAAW5hF,KAAOi3G,WACrB,uBAAKr1B,UAAW5hF,KAAOiwG,QACpBhB,EAAmB,iBAAmB,YAEvC4D,GACA,gBAAC,GAAD,CAAQhnD,QAASkrD,EAAYvd,MAAM,qBACjC,gBAAC,GAAD,CAAYt3F,KAAK,WAItB2wG,GAAW,uBAAKjxB,UAAW5hF,KAAOk3G,OAAvB,SACVrE,GACC3M,EAAclpG,IAAI,EAAE9B,EAAMU,KACzB,gBAAC,GAAD,CACEM,IAAKhB,EACL+5G,WAAW,EACXhhC,OAAQA,EACRihC,gBAAiBS,EACjBR,eAAgBQ,EAChBP,gBAAiBO,EACjBN,sBAAuBA,EACvBnzG,KAAK,UACLqxE,MAAO,EACPw6B,wBAAyBA,EACzBiG,QAAQ,EACR3F,iBAAkBA,EAClBnzG,KAAMA,EACNilB,KAAM,CAACjlB,GACPq6G,SAAS,UACTrhC,MAAOA,EACPt4E,MAAOA,M,k+BCzDd,SAASu7G,IAA0B,OACxCljC,EADwC,wBAExC85B,EAFwC,iBAGxCM,EAHwC,MAIxCn6B,IACqB,MACdg7B,EAAab,EAAba,MAAO7wG,EAAMgwG,EAANhwG,GAER04G,EAAa,IAAMpxG,gBrDuFpB,SAA+BupG,GAEpC,MAAM1f,EAASn0F,OAAOwhB,OAAO,GAAIqyF,GAE3B5oD,EAAQ,IAAIkpC,GAElB,KAAOlpC,EAAMloD,OAAS,GAAG,CACvB,MAAM81B,EAAUoyB,EAAMj1C,aAGf6iB,EAAQ71B,UACR61B,EAAQkrC,gBAEXlrC,EAAQmrC,SAASjhE,OAAS,GAC5BkoD,EAAMhoD,QAAQ41B,EAAQmrC,UAI1BiwB,GAASE,GAET,IACE,OAAO/xF,KAAKC,UAAU8xF,EAAQ,KAAM,GACpC,MAAOnqF,GACP,MAAO,IqD9GqB+xG,CAAsBlI,IAEpD,OAAc,OAAVA,EACK,KAGL,uBAAKttB,UAAW5hF,KAAOq3G,eACrB,uBAAKz1B,UAAW5hF,KAAOi3G,WACrB,uBAAKr1B,UAAW5hF,KAAOiwG,QAAvB,SACA,gBAAC,GAAD,CAAQpkD,QAASkrD,EAAYvd,MAAM,qBACjC,gBAAC,GAAD,CAAYt3F,KAAK,WAGrB,gBAACo1G,GAAD,CACEpI,MAAOA,EACP7wG,GAAIA,EACJ0vG,wBAAyBA,EACzBM,iBAAkBA,EAClBluF,KAAM,MAeT,SAASm3F,IAAmB,wBACjCvJ,EADiC,MAEjCmB,EAFiC,GAGjC7wG,EAHiC,iBAIjCgwG,EAJiC,KAKjCluF,IAGA,OAAO+uF,EAAMlyG,IAAI,CAACu6G,EAAMrzG,IACtB,gBAACszG,GAAD,CACEt7G,IAAKgI,EACL6pG,wBAAyBA,EACzBwJ,KAAMrI,EAAMhrG,GACZ7F,GAAIA,EACJgwG,iBAAkBA,EAClBluF,KAAMA,EAAKpiB,OAAO,CAACmG,OAazB,SAASszG,IAAS,wBAChBzJ,EADgB,KAEhBwJ,EAFgB,GAGhBl5G,EAHgB,iBAIhBgwG,EAJgB,KAKhBluF,IACgB,MAEdyuF,EAGEP,EAHFO,aACAC,EAEER,EAFFQ,2BACAC,EACET,EADFS,2BAEK5zG,EAAsDq8G,EAAtDr8G,KAAU+4G,EAA4CsD,EAAhDl5G,GAAY+gE,EAAoCm4C,EAApCn4C,gBAAiBC,EAAmBk4C,EAAnBl4C,SAAUzjE,EAAS27G,EAAT37G,MAE9C+5G,EAAuB,MAAV1B,IAAmB70C,EAEhC81C,GAAkBS,GAAc9G,EAChCsG,GAAiBQ,GAAc/G,EAC/BwG,GAAkBO,GAAc7G,EAEhC76B,EAAS37C,qBAAW2nD,IACpB/L,EAAQ57C,qBAAW4nD,IAfT,KAiBYpnD,oBAAkB,GAjB9B,GAiBT6pE,EAjBS,KAiBDkS,EAjBC,KAmBVe,EAAev9E,sBACnB,IAAMw8E,EAAUC,IAAeA,GAC/B,IAGIW,EAAwB58E,iBAAO,MAgBrC,GAdAk8E,GAAe,CACb3uG,KAAM,CACJ+Z,KAAM,CAAC,WAAYA,GACnBje,KACW,OAATq1G,GACgB,iBAATA,GACPA,EAAK/6G,eAAe4mC,EAAKlhC,MACrBq1G,EAAMn0E,EAAKlhC,aACJtG,GAEfyC,GAAI,mBACJg2B,IAAKohF,IAGH8B,EAAK/6G,eAAe4mC,EAAKwkC,WAK3B,OACE,uBAAKga,UAAW5hF,KAAOy3G,MACrB,uBAAK71B,UAAW5hF,KAAO03G,cACrB,wBAAM91B,UAAW5hF,KAAO23G,qBAAxB,SAQR,MAAMtC,EAAwB9hC,GAASnU,GAAmBmU,EAAQ,EAE5DqkC,EAAev4C,EAASjhE,OAAS,EAEjC8D,SAActG,EAEpB,IAAIy6G,EACAwB,GAAwB,EAqB5B,GAlBa,WAAT31G,EACFm0G,EAAgB,IAAKz6G,KACH,YAATsG,EACTm0G,EAAez6G,EAAQ,OAAS,QACd,WAATsG,EACTm0G,EAAez6G,EACI,OAAVA,EACTy6G,EAAe,YACIr0G,IAAVpG,EACTy6G,EAAe,KACN1tG,MAAMC,QAAQhN,IACvBi8G,GAAwB,EACxBxB,EAAe,SACG,WAATn0G,IACT21G,GAAwB,EACxBxB,EAAe,UAGbuB,EAAc,CAChB,MAAME,EAAenvG,MAAMC,QAAQy2D,GACjC,gBAACi4C,GAAD,CACEvJ,wBAAyBA,EACzBmB,MAAO7vC,EACPhhE,GAAIA,EACJgwG,iBAAkBA,EAClBluF,KAAMA,EAAKpiB,OAAO,CAAC,eAGrB,gBAAC,GAAD,CACEk3G,WAAW,EACXhhC,OAAQA,EACRihC,eAAgBA,EAChBC,cAAeA,EACfC,eAAgBA,EAChBC,sBAAuBA,EACvB9hC,MAAO,EACPw6B,wBAAyBA,EACzBkG,OAAQA,EACR5F,iBAAkBA,EAClBnzG,KAAK,WACLilB,KAAMA,EAAKpiB,OAAO,CAAC,aACnBm2E,MAAOA,EACPhyE,KAAK,QACLtG,MAAOyjE,IAIX,OAAIw4C,EAEA,uBAAKj2B,UAAW5hF,KAAOy3G,MACrB,uBAAKpjF,IAAKohF,EAAuB7zB,UAAW5hF,KAAO03G,cACjD,gBAAC,GAAD,CAAsB/U,OAAQA,EAAQkS,UAAWA,IACjD,wBACEhpD,QAAS+pD,EACTh0B,UAAoB,KAAT1mF,EAAc8E,KAAOo2G,KAAOp2G,KAAO+3G,eAC7C78G,GAAQ,aAEX,wBAAM0mF,UAAW5hF,KAAOy2G,MAAO5qD,QAAS+pD,GACrCjT,GAAUtT,GAAkBzzF,KAGjC,uBAAKgmF,UAAW5hF,KAAO81B,SAAUk+E,QAASrR,GACxC,gBAAC,GAAD,CACEsS,WAAW,EACXhhC,OAAQA,EACRihC,eAAgBA,EAChBC,cAAeA,EACfC,eAAgBA,EAChBC,sBAAuBA,EACvB9hC,MAAO,EACPw6B,wBAAyBA,EACzBkG,OAAQA,EACR5F,iBAAkBA,EAClBnzG,KAAK,aACLilB,KAAMA,EAAKpiB,OAAO,CAAC,UACnBw3G,SAAS,QACTrhC,MAAOA,EACPt4E,MAAOA,IAERk8G,IAML,uBAAKl2B,UAAW5hF,KAAOy3G,MACrB,uBAAKpjF,IAAKohF,EAAuB7zB,UAAW5hF,KAAO03G,cACjD,gBAAC,GAAD,CAAsB/U,OAAQA,EAAQkS,UAAWA,IACjD,wBACEhpD,QAAS+pD,EACTh0B,UAAoB,KAAT1mF,EAAc8E,KAAOo2G,KAAOp2G,KAAO+3G,eAC7C78G,GAAQ,aACH,IAER,wBAAM0mF,UAAW5hF,KAAOy2G,MAAO5qD,QAAS+pD,GACrCS,IAGL,uBAAKz0B,UAAW5hF,KAAO81B,SAAUk+E,QAASrR,GACvCmV,IAMT,OAAID,EAEA,uBAAKj2B,UAAW5hF,KAAOy3G,MACrB,gBAAC,GAAD,CACExC,WAAW,EACXhhC,OAAQA,EACRihC,eAAgBA,EAChBC,cAAeA,EACfC,eAAgBA,EAChBC,sBAAuBA,EACvB9hC,MAAO,EACPw6B,wBAAyBA,EACzBkG,OAAQA,EACR5F,iBAAkBA,EAClBnzG,KAAMA,EACNilB,KAAMA,EAAKpiB,OAAO,CAAC,UACnBw3G,SAAS,QACTrhC,MAAOA,EACPt4E,MAAOA,KAMX,uBAAKgmF,UAAW5hF,KAAOy3G,MACrB,gBAAC,GAAD,CACExC,WAAW,EACXhhC,OAAQA,EACRihC,gBAAgB,EAChBC,cAAeA,EACfC,gBAAgB,EAChB7hC,MAAO,EACPw6B,wBAAyBA,EACzBkG,OAAQA,EACR5F,iBAAkBA,EAClBnzG,KAAMA,EACNilB,KAAM,GACNo1F,SAAS,QACTrhC,MAAOA,EACPt4E,MAAOA,KASJ2/F,cAAW4b,IC1SX,SAASa,IAA0B,OAChD/jC,EADgD,wBAEhD85B,EAFgD,iBAGhDM,EAHgD,MAIhDn6B,IACQ,MAENu6B,EAKEJ,EALFI,qBACAC,EAIEL,EAJFK,gCACAC,EAGEN,EAHFM,gCACAp7E,EAEE86E,EAFF96E,MACArxB,EACEmsG,EADFnsG,KAGIgzG,E/EtBwB,I+EuB5BhzG,GAA6BwsG,EACzByG,E/ExBwB,I+EwBRjzG,GAA6BusG,EAC7C2G,E/EzBwB,I+E0B5BlzG,GAA6BysG,EAEzBzI,EAAmB,MAAT3yE,EAAgBl4B,OAAO6qG,QAAQ3yE,GAAS,KACxC,OAAZ2yE,GACFA,EAAQt1F,KAAKg+E,IAGf,MAAMikB,EAAsB,OAAZ3M,GAAuC,IAAnBA,EAAQ9nG,OAI5C,OACE,uBAAKwjF,UAAW5hF,KAAOg3G,sBACrB,uBAAKp1B,UAAW5hF,KAAOi3G,WACrB,uBAAKr1B,UAAW5hF,KAAOiwG,QAAvB,UACE4C,GACA,gBAAC,GAAD,CAAQhnD,QAPG,IAAMlmD,gBAAK4pF,GAAuBh8D,IAOhBimE,MAAM,qBACjC,gBAAC,GAAD,CAAYt3F,KAAK,YAIrB2wG,GACC3M,EAAclpG,IAAI,EAAE9B,EAAMU,KACzB,gBAAC,GAAD,CACEM,IAAKhB,EACL+5G,WAAW,EACXhhC,OAAQA,EACRihC,eAAgBA,EAChBC,cAAeA,EACfC,eAAgBA,EAChB7hC,MAAO,EACPw6B,wBAAyBA,EACzBiG,QAAQ,EACR3F,iBAAkBA,EAClBnzG,KAAMA,EACNilB,KAAM,CAACjlB,GACPq6G,SAAS,QACTrhC,MAAOA,EACPt4E,MAAOA,KAGZu5G,GACC,gBAAC,GAAD,CACElhC,OAAQA,EACRV,MAAO,EACPygC,QAAQ,EACR3F,iBAAkBA,EAClBluF,KAAM,GACN+zD,MAAOA,EACPhyE,KAAK,WCrEA,SAAS+1G,IAA0B,OAChDhkC,EADgD,wBAEhD85B,EAFgD,iBAGhDM,EAHgD,MAIhDn6B,IACQ,MACDlyB,EAASqsD,EAATrsD,MAEDkkD,EAAmB,MAATlkD,EAAgB3mD,OAAO6qG,QAAQlkD,GAAS,KACxC,OAAZkkD,GACFA,EAAQt1F,KAAKg+E,IAGf,MAAMikB,EAAsB,OAAZ3M,GAAuC,IAAnBA,EAAQ9nG,OAEtC24G,EAAa,IAAMpxG,gBAAK4pF,GAAuBvtC,IAErD,OAAI6wD,EACK,KAGL,uBAAKjxB,UAAW5hF,KAAOg3G,sBACrB,uBAAKp1B,UAAW5hF,KAAOi3G,WACrB,uBAAKr1B,UAAW5hF,KAAOiwG,QAAvB,UACE4C,GACA,gBAAC,GAAD,CAAQhnD,QAASkrD,EAAYvd,MAAM,qBACjC,gBAAC,GAAD,CAAYt3F,KAAK,WAItB2wG,GAAW,uBAAKjxB,UAAW5hF,KAAOk3G,OAAvB,SACVrE,GACC3M,EAAclpG,IAAI,EAAE9B,EAAMU,KACzB,gBAAC,GAAD,CACEM,IAAKhB,EACL+5G,WAAW,EACXhhC,OAAQA,EACRihC,gBAAgB,EAChBC,eAAe,EACfC,gBAAgB,EAChB7hC,MAAO,EACPw6B,wBAAyBA,EACzBiG,QAAQ,EACR3F,iBAAkBA,EAClBnzG,KAAMA,EACNilB,KAAM,CAACjlB,GACPq6G,SAAS,QACTrhC,MAAOA,EACPt4E,MAAOA,MCrDN,SAASs8G,IAA+B,OACrDjkC,EADqD,iBAErDo6B,EAFqD,MAGrDn6B,IACQ,MACD66B,EAAsCV,EAAtCU,kBAAmB1wG,EAAmBgwG,EAAnBhwG,GAAI2jD,EAAeqsD,EAAfrsD,MAE9B,GjFCiC,KiFHYqsD,EAARnsG,KAGnC,OAAO,KAGT,MAAMi2G,EAAwB,OAAVn2D,EAapB,OACE,uBAAK4/B,UAAW5hF,KAAOg3G,sBACrB,uBAAKp1B,UAAW5hF,KAAOi3G,WACrB,uBAAKr1B,UAAW5hF,KAAOiwG,QAAvB,aAEF,uBAAKruB,UAAW5hF,KAAOo4G,mBACrB,wBAAMx2B,UAAW5hF,KAAOo2G,MAAxB,aACCrH,EAEC,gBAAC,GAAD,CACE7yG,IAAKi8G,EACL5E,cAtBa,CAACpzF,EAAMvkB,KAC5B,MAAMypE,EAAa6O,EAAM4G,wBAAwBz8E,GAC9B,OAAfgnE,GACF4O,EAAO5vD,KAAK,mBAAoB,CAC9BhmB,KACAgnE,aACAgzC,cAAez8G,KAiBXukB,KAAM,CAAC,WAAY,aACnBvkB,MAAOu8G,IAGT,wBAAMv2B,UAAW5hF,KAAOy2G,OAAQ0B,EAAc,OAAS,W,28BCrBjE,MAAMG,GAAqBjiF,wBAAyB,MACpDiiF,GAAmBj8E,YAAc,qBAQjC,MAAM+qE,GAA0D,IAAI16C,QAC9D25C,GAIFW,GACDp6C,IACC,MAAMy6C,EAAUD,GAAmB5rG,IAAIoxD,GACvC,GAAe,MAAXy6C,EACF,OAAOA,EAAQC,QAGjB,IAAIC,EAAc,KAClB,MAAMD,EAAU,IAAIjhG,QAAQC,IAC1BihG,EAAYjhG,IAKd,OAFA8gG,GAAmBr2F,IAAI67C,EAAS,CAAC06C,UAASC,cAEnCD,GAER16C,GAAqBA,EACtB,CAAC25C,YAAY,IAOf,SAASgS,IAA6B,SAAC9jF,IACrC,MAAMw/C,EAAS37C,qBAA2B2nD,IACpC/L,EAAQ57C,qBAAkB4nD,IAE1Bs4B,EAAoBngF,sBACvBh6B,IACC,MAAMuuD,EAAUsnB,EAAMK,eAAel2E,GACrC,OAAgB,OAAZuuD,EACKy5C,GAASnhF,KAAK0nC,GAEd,MAGX,CAACsnB,IAMI8b,EAAqB13D,qBAAyBo3D,IAA9CM,kBAnBgD,KAwBnDl3D,mBAAwC,MAxBW,GAsBrD2/E,EAtBqD,KAuBrDC,EAvBqD,KA2BvDlgF,oBAAU,KACR,MAAMmgF,EAAmB,EAAEt6G,KAAIqrF,SAAQ5oF,YACrC,MAAM8rD,EAAUsnB,EAAMK,eAAel2E,GACrC,GAAgB,OAAZuuD,EAAkB,CACpB,MAAMgsD,EAAyC,CAC7ClvB,SACA5oF,SAEIumG,EAAUD,GAAmB5rG,IAAIoxD,GACxB,MAAXy6C,GACFD,GAAmBt7E,OAAO8gC,GAC1ByiD,kCAAe,KACbhI,EAAQE,UAAUqR,GAClBF,EAAyBE,OAG3BvS,GAASxrF,MAAM+xC,EAASgsD,GAGpBv6G,IAAO2xF,GACT0oB,EAAyBE,MAOjC,OADA3kC,EAAOxP,YAAY,mCAAoCk0C,GAChD,IACL1kC,EAAOr8D,eACL,mCACA+gG,IAEH,CAAC1kC,EAAQwkC,EAAuBzoB,EAAmB9b,IAGtD17C,oBAAU,KACR,GAA0B,OAAtBw3D,EACF,MAAO,OAGT,MAAM3qB,EAAa6O,EAAM4G,wBAAwBkV,GAEjD,IAAIjJ,EAA8B,KAElC,MAAMuoB,EAAc,KAClBvoB,EAAY,KAEO,OAAf1hB,GACF4O,EAAO5vD,KAAK,4BAA6B,CACvChmB,GAAI2xF,EACJ3qB,gBAONiqC,IAEA,MAAMqJ,EAAmB,EAAEt6G,SAErBA,IAAO2xF,IACS,OAAdjJ,GACF5hE,aAAa4hE,GAEfA,EAAYt+E,WAAW6mG,EAAa,OAMxC,OAFAr7B,EAAOxP,YAAY,mCAAoCk0C,GAEhD,KACL1kC,EAAOr8D,eACL,mCACA+gG,GAGgB,OAAd5xB,GACF5hE,aAAa4hE,KAGhB,CAAC9S,EAAQ+b,EAAmB9b,IAE/B,MAAMt4E,EAAQ+8B,kBACZ,KAAM,CAAE6/E,sBAER,CAACC,EAAuBD,IAG1B,OACE,gBAACF,GAAmB5hF,SAApB,CAA6B96B,MAAOA,GACjC64B,G,wBCpLQ,SAASokF,IAAa,GAACx6G,EAAD,OAAKqrF,IAAgB,MACjD/zC,EAAwC+zC,EAAxC/zC,OAAQomD,EAAgCrS,EAAhCqS,OAAQC,EAAwBtS,EAAxBsS,QAAS/mE,EAAey0D,EAAfz0D,EAAGygB,EAAYg0C,EAAZh0C,MAAOxjB,EAAKw3D,EAALx3D,EAE1C,OACE,uBAAK0vD,UAAW5hF,KAAO64G,cACrB,uBAAKj3B,UAAW5hF,KAAOiwG,QAAvB,UACA,uBAAKruB,UAAW5hF,KAAO84G,WACrB,uBAAKl3B,UAAW5hF,KAAO+4G,UACrB,yBAAOn3B,UAAW5hF,KAAOg5G,OAAzB,UAEA,6BAAQjd,EAAO1oC,KAAO,MAGxB,uBAAKuuB,UAAW5hF,KAAOi5G,QACrB,6BAAQld,EAAO5oC,MAAQ,KAEvB,uBAAKyuB,UAAW5hF,KAAOk5G,UACrB,uBAAKt3B,UAAW5hF,KAAO+4G,UACrB,yBAAOn3B,UAAW5hF,KAAOg5G,OAAzB,WAEA,6BAAQhd,EAAQ3oC,KAAO,MAGzB,uBAAKuuB,UAAW5hF,KAAOi5G,QACrB,6BAAQjd,EAAQ7oC,MAAQ,KAExB,uBAAKyuB,UAAW5hF,KAAO84G,WACrB,uBAAKl3B,UAAW5hF,KAAO+4G,UACpB9qG,GAAOynC,GADV,MACqBznC,GAAO0nC,GAD5B,KACuC1nC,GAAOikB,GAD9C,KACoDjkB,GAAOgnB,GAD3D,MAKF,6BAAQ+mE,EAAQ+E,OAAS,MAG3B,6BAAQ/E,EAAQiF,QAAU,MAE5B,6BAAQlF,EAAOgF,OAAS,MAE1B,6BAAQhF,EAAOkF,QAAU,OAMjC,SAAShzF,GAAOgqC,GACd,OAAIvwB,KAAKmnD,MAAM52B,KAAYA,EAClBA,EAEAA,EAAOkhE,QAAQ,G,m+BClCX,SAASC,IAAY,GAAC/6G,EAAD,MAAKyC,IACvC,MAAMmzE,EAAS37C,qBAAW2nD,IACpB/L,EAAQ57C,qBAAW4nD,IAEnBm5B,EAAkB,CAACC,EAAiBC,EAAiB39G,KACzD,MAAMypE,EAAa6O,EAAM4G,wBAAwBz8E,GAC9B,OAAfgnE,GACF4O,EAAO5vD,KAAK,oCAAqC,CAC/ChmB,KACAgnE,aACAi0C,UACAC,UACA39G,WAKA49G,EAAc,CAACt+G,EAAcU,KACjC,MAAMypE,EAAa6O,EAAM4G,wBAAwBz8E,GAC9B,OAAfgnE,GACF4O,EAAO5vD,KAAK,6BAA8B,CACxChmB,KACAgnE,aACAnqE,OACAU,WAKA2G,EAAOo2B,kBAAQ,IAAMhwB,MAAMkJ,KAAKxW,OAAOkH,KAAKzB,IAAS,CAACA,IAI5D,OACE,uBAAK8gF,UAAW5hF,KAAOo5G,aACrB,uBAAKx3B,UAAW5hF,KAAOi3G,WACrB,uBAAKr1B,UAAW5hF,KAAOiwG,QACrB,uBAAKruB,UAAW5hF,KAAOy5G,UAAW,YAEpC,gBAAC,GAAD,CAAQ5tD,QARK,IAAMlmD,gBAAK4pF,GAAqBzuF,IAQhB04F,MAAM,qBACjC,gBAAC,GAAD,CAAYt3F,KAAK,WAGpBK,EAAKnE,OAAS,GACbmE,EAAKvF,IAAI4sE,GACP,gBAAC8vC,GAAD,CACEx9G,IAAK0tE,EACLA,UAAWA,EACXyvC,gBAAiBA,EACjBG,YAAaA,EACbriC,gBAAiBjD,EAAMylC,iCACvB/9G,MAAOkF,EAAM8oE,MAGnB,gBAACgwC,GAAD,CACEP,gBAAiBA,EACjBG,YAAaA,EACbriC,gBAAiBjD,EAAMylC,mCAEzB,uBAAK/3B,UAAW5hF,KAAOy5G,UAAW,MAWxC,SAASG,IAAO,gBAACP,EAAD,YAAkBG,EAAlB,gBAA+BriC,IAA+B,WACtDr+C,mBAAiB,GADqC,GACrE58B,EADqE,KAChEg4G,EADgE,KAItE2F,EAAkBhhF,iBAAe,IAqBvC,OACE,gBAAC6gF,GAAD,CACEx9G,IAAKA,EACL0tE,UAAW,GACXkwC,qBAAqB,YACrBT,gBAxB2B,CAC7BU,EACAC,EACAp+G,KAGAi+G,EAAgB3lF,QAAU8lF,GAmBxBR,YAhBuB,CAAC5vC,EAAmBhuE,KAEb,KAA5Bi+G,EAAgB3lF,UACJ,KAAVt4B,GACF49G,EAAYK,EAAgB3lF,QAASt4B,GAjBvBs4G,EAAOh4G,EAAM,KA8B7Bi7E,gBAAiBA,EACjBv7E,MAAO,GACPq+G,iBAAiB,UAevB,SAASP,IAAI,UACX9vC,EADW,qBAEXkwC,EAFW,gBAGXT,EAHW,YAIXG,EAJW,gBAKXriC,EALW,MAMXv7E,EANW,iBAOXq+G,IACW,WAOiCnhF,mBAAS8wC,GAP1C,GAOJswC,EAPI,KAOYC,EAPZ,UAQyBrhF,mBAASr7B,KAAKC,UAAU9B,IARjD,GAQJw+G,EARI,KAQQC,EARR,UASqCvhF,oBAAS,GAT9C,GASJwhF,EATI,KAScC,EATd,UAU6BzhF,oBAAS,GAVtC,GAUJ0hF,EAVI,KAUUC,EAVV,KA8DX,OACE,uBAAK74B,UAAW5hF,KAAO05G,KACrB,gBAACgB,GAAD,CACE94B,UAAW04B,EAAmBt6G,KAAO26G,UAAY36G,KAAO4zG,QACxDjX,SAtD+Bqd,IACnC,MAAMhnB,EACa,KAAjBgnB,GACoB,OAApB7iC,GACAA,EAAgBv1E,QAAQo4G,IAAiB,EAE3C3K,kCAAe,KACb8K,EAAkBH,GAClBO,EAAoBvnB,MA+ClB4nB,QA9BiB,KACrBT,EAAkBvwC,IA8BdixC,SAdwB,KACxBP,GAAoBE,GAClB5wC,IAAcswC,GAChBb,EAAgBzvC,EAAWswC,EAAgBt+G,IAY3CovG,YAAa8O,EACbl+G,MAAOs+G,IAPX,KAUE,gBAACQ,GAAD,CACE94B,UAAW44B,EAAex6G,KAAOy2G,MAAQz2G,KAAO4zG,QAChDjX,SAnD2BjJ,IAC/B,IAAIV,GAAU,EACd,IACEv1F,KAAKyP,MAAMohE,GAAiBolB,IAC5BV,GAAU,EACV,MAAO3tF,IAETgqG,kCAAe,KACbgL,EAAc3mB,GACd+mB,EAAgBznB,MA2Cd4nB,QAnCa,KACjBP,EAAcz+G,IAmCVi/G,SAhCoB,KACxB,GAAIP,GAAoBE,EAAc,CACpC,MAAMM,EAAmBr9G,KAAKyP,MAAMohE,GAAiB8rC,IACjDx+G,IAAUk/G,GACZtB,EAAY5vC,EAAWkxC,KA6BvB9P,YAAaiP,EACbr+G,MAAOw+G,IAhBX,KAgCJ,SAASM,IAAM,UACb94B,EACA+a,WAFa,QAGbie,EAHa,SAIbC,EAJa,YAKb7P,EALa,MAMbpvG,IAqBA,OACE,gBAAC,GAAD,CACEgmF,UAAY,GAAEA,KAAa5hF,KAAO8qG,QAClC7L,OAAQ4b,EACRle,SAAUnkD,GAASmkD,EAASnkD,EAAMt5C,OAAOtD,OACzCojG,UAxBcxmD,IAChB,OAAQA,EAAMt8C,KACZ,IAAK,QACH2+G,IACA,MACF,IAAK,SACHD,IACA,MACF,IAAK,YACL,IAAK,YACL,IAAK,aACL,IAAK,UACHpiE,EAAM1J,oBAaRk8D,YAAaA,EACbpvG,MAAOA,IC9QE,SAASm/G,GAAyBhnG,GAC/C,MAAMmgE,EAAQ57C,qBAAW4nD,IAgBzB,OAFkC+T,GAZbt7D,kBACnB,KAAM,CACJu7D,gBAAiB,IAAMhgB,EAAM8mC,0BAC7B5zD,UAAYntC,IACVi6D,EAAMzP,YAAY,4BAA6BxqD,GACxC,KACLi6D,EAAMt8D,eAAe,4BAA6BqC,OAIxD,CAACi6D,KAQI,gBAAC+mC,GAAD,MAHE,KAMX,SAASA,GAAkBlnG,GAAU,MAC5BykG,EAAqBlgF,qBAAWggF,IAAhCE,kBAEAtmB,EAAsB55D,qBAAWo3D,IAAjCwC,mBACP,GAA2B,OAAvBA,EACF,OAAO,KAGT,MAAMgpB,EAAsB1C,EAAkBtmB,GAC9C,GAA4B,OAAxBgpB,EACF,OAAO,KAV0B,MAa5BxxB,EAAiBwxB,EAAjBxxB,OAAQ5oF,EAASo6G,EAATp6G,MAEf,OACE,gBAAC,WAAD,KACc,OAAX4oF,GACC,gBAAC,GAAD,CAAcrrF,GAAI6zF,EAAoBxI,OAAQA,IAErC,OAAV5oF,GACC,gBAAC,GAAD,CACEzC,GAAI6zF,EACJpxF,MAAiB,OAAVA,EAAiBA,EAAQ,M,wBChB3B,SAASq6G,IAAqB,yBAC3CrN,EAD2C,QAE3ClhD,EAF2C,wBAG3CmhD,EAH2C,iBAI3CM,EAJ2C,cAK3CR,IACQ,MACDxvG,EAAMuuD,EAANvuD,GAELspG,EAKE0G,EALF1G,OACAhyC,EAIE04C,EAJF14C,oBACAw5C,EAGEd,EAHFc,gBACAC,EAEEf,EAFFe,SACAvxG,EACEwwG,EADFxwG,OAGIo2E,EAAS37C,qBAAW2nD,IACpB/L,EAAQ57C,qBAAW4nD,IAXjB,EAgBJ5nD,qBAAmC6nD,IAFPi7B,EAdxB,EAcNh7B,6BACAC,EAfM,EAeNA,4BAGIg7B,EACoB,OAAxB1lD,GAAoD,OAApBw5C,EAC3B,GAAEx5C,KAAuBw5C,IAC1B,KACAmM,EAA4B,OAAX3T,GAAmBA,EAAOvpG,OAAS,EACpDm9G,EACJD,GAAoC,OAAlBD,GAAuC,OAAbjM,EAE9C,OACE,gBAAC,WAAD,KACE,uBAAKxtB,UAAW5hF,KAAOw7G,kBACrB,gBAAC,GAAD,CAAW5uD,QAASA,IAEpB,gBAACorD,GAAD,CACE/jC,OAAQA,EACR85B,wBAAyBA,EACzBM,iBAAkBA,EAClBn6B,MAAOA,IAGT,gBAACgkC,GAAD,CACEjkC,OAAQA,EACRo6B,iBAAkBA,EAClBn6B,MAAOA,IAGT,gBAAC+jC,GAAD,CACEhkC,OAAQA,EACR85B,wBAAyBA,EACzBM,iBAAkBA,EAClBn6B,MAAOA,IAGT,gBAAC,GAAD,CACED,OAAQA,EACR85B,wBAAyBA,EACzBM,iBAAkBA,EAClBn6B,MAAOA,IAGT,gBAAC4iC,GAAD,CACE7iC,OAAQA,EACR85B,wBAAyBA,EACzBM,iBAAkBA,EAClBn6B,MAAOA,IAGT,gBAAC,GAAD,MAECqnC,GACC,uBAAK35B,UAAW5hF,KAAOy7G,QACrB,uBAAK75B,UAAW5hF,KAAO07G,cAAvB,eACCJ,GACG3T,EAA4B3qG,IAAI4qG,GAChC,gBAAC+T,GAAD,CACEz/G,IAAK0rG,EAAMvpG,GACXg+B,YAAaurE,EAAMvrE,aAAe,YAClCqtC,gBAAiBk+B,EAAMl+B,gBACvBrrE,GAAIupG,EAAMvpG,GACV4pG,UAAW/zB,EAAM4F,gBAAgB8tB,EAAMvpG,IACvC6D,KAAM0lG,EAAM1lG,QAGJ,OAAbktG,GACC,uBAAKxtB,UAAW5hF,KAAO47G,iBAAkBxM,GAExB,OAAlBiM,GACC,uBAAKz5B,UAAW5hF,KAAO47G,iBAAkBP,IAKnC,OAAXx9G,GACC,gBAACg+G,GAAD,CAAQt7C,SAAU1iE,EAAO0iE,SAAUC,WAAY3iE,EAAO2iE,cAIzD46C,GACC,gBAAC,GAAD,CAAa/8G,GAAG,oBACb+H,GACC,gBAAC,WAAD,KACE,gBAAC,GAAD,CACEylD,QAAS,IAAMiiD,EAAyBzvG,EAAI+H,EAAK+Z,MACjDq5E,MAAM,2BACN,gBAAC,GAAD,CAAM5X,UAAW5hF,KAAO87G,gBAAiB55G,KAAK,SAHhD,4BAMA,gBAAC,GAAD,CACE2pD,QAAS,IAAMgiD,EAAcxvG,EAAI+H,EAAK+Z,MACtCq5E,MAAM,4BACN,gBAAC,GAAD,CACE5X,UAAW5hF,KAAO87G,gBAClB55G,KAAK,6BACJ,IANL,4BASiC,OAAhCm+E,GACe,aAAdj6E,EAAKlE,MACH,gBAAC,GAAD,CACE2pD,QAAS,IAAMw0B,EAA4BhiF,EAAI+H,EAAK+Z,MACpDq5E,MAAM,oBACN,gBAAC,GAAD,CAAM5X,UAAW5hF,KAAO87G,gBAAiB55G,KAAK,SAHhD,wBA0ClB,SAAS25G,IAAO,SAACt7C,EAAD,WAAWC,IAEzB,OACE,uBAAKohB,UAAW5hF,KAAO67G,QACrB,uBAAKj6B,UAAW5hF,KAAO+7G,iBACrB,uBAAKn6B,UAAW5hF,KAAOg8G,cAAvB,UACA,gBAAC,GAAD,CAAQnwD,QALK,IAAMlmD,gBAAM,GAAE46D,KAAYC,KAKVg5B,MAAM,qBACjC,gBAAC,GAAD,CAAYt3F,KAAK,WAGrB,uBAAK0/E,UAAW5hF,KAAOi8G,gBApC7B,SAAgC17C,EAAkBC,GAChD,MAAM07C,EAAkB,cAExB,IAAIC,EAAW57C,EAASlyD,QAAQ6tG,EAAiB,IAIjD,GAAI,WAAWnyG,KAAKoyG,GAAW,CAC7B,MAAM3uG,EAAQ+yD,EAAS/yD,MAAM0uG,GAC7B,GAAI1uG,EAAO,CACT,MAAM4uG,EAAkB5uG,EAAM,GAC9B,GAAI4uG,EAAiB,CAEnBD,EADmBC,EAAgB/tG,QAAQ6tG,EAAiB,IACpC,IAAMC,IAKpC,MAAQ,GAAEA,KAAY37C,IAmBf67C,CAAuB97C,EAAUC,KAc1C,SAASm7C,IAAU,YACjBt/E,EADiB,gBAEjBqtC,EAFiB,GAGjBrrE,EAHiB,UAIjB4pG,EAJiB,KAKjB/lG,IAEA,MAAMgnB,EAAWoP,qBAAWq3D,IADX,EAKb2E,KAFFC,EAHe,EAGfA,uBACAI,EAJe,EAIfA,4BAGI+M,EAAcrpE,sBAClB,IACEnP,EAAS,CACPhnB,KAAM,uBACN6+C,QAAS1iD,IAEb,CAAC6qB,EAAU7qB,IAKP06F,EAAepE,EAErB,OACE,gBAAC,GAAD,CACEz4F,IAAKmC,EACLujF,UAAW5hF,KAAOs8G,YAClB79E,UAAWwpE,EACXp8C,QAAS61C,EACT5I,aAViB,IAAMvE,EAAuBl2F,GAW9C06F,aAAcA,GACd,wBAAMnX,UAAW5hF,KAAOu8G,cACtB,wBACE36B,UAAY,GAAE5hF,KAAOw8G,SAASvU,EAAY,GAAKjoG,KAAO0pG,aACtDlQ,MAAOn9D,GACNA,GAEH,gBAAC,GAAD,CAAOqtC,gBAAiBA,EAAiBxnE,KAAMA,M,wBC1PxC,SAASu6G,GAAwB1oG,GAAU,MACjDm+E,EAAsB55D,qBAAWo3D,IAAjCwC,mBACDhpE,EAAWoP,qBAAWq3D,IAF4B,EAGUr3D,qBAChEi5E,IADKmL,EAHiD,EAGjDA,6BAA8BC,EAHmB,EAGnBA,0BAG/B1oC,EAAS37C,qBAAW2nD,IACpB/L,EAAQ57C,qBAAW4nD,IACR08B,EAAuBtkF,qBAAWs4E,IAA5C1nF,SARiD,EAepDoP,qBAAwCo1E,IAJ1CI,EAXsD,EAWtDA,yBACAC,EAZsD,EAYtDA,wBACAC,EAbsD,EAatDA,oBACAH,EAdsD,EActDA,cAGIjhD,EACmB,OAAvBslC,EACIhe,EAAMK,eAAe2d,GACrB,KAEAmc,EACkB,MAAtBnc,EAA6B8b,EAAoB9b,GAAsB,KAEnE2qB,EAAmBxkF,sBAAY,KACnC,GAAgB,OAAZu0B,GAA2C,OAAvBslC,EAA6B,CACnD,MAAM7sB,EAAa6O,EAAM4G,wBAAwBoX,GAC9B,OAAf7sB,GACF4O,EAAO5vD,KAAK,yBAA0B,CACpCgY,YAAauwB,EAAQvwB,YACrBm4D,kBAAkB,EAClBn2F,GAAI6zF,EACJuC,yBAAyB,EACzBpvB,aACAqvB,gBAAgB,MAIrB,CAACzgB,EAAQrnB,EAASslC,EAAoBhe,IAEnC4oC,EAAazkF,sBAAY,KAC7B,GAA2B,OAAvB65D,EAA6B,CAC/B,MAAM7sB,EAAa6O,EAAM4G,wBAAwBoX,GAC9B,OAAf7sB,GACF4O,EAAO5vD,KAAK,sBAAuB,CACjChmB,GAAI6zF,EACJ7sB,iBAIL,CAAC4O,EAAQie,EAAoBhe,IAE1B6oC,EAAa1kF,sBAAY,KACI,MAA7BskF,GAA0D,OAArBtO,GACvCsO,EACEtO,EAAiBhwG,GACfgwG,IAGL,CAACA,EAAkBsO,IAIhB3N,EACiB,OAArBX,GACAA,EAAiBW,eACa,OAA9B2N,IACkC,OAAjCD,GACCA,EAA6BrO,IAE3B8J,EACQ,OAAZvrD,GvFtE+B,KuFuE/BA,EAAQ1qD,MACY,MAApBmsG,GAC0B,MAA1BA,EAAiBrsD,MAEb+sD,EACgB,MAApBV,GAA4BA,EAAiBU,kBAGzCiO,EAAkB3kF,sBAAY,KAClC,IAAI4kF,EAAyB,KACzB/iC,EAAiBttB,EACrB,KAA0B,OAAnBstB,GAAyB,CAC9B,GvFnF6B,KuFmFzBA,EAAeh4E,KAA8B,CAC/C+6G,EAAyB/iC,EACzB,MAEAA,EADSA,EAAe9J,SAAW,EAClB8D,EAAMK,eAAe2F,EAAe9J,UAEpC,KAMrB,GAA+B,OAA3B6sC,EACFL,EAAoB,CAClB16G,KAAM,OACNhF,QAAS,gBAACs0G,GAAD,YAEN,CACL,MAAM0L,EAA2BD,EAAuB5+G,GAIpD4+G,IAA2BrwD,GAC7B1jC,EAAS,CACPhnB,KAAM,uBACN6+C,QAASm8D,IAIb,MAAM73C,EAAa6O,EAAM4G,wBACvBoiC,GAIiB,OAAf73C,GACF4O,EAAO5vD,KAAK,mBAAoB,CAC9BhmB,GAAI6+G,EACJ73C,aACAgzC,eAAgBF,MAIrB,CAAClkC,EAAQ/qD,EAAU0jC,EAASurD,EAAayE,EAAqB1oC,IAEjE,OAAgB,OAAZtnB,EAEA,uBAAKg1B,UAAW5hF,KAAOw7G,kBACrB,uBAAK55B,UAAW5hF,KAAOm9G,YAM3B,uBAAKv7B,UAAW5hF,KAAOw7G,kBACrB,uBAAK55B,UAAW5hF,KAAOm9G,UACpBvwD,EAAQ1wD,KACP,gCACE,uBAAK0lF,UAAW5hF,KAAOo9G,IAAK5jB,MAAQ,QAAO5sC,EAAQ1wD,QAChD0wD,EAAQ1wD,KAEX,uBAAK0lF,UAAW5hF,KAAOq9G,YAI3B,uBAAKz7B,UAAW5hF,KAAOs9G,uBACrB,uBAAK17B,UAAW5hF,KAAOi2B,UAAWujE,MAAO5sC,EAAQvwB,aAC9CuwB,EAAQvwB,cAIZ0yE,GACC,gBAAC,GAAD,CACEntB,UAAW5hF,KAAOwpG,WAClBnI,UAAW8W,EACXxb,SAAUqgB,EACVxjB,MACE2e,EACI,mCACA,kCAEN,gBAAC,GAAD,CAAYj2G,KAAK,aAGpBgyE,EAAM2E,0BACL,gBAAC,GAAD,CACE+I,UAAW5hF,KAAOwpG,WAClB39C,QAASgxD,EACTrjB,MAAM,oCACN,gBAAC,GAAD,CAAYt3F,KAAK,cAGrB,gBAAC,GAAD,CACE0/E,UAAW5hF,KAAOwpG,WAClB39C,QAASixD,EACTtjB,MAAM,0CACN,gBAAC,GAAD,CAAYt3F,KAAK,cAEnB,gBAAC,GAAD,CACE0/E,UAAW5hF,KAAOwpG,WAClB/qE,UAAWuwE,EACXnjD,QAASkxD,EACTvjB,MAAM,gCACN,gBAAC,GAAD,CAAYt3F,KAAK,kBAIC,OAArBmsG,GACC,uBAAKzsB,UAAW5hF,KAAO2sG,SAAvB,cAGoB,OAArB0B,GACC,gBAAC,GAAD,CACEnyG,IACEg2F,EAEF4b,yBAA0BA,EAC1BlhD,QAASA,EACTmhD,wBAAyBA,EACzBM,iBAAkBA,EAClBR,cAAeA,K,wBCvMV,SAAS0P,IAAO,WAC7BC,EAD6B,SAE7B/+E,GAAW,EACXpgC,GAAIo/G,EAHyB,UAI7BC,EAJ6B,KAK7BC,EAL6B,KAM7Bz7G,IAEKy7G,EAAK3oG,KAAK4oG,GAAOA,EAAIv/G,KAAOm/G,IAC/BE,EAAUC,EAAK,GAAGt/G,IAGpB,MAAMs+F,EAAWtkE,sBACf,EAAEoW,mBAAmBivE,EAAUjvE,EAAc7yC,OAC7C,CAAC8hH,IAGG7d,EAAgBxnE,sBAAYmgB,IAChC,OAAQA,EAAMt8C,KACZ,IAAK,YACL,IAAK,YACL,IAAK,aACL,IAAK,UACHs8C,EAAM1J,oBAKT,IAEH,IAAI+uE,EACAC,EACAC,EACJ,OAAQ77G,GACN,IAAK,aACH27G,EAAoB79G,KAAOg+G,mBAC3BF,EAAoB99G,KAAOi+G,mBAC3BF,EAAmB/9G,KAAOk+G,kBAC1B,MACF,IAAK,WACHL,EAAoB79G,KAAOm+G,iBAC3BL,EAAoB99G,KAAOo+G,iBAC3BL,EAAmB/9G,KAAOq+G,gBAC1B,MACF,IAAK,WACHR,EAAoB79G,KAAOs+G,iBAC3BR,EAAoB99G,KAAOu+G,iBAC3BR,EAAmB/9G,KAAOw+G,gBAC1B,MACF,QACE,MAAMx9G,MAAO,qBAAoBkB,MAGrC,OACE,gBAAC,WAAD,KACGy7G,EAAK3gH,IAAI,EAAEyhH,OAAMpgH,KAAI60E,QAAOsmB,YAC3B,IAAI5oD,EACF,yBACEgxC,UAAW,CACTm8B,EACAt/E,EAAWz+B,KAAO0+G,YAAc1+G,KAAO2+G,IACtClgF,GAAY++E,IAAen/G,EAAyB,GAApB2B,KAAO4+G,YACxC5gH,KAAK,KACP9B,IAAKmC,EACL2gG,UAAWa,EACX7G,YAAa,IAAM0kB,EAAUr/G,IAC7B,yBACE6D,KAAK,QACL0/E,UAAW5hF,KAAO8qG,MAClBztE,QAASmgF,IAAen/G,EACxBogC,SAAUA,EACVvjC,KAAMuiH,EACN7hH,MAAOyC,EACPs+F,SAAUA,IAEZ,gBAAC,GAAD,CACE/a,UAAY,GACVnjD,EAAWz+B,KAAO6+G,aAAe,MAC/BhB,IACJ37G,KAAMu8G,IAER,wBAAM78B,UAAWk8B,GAAoB5qC,IAYzC,OARIsmB,IACF5oD,EACE,gBAAC8tD,GAAD,CAASxiG,IAAKmC,EAAIujF,UAAWkgB,KAAcpD,QAASxrB,MAAOsmB,GACxD5oD,IAKAA,K,+pDC9EA,SAASkuE,GAAmB/qG,GACzC,MAAMmgE,EAAQ57C,qBAAW4nD,IAYnB6+B,EAAyB9qB,GAVYt7D,kBACzC,KAAM,CACJu7D,gBAAiB,IAAMhgB,EAAM6qC,uBAC7B33D,UAAYntC,IACVi6D,EAAMzP,YAAY,yBAA0BxqD,GACrC,IAAMi6D,EAAMt8D,eAAe,yBAA0BqC,MAGhE,CAACi6D,KAMG8qC,EAA+B3mF,sBACnC,EAAEoW,oBACAylC,EAAM6qC,wBAA0BtwE,EAAcpR,SAEhD,CAAC62C,IArB+C,KAwBFp7C,mBAE9C,IAAM,IAAIo7C,EAAM1K,mBA1BgC,GAwB3CA,EAxB2C,KAwBzBy1C,EAxByB,KA4B5CC,EAAY7mF,sBAAY,KAC5B4mF,EAAoBE,GACX,IACFA,EACH,CACEj9G,KzFvCgC,EyFwChCtG,MzFzD8B,EyF0D9B0tE,WAAW,MAIhB,IAEG81C,EAAmB/mF,sBACvB,CAACgnF,EAAkCn9G,KACjC+8G,EAAoBE,IAClB,MAAM3vB,EAAiC,IAAI2vB,GACrCj7G,EAAQi7G,EAAqBv9G,QAAQy9G,GA8B3C,OA7BIn7G,GAAS,IzFpDqB,IyFqD5BhC,EACFstF,EAAOtrF,GAAS,CACdhC,KzFvD4B,EyFwD5BonE,UAAW+1C,EAAgB/1C,UAC3B1tE,MzF1E0B,GAkBE,IyF0DrBsG,EACTstF,EAAOtrF,GAAS,CACdhC,KzF5D4B,EyF6D5BonE,UAAW+1C,EAAgB/1C,UAC3B0pB,SAAS,EACTp3F,MAAO,IzF9DkB,IyFgElBsG,EACTstF,EAAOtrF,GAAS,CACdhC,KzFlEyB,EyFmEzBonE,UAAW+1C,EAAgB/1C,UAC3B0pB,SAAS,EACTp3F,MAAO,IzFpEa,IyFsEbsG,IACTstF,EAAOtrF,GAAS,CACdhC,KzFxEoB,EyFyEpBonE,UAAW+1C,EAAgB/1C,UAC3B0pB,SAAS,KAIRxD,KAGX,IAGI8vB,EAA+BjnF,sBACnC,CAACgnF,EAAkCzjH,KACjC,GzFzFoC,IyFyFhCyjH,EAAgBn9G,KAClB,MAAMlB,MAAM,yCAGdi+G,EAAoBE,IAClB,MAAM3vB,EAAiC,IAAI2vB,GAC3C,GzF/FkC,IyF+F9BE,EAAgBn9G,KAAqC,CACvD,MAAMgC,EAAQi7G,EAAqBv9G,QAAQy9G,GACvCn7G,GAAS,IACXsrF,EAAOtrF,GAAP,SACKm7G,GADL,IAEEzjH,WAIN,OAAO4zF,KAGX,IAGI+vB,EAA0BlnF,sBAC9B,CAACgnF,EAAkCzjH,KACjC,GzFhHoC,IyFgHhCyjH,EAAgBn9G,KAClB,MAAMlB,MAAM,yCAGdi+G,EAAoBE,IAClB,MAAM3vB,EAAiC,IAAI2vB,GAC3C,GzFrHkC,IyFsHhCE,EAAgBn9G,MzFrHa,IyFsH7Bm9G,EAAgBn9G,KAChB,CACA,MAAMgC,EAAQi7G,EAAqBv9G,QAAQy9G,GAC3C,GAAIn7G,GAAS,EAAG,CACd,IAAI8uF,GAAU,EACd,IACE,IAAI7mF,OAAOvQ,GACX,MAAOyJ,GACP2tF,GAAU,EAEZxD,EAAOtrF,GAAP,SACKm7G,GADL,IAEErsB,UACAp3F,WAIN,OAAO4zF,KAGX,IAGIgwB,EAAennF,sBAAan0B,IAChC+6G,EAAoBE,IAClB,MAAM3vB,EAAiC,IAAI2vB,GAE3C,OADA3vB,EAAO3tF,OAAOqC,EAAO,GACdsrF,KAER,IAEGiwB,EAAwBpnF,sBAC5B,CAACgnF,EAAkC/1C,KACjC21C,EAAoBE,IAClB,MAAM3vB,EAAiC,IAAI2vB,GACrCj7G,EAAQi7G,EAAqBv9G,QAAQy9G,GAsB3C,OArBIn7G,GAAS,IzF5JqB,IyF6J5Bm7G,EAAgBn9G,MzF5JY,IyFkK9Bm9G,EAAgBn9G,MzFjKW,IyFkK3Bm9G,EAAgBn9G,MzFjKM,IyFuKbm9G,EAAgBn9G,QAZzBstF,EAAOtrF,GAAP,SACOsrF,EAAOtrF,IADd,IAEEolE,eAiBCkmB,KAGX,IAOIkwB,EAAsB7mF,iBAA+B2wC,GAY3D,OAXAhxC,oBAAU,KACRknF,EAAoBxrF,QAAUs1C,EACvB,QACN,CAACA,IACJhxC,oBACE,IAAM,KACJ07C,EAAM1K,iBAAmB,IAAIk2C,EAAoBxrF,UAEnD,CAACggD,IAID,uBAAK0N,UAAW5hF,KAAO2/G,UACrB,yBAAO/9B,UAAW5hF,KAAO4/G,SACvB,yBACE19G,KAAK,WACLm7B,SAAU0hF,EACVpiB,SAAUqiB,IACT,IALL,oCASA,uBAAKp9B,UAAW5hF,KAAOiwG,QAAvB,4BAEA,yBAAOruB,UAAW5hF,KAAO6/G,OACvB,6BAC+B,IAA5Br2C,EAAiBprE,QAChB,sBAAIwjF,UAAW5hF,KAAO8/G,UACpB,sBAAIl+B,UAAW5hF,KAAO+/G,eAAtB,gCAKHv2C,EAAiBxsE,IAAI,CAACqiH,EAAiBn7G,IACtC,sBAAI09E,UAAW5hF,KAAO8/G,SAAU5jH,IAAKgI,GACnC,sBAAI09E,UAAW5hF,KAAOggH,WACpB,gBAAC,GAAD,CACEp+B,WAC8B,IAA5By9B,EAAgBrsB,QACZ,GACAhzF,KAAOigH,cAEb5e,UAAWge,EAAgB/1C,UAC3BqzB,SAAUrzB,GACRm2C,EAAsBJ,EAAiB/1C,GAEzCkwB,OAC8B,IAA5B6lB,EAAgBrsB,QACZ,iBACAqsB,EAAgB/1C,UAChB,iBACA,mBAEN,gBAAC42C,GAAD,CACE52C,UAAW+1C,EAAgB/1C,UAC3B0pB,QAC6B,MAA3BqsB,EAAgBrsB,UACY,IAA5BqsB,EAAgBrsB,YAKxB,sBAAIpR,UAAW5hF,KAAOggH,WACpB,0BACEp+B,UAAW5hF,KAAOmgH,OAClBvkH,MAAOyjH,EAAgBn9G,KACvBy6F,SAAU,EAAEluD,mBACV2wE,EACEC,EACEnxF,SACAugB,EAAc7yC,MACd,MAIN,0BAAQA,MzFrQa,GyFqQrB,YACA,0BAAQA,MzFvQgB,GyFuQxB,QACA,0BAAQA,MzFzQgB,GyFyQxB,QACA,0BAAQA,MzFvQQ,GyFuQhB,SAGJ,sBAAIgmF,UAAW5hF,KAAOggH,WzF7QM,IyF8QzBX,EAAgBn9G,MACf,UzF7QqB,IyF8QrBm9G,EAAgBn9G,MzF/QQ,IyFgRxBm9G,EAAgBn9G,OAChB,WAEJ,sBAAI0/E,UAAW5hF,KAAOggH,WzFpRM,IyFqRzBX,EAAgBn9G,MACf,0BACE0/E,UAAW5hF,KAAOmgH,OAClBvkH,MAAOyjH,EAAgBzjH,MACvB+gG,SAAU,EAAEluD,mBACV6wE,EACED,EACEnxF,SAASugB,EAAc7yC,MAAO,MAGpC,0BAAQA,MzFpTI,GyFoTZ,SACA,0BAAQA,MzFpTM,GyFoTd,WACA,0BAAQA,MzFpTO,GyFoTf,YACA,0BAAQA,MzFpTS,GyFoTjB,eACA,0BAAQA,MzFpTY,GyFoTpB,qBAGA,0BAAQA,MzFtTG,GyFsTX,QACA,0BAAQA,MzFtTa,GyFsTrB,SACA,0BAAQA,MzFtTO,IyFsTf,YACA,0BAAQA,MzFrTO,IyFqTf,czFvSmB,IyF0SrByjH,EAAgBn9G,MzF3SQ,IyF4SxBm9G,EAAgBn9G,OAChB,yBACE0/E,UAAW5hF,KAAO8qG,MAClB5oG,KAAK,OACL8oG,YAAY,qBACZrO,SAAU,EAAEluD,mBACV8wE,EACEF,EACA5wE,EAAc7yC,OAGlBA,MAAOyjH,EAAgBzjH,SAI7B,sBAAIgmF,UAAW5hF,KAAOggH,WACpB,gBAAC,GAAD,CACEn0D,QAAS,IAAM2zD,EAAat7G,GAC5Bs1F,MAAM,iBACN,gBAAC,GAAD,CAAYt3F,KAAK,iBAQ7B,gBAAC,GAAD,CAAQ2pD,QAASqzD,GACf,gBAAC,GAAD,CAAYt9B,UAAW5hF,KAAOq2F,WAAYn0F,KAAK,QADjD,eAYN,SAASg+G,IAAW,UAAC52C,EAAD,QAAY0pB,IAC9B,IAAIpR,EAMJ,OAJEA,EADEoR,EACU1pB,EAAYtpE,KAAOwhG,SAAWxhG,KAAOyhG,UAErCn4B,EAAYtpE,KAAOogH,gBAAkBpgH,KAAOqgH,iBAGxD,uBAAKz+B,UAAWA,GACd,uBACEA,UAAWtY,EAAYtpE,KAAOsgH,eAAiBtgH,KAAOugH,mBC3X/C,SAASC,GAAkBzsG,GAAS,QAM7CukB,qBAAWs8D,IAJbnV,EAF+C,EAE/CA,qBACAC,EAH+C,EAG/CA,qBACA2V,EAJ+C,EAI/CA,wBACAC,EAL+C,EAK/CA,wBAGF,OACE,uBAAK1T,UAAW5hF,KAAO2/G,UACrB,uBAAK/9B,UAAW5hF,KAAO4/G,SACrB,6BACE,yBACE19G,KAAK,WACLm7B,QAASoiD,EACTkd,SAAU,EAAEluD,mBACV4mD,EAAwB5mD,EAAcpR,WAEvC,IAPL,4DAYF,uBAAKukD,UAAW5hF,KAAO4/G,SACrB,6BACE,yBACE19G,KAAK,WACLm7B,QAASqiD,EACTid,SAAU,EAAEluD,mBACV6mD,EAAwB7mD,EAAcpR,WAEvC,IAPL,uBCtBO,SAASojF,GAAgB1sG,GAAS,QAQ3CukB,qBAAWs8D,IANbK,EAF6C,EAE7CA,eACAC,EAH6C,EAG7CA,kBACAE,EAJ6C,EAI7CA,SACAI,EAL6C,EAK7CA,uBACAL,EAN6C,EAM7CA,MACAI,EAP6C,EAO7CA,oBAGKxc,EAAwBzgD,qBAAW4nD,IAAnCnH,qBAEP,OACE,uBAAK6I,UAAW5hF,KAAO2/G,UACrB,uBAAK/9B,UAAW5hF,KAAO4/G,SACrB,uBAAKh+B,UAAW5hF,KAAO0gH,YAAvB,SACA,0BACE9+B,UAAW5hF,KAAOmgH,OAClBvkH,MAAOu5F,EACPwH,SAAU,EAAEluD,mBAAmB2mD,EAAS3mD,EAAc7yC,QACtD,0BAAQA,MAAM,QAAd,QACA,0BAAQA,MAAM,SAAd,SACA,0BAAQA,MAAM,QAAd,UAIJ,uBAAKgmF,UAAW5hF,KAAO4/G,SACrB,uBAAKh+B,UAAW5hF,KAAO0gH,YAAvB,mBACA,0BACE9+B,UAAW5hF,KAAOmgH,OAClBvkH,MAAOq5F,EACP0H,SAAU,EAAEluD,mBACVymD,EAAkBzmD,EAAc7yC,QAElC,0BAAQA,MAAM,WAAd,WACA,0BAAQA,MAAM,eAAd,iBAIHm9E,GACC,uBAAK6I,UAAW5hF,KAAO4/G,SACrB,6BACE,yBACE19G,KAAK,WACLm7B,QAASk4D,EACToH,SAAU,EAAEluD,mBACV+mD,EAAuB/mD,EAAcpR,WAEtC,IAPL,8CAaJ,uBAAKukD,UAAW5hF,KAAO2gH,cACrB,qBACE/+B,UAAW5hF,KAAO4gH,iBAClB1hH,OAAO,SACPqE,IAAI,sBACJG,KhGnCR,sFgG+BM,sBAMK,IAPP,wBAQwBwB,sB,28BCP9B,MAAM27G,GAAkBxqF,wBAAyB,MAejD,SAASyqF,IAA0B,SAACrsF,IAClC,MAAMy/C,EAAQ57C,qBAAW4nD,IAClB8P,EAAqB13D,qBAAWo3D,IAAhCM,kBACD9mE,EAAWoP,qBAAWq3D,IAErBhgB,EAAiBuE,EAAjBvE,cAL6C,EAqChDskB,GA9BiBt7D,kBACnB,KAAM,CACJu7D,gBAAiB,KAAM,CACrB6sB,iBAAkBpxC,EAAcoxC,iBAChCC,iBAAkBrxC,EAAcqxC,iBAChC7qC,YAAaxG,EAAcwG,YAC3BrG,cAAeH,EAAcG,cAC7B4H,kBAAmBxD,EAAMwD,oBAE3BtwB,UAAYntC,IACV01D,EAAclL,YAAY,gBAAiBxqD,GAC3C01D,EAAclL,YAAY,mBAAoBxqD,GAC9C01D,EAAclL,YAAY,cAAexqD,GACzCi6D,EAAMzP,YAAY,oBAAqBxqD,GAChC,KACL01D,EAAc/3D,eAAe,gBAAiBqC,GAC9C01D,EAAc/3D,eAAe,mBAAoBqC,GACjD01D,EAAc/3D,eAAe,cAAeqC,GAC5Ci6D,EAAMt8D,eAAe,oBAAqBqC,OAIhD,CAAC01D,EAAeuE,KAGhB6sC,EAhCkD,EAgClDA,iBACAC,EAjCkD,EAiClDA,iBACA7qC,EAlCkD,EAkClDA,YACArG,EAnCkD,EAmClDA,cACA4H,EApCkD,EAoClDA,kBApCkD,KA0ChD5+C,mBAAuC,MA1CS,GAwClDmoF,EAxCkD,KAyClDC,EAzCkD,UA2CxBpoF,mBAAwB,MA3CA,GA2C7C82C,EA3C6C,KA2CrCuxC,EA3CqC,UA4CXroF,mBAAwB,MA5Cb,GA4C7CsoF,EA5C6C,KA4C5BC,EA5C4B,UA6CPvoF,mBAAwB,MA7CjB,GA6C7CwoF,EA7C6C,KA6C1BC,EA7C0B,KA+C9CC,EAAcnpF,sBAClB,CAACh6B,EAAmBnD,KAClBmmH,EAAchjH,GACdkjH,EAAgBrmH,GAMP,OAAPmD,GACkB,OAAlByxE,IAC2B,IAA3BA,EAAc8F,UAIV1B,EAAM4F,gBAAgBz7E,IACxB6qB,EAAS,CACPhnB,KAAM,uBACN6+C,QAAS1iD,KAKjB,CAAC6qB,EAAUm4F,EAAeE,EAAiBrtC,EAAOpE,IAG9C2xC,EAAyBppF,sBAC5Bh6B,IACCmjH,EAAY,KAAM,MAClBL,EAAU9iH,IAEZ,CAAC8iH,EAAWK,IAGVP,IAAsBnxC,GACxBu/B,kCAAe,KACb6R,EAAqBpxC,GAErB,MAAME,EACc,OAAlBF,EAAyBA,EAAcE,aAAe,KACxD,GAAoB,MAAhBA,EAAsB,CACxB,MAAM0xC,EAAc1xC,EAAaztE,OAAOmU,OAAO9a,OAAS,KAExD,GAAe,OAAXg0E,IAAoBI,EAAa7iD,IAAIyiD,GAAS,CAChD,IAAI+xC,EAAwB,KACF,OAAtB3xB,IACF2xB,EAAwBztC,EAAM6G,oBAC5BiV,IAIwB,OAA1B2xB,GACA3xC,EAAa7iD,IAAIw0F,GAEjBF,EAAuBE,GAEvBF,EAAuBC,OAOjC,MAAMnrC,EAAiBl+C,sBACrB,IAAM67C,EAAMvE,cAAc4G,iBAC1B,CAACrC,IAEGuC,EAAgBp+C,sBAAY,IAAM67C,EAAMvE,cAAc8G,gBAAiB,CAC3EvC,IAnHkD,KAyHhDkf,GAAyB,0CAA0C,GAzHnB,GAuHlDwuB,EAvHkD,KAwHlDC,EAxHkD,UA0HFzuB,GAChD,oBACA,GA5HkD,GA0H7C0uB,EA1H6C,KA0H1BC,EA1H0B,UA+HHjpF,mBAC/C,MAhIkD,GA+H7CkpF,EA/H6C,KA+HxBC,EA/HwB,UAkIjBnpF,mBAAgB,eAlIC,GAkI7CopF,EAlI6C,KAkI9BxE,EAlI8B,UAmID5kF,mBACjD,MApIkD,GAmI7CqpF,EAnI6C,KAmItBC,EAnIsB,KAuIhDjsC,GACFk5B,kCAAe,KACe,OAAxB2S,GACFC,EAAkB,MAEI,OAApBb,IACFC,EAAc,MACdE,EAAgB,OAEY,OAA1BY,GACFC,EAAkB,QAKxB,MAAMxmH,EAAQ+8B,kBACZ,KAAM,CACJupF,gBACAxE,YAEAqD,mBACAC,mBACA7qC,cACArG,gBACAyG,iBACAE,gBACAiB,oBAEA9H,SACAuxC,UAAWM,EAEXG,wBACAC,2BACAC,oBACAC,uBAEAC,sBACAC,oBAEAb,kBACAE,oBACAE,cAEAW,wBACAC,sBAEF,CACEF,EACAxE,EAEAqD,EACAC,EACA7qC,EACArG,EACAyG,EACAE,EACAiB,EAEA9H,EACAuxC,EACAM,EAEAG,EACAC,EACAC,EACAC,EAEAC,EACAC,EAEAb,EACAE,EACAE,EAEAW,EACAC,IAIJ,OACE,gBAACvB,GAAgBnqF,SAAjB,CAA0B96B,MAAOA,GAC9B64B,GC9RQ,SAAS4tF,GAAiBtuG,GAAS,QAM5CukB,qBAAWuoF,IAJbe,EAF8C,EAE9CA,sBACAE,EAH8C,EAG9CA,kBACAD,EAJ8C,EAI9CA,yBACAE,EAL8C,EAK9CA,qBAEI7tC,EAAQ57C,qBAAW4nD,IAYnB1J,EAA2Byd,GAVYt7D,kBAC3C,KAAM,CACJu7D,gBAAiB,IAAMhgB,EAAMsC,yBAC7BpvB,UAAYntC,IACVi6D,EAAMzP,YAAY,2BAA4BxqD,GACvC,IAAMi6D,EAAMt8D,eAAe,2BAA4BqC,MAGlE,CAACi6D,KAMGouC,EAAiCjqF,sBACrC,EAAEoW,oBACAylC,EAAMsC,yBAA2B/nC,EAAcpR,SAEjD,CAAC62C,IAEGquC,EAA0BlqF,sBAC7BmgB,IACC,MAAMk7C,EAAWpxB,WAAW9pB,EAAM/J,cAAc7yC,OAChDmmH,EACE13G,OAAO0E,MAAM2kF,IAAaA,GAAY,EAAI,EAAIA,IAGlD,CAACquB,IAEGS,EAA8BnqF,sBACjCmgB,IACC,MAAMnb,EAAUmb,EAAM/J,cAAcpR,QACpCwkF,EAAyBxkF,GACrBA,GACwC,OAAtColF,EAA0BvuF,SAC5BuuF,EAA0BvuF,QAAQ05B,SAIxC,CAACi0D,IAGGY,EAA4B5pF,iBAAgC,MAElE,OACE,uBAAK+oD,UAAW5hF,KAAO2/G,UACrB,uBAAK/9B,UAAW5hF,KAAO4/G,SACrB,6BACE,yBACE19G,KAAK,WACLm7B,QAASm5C,EACTmmB,SAAU2lB,IACT,IALL,wDAUF,uBAAK1gC,UAAW5hF,KAAO4/G,SACrB,6BACE,yBACEviF,QAASukF,EACTjlB,SAAU6lB,EACVtgH,KAAK,aACJ,IALL,sBAOS,IACT,yBACE0/E,UAAW5hF,KAAO8qG,MAClBnO,SAAU4lB,EACVluF,IAAKouF,EACLvgH,KAAK,SACLtG,MAAOkmH,IACN,IAfL,SDVNjB,GAAgBxkF,YAAc,kB,m+BE3Cf,SAASqmF,GAAc3uG,GAAS,QACDukB,qBAAW6yE,IAAhDE,EADsC,EACtCA,eAAgBC,EADsB,EACtBA,kBAEhB37B,EADOr3C,qBAAW4nD,IAClBvQ,cAmBP,OALoBskB,GAVYt7D,kBAC9B,KAAM,CACJu7D,gBAAiB,IAAMvkB,EAAcwG,YACrC/uB,UAAYntC,IACV01D,EAAclL,YAAY,cAAexqD,GAClC,IAAM01D,EAAc/3D,eAAe,cAAeqC,MAG7D,CAAC01D,MAGgB07B,GACjBC,GAAkB,GAGfD,EAIE,gBAACsX,GAAD,MAHE,KAMX,SAASA,GAAkB5uG,GAAS,MAC3Bu3F,EAAqBhzE,qBAAW6yE,IAAhCG,kBACD2F,EAAe54E,sBAAY,IAAMizE,GAAkB,GAAQ,CAC/DA,IAHgC,KAMClY,GACjC,yCACA,WARgC,GAM3B8uB,EAN2B,KAMZxE,EANY,KAW5B9pB,EAAW/6D,iBAA8B,MAC/C86D,GAAsBC,EAAUqd,GAEhCz4E,oBAAU,KACiB,OAArBo7D,EAAS1/D,SACX0/D,EAAS1/D,QAAQ05B,SAElB,CAACgmC,IAEJ,IAAIz3E,EAAO,KACX,OAAQ+lG,GACN,IAAK,aACH/lG,EAAO,gBAAC2iG,GAAD,MACP,MACF,IAAK,YACH3iG,EAAO,gBAACqkG,GAAD,MACP,MACF,IAAK,UACHrkG,EAAO,gBAACskG,GAAD,MACP,MACF,IAAK,WACHtkG,EAAO,gBAACkmG,GAAD,MAMX,OACE,uBAAKzgC,UAAW5hF,KAAOmxG,YACrB,uBAAKvvB,UAAW5hF,KAAO4pG,MAAOv1E,IAAKu/D,GACjC,uBAAKhS,UAAW5hF,KAAO4iH,MACrB,gBAAC,GAAD,CACEpF,WAAY0E,EACZ7jH,GAAG,WACHq/G,UAAWA,EACXC,KAAMA,GACNz7G,KAAK,aAEP,uBAAK0/E,UAAW5hF,KAAO6iH,SACvB,gBAAC,GAAD,CAAQh3D,QAASolD,EAAczX,MAAM,yBACnC,gBAAC,GAAD,CAAYt3F,KAAK,YAGrB,uBAAK0/E,UAAW5hF,KAAO8iH,SAAU3mG,KAMzC,MAAMwhG,GAAO,CACX,CACEt/G,GAAI,UACJogH,KAAM,WACNvrC,MAAO,WAET,CACE70E,GAAI,YACJogH,KAAM,MACNvrC,MAAO,aAET,CACE70E,GAAI,aACJogH,KAAM,aACNvrC,MAAO,cAET,CACE70E,GAAI,WACJogH,KAAM,WACNvrC,MAAO,a,gqDC8CX,SAASy5B,KACP,OAAO,uBAAK/qB,UAAW5hF,KAAO2sG,SAAvB,cAGT,MAAMoW,GAAoB,uCAEpBC,GAAe,GAErB,SAASC,KACP,IAAIC,EAAuB,IACvBC,EAAqB,GAEzB,IACE,IAAI/8G,EAAOkhE,EAAoBy7C,IACnB,MAAR38G,IACFA,EAAO3I,KAAKyP,MAAM9G,GAClB88G,EAAuB98G,EAAK88G,qBAC5BC,EAAqB/8G,EAAK+8G,oBAE5B,MAAO99G,IAET,MAAO,CACL69G,uBACAE,YAAY,EACZD,sBAIJ,SAASE,GAAcrhE,EAAoB2E,GACzC,OAAQA,EAAOzkD,MACb,IAAK,yBACH,gBACK8/C,GADL,IAEEohE,WAAYz8D,EAAO5F,UAEvB,IAAK,mCACH,gBACKiB,GADL,IAEEkhE,qBAAsBv8D,EAAO5F,UAEjC,IAAK,iCACH,gBACKiB,GADL,IAEEmhE,mBAAoBx8D,EAAO5F,UAE/B,QACE,OAAOiB,GAcb,SAASshE,GACPC,EACAC,EACAC,GAEsB,OAAlBF,GAA0C,OAAhBC,GAC5BD,EAAcziH,MAAM4hC,YACjB,KAAI8gF,sBACFC,EAAF,KAKQhT,WA5Mf,SAAoB18F,GAClB,MAAM2vG,EAAoB7qF,iBAA2B,MAC/C8qF,EAAmB9qF,iBAA2B,MAFzB,KAIDD,qBACxByqF,GACA,KACAJ,IAPyB,GAIpBjhE,EAJoB,KAIb94B,EAJa,KAUpBg6F,EAA4ClhE,EAA5CkhE,qBAAsBC,EAAsBnhE,EAAtBmhE,mBAE7BzqF,0BAAgB,KACd,MAAM6qF,EAAgBI,EAAiBzvF,QAEvCovF,GACEC,EACA,aACuB,IAAvBL,GAEFI,GAAqBC,EAAe,WAAiC,IAArBJ,IAC/C,IAEH3qF,oBAAU,KACR,MAAMuuD,EAAYt+E,WAAW,KAC3Bg/D,EACEs7C,GACAtlH,KAAKC,UAAU,CACbwlH,uBACAC,yBAGH,KAEH,MAAO,IAAMh+F,aAAa4hE,IACzB,CAACm8B,EAAsBC,IAnCC,MAqCpBC,EAAcphE,EAAdohE,WAKP,IAAI3+B,EACAm/B,EAsDJ,OArDIR,IACFQ,EAAc,IACZ16F,EAAS,CAAChnB,KAAM,yBAA0B6+C,SAAS,IAErD0jC,EAAWjsC,IACT,MAAM+qE,EAAgBI,EAAiBzvF,QACjC2vF,EAAiBH,EAAkBxvF,QAEzC,IAAKkvF,GAAiC,OAAnBS,GAA6C,OAAlBN,EAC5C,OAGF/qE,EAAMryC,iBAEN,MAAMq9G,EA2HZ,SACEK,GAEA,GAAsB,MAAlBA,EAAwB,CAE1B,OADgBA,EAAernB,wBAAxB9mD,MAjDqB,IAkDa,aAAe,WAE1D,OAAO,KAlIiBouE,CAAeD,GAVjB,EAYiBA,EAAernB,wBAA3C7mD,EAZW,EAYXA,OAAQD,EAZG,EAYHA,MAAOyd,EAZJ,EAYIA,KAAME,EAZV,EAYUA,IAEtB0wD,EACY,eAAhBP,EACIhrE,EAAMtI,QAAUijB,EAChB3a,EAAMrI,QAAUkjB,EAYtB,GAHE0wD,EAPkBf,IAQlBe,GANgB,eAAhBP,EACI9tE,EAAQstE,GACRrtE,EAASqtE,IAMc,CAC3B,MAAMgB,EACY,eAAhBR,EAA+B9tE,EAAQC,EACnCsuE,EACY,eAAhBT,EACI,mCACA,iCAINF,GAAqBC,EAAeC,EAFjCO,EAAuBC,EAA2B,KAIrD96F,EAAS,CACPhnB,KAAM+hH,EACNljE,QAASgjE,EAAuBC,OAOtC,gBAAC5Y,GAAD,KACE,gBAAC5D,GAAD,KACE,gBAACmG,GAAD,KACE,uBACEt5E,IAAKqvF,EACL9hC,UAAW5hF,KAAOkkH,WAClBplB,YAAara,EACbsU,aAAc6qB,EACdO,UAAWP,GACX,gBAAC,WAAD,KACE,uBAAKvvF,IAAKsvF,EAAkB/hC,UAAW5hF,KAAOokH,aAC5C,gBAAC,GAAD,OAEF,uBAAKxiC,UAAW5hF,KAAOqkH,kBACrB,uBAAKrrB,YAzEG,IACpB9vE,EAAS,CAAChnB,KAAM,yBAA0B6+C,SAAS,IAwEN6gC,UAAW5hF,KAAOskH,aAErD,uBAAK1iC,UAAW5hF,KAAOy8G,yBACrB,gBAAClE,GAAD,KACE,gBAAC,WAAD,CAAUnuD,SAAU,gBAAC,GAAD,OAClB,gBAAC,GAAD,SAIN,gBAAC,GAAD,MACA,gBAAC,GAAD,cC/JC,SAASm6D,KACtB,MAAMrwC,EAAQ57C,qBAAW4nD,IADwB,EAET5nD,qBAAWuoF,IAA5CE,EAF0C,EAE1CA,iBAAkB5qC,EAFwB,EAExBA,YAClBxG,EAAiBuE,EAAjBvE,cAED7K,EAAQzsC,sBAAY,IAAMs3C,EAAc7K,QAAS,CAAC6K,IAExD,OACE,gBAAC,GAAD,CACElxC,SAAU03C,IAAgB4qC,EAC1Bl1D,QAASiZ,EACT00B,MAAM,wBACN,gBAAC,GAAD,CAAYt3F,KAAK,W,wBCfR,SAASsiH,GAAazwG,GACnC,OACE,uBAAK6tE,UAAW5hF,KAAOwkH,cACrB,uBAAK5iC,UAAW5hF,KAAOiwG,QAAvB,0DAGA,uBAAKruB,UAAW5hF,KAAOykH,eAAvB,0D,wBCYS,SAASC,IAAU,MAChC9sE,EADgC,OAEhCjC,EAFgC,SAGhCgvE,GAAW,EAHqB,MAIhCzxC,EAJgC,QAKhCrnB,EALgC,aAMhCitC,EANgC,aAOhCC,EAPgC,cAQhCE,EARgC,UAShC2rB,EATgC,MAUhClvE,EAVgC,EAWhCxjB,EAXgC,EAYhC+C,IAEA,OACE,qBAAG2sD,UAAW5hF,KAAO6kH,MAAO/hH,UAAY,aAAYovB,KAAK+C,MACvD,wBACEygB,MAAOA,EACPC,OAAQA,EACRwiD,KAAMvgD,EACNiU,QAASA,EACTitC,aAAcA,EACdC,aAAcA,EACdE,cAAeA,EACfrX,UAAW5hF,KAAO68F,KAClB/7F,MAAO,CACL0gC,QAASmjF,EAAW,GAAM,KAG7BjvE,GA/BmB,IAgClB,iCACEA,MAAOA,EACPC,OAAQA,EACRisC,UAAW5hF,KAAO8kH,cAClBhkH,MAAO,CACLgkF,YAAa5yD,EAAI,GAAKA,EAAI,EAC1BsP,QAASmjF,EAAW,IAAO,EAC3B72D,QAASpY,EAvCK,GAuCuB,OAAS,SAEhDzgB,EAAG,GACH,uBAAK2sD,UAAW5hF,KAAO+kH,IAAKjkH,MAAO8jH,GAChC1xC,KC7Cb,SAAS8xC,IAAyB,KAAC5+G,EAAD,MAAOlC,EAAP,MAAcpD,IAAe,MAE3DwyE,EAQEltE,EARFktE,UACAklB,EAOEpyF,EAPFoyF,oBACAysB,EAME7+G,EANF6+G,oBACAC,EAKE9+G,EALF8+G,OACAC,EAIE/+G,EAJF++G,kBACAC,EAGEh/G,EAHFg/G,uBACA5D,EAEEp7G,EAFFo7G,YACA9rE,EACEtvC,EADFsvC,MAEK48B,EAA0CgB,EAA1ChB,gBAAiBG,EAAyBa,EAAzBb,gBAAiBF,EAAQe,EAARf,KAElChxC,EAAcjJ,qBAAWs8D,IAAzBrzD,WAEDmgE,EAAcrpE,sBAClB,CAACmgB,EAA+Bn6C,EAAYnD,KAC1Cs9C,EAAM1J,kBACN0yE,EAAYnjH,EAAInD,IAElB,CAACsmH,IAQG9hB,EAAmB,KACvBulB,KAOI5xD,EAAMnlC,SAASptB,EAAMuyD,IAAK,IAE1BgyD,EAAM9yC,EAAKruE,GAEXohH,EAAqBJ,EACH,OAAtBC,EAA6BA,EAAkB/pG,OAAS,EACxDs6B,GAGF,OACE,gBAAC,WAAD,KACG2vE,EAAIroH,IAAIm2E,IAAa,MAElBJ,EAOEI,EAPFJ,UACA10E,EAME80E,EANF90E,GACA60E,EAKEC,EALFD,MACAh4E,EAIEi4E,EAJFj4E,KACAkgB,EAGE+3D,EAHF/3D,OACA03D,EAEEK,EAFFL,aACAxC,EACE6C,EADF7C,iBAGIi1C,EAAaL,EAAO9pG,EAAQs6B,GAC5B8vE,EAAYN,EAAO50C,EAAkB56B,GAI3C,GAAI8vE,ECjFqB,EDkFvB,OAAO,KAIT,GACED,EAAaC,EAAYF,GACzBC,EAAaD,EAAqB5vE,EAElC,OAAO,KAGT,IAAIkC,EAAQ,4BACR6tE,EAAY,kDAShB,OARI1yC,GACFn7B,EAAQ+2B,GAAiBmE,EAAeL,GACxCgzC,EAAY,qCACHnzC,EAAgBnlD,IAAI9uB,KAC7Bu5C,EAAQ,0CACR6tE,EAAY,gDAIZ,gBAAC,GAAD,CACE7tE,MAAOA,EACPjC,OAAQpU,EACRojF,SAAUzgH,EAAQkhH,EAClBlpH,IAAKmC,EACL60E,MAAOA,EACPrnB,QAASrT,GAASkpD,EAAYlpD,EAAOn6C,EAAInD,GACzC49F,aAAc,IAtEE4sB,KAA4B,MAC7CrnH,EAAYqnH,EAAZrnH,GAAInD,EAAQwqH,EAARxqH,KACXs9F,EAAoB,CAACn6F,KAAInD,UAoEGokG,CAAiBnsB,GACrC4lB,aAAc2G,EACdklB,UAAW,CAAChtE,MAAO6tE,GACnB/vE,MAAO8vE,EACPtzF,EAAGqzF,EAAaD,EAChBrwF,EAAGo+B,OAQA70D,sBAAYwmH,GAA0B12B,I,oBEjHtC,SAASq3B,IAAY,QAACj0C,IAAiB,MAC7C/B,EAAiBr3C,qBAAW4nD,IAA5BvQ,cAD6C,EAEdr3C,qBAAWuoF,IAA1CjxC,EAF6C,EAE7CA,OAAQoyC,EAFqC,EAErCA,oBAMf,GAA4B,OAAxBA,EACF,OAAO,KAT2C,MAY7CtsC,EAAsB/F,EAAcuC,cACvCtC,EACFoyC,GAFKtsC,mBAKP,GAA2B,OAAvBA,EACF,OAAO,KAGT,MAAMkwC,EAAoBlwC,EAAmBl6E,IAAIk2E,GACjD,GAAyB,MAArBk0C,EACF,OAAO,KAGT,GAAIA,EAAkBC,aACpB,OACE,uBAAKjkC,UAAW5hF,KAAOi2B,WACrB,yBAAO2rD,UAAW5hF,KAAOg5G,OAAzB,wBACA,uBAAKp3B,UAAW5hF,KAAOs2G,MAAvB,mDAON,MAAMwP,EAAU,GAyEhB,OAvEkC,IAA9BF,EAAkBpyF,QACpBsyF,EAAQxnH,KACN,uBAAKpC,IAAI,UAAU0lF,UAAW5hF,KAAOs2G,MAArC,sBAKmC,iBAA9BsP,EAAkBpyF,SACK,OAA9BoyF,EAAkBpyF,SACmB,IAArCoyF,EAAkBpyF,QAAQp1B,QAE1B0nH,EAAQxnH,KACN,uBAAKpC,IAAI,UAAU0lF,UAAW5hF,KAAOs2G,MAArC,qBAEGsP,EAAkBpyF,QAAQx2B,IAAId,GAC7B,wBAAMA,IAAKA,EAAK0lF,UAAW5hF,KAAOo9G,KAC/BlhH,MAOP0pH,EAAkBG,gBACpBD,EAAQxnH,KACN,uBAAKpC,IAAI,QAAQ0lF,UAAW5hF,KAAOs2G,MAAnC,oBAO0B,OAA5BsP,EAAkBryF,OACiB,IAAnCqyF,EAAkBryF,MAAMn1B,QAExB0nH,EAAQxnH,KACN,uBAAKpC,IAAI,QAAQ0lF,UAAW5hF,KAAOs2G,MAAnC,mBAEGsP,EAAkBryF,MAAMv2B,IAAId,GAC3B,wBAAMA,IAAKA,EAAK0lF,UAAW5hF,KAAOo9G,KAC/BlhH,MAQmB,OAA5B0pH,EAAkB5jE,OACiB,IAAnC4jE,EAAkB5jE,MAAM5jD,QAExB0nH,EAAQxnH,KACN,uBAAKpC,IAAI,QAAQ0lF,UAAW5hF,KAAOs2G,MAAnC,mBAEGsP,EAAkB5jE,MAAMhlD,IAAId,GAC3B,wBAAMA,IAAKA,EAAK0lF,UAAW5hF,KAAOo9G,KAC/BlhH,MAOY,IAAnB4pH,EAAQ1nH,QACV0nH,EAAQxnH,KACN,uBAAKpC,IAAI,UAAU0lF,UAAW5hF,KAAOs2G,MAArC,mCAOF,uBAAK10B,UAAW5hF,KAAOi2B,WACrB,yBAAO2rD,UAAW5hF,KAAOg5G,OAAzB,wBACC8M,G,wBCxGQ,SAASE,IAAiB,UAACC,IAAmB,MACpDt2C,EAAiBr3C,qBAAW4nD,IAA5BvQ,cADoD,EAErBr3C,qBAAWuoF,IAA1CjxC,EAFoD,EAEpDA,OAAQoyC,EAF4C,EAE5CA,oBAER3jH,EAAY4nH,EAAZ5nH,GAAInD,EAAQ+qH,EAAR/qH,KAGLgrH,EAFmBv2C,EAAlBw2C,eAE8BC,gBAAgB,CACnD10C,QAAWrzE,EACXuxE,OAAUA,IAGZ,IAAIy2C,EAAqB,KACrB1rH,EAAI,EACR,IAAKA,EAAI,EAAGA,EAAIurH,EAAc9nH,OAAQzD,IAAK,CACzC,MAAM+0E,EAAcw2C,EAAcvrH,GAClC,GAAIqnH,IAAwBtyC,EAAa,SAInCC,EAAcuC,cAAgBtC,EAAuBF,GAFvDuC,EAFqC,EAErCA,qBACAE,EAHqC,EAGrCA,mBAEIU,EAAiBZ,EAAqBz2E,IAAI6C,IAAO,EACjDy0E,EAAeX,EAAmB32E,IAAI6C,IAAO,EAEnDgoH,EACE,uBAAKnqH,IAAKwzE,EAAakS,UAAW5hF,KAAOsmH,eACtCx3C,GAAegE,GADlB,SACuChE,GAAe+D,GADtD,MAKF,OAIJ,OACE,gBAAC,WAAD,KACE,uBAAK+O,UAAW5hF,KAAOumH,SACrB,uBAAK3kC,UAAW5hF,KAAOi2B,WAAY/6B,IAErC,uBAAK0mF,UAAW5hF,KAAO8iH,SACpBuD,GAAsB,8CACvB,gBAAC,GAAD,CAAa30C,QAAWrzE,M,wBC/DhC,MAAMmoH,GAAsB,CAAC7wE,OAAQ,EAAG8wE,OAAQ,EAAGC,OAAQ,EAAGhxE,MAAO,GAEtD,SAASgpD,IAAQ,SAACjqE,EAAD,MAAWy+C,IACzC,MAAMq1B,EAAe1vE,iBAAO,MACtBynE,EAAaznE,iBAAO,MAGpB8tF,EAAyBnuE,IAC7B,MAAMoU,EAAU0zC,EAAWpsE,QAC3B,GAAe,MAAX04B,EAAiB,CAEnB,MAFmB,EAiCzB,SAA4BA,EAASg6D,GAAe,MAC3CjxE,EAAiCixE,EAAjCjxE,OAAQ8wE,EAAyBG,EAAzBH,OAAQC,EAAiBE,EAAjBF,OAAQhxE,EAASkxE,EAATlxE,MAC/B,IAAI2d,EAAM,EACNF,EAAO,EAIPE,EAFAqzD,EARiB,EAQS95D,EAAQ80B,cAAgB/rC,EAChD+wE,EATe,EASW95D,EAAQ80B,aAAe,EAC1CglC,EAAS95D,EAAQ80B,aAVT,EAUV,KAED,MAGCglC,EAfU,EAeZ,KAKLvzD,EAFAszD,EAlBiB,EAkBS75D,EAAQ60B,aAAe/rC,EAC/C+wE,EAnBe,EAmBW75D,EAAQ60B,YAAc,EACxCglC,EAAS75D,EAAQ60B,YApBV,EAoBT,KAED,MAGCglC,EAASI,GAAX,KAGV,MAAO,CAAC1zD,OAAME,OAtDUyzD,CAAmBl6D,EA0D7C,SACEm6D,EACAC,GAEA,GAA0B,OAAtBD,EAA4B,CAE9B,IAAIE,EAAkBF,EACtB,KAAwC,MAAjCE,EAAgBrwC,eACkB,aAAnCqwC,EAAgBnmH,MAAM8hF,UAGxBqkC,EAAkBA,EAAgBrwC,cAPR,QAWKqwC,EAAgBzqB,wBAA5C7mD,EAXuB,EAWvBA,OAAQwd,EAXe,EAWfA,KAAME,EAXS,EAWTA,IAAK3d,EAXI,EAWJA,MAEpB+wE,EAASO,EAAW92E,QAAUijB,EAC9BuzD,EAASM,EAAW72E,QAAUkjB,EAEpC,MAAO,CAAC1d,SAAQ8wE,SAAQC,SAAQhxE,SAEhC,OAAO8wE,GAlFiBU,CAAiB3e,EAAar0E,QAASskB,IAEtD2a,EAJY,EAIZA,KAAME,EAJM,EAINA,IAEbzG,EAAQ9rD,MAAMqyD,KAAOA,EACrBvG,EAAQ9rD,MAAMuyD,IAAMA,IAQlB8zD,EAA6B,OAAVj0C,EAAiBlzE,KAAOg0G,OAAS,GAE1D,OACE,uBACEpyB,UAAW5hF,KAAOonH,UAClBtoB,YATiBtmD,IACnBmuE,EAAsBnuE,IASpBnkB,IAAKk0E,GACL,uBAAKl0E,IAAKisE,EAAY1e,UAAY,GAAE5hF,KAAO0+F,WAAWyoB,KACnDj0C,GAEFz+C,G,yiDCDQ,SAAS4yF,GAA0BtzG,GAAS,MAClD47D,EAAiBr3C,qBAAW4nD,IAA5BvQ,cADkD,EAENr3C,qBACjDuoF,IADKjxC,EAFkD,EAElDA,OAAQoyC,EAF0C,EAE1CA,oBAAqBR,EAFqB,EAErBA,YAG7B2E,EAAkBx2C,EAAlBw2C,eAEDmB,EAAuBjvF,sBAC3BmgB,IACEA,EAAM1J,kBACN0yE,EAAY,KAAM,OAEpB,CAACA,IAGH,IAAI/wC,EAAgC,KAChC6C,EAA8B,KAclC,OAb4B,OAAxB0uC,IACFvxC,EAAa01C,EAAe12C,cAAc,CACxCC,YAAasyC,EACbpyC,OAAUA,IAGZ0D,EAAY6yC,EAAe3yC,uBAAuB,CAChD9D,YAAasyC,EACbvxC,aACAb,OAAUA,KAII,MAAda,GAAmC,MAAb6C,GAAqBA,EAAUC,MAAQ,EAE7D,uBAAKqO,UAAW5hF,KAAOonH,UAAWv7D,QAASy7D,GACzC,gBAAC,GAAD,KACG,EAAE3xE,SAAQD,WAGT,gBAAC,GAAD,CACE49B,UAAaA,EACb7C,WAAcA,EACd96B,OAAQA,EACRD,MAAOA,MAOV,gBAAC,GAAD,MAWX,SAAS6xE,IAAiB,UAACj0C,EAAD,WAAY7C,EAAZ,OAAwB96B,EAAxB,MAAgCD,IAAe,WAInE5c,mBAAkC,MAJiC,GAErE0uF,EAFqE,KAGrEC,EAHqE,KAKhElmF,EAAcjJ,qBAAWs8D,IAAzBrzD,WALgE,EAMhCjJ,qBAAWuoF,IAA3CW,EANgE,EAMhEA,YAAaJ,EANmD,EAMnDA,gBANmD,EAUnE9sB,KAFFC,EARqE,EAQrEA,uBACAI,EATqE,EASrEA,4BAGIywB,EAAyBzsF,kBAAgB,KAC7C,GAAwB,OAApByoF,EACF,OAAO,EAIT,MAAM7tC,EAAQD,EAAUjB,aAAa72E,IAAI4lH,GACzC,YAAiBp/G,IAAVuxE,EAAsBA,EAAQ,EAAI,GACxC,CAACD,EAAW8tC,IAET+D,EAAoBxsF,kBAAQ,IACR,OAApByoF,GAEA9tC,EAAUf,KAAK6yC,GAAwBxrG,KACrCu5D,GAAaA,EAAU90E,KAAO+iH,IAI7B,KACN,CAAC9tC,EAAW8tC,EAAiBgE,IAE1B1Y,EAA0Br0E,sBAC9B,EAAEh6B,KAAInD,WACJq5F,EAAuBl2F,GACvBopH,EAAoB,CAACppH,KAAInD,UAE3B,CAACq5F,IAGGmzB,EAA0BrvF,sBAAY,KAC1Cs8D,IACA8yB,EAAoB,OACnB,CAAC9yB,IAEEhJ,EAAWhzD,kBACf,KAAM,CACJ26C,YACAklB,oBAAqBkU,EACrBuY,oBAAqByC,EACrBxC,OAAQh2C,GACN,EACsB,OAAtBi2C,EACIA,EAAkB70C,iBAClBgD,EAAUF,aACd,EACA19B,GAEFyvE,oBACAC,yBACA5D,cACA9rE,UAEF,CACE49B,EACAo5B,EACAgb,EACAvC,EACAC,EACA5D,EACA9rE,IAKEiyE,EAAehvF,kBACnB,IACuB,OAArB6uF,EACE,gBAAC,GAAD,CAAkBvB,UAAWuB,IAC3B,KACN,CAACA,IAGH,OACE,gBAAC,GAAD,CAASt0C,MAAOy0C,GACd,gBAACh6B,GAAD,CACEh4C,OAAQA,EACR81C,iBAAkBohB,GAClB3hB,UAAW5X,EAAUC,MACrBoY,SAAUA,EACVlC,SAAUloD,EACVmU,MAAOA,GACNsvE,KAMT,MAAMnY,GAAmB91E,qBAAW,CAAC,EAAqB1C,KAAtB,IAAEI,EAAF,EAAEA,SAAawpE,EAAf,0BAClC,0BAAK5pE,IAAKA,GAAS4pE,GACjB,4BACE,2BACE5/F,GAAG,sBACHupH,aAAa,iBACblyE,MAAM,IACNC,OAAO,KACP,wBACE16C,EAAE,oCACF2mF,UAAW5hF,KAAO6nH,gBAIvBpzF,KC1LL,SAASqzF,IAAqB,KAAC1hH,EAAD,MAAOlC,EAAP,MAAcpD,IAAe,MAEvDwyE,EAOEltE,EAPFktE,UACAklB,EAMEpyF,EANFoyF,oBACAysB,EAKE7+G,EALF6+G,oBACAC,EAIE9+G,EAJF8+G,OACA6C,EAGE3hH,EAHF2hH,mBACAvG,EAEEp7G,EAFFo7G,YACA9rE,EACEtvC,EADFsvC,MAGIvqB,EAAOmoD,EAAUpD,MAAMhsE,GAEtBq9B,EAAcjJ,qBAAWs8D,IAAzBrzD,WAEDmgE,EAAcrpE,sBAClBmgB,IACEA,EAAM1J,kBADC,MAEAzwC,EAAY8sB,EAAZ9sB,GAAInD,EAAQiwB,EAARjwB,KACXsmH,EAAYnjH,EAAInD,IAElB,CAACiwB,EAAMq2F,IAgBHnuD,EAAMnlC,SAASptB,EAAMuyD,IAAK,IAEhC,OACE,gBAAC,GAAD,CACEzb,MAAO+2B,GAAiBxjD,EAAKvvB,MAAQ03E,EAAUlE,UAC/Cz5B,OAAQpU,EACRojF,SAAUzgH,EAAQ6jH,EAClB7rH,IAAKivB,EAAK9sB,GACV60E,MAAO/nD,EAAK+nD,MACZrnB,QAAS61C,EACT5I,aAvBqB,KAAM,MACtBz6F,EAAY8sB,EAAZ9sB,GAAInD,EAAQiwB,EAARjwB,KACXs9F,EAAoB,CAACn6F,KAAInD,UAsBvB69F,aAnBqB,KACvBksB,KAmBEvvE,MAAOhuB,KAAKlS,IL9DS,EK8DQ0vG,EAAO/5F,EAAKvvB,MAAO85C,IAChDxjB,EAAG,EACH+C,EAAGo+B,IAKM70D,sBAAYspH,GAAsBx5B,I,+9BC1ClC,SAAS05B,GAAsBj0G,GAAS,MAC9C47D,EAAiBr3C,qBAAW4nD,IAA5BvQ,cAD8C,EAEFr3C,qBACjDuoF,IADKjxC,EAF8C,EAE9CA,OAAQoyC,EAFsC,EAEtCA,oBAAqBR,EAFiB,EAEjBA,YAG7B2E,EAAkBx2C,EAAlBw2C,eAEDmB,EAAuBjvF,sBAC3BmgB,IACEA,EAAM1J,kBACN0yE,EAAY,KAAM,OAEpB,CAACA,IAGH,IAAI/wC,EAAgC,KAChC6C,EAA8B,KAclC,OAb4B,OAAxB0uC,IACFvxC,EAAa01C,EAAe12C,cAAc,CACxCC,YAAasyC,EACbpyC,OAAUA,IAGZ0D,EAAY6yC,EAAeryC,mBAAmB,CAC5CpE,YAAasyC,EACbvxC,aACAb,OAAUA,KAII,MAAda,GAAmC,MAAb6C,GAAqBA,EAAUpD,MAAM9xE,OAAS,EAEpE,uBAAKwjF,UAAW5hF,KAAOonH,UAAWv7D,QAASy7D,GACzC,gBAAC,GAAD,KACG,EAAE3xE,SAAQD,WACT,gBAAC,GAAD,CACE49B,UAAaA,EACb7C,WAAcA,EACd96B,OAAQA,EACRD,MAAOA,MAOV,gBAAC,GAAD,MAWX,SAASuyE,IAAa,UAAC30C,EAAD,WAAY7C,EAAZ,OAAwB96B,EAAxB,MAAgCD,IAAe,WAI/D5c,mBAAkC,MAJ6B,GAEjE0uF,EAFiE,KAGjEC,EAHiE,KAK5DlmF,EAAcjJ,qBAAWs8D,IAAzBrzD,WAL4D,EAM5BjJ,qBAAWuoF,IAA3CO,EAN4D,EAM5DA,gBAAiBI,EAN2C,EAM3CA,YAN2C,EAU/DltB,KAFFC,EARiE,EAQjEA,uBACAI,EATiE,EASjEA,4BAGIozB,EAAqBpvF,kBACzB,IAAMuvF,GAAa50C,EAAW8tC,GAC9B,CAAC9tC,EAAW8tC,IAGR1U,EAA0Br0E,sBAC9B,EAAEh6B,KAAInD,WACJq5F,EAAuBl2F,GACvBopH,EAAoB,CAACppH,KAAInD,UAE3B,CAACq5F,IAGGmzB,EAA0BrvF,sBAAY,KAC1Cs8D,IACA8yB,EAAoB,OACnB,CAAC9yB,IAEEhJ,EAAWhzD,kBACf,KAAM,CACJ26C,YACAklB,oBAAqBkU,EACrBuY,oBAAqByC,EACrBxC,OAAQh2C,GAAM,EAAGoE,EAAUpD,MAAM63C,GAAoBnsH,MAAO,EAAG85C,GAC/D0rE,kBACA2G,qBACAvG,cACA9rE,UAEF,CACE49B,EACAo5B,EACAgb,EACAtG,EACA2G,EACAvG,EACA9rE,IAKEiyE,EAAehvF,kBACnB,IACuB,OAArB6uF,EACE,gBAAC,GAAD,CAAkBvB,UAAWuB,IAC3B,KACN,CAACA,IAGH,OACE,gBAAC,GAAD,CAASt0C,MAAOy0C,GACd,gBAACh6B,GAAD,CACEh4C,OAAQA,EACR81C,iBAAiB,MACjBP,UAAW5X,EAAUpD,MAAM9xE,OAC3ButF,SAAUA,EACVlC,SAAUloD,EACVmU,MAAOA,GACNoyE,KAMT,MAAMI,GAAe,CAAC50C,EAAsBj1E,KAC1C,GAAW,OAAPA,EACF,OAAO,EAF+D,MAIjE6xE,EAASoD,EAATpD,MACP,IAAK,IAAIhsE,EAAQ,EAAGA,EAAQgsE,EAAM9xE,OAAQ8F,IACxC,GAAIgsE,EAAMhsE,GAAO7F,KAAOA,EACtB,OAAO6F,EAGX,OAAO,G,wBC9JT,SAASikH,IAAqB/hH,KAAMulF,EAAP,MAAiBznF,EAAjB,MAAwBpD,IAAe,MAEhEwyE,EAQEqY,EARFrY,UACAvD,EAOE4b,EAPF5b,YACAq4C,EAMEz8B,EANFy8B,WACAlD,EAKEv5B,EALFu5B,OACA/C,EAIEx2B,EAJFw2B,sBACAF,EAGEt2B,EAHFs2B,kBACAG,EAEEz2B,EAFFy2B,kBACA1E,EACE/xB,EADF+xB,UAGK3rC,EAAkChC,EAAlCgC,WAAYwD,EAAsBxF,EAAtBwF,mBACZ9B,EAAwDH,EAAxDG,aAAcC,EAA0CJ,EAA1CI,oBAAqBC,EAAqBL,EAArBK,kBAEpC00C,EAAc50C,EAAavvE,GACjC,GAAmB,MAAfmkH,EACF,MAAMrnH,MAAO,+BAA8BkD,GAG7C,MAAMw9F,EAAcrpE,sBAAY,KAC9B+pF,EAAkBiG,EAAYhqH,KAC7B,CAACgqH,EAAajG,IAEXkG,EAAU/yC,EAAmB/5E,IAAI6sH,EAAYhqH,KAAO,GAEpDy5D,EAAYuwD,EAAYp5C,UACxBs5C,EAAW70C,EAOjB,OACE,uBACEkO,UACEugC,IAA0BkG,EAAYhqH,GAClC2B,KAAOwoH,oBACPxoH,KAAOyoH,YAEb58D,QAAS61C,EACT5gG,MAAOA,GACP,uBACE8gF,UAAW5hF,KAAOo2G,KAClBt1G,MAAO,CAAC4nH,SAAUN,GAClB5uB,MAAO6uB,EAAYntH,MAClBmtH,EAAYntH,MAEf,uBACE0mF,UAAW5hF,KAAO2oH,gBAClB7nH,MAAO,CACLqyD,KAAMi1D,EAAalD,EAAOptD,EAAW,GACrCpiB,MAAOwvE,EAAOqD,EAAWzwD,EAAW,MAGvCwwD,EAAQtrH,IAAI0yE,GACX,uBACEkS,UAAW5hF,KAAO4oH,UAClB1sH,IAAKwzE,EACL7jB,QAAS,IA/BG6jB,KAClBguC,EAAU,eACVuE,EAAkBvyC,IA6BGm5C,CAAWn5C,GAC1B5uE,MAAO,CACLgoH,gBAAiBn6C,GACfjnD,KAAK9R,IACH,EACA8R,KAAKlS,IACH,EACAu8D,EAAWrC,GAAaX,SAAW4E,KAElC,GAEPxgB,KAAMi1D,EAAalD,EAAOnzC,EAAWrC,GAAaT,UAAW,QAQ1DzwE,sBAAY2pH,GAAqB75B,I,oBC3FjC,SAASy6B,IAAe,OACrCpzE,EADqC,MAErCD,IAKA,OACE,uBAAKksC,UAAW5hF,KAAO+oH,eAAgBjoH,MAAO,CAAC60C,SAAQD,UACrD,qBAAGksC,UAAW5hF,KAAOiwG,QAArB,kCACA,yBACE,qBACEruB,UAAW5hF,KAAO0kG,KAClBhhG,KAAK,+CACLH,IAAI,sBACJrE,OAAO,UAJT,wD,wBCYO,SAAS8pH,GAAsBj1G,GAC5C,OACE,uBAAK6tE,UAAW5hF,KAAOonH,WACrB,gBAAC,GAAD,KACG,EAAEzxE,SAAQD,WAAW,gBAAC,GAAD,CAAcC,OAAQA,EAAQD,MAAOA,MAMnE,SAASuzE,IAAa,OAACtzE,EAAD,MAASD,IAA2C,QAOpEpd,qBAAWuoF,IALbjxC,EAFsE,EAEtEA,OACAuyC,EAHsE,EAGtEA,sBACAC,EAJsE,EAItEA,kBACAH,EALsE,EAKtEA,kBACAvE,EANsE,EAMtEA,UAEK/tC,EAAiBr3C,qBAAW4nD,IAA5BvQ,cACAw2C,EAAkBx2C,EAAlBw2C,eAEDp2C,EAAcJ,EAAcmC,eAAiBlC,GAE7C0D,EAAY6yC,EAAevyC,yBAAyB,CACxDhE,OAAUA,IAGL6D,EAAgBH,EAAhBG,aAEDosB,EAAgBxnE,sBACpBmgB,IACE,IAAIt0C,EACJ,OAAQs0C,EAAMt8C,KACZ,IAAK,YACHgI,EAAQuvE,EAAaid,UACnB23B,GAAeA,EAAYhqH,KAAO8jH,GAEpCC,EAAkB16F,KAAK9R,IAAI69D,EAAar1E,OAAS,EAAG8F,EAAQ,IAC5Ds0C,EAAM1J,kBACN,MACF,IAAK,UACH5qC,EAAQuvE,EAAaid,UACnB23B,GAAeA,EAAYhqH,KAAO8jH,GAEpCC,EAAkB16F,KAAKlS,IAAI,EAAGtR,EAAQ,IACtCs0C,EAAM1J,oBAMZ,CAAC2kC,EAAc0uC,EAAuBC,IAGlCz2B,EAAWhzD,kBAAkB,KACjC,MAAMuwF,EAAwBh7F,SAC5By0D,iBAAkB/jF,SAASwI,MAAY4uF,iBACrC,6BAEF,IAEImzB,EAAwBj7F,SAC5By0D,iBAAkB/jF,SAASwI,MAAY4uF,iBACrC,6BAEF,IAGIoyB,EAAa1gG,KAAK9R,IAAIuzG,EAAuBzzE,EAAQ,GACrD0zE,EAAgB1zE,EAAQ0yE,EAAac,EAE3C,MAAO,CACL51C,YACAvD,cACAq4C,aACAlD,OAAQh2C,GAAM,EAAGoE,EAAUI,oBAAqB,EAAG01C,GACnDjH,wBACAF,oBACAG,oBACA1E,cAED,CACDpqC,EACAvD,EACAoyC,EACAF,EACAG,EACA1E,EACAhoE,IAKF,OAA4B,IAAxB+9B,EAAar1E,OACR,gBAAC,GAAD,CAAgBu3C,OAAQA,EAAQD,MAAOA,IAI9C,uBAAKksC,UAAW5hF,KAAOqpH,YAAarqB,UAAWa,EAAegC,SAAU,GACtE,gBAAClU,GAAD,CACEh4C,OAAQA,EACRu1C,UAAWzX,EAAar1E,OACxButF,SAAUA,EACVlC,SAAU,GACV/zC,MAAOA,GACNyyE,K,wBC9HM,SAASmB,GAAav1G,GAAS,QACDukB,qBAAWuoF,IAA/C/wC,EADqC,EACrCA,cAAeF,EADsB,EACtBA,OAAQuxC,EADc,EACdA,UAExBlhH,EAAU,GACM,OAAlB6vE,GACFA,EAAcE,aAAaxtE,QAAQ,CAACutE,EAAa1xE,KAC/C4B,EAAQ3B,KACN,0BAAQpC,IAAKmC,EAAIzC,MAAOyC,GACrB0xE,EAAY1zC,gBAMrB,MAAM6lE,EAAe7pE,sBACnB,EAAEoW,oBACA0yE,EAAUjzF,SAASugB,EAAc7yC,MAAO,MAE1C,CAACulH,IAGH,OAAsB,OAAlBrxC,GAA0BA,EAAcE,aAAajkB,MAAQ,EAExD,KAIP,gBAAC,WAAD,KACE,uBAAK61B,UAAW5hF,KAAO6iH,SACvB,0BAAQjnH,MAAOg0E,EAAQ+sB,SAAUuF,GAC9BjiG,I,wBCxBM,SAASspH,IAAa,SAAC9qF,IAAkB,QACDnG,qBACnDuoF,IADK1qC,EAD+C,EAC/CA,YAAaI,EADkC,EAClCA,eAAgBE,EADkB,EAClBA,cAIpC,IAAImL,EAAY5hF,KAAOwpH,qBAOvB,OANI/qF,EACFmjD,EAAY5hF,KAAOypH,qBACVtzC,IACTyL,EAAY5hF,KAAO0pH,oBAInB,gBAAC,GAAD,CACE9nC,UAAWA,EACXnjD,SAAUA,EACVotB,QAASsqB,EAAcM,EAAgBF,EACvCijB,MAAOrjB,EAAc,iBAAmB,mBACxC,gBAAC,GAAD,CAAYj0E,KAAK,YClBR,SAASynH,KACtB,MAAM11C,EAAS37C,qBAAW2nD,IACpB/L,EAAQ57C,qBAAW4nD,IAFsB,EAwB3C+T,GApBiBt7D,kBACnB,KAAM,CACJu7D,gBAAiB,KAAM,CACrB1d,yBAA0BtC,EAAMsC,yBAChCsC,yBAA0B5E,EAAM4E,2BAElC1xB,UAAYntC,IACVi6D,EAAMzP,YAAY,2BAA4BxqD,GAC9Ci6D,EAAMzP,YAAY,2BAA4BxqD,GACvC,KACLi6D,EAAMt8D,eAAe,2BAA4BqC,GACjDi6D,EAAMt8D,eAAe,2BAA4BqC,OAIvD,CAACi6D,KAGDsC,EAtB6C,EAsB7CA,yBACAsC,EAvB6C,EAuB7CA,yBAGI8wC,EAAmBvxF,sBAAY,KAOnC47C,EAAO5vD,KAAK,mBAAoBmyD,IAC/B,CAACvC,EAAQuC,IAEZ,OAAKsC,EAKH,gBAAC,GAAD,CACEr6C,UAAWy1C,EAAMwD,kBACjB7rB,QAAS+9D,EACTpwB,MAAM,8BACN,gBAAC,GAAD,CAAYt3F,KAAK,YARZ,K,wBChCI,SAAS2nH,KAA+B,QACRvxF,qBAAWuoF,IAAjD1qC,EAD8C,EAC9CA,YAAarG,EADiC,EACjCA,cAAeF,EADkB,EAClBA,OAE5BD,EADOr3C,qBAAW4nD,IAClBvQ,cAED66B,EAAW3xE,iBAAgC,MAC3CixF,EAAcjxF,iBAAiC,MAEpC+jF,EAAuBtkF,qBAAWs4E,IAA5C1nF,SAED6gG,EAAe1xF,sBAAY,KAC/B,GAAe,OAAXu3C,EACF,OAGF,MAAMo6C,EAAgBF,EAAY51F,QAElC,GAAsB,OAAlB47C,GAA4C,OAAlBk6C,EAAwB,CACpD,MAAMC,E9GsHL,SACLC,GAEA,MAAMl6C,EAAkD,GAgDxD,OA/CAk6C,EAAsBl6C,aAAaxtE,QACjC,EACEuvE,aACA11C,cACAk0C,2BACAgF,qBACA9B,eACAxD,aACAL,SACAS,gBAEAL,EAAa1xE,KAAK,CAChByzE,WAAYA,EAAW/0E,IACrB,EACE04E,qBACA3G,WACAkD,uBACAE,qBACAwD,iBACA3d,gBACAiX,gBAPF,CASEyG,mBACwB,MAAtBA,EACI/sE,MAAMkJ,KAAK6jE,EAAmBwwB,WAC9B,KACNn3B,WACAkD,qBAAsBtpE,MAAMkJ,KAAKogE,EAAqBi0B,WACtD/zB,mBAAoBxpE,MAAMkJ,KAAKsgE,EAAmB+zB,WAClDvwB,iBACA3d,gBACAiX,eAGJ5yC,cACAk0C,yBAA0B5nE,MAAMkJ,KAC9B0+D,EAAyB21B,WAE3B3wB,mBAAoB5sE,MAAMkJ,KAAK0jE,EAAmB2wB,WAClDzyB,aAAc9qE,MAAMkJ,KAAK4hE,EAAayyB,WACtCj2B,aACAL,SACAS,UAAW1nE,MAAMkJ,KAAKw+D,EAAU61B,eAK/B,CACL/4F,QRhLmC,EQiLnC6iE,gB8G3K8Bm6C,CAA2Br6C,GACjDj4B,EAAO,IAAIrsB,MxFoHhB,SACLohC,EACAw9D,EACAjyE,GAEA,MAAMtzC,EAAO,IAAIxB,KAAK,CAAC80C,GAAO,CAACj2C,KAAM,6BAEjB,OAAhButF,IACFvsF,IAAIE,gBAAgBqsF,IAGtBA,GAAcvsF,IAAIC,gBAAgB0B,GAElC+nD,EAAQnqD,aAAa,OAAQgtF,IAC7B7iC,EAAQnqD,aAAa,WAAY2nH,GAEjCx9D,EAAQy9D,QwFvHJC,CACEN,EACC,kBAdgBnyE,EAChB0yE,wBAAmBvoH,EAAW,CAC7BwoH,KAAM,UACNxyE,MAAO,UACPyyE,IAAK,YAENp8G,QAAQ,MAAO,QACCwpC,EAChB6yE,wBAAmB1oH,EAAW,CAC7B2oH,QAAQ,IAETt8G,QAAQ,KAAM,YAIf5Q,KAAKC,UAAUusH,EAAqB,KAAM,MAG7C,CAACr6C,EAAQE,IAEN86C,EAAavyF,sBAAY,KACJ,OAArBmyE,EAASt2E,SACXs2E,EAASt2E,QAAQm2F,SAElB,IAEGQ,EAAcxyF,sBAAY,KAC9B,MAAM6K,EAAQsnE,EAASt2E,QACvB,GAAc,OAAVgP,GAAkBA,EAAM4nF,MAAM1sH,OAAS,EAAG,CAC5C,MAAM2sH,EAAa,IAAIC,WACvBD,EAAWzlH,iBAAiB,OAAQ,KAClC,IACE,MAAMmI,EAAQs9G,EAAWloH,OACnBonH,EAAwBxsH,KAAKyP,MACjCO,GAEFkiE,EAAcG,c9GuBjB,SACLm6C,GACuB,MAChB98G,EAAW88G,EAAX98G,QAEP,GRxEqC,IQwEjCA,EACF,MAAMnM,MAAO,wCAAuCmM,MAGtD,MAAM6iE,EAA0D,IAAIjjD,IA4CpE,OA3CAk9F,EAAoBj6C,aAAaxtE,QAC/B,EACEuvE,aACA11C,cACAk0C,2BACAgF,qBACA9B,eACAxD,aACAL,SACAS,gBAEAL,EAAaj/D,IAAI6+D,EAAQ,CACvBmC,WAAYA,EAAW/0E,IACrB,EACE04E,qBACA3G,WACAkD,uBACAE,qBACAwD,iBACA3d,gBACAiX,gBAPF,CASEyG,mBACwB,MAAtBA,EAA6B,IAAI3oD,IAAI2oD,GAAsB,KAC7D3G,WACAkD,qBAAsB,IAAIllD,IAAIklD,GAC9BE,mBAAoB,IAAIplD,IAAIolD,GAC5BwD,iBACA3d,gBACAiX,eAGJ5yC,cACAk0C,yBAA0B,IAAIxjD,IAAIwjD,GAClCgF,mBAAoB,IAAIxoD,IAAIwoD,GAC5B9B,aAAc,IAAI1mD,IAAI0mD,GACtBxD,aACAL,SACAS,UAAW,IAAItjD,IAAIsjD,OAKlB,CAACL,eAAc4F,UAAU,G8G5EMq1C,CAC5BhB,GAEF,MAAO5kH,GACPu3G,EAAoB,CAClB16G,KAAM,OACNs3F,MAAO,gBACPt8F,QACE,gBAAC,WAAD,KACE,kFACW,OAAVmI,GACC,uBAAKu8E,UAAW5hF,KAAOkrH,cAAe7lH,EAAMsf,eAQxDomG,EAAWI,WAAWjoF,EAAM4nF,MAAM,MAEnC,CAAClO,EAAqBjtC,IAEzB,OACE,gBAAC,WAAD,KACE,uBAAKiS,UAAW5hF,KAAOupG,QACvB,yBACEl1E,IAAKm2E,EACL5oB,UAAW5hF,KAAO8qG,MAClB5oG,KAAK,OACLy6F,SAAUkuB,EACVhpB,UAAW,IAEb,qBAAGxtE,IAAKy1F,EAAaloC,UAAW5hF,KAAO8qG,QACvC,gBAAC,GAAD,CACErsE,SAAU03C,EACVtqB,QAAS++D,EACTpxB,MAAM,mBACN,gBAAC,GAAD,CAAYt3F,KAAK,YAEnB,gBAAC,GAAD,CACEu8B,SAAU03C,IAAgBxG,EAAcoxC,iBACxCl1D,QAASk+D,EACTvwB,MAAM,mBACN,gBAAC,GAAD,CAAYt3F,KAAK,a,qtBCrGzB,SAASkpH,IAAwBhlH,KAAMulF,EAAP,MAAiBznF,EAAjB,MAAwBpD,IAAe,MAEnEuqH,EAOE1/B,EAPF0/B,gBACAC,EAME3/B,EANF2/B,YACAC,EAKE5/B,EALF4/B,sBACAC,EAIE7/B,EAJF6/B,YACAxJ,EAGEr2B,EAHFq2B,oBACAC,EAEEt2B,EAFFs2B,kBACAwJ,EACE9/B,EADF8/B,gBAKIC,EAAiBL,EAFvBnnH,EAAQqnH,EAAsBrnH,IAGxBynH,EAAaL,EAAYpnH,GAGzBu/G,EACJ/7F,KAAK9R,IAAI,EAAG8R,KAAKlS,IAAI,EAAGk2G,EAAiBF,KAAiB,EACtD9yB,EAAaspB,IAAwB99G,EAGrCwxC,EAAQ4sB,WAAWxhE,EAAM40C,OAAS,EAaxC,OACE,uBACEksC,UAAW5hF,KAAO4rH,MAClB5yB,YAdoB,EAAEnoD,UAAS3xC,aACjB,IAAZ2xC,IACFoxE,EAAkB/9G,GAClBunH,EAAgB,CACd/7C,YAAaxrE,EACbivD,KAAMj0D,EAAOs9F,wBAAwBrpC,KACrC04D,cAAevpD,WAAWxhE,EAAM40C,WASlC50C,MAAK,SACAA,GADA,IAEH40C,QACAo2E,aAAcpzB,EACV,kDACA12F,IAENw3F,MAAQ,YAAW1qB,GAAe48C,WAAwB18C,GACxD28C,OAEF,uBACE/pC,UAAW5hF,KAAO+rH,MAClBjrH,MAAO,CACL60C,OAAWjuB,KAAKmnD,MAAmB,IAAb40C,GAAb,IACTqF,gBACErF,EAAa,EAAI90C,GAAiB80C,QAAczhH,MAO7CxD,sBAAY4sH,GAAwB98B,I,+9BChDpC,SAAS09B,IAAmB,gBACzCX,EADyC,YAEzCC,EAFyC,sBAGzCC,EAHyC,oBAIzCvJ,EAJyC,4BAKzCiK,EALyC,kBAMzChK,IAEA,OACE,gBAAC,GAAD,KACG,EAAEtsE,SAAQD,WACT,gBAAC,GAAD,CACE21E,gBAAiBA,EACjBC,YAAaA,EACb31E,OAAQA,EACR41E,sBAAuBA,EACvBvJ,oBAAqBA,EACrBiK,4BAA6BA,EAC7BhK,kBAAmBA,EACnBvsE,MAAOA,KAwBjB,SAAS4yC,IAAK,gBACZ+iC,EADY,oBAEZrJ,EAFY,YAGZsJ,EAHY,OAIZ31E,EAJY,sBAKZ41E,EALY,4BAMZU,EANY,kBAOZhK,EAPY,MAQZvsE,IAEA,MAAMw2E,EAAUrzF,iBAAuC,MACjD40E,EAAS50E,iBAA8B,MACvCszF,EAAqBtzF,iBAAsB,MAGjDL,oBAAU,KACJyzF,IAAgCE,EAAmBj4F,UACrDi4F,EAAmBj4F,QAAU+3F,EACO,OAAhCA,GAA4D,OAApBC,EAAQh4F,SAClDg4F,EAAQh4F,QAAQ82D,aAAaihC,KAGhC,CAACC,EAASD,IAEb,MAAMxiC,EAAW9wD,kBACf,IAAMjR,KAAKlS,If7FY,Ee6FKkgC,EAAQ61E,EAAsBntH,QAC1D,CAACmtH,EAAuB71E,IAEpB81E,EAAc7yF,kBAClB,IAAM0yF,EAAgBt5F,OAAO,CAACvc,EAAKu5D,IAAarnD,KAAKlS,IAAIA,EAAKu5D,GAAW,GACzE,CAACs8C,IAGGe,EAAiBb,EAAsBntH,OAAS,EAxB1C,KA0BsB06B,mBAA2B,MA1BjD,GA0BLuzF,EA1BK,KA0BMC,EA1BN,KA4BNC,EAAmB,EAAE17E,UAAST,YAClC,GAAgB,IAAZS,GAKJ,GAAkB,OAAdw7E,EAAoB,OACf38C,EAAoC28C,EAApC38C,YAAavc,EAAuBk5D,EAAvBl5D,KAAM04D,EAAiBQ,EAAjBR,cAE1B,IAAIW,EAAiB98C,EACjB+8C,EAAgBt5D,EAEpB,GAAI/iB,EAAQq8E,EACV,KAAOr8E,EAAQq8E,GACbA,GAAiBZ,EACjBW,GAAkB,MAEf,CACL,IAAIE,EAAqBD,EAAgBZ,EACzC,KAAOz7E,EAAQs8E,GACbA,GAAsBb,EACtBW,GAAkB,EAIlBA,EAAiB,EACnBA,EAAiB,EACRA,EAAiBJ,IAC1BI,EAAiBJ,GAGnBnK,EAAkBuK,SA7BlBF,EAAa,OAiCjB9zF,oBAAU,KACR,GAAkB,OAAd6zF,EACF,OAGF,MAAMz/D,EAAU6gD,EAAOv5E,QACvB,GAAgB,OAAZ04B,EAAkB,CACpB,MAAMxuB,EAAgBwuB,EAAQxuB,cAE9B,OADAA,EAAc94B,iBAAiB,YAAainH,GACrC,KACLnuF,EAAcpgB,oBAAoB,YAAauuG,MAGlD,CAACF,IAGJ,MAAM1gC,EAAWhzD,kBACf,KAAM,CACJ0yF,kBACAC,cACAC,wBACAC,cACAxJ,sBACAiK,8BACAhK,oBACAwJ,gBAAiBa,IAEnB,CACEjB,EACAC,EACAC,EACAC,EACAxJ,EACAiK,EACAhK,IAIJ,OACE,uBAAK5tF,IAAKo5E,EAAQ3sG,MAAO,CAAC60C,SAAQD,UAChC,gBAACi4C,GAAD,CACE/L,UAAW5hF,KAAOsoF,KAClBoB,OAAO,aACP/zC,OAAQA,EACRu1C,UAAWqgC,EAAsBntH,OACjCutF,SAAUA,EACVlC,SAAUA,EACVp1D,IAAM63F,EACNx2E,MAAOA,GACN01E,K,wBCpLM,SAASuB,GAAiB54G,GAAU,QAO7CukB,qBAAWuoF,IALbe,EAF+C,EAE/CA,sBACAE,EAH+C,EAG/CA,kBACAlyC,EAJ+C,EAI/CA,OACAoyC,EAL+C,EAK/CA,oBACAC,EAN+C,EAM/CA,kBAIKlwC,EADiBz5C,qBAAW4nD,IAA5BvQ,cAC4BmC,eAAiBlC,GAA7CmC,WAEDs5C,EAAiC,GACjCC,EAA6B,GACnCv5C,EAAWvvE,QAAQwvE,IACjBq5C,EAAgB/sH,KAAK0zE,EAAYjD,UACjCu8C,EAAYhtH,KAAK0zE,EAAY/C,aAG/B,MAAMs8C,EAAwB5yF,kBAC5B,IACEo5C,EAAWhgD,OAAO,CAAC83C,EAASmI,EAAa9tE,OAEpC09G,GACD5vC,EAAYjD,UAAY+yC,IAExBj4C,EAAQvrE,KAAK4F,GAER2lE,GACN,IACL,CAACkI,EAAY6vC,EAAuBE,IAGhC8K,EAAqBrB,EAAsBntH,OAG3C6tH,EAA8BtzF,kBAAQ,KAC1C,GAA4B,OAAxBqpF,EACF,IAAK,IAAIrnH,EAAI,EAAGA,EAAI4wH,EAAsBntH,OAAQzD,IAChD,GAAI4wH,EAAsB5wH,KAAOqnH,EAC/B,OAAOrnH,EAIb,OAAO,MACN,CAAC4wH,EAAuBvJ,IAKS,OAAhCiK,EAEAhK,EADE2K,EAAqB,EACL,EAEA,MAEXX,GAA+BW,GACxC3K,EAAyC,IAAvB2K,EAA2B,KAAOA,EAAqB,GAG3E,IAAI15C,EAAQ,KACR05C,EAAqB,IACvB15C,GACG,IAAE+4C,EAA8B,IAAIY,UAClC,GAAED,GAAqBxuH,OACxB,KAEF,MACAwuH,GAGJ,MAAME,EAAiBz0F,sBAAY,KACjC,IAAI00F,EAAoBd,EAA6C,EACjEc,IAAoBxB,EAAsBntH,SAC5C2uH,EAAkB,GAEpB9K,EAAkBsJ,EAAsBwB,KACvC,CAACd,EAA6BV,EAAuBtJ,IAClD+K,EAAiB30F,sBAAY,KACjC,IAAI00F,EAAoBd,EAA6C,EACjEc,EAAkB,IACpBA,EAAkBxB,EAAsBntH,OAAS,GAEnD6jH,EAAkBsJ,EAAsBwB,KACvC,CAACd,EAA6BV,EAAuBtJ,IAElDpiB,EAAgBxnE,sBACpBmgB,IACE,OAAQA,EAAMt8C,KACZ,IAAK,YACH8wH,IACAx0E,EAAM1J,kBACN,MACF,IAAK,aACHg+E,IACAt0E,EAAM1J,oBAMZ,CAACg+E,EAAgBE,IAGnB,OAA0B,IAAtBj7C,EAAW3zE,OACN,KAIP,gBAAC,WAAD,KACE,wBAAMwjF,UAAW5hF,KAAOirG,YAAa/3B,GACrC,gBAAC,GAAD,CACE0O,UAAW5hF,KAAO6lG,OAClBpnE,SAAiC,IAAvBmuF,EACV/gE,QAASmhE,EACTxzB,MAAM,0BACN,gBAAC,GAAD,CAAYt3F,KAAK,cAEnB,uBACE0/E,UAAW5hF,KAAOitH,QAClBjuB,UAAWa,EACX/+F,MAAO,CACLw/B,KAAMssF,EAAqB,EAAI,WAAa,WAC5ClE,SACEkE,EAAqB,EhBtIN,GgBuIXA,OACA5qH,GAER6/F,SAAU,GACT+qB,EAAqB,GACpB,gBAAC,GAAD,CACEvB,gBAAiBA,EACjBC,YAAaA,EACbC,sBAAuBA,EACvBvJ,oBAAqBA,EACrBiK,4BAA6BA,EAC7BhK,kBAAmBA,IAGC,IAAvB2K,GACC,uBAAKhrC,UAAW5hF,KAAOktH,WAAvB,eAGJ,gBAAC,GAAD,CACEtrC,UAAW5hF,KAAO6lG,OAClBpnE,SAAiC,IAAvBmuF,EACV/gE,QAASihE,EACTtzB,MAAM,sBACN,gBAAC,GAAD,CAAYt3F,KAAK,W,uBCvJV,SAASirH,GAAkBp5G,GAAU,QAM9CukB,qBAAWuoF,IAJbmB,EAFgD,EAEhDA,oBACApyC,EAHgD,EAGhDA,OACAwyC,EAJgD,EAIhDA,kBACA1E,EALgD,EAKhDA,UAGK/tC,EAAiBr3C,qBAAW4nD,IAA5BvQ,cAEP,GAAe,OAAXC,GAA2C,OAAxBoyC,EACrB,OAAO,uBAAKpgC,UAAW5hF,KAAOotH,iBAAvB,oBAXyC,MAc3C35C,EAAgB9D,EAAcmC,eAAelC,GAA7C6D,aAd2C,EAoB9C9D,EAAcuC,cAActC,EAAQoyC,GAJtCjzC,EAhBgD,EAgBhDA,SACA4G,EAjBgD,EAiBhDA,eACA3d,EAlBgD,EAkBhDA,cACAiX,EAnBgD,EAmBhDA,UAQF,OACE,gBAAC,WAAD,KACE,uBAAK2S,UAAW5hF,KAAOumH,SAAvB,sBACA,uBAAK3kC,UAAW5hF,KAAO8iH,SACrB,sBAAIlhC,UAAW5hF,KAAOsoF,MACD,OAAlBtwB,GACC,sBAAI4pB,UAAW5hF,KAAOqtH,UACpB,yBAAOzrC,UAAW5hF,KAAOg5G,OAAzB,YADF,IACoD,IAClD,wBAAMp3B,UAAW5hF,KAAOy2G,OAAQz+C,IAGpC,sBAAI4pB,UAAW5hF,KAAOqtH,UACpB,yBAAOzrC,UAAW5hF,KAAOg5G,OAAzB,gBADF,IACwD,IACtD,wBAAMp3B,UAAW5hF,KAAOy2G,OAAQznC,GAAWC,GAA3C,MAEF,sBAAI2S,UAAW5hF,KAAOqtH,UACpB,yBAAOzrC,UAAW5hF,KAAOg5G,OAAzB,mBADF,IAC2D,IACzD,wBAAMp3B,UAAW5hF,KAAOy2G,OAAQ3nC,GAAeC,GAA/C,OAEF,sBAAI6S,UAAW5hF,KAAOipH,cACpB,yBAAOrnC,UAAW5hF,KAAOg5G,OAAzB,gBADF,IAEE,uBAAKp3B,UAAW5hF,KAAOstH,iBACM,IAA1B33C,EAAev3E,OACd,uBAAKwjF,UAAW5hF,KAAO+oH,gBAAvB,QACE,KACHpzC,EAAe34E,IAAIuwH,IAClB,MAAMlF,EAAc50C,EAAaj4E,IAAI+xH,GACrC,GAAmB,MAAflF,EACF,MAAMrnH,MAAO,wBAAuBusH,MAEtC,OACE,0BACErxH,IAAKqxH,EACL3rC,UAAW5hF,KAAOyoH,YAClB58D,QAAS,IAvCH0hE,KACtB7P,EAAU,gBACV0E,EAAkBmL,IAqCaC,CAAgBD,IAC9BlF,EAAYntH,a,wBC7DlB,SAASuyH,GAAoB15G,GAAU,QAMhDukB,qBAAWuoF,IAJbsB,EAFkD,EAElDA,sBACAvyC,EAHkD,EAGlDA,OACAqyC,EAJkD,EAIlDA,kBACAvE,EALkD,EAKlDA,UAGK/tC,EAAiBr3C,qBAAW4nD,IAA5BvQ,cACAw2C,EAAkBx2C,EAAlBw2C,eAEP,GAA8B,OAA1BhE,EACF,OAAO,uBAAKvgC,UAAW5hF,KAAOotH,iBAAvB,oBAZ2C,QAeTz9C,EAAcmC,eACrDlC,GADG2F,EAf6C,EAe7CA,mBAGD8yC,EAlB8C,EAezB50C,aAGMj4E,IAAI2mH,GACrC,GAAmB,MAAfkG,EACF,MAAMrnH,MACH,0DAAyDmhH,MArBV,MAyB7CxuC,EAAqBwyC,EAAevyC,yBAAyB,CAClEhE,OAAUA,IADL+D,kBASD+5C,EAA+B,GAC/BxH,EAAgB3wC,EAAmB/5E,IAAI2mH,GA+B7C,OA9BqB,MAAjB+D,GACFA,EAAc1jH,QAAQktE,IAAe,QACLC,EAAcuC,cACxCtC,EACFF,GAFKX,EAD4B,EAC5BA,SAAUE,EADkB,EAClBA,UAKjBy+C,EAAUpvH,KACR,sBACEpC,IAAKwzE,EACLkS,UAAW5hF,KAAOqtH,SAClBxhE,QAAS,IAlBG6jB,KAClBguC,EAAU,eACVuE,EAAkBvyC,IAgBGm5C,CAAWn5C,IAC1B,uBACEkS,UAAW5hF,KAAO4oH,UAClB9nH,MAAO,CACLgoH,gBAAiBn6C,GACfjnD,KAAK9R,IAAI,EAAG8R,KAAKlS,IAAI,EAAGu5D,EAAW4E,KAAuB,MAIhE,yCACc3E,GAAWC,GADzB,IAEE,2BAFF,aAGaH,GAAeC,GAH5B,UAWN,gBAAC,WAAD,KACE,uBAAK6S,UAAW5hF,KAAOumH,SACrB,uBAAK3kC,UAAW5hF,KAAOo2G,KAAM5c,MAAO6uB,EAAYntH,MAC7CmtH,EAAYntH,OAGjB,uBAAK0mF,UAAW5hF,KAAO8iH,SACrB,uBAAKlhC,UAAW5hF,KAAOitH,SAAvB,YACA,sBAAIrrC,UAAW5hF,KAAOsoF,MAAOolC,K,wBCzEtB,SAASC,GAAyB55G,GAAU,MAClD47D,EAAiBr3C,qBAAW4nD,IAA5BvQ,cADkD,EASrDr3C,qBAAWuoF,IANbjxC,EAHuD,EAGvDA,OACAqyC,EAJuD,EAIvDA,kBACAD,EALuD,EAKvDA,oBACAZ,EANuD,EAMvDA,gBACAE,EAPuD,EAOvDA,kBACAE,EARuD,EAQvDA,YAEK2E,EAAkBx2C,EAAlBw2C,eACDyH,EAAsB/0F,iBAA2B,MAEjDqtF,EAAgBC,EAAeC,gBAAgB,CACnD10C,QAAW0vC,EACXxxC,OAAUA,IA4BZp3C,oBAAU,KACR,MAAMi5D,EAAkBm8B,EAAoB15F,QAEtB,OAApBu9D,GAC0C,mBAAnCA,EAAgBiD,gBAEvBjD,EAAgBiD,eAAe,CAACm5B,MAAO,UAAWC,OAAQ,aAE3D,CAAC9L,IAEJ,MAAM0L,EAAY,GAClB,IAAI/yH,EAAI,EACR,IAAKA,EAAI,EAAGA,EAAIurH,EAAc9nH,OAAQzD,IAAK,CACzC,MAAM+0E,EAAcw2C,EAAcvrH,GADO,EAGXg1E,EAAcuC,cACxCtC,EACFF,GAFKX,EAHkC,EAGlCA,SAAUE,EAHwB,EAGxBA,UAKjBy+C,EAAUpvH,KACR,0BACEpC,IAAKwzE,EACLr7C,IAAK2tF,IAAwBtyC,EAAck+C,EAAsB,KACjEhsC,UACEogC,IAAwBtyC,EACpB1vE,KAAOsmH,cACPtmH,KAAO+tH,OAEbliE,QAAS,IAAMo2D,EAAkBvyC,IAChCV,GAAWC,GATd,SASgCH,GAAeC,GAT/C,OAcJ,OACE,gBAAC,WAAD,KACE,uBAAK6S,UAAW5hF,KAAOumH,SACrB,uBAAK3kC,UAAW5hF,KAAOi2B,WACpBqrF,GAAqB,sBAGxB,gBAAC,GAAD,CACE1/B,UAAW5hF,KAAOwpG,WAClB39C,QAAS,IAAM21D,EAAY,KAAM,MACjChoB,MAAM,uBACN,gBAAC,GAAD,CAAYt3F,KAAK,YAGrB,uBAAK0/E,UAAW5hF,KAAO8iH,QAAS9jB,UA1EdxmD,IACpB,OAAQA,EAAMt8C,KACZ,IAAK,UACH,GAA4B,OAAxB8lH,EAA8B,CAChC,MAAMgM,EAAY9H,EAActkH,QAAQogH,GAClCxc,EACJwoB,EAAY,EAAIA,EAAY,EAAI9H,EAAc9nH,OAAS,EACzD6jH,EAAkBiE,EAAc1gB,IAElChtD,EAAMryC,iBACN,MACF,IAAK,YACH,GAA4B,OAAxB67G,EAA8B,CAChC,MAAMgM,EAAY9H,EAActkH,QAAQogH,GAClCxc,EACJwoB,EAAY9H,EAAc9nH,OAAS,EAAI4vH,EAAY,EAAI,EACzD/L,EAAkBiE,EAAc1gB,IAElChtD,EAAMryC,mBAwDkD07F,SAAU,GAClE,gBAAC,GAAD,CAAanwB,QAAW0vC,IACvBsM,EAAUtvH,OAAS,GAClB,gBAAC,WAAD,KACE,yBAAOwjF,UAAW5hF,KAAOg5G,OAAzB,eADF,KACwD0U,GAGpC,IAArBA,EAAUtvH,QACT,8E,uBCeV,MAAMu/G,GAAO,CACX,CACEt/G,GAAI,cACJogH,KAAM,cACNvrC,MAAO,aACPsmB,MAAO,oBAET,CACEn7F,GAAI,eACJogH,KAAM,eACNvrC,MAAO,SACPsmB,MAAO,gBAET,CACEn7F,GAAI,eACJogH,KAAM,eACNvrC,MAAO,eACPsmB,MAAO,0BAILy0B,GAAkB,IACtB,uBAAKrsC,UAAW5hF,KAAOkuH,QACrB,uBAAKtsC,UAAW5hF,KAAOiwG,QAAvB,wCACA,uBAAKruB,UAAW5hF,KAAO05G,KAAvB,2BAC0B,gBAAC,GAAD,MAD1B,yBAMEyU,GAAwB,IAC5B,uBAAKvsC,UAAW5hF,KAAOkuH,QACrB,uBAAKtsC,UAAW5hF,KAAOiwG,QAAvB,4BACA,qBAAGruB,UAAW5hF,KAAOouH,WAArB,kGAIA,qBAAGxsC,UAAW5hF,KAAOouH,WAArB,gBACgB,IACd,qBACExsC,UAAW5hF,KAAO0kG,KAClBhhG,KAAK,qCACLH,IAAI,sBACJrE,OAAO,UAJT,8BAFF,MAcEmvH,GAAiB,IACrB,uBAAKzsC,UAAW5hF,KAAOkuH,QACrB,uBAAKtsC,UAAW5hF,KAAOiwG,QAAvB,sBACA,uBAAKruB,UAAW5hF,KAAO05G,KAAvB,oCAIE4U,GAAsB,IAC1B,uBAAK1sC,UAAW5hF,KAAOkuH,QACrB,uBAAKtsC,UAAW5hF,KAAOiwG,QAAvB,+BACA,uBAAKruB,UAAW5hF,KAAO05G,KAAvB,2BAC0B,gBAAC,GAAD,MAD1B,wBAYWjJ,WAhLf,SAAkB18F,GAAS,QAUrBukB,qBAAWuoF,IARbE,EAFuB,EAEvBA,iBACAC,EAHuB,EAGvBA,iBACA7qC,EAJuB,EAIvBA,YACA6rC,EALuB,EAKvBA,oBACAZ,EANuB,EAMvBA,gBACAc,EAPuB,EAOvBA,cACAxE,EARuB,EAQvBA,UACAhmC,EATuB,EASvBA,kBAGF,IAAIv7D,EAAO,KACX,GAAI4kG,EACF,OAAQmB,GACN,IAAK,cACH/lG,EAAO,gBAAC,GAAD,MACP,MACF,IAAK,eACHA,EAAO,gBAAC,GAAD,MACP,MACF,IAAK,eACHA,EAAO,gBAAC,GAAD,WAMXA,EADSg6D,EACF,gBAACm4C,GAAD,MACEtN,EACF,gBAACqN,GAAD,MACE32C,EACF,gBAACu2C,GAAD,MAEA,gBAACE,GAAD,MAGT,IAAII,EAAU,KACd,IAAKp4C,IAAgB6qC,GAAoBD,EACvC,OAAQmB,GACN,IAAK,eACHqM,EAAU,gBAAC,GAAD,MACV,MACF,IAAK,cACL,IAAK,eAOyB,OAAxBvM,IAEAuM,EADsB,OAApBnN,EACQ,gBAAC,GAAD,MAEA,gBAAC,GAAD,OASpB,OACE,gBAAChW,GAAD,KACE,uBAAKxpB,UAAW5hF,KAAOqyB,UACrB,uBAAKuvD,UAAW5hF,KAAOwuH,YACrB,uBAAK5sC,UAAW5hF,KAAOumH,SACrB,gBAAC,GAAD,CAAc9nF,UAAWi5C,IACzB,gBAACiyC,GAAD,MACA,gBAACpF,GAAD,MACA,gBAAC,GAAD,MACA,uBAAK3iC,UAAW5hF,KAAOupG,QACvB,gBAAC,GAAD,CACEiU,WAAY0E,EACZ7jH,GAAG,WACHq/G,UAAWA,EACXC,KAAMA,GACNz7G,KAAK,aAEP,gBAAC,GAAD,MACA,uBAAK0/E,UAAW5hF,KAAO6iH,SACvB,gBAACtX,GAAD,MACCwV,GACC,gBAAC,WAAD,KACE,uBAAKn/B,UAAW5hF,KAAOupG,QACvB,gBAAC,GAAD,QAIN,uBAAK3nB,UAAW5hF,KAAO8iH,SACpB3mG,EACD,gBAAC,GAAD,QAGJ,uBAAKylE,UAAW5hF,KAAOyuH,aAAcF,GACrC,gBAAC,GAAD,WAyER,SAAsBr6C,GAGpBA,EAAMvE,cAAcG,cAAgB,Q,oBC9LvB,SAAS4+C,IAAU,UAAC9sC,IACjC,OACE,uBACEqW,MAAM,6BACNrW,UAAY,GAAE5hF,KAAO0uH,aAAa9sC,GAAa,KAC/CsW,QAAQ,+BACR,0BAAQy2B,GAAG,IAAIC,GAAG,IAAInzH,EAAE,OAAO08F,KAAK,iBACpC,qBAAG02B,OAAO,eAAevsF,YAAY,IAAI61D,KAAK,QAC5C,2BAAS22B,GAAG,KAAKC,GAAG,QACpB,2BAASD,GAAG,KAAKC,GAAG,MAAMjsH,UAAU,eACpC,2BAASgsH,GAAG,KAAKC,GAAG,MAAMjsH,UAAU,kB,m+BCP7B,SAASksH,GAAyBj7G,GAAS,MACjDmV,EAAYoP,qBAAWs4E,IAAvB1nF,SACDgrD,EAAQ57C,qBAAW4nD,IAF+B,KAG9BpnD,mBAAuB,oBAHO,GAGjDkpB,EAHiD,KAG1CnuB,EAH0C,KAgCxD,OA3BA2E,oBAAU,KACR,GAAc,qBAAVwpB,EAA8B,CAChC,MAAMitE,EAAa,KACjB5f,kCAAe,KACbx7E,EAAS,eACT3K,EAAS,CACP2nF,gBAAgB,EAChB3uG,KAAM,OACNhF,QAAS,gBAACgyH,GAAD,WAKf,IAAIh7C,EAAMi7C,mCAIR,OADAj7C,EAAMzP,YAAY,qCAAsCwqD,GACjD,KACL/6C,EAAMt8D,eACJ,qCACAq3G,IANJA,MAWH,CAACjtE,EAAOkyB,IAEJ,KAGT,SAASg7C,GAAcn7G,GACrB,OACE,gBAAC,WAAD,KACE,uBAAK6tE,UAAW5hF,KAAO05G,KACrB,2BACE,uBAAK93B,UAAW5hF,KAAOqxG,OAAvB,sCACA,0GAIA,mGAEK,IACH,qBACEzvB,UAAW5hF,KAAO4gH,iBAClB1hH,OAAO,SACPqE,IAAI,sBACJG,K/H5BZ,iG+HwBU,6CAHF,Q,wBCjDK,SAAS0rH,GAA4Br7G,GAClD,MAAMkgE,EAAS37C,qBAAW2nD,IACnB/2D,EAAYoP,qBAAWs4E,IAAvB1nF,SAuDP,OAlDAsP,oBAAU,KAER,IAAI62F,EAAWp7C,EAAOjP,KAAKhH,OAAOr5C,IAChC,OAAQA,EAAQziB,MACd,IAAK,OACL,IAAK,QACL,IAAK,cAEHgnB,EAAS,CACP2nF,gBAAgB,EAChB3uG,KAAM,OACNs3F,MAAO,yDACPt8F,QAAS,gBAACoyH,GAAD,QAIa,mBAAbD,IACTA,IACAA,EAAW,MAOjB,OAAQ1qG,EAAQ6zB,OACd,IAAK,+BACL,IAAK,+BACL,IAAK,aACL,IAAK,2BAGqB,mBAAb62E,IACTA,IACAA,EAAW,SAQnB,MAAO,KACmB,mBAAbA,IACTA,IACAA,EAAW,QAGd,CAACp7C,EAAQ/qD,IAEL,KAGT,SAASomG,GAAuBv7G,GAC9B,OACE,gBAAC,WAAD,KACE,+EACA,wBAAM6tE,UAAW5hF,KAAOuvH,SAAxB,qC,0+BCFN,MAaM5R,GAAO,CAbS,CACpBt/G,GAAK,aACLogH,KAAM,aACNvrC,MAAO,aACPsmB,MAAO,oBAEW,CAClBn7F,GAAK,WACLogH,KAAM,WACNvrC,MAAO,WACPsmB,MAAO,mBAKM,SAASg2B,IAAS,OAC/Bv7C,EAD+B,aAE/B6gB,EAAe,QAFgB,6BAG/B4nB,EAH+B,0BAI/B3nB,EAJ+B,WAK/B06B,EAAa,aALkB,mCAM/BC,GAAqC,EANN,YAO/BC,EAP+B,wBAQ/B36B,EAR+B,WAS/B46B,GAAa,EATkB,MAU/B17C,EAV+B,4BAW/B27C,GAA8B,EAXC,iCAY/BC,GAAmC,EAZJ,4BAa/BzvC,EAb+B,0BAc/Bs8B,IACQ,WACqBvpB,GAC3B,8BACAq8B,GAHM,GACDjS,EADC,KACWuS,EADX,KAMR,IAAInS,EAAMJ,EAES,MAAfmS,IACF/R,EAAM+R,GAGR,MAAMK,EAAoBr3F,kBACxB,KAAM,CACJ+jF,6BAA8BA,GAAgC,KAC9DC,0BAA2BA,GAA6B,OAE1D,CAACD,EAA8BC,IAG3BsT,EAAct3F,kBAClB,KAAM,CACJynD,6BAA8BsvC,EAC9BrvC,4BAA6BA,GAA+B,OAE9D,CAACqvC,EAAoCrvC,IAGjC6vC,EAAcr3F,iBAA2B,MA8C/C,OA5CAL,oBAAU,KACR,IAAKo3F,EACH,OAGF,MAAMh0B,EAAMs0B,EAAYh8F,QACxB,GAAY,OAAR0nE,EACF,OAGF,MAAMiN,EAAcjN,EAAIx9D,cAAc2c,YAChC8kD,EAAiBrnD,IACrB,GAAIA,EAAMlI,SAAWkI,EAAM/H,QACzB,OAAQ+H,EAAMt8C,KACZ,IAAK,IACH6zH,EAAOpS,GAAK,GAAGt/G,IACfm6C,EAAMryC,iBACNqyC,EAAM1J,kBACN,MACF,IAAK,IACHihF,EAAOpS,GAAK,GAAGt/G,IACfm6C,EAAMryC,iBACNqyC,EAAM1J,oBAMd,OADA+5D,EAAYvjG,iBAAiB,UAAWu6F,GACjC,KACLgJ,EAAY7qF,oBAAoB,UAAW6hF,KAE5C,CAAC+vB,IAEJl3F,0BAAgB,IACP,KACL,IAEEu7C,EAAOtO,WACP,MAAOtgE,MAIV,CAAC4uE,IAGF,gBAACgM,GAAcvpD,SAAf,CAAwB96B,MAAOq4E,GAC7B,gBAACiM,GAAaxpD,SAAd,CAAuB96B,MAAOs4E,GAC5B,gBAACiM,GAAmBzpD,SAApB,CAA6B96B,MAAOq0H,GAClC,gBAACnf,GAAD,KACE,gBAACjc,GAAD,CACEC,aAAcA,EACdC,0BAA2BA,EAC3BC,wBAAyBA,GACzB,gBAAC,GAAyBt+D,SAA1B,CAAmC96B,MAAOo0H,GACxC,gBAACl/B,GAAD,KACE,gBAACgwB,GAAD,KACE,uBAAKl/B,UAAW5hF,KAAOwvH,SAAUn7F,IAAK67F,GACnCN,GACC,uBAAKhuC,UAAW5hF,KAAOu9G,QACrB,gBAAC,GAAD,MACA,wBAAM37B,UAAW5hF,KAAOmwH,iBACrBjrH,qBAEH,uBAAK08E,UAAW5hF,KAAO6iH,SACvB,gBAAC,GAAD,CACErF,WAAYI,EACZv/G,GAAG,WACHq/G,UAAWqS,EACXpS,KAAMA,GACNz7G,KAAK,gBAIX,uBACE0/E,UAAW5hF,KAAOowH,WAClBpc,OAAgB,eAAR4J,GACR,gBAAC,GAAD,CACEjN,gBAAiB5b,KAGrB,uBACEnT,UAAW5hF,KAAOowH,WAClBpc,OAAgB,aAAR4J,GACR,gBAAC,GAAD,CAAUjN,gBAAiB3b,UAOtC66B,GAA+B,gBAAC,GAAD,MAC/BC,GAAoC,gBAAC,GAAD,U,swBCzMjD,MAAMO,GAAiB,CACrB,6CAA8C,OAC9C,uDACE,uDACF,6DACE,iEACF,iEACE,mEACF,+DAAgE,QAyElE,IAAIC,GAAe,KAEZ,SAASC,GACdC,EACAC,GAKA,GAAIC,sBAAWF,IACb,GAAIG,sBAAWH,GACb,OAAOA,OAGT,IAAK,IAAI71H,EAAI,EAAGA,EAAI81H,EAAqBryH,OAAQzD,IAAK,CACpD,MAAMi2H,EAAcH,EAAqB91H,GACnCk2H,EAAa7yH,gBAAK4yH,EAAaJ,GACrC,GAAIG,sBAAWE,GACb,OAAOA,EAKb,OAAO,KAUF,SAASC,GACdN,EACAhwD,EACAiwD,GAEA,MAAMM,EAAWR,GAAiBC,EAAmBC,GACrD,GAAiB,OAAbM,EACF,OAKF,GAAIvwD,GAAczxD,MAAMyxD,GACtB,OATF,WAtEF,WAEE,GAAIt7D,QAAQ2E,IAAImnH,aACd,OAAO9jH,iBAAMhI,QAAQ2E,IAAImnH,cAK3B,GAAyB,WAArB9rH,QAAQ+rH,SACV,IACE,MAAMz1G,EAAS01G,oBAAS,QAAQp0H,WAC1Bq0H,EAAe91H,OAAOkH,KAAK8tH,IACjC,IAAK,IAAI11H,EAAI,EAAGA,EAAIw2H,EAAa/yH,OAAQzD,IAAK,CAC5C,MAAMy2H,EAAcD,EAAax2H,GACjC,IAAqC,IAAjC6gB,EAAO5Z,QAAQwvH,GACjB,MAAO,CAACf,GAAee,KAG3B,MAAO/rH,IAMX,OAAIH,QAAQ2E,IAAIwnH,OACP,CAACnsH,QAAQ2E,IAAIwnH,QACXnsH,QAAQ2E,IAAIynH,OACd,CAACpsH,QAAQ2E,IAAIynH,QAGf,GAoD+BC,IAA/BC,EAZP,KAYkBC,EAZlB,WAaA,IAAKD,EACH,OAGF,IAAIxnH,EAAOynH,EAEPjxD,EACFx2D,EAAOA,EAAKjM,OA/HhB,SACEyzH,EACAT,EACAvwD,GAEA,OAAQkxD,oBAASF,IACf,IAAK,MACL,IAAK,OACH,MAAO,CAACT,EAAU,IAAMvwD,GAC1B,IAAK,OACL,IAAK,OACL,IAAK,YACL,IAAK,OACL,IAAK,UACL,IAAK,SACL,IAAK,UACL,IAAK,QACL,IAAK,OACH,MAAO,CAACuwD,EAAW,IAAMvwD,GAC3B,IAAK,MACL,IAAK,QACL,IAAK,cACH,MAAO,CAAC,IAAMA,EAAYuwD,GAC5B,IAAK,QACL,IAAK,OACL,IAAK,OACH,MAAO,CAAC,SAAUvwD,EAAa,GAAIuwD,GACrC,IAAK,OACH,MAAO,CAAC,KAAMA,EAAW,IAAMvwD,GACjC,QAIE,MAAO,CAACuwD,IA8FSY,CAA0BH,EAAQT,EAAUvwD,IAE/Dx2D,EAAK1L,KAAKyyH,GAGRT,IA7JN,SAA0BkB,GACxB,OAAQA,GACN,IAAK,MACL,IAAK,QACL,IAAK,OACH,OAAO,EACT,QACE,OAAO,GAsJSI,CAAiBJ,IAInClB,GAAauB,KAAK,WAMlBvB,GAHuB,UAArBprH,QAAQ+rH,SAGKa,iBAAM,UAAW,CAAC,KAAMN,GAAQzzH,OAAOiM,GAAO,CAC3D+nH,MAAO,YAGMD,iBAAMN,EAAQxnH,EAAM,CAAC+nH,MAAO,YAE7CzB,GAAa11G,GAAG,SAAS,eACzB01G,GAAa11G,GAAG,QAAQ,SAASo3G,GAC/B1B,GAAe,SC3KZ,SAAqBpxH,GAC1B,GAAIA,EAAO1C,eAAe,kCACxB,OAAO,KAsIT,IAAIy1H,EAAa,EA6DbC,GAAoB,EAoExB,MAAMC,EAAa,GACbC,EAAqB,IAAIrlG,IACzBvH,EAAY,GACZ6sG,EAAY,IAAItlG,IAEhBwqF,EAAqB,CACzB6a,qBACA5sG,YAGA6sG,YAEAvwG,KArDF,SAAc02B,EAAOpyC,GACfof,EAAUgzB,IACZhzB,EAAUgzB,GAAOx7C,IAAIuB,GAAMA,EAAG6H,KAoDhCksH,cAhDF,SAAuBjtD,GACrB,MAAMgR,EAAQ87C,EAId,OAHK97C,EAAMhR,KACTgR,EAAMhR,GAAc,IAAIpsC,KAEnBo9C,EAAMhR,IA4CbrO,OA7IF,SAAgBuoB,GACd,MAAMlhF,IAAO4zH,EACbI,EAAUthH,IAAI1S,EAAIkhF,GAElB,MAAMgzC,EAAiBL,EACnB,WA1IN,SAA8B3yC,GAC5B,IACE,GAAgC,iBAArBA,EAASpyE,QAElB,OAAIoyE,EAAS7pB,WAAa,EAIjB,cAKF,aAQT,MAAM54D,EAAWyxB,SAAShyB,UAAUO,SACpC,GAAIyiF,EAASizC,OAASjzC,EAASizC,MAAMC,wBAAyB,CAE5D,MAAMC,EAAiB51H,EAAShC,KAC9BykF,EAASizC,MAAMC,yBAGjB,OAA2C,IAAvCC,EAAe9wH,QAAQ,YAElB,cAKwC,IAA7C8wH,EAAe9wH,QAAQ,iBAClB,eAMoD,IAAzD8wH,EAAe9wH,QAAQ,8BAImB,IAAxC8wH,EAAe9wH,QAAQ,cAKoB,IAA3C8wH,EAAe9wH,QAAQ,iBAOa,IAApC8wH,EAAe9wH,QAAQ,QAXlB,eAoBoC,IAA3C8wH,EAAe9wH,QAAQ,iBAEsB,IAA7C8wH,EAAe9wH,QAAQ,iBAIhB,aAGA,eAQkC,IAA3C8wH,EAAe9wH,QAAQ,iBAEsB,IAA7C8wH,EAAe9wH,QAAQ,iBAEhB,aAIF,YAET,MAAOuD,IAMT,MAAO,aAuCHwtH,CAAqBpzC,GAiBvB,IACE,MAAME,GACiD,IAArD9gF,OAAOi0H,0CACHlzC,GACkD,IAAtD/gF,OAAOk0H,4CASLpzC,GAAwBC,KAC1BozC,GAA4BvzC,GAC5BwzC,GAAa,CACXtzC,uBACAC,0BAGJ,MAAOr6E,IAKX,MAAM2tH,EAAS9zH,EAAO+zH,0BACtB,GAAsB,mBAAXD,EAAuB,CAChC,MAAME,EAAoBF,EAAOzb,EAAMl5G,EAAIkhF,EAAUrgF,GACrDq4G,EAAK6a,mBAAmBrhH,IAAI1S,EAAI60H,GAKlC,OAFA3b,EAAKz1F,KAAK,WAAY,CAACzjB,KAAIkhF,WAAUgzC,mBAE9Bl0H,GAsFPuc,GA5EF,SAAY49B,EAAOj6C,GACZinB,EAAUgzB,KACbhzB,EAAUgzB,GAAS,IAErBhzB,EAAUgzB,GAAOl6C,KAAKC,IAyEtB40H,IAtEF,SAAa36E,EAAOj6C,GAClB,IAAKinB,EAAUgzB,GACb,OAEF,MAAMt0C,EAAQshB,EAAUgzB,GAAO52C,QAAQrD,IACxB,IAAX2F,GACFshB,EAAUgzB,GAAO32C,OAAOqC,EAAO,GAE5BshB,EAAUgzB,GAAOp6C,eACbonB,EAAUgzB,IA8DnB46E,IAnFF,SAAa56E,EAAOj6C,GAElB,OADAg5G,EAAK38F,GAAG49B,EAAOj6C,GACR,IAAMg5G,EAAK4b,IAAI36E,EAAOj6C,IAqF7Bw4D,eAAe,EAGf/xD,SArLF,SAAkBzG,GAGhB,IACmBgwB,SAAShyB,UAAUO,SACdhC,KAAKyD,GAKlBqD,QAAQ,QAAU,IAEzBswH,GAAoB,EAIpBzpH,YAAW,WACT,MAAM,IAAIzH,MACR,qMAON,MAAOmE,MA6JT6oD,qBApDF,SAA8BqX,EAAYyX,GACxC,MAAMo2C,EAAoBd,EAAmB52H,IAAI6pE,GACxB,MAArB6tD,GACFA,EAAkBG,yBAAyBv2C,IAkD7CvpB,kBA9CF,SAA2B8R,EAAY/2C,EAAM0pC,GAC3C,MAAMs7D,EAAe/b,EAAK+a,cAAcjtD,GAClCnxC,EAAU5F,EAAK4F,QACfq/F,EAAcD,EAAanmG,IAAImB,GAC/BklG,EACqB,MAAzBt/F,EAAQ4R,eAA0D,MAAjC5R,EAAQ4R,cAAc8mB,QAGpD2mE,GAAgBC,EAEVD,GAAeC,GACxBF,EAAaxnG,OAAOwC,GAFpBglG,EAAap5G,IAAIoU,GAInB,MAAM4kG,EAAoBd,EAAmB52H,IAAI6pE,GACxB,MAArB6tD,GACFA,EAAkBO,sBAAsBnlG,EAAM0pC,KAkClD38D,OAAOC,eACL4D,EACA,iCACC,CAGC69B,cAAc22F,EACdn4H,YAAY,EACZC,IAAG,IACM+7G,IC/Rfoc,CAAYh1H,QAIZ,IAAIwsB,GAAsB,KACtByoG,GAAmC,GACnCC,GAA8B,GAC9BC,GAAkCnvG,MAoBtC,IAAIsvD,GAAgC,KAChCC,GAAsB,KACtB5lD,GAAO,KAEX,MAAMpkB,GAAM,IAAIF,IAAS5E,QAAQ8E,IAAI,sBAAuBF,GAe5D,SAAS+pH,KACP58D,oBAAU,KACK,OAAT7oC,IACFA,GAAK4mC,YAGT5mC,GAAO,KAuBT,SAASouF,GACPrO,GAEA,IACqC,IAAnCA,EAAiBW,eACW,OAA5BX,EAAiBxwG,OAEjB,OAAO,EALA,MAQFA,EAAUwwG,EAAVxwG,OAEP,OFkBqE,OAA9D0yH,GElBkB1yH,EAAO0iE,SAAUszD,IAG5C,SAASlX,GACPt+G,EACAgwG,GACM,MACCxwG,EAAUwwG,EAAVxwG,OACQ,OAAXA,EACFizH,GAAajzH,EAAO0iE,SAAU1iE,EAAO2iE,WAAYqzD,IAEjD3pH,GAAI7E,MAAM,yBAA0BhH,GAIxC,SAAS21H,KACPD,KAEA5oG,GAAKoU,UAAYq0F,GAGnB,SAAS1uF,IAAQ,KAACrhB,EAAD,QAAOc,IACtBovG,KAGE5oG,GAAKoU,UADM,eAAT1b,EACgB,qQAWA,sJAMVc,wCAOZ,SAASsvG,GAAW5xG,GAClB,MAAMmD,EAAY,GAClBnD,EAAOy2C,UAAYtgB,IACjB,IAAIpyC,EACJ,IACE,GAA0B,iBAAfoyC,EAAMpyC,KAOf,MAAMpF,QANNoF,EAAO3I,KAAKyP,MAAMsrC,EAAMpyC,MAQ1B,MAAO1G,GAEP,YADAwK,GAAI7E,MAAM,uBAAwBmzC,EAAMpyC,MAG1Cof,EAAUhjB,QAAQjE,IAChB,IACEA,EAAG6H,GACH,MAAOf,GAEP,MADA6E,GAAI7E,MAAM,yBAA0Be,GAC9Bf,MAKZ4uE,GAAS,IAAIlP,EAAO,CAClB/G,OAAOz/D,IACLinB,EAAUlnB,KAAKC,GACR,KACL,MAAM2F,EAAQshB,EAAU5jB,QAAQrD,GAC5B2F,GAAS,GACXshB,EAAU3jB,OAAOqC,EAAO,KAI9BmgB,KAAKm0B,EAAeuI,EAAcmzE,GAC5B7xG,EAAO9D,aAAe8D,EAAOQ,MAC/BR,EAAOgC,KAAK5mB,KAAKC,UAAU,CAAC86C,QAAOuI,gBAIvCkzB,GAA8BxP,YAAY,WAAY,KACtDpiD,EAAO7I,UAGT06D,GAAQ,IAAIwC,GAAMzC,GAAQ,CAAC4E,0BAA0B,IAErD3uE,GAAI,aAlIJ6pH,KAEA5oG,GAAKoU,UAAY,GAEjB92B,WAAW,KACT6lB,GAAO6lG,8BAAWhpG,IAClBmD,GAAK0I,OACHj1B,wBAAcytH,GAAU,CACtBv7C,OAAUA,GACVyoC,6BAFsB,GAGtBkT,YAAY,EACZ17C,MAASA,GACT27C,6BAA6B,EAC7BlT,0BAAyBA,OAG5B,KAxCLzyG,GAAIw7D,KAAO,IAAI17D,IAAS5E,QAAQsgE,KAAK,sBAAuB17D,GAC5DE,GAAI7E,MAAQ,IAAI2E,IAAS5E,QAAQC,MAAM,sBAAuB2E,GA6J9D,IAAIoqH,GAAyC,KAqH7C,MAAMC,GAAa,CACjBC,gBApHF,SAAyBjyG,GAWvB,OAVAA,EAAOkyG,QAAUpvH,IACf6uH,KACA9pH,GAAI7E,MAAM,kCAAmCF,IAE/Ckd,EAAOmyG,QAAU,KACfR,KACA9pH,GAAI,4BAEN+pH,GAAW5xG,GAEJ,CACL7I,MAAO,WACLw6G,QAwGJS,kBA5SF,SAA2B74H,GAMzB,OALAuvB,GAAOvvB,EAGPg4H,GAA2BzoG,GAAKoU,UAEzB80F,IAuSPK,gBApSF,SAAyB94H,GACvBi4H,GAAej4H,GAoSf+4H,kBAjSF,SAA2B/4H,GAEzB,OADAk4H,GAAiBl4H,EACVy4H,IAgSPO,YAjGF,SAASA,EACPx0G,EAAgB,KAChBF,EAAgB,YAChB20G,GAEA,MAAMC,IAAaD,EACbE,EAAaD,EACfn4H,EAAQ,IAASwgE,aAAa03D,GAC9Bl4H,EAAQ,IAAQwgE,eACdI,EAAS,IAAI7vC,UAAO,CAAC6vC,OAAQw3D,IACnC,IAAIC,EAA8B,KAqElC,OApEAz3D,EAAO3iD,GAAG,aAAeyH,IACL,OAAd2yG,IACFA,EAAUx7G,QACVtP,GAAIw7D,KACF,yCACA,oCAGJsvD,EAAY3yG,EACZA,EAAOkyG,QAAUlvH,IACf2vH,EAAY,KACZhB,KACA9pH,GAAI7E,MAAM,kCAAmCA,IAE/Cgd,EAAOmyG,QAAU,KACfQ,EAAY,KACZhB,KACA9pH,GAAI,4BAEN+pH,GAAW5xG,KAGbk7C,EAAO3iD,GAAG,QAAS49B,IACjBtT,GAAQsT,GACRtuC,GAAI7E,MAAM,sCAAuCmzC,GACjD47E,GAAuB3rH,WAAW,IAAMmsH,EAAYx0G,GAAO,OAG7D20G,EAAWn6G,GAAG,UAAW,CAACysF,EAASxtF,KAEjC,MAAMo7G,EAAcC,wBAAal3H,gBAAKm3H,UAAW,eAM3CC,EAA0B,8DACuB33H,KAAKC,UhItCzD,WACL,IACE,MAAM+P,EAAM65D,EJpOd,yCIqOE,GAAW,MAAP75D,EACF,OAAOhQ,KAAKyP,MAAMO,GAEpB,MAAOpI,IACT,OAAO,EgIgCDgwH,mEAEoD53H,KAAKC,UhIxB1D,WACL,IACE,MAAM+P,EAAM65D,EJxPd,yCI2PE,GAAW,MAAP75D,EACF,OAAOhQ,KAAKyP,MAAMO,GAEpB,MAAOpI,IACT,OAAO,EgIgBDiwH,6DAE8C73H,KAAKC,UACnD2rE,QAGJxvD,EAASkK,IACPqxG,EACE,MACAH,EAAYn4H,WACZ,MACC,iDAAgDsjB,aAAgBF,iBAC/D40G,EAAW,OAAS,gBAK5BC,EAAWn6G,GAAG,QAAS49B,IACrBtT,GAAQsT,GACRs7E,GAAe,+BACfM,GAAuB3rH,WAAW,IAAMmsH,EAAYx0G,GAAO,OAG7D20G,EAAW/2D,OAAO59C,EAAM,KACtB0zG,GAAe,uCAAyC1zG,EAAO,OAG1D,CACL5G,MAAO,WACLw7G,EAAY,KACZhB,KAC6B,OAAzBI,IACFjvG,aAAaivG,IAEf72D,EAAO/jD,QACPu7G,EAAWv7G,YAaF66G","file":"standalone.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 = 176);\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\nvar stylesInDom = {};\n\nvar\tmemoize = function (fn) {\n\tvar memo;\n\n\treturn function () {\n\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\treturn memo;\n\t};\n};\n\nvar isOldIE = memoize(function () {\n\t// Test for IE <= 9 as proposed by Browserhacks\n\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t// Tests for existence of standard globals is to allow style-loader\n\t// to operate correctly into non-standard environments\n\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\treturn window && document && document.all && !window.atob;\n});\n\nvar getTarget = function (target, parent) {\n if (parent){\n return parent.querySelector(target);\n }\n return document.querySelector(target);\n};\n\nvar getElement = (function (fn) {\n\tvar memo = {};\n\n\treturn function(target, parent) {\n // If passing function in options, then use it for resolve \"head\" element.\n // Useful for Shadow Root style i.e\n // {\n // insertInto: function () { return document.querySelector(\"#foo\").shadowRoot }\n // }\n if (typeof target === 'function') {\n return target();\n }\n if (typeof memo[target] === \"undefined\") {\n\t\t\tvar styleTarget = getTarget.call(this, target, parent);\n\t\t\t// Special case to return head of iframe instead of iframe itself\n\t\t\tif (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n\t\t\t\ttry {\n\t\t\t\t\t// This will throw an exception if access to iframe is blocked\n\t\t\t\t\t// due to cross-origin restrictions\n\t\t\t\t\tstyleTarget = styleTarget.contentDocument.head;\n\t\t\t\t} catch(e) {\n\t\t\t\t\tstyleTarget = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmemo[target] = styleTarget;\n\t\t}\n\t\treturn memo[target]\n\t};\n})();\n\nvar singleton = null;\nvar\tsingletonCounter = 0;\nvar\tstylesInsertedAtTop = [];\n\nvar\tfixUrls = require(\"./urls\");\n\nmodule.exports = function(list, options) {\n\tif (typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif (typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n\t// tags it will allow on a page\n\tif (!options.singleton && typeof options.singleton !== \"boolean\") options.singleton = isOldIE();\n\n\t// By default, add <style> tags to the <head> element\n if (!options.insertInto) options.insertInto = \"head\";\n\n\t// By default, add <style> tags to the bottom of the target\n\tif (!options.insertAt) options.insertAt = \"bottom\";\n\n\tvar styles = listToStyles(list, options);\n\n\taddStylesToDom(styles, options);\n\n\treturn function update (newList) {\n\t\tvar mayRemove = [];\n\n\t\tfor (var i = 0; i < styles.length; i++) {\n\t\t\tvar item = styles[i];\n\t\t\tvar domStyle = stylesInDom[item.id];\n\n\t\t\tdomStyle.refs--;\n\t\t\tmayRemove.push(domStyle);\n\t\t}\n\n\t\tif(newList) {\n\t\t\tvar newStyles = listToStyles(newList, options);\n\t\t\taddStylesToDom(newStyles, options);\n\t\t}\n\n\t\tfor (var i = 0; i < mayRemove.length; i++) {\n\t\t\tvar domStyle = mayRemove[i];\n\n\t\t\tif(domStyle.refs === 0) {\n\t\t\t\tfor (var j = 0; j < domStyle.parts.length; j++) domStyle.parts[j]();\n\n\t\t\t\tdelete stylesInDom[domStyle.id];\n\t\t\t}\n\t\t}\n\t};\n};\n\nfunction addStylesToDom (styles, options) {\n\tfor (var i = 0; i < styles.length; i++) {\n\t\tvar item = styles[i];\n\t\tvar domStyle = stylesInDom[item.id];\n\n\t\tif(domStyle) {\n\t\t\tdomStyle.refs++;\n\n\t\t\tfor(var j = 0; j < domStyle.parts.length; j++) {\n\t\t\t\tdomStyle.parts[j](item.parts[j]);\n\t\t\t}\n\n\t\t\tfor(; j < item.parts.length; j++) {\n\t\t\t\tdomStyle.parts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\t\t} else {\n\t\t\tvar parts = [];\n\n\t\t\tfor(var j = 0; j < item.parts.length; j++) {\n\t\t\t\tparts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\n\t\t\tstylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};\n\t\t}\n\t}\n}\n\nfunction listToStyles (list, options) {\n\tvar styles = [];\n\tvar newStyles = {};\n\n\tfor (var i = 0; i < list.length; i++) {\n\t\tvar item = list[i];\n\t\tvar id = options.base ? item[0] + options.base : item[0];\n\t\tvar css = item[1];\n\t\tvar media = item[2];\n\t\tvar sourceMap = item[3];\n\t\tvar part = {css: css, media: media, sourceMap: sourceMap};\n\n\t\tif(!newStyles[id]) styles.push(newStyles[id] = {id: id, parts: [part]});\n\t\telse newStyles[id].parts.push(part);\n\t}\n\n\treturn styles;\n}\n\nfunction insertStyleElement (options, style) {\n\tvar target = getElement(options.insertInto)\n\n\tif (!target) {\n\t\tthrow new Error(\"Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.\");\n\t}\n\n\tvar lastStyleElementInsertedAtTop = stylesInsertedAtTop[stylesInsertedAtTop.length - 1];\n\n\tif (options.insertAt === \"top\") {\n\t\tif (!lastStyleElementInsertedAtTop) {\n\t\t\ttarget.insertBefore(style, target.firstChild);\n\t\t} else if (lastStyleElementInsertedAtTop.nextSibling) {\n\t\t\ttarget.insertBefore(style, lastStyleElementInsertedAtTop.nextSibling);\n\t\t} else {\n\t\t\ttarget.appendChild(style);\n\t\t}\n\t\tstylesInsertedAtTop.push(style);\n\t} else if (options.insertAt === \"bottom\") {\n\t\ttarget.appendChild(style);\n\t} else if (typeof options.insertAt === \"object\" && options.insertAt.before) {\n\t\tvar nextSibling = getElement(options.insertAt.before, target);\n\t\ttarget.insertBefore(style, nextSibling);\n\t} else {\n\t\tthrow new Error(\"[Style Loader]\\n\\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\\n Must be 'top', 'bottom', or Object.\\n (https://github.com/webpack-contrib/style-loader#insertat)\\n\");\n\t}\n}\n\nfunction removeStyleElement (style) {\n\tif (style.parentNode === null) return false;\n\tstyle.parentNode.removeChild(style);\n\n\tvar idx = stylesInsertedAtTop.indexOf(style);\n\tif(idx >= 0) {\n\t\tstylesInsertedAtTop.splice(idx, 1);\n\t}\n}\n\nfunction createStyleElement (options) {\n\tvar style = document.createElement(\"style\");\n\n\tif(options.attrs.type === undefined) {\n\t\toptions.attrs.type = \"text/css\";\n\t}\n\n\tif(options.attrs.nonce === undefined) {\n\t\tvar nonce = getNonce();\n\t\tif (nonce) {\n\t\t\toptions.attrs.nonce = nonce;\n\t\t}\n\t}\n\n\taddAttrs(style, options.attrs);\n\tinsertStyleElement(options, style);\n\n\treturn style;\n}\n\nfunction createLinkElement (options) {\n\tvar link = document.createElement(\"link\");\n\n\tif(options.attrs.type === undefined) {\n\t\toptions.attrs.type = \"text/css\";\n\t}\n\toptions.attrs.rel = \"stylesheet\";\n\n\taddAttrs(link, options.attrs);\n\tinsertStyleElement(options, link);\n\n\treturn link;\n}\n\nfunction addAttrs (el, attrs) {\n\tObject.keys(attrs).forEach(function (key) {\n\t\tel.setAttribute(key, attrs[key]);\n\t});\n}\n\nfunction getNonce() {\n\tif (typeof __webpack_nonce__ === 'undefined') {\n\t\treturn null;\n\t}\n\n\treturn __webpack_nonce__;\n}\n\nfunction addStyle (obj, options) {\n\tvar style, update, remove, result;\n\n\t// If a transform function was defined, run it on the css\n\tif (options.transform && obj.css) {\n\t result = typeof options.transform === 'function'\n\t\t ? options.transform(obj.css) \n\t\t : options.transform.default(obj.css);\n\n\t if (result) {\n\t \t// If transform returns a value, use that instead of the original css.\n\t \t// This allows running runtime transformations on the css.\n\t \tobj.css = result;\n\t } else {\n\t \t// If the transform function returns a falsy value, don't add this css.\n\t \t// This allows conditional loading of css\n\t \treturn function() {\n\t \t\t// noop\n\t \t};\n\t }\n\t}\n\n\tif (options.singleton) {\n\t\tvar styleIndex = singletonCounter++;\n\n\t\tstyle = singleton || (singleton = createStyleElement(options));\n\n\t\tupdate = applyToSingletonTag.bind(null, style, styleIndex, false);\n\t\tremove = applyToSingletonTag.bind(null, style, styleIndex, true);\n\n\t} else if (\n\t\tobj.sourceMap &&\n\t\ttypeof URL === \"function\" &&\n\t\ttypeof URL.createObjectURL === \"function\" &&\n\t\ttypeof URL.revokeObjectURL === \"function\" &&\n\t\ttypeof Blob === \"function\" &&\n\t\ttypeof btoa === \"function\"\n\t) {\n\t\tstyle = createLinkElement(options);\n\t\tupdate = updateLink.bind(null, style, options);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\n\t\t\tif(style.href) URL.revokeObjectURL(style.href);\n\t\t};\n\t} else {\n\t\tstyle = createStyleElement(options);\n\t\tupdate = applyToTag.bind(null, style);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\t\t};\n\t}\n\n\tupdate(obj);\n\n\treturn function updateStyle (newObj) {\n\t\tif (newObj) {\n\t\t\tif (\n\t\t\t\tnewObj.css === obj.css &&\n\t\t\t\tnewObj.media === obj.media &&\n\t\t\t\tnewObj.sourceMap === obj.sourceMap\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tupdate(obj = newObj);\n\t\t} else {\n\t\t\tremove();\n\t\t}\n\t};\n}\n\nvar replaceText = (function () {\n\tvar textStore = [];\n\n\treturn function (index, replacement) {\n\t\ttextStore[index] = replacement;\n\n\t\treturn textStore.filter(Boolean).join('\\n');\n\t};\n})();\n\nfunction applyToSingletonTag (style, index, remove, obj) {\n\tvar css = remove ? \"\" : obj.css;\n\n\tif (style.styleSheet) {\n\t\tstyle.styleSheet.cssText = replaceText(index, css);\n\t} else {\n\t\tvar cssNode = document.createTextNode(css);\n\t\tvar childNodes = style.childNodes;\n\n\t\tif (childNodes[index]) style.removeChild(childNodes[index]);\n\n\t\tif (childNodes.length) {\n\t\t\tstyle.insertBefore(cssNode, childNodes[index]);\n\t\t} else {\n\t\t\tstyle.appendChild(cssNode);\n\t\t}\n\t}\n}\n\nfunction applyToTag (style, obj) {\n\tvar css = obj.css;\n\tvar media = obj.media;\n\n\tif(media) {\n\t\tstyle.setAttribute(\"media\", media)\n\t}\n\n\tif(style.styleSheet) {\n\t\tstyle.styleSheet.cssText = css;\n\t} else {\n\t\twhile(style.firstChild) {\n\t\t\tstyle.removeChild(style.firstChild);\n\t\t}\n\n\t\tstyle.appendChild(document.createTextNode(css));\n\t}\n}\n\nfunction updateLink (link, options, obj) {\n\tvar css = obj.css;\n\tvar sourceMap = obj.sourceMap;\n\n\t/*\n\t\tIf convertToAbsoluteUrls isn't defined, but sourcemaps are enabled\n\t\tand there is no publicPath defined then lets turn convertToAbsoluteUrls\n\t\ton by default. Otherwise default to the convertToAbsoluteUrls option\n\t\tdirectly\n\t*/\n\tvar autoFixUrls = options.convertToAbsoluteUrls === undefined && sourceMap;\n\n\tif (options.convertToAbsoluteUrls || autoFixUrls) {\n\t\tcss = fixUrls(css);\n\t}\n\n\tif (sourceMap) {\n\t\t// http://stackoverflow.com/a/26603875\n\t\tcss += \"\\n/*# sourceMappingURL=data:application/json;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + \" */\";\n\t}\n\n\tvar blob = new Blob([css], { type: \"text/css\" });\n\n\tvar oldSrc = link.href;\n\n\tlink.href = URL.createObjectURL(blob);\n\n\tif(oldSrc) URL.revokeObjectURL(oldSrc);\n}\n","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./SettingsShared.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./SettingsShared.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./SettingsShared.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./Profiler.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./Profiler.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./Profiler.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./KeyValue.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./KeyValue.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./KeyValue.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./InspectedElementSharedStyles.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./InspectedElementSharedStyles.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./InspectedElementSharedStyles.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./InspectedElementHooksTree.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./InspectedElementHooksTree.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./InspectedElementHooksTree.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./SidebarCommitInfo.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./SidebarCommitInfo.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./SidebarCommitInfo.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./InspectedElementView.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./InspectedElementView.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./InspectedElementView.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./OwnersStack.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./OwnersStack.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./OwnersStack.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./TabBar.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./TabBar.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./TabBar.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./WhatChanged.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./WhatChanged.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./WhatChanged.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","// Import support https://stackoverflow.com/questions/13673346/supporting-both-commonjs-and-amd\n(function(name, definition) {\n if (typeof module !== \"undefined\") { module.exports = definition(); }\n else if (typeof define === \"function\" && typeof define.amd === \"object\") { define(definition); }\n else { this[name] = definition(); }\n}(\"clipboard\", function() {\n if (typeof document === 'undefined' || !document.addEventListener) {\n return null;\n }\n\n var clipboard = {};\n\n clipboard.copy = (function() {\n var _intercept = false;\n var _data = null; // Map from data type (e.g. \"text/html\") to value.\n var _bogusSelection = false;\n\n function cleanup() {\n _intercept = false;\n _data = null;\n if (_bogusSelection) {\n window.getSelection().removeAllRanges();\n }\n _bogusSelection = false;\n }\n\n document.addEventListener(\"copy\", function(e) {\n if (_intercept) {\n for (var key in _data) {\n e.clipboardData.setData(key, _data[key]);\n }\n e.preventDefault();\n }\n });\n\n // Workaround for Safari: https://bugs.webkit.org/show_bug.cgi?id=156529\n function bogusSelect() {\n var sel = document.getSelection();\n // If \"nothing\" is selected...\n if (!document.queryCommandEnabled(\"copy\") && sel.isCollapsed) {\n // ... temporarily select the entire body.\n //\n // We select the entire body because:\n // - it's guaranteed to exist,\n // - it works (unlike, say, document.head, or phantom element that is\n // not inserted into the DOM),\n // - it doesn't seem to flicker (due to the synchronous copy event), and\n // - it avoids modifying the DOM (can trigger mutation observers).\n //\n // Because we can't do proper feature detection (we already checked\n // document.queryCommandEnabled(\"copy\") , which actually gives a false\n // negative for Blink when nothing is selected) and UA sniffing is not\n // reliable (a lot of UA strings contain \"Safari\"), this will also\n // happen for some browsers other than Safari. :-()\n var range = document.createRange();\n range.selectNodeContents(document.body);\n sel.removeAllRanges();\n sel.addRange(range);\n _bogusSelection = true;\n }\n };\n\n return function(data) {\n return new Promise(function(resolve, reject) {\n _intercept = true;\n if (typeof data === \"string\") {\n _data = {\"text/plain\": data};\n } else if (data instanceof Node) {\n _data = {\"text/html\": new XMLSerializer().serializeToString(data)};\n } else if (data instanceof Object){\n _data = data;\n } else {\n reject(\"Invalid data type. Must be string, DOM node, or an object mapping MIME types to strings.\")\n }\n\n function triggerCopy(tryBogusSelect) {\n try {\n if (document.execCommand(\"copy\")) {\n // document.execCommand is synchronous: http://www.w3.org/TR/2015/WD-clipboard-apis-20150421/#integration-with-rich-text-editing-apis\n // So we can call resolve() back here.\n cleanup();\n resolve();\n }\n else {\n if (!tryBogusSelect) {\n bogusSelect();\n triggerCopy(true);\n } else {\n cleanup();\n throw new Error(\"Unable to copy. Perhaps it's not available in your browser?\");\n }\n }\n } catch (e) {\n cleanup();\n reject(e);\n }\n }\n triggerCopy(false);\n\n });\n };\n })();\n\n clipboard.paste = (function() {\n var _intercept = false;\n var _resolve;\n var _dataType;\n\n document.addEventListener(\"paste\", function(e) {\n if (_intercept) {\n _intercept = false;\n e.preventDefault();\n var resolve = _resolve;\n _resolve = null;\n resolve(e.clipboardData.getData(_dataType));\n }\n });\n\n return function(dataType) {\n return new Promise(function(resolve, reject) {\n _intercept = true;\n _resolve = resolve;\n _dataType = dataType || \"text/plain\";\n try {\n if (!document.execCommand(\"paste\")) {\n _intercept = false;\n reject(new Error(\"Unable to paste. Pasting only works in Internet Explorer at the moment.\"));\n }\n } catch (e) {\n _intercept = false;\n reject(new Error(e));\n }\n });\n };\n })();\n\n // Handle IE behaviour.\n if (typeof ClipboardEvent === \"undefined\" &&\n typeof window.clipboardData !== \"undefined\" &&\n typeof window.clipboardData.setData !== \"undefined\") {\n\n /*! promise-polyfill 2.0.1 */\n (function(a){function b(a,b){return function(){a.apply(b,arguments)}}function c(a){if(\"object\"!=typeof this)throw new TypeError(\"Promises must be constructed via new\");if(\"function\"!=typeof a)throw new TypeError(\"not a function\");this._state=null,this._value=null,this._deferreds=[],i(a,b(e,this),b(f,this))}function d(a){var b=this;return null===this._state?void this._deferreds.push(a):void j(function(){var c=b._state?a.onFulfilled:a.onRejected;if(null===c)return void(b._state?a.resolve:a.reject)(b._value);var d;try{d=c(b._value)}catch(e){return void a.reject(e)}a.resolve(d)})}function e(a){try{if(a===this)throw new TypeError(\"A promise cannot be resolved with itself.\");if(a&&(\"object\"==typeof a||\"function\"==typeof a)){var c=a.then;if(\"function\"==typeof c)return void i(b(c,a),b(e,this),b(f,this))}this._state=!0,this._value=a,g.call(this)}catch(d){f.call(this,d)}}function f(a){this._state=!1,this._value=a,g.call(this)}function g(){for(var a=0,b=this._deferreds.length;b>a;a++)d.call(this,this._deferreds[a]);this._deferreds=null}function h(a,b,c,d){this.onFulfilled=\"function\"==typeof a?a:null,this.onRejected=\"function\"==typeof b?b:null,this.resolve=c,this.reject=d}function i(a,b,c){var d=!1;try{a(function(a){d||(d=!0,b(a))},function(a){d||(d=!0,c(a))})}catch(e){if(d)return;d=!0,c(e)}}var j=c.immediateFn||\"function\"==typeof setImmediate&&setImmediate||function(a){setTimeout(a,1)},k=Array.isArray||function(a){return\"[object Array]\"===Object.prototype.toString.call(a)};c.prototype[\"catch\"]=function(a){return this.then(null,a)},c.prototype.then=function(a,b){var e=this;return new c(function(c,f){d.call(e,new h(a,b,c,f))})},c.all=function(){var a=Array.prototype.slice.call(1===arguments.length&&k(arguments[0])?arguments[0]:arguments);return new c(function(b,c){function d(f,g){try{if(g&&(\"object\"==typeof g||\"function\"==typeof g)){var h=g.then;if(\"function\"==typeof h)return void h.call(g,function(a){d(f,a)},c)}a[f]=g,0===--e&&b(a)}catch(i){c(i)}}if(0===a.length)return b([]);for(var e=a.length,f=0;f<a.length;f++)d(f,a[f])})},c.resolve=function(a){return a&&\"object\"==typeof a&&a.constructor===c?a:new c(function(b){b(a)})},c.reject=function(a){return new c(function(b,c){c(a)})},c.race=function(a){return new c(function(b,c){for(var d=0,e=a.length;e>d;d++)a[d].then(b,c)})},\"undefined\"!=typeof module&&module.exports?module.exports=c:a.Promise||(a.Promise=c)})(this);\n\n clipboard.copy = function(data) {\n return new Promise(function(resolve, reject) {\n // IE supports string and URL types: https://msdn.microsoft.com/en-us/library/ms536744(v=vs.85).aspx\n // We only support the string type for now.\n if (typeof data !== \"string\" && !(\"text/plain\" in data)) {\n throw new Error(\"You must provide a text/plain type.\");\n }\n\n var strData = (typeof data === \"string\" ? data : data[\"text/plain\"]);\n var copySucceeded = window.clipboardData.setData(\"Text\", strData);\n if (copySucceeded) {\n resolve();\n } else {\n reject(new Error(\"Copying was rejected.\"));\n }\n });\n };\n\n clipboard.paste = function() {\n return new Promise(function(resolve, reject) {\n var strData = window.clipboardData.getData(\"Text\");\n if (strData) {\n resolve(strData);\n } else {\n // The user rejected the paste request.\n reject(new Error(\"Pasting was rejected.\"));\n }\n });\n };\n }\n\n return clipboard;\n}));\n","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./InspectedElement.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./InspectedElement.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./InspectedElement.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./Element.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./Element.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./Element.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../../node_modules/css-loader/index.js??ref--5-1!./LayoutViewer.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../../node_modules/css-loader/index.js??ref--5-1!./LayoutViewer.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../../node_modules/css-loader/index.js??ref--5-1!./LayoutViewer.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../../node_modules/css-loader/index.js??ref--5-1!./StyleEditor.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../../node_modules/css-loader/index.js??ref--5-1!./StyleEditor.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../../node_modules/css-loader/index.js??ref--5-1!./StyleEditor.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./ErrorBoundary.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./ErrorBoundary.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./ErrorBoundary.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./SearchInput.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./SearchInput.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./SearchInput.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./Tree.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./Tree.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./Tree.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./SidebarInteractions.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./SidebarInteractions.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./SidebarInteractions.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./SidebarSelectedFiberInfo.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./SidebarSelectedFiberInfo.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./SidebarSelectedFiberInfo.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./Components.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./Components.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./Components.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./DevTools.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./DevTools.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./DevTools.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","'use strict';\n\nmodule.exports = {\n BINARY_TYPES: ['nodebuffer', 'arraybuffer', 'fragments'],\n GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',\n kStatusCode: Symbol('status-code'),\n kWebSocket: Symbol('websocket'),\n EMPTY_BUFFER: Buffer.alloc(0),\n NOOP: () => {}\n};\n","\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./Tooltip.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./Tooltip.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./Tooltip.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","module.exports = require(\"path\");","\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./ModalDialog.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./ModalDialog.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./ModalDialog.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./SettingsModal.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./SettingsModal.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./SettingsModal.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./InteractionListItem.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./InteractionListItem.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./InteractionListItem.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./SnapshotSelector.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./SnapshotSelector.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./SnapshotSelector.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","'use strict';\n\nif (typeof window === 'undefined' || typeof MessageChannel !== 'function') {\n module.exports = require('./unstable_no_dom');\n} else if (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","module.exports = require(\"fs\");","exports = module.exports = SemVer\n\nvar debug\n/* istanbul ignore next */\nif (typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)) {\n debug = function () {\n var args = Array.prototype.slice.call(arguments, 0)\n args.unshift('SEMVER')\n console.log.apply(console, args)\n }\n} else {\n debug = function () {}\n}\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nexports.SEMVER_SPEC_VERSION = '2.0.0'\n\nvar MAX_LENGTH = 256\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n /* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nvar MAX_SAFE_COMPONENT_LENGTH = 16\n\n// The actual regexps go on exports.re\nvar re = exports.re = []\nvar src = exports.src = []\nvar t = exports.tokens = {}\nvar R = 0\n\nfunction tok (n) {\n t[n] = R++\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ntok('NUMERICIDENTIFIER')\nsrc[t.NUMERICIDENTIFIER] = '0|[1-9]\\\\d*'\ntok('NUMERICIDENTIFIERLOOSE')\nsrc[t.NUMERICIDENTIFIERLOOSE] = '[0-9]+'\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ntok('NONNUMERICIDENTIFIER')\nsrc[t.NONNUMERICIDENTIFIER] = '\\\\d*[a-zA-Z-][a-zA-Z0-9-]*'\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ntok('MAINVERSION')\nsrc[t.MAINVERSION] = '(' + src[t.NUMERICIDENTIFIER] + ')\\\\.' +\n '(' + src[t.NUMERICIDENTIFIER] + ')\\\\.' +\n '(' + src[t.NUMERICIDENTIFIER] + ')'\n\ntok('MAINVERSIONLOOSE')\nsrc[t.MAINVERSIONLOOSE] = '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\\\.' +\n '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\\\.' +\n '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')'\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ntok('PRERELEASEIDENTIFIER')\nsrc[t.PRERELEASEIDENTIFIER] = '(?:' + src[t.NUMERICIDENTIFIER] +\n '|' + src[t.NONNUMERICIDENTIFIER] + ')'\n\ntok('PRERELEASEIDENTIFIERLOOSE')\nsrc[t.PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[t.NUMERICIDENTIFIERLOOSE] +\n '|' + src[t.NONNUMERICIDENTIFIER] + ')'\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ntok('PRERELEASE')\nsrc[t.PRERELEASE] = '(?:-(' + src[t.PRERELEASEIDENTIFIER] +\n '(?:\\\\.' + src[t.PRERELEASEIDENTIFIER] + ')*))'\n\ntok('PRERELEASELOOSE')\nsrc[t.PRERELEASELOOSE] = '(?:-?(' + src[t.PRERELEASEIDENTIFIERLOOSE] +\n '(?:\\\\.' + src[t.PRERELEASEIDENTIFIERLOOSE] + ')*))'\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ntok('BUILDIDENTIFIER')\nsrc[t.BUILDIDENTIFIER] = '[0-9A-Za-z-]+'\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ntok('BUILD')\nsrc[t.BUILD] = '(?:\\\\+(' + src[t.BUILDIDENTIFIER] +\n '(?:\\\\.' + src[t.BUILDIDENTIFIER] + ')*))'\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ntok('FULL')\ntok('FULLPLAIN')\nsrc[t.FULLPLAIN] = 'v?' + src[t.MAINVERSION] +\n src[t.PRERELEASE] + '?' +\n src[t.BUILD] + '?'\n\nsrc[t.FULL] = '^' + src[t.FULLPLAIN] + '$'\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ntok('LOOSEPLAIN')\nsrc[t.LOOSEPLAIN] = '[v=\\\\s]*' + src[t.MAINVERSIONLOOSE] +\n src[t.PRERELEASELOOSE] + '?' +\n src[t.BUILD] + '?'\n\ntok('LOOSE')\nsrc[t.LOOSE] = '^' + src[t.LOOSEPLAIN] + '$'\n\ntok('GTLT')\nsrc[t.GTLT] = '((?:<|>)?=?)'\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ntok('XRANGEIDENTIFIERLOOSE')\nsrc[t.XRANGEIDENTIFIERLOOSE] = src[t.NUMERICIDENTIFIERLOOSE] + '|x|X|\\\\*'\ntok('XRANGEIDENTIFIER')\nsrc[t.XRANGEIDENTIFIER] = src[t.NUMERICIDENTIFIER] + '|x|X|\\\\*'\n\ntok('XRANGEPLAIN')\nsrc[t.XRANGEPLAIN] = '[v=\\\\s]*(' + src[t.XRANGEIDENTIFIER] + ')' +\n '(?:\\\\.(' + src[t.XRANGEIDENTIFIER] + ')' +\n '(?:\\\\.(' + src[t.XRANGEIDENTIFIER] + ')' +\n '(?:' + src[t.PRERELEASE] + ')?' +\n src[t.BUILD] + '?' +\n ')?)?'\n\ntok('XRANGEPLAINLOOSE')\nsrc[t.XRANGEPLAINLOOSE] = '[v=\\\\s]*(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:\\\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:\\\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:' + src[t.PRERELEASELOOSE] + ')?' +\n src[t.BUILD] + '?' +\n ')?)?'\n\ntok('XRANGE')\nsrc[t.XRANGE] = '^' + src[t.GTLT] + '\\\\s*' + src[t.XRANGEPLAIN] + '$'\ntok('XRANGELOOSE')\nsrc[t.XRANGELOOSE] = '^' + src[t.GTLT] + '\\\\s*' + src[t.XRANGEPLAINLOOSE] + '$'\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ntok('COERCE')\nsrc[t.COERCE] = '(^|[^\\\\d])' +\n '(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' +\n '(?:\\\\.(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +\n '(?:\\\\.(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +\n '(?:$|[^\\\\d])'\ntok('COERCERTL')\nre[t.COERCERTL] = new RegExp(src[t.COERCE], 'g')\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ntok('LONETILDE')\nsrc[t.LONETILDE] = '(?:~>?)'\n\ntok('TILDETRIM')\nsrc[t.TILDETRIM] = '(\\\\s*)' + src[t.LONETILDE] + '\\\\s+'\nre[t.TILDETRIM] = new RegExp(src[t.TILDETRIM], 'g')\nvar tildeTrimReplace = '$1~'\n\ntok('TILDE')\nsrc[t.TILDE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAIN] + '$'\ntok('TILDELOOSE')\nsrc[t.TILDELOOSE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAINLOOSE] + '$'\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ntok('LONECARET')\nsrc[t.LONECARET] = '(?:\\\\^)'\n\ntok('CARETTRIM')\nsrc[t.CARETTRIM] = '(\\\\s*)' + src[t.LONECARET] + '\\\\s+'\nre[t.CARETTRIM] = new RegExp(src[t.CARETTRIM], 'g')\nvar caretTrimReplace = '$1^'\n\ntok('CARET')\nsrc[t.CARET] = '^' + src[t.LONECARET] + src[t.XRANGEPLAIN] + '$'\ntok('CARETLOOSE')\nsrc[t.CARETLOOSE] = '^' + src[t.LONECARET] + src[t.XRANGEPLAINLOOSE] + '$'\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ntok('COMPARATORLOOSE')\nsrc[t.COMPARATORLOOSE] = '^' + src[t.GTLT] + '\\\\s*(' + src[t.LOOSEPLAIN] + ')$|^$'\ntok('COMPARATOR')\nsrc[t.COMPARATOR] = '^' + src[t.GTLT] + '\\\\s*(' + src[t.FULLPLAIN] + ')$|^$'\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ntok('COMPARATORTRIM')\nsrc[t.COMPARATORTRIM] = '(\\\\s*)' + src[t.GTLT] +\n '\\\\s*(' + src[t.LOOSEPLAIN] + '|' + src[t.XRANGEPLAIN] + ')'\n\n// this one has to use the /g flag\nre[t.COMPARATORTRIM] = new RegExp(src[t.COMPARATORTRIM], 'g')\nvar comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ntok('HYPHENRANGE')\nsrc[t.HYPHENRANGE] = '^\\\\s*(' + src[t.XRANGEPLAIN] + ')' +\n '\\\\s+-\\\\s+' +\n '(' + src[t.XRANGEPLAIN] + ')' +\n '\\\\s*$'\n\ntok('HYPHENRANGELOOSE')\nsrc[t.HYPHENRANGELOOSE] = '^\\\\s*(' + src[t.XRANGEPLAINLOOSE] + ')' +\n '\\\\s+-\\\\s+' +\n '(' + src[t.XRANGEPLAINLOOSE] + ')' +\n '\\\\s*$'\n\n// Star ranges basically just allow anything at all.\ntok('STAR')\nsrc[t.STAR] = '(<|>)?=?\\\\s*\\\\*'\n\n// Compile to actual regexp objects.\n// All are flag-free, unless they were created above with a flag.\nfor (var i = 0; i < R; i++) {\n debug(i, src[i])\n if (!re[i]) {\n re[i] = new RegExp(src[i])\n }\n}\n\nexports.parse = parse\nfunction parse (version, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n if (version.length > MAX_LENGTH) {\n return null\n }\n\n var r = options.loose ? re[t.LOOSE] : re[t.FULL]\n if (!r.test(version)) {\n return null\n }\n\n try {\n return new SemVer(version, options)\n } catch (er) {\n return null\n }\n}\n\nexports.valid = valid\nfunction valid (version, options) {\n var v = parse(version, options)\n return v ? v.version : null\n}\n\nexports.clean = clean\nfunction clean (version, options) {\n var s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\n\nexports.SemVer = SemVer\n\nfunction SemVer (version, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n if (version instanceof SemVer) {\n if (version.loose === options.loose) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError('Invalid Version: ' + version)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')\n }\n\n if (!(this instanceof SemVer)) {\n return new SemVer(version, options)\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n\n var m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError('Invalid Version: ' + version)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map(function (id) {\n if (/^[0-9]+$/.test(id)) {\n var num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n}\n\nSemVer.prototype.format = function () {\n this.version = this.major + '.' + this.minor + '.' + this.patch\n if (this.prerelease.length) {\n this.version += '-' + this.prerelease.join('.')\n }\n return this.version\n}\n\nSemVer.prototype.toString = function () {\n return this.version\n}\n\nSemVer.prototype.compare = function (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return this.compareMain(other) || this.comparePre(other)\n}\n\nSemVer.prototype.compareMain = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n}\n\nSemVer.prototype.comparePre = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n var i = 0\n do {\n var a = this.prerelease[i]\n var b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n}\n\nSemVer.prototype.compareBuild = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n var i = 0\n do {\n var a = this.build[i]\n var b = other.build[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n}\n\n// preminor will bump the version up to the next minor release, and immediately\n// down to pre-release. premajor and prepatch work the same way.\nSemVer.prototype.inc = function (release, identifier) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier)\n this.inc('pre', identifier)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier)\n }\n this.inc('pre', identifier)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 \"pre\" would become 1.0.0-0 which is the wrong direction.\n case 'pre':\n if (this.prerelease.length === 0) {\n this.prerelease = [0]\n } else {\n var i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n this.prerelease.push(0)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n if (this.prerelease[0] === identifier) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = [identifier, 0]\n }\n } else {\n this.prerelease = [identifier, 0]\n }\n }\n break\n\n default:\n throw new Error('invalid increment argument: ' + release)\n }\n this.format()\n this.raw = this.version\n return this\n}\n\nexports.inc = inc\nfunction inc (version, release, loose, identifier) {\n if (typeof (loose) === 'string') {\n identifier = loose\n loose = undefined\n }\n\n try {\n return new SemVer(version, loose).inc(release, identifier).version\n } catch (er) {\n return null\n }\n}\n\nexports.diff = diff\nfunction diff (version1, version2) {\n if (eq(version1, version2)) {\n return null\n } else {\n var v1 = parse(version1)\n var v2 = parse(version2)\n var prefix = ''\n if (v1.prerelease.length || v2.prerelease.length) {\n prefix = 'pre'\n var defaultResult = 'prerelease'\n }\n for (var key in v1) {\n if (key === 'major' || key === 'minor' || key === 'patch') {\n if (v1[key] !== v2[key]) {\n return prefix + key\n }\n }\n }\n return defaultResult // may be undefined\n }\n}\n\nexports.compareIdentifiers = compareIdentifiers\n\nvar numeric = /^[0-9]+$/\nfunction compareIdentifiers (a, b) {\n var anum = numeric.test(a)\n var bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nexports.rcompareIdentifiers = rcompareIdentifiers\nfunction rcompareIdentifiers (a, b) {\n return compareIdentifiers(b, a)\n}\n\nexports.major = major\nfunction major (a, loose) {\n return new SemVer(a, loose).major\n}\n\nexports.minor = minor\nfunction minor (a, loose) {\n return new SemVer(a, loose).minor\n}\n\nexports.patch = patch\nfunction patch (a, loose) {\n return new SemVer(a, loose).patch\n}\n\nexports.compare = compare\nfunction compare (a, b, loose) {\n return new SemVer(a, loose).compare(new SemVer(b, loose))\n}\n\nexports.compareLoose = compareLoose\nfunction compareLoose (a, b) {\n return compare(a, b, true)\n}\n\nexports.compareBuild = compareBuild\nfunction compareBuild (a, b, loose) {\n var versionA = new SemVer(a, loose)\n var versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\n\nexports.rcompare = rcompare\nfunction rcompare (a, b, loose) {\n return compare(b, a, loose)\n}\n\nexports.sort = sort\nfunction sort (list, loose) {\n return list.sort(function (a, b) {\n return exports.compareBuild(a, b, loose)\n })\n}\n\nexports.rsort = rsort\nfunction rsort (list, loose) {\n return list.sort(function (a, b) {\n return exports.compareBuild(b, a, loose)\n })\n}\n\nexports.gt = gt\nfunction gt (a, b, loose) {\n return compare(a, b, loose) > 0\n}\n\nexports.lt = lt\nfunction lt (a, b, loose) {\n return compare(a, b, loose) < 0\n}\n\nexports.eq = eq\nfunction eq (a, b, loose) {\n return compare(a, b, loose) === 0\n}\n\nexports.neq = neq\nfunction neq (a, b, loose) {\n return compare(a, b, loose) !== 0\n}\n\nexports.gte = gte\nfunction gte (a, b, loose) {\n return compare(a, b, loose) >= 0\n}\n\nexports.lte = lte\nfunction lte (a, b, loose) {\n return compare(a, b, loose) <= 0\n}\n\nexports.cmp = cmp\nfunction cmp (a, op, b, loose) {\n switch (op) {\n case '===':\n if (typeof a === 'object')\n a = a.version\n if (typeof b === 'object')\n b = b.version\n return a === b\n\n case '!==':\n if (typeof a === 'object')\n a = a.version\n if (typeof b === 'object')\n b = b.version\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError('Invalid operator: ' + op)\n }\n}\n\nexports.Comparator = Comparator\nfunction Comparator (comp, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n if (!(this instanceof Comparator)) {\n return new Comparator(comp, options)\n }\n\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n}\n\nvar ANY = {}\nComparator.prototype.parse = function (comp) {\n var r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n var m = comp.match(r)\n\n if (!m) {\n throw new TypeError('Invalid comparator: ' + comp)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n}\n\nComparator.prototype.toString = function () {\n return this.value\n}\n\nComparator.prototype.test = function (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n}\n\nComparator.prototype.intersects = function (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n var rangeTmp\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n rangeTmp = new Range(comp.value, options)\n return satisfies(this.value, rangeTmp, options)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n rangeTmp = new Range(this.value, options)\n return satisfies(comp.semver, rangeTmp, options)\n }\n\n var sameDirectionIncreasing =\n (this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '>=' || comp.operator === '>')\n var sameDirectionDecreasing =\n (this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '<=' || comp.operator === '<')\n var sameSemVer = this.semver.version === comp.semver.version\n var differentDirectionsInclusive =\n (this.operator === '>=' || this.operator === '<=') &&\n (comp.operator === '>=' || comp.operator === '<=')\n var oppositeDirectionsLessThan =\n cmp(this.semver, '<', comp.semver, options) &&\n ((this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '<=' || comp.operator === '<'))\n var oppositeDirectionsGreaterThan =\n cmp(this.semver, '>', comp.semver, options) &&\n ((this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '>=' || comp.operator === '>'))\n\n return sameDirectionIncreasing || sameDirectionDecreasing ||\n (sameSemVer && differentDirectionsInclusive) ||\n oppositeDirectionsLessThan || oppositeDirectionsGreaterThan\n}\n\nexports.Range = Range\nfunction Range (range, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (range instanceof Range) {\n if (range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n return new Range(range.value, options)\n }\n\n if (!(this instanceof Range)) {\n return new Range(range, options)\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First, split based on boolean or ||\n this.raw = range\n this.set = range.split(/\\s*\\|\\|\\s*/).map(function (range) {\n return this.parseRange(range.trim())\n }, this).filter(function (c) {\n // throw out any that are not relevant for whatever reason\n return c.length\n })\n\n if (!this.set.length) {\n throw new TypeError('Invalid SemVer Range: ' + range)\n }\n\n this.format()\n}\n\nRange.prototype.format = function () {\n this.range = this.set.map(function (comps) {\n return comps.join(' ').trim()\n }).join('||').trim()\n return this.range\n}\n\nRange.prototype.toString = function () {\n return this.range\n}\n\nRange.prototype.parseRange = function (range) {\n var loose = this.options.loose\n range = range.trim()\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n var hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace)\n debug('hyphen replace', range)\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range, re[t.COMPARATORTRIM])\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n\n // normalize spaces\n range = range.split(/\\s+/).join(' ')\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n var compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n var set = range.split(' ').map(function (comp) {\n return parseComparator(comp, this.options)\n }, this).join(' ').split(/\\s+/)\n if (this.options.loose) {\n // in loose mode, throw out any that are not valid comparators\n set = set.filter(function (comp) {\n return !!comp.match(compRe)\n })\n }\n set = set.map(function (comp) {\n return new Comparator(comp, this.options)\n }, this)\n\n return set\n}\n\nRange.prototype.intersects = function (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some(function (thisComparators) {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some(function (rangeComparators) {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every(function (thisComparator) {\n return rangeComparators.every(function (rangeComparator) {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n}\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nfunction isSatisfiable (comparators, options) {\n var result = true\n var remainingComparators = comparators.slice()\n var testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every(function (otherComparator) {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// Mostly just for testing and legacy API reasons\nexports.toComparators = toComparators\nfunction toComparators (range, options) {\n return new Range(range, options).set.map(function (comp) {\n return comp.map(function (c) {\n return c.value\n }).join(' ').trim().split(' ')\n })\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nfunction parseComparator (comp, options) {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nfunction isX (id) {\n return !id || id.toLowerCase() === 'x' || id === '*'\n}\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0\nfunction replaceTildes (comp, options) {\n return comp.trim().split(/\\s+/).map(function (comp) {\n return replaceTilde(comp, options)\n }).join(' ')\n}\n\nfunction replaceTilde (comp, options) {\n var r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, function (_, M, m, p, pr) {\n debug('tilde', comp, _, M, m, p, pr)\n var ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + M + '.' + (+m + 1) + '.0'\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + (+m + 1) + '.0'\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0\n// ^1.2.3 --> >=1.2.3 <2.0.0\n// ^1.2.0 --> >=1.2.0 <2.0.0\nfunction replaceCarets (comp, options) {\n return comp.trim().split(/\\s+/).map(function (comp) {\n return replaceCaret(comp, options)\n }).join(' ')\n}\n\nfunction replaceCaret (comp, options) {\n debug('caret', comp, options)\n var r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n return comp.replace(r, function (_, M, m, p, pr) {\n debug('caret', comp, _, M, m, p, pr)\n var ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'\n } else if (isX(p)) {\n if (M === '0') {\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'\n } else {\n ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + M + '.' + m + '.' + (+p + 1)\n } else {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + M + '.' + (+m + 1) + '.0'\n }\n } else {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + (+M + 1) + '.0.0'\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + m + '.' + (+p + 1)\n } else {\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + (+m + 1) + '.0'\n }\n } else {\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + (+M + 1) + '.0.0'\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nfunction replaceXRanges (comp, options) {\n debug('replaceXRanges', comp, options)\n return comp.split(/\\s+/).map(function (comp) {\n return replaceXRange(comp, options)\n }).join(' ')\n}\n\nfunction replaceXRange (comp, options) {\n comp = comp.trim()\n var r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, function (ret, gtlt, M, m, p, pr) {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n var xM = isX(M)\n var xm = xM || isX(m)\n var xp = xm || isX(p)\n var anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n // >1.2.3 => >= 1.2.4\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n ret = gtlt + M + '.' + m + '.' + p + pr\n } else if (xm) {\n ret = '>=' + M + '.0.0' + pr + ' <' + (+M + 1) + '.0.0' + pr\n } else if (xp) {\n ret = '>=' + M + '.' + m + '.0' + pr +\n ' <' + M + '.' + (+m + 1) + '.0' + pr\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nfunction replaceStars (comp, options) {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp.trim().replace(re[t.STAR], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0\nfunction hyphenReplace ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = '>=' + fM + '.0.0'\n } else if (isX(fp)) {\n from = '>=' + fM + '.' + fm + '.0'\n } else {\n from = '>=' + from\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = '<' + (+tM + 1) + '.0.0'\n } else if (isX(tp)) {\n to = '<' + tM + '.' + (+tm + 1) + '.0'\n } else if (tpr) {\n to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr\n } else {\n to = '<=' + to\n }\n\n return (from + ' ' + to).trim()\n}\n\n// if ANY of the sets match ALL of its comparators, then pass\nRange.prototype.test = function (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (var i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n}\n\nfunction testSet (set, version, options) {\n for (var i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n var allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n\nexports.satisfies = satisfies\nfunction satisfies (version, range, options) {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\n\nexports.maxSatisfying = maxSatisfying\nfunction maxSatisfying (versions, range, options) {\n var max = null\n var maxSV = null\n try {\n var rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach(function (v) {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\n\nexports.minSatisfying = minSatisfying\nfunction minSatisfying (versions, range, options) {\n var min = null\n var minSV = null\n try {\n var rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach(function (v) {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\n\nexports.minVersion = minVersion\nfunction minVersion (range, loose) {\n range = new Range(range, loose)\n\n var minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (var i = 0; i < range.set.length; ++i) {\n var comparators = range.set[i]\n\n comparators.forEach(function (comparator) {\n // Clone to avoid manipulating the comparator's semver object.\n var compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!minver || gt(minver, compver)) {\n minver = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error('Unexpected operation: ' + comparator.operator)\n }\n })\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\n\nexports.validRange = validRange\nfunction validRange (range, options) {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\n\n// Determine if version is less than all the versions possible in the range\nexports.ltr = ltr\nfunction ltr (version, range, options) {\n return outside(version, range, '<', options)\n}\n\n// Determine if version is greater than all the versions possible in the range.\nexports.gtr = gtr\nfunction gtr (version, range, options) {\n return outside(version, range, '>', options)\n}\n\nexports.outside = outside\nfunction outside (version, range, hilo, options) {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n var gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisifes the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (var i = 0; i < range.set.length; ++i) {\n var comparators = range.set[i]\n\n var high = null\n var low = null\n\n comparators.forEach(function (comparator) {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nexports.prerelease = prerelease\nfunction prerelease (version, options) {\n var parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\n\nexports.intersects = intersects\nfunction intersects (r1, r2, options) {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2)\n}\n\nexports.coerce = coerce\nfunction coerce (version, options) {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n var match = null\n if (!options.rtl) {\n match = version.match(re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n var next\n while ((next = re[t.COERCERTL].exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n re[t.COERCERTL].lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n return parse(match[2] +\n '.' + (match[3] || '0') +\n '.' + (match[4] || '0'), options)\n}\n","\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./Toggle.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./Toggle.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./Toggle.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./ChartNode.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./ChartNode.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./ChartNode.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./HoveredFiberInfo.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./HoveredFiberInfo.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./HoveredFiberInfo.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./ProfilingImportExportButtons.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./ProfilingImportExportButtons.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./ProfilingImportExportButtons.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","'use strict';\n\nconst zlib = require('zlib');\n\nconst bufferUtil = require('./buffer-util');\nconst Limiter = require('./limiter');\nconst { kStatusCode, NOOP } = require('./constants');\n\nconst TRAILER = Buffer.from([0x00, 0x00, 0xff, 0xff]);\nconst kPerMessageDeflate = Symbol('permessage-deflate');\nconst kTotalLength = Symbol('total-length');\nconst kCallback = Symbol('callback');\nconst kBuffers = Symbol('buffers');\nconst kError = Symbol('error');\n\n//\n// We limit zlib concurrency, which prevents severe memory fragmentation\n// as documented in https://github.com/nodejs/node/issues/8871#issuecomment-250915913\n// and https://github.com/websockets/ws/issues/1202\n//\n// Intentionally global; it's the global thread pool that's an issue.\n//\nlet zlibLimiter;\n\n/**\n * permessage-deflate implementation.\n */\nclass PerMessageDeflate {\n /**\n * Creates a PerMessageDeflate instance.\n *\n * @param {Object} options Configuration options\n * @param {Boolean} options.serverNoContextTakeover Request/accept disabling\n * of server context takeover\n * @param {Boolean} options.clientNoContextTakeover Advertise/acknowledge\n * disabling of client context takeover\n * @param {(Boolean|Number)} options.serverMaxWindowBits Request/confirm the\n * use of a custom server window size\n * @param {(Boolean|Number)} options.clientMaxWindowBits Advertise support\n * for, or request, a custom client window size\n * @param {Object} options.zlibDeflateOptions Options to pass to zlib on deflate\n * @param {Object} options.zlibInflateOptions Options to pass to zlib on inflate\n * @param {Number} options.threshold Size (in bytes) below which messages\n * should not be compressed\n * @param {Number} options.concurrencyLimit The number of concurrent calls to\n * zlib\n * @param {Boolean} isServer Create the instance in either server or client\n * mode\n * @param {Number} maxPayload The maximum allowed message length\n */\n constructor(options, isServer, maxPayload) {\n this._maxPayload = maxPayload | 0;\n this._options = options || {};\n this._threshold =\n this._options.threshold !== undefined ? this._options.threshold : 1024;\n this._isServer = !!isServer;\n this._deflate = null;\n this._inflate = null;\n\n this.params = null;\n\n if (!zlibLimiter) {\n const concurrency =\n this._options.concurrencyLimit !== undefined\n ? this._options.concurrencyLimit\n : 10;\n zlibLimiter = new Limiter(concurrency);\n }\n }\n\n /**\n * @type {String}\n */\n static get extensionName() {\n return 'permessage-deflate';\n }\n\n /**\n * Create an extension negotiation offer.\n *\n * @return {Object} Extension parameters\n * @public\n */\n offer() {\n const params = {};\n\n if (this._options.serverNoContextTakeover) {\n params.server_no_context_takeover = true;\n }\n if (this._options.clientNoContextTakeover) {\n params.client_no_context_takeover = true;\n }\n if (this._options.serverMaxWindowBits) {\n params.server_max_window_bits = this._options.serverMaxWindowBits;\n }\n if (this._options.clientMaxWindowBits) {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n } else if (this._options.clientMaxWindowBits == null) {\n params.client_max_window_bits = true;\n }\n\n return params;\n }\n\n /**\n * Accept an extension negotiation offer/response.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Object} Accepted configuration\n * @public\n */\n accept(configurations) {\n configurations = this.normalizeParams(configurations);\n\n this.params = this._isServer\n ? this.acceptAsServer(configurations)\n : this.acceptAsClient(configurations);\n\n return this.params;\n }\n\n /**\n * Releases all resources used by the extension.\n *\n * @public\n */\n cleanup() {\n if (this._inflate) {\n this._inflate.close();\n this._inflate = null;\n }\n\n if (this._deflate) {\n if (this._deflate[kCallback]) {\n this._deflate[kCallback]();\n }\n\n this._deflate.close();\n this._deflate = null;\n }\n }\n\n /**\n * Accept an extension negotiation offer.\n *\n * @param {Array} offers The extension negotiation offers\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsServer(offers) {\n const opts = this._options;\n const accepted = offers.find((params) => {\n if (\n (opts.serverNoContextTakeover === false &&\n params.server_no_context_takeover) ||\n (params.server_max_window_bits &&\n (opts.serverMaxWindowBits === false ||\n (typeof opts.serverMaxWindowBits === 'number' &&\n opts.serverMaxWindowBits > params.server_max_window_bits))) ||\n (typeof opts.clientMaxWindowBits === 'number' &&\n !params.client_max_window_bits)\n ) {\n return false;\n }\n\n return true;\n });\n\n if (!accepted) {\n throw new Error('None of the extension offers can be accepted');\n }\n\n if (opts.serverNoContextTakeover) {\n accepted.server_no_context_takeover = true;\n }\n if (opts.clientNoContextTakeover) {\n accepted.client_no_context_takeover = true;\n }\n if (typeof opts.serverMaxWindowBits === 'number') {\n accepted.server_max_window_bits = opts.serverMaxWindowBits;\n }\n if (typeof opts.clientMaxWindowBits === 'number') {\n accepted.client_max_window_bits = opts.clientMaxWindowBits;\n } else if (\n accepted.client_max_window_bits === true ||\n opts.clientMaxWindowBits === false\n ) {\n delete accepted.client_max_window_bits;\n }\n\n return accepted;\n }\n\n /**\n * Accept the extension negotiation response.\n *\n * @param {Array} response The extension negotiation response\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsClient(response) {\n const params = response[0];\n\n if (\n this._options.clientNoContextTakeover === false &&\n params.client_no_context_takeover\n ) {\n throw new Error('Unexpected parameter \"client_no_context_takeover\"');\n }\n\n if (!params.client_max_window_bits) {\n if (typeof this._options.clientMaxWindowBits === 'number') {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n }\n } else if (\n this._options.clientMaxWindowBits === false ||\n (typeof this._options.clientMaxWindowBits === 'number' &&\n params.client_max_window_bits > this._options.clientMaxWindowBits)\n ) {\n throw new Error(\n 'Unexpected or invalid parameter \"client_max_window_bits\"'\n );\n }\n\n return params;\n }\n\n /**\n * Normalize parameters.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Array} The offers/response with normalized parameters\n * @private\n */\n normalizeParams(configurations) {\n configurations.forEach((params) => {\n Object.keys(params).forEach((key) => {\n let value = params[key];\n\n if (value.length > 1) {\n throw new Error(`Parameter \"${key}\" must have only a single value`);\n }\n\n value = value[0];\n\n if (key === 'client_max_window_bits') {\n if (value !== true) {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (!this._isServer) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else if (key === 'server_max_window_bits') {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (\n key === 'client_no_context_takeover' ||\n key === 'server_no_context_takeover'\n ) {\n if (value !== true) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else {\n throw new Error(`Unknown parameter \"${key}\"`);\n }\n\n params[key] = value;\n });\n });\n\n return configurations;\n }\n\n /**\n * Decompress data. Concurrency limited.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n decompress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._decompress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Compress data. Concurrency limited.\n *\n * @param {Buffer} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n compress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._compress(data, fin, (err, result) => {\n done();\n if (err || result) {\n callback(err, result);\n }\n });\n });\n }\n\n /**\n * Decompress data.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _decompress(data, fin, callback) {\n const endpoint = this._isServer ? 'client' : 'server';\n\n if (!this._inflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._inflate = zlib.createInflateRaw({\n ...this._options.zlibInflateOptions,\n windowBits\n });\n this._inflate[kPerMessageDeflate] = this;\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n this._inflate.on('error', inflateOnError);\n this._inflate.on('data', inflateOnData);\n }\n\n this._inflate[kCallback] = callback;\n\n this._inflate.write(data);\n if (fin) this._inflate.write(TRAILER);\n\n this._inflate.flush(() => {\n const err = this._inflate[kError];\n\n if (err) {\n this._inflate.close();\n this._inflate = null;\n callback(err);\n return;\n }\n\n const data = bufferUtil.concat(\n this._inflate[kBuffers],\n this._inflate[kTotalLength]\n );\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._inflate.close();\n this._inflate = null;\n } else {\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n }\n\n callback(null, data);\n });\n }\n\n /**\n * Compress data.\n *\n * @param {Buffer} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _compress(data, fin, callback) {\n const endpoint = this._isServer ? 'server' : 'client';\n\n if (!this._deflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._deflate = zlib.createDeflateRaw({\n ...this._options.zlibDeflateOptions,\n windowBits\n });\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n //\n // An `'error'` event is emitted, only on Node.js < 10.0.0, if the\n // `zlib.DeflateRaw` instance is closed while data is being processed.\n // This can happen if `PerMessageDeflate#cleanup()` is called at the wrong\n // time due to an abnormal WebSocket closure.\n //\n this._deflate.on('error', NOOP);\n this._deflate.on('data', deflateOnData);\n }\n\n this._deflate[kCallback] = callback;\n\n this._deflate.write(data);\n this._deflate.flush(zlib.Z_SYNC_FLUSH, () => {\n if (!this._deflate) {\n //\n // This `if` statement is only needed for Node.js < 10.0.0 because as of\n // commit https://github.com/nodejs/node/commit/5e3f5164, the flush\n // callback is no longer called if the deflate stream is closed while\n // data is being processed.\n //\n return;\n }\n\n let data = bufferUtil.concat(\n this._deflate[kBuffers],\n this._deflate[kTotalLength]\n );\n\n if (fin) data = data.slice(0, data.length - 4);\n\n //\n // Ensure that the callback will not be called again in\n // `PerMessageDeflate#cleanup()`.\n //\n this._deflate[kCallback] = null;\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._deflate.close();\n this._deflate = null;\n } else {\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n }\n\n callback(null, data);\n });\n }\n}\n\nmodule.exports = PerMessageDeflate;\n\n/**\n * The listener of the `zlib.DeflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction deflateOnData(chunk) {\n this[kBuffers].push(chunk);\n this[kTotalLength] += chunk.length;\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction inflateOnData(chunk) {\n this[kTotalLength] += chunk.length;\n\n if (\n this[kPerMessageDeflate]._maxPayload < 1 ||\n this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload\n ) {\n this[kBuffers].push(chunk);\n return;\n }\n\n this[kError] = new RangeError('Max payload size exceeded');\n this[kError][kStatusCode] = 1009;\n this.removeListener('data', inflateOnData);\n this.reset();\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'error'` event.\n *\n * @param {Error} err The emitted error\n * @private\n */\nfunction inflateOnError(err) {\n //\n // There is no need to call `Zlib#close()` as the handle is automatically\n // closed when an error is emitted.\n //\n this[kPerMessageDeflate]._inflate = null;\n err[kStatusCode] = 1007;\n this[kCallback](err);\n}\n","'use strict';\n\nconst { EMPTY_BUFFER } = require('./constants');\n\n/**\n * Merges an array of buffers into a new buffer.\n *\n * @param {Buffer[]} list The array of buffers to concat\n * @param {Number} totalLength The total length of buffers in the list\n * @return {Buffer} The resulting buffer\n * @public\n */\nfunction concat(list, totalLength) {\n if (list.length === 0) return EMPTY_BUFFER;\n if (list.length === 1) return list[0];\n\n const target = Buffer.allocUnsafe(totalLength);\n let offset = 0;\n\n for (let i = 0; i < list.length; i++) {\n const buf = list[i];\n target.set(buf, offset);\n offset += buf.length;\n }\n\n if (offset < totalLength) return target.slice(0, offset);\n\n return target;\n}\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nfunction _mask(source, mask, output, offset, length) {\n for (let i = 0; i < length; i++) {\n output[offset + i] = source[i] ^ mask[i & 3];\n }\n}\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nfunction _unmask(buffer, mask) {\n // Required until https://github.com/nodejs/node/issues/9006 is resolved.\n const length = buffer.length;\n for (let i = 0; i < length; i++) {\n buffer[i] ^= mask[i & 3];\n }\n}\n\n/**\n * Converts a buffer to an `ArrayBuffer`.\n *\n * @param {Buffer} buf The buffer to convert\n * @return {ArrayBuffer} Converted buffer\n * @public\n */\nfunction toArrayBuffer(buf) {\n if (buf.byteLength === buf.buffer.byteLength) {\n return buf.buffer;\n }\n\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n}\n\n/**\n * Converts `data` to a `Buffer`.\n *\n * @param {*} data The data to convert\n * @return {Buffer} The buffer\n * @throws {TypeError}\n * @public\n */\nfunction toBuffer(data) {\n toBuffer.readOnly = true;\n\n if (Buffer.isBuffer(data)) return data;\n\n let buf;\n\n if (data instanceof ArrayBuffer) {\n buf = Buffer.from(data);\n } else if (ArrayBuffer.isView(data)) {\n buf = viewToBuffer(data);\n } else {\n buf = Buffer.from(data);\n toBuffer.readOnly = false;\n }\n\n return buf;\n}\n\n/**\n * Converts an `ArrayBuffer` view into a buffer.\n *\n * @param {(DataView|TypedArray)} view The view to convert\n * @return {Buffer} Converted view\n * @private\n */\nfunction viewToBuffer(view) {\n const buf = Buffer.from(view.buffer);\n\n if (view.byteLength !== view.buffer.byteLength) {\n return buf.slice(view.byteOffset, view.byteOffset + view.byteLength);\n }\n\n return buf;\n}\n\ntry {\n const bufferUtil = require('bufferutil');\n const bu = bufferUtil.BufferUtil || bufferUtil;\n\n module.exports = {\n concat,\n mask(source, mask, output, offset, length) {\n if (length < 48) _mask(source, mask, output, offset, length);\n else bu.mask(source, mask, output, offset, length);\n },\n toArrayBuffer,\n toBuffer,\n unmask(buffer, mask) {\n if (buffer.length < 32) _unmask(buffer, mask);\n else bu.unmask(buffer, mask);\n }\n };\n} catch (e) /* istanbul ignore next */ {\n module.exports = {\n concat,\n mask: _mask,\n toArrayBuffer,\n toBuffer,\n unmask: _unmask\n };\n}\n","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./EditableValue.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./EditableValue.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./EditableValue.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./NewArrayValue.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./NewArrayValue.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./NewArrayValue.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./NewKeyValue.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./NewKeyValue.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./NewKeyValue.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./NoCommitData.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./NoCommitData.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./NoCommitData.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./Tooltip.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./Tooltip.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./Tooltip.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./NoInteractions.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./NoInteractions.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./NoInteractions.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./RecordToggle.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./RecordToggle.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./RecordToggle.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./UnsupportedVersionDialog.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./UnsupportedVersionDialog.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./UnsupportedVersionDialog.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","module.exports = require(\"child_process\");","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","module.exports = require(\"http\");","module.exports = require(\"crypto\");","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./Badge.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./Badge.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./Badge.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./Button.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./Button.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./Button.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./SelectedTreeHighlight.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./SelectedTreeHighlight.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./SelectedTreeHighlight.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./HocBadges.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./HocBadges.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./HocBadges.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./CommitFlamegraph.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./CommitFlamegraph.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./CommitFlamegraph.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./Interactions.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./Interactions.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./Interactions.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./SnapshotCommitListItem.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./SnapshotCommitListItem.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./SnapshotCommitListItem.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","'use strict';\n\nconst EventEmitter = require('events');\nconst https = require('https');\nconst http = require('http');\nconst net = require('net');\nconst tls = require('tls');\nconst { randomBytes, createHash } = require('crypto');\nconst { URL } = require('url');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst Receiver = require('./receiver');\nconst Sender = require('./sender');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n GUID,\n kStatusCode,\n kWebSocket,\n NOOP\n} = require('./constants');\nconst { addEventListener, removeEventListener } = require('./event-target');\nconst { format, parse } = require('./extension');\nconst { toBuffer } = require('./buffer-util');\n\nconst readyStates = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];\nconst protocolVersions = [8, 13];\nconst closeTimeout = 30 * 1000;\n\n/**\n * Class representing a WebSocket.\n *\n * @extends EventEmitter\n */\nclass WebSocket extends EventEmitter {\n /**\n * Create a new `WebSocket`.\n *\n * @param {(String|url.URL)} address The URL to which to connect\n * @param {(String|String[])} protocols The subprotocols\n * @param {Object} options Connection options\n */\n constructor(address, protocols, options) {\n super();\n\n this.readyState = WebSocket.CONNECTING;\n this.protocol = '';\n\n this._binaryType = BINARY_TYPES[0];\n this._closeFrameReceived = false;\n this._closeFrameSent = false;\n this._closeMessage = '';\n this._closeTimer = null;\n this._closeCode = 1006;\n this._extensions = {};\n this._receiver = null;\n this._sender = null;\n this._socket = null;\n\n if (address !== null) {\n this._bufferedAmount = 0;\n this._isServer = false;\n this._redirects = 0;\n\n if (Array.isArray(protocols)) {\n protocols = protocols.join(', ');\n } else if (typeof protocols === 'object' && protocols !== null) {\n options = protocols;\n protocols = undefined;\n }\n\n initAsClient(this, address, protocols, options);\n } else {\n this._isServer = true;\n }\n }\n\n get CONNECTING() {\n return WebSocket.CONNECTING;\n }\n get CLOSING() {\n return WebSocket.CLOSING;\n }\n get CLOSED() {\n return WebSocket.CLOSED;\n }\n get OPEN() {\n return WebSocket.OPEN;\n }\n\n /**\n * This deviates from the WHATWG interface since ws doesn't support the\n * required default \"blob\" type (instead we define a custom \"nodebuffer\"\n * type).\n *\n * @type {String}\n */\n get binaryType() {\n return this._binaryType;\n }\n\n set binaryType(type) {\n if (!BINARY_TYPES.includes(type)) return;\n\n this._binaryType = type;\n\n //\n // Allow to change `binaryType` on the fly.\n //\n if (this._receiver) this._receiver._binaryType = type;\n }\n\n /**\n * @type {Number}\n */\n get bufferedAmount() {\n if (!this._socket) return this._bufferedAmount;\n\n //\n // `socket.bufferSize` is `undefined` if the socket is closed.\n //\n return (this._socket.bufferSize || 0) + this._sender._bufferedBytes;\n }\n\n /**\n * @type {String}\n */\n get extensions() {\n return Object.keys(this._extensions).join();\n }\n\n /**\n * Set up the socket and the internal resources.\n *\n * @param {net.Socket} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Number} maxPayload The maximum allowed message size\n * @private\n */\n setSocket(socket, head, maxPayload) {\n const receiver = new Receiver(\n this._binaryType,\n this._extensions,\n maxPayload\n );\n\n this._sender = new Sender(socket, this._extensions);\n this._receiver = receiver;\n this._socket = socket;\n\n receiver[kWebSocket] = this;\n socket[kWebSocket] = this;\n\n receiver.on('conclude', receiverOnConclude);\n receiver.on('drain', receiverOnDrain);\n receiver.on('error', receiverOnError);\n receiver.on('message', receiverOnMessage);\n receiver.on('ping', receiverOnPing);\n receiver.on('pong', receiverOnPong);\n\n socket.setTimeout(0);\n socket.setNoDelay();\n\n if (head.length > 0) socket.unshift(head);\n\n socket.on('close', socketOnClose);\n socket.on('data', socketOnData);\n socket.on('end', socketOnEnd);\n socket.on('error', socketOnError);\n\n this.readyState = WebSocket.OPEN;\n this.emit('open');\n }\n\n /**\n * Emit the `'close'` event.\n *\n * @private\n */\n emitClose() {\n this.readyState = WebSocket.CLOSED;\n\n if (!this._socket) {\n this.emit('close', this._closeCode, this._closeMessage);\n return;\n }\n\n if (this._extensions[PerMessageDeflate.extensionName]) {\n this._extensions[PerMessageDeflate.extensionName].cleanup();\n }\n\n this._receiver.removeAllListeners();\n this.emit('close', this._closeCode, this._closeMessage);\n }\n\n /**\n * Start a closing handshake.\n *\n * +----------+ +-----------+ +----------+\n * - - -|ws.close()|-->|close frame|-->|ws.close()|- - -\n * | +----------+ +-----------+ +----------+ |\n * +----------+ +-----------+ |\n * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING\n * +----------+ +-----------+ |\n * | | | +---+ |\n * +------------------------+-->|fin| - - - -\n * | +---+ | +---+\n * - - - - -|fin|<---------------------+\n * +---+\n *\n * @param {Number} code Status code explaining why the connection is closing\n * @param {String} data A string explaining why the connection is closing\n * @public\n */\n close(code, data) {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n return abortHandshake(this, this._req, msg);\n }\n\n if (this.readyState === WebSocket.CLOSING) {\n if (this._closeFrameSent && this._closeFrameReceived) this._socket.end();\n return;\n }\n\n this.readyState = WebSocket.CLOSING;\n this._sender.close(code, data, !this._isServer, (err) => {\n //\n // This error is handled by the `'error'` listener on the socket. We only\n // want to know if the close frame has been sent here.\n //\n if (err) return;\n\n this._closeFrameSent = true;\n if (this._closeFrameReceived) this._socket.end();\n });\n\n //\n // Specify a timeout for the closing handshake to complete.\n //\n this._closeTimer = setTimeout(\n this._socket.destroy.bind(this._socket),\n closeTimeout\n );\n }\n\n /**\n * Send a ping.\n *\n * @param {*} data The data to send\n * @param {Boolean} mask Indicates whether or not to mask `data`\n * @param {Function} cb Callback which is executed when the ping is sent\n * @public\n */\n ping(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.ping(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Send a pong.\n *\n * @param {*} data The data to send\n * @param {Boolean} mask Indicates whether or not to mask `data`\n * @param {Function} cb Callback which is executed when the pong is sent\n * @public\n */\n pong(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.pong(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Send a data message.\n *\n * @param {*} data The message to send\n * @param {Object} options Options object\n * @param {Boolean} options.compress Specifies whether or not to compress\n * `data`\n * @param {Boolean} options.binary Specifies whether `data` is binary or text\n * @param {Boolean} options.fin Specifies whether the fragment is the last one\n * @param {Boolean} options.mask Specifies whether or not to mask `data`\n * @param {Function} cb Callback which is executed when data is written out\n * @public\n */\n send(data, options, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n const opts = {\n binary: typeof data !== 'string',\n mask: !this._isServer,\n compress: true,\n fin: true,\n ...options\n };\n\n if (!this._extensions[PerMessageDeflate.extensionName]) {\n opts.compress = false;\n }\n\n this._sender.send(data || EMPTY_BUFFER, opts, cb);\n }\n\n /**\n * Forcibly close the connection.\n *\n * @public\n */\n terminate() {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n return abortHandshake(this, this._req, msg);\n }\n\n if (this._socket) {\n this.readyState = WebSocket.CLOSING;\n this._socket.destroy();\n }\n }\n}\n\nreadyStates.forEach((readyState, i) => {\n WebSocket[readyState] = i;\n});\n\n//\n// Add the `onopen`, `onerror`, `onclose`, and `onmessage` attributes.\n// See https://html.spec.whatwg.org/multipage/comms.html#the-websocket-interface\n//\n['open', 'error', 'close', 'message'].forEach((method) => {\n Object.defineProperty(WebSocket.prototype, `on${method}`, {\n /**\n * Return the listener of the event.\n *\n * @return {(Function|undefined)} The event listener or `undefined`\n * @public\n */\n get() {\n const listeners = this.listeners(method);\n for (let i = 0; i < listeners.length; i++) {\n if (listeners[i]._listener) return listeners[i]._listener;\n }\n\n return undefined;\n },\n /**\n * Add a listener for the event.\n *\n * @param {Function} listener The listener to add\n * @public\n */\n set(listener) {\n const listeners = this.listeners(method);\n for (let i = 0; i < listeners.length; i++) {\n //\n // Remove only the listeners added via `addEventListener`.\n //\n if (listeners[i]._listener) this.removeListener(method, listeners[i]);\n }\n this.addEventListener(method, listener);\n }\n });\n});\n\nWebSocket.prototype.addEventListener = addEventListener;\nWebSocket.prototype.removeEventListener = removeEventListener;\n\nmodule.exports = WebSocket;\n\n/**\n * Initialize a WebSocket client.\n *\n * @param {WebSocket} websocket The client to initialize\n * @param {(String|url.URL)} address The URL to which to connect\n * @param {String} protocols The subprotocols\n * @param {Object} options Connection options\n * @param {(Boolean|Object)} options.perMessageDeflate Enable/disable\n * permessage-deflate\n * @param {Number} options.handshakeTimeout Timeout in milliseconds for the\n * handshake request\n * @param {Number} options.protocolVersion Value of the `Sec-WebSocket-Version`\n * header\n * @param {String} options.origin Value of the `Origin` or\n * `Sec-WebSocket-Origin` header\n * @param {Number} options.maxPayload The maximum allowed message size\n * @param {Boolean} options.followRedirects Whether or not to follow redirects\n * @param {Number} options.maxRedirects The maximum number of redirects allowed\n * @private\n */\nfunction initAsClient(websocket, address, protocols, options) {\n const opts = {\n protocolVersion: protocolVersions[1],\n maxPayload: 100 * 1024 * 1024,\n perMessageDeflate: true,\n followRedirects: false,\n maxRedirects: 10,\n ...options,\n createConnection: undefined,\n socketPath: undefined,\n hostname: undefined,\n protocol: undefined,\n timeout: undefined,\n method: undefined,\n auth: undefined,\n host: undefined,\n path: undefined,\n port: undefined\n };\n\n if (!protocolVersions.includes(opts.protocolVersion)) {\n throw new RangeError(\n `Unsupported protocol version: ${opts.protocolVersion} ` +\n `(supported versions: ${protocolVersions.join(', ')})`\n );\n }\n\n let parsedUrl;\n\n if (address instanceof URL) {\n parsedUrl = address;\n websocket.url = address.href;\n } else {\n parsedUrl = new URL(address);\n websocket.url = address;\n }\n\n const isUnixSocket = parsedUrl.protocol === 'ws+unix:';\n\n if (!parsedUrl.host && (!isUnixSocket || !parsedUrl.pathname)) {\n throw new Error(`Invalid URL: ${websocket.url}`);\n }\n\n const isSecure =\n parsedUrl.protocol === 'wss:' || parsedUrl.protocol === 'https:';\n const defaultPort = isSecure ? 443 : 80;\n const key = randomBytes(16).toString('base64');\n const get = isSecure ? https.get : http.get;\n let perMessageDeflate;\n\n opts.createConnection = isSecure ? tlsConnect : netConnect;\n opts.defaultPort = opts.defaultPort || defaultPort;\n opts.port = parsedUrl.port || defaultPort;\n opts.host = parsedUrl.hostname.startsWith('[')\n ? parsedUrl.hostname.slice(1, -1)\n : parsedUrl.hostname;\n opts.headers = {\n 'Sec-WebSocket-Version': opts.protocolVersion,\n 'Sec-WebSocket-Key': key,\n Connection: 'Upgrade',\n Upgrade: 'websocket',\n ...opts.headers\n };\n opts.path = parsedUrl.pathname + parsedUrl.search;\n opts.timeout = opts.handshakeTimeout;\n\n if (opts.perMessageDeflate) {\n perMessageDeflate = new PerMessageDeflate(\n opts.perMessageDeflate !== true ? opts.perMessageDeflate : {},\n false,\n opts.maxPayload\n );\n opts.headers['Sec-WebSocket-Extensions'] = format({\n [PerMessageDeflate.extensionName]: perMessageDeflate.offer()\n });\n }\n if (protocols) {\n opts.headers['Sec-WebSocket-Protocol'] = protocols;\n }\n if (opts.origin) {\n if (opts.protocolVersion < 13) {\n opts.headers['Sec-WebSocket-Origin'] = opts.origin;\n } else {\n opts.headers.Origin = opts.origin;\n }\n }\n if (parsedUrl.username || parsedUrl.password) {\n opts.auth = `${parsedUrl.username}:${parsedUrl.password}`;\n }\n\n if (isUnixSocket) {\n const parts = opts.path.split(':');\n\n opts.socketPath = parts[0];\n opts.path = parts[1];\n }\n\n let req = (websocket._req = get(opts));\n\n if (opts.timeout) {\n req.on('timeout', () => {\n abortHandshake(websocket, req, 'Opening handshake has timed out');\n });\n }\n\n req.on('error', (err) => {\n if (websocket._req.aborted) return;\n\n req = websocket._req = null;\n websocket.readyState = WebSocket.CLOSING;\n websocket.emit('error', err);\n websocket.emitClose();\n });\n\n req.on('response', (res) => {\n const location = res.headers.location;\n const statusCode = res.statusCode;\n\n if (\n location &&\n opts.followRedirects &&\n statusCode >= 300 &&\n statusCode < 400\n ) {\n if (++websocket._redirects > opts.maxRedirects) {\n abortHandshake(websocket, req, 'Maximum redirects exceeded');\n return;\n }\n\n req.abort();\n\n const addr = new URL(location, address);\n\n initAsClient(websocket, addr, protocols, options);\n } else if (!websocket.emit('unexpected-response', req, res)) {\n abortHandshake(\n websocket,\n req,\n `Unexpected server response: ${res.statusCode}`\n );\n }\n });\n\n req.on('upgrade', (res, socket, head) => {\n websocket.emit('upgrade', res);\n\n //\n // The user may have closed the connection from a listener of the `upgrade`\n // event.\n //\n if (websocket.readyState !== WebSocket.CONNECTING) return;\n\n req = websocket._req = null;\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n if (res.headers['sec-websocket-accept'] !== digest) {\n abortHandshake(websocket, socket, 'Invalid Sec-WebSocket-Accept header');\n return;\n }\n\n const serverProt = res.headers['sec-websocket-protocol'];\n const protList = (protocols || '').split(/, */);\n let protError;\n\n if (!protocols && serverProt) {\n protError = 'Server sent a subprotocol but none was requested';\n } else if (protocols && !serverProt) {\n protError = 'Server sent no subprotocol';\n } else if (serverProt && !protList.includes(serverProt)) {\n protError = 'Server sent an invalid subprotocol';\n }\n\n if (protError) {\n abortHandshake(websocket, socket, protError);\n return;\n }\n\n if (serverProt) websocket.protocol = serverProt;\n\n if (perMessageDeflate) {\n try {\n const extensions = parse(res.headers['sec-websocket-extensions']);\n\n if (extensions[PerMessageDeflate.extensionName]) {\n perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);\n websocket._extensions[\n PerMessageDeflate.extensionName\n ] = perMessageDeflate;\n }\n } catch (err) {\n abortHandshake(\n websocket,\n socket,\n 'Invalid Sec-WebSocket-Extensions header'\n );\n return;\n }\n }\n\n websocket.setSocket(socket, head, opts.maxPayload);\n });\n}\n\n/**\n * Create a `net.Socket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {net.Socket} The newly created socket used to start the connection\n * @private\n */\nfunction netConnect(options) {\n options.path = options.socketPath;\n return net.connect(options);\n}\n\n/**\n * Create a `tls.TLSSocket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {tls.TLSSocket} The newly created socket used to start the connection\n * @private\n */\nfunction tlsConnect(options) {\n options.path = undefined;\n\n if (!options.servername && options.servername !== '') {\n options.servername = options.host;\n }\n\n return tls.connect(options);\n}\n\n/**\n * Abort the handshake and emit an error.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {(http.ClientRequest|net.Socket)} stream The request to abort or the\n * socket to destroy\n * @param {String} message The error message\n * @private\n */\nfunction abortHandshake(websocket, stream, message) {\n websocket.readyState = WebSocket.CLOSING;\n\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshake);\n\n if (stream.setHeader) {\n stream.abort();\n stream.once('abort', websocket.emitClose.bind(websocket));\n websocket.emit('error', err);\n } else {\n stream.destroy(err);\n stream.once('error', websocket.emit.bind(websocket, 'error'));\n stream.once('close', websocket.emitClose.bind(websocket));\n }\n}\n\n/**\n * Handle cases where the `ping()`, `pong()`, or `send()` methods are called\n * when the `readyState` attribute is `CLOSING` or `CLOSED`.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {*} data The data to send\n * @param {Function} cb Callback\n * @private\n */\nfunction sendAfterClose(websocket, data, cb) {\n if (data) {\n const length = toBuffer(data).length;\n\n //\n // The `_bufferedAmount` property is used only when the peer is a client and\n // the opening handshake fails. Under these circumstances, in fact, the\n // `setSocket()` method is not called, so the `_socket` and `_sender`\n // properties are set to `null`.\n //\n if (websocket._socket) websocket._sender._bufferedBytes += length;\n else websocket._bufferedAmount += length;\n }\n\n if (cb) {\n const err = new Error(\n `WebSocket is not open: readyState ${websocket.readyState} ` +\n `(${readyStates[websocket.readyState]})`\n );\n cb(err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'conclude'` event.\n *\n * @param {Number} code The status code\n * @param {String} reason The reason for closing\n * @private\n */\nfunction receiverOnConclude(code, reason) {\n const websocket = this[kWebSocket];\n\n websocket._socket.removeListener('data', socketOnData);\n websocket._socket.resume();\n\n websocket._closeFrameReceived = true;\n websocket._closeMessage = reason;\n websocket._closeCode = code;\n\n if (code === 1005) websocket.close();\n else websocket.close(code, reason);\n}\n\n/**\n * The listener of the `Receiver` `'drain'` event.\n *\n * @private\n */\nfunction receiverOnDrain() {\n this[kWebSocket]._socket.resume();\n}\n\n/**\n * The listener of the `Receiver` `'error'` event.\n *\n * @param {(RangeError|Error)} err The emitted error\n * @private\n */\nfunction receiverOnError(err) {\n const websocket = this[kWebSocket];\n\n websocket._socket.removeListener('data', socketOnData);\n\n websocket.readyState = WebSocket.CLOSING;\n websocket._closeCode = err[kStatusCode];\n websocket.emit('error', err);\n websocket._socket.destroy();\n}\n\n/**\n * The listener of the `Receiver` `'finish'` event.\n *\n * @private\n */\nfunction receiverOnFinish() {\n this[kWebSocket].emitClose();\n}\n\n/**\n * The listener of the `Receiver` `'message'` event.\n *\n * @param {(String|Buffer|ArrayBuffer|Buffer[])} data The message\n * @private\n */\nfunction receiverOnMessage(data) {\n this[kWebSocket].emit('message', data);\n}\n\n/**\n * The listener of the `Receiver` `'ping'` event.\n *\n * @param {Buffer} data The data included in the ping frame\n * @private\n */\nfunction receiverOnPing(data) {\n const websocket = this[kWebSocket];\n\n websocket.pong(data, !websocket._isServer, NOOP);\n websocket.emit('ping', data);\n}\n\n/**\n * The listener of the `Receiver` `'pong'` event.\n *\n * @param {Buffer} data The data included in the pong frame\n * @private\n */\nfunction receiverOnPong(data) {\n this[kWebSocket].emit('pong', data);\n}\n\n/**\n * The listener of the `net.Socket` `'close'` event.\n *\n * @private\n */\nfunction socketOnClose() {\n const websocket = this[kWebSocket];\n\n this.removeListener('close', socketOnClose);\n this.removeListener('end', socketOnEnd);\n\n websocket.readyState = WebSocket.CLOSING;\n\n //\n // The close frame might not have been received or the `'end'` event emitted,\n // for example, if the socket was destroyed due to an error. Ensure that the\n // `receiver` stream is closed after writing any remaining buffered data to\n // it. If the readable side of the socket is in flowing mode then there is no\n // buffered data as everything has been already written and `readable.read()`\n // will return `null`. If instead, the socket is paused, any possible buffered\n // data will be read as a single chunk and emitted synchronously in a single\n // `'data'` event.\n //\n websocket._socket.read();\n websocket._receiver.end();\n\n this.removeListener('data', socketOnData);\n this[kWebSocket] = undefined;\n\n clearTimeout(websocket._closeTimer);\n\n if (\n websocket._receiver._writableState.finished ||\n websocket._receiver._writableState.errorEmitted\n ) {\n websocket.emitClose();\n } else {\n websocket._receiver.on('error', receiverOnFinish);\n websocket._receiver.on('finish', receiverOnFinish);\n }\n}\n\n/**\n * The listener of the `net.Socket` `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction socketOnData(chunk) {\n if (!this[kWebSocket]._receiver.write(chunk)) {\n this.pause();\n }\n}\n\n/**\n * The listener of the `net.Socket` `'end'` event.\n *\n * @private\n */\nfunction socketOnEnd() {\n const websocket = this[kWebSocket];\n\n websocket.readyState = WebSocket.CLOSING;\n websocket._receiver.end();\n this.end();\n}\n\n/**\n * The listener of the `net.Socket` `'error'` event.\n *\n * @private\n */\nfunction socketOnError() {\n const websocket = this[kWebSocket];\n\n this.removeListener('error', socketOnError);\n this.on('error', NOOP);\n\n if (websocket) {\n websocket.readyState = WebSocket.CLOSING;\n this.destroy();\n }\n}\n","module.exports = require(\"events\");","module.exports = require(\"https\");","'use strict';\n\nconst { Writable } = require('stream');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n kStatusCode,\n kWebSocket\n} = require('./constants');\nconst { concat, toArrayBuffer, unmask } = require('./buffer-util');\nconst { isValidStatusCode, isValidUTF8 } = require('./validation');\n\nconst GET_INFO = 0;\nconst GET_PAYLOAD_LENGTH_16 = 1;\nconst GET_PAYLOAD_LENGTH_64 = 2;\nconst GET_MASK = 3;\nconst GET_DATA = 4;\nconst INFLATING = 5;\n\n/**\n * HyBi Receiver implementation.\n *\n * @extends stream.Writable\n */\nclass Receiver extends Writable {\n /**\n * Creates a Receiver instance.\n *\n * @param {String} binaryType The type for binary data\n * @param {Object} extensions An object containing the negotiated extensions\n * @param {Number} maxPayload The maximum allowed message length\n */\n constructor(binaryType, extensions, maxPayload) {\n super();\n\n this._binaryType = binaryType || BINARY_TYPES[0];\n this[kWebSocket] = undefined;\n this._extensions = extensions || {};\n this._maxPayload = maxPayload | 0;\n\n this._bufferedBytes = 0;\n this._buffers = [];\n\n this._compressed = false;\n this._payloadLength = 0;\n this._mask = undefined;\n this._fragmented = 0;\n this._masked = false;\n this._fin = false;\n this._opcode = 0;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragments = [];\n\n this._state = GET_INFO;\n this._loop = false;\n }\n\n /**\n * Implements `Writable.prototype._write()`.\n *\n * @param {Buffer} chunk The chunk of data to write\n * @param {String} encoding The character encoding of `chunk`\n * @param {Function} cb Callback\n */\n _write(chunk, encoding, cb) {\n if (this._opcode === 0x08 && this._state == GET_INFO) return cb();\n\n this._bufferedBytes += chunk.length;\n this._buffers.push(chunk);\n this.startLoop(cb);\n }\n\n /**\n * Consumes `n` bytes from the buffered data.\n *\n * @param {Number} n The number of bytes to consume\n * @return {Buffer} The consumed bytes\n * @private\n */\n consume(n) {\n this._bufferedBytes -= n;\n\n if (n === this._buffers[0].length) return this._buffers.shift();\n\n if (n < this._buffers[0].length) {\n const buf = this._buffers[0];\n this._buffers[0] = buf.slice(n);\n return buf.slice(0, n);\n }\n\n const dst = Buffer.allocUnsafe(n);\n\n do {\n const buf = this._buffers[0];\n const offset = dst.length - n;\n\n if (n >= buf.length) {\n dst.set(this._buffers.shift(), offset);\n } else {\n dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset);\n this._buffers[0] = buf.slice(n);\n }\n\n n -= buf.length;\n } while (n > 0);\n\n return dst;\n }\n\n /**\n * Starts the parsing loop.\n *\n * @param {Function} cb Callback\n * @private\n */\n startLoop(cb) {\n let err;\n this._loop = true;\n\n do {\n switch (this._state) {\n case GET_INFO:\n err = this.getInfo();\n break;\n case GET_PAYLOAD_LENGTH_16:\n err = this.getPayloadLength16();\n break;\n case GET_PAYLOAD_LENGTH_64:\n err = this.getPayloadLength64();\n break;\n case GET_MASK:\n this.getMask();\n break;\n case GET_DATA:\n err = this.getData(cb);\n break;\n default:\n // `INFLATING`\n this._loop = false;\n return;\n }\n } while (this._loop);\n\n cb(err);\n }\n\n /**\n * Reads the first two bytes of a frame.\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getInfo() {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(2);\n\n if ((buf[0] & 0x30) !== 0x00) {\n this._loop = false;\n return error(RangeError, 'RSV2 and RSV3 must be clear', true, 1002);\n }\n\n const compressed = (buf[0] & 0x40) === 0x40;\n\n if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {\n this._loop = false;\n return error(RangeError, 'RSV1 must be clear', true, 1002);\n }\n\n this._fin = (buf[0] & 0x80) === 0x80;\n this._opcode = buf[0] & 0x0f;\n this._payloadLength = buf[1] & 0x7f;\n\n if (this._opcode === 0x00) {\n if (compressed) {\n this._loop = false;\n return error(RangeError, 'RSV1 must be clear', true, 1002);\n }\n\n if (!this._fragmented) {\n this._loop = false;\n return error(RangeError, 'invalid opcode 0', true, 1002);\n }\n\n this._opcode = this._fragmented;\n } else if (this._opcode === 0x01 || this._opcode === 0x02) {\n if (this._fragmented) {\n this._loop = false;\n return error(RangeError, `invalid opcode ${this._opcode}`, true, 1002);\n }\n\n this._compressed = compressed;\n } else if (this._opcode > 0x07 && this._opcode < 0x0b) {\n if (!this._fin) {\n this._loop = false;\n return error(RangeError, 'FIN must be set', true, 1002);\n }\n\n if (compressed) {\n this._loop = false;\n return error(RangeError, 'RSV1 must be clear', true, 1002);\n }\n\n if (this._payloadLength > 0x7d) {\n this._loop = false;\n return error(\n RangeError,\n `invalid payload length ${this._payloadLength}`,\n true,\n 1002\n );\n }\n } else {\n this._loop = false;\n return error(RangeError, `invalid opcode ${this._opcode}`, true, 1002);\n }\n\n if (!this._fin && !this._fragmented) this._fragmented = this._opcode;\n this._masked = (buf[1] & 0x80) === 0x80;\n\n if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16;\n else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64;\n else return this.haveLength();\n }\n\n /**\n * Gets extended payload length (7+16).\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getPayloadLength16() {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n this._payloadLength = this.consume(2).readUInt16BE(0);\n return this.haveLength();\n }\n\n /**\n * Gets extended payload length (7+64).\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getPayloadLength64() {\n if (this._bufferedBytes < 8) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(8);\n const num = buf.readUInt32BE(0);\n\n //\n // The maximum safe integer in JavaScript is 2^53 - 1. An error is returned\n // if payload length is greater than this number.\n //\n if (num > Math.pow(2, 53 - 32) - 1) {\n this._loop = false;\n return error(\n RangeError,\n 'Unsupported WebSocket frame: payload length > 2^53 - 1',\n false,\n 1009\n );\n }\n\n this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4);\n return this.haveLength();\n }\n\n /**\n * Payload length has been read.\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n haveLength() {\n if (this._payloadLength && this._opcode < 0x08) {\n this._totalPayloadLength += this._payloadLength;\n if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) {\n this._loop = false;\n return error(RangeError, 'Max payload size exceeded', false, 1009);\n }\n }\n\n if (this._masked) this._state = GET_MASK;\n else this._state = GET_DATA;\n }\n\n /**\n * Reads mask bytes.\n *\n * @private\n */\n getMask() {\n if (this._bufferedBytes < 4) {\n this._loop = false;\n return;\n }\n\n this._mask = this.consume(4);\n this._state = GET_DATA;\n }\n\n /**\n * Reads data bytes.\n *\n * @param {Function} cb Callback\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n getData(cb) {\n let data = EMPTY_BUFFER;\n\n if (this._payloadLength) {\n if (this._bufferedBytes < this._payloadLength) {\n this._loop = false;\n return;\n }\n\n data = this.consume(this._payloadLength);\n if (this._masked) unmask(data, this._mask);\n }\n\n if (this._opcode > 0x07) return this.controlMessage(data);\n\n if (this._compressed) {\n this._state = INFLATING;\n this.decompress(data, cb);\n return;\n }\n\n if (data.length) {\n //\n // This message is not compressed so its lenght is the sum of the payload\n // length of all fragments.\n //\n this._messageLength = this._totalPayloadLength;\n this._fragments.push(data);\n }\n\n return this.dataMessage();\n }\n\n /**\n * Decompresses data.\n *\n * @param {Buffer} data Compressed data\n * @param {Function} cb Callback\n * @private\n */\n decompress(data, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n perMessageDeflate.decompress(data, this._fin, (err, buf) => {\n if (err) return cb(err);\n\n if (buf.length) {\n this._messageLength += buf.length;\n if (this._messageLength > this._maxPayload && this._maxPayload > 0) {\n return cb(\n error(RangeError, 'Max payload size exceeded', false, 1009)\n );\n }\n\n this._fragments.push(buf);\n }\n\n const er = this.dataMessage();\n if (er) return cb(er);\n\n this.startLoop(cb);\n });\n }\n\n /**\n * Handles a data message.\n *\n * @return {(Error|undefined)} A possible error\n * @private\n */\n dataMessage() {\n if (this._fin) {\n const messageLength = this._messageLength;\n const fragments = this._fragments;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragmented = 0;\n this._fragments = [];\n\n if (this._opcode === 2) {\n let data;\n\n if (this._binaryType === 'nodebuffer') {\n data = concat(fragments, messageLength);\n } else if (this._binaryType === 'arraybuffer') {\n data = toArrayBuffer(concat(fragments, messageLength));\n } else {\n data = fragments;\n }\n\n this.emit('message', data);\n } else {\n const buf = concat(fragments, messageLength);\n\n if (!isValidUTF8(buf)) {\n this._loop = false;\n return error(Error, 'invalid UTF-8 sequence', true, 1007);\n }\n\n this.emit('message', buf.toString());\n }\n }\n\n this._state = GET_INFO;\n }\n\n /**\n * Handles a control message.\n *\n * @param {Buffer} data Data to handle\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n controlMessage(data) {\n if (this._opcode === 0x08) {\n this._loop = false;\n\n if (data.length === 0) {\n this.emit('conclude', 1005, '');\n this.end();\n } else if (data.length === 1) {\n return error(RangeError, 'invalid payload length 1', true, 1002);\n } else {\n const code = data.readUInt16BE(0);\n\n if (!isValidStatusCode(code)) {\n return error(RangeError, `invalid status code ${code}`, true, 1002);\n }\n\n const buf = data.slice(2);\n\n if (!isValidUTF8(buf)) {\n return error(Error, 'invalid UTF-8 sequence', true, 1007);\n }\n\n this.emit('conclude', code, buf.toString());\n this.end();\n }\n } else if (this._opcode === 0x09) {\n this.emit('ping', data);\n } else {\n this.emit('pong', data);\n }\n\n this._state = GET_INFO;\n }\n}\n\nmodule.exports = Receiver;\n\n/**\n * Builds an error object.\n *\n * @param {(Error|RangeError)} ErrorCtor The error constructor\n * @param {String} message The error message\n * @param {Boolean} prefix Specifies whether or not to add a default prefix to\n * `message`\n * @param {Number} statusCode The status code\n * @return {(Error|RangeError)} The error\n * @private\n */\nfunction error(ErrorCtor, message, prefix, statusCode) {\n const err = new ErrorCtor(\n prefix ? `Invalid WebSocket frame: ${message}` : message\n );\n\n Error.captureStackTrace(err, error);\n err[kStatusCode] = statusCode;\n return err;\n}\n","module.exports = require(\"stream\");","'use strict';\n\ntry {\n const isValidUTF8 = require('utf-8-validate');\n\n exports.isValidUTF8 =\n typeof isValidUTF8 === 'object'\n ? isValidUTF8.Validation.isValidUTF8 // utf-8-validate@<3.0.0\n : isValidUTF8;\n} catch (e) /* istanbul ignore next */ {\n exports.isValidUTF8 = () => true;\n}\n\n/**\n * Checks if a status code is allowed in a close frame.\n *\n * @param {Number} code The status code\n * @return {Boolean} `true` if the status code is valid, else `false`\n * @public\n */\nexports.isValidStatusCode = (code) => {\n return (\n (code >= 1000 &&\n code <= 1013 &&\n code !== 1004 &&\n code !== 1005 &&\n code !== 1006) ||\n (code >= 3000 && code <= 4999)\n );\n};\n","'use strict';\n\nconst { randomFillSync } = require('crypto');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst { EMPTY_BUFFER } = require('./constants');\nconst { isValidStatusCode } = require('./validation');\nconst { mask: applyMask, toBuffer } = require('./buffer-util');\n\nconst mask = Buffer.alloc(4);\n\n/**\n * HyBi Sender implementation.\n */\nclass Sender {\n /**\n * Creates a Sender instance.\n *\n * @param {net.Socket} socket The connection socket\n * @param {Object} extensions An object containing the negotiated extensions\n */\n constructor(socket, extensions) {\n this._extensions = extensions || {};\n this._socket = socket;\n\n this._firstFragment = true;\n this._compress = false;\n\n this._bufferedBytes = 0;\n this._deflating = false;\n this._queue = [];\n }\n\n /**\n * Frames a piece of data according to the HyBi WebSocket protocol.\n *\n * @param {Buffer} data The data to frame\n * @param {Object} options Options object\n * @param {Number} options.opcode The opcode\n * @param {Boolean} options.readOnly Specifies whether `data` can be modified\n * @param {Boolean} options.fin Specifies whether or not to set the FIN bit\n * @param {Boolean} options.mask Specifies whether or not to mask `data`\n * @param {Boolean} options.rsv1 Specifies whether or not to set the RSV1 bit\n * @return {Buffer[]} The framed data as a list of `Buffer` instances\n * @public\n */\n static frame(data, options) {\n const merge = options.mask && options.readOnly;\n let offset = options.mask ? 6 : 2;\n let payloadLength = data.length;\n\n if (data.length >= 65536) {\n offset += 8;\n payloadLength = 127;\n } else if (data.length > 125) {\n offset += 2;\n payloadLength = 126;\n }\n\n const target = Buffer.allocUnsafe(merge ? data.length + offset : offset);\n\n target[0] = options.fin ? options.opcode | 0x80 : options.opcode;\n if (options.rsv1) target[0] |= 0x40;\n\n target[1] = payloadLength;\n\n if (payloadLength === 126) {\n target.writeUInt16BE(data.length, 2);\n } else if (payloadLength === 127) {\n target.writeUInt32BE(0, 2);\n target.writeUInt32BE(data.length, 6);\n }\n\n if (!options.mask) return [target, data];\n\n randomFillSync(mask, 0, 4);\n\n target[1] |= 0x80;\n target[offset - 4] = mask[0];\n target[offset - 3] = mask[1];\n target[offset - 2] = mask[2];\n target[offset - 1] = mask[3];\n\n if (merge) {\n applyMask(data, mask, target, offset, data.length);\n return [target];\n }\n\n applyMask(data, mask, data, 0, data.length);\n return [target, data];\n }\n\n /**\n * Sends a close message to the other peer.\n *\n * @param {(Number|undefined)} code The status code component of the body\n * @param {String} data The message component of the body\n * @param {Boolean} mask Specifies whether or not to mask the message\n * @param {Function} cb Callback\n * @public\n */\n close(code, data, mask, cb) {\n let buf;\n\n if (code === undefined) {\n buf = EMPTY_BUFFER;\n } else if (typeof code !== 'number' || !isValidStatusCode(code)) {\n throw new TypeError('First argument must be a valid error code number');\n } else if (data === undefined || data === '') {\n buf = Buffer.allocUnsafe(2);\n buf.writeUInt16BE(code, 0);\n } else {\n buf = Buffer.allocUnsafe(2 + Buffer.byteLength(data));\n buf.writeUInt16BE(code, 0);\n buf.write(data, 2);\n }\n\n if (this._deflating) {\n this.enqueue([this.doClose, buf, mask, cb]);\n } else {\n this.doClose(buf, mask, cb);\n }\n }\n\n /**\n * Frames and sends a close message.\n *\n * @param {Buffer} data The message to send\n * @param {Boolean} mask Specifies whether or not to mask `data`\n * @param {Function} cb Callback\n * @private\n */\n doClose(data, mask, cb) {\n this.sendFrame(\n Sender.frame(data, {\n fin: true,\n rsv1: false,\n opcode: 0x08,\n mask,\n readOnly: false\n }),\n cb\n );\n }\n\n /**\n * Sends a ping message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} mask Specifies whether or not to mask `data`\n * @param {Function} cb Callback\n * @public\n */\n ping(data, mask, cb) {\n const buf = toBuffer(data);\n\n if (this._deflating) {\n this.enqueue([this.doPing, buf, mask, toBuffer.readOnly, cb]);\n } else {\n this.doPing(buf, mask, toBuffer.readOnly, cb);\n }\n }\n\n /**\n * Frames and sends a ping message.\n *\n * @param {*} data The message to send\n * @param {Boolean} mask Specifies whether or not to mask `data`\n * @param {Boolean} readOnly Specifies whether `data` can be modified\n * @param {Function} cb Callback\n * @private\n */\n doPing(data, mask, readOnly, cb) {\n this.sendFrame(\n Sender.frame(data, {\n fin: true,\n rsv1: false,\n opcode: 0x09,\n mask,\n readOnly\n }),\n cb\n );\n }\n\n /**\n * Sends a pong message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} mask Specifies whether or not to mask `data`\n * @param {Function} cb Callback\n * @public\n */\n pong(data, mask, cb) {\n const buf = toBuffer(data);\n\n if (this._deflating) {\n this.enqueue([this.doPong, buf, mask, toBuffer.readOnly, cb]);\n } else {\n this.doPong(buf, mask, toBuffer.readOnly, cb);\n }\n }\n\n /**\n * Frames and sends a pong message.\n *\n * @param {*} data The message to send\n * @param {Boolean} mask Specifies whether or not to mask `data`\n * @param {Boolean} readOnly Specifies whether `data` can be modified\n * @param {Function} cb Callback\n * @private\n */\n doPong(data, mask, readOnly, cb) {\n this.sendFrame(\n Sender.frame(data, {\n fin: true,\n rsv1: false,\n opcode: 0x0a,\n mask,\n readOnly\n }),\n cb\n );\n }\n\n /**\n * Sends a data message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Object} options Options object\n * @param {Boolean} options.compress Specifies whether or not to compress `data`\n * @param {Boolean} options.binary Specifies whether `data` is binary or text\n * @param {Boolean} options.fin Specifies whether the fragment is the last one\n * @param {Boolean} options.mask Specifies whether or not to mask `data`\n * @param {Function} cb Callback\n * @public\n */\n send(data, options, cb) {\n const buf = toBuffer(data);\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n let opcode = options.binary ? 2 : 1;\n let rsv1 = options.compress;\n\n if (this._firstFragment) {\n this._firstFragment = false;\n if (rsv1 && perMessageDeflate) {\n rsv1 = buf.length >= perMessageDeflate._threshold;\n }\n this._compress = rsv1;\n } else {\n rsv1 = false;\n opcode = 0;\n }\n\n if (options.fin) this._firstFragment = true;\n\n if (perMessageDeflate) {\n const opts = {\n fin: options.fin,\n rsv1,\n opcode,\n mask: options.mask,\n readOnly: toBuffer.readOnly\n };\n\n if (this._deflating) {\n this.enqueue([this.dispatch, buf, this._compress, opts, cb]);\n } else {\n this.dispatch(buf, this._compress, opts, cb);\n }\n } else {\n this.sendFrame(\n Sender.frame(buf, {\n fin: options.fin,\n rsv1: false,\n opcode,\n mask: options.mask,\n readOnly: toBuffer.readOnly\n }),\n cb\n );\n }\n }\n\n /**\n * Dispatches a data message.\n *\n * @param {Buffer} data The message to send\n * @param {Boolean} compress Specifies whether or not to compress `data`\n * @param {Object} options Options object\n * @param {Number} options.opcode The opcode\n * @param {Boolean} options.readOnly Specifies whether `data` can be modified\n * @param {Boolean} options.fin Specifies whether or not to set the FIN bit\n * @param {Boolean} options.mask Specifies whether or not to mask `data`\n * @param {Boolean} options.rsv1 Specifies whether or not to set the RSV1 bit\n * @param {Function} cb Callback\n * @private\n */\n dispatch(data, compress, options, cb) {\n if (!compress) {\n this.sendFrame(Sender.frame(data, options), cb);\n return;\n }\n\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n this._deflating = true;\n perMessageDeflate.compress(data, options.fin, (_, buf) => {\n this._deflating = false;\n options.readOnly = false;\n this.sendFrame(Sender.frame(buf, options), cb);\n this.dequeue();\n });\n }\n\n /**\n * Executes queued send operations.\n *\n * @private\n */\n dequeue() {\n while (!this._deflating && this._queue.length) {\n const params = this._queue.shift();\n\n this._bufferedBytes -= params[1].length;\n Reflect.apply(params[0], this, params.slice(1));\n }\n }\n\n /**\n * Enqueues a send operation.\n *\n * @param {Array} params Send operation parameters.\n * @private\n */\n enqueue(params) {\n this._bufferedBytes += params[1].length;\n this._queue.push(params);\n }\n\n /**\n * Sends a frame.\n *\n * @param {Buffer[]} list The frame to send\n * @param {Function} cb Callback\n * @private\n */\n sendFrame(list, cb) {\n if (list.length === 2) {\n this._socket.cork();\n this._socket.write(list[0]);\n this._socket.write(list[1], cb);\n this._socket.uncork();\n } else {\n this._socket.write(list[0], cb);\n }\n }\n}\n\nmodule.exports = Sender;\n","'use strict';\n\n//\n// Allowed token characters:\n//\n// '!', '#', '$', '%', '&', ''', '*', '+', '-',\n// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'\n//\n// tokenChars[32] === 0 // ' '\n// tokenChars[33] === 1 // '!'\n// tokenChars[34] === 0 // '\"'\n// ...\n//\n// prettier-ignore\nconst tokenChars = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31\n 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127\n];\n\n/**\n * Adds an offer to the map of extension offers or a parameter to the map of\n * parameters.\n *\n * @param {Object} dest The map of extension offers or parameters\n * @param {String} name The extension or parameter name\n * @param {(Object|Boolean|String)} elem The extension parameters or the\n * parameter value\n * @private\n */\nfunction push(dest, name, elem) {\n if (dest[name] === undefined) dest[name] = [elem];\n else dest[name].push(elem);\n}\n\n/**\n * Parses the `Sec-WebSocket-Extensions` header into an object.\n *\n * @param {String} header The field value of the header\n * @return {Object} The parsed object\n * @public\n */\nfunction parse(header) {\n const offers = Object.create(null);\n\n if (header === undefined || header === '') return offers;\n\n let params = Object.create(null);\n let mustUnescape = false;\n let isEscaping = false;\n let inQuotes = false;\n let extensionName;\n let paramName;\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (; i < header.length; i++) {\n const code = header.charCodeAt(i);\n\n if (extensionName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x20 /* ' ' */ || code === 0x09 /* '\\t' */) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b /* ';' */ || code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n const name = header.slice(start, end);\n if (code === 0x2c) {\n push(offers, name, params);\n params = Object.create(null);\n } else {\n extensionName = name;\n }\n\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (paramName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x20 || code === 0x09) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n push(params, header.slice(start, end), true);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n start = end = -1;\n } else if (code === 0x3d /* '=' */ && start !== -1 && end === -1) {\n paramName = header.slice(start, i);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else {\n //\n // The value of a quoted-string after unescaping must conform to the\n // token ABNF, so only token characters are valid.\n // Ref: https://tools.ietf.org/html/rfc6455#section-9.1\n //\n if (isEscaping) {\n if (tokenChars[code] !== 1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n if (start === -1) start = i;\n else if (!mustUnescape) mustUnescape = true;\n isEscaping = false;\n } else if (inQuotes) {\n if (tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x22 /* '\"' */ && start !== -1) {\n inQuotes = false;\n end = i;\n } else if (code === 0x5c /* '\\' */) {\n isEscaping = true;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3d) {\n inQuotes = true;\n } else if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (start !== -1 && (code === 0x20 || code === 0x09)) {\n if (end === -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n let value = header.slice(start, end);\n if (mustUnescape) {\n value = value.replace(/\\\\/g, '');\n mustUnescape = false;\n }\n push(params, paramName, value);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n paramName = undefined;\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n }\n\n if (start === -1 || inQuotes) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n if (end === -1) end = i;\n const token = header.slice(start, end);\n if (extensionName === undefined) {\n push(offers, token, params);\n } else {\n if (paramName === undefined) {\n push(params, token, true);\n } else if (mustUnescape) {\n push(params, paramName, token.replace(/\\\\/g, ''));\n } else {\n push(params, paramName, token);\n }\n push(offers, extensionName, params);\n }\n\n return offers;\n}\n\n/**\n * Builds the `Sec-WebSocket-Extensions` header field value.\n *\n * @param {Object} extensions The map of extensions and parameters to format\n * @return {String} A string representing the given object\n * @public\n */\nfunction format(extensions) {\n return Object.keys(extensions)\n .map((extension) => {\n let configurations = extensions[extension];\n if (!Array.isArray(configurations)) configurations = [configurations];\n return configurations\n .map((params) => {\n return [extension]\n .concat(\n Object.keys(params).map((k) => {\n let values = params[k];\n if (!Array.isArray(values)) values = [values];\n return values\n .map((v) => (v === true ? k : `${k}=${v}`))\n .join('; ');\n })\n )\n .join('; ');\n })\n .join(', ');\n })\n .join(', ');\n}\n\nmodule.exports = { format, parse };\n","module.exports = require(\"util\");","'use strict'\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = require('yallist')\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n constructor (options) {\n if (typeof options === 'number')\n options = { max: options }\n\n if (!options)\n options = {}\n\n if (options.max && (typeof options.max !== 'number' || options.max < 0))\n throw new TypeError('max must be a non-negative number')\n // Kind of weird to have a default max of Infinity, but oh well.\n const max = this[MAX] = options.max || Infinity\n\n const lc = options.length || naiveLength\n this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n this[ALLOW_STALE] = options.stale || false\n if (options.maxAge && typeof options.maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n this[MAX_AGE] = options.maxAge || 0\n this[DISPOSE] = options.dispose\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n this.reset()\n }\n\n // resize the cache when the max changes.\n set max (mL) {\n if (typeof mL !== 'number' || mL < 0)\n throw new TypeError('max must be a non-negative number')\n\n this[MAX] = mL || Infinity\n trim(this)\n }\n get max () {\n return this[MAX]\n }\n\n set allowStale (allowStale) {\n this[ALLOW_STALE] = !!allowStale\n }\n get allowStale () {\n return this[ALLOW_STALE]\n }\n\n set maxAge (mA) {\n if (typeof mA !== 'number')\n throw new TypeError('maxAge must be a non-negative number')\n\n this[MAX_AGE] = mA\n trim(this)\n }\n get maxAge () {\n return this[MAX_AGE]\n }\n\n // resize the cache when the lengthCalculator changes.\n set lengthCalculator (lC) {\n if (typeof lC !== 'function')\n lC = naiveLength\n\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC\n this[LENGTH] = 0\n this[LRU_LIST].forEach(hit => {\n hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n this[LENGTH] += hit.length\n })\n }\n trim(this)\n }\n get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n get length () { return this[LENGTH] }\n get itemCount () { return this[LRU_LIST].length }\n\n rforEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].tail; walker !== null;) {\n const prev = walker.prev\n forEachStep(this, fn, walker, thisp)\n walker = prev\n }\n }\n\n forEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].head; walker !== null;) {\n const next = walker.next\n forEachStep(this, fn, walker, thisp)\n walker = next\n }\n }\n\n keys () {\n return this[LRU_LIST].toArray().map(k => k.key)\n }\n\n values () {\n return this[LRU_LIST].toArray().map(k => k.value)\n }\n\n reset () {\n if (this[DISPOSE] &&\n this[LRU_LIST] &&\n this[LRU_LIST].length) {\n this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n }\n\n this[CACHE] = new Map() // hash of items by key\n this[LRU_LIST] = new Yallist() // list of items in order of use recency\n this[LENGTH] = 0 // length of items in the list\n }\n\n dump () {\n return this[LRU_LIST].map(hit =>\n isStale(this, hit) ? false : {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n }).toArray().filter(h => h)\n }\n\n dumpLru () {\n return this[LRU_LIST]\n }\n\n set (key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE]\n\n if (maxAge && typeof maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n\n const now = maxAge ? Date.now() : 0\n const len = this[LENGTH_CALCULATOR](value, key)\n\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n del(this, this[CACHE].get(key))\n return false\n }\n\n const node = this[CACHE].get(key)\n const item = node.value\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET])\n this[DISPOSE](key, item.value)\n }\n\n item.now = now\n item.maxAge = maxAge\n item.value = value\n this[LENGTH] += len - item.length\n item.length = len\n this.get(key)\n trim(this)\n return true\n }\n\n const hit = new Entry(key, value, len, now, maxAge)\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE])\n this[DISPOSE](key, value)\n\n return false\n }\n\n this[LENGTH] += hit.length\n this[LRU_LIST].unshift(hit)\n this[CACHE].set(key, this[LRU_LIST].head)\n trim(this)\n return true\n }\n\n has (key) {\n if (!this[CACHE].has(key)) return false\n const hit = this[CACHE].get(key).value\n return !isStale(this, hit)\n }\n\n get (key) {\n return get(this, key, true)\n }\n\n peek (key) {\n return get(this, key, false)\n }\n\n pop () {\n const node = this[LRU_LIST].tail\n if (!node)\n return null\n\n del(this, node)\n return node.value\n }\n\n del (key) {\n del(this, this[CACHE].get(key))\n }\n\n load (arr) {\n // reset the cache\n this.reset()\n\n const now = Date.now()\n // A previous serialized cache has the most recent items first\n for (let l = arr.length - 1; l >= 0; l--) {\n const hit = arr[l]\n const expiresAt = hit.e || 0\n if (expiresAt === 0)\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v)\n else {\n const maxAge = expiresAt - now\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge)\n }\n }\n }\n }\n\n prune () {\n this[CACHE].forEach((value, key) => get(this, key, false))\n }\n}\n\nconst get = (self, key, doUse) => {\n const node = self[CACHE].get(key)\n if (node) {\n const hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n return undefined\n } else {\n if (doUse) {\n if (self[UPDATE_AGE_ON_GET])\n node.value.now = Date.now()\n self[LRU_LIST].unshiftNode(node)\n }\n }\n return hit.value\n }\n}\n\nconst isStale = (self, hit) => {\n if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n return false\n\n const diff = Date.now() - hit.now\n return hit.maxAge ? diff > hit.maxAge\n : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n if (self[LENGTH] > self[MAX]) {\n for (let walker = self[LRU_LIST].tail;\n self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n const prev = walker.prev\n del(self, walker)\n walker = prev\n }\n }\n}\n\nconst del = (self, node) => {\n if (node) {\n const hit = node.value\n if (self[DISPOSE])\n self[DISPOSE](hit.key, hit.value)\n\n self[LENGTH] -= hit.length\n self[CACHE].delete(hit.key)\n self[LRU_LIST].removeNode(node)\n }\n}\n\nclass Entry {\n constructor (key, value, length, now, maxAge) {\n this.key = key\n this.value = value\n this.length = length\n this.now = now\n this.maxAge = maxAge || 0\n }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n let hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n hit = undefined\n }\n if (hit)\n fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\n","'use strict';\n\nconst WebSocket = require('./lib/websocket');\n\nWebSocket.createWebSocketStream = require('./lib/stream');\nWebSocket.Server = require('./lib/websocket-server');\nWebSocket.Receiver = require('./lib/receiver');\nWebSocket.Sender = require('./lib/sender');\n\nmodule.exports = WebSocket;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-debug-tools.production.min.js');\n} else {\n module.exports = require('./cjs/react-debug-tools.development.js');\n}\n","'use strict';\n\nvar matchOperatorsRe = /[|\\\\{}()[\\]^$+*?.]/g;\n\nmodule.exports = function (str) {\n\tif (typeof str !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\treturn str.replace(matchOperatorsRe, '\\\\$&');\n};\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n","\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./ButtonIcon.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./ButtonIcon.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./ButtonIcon.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./Icon.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./Icon.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./Icon.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./ContextMenu.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./ContextMenu.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./ContextMenu.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./ContextMenuItem.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./ContextMenuItem.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./ContextMenuItem.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../../node_modules/css-loader/index.js??ref--5-1!./AutoSizeInput.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../../node_modules/css-loader/index.js??ref--5-1!./AutoSizeInput.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../../node_modules/css-loader/index.js??ref--5-1!./AutoSizeInput.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./EditableName.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./EditableName.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./EditableName.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./ExpandCollapseToggle.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./ExpandCollapseToggle.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./ExpandCollapseToggle.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./CommitRanked.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./CommitRanked.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./CommitRanked.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./RootSelector.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./RootSelector.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./RootSelector.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./SnapshotCommitList.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./SnapshotCommitList.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!./SnapshotCommitList.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./ReactLogo.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./ReactLogo.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./ReactLogo.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./WarnIfLegacyBackendDetected.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./WarnIfLegacyBackendDetected.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./WarnIfLegacyBackendDetected.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports.quote = function (xs) {\n return xs.map(function (s) {\n if (s && typeof s === 'object') {\n return s.op.replace(/(.)/g, '\\\\$1');\n }\n else if (/[\"\\s]/.test(s) && !/'/.test(s)) {\n return \"'\" + s.replace(/(['\\\\])/g, '\\\\$1') + \"'\";\n }\n else if (/[\"'\\s]/.test(s)) {\n return '\"' + s.replace(/([\"\\\\$`!])/g, '\\\\$1') + '\"';\n }\n else {\n s = String(s).replace(/([A-z]:)?([#!\"$&'()*,:;<=>?@\\[\\\\\\]^`{|}])/g, '$1\\\\$2');\n\n // unescape paths in windows\n s = s.replace(/\\\\\\\\/g, '\\\\')\n return s\n }\n }).join(' ');\n};\n\n// '<(' is process substitution operator and\n// can be parsed the same as control operator\nvar CONTROL = '(?:' + [\n '\\\\|\\\\|', '\\\\&\\\\&', ';;', '\\\\|\\\\&', '\\\\<\\\\(', '>>', '>\\\\&', '[&;()|<>]'\n].join('|') + ')';\nvar META = '|&;()<> \\\\t';\nvar BAREWORD = '(\\\\\\\\[\\'\"' + META + ']|[^\\\\s\\'\"' + META + '])+';\nvar SINGLE_QUOTE = '\"((\\\\\\\\\"|[^\"])*?)\"';\nvar DOUBLE_QUOTE = '\\'((\\\\\\\\\\'|[^\\'])*?)\\'';\n\nvar TOKEN = '';\nfor (var i = 0; i < 4; i++) {\n TOKEN += (Math.pow(16,8)*Math.random()).toString(16);\n}\n\nexports.parse = function (s, env, opts) {\n var mapped = parse(s, env, opts);\n if (typeof env !== 'function') return mapped;\n return mapped.reduce(function (acc, s) {\n if (typeof s === 'object') return acc.concat(s);\n var xs = s.split(RegExp('(' + TOKEN + '.*?' + TOKEN + ')', 'g'));\n if (xs.length === 1) return acc.concat(xs[0]);\n return acc.concat(xs.filter(Boolean).map(function (x) {\n if (RegExp('^' + TOKEN).test(x)) {\n return JSON.parse(x.split(TOKEN)[1]);\n }\n else return x;\n }));\n }, []);\n};\n\nfunction parse (s, env, opts) {\n var chunker = new RegExp([\n '(' + CONTROL + ')', // control chars\n '(' + BAREWORD + '|' + SINGLE_QUOTE + '|' + DOUBLE_QUOTE + ')*'\n ].join('|'), 'g');\n var match = s.match(chunker).filter(Boolean);\n var commented = false;\n\n if (!match) return [];\n if (!env) env = {};\n if (!opts) opts = {};\n return match.map(function (s, j) {\n if (commented) {\n return;\n }\n if (RegExp('^' + CONTROL + '$').test(s)) {\n return { op: s };\n }\n\n // Hand-written scanner/parser for Bash quoting rules:\n //\n // 1. inside single quotes, all characters are printed literally.\n // 2. inside double quotes, all characters are printed literally\n // except variables prefixed by '$' and backslashes followed by\n // either a double quote or another backslash.\n // 3. outside of any quotes, backslashes are treated as escape\n // characters and not printed (unless they are themselves escaped)\n // 4. quote context can switch mid-token if there is no whitespace\n // between the two quote contexts (e.g. all'one'\"token\" parses as\n // \"allonetoken\")\n var SQ = \"'\";\n var DQ = '\"';\n var DS = '$';\n var BS = opts.escape || '\\\\';\n var quote = false;\n var esc = false;\n var out = '';\n var isGlob = false;\n\n for (var i = 0, len = s.length; i < len; i++) {\n var c = s.charAt(i);\n isGlob = isGlob || (!quote && (c === '*' || c === '?'));\n if (esc) {\n out += c;\n esc = false;\n }\n else if (quote) {\n if (c === quote) {\n quote = false;\n }\n else if (quote == SQ) {\n out += c;\n }\n else { // Double quote\n if (c === BS) {\n i += 1;\n c = s.charAt(i);\n if (c === DQ || c === BS || c === DS) {\n out += c;\n } else {\n out += BS + c;\n }\n }\n else if (c === DS) {\n out += parseEnvVar();\n }\n else {\n out += c;\n }\n }\n }\n else if (c === DQ || c === SQ) {\n quote = c;\n }\n else if (RegExp('^' + CONTROL + '$').test(c)) {\n return { op: s };\n }\n else if (RegExp('^#$').test(c)) {\n commented = true;\n if (out.length){\n return [out, { comment: s.slice(i+1) + match.slice(j+1).join(' ') }];\n }\n return [{ comment: s.slice(i+1) + match.slice(j+1).join(' ') }];\n }\n else if (c === BS) {\n esc = true;\n }\n else if (c === DS) {\n out += parseEnvVar();\n }\n else out += c;\n }\n\n if (isGlob) return {op: 'glob', pattern: out};\n\n return out;\n\n function parseEnvVar() {\n i += 1;\n var varend, varname;\n //debugger\n if (s.charAt(i) === '{') {\n i += 1;\n if (s.charAt(i) === '}') {\n throw new Error(\"Bad substitution: \" + s.substr(i - 2, 3));\n }\n varend = s.indexOf('}', i);\n if (varend < 0) {\n throw new Error(\"Bad substitution: \" + s.substr(i));\n }\n varname = s.substr(i, varend - i);\n i = varend;\n }\n else if (/[*@#?$!_\\-]/.test(s.charAt(i))) {\n varname = s.charAt(i);\n i += 1;\n }\n else {\n varend = s.substr(i).match(/[^\\w\\d_]/);\n if (!varend) {\n varname = s.substr(i);\n i = s.length;\n } else {\n varname = s.substr(i, varend.index);\n i += varend.index - 1;\n }\n }\n return getVar(null, '', varname);\n }\n })\n // finalize parsed aruments\n .reduce(function(prev, arg){\n if (arg === undefined){\n return prev;\n }\n return prev.concat(arg);\n },[]);\n\n function getVar (_, pre, key) {\n var r = typeof env === 'function' ? env(key) : env[key];\n if (r === undefined && key != '')\n r = '';\n else if (r === undefined)\n r = '$';\n\n if (typeof r === 'object') {\n return pre + TOKEN + JSON.stringify(r) + TOKEN;\n }\n else return pre + r;\n }\n}\n","/** @license React v0.0.0-experimental-9b8060041\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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'use strict';var l=require(\"object-assign\"),m=60103,p=60106;exports.Fragment=60107;exports.StrictMode=60108;exports.Profiler=60114;var q=60109,r=60110,t=60112;exports.Suspense=60113;exports.unstable_SuspenseList=60120;var u=60115,v=60116;exports.unstable_DebugTracingMode=60129;exports.unstable_LegacyHidden=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var w=Symbol.for;m=w(\"react.element\");p=w(\"react.portal\");exports.Fragment=w(\"react.fragment\");exports.StrictMode=w(\"react.strict_mode\");exports.Profiler=w(\"react.profiler\");q=w(\"react.provider\");r=w(\"react.context\");t=w(\"react.forward_ref\");exports.Suspense=w(\"react.suspense\");exports.unstable_SuspenseList=w(\"react.suspense_list\");u=w(\"react.memo\");v=w(\"react.lazy\");exports.unstable_DebugTracingMode=w(\"react.debug_trace_mode\");exports.unstable_LegacyHidden=\nw(\"react.legacy_hidden\")}var x=\"function\"===typeof Symbol&&Symbol.iterator;function y(a){if(null===a||\"object\"!==typeof a)return null;a=x&&a[x]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nfunction z(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var A={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},B={};\nfunction C(a,b,c){this.props=a;this.context=b;this.refs=B;this.updater=c||A}C.prototype.isReactComponent={};C.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(z(85));this.updater.enqueueSetState(this,a,b,\"setState\")};C.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function D(){}D.prototype=C.prototype;function E(a,b,c){this.props=a;this.context=b;this.refs=B;this.updater=c||A}var F=E.prototype=new D;\nF.constructor=E;l(F,C.prototype);F.isPureReactComponent=!0;var G={current:null},H=Object.prototype.hasOwnProperty,I={key:!0,ref:!0,__self:!0,__source:!0};\nfunction J(a,b,c){var e,d={},k=null,h=null;if(null!=b)for(e in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)H.call(b,e)&&!I.hasOwnProperty(e)&&(d[e]=b[e]);var g=arguments.length-2;if(1===g)d.children=c;else if(1<g){for(var f=Array(g),n=0;n<g;n++)f[n]=arguments[n+2];d.children=f}if(a&&a.defaultProps)for(e in g=a.defaultProps,g)void 0===d[e]&&(d[e]=g[e]);return{$$typeof:m,type:a,key:k,ref:h,props:d,_owner:G.current}}\nfunction K(a,b){return{$$typeof:m,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function L(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===m}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var M=/\\/+/g;function N(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction O(a,b,c,e,d){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case m:case p:h=!0}}if(h)return h=a,d=d(h),a=\"\"===e?\".\"+N(h,0):e,Array.isArray(d)?(c=\"\",null!=a&&(c=a.replace(M,\"$&/\")+\"/\"),O(d,b,c,\"\",function(a){return a})):null!=d&&(L(d)&&(d=K(d,c+(!d.key||h&&h.key===d.key?\"\":(\"\"+d.key).replace(M,\"$&/\")+\"/\")+a)),b.push(d)),1;h=0;e=\"\"===e?\".\":e+\":\";if(Array.isArray(a))for(var g=\n0;g<a.length;g++){k=a[g];var f=e+N(k,g);h+=O(k,b,c,f,d)}else if(f=y(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=e+N(k,g++),h+=O(k,b,c,f,d);else if(\"object\"===k)throw b=\"\"+a,Error(z(31,\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b));return h}function P(a,b,c){if(null==a)return a;var e=[],d=0;O(a,e,\"\",\"\",function(a){return b.call(c,a,d++)});return e}\nfunction Q(a){if(-1===a._status){var b=a._result;b=b();a._status=0;a._result=b;b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)})}if(1===a._status)return a._result;throw a._result;}var R={current:null};function S(){var a=R.current;if(null===a)throw Error(z(321));return a}var T={transition:0},U={ReactCurrentDispatcher:R,ReactCurrentBatchConfig:T,ReactCurrentOwner:G,IsSomeRendererActing:{current:!1},assign:l};\nexports.Children={map:P,forEach:function(a,b,c){P(a,function(){b.apply(this,arguments)},c)},count:function(a){var b=0;P(a,function(){b++});return b},toArray:function(a){return P(a,function(a){return a})||[]},only:function(a){if(!L(a))throw Error(z(143));return a}};exports.Component=C;exports.PureComponent=E;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=U;\nexports.cloneElement=function(a,b,c){if(null===a||void 0===a)throw Error(z(267,a));var e=l({},a.props),d=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=G.current);void 0!==b.key&&(d=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)H.call(b,f)&&!I.hasOwnProperty(f)&&(e[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)e.children=c;else if(1<f){g=Array(f);for(var n=0;n<f;n++)g[n]=arguments[n+2];e.children=g}return{$$typeof:m,type:a.type,\nkey:d,ref:k,props:e,_owner:h}};exports.createContext=function(a,b){void 0===b&&(b=null);a={$$typeof:r,_calculateChangedBits:b,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:q,_context:a};return a.Consumer=a};exports.createElement=J;exports.createFactory=function(a){var b=J.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};exports.forwardRef=function(a){return{$$typeof:t,render:a}};exports.isValidElement=L;\nexports.lazy=function(a){return{$$typeof:v,_payload:{_status:-1,_result:a},_init:Q}};exports.memo=function(a,b){return{$$typeof:u,type:a,compare:void 0===b?null:b}};exports.unstable_createMutableSource=function(a,b){return{_getVersion:b,_source:a,_workInProgressVersionPrimary:null,_workInProgressVersionSecondary:null}};exports.unstable_getCacheForType=function(a){return S().getCacheForType(a)};\nexports.unstable_startTransition=function(a){var b=T.transition;T.transition=1;try{a()}finally{T.transition=b}};exports.unstable_useDeferredValue=function(a){return S().useDeferredValue(a)};exports.unstable_useMutableSource=function(a,b,c){return S().useMutableSource(a,b,c)};exports.unstable_useOpaqueIdentifier=function(){return S().useOpaqueIdentifier()};exports.unstable_useTransition=function(){return S().useTransition()};exports.useCallback=function(a,b){return S().useCallback(a,b)};\nexports.useContext=function(a,b){return S().useContext(a,b)};exports.useDebugValue=function(){};exports.useEffect=function(a,b){return S().useEffect(a,b)};exports.useImperativeHandle=function(a,b,c){return S().useImperativeHandle(a,b,c)};exports.useLayoutEffect=function(a,b){return S().useLayoutEffect(a,b)};exports.useMemo=function(a,b){return S().useMemo(a,b)};exports.useReducer=function(a,b,c){return S().useReducer(a,b,c)};exports.useRef=function(a){return S().useRef(a)};exports.useState=function(a){return S().useState(a)};\nexports.version=\"17.0.2-experimental-9b8060041\";\n","/** @license React v0.0.0-experimental-9b8060041\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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 Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),m=require(\"object-assign\"),u=require(\"scheduler\");function w(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}if(!aa)throw Error(w(227));var ba=new Set,ca={};function da(a,b){ea(a,b);ea(a+\"Capture\",b)}\nfunction ea(a,b){ca[a]=b;for(a=0;a<b.length;a++)ba.add(b[a])}\nvar fa=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ha=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,ia=Object.prototype.hasOwnProperty,\nja={},ka={};function la(a){if(ia.call(ka,a))return!0;if(ia.call(ja,a))return!1;if(ha.test(a))return ka[a]=!0;ja[a]=!0;return!1}function ma(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction na(a,b,c,d){if(null===b||\"undefined\"===typeof b||ma(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function A(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var C={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){C[a]=new A(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];C[b]=new A(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){C[a]=new A(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){C[a]=new A(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){C[a]=new A(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){C[a]=new A(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){C[a]=new A(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){C[a]=new A(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){C[a]=new A(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(oa,\npa);C[b]=new A(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(oa,pa);C[b]=new A(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(oa,pa);C[b]=new A(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){C[a]=new A(a,1,!1,a.toLowerCase(),null,!1,!1)});\nC.xlinkHref=new A(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){C[a]=new A(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=C.hasOwnProperty(b)?C[b]:null;var f=null!==e?0===e.type:d?!1:!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1]?!1:!0;f||(na(b,c,e,d)&&(c=null),d||null===e?la(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c))))}\nvar ra=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,sa=60103,ta=60106,ua=60107,va=60108,wa=60114,ya=60109,za=60110,Aa=60112,Ba=60113,Ca=60120,Da=60115,Ea=60116,Fa=60128,Ga=60129,Ha=60130,Ia=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var D=Symbol.for;sa=D(\"react.element\");ta=D(\"react.portal\");ua=D(\"react.fragment\");va=D(\"react.strict_mode\");wa=D(\"react.profiler\");ya=D(\"react.provider\");za=D(\"react.context\");Aa=D(\"react.forward_ref\");Ba=D(\"react.suspense\");Ca=D(\"react.suspense_list\");Da=D(\"react.memo\");Ea=D(\"react.lazy\");D(\"react.scope\");Fa=D(\"react.opaque.id\");Ga=D(\"react.debug_trace_mode\");Ha=D(\"react.offscreen\");Ia=D(\"react.legacy_hidden\")}var Ja=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction Ka(a){if(null===a||\"object\"!==typeof a)return null;a=Ja&&a[Ja]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var La;function Ma(a){if(void 0===La)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);La=b&&b[1]||\"\"}return\"\\n\"+La+a}var Na=!1;\nfunction Oa(a,b){if(!a||Na)return\"\";Na=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(k){var d=k}Reflect.construct(a,[],b)}else{try{b.call()}catch(k){d=k}a.call(b.prototype)}else{try{throw Error();}catch(k){d=k}a()}}catch(k){if(k&&d&&\"string\"===typeof k.stack){for(var e=k.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ua:return\"Fragment\";case ta:return\"Portal\";case wa:return\"Profiler\";case va:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Qa(a.type);case Ea:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}function Ra(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function Sa(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ta(a){var b=Sa(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Ua(a){a._valueTracker||(a._valueTracker=Ta(a))}function Va(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Sa(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Wa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Xa(a,b){var c=b.checked;return m({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Ya(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Ra(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function Za(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction $a(a,b){Za(a,b);var c=Ra(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?ab(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&ab(a,b.type,Ra(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction bb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction ab(a,b,c){if(\"number\"!==b||Wa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function cb(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function db(a,b){a=m({children:void 0},b);if(b=cb(b.children))a.children=b;return a}\nfunction eb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+Ra(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction fb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(w(91));return m({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function gb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(w(92));if(Array.isArray(c)){if(!(1>=c.length))throw Error(w(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Ra(c)}}\nfunction hb(a,b){var c=Ra(b.value),d=Ra(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function ib(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var jb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction kb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function lb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?kb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar mb,nb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==jb.svg||\"innerHTML\"in a)a.innerHTML=b;else{mb=mb||document.createElement(\"div\");mb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=m({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(w(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(w(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(w(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(w(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}function wb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var xb=null,yb=null,zb=null;\nfunction Ab(a){if(a=Bb(a)){if(\"function\"!==typeof xb)throw Error(w(280));var b=a.stateNode;b&&(b=Cb(b),xb(a.stateNode,a.type,b))}}function Db(a){yb?zb?zb.push(a):zb=[a]:yb=a}function Eb(){if(yb){var a=yb,b=zb;zb=yb=null;Ab(a);if(b)for(a=0;a<b.length;a++)Ab(b[a])}}function Fb(a,b){return a(b)}function Gb(a,b,c,d,e){return a(b,c,d,e)}function Hb(){}var Ib=Fb,Jb=!1,Kb=!1;function Lb(){if(null!==yb||null!==zb)Hb(),Eb()}\nfunction Mb(a,b,c){if(Kb)return a(b,c);Kb=!0;try{return Ib(a,b,c)}finally{Kb=!1,Lb()}}\nfunction Nb(a,b){var c=a.stateNode;if(null===c)return null;var d=Cb(c);if(null===d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==\ntypeof c)throw Error(w(231,b,typeof c));return c}var Ob=!1;if(fa)try{var Pb={};Object.defineProperty(Pb,\"passive\",{get:function(){Ob=!0}});window.addEventListener(\"test\",Pb,Pb);window.removeEventListener(\"test\",Pb,Pb)}catch(a){Ob=!1}function Qb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(p){this.onError(p)}}var Rb=!1,Sb=null,Tb=!1,Ub=null,Vb={onError:function(a){Rb=!0;Sb=a}};function Wb(a,b,c,d,e,f,g,h,k){Rb=!1;Sb=null;Qb.apply(Vb,arguments)}\nfunction Xb(a,b,c,d,e,f,g,h,k){Wb.apply(this,arguments);if(Rb){if(Rb){var l=Sb;Rb=!1;Sb=null}else throw Error(w(198));Tb||(Tb=!0,Ub=l)}}function Yb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&2050)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function Zb(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function $b(a){if(Yb(a)!==a)throw Error(w(188));}\nfunction ac(a){var b=a.alternate;if(!b){b=Yb(a);if(null===b)throw Error(w(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return $b(e),a;if(f===d)return $b(e),b;f=f.sibling}throw Error(w(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(w(189));}}if(c.alternate!==d)throw Error(w(190));}if(3!==c.tag)throw Error(w(188));return c.stateNode.current===c?a:b}function bc(a){a=ac(a);return null!==a?cc(a):null}function cc(a){if(5===a.tag||6===a.tag)return a;for(a=a.child;null!==a;){var b=cc(a);if(null!==b)return b;a=a.sibling}return null}function dc(a,b){for(var c=a.alternate;null!==b;){if(b===a||b===c)return!0;b=b.return}return!1}\nvar ec,fc,gc,hc,ic,jc,kc=!1,lc=[],mc=null,nc=null,oc=null,pc=new Map,qc=new Map,rc=[],sc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");function tc(a,b,c,d,e){return{blockedOn:a,domEventName:b,eventSystemFlags:c|16,nativeEvent:e,targetContainers:[d]}}\nfunction uc(a,b,c,d,e){a=tc(a,b,c,d,e);lc.push(a);if(1===lc.length)for(;null!==a.blockedOn;){b=Bb(a.blockedOn);if(null===b)break;ec(b);if(null===a.blockedOn)vc();else break}}function wc(a,b){switch(a){case \"focusin\":case \"focusout\":mc=null;break;case \"dragenter\":case \"dragleave\":nc=null;break;case \"mouseover\":case \"mouseout\":oc=null;break;case \"pointerover\":case \"pointerout\":pc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":qc.delete(b.pointerId)}}\nfunction xc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a=tc(b,c,d,e,f),null!==b&&(b=Bb(b),null!==b&&gc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction yc(a,b,c,d,e){switch(b){case \"focusin\":return mc=xc(mc,a,b,c,d,e),!0;case \"dragenter\":return nc=xc(nc,a,b,c,d,e),!0;case \"mouseover\":return oc=xc(oc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;pc.set(f,xc(pc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,qc.set(f,xc(qc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction zc(a){var b=Ac(a.target);if(null!==b){var c=Yb(b);if(null!==c)if(b=c.tag,13===b){if(b=Zb(c),null!==b){a.blockedOn=b;jc(a.lanePriority,function(){u.unstable_runWithPriority(a.priority,function(){hc(c)})});return}}else if(3===b&&c.stateNode.hydrate){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction Bc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=Cc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null!==c)return b=Bb(c),null!==b&&gc(b),a.blockedOn=c,!1;b.shift()}return!0}function Dc(a,b,c){Bc(a)&&c.delete(b)}\nfunction vc(){for(kc=!1;0<lc.length;){var a=lc[0];if(null!==a.blockedOn){a=Bb(a.blockedOn);null!==a&&fc(a);break}for(var b=a.targetContainers;0<b.length;){var c=Cc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null!==c){a.blockedOn=c;break}b.shift()}null===a.blockedOn&&lc.shift()}null!==mc&&Bc(mc)&&(mc=null);null!==nc&&Bc(nc)&&(nc=null);null!==oc&&Bc(oc)&&(oc=null);pc.forEach(Dc);qc.forEach(Dc)}\nfunction Ec(a,b){a.blockedOn===b&&(a.blockedOn=null,kc||(kc=!0,u.unstable_scheduleCallback(u.unstable_NormalPriority,vc)))}\nfunction Fc(a){function b(b){return Ec(b,a)}if(0<lc.length){Ec(lc[0],a);for(var c=1;c<lc.length;c++){var d=lc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==mc&&Ec(mc,a);null!==nc&&Ec(nc,a);null!==oc&&Ec(oc,a);pc.forEach(b);qc.forEach(b);for(c=0;c<rc.length;c++)d=rc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<rc.length&&(c=rc[0],null===c.blockedOn);)zc(c),null===c.blockedOn&&rc.shift()}\nfunction Gc(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Hc={animationend:Gc(\"Animation\",\"AnimationEnd\"),animationiteration:Gc(\"Animation\",\"AnimationIteration\"),animationstart:Gc(\"Animation\",\"AnimationStart\"),transitionend:Gc(\"Transition\",\"TransitionEnd\")},Ic={},Jc={};\nfa&&(Jc=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Hc.animationend.animation,delete Hc.animationiteration.animation,delete Hc.animationstart.animation),\"TransitionEvent\"in window||delete Hc.transitionend.transition);function Kc(a){if(Ic[a])return Ic[a];if(!Hc[a])return a;var b=Hc[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Jc)return Ic[a]=b[c];return a}\nvar Lc=Kc(\"animationend\"),Mc=Kc(\"animationiteration\"),Nc=Kc(\"animationstart\"),Oc=Kc(\"transitionend\"),Pc=new Map,Qc=new Map,Rc=[\"abort\",\"abort\",Lc,\"animationEnd\",Mc,\"animationIteration\",Nc,\"animationStart\",\"canplay\",\"canPlay\",\"canplaythrough\",\"canPlayThrough\",\"durationchange\",\"durationChange\",\"emptied\",\"emptied\",\"encrypted\",\"encrypted\",\"ended\",\"ended\",\"error\",\"error\",\"gotpointercapture\",\"gotPointerCapture\",\"load\",\"load\",\"loadeddata\",\"loadedData\",\"loadedmetadata\",\"loadedMetadata\",\"loadstart\",\"loadStart\",\n\"lostpointercapture\",\"lostPointerCapture\",\"playing\",\"playing\",\"progress\",\"progress\",\"seeking\",\"seeking\",\"stalled\",\"stalled\",\"suspend\",\"suspend\",\"timeupdate\",\"timeUpdate\",Oc,\"transitionEnd\",\"waiting\",\"waiting\"];function Sc(a,b){for(var c=0;c<a.length;c+=2){var d=a[c],e=a[c+1];e=\"on\"+(e[0].toUpperCase()+e.slice(1));Qc.set(d,b);Pc.set(d,e);da(e,[d])}}\nvar Tc=u.unstable_runWithPriority,Uc=u.unstable_scheduleCallback,Vc=u.unstable_cancelCallback,Wc=u.unstable_shouldYield,Xc=u.unstable_requestPaint,Yc=u.unstable_now,Zc=u.unstable_getCurrentPriorityLevel,$c=u.unstable_ImmediatePriority,ad=u.unstable_UserBlockingPriority,bd=u.unstable_NormalPriority,cd=u.unstable_LowPriority,dd=u.unstable_IdlePriority,ed={},fd=void 0!==Xc?Xc:function(){},gd=null,hd=null,id=!1,jd=Yc(),E=1E4>jd?Yc:function(){return Yc()-jd};\nfunction kd(){switch(Zc()){case $c:return 99;case ad:return 98;case bd:return 97;case cd:return 96;case dd:return 95;default:throw Error(w(332));}}function ld(a){switch(a){case 99:return $c;case 98:return ad;case 97:return bd;case 96:return cd;case 95:return dd;default:throw Error(w(332));}}function md(a,b){a=ld(a);return Tc(a,b)}function nd(a,b,c){a=ld(a);return Uc(a,b,c)}function od(){if(null!==hd){var a=hd;hd=null;Vc(a)}pd()}\nfunction pd(){if(!id&&null!==gd){id=!0;var a=0;try{var b=gd;md(99,function(){for(;a<b.length;a++){var c=b[a];do c=c(!0);while(null!==c)}});gd=null}catch(c){throw null!==gd&&(gd=gd.slice(a+1)),Uc($c,od),c;}finally{id=!1}}}var qd=0,F=8;\nfunction rd(a){if(0!==(1&a))return F=15,1;if(0!==(2&a))return F=14,2;if(0!==(4&a))return F=13,4;var b=24&a;if(0!==b)return F=12,b;if(0!==(a&32))return F=11,32;b=192&a;if(0!==b)return F=10,b;if(0!==(a&256))return F=9,256;b=3584&a;if(0!==b)return F=8,b;if(0!==(a&4096))return F=7,4096;b=4186112&a;if(0!==b)return F=6,b;b=62914560&a;if(0!==b)return F=5,b;if(a&67108864)return F=4,67108864;if(0!==(a&134217728))return F=3,134217728;b=805306368&a;if(0!==b)return F=2,b;if(0!==(1073741824&a))return F=1,1073741824;\nF=8;return a}function sd(a){switch(a){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}function td(a){switch(a){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(w(358,a));}}\nfunction ud(a,b){var c=a.pendingLanes;if(0===c)return F=0;var d=0,e=0,f=a.expiredLanes,g=a.suspendedLanes,h=a.pingedLanes;if(0!==f)d=f,e=F=15;else if(f=c&134217727,0!==f){var k=f&~g;0!==k?(d=rd(k),e=F):(h&=f,0!==h&&(d=rd(h),e=F))}else f=c&~g,0!==f?(d=rd(f),e=F):0!==h&&(d=rd(h),e=F);if(0===d)return 0;d=31-vd(d);d=c&((0>d?0:1<<d)<<1)-1;if(0!==b&&b!==d&&0===(b&g)){rd(b);if(e<=F)return b;F=e}b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-vd(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction wd(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function xd(a,b){switch(a){case 15:return 1;case 14:return 2;case 12:return a=yd(24&~b),0===a?xd(10,b):a;case 10:return a=yd(192&~b),0===a?xd(8,b):a;case 8:return a=yd(3584&~b),0===a&&(a=yd(4186112&~b),0===a&&(a=512)),a;case 2:return b=yd(805306368&~b),0===b&&(b=268435456),b}throw Error(w(358,a));}function yd(a){return a&-a}function zd(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction Ad(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-vd(b);a[b]=c}var vd=Math.clz32?Math.clz32:Bd,Cd=Math.log,Dd=Math.LN2;function Bd(a){return 0===a?32:31-(Cd(a)/Dd|0)|0}var Ed=u.unstable_now;Ed();var Fd=u.unstable_UserBlockingPriority,Gd=u.unstable_runWithPriority,Hd=!0;function Id(a,b,c,d){Jb||Hb();var e=Jd,f=Jb;Jb=!0;try{Gb(e,a,b,c,d)}finally{(Jb=f)||Lb()}}function Kd(a,b,c,d){Gd(Fd,Jd.bind(null,a,b,c,d))}\nfunction Jd(a,b,c,d){if(Hd){var e=0===(b&4);if(e&&0<lc.length&&-1<sc.indexOf(a))uc(null,a,b,c,d);else{var f=Cc(a,b,c,d);if(null===f)e&&wc(a,d);else{if(e){if(-1<sc.indexOf(a)){uc(f,a,b,c,d);return}if(yc(f,a,b,c,d))return;wc(a,d)}Ld(a,b,d,null,c)}}}}\nfunction Cc(a,b,c,d){var e=wb(d);e=Ac(e);if(null!==e){var f=Yb(e);if(null===f)e=null;else{var g=f.tag;if(13===g){e=Zb(f);if(null!==e)return e;e=null}else if(3===g){if(f.stateNode.hydrate)return 3===f.tag?f.stateNode.containerInfo:null;e=null}else f!==e&&(e=null)}}Ld(a,b,d,e,c);return null}var Md=null,Nd=null,Od=null;\nfunction Pd(){if(Od)return Od;var a,b=Nd,c=b.length,d,e=\"value\"in Md?Md.value:Md.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return Od=e.slice(a,1<d?1-d:void 0)}function Qd(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function Rd(){return!0}function Sd(){return!1}\nfunction Td(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?Rd:Sd;this.isPropagationStopped=Sd;return this}m(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=Rd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=Rd)},persist:function(){},isPersistent:Rd});return b}\nvar Ud={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Vd=Td(Ud),Wd=m({},Ud,{view:0,detail:0}),Xd=Td(Wd),Yd,Zd,$d,be=m({},Wd,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:ae,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\na)return a.movementX;a!==$d&&($d&&\"mousemove\"===a.type?(Yd=a.screenX-$d.screenX,Zd=a.screenY-$d.screenY):Zd=Yd=0,$d=a);return Yd},movementY:function(a){return\"movementY\"in a?a.movementY:Zd}}),ce=Td(be),de=m({},be,{dataTransfer:0}),ee=Td(de),fe=m({},Wd,{relatedTarget:0}),ge=Td(fe),he=m({},Ud,{animationName:0,elapsedTime:0,pseudoElement:0}),ie=Td(he),je=m({},Ud,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),ke=Td(je),le=m({},Ud,{data:0}),me=Td(le),ne={Esc:\"Escape\",\nSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},oe={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},pe={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function qe(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=pe[a])?!!b[a]:!1}function ae(){return qe}\nvar re=m({},Wd,{key:function(a){if(a.key){var b=ne[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=Qd(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?oe[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:ae,charCode:function(a){return\"keypress\"===a.type?Qd(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?Qd(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),se=Td(re),te=m({},be,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),ue=Td(te),ve=m({},Wd,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:ae}),we=Td(ve),xe=m({},Ud,{propertyName:0,elapsedTime:0,pseudoElement:0}),ye=Td(xe),ze=m({},be,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Ae=Td(ze),Be=[9,13,27,32],Ce=fa&&\"CompositionEvent\"in window,De=null;fa&&\"documentMode\"in document&&(De=document.documentMode);var Ee=fa&&\"TextEvent\"in window&&!De,Fe=fa&&(!Ce||De&&8<De&&11>=De),Ge=String.fromCharCode(32),He=!1;\nfunction Ie(a,b){switch(a){case \"keyup\":return-1!==Be.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function Je(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var Ke=!1;function Le(a,b){switch(a){case \"compositionend\":return Je(b);case \"keypress\":if(32!==b.which)return null;He=!0;return Ge;case \"textInput\":return a=b.data,a===Ge&&He?null:a;default:return null}}\nfunction Me(a,b){if(Ke)return\"compositionend\"===a||!Ce&&Ie(a,b)?(a=Pd(),Od=Nd=Md=null,Ke=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return Fe&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar Ne={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Oe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!Ne[a.type]:\"textarea\"===b?!0:!1}function Pe(a,b,c,d){Db(d);b=Qe(b,\"onChange\");0<b.length&&(c=new Vd(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}))}var Re=null,Se=null;function Te(a){Ue(a,0)}function Ve(a){var b=We(a);if(Va(b))return a}\nfunction Xe(a,b){if(\"change\"===a)return b}var Ye=!1;if(fa){var Ze;if(fa){var $e=\"oninput\"in document;if(!$e){var af=document.createElement(\"div\");af.setAttribute(\"oninput\",\"return;\");$e=\"function\"===typeof af.oninput}Ze=$e}else Ze=!1;Ye=Ze&&(!document.documentMode||9<document.documentMode)}function bf(){Re&&(Re.detachEvent(\"onpropertychange\",cf),Se=Re=null)}function cf(a){if(\"value\"===a.propertyName&&Ve(Se)){var b=[];Pe(b,Se,a,wb(a));a=Te;if(Jb)a(b);else{Jb=!0;try{Fb(a,b)}finally{Jb=!1,Lb()}}}}\nfunction df(a,b,c){\"focusin\"===a?(bf(),Re=b,Se=c,Re.attachEvent(\"onpropertychange\",cf)):\"focusout\"===a&&bf()}function ef(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return Ve(Se)}function ff(a,b){if(\"click\"===a)return Ve(b)}function gf(a,b){if(\"input\"===a||\"change\"===a)return Ve(b)}function hf(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var jf=\"function\"===typeof Object.is?Object.is:hf,kf=Object.prototype.hasOwnProperty;\nfunction lf(a,b){if(jf(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++)if(!kf.call(b,c[d])||!jf(a[c[d]],b[c[d]]))return!1;return!0}function mf(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction nf(a,b){var c=mf(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=mf(c)}}function of(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?of(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction pf(){for(var a=window,b=Wa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Wa(a.document)}return b}function qf(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar rf=fa&&\"documentMode\"in document&&11>=document.documentMode,sf=null,tf=null,uf=null,vf=!1;\nfunction wf(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;vf||null==sf||sf!==Wa(d)||(d=sf,\"selectionStart\"in d&&qf(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),uf&&lf(uf,d)||(uf=d,d=Qe(tf,\"onSelect\"),0<d.length&&(b=new Vd(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=sf)))}\nSc(\"cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange\".split(\" \"),\n0);Sc(\"drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel\".split(\" \"),1);Sc(Rc,2);for(var xf=\"change selectionchange textInput compositionstart compositionend compositionupdate\".split(\" \"),yf=0;yf<xf.length;yf++)Qc.set(xf[yf],0);ea(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);\nea(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ea(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);ea(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);da(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));da(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));da(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);da(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));\nda(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));da(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var zf=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),Af=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(zf));\nfunction Bf(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Xb(d,b,void 0,a);a.currentTarget=null}\nfunction Ue(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;Bf(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;Bf(e,h,l);f=k}}}if(Tb)throw a=Ub,Tb=!1,Ub=null,a;}\nfunction G(a,b){var c=b[Cf];void 0===c&&(c=b[Cf]=new Set);var d=a+\"__bubble\";c.has(d)||(Df(b,a,2,!1),c.add(d))}function Ef(a,b,c){var d=0;b&&(d|=4);Df(c,a,d,b)}var Ff=\"_reactListening\"+Math.random().toString(36).slice(2);function Gf(a){if(!a[Ff]){a[Ff]=!0;ba.forEach(function(b){\"selectionchange\"!==b&&(Af.has(b)||Ef(b,!1,a),Ef(b,!0,a))});var b=9===a.nodeType?a:a.ownerDocument;null===b||b[Ff]||(b[Ff]=!0,Ef(\"selectionchange\",!1,b))}}\nfunction Df(a,b,c,d){var e=Qc.get(b);switch(void 0===e?2:e){case 0:e=Id;break;case 1:e=Kd;break;default:e=Jd}c=e.bind(null,b,c,a);e=void 0;!Ob||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction Ld(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=Ac(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Mb(function(){var d=f,e=wb(c),g=[];\na:{var h=Pc.get(a);if(void 0!==h){var k=Vd,y=a;switch(a){case \"keypress\":if(0===Qd(c))break a;case \"keydown\":case \"keyup\":k=se;break;case \"focusin\":y=\"focus\";k=ge;break;case \"focusout\":y=\"blur\";k=ge;break;case \"beforeblur\":case \"afterblur\":k=ge;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=ce;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\nee;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=we;break;case Lc:case Mc:case Nc:k=ie;break;case Oc:k=ye;break;case \"scroll\":k=Xd;break;case \"wheel\":k=Ae;break;case \"copy\":case \"cut\":case \"paste\":k=ke;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=ue}var v=0!==(b&4),I=!v&&\"scroll\"===a,x=v?null!==h?h+\"Capture\":null:h;v=[];for(var r=d,n;null!==\nr;){n=r;var q=n.stateNode;5===n.tag&&null!==q&&(n=q,null!==x&&(q=Nb(r,x),null!=q&&v.push(Hf(r,q,n))));if(I)break;r=r.return}0<v.length&&(h=new k(h,y,null,c,e),g.push({event:h,listeners:v}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&0===(b&16)&&(y=c.relatedTarget||c.fromElement)&&(Ac(y)||y[If]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(y=c.relatedTarget||c.toElement,k=d,y=y?Ac(y):null,null!==\ny&&(I=Yb(y),y!==I||5!==y.tag&&6!==y.tag))y=null}else k=null,y=d;if(k!==y){v=ce;q=\"onMouseLeave\";x=\"onMouseEnter\";r=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)v=ue,q=\"onPointerLeave\",x=\"onPointerEnter\",r=\"pointer\";I=null==k?h:We(k);n=null==y?h:We(y);h=new v(q,r+\"leave\",k,c,e);h.target=I;h.relatedTarget=n;q=null;Ac(e)===d&&(v=new v(x,r+\"enter\",y,c,e),v.target=n,v.relatedTarget=I,q=v);I=q;if(k&&y)b:{v=k;x=y;r=0;for(n=v;n;n=Jf(n))r++;n=0;for(q=x;q;q=Jf(q))n++;for(;0<r-n;)v=Jf(v),r--;for(;0<n-r;)x=\nJf(x),n--;for(;r--;){if(v===x||null!==x&&v===x.alternate)break b;v=Jf(v);x=Jf(x)}v=null}else v=null;null!==k&&Kf(g,h,k,v,!1);null!==y&&null!==I&&Kf(g,I,y,v,!0)}}}a:{h=d?We(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var K=Xe;else if(Oe(h))if(Ye)K=gf;else{K=ef;var L=df}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(K=ff);if(K&&(K=K(a,d))){Pe(g,K,c,e);break a}L&&L(a,h,d);\"focusout\"===a&&(L=h._wrapperState)&&\nL.controlled&&\"number\"===h.type&&ab(h,\"number\",h.value)}L=d?We(d):window;switch(a){case \"focusin\":if(Oe(L)||\"true\"===L.contentEditable)sf=L,tf=d,uf=null;break;case \"focusout\":uf=tf=sf=null;break;case \"mousedown\":vf=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":vf=!1;wf(g,c,e);break;case \"selectionchange\":if(rf)break;case \"keydown\":case \"keyup\":wf(g,c,e)}var R;if(Ce)b:{switch(a){case \"compositionstart\":var M=\"onCompositionStart\";break b;case \"compositionend\":M=\"onCompositionEnd\";break b;\ncase \"compositionupdate\":M=\"onCompositionUpdate\";break b}M=void 0}else Ke?Ie(a,c)&&(M=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(M=\"onCompositionStart\");M&&(Fe&&\"ko\"!==c.locale&&(Ke||\"onCompositionStart\"!==M?\"onCompositionEnd\"===M&&Ke&&(R=Pd()):(Md=e,Nd=\"value\"in Md?Md.value:Md.textContent,Ke=!0)),L=Qe(d,M),0<L.length&&(M=new me(M,a,null,c,e),g.push({event:M,listeners:L}),R?M.data=R:(R=Je(c),null!==R&&(M.data=R))));if(R=Ee?Le(a,c):Me(a,c))d=Qe(d,\"onBeforeInput\"),0<d.length&&(e=new me(\"onBeforeInput\",\n\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=R)}Ue(g,b)})}function Hf(a,b,c){return{instance:a,listener:b,currentTarget:c}}function Qe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Nb(a,c),null!=f&&d.unshift(Hf(a,f,e)),f=Nb(a,b),null!=f&&d.push(Hf(a,f,e)));a=a.return}return d}function Jf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction Kf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Nb(c,f),null!=k&&g.unshift(Hf(c,k,h))):e||(k=Nb(c,f),null!=k&&g.push(Hf(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}function Lf(){}var Mf=null,Nf=null;function Of(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction Pf(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var Qf=\"function\"===typeof setTimeout?setTimeout:void 0,Rf=\"function\"===typeof clearTimeout?clearTimeout:void 0;\nfunction Sf(a,b){var c=b,d=0;do{var e=c.nextSibling;a.removeChild(c);if(e&&8===e.nodeType)if(c=e.data,\"/$\"===c){if(0===d){a.removeChild(e);Fc(b);return}d--}else\"$\"!==c&&\"$?\"!==c&&\"$!\"!==c||d++;c=e}while(c);Fc(b)}function Tf(a){1===a.nodeType?a.textContent=\"\":9===a.nodeType&&(a=a.body,null!=a&&(a.textContent=\"\"))}function Uf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break;if(8===b&&(b=a.data,\"$\"===b||\"$!\"===b||\"$?\"===b))break}return a}\nfunction Vf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--}else\"/$\"===c&&b++}a=a.previousSibling}return null}var Wf=0;function Xf(a){return{$$typeof:Fa,toString:a,valueOf:a}}var Yf=Math.random().toString(36).slice(2),Zf=\"__reactFiber$\"+Yf,$f=\"__reactProps$\"+Yf,If=\"__reactContainer$\"+Yf,Cf=\"__reactEvents$\"+Yf;\nfunction Ac(a){var b=a[Zf];if(b)return b;for(var c=a.parentNode;c;){if(b=c[If]||c[Zf]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Vf(a);null!==a;){if(c=a[Zf])return c;a=Vf(a)}return b}a=c;c=a.parentNode}return null}function Bb(a){a=a[Zf]||a[If];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function We(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(w(33));}function Cb(a){return a[$f]||null}var ag=[],bg=-1;function cg(a){return{current:a}}\nfunction H(a){0>bg||(a.current=ag[bg],ag[bg]=null,bg--)}function J(a,b){bg++;ag[bg]=a.current;a.current=b}var dg={},N=cg(dg),O=cg(!1),eg=dg;function fg(a,b){var c=a.type.contextTypes;if(!c)return dg;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction gg(a){a=a.childContextTypes;return null!==a&&void 0!==a}function hg(){H(O);H(N)}function ig(a,b,c){if(N.current!==dg)throw Error(w(168));J(N,b);J(O,c)}function jg(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(w(108,Qa(b)||\"Unknown\",e));return m({},c,d)}\nfunction kg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||dg;eg=N.current;J(N,a);J(O,O.current);return!0}function lg(a,b,c){var d=a.stateNode;if(!d)throw Error(w(169));c?(a=jg(a,b,eg),d.__reactInternalMemoizedMergedChildContext=a,H(O),H(N),J(N,a)):H(O);J(O,c)}var mg=null,ng=null,og=ra.ReactCurrentBatchConfig;function pg(a,b){if(a&&a.defaultProps){b=m({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}var qg=cg(null),rg=null,sg=null,tg=null;\nfunction ug(){tg=sg=rg=null}function vg(a){var b=qg.current;H(qg);a.type._context._currentValue=b}function wg(a,b){for(;null!==a;){var c=a.alternate;if((a.childLanes&b)===b)if(null===c||(c.childLanes&b)===b)break;else c.childLanes|=b;else a.childLanes|=b,null!==c&&(c.childLanes|=b);a=a.return}}function xg(a,b){rg=a;tg=sg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(yg=!0),a.firstContext=null)}\nfunction zg(a,b){if(tg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)tg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===sg){if(null===rg)throw Error(w(308));sg=b;rg.dependencies={lanes:0,firstContext:b,responders:null}}else sg=sg.next=b}return a._currentValue}var Ag=!1;function Bg(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}\nfunction Cg(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function Dg(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}function Eg(a,b){a=a.updateQueue;if(null!==a){a=a.shared;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}}\nfunction Fg(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction Gg(a,b,c,d){var e=a.updateQueue;Ag=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var p=a.alternate;if(null!==p){p=p.updateQueue;var z=p.lastBaseUpdate;z!==g&&(null===z?p.firstBaseUpdate=l:z.next=l,p.lastBaseUpdate=k)}}if(null!==f){z=e.baseState;g=0;p=l=k=null;do{h=f.lane;var t=f.eventTime;if((d&h)===h){null!==p&&(p=p.next={eventTime:t,lane:0,tag:f.tag,payload:f.payload,callback:f.callback,\nnext:null});a:{var B=a,y=f;h=b;t=c;switch(y.tag){case 1:B=y.payload;if(\"function\"===typeof B){z=B.call(t,z,h);break a}z=B;break a;case 3:B.flags=B.flags&-16385|128;case 0:B=y.payload;h=\"function\"===typeof B?B.call(t,z,h):B;if(null===h||void 0===h)break a;z=m({},z,h);break a;case 2:Ag=!0}}null!==f.callback&&(a.flags|=64,h=e.effects,null===h?e.effects=[f]:h.push(f))}else t={eventTime:t,lane:h,tag:f.tag,payload:f.payload,callback:f.callback,next:null},null===p?(l=p=t,k=z):p=p.next=t,g|=h;f=f.next;if(null===\nf)if(h=e.shared.pending,null===h)break;else f=h.next,h.next=null,e.lastBaseUpdate=h,e.shared.pending=null}while(1);null===p&&(k=z);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=p;Hg|=g;a.lanes=g;a.memoizedState=z}}function Ig(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(w(191,e));e.call(d)}}}var Jg=(new aa.Component).refs;\nfunction Kg(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:m({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar Og={isMounted:function(a){return(a=a._reactInternals)?Yb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=Lg(),e=Mg(a),f=Dg(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);Eg(a,f);Ng(a,e,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=Lg(),e=Mg(a),f=Dg(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);Eg(a,f);Ng(a,e,d)},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=Lg(),d=Mg(a),e=Dg(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=\nb);Eg(a,e);Ng(a,d,c)}};function Pg(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!lf(c,d)||!lf(e,f):!0}\nfunction Qg(a,b,c){var d=!1,e=dg;var f=b.contextType;\"object\"===typeof f&&null!==f?f=zg(f):(e=gg(b)?eg:N.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?fg(a,e):dg);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Og;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Rg(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Og.enqueueReplaceState(b,b.state,null)}\nfunction Sg(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=Jg;Bg(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=zg(f):(f=gg(b)?eg:N.current,e.context=fg(a,f));Gg(a,c,e,d);e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Kg(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||\n(b=e.state,\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Og.enqueueReplaceState(e,e.state,null),Gg(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4)}var Tg=Array.isArray;\nfunction Ug(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(w(309));var d=c.stateNode}if(!d)throw Error(w(147,a));var e=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===e)return b.ref;b=function(a){var b=d.refs;b===Jg&&(b=d.refs={});null===a?delete b[e]:b[e]=a};b._stringRef=e;return b}if(\"string\"!==typeof a)throw Error(w(284));if(!c._owner)throw Error(w(290,a));}return a}\nfunction Vg(a,b){if(\"textarea\"!==a.type)throw Error(w(31,\"[object Object]\"===Object.prototype.toString.call(b)?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":b));}function Wg(a){var b=a._init;return b(a._payload)}\nfunction Xg(a){function b(b,c){if(a){var d=b.lastEffect;null!==d?(d.nextEffect=c,b.lastEffect=c):b.firstEffect=b.lastEffect=c;c.nextEffect=null;c.flags=8}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Yg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags=2,\nc):d;b.flags=2;return c}function g(b){a&&null===b.alternate&&(b.flags=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Zg(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){var f=c.type;if(f===ua)return p(a,b,c.props.children,d,c.key);if(null!==b&&(b.elementType===f||\"object\"===typeof f&&null!==f&&f.$$typeof===Ea&&Wg(f)===b.type))return d=e(b,c.props),d.ref=Ug(a,b,c),d.return=a,d;d=$g(c.type,c.key,c.props,null,a.mode,d);d.ref=Ug(a,b,c);d.return=a;return d}function l(a,\nb,c,d){if(null===b||4!==b.tag||b.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=ah(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function p(a,b,c,d,f){if(null===b||7!==b.tag)return b=bh(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function z(a,b,c){if(\"string\"===typeof b||\"number\"===typeof b)return b=Zg(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case sa:return c=$g(b.type,b.key,\nb.props,null,a.mode,c),c.ref=Ug(a,null,b),c.return=a,c;case ta:return b=ah(b,a.mode,c),b.return=a,b;case Ea:var d=b._init;return z(a,d(b._payload),c)}if(Tg(b)||Ka(b))return b=bh(b,a.mode,c,null),b.return=a,b;Vg(a,b)}return null}function t(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case sa:return c.key===e?k(a,b,c,d):null;case ta:return c.key===e?l(a,b,c,d):null;case Ea:return e=\nc._init,t(a,b,e(c._payload),d)}if(Tg(c)||Ka(c))return null!==e?null:p(a,b,c,d,null);Vg(a,c)}return null}function B(a,b,c,d,e){if(\"string\"===typeof d||\"number\"===typeof d)return a=a.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case sa:return a=a.get(null===d.key?c:d.key)||null,k(b,a,d,e);case ta:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e);case Ea:var f=d._init;return B(a,b,c,f(d._payload),e)}if(Tg(d)||Ka(d))return a=a.get(c)||null,p(b,a,d,e,null);Vg(b,d)}return null}\nfunction y(e,g,h,k){for(var l=null,r=null,n=g,x=g=0,q=null;null!==n&&x<h.length;x++){n.index>x?(q=n,n=null):q=n.sibling;var p=t(e,n,h[x],k);if(null===p){null===n&&(n=q);break}a&&n&&null===p.alternate&&b(e,n);g=f(p,g,x);null===r?l=p:r.sibling=p;r=p;n=q}if(x===h.length)return c(e,n),l;if(null===n){for(;x<h.length;x++)n=z(e,h[x],k),null!==n&&(g=f(n,g,x),null===r?l=n:r.sibling=n,r=n);return l}for(n=d(e,n);x<h.length;x++)q=B(n,e,x,h[x],k),null!==q&&(a&&null!==q.alternate&&n.delete(null===q.key?x:q.key),\ng=f(q,g,x),null===r?l=q:r.sibling=q,r=q);a&&n.forEach(function(a){return b(e,a)});return l}function v(e,g,h,k){var l=Ka(h);if(\"function\"!==typeof l)throw Error(w(150));h=l.call(h);if(null==h)throw Error(w(151));for(var n=l=null,r=g,x=g=0,q=null,p=h.next();null!==r&&!p.done;x++,p=h.next()){r.index>x?(q=r,r=null):q=r.sibling;var v=t(e,r,p.value,k);if(null===v){null===r&&(r=q);break}a&&r&&null===v.alternate&&b(e,r);g=f(v,g,x);null===n?l=v:n.sibling=v;n=v;r=q}if(p.done)return c(e,r),l;if(null===r){for(;!p.done;x++,\np=h.next())p=z(e,p.value,k),null!==p&&(g=f(p,g,x),null===n?l=p:n.sibling=p,n=p);return l}for(r=d(e,r);!p.done;x++,p=h.next())p=B(r,e,x,p.value,k),null!==p&&(a&&null!==p.alternate&&r.delete(null===p.key?x:p.key),g=f(p,g,x),null===n?l=p:n.sibling=p,n=p);a&&r.forEach(function(a){return b(e,a)});return l}function I(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==\nk;){if(k.key===l){l=f.type;if(l===ua){if(7===k.tag){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}}else if(k.elementType===l||\"object\"===typeof l&&null!==l&&l.$$typeof===Ea&&Wg(l)===k.type){c(a,k.sibling);d=e(k,f.props);d.ref=Ug(a,k,f);d.return=a;a=d;break a}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=bh(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=$g(f.type,f.key,f.props,null,a.mode,h),h.ref=Ug(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===\nk)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=ah(f,a.mode,h);d.return=a;a=d}return g(a);case Ea:return k=f._init,I(a,d,k(f._payload),h)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Zg(f,a.mode,h),d.return=a,a=d),g(a);if(Tg(f))return y(a,d,f,h);if(Ka(f))return v(a,\nd,f,h);l&&Vg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 0:case 11:case 15:throw Error(w(152,Qa(a.type)||\"Component\"));}return c(a,d)}return I}var ch=Xg(!0),dh=Xg(!1),eh={},fh=cg(eh),gh=cg(eh),hh=cg(eh);function ih(a){if(a===eh)throw Error(w(174));return a}\nfunction jh(a,b){J(hh,b);J(gh,a);J(fh,eh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}H(fh);J(fh,b)}function kh(){H(fh);H(gh);H(hh)}function lh(a){ih(hh.current);var b=ih(fh.current);var c=lb(b,a.type);b!==c&&(J(gh,a),J(fh,c))}function mh(a){gh.current===a&&(H(fh),H(gh))}var P=cg(0);\nfunction nh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var oh=null,ph=null,qh=!1;\nfunction rh(a,b){var c=sh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}\nfunction th(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return b=8!==b.nodeType?null:b,null!==b?(a.memoizedState={dehydrated:b,retryLane:1073741824},c=sh(18,null,null,0),c.stateNode=b,c.return=a,a.child=c,!0):!1;default:return!1}}\nfunction uh(a){if(qh){var b=ph;if(b){var c=b;if(!th(a,b)){b=Uf(c.nextSibling);if(!b||!th(a,b)){a.flags=a.flags&-2049|2;qh=!1;oh=a;return}rh(oh,c)}oh=a;ph=Uf(b.firstChild)}else a.flags=a.flags&-2049|2,qh=!1,oh=a}}function vh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;oh=a}\nfunction wh(a){if(a!==oh)return!1;if(!qh)return vh(a),qh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!Pf(b,a.memoizedProps))for(b=ph;b;)rh(a,b),b=Uf(b.nextSibling);vh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(w(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){ph=Uf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}ph=null}}else ph=oh?Uf(a.stateNode.nextSibling):null;return!0}\nfunction xh(){ph=oh=null;qh=!1}var yh=[];function zh(){for(var a=0;a<yh.length;a++)yh[a]._workInProgressVersionPrimary=null;yh.length=0}var Ah=ra.ReactCurrentDispatcher,Bh=ra.ReactCurrentBatchConfig,Ch=0,Q=null,S=null,T=null,Dh=!1,Eh=!1;function Fh(){throw Error(w(321));}function Gh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!jf(a[c],b[c]))return!1;return!0}\nfunction Hh(a,b,c,d,e,f){Ch=f;Q=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;Ah.current=null===a||null===a.memoizedState?Ih:Jh;a=c(d,e);if(Eh){f=0;do{Eh=!1;if(!(25>f))throw Error(w(301));f+=1;T=S=null;b.updateQueue=null;Ah.current=Kh;a=c(d,e)}while(Eh)}Ah.current=Lh;b=null!==S&&null!==S.next;Ch=0;T=S=Q=null;Dh=!1;if(b)throw Error(w(300));return a}function Mh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?Q.memoizedState=T=a:T=T.next=a;return T}\nfunction Nh(){if(null===S){var a=Q.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?Q.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(w(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?Q.memoizedState=T=a:T=T.next=a}return T}function Oh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Ph(a){var b=Nh(),c=b.queue;if(null===c)throw Error(w(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((Ch&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var p={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=p,f=d):h=h.next=p;Q.lanes|=l;Hg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;jf(d,b.memoizedState)||(yg=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Qh(a){var b=Nh(),c=b.queue;if(null===c)throw Error(w(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);jf(f,b.memoizedState)||(yg=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Rh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(Ch&a)===a)b._workInProgressVersionPrimary=d,yh.push(b);if(a)return c(b._source);yh.push(b);throw Error(w(350));}\nfunction Sh(a,b,c,d){var e=U;if(null===e)throw Error(w(349));var f=b._getVersion,g=f(b._source),h=Ah.current,k=h.useState(function(){return Rh(e,b,c)}),l=k[1],p=k[0];k=T;var z=a.memoizedState,t=z.refs,B=t.getSnapshot,y=z.source;z=z.subscribe;var v=Q;a.memoizedState={refs:t,source:b,subscribe:d};h.useEffect(function(){t.getSnapshot=c;t.setSnapshot=l;var a=f(b._source);if(!jf(g,a)){a=c(b._source);jf(p,a)||(l(a),a=Mg(v),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0<h;){var k=31-vd(h),q=1<<k;d[k]|=a;h&=~q}}},[c,b,d]);h.useEffect(function(){return d(b._source,function(){var a=t.getSnapshot,c=t.setSnapshot;try{c(a(b._source));var d=Mg(v);e.mutableReadLanes|=d&e.pendingLanes}catch(n){c(function(){throw n;})}})},[b,d]);jf(B,c)&&jf(y,b)&&jf(z,d)||(a={pending:null,dispatch:null,lastRenderedReducer:Oh,lastRenderedState:p},a.dispatch=l=Th.bind(null,Q,a),k.queue=a,k.baseQueue=null,p=Rh(e,b,c),k.memoizedState=k.baseState=p);return p}\nfunction Uh(a,b,c){var d=Nh();return Sh(d,a,b,c)}function Vh(a){var b=Mh();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={pending:null,dispatch:null,lastRenderedReducer:Oh,lastRenderedState:a};a=a.dispatch=Th.bind(null,Q,a);return[b.memoizedState,a]}\nfunction Wh(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=Q.updateQueue;null===b?(b={lastEffect:null},Q.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function Xh(){return Nh().memoizedState}function Yh(a,b,c,d){var e=Mh();Q.flags|=a;e.memoizedState=Wh(1|b,c,void 0,void 0===d?null:d)}\nfunction Zh(a,b,c,d){var e=Nh();d=void 0===d?null:d;var f=void 0;if(null!==S){var g=S.memoizedState;f=g.destroy;if(null!==d&&Gh(d,g.deps)){Wh(b,c,f,d);return}}Q.flags|=a;e.memoizedState=Wh(1|b,c,f,d)}function $h(a,b){return Yh(1028,4,a,b)}function ai(a,b){return Zh(1028,4,a,b)}function bi(a,b){return Zh(4,2,a,b)}function ci(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}\nfunction di(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Zh(4,2,ci.bind(null,b,a),c)}function ei(){}function fi(a,b){var c=Nh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Gh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}function gi(a,b){var c=Nh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Gh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}\nfunction hi(a,b){var c=kd();md(98>c?98:c,function(){a(!0)});md(97<c?97:c,function(){var c=Bh.transition;Bh.transition=1;try{a(!1),b()}finally{Bh.transition=c}})}\nfunction Th(a,b,c){var d=Lg(),e=Mg(a),f={lane:e,action:c,eagerReducer:null,eagerState:null,next:null},g=b.pending;null===g?f.next=f:(f.next=g.next,g.next=f);b.pending=f;g=a.alternate;if(a===Q||null!==g&&g===Q)Eh=Dh=!0;else{if(0===a.lanes&&(null===g||0===g.lanes)&&(g=b.lastRenderedReducer,null!==g))try{var h=b.lastRenderedState,k=g(h,c);f.eagerReducer=g;f.eagerState=k;if(jf(k,h))return}catch(l){}finally{}Ng(a,e,d)}}function ii(){throw Error(w(248));}\nvar Lh={readContext:zg,useCallback:Fh,useContext:Fh,useEffect:Fh,useImperativeHandle:Fh,useLayoutEffect:Fh,useMemo:Fh,useReducer:Fh,useRef:Fh,useState:Fh,useDebugValue:Fh,useDeferredValue:Fh,useTransition:Fh,useMutableSource:Fh,useOpaqueIdentifier:Fh,unstable_isNewReconciler:!1};Lh.getCacheForType=ii;\nvar Ih={readContext:zg,useCallback:function(a,b){Mh().memoizedState=[a,void 0===b?null:b];return a},useContext:zg,useEffect:$h,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Yh(4,2,ci.bind(null,b,a),c)},useLayoutEffect:function(a,b){return Yh(4,2,a,b)},useMemo:function(a,b){var c=Mh();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Mh();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={pending:null,dispatch:null,\nlastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=Th.bind(null,Q,a);return[d.memoizedState,a]},useRef:function(a){var b=Mh();a={current:a};return b.memoizedState=a},useState:Vh,useDebugValue:ei,useDeferredValue:function(a){var b=Vh(a),c=b[0],d=b[1];$h(function(){var b=Bh.transition;Bh.transition=1;try{d(a)}finally{Bh.transition=b}},[a]);return c},useTransition:function(){var a=Vh(!1),b=a[0];a=hi.bind(null,a[1]);Mh().memoizedState=a;return[a,b]},useMutableSource:function(a,b,c){var d=Mh();d.memoizedState=\n{refs:{getSnapshot:b,setSnapshot:null},source:a,subscribe:c};return Sh(d,a,b,c)},useOpaqueIdentifier:function(){if(qh){var a=!1,b=Xf(function(){a||(a=!0,c(\"r:\"+(Wf++).toString(36)));throw Error(w(355));}),c=Vh(b)[1];0===(Q.mode&2)&&(Q.flags|=1028,Wh(5,function(){c(\"r:\"+(Wf++).toString(36))},void 0,null));return b}b=\"r:\"+(Wf++).toString(36);Vh(b);return b},unstable_isNewReconciler:!1};Ih.getCacheForType=ii;\nvar Jh={readContext:zg,useCallback:fi,useContext:zg,useEffect:ai,useImperativeHandle:di,useLayoutEffect:bi,useMemo:gi,useReducer:Ph,useRef:Xh,useState:function(){return Ph(Oh)},useDebugValue:ei,useDeferredValue:function(a){var b=Ph(Oh),c=b[0],d=b[1];ai(function(){var b=Bh.transition;Bh.transition=1;try{d(a)}finally{Bh.transition=b}},[a]);return c},useTransition:function(){var a=Ph(Oh)[0];return[Nh().memoizedState,a]},useMutableSource:Uh,useOpaqueIdentifier:function(){return Ph(Oh)[0]},unstable_isNewReconciler:!1};\nJh.getCacheForType=ii;\nvar Kh={readContext:zg,useCallback:fi,useContext:zg,useEffect:ai,useImperativeHandle:di,useLayoutEffect:bi,useMemo:gi,useReducer:Qh,useRef:Xh,useState:function(){return Qh(Oh)},useDebugValue:ei,useDeferredValue:function(a){var b=Qh(Oh),c=b[0],d=b[1];ai(function(){var b=Bh.transition;Bh.transition=1;try{d(a)}finally{Bh.transition=b}},[a]);return c},useTransition:function(){var a=Qh(Oh)[0];return[Nh().memoizedState,a]},useMutableSource:Uh,useOpaqueIdentifier:function(){return Qh(Oh)[0]},unstable_isNewReconciler:!1};\nKh.getCacheForType=ii;var ji=ra.ReactCurrentOwner,yg=!1;function ki(a,b,c,d){b.child=null===a?dh(b,null,c,d):ch(b,a.child,c,d)}function li(a,b,c,d,e){c=c.render;var f=b.ref;xg(b,e);d=Hh(a,b,c,d,f,e);if(null!==a&&!yg)return b.updateQueue=a.updateQueue,b.flags&=-1029,a.lanes&=~e,mi(a,b,e);b.flags|=1;ki(a,b,d,e);return b.child}\nfunction ni(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!oi(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,pi(a,b,g,d,e,f);a=$g(c.type,null,d,b,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(0===(e&f)&&(e=g.memoizedProps,c=c.compare,c=null!==c?c:lf,c(e,d)&&a.ref===b.ref))return mi(a,b,f);b.flags|=1;a=Yg(g,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction pi(a,b,c,d,e,f){if(null!==a&&lf(a.memoizedProps,d)&&a.ref===b.ref)if(yg=!1,0!==(f&e))0!==(a.flags&65536)&&(yg=!0);else return b.lanes=a.lanes,mi(a,b,f);return qi(a,b,c,d,f)}\nfunction ri(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode||\"unstable-defer-without-hiding\"===d.mode)if(0===(b.mode&4))b.memoizedState={baseLanes:0},si(b,c);else if(0!==(c&1073741824))b.memoizedState={baseLanes:0},si(b,null!==f?f.baseLanes:c);else return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a},si(b,a),null;else null!==f?(d=f.baseLanes|c,b.memoizedState=null):d=c,si(b,d);ki(a,b,e,c);return b.child}\nfunction ti(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=256}function qi(a,b,c,d,e){var f=gg(c)?eg:N.current;f=fg(b,f);xg(b,e);c=Hh(a,b,c,d,f,e);if(null!==a&&!yg)return b.updateQueue=a.updateQueue,b.flags&=-1029,a.lanes&=~e,mi(a,b,e);b.flags|=1;ki(a,b,c,e);return b.child}\nfunction ui(a,b,c,d,e){if(gg(c)){var f=!0;kg(b)}else f=!1;xg(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),Qg(b,c,d),Sg(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=zg(l):(l=gg(c)?eg:N.current,l=fg(b,l));var p=c.getDerivedStateFromProps,z=\"function\"===typeof p||\"function\"===typeof g.getSnapshotBeforeUpdate;z||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\n\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Rg(b,g,d,l);Ag=!1;var t=b.memoizedState;g.state=t;Gg(b,d,g,e);k=b.memoizedState;h!==d||t!==k||O.current||Ag?(\"function\"===typeof p&&(Kg(b,c,p,d),k=b.memoizedState),(h=Ag||Pg(b,c,h,d,t,k,l))?(z||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===\ntypeof g.componentDidMount&&(b.flags|=4)):(\"function\"===typeof g.componentDidMount&&(b.flags|=4),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4),d=!1)}else{g=b.stateNode;Cg(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:pg(b.type,h);g.props=l;z=b.pendingProps;t=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=zg(k):(k=gg(c)?eg:N.current,k=fg(b,k));var B=c.getDerivedStateFromProps;(p=\"function\"===typeof B||\n\"function\"===typeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==z||t!==k)&&Rg(b,g,d,k);Ag=!1;t=b.memoizedState;g.state=t;Gg(b,d,g,e);var y=b.memoizedState;h!==z||t!==y||O.current||Ag?(\"function\"===typeof B&&(Kg(b,c,B,d),y=b.memoizedState),(l=Ag||Pg(b,c,l,d,t,y,k))?(p||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,\ny,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,y,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=512)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&t===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&t===a.memoizedState||(b.flags|=512),b.memoizedProps=d,b.memoizedState=y),g.props=d,g.state=y,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||\nh===a.memoizedProps&&t===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&t===a.memoizedState||(b.flags|=512),d=!1)}return vi(a,b,c,d,f,e)}\nfunction vi(a,b,c,d,e,f){ti(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&lg(b,c,!1),mi(a,b,f);d=b.stateNode;ji.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=ch(b,a.child,null,f),b.child=ch(b,null,h,f)):ki(a,b,h,f);b.memoizedState=d.state;e&&lg(b,c,!0);return b.child}function wi(a){var b=a.stateNode;b.pendingContext?ig(a,b.pendingContext,b.pendingContext!==b.context):b.context&&ig(a,b.context,!1);jh(a,b.containerInfo)}\nvar xi={dehydrated:null,retryLane:0};\nfunction yi(a,b,c){var d=b.pendingProps,e=P.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));h?(f=!0,b.flags&=-129):null!==a&&null===a.memoizedState||void 0===d.fallback||!0===d.unstable_avoidThisFallback||(e|=1);J(P,e&1);if(null===a){if(void 0!==d.fallback&&(uh(b),a=b.memoizedState,null!==a&&(a=a.dehydrated,null!==a)))return 0===(b.mode&2)?b.lanes=1:\"$!\"===a.data?b.lanes=256:b.lanes=1073741824,null;a=d.children;var k=d.fallback;return f?(a=zi(b,a,k,c),b.child.memoizedState=\n{baseLanes:c},b.memoizedState=xi,a):\"number\"===typeof d.unstable_expectedLoadTime?(a=zi(b,a,k,c),b.child.memoizedState={baseLanes:c},b.memoizedState=xi,b.lanes=33554432,a):Ai(b,a,c)}e=a.memoizedState;if(null!==e){h=e.dehydrated;if(null!==h){if(g){if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;k=b.mode;d=Bi(d.children,k,0,null);f=bh(f,k,c,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&2)&&ch(b,a.child,null,c);b.child.memoizedState={baseLanes:c};\nb.memoizedState=xi;return f}if(0!==(V&64)||0===(b.mode&2)||\"$!\"===h.data)b=Ci(a,b,c);else if(d=0!==(c&a.childLanes),yg||d){d=U;if(null!==d){rd(c);switch(F){case 15:case 14:k=0;break;case 13:case 12:k=4;break;case 11:case 10:k=32;break;case 9:case 8:k=256;break;case 7:case 6:k=4096;break;case 5:k=4096;break;case 4:k=67108864;break;case 3:case 2:k=134217728;break;case 1:case 0:k=0;break;default:throw Error(w(360,k));}d=0!==(k&(d.suspendedLanes|c))?0:k;0!==d&&d!==e.retryLane&&(e.retryLane=d,Ng(a,d,-1))}Di();\nb=Ci(a,b,c)}else\"$?\"===h.data?(b.flags|=128,b.child=a.child,b=Ei.bind(null,a),h._reactRetry=b,b=null):(ph=Uf(h.nextSibling),vh(b),qh=!0,b=Ai(b,b.pendingProps.children,c),b.flags|=2048);return b}if(f)return d=Fi(a,b,d.children,d.fallback,c),f=b.child,k=a.child.memoizedState,f.memoizedState=null===k?{baseLanes:c}:{baseLanes:k.baseLanes|c},f.childLanes=a.childLanes&~c,b.memoizedState=xi,d;c=Gi(a,b,d.children,c);b.memoizedState=null;return c}if(f)return d=Fi(a,b,d.children,d.fallback,c),f=b.child,k=a.child.memoizedState,\nf.memoizedState=null===k?{baseLanes:c}:{baseLanes:k.baseLanes|c},f.childLanes=a.childLanes&~c,b.memoizedState=xi,d;c=Gi(a,b,d.children,c);b.memoizedState=null;return c}function Ai(a,b,c){b=Bi({mode:\"visible\",children:b},a.mode,c,null);b.return=a;return a.child=b}function zi(a,b,c,d){var e=a.mode,f=a.child;b={mode:\"hidden\",children:b};0===(e&2)&&null!==f?(f.childLanes=0,f.pendingProps=b):f=Bi(b,e,0,null);c=bh(c,e,d,null);f.return=a;c.return=a;f.sibling=c;a.child=f;return c}\nfunction Gi(a,b,c,d){var e=a.child;a=e.sibling;c=Yg(e,{mode:\"visible\",children:c});0===(b.mode&2)&&(c.lanes=d);c.return=b;c.sibling=null;null!==a&&(a.nextEffect=null,a.flags=8,b.firstEffect=b.lastEffect=a);return b.child=c}\nfunction Fi(a,b,c,d,e){var f=b.mode,g=a.child;a=g.sibling;var h={mode:\"hidden\",children:c};0===(f&2)&&b.child!==g?(c=b.child,c.childLanes=0,c.pendingProps=h,g=c.lastEffect,null!==g?(b.firstEffect=c.firstEffect,b.lastEffect=g,g.nextEffect=null):b.firstEffect=b.lastEffect=null):c=Yg(g,h);null!==a?d=Yg(a,d):(d=bh(d,f,e,null),d.flags|=2);d.return=b;c.return=b;c.sibling=d;b.child=c;return d}\nfunction Ci(a,b,c){ch(b,a.child,null,c);a=Ai(b,b.pendingProps.children,c);a.flags|=2;b.memoizedState=null;return a}function Hi(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);wg(a.return,b)}function Ii(a,b,c,d,e,f){var g=a.memoizedState;null===g?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e,lastEffect:f}:(g.isBackwards=b,g.rendering=null,g.renderingStartTime=0,g.last=d,g.tail=c,g.tailMode=e,g.lastEffect=f)}\nfunction Ji(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;ki(a,b,d.children,c);d=P.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&Hi(a,c);else if(19===a.tag)Hi(a,c);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}J(P,d);if(0===(b.mode&2))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===nh(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);Ii(b,!1,e,c,f,b.lastEffect);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===nh(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}Ii(b,!0,c,null,f,b.lastEffect);break;case \"together\":Ii(b,!1,null,null,void 0,b.lastEffect);break;default:b.memoizedState=null}return b.child}\nfunction mi(a,b,c){null!==a&&(b.dependencies=a.dependencies);Hg|=b.lanes;if(0!==(c&b.childLanes)){if(null!==a&&b.child!==a.child)throw Error(w(153));if(null!==b.child){a=b.child;c=Yg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Yg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}return null}var Ki,Li,Mi,Ni;\nKi=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};Li=function(){};\nMi=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;ih(fh.current);var f=null;switch(c){case \"input\":e=Xa(a,e);d=Xa(a,d);f=[];break;case \"option\":e=db(a,e);d=db(a,d);f=[];break;case \"select\":e=m({},e,{value:void 0});d=m({},d,{value:void 0});f=[];break;case \"textarea\":e=fb(a,e);d=fb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=Lf)}ub(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===\nl){var h=e[l];for(g in h)h.hasOwnProperty(g)&&(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ca.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||\n(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,c)),c=k;else\"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ca.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&G(\"scroll\",a),f||h===k||(f=[])):\"object\"===typeof k&&null!==k&&k.$$typeof===Fa?k.toString():(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",\nc);var l=f;if(b.updateQueue=l)b.flags|=4}};Ni=function(a,b,c,d){c!==d&&(b.flags|=4)};function Oi(a,b){if(!qh)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction Pi(a,b,c){var d=b.pendingProps;switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return gg(b.type)&&hg(),null;case 3:kh();H(O);H(N);zh();d=b.stateNode;d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)wh(b)?b.flags|=4:d.hydrate||(b.flags|=512);Li(b);return null;case 5:mh(b);var e=ih(hh.current);c=b.type;if(null!==a&&null!=b.stateNode)Mi(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=256);else{if(!d){if(null===\nb.stateNode)throw Error(w(166));return null}a=ih(fh.current);if(wh(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[Zf]=b;d[$f]=f;switch(c){case \"dialog\":G(\"cancel\",d);G(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",d);break;case \"video\":case \"audio\":for(a=0;a<zf.length;a++)G(zf[a],d);break;case \"source\":G(\"error\",d);break;case \"img\":case \"image\":case \"link\":G(\"error\",d);G(\"load\",d);break;case \"details\":G(\"toggle\",d);break;case \"input\":Ya(d,f);G(\"invalid\",d);break;case \"select\":d._wrapperState=\n{wasMultiple:!!f.multiple};G(\"invalid\",d);break;case \"textarea\":gb(d,f),G(\"invalid\",d)}ub(c,f);a=null;for(var g in f)f.hasOwnProperty(g)&&(e=f[g],\"children\"===g?\"string\"===typeof e?d.textContent!==e&&(a=[\"children\",e]):\"number\"===typeof e&&d.textContent!==\"\"+e&&(a=[\"children\",\"\"+e]):ca.hasOwnProperty(g)&&null!=e&&\"onScroll\"===g&&G(\"scroll\",d));switch(c){case \"input\":Ua(d);bb(d,f,!0);break;case \"textarea\":Ua(d);ib(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=\nLf)}d=a;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;a===jb.html&&(a=kb(c));a===jb.html?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Zf]=b;a[$f]=d;Ki(a,b,!1,!1);b.stateNode=a;g=vb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<zf.length;e++)G(zf[e],a);e=d;break;case \"source\":G(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":G(\"error\",a);G(\"load\",a);e=d;break;case \"details\":G(\"toggle\",a);e=d;break;case \"input\":Ya(a,d);e=Xa(a,d);G(\"invalid\",a);break;case \"option\":e=db(a,d);break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=m({},d,{value:void 0});G(\"invalid\",a);break;case \"textarea\":gb(a,d);e=\nfb(a,d);G(\"invalid\",a);break;default:e=d}ub(c,e);var h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?sb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&nb(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==c||\"\"!==k)&&ob(a,k):\"number\"===typeof k&&ob(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ca.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&G(\"scroll\",a):null!=k&&qa(a,f,k,g))}switch(c){case \"input\":Ua(a);bb(a,d,!1);\nbreak;case \"textarea\":Ua(a);ib(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Ra(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?eb(a,!!d.multiple,f,!1):null!=d.defaultValue&&eb(a,!!d.multiple,d.defaultValue,!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=Lf)}Of(c,d)&&(b.flags|=4)}null!==b.ref&&(b.flags|=256)}return null;case 6:if(a&&null!=b.stateNode)Ni(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(w(166));\nc=ih(hh.current);ih(fh.current);wh(b)?(d=b.stateNode,c=b.memoizedProps,d[Zf]=b,d.nodeValue!==c&&(b.flags|=4)):(d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[Zf]=b,b.stateNode=d)}return null;case 13:H(P);d=b.memoizedState;if(null!==d&&null!==d.dehydrated){if(null===a){if(!wh(b))throw Error(w(318));d=b.memoizedState;d=null!==d?d.dehydrated:null;if(!d)throw Error(w(317));d[Zf]=b}else xh(),0===(b.flags&128)&&(b.memoizedState=null),b.flags|=4;return null}if(0!==(b.flags&128))return b.lanes=\nc,b;d=null!==d;c=!1;null===a?void 0!==b.memoizedProps.fallback&&wh(b):c=null!==a.memoizedState;d&&!c&&0!==(b.mode&2)&&(null===a&&!0!==b.memoizedProps.unstable_avoidThisFallback||0!==(P.current&1)?0===W&&(W=3):Di());if(d||c)b.flags|=4;return null;case 4:return kh(),Li(b),null===a&&Gf(b.stateNode.containerInfo),null;case 10:return vg(b),null;case 17:return gg(b.type)&&hg(),null;case 19:H(P);d=b.memoizedState;if(null===d)return null;f=0!==(b.flags&128);g=d.rendering;if(null===g)if(f)Oi(d,!1);else{if(0!==\nW||null!==a&&0!==(a.flags&128))for(a=b.child;null!==a;){g=nh(a);if(null!==g){b.flags|=128;Oi(d,!1);f=g.updateQueue;null!==f&&(b.updateQueue=f,b.flags|=4);null===d.lastEffect&&(b.firstEffect=null);b.lastEffect=d.lastEffect;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=2,f.nextEffect=null,f.firstEffect=null,f.lastEffect=null,g=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.subtreeFlags=0,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):\n(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.subtreeFlags=g.subtreeFlags,f.deletions=null,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,f.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;J(P,P.current&1|2);return b.child}a=a.sibling}null!==d.tail&&E()>Qi&&(b.flags|=128,f=!0,Oi(d,!1),b.lanes=33554432)}else{if(!f)if(a=nh(g),null!==a){if(b.flags|=128,f=!0,c=a.updateQueue,null!==\nc&&(b.updateQueue=c,b.flags|=4),Oi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!qh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*E()-d.renderingStartTime>Qi&&1073741824!==c&&(b.flags|=128,f=!0,Oi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=E(),c.sibling=null,b=P.current,J(P,\nf?b&1|2:b&1),c):null;case 22:case 23:return Ri(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(w(156,b.tag));}\nfunction Si(a){switch(a.tag){case 1:gg(a.type)&&hg();var b=a.flags;return b&16384?(a.flags=b&-16385|128,a):null;case 3:kh();H(O);H(N);zh();b=a.flags;if(0!==(b&128))throw Error(w(285));a.flags=b&-16385|128;return a;case 5:return mh(a),null;case 13:H(P);b=a.memoizedState;if(null!==b&&null!==b.dehydrated){if(null===a.alternate)throw Error(w(340));xh()}b=a.flags;return b&16384?(a.flags=b&-16385|128,a):null;case 19:return H(P),null;case 4:return kh(),null;case 10:return vg(a),null;case 22:case 23:return Ri(),\nnull;default:return null}}function Ti(a,b){try{var c=\"\",d=b;do c+=Pa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ui(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Vi=\"function\"===typeof WeakMap?WeakMap:Map;function Wi(a,b,c){c=Dg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Xi||(Xi=!0,Yi=d);Ui(a,b)};return c}\nfunction Zi(a,b,c){c=Dg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ui(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===$i?$i=new Set([this]):$i.add(this),Ui(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var aj=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction bj(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){cj(a,c)}else b.current=null}function dj(a,b){switch(b.tag){case 0:case 11:case 15:return;case 1:if(b.flags&512&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:pg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&512&&Tf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(w(163));}\nfunction ej(a,b,c){switch(c.tag){case 0:case 11:case 15:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(fj(c,a),gj(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:pg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Ig(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Ig(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&Of(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Fc(c))));\nreturn;case 19:case 17:case 20:case 21:case 22:case 23:return}throw Error(w(163));}\nfunction hj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=rb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((22!==c.tag&&23!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){if(ng&&\"function\"===typeof ng.onCommitFiberUnmount)try{ng.onCommitFiberUnmount(mg,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))fj(b,c);else{d=b;try{e()}catch(f){cj(d,f)}}c=c.next}while(c!==a)}break;case 1:bj(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){cj(b,\nf)}break;case 5:bj(b);break;case 4:jj(a,b)}}function kj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function lj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction mj(a){a:{for(var b=a.return;null!==b;){if(lj(b))break a;b=b.return}throw Error(w(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(w(161));}c.flags&32&&(ob(b,\"\"),c.flags&=-33);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||lj(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?nj(a,c,b):oj(a,c,b)}\nfunction nj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Lf));else if(4!==d&&(a=a.child,null!==a))for(nj(a,b,c),a=a.sibling;null!==a;)nj(a,b,c),a=a.sibling}\nfunction oj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(oj(a,b,c),a=a.sibling;null!==a;)oj(a,b,c),a=a.sibling}\nfunction jj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(w(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(ij(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(18===c.tag)f?(g=e,h=c.stateNode,8===g.nodeType?Sf(g.parentNode,h):1===g.nodeType&&Sf(g,h),Fc(g)):Sf(e,c.stateNode);else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(ij(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=\nc.return;c=c.sibling}}\nfunction pj(a,b){switch(b.tag){case 0:case 11:case 14:case 15:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[$f]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&Za(c,d);vb(a,e);b=vb(a,d);for(e=0;e<f.length;e+=2){var g=\nf[e],h=f[e+1];\"style\"===g?sb(c,h):\"dangerouslySetInnerHTML\"===g?nb(c,h):\"children\"===g?ob(c,h):qa(c,g,h,b)}switch(a){case \"input\":$a(c,d);break;case \"textarea\":hb(c,d);break;case \"select\":a=c._wrapperState.wasMultiple,c._wrapperState.wasMultiple=!!d.multiple,f=d.value,null!=f?eb(c,!!d.multiple,f,!1):a!==!!d.multiple&&(null!=d.defaultValue?eb(c,!!d.multiple,d.defaultValue,!0):eb(c,!!d.multiple,d.multiple?[]:\"\",!1))}}}return;case 6:if(null===b.stateNode)throw Error(w(162));b.stateNode.nodeValue=b.memoizedProps;\nreturn;case 3:c=b.stateNode;c.hydrate&&(c.hydrate=!1,Fc(c.containerInfo));return;case 12:return;case 13:null!==b.memoizedState&&(qj=E(),hj(b.child,!0));rj(b);return;case 19:rj(b);return;case 17:return;case 22:case 23:hj(b,null!==b.memoizedState);return}throw Error(w(163));}function rj(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new aj);b.forEach(function(b){var d=sj.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction tj(a,b){return null!==a&&(a=a.memoizedState,null===a||null!==a.dehydrated)?(b=b.memoizedState,null!==b&&null===b.dehydrated):!1}var uj=Math.ceil,vj=ra.ReactCurrentDispatcher,wj=ra.ReactCurrentOwner,V=0,U=null,X=null,Y=0,xj=0,yj=cg(0),W=0,zj=null,Aj=0,Hg=0,Bj=0,Cj=0,Dj=null,qj=0,Qi=Infinity;function Ej(){Qi=E()+500}var Z=null,Xi=!1,Yi=null,$i=null,Fj=!1,Gj=null,Hj=90,Ij=[],Jj=[],Kj=null,Lj=0,Mj=null,Nj=-1,Oj=0,Pj=0,Qj=null,Rj=!1;function Lg(){return 0!==(V&48)?E():-1!==Nj?Nj:Nj=E()}\nfunction Mg(a){a=a.mode;if(0===(a&2))return 1;if(0===(a&4))return 99===kd()?1:2;0===Oj&&(Oj=Aj);if(0!==og.transition){0!==Pj&&(Pj=null!==Dj?Dj.pendingLanes:0);a=Oj;var b=4186112&~Pj;b&=-b;0===b&&(a=4186112&~a,b=a&-a,0===b&&(b=8192));return b}a=kd();0!==(V&4)&&98===a?a=xd(12,Oj):(a=sd(a),a=xd(a,Oj));return a}\nfunction Ng(a,b,c){if(50<Lj)throw Lj=0,Mj=null,Error(w(185));a=Sj(a,b);if(null===a)return null;Ad(a,b,c);a===U&&(Bj|=b,4===W&&Tj(a,Y));var d=kd();1===b?0!==(V&8)&&0===(V&48)?Uj(a):(Vj(a,c),0===V&&(Ej(),od())):(0===(V&4)||98!==d&&99!==d||(null===Kj?Kj=new Set([a]):Kj.add(a)),Vj(a,c));Dj=a}function Sj(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}\nfunction Vj(a,b){for(var c=a.callbackNode,d=a.suspendedLanes,e=a.pingedLanes,f=a.expirationTimes,g=a.pendingLanes;0<g;){var h=31-vd(g),k=1<<h,l=f[h];if(-1===l){if(0===(k&d)||0!==(k&e)){l=b;rd(k);var p=F;f[h]=10<=p?l+250:6<=p?l+5E3:-1}}else l<=b&&(a.expiredLanes|=k);g&=~k}d=ud(a,a===U?Y:0);b=F;if(0===d)null!==c&&(c!==ed&&Vc(c),a.callbackNode=null,a.callbackPriority=0);else{if(null!==c){if(a.callbackPriority===b)return;c!==ed&&Vc(c)}15===b?(c=Uj.bind(null,a),null===gd?(gd=[c],hd=Uc($c,pd)):gd.push(c),\nc=ed):14===b?c=nd(99,Uj.bind(null,a)):(c=td(b),c=nd(c,Wj.bind(null,a)));a.callbackPriority=b;a.callbackNode=c}}\nfunction Wj(a){Nj=-1;Pj=Oj=0;if(0!==(V&48))throw Error(w(327));var b=a.callbackNode;if(Xj()&&a.callbackNode!==b)return null;var c=ud(a,a===U?Y:0);if(0===c)return null;var d=c;var e=V;V|=16;var f=Yj();if(U!==a||Y!==d)Ej(),Zj(a,d);do try{ak();break}catch(h){bk(a,h)}while(1);ug();vj.current=f;V=e;null!==X?d=0:(U=null,Y=0,d=W);if(0!==(Aj&Bj))Zj(a,0);else if(0!==d){2===d&&(V|=64,a.hydrate&&(a.hydrate=!1,Tf(a.containerInfo)),c=wd(a),0!==c&&(d=ck(a,c)));if(1===d)throw b=zj,Zj(a,0),Tj(a,c),Vj(a,E()),b;a.finishedWork=\na.current.alternate;a.finishedLanes=c;switch(d){case 0:case 1:throw Error(w(345));case 2:dk(a);break;case 3:Tj(a,c);if((c&62914560)===c&&(d=qj+500-E(),10<d)){if(0!==ud(a,0))break;e=a.suspendedLanes;if((e&c)!==c){Lg();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=Qf(dk.bind(null,a),d);break}dk(a);break;case 4:Tj(a,c);if((c&4186112)===c)break;d=a.eventTimes;for(e=-1;0<c;){var g=31-vd(c);f=1<<g;g=d[g];g>e&&(e=g);c&=~f}c=e;c=E()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*uj(c/1960))-c;if(10<c){a.timeoutHandle=Qf(dk.bind(null,a),c);break}dk(a);break;case 5:dk(a);break;default:throw Error(w(329));}}Vj(a,E());return a.callbackNode===b?Wj.bind(null,a):null}function Tj(a,b){b&=~Cj;b&=~Bj;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-vd(b),d=1<<c;a[c]=-1;b&=~d}}\nfunction Uj(a){if(0!==(V&48))throw Error(w(327));Xj();if(a===U&&0!==(a.expiredLanes&Y)){var b=Y;var c=ck(a,b);0!==(Aj&Bj)&&(b=ud(a,b),c=ck(a,b))}else b=ud(a,0),c=ck(a,b);0!==a.tag&&2===c&&(V|=64,a.hydrate&&(a.hydrate=!1,Tf(a.containerInfo)),b=wd(a),0!==b&&(c=ck(a,b)));if(1===c)throw c=zj,Zj(a,0),Tj(a,b),Vj(a,E()),c;a.finishedWork=a.current.alternate;a.finishedLanes=b;dk(a);Vj(a,E());return null}\nfunction ek(){if(null!==Kj){var a=Kj;Kj=null;a.forEach(function(a){a.expiredLanes|=24&a.pendingLanes;Vj(a,E())})}od()}function fk(a,b){var c=V;V|=1;try{return a(b)}finally{V=c,0===V&&(Ej(),od())}}function gk(a,b){var c=V;V&=-2;V|=8;try{return a(b)}finally{V=c,0===V&&(Ej(),od())}}function hk(a,b){var c=V;if(0!==(c&48))return a(b);V|=1;try{if(a)return md(99,a.bind(null,b))}finally{V=c,od()}}function si(a,b){J(yj,xj);xj|=b;Aj|=b}function Ri(){xj=yj.current;H(yj)}\nfunction Zj(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Rf(c));if(null!==X)for(c=X.return;null!==c;){var d=c;switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&hg();break;case 3:kh();H(O);H(N);zh();break;case 5:mh(d);break;case 4:kh();break;case 13:H(P);break;case 19:H(P);break;case 10:vg(d);break;case 22:case 23:Ri()}c=c.return}U=a;X=Yg(a.current,null);Y=xj=Aj=b;W=0;zj=null;Cj=Bj=Hg=0}\nfunction bk(a,b){do{var c=X;try{ug();Ah.current=Lh;if(Dh){for(var d=Q.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}Dh=!1}Ch=0;T=S=Q=null;Eh=!1;wj.current=null;if(null===c||null===c.return){W=1;zj=b;X=null;break}a:{var f=a,g=c.return,h=c,k=b;b=Y;h.flags|=8192;h.firstEffect=h.lastEffect=null;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k;if(0===(h.mode&2)){var p=h.alternate;p?(h.updateQueue=p.updateQueue,h.memoizedState=p.memoizedState,h.lanes=p.lanes):\n(h.updateQueue=null,h.memoizedState=null)}var z=0!==(P.current&1),t=g;do{var B;if(B=13===t.tag){var y=t.memoizedState;if(null!==y)B=null!==y.dehydrated?!0:!1;else{var v=t.memoizedProps;B=void 0===v.fallback?!1:!0!==v.unstable_avoidThisFallback?!0:z?!1:!0}}if(B){var I=t.updateQueue;if(null===I){var x=new Set;x.add(l);t.updateQueue=x}else I.add(l);if(0===(t.mode&2)&&t!==g){t.flags|=128;h.flags|=65536;h.flags&=-10053;if(1===h.tag)if(null===h.alternate)h.tag=17;else{var r=Dg(-1,1);r.tag=2;Eg(h,r)}h.lanes|=\n1;break a}k=void 0;h=b;var n=f.pingCache;null===n?(n=f.pingCache=new Vi,k=new Set,n.set(l,k)):(k=n.get(l),void 0===k&&(k=new Set,n.set(l,k)));if(!k.has(h)){k.add(h);var q=ik.bind(null,f,l,h);l.then(q,q)}t.flags|=16384;t.lanes=b;break a}t=t.return}while(null!==t);k=Error((Qa(h.type)||\"A React component\")+\" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==W&&(W=2);\nk=Ti(k,h);t=g;do{switch(t.tag){case 3:f=k;t.flags|=16384;b&=-b;t.lanes|=b;var K=Wi(t,f,b);Fg(t,K);break a;case 1:f=k;var L=t.type,R=t.stateNode;if(0===(t.flags&128)&&(\"function\"===typeof L.getDerivedStateFromError||null!==R&&\"function\"===typeof R.componentDidCatch&&(null===$i||!$i.has(R)))){t.flags|=16384;b&=-b;t.lanes|=b;var M=Zi(t,f,b);Fg(t,M);break a}}t=t.return}while(null!==t)}jk(c)}catch(xa){b=xa;X===c&&null!==c&&(X=c=c.return);continue}break}while(1)}\nfunction Yj(){var a=vj.current;vj.current=Lh;return null===a?Lh:a}function Di(){if(0===W||3===W)W=4;null===U||0===(Hg&134217727)&&0===(Bj&134217727)||Tj(U,Y)}function ck(a,b){var c=V;V|=16;var d=Yj();U===a&&Y===b||Zj(a,b);do try{kk();break}catch(e){bk(a,e)}while(1);ug();V=c;vj.current=d;if(null!==X)throw Error(w(261));U=null;Y=0;return W}function kk(){for(;null!==X;)lk(X)}function ak(){for(;null!==X&&!Wc();)lk(X)}\nfunction lk(a){var b=mk(a.alternate,a,xj);a.memoizedProps=a.pendingProps;null===b?jk(a):X=b;wj.current=null}\nfunction jk(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&8192)){c=Pi(c,b,xj);if(null!==c){X=c;return}c=b;if(23!==c.tag&&22!==c.tag||null===c.memoizedState||0!==(xj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&8192)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1<b.flags&&(null!==\na.lastEffect?a.lastEffect.nextEffect=b:a.firstEffect=b,a.lastEffect=b))}else{c=Si(b);if(null!==c){c.flags&=8191;X=c;return}null!==a&&(a.firstEffect=a.lastEffect=null,a.flags|=8192)}b=b.sibling;if(null!==b){X=b;return}X=b=a}while(null!==b);0===W&&(W=5)}function dk(a){var b=kd();md(99,nk.bind(null,a,b));return null}\nfunction nk(a,b){do Xj();while(null!==Gj);if(0!==(V&48))throw Error(w(327));var c=a.finishedWork;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(w(177));a.callbackNode=null;var d=c.lanes|c.childLanes,e=d,f=a.pendingLanes&~e;a.pendingLanes=e;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=e;a.mutableReadLanes&=e;a.entangledLanes&=e;e=a.entanglements;for(var g=a.eventTimes,h=a.expirationTimes;0<f;){var k=31-vd(f),l=1<<k;e[k]=0;g[k]=-1;h[k]=-1;f&=~l}null!==\nKj&&0===(d&24)&&Kj.has(a)&&Kj.delete(a);a===U&&(X=U=null,Y=0);1<c.flags?null!==c.lastEffect?(c.lastEffect.nextEffect=c,d=c.firstEffect):d=c:d=c.firstEffect;if(null!==d){e=V;V|=32;wj.current=null;Mf=Hd;g=pf();if(qf(g)){if(\"selectionStart\"in g)h={start:g.selectionStart,end:g.selectionEnd};else a:if(h=(h=g.ownerDocument)&&h.defaultView||window,(l=h.getSelection&&h.getSelection())&&0!==l.rangeCount){h=l.anchorNode;f=l.anchorOffset;k=l.focusNode;l=l.focusOffset;try{h.nodeType,k.nodeType}catch(xa){h=null;\nbreak a}var p=0,z=-1,t=-1,B=0,y=0,v=g,I=null;b:for(;;){for(var x;;){v!==h||0!==f&&3!==v.nodeType||(z=p+f);v!==k||0!==l&&3!==v.nodeType||(t=p+l);3===v.nodeType&&(p+=v.nodeValue.length);if(null===(x=v.firstChild))break;I=v;v=x}for(;;){if(v===g)break b;I===h&&++B===f&&(z=p);I===k&&++y===l&&(t=p);if(null!==(x=v.nextSibling))break;v=I;I=v.parentNode}v=x}h=-1===z||-1===t?null:{start:z,end:t}}else h=null;h=h||{start:0,end:0}}else h=null;Nf={focusedElem:g,selectionRange:h};Hd=!1;Qj=null;Rj=!1;Z=d;do try{ok()}catch(xa){if(null===\nZ)throw Error(w(330));cj(Z,xa);Z=Z.nextEffect}while(null!==Z);Qj=null;Z=d;do try{for(g=a;null!==Z;){var r=Z.flags;r&32&&ob(Z.stateNode,\"\");if(r&256){var n=Z.alternate;if(null!==n){var q=n.ref;null!==q&&(\"function\"===typeof q?q(null):q.current=null)}}switch(r&2062){case 2:mj(Z);Z.flags&=-3;break;case 6:mj(Z);Z.flags&=-3;pj(Z.alternate,Z);break;case 2048:Z.flags&=-2049;break;case 2052:Z.flags&=-2049;pj(Z.alternate,Z);break;case 4:pj(Z.alternate,Z);break;case 8:h=Z;jj(g,h);var K=h.alternate;kj(h);null!==\nK&&kj(K)}Z=Z.nextEffect}}catch(xa){if(null===Z)throw Error(w(330));cj(Z,xa);Z=Z.nextEffect}while(null!==Z);q=Nf;n=pf();r=q.focusedElem;g=q.selectionRange;if(n!==r&&r&&r.ownerDocument&&of(r.ownerDocument.documentElement,r)){null!==g&&qf(r)&&(n=g.start,q=g.end,void 0===q&&(q=n),\"selectionStart\"in r?(r.selectionStart=n,r.selectionEnd=Math.min(q,r.value.length)):(q=(n=r.ownerDocument||document)&&n.defaultView||window,q.getSelection&&(q=q.getSelection(),h=r.textContent.length,K=Math.min(g.start,h),g=void 0===\ng.end?K:Math.min(g.end,h),!q.extend&&K>g&&(h=g,g=K,K=h),h=nf(r,K),f=nf(r,g),h&&f&&(1!==q.rangeCount||q.anchorNode!==h.node||q.anchorOffset!==h.offset||q.focusNode!==f.node||q.focusOffset!==f.offset)&&(n=n.createRange(),n.setStart(h.node,h.offset),q.removeAllRanges(),K>g?(q.addRange(n),q.extend(f.node,f.offset)):(n.setEnd(f.node,f.offset),q.addRange(n))))));n=[];for(q=r;q=q.parentNode;)1===q.nodeType&&n.push({element:q,left:q.scrollLeft,top:q.scrollTop});\"function\"===typeof r.focus&&r.focus();for(r=\n0;r<n.length;r++)q=n[r],q.element.scrollLeft=q.left,q.element.scrollTop=q.top}Hd=!!Mf;Nf=Mf=null;a.current=c;Z=d;do try{for(r=a;null!==Z;){var L=Z.flags;L&68&&ej(r,Z.alternate,Z);if(L&256){n=void 0;var R=Z.ref;if(null!==R){var M=Z.stateNode;switch(Z.tag){case 5:n=M;break;default:n=M}\"function\"===typeof R?R(n):R.current=n}}Z=Z.nextEffect}}catch(xa){if(null===Z)throw Error(w(330));cj(Z,xa);Z=Z.nextEffect}while(null!==Z);Z=null;fd();V=e}else a.current=c;if(Fj)Fj=!1,Gj=a,Hj=b;else for(Z=d;null!==Z;)b=\nZ.nextEffect,Z.nextEffect=null,Z.flags&8&&(L=Z,L.sibling=null,L.stateNode=null),Z=b;d=a.pendingLanes;0===d&&($i=null);0!==(d&1)?a===Mj?Lj++:(Lj=0,Mj=a):Lj=0;c=c.stateNode;if(ng&&\"function\"===typeof ng.onCommitFiberRoot)try{ng.onCommitFiberRoot(mg,c,void 0,128===(c.current.flags&128))}catch(xa){}Vj(a,E());if(Xi)throw Xi=!1,a=Yi,Yi=null,a;if(0!==(V&8))return null;od();return null}\nfunction ok(){for(;null!==Z;){var a=Z.alternate;Rj||null===Qj||(0!==(Z.flags&8)?dc(Z,Qj)&&(Rj=!0):13===Z.tag&&tj(a,Z)&&dc(Z,Qj)&&(Rj=!0));var b=Z.flags;0!==(b&512)&&dj(a,Z);0===(b&1024)||Fj||(Fj=!0,nd(97,function(){Xj();return null}));Z=Z.nextEffect}}function Xj(){if(90!==Hj){var a=97<Hj?97:Hj;Hj=90;return md(a,pk)}return!1}function gj(a,b){Ij.push(b,a);Fj||(Fj=!0,nd(97,function(){Xj();return null}))}function fj(a,b){Jj.push(b,a);Fj||(Fj=!0,nd(97,function(){Xj();return null}))}\nfunction pk(){if(null===Gj)return!1;var a=Gj;Gj=null;if(0!==(V&48))throw Error(w(331));var b=V;V|=32;var c=Jj;Jj=[];for(var d=0;d<c.length;d+=2){var e=c[d],f=c[d+1],g=e.destroy;e.destroy=void 0;if(\"function\"===typeof g)try{g()}catch(k){if(null===f)throw Error(w(330));cj(f,k)}}c=Ij;Ij=[];for(d=0;d<c.length;d+=2){e=c[d];f=c[d+1];try{var h=e.create;e.destroy=h()}catch(k){if(null===f)throw Error(w(330));cj(f,k)}}for(h=a.current.firstEffect;null!==h;)a=h.nextEffect,h.nextEffect=null,h.flags&8&&(h.sibling=\nnull,h.stateNode=null),h=a;V=b;od();return!0}function qk(a,b,c){b=Ti(c,b);b=Wi(a,b,1);Eg(a,b);b=Lg();a=Sj(a,1);null!==a&&(Ad(a,1,b),Vj(a,b))}\nfunction cj(a,b){if(3===a.tag)qk(a,a,b);else for(var c=a.return;null!==c;){if(3===c.tag){qk(c,a,b);break}else if(1===c.tag){var d=c.stateNode;if(\"function\"===typeof c.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===$i||!$i.has(d))){a=Ti(b,a);a=Zi(c,a,1);Eg(c,a);a=Lg();c=Sj(c,1);null!==c&&(Ad(c,1,a),Vj(c,a));break}}c=c.return}}\nfunction ik(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=Lg();a.pingedLanes|=a.suspendedLanes&c;U===a&&(Y&c)===c&&(4===W||3===W&&(Y&62914560)===Y&&500>E()-qj?Zj(a,0):Cj|=c);Vj(a,b)}function rk(a,b){0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===kd()?1:2:(0===Oj&&(Oj=Aj),b=yd(62914560&~Oj),0===b&&(b=4194304)));var c=Lg();a=Sj(a,b);null!==a&&(Ad(a,b,c),Vj(a,c))}function Ei(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);rk(a,c)}\nfunction sj(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(w(314));}null!==d&&d.delete(b);rk(a,c)}var mk;\nmk=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||O.current)yg=!0;else if(0!==(c&d))yg=0!==(a.flags&65536)?!0:!1;else{yg=!1;switch(b.tag){case 3:wi(b);xh();break;case 5:lh(b);break;case 1:gg(b.type)&&kg(b);break;case 4:jh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;J(qg,e._currentValue);e._currentValue=d;break;case 13:d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return J(P,P.current&1),b.flags|=128,null;if(0!==(c&\nb.child.childLanes))return yi(a,b,c);J(P,P.current&1);b=mi(a,b,c);return null!==b?b.sibling:null}J(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&128)){if(d)return Ji(a,b,c);b.flags|=128}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);J(P,P.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,ri(a,b,c)}return mi(a,b,c)}else yg=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;\ne=fg(b,N.current);xg(b,c);e=Hh(null,b,d,a,e,c);b.flags|=1;if(\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(gg(d)){var f=!0;kg(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;Bg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Kg(b,d,g,a);e.updater=Og;b.stateNode=e;e._reactInternals=b;Sg(b,d,a,c);b=vi(null,b,d,!0,f,c)}else b.tag=0,ki(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;\na:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=sk(e);a=pg(e,a);switch(f){case 0:b=qi(null,b,e,a,c);break a;case 1:b=ui(null,b,e,a,c);break a;case 11:b=li(null,b,e,a,c);break a;case 14:b=ni(null,b,e,pg(e.type,a),d,c);break a}throw Error(w(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:pg(d,e),qi(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:pg(d,e),ui(a,b,d,e,c);case 3:wi(b);\nd=b.updateQueue;if(null===a||null===d)throw Error(w(282));d=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;Cg(a,b);Gg(b,d,null,c);d=b.memoizedState.element;if(d===e)xh(),b=mi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)ph=Uf(b.stateNode.containerInfo.firstChild),oh=b,f=qh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e<a.length;e+=2)f=a[e],f._workInProgressVersionPrimary=a[e+1],yh.push(f);c=dh(b,null,d,c);for(b.child=c;c;)c.flags=c.flags&-3|2048,c=c.sibling}else ki(a,b,\nd,c),xh();b=b.child}return b;case 5:return lh(b),null===a&&uh(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Pf(d,e)?g=null:null!==f&&Pf(d,f)&&(b.flags|=32),ti(a,b),ki(a,b,g,c),b.child;case 6:return null===a&&uh(b),null;case 13:return yi(a,b,c);case 4:return jh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=ch(b,null,d,c):ki(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:pg(d,e),li(a,b,d,e,c);case 7:return ki(a,b,b.pendingProps,\nc),b.child;case 8:return ki(a,b,b.pendingProps.children,c),b.child;case 12:return ki(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;var h=b.type._context;J(qg,h._currentValue);h._currentValue=f;if(null!==g)if(h=g.value,f=jf(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0,0===f){if(g.children===e.children&&!O.current){b=mi(a,b,c);break a}}else for(g=b.child,null!==g&&(g.return=b);null!==\ng;){var k=g.dependencies;if(null!==k){h=g.child;for(var l=k.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===g.tag&&(l=Dg(-1,c&-c),l.tag=2,Eg(g,l));g.lanes|=c;l=g.alternate;null!==l&&(l.lanes|=c);wg(g.return,c);k.lanes|=c;break}l=l.next}}else if(10===g.tag)h=g.type===b.type?null:g.child;else if(18===g.tag){h=g.return;if(null===h)throw Error(w(341));h.lanes|=c;k=h.alternate;null!==k&&(k.lanes|=c);wg(h,c);h=g.sibling}else h=g.child;if(null!==h)h.return=g;else for(h=g;null!==h;){if(h===\nb){h=null;break}g=h.sibling;if(null!==g){g.return=h.return;h=g;break}h=h.return}g=h}ki(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,f=b.pendingProps,d=f.children,xg(b,c),e=zg(e,f.unstable_observedBits),d=d(e),b.flags|=1,ki(a,b,d,c),b.child;case 14:return e=b.type,f=pg(e,b.pendingProps),f=pg(e.type,f),ni(a,b,e,f,d,c);case 15:return pi(a,b,b.type,b.pendingProps,d,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:pg(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.flags|=\n2),b.tag=1,gg(d)?(a=!0,kg(b)):a=!1,xg(b,c),Qg(b,d,e),Sg(b,d,e,c),vi(null,b,d,!0,a,c);case 19:return Ji(a,b,c);case 22:return ri(a,b,c);case 23:return ri(a,b,c)}throw Error(w(156,b.tag));};\nfunction tk(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.flags=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.subtreeFlags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function sh(a,b,c,d){return new tk(a,b,c,d)}\nfunction oi(a){a=a.prototype;return!(!a||!a.isReactComponent)}function sk(a){if(\"function\"===typeof a)return oi(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Aa)return 11;if(a===Da)return 14}return 2}\nfunction Yg(a,b){var c=a.alternate;null===c?(c=sh(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.nextEffect=null,c.firstEffect=null,c.lastEffect=null,c.subtreeFlags=0,c.deletions=null);c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,\nfirstContext:b.firstContext};c.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction $g(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)oi(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ua:return bh(c.children,e,f,b);case Ga:g=8;e|=16;break;case va:g=8;e|=1;break;case wa:return a=sh(12,c,b,e|8),a.elementType=wa,a.type=wa,a.lanes=f,a;case Ba:return a=sh(13,c,b,e),a.type=Ba,a.elementType=Ba,a.lanes=f,a;case Ca:return a=sh(19,c,b,e),a.elementType=Ca,a.lanes=f,a;case Ha:return Bi(c,e,f,b);case Ia:return a=sh(23,c,b,e),a.elementType=Ia,a.lanes=f,a;default:if(\"object\"===\ntypeof a&&null!==a)switch(a.$$typeof){case ya:g=10;break a;case za:g=9;break a;case Aa:g=11;break a;case Da:g=14;break a;case Ea:g=16;d=null;break a}throw Error(w(130,null==a?a:typeof a,\"\"));}b=sh(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function bh(a,b,c,d){a=sh(7,a,d,b);a.lanes=c;return a}function Bi(a,b,c,d){a=sh(22,a,d,b);a.elementType=Ha;a.lanes=c;return a}function Zg(a,b,c){a=sh(6,a,null,b);a.lanes=c;return a}\nfunction ah(a,b,c){b=sh(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction uk(a,b,c){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.pendingContext=this.context=null;this.hydrate=c;this.callbackNode=null;this.callbackPriority=0;this.eventTimes=zd(0);this.expirationTimes=zd(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zd(0);this.mutableSourceEagerHydrationData=null}\nfunction vk(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:ta,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction wk(a,b,c,d){var e=b.current,f=Lg(),g=Mg(e);a:if(c){c=c._reactInternals;b:{if(Yb(c)!==c||1!==c.tag)throw Error(w(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(gg(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw Error(w(171));}if(1===c.tag){var k=c.type;if(gg(k)){c=jg(c,k,h);break a}}c=h}else c=dg;null===b.context?b.context=c:b.pendingContext=c;b=Dg(f,g);b.payload={element:a};d=void 0===d?null:d;null!==\nd&&(b.callback=d);Eg(e,b);Ng(e,g,f);return g}function xk(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function yk(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function zk(a,b){yk(a,b);(a=a.alternate)&&yk(a,b)}function Ak(a,b){var c=qd;try{return qd=a,b()}finally{qd=c}}function Bk(){return null}function Ck(a,b){this._internalRoot=Dk(a,2,b)}\nfunction Ek(a,b,c){this._internalRoot=Dk(a,b,c)}Ck.prototype.render=Ek.prototype.render=function(a){wk(a,this._internalRoot,null,null)};Ck.prototype.unmount=Ek.prototype.unmount=function(){var a=this._internalRoot,b=a.containerInfo;wk(null,a,null,function(){b[If]=null})};\nfunction Dk(a,b,c){var d=null!=c&&null!=c.hydrationOptions&&c.hydrationOptions.mutableSources||null;c=new uk(a,b,null!=c&&!0===c.hydrate);b=sh(3,null,null,2===b?7:1===b?3:0);c.current=b;b.stateNode=c;Bg(b);a[If]=c.current;Gf(8===a.nodeType?a.parentNode:a);if(d)for(a=0;a<d.length;a++){b=d[a];var e=b._getVersion;e=e(b._source);null==c.mutableSourceEagerHydrationData?c.mutableSourceEagerHydrationData=[b,e]:c.mutableSourceEagerHydrationData.push(b,e)}return c}\nfunction Fk(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function Gk(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new Ek(a,0,b?{hydrate:!0}:void 0)}\nfunction Hk(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f._internalRoot;if(\"function\"===typeof e){var h=e;e=function(){var a=xk(g);h.call(a)}}wk(b,g,a,e)}else{f=c._reactRootContainer=Gk(c,d);g=f._internalRoot;if(\"function\"===typeof e){var k=e;e=function(){var a=xk(g);k.call(a)}}gk(function(){wk(b,g,a,e)})}return xk(g)}\nec=function(a){switch(a.tag){case 3:var b=a.stateNode;if(b.hydrate){var c=rd(b.pendingLanes);b.expiredLanes|=c&b.pendingLanes;Vj(b,E());0===(V&48)&&(Ej(),od())}break;case 13:var d=Lg();hk(function(){return Ng(a,1,d)});zk(a,4)}};fc=function(a){if(13===a.tag){var b=Lg();Ng(a,4,b);zk(a,4)}};gc=function(a){if(13===a.tag){var b=Lg();Ng(a,67108864,b);zk(a,67108864)}};hc=function(a){if(13===a.tag){var b=Lg(),c=Mg(a);Ng(a,c,b);zk(a,c)}};ic=function(){return qd};jc=Ak;\nxb=function(a,b,c){switch(b){case \"input\":$a(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Cb(d);if(!e)throw Error(w(90));Va(d);$a(d,e)}}}break;case \"textarea\":hb(a,c);break;case \"select\":b=c.value,null!=b&&eb(a,!!c.multiple,b,!1)}};Fb=fk;\nGb=function(a,b,c,d,e){var f=V;V|=4;try{return md(98,a.bind(null,b,c,d,e))}finally{V=f,0===V&&(Ej(),od())}};Hb=function(){0===(V&49)&&(ek(),Xj())};Ib=function(a,b){var c=V;V|=2;try{return a(b)}finally{V=c,0===V&&(Ej(),od())}};function Ik(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!Fk(b))throw Error(w(200));return vk(a,b,null,c)}var Jk={Events:[Bb,We,Cb,Db,Eb,Xj,{current:!1}]},Kk={findFiberByHostInstance:Ac,bundleType:0,version:\"17.0.2-experimental-9b8060041\",rendererPackageName:\"react-dom\"};\nvar Lk={bundleType:Kk.bundleType,version:Kk.version,rendererPackageName:Kk.rendererPackageName,rendererConfig:Kk.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ra.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=bc(a);return null===a?null:a.stateNode},findFiberByHostInstance:Kk.findFiberByHostInstance||\nBk,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var Mk=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!Mk.isDisabled&&Mk.supportsFiber)try{mg=Mk.inject(Lk),ng=Mk}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=Jk;exports.createPortal=Ik;\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(w(188));throw Error(w(268,Object.keys(a)));}a=bc(b);a=null===a?null:a.stateNode;return a};exports.flushSync=hk;exports.hydrate=function(a,b,c){if(!Fk(b))throw Error(w(200));return Hk(null,a,b,!0,c)};exports.render=function(a,b,c){if(!Fk(b))throw Error(w(200));return Hk(null,a,b,!1,c)};\nexports.unmountComponentAtNode=function(a){if(!Fk(a))throw Error(w(40));return a._reactRootContainer?(gk(function(){Hk(null,null,a,!1,function(){a._reactRootContainer=null;a[If]=null})}),!0):!1};exports.unstable_batchedUpdates=fk;exports.unstable_createBlockingRoot=function(a,b){if(!Fk(a))throw Error(w(299));return new Ek(a,1,b)};exports.unstable_createPortal=function(a,b){return Ik(a,b,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)};\nexports.unstable_createRoot=function(a,b){if(!Fk(a))throw Error(w(299));return new Ck(a,b)};exports.unstable_flushControlled=function(a){var b=V;V|=1;try{md(99,a)}finally{V=b,0===V&&(Ej(),od())}};exports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!Fk(c))throw Error(w(200));if(null==a||void 0===a._reactInternals)throw Error(w(38));return Hk(a,b,c,!1,d)};exports.unstable_runWithPriority=Ak;\nexports.unstable_scheduleHydration=function(a){if(a){var b=u.unstable_getCurrentPriorityLevel(),c=ic();a={blockedOn:null,target:a,priority:b,lanePriority:c};for(c=0;c<rc.length&&!(b<=rc[c].priority);c++);rc.splice(c,0,a);0===c&&zc(a)}};exports.version=\"17.0.2-experimental-9b8060041\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler-unstable_no_dom.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler-unstable_no_dom.development.js');\n}\n","/** @license React v0.0.0-experimental-9b8060041\n * scheduler-unstable_no_dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;;){var d=c-1>>>1,e=a[d];if(void 0!==e&&0<g(e,b))a[d]=b,a[c]=e,c=d;else break a}}function h(a){a=a[0];return void 0===a?null:a}function k(a){var b=a[0];if(void 0!==b){var c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length;d<e;){var m=2*(d+1)-1,n=a[m],r=m+1,q=a[r];if(void 0!==n&&0>g(n,c))void 0!==q&&0>g(q,n)?(a[d]=q,a[r]=c,d=r):(a[d]=n,a[m]=c,d=m);else if(void 0!==q&&0>g(q,c))a[d]=q,a[r]=c,d=r;else break a}}return b}return null}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var l=[],p=[],t=1,u=null,v=3,w=!1,x=!1,y=!1;if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var z=performance;exports.unstable_now=function(){return z.now()}}else{var A=Date,B=A.now();exports.unstable_now=function(){return A.now()-B}}function C(a){for(var b=h(p);null!==b;){if(null===b.callback)k(p);else if(b.startTime<=a)k(p),b.sortIndex=b.expirationTime,f(l,b);else break;b=h(p)}}\nfunction D(a){y=!1;C(a);if(!x)if(null!==h(l))x=!0,E(F);else{var b=h(p);null!==b&&(G=setTimeout(D,b.startTime-a))}}\nfunction F(a,b){x=!1;y&&(y=!1,clearTimeout(G));w=!0;var c=v;try{C(b);for(u=h(l);!(null===u||u.expirationTime>b&&!a);){var d=u.callback;if(\"function\"===typeof d){u.callback=null;v=u.priorityLevel;var e=d(u.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?u.callback=e:u===h(l)&&k(l);C(b)}else k(l);u=h(l)}if(null!==u)var m=!0;else{var n=h(p);null!==n&&(G=setTimeout(D,n.startTime-b));m=!1}return m}finally{u=null,v=c,w=!1}}var H=null,G=null;\nfunction I(){if(null!==H)try{var a=exports.unstable_now();H(!0,a);H=null}catch(b){throw setTimeout(I,0),b;}}function E(a){null!==H?setTimeout(E,0,a):(H=a,setTimeout(I,0))}exports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){x||w||(x=!0,E(F))};\nexports.unstable_forceFrameRate=function(){};exports.unstable_getCurrentPriorityLevel=function(){return v};exports.unstable_getFirstCallbackNode=function(){return h(l)};exports.unstable_next=function(a){switch(v){case 1:case 2:case 3:var b=3;break;default:b=v}var c=v;v=b;try{return a()}finally{v=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=function(){};\nexports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=v;v=a;try{return b()}finally{v=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:t++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,f(p,a),null===h(l)&&a===h(p)&&(y?clearTimeout(G):y=!0,G=setTimeout(D,c-d))):(a.sortIndex=e,f(l,a),x||w||(x=!0,E(F)));return a};\nexports.unstable_shouldYield=function(){return!1};exports.unstable_wrapCallback=function(a){var b=v;return function(){var c=v;v=b;try{return a.apply(this,arguments)}finally{v=c}}};\n","/** @license React v0.0.0-experimental-9b8060041\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;;){var d=c-1>>>1,e=a[d];if(void 0!==e&&0<g(e,b))a[d]=b,a[c]=e,c=d;else break a}}function h(a){a=a[0];return void 0===a?null:a}function k(a){var b=a[0];if(void 0!==b){var c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length;d<e;){var m=2*(d+1)-1,n=a[m],r=m+1,q=a[r];if(void 0!==n&&0>g(n,c))void 0!==q&&0>g(q,n)?(a[d]=q,a[r]=c,d=r):(a[d]=n,a[m]=c,d=m);else if(void 0!==q&&0>g(q,c))a[d]=q,a[r]=c,d=r;else break a}}return b}return null}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,t=p.now();exports.unstable_now=function(){return p.now()-t}}var u=[],v=[],w=1,x=null,y=3,z=!1,A=!1,B=!1,C=window.setTimeout,D=window.clearTimeout;\nif(\"undefined\"!==typeof console){var E=window.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\");\"function\"!==typeof E&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\")}\nfunction F(a){for(var b=h(v);null!==b;){if(null===b.callback)k(v);else if(b.startTime<=a)k(v),b.sortIndex=b.expirationTime,f(u,b);else break;b=h(v)}}function G(a){B=!1;F(a);if(!A)if(null!==h(u))A=!0,H(I);else{var b=h(v);null!==b&&J(G,b.startTime-a)}}\nfunction I(a,b){A=!1;B&&(B=!1,D(K),K=-1);z=!0;var c=y;try{F(b);for(x=h(u);null!==x&&(!(x.expirationTime>b)||a&&!L());){var d=x.callback;if(\"function\"===typeof d){x.callback=null;y=x.priorityLevel;var e=d(x.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?x.callback=e:x===h(u)&&k(u);F(b)}else k(u);x=h(u)}if(null!==x)var m=!0;else{var n=h(v);null!==n&&J(G,n.startTime-b);m=!1}return m}finally{x=null,y=c,z=!1}}var M=!1,N=null,K=-1,O=5,P=0;\nfunction L(){return exports.unstable_now()>=P}var Q=new MessageChannel,R=Q.port2;Q.port1.onmessage=function(){if(null!==N){var a=exports.unstable_now();P=a+O;try{N(!0,a)?R.postMessage(null):(M=!1,N=null)}catch(b){throw R.postMessage(null),b;}}else M=!1};function H(a){N=a;M||(M=!0,R.postMessage(null))}function J(a,b){K=C(function(){a(exports.unstable_now())},b)}exports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;\nexports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){A||z||(A=!0,H(I))};exports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):O=0<a?Math.floor(1E3/a):5};exports.unstable_getCurrentPriorityLevel=function(){return y};\nexports.unstable_getFirstCallbackNode=function(){return h(u)};exports.unstable_next=function(a){switch(y){case 1:case 2:case 3:var b=3;break;default:b=y}var c=y;y=b;try{return a()}finally{y=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=function(){};exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=y;y=a;try{return b()}finally{y=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:w++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,f(v,a),null===h(u)&&a===h(v)&&(B?(D(K),K=-1):B=!0,J(G,c-d))):(a.sortIndex=e,f(u,a),A||z||(A=!0,H(I)));return a};\nexports.unstable_shouldYield=L;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","export default \":root {\\n /**\\n * IMPORTANT: When new theme variables are added below– also add them to SettingsContext updateThemeVariables()\\n */\\n\\n /* Light theme */\\n --light-color-attribute-name: #ef6632;\\n --light-color-attribute-name-not-editable: #23272f;\\n --light-color-attribute-name-inverted: rgba(255, 255, 255, 0.7);\\n --light-color-attribute-value: #1a1aa6;\\n --light-color-attribute-value-inverted: #ffffff;\\n --light-color-attribute-editable-value: #1a1aa6;\\n --light-color-background: #ffffff;\\n --light-color-background-hover: rgba(0, 136, 250, 0.1);\\n --light-color-background-inactive: #e5e5e5;\\n --light-color-background-invalid: #fff0f0;\\n --light-color-background-selected: #0088fa;\\n --light-color-button-background: #ffffff;\\n --light-color-button-background-focus: #ededed;\\n --light-color-button: #5f6673;\\n --light-color-button-disabled: #cfd1d5;\\n --light-color-button-active: #0088fa;\\n --light-color-button-focus: #23272f;\\n --light-color-button-hover: #23272f;\\n --light-color-border: #eeeeee;\\n --light-color-commit-did-not-render-fill: #cfd1d5;\\n --light-color-commit-did-not-render-fill-text: #000000;\\n --light-color-commit-did-not-render-pattern: #cfd1d5;\\n --light-color-commit-did-not-render-pattern-text: #333333;\\n --light-color-commit-gradient-0: #37afa9;\\n --light-color-commit-gradient-1: #63b19e;\\n --light-color-commit-gradient-2: #80b393;\\n --light-color-commit-gradient-3: #97b488;\\n --light-color-commit-gradient-4: #abb67d;\\n --light-color-commit-gradient-5: #beb771;\\n --light-color-commit-gradient-6: #cfb965;\\n --light-color-commit-gradient-7: #dfba57;\\n --light-color-commit-gradient-8: #efbb49;\\n --light-color-commit-gradient-9: #febc38;\\n --light-color-commit-gradient-text: #000000;\\n --light-color-component-name: #6a51b2;\\n --light-color-component-name-inverted: #ffffff;\\n --light-color-component-badge-background: rgba(0, 0, 0, 0.1);\\n --light-color-component-badge-background-inverted: rgba(255, 255, 255, 0.25);\\n --light-color-component-badge-count: #777d88;\\n --light-color-component-badge-count-inverted: rgba(255, 255, 255, 0.7);\\n --light-color-context-background: rgba(0,0,0,.9);\\n --light-color-context-background-hover: rgba(255, 255, 255, 0.1);\\n --light-color-context-background-selected: #178fb9;\\n --light-color-context-border: #3d424a;\\n --light-color-context-text: #ffffff;\\n --light-color-context-text-selected: #ffffff;\\n --light-color-dim: #777d88;\\n --light-color-dimmer: #cfd1d5;\\n --light-color-dimmest: #eff0f1;\\n --light-color-error-background: hsl(0, 100%, 97%);\\n --light-color-error-border: hsl(0, 100%, 92%);\\n --light-color-error-text: #ff0000;\\n --light-color-expand-collapse-toggle: #777d88;\\n --light-color-link: #0000ff;\\n --light-color-modal-background: rgba(255, 255, 255, 0.75);\\n --light-color-record-active: #fc3a4b;\\n --light-color-record-hover: #3578e5;\\n --light-color-record-inactive: #0088fa;\\n --light-color-scroll-thumb: #c2c2c2;\\n --light-color-scroll-track: #fafafa;\\n --light-color-search-match: yellow;\\n --light-color-search-match-current: #f7923b;\\n --light-color-selected-tree-highlight-active: rgba(0, 136, 250, 0.1);\\n --light-color-selected-tree-highlight-inactive: rgba(0, 0, 0, 0.05);\\n --light-color-shadow: rgba(0, 0, 0, 0.25);\\n --light-color-tab-selected-border: #0088fa;\\n --light-color-text: #000000;\\n --light-color-text-invalid: #ff0000;\\n --light-color-text-selected: #ffffff;\\n --light-color-toggle-background-invalid: #fc3a4b;\\n --light-color-toggle-background-on: #0088fa;\\n --light-color-toggle-background-off: #cfd1d5;\\n --light-color-toggle-text: #ffffff;\\n --light-color-tooltip-background: rgba(0, 0, 0, 0.9);\\n --light-color-tooltip-text: #ffffff;\\n\\n /* Dark theme */\\n --dark-color-attribute-name: #9d87d2;\\n --dark-color-attribute-name-not-editable: #ededed;\\n --dark-color-attribute-name-inverted: #282828;\\n --dark-color-attribute-value: #cedae0;\\n --dark-color-attribute-value-inverted: #ffffff;\\n --dark-color-attribute-editable-value: yellow;\\n --dark-color-background: #282c34;\\n --dark-color-background-hover: rgba(255, 255, 255, 0.1);\\n --dark-color-background-inactive: #3d424a;\\n --dark-color-background-invalid: #5c0000;\\n --dark-color-background-selected: #178fb9;\\n --dark-color-button-background: #282c34;\\n --dark-color-button-background-focus: #3d424a;\\n --dark-color-button: #afb3b9;\\n --dark-color-button-active: #61dafb;\\n --dark-color-button-disabled: #4f5766;\\n --dark-color-button-focus: #a2e9fc;\\n --dark-color-button-hover: #ededed;\\n --dark-color-border: #3d424a;\\n --dark-color-commit-did-not-render-fill: #777d88;\\n --dark-color-commit-did-not-render-fill-text: #000000;\\n --dark-color-commit-did-not-render-pattern: #666c77;\\n --dark-color-commit-did-not-render-pattern-text: #ffffff;\\n --dark-color-commit-gradient-0: #37afa9;\\n --dark-color-commit-gradient-1: #63b19e;\\n --dark-color-commit-gradient-2: #80b393;\\n --dark-color-commit-gradient-3: #97b488;\\n --dark-color-commit-gradient-4: #abb67d;\\n --dark-color-commit-gradient-5: #beb771;\\n --dark-color-commit-gradient-6: #cfb965;\\n --dark-color-commit-gradient-7: #dfba57;\\n --dark-color-commit-gradient-8: #efbb49;\\n --dark-color-commit-gradient-9: #febc38;\\n --dark-color-commit-gradient-text: #000000;\\n --dark-color-component-name: #61dafb;\\n --dark-color-component-name-inverted: #282828;\\n --dark-color-component-badge-background: rgba(255, 255, 255, 0.25);\\n --dark-color-component-badge-background-inverted: rgba(0, 0, 0, 0.25);\\n --dark-color-component-badge-count: #8f949d;\\n --dark-color-component-badge-count-inverted: rgba(255, 255, 255, 0.7);\\n --dark-color-context-background: rgba(255,255,255,.9);\\n --dark-color-context-background-hover: rgba(0, 136, 250, 0.1);\\n --dark-color-context-background-selected: #0088fa;\\n --dark-color-context-border: #eeeeee;\\n --dark-color-context-text: #000000;\\n --dark-color-context-text-selected: #ffffff;\\n --dark-color-dim: #8f949d;\\n --dark-color-dimmer: #777d88;\\n --dark-color-dimmest: #4f5766;\\n --dark-color-error-background: #200;\\n --dark-color-error-border: #900;\\n --dark-color-error-text: #f55;\\n --dark-color-expand-collapse-toggle: #8f949d;\\n --dark-color-link: #61dafb;\\n --dark-color-modal-background: rgba(0, 0, 0, 0.75);\\n --dark-color-record-active: #fc3a4b;\\n --dark-color-record-hover: #a2e9fc;\\n --dark-color-record-inactive: #61dafb;\\n --dark-color-scroll-thumb: #afb3b9;\\n --dark-color-scroll-track: #313640;\\n --dark-color-search-match: yellow;\\n --dark-color-search-match-current: #f7923b;\\n --dark-color-selected-tree-highlight-active: rgba(23, 143, 185, 0.15);\\n --dark-color-selected-tree-highlight-inactive: rgba(255, 255, 255, 0.05);\\n --dark-color-shadow: rgba(0, 0, 0, 0.5);\\n --dark-color-tab-selected-border: #178fb9;\\n --dark-color-text: #ffffff;\\n --dark-color-text-invalid: #ff8080;\\n --dark-color-text-selected: #ffffff;\\n --dark-color-toggle-background-invalid: #fc3a4b;\\n --dark-color-toggle-background-on: #178fb9;\\n --dark-color-toggle-background-off: #777d88;\\n --dark-color-toggle-text: #ffffff;\\n --dark-color-tooltip-background: rgba(255, 255, 255, 0.9);\\n --dark-color-tooltip-text: #000000;\\n\\n /* Font smoothing */\\n --light-font-smoothing: auto;\\n --dark-font-smoothing: antialiased;\\n --font-smoothing: auto;\\n\\n /* Compact density */\\n --compact-font-size-monospace-small: 9px;\\n --compact-font-size-monospace-normal: 11px;\\n --compact-font-size-monospace-large: 15px;\\n --compact-font-size-sans-small: 10px;\\n --compact-font-size-sans-normal: 12px;\\n --compact-font-size-sans-large: 14px;\\n --compact-line-height-data: 18px;\\n --compact-root-font-size: 16px;\\n\\n /* Comfortable density */\\n --comfortable-font-size-monospace-small: 10px;\\n --comfortable-font-size-monospace-normal: 13px;\\n --comfortable-font-size-monospace-large: 17px;\\n --comfortable-font-size-sans-small: 12px;\\n --comfortable-font-size-sans-normal: 14px;\\n --comfortable-font-size-sans-large: 16px;\\n --comfortable-line-height-data: 22px;\\n --comfortable-root-font-size: 20px;\\n\\n /* GitHub.com system fonts */\\n --font-family-monospace: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo,\\n Courier, monospace;\\n --font-family-sans: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica,\\n Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\n\\n /* Constant values shared between JS and CSS */\\n --interaction-commit-size: 10px;\\n --interaction-label-width: 200px;\\n}\\n\"","'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount /*, ...nodes */) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 2; i < arguments.length; i++) {\n walker = insert(this, walker, arguments[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n","'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n","/** @license React v0.0.0-experimental-9b8060041\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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'use strict';var b=60103,c=60106,d=60107,e=60108,f=60114,g=60109,h=60110,k=60112,l=60113,m=60120,n=60115,p=60116,q=60117,r=60129,u=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var v=Symbol.for;b=v(\"react.element\");c=v(\"react.portal\");d=v(\"react.fragment\");e=v(\"react.strict_mode\");f=v(\"react.profiler\");g=v(\"react.provider\");h=v(\"react.context\");k=v(\"react.forward_ref\");l=v(\"react.suspense\");m=v(\"react.suspense_list\");n=v(\"react.memo\");p=v(\"react.lazy\");q=v(\"react.fundamental\");r=v(\"react.debug_trace_mode\");u=v(\"react.legacy_hidden\")}var w=0;\"function\"===typeof Symbol&&(w=Symbol.for(\"react.module.reference\"));\nfunction x(a){if(\"object\"===typeof a&&null!==a){var t=a.$$typeof;switch(t){case b:switch(a=a.type,a){case d:case f:case e:case l:case m:return a;default:switch(a=a&&a.$$typeof,a){case h:case k:case p:case n:case g:return a;default:return t}}case c:return t}}}var y=g,z=b,A=k,B=d,C=p,D=n,E=c,F=f,G=e,H=l;exports.ContextConsumer=h;exports.ContextProvider=y;exports.Element=z;exports.ForwardRef=A;exports.Fragment=B;exports.Lazy=C;exports.Memo=D;exports.Portal=E;exports.Profiler=F;exports.StrictMode=G;\nexports.Suspense=H;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return x(a)===h};exports.isContextProvider=function(a){return x(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return x(a)===k};exports.isFragment=function(a){return x(a)===d};exports.isLazy=function(a){return x(a)===p};exports.isMemo=function(a){return x(a)===n};\nexports.isPortal=function(a){return x(a)===c};exports.isProfiler=function(a){return x(a)===f};exports.isStrictMode=function(a){return x(a)===e};exports.isSuspense=function(a){return x(a)===l};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===r||a===e||a===l||a===m||a===u||\"object\"===typeof a&&null!==a&&(a.$$typeof===p||a.$$typeof===n||a.$$typeof===g||a.$$typeof===h||a.$$typeof===k||a.$$typeof===q||a.$$typeof===w||void 0!==a.getModuleId)?!0:!1};exports.typeOf=x;\n","module.exports = require(\"net\");","module.exports = require(\"tls\");","module.exports = require(\"url\");","module.exports = require(\"zlib\");","'use strict';\n\nconst kDone = Symbol('kDone');\nconst kRun = Symbol('kRun');\n\n/**\n * A very simple job queue with adjustable concurrency. Adapted from\n * https://github.com/STRML/async-limiter\n */\nclass Limiter {\n /**\n * Creates a new `Limiter`.\n *\n * @param {Number} concurrency The maximum number of jobs allowed to run\n * concurrently\n */\n constructor(concurrency) {\n this[kDone] = () => {\n this.pending--;\n this[kRun]();\n };\n this.concurrency = concurrency || Infinity;\n this.jobs = [];\n this.pending = 0;\n }\n\n /**\n * Adds a job to the queue.\n *\n * @public\n */\n add(job) {\n this.jobs.push(job);\n this[kRun]();\n }\n\n /**\n * Removes a job from the queue and runs it if possible.\n *\n * @private\n */\n [kRun]() {\n if (this.pending === this.concurrency) return;\n\n if (this.jobs.length) {\n const job = this.jobs.shift();\n\n this.pending++;\n job(this[kDone]);\n }\n }\n}\n\nmodule.exports = Limiter;\n","'use strict';\n\n/**\n * Class representing an event.\n *\n * @private\n */\nclass Event {\n /**\n * Create a new `Event`.\n *\n * @param {String} type The name of the event\n * @param {Object} target A reference to the target to which the event was dispatched\n */\n constructor(type, target) {\n this.target = target;\n this.type = type;\n }\n}\n\n/**\n * Class representing a message event.\n *\n * @extends Event\n * @private\n */\nclass MessageEvent extends Event {\n /**\n * Create a new `MessageEvent`.\n *\n * @param {(String|Buffer|ArrayBuffer|Buffer[])} data The received data\n * @param {WebSocket} target A reference to the target to which the event was dispatched\n */\n constructor(data, target) {\n super('message', target);\n\n this.data = data;\n }\n}\n\n/**\n * Class representing a close event.\n *\n * @extends Event\n * @private\n */\nclass CloseEvent extends Event {\n /**\n * Create a new `CloseEvent`.\n *\n * @param {Number} code The status code explaining why the connection is being closed\n * @param {String} reason A human-readable string explaining why the connection is closing\n * @param {WebSocket} target A reference to the target to which the event was dispatched\n */\n constructor(code, reason, target) {\n super('close', target);\n\n this.wasClean = target._closeFrameReceived && target._closeFrameSent;\n this.reason = reason;\n this.code = code;\n }\n}\n\n/**\n * Class representing an open event.\n *\n * @extends Event\n * @private\n */\nclass OpenEvent extends Event {\n /**\n * Create a new `OpenEvent`.\n *\n * @param {WebSocket} target A reference to the target to which the event was dispatched\n */\n constructor(target) {\n super('open', target);\n }\n}\n\n/**\n * Class representing an error event.\n *\n * @extends Event\n * @private\n */\nclass ErrorEvent extends Event {\n /**\n * Create a new `ErrorEvent`.\n *\n * @param {Object} error The error that generated this event\n * @param {WebSocket} target A reference to the target to which the event was dispatched\n */\n constructor(error, target) {\n super('error', target);\n\n this.message = error.message;\n this.error = error;\n }\n}\n\n/**\n * This provides methods for emulating the `EventTarget` interface. It's not\n * meant to be used directly.\n *\n * @mixin\n */\nconst EventTarget = {\n /**\n * Register an event listener.\n *\n * @param {String} method A string representing the event type to listen for\n * @param {Function} listener The listener to add\n * @public\n */\n addEventListener(method, listener) {\n if (typeof listener !== 'function') return;\n\n function onMessage(data) {\n listener.call(this, new MessageEvent(data, this));\n }\n\n function onClose(code, message) {\n listener.call(this, new CloseEvent(code, message, this));\n }\n\n function onError(error) {\n listener.call(this, new ErrorEvent(error, this));\n }\n\n function onOpen() {\n listener.call(this, new OpenEvent(this));\n }\n\n if (method === 'message') {\n onMessage._listener = listener;\n this.on(method, onMessage);\n } else if (method === 'close') {\n onClose._listener = listener;\n this.on(method, onClose);\n } else if (method === 'error') {\n onError._listener = listener;\n this.on(method, onError);\n } else if (method === 'open') {\n onOpen._listener = listener;\n this.on(method, onOpen);\n } else {\n this.on(method, listener);\n }\n },\n\n /**\n * Remove an event listener.\n *\n * @param {String} method A string representing the event type to remove\n * @param {Function} listener The listener to remove\n * @public\n */\n removeEventListener(method, listener) {\n const listeners = this.listeners(method);\n\n for (let i = 0; i < listeners.length; i++) {\n if (listeners[i] === listener || listeners[i]._listener === listener) {\n this.removeListener(method, listeners[i]);\n }\n }\n }\n};\n\nmodule.exports = EventTarget;\n","'use strict';\n\nconst { Duplex } = require('stream');\n\n/**\n * Emits the `'close'` event on a stream.\n *\n * @param {stream.Duplex} The stream.\n * @private\n */\nfunction emitClose(stream) {\n stream.emit('close');\n}\n\n/**\n * The listener of the `'end'` event.\n *\n * @private\n */\nfunction duplexOnEnd() {\n if (!this.destroyed && this._writableState.finished) {\n this.destroy();\n }\n}\n\n/**\n * The listener of the `'error'` event.\n *\n * @private\n */\nfunction duplexOnError(err) {\n this.removeListener('error', duplexOnError);\n this.destroy();\n if (this.listenerCount('error') === 0) {\n // Do not suppress the throwing behavior.\n this.emit('error', err);\n }\n}\n\n/**\n * Wraps a `WebSocket` in a duplex stream.\n *\n * @param {WebSocket} ws The `WebSocket` to wrap\n * @param {Object} options The options for the `Duplex` constructor\n * @return {stream.Duplex} The duplex stream\n * @public\n */\nfunction createWebSocketStream(ws, options) {\n let resumeOnReceiverDrain = true;\n\n function receiverOnDrain() {\n if (resumeOnReceiverDrain) ws._socket.resume();\n }\n\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n ws._receiver.removeAllListeners('drain');\n ws._receiver.on('drain', receiverOnDrain);\n });\n } else {\n ws._receiver.removeAllListeners('drain');\n ws._receiver.on('drain', receiverOnDrain);\n }\n\n const duplex = new Duplex({\n ...options,\n autoDestroy: false,\n emitClose: false,\n objectMode: false,\n writableObjectMode: false\n });\n\n ws.on('message', function message(msg) {\n if (!duplex.push(msg)) {\n resumeOnReceiverDrain = false;\n ws._socket.pause();\n }\n });\n\n ws.once('error', function error(err) {\n duplex.destroy(err);\n });\n\n ws.once('close', function close() {\n if (duplex.destroyed) return;\n\n duplex.push(null);\n });\n\n duplex._destroy = function(err, callback) {\n if (ws.readyState === ws.CLOSED) {\n callback(err);\n process.nextTick(emitClose, duplex);\n return;\n }\n\n ws.once('close', function close() {\n callback(err);\n process.nextTick(emitClose, duplex);\n });\n ws.terminate();\n };\n\n duplex._final = function(callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._final(callback);\n });\n return;\n }\n\n if (ws._socket._writableState.finished) {\n if (duplex._readableState.endEmitted) duplex.destroy();\n callback();\n } else {\n ws._socket.once('finish', function finish() {\n // `duplex` is not destroyed here because the `'end'` event will be\n // emitted on `duplex` after this `'finish'` event. The EOF signaling\n // `null` chunk is, in fact, pushed when the WebSocket emits `'close'`.\n callback();\n });\n ws.close();\n }\n };\n\n duplex._read = function() {\n if (ws.readyState === ws.OPEN && !resumeOnReceiverDrain) {\n resumeOnReceiverDrain = true;\n if (!ws._receiver._writableState.needDrain) ws._socket.resume();\n }\n };\n\n duplex._write = function(chunk, encoding, callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._write(chunk, encoding, callback);\n });\n return;\n }\n\n ws.send(chunk, callback);\n };\n\n duplex.on('end', duplexOnEnd);\n duplex.on('error', duplexOnError);\n return duplex;\n}\n\nmodule.exports = createWebSocketStream;\n","'use strict';\n\nconst EventEmitter = require('events');\nconst { createHash } = require('crypto');\nconst { createServer, STATUS_CODES } = require('http');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst WebSocket = require('./websocket');\nconst { format, parse } = require('./extension');\nconst { GUID } = require('./constants');\n\nconst keyRegex = /^[+/0-9A-Za-z]{22}==$/;\nconst kUsedByWebSocketServer = Symbol('kUsedByWebSocketServer');\n\n/**\n * Class representing a WebSocket server.\n *\n * @extends EventEmitter\n */\nclass WebSocketServer extends EventEmitter {\n /**\n * Create a `WebSocketServer` instance.\n *\n * @param {Object} options Configuration options\n * @param {Number} options.backlog The maximum length of the queue of pending\n * connections\n * @param {Boolean} options.clientTracking Specifies whether or not to track\n * clients\n * @param {Function} options.handleProtocols A hook to handle protocols\n * @param {String} options.host The hostname where to bind the server\n * @param {Number} options.maxPayload The maximum allowed message size\n * @param {Boolean} options.noServer Enable no server mode\n * @param {String} options.path Accept only connections matching this path\n * @param {(Boolean|Object)} options.perMessageDeflate Enable/disable\n * permessage-deflate\n * @param {Number} options.port The port where to bind the server\n * @param {http.Server} options.server A pre-created HTTP/S server to use\n * @param {Function} options.verifyClient A hook to reject connections\n * @param {Function} callback A listener for the `listening` event\n */\n constructor(options, callback) {\n super();\n\n options = {\n maxPayload: 100 * 1024 * 1024,\n perMessageDeflate: false,\n handleProtocols: null,\n clientTracking: true,\n verifyClient: null,\n noServer: false,\n backlog: null, // use default (511 as implemented in net.js)\n server: null,\n host: null,\n path: null,\n port: null,\n ...options\n };\n\n if (options.port == null && !options.server && !options.noServer) {\n throw new TypeError(\n 'One of the \"port\", \"server\", or \"noServer\" options must be specified'\n );\n }\n\n if (options.port != null) {\n this._server = createServer((req, res) => {\n const body = STATUS_CODES[426];\n\n res.writeHead(426, {\n 'Content-Length': body.length,\n 'Content-Type': 'text/plain'\n });\n res.end(body);\n });\n this._server.listen(\n options.port,\n options.host,\n options.backlog,\n callback\n );\n } else if (options.server) {\n if (options.server[kUsedByWebSocketServer]) {\n throw new Error(\n 'The HTTP/S server is already being used by another WebSocket server'\n );\n }\n\n options.server[kUsedByWebSocketServer] = true;\n this._server = options.server;\n }\n\n if (this._server) {\n this._removeListeners = addListeners(this._server, {\n listening: this.emit.bind(this, 'listening'),\n error: this.emit.bind(this, 'error'),\n upgrade: (req, socket, head) => {\n this.handleUpgrade(req, socket, head, (ws) => {\n this.emit('connection', ws, req);\n });\n }\n });\n }\n\n if (options.perMessageDeflate === true) options.perMessageDeflate = {};\n if (options.clientTracking) this.clients = new Set();\n this.options = options;\n }\n\n /**\n * Returns the bound address, the address family name, and port of the server\n * as reported by the operating system if listening on an IP socket.\n * If the server is listening on a pipe or UNIX domain socket, the name is\n * returned as a string.\n *\n * @return {(Object|String|null)} The address of the server\n * @public\n */\n address() {\n if (this.options.noServer) {\n throw new Error('The server is operating in \"noServer\" mode');\n }\n\n if (!this._server) return null;\n return this._server.address();\n }\n\n /**\n * Close the server.\n *\n * @param {Function} cb Callback\n * @public\n */\n close(cb) {\n if (cb) this.once('close', cb);\n\n //\n // Terminate all associated clients.\n //\n if (this.clients) {\n for (const client of this.clients) client.terminate();\n }\n\n const server = this._server;\n\n if (server) {\n this._removeListeners();\n this._removeListeners = this._server = null;\n\n //\n // Close the http server if it was internally created.\n //\n if (this.options.port != null) {\n server.close(() => this.emit('close'));\n return;\n }\n\n delete server[kUsedByWebSocketServer];\n }\n\n process.nextTick(emitClose, this);\n }\n\n /**\n * See if a given request should be handled by this server instance.\n *\n * @param {http.IncomingMessage} req Request object to inspect\n * @return {Boolean} `true` if the request is valid, else `false`\n * @public\n */\n shouldHandle(req) {\n if (this.options.path) {\n const index = req.url.indexOf('?');\n const pathname = index !== -1 ? req.url.slice(0, index) : req.url;\n\n if (pathname !== this.options.path) return false;\n }\n\n return true;\n }\n\n /**\n * Handle a HTTP Upgrade request.\n *\n * @param {http.IncomingMessage} req The request object\n * @param {net.Socket} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @public\n */\n handleUpgrade(req, socket, head, cb) {\n socket.on('error', socketOnError);\n\n const key =\n req.headers['sec-websocket-key'] !== undefined\n ? req.headers['sec-websocket-key'].trim()\n : false;\n const version = +req.headers['sec-websocket-version'];\n const extensions = {};\n\n if (\n req.method !== 'GET' ||\n req.headers.upgrade.toLowerCase() !== 'websocket' ||\n !key ||\n !keyRegex.test(key) ||\n (version !== 8 && version !== 13) ||\n !this.shouldHandle(req)\n ) {\n return abortHandshake(socket, 400);\n }\n\n if (this.options.perMessageDeflate) {\n const perMessageDeflate = new PerMessageDeflate(\n this.options.perMessageDeflate,\n true,\n this.options.maxPayload\n );\n\n try {\n const offers = parse(req.headers['sec-websocket-extensions']);\n\n if (offers[PerMessageDeflate.extensionName]) {\n perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]);\n extensions[PerMessageDeflate.extensionName] = perMessageDeflate;\n }\n } catch (err) {\n return abortHandshake(socket, 400);\n }\n }\n\n //\n // Optionally call external client verification handler.\n //\n if (this.options.verifyClient) {\n const info = {\n origin:\n req.headers[`${version === 8 ? 'sec-websocket-origin' : 'origin'}`],\n secure: !!(req.connection.authorized || req.connection.encrypted),\n req\n };\n\n if (this.options.verifyClient.length === 2) {\n this.options.verifyClient(info, (verified, code, message, headers) => {\n if (!verified) {\n return abortHandshake(socket, code || 401, message, headers);\n }\n\n this.completeUpgrade(key, extensions, req, socket, head, cb);\n });\n return;\n }\n\n if (!this.options.verifyClient(info)) return abortHandshake(socket, 401);\n }\n\n this.completeUpgrade(key, extensions, req, socket, head, cb);\n }\n\n /**\n * Upgrade the connection to WebSocket.\n *\n * @param {String} key The value of the `Sec-WebSocket-Key` header\n * @param {Object} extensions The accepted extensions\n * @param {http.IncomingMessage} req The request object\n * @param {net.Socket} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @private\n */\n completeUpgrade(key, extensions, req, socket, head, cb) {\n //\n // Destroy the socket if the client has already sent a FIN packet.\n //\n if (!socket.readable || !socket.writable) return socket.destroy();\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n const headers = [\n 'HTTP/1.1 101 Switching Protocols',\n 'Upgrade: websocket',\n 'Connection: Upgrade',\n `Sec-WebSocket-Accept: ${digest}`\n ];\n\n const ws = new WebSocket(null);\n let protocol = req.headers['sec-websocket-protocol'];\n\n if (protocol) {\n protocol = protocol.trim().split(/ *, */);\n\n //\n // Optionally call external protocol selection handler.\n //\n if (this.options.handleProtocols) {\n protocol = this.options.handleProtocols(protocol, req);\n } else {\n protocol = protocol[0];\n }\n\n if (protocol) {\n headers.push(`Sec-WebSocket-Protocol: ${protocol}`);\n ws.protocol = protocol;\n }\n }\n\n if (extensions[PerMessageDeflate.extensionName]) {\n const params = extensions[PerMessageDeflate.extensionName].params;\n const value = format({\n [PerMessageDeflate.extensionName]: [params]\n });\n headers.push(`Sec-WebSocket-Extensions: ${value}`);\n ws._extensions = extensions;\n }\n\n //\n // Allow external modification/inspection of handshake headers.\n //\n this.emit('headers', headers, req);\n\n socket.write(headers.concat('\\r\\n').join('\\r\\n'));\n socket.removeListener('error', socketOnError);\n\n ws.setSocket(socket, head, this.options.maxPayload);\n\n if (this.clients) {\n this.clients.add(ws);\n ws.on('close', () => this.clients.delete(ws));\n }\n\n cb(ws);\n }\n}\n\nmodule.exports = WebSocketServer;\n\n/**\n * Add event listeners on an `EventEmitter` using a map of <event, listener>\n * pairs.\n *\n * @param {EventEmitter} server The event emitter\n * @param {Object.<String, Function>} map The listeners to add\n * @return {Function} A function that will remove the added listeners when called\n * @private\n */\nfunction addListeners(server, map) {\n for (const event of Object.keys(map)) server.on(event, map[event]);\n\n return function removeListeners() {\n for (const event of Object.keys(map)) {\n server.removeListener(event, map[event]);\n }\n };\n}\n\n/**\n * Emit a `'close'` event on an `EventEmitter`.\n *\n * @param {EventEmitter} server The event emitter\n * @private\n */\nfunction emitClose(server) {\n server.emit('close');\n}\n\n/**\n * Handle premature socket errors.\n *\n * @private\n */\nfunction socketOnError() {\n this.destroy();\n}\n\n/**\n * Close the connection when preconditions are not fulfilled.\n *\n * @param {net.Socket} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} [message] The HTTP response body\n * @param {Object} [headers] Additional HTTP response headers\n * @private\n */\nfunction abortHandshake(socket, code, message, headers) {\n if (socket.writable) {\n message = message || STATUS_CODES[code];\n headers = {\n Connection: 'close',\n 'Content-type': 'text/html',\n 'Content-Length': Buffer.byteLength(message),\n ...headers\n };\n\n socket.write(\n `HTTP/1.1 ${code} ${STATUS_CODES[code]}\\r\\n` +\n Object.keys(headers)\n .map((h) => `${h}: ${headers[h]}`)\n .join('\\r\\n') +\n '\\r\\n\\r\\n' +\n message\n );\n }\n\n socket.removeListener('error', socketOnError);\n socket.destroy();\n}\n","/** @license React v0.0.0-experimental-9b8060041\n * react-debug-tools.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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'use strict';var g=require(\"object-assign\"),k=require(\"error-stack-parser\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var v=require(\"react\").__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,w=60128;\nif(\"function\"===typeof Symbol&&Symbol.for){var x=Symbol.for;w=x(\"react.opaque.id\")}var y=[],z=null,A=null;\nfunction B(){if(null===z){var a=new Map;try{C.useContext({_currentValue:null}),C.useState(null),C.useReducer(function(a){return a},null),C.useRef(null),C.useLayoutEffect(function(){}),C.useEffect(function(){}),C.useImperativeHandle(void 0,function(){return null}),C.useDebugValue(null),C.useCallback(function(){}),C.useMemo(function(){return null})}finally{var b=y;y=[]}for(var c=0;c<b.length;c++){var d=b[c];a.set(d.primitive,k.parse(d.stackError))}z=a}return z}var D=null;\nfunction E(){var a=D;null!==a&&(D=a.next);return a}\nvar C={getCacheForType:function(){throw Error(p(248));},readContext:function(a){return a._currentValue},useCallback:function(a){var b=E();y.push({primitive:\"Callback\",stackError:Error(),value:null!==b?b.memoizedState[0]:a});return a},useContext:function(a){y.push({primitive:\"Context\",stackError:Error(),value:a._currentValue});return a._currentValue},useEffect:function(a){E();y.push({primitive:\"Effect\",stackError:Error(),value:a})},useImperativeHandle:function(a){E();var b=void 0;null!==a&&\"object\"===\ntypeof a&&(b=a.current);y.push({primitive:\"ImperativeHandle\",stackError:Error(),value:b})},useDebugValue:function(a,b){y.push({primitive:\"DebugValue\",stackError:Error(),value:\"function\"===typeof b?b(a):a})},useLayoutEffect:function(a){E();y.push({primitive:\"LayoutEffect\",stackError:Error(),value:a})},useMemo:function(a){var b=E();a=null!==b?b.memoizedState[0]:a();y.push({primitive:\"Memo\",stackError:Error(),value:a});return a},useReducer:function(a,b,c){a=E();b=null!==a?a.memoizedState:void 0!==c?\nc(b):b;y.push({primitive:\"Reducer\",stackError:Error(),value:b});return[b,function(){}]},useRef:function(a){var b=E();a=null!==b?b.memoizedState:{current:a};y.push({primitive:\"Ref\",stackError:Error(),value:a.current});return a},useState:function(a){var b=E();a=null!==b?b.memoizedState:\"function\"===typeof a?a():a;y.push({primitive:\"State\",stackError:Error(),value:a});return[a,function(){}]},useTransition:function(){E();E();y.push({primitive:\"Transition\",stackError:Error(),value:void 0});return[function(){},\n!1]},useMutableSource:function(a,b){E();E();E();E();a=b(a._source);y.push({primitive:\"MutableSource\",stackError:Error(),value:a});return a},useDeferredValue:function(a){E();E();y.push({primitive:\"DeferredValue\",stackError:Error(),value:a});return a},useOpaqueIdentifier:function(){var a=E();A&&0===A.mode&&E();(a=null===a?void 0:a.memoizedState)&&a.$$typeof===w&&(a=void 0);y.push({primitive:\"OpaqueIdentifier\",stackError:Error(),value:a});return a}},F=0;\nfunction G(a,b,c){var d=b[c].source,e=0;a:for(;e<a.length;e++)if(a[e].source===d){for(var n=c+1,q=e+1;n<b.length&&q<a.length;n++,q++)if(a[q].source!==b[n].source)continue a;return e}return-1}function H(a,b){if(!a)return!1;b=\"use\"+b;return a.length<b.length?!1:a.lastIndexOf(b)===a.length-b.length}function I(a){if(!a)return\"\";var b=a.lastIndexOf(\".\");-1===b&&(b=0);\"use\"===a.substr(b,3)&&(b+=3);return a.substr(b)}\nfunction J(a,b){for(var c=[],d=null,e=c,n=0,q=[],u=0;u<b.length;u++){var t=b[u];var f=a;var h=k.parse(t.stackError);b:{var m=h,r=G(m,f,F);if(-1!==r)f=r;else{for(var l=0;l<f.length&&5>l;l++)if(r=G(m,f,l),-1!==r){F=l;f=r;break b}f=-1}}b:{m=h;r=B().get(t.primitive);if(void 0!==r)for(l=0;l<r.length&&l<m.length;l++)if(r[l].source!==m[l].source){l<m.length-1&&H(m[l].functionName,t.primitive)&&l++;l<m.length-1&&H(m[l].functionName,t.primitive)&&l++;m=l;break b}m=-1}h=-1===f||-1===m||2>f-m?null:h.slice(m,\nf-1);if(null!==h){f=0;if(null!==d){for(;f<h.length&&f<d.length&&h[h.length-f-1].source===d[d.length-f-1].source;)f++;for(d=d.length-1;d>f;d--)e=q.pop()}for(d=h.length-f-1;1<=d;d--)f=[],e.push({id:null,isStateEditable:!1,name:I(h[d-1].functionName),value:void 0,subHooks:f}),q.push(e),e=f;d=h}h=t.primitive;f=\"Context\"===h||\"DebugValue\"===h?null:n++;e.push({id:f,isStateEditable:\"Reducer\"===h||\"State\"===h,name:h,value:t.value,subHooks:[]})}K(c,null);return c}\nfunction K(a,b){for(var c=[],d=0;d<a.length;d++){var e=a[d];\"DebugValue\"===e.name&&0===e.subHooks.length?(a.splice(d,1),d--,c.push(e)):K(e.subHooks,e)}null!==b&&(1===c.length?b.value=c[0].value:1<c.length&&(b.value=c.map(function(a){return a.value})))}function L(a,b,c){null==c&&(c=v.ReactCurrentDispatcher);var d=c.current;c.current=C;try{var e=Error();a(b)}finally{a=y,y=[],c.current=d}c=k.parse(e);return J(c,a)}function M(a){a.forEach(function(a,c){return c._currentValue=a})}\nexports.inspectHooks=L;\nexports.inspectHooksOfFiber=function(a,b){null==b&&(b=v.ReactCurrentDispatcher);A=a;if(0!==a.tag&&15!==a.tag&&11!==a.tag)throw Error(\"Unknown Fiber. Needs to be a function component to inspect hooks.\");B();var c=a.type,d=a.memoizedProps;if(c!==a.elementType&&c&&c.defaultProps){d=g({},d);var e=c.defaultProps;for(n in e)void 0===d[n]&&(d[n]=e[n])}D=a.memoizedState;var n=new Map;try{for(e=a;e;){if(10===e.tag){var q=e.type._context;n.has(q)||(n.set(q,q._currentValue),q._currentValue=e.memoizedProps.value)}e=\ne.return}if(11===a.tag){var u=c.render;c=d;var t=a.ref;a=b;var f=a.current;a.current=C;try{var h=Error();u(c,t)}finally{var m=y;y=[];a.current=f}var r=k.parse(h);return J(r,m)}return L(c,d,b)}finally{D=null,M(n)}};\n","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('error-stack-parser', ['stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('stackframe'));\n } else {\n root.ErrorStackParser = factory(root.StackFrame);\n }\n}(this, function ErrorStackParser(StackFrame) {\n 'use strict';\n\n var FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\n var CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\n var SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code])?$/;\n\n return {\n /**\n * Given an Error object, extract the most information from it.\n *\n * @param {Error} error object\n * @return {Array} of StackFrames\n */\n parse: function ErrorStackParser$$parse(error) {\n if (typeof error.stacktrace !== 'undefined' || typeof error['opera#sourceloc'] !== 'undefined') {\n return this.parseOpera(error);\n } else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\n return this.parseV8OrIE(error);\n } else if (error.stack) {\n return this.parseFFOrSafari(error);\n } else {\n throw new Error('Cannot parse given Error object');\n }\n },\n\n // Separate line and column numbers from a string of the form: (URI:Line:Column)\n extractLocation: function ErrorStackParser$$extractLocation(urlLike) {\n // Fail-fast but return locations like \"(native)\"\n if (urlLike.indexOf(':') === -1) {\n return [urlLike];\n }\n\n var regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n var parts = regExp.exec(urlLike.replace(/[()]/g, ''));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n },\n\n parseV8OrIE: function ErrorStackParser$$parseV8OrIE(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }, this);\n\n return filtered.map(function(line) {\n if (line.indexOf('(eval ') > -1) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n line = line.replace(/eval code/g, 'eval').replace(/(\\(eval at [^()]*)|(\\),.*$)/g, '');\n }\n var sanitizedLine = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '(');\n\n // capture and preseve the parenthesized location \"(/foo/my bar.js:12:87)\" in\n // case it has spaces in it, as the string is split on \\s+ later on\n var location = sanitizedLine.match(/ (\\((.+):(\\d+):(\\d+)\\)$)/);\n\n // remove the parenthesized location from the line, if it was matched\n sanitizedLine = location ? sanitizedLine.replace(location[0], '') : sanitizedLine;\n\n var tokens = sanitizedLine.split(/\\s+/).slice(1);\n // if a location was matched, pass it to extractLocation() otherwise pop the last token\n var locationParts = this.extractLocation(location ? location[1] : tokens.pop());\n var functionName = tokens.join(' ') || undefined;\n var fileName = ['eval', '<anonymous>'].indexOf(locationParts[0]) > -1 ? undefined : locationParts[0];\n\n return new StackFrame({\n functionName: functionName,\n fileName: fileName,\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n },\n\n parseFFOrSafari: function ErrorStackParser$$parseFFOrSafari(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }, this);\n\n return filtered.map(function(line) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n if (line.indexOf(' > eval') > -1) {\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, ':$1');\n }\n\n if (line.indexOf('@') === -1 && line.indexOf(':') === -1) {\n // Safari eval frames only have function names and nothing else\n return new StackFrame({\n functionName: line\n });\n } else {\n var functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\n var matches = line.match(functionNameRegex);\n var functionName = matches && matches[1] ? matches[1] : undefined;\n var locationParts = this.extractLocation(line.replace(functionNameRegex, ''));\n\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }\n }, this);\n },\n\n parseOpera: function ErrorStackParser$$parseOpera(e) {\n if (!e.stacktrace || (e.message.indexOf('\\n') > -1 &&\n e.message.split('\\n').length > e.stacktrace.split('\\n').length)) {\n return this.parseOpera9(e);\n } else if (!e.stack) {\n return this.parseOpera10(e);\n } else {\n return this.parseOpera11(e);\n }\n },\n\n parseOpera9: function ErrorStackParser$$parseOpera9(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n var lines = e.message.split('\\n');\n var result = [];\n\n for (var i = 2, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n }));\n }\n }\n\n return result;\n },\n\n parseOpera10: function ErrorStackParser$$parseOpera10(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n var lines = e.stacktrace.split('\\n');\n var result = [];\n\n for (var i = 0, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(\n new StackFrame({\n functionName: match[3] || undefined,\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n })\n );\n }\n }\n\n return result;\n },\n\n // Opera 10.65+ Error.stack very similar to FF/Safari\n parseOpera11: function ErrorStackParser$$parseOpera11(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }, this);\n\n return filtered.map(function(line) {\n var tokens = line.split('@');\n var locationParts = this.extractLocation(tokens.pop());\n var functionCall = (tokens.shift() || '');\n var functionName = functionCall\n .replace(/<anonymous function(: (\\w+))?>/, '$2')\n .replace(/\\([^)]*\\)/g, '') || undefined;\n var argsRaw;\n if (functionCall.match(/\\(([^)]*)\\)/)) {\n argsRaw = functionCall.replace(/^[^(]+\\(([^)]*)\\)$/, '$1');\n }\n var args = (argsRaw === undefined || argsRaw === '[arguments not available]') ?\n undefined : argsRaw.split(',');\n\n return new StackFrame({\n functionName: functionName,\n args: args,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n }\n };\n}));\n","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stackframe', [], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.StackFrame = factory();\n }\n}(this, function() {\n 'use strict';\n function _isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n\n function _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.substring(1);\n }\n\n function _getter(p) {\n return function() {\n return this[p];\n };\n }\n\n var booleanProps = ['isConstructor', 'isEval', 'isNative', 'isToplevel'];\n var numericProps = ['columnNumber', 'lineNumber'];\n var stringProps = ['fileName', 'functionName', 'source'];\n var arrayProps = ['args'];\n\n var props = booleanProps.concat(numericProps, stringProps, arrayProps);\n\n function StackFrame(obj) {\n if (!obj) return;\n for (var i = 0; i < props.length; i++) {\n if (obj[props[i]] !== undefined) {\n this['set' + _capitalize(props[i])](obj[props[i]]);\n }\n }\n }\n\n StackFrame.prototype = {\n getArgs: function() {\n return this.args;\n },\n setArgs: function(v) {\n if (Object.prototype.toString.call(v) !== '[object Array]') {\n throw new TypeError('Args must be an Array');\n }\n this.args = v;\n },\n\n getEvalOrigin: function() {\n return this.evalOrigin;\n },\n setEvalOrigin: function(v) {\n if (v instanceof StackFrame) {\n this.evalOrigin = v;\n } else if (v instanceof Object) {\n this.evalOrigin = new StackFrame(v);\n } else {\n throw new TypeError('Eval Origin must be an Object or StackFrame');\n }\n },\n\n toString: function() {\n var fileName = this.getFileName() || '';\n var lineNumber = this.getLineNumber() || '';\n var columnNumber = this.getColumnNumber() || '';\n var functionName = this.getFunctionName() || '';\n if (this.getIsEval()) {\n if (fileName) {\n return '[eval] (' + fileName + ':' + lineNumber + ':' + columnNumber + ')';\n }\n return '[eval]:' + lineNumber + ':' + columnNumber;\n }\n if (functionName) {\n return functionName + ' (' + fileName + ':' + lineNumber + ':' + columnNumber + ')';\n }\n return fileName + ':' + lineNumber + ':' + columnNumber;\n }\n };\n\n StackFrame.fromString = function StackFrame$$fromString(str) {\n var argsStartIndex = str.indexOf('(');\n var argsEndIndex = str.lastIndexOf(')');\n\n var functionName = str.substring(0, argsStartIndex);\n var args = str.substring(argsStartIndex + 1, argsEndIndex).split(',');\n var locationString = str.substring(argsEndIndex + 1);\n\n if (locationString.indexOf('@') === 0) {\n var parts = /@(.+?)(?::(\\d+))?(?::(\\d+))?$/.exec(locationString, '');\n var fileName = parts[1];\n var lineNumber = parts[2];\n var columnNumber = parts[3];\n }\n\n return new StackFrame({\n functionName: functionName,\n args: args || undefined,\n fileName: fileName,\n lineNumber: lineNumber || undefined,\n columnNumber: columnNumber || undefined\n });\n };\n\n for (var i = 0; i < booleanProps.length; i++) {\n StackFrame.prototype['get' + _capitalize(booleanProps[i])] = _getter(booleanProps[i]);\n StackFrame.prototype['set' + _capitalize(booleanProps[i])] = (function(p) {\n return function(v) {\n this[p] = Boolean(v);\n };\n })(booleanProps[i]);\n }\n\n for (var j = 0; j < numericProps.length; j++) {\n StackFrame.prototype['get' + _capitalize(numericProps[j])] = _getter(numericProps[j]);\n StackFrame.prototype['set' + _capitalize(numericProps[j])] = (function(p) {\n return function(v) {\n if (!_isNumber(v)) {\n throw new TypeError(p + ' must be a Number');\n }\n this[p] = Number(v);\n };\n })(numericProps[j]);\n }\n\n for (var k = 0; k < stringProps.length; k++) {\n StackFrame.prototype['get' + _capitalize(stringProps[k])] = _getter(stringProps[k]);\n StackFrame.prototype['set' + _capitalize(stringProps[k])] = (function(p) {\n return function(v) {\n this[p] = String(v);\n };\n })(stringProps[k]);\n }\n\n return StackFrame;\n}));\n","\nvar content = require(\"!!../../css-loader/index.js??ref--5-1!./styles.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../css-loader/index.js??ref--5-1!./styles.css\", function() {\n\t\tvar newContent = require(\"!!../../css-loader/index.js??ref--5-1!./styles.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"/* Used to detect in JavaScript if apps have loaded styles or not. */\\n:root {\\n --reach-menu-button: 1;\\n}\\n\\n[data-reach-menu] {\\n font-family: sans-serif;\\n display: block;\\n position: absolute;\\n}\\n\\n[data-reach-menu-list] {\\n display: block;\\n white-space: nowrap;\\n border: solid 1px hsla(0, 0%, 0%, 0.25);\\n background: hsla(0, 100%, 100%, 0.99);\\n outline: none;\\n padding: 1rem 0;\\n font-size: 85%;\\n}\\n\\n[data-reach-menu-item] {\\n display: block;\\n}\\n\\n/*\\n The dom structure of a MenuLink is reach-menu-item > a,\\n so to target all items we can use `data-reach-menu-item`\\n*/\\n[data-reach-menu-item] {\\n /*\\n These are styled in one rule instead of something like a[data-reach-menu-item]\\n and li[data-reach-menu-item] so that apps don't have to fight specificity and\\n can style both li and a menu items with one rule,\\n ie: `[data-selected] { background: red; }`.\\n Otherwise they'd have to define two styles, one for a and one for li.\\n */\\n\\n /* reach-menu-item */\\n cursor: pointer;\\n\\n /* a */\\n display: block;\\n color: inherit;\\n font: inherit;\\n text-decoration: initial;\\n\\n /* both */\\n padding: 5px 20px;\\n}\\n\\n/* pseudo pseudo selector */\\n[data-reach-menu-item][data-selected] {\\n background: hsl(211, 81%, 36%);\\n color: white;\\n outline: none;\\n}\\n\", \"\"]);\n\n// exports\n","\n/**\n * When source maps are enabled, `style-loader` uses a link element with a data-uri to\n * embed the css on the page. This breaks all relative urls because now they are relative to a\n * bundle instead of the current page.\n *\n * One solution is to only use full urls, but that may be impossible.\n *\n * Instead, this function \"fixes\" the relative urls to be absolute according to the current page location.\n *\n * A rudimentary test suite is located at `test/fixUrls.js` and can be run via the `npm test` command.\n *\n */\n\nmodule.exports = function (css) {\n // get current location\n var location = typeof window !== \"undefined\" && window.location;\n\n if (!location) {\n throw new Error(\"fixUrls requires window.location\");\n }\n\n\t// blank or null?\n\tif (!css || typeof css !== \"string\") {\n\t return css;\n }\n\n var baseUrl = location.protocol + \"//\" + location.host;\n var currentDir = baseUrl + location.pathname.replace(/\\/[^\\/]*$/, \"/\");\n\n\t// convert each url(...)\n\t/*\n\tThis regular expression is just a way to recursively match brackets within\n\ta string.\n\n\t /url\\s*\\( = Match on the word \"url\" with any whitespace after it and then a parens\n\t ( = Start a capturing group\n\t (?: = Start a non-capturing group\n\t [^)(] = Match anything that isn't a parentheses\n\t | = OR\n\t \\( = Match a start parentheses\n\t (?: = Start another non-capturing groups\n\t [^)(]+ = Match anything that isn't a parentheses\n\t | = OR\n\t \\( = Match a start parentheses\n\t [^)(]* = Match anything that isn't a parentheses\n\t \\) = Match a end parentheses\n\t ) = End Group\n *\\) = Match anything and then a close parens\n ) = Close non-capturing group\n * = Match anything\n ) = Close capturing group\n\t \\) = Match a close parens\n\n\t /gi = Get all matches, not the first. Be case insensitive.\n\t */\n\tvar fixedCss = css.replace(/url\\s*\\(((?:[^)(]|\\((?:[^)(]+|\\([^)(]*\\))*\\))*)\\)/gi, function(fullMatch, origUrl) {\n\t\t// strip quotes (if they exist)\n\t\tvar unquotedOrigUrl = origUrl\n\t\t\t.trim()\n\t\t\t.replace(/^\"(.*)\"$/, function(o, $1){ return $1; })\n\t\t\t.replace(/^'(.*)'$/, function(o, $1){ return $1; });\n\n\t\t// already a full url? no change\n\t\tif (/^(#|data:|http:\\/\\/|https:\\/\\/|file:\\/\\/\\/|\\s*$)/i.test(unquotedOrigUrl)) {\n\t\t return fullMatch;\n\t\t}\n\n\t\t// convert the url to a full url\n\t\tvar newUrl;\n\n\t\tif (unquotedOrigUrl.indexOf(\"//\") === 0) {\n\t\t \t//TODO: should we add protocol?\n\t\t\tnewUrl = unquotedOrigUrl;\n\t\t} else if (unquotedOrigUrl.indexOf(\"/\") === 0) {\n\t\t\t// path should be relative to the base url\n\t\t\tnewUrl = baseUrl + unquotedOrigUrl; // already starts with '/'\n\t\t} else {\n\t\t\t// path should be relative to current directory\n\t\t\tnewUrl = currentDir + unquotedOrigUrl.replace(/^\\.\\//, \"\"); // Strip leading './'\n\t\t}\n\n\t\t// send back the fixed url(...)\n\t\treturn \"url(\" + JSON.stringify(newUrl) + \")\";\n\t});\n\n\t// send back the fixed css\n\treturn fixedCss;\n};\n","\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./styles.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./styles.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./styles.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":root {\\n --reach-tooltip: 1;\\n}\\n\\n[data-reach-tooltip] {\\n z-index: 1;\\n pointer-events: none;\\n position: absolute;\\n padding: 0.25em 0.5em;\\n box-shadow: 2px 2px 10px hsla(0, 0%, 0%, 0.1);\\n white-space: nowrap;\\n font-size: 85%;\\n background: #f0f0f0;\\n color: #444;\\n border: solid 1px #ccc;\\n}\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Badge___1D92d {\\n display: inline-block;\\n background-color: var(--color-component-badge-background);\\n color: var(--color-text);\\n padding: 0.125rem 0.25rem;\\n line-height: normal;\\n border-radius: 0.125rem;\\n margin-right: 0.25rem;\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-small);\\n}\\n\\n.ExtraLabel___ktyWc {\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-small);\\n color: var(--color-component-badge-count);\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Badge\": \"Badge___1D92d\",\n\t\"ExtraLabel\": \"ExtraLabel___ktyWc\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".ButtonIcon___1AgYV {\\n width: 1rem;\\n height: 1rem;\\n fill: currentColor;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"ButtonIcon\": \"ButtonIcon___1AgYV\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Element___1PGUo,\\n.InactiveSelectedElement___3H2V0,\\n.SelectedElement___2BZuq,\\n.HoveredElement___4tCuC {\\n color: var(--color-component-name);\\n}\\n.HoveredElement___4tCuC {\\n background-color: var(--color-background-hover);\\n}\\n.InactiveSelectedElement___3H2V0 {\\n background-color: var(--color-background-inactive);\\n}\\n\\n.Wrapper___1kRcF {\\n padding: 0 0.25rem;\\n white-space: pre;\\n height: var(--line-height-data);\\n line-height: var(--line-height-data);\\n display: inline-flex;\\n align-items: center;\\n cursor: default;\\n user-select: none;\\n}\\n\\n.ScrollAnchor___31Dc8 {\\n height: 100%;\\n width: 0;\\n}\\n\\n.SelectedElement___2BZuq {\\n background-color: var(--color-background-selected);\\n color: var(--color-text-selected);\\n\\n /* Invert colors */\\n --color-component-name: var(--color-component-name-inverted);\\n --color-text: var(--color-text-selected);\\n --color-component-badge-background: var(\\n --color-component-badge-background-inverted\\n );\\n --color-component-badge-count: var(--color-component-badge-count-inverted);\\n --color-attribute-name: var(--color-attribute-name-inverted);\\n --color-attribute-value: var(--color-attribute-value-inverted);\\n --color-expand-collapse-toggle: var(--color-component-name-inverted);\\n}\\n\\n.KeyName___iOoVX {\\n color: var(--color-attribute-name);\\n}\\n\\n.KeyValue___2hQzO {\\n color: var(--color-attribute-value);\\n user-select: text;\\n max-width: 100px;\\n overflow-x: hidden;\\n text-overflow: ellipsis;\\n}\\n\\n.Highlight___OJ7Ox {\\n background-color: var(--color-search-match);\\n}\\n.CurrentHighlight___3RWa2 {\\n background-color: var(--color-search-match-current);\\n}\\n\\n.ExpandCollapseToggle___3CxPD {\\n display: inline-flex;\\n width: 1rem;\\n height: 1rem;\\n flex: 0 0 1rem;\\n color: var(--color-expand-collapse-toggle);\\n}\\n\\n.Badge___36OB- {\\n margin-left: 0.25rem;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Element\": \"Element___1PGUo\",\n\t\"InactiveSelectedElement\": \"InactiveSelectedElement___3H2V0\",\n\t\"SelectedElement\": \"SelectedElement___2BZuq\",\n\t\"HoveredElement\": \"HoveredElement___4tCuC\",\n\t\"Wrapper\": \"Wrapper___1kRcF\",\n\t\"ScrollAnchor\": \"ScrollAnchor___31Dc8\",\n\t\"KeyName\": \"KeyName___iOoVX\",\n\t\"KeyValue\": \"KeyValue___2hQzO\",\n\t\"Highlight\": \"Highlight___OJ7Ox\",\n\t\"CurrentHighlight\": \"CurrentHighlight___3RWa2\",\n\t\"ExpandCollapseToggle\": \"ExpandCollapseToggle___3CxPD\",\n\t\"Badge\": \"Badge___36OB-\"\n};","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".ToggleDisabled___iQeZ3,\\n.ToggleOn___3XJTo,\\n.ToggleOff___142SC {\\n background: var(--color-button-background);\\n border: none;\\n border-radius: 0.25rem;\\n padding: 0;\\n flex: 0 0 auto;\\n}\\n\\n.ToggleContent___1C-vg {\\n display: inline-flex;\\n align-items: center;\\n border-radius: 0.25rem;\\n padding: 0.25rem;\\n}\\n\\n.ToggleOff___142SC {\\n border: none;\\n background: var(--color-button-background);\\n color: var(--color-button);\\n}\\n.ToggleOff___142SC:hover {\\n color: var(--color-button-hover);\\n}\\n\\n.ToggleOn___3XJTo,\\n.ToggleOn___3XJTo:active {\\n color: var(--color-button-active);\\n outline: none;\\n}\\n\\n.ToggleOn___3XJTo:focus,\\n.ToggleOff___142SC:focus,\\n.ToggleContent___1C-vg:focus {\\n outline: none;\\n}\\n\\n.ToggleOn___3XJTo:focus > .ToggleContent___1C-vg,\\n.ToggleOff___142SC:focus > .ToggleContent___1C-vg {\\n background: var(--color-button-background-focus);\\n}\\n\\n.ToggleDisabled___iQeZ3 {\\n background: var(--color-button-background);\\n color: var(--color-button-disabled);\\n cursor: default;\\n}\\n\\n.Input___ESX-3 {\\n width: 0;\\n margin: 0;\\n opacity: 0;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"ToggleDisabled\": \"ToggleDisabled___iQeZ3\",\n\t\"ToggleOn\": \"ToggleOn___3XJTo\",\n\t\"ToggleOff\": \"ToggleOff___142SC\",\n\t\"ToggleContent\": \"ToggleContent___1C-vg\",\n\t\"Input\": \"Input___ESX-3\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Tooltip___3QR8H {\\n border: none;\\n border-radius: 0.25rem;\\n padding: 0.25rem 0.5rem;\\n font-family: var(--font-family-sans);\\n font-size: 12px;\\n background-color: var(--color-tooltip-background);\\n color: var(--color-tooltip-text);\\n\\n /* Make sure this is above the DevTools, which are above the Overlay */\\n z-index: 10000002;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Tooltip\": \"Tooltip___3QR8H\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Button___1-PiG {\\n border: none;\\n background: var(--color-button-background);\\n color: var(--color-button);\\n padding: 0;\\n border-radius: 0.25rem;\\n flex: 0 0 auto;\\n}\\n.ButtonContent___2mZ9q {\\n display: inline-flex;\\n align-items: center;\\n border-radius: 0.25rem;\\n padding: 0.25rem;\\n}\\n\\n.Button___1-PiG:hover {\\n color: var(--color-button-hover);\\n}\\n.Button___1-PiG:active {\\n color: var(--color-button-focus);\\n outline: none;\\n}\\n.Button___1-PiG:focus,\\n.ButtonContent___2mZ9q:focus {\\n outline: none;\\n}\\n\\n.Button___1-PiG:focus > .ButtonContent___2mZ9q {\\n background: var(--color-button-background-focus);\\n}\\n\\n.Button___1-PiG:disabled,\\n.Button___1-PiG:disabled:active {\\n background: var(--color-button-background);\\n color: var(--color-button-disabled);\\n cursor: default;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Button\": \"Button___1-PiG\",\n\t\"ButtonContent\": \"ButtonContent___2mZ9q\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".OwnerStack___32qwj {\\n max-width: 100%;\\n overflow-x: auto;\\n flex: 1;\\n display: flex;\\n align-items: center;\\n position: relative;\\n}\\n\\n.Component___3e3s7,\\n.Component___3e3s7[data-reach-menu-item] {\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-normal);\\n user-select: none;\\n white-space: nowrap;\\n display: flex;\\n align-items: center;\\n}\\n\\n.Component___3e3s7[data-reach-menu-item][data-selected],\\n.Component___3e3s7[data-reach-menu-item][data-selected]:hover {\\n color: var(--color-text-selected);\\n background: var(--color-background-selected);\\n}\\n.Component___3e3s7[data-reach-menu-item][data-selected]:focus {\\n outline: none;\\n}\\n\\n.Bar___3G3dX {\\n display: flex;\\n flex: 1 1 auto;\\n overflow-x: auto;\\n}\\n\\n.VRule___IJYKJ {\\n flex: 0 0 auto;\\n height: 20px;\\n width: 1px;\\n background-color: var(--color-border);\\n margin: 0 0.5rem;\\n}\\n\\n.MenuButton___3te3U {\\n border-radius: 0.25rem;\\n display: inline-flex;\\n align-items: center;\\n padding: 0;\\n flex: 0 0 auto;\\n border: none;\\n background: var(--color-button-background);\\n color: var(--color-button);\\n}\\n.MenuButtonContent___3VvHH {\\n display: inline-flex;\\n align-items: center;\\n border-radius: 0.25rem;\\n padding: 0.25rem;\\n}\\n.MenuButton___3te3U:hover {\\n color: var(--color-button-hover);\\n}\\n.MenuButton___3te3U[aria-expanded='true'],\\n.MenuButton___3te3U[aria-expanded='true']:active {\\n color: var(--color-button-active);\\n outline: none;\\n}\\n\\n.MenuButton___3te3U:focus,\\n.MenuButtonContent___3VvHH:focus {\\n outline: none;\\n}\\n.MenuButton___3te3U:focus > .MenuButtonContent___3VvHH {\\n background: var(--color-button-background-focus);\\n}\\n\\n.Modal___8b8bs[data-reach-menu-list] {\\n display: inline-flex;\\n flex-direction: column;\\n background-color: var(--color-background);\\n color: var(--color-button);\\n padding: 0.25rem 0;\\n padding-right: 0;\\n border: 1px solid var(--color-border);\\n border-radius: 0.25rem;\\n max-height: 10rem;\\n overflow: auto;\\n\\n /* Make sure this is above the DevTools, which are above the Overlay */\\n z-index: 10000002;\\n position: relative;\\n\\n /* Reach UI tries to set its own :( */\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-normal);\\n}\\n\\n.NotInStore___3Y2P2,\\n.NotInStore___3Y2P2:hover {\\n color: var(--color-dimmest);\\n}\\n\\n.Badge___2E6aT {\\n margin-left: 0.25rem;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"OwnerStack\": \"OwnerStack___32qwj\",\n\t\"Component\": \"Component___3e3s7\",\n\t\"Bar\": \"Bar___3G3dX\",\n\t\"VRule\": \"VRule___IJYKJ\",\n\t\"MenuButton\": \"MenuButton___3te3U\",\n\t\"MenuButtonContent\": \"MenuButtonContent___3VvHH\",\n\t\"Modal\": \"Modal___8b8bs\",\n\t\"NotInStore\": \"NotInStore___3Y2P2\",\n\t\"Badge\": \"Badge___2E6aT\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Icon___v5HwN {\\n width: 1rem;\\n height: 1rem;\\n fill: currentColor;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Icon\": \"Icon___v5HwN\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".SearchInput___3_D7A {\\n flex: 1 1;\\n display: flex;\\n align-items: center;\\n}\\n\\n.Input___3Kf09 {\\n flex: 1 1 100px;\\n width: 100px;\\n font-size: var(--font-size-sans-large);\\n outline: none;\\n border: none;\\n background-color: var(--color-background);\\n color: var(--color-text);\\n padding-left: 1.5rem;\\n margin-left: -1rem;\\n}\\n\\n.InputIcon___1HrXN {\\n pointer-events: none;\\n z-index: 2;\\n color: var(--color-dimmer);\\n}\\n\\n.IndexLabel___2cd8c {\\n color: var(--color-dim);\\n font-size: var(--font-size-sans-normal);\\n white-space: pre;\\n}\\n\\n.LeftVRule___wcxjb,\\n.RightVRule___cvpx8 {\\n height: 20px;\\n width: 1px;\\n background-color: var(--color-border);\\n}\\n.LeftVRule___wcxjb {\\n margin: 0 0.25rem 0 0.5rem;\\n}\\n.RightVRule___cvpx8 {\\n margin: 0 0.5rem 0 0.25rem;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"SearchInput\": \"SearchInput___3_D7A\",\n\t\"Input\": \"Input___3Kf09\",\n\t\"InputIcon\": \"InputIcon___1HrXN\",\n\t\"IndexLabel\": \"IndexLabel___2cd8c\",\n\t\"LeftVRule\": \"LeftVRule___wcxjb\",\n\t\"RightVRule\": \"RightVRule___cvpx8\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Active___3Y5D2,\\n.Inactive___2Ddkx {\\n position: absolute;\\n left: 0;\\n width: 100%;\\n z-index: 0;\\n pointer-events: none;\\n}\\n\\n.Active___3Y5D2 {\\n background-color: var(--color-selected-tree-highlight-active);\\n}\\n\\n.Inactive___2Ddkx {\\n background-color: var(--color-selected-tree-highlight-inactive);\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Active\": \"Active___3Y5D2\",\n\t\"Inactive\": \"Inactive___2Ddkx\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Tree___3Pjje {\\n position: relative;\\n height: 100%;\\n width: 100%;\\n display: flex;\\n flex-direction: column;\\n border-top: 1px solid var(--color-border);\\n\\n /* Default size will be adjusted by Tree after scrolling */\\n --indentation-size: 12px;\\n}\\n\\n.List___qlOJG {\\n overflow-x: hidden !important;\\n}\\n\\n.InnerElementType___1csGF {\\n overflow-x: hidden;\\n}\\n\\n.SearchInput___1Q2I_ {\\n flex: 0 0 42px;\\n display: flex;\\n align-items: center;\\n border-bottom: 1px solid var(--color-border);\\n padding: 0.5rem;\\n}\\n\\n.AutoSizerWrapper___3IcMr {\\n width: 100%;\\n overflow: hidden;\\n flex: 1 0 auto;\\n}\\n.AutoSizerWrapper___3IcMr:focus {\\n outline: none;\\n}\\n\\n.List___qlOJG {\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-normal);\\n line-height: var(--line-height-data);\\n}\\n\\n.VRule___3yG5q {\\n height: 20px;\\n width: 1px;\\n margin: 0 0.5rem;\\n background-color: var(--color-border);\\n}\\n\\n.Loading___TrqnR {\\n height: 100%;\\n padding-left: 0.5rem;\\n display: flex;\\n align-items: center;\\n flex: 1;\\n justify-content: flex-start;\\n font-size: var(--font-size-sans-large);\\n color: var(--color-dim);\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Tree\": \"Tree___3Pjje\",\n\t\"List\": \"List___qlOJG\",\n\t\"InnerElementType\": \"InnerElementType___1csGF\",\n\t\"SearchInput\": \"SearchInput___1Q2I_\",\n\t\"AutoSizerWrapper\": \"AutoSizerWrapper___3IcMr\",\n\t\"VRule\": \"VRule___3yG5q\",\n\t\"Loading\": \"Loading___TrqnR\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".ErrorBoundary___24NcV {\\n height: 100%;\\n width: 100%;\\n background-color: var(--color-background);\\n padding: 0.5rem;\\n overflow: auto;\\n}\\n\\n.Header___8LGXN {\\n font-size: var(--font-size-sans-large);\\n font-weight: bold;\\n color: var(--color-error-text);\\n}\\n\\n.Stack___3-PTh {\\n margin-top: 0.5rem;\\n white-space: pre-wrap;\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-normal);\\n -webkit-font-smoothing: initial;\\n background-color: var(--color-error-background);\\n border: 1px solid var(--color-error-border);\\n color: var(--color-error-text);\\n border-radius: 0.25rem;\\n padding: 0.5rem;\\n}\\n\\n.IconAndLinkRow___orFpO {\\n display: flex;\\n align-items: center;\\n margin-top: 0.5rem;\\n color: var(--color-text);\\n}\\n\\n.RetryIcon___274aX {\\n margin-right: 0.25rem;\\n color: var(--color-button-active);\\n}\\n\\n.RetryButton___2tkCs {\\n margin-right: 0.25rem;\\n color: var(--color-text);\\n}\\n.RetryButton___2tkCs:hover {\\n color: var(--color-button-hover);\\n}\\n\\n.ReportIcon___1KI7p {\\n margin-right: 0.25rem;\\n}\\n\\n.ReportLink___vHb7P {\\n color: var(--color-link);\\n}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"ErrorBoundary\": \"ErrorBoundary___24NcV\",\n\t\"Header\": \"Header___8LGXN\",\n\t\"Stack\": \"Stack___3-PTh\",\n\t\"IconAndLinkRow\": \"IconAndLinkRow___orFpO\",\n\t\"RetryIcon\": \"RetryIcon___274aX\",\n\t\"RetryButton\": \"RetryButton___2tkCs\",\n\t\"ReportIcon\": \"ReportIcon___1KI7p\",\n\t\"ReportLink\": \"ReportLink___vHb7P\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Background___39iOi {\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n display: flex;\\n align-items: flex-start;\\n justify-content: center;\\n padding: 1rem;\\n background-color: var(--color-modal-background);\\n overflow: auto;\\n}\\n\\n.Dialog___2XI77 {\\n position: relative;\\n z-index: 3;\\n width: 25rem;\\n min-width: 20rem;\\n max-width: 100%;\\n display: inline-block;\\n background-color: var(--color-background);\\n box-shadow: 0 2px 4px var(--color-shadow);\\n padding: 0.5rem;\\n border: 1px solid var(--color-border);\\n border-radius: 0.25rem;\\n font-size: var(--font-size-sans-normal);\\n}\\n\\n.Title___1FtK3 {\\n font-size: var(--font-size-sans-large);\\n margin-bottom: 0.5rem;\\n}\\n\\n.Buttons___3N6w8 {\\n text-align: right;\\n margin-top: 0.5rem;\\n}\\n\\n.Button___3JNc2 {\\n font-size: var(--font-size-sans-large);\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Background\": \"Background___39iOi\",\n\t\"Dialog\": \"Dialog___2XI77\",\n\t\"Title\": \"Title___1FtK3\",\n\t\"Buttons\": \"Buttons___3N6w8\",\n\t\"Button\": \"Button___3JNc2\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".ContextMenu___3Zn8W {\\n position: absolute;\\n background-color: var(--color-context-background);\\n border-radius: 0.25rem;\\n overflow: hidden;\\n z-index: 10000002;\\n}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"ContextMenu\": \"ContextMenu___3Zn8W\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".ContextMenuItem___21C_r {\\n display: flex;\\n align-items: center;\\n color: var(--color-context-text);\\n padding: 0.5rem 0.75rem;\\n cursor: default;\\n border-top: 1px solid var(--color-context-border);\\n font-family: var(--font-family-sans);\\n font-size: var(--font-size-sans-normal);\\n}\\n.ContextMenuItem___21C_r:first-of-type {\\n border-top: none;\\n}\\n.ContextMenuItem___21C_r:hover,\\n.ContextMenuItem___21C_r:focus {\\n outline: 0;\\n background-color: var(--color-context-background-hover);\\n}\\n.ContextMenuItem___21C_r:active {\\n background-color: var(--color-context-background-selected);\\n color: var(--color-context-text-selected);\\n}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"ContextMenuItem\": \"ContextMenuItem___21C_r\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".HocBadges___3V-9f {\\n padding: 0.125rem 0.25rem;\\n user-select: none;\\n}\\n\\n.Badge___yfw97 {\\n display: inline-block;\\n background-color: var(--color-component-badge-background);\\n color: var(--color-text);\\n padding: 0.125rem 0.25rem;\\n line-height: normal;\\n border-radius: 0.125rem;\\n margin-right: 0.25rem;\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-small);\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"HocBadges\": \"HocBadges___3V-9f\",\n\t\"Badge\": \"Badge___yfw97\"\n};","exports = module.exports = require(\"../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Input___2Lqoc {\\n min-width: 0.5rem;\\n flex: 1 1 auto;\\n border: none;\\n background: transparent;\\n outline: none;\\n padding: 0;\\n border: none;\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-normal);\\n}\\n\\n.Input___2Lqoc:focus {\\n border-color: var(--color-border);\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Input\": \"Input___2Lqoc\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Input___2v7pX {\\n flex: 0 1 auto;\\n box-shadow: 0px 1px 3px transparent;\\n color: var(--color-text);\\n}\\n.Input___2v7pX:focus {\\n color: var(--color-text);\\n box-shadow: 0px 1px 3px var(--color-shadow);\\n}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Input\": \"Input___2v7pX\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Checkbox___S8zDe {\\n flex: 0 0 auto;\\n align-self: center;\\n margin: 0 0.25rem;\\n}\\n\\n.Input___54okB {\\n flex: 1 1;\\n background: none;\\n border: 1px solid transparent;\\n color: var(--color-attribute-editable-value);\\n border-radius: 0.125rem;\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-normal);\\n}\\n\\n.Invalid___AR4Hd {\\n flex: 1 1;\\n background: none;\\n border: 1px solid transparent;\\n color: var(--color-attribute-editable-value);\\n border-radius: 0.125rem;\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-normal);\\n background-color: var(--color-background-invalid);\\n color: var(--color-text-invalid);\\n\\n --color-border: var(--color-text-invalid);\\n}\\n\\n.Input___54okB:focus,\\n.Invalid___AR4Hd:focus {\\n background-color: var(--color-button-background-focus);\\n outline: none;\\n}\\n\\n.ResetButton___k3gxk {\\n flex: 0 0 auto;\\n padding: 0 0.5rem;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Checkbox\": \"Checkbox___S8zDe\",\n\t\"Input\": \"Input___54okB\",\n\t\"Invalid\": \"Invalid___AR4Hd\",\n\t\"ResetButton\": \"ResetButton___k3gxk\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".NewArrayValue___3rHoU {\\n white-space: nowrap;\\n display: flex;\\n align-items: center;\\n}\\n\\n.EditableName___3OJ36 {\\n margin-left: 1rem;\\n}\\n\\n.Invalid___1sVw9 {\\n background-color: var(--color-background-invalid);\\n color: var(--color-text-invalid) !important;\\n}\\n\\n.Input___1SYGr:focus,\\n.Invalid___1sVw9:focus {\\n background-color: var(--color-button-background-focus);\\n}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"NewArrayValue\": \"NewArrayValue___3rHoU\",\n\t\"EditableName\": \"EditableName___3OJ36\",\n\t\"Invalid\": \"Invalid___1sVw9\",\n\t\"Input\": \"Input___1SYGr\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".NewKeyValue___34r7B {\\n white-space: nowrap;\\n display: flex;\\n align-items: center;\\n}\\n\\n.EditableName___2W--L {\\n margin-left: 1rem;\\n}\\n\\n.EditableValue___16Q0K {\\n min-width: 1rem;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"NewKeyValue\": \"NewKeyValue___34r7B\",\n\t\"EditableName\": \"EditableName___2W--L\",\n\t\"EditableValue\": \"EditableValue___16Q0K\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".ExpandCollapseToggle___1eSq5 {\\n flex: 0 0 1rem;\\n width: 1rem;\\n height: 1rem;\\n padding: 0;\\n color: var(--color-expand-collapse-toggle);\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"ExpandCollapseToggle\": \"ExpandCollapseToggle___1eSq5\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Item___2n2qv:not([hidden]) {\\n display: flex;\\n}\\n\\n.Name___3LSJX {\\n color: var(--color-attribute-name-not-editable);\\n flex: 0 0 auto;\\n cursor: default;\\n}\\n.EditableName___2TyRo {\\n color: var(--color-attribute-name);\\n flex: 0 0 auto;\\n cursor: default;\\n}\\n\\n.AfterName___1HlGw {\\n color: var(--color-text);\\n margin-right: 0.5rem;\\n}\\n\\n.Value___7p123 {\\n color: var(--color-attribute-value);\\n white-space: pre;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n cursor: default;\\n}\\n\\n.None___RYyex {\\n color: var(--color-dimmer);\\n font-style: italic;\\n}\\n\\n.ExpandCollapseToggleSpacer___3KNWO {\\n flex: 0 0 1rem;\\n width: 1rem;\\n}\\n\\n.Empty___1MaDj {\\n color: var(--color-dimmer);\\n}\\n\\n.DeleteArrayItemButton___1R-pd {\\n padding: 0;\\n margin-right: 0.125rem;\\n}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Item\": \"Item___2n2qv\",\n\t\"Name\": \"Name___3LSJX\",\n\t\"EditableName\": \"EditableName___2TyRo\",\n\t\"AfterName\": \"AfterName___1HlGw\",\n\t\"Value\": \"Value___7p123\",\n\t\"None\": \"None___RYyex\",\n\t\"ExpandCollapseToggleSpacer\": \"ExpandCollapseToggleSpacer___3KNWO\",\n\t\"Empty\": \"Empty___1MaDj\",\n\t\"DeleteArrayItemButton\": \"DeleteArrayItemButton___1R-pd\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".InspectedElementTree___2_4hD {\\n padding: 0.25rem;\\n border-top: 1px solid var(--color-border);\\n}\\n.InspectedElementTree___2_4hD:first-of-type {\\n border-top: none;\\n}\\n\\n.HeaderRow___3I5kU {\\n display: flex;\\n align-items: center;\\n}\\n\\n.Header___2LZLy {\\n flex: 1 1;\\n font-family: var(--font-family-sans);\\n}\\n\\n.Item___3t7sh {\\n display: flex;\\n}\\n\\n.Name___6619F {\\n color: var(--color-attribute-name);\\n flex: 0 0 auto;\\n}\\n.Name___6619F:after {\\n content: ': ';\\n color: var(--color-text);\\n margin-right: 0.5rem;\\n}\\n\\n.Value___na2y1 {\\n color: var(--color-attribute-value);\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n\\n.None___1ezJC {\\n color: var(--color-dimmer);\\n font-style: italic;\\n}\\n\\n.Empty___2hAqe {\\n color: var(--color-dimmer);\\n font-style: italic;\\n padding-left: 0.75rem;\\n}\\n\\n.ToggleSuspenseRow___3Abo4 {\\n padding-left: 1rem;\\n white-space: nowrap;\\n display: flex;\\n align-items: center;\\n}\\n\\n.EditableValue___2B5lx {\\n min-width: 1rem;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"InspectedElementTree\": \"InspectedElementTree___2_4hD\",\n\t\"HeaderRow\": \"HeaderRow___3I5kU\",\n\t\"Header\": \"Header___2LZLy\",\n\t\"Item\": \"Item___3t7sh\",\n\t\"Name\": \"Name___6619F\",\n\t\"Value\": \"Value___na2y1\",\n\t\"None\": \"None___1ezJC\",\n\t\"Empty\": \"Empty___2hAqe\",\n\t\"ToggleSuspenseRow\": \"ToggleSuspenseRow___3Abo4\",\n\t\"EditableValue\": \"EditableValue___2B5lx\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".HooksTreeView___3YmZw {\\n padding: 0.25rem;\\n border-top: 1px solid var(--color-border);\\n}\\n\\n.Hook___SbvM_ {\\n}\\n\\n.Children___1f8xt {\\n padding-left: 1rem;\\n}\\n\\n.HeaderRow___37mMe {\\n display: flex;\\n align-items: center;\\n}\\n\\n.Header___9n-jL {\\n flex: 1 1;\\n font-family: var(--font-family-sans);\\n}\\n\\n.NameValueRow___1dbuI {\\n display: flex;\\n}\\n\\n.Name___3oYR1,\\n.NameAnonymous___W-cy2 {\\n flex: 0 0 auto;\\n cursor: default;\\n}\\n.Name___3oYR1 {\\n color: var(--color-dim);\\n}\\n.NameAnonymous___W-cy2 {\\n color: var(--color-dimmer);\\n}\\n\\n.EditableName___1m4Hy {\\n color: var(--color-attribute-name);\\n flex: 0 0 auto;\\n cursor: default;\\n}\\n.EditableName___1m4Hy:after,\\n.Name___3oYR1:after {\\n color: var(--color-text);\\n content: ': ';\\n margin-right: 0.5rem;\\n}\\n\\n.Value___3tDyC {\\n color: var(--color-attribute-value);\\n overflow: hidden;\\n text-overflow: ellipsis;\\n cursor: default;\\n white-space: nowrap;\\n}\\n\\n.None___dHntG {\\n color: var(--color-dimmer);\\n font-style: italic;\\n}\\n\\n.TruncationIndicator___fImBc {\\n color: var(--color-dimmer);\\n}\\n\\n.ExpandCollapseToggleSpacer___2RAvX {\\n flex: 0 0 1rem;\\n width: 1rem;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"HooksTreeView\": \"HooksTreeView___3YmZw\",\n\t\"Hook\": \"Hook___SbvM_\",\n\t\"Children\": \"Children___1f8xt\",\n\t\"HeaderRow\": \"HeaderRow___37mMe\",\n\t\"Header\": \"Header___9n-jL\",\n\t\"NameValueRow\": \"NameValueRow___1dbuI\",\n\t\"Name\": \"Name___3oYR1\",\n\t\"NameAnonymous\": \"NameAnonymous___W-cy2\",\n\t\"EditableName\": \"EditableName___1m4Hy\",\n\t\"Value\": \"Value___3tDyC\",\n\t\"None\": \"None___dHntG\",\n\t\"TruncationIndicator\": \"TruncationIndicator___fImBc\",\n\t\"ExpandCollapseToggleSpacer\": \"ExpandCollapseToggleSpacer___2RAvX\"\n};","exports = module.exports = require(\"../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".LayoutViewer___215Ad {\\n padding: 0.25rem;\\n border-top: 1px solid var(--color-border);\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-small);\\n}\\n\\n.Header___YXSRg {\\n font-family: var(--font-family-sans);\\n}\\n\\n.DashedBox___i8dxS,\\n.SolidBox___1W-UG {\\n flex: 1 1 auto;\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n border-width: 1px;\\n border-color: var(--color-dim);\\n padding: 0.25rem;\\n margin: 0.25rem;\\n}\\n.DashedBox___i8dxS {\\n border-style: dashed;\\n}\\n.SolidBox___1W-UG {\\n border-style: solid;\\n}\\n\\n.LabelRow___2SQOh {\\n width: 100%;\\n position: relative;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n.Label___IskVY {\\n position: absolute;\\n left: 0.5rem;\\n flex: 1 0 100px;\\n color: var(--color-attribute-name);\\n}\\n\\n.BoxRow___2_1as {\\n width: 100%;\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LayoutViewer\": \"LayoutViewer___215Ad\",\n\t\"Header\": \"Header___YXSRg\",\n\t\"DashedBox\": \"DashedBox___i8dxS\",\n\t\"SolidBox\": \"SolidBox___1W-UG\",\n\t\"LabelRow\": \"LabelRow___2SQOh\",\n\t\"Label\": \"Label___IskVY\",\n\t\"BoxRow\": \"BoxRow___2_1as\"\n};","exports = module.exports = require(\"../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".StyleEditor___1RvzE {\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-normal);\\n padding: 0.25rem;\\n border-top: 1px solid var(--color-border);\\n}\\n\\n.HeaderRow___xyA6t {\\n display: flex;\\n align-items: center;\\n}\\n\\n.Header___2SGfE {\\n flex: 1 1;\\n}\\n\\n.Brackets___2zA4K {\\n font-family: var(--font-family-sans);\\n font-size: var(--font-size-sans-small);\\n}\\n\\n.Row___3v8mp {\\n white-space: nowrap;\\n padding-left: 1rem;\\n display: flex;\\n align-items: center;\\n}\\n\\n.Invalid___3ogBH {\\n background-color: var(--color-background-invalid);\\n color: var(--color-text-invalid);\\n\\n --color-border: var(--color-text-invalid);\\n}\\n.Attribute___2yC0c {\\n color: var(--color-attribute-name);\\n}\\n\\n.Value___1yJUg {\\n color: var(--color-attribute-value);\\n}\\n\\n.Input___3Zdnf {\\n flex: 0 1 auto;\\n padding: 1px;\\n box-shadow: 0px 1px 3px transparent;\\n}\\n.Input___3Zdnf:focus {\\n color: var(--color-text);\\n box-shadow: 0px 1px 3px var(--color-shadow);\\n}\\n\\n.Empty___3Pi3w {\\n color: var(--color-dimmer);\\n font-style: italic;\\n user-select: none;\\n padding-left: 1rem;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"StyleEditor\": \"StyleEditor___1RvzE\",\n\t\"HeaderRow\": \"HeaderRow___xyA6t\",\n\t\"Header\": \"Header___2SGfE\",\n\t\"Brackets\": \"Brackets___2zA4K\",\n\t\"Row\": \"Row___3v8mp\",\n\t\"Invalid\": \"Invalid___3ogBH\",\n\t\"Attribute\": \"Attribute___2yC0c\",\n\t\"Value\": \"Value___1yJUg\",\n\t\"Input\": \"Input___3Zdnf\",\n\t\"Empty\": \"Empty___3Pi3w\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Owners___13tPI {\\n padding: 0.25rem;\\n border-top: 1px solid var(--color-border);\\n}\\n\\n.OwnersHeader___3Yv3d {\\n font-family: var(--font-family-sans);\\n}\\n\\n.Source____5R8o {\\n padding: 0.25rem;\\n border-top: 1px solid var(--color-border);\\n}\\n\\n.SourceHeaderRow___2mf8O {\\n display: flex;\\n align-items: center;\\n}\\n\\n.SourceHeader___3eTnC {\\n flex: 1 1;\\n font-family: var(--font-family-sans);\\n}\\n\\n.SourceOneLiner___1CmzZ {\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-normal);\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n max-width: 100%;\\n margin-left: 1rem;\\n}\\n\\n.Owner___3pCT- {\\n color: var(--color-component-name);\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-normal);\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n max-width: 100%;\\n}\\n\\n.InspectedElement___AIaEa {\\n overflow-x: hidden;\\n overflow-y: auto;\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-normal);\\n line-height: var(--line-height-data);\\n}\\n\\n.Owner___3pCT- {\\n border-radius: 0.25rem;\\n padding: 0.125rem 0.25rem;\\n background: none;\\n border: none;\\n display: block;\\n}\\n.Owner___3pCT-:focus {\\n outline: none;\\n background-color: var(--color-button-background-focus);\\n}\\n\\n.NotInStore___1AhKj {\\n color: var(--color-dim);\\n cursor: default;\\n}\\n\\n.OwnerButton___1ZvI9 {\\n cursor: pointer;\\n width: 100%;\\n padding: 0;\\n}\\n\\n.OwnerContent___1S1aF {\\n display: flex;\\n align-items: center;\\n padding-left: 1rem;\\n width: 100%;\\n border-radius: 0.25rem;\\n}\\n\\n.OwnerContent___1S1aF:hover {\\n background-color: var(--color-background-hover);\\n}\\n\\n.ContextMenuIcon___2EG7W {\\n margin-right: 0.5rem;\\n}\\n\\n.OwnersMetaField___ot46- {\\n padding-left: 1.25rem;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Owners\": \"Owners___13tPI\",\n\t\"OwnersHeader\": \"OwnersHeader___3Yv3d\",\n\t\"Source\": \"Source____5R8o\",\n\t\"SourceHeaderRow\": \"SourceHeaderRow___2mf8O\",\n\t\"SourceHeader\": \"SourceHeader___3eTnC\",\n\t\"SourceOneLiner\": \"SourceOneLiner___1CmzZ\",\n\t\"Owner\": \"Owner___3pCT-\",\n\t\"InspectedElement\": \"InspectedElement___AIaEa\",\n\t\"NotInStore\": \"NotInStore___1AhKj\",\n\t\"OwnerButton\": \"OwnerButton___1ZvI9\",\n\t\"OwnerContent\": \"OwnerContent___1S1aF\",\n\t\"ContextMenuIcon\": \"ContextMenuIcon___2EG7W\",\n\t\"OwnersMetaField\": \"OwnersMetaField___ot46-\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".InspectedElement___gy6ot {\\n display: flex;\\n flex-direction: column;\\n height: 100%;\\n width: 100%;\\n border-left: 1px solid var(--color-border);\\n border-top: 1px solid var(--color-border);\\n}\\n\\n.TitleRow___2UUrj {\\n flex: 0 0 42px;\\n display: flex;\\n align-items: center;\\n font-size: var(--font-size-monospace-large);\\n border-bottom: 1px solid var(--color-border);\\n padding: 0.5rem;\\n}\\n\\n.Key___1eadz {\\n flex: 0 1 auto;\\n padding-left: 0.25rem;\\n padding-right: 0.125rem;\\n line-height: 1rem;\\n border-top-left-radius: 0.125rem;\\n border-bottom-left-radius: 0.125rem;\\n display: inline-block;\\n background-color: var(--color-component-badge-background);\\n color: var(--color-text);\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-small);\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n max-width: 100%;\\n}\\n\\n.KeyArrow___2TKpc {\\n height: 1rem;\\n width: 1rem;\\n margin-right: -0.25rem;\\n border: 0.5rem solid transparent;\\n border-left: 0.5rem solid var(--color-component-badge-background);\\n}\\n\\n.SelectedComponentName___3ByrZ {\\n flex: 1 1 auto;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n line-height: normal;\\n}\\n\\n.Component___No3ti {\\n flex: 1 1 auto;\\n color: var(--color-component-name);\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-normal);\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n max-width: 100%;\\n}\\n\\n.Loading___1cYSg {\\n padding: 0.25rem;\\n color: var(--color-dimmer);\\n font-style: italic;\\n}\\n\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"InspectedElement\": \"InspectedElement___gy6ot\",\n\t\"TitleRow\": \"TitleRow___2UUrj\",\n\t\"Key\": \"Key___1eadz\",\n\t\"KeyArrow\": \"KeyArrow___2TKpc\",\n\t\"SelectedComponentName\": \"SelectedComponentName___3ByrZ\",\n\t\"Component\": \"Component___No3ti\",\n\t\"Loading\": \"Loading___1cYSg\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Tab___20JoC,\\n.TabCurrent___b4c3L,\\n.TabDisabled___l1-ZF {\\n height: 100%;\\n display: flex;\\n align-items: center;\\n cursor: pointer;\\n border-top: 3px solid transparent;\\n border-bottom: 3px solid transparent;\\n user-select: none;\\n color: var(--color-text);\\n\\n /* Electron drag area */\\n -webkit-app-region: no-drag;\\n}\\n.Tab___20JoC:hover,\\n.TabCurrent___b4c3L:hover {\\n background-color: var(--color-background-hover);\\n}\\n.Tab___20JoC:focus-within,\\n.TabCurrent___b4c3L:focus-within {\\n background-color: var(--color-background-hover);\\n}\\n\\n.TabCurrent___b4c3L {\\n border-bottom: 3px solid var(--color-tab-selected-border);\\n}\\n\\n.TabDisabled___l1-ZF {\\n color: var(--color-dim);\\n cursor: default;\\n}\\n\\n.TabSizeNavigation___2GG1g {\\n font-size: var(--font-size-sans-large);\\n padding: 0.5rem 1rem;\\n}\\n.TabSizeProfiler___2wFBf {\\n font-size: var(--font-size-sans-normal);\\n padding: 0.25rem 0.5rem;\\n}\\n.TabSizeSettings___3V4f9 {\\n font-size: var(--font-size-sans-normal);\\n padding: 0.25rem 0.5rem;\\n}\\n\\n.Input___2unCl {\\n width: 0;\\n margin: 0;\\n opacity: 0;\\n}\\n\\n.IconSizeNavigation___mZIpl,\\n.IconSizeProfiler___1jYXs,\\n.IconSizeSettings___1HNRk {\\n margin-right: 0.5rem;\\n color: var(--color-button-active);\\n}\\n\\n.IconDisabled___17Sd2 {\\n color: var(--color-dim);\\n}\\n\\n.IconSizeNavigation___mZIpl {\\n width: 1.5rem;\\n height: 1.5rem;\\n}\\n.IconSizeProfiler___1jYXs {\\n width: 1rem;\\n height: 1rem;\\n}\\n.IconSizeSettings___1HNRk {\\n width: 1rem;\\n height: 1rem;\\n}\\n\\n.TabLabelNavigation___2q3j3,\\n.TabLabelProfiler___2QHeh,\\n.TabLabelSettings___1pDKr {\\n}\\n\\n@media screen and (max-width: 525px) {\\n .IconSizeNavigation___mZIpl {\\n margin-right: 0;\\n }\\n\\n .TabLabelNavigation___2q3j3 {\\n display: none;\\n }\\n}\\n\\n@media screen and (max-width: 900px) {\\n .TabLabelProfiler___2QHeh {\\n display: none;\\n }\\n\\n .IconSizeProfiler___1jYXs {\\n margin-right: 0;\\n }\\n}\\n\\n@media screen and (max-width: 400px) {\\n .TabLabelSettings___1pDKr {\\n display: none;\\n }\\n\\n .IconSizeSettings___1HNRk {\\n margin-right: 0;\\n }\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Tab\": \"Tab___20JoC\",\n\t\"TabCurrent\": \"TabCurrent___b4c3L\",\n\t\"TabDisabled\": \"TabDisabled___l1-ZF\",\n\t\"TabSizeNavigation\": \"TabSizeNavigation___2GG1g\",\n\t\"TabSizeProfiler\": \"TabSizeProfiler___2wFBf\",\n\t\"TabSizeSettings\": \"TabSizeSettings___3V4f9\",\n\t\"Input\": \"Input___2unCl\",\n\t\"IconSizeNavigation\": \"IconSizeNavigation___mZIpl\",\n\t\"IconSizeProfiler\": \"IconSizeProfiler___1jYXs\",\n\t\"IconSizeSettings\": \"IconSizeSettings___1HNRk\",\n\t\"IconDisabled\": \"IconDisabled___17Sd2\",\n\t\"TabLabelNavigation\": \"TabLabelNavigation___2q3j3\",\n\t\"TabLabelProfiler\": \"TabLabelProfiler___2QHeh\",\n\t\"TabLabelSettings\": \"TabLabelSettings___1pDKr\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Settings___29B2k {\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n justify-content: flex-start;\\n font-family: var(--font-family-sans);\\n font-size: var(--font-size-sans-normal);\\n}\\n\\n.Setting___1NJgU {\\n margin-bottom: 0.5rem;\\n}\\n.Setting___1NJgU:last-of-type {\\n margin-bottom: 0;\\n}\\n\\n.OptionGroup___2ZgHP {\\n display: inline-flex;\\n flex-direction: row;\\n align-items: center;\\n user-select: none;\\n margin: 0 1rem 0.5rem 0;\\n}\\n.OptionGroup___2ZgHP:last-of-type {\\n margin-right: 0;\\n}\\n\\n.RadioLabel___1oyOB {\\n display: inline;\\n margin-right: 0.5rem;\\n}\\n\\n.Select___1otXV {\\n}\\n\\n.CheckboxOption___2XWVZ {\\n display: block;\\n padding: 0 0 0.5rem;\\n}\\n\\n.HRule___1h4ad {\\n height: 1px;\\n background-color: var(--color-border);\\n width: 100%;\\n border: none;\\n margin: 0.5rem 0;\\n}\\n\\n.Header___NGIlt {\\n font-size: var(--font-size-sans-large);\\n margin-top: 0.5rem;\\n}\\n\\n.ButtonIcon___3ZAjp {\\n margin-right: 0.25rem;\\n}\\n\\n.NoFiltersCell___1WYR2 {\\n padding: 0.25rem 0;\\n color: var(--color-dim);\\n}\\n\\n.Table___2srES {\\n min-width: 20rem;\\n margin-top: 0.5rem;\\n border-spacing: 0;\\n}\\n\\n.TableRow___3kYuW {\\n padding-bottom: 0.5rem;\\n}\\n\\n.TableCell___1yj52 {\\n padding: 0;\\n padding-right: 0.5rem;\\n}\\n.TableCell___1yj52:last-of-type {\\n text-align: right;\\n padding-right: 0;\\n}\\n\\n.Input___I9AdA {\\n border: 1px solid var(--color-border);\\n border-radius: 0.125rem;\\n padding: 0.125rem;\\n}\\n\\n.InvalidRegExp___35lmE,\\n.InvalidRegExp___35lmE:active,\\n.InvalidRegExp___35lmE:focus,\\n.InvalidRegExp___35lmE:hover {\\n color: var(--color-value-invalid);\\n}\\n\\n.ToggleOffInvalid___2Rg2K,\\n.ToggleOnInvalid___1Kamt,\\n.ToggleOff___3cr6E,\\n.ToggleOn___3KAVB {\\n border-radius: 0.75rem;\\n width: 1rem;\\n height: 0.625rem;\\n display: flex;\\n align-items: center;\\n padding: 0.125rem;\\n}\\n.ToggleOffInvalid___2Rg2K {\\n background-color: var(--color-toggle-background-invalid);\\n justify-content: flex-start;\\n}\\n.ToggleOnInvalid___1Kamt {\\n background-color: var(--color-toggle-background-invalid);\\n justify-content: flex-end;\\n}\\n.ToggleOff___3cr6E {\\n background-color: var(--color-toggle-background-off);\\n justify-content: flex-start;\\n}\\n.ToggleOn___3KAVB {\\n background-color: var(--color-toggle-background-on);\\n justify-content: flex-end;\\n}\\n\\n.ToggleInsideOff___1pXcm,\\n.ToggleInsideOn___3kEsU {\\n border-radius: 0.375rem;\\n width: 0.375rem;\\n height: 0.375rem;\\n background-color: var(--color-toggle-text);\\n}\\n\\n.ReleaseNotes___q8NY1 {\\n width: 100%;\\n background-color: var(--color-background-hover);\\n padding: 0.25rem 0.5rem;\\n border-radius: 0.25rem;\\n}\\n\\n.ReleaseNotesLink___2gjE8 {\\n color: var(--color-button-active);\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Settings\": \"Settings___29B2k\",\n\t\"Setting\": \"Setting___1NJgU\",\n\t\"OptionGroup\": \"OptionGroup___2ZgHP\",\n\t\"RadioLabel\": \"RadioLabel___1oyOB\",\n\t\"Select\": \"Select___1otXV\",\n\t\"CheckboxOption\": \"CheckboxOption___2XWVZ\",\n\t\"HRule\": \"HRule___1h4ad\",\n\t\"Header\": \"Header___NGIlt\",\n\t\"ButtonIcon\": \"ButtonIcon___3ZAjp\",\n\t\"NoFiltersCell\": \"NoFiltersCell___1WYR2\",\n\t\"Table\": \"Table___2srES\",\n\t\"TableRow\": \"TableRow___3kYuW\",\n\t\"TableCell\": \"TableCell___1yj52\",\n\t\"Input\": \"Input___I9AdA\",\n\t\"InvalidRegExp\": \"InvalidRegExp___35lmE\",\n\t\"ToggleOffInvalid\": \"ToggleOffInvalid___2Rg2K\",\n\t\"ToggleOnInvalid\": \"ToggleOnInvalid___1Kamt\",\n\t\"ToggleOff\": \"ToggleOff___3cr6E\",\n\t\"ToggleOn\": \"ToggleOn___3KAVB\",\n\t\"ToggleInsideOff\": \"ToggleInsideOff___1pXcm\",\n\t\"ToggleInsideOn\": \"ToggleInsideOn___3kEsU\",\n\t\"ReleaseNotes\": \"ReleaseNotes___q8NY1\",\n\t\"ReleaseNotesLink\": \"ReleaseNotesLink___2gjE8\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Background___3ncIs {\\n position: absolute;\\n z-index: 3;\\n width: 100%;\\n top: 0;\\n bottom: 0;\\n background-color: var(--color-modal-background);\\n display: flex;\\n align-items: flex-start;\\n justify-content: center;\\n font-size: var(--font-size-sans-normal);\\n padding: 1rem;\\n}\\n\\n.Modal___rU10h {\\n display: flex;\\n flex-direction: column;\\n flex: 0 1 auto;\\n max-height: 100%;\\n background-color: var(--color-background);\\n border: 1px solid var(--color-border);\\n box-shadow: 0 2px 4px var(--color-shadow);\\n border-radius: 0.25rem;\\n overflow: auto;\\n width: 400px;\\n max-width: 100%;\\n}\\n\\n.Spacer___3_C0y {\\n flex: 1;\\n}\\n\\n.Tabs___3mQky {\\n display: flex;\\n flex-direction: row;\\n border-bottom: 1px solid var(--color-border);\\n padding-right: 0.25rem;\\n flex: 0 0 auto;\\n}\\n\\n.Content___2YU9A {\\n padding: 0.5rem;\\n flex: 0 1 auto;\\n overflow: auto;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Background\": \"Background___3ncIs\",\n\t\"Modal\": \"Modal___rU10h\",\n\t\"Spacer\": \"Spacer___3_C0y\",\n\t\"Tabs\": \"Tabs___3mQky\",\n\t\"Content\": \"Content___2YU9A\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Components___MlQHS {\\n position: relative;\\n width: 100%;\\n height: 100%;\\n display: flex;\\n flex-direction: row;\\n background-color: var(--color-background);\\n color: var(--color-text);\\n font-family: var(--font-family-sans);\\n}\\n\\n.Components___MlQHS, .Components___MlQHS * {\\n box-sizing: border-box;\\n -webkit-font-smoothing: var(--font-smoothing);\\n}\\n\\n.TreeWrapper___2uPTC {\\n flex: 0 0 var(--horizontal-resize-percentage);\\n overflow: auto;\\n}\\n\\n.InspectedElementWrapper___Ay-WL {\\n flex: 1 1 35%;\\n overflow-x: hidden;\\n overflow-y: auto;\\n}\\n\\n.ResizeBarWrapper___2jVIz {\\n flex: 0 0 0px;\\n position: relative;\\n}\\n\\n.ResizeBar___1o6VK {\\n position: absolute;\\n left: -2px;\\n width: 5px;\\n height: 100%;\\n cursor: ew-resize;\\n}\\n\\n@media screen and (max-width: 600px) {\\n .Components___MlQHS {\\n flex-direction: column;\\n }\\n\\n .TreeWrapper___2uPTC {\\n flex: 0 0 var(--vertical-resize-percentage);\\n }\\n\\n .InspectedElementWrapper___Ay-WL {\\n flex: 1 1 50%;\\n }\\n\\n .ResizeBar___1o6VK {\\n top: -2px;\\n left: 0;\\n width: 100%;\\n height: 5px;\\n cursor: ns-resize;\\n }\\n}\\n\\n.Loading___Slif- {\\n height: 100%;\\n padding-left: 0.5rem;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n font-size: var(--font-size-sans-large);\\n color: var(--color-dim);\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Components\": \"Components___MlQHS\",\n\t\"TreeWrapper\": \"TreeWrapper___2uPTC\",\n\t\"InspectedElementWrapper\": \"InspectedElementWrapper___Ay-WL\",\n\t\"ResizeBarWrapper\": \"ResizeBarWrapper___2jVIz\",\n\t\"ResizeBar\": \"ResizeBar___1o6VK\",\n\t\"Loading\": \"Loading___Slif-\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".NoCommitData___2oJ_z {\\n width: 100%;\\n height: 100%;\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n.Header___1oGeD {\\n font-size: var(--font-size-sans-large);\\n margin-bottom: 0.5rem;\\n}\\n\\n.FilterMessage___1Yg5n {\\n display: flex;\\n align-items: center;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"NoCommitData\": \"NoCommitData___2oJ_z\",\n\t\"Header\": \"Header___1oGeD\",\n\t\"FilterMessage\": \"FilterMessage___1Yg5n\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Group___2hArG {\\n transition: all ease-in-out 250ms;\\n}\\n\\n.Rect___fBfs_ {\\n cursor: pointer;\\n stroke: var(--color-background);\\n transition: all ease-in-out 250ms;\\n}\\n\\n.ForeignObject___2EdVc {\\n pointer-events: none;\\n transition: all ease-in-out 250ms;\\n}\\n\\n.Div___1Pgrm {\\n pointer-events: none;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n overflow: hidden;\\n font-family: var(--font-family-sans);\\n font-size: var(--font-size-sans-normal);\\n margin-left: 0.25rem;\\n margin-right: 0.25rem;\\n line-height: 1.5;\\n padding: 0 0 0;\\n font-weight: 400;\\n color: var(--color-commit-gradient-text);\\n text-align: left;\\n transition: all ease-in-out 250ms;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Group\": \"Group___2hArG\",\n\t\"Rect\": \"Rect___fBfs_\",\n\t\"ForeignObject\": \"ForeignObject___2EdVc\",\n\t\"Div\": \"Div___1Pgrm\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Component___3ci_S {\\n margin-bottom: 0.5rem;\\n}\\n\\n.Item___2hxYk {\\n margin-top: 0.25rem;\\n}\\n\\n.Key___1tUd1 {\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-small);\\n line-height: 1;\\n}\\n\\n.Key___1tUd1:first-of-type::before {\\n content: ' (';\\n}\\n\\n.Key___1tUd1::after {\\n content: ', ';\\n}\\n\\n.Key___1tUd1:last-of-type::after {\\n content: ')';\\n}\\n\\n.Label___2zyeV {\\n font-weight: bold;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Component\": \"Component___3ci_S\",\n\t\"Item\": \"Item___2hxYk\",\n\t\"Key\": \"Key___1tUd1\",\n\t\"Label\": \"Label___2zyeV\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Toolbar___3u3I_ {\\n padding: 0.25rem 0;\\n margin-bottom: 0.25rem;\\n flex: 0 0 auto;\\n display: flex;\\n align-items: center;\\n border-bottom: 1px solid var(--color-border);\\n}\\n\\n.Content___3i3NJ {\\n user-select: none;\\n overflow-y: auto;\\n}\\n\\n.Component___Y5kFG {\\n flex: 1;\\n font-weight: bold;\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-normal);\\n white-space: nowrap;\\n overflow-x: hidden;\\n text-overflow: ellipsis;\\n}\\n\\n.Label___3g1xf {\\n font-weight: bold;\\n}\\n\\n.CurrentCommit___21fVV {\\n margin: 0.25rem 0;\\n display: block;\\n width: 100%;\\n text-align: left;\\n background: none;\\n border: none;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Toolbar\": \"Toolbar___3u3I_\",\n\t\"Content\": \"Content___3i3NJ\",\n\t\"Component\": \"Component___Y5kFG\",\n\t\"Label\": \"Label___3g1xf\",\n\t\"CurrentCommit\": \"CurrentCommit___21fVV\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Tooltip___NP68S {\\n position: absolute;\\n pointer-events: none;\\n border: none;\\n border-radius: 0.25rem;\\n padding: 0.25rem 0.5rem;\\n font-family: var(--font-family-sans);\\n font-size: 12px;\\n background-color: var(--color-tooltip-background);\\n color: var(--color-tooltip-text);\\n opacity: 1;\\n /* Make sure this is above the DevTools, which are above the Overlay */\\n z-index: 10000002;\\n}\\n\\n.Tooltip___NP68S.hidden___3rGbV {\\n opacity: 0;\\n}\\n\\n\\n.Container___3aJAm {\\n width: -moz-max-content;\\n width: -webkit-max-content;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Tooltip\": \"Tooltip___NP68S\",\n\t\"hidden\": \"hidden___3rGbV\",\n\t\"Container\": \"Container___3aJAm\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Container___WYOTp {\\n width: 100%;\\n flex: 1;\\n padding: 0.5rem;\\n}\\n\\n.PatternPath___2kgd1 {\\n stroke: var(--color-commit-did-not-render-pattern);\\n stroke-width: 1;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Container\": \"Container___WYOTp\",\n\t\"PatternPath\": \"PatternPath___2kgd1\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Container___2D32U {\\n width: 100%;\\n flex: 1;\\n padding: 0.5rem;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Container\": \"Container___2D32U\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Interaction___1wkkK,\\n.SelectedInteraction___7La_q {\\n display: flex;\\n align-items: center;\\n padding: 0 0.25rem;\\n border-bottom: 1px solid var(--color-border);\\n}\\n\\n.Interaction___1wkkK:hover {\\n background-color: var(--color-background-hover);\\n}\\n\\n.SelectedInteraction___7La_q {\\n background-color: var(--color-background-hover);\\n}\\n\\n.Name___3dY_4 {\\n white-space: nowrap;\\n overflow-x: hidden;\\n text-overflow: ellipsis;\\n}\\n\\n.Timeline___O0RIy {\\n position: relative;\\n height: 100%;\\n}\\n\\n.InteractionLine___r6F9K {\\n position: absolute;\\n height: 3px;\\n background-color: var(--color-commit-did-not-render-fill);\\n color: var(--color-commit-did-not-render-fill-text);\\n border-radius: 0.125rem;\\n}\\n\\n.CommitBox___2Ly_w {\\n position: absolute;\\n width: var(--interaction-commit-size);\\n height: var(--interaction-commit-size);\\n background-color: var(--color-commit-did-not-render-fill);\\n color: var(--color-commit-did-not-render-fill-text);\\n cursor: pointer;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Interaction\": \"Interaction___1wkkK\",\n\t\"SelectedInteraction\": \"SelectedInteraction___7La_q\",\n\t\"Name\": \"Name___3dY_4\",\n\t\"Timeline\": \"Timeline___O0RIy\",\n\t\"InteractionLine\": \"InteractionLine___r6F9K\",\n\t\"CommitBox\": \"CommitBox___2Ly_w\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".NoInteractions___1FQiN {\\n width: 100%;\\n height: 100%;\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n.Header___26pfp {\\n font-size: var(--font-size-sans-large);\\n}\\n\\n.Link___1QIRe {\\n color: var(--color-button);\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"NoInteractions\": \"NoInteractions___1FQiN\",\n\t\"Header\": \"Header___26pfp\",\n\t\"Link\": \"Link___1QIRe\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Container___1CyNc {\\n width: 100%;\\n flex: 1;\\n padding: 0.5rem;\\n}\\n\\n.FocusTarget___3WP7F:focus {\\n outline: none;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Container\": \"Container___1CyNc\",\n\t\"FocusTarget\": \"FocusTarget___3WP7F\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Spacer___1c3sH {\\n flex: 1;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Spacer\": \"Spacer___1c3sH\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".ActiveRecordToggle___1Cpcb {\\n color: var(--color-record-active);\\n}\\n.ActiveRecordToggle___1Cpcb:hover {\\n color: var(--color-record-active);\\n}\\n.ActiveRecordToggle___1Cpcb:focus {\\n color: var(--color-record-active);\\n}\\n.ActiveRecordToggle___1Cpcb:active {\\n color: var(--color-record-hover);\\n}\\n\\n.InactiveRecordToggle___2CUtF {\\n color: var(--color-record-inactive);\\n}\\n.InactiveRecordToggle___2CUtF:hover {\\n color: var(--color-record-hover);\\n}\\n.InactiveRecordToggle___2CUtF:focus {\\n color: var(--color-record-inactive);\\n}\\n.InactiveRecordToggle___2CUtF:active {\\n color: var(--color-record-hover);\\n}\\n\\n.DisabledRecordToggle___gcsbF {\\n color: var(--color-button-disabled);\\n}\\n.DisabledRecordToggle___gcsbF:hover {\\n color: var(--color-button-disabled);\\n}\\n.DisabledRecordToggle___gcsbF:focus {\\n color: var(--color-button-disabled);\\n}\\n.DisabledRecordToggle___gcsbF:active {\\n color: var(--color-button-disabled);\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"ActiveRecordToggle\": \"ActiveRecordToggle___1Cpcb\",\n\t\"InactiveRecordToggle\": \"InactiveRecordToggle___2CUtF\",\n\t\"DisabledRecordToggle\": \"DisabledRecordToggle___gcsbF\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".VRule___2XiHw {\\n height: 20px;\\n width: 1px;\\n border-left: 1px solid var(--color-border);\\n padding-left: 0.25rem;\\n margin-left: 0.25rem;\\n}\\n\\n/**\\n * https://developer.mozilla.org/en-US/docs/Web/API/File/Using_files_from_web_applications\\n */\\n.Input___2GKA7 {\\n position: absolute !important;\\n height: 1px;\\n width: 1px;\\n overflow: hidden;\\n clip: rect(1px, 1px, 1px, 1px);\\n}\\n\\n.ErrorMessage___3yR0b {\\n margin: 0.5rem 0;\\n color: var(--color-dim);\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-normal);\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"VRule\": \"VRule___2XiHw\",\n\t\"Input\": \"Input___2GKA7\",\n\t\"ErrorMessage\": \"ErrorMessage___3yR0b\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Outer___2YMUU {\\n user-select: none;\\n cursor: pointer;\\n border-bottom: 3px solid transparent;\\n padding-top: 4px;\\n padding-bottom: 1px;\\n display: flex;\\n align-items: flex-end;\\n}\\n\\n.Inner___TFCLU {\\n width: 100%;\\n min-height: 5px;\\n background-color: var(--color-commit-did-not-render-fill);\\n color: var(--color-commit-did-not-render-fill-text);\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Outer\": \"Outer___2YMUU\",\n\t\"Inner\": \"Inner___TFCLU\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".List___1_Mwa {\\n /**\\n * The decision to suppress the default (horizontal) scroll bars is intentional.\\n * The snapshot selector is small enough that the scrollbar renders it essentially useless.\\n * There are two alternative navigation mechanisms (arrow keys and arrow buttons).\\n * If necessary, we could also expand the click-and-drag mechanism to scroll.\\n */\\n overflow-x: hidden !important;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"List\": \"List___1_Mwa\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Button___7tgtJ {\\n flex: 0 0 auto;\\n margin-left: 0.25rem;\\n}\\n\\n.Commits___2KF5W {\\n height: 100%;\\n min-width: 30px;\\n margin-left: 0.25rem;\\n overflow: hidden;\\n}\\n.Commits___2KF5W:focus {\\n outline: none;\\n background-color: var(--color-button-background-focus);\\n}\\n\\n.IndexLabel___36CS7 {\\n flex: 0 0 auto;\\n white-space: nowrap;\\n font-family: var(--font-family-monospace);\\n margin-left: 0.25rem;\\n}\\n\\n.NoCommits___3GzV1 {\\n height: 100%;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n color: var(--color-dim);\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Button\": \"Button___7tgtJ\",\n\t\"Commits\": \"Commits___2KF5W\",\n\t\"IndexLabel\": \"IndexLabel___36CS7\",\n\t\"NoCommits\": \"NoCommits___3GzV1\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Toolbar___CuJgF {\\n height: 2.25rem;\\n padding: 0 0.5rem;\\n flex: 0 0 auto;\\n display: flex;\\n align-items: center;\\n border-bottom: 1px solid var(--color-border);\\n}\\n\\n.Content___2tGS0 {\\n padding: 0.5rem;\\n user-select: none;\\n overflow: auto;\\n}\\n\\n.List___2AC9R {\\n list-style: none;\\n margin: 0;\\n padding: 0;\\n}\\n\\n.ListItem___2wzT0 {\\n margin: 0 0 0.5rem;\\n}\\n\\n.NoInteractions___2-rNG {\\n color: var(--color-dim);\\n}\\n\\n.Interactions___2JjM3 {\\n margin: 0 0 0.5rem;\\n}\\n.Interaction___2_WfJ {\\n display: block;\\n width: 100%;\\n text-align: left;\\n background: none;\\n border: none;\\n padding: 0.25rem 0.5rem;\\n color: var(--color-text);\\n}\\n.Interaction___2_WfJ:focus,\\n.Interaction___2_WfJ:hover {\\n outline: none;\\n background-color: var(--color-background-hover);\\n}\\n\\n.Label___3KINM {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n font-weight: bold;\\n}\\n\\n.Value___3wrFP {\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-normal);\\n}\\n\\n.NothingSelected___2Sj9L {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n height: 100%;\\n color: var(--color-dim);\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Toolbar\": \"Toolbar___CuJgF\",\n\t\"Content\": \"Content___2tGS0\",\n\t\"List\": \"List___2AC9R\",\n\t\"ListItem\": \"ListItem___2wzT0\",\n\t\"NoInteractions\": \"NoInteractions___2-rNG\",\n\t\"Interactions\": \"Interactions___2JjM3\",\n\t\"Interaction\": \"Interaction___2_WfJ\",\n\t\"Label\": \"Label___3KINM\",\n\t\"Value\": \"Value___3wrFP\",\n\t\"NothingSelected\": \"NothingSelected___2Sj9L\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Toolbar___14c8s {\\n height: 2.25rem;\\n padding: 0 0.5rem;\\n flex: 0 0 auto;\\n display: flex;\\n align-items: center;\\n}\\n\\n.Content___2Br59 {\\n padding: 0.5rem;\\n user-select: none;\\n border-top: 1px solid var(--color-border);\\n overflow: auto;\\n}\\n\\n.Name___y3sqj {\\n font-size: var(--font-size-sans-large);\\n white-space: nowrap;\\n overflow-x: hidden;\\n text-overflow: ellipsis;\\n}\\n\\n.NothingSelected___LXwMm {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n height: 100%;\\n color: var(--color-dim);\\n}\\n\\n.Commits___3dPiw {\\n font-weight: bold;\\n}\\n\\n.List___1d-dx {\\n list-style: none;\\n margin: 0;\\n padding: 0;\\n}\\n\\n.ListItem___6d_7z {\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n padding: 0.25rem 0.5rem;\\n}\\n.ListItem___6d_7z:hover {\\n background-color: var(--color-background-hover);\\n}\\n\\n.CommitBox___5r9ed {\\n width: 20px;\\n height: 20px;\\n margin-right: 0.5rem;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Toolbar\": \"Toolbar___14c8s\",\n\t\"Content\": \"Content___2Br59\",\n\t\"Name\": \"Name___y3sqj\",\n\t\"NothingSelected\": \"NothingSelected___LXwMm\",\n\t\"Commits\": \"Commits___3dPiw\",\n\t\"List\": \"List___1d-dx\",\n\t\"ListItem\": \"ListItem___6d_7z\",\n\t\"CommitBox\": \"CommitBox___5r9ed\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Toolbar___2uBS2 {\\n height: 2.25rem;\\n padding: 0 0.5rem;\\n flex: 0 0 auto;\\n display: flex;\\n align-items: center;\\n border-bottom: 1px solid var(--color-border);\\n}\\n\\n.Content___1WAA9 {\\n padding: 0.5rem;\\n user-select: none;\\n overflow-y: auto;\\n}\\n\\n.WhatChanged___3T3Sx {\\n margin-bottom: 1rem;\\n}\\n\\n.Component___1oc9o {\\n flex: 1;\\n color: var(--color-component-name);\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-normal);\\n white-space: nowrap;\\n overflow-x: hidden;\\n text-overflow: ellipsis;\\n}\\n\\n.Label___buTyu {\\n font-weight: bold;\\n margin-bottom: 0.5rem;\\n}\\n\\n.CurrentCommit___2ZAl5,\\n.Commit___2PAr5 {\\n display: block;\\n width: 100%;\\n text-align: left;\\n background: none;\\n border: none;\\n padding: 0.25rem 0.5rem;\\n color: var(--color-text);\\n}\\n\\n.Commit___2PAr5:focus,\\n.Commit___2PAr5:hover {\\n outline: none;\\n background-color: var(--color-background-hover);\\n}\\n\\n.CurrentCommit___2ZAl5 {\\n background-color: var(--color-background-selected);\\n color: var(--color-text-selected);\\n}\\n\\n.CurrentCommit___2ZAl5:focus {\\n outline: none;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Toolbar\": \"Toolbar___2uBS2\",\n\t\"Content\": \"Content___1WAA9\",\n\t\"WhatChanged\": \"WhatChanged___3T3Sx\",\n\t\"Component\": \"Component___1oc9o\",\n\t\"Label\": \"Label___buTyu\",\n\t\"CurrentCommit\": \"CurrentCommit___2ZAl5\",\n\t\"Commit\": \"Commit___2PAr5\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Profiler___20Ry4 {\\n width: 100%;\\n height: 100%;\\n position: relative;\\n display: flex;\\n flex-direction: row;\\n align-items: stretch;\\n font-family: var(--font-family-sans);\\n font-size: var(--font-size-sans-normal);\\n background-color: var(--color-background);\\n color: var(--color-text);\\n}\\n\\n.Profiler___20Ry4, .Profiler___20Ry4 * {\\n box-sizing: border-box;\\n -webkit-font-smoothing: var(--font-smoothing);\\n}\\n\\n.LeftColumn___3I7-I {\\n display: flex;\\n flex-direction: column;\\n flex: 2 1 200px;\\n border-top: 1px solid var(--color-border);\\n}\\n\\n.RightColumn___3smXD {\\n display: flex;\\n flex-direction: column;\\n flex: 1 1 100px;\\n max-width: 300px;\\n overflow-x: hidden;\\n border-left: 1px solid var(--color-border);\\n border-top: 1px solid var(--color-border);\\n}\\n\\n.Content___1LjDy {\\n position: relative;\\n flex: 1 1 auto;\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n.Column___3WWtw {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center;\\n padding: 0 1rem;\\n}\\n\\n.Paragraph___1HLty {\\n text-align: center;\\n}\\n\\n.Row___1RpSu {\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n.Header___QyJw2 {\\n font-size: var(--font-size-sans-large);\\n margin-bottom: 0.5rem;\\n}\\n\\n.Toolbar___30kHu {\\n height: 2.25rem;\\n padding: 0 0.25rem;\\n flex: 0 0 auto;\\n display: flex;\\n align-items: center;\\n border-bottom: 1px solid var(--color-border);\\n}\\n\\n.VRule___2y9G3 {\\n height: 20px;\\n width: 1px;\\n border-left: 1px solid var(--color-border);\\n padding-left: 0.25rem;\\n margin-left: 0.25rem;\\n}\\n\\n.Spacer___1sezP {\\n flex: 1;\\n}\\n\\n.StopRecordingButton___1-ElU {\\n font-size: var(--font-size-sans-large);\\n padding: 0.5rem;\\n}\\n\\n.ContentFallback___2Ata2 {\\n width: 100%;\\n height: 100%;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n font-size: var(--font-size-sans-large);\\n color: var(--color-dim);\\n}\\n\\n.SnapshotSelectorFallback___3fsFv {\\n height: 100%;\\n padding-left: 0.5rem;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n font-size: var(--font-size-sans-large);\\n color: var(--color-dim);\\n}\\n\\n.Link___mZ2LE {\\n color: var(--color-button);\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Profiler\": \"Profiler___20Ry4\",\n\t\"LeftColumn\": \"LeftColumn___3I7-I\",\n\t\"RightColumn\": \"RightColumn___3smXD\",\n\t\"Content\": \"Content___1LjDy\",\n\t\"Column\": \"Column___3WWtw\",\n\t\"Paragraph\": \"Paragraph___1HLty\",\n\t\"Row\": \"Row___1RpSu\",\n\t\"Header\": \"Header___QyJw2\",\n\t\"Toolbar\": \"Toolbar___30kHu\",\n\t\"VRule\": \"VRule___2y9G3\",\n\t\"Spacer\": \"Spacer___1sezP\",\n\t\"StopRecordingButton\": \"StopRecordingButton___1-ElU\",\n\t\"ContentFallback\": \"ContentFallback___2Ata2\",\n\t\"SnapshotSelectorFallback\": \"SnapshotSelectorFallback___3fsFv\",\n\t\"Link\": \"Link___mZ2LE\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".ReactLogo___O8zf5 {\\n width: 1.75rem;\\n height: 1.75rem;\\n margin: 0 0.75rem 0 0.25rem;\\n color: var(--color-button-active);\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"ReactLogo\": \"ReactLogo___O8zf5\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Row___3IwJ6 { \\n display: flex; \\n flex-direction: row; \\n align-items: center; \\n} \\n\\n.Column___w9Fle { \\n display: flex; \\n flex-direction: column; \\n align-items: center; \\n} \\n\\n.Title___1PTyg { \\n font-size: var(--font-size-sans-large); \\n margin-bottom: 0.5rem; \\n} \\n\\n.ReleaseNotesLink___2_Y38 { \\n color: var(--color-button-active); \\n}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Row\": \"Row___3IwJ6\",\n\t\"Column\": \"Column___w9Fle\",\n\t\"Title\": \"Title___1PTyg\",\n\t\"ReleaseNotesLink\": \"ReleaseNotesLink___2_Y38\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Command___2iS3V {\\n background-color: var(--color-dimmest);\\n padding: 0.25rem 0.5rem;\\n display: block;\\n border-radius: 0.125rem;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Command\": \"Command___2iS3V\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".DevTools___NAxvy {\\n width: 100%;\\n height: 100%;\\n display: flex;\\n flex-direction: column;\\n background-color: var(--color-background);\\n color: var(--color-text);\\n}\\n\\n.TabBar___2aDHU {\\n flex: 0 0 auto;\\n display: flex;\\n align-items: center;\\n padding: 0 0.5rem;\\n background-color: var(--color-background);\\n border-top: 1px solid var(--color-border);\\n font-family: var(--font-family-sans);\\n font-size: var(--font-size-sans-large);\\n user-select: none;\\n\\n /* Electron drag area */\\n -webkit-app-region: drag;\\n}\\n\\n.Spacer___1VPRF {\\n flex: 1;\\n}\\n\\n.TabContent___27Qz1 {\\n flex: 1 1 100%;\\n overflow: auto;\\n -webkit-app-region: no-drag;\\n}\\n\\n.DevToolsVersion___3_3UD {\\n font-size: var(--font-size-sans-normal);\\n margin-right: 0.5rem;\\n}\\n\\n.DevToolsVersion___3_3UD:before {\\n font-size: var(--font-size-sans-large);\\n content: 'DevTools ';\\n}\\n\\n@media screen and (max-width: 400px) {\\n .DevToolsVersion___3_3UD:before {\\n content: '';\\n }\\n}\\n\\n@media screen and (max-width: 300px) {\\n .DevToolsVersion___3_3UD {\\n display: none;\\n }\\n}\\n\\n.DevTools___NAxvy, .DevTools___NAxvy * {\\n box-sizing: border-box;\\n -webkit-font-smoothing: var(--font-smoothing);\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"DevTools\": \"DevTools___NAxvy\",\n\t\"TabBar\": \"TabBar___2aDHU\",\n\t\"Spacer\": \"Spacer___1VPRF\",\n\t\"TabContent\": \"TabContent___27Qz1\",\n\t\"DevToolsVersion\": \"DevToolsVersion___3_3UD\"\n};","\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./root.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./root.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!./root.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":root {\\n /**\\n * IMPORTANT: When new theme variables are added below– also add them to SettingsContext updateThemeVariables()\\n */\\n\\n /* Light theme */\\n --light-color-attribute-name: #ef6632;\\n --light-color-attribute-name-not-editable: #23272f;\\n --light-color-attribute-name-inverted: rgba(255, 255, 255, 0.7);\\n --light-color-attribute-value: #1a1aa6;\\n --light-color-attribute-value-inverted: #ffffff;\\n --light-color-attribute-editable-value: #1a1aa6;\\n --light-color-background: #ffffff;\\n --light-color-background-hover: rgba(0, 136, 250, 0.1);\\n --light-color-background-inactive: #e5e5e5;\\n --light-color-background-invalid: #fff0f0;\\n --light-color-background-selected: #0088fa;\\n --light-color-button-background: #ffffff;\\n --light-color-button-background-focus: #ededed;\\n --light-color-button: #5f6673;\\n --light-color-button-disabled: #cfd1d5;\\n --light-color-button-active: #0088fa;\\n --light-color-button-focus: #23272f;\\n --light-color-button-hover: #23272f;\\n --light-color-border: #eeeeee;\\n --light-color-commit-did-not-render-fill: #cfd1d5;\\n --light-color-commit-did-not-render-fill-text: #000000;\\n --light-color-commit-did-not-render-pattern: #cfd1d5;\\n --light-color-commit-did-not-render-pattern-text: #333333;\\n --light-color-commit-gradient-0: #37afa9;\\n --light-color-commit-gradient-1: #63b19e;\\n --light-color-commit-gradient-2: #80b393;\\n --light-color-commit-gradient-3: #97b488;\\n --light-color-commit-gradient-4: #abb67d;\\n --light-color-commit-gradient-5: #beb771;\\n --light-color-commit-gradient-6: #cfb965;\\n --light-color-commit-gradient-7: #dfba57;\\n --light-color-commit-gradient-8: #efbb49;\\n --light-color-commit-gradient-9: #febc38;\\n --light-color-commit-gradient-text: #000000;\\n --light-color-component-name: #6a51b2;\\n --light-color-component-name-inverted: #ffffff;\\n --light-color-component-badge-background: rgba(0, 0, 0, 0.1);\\n --light-color-component-badge-background-inverted: rgba(255, 255, 255, 0.25);\\n --light-color-component-badge-count: #777d88;\\n --light-color-component-badge-count-inverted: rgba(255, 255, 255, 0.7);\\n --light-color-context-background: rgba(0,0,0,.9);\\n --light-color-context-background-hover: rgba(255, 255, 255, 0.1);\\n --light-color-context-background-selected: #178fb9;\\n --light-color-context-border: #3d424a;\\n --light-color-context-text: #ffffff;\\n --light-color-context-text-selected: #ffffff;\\n --light-color-dim: #777d88;\\n --light-color-dimmer: #cfd1d5;\\n --light-color-dimmest: #eff0f1;\\n --light-color-error-background: hsl(0, 100%, 97%);\\n --light-color-error-border: hsl(0, 100%, 92%);\\n --light-color-error-text: #ff0000;\\n --light-color-expand-collapse-toggle: #777d88;\\n --light-color-link: #0000ff;\\n --light-color-modal-background: rgba(255, 255, 255, 0.75);\\n --light-color-record-active: #fc3a4b;\\n --light-color-record-hover: #3578e5;\\n --light-color-record-inactive: #0088fa;\\n --light-color-scroll-thumb: #c2c2c2;\\n --light-color-scroll-track: #fafafa;\\n --light-color-search-match: yellow;\\n --light-color-search-match-current: #f7923b;\\n --light-color-selected-tree-highlight-active: rgba(0, 136, 250, 0.1);\\n --light-color-selected-tree-highlight-inactive: rgba(0, 0, 0, 0.05);\\n --light-color-shadow: rgba(0, 0, 0, 0.25);\\n --light-color-tab-selected-border: #0088fa;\\n --light-color-text: #000000;\\n --light-color-text-invalid: #ff0000;\\n --light-color-text-selected: #ffffff;\\n --light-color-toggle-background-invalid: #fc3a4b;\\n --light-color-toggle-background-on: #0088fa;\\n --light-color-toggle-background-off: #cfd1d5;\\n --light-color-toggle-text: #ffffff;\\n --light-color-tooltip-background: rgba(0, 0, 0, 0.9);\\n --light-color-tooltip-text: #ffffff;\\n\\n /* Dark theme */\\n --dark-color-attribute-name: #9d87d2;\\n --dark-color-attribute-name-not-editable: #ededed;\\n --dark-color-attribute-name-inverted: #282828;\\n --dark-color-attribute-value: #cedae0;\\n --dark-color-attribute-value-inverted: #ffffff;\\n --dark-color-attribute-editable-value: yellow;\\n --dark-color-background: #282c34;\\n --dark-color-background-hover: rgba(255, 255, 255, 0.1);\\n --dark-color-background-inactive: #3d424a;\\n --dark-color-background-invalid: #5c0000;\\n --dark-color-background-selected: #178fb9;\\n --dark-color-button-background: #282c34;\\n --dark-color-button-background-focus: #3d424a;\\n --dark-color-button: #afb3b9;\\n --dark-color-button-active: #61dafb;\\n --dark-color-button-disabled: #4f5766;\\n --dark-color-button-focus: #a2e9fc;\\n --dark-color-button-hover: #ededed;\\n --dark-color-border: #3d424a;\\n --dark-color-commit-did-not-render-fill: #777d88;\\n --dark-color-commit-did-not-render-fill-text: #000000;\\n --dark-color-commit-did-not-render-pattern: #666c77;\\n --dark-color-commit-did-not-render-pattern-text: #ffffff;\\n --dark-color-commit-gradient-0: #37afa9;\\n --dark-color-commit-gradient-1: #63b19e;\\n --dark-color-commit-gradient-2: #80b393;\\n --dark-color-commit-gradient-3: #97b488;\\n --dark-color-commit-gradient-4: #abb67d;\\n --dark-color-commit-gradient-5: #beb771;\\n --dark-color-commit-gradient-6: #cfb965;\\n --dark-color-commit-gradient-7: #dfba57;\\n --dark-color-commit-gradient-8: #efbb49;\\n --dark-color-commit-gradient-9: #febc38;\\n --dark-color-commit-gradient-text: #000000;\\n --dark-color-component-name: #61dafb;\\n --dark-color-component-name-inverted: #282828;\\n --dark-color-component-badge-background: rgba(255, 255, 255, 0.25);\\n --dark-color-component-badge-background-inverted: rgba(0, 0, 0, 0.25);\\n --dark-color-component-badge-count: #8f949d;\\n --dark-color-component-badge-count-inverted: rgba(255, 255, 255, 0.7);\\n --dark-color-context-background: rgba(255,255,255,.9);\\n --dark-color-context-background-hover: rgba(0, 136, 250, 0.1);\\n --dark-color-context-background-selected: #0088fa;\\n --dark-color-context-border: #eeeeee;\\n --dark-color-context-text: #000000;\\n --dark-color-context-text-selected: #ffffff;\\n --dark-color-dim: #8f949d;\\n --dark-color-dimmer: #777d88;\\n --dark-color-dimmest: #4f5766;\\n --dark-color-error-background: #200;\\n --dark-color-error-border: #900;\\n --dark-color-error-text: #f55;\\n --dark-color-expand-collapse-toggle: #8f949d;\\n --dark-color-link: #61dafb;\\n --dark-color-modal-background: rgba(0, 0, 0, 0.75);\\n --dark-color-record-active: #fc3a4b;\\n --dark-color-record-hover: #a2e9fc;\\n --dark-color-record-inactive: #61dafb;\\n --dark-color-scroll-thumb: #afb3b9;\\n --dark-color-scroll-track: #313640;\\n --dark-color-search-match: yellow;\\n --dark-color-search-match-current: #f7923b;\\n --dark-color-selected-tree-highlight-active: rgba(23, 143, 185, 0.15);\\n --dark-color-selected-tree-highlight-inactive: rgba(255, 255, 255, 0.05);\\n --dark-color-shadow: rgba(0, 0, 0, 0.5);\\n --dark-color-tab-selected-border: #178fb9;\\n --dark-color-text: #ffffff;\\n --dark-color-text-invalid: #ff8080;\\n --dark-color-text-selected: #ffffff;\\n --dark-color-toggle-background-invalid: #fc3a4b;\\n --dark-color-toggle-background-on: #178fb9;\\n --dark-color-toggle-background-off: #777d88;\\n --dark-color-toggle-text: #ffffff;\\n --dark-color-tooltip-background: rgba(255, 255, 255, 0.9);\\n --dark-color-tooltip-text: #000000;\\n\\n /* Font smoothing */\\n --light-font-smoothing: auto;\\n --dark-font-smoothing: antialiased;\\n --font-smoothing: auto;\\n\\n /* Compact density */\\n --compact-font-size-monospace-small: 9px;\\n --compact-font-size-monospace-normal: 11px;\\n --compact-font-size-monospace-large: 15px;\\n --compact-font-size-sans-small: 10px;\\n --compact-font-size-sans-normal: 12px;\\n --compact-font-size-sans-large: 14px;\\n --compact-line-height-data: 18px;\\n --compact-root-font-size: 16px;\\n\\n /* Comfortable density */\\n --comfortable-font-size-monospace-small: 10px;\\n --comfortable-font-size-monospace-normal: 13px;\\n --comfortable-font-size-monospace-large: 17px;\\n --comfortable-font-size-sans-small: 12px;\\n --comfortable-font-size-sans-normal: 14px;\\n --comfortable-font-size-sans-large: 16px;\\n --comfortable-line-height-data: 22px;\\n --comfortable-root-font-size: 20px;\\n\\n /* GitHub.com system fonts */\\n --font-family-monospace: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo,\\n Courier, monospace;\\n --font-family-sans: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica,\\n Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\n\\n /* Constant values shared between JS and CSS */\\n --interaction-commit-size: 10px;\\n --interaction-label-width: 200px;\\n}\\n\", \"\"]);\n\n// exports\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nexport default class EventEmitter<Events: Object> {\n listenersMap: Map<string, Array<Function>> = new Map();\n\n addListener<Event: $Keys<Events>>(\n event: Event,\n listener: (...$ElementType<Events, Event>) => any,\n ): void {\n const listeners = this.listenersMap.get(event);\n if (listeners === undefined) {\n this.listenersMap.set(event, [listener]);\n } else {\n const index = listeners.indexOf(listener);\n if (index < 0) {\n listeners.push(listener);\n }\n }\n }\n\n emit<Event: $Keys<Events>>(\n event: Event,\n ...args: $ElementType<Events, Event>\n ): void {\n const listeners = this.listenersMap.get(event);\n if (listeners !== undefined) {\n if (listeners.length === 1) {\n // No need to clone or try/catch\n const listener = listeners[0];\n listener.apply(null, args);\n } else {\n let didThrow = false;\n let caughtError = null;\n\n const clonedListeners = Array.from(listeners);\n for (let i = 0; i < clonedListeners.length; i++) {\n const listener = clonedListeners[i];\n try {\n listener.apply(null, args);\n } catch (error) {\n if (caughtError === null) {\n didThrow = true;\n caughtError = error;\n }\n }\n }\n\n if (didThrow) {\n throw caughtError;\n }\n }\n }\n }\n\n removeAllListeners(): void {\n this.listenersMap.clear();\n }\n\n removeListener(event: $Keys<Events>, listener: Function): void {\n const listeners = this.listenersMap.get(event);\n if (listeners !== undefined) {\n const index = listeners.indexOf(listener);\n if (index >= 0) {\n listeners.splice(index, 1);\n }\n }\n }\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport EventEmitter from './events';\n\nimport type {ComponentFilter, Wall} from './types';\nimport type {\n InspectedElementPayload,\n OwnersList,\n ProfilingDataBackend,\n RendererID,\n} from 'react-devtools-shared/src/backend/types';\nimport type {StyleAndLayout as StyleAndLayoutPayload} from 'react-devtools-shared/src/backend/NativeStyleEditor/types';\n\nconst BATCH_DURATION = 100;\n\ntype ElementAndRendererID = {|id: number, rendererID: RendererID|};\n\ntype Message = {|\n event: string,\n payload: any,\n|};\n\ntype HighlightElementInDOM = {|\n ...ElementAndRendererID,\n displayName: string | null,\n hideAfterTimeout: boolean,\n openNativeElementsPanel: boolean,\n scrollIntoView: boolean,\n|};\n\ntype OverrideValue = {|\n ...ElementAndRendererID,\n path: Array<string | number>,\n wasForwarded?: boolean,\n value: any,\n|};\n\ntype OverrideHookState = {|\n ...OverrideValue,\n hookID: number,\n|};\n\ntype PathType = 'props' | 'hooks' | 'state' | 'context';\n\ntype DeletePath = {|\n ...ElementAndRendererID,\n type: PathType,\n hookID?: ?number,\n path: Array<string | number>,\n|};\n\ntype RenamePath = {|\n ...ElementAndRendererID,\n type: PathType,\n hookID?: ?number,\n oldPath: Array<string | number>,\n newPath: Array<string | number>,\n|};\n\ntype OverrideValueAtPath = {|\n ...ElementAndRendererID,\n type: PathType,\n hookID?: ?number,\n path: Array<string | number>,\n value: any,\n|};\n\ntype OverrideSuspense = {|\n ...ElementAndRendererID,\n forceFallback: boolean,\n|};\n\ntype CopyElementPathParams = {|\n ...ElementAndRendererID,\n path: Array<string | number>,\n|};\n\ntype ViewAttributeSourceParams = {|\n ...ElementAndRendererID,\n path: Array<string | number>,\n|};\n\ntype InspectElementParams = {|\n ...ElementAndRendererID,\n path?: Array<string | number>,\n|};\n\ntype StoreAsGlobalParams = {|\n ...ElementAndRendererID,\n count: number,\n path: Array<string | number>,\n|};\n\ntype NativeStyleEditor_RenameAttributeParams = {|\n ...ElementAndRendererID,\n oldName: string,\n newName: string,\n value: string,\n|};\n\ntype NativeStyleEditor_SetValueParams = {|\n ...ElementAndRendererID,\n name: string,\n value: string,\n|};\n\ntype UpdateConsolePatchSettingsParams = {|\n appendComponentStack: boolean,\n breakOnConsoleErrors: boolean,\n|};\n\ntype BackendEvents = {|\n extensionBackendInitialized: [],\n inspectedElement: [InspectedElementPayload],\n isBackendStorageAPISupported: [boolean],\n operations: [Array<number>],\n ownersList: [OwnersList],\n overrideComponentFilters: [Array<ComponentFilter>],\n profilingData: [ProfilingDataBackend],\n profilingStatus: [boolean],\n reloadAppForProfiling: [],\n selectFiber: [number],\n shutdown: [],\n stopInspectingNative: [boolean],\n syncSelectionFromNativeElementsPanel: [],\n syncSelectionToNativeElementsPanel: [],\n unsupportedRendererVersion: [RendererID],\n\n // React Native style editor plug-in.\n isNativeStyleEditorSupported: [\n {|isSupported: boolean, validAttributes: ?$ReadOnlyArray<string>|},\n ],\n NativeStyleEditor_styleAndLayout: [StyleAndLayoutPayload],\n|};\n\ntype FrontendEvents = {|\n clearNativeElementHighlight: [],\n copyElementPath: [CopyElementPathParams],\n deletePath: [DeletePath],\n getOwnersList: [ElementAndRendererID],\n getProfilingData: [{|rendererID: RendererID|}],\n getProfilingStatus: [],\n highlightNativeElement: [HighlightElementInDOM],\n inspectElement: [InspectElementParams],\n logElementToConsole: [ElementAndRendererID],\n overrideSuspense: [OverrideSuspense],\n overrideValueAtPath: [OverrideValueAtPath],\n profilingData: [ProfilingDataBackend],\n reloadAndProfile: [boolean],\n renamePath: [RenamePath],\n selectFiber: [number],\n setTraceUpdatesEnabled: [boolean],\n shutdown: [],\n startInspectingNative: [],\n startProfiling: [boolean],\n stopInspectingNative: [boolean],\n stopProfiling: [],\n storeAsGlobal: [StoreAsGlobalParams],\n updateComponentFilters: [Array<ComponentFilter>],\n updateConsolePatchSettings: [UpdateConsolePatchSettingsParams],\n viewAttributeSource: [ViewAttributeSourceParams],\n viewElementSource: [ElementAndRendererID],\n\n // React Native style editor plug-in.\n NativeStyleEditor_measure: [ElementAndRendererID],\n NativeStyleEditor_renameAttribute: [NativeStyleEditor_RenameAttributeParams],\n NativeStyleEditor_setValue: [NativeStyleEditor_SetValueParams],\n\n // Temporarily support newer standalone front-ends sending commands to older embedded backends.\n // We do this because React Native embeds the React DevTools backend,\n // but cannot control which version of the frontend users use.\n //\n // Note that nothing in the newer backend actually listens to these events,\n // but the new frontend still dispatches them (in case older backends are listening to them instead).\n //\n // Note that this approach does no support the combination of a newer backend with an older frontend.\n // It would be more work to suppot both approaches (and not run handlers twice)\n // so I chose to support the more likely/common scenario (and the one more difficult for an end user to \"fix\").\n overrideContext: [OverrideValue],\n overrideHookState: [OverrideHookState],\n overrideProps: [OverrideValue],\n overrideState: [OverrideValue],\n|};\n\nclass Bridge<\n OutgoingEvents: Object,\n IncomingEvents: Object,\n> extends EventEmitter<{|\n ...IncomingEvents,\n ...OutgoingEvents,\n|}> {\n _isShutdown: boolean = false;\n _messageQueue: Array<any> = [];\n _timeoutID: TimeoutID | null = null;\n _wall: Wall;\n _wallUnlisten: Function | null = null;\n\n constructor(wall: Wall) {\n super();\n\n this._wall = wall;\n\n this._wallUnlisten =\n wall.listen((message: Message) => {\n (this: any).emit(message.event, message.payload);\n }) || null;\n\n // Temporarily support older standalone front-ends sending commands to newer embedded backends.\n // We do this because React Native embeds the React DevTools backend,\n // but cannot control which version of the frontend users use.\n this.addListener('overrideValueAtPath', this.overrideValueAtPath);\n }\n\n // Listening directly to the wall isn't advised.\n // It can be used to listen for legacy (v3) messages (since they use a different format).\n get wall(): Wall {\n return this._wall;\n }\n\n send<EventName: $Keys<OutgoingEvents>>(\n event: EventName,\n ...payload: $ElementType<OutgoingEvents, EventName>\n ) {\n if (this._isShutdown) {\n console.warn(\n `Cannot send message \"${event}\" through a Bridge that has been shutdown.`,\n );\n return;\n }\n\n // When we receive a message:\n // - we add it to our queue of messages to be sent\n // - if there hasn't been a message recently, we set a timer for 0 ms in\n // the future, allowing all messages created in the same tick to be sent\n // together\n // - if there *has* been a message flushed in the last BATCH_DURATION ms\n // (or we're waiting for our setTimeout-0 to fire), then _timeoutID will\n // be set, and we'll simply add to the queue and wait for that\n this._messageQueue.push(event, payload);\n if (!this._timeoutID) {\n this._timeoutID = setTimeout(this._flush, 0);\n }\n }\n\n shutdown() {\n if (this._isShutdown) {\n console.warn('Bridge was already shutdown.');\n return;\n }\n\n // Queue the shutdown outgoing message for subscribers.\n this.send('shutdown');\n\n // Mark this bridge as destroyed, i.e. disable its public API.\n this._isShutdown = true;\n\n // Disable the API inherited from EventEmitter that can add more listeners and send more messages.\n // $FlowFixMe This property is not writable.\n this.addListener = function() {};\n // $FlowFixMe This property is not writable.\n this.emit = function() {};\n // NOTE: There's also EventEmitter API like `on` and `prependListener` that we didn't add to our Flow type of EventEmitter.\n\n // Unsubscribe this bridge incoming message listeners to be sure, and so they don't have to do that.\n this.removeAllListeners();\n\n // Stop accepting and emitting incoming messages from the wall.\n const wallUnlisten = this._wallUnlisten;\n if (wallUnlisten) {\n wallUnlisten();\n }\n\n // Synchronously flush all queued outgoing messages.\n // At this step the subscribers' code may run in this call stack.\n do {\n this._flush();\n } while (this._messageQueue.length);\n\n // Make sure once again that there is no dangling timer.\n if (this._timeoutID !== null) {\n clearTimeout(this._timeoutID);\n this._timeoutID = null;\n }\n }\n\n _flush = () => {\n // This method is used after the bridge is marked as destroyed in shutdown sequence,\n // so we do not bail out if the bridge marked as destroyed.\n // It is a private method that the bridge ensures is only called at the right times.\n\n if (this._timeoutID !== null) {\n clearTimeout(this._timeoutID);\n this._timeoutID = null;\n }\n\n if (this._messageQueue.length) {\n for (let i = 0; i < this._messageQueue.length; i += 2) {\n this._wall.send(this._messageQueue[i], ...this._messageQueue[i + 1]);\n }\n this._messageQueue.length = 0;\n\n // Check again for queued messages in BATCH_DURATION ms. This will keep\n // flushing in a loop as long as messages continue to be added. Once no\n // more are, the timer expires.\n this._timeoutID = setTimeout(this._flush, BATCH_DURATION);\n }\n };\n\n // Temporarily support older standalone backends by forwarding \"overrideValueAtPath\" commands\n // to the older message types they may be listening to.\n overrideValueAtPath = ({\n id,\n path,\n rendererID,\n type,\n value,\n }: OverrideValueAtPath) => {\n switch (type) {\n case 'context':\n this.send('overrideContext', {\n id,\n path,\n rendererID,\n wasForwarded: true,\n value,\n });\n break;\n case 'hooks':\n this.send('overrideHookState', {\n id,\n path,\n rendererID,\n wasForwarded: true,\n value,\n });\n break;\n case 'props':\n this.send('overrideProps', {\n id,\n path,\n rendererID,\n wasForwarded: true,\n value,\n });\n break;\n case 'state':\n this.send('overrideState', {\n id,\n path,\n rendererID,\n wasForwarded: true,\n value,\n });\n break;\n }\n };\n}\n\nexport type BackendBridge = Bridge<BackendEvents, FrontendEvents>;\nexport type FrontendBridge = Bridge<FrontendEvents, BackendEvents>;\n\nexport default Bridge;\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\n// Flip this flag to true to enable verbose console debug logging.\nexport const __DEBUG__ = false;\n\nexport const TREE_OPERATION_ADD = 1;\nexport const TREE_OPERATION_REMOVE = 2;\nexport const TREE_OPERATION_REORDER_CHILDREN = 3;\nexport const TREE_OPERATION_UPDATE_TREE_BASE_DURATION = 4;\n\nexport const LOCAL_STORAGE_FILTER_PREFERENCES_KEY =\n 'React::DevTools::componentFilters';\n\nexport const SESSION_STORAGE_LAST_SELECTION_KEY =\n 'React::DevTools::lastSelection';\n\nexport const SESSION_STORAGE_RECORD_CHANGE_DESCRIPTIONS_KEY =\n 'React::DevTools::recordChangeDescriptions';\n\nexport const SESSION_STORAGE_RELOAD_AND_PROFILE_KEY =\n 'React::DevTools::reloadAndProfile';\n\nexport const LOCAL_STORAGE_SHOULD_BREAK_ON_CONSOLE_ERRORS =\n 'React::DevTools::breakOnConsoleErrors';\n\nexport const LOCAL_STORAGE_SHOULD_PATCH_CONSOLE_KEY =\n 'React::DevTools::appendComponentStack';\n\nexport const LOCAL_STORAGE_TRACE_UPDATES_ENABLED_KEY =\n 'React::DevTools::traceUpdatesEnabled';\n\nexport const PROFILER_EXPORT_VERSION = 4;\n\nexport const CHANGE_LOG_URL =\n 'https://github.com/facebook/react/blob/master/packages/react-devtools/CHANGELOG.md';\n\nexport const UNSUPPORTED_VERSION_URL =\n 'https://reactjs.org/blog/2019/08/15/new-react-devtools.html#how-do-i-get-the-old-version-back';\n\n// HACK\n//\n// Extracting during build time avoids a temporarily invalid state for the inline target.\n// Sometimes the inline target is rendered before root styles are applied,\n// which would result in e.g. NaN itemSize being passed to react-window list.\n//\nlet COMFORTABLE_LINE_HEIGHT;\nlet COMPACT_LINE_HEIGHT;\n\ntry {\n // $FlowFixMe\n const rawStyleString = require('!!raw-loader!react-devtools-shared/src/devtools/views/root.css')\n .default;\n\n const extractVar = varName => {\n const regExp = new RegExp(`${varName}: ([0-9]+)`);\n const match = rawStyleString.match(regExp);\n return parseInt(match[1], 10);\n };\n\n COMFORTABLE_LINE_HEIGHT = extractVar('comfortable-line-height-data');\n COMPACT_LINE_HEIGHT = extractVar('compact-line-height-data');\n} catch (error) {\n // We can't use the Webpack loader syntax in the context of Jest,\n // so tests need some reasonably meaningful fallback value.\n COMFORTABLE_LINE_HEIGHT = 15;\n COMPACT_LINE_HEIGHT = 10;\n}\n\nexport {COMFORTABLE_LINE_HEIGHT, COMPACT_LINE_HEIGHT};\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nexport let REACT_ELEMENT_TYPE = 0xeac7;\nexport let REACT_PORTAL_TYPE = 0xeaca;\nexport let REACT_FRAGMENT_TYPE = 0xeacb;\nexport let REACT_STRICT_MODE_TYPE = 0xeacc;\nexport let REACT_PROFILER_TYPE = 0xead2;\nexport let REACT_PROVIDER_TYPE = 0xeacd;\nexport let REACT_CONTEXT_TYPE = 0xeace;\nexport let REACT_FORWARD_REF_TYPE = 0xead0;\nexport let REACT_SUSPENSE_TYPE = 0xead1;\nexport let REACT_SUSPENSE_LIST_TYPE = 0xead8;\nexport let REACT_MEMO_TYPE = 0xead3;\nexport let REACT_LAZY_TYPE = 0xead4;\nexport let REACT_FUNDAMENTAL_TYPE = 0xead5;\nexport let REACT_SCOPE_TYPE = 0xead7;\nexport let REACT_OPAQUE_ID_TYPE = 0xeae0;\nexport let REACT_DEBUG_TRACING_MODE_TYPE = 0xeae1;\nexport let REACT_OFFSCREEN_TYPE = 0xeae2;\nexport let REACT_LEGACY_HIDDEN_TYPE = 0xeae3;\n\nif (typeof Symbol === 'function' && Symbol.for) {\n const symbolFor = Symbol.for;\n REACT_ELEMENT_TYPE = symbolFor('react.element');\n REACT_PORTAL_TYPE = symbolFor('react.portal');\n REACT_FRAGMENT_TYPE = symbolFor('react.fragment');\n REACT_STRICT_MODE_TYPE = symbolFor('react.strict_mode');\n REACT_PROFILER_TYPE = symbolFor('react.profiler');\n REACT_PROVIDER_TYPE = symbolFor('react.provider');\n REACT_CONTEXT_TYPE = symbolFor('react.context');\n REACT_FORWARD_REF_TYPE = symbolFor('react.forward_ref');\n REACT_SUSPENSE_TYPE = symbolFor('react.suspense');\n REACT_SUSPENSE_LIST_TYPE = symbolFor('react.suspense_list');\n REACT_MEMO_TYPE = symbolFor('react.memo');\n REACT_LAZY_TYPE = symbolFor('react.lazy');\n REACT_FUNDAMENTAL_TYPE = symbolFor('react.fundamental');\n REACT_SCOPE_TYPE = symbolFor('react.scope');\n REACT_OPAQUE_ID_TYPE = symbolFor('react.opaque.id');\n REACT_DEBUG_TRACING_MODE_TYPE = symbolFor('react.debug_trace_mode');\n REACT_OFFSCREEN_TYPE = symbolFor('react.offscreen');\n REACT_LEGACY_HIDDEN_TYPE = symbolFor('react.legacy_hidden');\n}\n\nconst MAYBE_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nconst FAUX_ITERATOR_SYMBOL = '@@iterator';\n\nexport function getIteratorFn(maybeIterable: ?any): ?() => ?Iterator<*> {\n if (maybeIterable === null || typeof maybeIterable !== 'object') {\n return null;\n }\n const maybeIterator =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[FAUX_ITERATOR_SYMBOL];\n if (typeof maybeIterator === 'function') {\n return maybeIterator;\n }\n return null;\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nexport function localStorageGetItem(key: string): any {\n try {\n return localStorage.getItem(key);\n } catch (error) {\n return null;\n }\n}\n\nexport function localStorageRemoveItem(key: string): void {\n try {\n localStorage.removeItem(key);\n } catch (error) {}\n}\n\nexport function localStorageSetItem(key: string, value: any): void {\n try {\n return localStorage.setItem(key, value);\n } catch (error) {}\n}\n\nexport function sessionStorageGetItem(key: string): any {\n try {\n return sessionStorage.getItem(key);\n } catch (error) {\n return null;\n }\n}\n\nexport function sessionStorageRemoveItem(key: string): void {\n try {\n sessionStorage.removeItem(key);\n } catch (error) {}\n}\n\nexport function sessionStorageSetItem(key: string, value: any): void {\n try {\n return sessionStorage.setItem(key, value);\n } catch (error) {}\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport {\n getDataType,\n getDisplayNameForReactElement,\n getAllEnumerableKeys,\n getInObject,\n formatDataForPreview,\n setInObject,\n} from './utils';\n\nimport type {DehydratedData} from 'react-devtools-shared/src/devtools/views/Components/types';\n\nexport const meta = {\n inspectable: Symbol('inspectable'),\n inspected: Symbol('inspected'),\n name: Symbol('name'),\n preview_long: Symbol('preview_long'),\n preview_short: Symbol('preview_short'),\n readonly: Symbol('readonly'),\n size: Symbol('size'),\n type: Symbol('type'),\n unserializable: Symbol('unserializable'),\n};\n\nexport type Dehydrated = {|\n inspectable: boolean,\n name: string | null,\n preview_long: string | null,\n preview_short: string | null,\n readonly?: boolean,\n size?: number,\n type: string,\n|};\n\n// Typed arrays and other complex iteratable objects (e.g. Map, Set, ImmutableJS) need special handling.\n// These objects can't be serialized without losing type information,\n// so a \"Unserializable\" type wrapper is used (with meta-data keys) to send nested values-\n// while preserving the original type and name.\nexport type Unserializable = {\n name: string | null,\n preview_long: string | null,\n preview_short: string | null,\n readonly?: boolean,\n size?: number,\n type: string,\n unserializable: boolean,\n ...\n};\n\n// This threshold determines the depth at which the bridge \"dehydrates\" nested data.\n// Dehydration means that we don't serialize the data for e.g. postMessage or stringify,\n// unless the frontend explicitly requests it (e.g. a user clicks to expand a props object).\n//\n// Reducing this threshold will improve the speed of initial component inspection,\n// but may decrease the responsiveness of expanding objects/arrays to inspect further.\nconst LEVEL_THRESHOLD = 2;\n\n/**\n * Generate the dehydrated metadata for complex object instances\n */\nfunction createDehydrated(\n type: string,\n inspectable: boolean,\n data: Object,\n cleaned: Array<Array<string | number>>,\n path: Array<string | number>,\n): Dehydrated {\n cleaned.push(path);\n\n const dehydrated: Dehydrated = {\n inspectable,\n type,\n preview_long: formatDataForPreview(data, true),\n preview_short: formatDataForPreview(data, false),\n name:\n !data.constructor || data.constructor.name === 'Object'\n ? ''\n : data.constructor.name,\n };\n\n if (type === 'array' || type === 'typed_array') {\n dehydrated.size = data.length;\n } else if (type === 'object') {\n dehydrated.size = Object.keys(data).length;\n }\n\n if (type === 'iterator' || type === 'typed_array') {\n dehydrated.readonly = true;\n }\n\n return dehydrated;\n}\n\n/**\n * Strip out complex data (instances, functions, and data nested > LEVEL_THRESHOLD levels deep).\n * The paths of the stripped out objects are appended to the `cleaned` list.\n * On the other side of the barrier, the cleaned list is used to \"re-hydrate\" the cleaned representation into\n * an object with symbols as attributes, so that a sanitized object can be distinguished from a normal object.\n *\n * Input: {\"some\": {\"attr\": fn()}, \"other\": AnInstance}\n * Output: {\n * \"some\": {\n * \"attr\": {\"name\": the fn.name, type: \"function\"}\n * },\n * \"other\": {\n * \"name\": \"AnInstance\",\n * \"type\": \"object\",\n * },\n * }\n * and cleaned = [[\"some\", \"attr\"], [\"other\"]]\n */\nexport function dehydrate(\n data: Object,\n cleaned: Array<Array<string | number>>,\n unserializable: Array<Array<string | number>>,\n path: Array<string | number>,\n isPathAllowed: (path: Array<string | number>) => boolean,\n level?: number = 0,\n):\n | string\n | Dehydrated\n | Unserializable\n | Array<Dehydrated>\n | Array<Unserializable>\n | {[key: string]: string | Dehydrated | Unserializable, ...} {\n const type = getDataType(data);\n\n let isPathAllowedCheck;\n\n switch (type) {\n case 'html_element':\n cleaned.push(path);\n return {\n inspectable: false,\n preview_short: formatDataForPreview(data, false),\n preview_long: formatDataForPreview(data, true),\n name: data.tagName,\n type,\n };\n\n case 'function':\n cleaned.push(path);\n return {\n inspectable: false,\n preview_short: formatDataForPreview(data, false),\n preview_long: formatDataForPreview(data, true),\n name:\n typeof data.name === 'function' || !data.name\n ? 'function'\n : data.name,\n type,\n };\n\n case 'string':\n return data.length <= 500 ? data : data.slice(0, 500) + '...';\n\n case 'bigint':\n cleaned.push(path);\n return {\n inspectable: false,\n preview_short: formatDataForPreview(data, false),\n preview_long: formatDataForPreview(data, true),\n name: data.toString(),\n type,\n };\n\n case 'symbol':\n cleaned.push(path);\n return {\n inspectable: false,\n preview_short: formatDataForPreview(data, false),\n preview_long: formatDataForPreview(data, true),\n name: data.toString(),\n type,\n };\n\n // React Elements aren't very inspector-friendly,\n // and often contain private fields or circular references.\n case 'react_element':\n cleaned.push(path);\n return {\n inspectable: false,\n preview_short: formatDataForPreview(data, false),\n preview_long: formatDataForPreview(data, true),\n name: getDisplayNameForReactElement(data) || 'Unknown',\n type,\n };\n\n // ArrayBuffers error if you try to inspect them.\n case 'array_buffer':\n case 'data_view':\n cleaned.push(path);\n return {\n inspectable: false,\n preview_short: formatDataForPreview(data, false),\n preview_long: formatDataForPreview(data, true),\n name: type === 'data_view' ? 'DataView' : 'ArrayBuffer',\n size: data.byteLength,\n type,\n };\n\n case 'array':\n isPathAllowedCheck = isPathAllowed(path);\n if (level >= LEVEL_THRESHOLD && !isPathAllowedCheck) {\n return createDehydrated(type, true, data, cleaned, path);\n }\n return data.map((item, i) =>\n dehydrate(\n item,\n cleaned,\n unserializable,\n path.concat([i]),\n isPathAllowed,\n isPathAllowedCheck ? 1 : level + 1,\n ),\n );\n\n case 'html_all_collection':\n case 'typed_array':\n case 'iterator':\n isPathAllowedCheck = isPathAllowed(path);\n if (level >= LEVEL_THRESHOLD && !isPathAllowedCheck) {\n return createDehydrated(type, true, data, cleaned, path);\n } else {\n const unserializableValue: Unserializable = {\n unserializable: true,\n type: type,\n readonly: true,\n size: type === 'typed_array' ? data.length : undefined,\n preview_short: formatDataForPreview(data, false),\n preview_long: formatDataForPreview(data, true),\n name:\n !data.constructor || data.constructor.name === 'Object'\n ? ''\n : data.constructor.name,\n };\n\n if (typeof data[Symbol.iterator]) {\n // TRICKY\n // Don't use [...spread] syntax for this purpose.\n // This project uses @babel/plugin-transform-spread in \"loose\" mode which only works with Array values.\n // Other types (e.g. typed arrays, Sets) will not spread correctly.\n Array.from(data).forEach(\n (item, i) =>\n (unserializableValue[i] = dehydrate(\n item,\n cleaned,\n unserializable,\n path.concat([i]),\n isPathAllowed,\n isPathAllowedCheck ? 1 : level + 1,\n )),\n );\n }\n\n unserializable.push(path);\n\n return unserializableValue;\n }\n\n case 'opaque_iterator':\n cleaned.push(path);\n return {\n inspectable: false,\n preview_short: formatDataForPreview(data, false),\n preview_long: formatDataForPreview(data, true),\n name: data[Symbol.toStringTag],\n type,\n };\n\n case 'date':\n cleaned.push(path);\n return {\n inspectable: false,\n preview_short: formatDataForPreview(data, false),\n preview_long: formatDataForPreview(data, true),\n name: data.toString(),\n type,\n };\n\n case 'regexp':\n cleaned.push(path);\n return {\n inspectable: false,\n preview_short: formatDataForPreview(data, false),\n preview_long: formatDataForPreview(data, true),\n name: data.toString(),\n type,\n };\n\n case 'object':\n isPathAllowedCheck = isPathAllowed(path);\n if (level >= LEVEL_THRESHOLD && !isPathAllowedCheck) {\n return createDehydrated(type, true, data, cleaned, path);\n } else {\n const object = {};\n getAllEnumerableKeys(data).forEach(key => {\n const name = key.toString();\n object[name] = dehydrate(\n data[key],\n cleaned,\n unserializable,\n path.concat([name]),\n isPathAllowed,\n isPathAllowedCheck ? 1 : level + 1,\n );\n });\n return object;\n }\n\n case 'infinity':\n case 'nan':\n case 'undefined':\n // Some values are lossy when sent through a WebSocket.\n // We dehydrate+rehydrate them to preserve their type.\n cleaned.push(path);\n return {\n type,\n };\n\n default:\n return data;\n }\n}\n\nexport function fillInPath(\n object: Object,\n data: DehydratedData,\n path: Array<string | number>,\n value: any,\n) {\n const target = getInObject(object, path);\n if (target != null) {\n if (!target[meta.unserializable]) {\n delete target[meta.inspectable];\n delete target[meta.inspected];\n delete target[meta.name];\n delete target[meta.preview_long];\n delete target[meta.preview_short];\n delete target[meta.readonly];\n delete target[meta.size];\n delete target[meta.type];\n }\n }\n\n if (value !== null && data.unserializable.length > 0) {\n const unserializablePath = data.unserializable[0];\n let isMatch = unserializablePath.length === path.length;\n for (let i = 0; i < path.length; i++) {\n if (path[i] !== unserializablePath[i]) {\n isMatch = false;\n break;\n }\n }\n if (isMatch) {\n upgradeUnserializable(value, value);\n }\n }\n\n setInObject(object, path, value);\n}\n\nexport function hydrate(\n object: any,\n cleaned: Array<Array<string | number>>,\n unserializable: Array<Array<string | number>>,\n): Object {\n cleaned.forEach((path: Array<string | number>) => {\n const length = path.length;\n const last = path[length - 1];\n const parent = getInObject(object, path.slice(0, length - 1));\n if (!parent || !parent.hasOwnProperty(last)) {\n return;\n }\n\n const value = parent[last];\n\n if (value.type === 'infinity') {\n parent[last] = Infinity;\n } else if (value.type === 'nan') {\n parent[last] = NaN;\n } else if (value.type === 'undefined') {\n parent[last] = undefined;\n } else {\n // Replace the string keys with Symbols so they're non-enumerable.\n const replaced: {[key: Symbol]: boolean | string, ...} = {};\n replaced[meta.inspectable] = !!value.inspectable;\n replaced[meta.inspected] = false;\n replaced[meta.name] = value.name;\n replaced[meta.preview_long] = value.preview_long;\n replaced[meta.preview_short] = value.preview_short;\n replaced[meta.size] = value.size;\n replaced[meta.readonly] = !!value.readonly;\n replaced[meta.type] = value.type;\n\n parent[last] = replaced;\n }\n });\n unserializable.forEach((path: Array<string | number>) => {\n const length = path.length;\n const last = path[length - 1];\n const parent = getInObject(object, path.slice(0, length - 1));\n if (!parent || !parent.hasOwnProperty(last)) {\n return;\n }\n\n const node = parent[last];\n\n const replacement = {\n ...node,\n };\n\n upgradeUnserializable(replacement, node);\n\n parent[last] = replacement;\n });\n return object;\n}\n\nfunction upgradeUnserializable(destination: Object, source: Object) {\n Object.defineProperties(destination, {\n [meta.inspected]: {\n configurable: true,\n enumerable: false,\n value: !!source.inspected,\n },\n [meta.name]: {\n configurable: true,\n enumerable: false,\n value: source.name,\n },\n [meta.preview_long]: {\n configurable: true,\n enumerable: false,\n value: source.preview_long,\n },\n [meta.preview_short]: {\n configurable: true,\n enumerable: false,\n value: source.preview_short,\n },\n [meta.size]: {\n configurable: true,\n enumerable: false,\n value: source.size,\n },\n [meta.readonly]: {\n configurable: true,\n enumerable: false,\n value: !!source.readonly,\n },\n [meta.type]: {\n configurable: true,\n enumerable: false,\n value: source.type,\n },\n [meta.unserializable]: {\n configurable: true,\n enumerable: false,\n value: !!source.unserializable,\n },\n });\n\n delete destination.inspected;\n delete destination.name;\n delete destination.preview_long;\n delete destination.preview_short;\n delete destination.size;\n delete destination.readonly;\n delete destination.type;\n delete destination.unserializable;\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport LRU from 'lru-cache';\nimport {\n isElement,\n typeOf,\n ContextConsumer,\n ContextProvider,\n ForwardRef,\n Fragment,\n Lazy,\n Memo,\n Portal,\n Profiler,\n StrictMode,\n Suspense,\n} from 'react-is';\nimport {REACT_SUSPENSE_LIST_TYPE as SuspenseList} from 'shared/ReactSymbols';\nimport {\n TREE_OPERATION_ADD,\n TREE_OPERATION_REMOVE,\n TREE_OPERATION_REORDER_CHILDREN,\n TREE_OPERATION_UPDATE_TREE_BASE_DURATION,\n} from './constants';\nimport {ElementTypeRoot} from 'react-devtools-shared/src/types';\nimport {\n LOCAL_STORAGE_FILTER_PREFERENCES_KEY,\n LOCAL_STORAGE_SHOULD_BREAK_ON_CONSOLE_ERRORS,\n LOCAL_STORAGE_SHOULD_PATCH_CONSOLE_KEY,\n} from './constants';\nimport {ComponentFilterElementType, ElementTypeHostComponent} from './types';\nimport {\n ElementTypeClass,\n ElementTypeForwardRef,\n ElementTypeFunction,\n ElementTypeMemo,\n} from 'react-devtools-shared/src/types';\nimport {localStorageGetItem, localStorageSetItem} from './storage';\nimport {meta} from './hydration';\nimport type {ComponentFilter, ElementType} from './types';\n\nconst cachedDisplayNames: WeakMap<Function, string> = new WeakMap();\n\n// On large trees, encoding takes significant time.\n// Try to reuse the already encoded strings.\nconst encodedStringCache = new LRU({max: 1000});\n\nexport function alphaSortKeys(\n a: string | number | Symbol,\n b: string | number | Symbol,\n): number {\n if (a.toString() > b.toString()) {\n return 1;\n } else if (b.toString() > a.toString()) {\n return -1;\n } else {\n return 0;\n }\n}\n\nexport function getAllEnumerableKeys(\n obj: Object,\n): Array<string | number | Symbol> {\n const keys = [];\n let current = obj;\n while (current != null) {\n const currentKeys = [\n ...Object.keys(current),\n ...Object.getOwnPropertySymbols(current),\n ];\n const descriptors = Object.getOwnPropertyDescriptors(current);\n currentKeys.forEach(key => {\n // $FlowFixMe: key can be a Symbol https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor\n if (descriptors[key].enumerable) {\n keys.push(key);\n }\n });\n current = Object.getPrototypeOf(current);\n }\n return keys;\n}\n\nexport function getDisplayName(\n type: Function,\n fallbackName: string = 'Anonymous',\n): string {\n const nameFromCache = cachedDisplayNames.get(type);\n if (nameFromCache != null) {\n return nameFromCache;\n }\n\n let displayName = fallbackName;\n\n // The displayName property is not guaranteed to be a string.\n // It's only safe to use for our purposes if it's a string.\n // github.com/facebook/react-devtools/issues/803\n if (typeof type.displayName === 'string') {\n displayName = type.displayName;\n } else if (typeof type.name === 'string' && type.name !== '') {\n displayName = type.name;\n }\n\n cachedDisplayNames.set(type, displayName);\n return displayName;\n}\n\nlet uidCounter: number = 0;\n\nexport function getUID(): number {\n return ++uidCounter;\n}\n\nexport function utfDecodeString(array: Array<number>): string {\n return String.fromCodePoint(...array);\n}\n\nexport function utfEncodeString(string: string): Array<number> {\n const cached = encodedStringCache.get(string);\n if (cached !== undefined) {\n return cached;\n }\n\n const encoded = new Array(string.length);\n for (let i = 0; i < string.length; i++) {\n encoded[i] = string.codePointAt(i);\n }\n encodedStringCache.set(string, encoded);\n return encoded;\n}\n\nexport function printOperationsArray(operations: Array<number>) {\n // The first two values are always rendererID and rootID\n const rendererID = operations[0];\n const rootID = operations[1];\n\n const logs = [`operations for renderer:${rendererID} and root:${rootID}`];\n\n let i = 2;\n\n // Reassemble the string table.\n const stringTable = [\n null, // ID = 0 corresponds to the null string.\n ];\n const stringTableSize = operations[i++];\n const stringTableEnd = i + stringTableSize;\n while (i < stringTableEnd) {\n const nextLength = operations[i++];\n const nextString = utfDecodeString(\n (operations.slice(i, i + nextLength): any),\n );\n stringTable.push(nextString);\n i += nextLength;\n }\n\n while (i < operations.length) {\n const operation = operations[i];\n\n switch (operation) {\n case TREE_OPERATION_ADD: {\n const id = ((operations[i + 1]: any): number);\n const type = ((operations[i + 2]: any): ElementType);\n\n i += 3;\n\n if (type === ElementTypeRoot) {\n logs.push(`Add new root node ${id}`);\n\n i++; // supportsProfiling\n i++; // hasOwnerMetadata\n } else {\n const parentID = ((operations[i]: any): number);\n i++;\n\n i++; // ownerID\n\n const displayNameStringID = operations[i];\n const displayName = stringTable[displayNameStringID];\n i++;\n\n i++; // key\n\n logs.push(\n `Add node ${id} (${displayName || 'null'}) as child of ${parentID}`,\n );\n }\n break;\n }\n case TREE_OPERATION_REMOVE: {\n const removeLength = ((operations[i + 1]: any): number);\n i += 2;\n\n for (let removeIndex = 0; removeIndex < removeLength; removeIndex++) {\n const id = ((operations[i]: any): number);\n i += 1;\n\n logs.push(`Remove node ${id}`);\n }\n break;\n }\n case TREE_OPERATION_REORDER_CHILDREN: {\n const id = ((operations[i + 1]: any): number);\n const numChildren = ((operations[i + 2]: any): number);\n i += 3;\n const children = operations.slice(i, i + numChildren);\n i += numChildren;\n\n logs.push(`Re-order node ${id} children ${children.join(',')}`);\n break;\n }\n case TREE_OPERATION_UPDATE_TREE_BASE_DURATION:\n // Base duration updates are only sent while profiling is in progress.\n // We can ignore them at this point.\n // The profiler UI uses them lazily in order to generate the tree.\n i += 3;\n break;\n default:\n throw Error(`Unsupported Bridge operation ${operation}`);\n }\n }\n\n console.log(logs.join('\\n '));\n}\n\nexport function getDefaultComponentFilters(): Array<ComponentFilter> {\n return [\n {\n type: ComponentFilterElementType,\n value: ElementTypeHostComponent,\n isEnabled: true,\n },\n ];\n}\n\nexport function getSavedComponentFilters(): Array<ComponentFilter> {\n try {\n const raw = localStorageGetItem(LOCAL_STORAGE_FILTER_PREFERENCES_KEY);\n if (raw != null) {\n return JSON.parse(raw);\n }\n } catch (error) {}\n return getDefaultComponentFilters();\n}\n\nexport function saveComponentFilters(\n componentFilters: Array<ComponentFilter>,\n): void {\n localStorageSetItem(\n LOCAL_STORAGE_FILTER_PREFERENCES_KEY,\n JSON.stringify(componentFilters),\n );\n}\n\nexport function getAppendComponentStack(): boolean {\n try {\n const raw = localStorageGetItem(LOCAL_STORAGE_SHOULD_PATCH_CONSOLE_KEY);\n if (raw != null) {\n return JSON.parse(raw);\n }\n } catch (error) {}\n return true;\n}\n\nexport function setAppendComponentStack(value: boolean): void {\n localStorageSetItem(\n LOCAL_STORAGE_SHOULD_PATCH_CONSOLE_KEY,\n JSON.stringify(value),\n );\n}\n\nexport function getBreakOnConsoleErrors(): boolean {\n try {\n const raw = localStorageGetItem(\n LOCAL_STORAGE_SHOULD_BREAK_ON_CONSOLE_ERRORS,\n );\n if (raw != null) {\n return JSON.parse(raw);\n }\n } catch (error) {}\n return false;\n}\n\nexport function setBreakOnConsoleErrors(value: boolean): void {\n localStorageSetItem(\n LOCAL_STORAGE_SHOULD_BREAK_ON_CONSOLE_ERRORS,\n JSON.stringify(value),\n );\n}\n\nexport function separateDisplayNameAndHOCs(\n displayName: string | null,\n type: ElementType,\n): [string | null, Array<string> | null] {\n if (displayName === null) {\n return [null, null];\n }\n\n let hocDisplayNames = null;\n\n switch (type) {\n case ElementTypeClass:\n case ElementTypeForwardRef:\n case ElementTypeFunction:\n case ElementTypeMemo:\n if (displayName.indexOf('(') >= 0) {\n const matches = displayName.match(/[^()]+/g);\n if (matches != null) {\n displayName = matches.pop();\n hocDisplayNames = matches;\n }\n }\n break;\n default:\n break;\n }\n\n if (type === ElementTypeMemo) {\n if (hocDisplayNames === null) {\n hocDisplayNames = ['Memo'];\n } else {\n hocDisplayNames.unshift('Memo');\n }\n } else if (type === ElementTypeForwardRef) {\n if (hocDisplayNames === null) {\n hocDisplayNames = ['ForwardRef'];\n } else {\n hocDisplayNames.unshift('ForwardRef');\n }\n }\n\n return [displayName, hocDisplayNames];\n}\n\n// Pulled from react-compat\n// https://github.com/developit/preact-compat/blob/7c5de00e7c85e2ffd011bf3af02899b63f699d3a/src/index.js#L349\nexport function shallowDiffers(prev: Object, next: Object): boolean {\n for (const attribute in prev) {\n if (!(attribute in next)) {\n return true;\n }\n }\n for (const attribute in next) {\n if (prev[attribute] !== next[attribute]) {\n return true;\n }\n }\n return false;\n}\n\nexport function getInObject(object: Object, path: Array<string | number>): any {\n return path.reduce((reduced: Object, attr: any): any => {\n if (reduced) {\n if (hasOwnProperty.call(reduced, attr)) {\n return reduced[attr];\n }\n if (typeof reduced[Symbol.iterator] === 'function') {\n // Convert iterable to array and return array[index]\n //\n // TRICKY\n // Don't use [...spread] syntax for this purpose.\n // This project uses @babel/plugin-transform-spread in \"loose\" mode which only works with Array values.\n // Other types (e.g. typed arrays, Sets) will not spread correctly.\n return Array.from(reduced)[attr];\n }\n }\n\n return null;\n }, object);\n}\n\nexport function deletePathInObject(\n object: Object,\n path: Array<string | number>,\n) {\n const length = path.length;\n const last = path[length - 1];\n if (object != null) {\n const parent = getInObject(object, path.slice(0, length - 1));\n if (parent) {\n if (Array.isArray(parent)) {\n parent.splice(((last: any): number), 1);\n } else {\n delete parent[last];\n }\n }\n }\n}\n\nexport function renamePathInObject(\n object: Object,\n oldPath: Array<string | number>,\n newPath: Array<string | number>,\n) {\n const length = oldPath.length;\n if (object != null) {\n const parent = getInObject(object, oldPath.slice(0, length - 1));\n if (parent) {\n const lastOld = oldPath[length - 1];\n const lastNew = newPath[length - 1];\n parent[lastNew] = parent[lastOld];\n if (Array.isArray(parent)) {\n parent.splice(((lastOld: any): number), 1);\n } else {\n delete parent[lastOld];\n }\n }\n }\n}\n\nexport function setInObject(\n object: Object,\n path: Array<string | number>,\n value: any,\n) {\n const length = path.length;\n const last = path[length - 1];\n if (object != null) {\n const parent = getInObject(object, path.slice(0, length - 1));\n if (parent) {\n parent[last] = value;\n }\n }\n}\n\nexport type DataType =\n | 'array'\n | 'array_buffer'\n | 'bigint'\n | 'boolean'\n | 'data_view'\n | 'date'\n | 'function'\n | 'html_all_collection'\n | 'html_element'\n | 'infinity'\n | 'iterator'\n | 'opaque_iterator'\n | 'nan'\n | 'null'\n | 'number'\n | 'object'\n | 'react_element'\n | 'regexp'\n | 'string'\n | 'symbol'\n | 'typed_array'\n | 'undefined'\n | 'unknown';\n\n/**\n * Get a enhanced/artificial type string based on the object instance\n */\nexport function getDataType(data: Object): DataType {\n if (data === null) {\n return 'null';\n } else if (data === undefined) {\n return 'undefined';\n }\n\n if (isElement(data)) {\n return 'react_element';\n }\n\n if (typeof HTMLElement !== 'undefined' && data instanceof HTMLElement) {\n return 'html_element';\n }\n\n const type = typeof data;\n switch (type) {\n case 'bigint':\n return 'bigint';\n case 'boolean':\n return 'boolean';\n case 'function':\n return 'function';\n case 'number':\n if (Number.isNaN(data)) {\n return 'nan';\n } else if (!Number.isFinite(data)) {\n return 'infinity';\n } else {\n return 'number';\n }\n case 'object':\n if (Array.isArray(data)) {\n return 'array';\n } else if (ArrayBuffer.isView(data)) {\n return hasOwnProperty.call(data.constructor, 'BYTES_PER_ELEMENT')\n ? 'typed_array'\n : 'data_view';\n } else if (data.constructor && data.constructor.name === 'ArrayBuffer') {\n // HACK This ArrayBuffer check is gross; is there a better way?\n // We could try to create a new DataView with the value.\n // If it doesn't error, we know it's an ArrayBuffer,\n // but this seems kind of awkward and expensive.\n return 'array_buffer';\n } else if (typeof data[Symbol.iterator] === 'function') {\n return data[Symbol.iterator]() === data\n ? 'opaque_iterator'\n : 'iterator';\n } else if (data.constructor && data.constructor.name === 'RegExp') {\n return 'regexp';\n } else {\n const toStringValue = Object.prototype.toString.call(data);\n if (toStringValue === '[object Date]') {\n return 'date';\n } else if (toStringValue === '[object HTMLAllCollection]') {\n return 'html_all_collection';\n }\n }\n return 'object';\n case 'string':\n return 'string';\n case 'symbol':\n return 'symbol';\n case 'undefined':\n if (\n Object.prototype.toString.call(data) === '[object HTMLAllCollection]'\n ) {\n return 'html_all_collection';\n }\n return 'undefined';\n default:\n return 'unknown';\n }\n}\n\nexport function getDisplayNameForReactElement(\n element: React$Element<any>,\n): string | null {\n const elementType = typeOf(element);\n switch (elementType) {\n case ContextConsumer:\n return 'ContextConsumer';\n case ContextProvider:\n return 'ContextProvider';\n case ForwardRef:\n return 'ForwardRef';\n case Fragment:\n return 'Fragment';\n case Lazy:\n return 'Lazy';\n case Memo:\n return 'Memo';\n case Portal:\n return 'Portal';\n case Profiler:\n return 'Profiler';\n case StrictMode:\n return 'StrictMode';\n case Suspense:\n return 'Suspense';\n case SuspenseList:\n return 'SuspenseList';\n default:\n const {type} = element;\n if (typeof type === 'string') {\n return type;\n } else if (typeof type === 'function') {\n return getDisplayName(type, 'Anonymous');\n } else if (type != null) {\n return 'NotImplementedInDevtools';\n } else {\n return 'Element';\n }\n }\n}\n\nconst MAX_PREVIEW_STRING_LENGTH = 50;\n\nfunction truncateForDisplay(\n string: string,\n length: number = MAX_PREVIEW_STRING_LENGTH,\n) {\n if (string.length > length) {\n return string.substr(0, length) + '…';\n } else {\n return string;\n }\n}\n\n// Attempts to mimic Chrome's inline preview for values.\n// For example, the following value...\n// {\n// foo: 123,\n// bar: \"abc\",\n// baz: [true, false],\n// qux: { ab: 1, cd: 2 }\n// };\n//\n// Would show a preview of...\n// {foo: 123, bar: \"abc\", baz: Array(2), qux: {…}}\n//\n// And the following value...\n// [\n// 123,\n// \"abc\",\n// [true, false],\n// { foo: 123, bar: \"abc\" }\n// ];\n//\n// Would show a preview of...\n// [123, \"abc\", Array(2), {…}]\nexport function formatDataForPreview(\n data: any,\n showFormattedValue: boolean,\n): string {\n if (data != null && hasOwnProperty.call(data, meta.type)) {\n return showFormattedValue\n ? data[meta.preview_long]\n : data[meta.preview_short];\n }\n\n const type = getDataType(data);\n\n switch (type) {\n case 'html_element':\n return `<${truncateForDisplay(data.tagName.toLowerCase())} />`;\n case 'function':\n return truncateForDisplay(\n `ƒ ${typeof data.name === 'function' ? '' : data.name}() {}`,\n );\n case 'string':\n return `\"${data}\"`;\n case 'bigint':\n return truncateForDisplay(data.toString() + 'n');\n case 'regexp':\n return truncateForDisplay(data.toString());\n case 'symbol':\n return truncateForDisplay(data.toString());\n case 'react_element':\n return `<${truncateForDisplay(\n getDisplayNameForReactElement(data) || 'Unknown',\n )} />`;\n case 'array_buffer':\n return `ArrayBuffer(${data.byteLength})`;\n case 'data_view':\n return `DataView(${data.buffer.byteLength})`;\n case 'array':\n if (showFormattedValue) {\n let formatted = '';\n for (let i = 0; i < data.length; i++) {\n if (i > 0) {\n formatted += ', ';\n }\n formatted += formatDataForPreview(data[i], false);\n if (formatted.length > MAX_PREVIEW_STRING_LENGTH) {\n // Prevent doing a lot of unnecessary iteration...\n break;\n }\n }\n return `[${truncateForDisplay(formatted)}]`;\n } else {\n const length = hasOwnProperty.call(data, meta.size)\n ? data[meta.size]\n : data.length;\n return `Array(${length})`;\n }\n case 'typed_array':\n const shortName = `${data.constructor.name}(${data.length})`;\n if (showFormattedValue) {\n let formatted = '';\n for (let i = 0; i < data.length; i++) {\n if (i > 0) {\n formatted += ', ';\n }\n formatted += data[i];\n if (formatted.length > MAX_PREVIEW_STRING_LENGTH) {\n // Prevent doing a lot of unnecessary iteration...\n break;\n }\n }\n return `${shortName} [${truncateForDisplay(formatted)}]`;\n } else {\n return shortName;\n }\n case 'iterator':\n const name = data.constructor.name;\n\n if (showFormattedValue) {\n // TRICKY\n // Don't use [...spread] syntax for this purpose.\n // This project uses @babel/plugin-transform-spread in \"loose\" mode which only works with Array values.\n // Other types (e.g. typed arrays, Sets) will not spread correctly.\n const array = Array.from(data);\n\n let formatted = '';\n for (let i = 0; i < array.length; i++) {\n const entryOrEntries = array[i];\n\n if (i > 0) {\n formatted += ', ';\n }\n\n // TRICKY\n // Browsers display Maps and Sets differently.\n // To mimic their behavior, detect if we've been given an entries tuple.\n // Map(2) {\"abc\" => 123, \"def\" => 123}\n // Set(2) {\"abc\", 123}\n if (Array.isArray(entryOrEntries)) {\n const key = formatDataForPreview(entryOrEntries[0], true);\n const value = formatDataForPreview(entryOrEntries[1], false);\n formatted += `${key} => ${value}`;\n } else {\n formatted += formatDataForPreview(entryOrEntries, false);\n }\n\n if (formatted.length > MAX_PREVIEW_STRING_LENGTH) {\n // Prevent doing a lot of unnecessary iteration...\n break;\n }\n }\n\n return `${name}(${data.size}) {${truncateForDisplay(formatted)}}`;\n } else {\n return `${name}(${data.size})`;\n }\n case 'opaque_iterator': {\n return data[Symbol.toStringTag];\n }\n case 'date':\n return data.toString();\n case 'object':\n if (showFormattedValue) {\n const keys = getAllEnumerableKeys(data).sort(alphaSortKeys);\n\n let formatted = '';\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (i > 0) {\n formatted += ', ';\n }\n formatted += `${key.toString()}: ${formatDataForPreview(\n data[key],\n false,\n )}`;\n if (formatted.length > MAX_PREVIEW_STRING_LENGTH) {\n // Prevent doing a lot of unnecessary iteration...\n break;\n }\n }\n return `{${truncateForDisplay(formatted)}}`;\n } else {\n return '{…}';\n }\n case 'boolean':\n case 'number':\n case 'infinity':\n case 'nan':\n case 'null':\n case 'undefined':\n return data;\n default:\n try {\n return truncateForDisplay('' + data);\n } catch (error) {\n return 'unserializable';\n }\n }\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nexport type Wall = {|\n // `listen` returns the \"unlisten\" function.\n listen: (fn: Function) => Function,\n send: (event: string, payload: any, transferable?: Array<any>) => void,\n|};\n\n// WARNING\n// The values below are referenced by ComponentFilters (which are saved via localStorage).\n// Do not change them or it will break previously saved user customizations.\n// If new element types are added, use new numbers rather than re-ordering existing ones.\n//\n// Changing these types is also a backwards breaking change for the standalone shell,\n// since the frontend and backend must share the same values-\n// and the backend is embedded in certain environments (like React Native).\nexport const ElementTypeClass = 1;\nexport const ElementTypeContext = 2;\nexport const ElementTypeFunction = 5;\nexport const ElementTypeForwardRef = 6;\nexport const ElementTypeHostComponent = 7;\nexport const ElementTypeMemo = 8;\nexport const ElementTypeOtherOrUnknown = 9;\nexport const ElementTypeProfiler = 10;\nexport const ElementTypeRoot = 11;\nexport const ElementTypeSuspense = 12;\nexport const ElementTypeSuspenseList = 13;\n\n// Different types of elements displayed in the Elements tree.\n// These types may be used to visually distinguish types,\n// or to enable/disable certain functionality.\nexport type ElementType = 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13;\n\n// WARNING\n// The values below are referenced by ComponentFilters (which are saved via localStorage).\n// Do not change them or it will break previously saved user customizations.\n// If new filter types are added, use new numbers rather than re-ordering existing ones.\nexport const ComponentFilterElementType = 1;\nexport const ComponentFilterDisplayName = 2;\nexport const ComponentFilterLocation = 3;\nexport const ComponentFilterHOC = 4;\n\nexport type ComponentFilterType = 1 | 2 | 3 | 4;\n\n// Hide all elements of types in this Set.\n// We hide host components only by default.\nexport type ElementTypeComponentFilter = {|\n isEnabled: boolean,\n type: 1,\n value: ElementType,\n|};\n\n// Hide all elements with displayNames or paths matching one or more of the RegExps in this Set.\n// Path filters are only used when elements include debug source location.\nexport type RegExpComponentFilter = {|\n isEnabled: boolean,\n isValid: boolean,\n type: 2 | 3,\n value: string,\n|};\n\nexport type BooleanComponentFilter = {|\n isEnabled: boolean,\n isValid: boolean,\n type: 4,\n|};\n\nexport type ComponentFilter =\n | BooleanComponentFilter\n | ElementTypeComponentFilter\n | RegExpComponentFilter;\n","// This is a generated file. Do not edit.\nvar Space_Separator = /[\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/;\nvar ID_Start = /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312E\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF19]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE83\\uDE86-\\uDE89\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]/;\nvar ID_Continue = /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u08D4-\\u08E1\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u09FC\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9-\\u0AFF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C80-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D00-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D54-\\u0D57\\u0D5F-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1CD0-\\u1CD2\\u1CD4-\\u1CF9\\u1D00-\\u1DF9\\u1DFB-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312E\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C5\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC6F\\uDC7F-\\uDCBA\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDCA-\\uDDCC\\uDDD0-\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE3E\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3C-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC00-\\uDC4A\\uDC50-\\uDC59\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB7\\uDEC0-\\uDEC9\\uDF00-\\uDF19\\uDF1D-\\uDF2B\\uDF30-\\uDF39]|\\uD806[\\uDCA0-\\uDCE9\\uDCFF\\uDE00-\\uDE3E\\uDE47\\uDE50-\\uDE83\\uDE86-\\uDE99\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC36\\uDC38-\\uDC40\\uDC50-\\uDC59\\uDC72-\\uDC8F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD47\\uDD50-\\uDD59]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50-\\uDF7E\\uDF8F-\\uDF9F\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6\\uDD00-\\uDD4A\\uDD50-\\uDD59]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uDB40[\\uDD00-\\uDDEF]/;\n\nvar unicode = {\n\tSpace_Separator: Space_Separator,\n\tID_Start: ID_Start,\n\tID_Continue: ID_Continue\n};\n\nvar util = {\n isSpaceSeparator (c) {\n return typeof c === 'string' && unicode.Space_Separator.test(c)\n },\n\n isIdStartChar (c) {\n return typeof c === 'string' && (\n (c >= 'a' && c <= 'z') ||\n (c >= 'A' && c <= 'Z') ||\n (c === '$') || (c === '_') ||\n unicode.ID_Start.test(c)\n )\n },\n\n isIdContinueChar (c) {\n return typeof c === 'string' && (\n (c >= 'a' && c <= 'z') ||\n (c >= 'A' && c <= 'Z') ||\n (c >= '0' && c <= '9') ||\n (c === '$') || (c === '_') ||\n (c === '\\u200C') || (c === '\\u200D') ||\n unicode.ID_Continue.test(c)\n )\n },\n\n isDigit (c) {\n return typeof c === 'string' && /[0-9]/.test(c)\n },\n\n isHexDigit (c) {\n return typeof c === 'string' && /[0-9A-Fa-f]/.test(c)\n },\n};\n\nlet source;\nlet parseState;\nlet stack;\nlet pos;\nlet line;\nlet column;\nlet token;\nlet key;\nlet root;\n\nvar parse = function parse (text, reviver) {\n source = String(text);\n parseState = 'start';\n stack = [];\n pos = 0;\n line = 1;\n column = 0;\n token = undefined;\n key = undefined;\n root = undefined;\n\n do {\n token = lex();\n\n // This code is unreachable.\n // if (!parseStates[parseState]) {\n // throw invalidParseState()\n // }\n\n parseStates[parseState]();\n } while (token.type !== 'eof')\n\n if (typeof reviver === 'function') {\n return internalize({'': root}, '', reviver)\n }\n\n return root\n};\n\nfunction internalize (holder, name, reviver) {\n const value = holder[name];\n if (value != null && typeof value === 'object') {\n for (const key in value) {\n const replacement = internalize(value, key, reviver);\n if (replacement === undefined) {\n delete value[key];\n } else {\n value[key] = replacement;\n }\n }\n }\n\n return reviver.call(holder, name, value)\n}\n\nlet lexState;\nlet buffer;\nlet doubleQuote;\nlet sign;\nlet c;\n\nfunction lex () {\n lexState = 'default';\n buffer = '';\n doubleQuote = false;\n sign = 1;\n\n for (;;) {\n c = peek();\n\n // This code is unreachable.\n // if (!lexStates[lexState]) {\n // throw invalidLexState(lexState)\n // }\n\n const token = lexStates[lexState]();\n if (token) {\n return token\n }\n }\n}\n\nfunction peek () {\n if (source[pos]) {\n return String.fromCodePoint(source.codePointAt(pos))\n }\n}\n\nfunction read () {\n const c = peek();\n\n if (c === '\\n') {\n line++;\n column = 0;\n } else if (c) {\n column += c.length;\n } else {\n column++;\n }\n\n if (c) {\n pos += c.length;\n }\n\n return c\n}\n\nconst lexStates = {\n default () {\n switch (c) {\n case '\\t':\n case '\\v':\n case '\\f':\n case ' ':\n case '\\u00A0':\n case '\\uFEFF':\n case '\\n':\n case '\\r':\n case '\\u2028':\n case '\\u2029':\n read();\n return\n\n case '/':\n read();\n lexState = 'comment';\n return\n\n case undefined:\n read();\n return newToken('eof')\n }\n\n if (util.isSpaceSeparator(c)) {\n read();\n return\n }\n\n // This code is unreachable.\n // if (!lexStates[parseState]) {\n // throw invalidLexState(parseState)\n // }\n\n return lexStates[parseState]()\n },\n\n comment () {\n switch (c) {\n case '*':\n read();\n lexState = 'multiLineComment';\n return\n\n case '/':\n read();\n lexState = 'singleLineComment';\n return\n }\n\n throw invalidChar(read())\n },\n\n multiLineComment () {\n switch (c) {\n case '*':\n read();\n lexState = 'multiLineCommentAsterisk';\n return\n\n case undefined:\n throw invalidChar(read())\n }\n\n read();\n },\n\n multiLineCommentAsterisk () {\n switch (c) {\n case '*':\n read();\n return\n\n case '/':\n read();\n lexState = 'default';\n return\n\n case undefined:\n throw invalidChar(read())\n }\n\n read();\n lexState = 'multiLineComment';\n },\n\n singleLineComment () {\n switch (c) {\n case '\\n':\n case '\\r':\n case '\\u2028':\n case '\\u2029':\n read();\n lexState = 'default';\n return\n\n case undefined:\n read();\n return newToken('eof')\n }\n\n read();\n },\n\n value () {\n switch (c) {\n case '{':\n case '[':\n return newToken('punctuator', read())\n\n case 'n':\n read();\n literal('ull');\n return newToken('null', null)\n\n case 't':\n read();\n literal('rue');\n return newToken('boolean', true)\n\n case 'f':\n read();\n literal('alse');\n return newToken('boolean', false)\n\n case '-':\n case '+':\n if (read() === '-') {\n sign = -1;\n }\n\n lexState = 'sign';\n return\n\n case '.':\n buffer = read();\n lexState = 'decimalPointLeading';\n return\n\n case '0':\n buffer = read();\n lexState = 'zero';\n return\n\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n buffer = read();\n lexState = 'decimalInteger';\n return\n\n case 'I':\n read();\n literal('nfinity');\n return newToken('numeric', Infinity)\n\n case 'N':\n read();\n literal('aN');\n return newToken('numeric', NaN)\n\n case '\"':\n case \"'\":\n doubleQuote = (read() === '\"');\n buffer = '';\n lexState = 'string';\n return\n }\n\n throw invalidChar(read())\n },\n\n identifierNameStartEscape () {\n if (c !== 'u') {\n throw invalidChar(read())\n }\n\n read();\n const u = unicodeEscape();\n switch (u) {\n case '$':\n case '_':\n break\n\n default:\n if (!util.isIdStartChar(u)) {\n throw invalidIdentifier()\n }\n\n break\n }\n\n buffer += u;\n lexState = 'identifierName';\n },\n\n identifierName () {\n switch (c) {\n case '$':\n case '_':\n case '\\u200C':\n case '\\u200D':\n buffer += read();\n return\n\n case '\\\\':\n read();\n lexState = 'identifierNameEscape';\n return\n }\n\n if (util.isIdContinueChar(c)) {\n buffer += read();\n return\n }\n\n return newToken('identifier', buffer)\n },\n\n identifierNameEscape () {\n if (c !== 'u') {\n throw invalidChar(read())\n }\n\n read();\n const u = unicodeEscape();\n switch (u) {\n case '$':\n case '_':\n case '\\u200C':\n case '\\u200D':\n break\n\n default:\n if (!util.isIdContinueChar(u)) {\n throw invalidIdentifier()\n }\n\n break\n }\n\n buffer += u;\n lexState = 'identifierName';\n },\n\n sign () {\n switch (c) {\n case '.':\n buffer = read();\n lexState = 'decimalPointLeading';\n return\n\n case '0':\n buffer = read();\n lexState = 'zero';\n return\n\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n buffer = read();\n lexState = 'decimalInteger';\n return\n\n case 'I':\n read();\n literal('nfinity');\n return newToken('numeric', sign * Infinity)\n\n case 'N':\n read();\n literal('aN');\n return newToken('numeric', NaN)\n }\n\n throw invalidChar(read())\n },\n\n zero () {\n switch (c) {\n case '.':\n buffer += read();\n lexState = 'decimalPoint';\n return\n\n case 'e':\n case 'E':\n buffer += read();\n lexState = 'decimalExponent';\n return\n\n case 'x':\n case 'X':\n buffer += read();\n lexState = 'hexadecimal';\n return\n }\n\n return newToken('numeric', sign * 0)\n },\n\n decimalInteger () {\n switch (c) {\n case '.':\n buffer += read();\n lexState = 'decimalPoint';\n return\n\n case 'e':\n case 'E':\n buffer += read();\n lexState = 'decimalExponent';\n return\n }\n\n if (util.isDigit(c)) {\n buffer += read();\n return\n }\n\n return newToken('numeric', sign * Number(buffer))\n },\n\n decimalPointLeading () {\n if (util.isDigit(c)) {\n buffer += read();\n lexState = 'decimalFraction';\n return\n }\n\n throw invalidChar(read())\n },\n\n decimalPoint () {\n switch (c) {\n case 'e':\n case 'E':\n buffer += read();\n lexState = 'decimalExponent';\n return\n }\n\n if (util.isDigit(c)) {\n buffer += read();\n lexState = 'decimalFraction';\n return\n }\n\n return newToken('numeric', sign * Number(buffer))\n },\n\n decimalFraction () {\n switch (c) {\n case 'e':\n case 'E':\n buffer += read();\n lexState = 'decimalExponent';\n return\n }\n\n if (util.isDigit(c)) {\n buffer += read();\n return\n }\n\n return newToken('numeric', sign * Number(buffer))\n },\n\n decimalExponent () {\n switch (c) {\n case '+':\n case '-':\n buffer += read();\n lexState = 'decimalExponentSign';\n return\n }\n\n if (util.isDigit(c)) {\n buffer += read();\n lexState = 'decimalExponentInteger';\n return\n }\n\n throw invalidChar(read())\n },\n\n decimalExponentSign () {\n if (util.isDigit(c)) {\n buffer += read();\n lexState = 'decimalExponentInteger';\n return\n }\n\n throw invalidChar(read())\n },\n\n decimalExponentInteger () {\n if (util.isDigit(c)) {\n buffer += read();\n return\n }\n\n return newToken('numeric', sign * Number(buffer))\n },\n\n hexadecimal () {\n if (util.isHexDigit(c)) {\n buffer += read();\n lexState = 'hexadecimalInteger';\n return\n }\n\n throw invalidChar(read())\n },\n\n hexadecimalInteger () {\n if (util.isHexDigit(c)) {\n buffer += read();\n return\n }\n\n return newToken('numeric', sign * Number(buffer))\n },\n\n string () {\n switch (c) {\n case '\\\\':\n read();\n buffer += escape();\n return\n\n case '\"':\n if (doubleQuote) {\n read();\n return newToken('string', buffer)\n }\n\n buffer += read();\n return\n\n case \"'\":\n if (!doubleQuote) {\n read();\n return newToken('string', buffer)\n }\n\n buffer += read();\n return\n\n case '\\n':\n case '\\r':\n throw invalidChar(read())\n\n case '\\u2028':\n case '\\u2029':\n separatorChar(c);\n break\n\n case undefined:\n throw invalidChar(read())\n }\n\n buffer += read();\n },\n\n start () {\n switch (c) {\n case '{':\n case '[':\n return newToken('punctuator', read())\n\n // This code is unreachable since the default lexState handles eof.\n // case undefined:\n // return newToken('eof')\n }\n\n lexState = 'value';\n },\n\n beforePropertyName () {\n switch (c) {\n case '$':\n case '_':\n buffer = read();\n lexState = 'identifierName';\n return\n\n case '\\\\':\n read();\n lexState = 'identifierNameStartEscape';\n return\n\n case '}':\n return newToken('punctuator', read())\n\n case '\"':\n case \"'\":\n doubleQuote = (read() === '\"');\n lexState = 'string';\n return\n }\n\n if (util.isIdStartChar(c)) {\n buffer += read();\n lexState = 'identifierName';\n return\n }\n\n throw invalidChar(read())\n },\n\n afterPropertyName () {\n if (c === ':') {\n return newToken('punctuator', read())\n }\n\n throw invalidChar(read())\n },\n\n beforePropertyValue () {\n lexState = 'value';\n },\n\n afterPropertyValue () {\n switch (c) {\n case ',':\n case '}':\n return newToken('punctuator', read())\n }\n\n throw invalidChar(read())\n },\n\n beforeArrayValue () {\n if (c === ']') {\n return newToken('punctuator', read())\n }\n\n lexState = 'value';\n },\n\n afterArrayValue () {\n switch (c) {\n case ',':\n case ']':\n return newToken('punctuator', read())\n }\n\n throw invalidChar(read())\n },\n\n end () {\n // This code is unreachable since it's handled by the default lexState.\n // if (c === undefined) {\n // read()\n // return newToken('eof')\n // }\n\n throw invalidChar(read())\n },\n};\n\nfunction newToken (type, value) {\n return {\n type,\n value,\n line,\n column,\n }\n}\n\nfunction literal (s) {\n for (const c of s) {\n const p = peek();\n\n if (p !== c) {\n throw invalidChar(read())\n }\n\n read();\n }\n}\n\nfunction escape () {\n const c = peek();\n switch (c) {\n case 'b':\n read();\n return '\\b'\n\n case 'f':\n read();\n return '\\f'\n\n case 'n':\n read();\n return '\\n'\n\n case 'r':\n read();\n return '\\r'\n\n case 't':\n read();\n return '\\t'\n\n case 'v':\n read();\n return '\\v'\n\n case '0':\n read();\n if (util.isDigit(peek())) {\n throw invalidChar(read())\n }\n\n return '\\0'\n\n case 'x':\n read();\n return hexEscape()\n\n case 'u':\n read();\n return unicodeEscape()\n\n case '\\n':\n case '\\u2028':\n case '\\u2029':\n read();\n return ''\n\n case '\\r':\n read();\n if (peek() === '\\n') {\n read();\n }\n\n return ''\n\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n throw invalidChar(read())\n\n case undefined:\n throw invalidChar(read())\n }\n\n return read()\n}\n\nfunction hexEscape () {\n let buffer = '';\n let c = peek();\n\n if (!util.isHexDigit(c)) {\n throw invalidChar(read())\n }\n\n buffer += read();\n\n c = peek();\n if (!util.isHexDigit(c)) {\n throw invalidChar(read())\n }\n\n buffer += read();\n\n return String.fromCodePoint(parseInt(buffer, 16))\n}\n\nfunction unicodeEscape () {\n let buffer = '';\n let count = 4;\n\n while (count-- > 0) {\n const c = peek();\n if (!util.isHexDigit(c)) {\n throw invalidChar(read())\n }\n\n buffer += read();\n }\n\n return String.fromCodePoint(parseInt(buffer, 16))\n}\n\nconst parseStates = {\n start () {\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n push();\n },\n\n beforePropertyName () {\n switch (token.type) {\n case 'identifier':\n case 'string':\n key = token.value;\n parseState = 'afterPropertyName';\n return\n\n case 'punctuator':\n // This code is unreachable since it's handled by the lexState.\n // if (token.value !== '}') {\n // throw invalidToken()\n // }\n\n pop();\n return\n\n case 'eof':\n throw invalidEOF()\n }\n\n // This code is unreachable since it's handled by the lexState.\n // throw invalidToken()\n },\n\n afterPropertyName () {\n // This code is unreachable since it's handled by the lexState.\n // if (token.type !== 'punctuator' || token.value !== ':') {\n // throw invalidToken()\n // }\n\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n parseState = 'beforePropertyValue';\n },\n\n beforePropertyValue () {\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n push();\n },\n\n beforeArrayValue () {\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n if (token.type === 'punctuator' && token.value === ']') {\n pop();\n return\n }\n\n push();\n },\n\n afterPropertyValue () {\n // This code is unreachable since it's handled by the lexState.\n // if (token.type !== 'punctuator') {\n // throw invalidToken()\n // }\n\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n switch (token.value) {\n case ',':\n parseState = 'beforePropertyName';\n return\n\n case '}':\n pop();\n }\n\n // This code is unreachable since it's handled by the lexState.\n // throw invalidToken()\n },\n\n afterArrayValue () {\n // This code is unreachable since it's handled by the lexState.\n // if (token.type !== 'punctuator') {\n // throw invalidToken()\n // }\n\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n switch (token.value) {\n case ',':\n parseState = 'beforeArrayValue';\n return\n\n case ']':\n pop();\n }\n\n // This code is unreachable since it's handled by the lexState.\n // throw invalidToken()\n },\n\n end () {\n // This code is unreachable since it's handled by the lexState.\n // if (token.type !== 'eof') {\n // throw invalidToken()\n // }\n },\n};\n\nfunction push () {\n let value;\n\n switch (token.type) {\n case 'punctuator':\n switch (token.value) {\n case '{':\n value = {};\n break\n\n case '[':\n value = [];\n break\n }\n\n break\n\n case 'null':\n case 'boolean':\n case 'numeric':\n case 'string':\n value = token.value;\n break\n\n // This code is unreachable.\n // default:\n // throw invalidToken()\n }\n\n if (root === undefined) {\n root = value;\n } else {\n const parent = stack[stack.length - 1];\n if (Array.isArray(parent)) {\n parent.push(value);\n } else {\n parent[key] = value;\n }\n }\n\n if (value !== null && typeof value === 'object') {\n stack.push(value);\n\n if (Array.isArray(value)) {\n parseState = 'beforeArrayValue';\n } else {\n parseState = 'beforePropertyName';\n }\n } else {\n const current = stack[stack.length - 1];\n if (current == null) {\n parseState = 'end';\n } else if (Array.isArray(current)) {\n parseState = 'afterArrayValue';\n } else {\n parseState = 'afterPropertyValue';\n }\n }\n}\n\nfunction pop () {\n stack.pop();\n\n const current = stack[stack.length - 1];\n if (current == null) {\n parseState = 'end';\n } else if (Array.isArray(current)) {\n parseState = 'afterArrayValue';\n } else {\n parseState = 'afterPropertyValue';\n }\n}\n\n// This code is unreachable.\n// function invalidParseState () {\n// return new Error(`JSON5: invalid parse state '${parseState}'`)\n// }\n\n// This code is unreachable.\n// function invalidLexState (state) {\n// return new Error(`JSON5: invalid lex state '${state}'`)\n// }\n\nfunction invalidChar (c) {\n if (c === undefined) {\n return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)\n }\n\n return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`)\n}\n\nfunction invalidEOF () {\n return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)\n}\n\n// This code is unreachable.\n// function invalidToken () {\n// if (token.type === 'eof') {\n// return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)\n// }\n\n// const c = String.fromCodePoint(token.value.codePointAt(0))\n// return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`)\n// }\n\nfunction invalidIdentifier () {\n column -= 5;\n return syntaxError(`JSON5: invalid identifier character at ${line}:${column}`)\n}\n\nfunction separatorChar (c) {\n console.warn(`JSON5: '${formatChar(c)}' in strings is not valid ECMAScript; consider escaping`);\n}\n\nfunction formatChar (c) {\n const replacements = {\n \"'\": \"\\\\'\",\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\',\n '\\b': '\\\\b',\n '\\f': '\\\\f',\n '\\n': '\\\\n',\n '\\r': '\\\\r',\n '\\t': '\\\\t',\n '\\v': '\\\\v',\n '\\0': '\\\\0',\n '\\u2028': '\\\\u2028',\n '\\u2029': '\\\\u2029',\n };\n\n if (replacements[c]) {\n return replacements[c]\n }\n\n if (c < ' ') {\n const hexString = c.charCodeAt(0).toString(16);\n return '\\\\x' + ('00' + hexString).substring(hexString.length)\n }\n\n return c\n}\n\nfunction syntaxError (message) {\n const err = new SyntaxError(message);\n err.lineNumber = line;\n err.columnNumber = column;\n return err\n}\n\nvar stringify = function stringify (value, replacer, space) {\n const stack = [];\n let indent = '';\n let propertyList;\n let replacerFunc;\n let gap = '';\n let quote;\n\n if (\n replacer != null &&\n typeof replacer === 'object' &&\n !Array.isArray(replacer)\n ) {\n space = replacer.space;\n quote = replacer.quote;\n replacer = replacer.replacer;\n }\n\n if (typeof replacer === 'function') {\n replacerFunc = replacer;\n } else if (Array.isArray(replacer)) {\n propertyList = [];\n for (const v of replacer) {\n let item;\n\n if (typeof v === 'string') {\n item = v;\n } else if (\n typeof v === 'number' ||\n v instanceof String ||\n v instanceof Number\n ) {\n item = String(v);\n }\n\n if (item !== undefined && propertyList.indexOf(item) < 0) {\n propertyList.push(item);\n }\n }\n }\n\n if (space instanceof Number) {\n space = Number(space);\n } else if (space instanceof String) {\n space = String(space);\n }\n\n if (typeof space === 'number') {\n if (space > 0) {\n space = Math.min(10, Math.floor(space));\n gap = ' '.substr(0, space);\n }\n } else if (typeof space === 'string') {\n gap = space.substr(0, 10);\n }\n\n return serializeProperty('', {'': value})\n\n function serializeProperty (key, holder) {\n let value = holder[key];\n if (value != null) {\n if (typeof value.toJSON5 === 'function') {\n value = value.toJSON5(key);\n } else if (typeof value.toJSON === 'function') {\n value = value.toJSON(key);\n }\n }\n\n if (replacerFunc) {\n value = replacerFunc.call(holder, key, value);\n }\n\n if (value instanceof Number) {\n value = Number(value);\n } else if (value instanceof String) {\n value = String(value);\n } else if (value instanceof Boolean) {\n value = value.valueOf();\n }\n\n switch (value) {\n case null: return 'null'\n case true: return 'true'\n case false: return 'false'\n }\n\n if (typeof value === 'string') {\n return quoteString(value, false)\n }\n\n if (typeof value === 'number') {\n return String(value)\n }\n\n if (typeof value === 'object') {\n return Array.isArray(value) ? serializeArray(value) : serializeObject(value)\n }\n\n return undefined\n }\n\n function quoteString (value) {\n const quotes = {\n \"'\": 0.1,\n '\"': 0.2,\n };\n\n const replacements = {\n \"'\": \"\\\\'\",\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\',\n '\\b': '\\\\b',\n '\\f': '\\\\f',\n '\\n': '\\\\n',\n '\\r': '\\\\r',\n '\\t': '\\\\t',\n '\\v': '\\\\v',\n '\\0': '\\\\0',\n '\\u2028': '\\\\u2028',\n '\\u2029': '\\\\u2029',\n };\n\n let product = '';\n\n for (let i = 0; i < value.length; i++) {\n const c = value[i];\n switch (c) {\n case \"'\":\n case '\"':\n quotes[c]++;\n product += c;\n continue\n\n case '\\0':\n if (util.isDigit(value[i + 1])) {\n product += '\\\\x00';\n continue\n }\n }\n\n if (replacements[c]) {\n product += replacements[c];\n continue\n }\n\n if (c < ' ') {\n let hexString = c.charCodeAt(0).toString(16);\n product += '\\\\x' + ('00' + hexString).substring(hexString.length);\n continue\n }\n\n product += c;\n }\n\n const quoteChar = quote || Object.keys(quotes).reduce((a, b) => (quotes[a] < quotes[b]) ? a : b);\n\n product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar]);\n\n return quoteChar + product + quoteChar\n }\n\n function serializeObject (value) {\n if (stack.indexOf(value) >= 0) {\n throw TypeError('Converting circular structure to JSON5')\n }\n\n stack.push(value);\n\n let stepback = indent;\n indent = indent + gap;\n\n let keys = propertyList || Object.keys(value);\n let partial = [];\n for (const key of keys) {\n const propertyString = serializeProperty(key, value);\n if (propertyString !== undefined) {\n let member = serializeKey(key) + ':';\n if (gap !== '') {\n member += ' ';\n }\n member += propertyString;\n partial.push(member);\n }\n }\n\n let final;\n if (partial.length === 0) {\n final = '{}';\n } else {\n let properties;\n if (gap === '') {\n properties = partial.join(',');\n final = '{' + properties + '}';\n } else {\n let separator = ',\\n' + indent;\n properties = partial.join(separator);\n final = '{\\n' + indent + properties + ',\\n' + stepback + '}';\n }\n }\n\n stack.pop();\n indent = stepback;\n return final\n }\n\n function serializeKey (key) {\n if (key.length === 0) {\n return quoteString(key, true)\n }\n\n const firstChar = String.fromCodePoint(key.codePointAt(0));\n if (!util.isIdStartChar(firstChar)) {\n return quoteString(key, true)\n }\n\n for (let i = firstChar.length; i < key.length; i++) {\n if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) {\n return quoteString(key, true)\n }\n }\n\n return key\n }\n\n function serializeArray (value) {\n if (stack.indexOf(value) >= 0) {\n throw TypeError('Converting circular structure to JSON5')\n }\n\n stack.push(value);\n\n let stepback = indent;\n indent = indent + gap;\n\n let partial = [];\n for (let i = 0; i < value.length; i++) {\n const propertyString = serializeProperty(String(i), value);\n partial.push((propertyString !== undefined) ? propertyString : 'null');\n }\n\n let final;\n if (partial.length === 0) {\n final = '[]';\n } else {\n if (gap === '') {\n let properties = partial.join(',');\n final = '[' + properties + ']';\n } else {\n let separator = ',\\n' + indent;\n let properties = partial.join(separator);\n final = '[\\n' + indent + properties + ',\\n' + stepback + ']';\n }\n }\n\n stack.pop();\n indent = stepback;\n return final\n }\n};\n\nconst JSON5 = {\n parse,\n stringify,\n};\n\nvar lib = JSON5;\n\nexport default lib;\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport JSON5 from 'json5';\n\nimport type {Element} from './views/Components/types';\nimport type Store from './store';\n\nexport function printElement(element: Element, includeWeight: boolean = false) {\n let prefix = ' ';\n if (element.children.length > 0) {\n prefix = element.isCollapsed ? '▸' : '▾';\n }\n\n let key = '';\n if (element.key !== null) {\n key = ` key=\"${element.key}\"`;\n }\n\n let hocDisplayNames = null;\n if (element.hocDisplayNames !== null) {\n hocDisplayNames = [...element.hocDisplayNames];\n }\n\n const hocs =\n hocDisplayNames === null ? '' : ` [${hocDisplayNames.join('][')}]`;\n\n let suffix = '';\n if (includeWeight) {\n suffix = ` (${element.isCollapsed ? 1 : element.weight})`;\n }\n\n return `${' '.repeat(element.depth + 1)}${prefix} <${element.displayName ||\n 'null'}${key}>${hocs}${suffix}`;\n}\n\nexport function printOwnersList(\n elements: Array<Element>,\n includeWeight: boolean = false,\n) {\n return elements\n .map(element => printElement(element, includeWeight))\n .join('\\n');\n}\n\nexport function printStore(store: Store, includeWeight: boolean = false) {\n const snapshotLines = [];\n\n let rootWeight = 0;\n\n store.roots.forEach(rootID => {\n const {weight} = ((store.getElementByID(rootID): any): Element);\n\n snapshotLines.push('[root]' + (includeWeight ? ` (${weight})` : ''));\n\n for (let i = rootWeight; i < rootWeight + weight; i++) {\n const element = store.getElementAtIndex(i);\n\n if (element == null) {\n throw Error(`Could not find element at index ${i}`);\n }\n\n snapshotLines.push(printElement(element, includeWeight));\n }\n\n rootWeight += weight;\n });\n\n // Make sure the pretty-printed test align with the Store's reported number of total rows.\n if (rootWeight !== store.numElements) {\n throw Error(\n `Inconsistent Store state. Individual root weights (${rootWeight}) do not match total weight (${store.numElements})`,\n );\n }\n\n // If roots have been unmounted, verify that they've been removed from maps.\n // This helps ensure the Store doesn't leak memory.\n store.assertExpectedRootMapSizes();\n\n return snapshotLines.join('\\n');\n}\n\n// We use JSON.parse to parse string values\n// e.g. 'foo' is not valid JSON but it is a valid string\n// so this method replaces e.g. 'foo' with \"foo\"\nexport function sanitizeForParse(value: any) {\n if (typeof value === 'string') {\n if (\n value.length >= 2 &&\n value.charAt(0) === \"'\" &&\n value.charAt(value.length - 1) === \"'\"\n ) {\n return '\"' + value.substr(1, value.length - 2) + '\"';\n }\n }\n return value;\n}\n\nexport function smartParse(value: any) {\n switch (value) {\n case 'Infinity':\n return Infinity;\n case 'NaN':\n return NaN;\n case 'undefined':\n return undefined;\n default:\n return JSON5.parse(sanitizeForParse(value));\n }\n}\n\nexport function smartStringify(value: any) {\n if (typeof value === 'number') {\n if (Number.isNaN(value)) {\n return 'NaN';\n } else if (!Number.isFinite(value)) {\n return 'Infinity';\n }\n } else if (value === undefined) {\n return 'undefined';\n }\n\n return JSON.stringify(value);\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport {PROFILER_EXPORT_VERSION} from 'react-devtools-shared/src/constants';\n\nimport type {ProfilingDataBackend} from 'react-devtools-shared/src/backend/types';\nimport type {\n ProfilingDataExport,\n ProfilingDataForRootExport,\n ProfilingDataForRootFrontend,\n ProfilingDataFrontend,\n SnapshotNode,\n} from './types';\n\nconst commitGradient = [\n 'var(--color-commit-gradient-0)',\n 'var(--color-commit-gradient-1)',\n 'var(--color-commit-gradient-2)',\n 'var(--color-commit-gradient-3)',\n 'var(--color-commit-gradient-4)',\n 'var(--color-commit-gradient-5)',\n 'var(--color-commit-gradient-6)',\n 'var(--color-commit-gradient-7)',\n 'var(--color-commit-gradient-8)',\n 'var(--color-commit-gradient-9)',\n];\n\n// Combines info from the Store (frontend) and renderer interfaces (backend) into the format required by the Profiler UI.\n// This format can then be quickly exported (and re-imported).\nexport function prepareProfilingDataFrontendFromBackendAndStore(\n dataBackends: Array<ProfilingDataBackend>,\n operationsByRootID: Map<number, Array<Array<number>>>,\n snapshotsByRootID: Map<number, Map<number, SnapshotNode>>,\n): ProfilingDataFrontend {\n const dataForRoots: Map<number, ProfilingDataForRootFrontend> = new Map();\n\n dataBackends.forEach(dataBackend => {\n dataBackend.dataForRoots.forEach(\n ({\n commitData,\n displayName,\n initialTreeBaseDurations,\n interactionCommits,\n interactions,\n rootID,\n }) => {\n const operations = operationsByRootID.get(rootID);\n if (operations == null) {\n throw Error(`Could not find profiling operations for root ${rootID}`);\n }\n\n const snapshots = snapshotsByRootID.get(rootID);\n if (snapshots == null) {\n throw Error(`Could not find profiling snapshots for root ${rootID}`);\n }\n\n // Do not filter empty commits from the profiler data!\n // We used to do this, but it was error prone (see #18798).\n // A commit may appear to be empty (no actual durations) because of component filters,\n // but filtering these empty commits causes interaction commit indices to be off by N.\n // This not only corrupts the resulting data, but also potentially causes runtime errors.\n //\n // For that matter, hiding \"empty\" commits might cause confusion too.\n // A commit *did happen* even if none of the components the Profiler is showing were involved.\n const convertedCommitData = commitData.map(\n (commitDataBackend, commitIndex) => ({\n changeDescriptions:\n commitDataBackend.changeDescriptions != null\n ? new Map(commitDataBackend.changeDescriptions)\n : null,\n duration: commitDataBackend.duration,\n fiberActualDurations: new Map(\n commitDataBackend.fiberActualDurations,\n ),\n fiberSelfDurations: new Map(commitDataBackend.fiberSelfDurations),\n interactionIDs: commitDataBackend.interactionIDs,\n priorityLevel: commitDataBackend.priorityLevel,\n timestamp: commitDataBackend.timestamp,\n }),\n );\n\n dataForRoots.set(rootID, {\n commitData: convertedCommitData,\n displayName,\n initialTreeBaseDurations: new Map(initialTreeBaseDurations),\n interactionCommits: new Map(interactionCommits),\n interactions: new Map(interactions),\n operations,\n rootID,\n snapshots,\n });\n },\n );\n });\n\n return {dataForRoots, imported: false};\n}\n\n// Converts a Profiling data export into the format required by the Store.\nexport function prepareProfilingDataFrontendFromExport(\n profilingDataExport: ProfilingDataExport,\n): ProfilingDataFrontend {\n const {version} = profilingDataExport;\n\n if (version !== PROFILER_EXPORT_VERSION) {\n throw Error(`Unsupported profiler export version \"${version}\"`);\n }\n\n const dataForRoots: Map<number, ProfilingDataForRootFrontend> = new Map();\n profilingDataExport.dataForRoots.forEach(\n ({\n commitData,\n displayName,\n initialTreeBaseDurations,\n interactionCommits,\n interactions,\n operations,\n rootID,\n snapshots,\n }) => {\n dataForRoots.set(rootID, {\n commitData: commitData.map(\n ({\n changeDescriptions,\n duration,\n fiberActualDurations,\n fiberSelfDurations,\n interactionIDs,\n priorityLevel,\n timestamp,\n }) => ({\n changeDescriptions:\n changeDescriptions != null ? new Map(changeDescriptions) : null,\n duration,\n fiberActualDurations: new Map(fiberActualDurations),\n fiberSelfDurations: new Map(fiberSelfDurations),\n interactionIDs,\n priorityLevel,\n timestamp,\n }),\n ),\n displayName,\n initialTreeBaseDurations: new Map(initialTreeBaseDurations),\n interactionCommits: new Map(interactionCommits),\n interactions: new Map(interactions),\n operations,\n rootID,\n snapshots: new Map(snapshots),\n });\n },\n );\n\n return {dataForRoots, imported: true};\n}\n\n// Converts a Store Profiling data into a format that can be safely (JSON) serialized for export.\nexport function prepareProfilingDataExport(\n profilingDataFrontend: ProfilingDataFrontend,\n): ProfilingDataExport {\n const dataForRoots: Array<ProfilingDataForRootExport> = [];\n profilingDataFrontend.dataForRoots.forEach(\n ({\n commitData,\n displayName,\n initialTreeBaseDurations,\n interactionCommits,\n interactions,\n operations,\n rootID,\n snapshots,\n }) => {\n dataForRoots.push({\n commitData: commitData.map(\n ({\n changeDescriptions,\n duration,\n fiberActualDurations,\n fiberSelfDurations,\n interactionIDs,\n priorityLevel,\n timestamp,\n }) => ({\n changeDescriptions:\n changeDescriptions != null\n ? Array.from(changeDescriptions.entries())\n : null,\n duration,\n fiberActualDurations: Array.from(fiberActualDurations.entries()),\n fiberSelfDurations: Array.from(fiberSelfDurations.entries()),\n interactionIDs,\n priorityLevel,\n timestamp,\n }),\n ),\n displayName,\n initialTreeBaseDurations: Array.from(\n initialTreeBaseDurations.entries(),\n ),\n interactionCommits: Array.from(interactionCommits.entries()),\n interactions: Array.from(interactions.entries()),\n operations,\n rootID,\n snapshots: Array.from(snapshots.entries()),\n });\n },\n );\n\n return {\n version: PROFILER_EXPORT_VERSION,\n dataForRoots,\n };\n}\n\nexport const getGradientColor = (value: number) => {\n const maxIndex = commitGradient.length - 1;\n let index;\n if (Number.isNaN(value)) {\n index = 0;\n } else if (!Number.isFinite(value)) {\n index = maxIndex;\n } else {\n index = Math.max(0, Math.min(maxIndex, value)) * maxIndex;\n }\n return commitGradient[Math.round(index)];\n};\n\nexport const formatDuration = (duration: number) =>\n Math.round(duration * 10) / 10 || '<0.1';\nexport const formatPercentage = (percentage: number) =>\n Math.round(percentage * 100);\nexport const formatTime = (timestamp: number) =>\n Math.round(Math.round(timestamp) / 100) / 10;\n\nexport const scale = (\n minValue: number,\n maxValue: number,\n minRange: number,\n maxRange: number,\n) => (value: number, fallbackValue: number) =>\n maxValue - minValue === 0\n ? fallbackValue\n : ((value - minValue) / (maxValue - minValue)) * (maxRange - minRange);\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport {\n __DEBUG__,\n TREE_OPERATION_ADD,\n TREE_OPERATION_REMOVE,\n TREE_OPERATION_REORDER_CHILDREN,\n TREE_OPERATION_UPDATE_TREE_BASE_DURATION,\n} from 'react-devtools-shared/src/constants';\nimport {utfDecodeString} from 'react-devtools-shared/src/utils';\nimport {ElementTypeRoot} from 'react-devtools-shared/src/types';\nimport ProfilerStore from 'react-devtools-shared/src/devtools/ProfilerStore';\n\nimport type {ElementType} from 'react-devtools-shared/src/types';\nimport type {\n CommitTree,\n CommitTreeNode,\n ProfilingDataForRootFrontend,\n} from 'react-devtools-shared/src/devtools/views/Profiler/types';\n\nconst debug = (methodName, ...args) => {\n if (__DEBUG__) {\n console.log(\n `%cCommitTreeBuilder %c${methodName}`,\n 'color: pink; font-weight: bold;',\n 'font-weight: bold;',\n ...args,\n );\n }\n};\n\nconst rootToCommitTreeMap: Map<number, Array<CommitTree>> = new Map();\n\nexport function getCommitTree({\n commitIndex,\n profilerStore,\n rootID,\n}: {|\n commitIndex: number,\n profilerStore: ProfilerStore,\n rootID: number,\n|}): CommitTree {\n if (!rootToCommitTreeMap.has(rootID)) {\n rootToCommitTreeMap.set(rootID, []);\n }\n\n const commitTrees = ((rootToCommitTreeMap.get(\n rootID,\n ): any): Array<CommitTree>);\n\n if (commitIndex < commitTrees.length) {\n return commitTrees[commitIndex];\n }\n\n const {profilingData} = profilerStore;\n if (profilingData === null) {\n throw Error(`No profiling data available`);\n }\n\n const dataForRoot = profilingData.dataForRoots.get(rootID);\n if (dataForRoot == null) {\n throw Error(`Could not find profiling data for root \"${rootID}\"`);\n }\n\n const {operations} = dataForRoot;\n\n // Commits are generated sequentially and cached.\n // If this is the very first commit, start with the cached snapshot and apply the first mutation.\n // Otherwise load (or generate) the previous commit and append a mutation to it.\n if (commitIndex === 0) {\n const nodes = new Map();\n\n // Construct the initial tree.\n recursivelyInitializeTree(rootID, 0, nodes, dataForRoot);\n\n // Mutate the tree\n if (operations != null && commitIndex < operations.length) {\n const commitTree = updateTree({nodes, rootID}, operations[commitIndex]);\n\n if (__DEBUG__) {\n __printTree(commitTree);\n }\n\n commitTrees.push(commitTree);\n return commitTree;\n }\n } else {\n const previousCommitTree = getCommitTree({\n commitIndex: commitIndex - 1,\n profilerStore,\n rootID,\n });\n\n if (operations != null && commitIndex < operations.length) {\n const commitTree = updateTree(\n previousCommitTree,\n operations[commitIndex],\n );\n\n if (__DEBUG__) {\n __printTree(commitTree);\n }\n\n commitTrees.push(commitTree);\n return commitTree;\n }\n }\n\n throw Error(\n `getCommitTree(): Unable to reconstruct tree for root \"${rootID}\" and commit ${commitIndex}`,\n );\n}\n\nfunction recursivelyInitializeTree(\n id: number,\n parentID: number,\n nodes: Map<number, CommitTreeNode>,\n dataForRoot: ProfilingDataForRootFrontend,\n): void {\n const node = dataForRoot.snapshots.get(id);\n if (node != null) {\n nodes.set(id, {\n id,\n children: node.children,\n displayName: node.displayName,\n hocDisplayNames: node.hocDisplayNames,\n key: node.key,\n parentID,\n treeBaseDuration: ((dataForRoot.initialTreeBaseDurations.get(\n id,\n ): any): number),\n type: node.type,\n });\n\n node.children.forEach(childID =>\n recursivelyInitializeTree(childID, id, nodes, dataForRoot),\n );\n }\n}\n\nfunction updateTree(\n commitTree: CommitTree,\n operations: Array<number>,\n): CommitTree {\n // Clone the original tree so edits don't affect it.\n const nodes = new Map(commitTree.nodes);\n\n // Clone nodes before mutating them so edits don't affect them.\n const getClonedNode = (id: number): CommitTreeNode => {\n const clonedNode = ((Object.assign(\n {},\n nodes.get(id),\n ): any): CommitTreeNode);\n nodes.set(id, clonedNode);\n return clonedNode;\n };\n\n let i = 2;\n let id: number = ((null: any): number);\n\n // Reassemble the string table.\n const stringTable = [\n null, // ID = 0 corresponds to the null string.\n ];\n const stringTableSize = operations[i++];\n const stringTableEnd = i + stringTableSize;\n while (i < stringTableEnd) {\n const nextLength = operations[i++];\n const nextString = utfDecodeString(\n (operations.slice(i, i + nextLength): any),\n );\n stringTable.push(nextString);\n i += nextLength;\n }\n\n while (i < operations.length) {\n const operation = operations[i];\n\n switch (operation) {\n case TREE_OPERATION_ADD:\n id = ((operations[i + 1]: any): number);\n const type = ((operations[i + 2]: any): ElementType);\n\n i += 3;\n\n if (nodes.has(id)) {\n throw new Error(\n 'Commit tree already contains fiber ' +\n id +\n '. This is a bug in React DevTools.',\n );\n }\n\n if (type === ElementTypeRoot) {\n i++; // supportsProfiling flag\n i++; // hasOwnerMetadata flag\n\n if (__DEBUG__) {\n debug('Add', `new root fiber ${id}`);\n }\n\n const node: CommitTreeNode = {\n children: [],\n displayName: null,\n hocDisplayNames: null,\n id,\n key: null,\n parentID: 0,\n treeBaseDuration: 0, // This will be updated by a subsequent operation\n type,\n };\n\n nodes.set(id, node);\n } else {\n const parentID = ((operations[i]: any): number);\n i++;\n\n i++; // ownerID\n\n const displayNameStringID = operations[i];\n const displayName = stringTable[displayNameStringID];\n i++;\n\n const keyStringID = operations[i];\n const key = stringTable[keyStringID];\n i++;\n\n if (__DEBUG__) {\n debug(\n 'Add',\n `fiber ${id} (${displayName || 'null'}) as child of ${parentID}`,\n );\n }\n\n const parentNode = getClonedNode(parentID);\n parentNode.children = parentNode.children.concat(id);\n\n const node: CommitTreeNode = {\n children: [],\n displayName,\n hocDisplayNames: null,\n id,\n key,\n parentID,\n treeBaseDuration: 0, // This will be updated by a subsequent operation\n type,\n };\n\n nodes.set(id, node);\n }\n\n break;\n case TREE_OPERATION_REMOVE: {\n const removeLength = ((operations[i + 1]: any): number);\n i += 2;\n\n for (let removeIndex = 0; removeIndex < removeLength; removeIndex++) {\n id = ((operations[i]: any): number);\n i++;\n\n if (!nodes.has(id)) {\n throw new Error(\n 'Commit tree does not contain fiber ' +\n id +\n '. This is a bug in React DevTools.',\n );\n }\n\n const node = getClonedNode(id);\n const parentID = node.parentID;\n\n nodes.delete(id);\n\n if (!nodes.has(parentID)) {\n // No-op\n } else {\n const parentNode = getClonedNode(parentID);\n\n if (__DEBUG__) {\n debug('Remove', `fiber ${id} from parent ${parentID}`);\n }\n\n parentNode.children = parentNode.children.filter(\n childID => childID !== id,\n );\n }\n }\n break;\n }\n case TREE_OPERATION_REORDER_CHILDREN: {\n id = ((operations[i + 1]: any): number);\n const numChildren = ((operations[i + 2]: any): number);\n const children = ((operations.slice(\n i + 3,\n i + 3 + numChildren,\n ): any): Array<number>);\n\n i = i + 3 + numChildren;\n\n if (__DEBUG__) {\n debug('Re-order', `fiber ${id} children ${children.join(',')}`);\n }\n\n const node = getClonedNode(id);\n node.children = Array.from(children);\n\n break;\n }\n case TREE_OPERATION_UPDATE_TREE_BASE_DURATION: {\n id = operations[i + 1];\n\n const node = getClonedNode(id);\n node.treeBaseDuration = operations[i + 2] / 1000; // Convert microseconds back to milliseconds;\n\n if (__DEBUG__) {\n debug(\n 'Update',\n `fiber ${id} treeBaseDuration to ${node.treeBaseDuration}`,\n );\n }\n\n i += 3;\n break;\n }\n default:\n throw Error(`Unsupported Bridge operation ${operation}`);\n }\n }\n\n return {\n nodes,\n rootID: commitTree.rootID,\n };\n}\n\nexport function invalidateCommitTrees(): void {\n rootToCommitTreeMap.clear();\n}\n\n// DEBUG\nconst __printTree = (commitTree: CommitTree) => {\n if (__DEBUG__) {\n const {nodes, rootID} = commitTree;\n console.group('__printTree()');\n const queue = [rootID, 0];\n while (queue.length > 0) {\n const id = queue.shift();\n const depth = queue.shift();\n\n const node = nodes.get(id);\n if (node == null) {\n throw Error(`Could not find node with id \"${id}\" in commit tree`);\n }\n\n console.log(\n `${'•'.repeat(depth)}${node.id}:${node.displayName || ''} ${\n node.key ? `key:\"${node.key}\"` : ''\n } (${node.treeBaseDuration})`,\n );\n\n node.children.forEach(childID => {\n queue.push(childID, depth + 1);\n });\n }\n console.groupEnd();\n }\n};\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport {formatDuration} from './utils';\nimport ProfilerStore from 'react-devtools-shared/src/devtools/ProfilerStore';\n\nimport type {CommitTree} from './types';\n\nexport type ChartNode = {|\n actualDuration: number,\n didRender: boolean,\n id: number,\n label: string,\n name: string,\n offset: number,\n selfDuration: number,\n treeBaseDuration: number,\n|};\n\nexport type ChartData = {|\n baseDuration: number,\n depth: number,\n idToDepthMap: Map<number, number>,\n maxSelfDuration: number,\n renderPathNodes: Set<number>,\n rows: Array<Array<ChartNode>>,\n|};\n\nconst cachedChartData: Map<string, ChartData> = new Map();\n\nexport function getChartData({\n commitIndex,\n commitTree,\n profilerStore,\n rootID,\n}: {|\n commitIndex: number,\n commitTree: CommitTree,\n profilerStore: ProfilerStore,\n rootID: number,\n|}): ChartData {\n const commitDatum = profilerStore.getCommitData(rootID, commitIndex);\n\n const {fiberActualDurations, fiberSelfDurations} = commitDatum;\n const {nodes} = commitTree;\n\n const chartDataKey = `${rootID}-${commitIndex}`;\n if (cachedChartData.has(chartDataKey)) {\n return ((cachedChartData.get(chartDataKey): any): ChartData);\n }\n\n const idToDepthMap: Map<number, number> = new Map();\n const renderPathNodes: Set<number> = new Set();\n const rows: Array<Array<ChartNode>> = [];\n\n let maxDepth = 0;\n let maxSelfDuration = 0;\n\n // Generate flame graph structure using tree base durations.\n const walkTree = (id: number, rightOffset: number, currentDepth: number) => {\n idToDepthMap.set(id, currentDepth);\n\n const node = nodes.get(id);\n if (node == null) {\n throw Error(`Could not find node with id \"${id}\" in commit tree`);\n }\n\n const {\n children,\n displayName,\n hocDisplayNames,\n key,\n treeBaseDuration,\n } = node;\n\n const actualDuration = fiberActualDurations.get(id) || 0;\n const selfDuration = fiberSelfDurations.get(id) || 0;\n const didRender = fiberActualDurations.has(id);\n\n const name = displayName || 'Anonymous';\n const maybeKey = key !== null ? ` key=\"${key}\"` : '';\n\n let maybeBadge = '';\n if (hocDisplayNames !== null && hocDisplayNames.length > 0) {\n maybeBadge = ` (${hocDisplayNames[0]})`;\n }\n\n let label = `${name}${maybeBadge}${maybeKey}`;\n if (didRender) {\n label += ` (${formatDuration(selfDuration)}ms of ${formatDuration(\n actualDuration,\n )}ms)`;\n }\n\n maxDepth = Math.max(maxDepth, currentDepth);\n maxSelfDuration = Math.max(maxSelfDuration, selfDuration);\n\n const chartNode: ChartNode = {\n actualDuration,\n didRender,\n id,\n label,\n name,\n offset: rightOffset - treeBaseDuration,\n selfDuration,\n treeBaseDuration,\n };\n\n if (currentDepth > rows.length) {\n rows.push([chartNode]);\n } else {\n rows[currentDepth - 1].push(chartNode);\n }\n\n for (let i = children.length - 1; i >= 0; i--) {\n const childID = children[i];\n const childChartNode = walkTree(childID, rightOffset, currentDepth + 1);\n rightOffset -= childChartNode.treeBaseDuration;\n }\n\n return chartNode;\n };\n\n let baseDuration = 0;\n\n // Special case to handle unmounted roots.\n if (nodes.size > 0) {\n // Skip over the root; we don't want to show it in the flamegraph.\n const root = nodes.get(rootID);\n if (root == null) {\n throw Error(\n `Could not find root node with id \"${rootID}\" in commit tree`,\n );\n }\n\n // Don't assume a single root.\n // Component filters or Fragments might lead to multiple \"roots\" in a flame graph.\n for (let i = root.children.length - 1; i >= 0; i--) {\n const id = root.children[i];\n const node = nodes.get(id);\n if (node == null) {\n throw Error(`Could not find node with id \"${id}\" in commit tree`);\n }\n baseDuration += node.treeBaseDuration;\n walkTree(id, baseDuration, 1);\n }\n\n fiberActualDurations.forEach((duration, id) => {\n let node = nodes.get(id);\n if (node != null) {\n let currentID = node.parentID;\n while (currentID !== 0) {\n if (renderPathNodes.has(currentID)) {\n // We've already walked this path; we can skip it.\n break;\n } else {\n renderPathNodes.add(currentID);\n }\n\n node = nodes.get(currentID);\n currentID = node != null ? node.parentID : 0;\n }\n }\n });\n }\n\n const chartData = {\n baseDuration,\n depth: maxDepth,\n idToDepthMap,\n maxSelfDuration,\n renderPathNodes,\n rows,\n };\n\n cachedChartData.set(chartDataKey, chartData);\n\n return chartData;\n}\n\nexport function invalidateChartData(): void {\n cachedChartData.clear();\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport ProfilerStore from 'react-devtools-shared/src/devtools/ProfilerStore';\n\nimport type {Interaction} from './types';\n\nexport type ChartData = {|\n interactions: Array<Interaction>,\n lastInteractionTime: number,\n maxCommitDuration: number,\n|};\n\nconst cachedChartData: Map<number, ChartData> = new Map();\n\nexport function getChartData({\n profilerStore,\n rootID,\n}: {|\n profilerStore: ProfilerStore,\n rootID: number,\n|}): ChartData {\n if (cachedChartData.has(rootID)) {\n return ((cachedChartData.get(rootID): any): ChartData);\n }\n\n const dataForRoot = profilerStore.getDataForRoot(rootID);\n if (dataForRoot == null) {\n throw Error(`Could not find profiling data for root \"${rootID}\"`);\n }\n\n const {commitData, interactions} = dataForRoot;\n\n const lastInteractionTime =\n commitData.length > 0 ? commitData[commitData.length - 1].timestamp : 0;\n\n let maxCommitDuration = 0;\n\n commitData.forEach(commitDatum => {\n maxCommitDuration = Math.max(maxCommitDuration, commitDatum.duration);\n });\n\n const chartData = {\n interactions: Array.from(interactions.values()),\n lastInteractionTime,\n maxCommitDuration,\n };\n\n cachedChartData.set(rootID, chartData);\n\n return chartData;\n}\n\nexport function invalidateChartData(): void {\n cachedChartData.clear();\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport {\n ElementTypeForwardRef,\n ElementTypeMemo,\n} from 'react-devtools-shared/src/types';\nimport {formatDuration} from './utils';\nimport ProfilerStore from 'react-devtools-shared/src/devtools/ProfilerStore';\n\nimport type {CommitTree} from './types';\n\nexport type ChartNode = {|\n id: number,\n label: string,\n name: string,\n value: number,\n|};\n\nexport type ChartData = {|\n maxValue: number,\n nodes: Array<ChartNode>,\n|};\n\nconst cachedChartData: Map<string, ChartData> = new Map();\n\nexport function getChartData({\n commitIndex,\n commitTree,\n profilerStore,\n rootID,\n}: {|\n commitIndex: number,\n commitTree: CommitTree,\n profilerStore: ProfilerStore,\n rootID: number,\n|}): ChartData {\n const commitDatum = profilerStore.getCommitData(rootID, commitIndex);\n\n const {fiberActualDurations, fiberSelfDurations} = commitDatum;\n const {nodes} = commitTree;\n\n const chartDataKey = `${rootID}-${commitIndex}`;\n if (cachedChartData.has(chartDataKey)) {\n return ((cachedChartData.get(chartDataKey): any): ChartData);\n }\n\n let maxSelfDuration = 0;\n\n const chartNodes: Array<ChartNode> = [];\n fiberActualDurations.forEach((actualDuration, id) => {\n const node = nodes.get(id);\n\n if (node == null) {\n throw Error(`Could not find node with id \"${id}\" in commit tree`);\n }\n\n const {displayName, key, parentID, type} = node;\n\n // Don't show the root node in this chart.\n if (parentID === 0) {\n return;\n }\n const selfDuration = fiberSelfDurations.get(id) || 0;\n maxSelfDuration = Math.max(maxSelfDuration, selfDuration);\n\n const name = displayName || 'Anonymous';\n const maybeKey = key !== null ? ` key=\"${key}\"` : '';\n\n let maybeBadge = '';\n if (type === ElementTypeForwardRef) {\n maybeBadge = ' (ForwardRef)';\n } else if (type === ElementTypeMemo) {\n maybeBadge = ' (Memo)';\n }\n\n const label = `${name}${maybeBadge}${maybeKey} (${formatDuration(\n selfDuration,\n )}ms)`;\n chartNodes.push({\n id,\n label,\n name,\n value: selfDuration,\n });\n });\n\n const chartData = {\n maxValue: maxSelfDuration,\n nodes: chartNodes.sort((a, b) => b.value - a.value),\n };\n\n cachedChartData.set(chartDataKey, chartData);\n\n return chartData;\n}\n\nexport function invalidateChartData(): void {\n cachedChartData.clear();\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport ProfilerStore from './ProfilerStore';\nimport {\n getCommitTree,\n invalidateCommitTrees,\n} from 'react-devtools-shared/src/devtools/views/Profiler/CommitTreeBuilder';\nimport {\n getChartData as getFlamegraphChartData,\n invalidateChartData as invalidateFlamegraphChartData,\n} from 'react-devtools-shared/src/devtools/views/Profiler/FlamegraphChartBuilder';\nimport {\n getChartData as getInteractionsChartData,\n invalidateChartData as invalidateInteractionsChartData,\n} from 'react-devtools-shared/src/devtools/views/Profiler/InteractionsChartBuilder';\nimport {\n getChartData as getRankedChartData,\n invalidateChartData as invalidateRankedChartData,\n} from 'react-devtools-shared/src/devtools/views/Profiler/RankedChartBuilder';\n\nimport type {CommitTree} from 'react-devtools-shared/src/devtools/views/Profiler/types';\nimport type {ChartData as FlamegraphChartData} from 'react-devtools-shared/src/devtools/views/Profiler/FlamegraphChartBuilder';\nimport type {ChartData as InteractionsChartData} from 'react-devtools-shared/src/devtools/views/Profiler/InteractionsChartBuilder';\nimport type {ChartData as RankedChartData} from 'react-devtools-shared/src/devtools/views/Profiler/RankedChartBuilder';\n\nexport default class ProfilingCache {\n _fiberCommits: Map<number, Array<number>> = new Map();\n _profilerStore: ProfilerStore;\n\n constructor(profilerStore: ProfilerStore) {\n this._profilerStore = profilerStore;\n }\n\n getCommitTree = ({\n commitIndex,\n rootID,\n }: {|\n commitIndex: number,\n rootID: number,\n |}) =>\n getCommitTree({\n commitIndex,\n profilerStore: this._profilerStore,\n rootID,\n });\n\n getFiberCommits = ({\n fiberID,\n rootID,\n }: {|\n fiberID: number,\n rootID: number,\n |}): Array<number> => {\n const cachedFiberCommits = this._fiberCommits.get(fiberID);\n if (cachedFiberCommits != null) {\n return cachedFiberCommits;\n }\n\n const fiberCommits = [];\n const dataForRoot = this._profilerStore.getDataForRoot(rootID);\n dataForRoot.commitData.forEach((commitDatum, commitIndex) => {\n if (commitDatum.fiberActualDurations.has(fiberID)) {\n fiberCommits.push(commitIndex);\n }\n });\n\n this._fiberCommits.set(fiberID, fiberCommits);\n\n return fiberCommits;\n };\n\n getFlamegraphChartData = ({\n commitIndex,\n commitTree,\n rootID,\n }: {|\n commitIndex: number,\n commitTree: CommitTree,\n rootID: number,\n |}): FlamegraphChartData =>\n getFlamegraphChartData({\n commitIndex,\n commitTree,\n profilerStore: this._profilerStore,\n rootID,\n });\n\n getInteractionsChartData = ({\n rootID,\n }: {|\n rootID: number,\n |}): InteractionsChartData =>\n getInteractionsChartData({\n profilerStore: this._profilerStore,\n rootID,\n });\n\n getRankedChartData = ({\n commitIndex,\n commitTree,\n rootID,\n }: {|\n commitIndex: number,\n commitTree: CommitTree,\n rootID: number,\n |}): RankedChartData =>\n getRankedChartData({\n commitIndex,\n commitTree,\n profilerStore: this._profilerStore,\n rootID,\n });\n\n invalidate() {\n this._fiberCommits.clear();\n\n invalidateCommitTrees();\n invalidateFlamegraphChartData();\n invalidateInteractionsChartData();\n invalidateRankedChartData();\n }\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport EventEmitter from '../events';\nimport {prepareProfilingDataFrontendFromBackendAndStore} from './views/Profiler/utils';\nimport ProfilingCache from './ProfilingCache';\nimport Store from './store';\n\nimport type {FrontendBridge} from 'react-devtools-shared/src/bridge';\nimport type {ProfilingDataBackend} from 'react-devtools-shared/src/backend/types';\nimport type {\n CommitDataFrontend,\n ProfilingDataForRootFrontend,\n ProfilingDataFrontend,\n SnapshotNode,\n} from './views/Profiler/types';\n\nexport default class ProfilerStore extends EventEmitter<{|\n isProcessingData: [],\n isProfiling: [],\n profilingData: [],\n|}> {\n _bridge: FrontendBridge;\n\n // Suspense cache for lazily calculating derived profiling data.\n _cache: ProfilingCache;\n\n // Temporary store of profiling data from the backend renderer(s).\n // This data will be converted to the ProfilingDataFrontend format after being collected from all renderers.\n _dataBackends: Array<ProfilingDataBackend> = [];\n\n // Data from the most recently completed profiling session,\n // or data that has been imported from a previously exported session.\n // This object contains all necessary data to drive the Profiler UI interface,\n // even though some of it is lazily parsed/derived via the ProfilingCache.\n _dataFrontend: ProfilingDataFrontend | null = null;\n\n // Snapshot of all attached renderer IDs.\n // Once profiling is finished, this snapshot will be used to query renderers for profiling data.\n //\n // This map is initialized when profiling starts and updated when a new root is added while profiling;\n // Upon completion, it is converted into the exportable ProfilingDataFrontend format.\n _initialRendererIDs: Set<number> = new Set();\n\n // Snapshot of the state of the main Store (including all roots) when profiling started.\n // Once profiling is finished, this snapshot can be used along with \"operations\" messages emitted during profiling,\n // to reconstruct the state of each root for each commit.\n // It's okay to use a single root to store this information because node IDs are unique across all roots.\n //\n // This map is initialized when profiling starts and updated when a new root is added while profiling;\n // Upon completion, it is converted into the exportable ProfilingDataFrontend format.\n _initialSnapshotsByRootID: Map<number, Map<number, SnapshotNode>> = new Map();\n\n // Map of root (id) to a list of tree mutation that occur during profiling.\n // Once profiling is finished, these mutations can be used, along with the initial tree snapshots,\n // to reconstruct the state of each root for each commit.\n //\n // This map is only updated while profiling is in progress;\n // Upon completion, it is converted into the exportable ProfilingDataFrontend format.\n _inProgressOperationsByRootID: Map<number, Array<Array<number>>> = new Map();\n\n // The backend is currently profiling.\n // When profiling is in progress, operations are stored so that we can later reconstruct past commit trees.\n _isProfiling: boolean = false;\n\n // Tracks whether a specific renderer logged any profiling data during the most recent session.\n _rendererIDsThatReportedProfilingData: Set<number> = new Set();\n\n // After profiling, data is requested from each attached renderer using this queue.\n // So long as this queue is not empty, the store is retrieving and processing profiling data from the backend.\n _rendererQueue: Set<number> = new Set();\n\n _store: Store;\n\n constructor(\n bridge: FrontendBridge,\n store: Store,\n defaultIsProfiling: boolean,\n ) {\n super();\n\n this._bridge = bridge;\n this._isProfiling = defaultIsProfiling;\n this._store = store;\n\n bridge.addListener('operations', this.onBridgeOperations);\n bridge.addListener('profilingData', this.onBridgeProfilingData);\n bridge.addListener('profilingStatus', this.onProfilingStatus);\n bridge.addListener('shutdown', this.onBridgeShutdown);\n\n // It's possible that profiling has already started (e.g. \"reload and start profiling\")\n // so the frontend needs to ask the backend for its status after mounting.\n bridge.send('getProfilingStatus');\n\n this._cache = new ProfilingCache(this);\n }\n\n getCommitData(rootID: number, commitIndex: number): CommitDataFrontend {\n if (this._dataFrontend !== null) {\n const dataForRoot = this._dataFrontend.dataForRoots.get(rootID);\n if (dataForRoot != null) {\n const commitDatum = dataForRoot.commitData[commitIndex];\n if (commitDatum != null) {\n return commitDatum;\n }\n }\n }\n\n throw Error(\n `Could not find commit data for root \"${rootID}\" and commit ${commitIndex}`,\n );\n }\n\n getDataForRoot(rootID: number): ProfilingDataForRootFrontend {\n if (this._dataFrontend !== null) {\n const dataForRoot = this._dataFrontend.dataForRoots.get(rootID);\n if (dataForRoot != null) {\n return dataForRoot;\n }\n }\n\n throw Error(`Could not find commit data for root \"${rootID}\"`);\n }\n\n // Profiling data has been recorded for at least one root.\n get didRecordCommits(): boolean {\n return (\n this._dataFrontend !== null && this._dataFrontend.dataForRoots.size > 0\n );\n }\n\n get isProcessingData(): boolean {\n return this._rendererQueue.size > 0 || this._dataBackends.length > 0;\n }\n\n get isProfiling(): boolean {\n return this._isProfiling;\n }\n\n get profilingCache(): ProfilingCache {\n return this._cache;\n }\n\n get profilingData(): ProfilingDataFrontend | null {\n return this._dataFrontend;\n }\n set profilingData(value: ProfilingDataFrontend | null): void {\n if (this._isProfiling) {\n console.warn(\n 'Profiling data cannot be updated while profiling is in progress.',\n );\n return;\n }\n\n this._dataBackends.splice(0);\n this._dataFrontend = value;\n this._initialRendererIDs.clear();\n this._initialSnapshotsByRootID.clear();\n this._inProgressOperationsByRootID.clear();\n this._cache.invalidate();\n\n this.emit('profilingData');\n }\n\n clear(): void {\n this._dataBackends.splice(0);\n this._dataFrontend = null;\n this._initialRendererIDs.clear();\n this._initialSnapshotsByRootID.clear();\n this._inProgressOperationsByRootID.clear();\n this._rendererQueue.clear();\n\n // Invalidate suspense cache if profiling data is being (re-)recorded.\n // Note that we clear now because any existing data is \"stale\".\n this._cache.invalidate();\n\n this.emit('profilingData');\n }\n\n startProfiling(): void {\n this._bridge.send('startProfiling', this._store.recordChangeDescriptions);\n\n // Don't actually update the local profiling boolean yet!\n // Wait for onProfilingStatus() to confirm the status has changed.\n // This ensures the frontend and backend are in sync wrt which commits were profiled.\n // We do this to avoid mismatches on e.g. CommitTreeBuilder that would cause errors.\n }\n\n stopProfiling(): void {\n this._bridge.send('stopProfiling');\n\n // Don't actually update the local profiling boolean yet!\n // Wait for onProfilingStatus() to confirm the status has changed.\n // This ensures the frontend and backend are in sync wrt which commits were profiled.\n // We do this to avoid mismatches on e.g. CommitTreeBuilder that would cause errors.\n }\n\n _takeProfilingSnapshotRecursive = (\n elementID: number,\n profilingSnapshots: Map<number, SnapshotNode>,\n ) => {\n const element = this._store.getElementByID(elementID);\n if (element !== null) {\n const snapshotNode: SnapshotNode = {\n id: elementID,\n children: element.children.slice(0),\n displayName: element.displayName,\n hocDisplayNames: element.hocDisplayNames,\n key: element.key,\n type: element.type,\n };\n profilingSnapshots.set(elementID, snapshotNode);\n\n element.children.forEach(childID =>\n this._takeProfilingSnapshotRecursive(childID, profilingSnapshots),\n );\n }\n };\n\n onBridgeOperations = (operations: Array<number>) => {\n // The first two values are always rendererID and rootID\n const rendererID = operations[0];\n const rootID = operations[1];\n\n if (this._isProfiling) {\n let profilingOperations = this._inProgressOperationsByRootID.get(rootID);\n if (profilingOperations == null) {\n profilingOperations = [operations];\n this._inProgressOperationsByRootID.set(rootID, profilingOperations);\n } else {\n profilingOperations.push(operations);\n }\n\n if (!this._initialRendererIDs.has(rendererID)) {\n this._initialRendererIDs.add(rendererID);\n }\n\n if (!this._initialSnapshotsByRootID.has(rootID)) {\n this._initialSnapshotsByRootID.set(rootID, new Map());\n }\n\n this._rendererIDsThatReportedProfilingData.add(rendererID);\n }\n };\n\n onBridgeProfilingData = (dataBackend: ProfilingDataBackend) => {\n if (this._isProfiling) {\n // This should never happen, but if it does- ignore previous profiling data.\n return;\n }\n\n const {rendererID} = dataBackend;\n\n if (!this._rendererQueue.has(rendererID)) {\n throw Error(\n `Unexpected profiling data update from renderer \"${rendererID}\"`,\n );\n }\n\n this._dataBackends.push(dataBackend);\n this._rendererQueue.delete(rendererID);\n\n if (this._rendererQueue.size === 0) {\n this._dataFrontend = prepareProfilingDataFrontendFromBackendAndStore(\n this._dataBackends,\n this._inProgressOperationsByRootID,\n this._initialSnapshotsByRootID,\n );\n\n this._dataBackends.splice(0);\n\n this.emit('isProcessingData');\n }\n };\n\n onBridgeShutdown = () => {\n this._bridge.removeListener('operations', this.onBridgeOperations);\n this._bridge.removeListener('profilingData', this.onBridgeProfilingData);\n this._bridge.removeListener('profilingStatus', this.onProfilingStatus);\n this._bridge.removeListener('shutdown', this.onBridgeShutdown);\n };\n\n onProfilingStatus = (isProfiling: boolean) => {\n if (isProfiling) {\n this._dataBackends.splice(0);\n this._dataFrontend = null;\n this._initialRendererIDs.clear();\n this._initialSnapshotsByRootID.clear();\n this._inProgressOperationsByRootID.clear();\n this._rendererIDsThatReportedProfilingData.clear();\n this._rendererQueue.clear();\n\n // Record all renderer IDs initially too (in case of unmount)\n // eslint-disable-next-line no-for-of-loops/no-for-of-loops\n for (const rendererID of this._store.rootIDToRendererID.values()) {\n if (!this._initialRendererIDs.has(rendererID)) {\n this._initialRendererIDs.add(rendererID);\n }\n }\n\n // Record snapshot of tree at the time profiling is started.\n // This info is required to handle cases of e.g. nodes being removed during profiling.\n this._store.roots.forEach(rootID => {\n const profilingSnapshots = new Map();\n this._initialSnapshotsByRootID.set(rootID, profilingSnapshots);\n this._takeProfilingSnapshotRecursive(rootID, profilingSnapshots);\n });\n }\n\n if (this._isProfiling !== isProfiling) {\n this._isProfiling = isProfiling;\n\n // Invalidate suspense cache if profiling data is being (re-)recorded.\n // Note that we clear again, in case any views read from the cache while profiling.\n // (That would have resolved a now-stale value without any profiling data.)\n this._cache.invalidate();\n\n this.emit('isProfiling');\n\n // If we've just finished a profiling session, we need to fetch data stored in each renderer interface\n // and re-assemble it on the front-end into a format (ProfilingDataFrontend) that can power the Profiler UI.\n // During this time, DevTools UI should probably not be interactive.\n if (!isProfiling) {\n this._dataBackends.splice(0);\n this._rendererQueue.clear();\n\n // Only request data from renderers that actually logged it.\n // This avoids unnecessary bridge requests and also avoids edge case mixed renderer bugs.\n // (e.g. when v15 and v16 are both present)\n this._rendererIDsThatReportedProfilingData.forEach(rendererID => {\n if (!this._rendererQueue.has(rendererID)) {\n this._rendererQueue.add(rendererID);\n\n this._bridge.send('getProfilingData', {rendererID});\n }\n });\n\n this.emit('isProcessingData');\n }\n }\n };\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport EventEmitter from '../events';\nimport {inspect} from 'util';\nimport {\n TREE_OPERATION_ADD,\n TREE_OPERATION_REMOVE,\n TREE_OPERATION_REORDER_CHILDREN,\n TREE_OPERATION_UPDATE_TREE_BASE_DURATION,\n} from '../constants';\nimport {ElementTypeRoot} from '../types';\nimport {\n getSavedComponentFilters,\n saveComponentFilters,\n separateDisplayNameAndHOCs,\n shallowDiffers,\n utfDecodeString,\n} from '../utils';\nimport {localStorageGetItem, localStorageSetItem} from '../storage';\nimport {__DEBUG__} from '../constants';\nimport {printStore} from './utils';\nimport ProfilerStore from './ProfilerStore';\n\nimport type {Element} from './views/Components/types';\nimport type {ComponentFilter, ElementType} from '../types';\nimport type {FrontendBridge} from 'react-devtools-shared/src/bridge';\n\nconst debug = (methodName, ...args) => {\n if (__DEBUG__) {\n console.log(\n `%cStore %c${methodName}`,\n 'color: green; font-weight: bold;',\n 'font-weight: bold;',\n ...args,\n );\n }\n};\n\nconst LOCAL_STORAGE_COLLAPSE_ROOTS_BY_DEFAULT_KEY =\n 'React::DevTools::collapseNodesByDefault';\nconst LOCAL_STORAGE_RECORD_CHANGE_DESCRIPTIONS_KEY =\n 'React::DevTools::recordChangeDescriptions';\n\ntype Config = {|\n isProfiling?: boolean,\n supportsNativeInspection?: boolean,\n supportsReloadAndProfile?: boolean,\n supportsProfiling?: boolean,\n supportsTraceUpdates?: boolean,\n|};\n\nexport type Capabilities = {|\n hasOwnerMetadata: boolean,\n supportsProfiling: boolean,\n|};\n\n/**\n * The store is the single source of truth for updates from the backend.\n * ContextProviders can subscribe to the Store for specific things they want to provide.\n */\nexport default class Store extends EventEmitter<{|\n collapseNodesByDefault: [],\n componentFilters: [],\n mutated: [[Array<number>, Map<number, number>]],\n recordChangeDescriptions: [],\n roots: [],\n supportsNativeStyleEditor: [],\n supportsProfiling: [],\n supportsReloadAndProfile: [],\n unsupportedRendererVersionDetected: [],\n|}> {\n _bridge: FrontendBridge;\n\n // Should new nodes be collapsed by default when added to the tree?\n _collapseNodesByDefault: boolean = true;\n\n _componentFilters: Array<ComponentFilter>;\n\n // At least one of the injected renderers contains (DEV only) owner metadata.\n _hasOwnerMetadata: boolean = false;\n\n // Map of ID to (mutable) Element.\n // Elements are mutated to avoid excessive cloning during tree updates.\n // The InspectedElementContext also relies on this mutability for its WeakMap usage.\n _idToElement: Map<number, Element> = new Map();\n\n // Should the React Native style editor panel be shown?\n _isNativeStyleEditorSupported: boolean = false;\n\n // Can the backend use the Storage API (e.g. localStorage)?\n // If not, features like reload-and-profile will not work correctly and must be disabled.\n _isBackendStorageAPISupported: boolean = false;\n\n _nativeStyleEditorValidAttributes: $ReadOnlyArray<string> | null = null;\n\n // Map of element (id) to the set of elements (ids) it owns.\n // This map enables getOwnersListForElement() to avoid traversing the entire tree.\n _ownersMap: Map<number, Set<number>> = new Map();\n\n _profilerStore: ProfilerStore;\n\n _recordChangeDescriptions: boolean = false;\n\n // Incremented each time the store is mutated.\n // This enables a passive effect to detect a mutation between render and commit phase.\n _revision: number = 0;\n\n // This Array must be treated as immutable!\n // Passive effects will check it for changes between render and mount.\n _roots: $ReadOnlyArray<number> = [];\n\n _rootIDToCapabilities: Map<number, Capabilities> = new Map();\n\n // Renderer ID is needed to support inspection fiber props, state, and hooks.\n _rootIDToRendererID: Map<number, number> = new Map();\n\n // These options may be initially set by a confiugraiton option when constructing the Store.\n // In the case of \"supportsProfiling\", the option may be updated based on the injected renderers.\n _supportsNativeInspection: boolean = true;\n _supportsProfiling: boolean = false;\n _supportsReloadAndProfile: boolean = false;\n _supportsTraceUpdates: boolean = false;\n\n _unsupportedRendererVersionDetected: boolean = false;\n\n // Total number of visible elements (within all roots).\n // Used for windowing purposes.\n _weightAcrossRoots: number = 0;\n\n constructor(bridge: FrontendBridge, config?: Config) {\n super();\n\n if (__DEBUG__) {\n debug('constructor', 'subscribing to Bridge');\n }\n\n this._collapseNodesByDefault =\n localStorageGetItem(LOCAL_STORAGE_COLLAPSE_ROOTS_BY_DEFAULT_KEY) ===\n 'true';\n\n this._recordChangeDescriptions =\n localStorageGetItem(LOCAL_STORAGE_RECORD_CHANGE_DESCRIPTIONS_KEY) ===\n 'true';\n\n this._componentFilters = getSavedComponentFilters();\n\n let isProfiling = false;\n if (config != null) {\n isProfiling = config.isProfiling === true;\n\n const {\n supportsNativeInspection,\n supportsProfiling,\n supportsReloadAndProfile,\n supportsTraceUpdates,\n } = config;\n this._supportsNativeInspection = supportsNativeInspection !== false;\n if (supportsProfiling) {\n this._supportsProfiling = true;\n }\n if (supportsReloadAndProfile) {\n this._supportsReloadAndProfile = true;\n }\n if (supportsTraceUpdates) {\n this._supportsTraceUpdates = true;\n }\n }\n\n this._bridge = bridge;\n bridge.addListener('operations', this.onBridgeOperations);\n bridge.addListener(\n 'overrideComponentFilters',\n this.onBridgeOverrideComponentFilters,\n );\n bridge.addListener('shutdown', this.onBridgeShutdown);\n bridge.addListener(\n 'isBackendStorageAPISupported',\n this.onBridgeStorageSupported,\n );\n bridge.addListener(\n 'isNativeStyleEditorSupported',\n this.onBridgeNativeStyleEditorSupported,\n );\n bridge.addListener(\n 'unsupportedRendererVersion',\n this.onBridgeUnsupportedRendererVersion,\n );\n\n this._profilerStore = new ProfilerStore(bridge, this, isProfiling);\n }\n\n // This is only used in tests to avoid memory leaks.\n assertExpectedRootMapSizes() {\n if (this.roots.length === 0) {\n // The only safe time to assert these maps are empty is when the store is empty.\n this.assertMapSizeMatchesRootCount(this._idToElement, '_idToElement');\n this.assertMapSizeMatchesRootCount(this._ownersMap, '_ownersMap');\n }\n\n // These maps should always be the same size as the number of roots\n this.assertMapSizeMatchesRootCount(\n this._rootIDToCapabilities,\n '_rootIDToCapabilities',\n );\n this.assertMapSizeMatchesRootCount(\n this._rootIDToRendererID,\n '_rootIDToRendererID',\n );\n }\n\n // This is only used in tests to avoid memory leaks.\n assertMapSizeMatchesRootCount(map: Map<any, any>, mapName: string) {\n const expectedSize = this.roots.length;\n if (map.size !== expectedSize) {\n throw new Error(\n `Expected ${mapName} to contain ${expectedSize} items, but it contains ${\n map.size\n } items\\n\\n${inspect(map, {\n depth: 20,\n })}`,\n );\n }\n }\n\n get collapseNodesByDefault(): boolean {\n return this._collapseNodesByDefault;\n }\n set collapseNodesByDefault(value: boolean): void {\n this._collapseNodesByDefault = value;\n\n localStorageSetItem(\n LOCAL_STORAGE_COLLAPSE_ROOTS_BY_DEFAULT_KEY,\n value ? 'true' : 'false',\n );\n\n this.emit('collapseNodesByDefault');\n }\n\n get componentFilters(): Array<ComponentFilter> {\n return this._componentFilters;\n }\n set componentFilters(value: Array<ComponentFilter>): void {\n if (this._profilerStore.isProfiling) {\n // Re-mounting a tree while profiling is in progress might break a lot of assumptions.\n // If necessary, we could support this- but it doesn't seem like a necessary use case.\n throw Error('Cannot modify filter preferences while profiling');\n }\n\n // Filter updates are expensive to apply (since they impact the entire tree).\n // Let's determine if they've changed and avoid doing this work if they haven't.\n const prevEnabledComponentFilters = this._componentFilters.filter(\n filter => filter.isEnabled,\n );\n const nextEnabledComponentFilters = value.filter(\n filter => filter.isEnabled,\n );\n let haveEnabledFiltersChanged =\n prevEnabledComponentFilters.length !== nextEnabledComponentFilters.length;\n if (!haveEnabledFiltersChanged) {\n for (let i = 0; i < nextEnabledComponentFilters.length; i++) {\n const prevFilter = prevEnabledComponentFilters[i];\n const nextFilter = nextEnabledComponentFilters[i];\n if (shallowDiffers(prevFilter, nextFilter)) {\n haveEnabledFiltersChanged = true;\n break;\n }\n }\n }\n\n this._componentFilters = value;\n\n // Update persisted filter preferences stored in localStorage.\n saveComponentFilters(value);\n\n // Notify the renderer that filter prefernces have changed.\n // This is an expensive opreation; it unmounts and remounts the entire tree,\n // so only do it if the set of enabled component filters has changed.\n if (haveEnabledFiltersChanged) {\n this._bridge.send('updateComponentFilters', value);\n }\n\n this.emit('componentFilters');\n }\n\n get hasOwnerMetadata(): boolean {\n return this._hasOwnerMetadata;\n }\n\n get nativeStyleEditorValidAttributes(): $ReadOnlyArray<string> | null {\n return this._nativeStyleEditorValidAttributes;\n }\n\n get numElements(): number {\n return this._weightAcrossRoots;\n }\n\n get profilerStore(): ProfilerStore {\n return this._profilerStore;\n }\n\n get recordChangeDescriptions(): boolean {\n return this._recordChangeDescriptions;\n }\n set recordChangeDescriptions(value: boolean): void {\n this._recordChangeDescriptions = value;\n\n localStorageSetItem(\n LOCAL_STORAGE_RECORD_CHANGE_DESCRIPTIONS_KEY,\n value ? 'true' : 'false',\n );\n\n this.emit('recordChangeDescriptions');\n }\n\n get revision(): number {\n return this._revision;\n }\n\n get rootIDToRendererID(): Map<number, number> {\n return this._rootIDToRendererID;\n }\n\n get roots(): $ReadOnlyArray<number> {\n return this._roots;\n }\n\n get supportsNativeInspection(): boolean {\n return this._supportsNativeInspection;\n }\n\n get supportsNativeStyleEditor(): boolean {\n return this._isNativeStyleEditorSupported;\n }\n\n get supportsProfiling(): boolean {\n return this._supportsProfiling;\n }\n get supportsReloadAndProfile(): boolean {\n // Does the DevTools shell support reloading and eagerly injecting the renderer interface?\n // And if so, can the backend use the localStorage API?\n // Both of these are required for the reload-and-profile feature to work.\n return this._supportsReloadAndProfile && this._isBackendStorageAPISupported;\n }\n\n get supportsTraceUpdates(): boolean {\n return this._supportsTraceUpdates;\n }\n\n get unsupportedRendererVersionDetected(): boolean {\n return this._unsupportedRendererVersionDetected;\n }\n\n containsElement(id: number): boolean {\n return this._idToElement.get(id) != null;\n }\n\n getElementAtIndex(index: number): Element | null {\n if (index < 0 || index >= this.numElements) {\n console.warn(\n `Invalid index ${index} specified; store contains ${this.numElements} items.`,\n );\n\n return null;\n }\n\n // Find which root this element is in...\n let rootID;\n let root;\n let rootWeight = 0;\n for (let i = 0; i < this._roots.length; i++) {\n rootID = this._roots[i];\n root = ((this._idToElement.get(rootID): any): Element);\n if (root.children.length === 0) {\n continue;\n } else if (rootWeight + root.weight > index) {\n break;\n } else {\n rootWeight += root.weight;\n }\n }\n\n // Find the element in the tree using the weight of each node...\n // Skip over the root itself, because roots aren't visible in the Elements tree.\n let currentElement = ((root: any): Element);\n let currentWeight = rootWeight - 1;\n while (index !== currentWeight) {\n const numChildren = currentElement.children.length;\n for (let i = 0; i < numChildren; i++) {\n const childID = currentElement.children[i];\n const child = ((this._idToElement.get(childID): any): Element);\n const childWeight = child.isCollapsed ? 1 : child.weight;\n\n if (index <= currentWeight + childWeight) {\n currentWeight++;\n currentElement = child;\n break;\n } else {\n currentWeight += childWeight;\n }\n }\n }\n\n return ((currentElement: any): Element) || null;\n }\n\n getElementIDAtIndex(index: number): number | null {\n const element: Element | null = this.getElementAtIndex(index);\n return element === null ? null : element.id;\n }\n\n getElementByID(id: number): Element | null {\n const element = this._idToElement.get(id);\n if (element == null) {\n console.warn(`No element found with id \"${id}\"`);\n return null;\n }\n\n return element;\n }\n\n getIndexOfElementID(id: number): number | null {\n const element = this.getElementByID(id);\n\n if (element === null || element.parentID === 0) {\n return null;\n }\n\n // Walk up the tree to the root.\n // Increment the index by one for each node we encounter,\n // and by the weight of all nodes to the left of the current one.\n // This should be a relatively fast way of determining the index of a node within the tree.\n let previousID = id;\n let currentID = element.parentID;\n let index = 0;\n while (true) {\n const current = ((this._idToElement.get(currentID): any): Element);\n\n const {children} = current;\n for (let i = 0; i < children.length; i++) {\n const childID = children[i];\n if (childID === previousID) {\n break;\n }\n const child = ((this._idToElement.get(childID): any): Element);\n index += child.isCollapsed ? 1 : child.weight;\n }\n\n if (current.parentID === 0) {\n // We found the root; stop crawling.\n break;\n }\n\n index++;\n\n previousID = current.id;\n currentID = current.parentID;\n }\n\n // At this point, the current ID is a root (from the previous loop).\n // We also need to offset the index by previous root weights.\n for (let i = 0; i < this._roots.length; i++) {\n const rootID = this._roots[i];\n if (rootID === currentID) {\n break;\n }\n const root = ((this._idToElement.get(rootID): any): Element);\n index += root.weight;\n }\n\n return index;\n }\n\n getOwnersListForElement(ownerID: number): Array<Element> {\n const list = [];\n const element = this._idToElement.get(ownerID);\n if (element != null) {\n list.push({\n ...element,\n depth: 0,\n });\n\n const unsortedIDs = this._ownersMap.get(ownerID);\n if (unsortedIDs !== undefined) {\n const depthMap: Map<number, number> = new Map([[ownerID, 0]]);\n\n // Items in a set are ordered based on insertion.\n // This does not correlate with their order in the tree.\n // So first we need to order them.\n // I wish we could avoid this sorting operation; we could sort at insertion time,\n // but then we'd have to pay sorting costs even if the owners list was never used.\n // Seems better to defer the cost, since the set of ids is probably pretty small.\n const sortedIDs = Array.from(unsortedIDs).sort(\n (idA, idB) =>\n ((this.getIndexOfElementID(idA): any): number) -\n ((this.getIndexOfElementID(idB): any): number),\n );\n\n // Next we need to determine the appropriate depth for each element in the list.\n // The depth in the list may not correspond to the depth in the tree,\n // because the list has been filtered to remove intermediate components.\n // Perhaps the easiest way to do this is to walk up the tree until we reach either:\n // (1) another node that's already in the tree, or (2) the root (owner)\n // at which point, our depth is just the depth of that node plus one.\n sortedIDs.forEach(id => {\n const innerElement = this._idToElement.get(id);\n if (innerElement != null) {\n let parentID = innerElement.parentID;\n\n let depth = 0;\n while (parentID > 0) {\n if (parentID === ownerID || unsortedIDs.has(parentID)) {\n depth = depthMap.get(parentID) + 1;\n depthMap.set(id, depth);\n break;\n }\n const parent = this._idToElement.get(parentID);\n if (parent == null) {\n break;\n }\n parentID = parent.parentID;\n }\n\n if (depth === 0) {\n throw Error('Invalid owners list');\n }\n\n list.push({...innerElement, depth});\n }\n });\n }\n }\n\n return list;\n }\n\n getRendererIDForElement(id: number): number | null {\n let current = this._idToElement.get(id);\n while (current != null) {\n if (current.parentID === 0) {\n const rendererID = this._rootIDToRendererID.get(current.id);\n return rendererID == null ? null : rendererID;\n } else {\n current = this._idToElement.get(current.parentID);\n }\n }\n return null;\n }\n\n getRootIDForElement(id: number): number | null {\n let current = this._idToElement.get(id);\n while (current != null) {\n if (current.parentID === 0) {\n return current.id;\n } else {\n current = this._idToElement.get(current.parentID);\n }\n }\n return null;\n }\n\n isInsideCollapsedSubTree(id: number): boolean {\n let current = this._idToElement.get(id);\n while (current != null) {\n if (current.parentID === 0) {\n return false;\n } else {\n current = this._idToElement.get(current.parentID);\n if (current != null && current.isCollapsed) {\n return true;\n }\n }\n }\n return false;\n }\n\n // TODO Maybe split this into two methods: expand() and collapse()\n toggleIsCollapsed(id: number, isCollapsed: boolean): void {\n let didMutate = false;\n\n const element = this.getElementByID(id);\n if (element !== null) {\n if (isCollapsed) {\n if (element.type === ElementTypeRoot) {\n throw Error('Root nodes cannot be collapsed');\n }\n\n if (!element.isCollapsed) {\n didMutate = true;\n element.isCollapsed = true;\n\n const weightDelta = 1 - element.weight;\n\n let parentElement = ((this._idToElement.get(\n element.parentID,\n ): any): Element);\n while (parentElement != null) {\n // We don't need to break on a collapsed parent in the same way as the expand case below.\n // That's because collapsing a node doesn't \"bubble\" and affect its parents.\n parentElement.weight += weightDelta;\n parentElement = this._idToElement.get(parentElement.parentID);\n }\n }\n } else {\n let currentElement = element;\n while (currentElement != null) {\n const oldWeight = currentElement.isCollapsed\n ? 1\n : currentElement.weight;\n\n if (currentElement.isCollapsed) {\n didMutate = true;\n currentElement.isCollapsed = false;\n\n const newWeight = currentElement.isCollapsed\n ? 1\n : currentElement.weight;\n const weightDelta = newWeight - oldWeight;\n\n let parentElement = ((this._idToElement.get(\n currentElement.parentID,\n ): any): Element);\n while (parentElement != null) {\n parentElement.weight += weightDelta;\n if (parentElement.isCollapsed) {\n // It's important to break on a collapsed parent when expanding nodes.\n // That's because expanding a node \"bubbles\" up and expands all parents as well.\n // Breaking in this case prevents us from over-incrementing the expanded weights.\n break;\n }\n parentElement = this._idToElement.get(parentElement.parentID);\n }\n }\n\n currentElement =\n currentElement.parentID !== 0\n ? this.getElementByID(currentElement.parentID)\n : null;\n }\n }\n\n // Only re-calculate weights and emit an \"update\" event if the store was mutated.\n if (didMutate) {\n let weightAcrossRoots = 0;\n this._roots.forEach(rootID => {\n const {weight} = ((this.getElementByID(rootID): any): Element);\n weightAcrossRoots += weight;\n });\n this._weightAcrossRoots = weightAcrossRoots;\n\n // The Tree context's search reducer expects an explicit list of ids for nodes that were added or removed.\n // In this case, we can pass it empty arrays since nodes in a collapsed tree are still there (just hidden).\n // Updating the selected search index later may require auto-expanding a collapsed subtree though.\n this.emit('mutated', [[], new Map()]);\n }\n }\n }\n\n _adjustParentTreeWeight = (\n parentElement: Element | null,\n weightDelta: number,\n ) => {\n let isInsideCollapsedSubTree = false;\n\n while (parentElement != null) {\n parentElement.weight += weightDelta;\n\n // Additions and deletions within a collapsed subtree should not bubble beyond the collapsed parent.\n // Their weight will bubble up when the parent is expanded.\n if (parentElement.isCollapsed) {\n isInsideCollapsedSubTree = true;\n break;\n }\n\n parentElement = ((this._idToElement.get(\n parentElement.parentID,\n ): any): Element);\n }\n\n // Additions and deletions within a collapsed subtree should not affect the overall number of elements.\n if (!isInsideCollapsedSubTree) {\n this._weightAcrossRoots += weightDelta;\n }\n };\n\n onBridgeNativeStyleEditorSupported = ({\n isSupported,\n validAttributes,\n }: {|\n isSupported: boolean,\n validAttributes: ?$ReadOnlyArray<string>,\n |}) => {\n this._isNativeStyleEditorSupported = isSupported;\n this._nativeStyleEditorValidAttributes = validAttributes || null;\n\n this.emit('supportsNativeStyleEditor');\n };\n\n onBridgeOperations = (operations: Array<number>) => {\n if (__DEBUG__) {\n console.groupCollapsed('onBridgeOperations');\n debug('onBridgeOperations', operations.join(','));\n }\n\n let haveRootsChanged = false;\n\n // The first two values are always rendererID and rootID\n const rendererID = operations[0];\n\n const addedElementIDs: Array<number> = [];\n // This is a mapping of removed ID -> parent ID:\n const removedElementIDs: Map<number, number> = new Map();\n // We'll use the parent ID to adjust selection if it gets deleted.\n\n let i = 2;\n\n // Reassemble the string table.\n const stringTable = [\n null, // ID = 0 corresponds to the null string.\n ];\n const stringTableSize = operations[i++];\n const stringTableEnd = i + stringTableSize;\n while (i < stringTableEnd) {\n const nextLength = operations[i++];\n const nextString = utfDecodeString(\n (operations.slice(i, i + nextLength): any),\n );\n stringTable.push(nextString);\n i += nextLength;\n }\n\n while (i < operations.length) {\n const operation = operations[i];\n switch (operation) {\n case TREE_OPERATION_ADD: {\n const id = ((operations[i + 1]: any): number);\n const type = ((operations[i + 2]: any): ElementType);\n\n i += 3;\n\n if (this._idToElement.has(id)) {\n throw Error(\n `Cannot add node ${id} because a node with that id is already in the Store.`,\n );\n }\n\n let ownerID: number = 0;\n let parentID: number = ((null: any): number);\n if (type === ElementTypeRoot) {\n if (__DEBUG__) {\n debug('Add', `new root node ${id}`);\n }\n\n const supportsProfiling = operations[i] > 0;\n i++;\n\n const hasOwnerMetadata = operations[i] > 0;\n i++;\n\n this._roots = this._roots.concat(id);\n this._rootIDToRendererID.set(id, rendererID);\n this._rootIDToCapabilities.set(id, {\n hasOwnerMetadata,\n supportsProfiling,\n });\n\n this._idToElement.set(id, {\n children: [],\n depth: -1,\n displayName: null,\n hocDisplayNames: null,\n id,\n isCollapsed: false, // Never collapse roots; it would hide the entire tree.\n key: null,\n ownerID: 0,\n parentID: 0,\n type,\n weight: 0,\n });\n\n haveRootsChanged = true;\n } else {\n parentID = ((operations[i]: any): number);\n i++;\n\n ownerID = ((operations[i]: any): number);\n i++;\n\n const displayNameStringID = operations[i];\n const displayName = stringTable[displayNameStringID];\n i++;\n\n const keyStringID = operations[i];\n const key = stringTable[keyStringID];\n i++;\n\n if (__DEBUG__) {\n debug(\n 'Add',\n `node ${id} (${displayName || 'null'}) as child of ${parentID}`,\n );\n }\n\n if (!this._idToElement.has(parentID)) {\n throw Error(\n `Cannot add child ${id} to parent ${parentID} because parent node was not found in the Store.`,\n );\n }\n\n const parentElement = ((this._idToElement.get(\n parentID,\n ): any): Element);\n parentElement.children.push(id);\n\n const [\n displayNameWithoutHOCs,\n hocDisplayNames,\n ] = separateDisplayNameAndHOCs(displayName, type);\n\n const element: Element = {\n children: [],\n depth: parentElement.depth + 1,\n displayName: displayNameWithoutHOCs,\n hocDisplayNames,\n id,\n isCollapsed: this._collapseNodesByDefault,\n key,\n ownerID,\n parentID: parentElement.id,\n type,\n weight: 1,\n };\n\n this._idToElement.set(id, element);\n addedElementIDs.push(id);\n this._adjustParentTreeWeight(parentElement, 1);\n\n if (ownerID > 0) {\n let set = this._ownersMap.get(ownerID);\n if (set === undefined) {\n set = new Set();\n this._ownersMap.set(ownerID, set);\n }\n set.add(id);\n }\n }\n break;\n }\n case TREE_OPERATION_REMOVE: {\n const removeLength = ((operations[i + 1]: any): number);\n i += 2;\n\n for (let removeIndex = 0; removeIndex < removeLength; removeIndex++) {\n const id = ((operations[i]: any): number);\n\n if (!this._idToElement.has(id)) {\n throw Error(\n `Cannot remove node ${id} because no matching node was found in the Store.`,\n );\n }\n\n i += 1;\n\n const element = ((this._idToElement.get(id): any): Element);\n const {children, ownerID, parentID, weight} = element;\n if (children.length > 0) {\n throw new Error(`Node ${id} was removed before its children.`);\n }\n\n this._idToElement.delete(id);\n\n let parentElement = null;\n if (parentID === 0) {\n if (__DEBUG__) {\n debug('Remove', `node ${id} root`);\n }\n\n this._roots = this._roots.filter(rootID => rootID !== id);\n this._rootIDToRendererID.delete(id);\n this._rootIDToCapabilities.delete(id);\n\n haveRootsChanged = true;\n } else {\n if (__DEBUG__) {\n debug('Remove', `node ${id} from parent ${parentID}`);\n }\n parentElement = ((this._idToElement.get(parentID): any): Element);\n if (parentElement === undefined) {\n throw Error(\n `Cannot remove node ${id} from parent ${parentID} because no matching node was found in the Store.`,\n );\n }\n const index = parentElement.children.indexOf(id);\n parentElement.children.splice(index, 1);\n }\n\n this._adjustParentTreeWeight(parentElement, -weight);\n removedElementIDs.set(id, parentID);\n\n this._ownersMap.delete(id);\n if (ownerID > 0) {\n const set = this._ownersMap.get(ownerID);\n if (set !== undefined) {\n set.delete(id);\n }\n }\n }\n break;\n }\n case TREE_OPERATION_REORDER_CHILDREN: {\n const id = ((operations[i + 1]: any): number);\n const numChildren = ((operations[i + 2]: any): number);\n i += 3;\n\n if (!this._idToElement.has(id)) {\n throw Error(\n `Cannot reorder children for node ${id} because no matching node was found in the Store.`,\n );\n }\n\n const element = ((this._idToElement.get(id): any): Element);\n const children = element.children;\n if (children.length !== numChildren) {\n throw Error(\n `Children cannot be added or removed during a reorder operation.`,\n );\n }\n\n for (let j = 0; j < numChildren; j++) {\n const childID = operations[i + j];\n children[j] = childID;\n if (__DEV__) {\n // This check is more expensive so it's gated by __DEV__.\n const childElement = this._idToElement.get(childID);\n if (childElement == null || childElement.parentID !== id) {\n console.error(\n `Children cannot be added or removed during a reorder operation.`,\n );\n }\n }\n }\n i += numChildren;\n\n if (__DEBUG__) {\n debug('Re-order', `Node ${id} children ${children.join(',')}`);\n }\n break;\n }\n case TREE_OPERATION_UPDATE_TREE_BASE_DURATION:\n // Base duration updates are only sent while profiling is in progress.\n // We can ignore them at this point.\n // The profiler UI uses them lazily in order to generate the tree.\n i += 3;\n break;\n default:\n throw Error(`Unsupported Bridge operation ${operation}`);\n }\n }\n\n this._revision++;\n\n if (haveRootsChanged) {\n const prevSupportsProfiling = this._supportsProfiling;\n\n this._hasOwnerMetadata = false;\n this._supportsProfiling = false;\n this._rootIDToCapabilities.forEach(\n ({hasOwnerMetadata, supportsProfiling}) => {\n if (hasOwnerMetadata) {\n this._hasOwnerMetadata = true;\n }\n if (supportsProfiling) {\n this._supportsProfiling = true;\n }\n },\n );\n\n this.emit('roots');\n\n if (this._supportsProfiling !== prevSupportsProfiling) {\n this.emit('supportsProfiling');\n }\n }\n\n if (__DEBUG__) {\n console.log(printStore(this, true));\n console.groupEnd();\n }\n\n this.emit('mutated', [addedElementIDs, removedElementIDs]);\n };\n\n // Certain backends save filters on a per-domain basis.\n // In order to prevent filter preferences and applied filters from being out of sync,\n // this message enables the backend to override the frontend's current (\"saved\") filters.\n // This action should also override the saved filters too,\n // else reloading the frontend without reloading the backend would leave things out of sync.\n onBridgeOverrideComponentFilters = (\n componentFilters: Array<ComponentFilter>,\n ) => {\n this._componentFilters = componentFilters;\n\n saveComponentFilters(componentFilters);\n };\n\n onBridgeShutdown = () => {\n if (__DEBUG__) {\n debug('onBridgeShutdown', 'unsubscribing from Bridge');\n }\n\n this._bridge.removeListener('operations', this.onBridgeOperations);\n this._bridge.removeListener('shutdown', this.onBridgeShutdown);\n this._bridge.removeListener(\n 'isBackendStorageAPISupported',\n this.onBridgeStorageSupported,\n );\n };\n\n onBridgeStorageSupported = (isBackendStorageAPISupported: boolean) => {\n this._isBackendStorageAPISupported = isBackendStorageAPISupported;\n\n this.emit('supportsReloadAndProfile');\n };\n\n onBridgeUnsupportedRendererVersion = () => {\n this._unsupportedRendererVersionDetected = true;\n\n this.emit('unsupportedRendererVersionDetected');\n };\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport {gt, gte} from 'semver';\nimport {\n ComponentFilterDisplayName,\n ComponentFilterElementType,\n ComponentFilterHOC,\n ComponentFilterLocation,\n ElementTypeClass,\n ElementTypeContext,\n ElementTypeFunction,\n ElementTypeForwardRef,\n ElementTypeHostComponent,\n ElementTypeMemo,\n ElementTypeOtherOrUnknown,\n ElementTypeProfiler,\n ElementTypeRoot,\n ElementTypeSuspense,\n ElementTypeSuspenseList,\n} from 'react-devtools-shared/src/types';\nimport {\n deletePathInObject,\n getDisplayName,\n getDefaultComponentFilters,\n getInObject,\n getUID,\n renamePathInObject,\n setInObject,\n utfEncodeString,\n} from 'react-devtools-shared/src/utils';\nimport {sessionStorageGetItem} from 'react-devtools-shared/src/storage';\nimport {\n cleanForBridge,\n copyToClipboard,\n copyWithDelete,\n copyWithRename,\n copyWithSet,\n} from './utils';\nimport {\n __DEBUG__,\n SESSION_STORAGE_RELOAD_AND_PROFILE_KEY,\n SESSION_STORAGE_RECORD_CHANGE_DESCRIPTIONS_KEY,\n TREE_OPERATION_ADD,\n TREE_OPERATION_REMOVE,\n TREE_OPERATION_REORDER_CHILDREN,\n TREE_OPERATION_UPDATE_TREE_BASE_DURATION,\n} from '../constants';\nimport {inspectHooksOfFiber} from 'react-debug-tools';\nimport {\n patch as patchConsole,\n registerRenderer as registerRendererWithConsole,\n} from './console';\nimport {\n CONCURRENT_MODE_NUMBER,\n CONCURRENT_MODE_SYMBOL_STRING,\n DEPRECATED_ASYNC_MODE_SYMBOL_STRING,\n PROVIDER_NUMBER,\n PROVIDER_SYMBOL_STRING,\n CONTEXT_NUMBER,\n CONTEXT_SYMBOL_STRING,\n STRICT_MODE_NUMBER,\n STRICT_MODE_SYMBOL_STRING,\n PROFILER_NUMBER,\n PROFILER_SYMBOL_STRING,\n SCOPE_NUMBER,\n SCOPE_SYMBOL_STRING,\n FORWARD_REF_NUMBER,\n FORWARD_REF_SYMBOL_STRING,\n MEMO_NUMBER,\n MEMO_SYMBOL_STRING,\n} from './ReactSymbols';\n\nimport type {Fiber} from 'react-reconciler/src/ReactInternalTypes';\nimport type {\n ChangeDescription,\n CommitDataBackend,\n DevToolsHook,\n InspectedElement,\n InspectedElementPayload,\n InstanceAndStyle,\n NativeType,\n Owner,\n PathFrame,\n PathMatch,\n ProfilingDataBackend,\n ProfilingDataForRootBackend,\n ReactRenderer,\n RendererInterface,\n WorkTagMap,\n} from './types';\nimport type {Interaction} from 'react-devtools-shared/src/devtools/views/Profiler/types';\nimport type {\n ComponentFilter,\n ElementType,\n} from 'react-devtools-shared/src/types';\n\ntype getDisplayNameForFiberType = (fiber: Fiber) => string | null;\ntype getTypeSymbolType = (type: any) => Symbol | number;\n\ntype ReactPriorityLevelsType = {|\n ImmediatePriority: number,\n UserBlockingPriority: number,\n NormalPriority: number,\n LowPriority: number,\n IdlePriority: number,\n NoPriority: number,\n|};\n\ntype ReactTypeOfSideEffectType = {|\n NoFlags: number,\n PerformedWork: number,\n Placement: number,\n|};\n\nfunction getFiberFlags(fiber: Fiber): number {\n // The name of this field changed from \"effectTag\" to \"flags\"\n return fiber.flags !== undefined ? fiber.flags : (fiber: any).effectTag;\n}\n\n// Some environments (e.g. React Native / Hermes) don't support the performance API yet.\nconst getCurrentTime =\n typeof performance === 'object' && typeof performance.now === 'function'\n ? () => performance.now()\n : () => Date.now();\n\nexport function getInternalReactConstants(\n version: string,\n): {|\n getDisplayNameForFiber: getDisplayNameForFiberType,\n getTypeSymbol: getTypeSymbolType,\n ReactPriorityLevels: ReactPriorityLevelsType,\n ReactTypeOfSideEffect: ReactTypeOfSideEffectType,\n ReactTypeOfWork: WorkTagMap,\n|} {\n const ReactTypeOfSideEffect: ReactTypeOfSideEffectType = {\n NoFlags: 0b00,\n PerformedWork: 0b01,\n Placement: 0b10,\n };\n\n // **********************************************************\n // The section below is copied from files in React repo.\n // Keep it in sync, and add version guards if it changes.\n //\n // Technically these priority levels are invalid for versions before 16.9,\n // but 16.9 is the first version to report priority level to DevTools,\n // so we can avoid checking for earlier versions and support pre-16.9 canary releases in the process.\n const ReactPriorityLevels: ReactPriorityLevelsType = {\n ImmediatePriority: 99,\n UserBlockingPriority: 98,\n NormalPriority: 97,\n LowPriority: 96,\n IdlePriority: 95,\n NoPriority: 90,\n };\n\n let ReactTypeOfWork: WorkTagMap = ((null: any): WorkTagMap);\n\n // **********************************************************\n // The section below is copied from files in React repo.\n // Keep it in sync, and add version guards if it changes.\n //\n // TODO Update the gt() check below to be gte() whichever the next version number is.\n // Currently the version in Git is 17.0.2 (but that version has not been/may not end up being released).\n if (gt(version, '17.0.1')) {\n ReactTypeOfWork = {\n ClassComponent: 1,\n ContextConsumer: 9,\n ContextProvider: 10,\n CoroutineComponent: -1, // Removed\n CoroutineHandlerPhase: -1, // Removed\n DehydratedSuspenseComponent: 18, // Behind a flag\n ForwardRef: 11,\n Fragment: 7,\n FunctionComponent: 0,\n HostComponent: 5,\n HostPortal: 4,\n HostRoot: 3,\n HostText: 6,\n IncompleteClassComponent: 17,\n IndeterminateComponent: 2,\n LazyComponent: 16,\n LegacyHiddenComponent: 23,\n MemoComponent: 14,\n Mode: 8,\n OffscreenComponent: 22, // Experimental\n Profiler: 12,\n ScopeComponent: 21, // Experimental\n SimpleMemoComponent: 15,\n SuspenseComponent: 13,\n SuspenseListComponent: 19, // Experimental\n YieldComponent: -1, // Removed\n };\n } else if (gte(version, '17.0.0-alpha')) {\n ReactTypeOfWork = {\n ClassComponent: 1,\n ContextConsumer: 9,\n ContextProvider: 10,\n CoroutineComponent: -1, // Removed\n CoroutineHandlerPhase: -1, // Removed\n DehydratedSuspenseComponent: 18, // Behind a flag\n ForwardRef: 11,\n Fragment: 7,\n FunctionComponent: 0,\n HostComponent: 5,\n HostPortal: 4,\n HostRoot: 3,\n HostText: 6,\n IncompleteClassComponent: 17,\n IndeterminateComponent: 2,\n LazyComponent: 16,\n LegacyHiddenComponent: 24,\n MemoComponent: 14,\n Mode: 8,\n OffscreenComponent: 23, // Experimental\n Profiler: 12,\n ScopeComponent: 21, // Experimental\n SimpleMemoComponent: 15,\n SuspenseComponent: 13,\n SuspenseListComponent: 19, // Experimental\n YieldComponent: -1, // Removed\n };\n } else if (gte(version, '16.6.0-beta.0')) {\n ReactTypeOfWork = {\n ClassComponent: 1,\n ContextConsumer: 9,\n ContextProvider: 10,\n CoroutineComponent: -1, // Removed\n CoroutineHandlerPhase: -1, // Removed\n DehydratedSuspenseComponent: 18, // Behind a flag\n ForwardRef: 11,\n Fragment: 7,\n FunctionComponent: 0,\n HostComponent: 5,\n HostPortal: 4,\n HostRoot: 3,\n HostText: 6,\n IncompleteClassComponent: 17,\n IndeterminateComponent: 2,\n LazyComponent: 16,\n LegacyHiddenComponent: -1,\n MemoComponent: 14,\n Mode: 8,\n OffscreenComponent: -1, // Experimental\n Profiler: 12,\n ScopeComponent: -1, // Experimental\n SimpleMemoComponent: 15,\n SuspenseComponent: 13,\n SuspenseListComponent: 19, // Experimental\n YieldComponent: -1, // Removed\n };\n } else if (gte(version, '16.4.3-alpha')) {\n ReactTypeOfWork = {\n ClassComponent: 2,\n ContextConsumer: 11,\n ContextProvider: 12,\n CoroutineComponent: -1, // Removed\n CoroutineHandlerPhase: -1, // Removed\n DehydratedSuspenseComponent: -1, // Doesn't exist yet\n ForwardRef: 13,\n Fragment: 9,\n FunctionComponent: 0,\n HostComponent: 7,\n HostPortal: 6,\n HostRoot: 5,\n HostText: 8,\n IncompleteClassComponent: -1, // Doesn't exist yet\n IndeterminateComponent: 4,\n LazyComponent: -1, // Doesn't exist yet\n LegacyHiddenComponent: -1,\n MemoComponent: -1, // Doesn't exist yet\n Mode: 10,\n OffscreenComponent: -1, // Experimental\n Profiler: 15,\n ScopeComponent: -1, // Experimental\n SimpleMemoComponent: -1, // Doesn't exist yet\n SuspenseComponent: 16,\n SuspenseListComponent: -1, // Doesn't exist yet\n YieldComponent: -1, // Removed\n };\n } else {\n ReactTypeOfWork = {\n ClassComponent: 2,\n ContextConsumer: 12,\n ContextProvider: 13,\n CoroutineComponent: 7,\n CoroutineHandlerPhase: 8,\n DehydratedSuspenseComponent: -1, // Doesn't exist yet\n ForwardRef: 14,\n Fragment: 10,\n FunctionComponent: 1,\n HostComponent: 5,\n HostPortal: 4,\n HostRoot: 3,\n HostText: 6,\n IncompleteClassComponent: -1, // Doesn't exist yet\n IndeterminateComponent: 0,\n LazyComponent: -1, // Doesn't exist yet\n LegacyHiddenComponent: -1,\n MemoComponent: -1, // Doesn't exist yet\n Mode: 11,\n OffscreenComponent: -1, // Experimental\n Profiler: 15,\n ScopeComponent: -1, // Experimental\n SimpleMemoComponent: -1, // Doesn't exist yet\n SuspenseComponent: 16,\n SuspenseListComponent: -1, // Doesn't exist yet\n YieldComponent: 9,\n };\n }\n // **********************************************************\n // End of copied code.\n // **********************************************************\n\n function getTypeSymbol(type: any): Symbol | number {\n const symbolOrNumber =\n typeof type === 'object' && type !== null ? type.$$typeof : type;\n\n // $FlowFixMe Flow doesn't know about typeof \"symbol\"\n return typeof symbolOrNumber === 'symbol'\n ? symbolOrNumber.toString()\n : symbolOrNumber;\n }\n\n const {\n ClassComponent,\n IncompleteClassComponent,\n FunctionComponent,\n IndeterminateComponent,\n ForwardRef,\n HostRoot,\n HostComponent,\n HostPortal,\n HostText,\n Fragment,\n LazyComponent,\n LegacyHiddenComponent,\n MemoComponent,\n OffscreenComponent,\n ScopeComponent,\n SimpleMemoComponent,\n SuspenseComponent,\n SuspenseListComponent,\n } = ReactTypeOfWork;\n\n function resolveFiberType(type: any) {\n const typeSymbol = getTypeSymbol(type);\n switch (typeSymbol) {\n case MEMO_NUMBER:\n case MEMO_SYMBOL_STRING:\n // recursively resolving memo type in case of memo(forwardRef(Component))\n return resolveFiberType(type.type);\n case FORWARD_REF_NUMBER:\n case FORWARD_REF_SYMBOL_STRING:\n return type.render;\n default:\n return type;\n }\n }\n\n // NOTICE Keep in sync with shouldFilterFiber() and other get*ForFiber methods\n function getDisplayNameForFiber(fiber: Fiber): string | null {\n const {type, tag} = fiber;\n\n let resolvedType = type;\n if (typeof type === 'object' && type !== null) {\n resolvedType = resolveFiberType(type);\n }\n\n let resolvedContext: any = null;\n\n switch (tag) {\n case ClassComponent:\n case IncompleteClassComponent:\n return getDisplayName(resolvedType);\n case FunctionComponent:\n case IndeterminateComponent:\n return getDisplayName(resolvedType);\n case ForwardRef:\n // Mirror https://github.com/facebook/react/blob/7c21bf72ace77094fd1910cc350a548287ef8350/packages/shared/getComponentName.js#L27-L37\n return (\n (type && type.displayName) ||\n getDisplayName(resolvedType, 'Anonymous')\n );\n case HostRoot:\n return null;\n case HostComponent:\n return type;\n case HostPortal:\n case HostText:\n case Fragment:\n return null;\n case LazyComponent:\n // This display name will not be user visible.\n // Once a Lazy component loads its inner component, React replaces the tag and type.\n // This display name will only show up in console logs when DevTools DEBUG mode is on.\n return 'Lazy';\n case MemoComponent:\n case SimpleMemoComponent:\n return getDisplayName(resolvedType, 'Anonymous');\n case SuspenseComponent:\n return 'Suspense';\n case LegacyHiddenComponent:\n return 'LegacyHidden';\n case OffscreenComponent:\n return 'Offscreen';\n case ScopeComponent:\n return 'Scope';\n case SuspenseListComponent:\n return 'SuspenseList';\n default:\n const typeSymbol = getTypeSymbol(type);\n\n switch (typeSymbol) {\n case CONCURRENT_MODE_NUMBER:\n case CONCURRENT_MODE_SYMBOL_STRING:\n case DEPRECATED_ASYNC_MODE_SYMBOL_STRING:\n return null;\n case PROVIDER_NUMBER:\n case PROVIDER_SYMBOL_STRING:\n // 16.3.0 exposed the context object as \"context\"\n // PR #12501 changed it to \"_context\" for 16.3.1+\n // NOTE Keep in sync with inspectElementRaw()\n resolvedContext = fiber.type._context || fiber.type.context;\n return `${resolvedContext.displayName || 'Context'}.Provider`;\n case CONTEXT_NUMBER:\n case CONTEXT_SYMBOL_STRING:\n // 16.3-16.5 read from \"type\" because the Consumer is the actual context object.\n // 16.6+ should read from \"type._context\" because Consumer can be different (in DEV).\n // NOTE Keep in sync with inspectElementRaw()\n resolvedContext = fiber.type._context || fiber.type;\n\n // NOTE: TraceUpdatesBackendManager depends on the name ending in '.Consumer'\n // If you change the name, figure out a more resilient way to detect it.\n return `${resolvedContext.displayName || 'Context'}.Consumer`;\n case STRICT_MODE_NUMBER:\n case STRICT_MODE_SYMBOL_STRING:\n return null;\n case PROFILER_NUMBER:\n case PROFILER_SYMBOL_STRING:\n return `Profiler(${fiber.memoizedProps.id})`;\n case SCOPE_NUMBER:\n case SCOPE_SYMBOL_STRING:\n return 'Scope';\n default:\n // Unknown element type.\n // This may mean a new element type that has not yet been added to DevTools.\n return null;\n }\n }\n }\n\n return {\n getDisplayNameForFiber,\n getTypeSymbol,\n ReactPriorityLevels,\n ReactTypeOfWork,\n ReactTypeOfSideEffect,\n };\n}\n\nexport function attach(\n hook: DevToolsHook,\n rendererID: number,\n renderer: ReactRenderer,\n global: Object,\n): RendererInterface {\n const {\n getDisplayNameForFiber,\n getTypeSymbol,\n ReactPriorityLevels,\n ReactTypeOfWork,\n ReactTypeOfSideEffect,\n } = getInternalReactConstants(renderer.version);\n const {NoFlags, PerformedWork, Placement} = ReactTypeOfSideEffect;\n const {\n FunctionComponent,\n ClassComponent,\n ContextConsumer,\n DehydratedSuspenseComponent,\n Fragment,\n ForwardRef,\n HostRoot,\n HostPortal,\n HostComponent,\n HostText,\n IncompleteClassComponent,\n IndeterminateComponent,\n MemoComponent,\n OffscreenComponent,\n SimpleMemoComponent,\n SuspenseComponent,\n SuspenseListComponent,\n } = ReactTypeOfWork;\n const {\n ImmediatePriority,\n UserBlockingPriority,\n NormalPriority,\n LowPriority,\n IdlePriority,\n NoPriority,\n } = ReactPriorityLevels;\n\n const {\n overrideHookState,\n overrideHookStateDeletePath,\n overrideHookStateRenamePath,\n overrideProps,\n overridePropsDeletePath,\n overridePropsRenamePath,\n setSuspenseHandler,\n scheduleUpdate,\n } = renderer;\n const supportsTogglingSuspense =\n typeof setSuspenseHandler === 'function' &&\n typeof scheduleUpdate === 'function';\n\n // Patching the console enables DevTools to do a few useful things:\n // * Append component stacks to warnings and error messages\n // * Disable logging during re-renders to inspect hooks (see inspectHooksOfFiber)\n //\n // Don't patch in test environments because we don't want to interfere with Jest's own console overrides.\n if (process.env.NODE_ENV !== 'test') {\n registerRendererWithConsole(renderer);\n\n // The renderer interface can't read these preferences directly,\n // because it is stored in localStorage within the context of the extension.\n // It relies on the extension to pass the preference through via the global.\n const appendComponentStack =\n window.__REACT_DEVTOOLS_APPEND_COMPONENT_STACK__ !== false;\n const breakOnConsoleErrors =\n window.__REACT_DEVTOOLS_BREAK_ON_CONSOLE_ERRORS__ === true;\n if (appendComponentStack || breakOnConsoleErrors) {\n patchConsole({\n appendComponentStack,\n breakOnConsoleErrors,\n });\n }\n }\n\n const debug = (name: string, fiber: Fiber, parentFiber: ?Fiber): void => {\n if (__DEBUG__) {\n const displayName =\n fiber.tag + ':' + (getDisplayNameForFiber(fiber) || 'null');\n const id = getFiberID(fiber);\n const parentDisplayName = parentFiber\n ? parentFiber.tag +\n ':' +\n (getDisplayNameForFiber(parentFiber) || 'null')\n : '';\n const parentID = parentFiber ? getFiberID(parentFiber) : '';\n // NOTE: calling getFiberID or getPrimaryFiber is unsafe here\n // because it will put them in the map. For now, we'll omit them.\n // TODO: better debugging story for this.\n console.log(\n `[renderer] %c${name} %c${displayName} (${id}) %c${\n parentFiber ? `${parentDisplayName} (${parentID})` : ''\n }`,\n 'color: red; font-weight: bold;',\n 'color: blue;',\n 'color: purple;',\n );\n }\n };\n\n // Configurable Components tree filters.\n const hideElementsWithDisplayNames: Set<RegExp> = new Set();\n const hideElementsWithPaths: Set<RegExp> = new Set();\n const hideElementsWithTypes: Set<ElementType> = new Set();\n\n // Highlight updates\n let traceUpdatesEnabled: boolean = false;\n const traceUpdatesForNodes: Set<NativeType> = new Set();\n\n function applyComponentFilters(componentFilters: Array<ComponentFilter>) {\n hideElementsWithTypes.clear();\n hideElementsWithDisplayNames.clear();\n hideElementsWithPaths.clear();\n\n componentFilters.forEach(componentFilter => {\n if (!componentFilter.isEnabled) {\n return;\n }\n\n switch (componentFilter.type) {\n case ComponentFilterDisplayName:\n if (componentFilter.isValid && componentFilter.value !== '') {\n hideElementsWithDisplayNames.add(\n new RegExp(componentFilter.value, 'i'),\n );\n }\n break;\n case ComponentFilterElementType:\n hideElementsWithTypes.add(componentFilter.value);\n break;\n case ComponentFilterLocation:\n if (componentFilter.isValid && componentFilter.value !== '') {\n hideElementsWithPaths.add(new RegExp(componentFilter.value, 'i'));\n }\n break;\n case ComponentFilterHOC:\n hideElementsWithDisplayNames.add(new RegExp('\\\\('));\n break;\n default:\n console.warn(\n `Invalid component filter type \"${componentFilter.type}\"`,\n );\n break;\n }\n });\n }\n\n // The renderer interface can't read saved component filters directly,\n // because they are stored in localStorage within the context of the extension.\n // Instead it relies on the extension to pass filters through.\n if (window.__REACT_DEVTOOLS_COMPONENT_FILTERS__ != null) {\n applyComponentFilters(window.__REACT_DEVTOOLS_COMPONENT_FILTERS__);\n } else {\n // Unfortunately this feature is not expected to work for React Native for now.\n // It would be annoying for us to spam YellowBox warnings with unactionable stuff,\n // so for now just skip this message...\n //console.warn('⚛️ DevTools: Could not locate saved component filters');\n\n // Fallback to assuming the default filters in this case.\n applyComponentFilters(getDefaultComponentFilters());\n }\n\n // If necessary, we can revisit optimizing this operation.\n // For example, we could add a new recursive unmount tree operation.\n // The unmount operations are already significantly smaller than mount operations though.\n // This is something to keep in mind for later.\n function updateComponentFilters(componentFilters: Array<ComponentFilter>) {\n if (isProfiling) {\n // Re-mounting a tree while profiling is in progress might break a lot of assumptions.\n // If necessary, we could support this- but it doesn't seem like a necessary use case.\n throw Error('Cannot modify filter preferences while profiling');\n }\n\n // Recursively unmount all roots.\n hook.getFiberRoots(rendererID).forEach(root => {\n currentRootID = getFiberID(getPrimaryFiber(root.current));\n unmountFiberChildrenRecursively(root.current);\n recordUnmount(root.current, false);\n currentRootID = -1;\n });\n\n applyComponentFilters(componentFilters);\n\n // Reset pseudo counters so that new path selections will be persisted.\n rootDisplayNameCounter.clear();\n\n // Recursively re-mount all roots with new filter criteria applied.\n hook.getFiberRoots(rendererID).forEach(root => {\n currentRootID = getFiberID(getPrimaryFiber(root.current));\n setRootPseudoKey(currentRootID, root.current);\n mountFiberRecursively(root.current, null, false, false);\n flushPendingEvents(root);\n currentRootID = -1;\n });\n }\n\n // NOTICE Keep in sync with get*ForFiber methods\n function shouldFilterFiber(fiber: Fiber): boolean {\n const {_debugSource, tag, type} = fiber;\n\n switch (tag) {\n case DehydratedSuspenseComponent:\n // TODO: ideally we would show dehydrated Suspense immediately.\n // However, it has some special behavior (like disconnecting\n // an alternate and turning into real Suspense) which breaks DevTools.\n // For now, ignore it, and only show it once it gets hydrated.\n // https://github.com/bvaughn/react-devtools-experimental/issues/197\n return true;\n case HostPortal:\n case HostText:\n case Fragment:\n case OffscreenComponent:\n return true;\n case HostRoot:\n // It is never valid to filter the root element.\n return false;\n default:\n const typeSymbol = getTypeSymbol(type);\n\n switch (typeSymbol) {\n case CONCURRENT_MODE_NUMBER:\n case CONCURRENT_MODE_SYMBOL_STRING:\n case DEPRECATED_ASYNC_MODE_SYMBOL_STRING:\n case STRICT_MODE_NUMBER:\n case STRICT_MODE_SYMBOL_STRING:\n return true;\n default:\n break;\n }\n }\n\n const elementType = getElementTypeForFiber(fiber);\n if (hideElementsWithTypes.has(elementType)) {\n return true;\n }\n\n if (hideElementsWithDisplayNames.size > 0) {\n const displayName = getDisplayNameForFiber(fiber);\n if (displayName != null) {\n // eslint-disable-next-line no-for-of-loops/no-for-of-loops\n for (const displayNameRegExp of hideElementsWithDisplayNames) {\n if (displayNameRegExp.test(displayName)) {\n return true;\n }\n }\n }\n }\n\n if (_debugSource != null && hideElementsWithPaths.size > 0) {\n const {fileName} = _debugSource;\n // eslint-disable-next-line no-for-of-loops/no-for-of-loops\n for (const pathRegExp of hideElementsWithPaths) {\n if (pathRegExp.test(fileName)) {\n return true;\n }\n }\n }\n\n return false;\n }\n // NOTICE Keep in sync with shouldFilterFiber() and other get*ForFiber methods\n function getElementTypeForFiber(fiber: Fiber): ElementType {\n const {type, tag} = fiber;\n\n switch (tag) {\n case ClassComponent:\n case IncompleteClassComponent:\n return ElementTypeClass;\n case FunctionComponent:\n case IndeterminateComponent:\n return ElementTypeFunction;\n case ForwardRef:\n return ElementTypeForwardRef;\n case HostRoot:\n return ElementTypeRoot;\n case HostComponent:\n return ElementTypeHostComponent;\n case HostPortal:\n case HostText:\n case Fragment:\n return ElementTypeOtherOrUnknown;\n case MemoComponent:\n case SimpleMemoComponent:\n return ElementTypeMemo;\n case SuspenseComponent:\n return ElementTypeSuspense;\n case SuspenseListComponent:\n return ElementTypeSuspenseList;\n default:\n const typeSymbol = getTypeSymbol(type);\n\n switch (typeSymbol) {\n case CONCURRENT_MODE_NUMBER:\n case CONCURRENT_MODE_SYMBOL_STRING:\n case DEPRECATED_ASYNC_MODE_SYMBOL_STRING:\n return ElementTypeOtherOrUnknown;\n case PROVIDER_NUMBER:\n case PROVIDER_SYMBOL_STRING:\n return ElementTypeContext;\n case CONTEXT_NUMBER:\n case CONTEXT_SYMBOL_STRING:\n return ElementTypeContext;\n case STRICT_MODE_NUMBER:\n case STRICT_MODE_SYMBOL_STRING:\n return ElementTypeOtherOrUnknown;\n case PROFILER_NUMBER:\n case PROFILER_SYMBOL_STRING:\n return ElementTypeProfiler;\n default:\n return ElementTypeOtherOrUnknown;\n }\n }\n }\n\n // This is a slightly annoying indirection.\n // It is currently necessary because DevTools wants to use unique objects as keys for instances.\n // However fibers have two versions.\n // We use this set to remember first encountered fiber for each conceptual instance.\n function getPrimaryFiber(fiber: Fiber): Fiber {\n if (primaryFibers.has(fiber)) {\n return fiber;\n }\n const {alternate} = fiber;\n if (alternate != null && primaryFibers.has(alternate)) {\n return alternate;\n }\n primaryFibers.add(fiber);\n return fiber;\n }\n\n const fiberToIDMap: Map<Fiber, number> = new Map();\n const idToFiberMap: Map<number, Fiber> = new Map();\n const primaryFibers: Set<Fiber> = new Set();\n\n // When profiling is supported, we store the latest tree base durations for each Fiber.\n // This is so that we can quickly capture a snapshot of those values if profiling starts.\n // If we didn't store these values, we'd have to crawl the tree when profiling started,\n // and use a slow path to find each of the current Fibers.\n const idToTreeBaseDurationMap: Map<number, number> = new Map();\n\n // When profiling is supported, we store the latest tree base durations for each Fiber.\n // This map enables us to filter these times by root when sending them to the frontend.\n const idToRootMap: Map<number, number> = new Map();\n\n // When a mount or update is in progress, this value tracks the root that is being operated on.\n let currentRootID: number = -1;\n\n function getFiberID(primaryFiber: Fiber): number {\n if (!fiberToIDMap.has(primaryFiber)) {\n const id = getUID();\n fiberToIDMap.set(primaryFiber, id);\n idToFiberMap.set(id, primaryFiber);\n }\n return ((fiberToIDMap.get(primaryFiber): any): number);\n }\n\n function getChangeDescription(\n prevFiber: Fiber | null,\n nextFiber: Fiber,\n ): ChangeDescription | null {\n switch (getElementTypeForFiber(nextFiber)) {\n case ElementTypeClass:\n case ElementTypeFunction:\n case ElementTypeMemo:\n case ElementTypeForwardRef:\n if (prevFiber === null) {\n return {\n context: null,\n didHooksChange: false,\n isFirstMount: true,\n props: null,\n state: null,\n };\n } else {\n return {\n context: getContextChangedKeys(nextFiber),\n didHooksChange: didHooksChange(\n prevFiber.memoizedState,\n nextFiber.memoizedState,\n ),\n isFirstMount: false,\n props: getChangedKeys(\n prevFiber.memoizedProps,\n nextFiber.memoizedProps,\n ),\n state: getChangedKeys(\n prevFiber.memoizedState,\n nextFiber.memoizedState,\n ),\n };\n }\n default:\n return null;\n }\n }\n\n function updateContextsForFiber(fiber: Fiber) {\n switch (getElementTypeForFiber(fiber)) {\n case ElementTypeClass:\n if (idToContextsMap !== null) {\n const id = getFiberID(getPrimaryFiber(fiber));\n const contexts = getContextsForFiber(fiber);\n if (contexts !== null) {\n idToContextsMap.set(id, contexts);\n }\n }\n break;\n default:\n break;\n }\n }\n\n // Differentiates between a null context value and no context.\n const NO_CONTEXT = {};\n\n function getContextsForFiber(fiber: Fiber): [Object, any] | null {\n switch (getElementTypeForFiber(fiber)) {\n case ElementTypeClass:\n const instance = fiber.stateNode;\n let legacyContext = NO_CONTEXT;\n let modernContext = NO_CONTEXT;\n if (instance != null) {\n if (\n instance.constructor &&\n instance.constructor.contextType != null\n ) {\n modernContext = instance.context;\n } else {\n legacyContext = instance.context;\n if (legacyContext && Object.keys(legacyContext).length === 0) {\n legacyContext = NO_CONTEXT;\n }\n }\n }\n return [legacyContext, modernContext];\n default:\n return null;\n }\n }\n\n // Record all contexts at the time profiling is started.\n // Fibers only store the current context value,\n // so we need to track them separately in order to determine changed keys.\n function crawlToInitializeContextsMap(fiber: Fiber) {\n updateContextsForFiber(fiber);\n let current = fiber.child;\n while (current !== null) {\n crawlToInitializeContextsMap(current);\n current = current.sibling;\n }\n }\n\n function getContextChangedKeys(fiber: Fiber): null | boolean | Array<string> {\n switch (getElementTypeForFiber(fiber)) {\n case ElementTypeClass:\n if (idToContextsMap !== null) {\n const id = getFiberID(getPrimaryFiber(fiber));\n const prevContexts = idToContextsMap.has(id)\n ? idToContextsMap.get(id)\n : null;\n const nextContexts = getContextsForFiber(fiber);\n\n if (prevContexts == null || nextContexts == null) {\n return null;\n }\n\n const [prevLegacyContext, prevModernContext] = prevContexts;\n const [nextLegacyContext, nextModernContext] = nextContexts;\n\n if (nextLegacyContext !== NO_CONTEXT) {\n return getChangedKeys(prevLegacyContext, nextLegacyContext);\n } else if (nextModernContext !== NO_CONTEXT) {\n return prevModernContext !== nextModernContext;\n }\n }\n break;\n default:\n break;\n }\n return null;\n }\n\n function didHooksChange(prev: any, next: any): boolean {\n if (prev == null || next == null) {\n return false;\n }\n\n // We can't report anything meaningful for hooks changes.\n if (\n next.hasOwnProperty('baseState') &&\n next.hasOwnProperty('memoizedState') &&\n next.hasOwnProperty('next') &&\n next.hasOwnProperty('queue')\n ) {\n while (next !== null) {\n if (next.memoizedState !== prev.memoizedState) {\n return true;\n } else {\n next = next.next;\n prev = prev.next;\n }\n }\n }\n\n return false;\n }\n\n function getChangedKeys(prev: any, next: any): null | Array<string> {\n if (prev == null || next == null) {\n return null;\n }\n\n // We can't report anything meaningful for hooks changes.\n if (\n next.hasOwnProperty('baseState') &&\n next.hasOwnProperty('memoizedState') &&\n next.hasOwnProperty('next') &&\n next.hasOwnProperty('queue')\n ) {\n return null;\n }\n\n const keys = new Set([...Object.keys(prev), ...Object.keys(next)]);\n const changedKeys = [];\n // eslint-disable-next-line no-for-of-loops/no-for-of-loops\n for (const key of keys) {\n if (prev[key] !== next[key]) {\n changedKeys.push(key);\n }\n }\n\n return changedKeys;\n }\n\n // eslint-disable-next-line no-unused-vars\n function didFiberRender(prevFiber: Fiber, nextFiber: Fiber): boolean {\n switch (nextFiber.tag) {\n case ClassComponent:\n case FunctionComponent:\n case ContextConsumer:\n case MemoComponent:\n case SimpleMemoComponent:\n // For types that execute user code, we check PerformedWork effect.\n // We don't reflect bailouts (either referential or sCU) in DevTools.\n // eslint-disable-next-line no-bitwise\n return (getFiberFlags(nextFiber) & PerformedWork) === PerformedWork;\n // Note: ContextConsumer only gets PerformedWork effect in 16.3.3+\n // so it won't get highlighted with React 16.3.0 to 16.3.2.\n default:\n // For host components and other types, we compare inputs\n // to determine whether something is an update.\n return (\n prevFiber.memoizedProps !== nextFiber.memoizedProps ||\n prevFiber.memoizedState !== nextFiber.memoizedState ||\n prevFiber.ref !== nextFiber.ref\n );\n }\n }\n\n const pendingOperations: Array<number> = [];\n const pendingRealUnmountedIDs: Array<number> = [];\n const pendingSimulatedUnmountedIDs: Array<number> = [];\n let pendingOperationsQueue: Array<Array<number>> | null = [];\n const pendingStringTable: Map<string, number> = new Map();\n let pendingStringTableLength: number = 0;\n let pendingUnmountedRootID: number | null = null;\n\n function pushOperation(op: number): void {\n if (__DEV__) {\n if (!Number.isInteger(op)) {\n console.error(\n 'pushOperation() was called but the value is not an integer.',\n op,\n );\n }\n }\n pendingOperations.push(op);\n }\n\n function flushPendingEvents(root: Object): void {\n if (\n pendingOperations.length === 0 &&\n pendingRealUnmountedIDs.length === 0 &&\n pendingSimulatedUnmountedIDs.length === 0 &&\n pendingUnmountedRootID === null\n ) {\n // If we aren't profiling, we can just bail out here.\n // No use sending an empty update over the bridge.\n //\n // The Profiler stores metadata for each commit and reconstructs the app tree per commit using:\n // (1) an initial tree snapshot and\n // (2) the operations array for each commit\n // Because of this, it's important that the operations and metadata arrays align,\n // So it's important not to omit even empty operations while profiling is active.\n if (!isProfiling) {\n return;\n }\n }\n\n const numUnmountIDs =\n pendingRealUnmountedIDs.length +\n pendingSimulatedUnmountedIDs.length +\n (pendingUnmountedRootID === null ? 0 : 1);\n\n const operations = new Array(\n // Identify which renderer this update is coming from.\n 2 + // [rendererID, rootFiberID]\n // How big is the string table?\n 1 + // [stringTableLength]\n // Then goes the actual string table.\n pendingStringTableLength +\n // All unmounts are batched in a single message.\n // [TREE_OPERATION_REMOVE, removedIDLength, ...ids]\n (numUnmountIDs > 0 ? 2 + numUnmountIDs : 0) +\n // Regular operations\n pendingOperations.length,\n );\n\n // Identify which renderer this update is coming from.\n // This enables roots to be mapped to renderers,\n // Which in turn enables fiber props, states, and hooks to be inspected.\n let i = 0;\n operations[i++] = rendererID;\n operations[i++] = currentRootID; // Use this ID in case the root was unmounted!\n\n // Now fill in the string table.\n // [stringTableLength, str1Length, ...str1, str2Length, ...str2, ...]\n operations[i++] = pendingStringTableLength;\n pendingStringTable.forEach((value, key) => {\n operations[i++] = key.length;\n const encodedKey = utfEncodeString(key);\n for (let j = 0; j < encodedKey.length; j++) {\n operations[i + j] = encodedKey[j];\n }\n i += key.length;\n });\n\n if (numUnmountIDs > 0) {\n // All unmounts except roots are batched in a single message.\n operations[i++] = TREE_OPERATION_REMOVE;\n // The first number is how many unmounted IDs we're gonna send.\n operations[i++] = numUnmountIDs;\n // Fill in the real unmounts in the reverse order.\n // They were inserted parents-first by React, but we want children-first.\n // So we traverse our array backwards.\n for (let j = pendingRealUnmountedIDs.length - 1; j >= 0; j--) {\n operations[i++] = pendingRealUnmountedIDs[j];\n }\n // Fill in the simulated unmounts (hidden Suspense subtrees) in their order.\n // (We want children to go before parents.)\n // They go *after* the real unmounts because we know for sure they won't be\n // children of already pushed \"real\" IDs. If they were, we wouldn't be able\n // to discover them during the traversal, as they would have been deleted.\n for (let j = 0; j < pendingSimulatedUnmountedIDs.length; j++) {\n operations[i + j] = pendingSimulatedUnmountedIDs[j];\n }\n i += pendingSimulatedUnmountedIDs.length;\n // The root ID should always be unmounted last.\n if (pendingUnmountedRootID !== null) {\n operations[i] = pendingUnmountedRootID;\n i++;\n }\n }\n // Fill in the rest of the operations.\n for (let j = 0; j < pendingOperations.length; j++) {\n operations[i + j] = pendingOperations[j];\n }\n i += pendingOperations.length;\n\n // Let the frontend know about tree operations.\n // The first value in this array will identify which root it corresponds to,\n // so we do no longer need to dispatch a separate root-committed event.\n if (pendingOperationsQueue !== null) {\n // Until the frontend has been connected, store the tree operations.\n // This will let us avoid walking the tree later when the frontend connects,\n // and it enables the Profiler's reload-and-profile functionality to work as well.\n pendingOperationsQueue.push(operations);\n } else {\n // If we've already connected to the frontend, just pass the operations through.\n hook.emit('operations', operations);\n }\n\n pendingOperations.length = 0;\n pendingRealUnmountedIDs.length = 0;\n pendingSimulatedUnmountedIDs.length = 0;\n pendingUnmountedRootID = null;\n pendingStringTable.clear();\n pendingStringTableLength = 0;\n }\n\n function getStringID(str: string | null): number {\n if (str === null) {\n return 0;\n }\n const existingID = pendingStringTable.get(str);\n if (existingID !== undefined) {\n return existingID;\n }\n const stringID = pendingStringTable.size + 1;\n pendingStringTable.set(str, stringID);\n // The string table total length needs to account\n // both for the string length, and for the array item\n // that contains the length itself. Hence + 1.\n pendingStringTableLength += str.length + 1;\n return stringID;\n }\n\n function recordMount(fiber: Fiber, parentFiber: Fiber | null) {\n if (__DEBUG__) {\n debug('recordMount()', fiber, parentFiber);\n }\n\n const isRoot = fiber.tag === HostRoot;\n const id = getFiberID(getPrimaryFiber(fiber));\n\n const hasOwnerMetadata = fiber.hasOwnProperty('_debugOwner');\n const isProfilingSupported = fiber.hasOwnProperty('treeBaseDuration');\n\n if (isRoot) {\n pushOperation(TREE_OPERATION_ADD);\n pushOperation(id);\n pushOperation(ElementTypeRoot);\n pushOperation(isProfilingSupported ? 1 : 0);\n pushOperation(hasOwnerMetadata ? 1 : 0);\n\n if (isProfiling) {\n if (displayNamesByRootID !== null) {\n displayNamesByRootID.set(id, getDisplayNameForRoot(fiber));\n }\n }\n } else {\n const {key} = fiber;\n const displayName = getDisplayNameForFiber(fiber);\n const elementType = getElementTypeForFiber(fiber);\n const {_debugOwner} = fiber;\n\n const ownerID =\n _debugOwner != null ? getFiberID(getPrimaryFiber(_debugOwner)) : 0;\n const parentID = parentFiber\n ? getFiberID(getPrimaryFiber(parentFiber))\n : 0;\n\n const displayNameStringID = getStringID(displayName);\n\n // This check is a guard to handle a React element that has been modified\n // in such a way as to bypass the default stringification of the \"key\" property.\n const keyString = key === null ? null : '' + key;\n const keyStringID = getStringID(keyString);\n\n pushOperation(TREE_OPERATION_ADD);\n pushOperation(id);\n pushOperation(elementType);\n pushOperation(parentID);\n pushOperation(ownerID);\n pushOperation(displayNameStringID);\n pushOperation(keyStringID);\n }\n\n if (isProfilingSupported) {\n idToRootMap.set(id, currentRootID);\n\n recordProfilingDurations(fiber);\n }\n }\n\n function recordUnmount(fiber: Fiber, isSimulated: boolean) {\n if (__DEBUG__) {\n debug('recordUnmount()', fiber);\n }\n\n if (trackedPathMatchFiber !== null) {\n // We're in the process of trying to restore previous selection.\n // If this fiber matched but is being unmounted, there's no use trying.\n // Reset the state so we don't keep holding onto it.\n if (\n fiber === trackedPathMatchFiber ||\n fiber === trackedPathMatchFiber.alternate\n ) {\n setTrackedPath(null);\n }\n }\n\n const isRoot = fiber.tag === HostRoot;\n const primaryFiber = getPrimaryFiber(fiber);\n if (!fiberToIDMap.has(primaryFiber)) {\n // If we've never seen this Fiber, it might be because\n // it is inside a non-current Suspense fragment tree,\n // and so the store is not even aware of it.\n // In that case we can just ignore it, or otherwise\n // there will be errors later on.\n primaryFibers.delete(primaryFiber);\n // TODO: this is fragile and can obscure actual bugs.\n return;\n }\n const id = getFiberID(primaryFiber);\n\n if (isRoot) {\n // Roots must be removed only after all children (pending and simulated) have been removed.\n // So we track it separately.\n pendingUnmountedRootID = id;\n } else if (!shouldFilterFiber(fiber)) {\n // To maintain child-first ordering,\n // we'll push it into one of these queues,\n // and later arrange them in the correct order.\n if (isSimulated) {\n pendingSimulatedUnmountedIDs.push(id);\n } else {\n pendingRealUnmountedIDs.push(id);\n }\n }\n fiberToIDMap.delete(primaryFiber);\n idToFiberMap.delete(id);\n primaryFibers.delete(primaryFiber);\n\n const isProfilingSupported = fiber.hasOwnProperty('treeBaseDuration');\n if (isProfilingSupported) {\n idToRootMap.delete(id);\n idToTreeBaseDurationMap.delete(id);\n }\n }\n\n function mountFiberRecursively(\n fiber: Fiber,\n parentFiber: Fiber | null,\n traverseSiblings: boolean,\n traceNearestHostComponentUpdate: boolean,\n ) {\n if (__DEBUG__) {\n debug('mountFiberRecursively()', fiber, parentFiber);\n }\n\n // If we have the tree selection from previous reload, try to match this Fiber.\n // Also remember whether to do the same for siblings.\n const mightSiblingsBeOnTrackedPath = updateTrackedPathStateBeforeMount(\n fiber,\n );\n\n const shouldIncludeInTree = !shouldFilterFiber(fiber);\n if (shouldIncludeInTree) {\n recordMount(fiber, parentFiber);\n }\n\n if (traceUpdatesEnabled) {\n if (traceNearestHostComponentUpdate) {\n const elementType = getElementTypeForFiber(fiber);\n // If an ancestor updated, we should mark the nearest host nodes for highlighting.\n if (elementType === ElementTypeHostComponent) {\n traceUpdatesForNodes.add(fiber.stateNode);\n traceNearestHostComponentUpdate = false;\n }\n }\n\n // We intentionally do not re-enable the traceNearestHostComponentUpdate flag in this branch,\n // because we don't want to highlight every host node inside of a newly mounted subtree.\n }\n\n const isSuspense = fiber.tag === ReactTypeOfWork.SuspenseComponent;\n if (isSuspense) {\n const isTimedOut = fiber.memoizedState !== null;\n if (isTimedOut) {\n // Special case: if Suspense mounts in a timed-out state,\n // get the fallback child from the inner fragment and mount\n // it as if it was our own child. Updates handle this too.\n const primaryChildFragment = fiber.child;\n const fallbackChildFragment = primaryChildFragment\n ? primaryChildFragment.sibling\n : null;\n const fallbackChild = fallbackChildFragment\n ? fallbackChildFragment.child\n : null;\n if (fallbackChild !== null) {\n mountFiberRecursively(\n fallbackChild,\n shouldIncludeInTree ? fiber : parentFiber,\n true,\n traceNearestHostComponentUpdate,\n );\n }\n } else {\n let primaryChild: Fiber | null = null;\n const areSuspenseChildrenConditionallyWrapped =\n OffscreenComponent === -1;\n if (areSuspenseChildrenConditionallyWrapped) {\n primaryChild = fiber.child;\n } else if (fiber.child !== null) {\n primaryChild = fiber.child.child;\n }\n if (primaryChild !== null) {\n mountFiberRecursively(\n primaryChild,\n shouldIncludeInTree ? fiber : parentFiber,\n true,\n traceNearestHostComponentUpdate,\n );\n }\n }\n } else {\n if (fiber.child !== null) {\n mountFiberRecursively(\n fiber.child,\n shouldIncludeInTree ? fiber : parentFiber,\n true,\n traceNearestHostComponentUpdate,\n );\n }\n }\n\n // We're exiting this Fiber now, and entering its siblings.\n // If we have selection to restore, we might need to re-activate tracking.\n updateTrackedPathStateAfterMount(mightSiblingsBeOnTrackedPath);\n\n if (traverseSiblings && fiber.sibling !== null) {\n mountFiberRecursively(\n fiber.sibling,\n parentFiber,\n true,\n traceNearestHostComponentUpdate,\n );\n }\n }\n\n // We use this to simulate unmounting for Suspense trees\n // when we switch from primary to fallback.\n function unmountFiberChildrenRecursively(fiber: Fiber) {\n if (__DEBUG__) {\n debug('unmountFiberChildrenRecursively()', fiber);\n }\n\n // We might meet a nested Suspense on our way.\n const isTimedOutSuspense =\n fiber.tag === ReactTypeOfWork.SuspenseComponent &&\n fiber.memoizedState !== null;\n\n let child = fiber.child;\n if (isTimedOutSuspense) {\n // If it's showing fallback tree, let's traverse it instead.\n const primaryChildFragment = fiber.child;\n const fallbackChildFragment = primaryChildFragment\n ? primaryChildFragment.sibling\n : null;\n // Skip over to the real Fiber child.\n child = fallbackChildFragment ? fallbackChildFragment.child : null;\n }\n\n while (child !== null) {\n // Record simulated unmounts children-first.\n // We skip nodes without return because those are real unmounts.\n if (child.return !== null) {\n unmountFiberChildrenRecursively(child);\n recordUnmount(child, true);\n }\n child = child.sibling;\n }\n }\n\n function recordProfilingDurations(fiber: Fiber) {\n const id = getFiberID(getPrimaryFiber(fiber));\n const {actualDuration, treeBaseDuration} = fiber;\n\n idToTreeBaseDurationMap.set(id, treeBaseDuration || 0);\n\n if (isProfiling) {\n const {alternate} = fiber;\n\n // It's important to update treeBaseDuration even if the current Fiber did not render,\n // because it's possible that one of its descendants did.\n if (\n alternate == null ||\n treeBaseDuration !== alternate.treeBaseDuration\n ) {\n // Tree base duration updates are included in the operations typed array.\n // So we have to convert them from milliseconds to microseconds so we can send them as ints.\n const convertedTreeBaseDuration = Math.floor(\n (treeBaseDuration || 0) * 1000,\n );\n pushOperation(TREE_OPERATION_UPDATE_TREE_BASE_DURATION);\n pushOperation(id);\n pushOperation(convertedTreeBaseDuration);\n }\n\n if (alternate == null || didFiberRender(alternate, fiber)) {\n if (actualDuration != null) {\n // The actual duration reported by React includes time spent working on children.\n // This is useful information, but it's also useful to be able to exclude child durations.\n // The frontend can't compute this, since the immediate children may have been filtered out.\n // So we need to do this on the backend.\n // Note that this calculated self duration is not the same thing as the base duration.\n // The two are calculated differently (tree duration does not accumulate).\n let selfDuration = actualDuration;\n let child = fiber.child;\n while (child !== null) {\n selfDuration -= child.actualDuration || 0;\n child = child.sibling;\n }\n\n // If profiling is active, store durations for elements that were rendered during the commit.\n // Note that we should do this for any fiber we performed work on, regardless of its actualDuration value.\n // In some cases actualDuration might be 0 for fibers we worked on (particularly if we're using Date.now)\n // In other cases (e.g. Memo) actualDuration might be greater than 0 even if we \"bailed out\".\n const metadata = ((currentCommitProfilingMetadata: any): CommitProfilingData);\n metadata.durations.push(id, actualDuration, selfDuration);\n metadata.maxActualDuration = Math.max(\n metadata.maxActualDuration,\n actualDuration,\n );\n\n if (recordChangeDescriptions) {\n const changeDescription = getChangeDescription(alternate, fiber);\n if (changeDescription !== null) {\n if (metadata.changeDescriptions !== null) {\n metadata.changeDescriptions.set(id, changeDescription);\n }\n }\n\n updateContextsForFiber(fiber);\n }\n }\n }\n }\n }\n\n function recordResetChildren(fiber: Fiber, childSet: Fiber) {\n if (__DEBUG__) {\n debug('recordResetChildren()', childSet, fiber);\n }\n // The frontend only really cares about the displayName, key, and children.\n // The first two don't really change, so we are only concerned with the order of children here.\n // This is trickier than a simple comparison though, since certain types of fibers are filtered.\n const nextChildren: Array<number> = [];\n\n // This is a naive implementation that shallowly recourses children.\n // We might want to revisit this if it proves to be too inefficient.\n let child = childSet;\n while (child !== null) {\n findReorderedChildrenRecursively(child, nextChildren);\n child = child.sibling;\n }\n\n const numChildren = nextChildren.length;\n if (numChildren < 2) {\n // No need to reorder.\n return;\n }\n pushOperation(TREE_OPERATION_REORDER_CHILDREN);\n pushOperation(getFiberID(getPrimaryFiber(fiber)));\n pushOperation(numChildren);\n for (let i = 0; i < nextChildren.length; i++) {\n pushOperation(nextChildren[i]);\n }\n }\n\n function findReorderedChildrenRecursively(\n fiber: Fiber,\n nextChildren: Array<number>,\n ) {\n if (!shouldFilterFiber(fiber)) {\n nextChildren.push(getFiberID(getPrimaryFiber(fiber)));\n } else {\n let child = fiber.child;\n const isTimedOutSuspense =\n fiber.tag === SuspenseComponent && fiber.memoizedState !== null;\n if (isTimedOutSuspense) {\n // Special case: if Suspense mounts in a timed-out state,\n // get the fallback child from the inner fragment,\n // and skip over the primary child.\n const primaryChildFragment = fiber.child;\n const fallbackChildFragment = primaryChildFragment\n ? primaryChildFragment.sibling\n : null;\n const fallbackChild = fallbackChildFragment\n ? fallbackChildFragment.child\n : null;\n if (fallbackChild !== null) {\n child = fallbackChild;\n }\n }\n while (child !== null) {\n findReorderedChildrenRecursively(child, nextChildren);\n child = child.sibling;\n }\n }\n }\n\n // Returns whether closest unfiltered fiber parent needs to reset its child list.\n function updateFiberRecursively(\n nextFiber: Fiber,\n prevFiber: Fiber,\n parentFiber: Fiber | null,\n traceNearestHostComponentUpdate: boolean,\n ): boolean {\n if (__DEBUG__) {\n debug('updateFiberRecursively()', nextFiber, parentFiber);\n }\n\n if (traceUpdatesEnabled) {\n const elementType = getElementTypeForFiber(nextFiber);\n if (traceNearestHostComponentUpdate) {\n // If an ancestor updated, we should mark the nearest host nodes for highlighting.\n if (elementType === ElementTypeHostComponent) {\n traceUpdatesForNodes.add(nextFiber.stateNode);\n traceNearestHostComponentUpdate = false;\n }\n } else {\n if (\n elementType === ElementTypeFunction ||\n elementType === ElementTypeClass ||\n elementType === ElementTypeContext\n ) {\n // Otherwise if this is a traced ancestor, flag for the nearest host descendant(s).\n traceNearestHostComponentUpdate = didFiberRender(\n prevFiber,\n nextFiber,\n );\n }\n }\n }\n\n if (\n mostRecentlyInspectedElement !== null &&\n mostRecentlyInspectedElement.id ===\n getFiberID(getPrimaryFiber(nextFiber)) &&\n didFiberRender(prevFiber, nextFiber)\n ) {\n // If this Fiber has updated, clear cached inspected data.\n // If it is inspected again, it may need to be re-run to obtain updated hooks values.\n hasElementUpdatedSinceLastInspected = true;\n }\n\n const shouldIncludeInTree = !shouldFilterFiber(nextFiber);\n const isSuspense = nextFiber.tag === SuspenseComponent;\n let shouldResetChildren = false;\n // The behavior of timed-out Suspense trees is unique.\n // Rather than unmount the timed out content (and possibly lose important state),\n // React re-parents this content within a hidden Fragment while the fallback is showing.\n // This behavior doesn't need to be observable in the DevTools though.\n // It might even result in a bad user experience for e.g. node selection in the Elements panel.\n // The easiest fix is to strip out the intermediate Fragment fibers,\n // so the Elements panel and Profiler don't need to special case them.\n // Suspense components only have a non-null memoizedState if they're timed-out.\n const prevDidTimeout = isSuspense && prevFiber.memoizedState !== null;\n const nextDidTimeOut = isSuspense && nextFiber.memoizedState !== null;\n // The logic below is inspired by the code paths in updateSuspenseComponent()\n // inside ReactFiberBeginWork in the React source code.\n if (prevDidTimeout && nextDidTimeOut) {\n // Fallback -> Fallback:\n // 1. Reconcile fallback set.\n const nextFiberChild = nextFiber.child;\n const nextFallbackChildSet = nextFiberChild\n ? nextFiberChild.sibling\n : null;\n // Note: We can't use nextFiber.child.sibling.alternate\n // because the set is special and alternate may not exist.\n const prevFiberChild = prevFiber.child;\n const prevFallbackChildSet = prevFiberChild\n ? prevFiberChild.sibling\n : null;\n if (\n nextFallbackChildSet != null &&\n prevFallbackChildSet != null &&\n updateFiberRecursively(\n nextFallbackChildSet,\n prevFallbackChildSet,\n nextFiber,\n traceNearestHostComponentUpdate,\n )\n ) {\n shouldResetChildren = true;\n }\n } else if (prevDidTimeout && !nextDidTimeOut) {\n // Fallback -> Primary:\n // 1. Unmount fallback set\n // Note: don't emulate fallback unmount because React actually did it.\n // 2. Mount primary set\n const nextPrimaryChildSet = nextFiber.child;\n if (nextPrimaryChildSet !== null) {\n mountFiberRecursively(\n nextPrimaryChildSet,\n shouldIncludeInTree ? nextFiber : parentFiber,\n true,\n traceNearestHostComponentUpdate,\n );\n }\n shouldResetChildren = true;\n } else if (!prevDidTimeout && nextDidTimeOut) {\n // Primary -> Fallback:\n // 1. Hide primary set\n // This is not a real unmount, so it won't get reported by React.\n // We need to manually walk the previous tree and record unmounts.\n unmountFiberChildrenRecursively(prevFiber);\n // 2. Mount fallback set\n const nextFiberChild = nextFiber.child;\n const nextFallbackChildSet = nextFiberChild\n ? nextFiberChild.sibling\n : null;\n if (nextFallbackChildSet != null) {\n mountFiberRecursively(\n nextFallbackChildSet,\n shouldIncludeInTree ? nextFiber : parentFiber,\n true,\n traceNearestHostComponentUpdate,\n );\n shouldResetChildren = true;\n }\n } else {\n // Common case: Primary -> Primary.\n // This is the same code path as for non-Suspense fibers.\n if (nextFiber.child !== prevFiber.child) {\n // If the first child is different, we need to traverse them.\n // Each next child will be either a new child (mount) or an alternate (update).\n let nextChild = nextFiber.child;\n let prevChildAtSameIndex = prevFiber.child;\n while (nextChild) {\n // We already know children will be referentially different because\n // they are either new mounts or alternates of previous children.\n // Schedule updates and mounts depending on whether alternates exist.\n // We don't track deletions here because they are reported separately.\n if (nextChild.alternate) {\n const prevChild = nextChild.alternate;\n if (\n updateFiberRecursively(\n nextChild,\n prevChild,\n shouldIncludeInTree ? nextFiber : parentFiber,\n traceNearestHostComponentUpdate,\n )\n ) {\n // If a nested tree child order changed but it can't handle its own\n // child order invalidation (e.g. because it's filtered out like host nodes),\n // propagate the need to reset child order upwards to this Fiber.\n shouldResetChildren = true;\n }\n // However we also keep track if the order of the children matches\n // the previous order. They are always different referentially, but\n // if the instances line up conceptually we'll want to know that.\n if (prevChild !== prevChildAtSameIndex) {\n shouldResetChildren = true;\n }\n } else {\n mountFiberRecursively(\n nextChild,\n shouldIncludeInTree ? nextFiber : parentFiber,\n false,\n traceNearestHostComponentUpdate,\n );\n shouldResetChildren = true;\n }\n // Try the next child.\n nextChild = nextChild.sibling;\n // Advance the pointer in the previous list so that we can\n // keep comparing if they line up.\n if (!shouldResetChildren && prevChildAtSameIndex !== null) {\n prevChildAtSameIndex = prevChildAtSameIndex.sibling;\n }\n }\n // If we have no more children, but used to, they don't line up.\n if (prevChildAtSameIndex !== null) {\n shouldResetChildren = true;\n }\n } else {\n if (traceUpdatesEnabled) {\n // If we're tracing updates and we've bailed out before reaching a host node,\n // we should fall back to recursively marking the nearest host descendants for highlight.\n if (traceNearestHostComponentUpdate) {\n const hostFibers = findAllCurrentHostFibers(\n getFiberID(getPrimaryFiber(nextFiber)),\n );\n hostFibers.forEach(hostFiber => {\n traceUpdatesForNodes.add(hostFiber.stateNode);\n });\n }\n }\n }\n }\n\n if (shouldIncludeInTree) {\n const isProfilingSupported = nextFiber.hasOwnProperty('treeBaseDuration');\n if (isProfilingSupported) {\n recordProfilingDurations(nextFiber);\n }\n }\n if (shouldResetChildren) {\n // We need to crawl the subtree for closest non-filtered Fibers\n // so that we can display them in a flat children set.\n if (shouldIncludeInTree) {\n // Normally, search for children from the rendered child.\n let nextChildSet = nextFiber.child;\n if (nextDidTimeOut) {\n // Special case: timed-out Suspense renders the fallback set.\n const nextFiberChild = nextFiber.child;\n nextChildSet = nextFiberChild ? nextFiberChild.sibling : null;\n }\n if (nextChildSet != null) {\n recordResetChildren(nextFiber, nextChildSet);\n }\n // We've handled the child order change for this Fiber.\n // Since it's included, there's no need to invalidate parent child order.\n return false;\n } else {\n // Let the closest unfiltered parent Fiber reset its child order instead.\n return true;\n }\n } else {\n return false;\n }\n }\n\n function cleanup() {\n // We don't patch any methods so there is no cleanup.\n }\n\n function flushInitialOperations() {\n const localPendingOperationsQueue = pendingOperationsQueue;\n\n pendingOperationsQueue = null;\n\n if (\n localPendingOperationsQueue !== null &&\n localPendingOperationsQueue.length > 0\n ) {\n // We may have already queued up some operations before the frontend connected\n // If so, let the frontend know about them.\n localPendingOperationsQueue.forEach(operations => {\n hook.emit('operations', operations);\n });\n } else {\n // Before the traversals, remember to start tracking\n // our path in case we have selection to restore.\n if (trackedPath !== null) {\n mightBeOnTrackedPath = true;\n }\n // If we have not been profiling, then we can just walk the tree and build up its current state as-is.\n hook.getFiberRoots(rendererID).forEach(root => {\n currentRootID = getFiberID(getPrimaryFiber(root.current));\n setRootPseudoKey(currentRootID, root.current);\n\n // Checking root.memoizedInteractions handles multi-renderer edge-case-\n // where some v16 renderers support profiling and others don't.\n if (isProfiling && root.memoizedInteractions != null) {\n // If profiling is active, store commit time and duration, and the current interactions.\n // The frontend may request this information after profiling has stopped.\n currentCommitProfilingMetadata = {\n changeDescriptions: recordChangeDescriptions ? new Map() : null,\n durations: [],\n commitTime: getCurrentTime() - profilingStartTime,\n interactions: Array.from(root.memoizedInteractions).map(\n (interaction: Interaction) => ({\n ...interaction,\n timestamp: interaction.timestamp - profilingStartTime,\n }),\n ),\n maxActualDuration: 0,\n priorityLevel: null,\n };\n }\n\n mountFiberRecursively(root.current, null, false, false);\n flushPendingEvents(root);\n currentRootID = -1;\n });\n }\n }\n\n function handleCommitFiberUnmount(fiber) {\n // This is not recursive.\n // We can't traverse fibers after unmounting so instead\n // we rely on React telling us about each unmount.\n recordUnmount(fiber, false);\n }\n\n function handleCommitFiberRoot(root, priorityLevel) {\n const current = root.current;\n const alternate = current.alternate;\n\n currentRootID = getFiberID(getPrimaryFiber(current));\n\n // Before the traversals, remember to start tracking\n // our path in case we have selection to restore.\n if (trackedPath !== null) {\n mightBeOnTrackedPath = true;\n }\n\n if (traceUpdatesEnabled) {\n traceUpdatesForNodes.clear();\n }\n\n // Checking root.memoizedInteractions handles multi-renderer edge-case-\n // where some v16 renderers support profiling and others don't.\n const isProfilingSupported = root.memoizedInteractions != null;\n\n if (isProfiling && isProfilingSupported) {\n // If profiling is active, store commit time and duration, and the current interactions.\n // The frontend may request this information after profiling has stopped.\n currentCommitProfilingMetadata = {\n changeDescriptions: recordChangeDescriptions ? new Map() : null,\n durations: [],\n commitTime: getCurrentTime() - profilingStartTime,\n interactions: Array.from(root.memoizedInteractions).map(\n (interaction: Interaction) => ({\n ...interaction,\n timestamp: interaction.timestamp - profilingStartTime,\n }),\n ),\n maxActualDuration: 0,\n priorityLevel:\n priorityLevel == null ? null : formatPriorityLevel(priorityLevel),\n };\n }\n\n if (alternate) {\n // TODO: relying on this seems a bit fishy.\n const wasMounted =\n alternate.memoizedState != null &&\n alternate.memoizedState.element != null;\n const isMounted =\n current.memoizedState != null && current.memoizedState.element != null;\n if (!wasMounted && isMounted) {\n // Mount a new root.\n setRootPseudoKey(currentRootID, current);\n mountFiberRecursively(current, null, false, false);\n } else if (wasMounted && isMounted) {\n // Update an existing root.\n updateFiberRecursively(current, alternate, null, false);\n } else if (wasMounted && !isMounted) {\n // Unmount an existing root.\n removeRootPseudoKey(currentRootID);\n recordUnmount(current, false);\n }\n } else {\n // Mount a new root.\n setRootPseudoKey(currentRootID, current);\n mountFiberRecursively(current, null, false, false);\n }\n\n if (isProfiling && isProfilingSupported) {\n const commitProfilingMetadata = ((rootToCommitProfilingMetadataMap: any): CommitProfilingMetadataMap).get(\n currentRootID,\n );\n if (commitProfilingMetadata != null) {\n commitProfilingMetadata.push(\n ((currentCommitProfilingMetadata: any): CommitProfilingData),\n );\n } else {\n ((rootToCommitProfilingMetadataMap: any): CommitProfilingMetadataMap).set(\n currentRootID,\n [((currentCommitProfilingMetadata: any): CommitProfilingData)],\n );\n }\n }\n\n // We're done here.\n flushPendingEvents(root);\n\n if (traceUpdatesEnabled) {\n hook.emit('traceUpdates', traceUpdatesForNodes);\n }\n\n currentRootID = -1;\n }\n\n function findAllCurrentHostFibers(id: number): $ReadOnlyArray<Fiber> {\n const fibers = [];\n const fiber = findCurrentFiberUsingSlowPathById(id);\n if (!fiber) {\n return fibers;\n }\n\n // Next we'll drill down this component to find all HostComponent/Text.\n let node: Fiber = fiber;\n while (true) {\n if (node.tag === HostComponent || node.tag === HostText) {\n fibers.push(node);\n } else if (node.child) {\n node.child.return = node;\n node = node.child;\n continue;\n }\n if (node === fiber) {\n return fibers;\n }\n while (!node.sibling) {\n if (!node.return || node.return === fiber) {\n return fibers;\n }\n node = node.return;\n }\n node.sibling.return = node.return;\n node = node.sibling;\n }\n // Flow needs the return here, but ESLint complains about it.\n // eslint-disable-next-line no-unreachable\n return fibers;\n }\n\n function findNativeNodesForFiberID(id: number) {\n try {\n let fiber = findCurrentFiberUsingSlowPathById(id);\n if (fiber === null) {\n return null;\n }\n // Special case for a timed-out Suspense.\n const isTimedOutSuspense =\n fiber.tag === SuspenseComponent && fiber.memoizedState !== null;\n if (isTimedOutSuspense) {\n // A timed-out Suspense's findDOMNode is useless.\n // Try our best to find the fallback directly.\n const maybeFallbackFiber = fiber.child && fiber.child.sibling;\n if (maybeFallbackFiber != null) {\n fiber = maybeFallbackFiber;\n }\n }\n const hostFibers = findAllCurrentHostFibers(id);\n return hostFibers.map(hostFiber => hostFiber.stateNode).filter(Boolean);\n } catch (err) {\n // The fiber might have unmounted by now.\n return null;\n }\n }\n\n function getDisplayNameForFiberID(id) {\n const fiber = idToFiberMap.get(id);\n return fiber != null ? getDisplayNameForFiber(((fiber: any): Fiber)) : null;\n }\n\n function getFiberIDForNative(\n hostInstance,\n findNearestUnfilteredAncestor = false,\n ) {\n let fiber = renderer.findFiberByHostInstance(hostInstance);\n if (fiber != null) {\n if (findNearestUnfilteredAncestor) {\n while (fiber !== null && shouldFilterFiber(fiber)) {\n fiber = fiber.return;\n }\n }\n return getFiberID(getPrimaryFiber(((fiber: any): Fiber)));\n }\n return null;\n }\n\n const MOUNTING = 1;\n const MOUNTED = 2;\n const UNMOUNTED = 3;\n\n // This function is copied from React and should be kept in sync:\n // https://github.com/facebook/react/blob/master/packages/react-reconciler/src/ReactFiberTreeReflection.js\n function isFiberMountedImpl(fiber: Fiber): number {\n let node = fiber;\n if (!fiber.alternate) {\n // If there is no alternate, this might be a new tree that isn't inserted\n // yet. If it is, then it will have a pending insertion effect on it.\n if ((getFiberFlags(node) & Placement) !== NoFlags) {\n return MOUNTING;\n }\n while (node.return) {\n node = node.return;\n if ((getFiberFlags(node) & Placement) !== NoFlags) {\n return MOUNTING;\n }\n }\n } else {\n while (node.return) {\n node = node.return;\n }\n }\n if (node.tag === HostRoot) {\n // TODO: Check if this was a nested HostRoot when used with\n // renderContainerIntoSubtree.\n return MOUNTED;\n }\n // If we didn't hit the root, that means that we're in an disconnected tree\n // that has been unmounted.\n return UNMOUNTED;\n }\n\n // This function is copied from React and should be kept in sync:\n // https://github.com/facebook/react/blob/master/packages/react-reconciler/src/ReactFiberTreeReflection.js\n // It would be nice if we updated React to inject this function directly (vs just indirectly via findDOMNode).\n // BEGIN copied code\n function findCurrentFiberUsingSlowPathById(id: number): Fiber | null {\n const fiber = idToFiberMap.get(id);\n if (fiber == null) {\n console.warn(`Could not find Fiber with id \"${id}\"`);\n return null;\n }\n\n const alternate = fiber.alternate;\n if (!alternate) {\n // If there is no alternate, then we only need to check if it is mounted.\n const state = isFiberMountedImpl(fiber);\n if (state === UNMOUNTED) {\n throw Error('Unable to find node on an unmounted component.');\n }\n if (state === MOUNTING) {\n return null;\n }\n return fiber;\n }\n // If we have two possible branches, we'll walk backwards up to the root\n // to see what path the root points to. On the way we may hit one of the\n // special cases and we'll deal with them.\n let a: Fiber = fiber;\n let b: Fiber = alternate;\n while (true) {\n const parentA = a.return;\n if (parentA === null) {\n // We're at the root.\n break;\n }\n const parentB = parentA.alternate;\n if (parentB === null) {\n // There is no alternate. This is an unusual case. Currently, it only\n // happens when a Suspense component is hidden. An extra fragment fiber\n // is inserted in between the Suspense fiber and its children. Skip\n // over this extra fragment fiber and proceed to the next parent.\n const nextParent = parentA.return;\n if (nextParent !== null) {\n a = b = nextParent;\n continue;\n }\n // If there's no parent, we're at the root.\n break;\n }\n\n // If both copies of the parent fiber point to the same child, we can\n // assume that the child is current. This happens when we bailout on low\n // priority: the bailed out fiber's child reuses the current child.\n if (parentA.child === parentB.child) {\n let child = parentA.child;\n while (child) {\n if (child === a) {\n // We've determined that A is the current branch.\n if (isFiberMountedImpl(parentA) !== MOUNTED) {\n throw Error('Unable to find node on an unmounted component.');\n }\n return fiber;\n }\n if (child === b) {\n // We've determined that B is the current branch.\n if (isFiberMountedImpl(parentA) !== MOUNTED) {\n throw Error('Unable to find node on an unmounted component.');\n }\n return alternate;\n }\n child = child.sibling;\n }\n // We should never have an alternate for any mounting node. So the only\n // way this could possibly happen is if this was unmounted, if at all.\n throw Error('Unable to find node on an unmounted component.');\n }\n\n if (a.return !== b.return) {\n // The return pointer of A and the return pointer of B point to different\n // fibers. We assume that return pointers never criss-cross, so A must\n // belong to the child set of A.return, and B must belong to the child\n // set of B.return.\n a = parentA;\n b = parentB;\n } else {\n // The return pointers point to the same fiber. We'll have to use the\n // default, slow path: scan the child sets of each parent alternate to see\n // which child belongs to which set.\n //\n // Search parent A's child set\n let didFindChild = false;\n let child = parentA.child;\n while (child) {\n if (child === a) {\n didFindChild = true;\n a = parentA;\n b = parentB;\n break;\n }\n if (child === b) {\n didFindChild = true;\n b = parentA;\n a = parentB;\n break;\n }\n child = child.sibling;\n }\n if (!didFindChild) {\n // Search parent B's child set\n child = parentB.child;\n while (child) {\n if (child === a) {\n didFindChild = true;\n a = parentB;\n b = parentA;\n break;\n }\n if (child === b) {\n didFindChild = true;\n b = parentB;\n a = parentA;\n break;\n }\n child = child.sibling;\n }\n if (!didFindChild) {\n throw Error(\n 'Child was not found in either parent set. This indicates a bug ' +\n 'in React related to the return pointer. Please file an issue.',\n );\n }\n }\n }\n\n if (a.alternate !== b) {\n throw Error(\n \"Return fibers should always be each others' alternates. \" +\n 'This error is likely caused by a bug in React. Please file an issue.',\n );\n }\n }\n // If the root is not a host container, we're in a disconnected tree. I.e.\n // unmounted.\n if (a.tag !== HostRoot) {\n throw Error('Unable to find node on an unmounted component.');\n }\n if (a.stateNode.current === a) {\n // We've determined that A is the current branch.\n return fiber;\n }\n // Otherwise B has to be current branch.\n return alternate;\n }\n // END copied code\n\n function prepareViewAttributeSource(\n id: number,\n path: Array<string | number>,\n ): void {\n const isCurrent = isMostRecentlyInspectedElementCurrent(id);\n if (isCurrent) {\n window.$attribute = getInObject(\n ((mostRecentlyInspectedElement: any): InspectedElement),\n path,\n );\n }\n }\n\n function prepareViewElementSource(id: number): void {\n const fiber = idToFiberMap.get(id);\n if (fiber == null) {\n console.warn(`Could not find Fiber with id \"${id}\"`);\n return;\n }\n\n const {elementType, tag, type} = fiber;\n\n switch (tag) {\n case ClassComponent:\n case IncompleteClassComponent:\n case IndeterminateComponent:\n case FunctionComponent:\n global.$type = type;\n break;\n case ForwardRef:\n global.$type = type.render;\n break;\n case MemoComponent:\n case SimpleMemoComponent:\n global.$type =\n elementType != null && elementType.type != null\n ? elementType.type\n : type;\n break;\n default:\n global.$type = null;\n break;\n }\n }\n\n function getOwnersList(id: number): Array<Owner> | null {\n const fiber = findCurrentFiberUsingSlowPathById(id);\n if (fiber == null) {\n return null;\n }\n\n const {_debugOwner} = fiber;\n\n const owners = [\n {\n displayName: getDisplayNameForFiber(fiber) || 'Anonymous',\n id,\n type: getElementTypeForFiber(fiber),\n },\n ];\n\n if (_debugOwner) {\n let owner = _debugOwner;\n while (owner !== null) {\n owners.unshift({\n displayName: getDisplayNameForFiber(owner) || 'Anonymous',\n id: getFiberID(getPrimaryFiber(owner)),\n type: getElementTypeForFiber(owner),\n });\n owner = owner._debugOwner || null;\n }\n }\n\n return owners;\n }\n\n // Fast path props lookup for React Native style editor.\n // Could use inspectElementRaw() but that would require shallow rendering hooks components,\n // and could also mess with memoization.\n function getInstanceAndStyle(id: number): InstanceAndStyle {\n let instance = null;\n let style = null;\n\n const fiber = findCurrentFiberUsingSlowPathById(id);\n if (fiber !== null) {\n instance = fiber.stateNode;\n\n if (fiber.memoizedProps !== null) {\n style = fiber.memoizedProps.style;\n }\n }\n\n return {instance, style};\n }\n\n function inspectElementRaw(id: number): InspectedElement | null {\n const fiber = findCurrentFiberUsingSlowPathById(id);\n if (fiber == null) {\n return null;\n }\n\n const {\n _debugOwner,\n _debugSource,\n stateNode,\n key,\n memoizedProps,\n memoizedState,\n dependencies,\n tag,\n type,\n } = fiber;\n\n const elementType = getElementTypeForFiber(fiber);\n\n const usesHooks =\n (tag === FunctionComponent ||\n tag === SimpleMemoComponent ||\n tag === ForwardRef) &&\n (!!memoizedState || !!dependencies);\n\n const typeSymbol = getTypeSymbol(type);\n\n let canViewSource = false;\n let context = null;\n if (\n tag === ClassComponent ||\n tag === FunctionComponent ||\n tag === IncompleteClassComponent ||\n tag === IndeterminateComponent ||\n tag === MemoComponent ||\n tag === ForwardRef ||\n tag === SimpleMemoComponent\n ) {\n canViewSource = true;\n if (stateNode && stateNode.context != null) {\n // Don't show an empty context object for class components that don't use the context API.\n const shouldHideContext =\n elementType === ElementTypeClass &&\n !(type.contextTypes || type.contextType);\n\n if (!shouldHideContext) {\n context = stateNode.context;\n }\n }\n } else if (\n typeSymbol === CONTEXT_NUMBER ||\n typeSymbol === CONTEXT_SYMBOL_STRING\n ) {\n // 16.3-16.5 read from \"type\" because the Consumer is the actual context object.\n // 16.6+ should read from \"type._context\" because Consumer can be different (in DEV).\n // NOTE Keep in sync with getDisplayNameForFiber()\n const consumerResolvedContext = type._context || type;\n\n // Global context value.\n context = consumerResolvedContext._currentValue || null;\n\n // Look for overridden value.\n let current = ((fiber: any): Fiber).return;\n while (current !== null) {\n const currentType = current.type;\n const currentTypeSymbol = getTypeSymbol(currentType);\n if (\n currentTypeSymbol === PROVIDER_NUMBER ||\n currentTypeSymbol === PROVIDER_SYMBOL_STRING\n ) {\n // 16.3.0 exposed the context object as \"context\"\n // PR #12501 changed it to \"_context\" for 16.3.1+\n // NOTE Keep in sync with getDisplayNameForFiber()\n const providerResolvedContext =\n currentType._context || currentType.context;\n if (providerResolvedContext === consumerResolvedContext) {\n context = current.memoizedProps.value;\n break;\n }\n }\n\n current = current.return;\n }\n }\n\n let hasLegacyContext = false;\n if (context !== null) {\n hasLegacyContext = !!type.contextTypes;\n\n // To simplify hydration and display logic for context, wrap in a value object.\n // Otherwise simple values (e.g. strings, booleans) become harder to handle.\n context = {value: context};\n }\n\n let owners = null;\n if (_debugOwner) {\n owners = [];\n let owner = _debugOwner;\n while (owner !== null) {\n owners.push({\n displayName: getDisplayNameForFiber(owner) || 'Anonymous',\n id: getFiberID(getPrimaryFiber(owner)),\n type: getElementTypeForFiber(owner),\n });\n owner = owner._debugOwner || null;\n }\n }\n\n const isTimedOutSuspense =\n tag === SuspenseComponent && memoizedState !== null;\n\n let hooks = null;\n if (usesHooks) {\n const originalConsoleMethods = {};\n\n // Temporarily disable all console logging before re-running the hook.\n for (const method in console) {\n try {\n originalConsoleMethods[method] = console[method];\n // $FlowFixMe property error|warn is not writable.\n console[method] = () => {};\n } catch (error) {}\n }\n\n try {\n hooks = inspectHooksOfFiber(\n fiber,\n (renderer.currentDispatcherRef: any),\n );\n } finally {\n // Restore original console functionality.\n for (const method in originalConsoleMethods) {\n try {\n // $FlowFixMe property error|warn is not writable.\n console[method] = originalConsoleMethods[method];\n } catch (error) {}\n }\n }\n }\n\n let rootType = null;\n let current = fiber;\n while (current.return !== null) {\n current = current.return;\n }\n const fiberRoot = current.stateNode;\n if (fiberRoot != null && fiberRoot._debugRootType !== null) {\n rootType = fiberRoot._debugRootType;\n }\n\n return {\n id,\n\n // Does the current renderer support editable hooks and function props?\n canEditHooks: typeof overrideHookState === 'function',\n canEditFunctionProps: typeof overrideProps === 'function',\n\n // Does the current renderer support advanced editing interface?\n canEditHooksAndDeletePaths:\n typeof overrideHookStateDeletePath === 'function',\n canEditHooksAndRenamePaths:\n typeof overrideHookStateRenamePath === 'function',\n canEditFunctionPropsDeletePaths:\n typeof overridePropsDeletePath === 'function',\n canEditFunctionPropsRenamePaths:\n typeof overridePropsRenamePath === 'function',\n\n canToggleSuspense:\n supportsTogglingSuspense &&\n // If it's showing the real content, we can always flip fallback.\n (!isTimedOutSuspense ||\n // If it's showing fallback because we previously forced it to,\n // allow toggling it back to remove the fallback override.\n forceFallbackForSuspenseIDs.has(id)),\n\n // Can view component source location.\n canViewSource,\n\n // Does the component have legacy context attached to it.\n hasLegacyContext,\n\n key: key != null ? key : null,\n\n displayName: getDisplayNameForFiber(fiber),\n type: elementType,\n\n // Inspectable properties.\n // TODO Review sanitization approach for the below inspectable values.\n context,\n hooks,\n props: memoizedProps,\n state: usesHooks ? null : memoizedState,\n\n // List of owners\n owners,\n\n // Location of component in source code.\n source: _debugSource || null,\n\n rootType,\n rendererPackageName: renderer.rendererPackageName,\n rendererVersion: renderer.version,\n };\n }\n\n let mostRecentlyInspectedElement: InspectedElement | null = null;\n let hasElementUpdatedSinceLastInspected: boolean = false;\n let currentlyInspectedPaths: Object = {};\n\n function isMostRecentlyInspectedElementCurrent(id: number): boolean {\n return (\n mostRecentlyInspectedElement !== null &&\n mostRecentlyInspectedElement.id === id &&\n !hasElementUpdatedSinceLastInspected\n );\n }\n\n // Track the intersection of currently inspected paths,\n // so that we can send their data along if the element is re-rendered.\n function mergeInspectedPaths(path: Array<string | number>) {\n let current = currentlyInspectedPaths;\n path.forEach(key => {\n if (!current[key]) {\n current[key] = {};\n }\n current = current[key];\n });\n }\n\n function createIsPathAllowed(\n key: string | null,\n secondaryCategory: 'hooks' | null,\n ) {\n // This function helps prevent previously-inspected paths from being dehydrated in updates.\n // This is important to avoid a bad user experience where expanded toggles collapse on update.\n return function isPathAllowed(path: Array<string | number>): boolean {\n switch (secondaryCategory) {\n case 'hooks':\n if (path.length === 1) {\n // Never dehydrate the \"hooks\" object at the top levels.\n return true;\n }\n if (\n path[path.length - 1] === 'subHooks' ||\n path[path.length - 2] === 'subHooks'\n ) {\n // Dehydrating the 'subHooks' property makes the HooksTree UI a lot more complicated,\n // so it's easiest for now if we just don't break on this boundary.\n // We can always dehydrate a level deeper (in the value object).\n return true;\n }\n break;\n default:\n break;\n }\n\n let current =\n key === null ? currentlyInspectedPaths : currentlyInspectedPaths[key];\n if (!current) {\n return false;\n }\n for (let i = 0; i < path.length; i++) {\n current = current[path[i]];\n if (!current) {\n return false;\n }\n }\n return true;\n };\n }\n\n function updateSelectedElement(inspectedElement: InspectedElement): void {\n const {hooks, id, props} = inspectedElement;\n\n const fiber = idToFiberMap.get(id);\n if (fiber == null) {\n console.warn(`Could not find Fiber with id \"${id}\"`);\n return;\n }\n\n const {elementType, stateNode, tag, type} = fiber;\n\n switch (tag) {\n case ClassComponent:\n case IncompleteClassComponent:\n case IndeterminateComponent:\n global.$r = stateNode;\n break;\n case FunctionComponent:\n global.$r = {\n hooks,\n props,\n type,\n };\n break;\n case ForwardRef:\n global.$r = {\n props,\n type: type.render,\n };\n break;\n case MemoComponent:\n case SimpleMemoComponent:\n global.$r = {\n props,\n type:\n elementType != null && elementType.type != null\n ? elementType.type\n : type,\n };\n break;\n default:\n global.$r = null;\n break;\n }\n }\n\n function storeAsGlobal(\n id: number,\n path: Array<string | number>,\n count: number,\n ): void {\n const isCurrent = isMostRecentlyInspectedElementCurrent(id);\n\n if (isCurrent) {\n const value = getInObject(\n ((mostRecentlyInspectedElement: any): InspectedElement),\n path,\n );\n const key = `$reactTemp${count}`;\n\n window[key] = value;\n\n console.log(key);\n console.log(value);\n }\n }\n\n function copyElementPath(id: number, path: Array<string | number>): void {\n const isCurrent = isMostRecentlyInspectedElementCurrent(id);\n\n if (isCurrent) {\n copyToClipboard(\n getInObject(\n ((mostRecentlyInspectedElement: any): InspectedElement),\n path,\n ),\n );\n }\n }\n\n function inspectElement(\n id: number,\n path?: Array<string | number>,\n ): InspectedElementPayload {\n const isCurrent = isMostRecentlyInspectedElementCurrent(id);\n\n if (isCurrent) {\n if (path != null) {\n mergeInspectedPaths(path);\n\n let secondaryCategory = null;\n if (path[0] === 'hooks') {\n secondaryCategory = 'hooks';\n }\n\n // If this element has not been updated since it was last inspected,\n // we can just return the subset of data in the newly-inspected path.\n return {\n id,\n type: 'hydrated-path',\n path,\n value: cleanForBridge(\n getInObject(\n ((mostRecentlyInspectedElement: any): InspectedElement),\n path,\n ),\n createIsPathAllowed(null, secondaryCategory),\n path,\n ),\n };\n } else {\n // If this element has not been updated since it was last inspected, we don't need to re-run it.\n // Instead we can just return the ID to indicate that it has not changed.\n return {\n id,\n type: 'no-change',\n };\n }\n } else {\n hasElementUpdatedSinceLastInspected = false;\n\n if (\n mostRecentlyInspectedElement === null ||\n mostRecentlyInspectedElement.id !== id\n ) {\n currentlyInspectedPaths = {};\n }\n\n mostRecentlyInspectedElement = inspectElementRaw(id);\n if (mostRecentlyInspectedElement === null) {\n return {\n id,\n type: 'not-found',\n };\n }\n\n if (path != null) {\n mergeInspectedPaths(path);\n }\n\n // Any time an inspected element has an update,\n // we should update the selected $r value as wel.\n // Do this before dehydration (cleanForBridge).\n updateSelectedElement(mostRecentlyInspectedElement);\n\n // Clone before cleaning so that we preserve the full data.\n // This will enable us to send patches without re-inspecting if hydrated paths are requested.\n // (Reducing how often we shallow-render is a better DX for function components that use hooks.)\n const cleanedInspectedElement = {...mostRecentlyInspectedElement};\n cleanedInspectedElement.context = cleanForBridge(\n cleanedInspectedElement.context,\n createIsPathAllowed('context', null),\n );\n cleanedInspectedElement.hooks = cleanForBridge(\n cleanedInspectedElement.hooks,\n createIsPathAllowed('hooks', 'hooks'),\n );\n cleanedInspectedElement.props = cleanForBridge(\n cleanedInspectedElement.props,\n createIsPathAllowed('props', null),\n );\n cleanedInspectedElement.state = cleanForBridge(\n cleanedInspectedElement.state,\n createIsPathAllowed('state', null),\n );\n\n return {\n id,\n type: 'full-data',\n value: cleanedInspectedElement,\n };\n }\n }\n\n function logElementToConsole(id) {\n const result = isMostRecentlyInspectedElementCurrent(id)\n ? mostRecentlyInspectedElement\n : inspectElementRaw(id);\n if (result === null) {\n console.warn(`Could not find Fiber with id \"${id}\"`);\n return;\n }\n\n const supportsGroup = typeof console.groupCollapsed === 'function';\n if (supportsGroup) {\n console.groupCollapsed(\n `[Click to expand] %c<${result.displayName || 'Component'} />`,\n // --dom-tag-name-color is the CSS variable Chrome styles HTML elements with in the console.\n 'color: var(--dom-tag-name-color); font-weight: normal;',\n );\n }\n if (result.props !== null) {\n console.log('Props:', result.props);\n }\n if (result.state !== null) {\n console.log('State:', result.state);\n }\n if (result.hooks !== null) {\n console.log('Hooks:', result.hooks);\n }\n const nativeNodes = findNativeNodesForFiberID(id);\n if (nativeNodes !== null) {\n console.log('Nodes:', nativeNodes);\n }\n if (result.source !== null) {\n console.log('Location:', result.source);\n }\n if (window.chrome || /firefox/i.test(navigator.userAgent)) {\n console.log(\n 'Right-click any value to save it as a global variable for further inspection.',\n );\n }\n if (supportsGroup) {\n console.groupEnd();\n }\n }\n\n function deletePath(\n type: 'context' | 'hooks' | 'props' | 'state',\n id: number,\n hookID: ?number,\n path: Array<string | number>,\n ): void {\n const fiber = findCurrentFiberUsingSlowPathById(id);\n if (fiber !== null) {\n const instance = fiber.stateNode;\n\n switch (type) {\n case 'context':\n // To simplify hydration and display of primitive context values (e.g. number, string)\n // the inspectElement() method wraps context in a {value: ...} object.\n // We need to remove the first part of the path (the \"value\") before continuing.\n path = path.slice(1);\n\n switch (fiber.tag) {\n case ClassComponent:\n if (path.length === 0) {\n // Simple context value (noop)\n } else {\n deletePathInObject(instance.context, path);\n }\n instance.forceUpdate();\n break;\n case FunctionComponent:\n // Function components using legacy context are not editable\n // because there's no instance on which to create a cloned, mutated context.\n break;\n }\n break;\n case 'hooks':\n if (typeof overrideHookStateDeletePath === 'function') {\n overrideHookStateDeletePath(fiber, ((hookID: any): number), path);\n }\n break;\n case 'props':\n if (instance === null) {\n if (typeof overridePropsDeletePath === 'function') {\n overridePropsDeletePath(fiber, path);\n }\n } else {\n fiber.pendingProps = copyWithDelete(instance.props, path);\n instance.forceUpdate();\n }\n break;\n case 'state':\n deletePathInObject(instance.state, path);\n instance.forceUpdate();\n break;\n }\n }\n }\n\n function renamePath(\n type: 'context' | 'hooks' | 'props' | 'state',\n id: number,\n hookID: ?number,\n oldPath: Array<string | number>,\n newPath: Array<string | number>,\n ): void {\n const fiber = findCurrentFiberUsingSlowPathById(id);\n if (fiber !== null) {\n const instance = fiber.stateNode;\n\n switch (type) {\n case 'context':\n // To simplify hydration and display of primitive context values (e.g. number, string)\n // the inspectElement() method wraps context in a {value: ...} object.\n // We need to remove the first part of the path (the \"value\") before continuing.\n oldPath = oldPath.slice(1);\n newPath = newPath.slice(1);\n\n switch (fiber.tag) {\n case ClassComponent:\n if (oldPath.length === 0) {\n // Simple context value (noop)\n } else {\n renamePathInObject(instance.context, oldPath, newPath);\n }\n instance.forceUpdate();\n break;\n case FunctionComponent:\n // Function components using legacy context are not editable\n // because there's no instance on which to create a cloned, mutated context.\n break;\n }\n break;\n case 'hooks':\n if (typeof overrideHookStateRenamePath === 'function') {\n overrideHookStateRenamePath(\n fiber,\n ((hookID: any): number),\n oldPath,\n newPath,\n );\n }\n break;\n case 'props':\n if (instance === null) {\n if (typeof overridePropsRenamePath === 'function') {\n overridePropsRenamePath(fiber, oldPath, newPath);\n }\n } else {\n fiber.pendingProps = copyWithRename(\n instance.props,\n oldPath,\n newPath,\n );\n instance.forceUpdate();\n }\n break;\n case 'state':\n renamePathInObject(instance.state, oldPath, newPath);\n instance.forceUpdate();\n break;\n }\n }\n }\n\n function overrideValueAtPath(\n type: 'context' | 'hooks' | 'props' | 'state',\n id: number,\n hookID: ?number,\n path: Array<string | number>,\n value: any,\n ): void {\n const fiber = findCurrentFiberUsingSlowPathById(id);\n if (fiber !== null) {\n const instance = fiber.stateNode;\n\n switch (type) {\n case 'context':\n // To simplify hydration and display of primitive context values (e.g. number, string)\n // the inspectElement() method wraps context in a {value: ...} object.\n // We need to remove the first part of the path (the \"value\") before continuing.\n path = path.slice(1);\n\n switch (fiber.tag) {\n case ClassComponent:\n if (path.length === 0) {\n // Simple context value\n instance.context = value;\n } else {\n setInObject(instance.context, path, value);\n }\n instance.forceUpdate();\n break;\n case FunctionComponent:\n // Function components using legacy context are not editable\n // because there's no instance on which to create a cloned, mutated context.\n break;\n }\n break;\n case 'hooks':\n if (typeof overrideHookState === 'function') {\n overrideHookState(fiber, ((hookID: any): number), path, value);\n }\n break;\n case 'props':\n switch (fiber.tag) {\n case ClassComponent:\n fiber.pendingProps = copyWithSet(instance.props, path, value);\n instance.forceUpdate();\n break;\n default:\n if (typeof overrideProps === 'function') {\n overrideProps(fiber, path, value);\n }\n break;\n }\n break;\n case 'state':\n switch (fiber.tag) {\n case ClassComponent:\n setInObject(instance.state, path, value);\n instance.forceUpdate();\n break;\n }\n break;\n }\n }\n }\n\n type CommitProfilingData = {|\n changeDescriptions: Map<number, ChangeDescription> | null,\n commitTime: number,\n durations: Array<number>,\n interactions: Array<Interaction>,\n maxActualDuration: number,\n priorityLevel: string | null,\n |};\n\n type CommitProfilingMetadataMap = Map<number, Array<CommitProfilingData>>;\n type DisplayNamesByRootID = Map<number, string>;\n\n let currentCommitProfilingMetadata: CommitProfilingData | null = null;\n let displayNamesByRootID: DisplayNamesByRootID | null = null;\n let idToContextsMap: Map<number, any> | null = null;\n let initialTreeBaseDurationsMap: Map<number, number> | null = null;\n let initialIDToRootMap: Map<number, number> | null = null;\n let isProfiling: boolean = false;\n let profilingStartTime: number = 0;\n let recordChangeDescriptions: boolean = false;\n let rootToCommitProfilingMetadataMap: CommitProfilingMetadataMap | null = null;\n\n function getProfilingData(): ProfilingDataBackend {\n const dataForRoots: Array<ProfilingDataForRootBackend> = [];\n\n if (rootToCommitProfilingMetadataMap === null) {\n throw Error(\n 'getProfilingData() called before any profiling data was recorded',\n );\n }\n\n rootToCommitProfilingMetadataMap.forEach(\n (commitProfilingMetadata, rootID) => {\n const commitData: Array<CommitDataBackend> = [];\n const initialTreeBaseDurations: Array<[number, number]> = [];\n const allInteractions: Map<number, Interaction> = new Map();\n const interactionCommits: Map<number, Array<number>> = new Map();\n\n const displayName =\n (displayNamesByRootID !== null && displayNamesByRootID.get(rootID)) ||\n 'Unknown';\n\n if (initialTreeBaseDurationsMap != null) {\n initialTreeBaseDurationsMap.forEach((treeBaseDuration, id) => {\n if (\n initialIDToRootMap != null &&\n initialIDToRootMap.get(id) === rootID\n ) {\n // We don't need to convert milliseconds to microseconds in this case,\n // because the profiling summary is JSON serialized.\n initialTreeBaseDurations.push([id, treeBaseDuration]);\n }\n });\n }\n\n commitProfilingMetadata.forEach((commitProfilingData, commitIndex) => {\n const {\n changeDescriptions,\n durations,\n interactions,\n maxActualDuration,\n priorityLevel,\n commitTime,\n } = commitProfilingData;\n\n const interactionIDs: Array<number> = [];\n\n interactions.forEach(interaction => {\n if (!allInteractions.has(interaction.id)) {\n allInteractions.set(interaction.id, interaction);\n }\n\n interactionIDs.push(interaction.id);\n\n const commitIndices = interactionCommits.get(interaction.id);\n if (commitIndices != null) {\n commitIndices.push(commitIndex);\n } else {\n interactionCommits.set(interaction.id, [commitIndex]);\n }\n });\n\n const fiberActualDurations: Array<[number, number]> = [];\n const fiberSelfDurations: Array<[number, number]> = [];\n for (let i = 0; i < durations.length; i += 3) {\n const fiberID = durations[i];\n fiberActualDurations.push([fiberID, durations[i + 1]]);\n fiberSelfDurations.push([fiberID, durations[i + 2]]);\n }\n\n commitData.push({\n changeDescriptions:\n changeDescriptions !== null\n ? Array.from(changeDescriptions.entries())\n : null,\n duration: maxActualDuration,\n fiberActualDurations,\n fiberSelfDurations,\n interactionIDs,\n priorityLevel,\n timestamp: commitTime,\n });\n });\n\n dataForRoots.push({\n commitData,\n displayName,\n initialTreeBaseDurations,\n interactionCommits: Array.from(interactionCommits.entries()),\n interactions: Array.from(allInteractions.entries()),\n rootID,\n });\n },\n );\n\n return {\n dataForRoots,\n rendererID,\n };\n }\n\n function startProfiling(shouldRecordChangeDescriptions: boolean) {\n if (isProfiling) {\n return;\n }\n\n recordChangeDescriptions = shouldRecordChangeDescriptions;\n\n // Capture initial values as of the time profiling starts.\n // It's important we snapshot both the durations and the id-to-root map,\n // since either of these may change during the profiling session\n // (e.g. when a fiber is re-rendered or when a fiber gets removed).\n displayNamesByRootID = new Map();\n initialTreeBaseDurationsMap = new Map(idToTreeBaseDurationMap);\n initialIDToRootMap = new Map(idToRootMap);\n idToContextsMap = new Map();\n\n hook.getFiberRoots(rendererID).forEach(root => {\n const rootID = getFiberID(getPrimaryFiber(root.current));\n ((displayNamesByRootID: any): DisplayNamesByRootID).set(\n rootID,\n getDisplayNameForRoot(root.current),\n );\n\n if (shouldRecordChangeDescriptions) {\n // Record all contexts at the time profiling is started.\n // Fibers only store the current context value,\n // so we need to track them separately in order to determine changed keys.\n crawlToInitializeContextsMap(root.current);\n }\n });\n\n isProfiling = true;\n profilingStartTime = getCurrentTime();\n rootToCommitProfilingMetadataMap = new Map();\n }\n\n function stopProfiling() {\n isProfiling = false;\n recordChangeDescriptions = false;\n }\n\n // Automatically start profiling so that we don't miss timing info from initial \"mount\".\n if (\n sessionStorageGetItem(SESSION_STORAGE_RELOAD_AND_PROFILE_KEY) === 'true'\n ) {\n startProfiling(\n sessionStorageGetItem(SESSION_STORAGE_RECORD_CHANGE_DESCRIPTIONS_KEY) ===\n 'true',\n );\n }\n\n // React will switch between these implementations depending on whether\n // we have any manually suspended Fibers or not.\n\n function shouldSuspendFiberAlwaysFalse() {\n return false;\n }\n\n const forceFallbackForSuspenseIDs = new Set();\n function shouldSuspendFiberAccordingToSet(fiber) {\n const id = getFiberID(getPrimaryFiber(((fiber: any): Fiber)));\n return forceFallbackForSuspenseIDs.has(id);\n }\n\n function overrideSuspense(id, forceFallback) {\n if (\n typeof setSuspenseHandler !== 'function' ||\n typeof scheduleUpdate !== 'function'\n ) {\n throw new Error(\n 'Expected overrideSuspense() to not get called for earlier React versions.',\n );\n }\n if (forceFallback) {\n forceFallbackForSuspenseIDs.add(id);\n if (forceFallbackForSuspenseIDs.size === 1) {\n // First override is added. Switch React to slower path.\n setSuspenseHandler(shouldSuspendFiberAccordingToSet);\n }\n } else {\n forceFallbackForSuspenseIDs.delete(id);\n if (forceFallbackForSuspenseIDs.size === 0) {\n // Last override is gone. Switch React back to fast path.\n setSuspenseHandler(shouldSuspendFiberAlwaysFalse);\n }\n }\n const fiber = idToFiberMap.get(id);\n if (fiber != null) {\n scheduleUpdate(fiber);\n }\n }\n\n // Remember if we're trying to restore the selection after reload.\n // In that case, we'll do some extra checks for matching mounts.\n let trackedPath: Array<PathFrame> | null = null;\n let trackedPathMatchFiber: Fiber | null = null;\n let trackedPathMatchDepth = -1;\n let mightBeOnTrackedPath = false;\n\n function setTrackedPath(path: Array<PathFrame> | null) {\n if (path === null) {\n trackedPathMatchFiber = null;\n trackedPathMatchDepth = -1;\n mightBeOnTrackedPath = false;\n }\n trackedPath = path;\n }\n\n // We call this before traversing a new mount.\n // It remembers whether this Fiber is the next best match for tracked path.\n // The return value signals whether we should keep matching siblings or not.\n function updateTrackedPathStateBeforeMount(fiber: Fiber): boolean {\n if (trackedPath === null || !mightBeOnTrackedPath) {\n // Fast path: there's nothing to track so do nothing and ignore siblings.\n return false;\n }\n const returnFiber = fiber.return;\n const returnAlternate = returnFiber !== null ? returnFiber.alternate : null;\n // By now we know there's some selection to restore, and this is a new Fiber.\n // Is this newly mounted Fiber a direct child of the current best match?\n // (This will also be true for new roots if we haven't matched anything yet.)\n if (\n trackedPathMatchFiber === returnFiber ||\n (trackedPathMatchFiber === returnAlternate && returnAlternate !== null)\n ) {\n // Is this the next Fiber we should select? Let's compare the frames.\n const actualFrame = getPathFrame(fiber);\n const expectedFrame = trackedPath[trackedPathMatchDepth + 1];\n if (expectedFrame === undefined) {\n throw new Error('Expected to see a frame at the next depth.');\n }\n if (\n actualFrame.index === expectedFrame.index &&\n actualFrame.key === expectedFrame.key &&\n actualFrame.displayName === expectedFrame.displayName\n ) {\n // We have our next match.\n trackedPathMatchFiber = fiber;\n trackedPathMatchDepth++;\n // Are we out of frames to match?\n if (trackedPathMatchDepth === trackedPath.length - 1) {\n // There's nothing that can possibly match afterwards.\n // Don't check the children.\n mightBeOnTrackedPath = false;\n } else {\n // Check the children, as they might reveal the next match.\n mightBeOnTrackedPath = true;\n }\n // In either case, since we have a match, we don't need\n // to check the siblings. They'll never match.\n return false;\n }\n }\n // This Fiber's parent is on the path, but this Fiber itself isn't.\n // There's no need to check its children--they won't be on the path either.\n mightBeOnTrackedPath = false;\n // However, one of its siblings may be on the path so keep searching.\n return true;\n }\n\n function updateTrackedPathStateAfterMount(mightSiblingsBeOnTrackedPath) {\n // updateTrackedPathStateBeforeMount() told us whether to match siblings.\n // Now that we're entering siblings, let's use that information.\n mightBeOnTrackedPath = mightSiblingsBeOnTrackedPath;\n }\n\n // Roots don't have a real persistent identity.\n // A root's \"pseudo key\" is \"childDisplayName:indexWithThatName\".\n // For example, \"App:0\" or, in case of similar roots, \"Story:0\", \"Story:1\", etc.\n // We will use this to try to disambiguate roots when restoring selection between reloads.\n const rootPseudoKeys: Map<number, string> = new Map();\n const rootDisplayNameCounter: Map<string, number> = new Map();\n\n function setRootPseudoKey(id: number, fiber: Fiber) {\n const name = getDisplayNameForRoot(fiber);\n const counter = rootDisplayNameCounter.get(name) || 0;\n rootDisplayNameCounter.set(name, counter + 1);\n const pseudoKey = `${name}:${counter}`;\n rootPseudoKeys.set(id, pseudoKey);\n }\n\n function removeRootPseudoKey(id: number) {\n const pseudoKey = rootPseudoKeys.get(id);\n if (pseudoKey === undefined) {\n throw new Error('Expected root pseudo key to be known.');\n }\n const name = pseudoKey.substring(0, pseudoKey.lastIndexOf(':'));\n const counter = rootDisplayNameCounter.get(name);\n if (counter === undefined) {\n throw new Error('Expected counter to be known.');\n }\n if (counter > 1) {\n rootDisplayNameCounter.set(name, counter - 1);\n } else {\n rootDisplayNameCounter.delete(name);\n }\n rootPseudoKeys.delete(id);\n }\n\n function getDisplayNameForRoot(fiber: Fiber): string {\n let preferredDisplayName = null;\n let fallbackDisplayName = null;\n let child = fiber.child;\n // Go at most three levels deep into direct children\n // while searching for a child that has a displayName.\n for (let i = 0; i < 3; i++) {\n if (child === null) {\n break;\n }\n const displayName = getDisplayNameForFiber(child);\n if (displayName !== null) {\n // Prefer display names that we get from user-defined components.\n // We want to avoid using e.g. 'Suspense' unless we find nothing else.\n if (typeof child.type === 'function') {\n // There's a few user-defined tags, but we'll prefer the ones\n // that are usually explicitly named (function or class components).\n preferredDisplayName = displayName;\n } else if (fallbackDisplayName === null) {\n fallbackDisplayName = displayName;\n }\n }\n if (preferredDisplayName !== null) {\n break;\n }\n child = child.child;\n }\n return preferredDisplayName || fallbackDisplayName || 'Anonymous';\n }\n\n function getPathFrame(fiber: Fiber): PathFrame {\n const {key} = fiber;\n let displayName = getDisplayNameForFiber(fiber);\n const index = fiber.index;\n switch (fiber.tag) {\n case HostRoot:\n // Roots don't have a real displayName, index, or key.\n // Instead, we'll use the pseudo key (childDisplayName:indexWithThatName).\n const id = getFiberID(getPrimaryFiber(fiber));\n const pseudoKey = rootPseudoKeys.get(id);\n if (pseudoKey === undefined) {\n throw new Error('Expected mounted root to have known pseudo key.');\n }\n displayName = pseudoKey;\n break;\n case HostComponent:\n displayName = fiber.type;\n break;\n default:\n break;\n }\n return {\n displayName,\n key,\n index,\n };\n }\n\n // Produces a serializable representation that does a best effort\n // of identifying a particular Fiber between page reloads.\n // The return path will contain Fibers that are \"invisible\" to the store\n // because their keys and indexes are important to restoring the selection.\n function getPathForElement(id: number): Array<PathFrame> | null {\n let fiber = idToFiberMap.get(id);\n if (fiber == null) {\n return null;\n }\n const keyPath = [];\n while (fiber !== null) {\n keyPath.push(getPathFrame(fiber));\n fiber = fiber.return;\n }\n keyPath.reverse();\n return keyPath;\n }\n\n function getBestMatchForTrackedPath(): PathMatch | null {\n if (trackedPath === null) {\n // Nothing to match.\n return null;\n }\n if (trackedPathMatchFiber === null) {\n // We didn't find anything.\n return null;\n }\n // Find the closest Fiber store is aware of.\n let fiber = trackedPathMatchFiber;\n while (fiber !== null && shouldFilterFiber(fiber)) {\n fiber = fiber.return;\n }\n if (fiber === null) {\n return null;\n }\n return {\n id: getFiberID(getPrimaryFiber(fiber)),\n isFullMatch: trackedPathMatchDepth === trackedPath.length - 1,\n };\n }\n\n const formatPriorityLevel = (priorityLevel: ?number) => {\n if (priorityLevel == null) {\n return 'Unknown';\n }\n\n switch (priorityLevel) {\n case ImmediatePriority:\n return 'Immediate';\n case UserBlockingPriority:\n return 'User-Blocking';\n case NormalPriority:\n return 'Normal';\n case LowPriority:\n return 'Low';\n case IdlePriority:\n return 'Idle';\n case NoPriority:\n default:\n return 'Unknown';\n }\n };\n\n function setTraceUpdatesEnabled(isEnabled: boolean): void {\n traceUpdatesEnabled = isEnabled;\n }\n\n return {\n cleanup,\n copyElementPath,\n deletePath,\n findNativeNodesForFiberID,\n flushInitialOperations,\n getBestMatchForTrackedPath,\n getDisplayNameForFiberID,\n getFiberIDForNative,\n getInstanceAndStyle,\n getOwnersList,\n getPathForElement,\n getProfilingData,\n handleCommitFiberRoot,\n handleCommitFiberUnmount,\n inspectElement,\n logElementToConsole,\n prepareViewAttributeSource,\n prepareViewElementSource,\n overrideSuspense,\n overrideValueAtPath,\n renamePath,\n renderer,\n setTraceUpdatesEnabled,\n setTrackedPath,\n startProfiling,\n stopProfiling,\n storeAsGlobal,\n updateComponentFilters,\n };\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\n// This list should be kept updated to reflect additions to 'shared/ReactSymbols'.\n// DevTools can't import symbols from 'shared/ReactSymbols' directly for two reasons:\n// 1. DevTools requires symbols which may have been deleted in more recent versions (e.g. concurrent mode)\n// 2. DevTools must support both Symbol and numeric forms of each symbol;\n// Since e.g. standalone DevTools runs in a separate process, it can't rely on its own ES capabilities.\n\nexport const CONCURRENT_MODE_NUMBER = 0xeacf;\nexport const CONCURRENT_MODE_SYMBOL_STRING = 'Symbol(react.concurrent_mode)';\n\nexport const CONTEXT_NUMBER = 0xeace;\nexport const CONTEXT_SYMBOL_STRING = 'Symbol(react.context)';\n\nexport const DEPRECATED_ASYNC_MODE_SYMBOL_STRING = 'Symbol(react.async_mode)';\n\nexport const ELEMENT_NUMBER = 0xeac7;\nexport const ELEMENT_SYMBOL_STRING = 'Symbol(react.element)';\n\nexport const DEBUG_TRACING_MODE_NUMBER = 0xeae1;\nexport const DEBUG_TRACING_MODE_SYMBOL_STRING =\n 'Symbol(react.debug_trace_mode)';\n\nexport const FORWARD_REF_NUMBER = 0xead0;\nexport const FORWARD_REF_SYMBOL_STRING = 'Symbol(react.forward_ref)';\n\nexport const FRAGMENT_NUMBER = 0xeacb;\nexport const FRAGMENT_SYMBOL_STRING = 'Symbol(react.fragment)';\n\nexport const FUNDAMENTAL_NUMBER = 0xead5;\nexport const FUNDAMENTAL_SYMBOL_STRING = 'Symbol(react.fundamental)';\n\nexport const LAZY_NUMBER = 0xead4;\nexport const LAZY_SYMBOL_STRING = 'Symbol(react.lazy)';\n\nexport const MEMO_NUMBER = 0xead3;\nexport const MEMO_SYMBOL_STRING = 'Symbol(react.memo)';\n\nexport const OPAQUE_ID_NUMBER = 0xeae0;\nexport const OPAQUE_ID_SYMBOL_STRING = 'Symbol(react.opaque.id)';\n\nexport const PORTAL_NUMBER = 0xeaca;\nexport const PORTAL_SYMBOL_STRING = 'Symbol(react.portal)';\n\nexport const PROFILER_NUMBER = 0xead2;\nexport const PROFILER_SYMBOL_STRING = 'Symbol(react.profiler)';\n\nexport const PROVIDER_NUMBER = 0xeacd;\nexport const PROVIDER_SYMBOL_STRING = 'Symbol(react.provider)';\n\nexport const SCOPE_NUMBER = 0xead7;\nexport const SCOPE_SYMBOL_STRING = 'Symbol(react.scope)';\n\nexport const STRICT_MODE_NUMBER = 0xeacc;\nexport const STRICT_MODE_SYMBOL_STRING = 'Symbol(react.strict_mode)';\n\nexport const SUSPENSE_NUMBER = 0xead1;\nexport const SUSPENSE_SYMBOL_STRING = 'Symbol(react.suspense)';\n\nexport const SUSPENSE_LIST_NUMBER = 0xead8;\nexport const SUSPENSE_LIST_SYMBOL_STRING = 'Symbol(react.suspense_list)';\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\n\nlet disabledDepth = 0;\nlet prevLog;\nlet prevInfo;\nlet prevWarn;\nlet prevError;\nlet prevGroup;\nlet prevGroupCollapsed;\nlet prevGroupEnd;\n\nfunction disabledLog() {}\ndisabledLog.__reactDisabledLog = true;\n\nexport function disableLogs(): void {\n if (__DEV__) {\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd;\n // https://github.com/facebook/react/issues/19099\n const props = {\n configurable: true,\n enumerable: true,\n value: disabledLog,\n writable: true,\n };\n // $FlowFixMe Flow thinks console is immutable.\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props,\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n disabledDepth++;\n }\n}\n\nexport function reenableLogs(): void {\n if (__DEV__) {\n disabledDepth--;\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n const props = {\n configurable: true,\n enumerable: true,\n writable: true,\n };\n // $FlowFixMe Flow thinks console is immutable.\n Object.defineProperties(console, {\n log: {...props, value: prevLog},\n info: {...props, value: prevInfo},\n warn: {...props, value: prevWarn},\n error: {...props, value: prevError},\n group: {...props, value: prevGroup},\n groupCollapsed: {...props, value: prevGroupCollapsed},\n groupEnd: {...props, value: prevGroupEnd},\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n if (disabledDepth < 0) {\n console.error(\n 'disabledDepth fell below zero. ' +\n 'This is a bug in React. Please file an issue.',\n );\n }\n }\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\n// This is a DevTools fork of ReactComponentStackFrame.\n// This fork enables DevTools to use the same \"native\" component stack format,\n// while still maintaining support for multiple renderer versions\n// (which use different values for ReactTypeOfWork).\n\nimport type {Source} from 'shared/ReactElementType';\nimport type {LazyComponent} from 'react/src/ReactLazy';\nimport type {CurrentDispatcherRef} from './types';\n\nimport {\n FORWARD_REF_NUMBER,\n FORWARD_REF_SYMBOL_STRING,\n LAZY_NUMBER,\n LAZY_SYMBOL_STRING,\n MEMO_NUMBER,\n MEMO_SYMBOL_STRING,\n SUSPENSE_NUMBER,\n SUSPENSE_SYMBOL_STRING,\n SUSPENSE_LIST_NUMBER,\n SUSPENSE_LIST_SYMBOL_STRING,\n} from './ReactSymbols';\n\n// These methods are safe to import from shared;\n// there is no React-specific logic here.\nimport {disableLogs, reenableLogs} from 'shared/ConsolePatchingDev';\n\nlet prefix;\nexport function describeBuiltInComponentFrame(\n name: string,\n source: void | null | Source,\n ownerFn: void | null | Function,\n): string {\n if (prefix === undefined) {\n // Extract the VM specific prefix used by each line.\n try {\n throw Error();\n } catch (x) {\n const match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = (match && match[1]) || '';\n }\n }\n // We use the prefix to ensure our stacks line up with native stack frames.\n return '\\n' + prefix + name;\n}\n\nlet reentry = false;\nlet componentFrameCache;\nif (__DEV__) {\n const PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n componentFrameCache = new PossiblyWeakMap();\n}\n\nexport function describeNativeComponentFrame(\n fn: Function,\n construct: boolean,\n currentDispatcherRef: CurrentDispatcherRef,\n): string {\n // If something asked for a stack inside a fake render, it should get ignored.\n if (!fn || reentry) {\n return '';\n }\n\n if (__DEV__) {\n const frame = componentFrameCache.get(fn);\n if (frame !== undefined) {\n return frame;\n }\n }\n\n let control;\n\n const previousPrepareStackTrace = Error.prepareStackTrace;\n // $FlowFixMe It does accept undefined.\n Error.prepareStackTrace = undefined;\n\n reentry = true;\n\n // Override the dispatcher so effects scheduled by this shallow render are thrown away.\n //\n // Note that unlike the code this was forked from (in ReactComponentStackFrame)\n // DevTools should override the dispatcher even when DevTools is compiled in production mode,\n // because the app itself may be in development mode and log errors/warnings.\n const previousDispatcher = currentDispatcherRef.current;\n currentDispatcherRef.current = null;\n disableLogs();\n\n try {\n // This should throw.\n if (construct) {\n // Something should be setting the props in the constructor.\n const Fake = function() {\n throw Error();\n };\n // $FlowFixMe\n Object.defineProperty(Fake.prototype, 'props', {\n set: function() {\n // We use a throwing setter instead of frozen or non-writable props\n // because that won't throw in a non-strict mode function.\n throw Error();\n },\n });\n if (typeof Reflect === 'object' && Reflect.construct) {\n // We construct a different control for this case to include any extra\n // frames added by the construct call.\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n control = x;\n }\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x) {\n control = x;\n }\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x) {\n control = x;\n }\n fn();\n }\n } catch (sample) {\n // This is inlined manually because closure doesn't do it for us.\n if (sample && control && typeof sample.stack === 'string') {\n // This extracts the first frame from the sample that isn't also in the control.\n // Skipping one frame that we assume is the frame that calls the two.\n const sampleLines = sample.stack.split('\\n');\n const controlLines = control.stack.split('\\n');\n let s = sampleLines.length - 1;\n let c = controlLines.length - 1;\n while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n // We expect at least one stack frame to be shared.\n // Typically this will be the root most one. However, stack frames may be\n // cut off due to maximum stack limits. In this case, one maybe cut off\n // earlier than the other. We assume that the sample is longer or the same\n // and there for cut off earlier. So we should find the root most frame in\n // the sample somewhere in the control.\n c--;\n }\n for (; s >= 1 && c >= 0; s--, c--) {\n // Next we find the first one that isn't the same which should be the\n // frame that called our sample function and the control.\n if (sampleLines[s] !== controlLines[c]) {\n // In V8, the first line is describing the message but other VMs don't.\n // If we're about to return the first line, and the control is also on the same\n // line, that's a pretty good indicator that our sample threw at same line as\n // the control. I.e. before we entered the sample frame. So we ignore this result.\n // This can happen if you passed a class to function component, or non-function.\n if (s !== 1 || c !== 1) {\n do {\n s--;\n c--;\n // We may still have similar intermediate frames from the construct call.\n // The next one that isn't the same should be our match though.\n if (c < 0 || sampleLines[s] !== controlLines[c]) {\n // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n const frame = '\\n' + sampleLines[s].replace(' at new ', ' at ');\n if (__DEV__) {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, frame);\n }\n }\n // Return the line we found.\n return frame;\n }\n } while (s >= 1 && c >= 0);\n }\n break;\n }\n }\n }\n } finally {\n reentry = false;\n\n Error.prepareStackTrace = previousPrepareStackTrace;\n\n currentDispatcherRef.current = previousDispatcher;\n reenableLogs();\n }\n // Fallback to just using the name if we couldn't make it throw.\n const name = fn ? fn.displayName || fn.name : '';\n const syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n if (__DEV__) {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, syntheticFrame);\n }\n }\n return syntheticFrame;\n}\n\nexport function describeClassComponentFrame(\n ctor: Function,\n source: void | null | Source,\n ownerFn: void | null | Function,\n currentDispatcherRef: CurrentDispatcherRef,\n): string {\n return describeNativeComponentFrame(ctor, true, currentDispatcherRef);\n}\n\nexport function describeFunctionComponentFrame(\n fn: Function,\n source: void | null | Source,\n ownerFn: void | null | Function,\n currentDispatcherRef: CurrentDispatcherRef,\n): string {\n return describeNativeComponentFrame(fn, false, currentDispatcherRef);\n}\n\nfunction shouldConstruct(Component: Function) {\n const prototype = Component.prototype;\n return !!(prototype && prototype.isReactComponent);\n}\n\nexport function describeUnknownElementTypeFrameInDEV(\n type: any,\n source: void | null | Source,\n ownerFn: void | null | Function,\n currentDispatcherRef: CurrentDispatcherRef,\n): string {\n if (!__DEV__) {\n return '';\n }\n if (type == null) {\n return '';\n }\n if (typeof type === 'function') {\n return describeNativeComponentFrame(\n type,\n shouldConstruct(type),\n currentDispatcherRef,\n );\n }\n if (typeof type === 'string') {\n return describeBuiltInComponentFrame(type, source, ownerFn);\n }\n switch (type) {\n case SUSPENSE_NUMBER:\n case SUSPENSE_SYMBOL_STRING:\n return describeBuiltInComponentFrame('Suspense', source, ownerFn);\n case SUSPENSE_LIST_NUMBER:\n case SUSPENSE_LIST_SYMBOL_STRING:\n return describeBuiltInComponentFrame('SuspenseList', source, ownerFn);\n }\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case FORWARD_REF_NUMBER:\n case FORWARD_REF_SYMBOL_STRING:\n return describeFunctionComponentFrame(\n type.render,\n source,\n ownerFn,\n currentDispatcherRef,\n );\n case MEMO_NUMBER:\n case MEMO_SYMBOL_STRING:\n // Memo may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(\n type.type,\n source,\n ownerFn,\n currentDispatcherRef,\n );\n case LAZY_NUMBER:\n case LAZY_SYMBOL_STRING: {\n const lazyComponent: LazyComponent<any, any> = (type: any);\n const payload = lazyComponent._payload;\n const init = lazyComponent._init;\n try {\n // Lazy may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(\n init(payload),\n source,\n ownerFn,\n currentDispatcherRef,\n );\n } catch (x) {}\n }\n }\n }\n return '';\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\n// This is a DevTools fork of ReactFiberComponentStack.\n// This fork enables DevTools to use the same \"native\" component stack format,\n// while still maintaining support for multiple renderer versions\n// (which use different values for ReactTypeOfWork).\n\nimport type {Fiber} from 'react-reconciler/src/ReactInternalTypes';\nimport type {CurrentDispatcherRef, WorkTagMap} from './types';\n\nimport {\n describeBuiltInComponentFrame,\n describeFunctionComponentFrame,\n describeClassComponentFrame,\n} from './DevToolsComponentStackFrame';\n\nfunction describeFiber(\n workTagMap: WorkTagMap,\n workInProgress: Fiber,\n currentDispatcherRef: CurrentDispatcherRef,\n): string {\n const {\n HostComponent,\n LazyComponent,\n SuspenseComponent,\n SuspenseListComponent,\n FunctionComponent,\n IndeterminateComponent,\n SimpleMemoComponent,\n ForwardRef,\n ClassComponent,\n } = workTagMap;\n\n const owner: null | Function = __DEV__\n ? workInProgress._debugOwner\n ? workInProgress._debugOwner.type\n : null\n : null;\n const source = __DEV__ ? workInProgress._debugSource : null;\n switch (workInProgress.tag) {\n case HostComponent:\n return describeBuiltInComponentFrame(workInProgress.type, source, owner);\n case LazyComponent:\n return describeBuiltInComponentFrame('Lazy', source, owner);\n case SuspenseComponent:\n return describeBuiltInComponentFrame('Suspense', source, owner);\n case SuspenseListComponent:\n return describeBuiltInComponentFrame('SuspenseList', source, owner);\n case FunctionComponent:\n case IndeterminateComponent:\n case SimpleMemoComponent:\n return describeFunctionComponentFrame(\n workInProgress.type,\n source,\n owner,\n currentDispatcherRef,\n );\n case ForwardRef:\n return describeFunctionComponentFrame(\n workInProgress.type.render,\n source,\n owner,\n currentDispatcherRef,\n );\n case ClassComponent:\n return describeClassComponentFrame(\n workInProgress.type,\n source,\n owner,\n currentDispatcherRef,\n );\n default:\n return '';\n }\n}\n\nexport function getStackByFiberInDevAndProd(\n workTagMap: WorkTagMap,\n workInProgress: Fiber,\n currentDispatcherRef: CurrentDispatcherRef,\n): string {\n try {\n let info = '';\n let node = workInProgress;\n do {\n info += describeFiber(workTagMap, node, currentDispatcherRef);\n node = node.return;\n } while (node);\n return info;\n } catch (x) {\n return '\\nError generating stack: ' + x.message + '\\n' + x.stack;\n }\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport type {Fiber} from 'react-reconciler/src/ReactInternalTypes';\nimport type {CurrentDispatcherRef, ReactRenderer, WorkTagMap} from './types';\n\nimport {getInternalReactConstants} from './renderer';\nimport {getStackByFiberInDevAndProd} from './DevToolsFiberComponentStack';\n\nconst APPEND_STACK_TO_METHODS = ['error', 'trace', 'warn'];\n\n// React's custom built component stack strings match \"\\s{4}in\"\n// Chrome's prefix matches \"\\s{4}at\"\nconst PREFIX_REGEX = /\\s{4}(in|at)\\s{1}/;\n// Firefox and Safari have no prefix (\"\")\n// but we can fallback to looking for location info (e.g. \"foo.js:12:345\")\nconst ROW_COLUMN_NUMBER_REGEX = /:\\d+:\\d+(\\n|$)/;\n\nconst injectedRenderers: Map<\n ReactRenderer,\n {|\n currentDispatcherRef: CurrentDispatcherRef,\n getCurrentFiber: () => Fiber | null,\n workTagMap: WorkTagMap,\n |},\n> = new Map();\n\nlet targetConsole: Object = console;\nlet targetConsoleMethods = {};\nfor (const method in console) {\n targetConsoleMethods[method] = console[method];\n}\n\nlet unpatchFn: null | (() => void) = null;\n\n// Enables e.g. Jest tests to inject a mock console object.\nexport function dangerous_setTargetConsoleForTesting(\n targetConsoleForTesting: Object,\n): void {\n targetConsole = targetConsoleForTesting;\n\n targetConsoleMethods = {};\n for (const method in targetConsole) {\n targetConsoleMethods[method] = console[method];\n }\n}\n\n// v16 renderers should use this method to inject internals necessary to generate a component stack.\n// These internals will be used if the console is patched.\n// Injecting them separately allows the console to easily be patched or un-patched later (at runtime).\nexport function registerRenderer(renderer: ReactRenderer): void {\n const {\n currentDispatcherRef,\n getCurrentFiber,\n findFiberByHostInstance,\n version,\n } = renderer;\n\n // Ignore React v15 and older because they don't expose a component stack anyway.\n if (typeof findFiberByHostInstance !== 'function') {\n return;\n }\n\n // currentDispatcherRef gets injected for v16.8+ to support hooks inspection.\n // getCurrentFiber gets injected for v16.9+.\n if (currentDispatcherRef != null && typeof getCurrentFiber === 'function') {\n const {ReactTypeOfWork} = getInternalReactConstants(version);\n\n injectedRenderers.set(renderer, {\n currentDispatcherRef,\n getCurrentFiber,\n workTagMap: ReactTypeOfWork,\n });\n }\n}\n\nconst consoleSettingsRef = {\n appendComponentStack: false,\n breakOnConsoleErrors: false,\n};\n\n// Patches console methods to append component stack for the current fiber.\n// Call unpatch() to remove the injected behavior.\nexport function patch({\n appendComponentStack,\n breakOnConsoleErrors,\n}: {\n appendComponentStack: boolean,\n breakOnConsoleErrors: boolean,\n}): void {\n // Settings may change after we've patched the console.\n // Using a shared ref allows the patch function to read the latest values.\n consoleSettingsRef.appendComponentStack = appendComponentStack;\n consoleSettingsRef.breakOnConsoleErrors = breakOnConsoleErrors;\n\n if (unpatchFn !== null) {\n // Don't patch twice.\n return;\n }\n\n const originalConsoleMethods = {};\n\n unpatchFn = () => {\n for (const method in originalConsoleMethods) {\n try {\n // $FlowFixMe property error|warn is not writable.\n targetConsole[method] = originalConsoleMethods[method];\n } catch (error) {}\n }\n };\n\n APPEND_STACK_TO_METHODS.forEach(method => {\n try {\n const originalMethod = (originalConsoleMethods[method] =\n targetConsole[method]);\n\n const overrideMethod = (...args) => {\n const latestAppendComponentStack =\n consoleSettingsRef.appendComponentStack;\n const latestBreakOnConsoleErrors =\n consoleSettingsRef.breakOnConsoleErrors;\n\n if (latestAppendComponentStack) {\n try {\n // If we are ever called with a string that already has a component stack, e.g. a React error/warning,\n // don't append a second stack.\n const lastArg = args.length > 0 ? args[args.length - 1] : null;\n const alreadyHasComponentStack =\n lastArg !== null &&\n (PREFIX_REGEX.test(lastArg) ||\n ROW_COLUMN_NUMBER_REGEX.test(lastArg));\n\n if (!alreadyHasComponentStack) {\n // If there's a component stack for at least one of the injected renderers, append it.\n // We don't handle the edge case of stacks for more than one (e.g. interleaved renderers?)\n // eslint-disable-next-line no-for-of-loops/no-for-of-loops\n for (const {\n currentDispatcherRef,\n getCurrentFiber,\n workTagMap,\n } of injectedRenderers.values()) {\n const current: ?Fiber = getCurrentFiber();\n if (current != null) {\n const componentStack = getStackByFiberInDevAndProd(\n workTagMap,\n current,\n currentDispatcherRef,\n );\n if (componentStack !== '') {\n args.push(componentStack);\n }\n break;\n }\n }\n }\n } catch (error) {\n // Don't let a DevTools or React internal error interfere with logging.\n }\n }\n\n if (latestBreakOnConsoleErrors) {\n // --- Welcome to debugging with React DevTools ---\n // This debugger statement means that you've enabled the \"break on warnings\" feature.\n // Use the browser's Call Stack panel to step out of this override function-\n // to where the original warning or error was logged.\n // eslint-disable-next-line no-debugger\n debugger;\n }\n\n originalMethod(...args);\n };\n\n overrideMethod.__REACT_DEVTOOLS_ORIGINAL_METHOD__ = originalMethod;\n\n // $FlowFixMe property error|warn is not writable.\n targetConsole[method] = overrideMethod;\n } catch (error) {}\n });\n}\n\n// Removed component stack patch from console methods.\nexport function unpatch(): void {\n if (unpatchFn !== null) {\n unpatchFn();\n unpatchFn = null;\n }\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport {createContext} from 'react';\nimport Store from '../store';\n\nimport type {ViewAttributeSource} from 'react-devtools-shared/src/devtools/views/DevTools';\nimport type {FrontendBridge} from 'react-devtools-shared/src/bridge';\n\nexport const BridgeContext = createContext<FrontendBridge>(\n ((null: any): FrontendBridge),\n);\nBridgeContext.displayName = 'BridgeContext';\n\nexport const StoreContext = createContext<Store>(((null: any): Store));\nStoreContext.displayName = 'StoreContext';\n\nexport type ContextMenuContextType = {|\n isEnabledForInspectedElement: boolean,\n viewAttributeSourceFunction: ViewAttributeSource | null,\n|};\n\nexport const ContextMenuContext = createContext<ContextMenuContextType>({\n isEnabledForInspectedElement: false,\n viewAttributeSourceFunction: null,\n});\nContextMenuContext.displayName = 'ContextMenuContext';\n","import { createElement, PureComponent } from 'react';\n\n/**\n * Detect Element Resize.\n * https://github.com/sdecima/javascript-detect-element-resize\n * Sebastian Decima\n *\n * Forked from version 0.5.3; includes the following modifications:\n * 1) Guard against unsafe 'window' and 'document' references (to support SSR).\n * 2) Defer initialization code via a top-level function wrapper (to support SSR).\n * 3) Avoid unnecessary reflows by not measuring size for scroll events bubbling from children.\n * 4) Add nonce for style element.\n **/\n\nfunction createDetectElementResize(nonce) {\n // Check `document` and `window` in case of server-side rendering\n var _window;\n if (typeof window !== 'undefined') {\n _window = window;\n } else if (typeof self !== 'undefined') {\n _window = self;\n } else {\n _window = global;\n }\n\n var attachEvent = typeof document !== 'undefined' && document.attachEvent;\n\n if (!attachEvent) {\n var requestFrame = function () {\n var raf = _window.requestAnimationFrame || _window.mozRequestAnimationFrame || _window.webkitRequestAnimationFrame || function (fn) {\n return _window.setTimeout(fn, 20);\n };\n return function (fn) {\n return raf(fn);\n };\n }();\n\n var cancelFrame = function () {\n var cancel = _window.cancelAnimationFrame || _window.mozCancelAnimationFrame || _window.webkitCancelAnimationFrame || _window.clearTimeout;\n return function (id) {\n return cancel(id);\n };\n }();\n\n var resetTriggers = function resetTriggers(element) {\n var triggers = element.__resizeTriggers__,\n expand = triggers.firstElementChild,\n contract = triggers.lastElementChild,\n expandChild = expand.firstElementChild;\n contract.scrollLeft = contract.scrollWidth;\n contract.scrollTop = contract.scrollHeight;\n expandChild.style.width = expand.offsetWidth + 1 + 'px';\n expandChild.style.height = expand.offsetHeight + 1 + 'px';\n expand.scrollLeft = expand.scrollWidth;\n expand.scrollTop = expand.scrollHeight;\n };\n\n var checkTriggers = function checkTriggers(element) {\n return element.offsetWidth != element.__resizeLast__.width || element.offsetHeight != element.__resizeLast__.height;\n };\n\n var scrollListener = function scrollListener(e) {\n // Don't measure (which forces) reflow for scrolls that happen inside of children!\n if (e.target.className.indexOf('contract-trigger') < 0 && e.target.className.indexOf('expand-trigger') < 0) {\n return;\n }\n\n var element = this;\n resetTriggers(this);\n if (this.__resizeRAF__) {\n cancelFrame(this.__resizeRAF__);\n }\n this.__resizeRAF__ = requestFrame(function () {\n if (checkTriggers(element)) {\n element.__resizeLast__.width = element.offsetWidth;\n element.__resizeLast__.height = element.offsetHeight;\n element.__resizeListeners__.forEach(function (fn) {\n fn.call(element, e);\n });\n }\n });\n };\n\n /* Detect CSS Animations support to detect element display/re-attach */\n var animation = false,\n keyframeprefix = '',\n animationstartevent = 'animationstart',\n domPrefixes = 'Webkit Moz O ms'.split(' '),\n startEvents = 'webkitAnimationStart animationstart oAnimationStart MSAnimationStart'.split(' '),\n pfx = '';\n {\n var elm = document.createElement('fakeelement');\n if (elm.style.animationName !== undefined) {\n animation = true;\n }\n\n if (animation === false) {\n for (var i = 0; i < domPrefixes.length; i++) {\n if (elm.style[domPrefixes[i] + 'AnimationName'] !== undefined) {\n pfx = domPrefixes[i];\n keyframeprefix = '-' + pfx.toLowerCase() + '-';\n animationstartevent = startEvents[i];\n animation = true;\n break;\n }\n }\n }\n }\n\n var animationName = 'resizeanim';\n var animationKeyframes = '@' + keyframeprefix + 'keyframes ' + animationName + ' { from { opacity: 0; } to { opacity: 0; } } ';\n var animationStyle = keyframeprefix + 'animation: 1ms ' + animationName + '; ';\n }\n\n var createStyles = function createStyles(doc) {\n if (!doc.getElementById('detectElementResize')) {\n //opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360\n var css = (animationKeyframes ? animationKeyframes : '') + '.resize-triggers { ' + (animationStyle ? animationStyle : '') + 'visibility: hidden; opacity: 0; } ' + '.resize-triggers, .resize-triggers > div, .contract-trigger:before { content: \" \"; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',\n head = doc.head || doc.getElementsByTagName('head')[0],\n style = doc.createElement('style');\n\n style.id = 'detectElementResize';\n style.type = 'text/css';\n\n if (nonce != null) {\n style.setAttribute('nonce', nonce);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(doc.createTextNode(css));\n }\n\n head.appendChild(style);\n }\n };\n\n var addResizeListener = function addResizeListener(element, fn) {\n if (attachEvent) {\n element.attachEvent('onresize', fn);\n } else {\n if (!element.__resizeTriggers__) {\n var doc = element.ownerDocument;\n var elementStyle = _window.getComputedStyle(element);\n if (elementStyle && elementStyle.position == 'static') {\n element.style.position = 'relative';\n }\n createStyles(doc);\n element.__resizeLast__ = {};\n element.__resizeListeners__ = [];\n (element.__resizeTriggers__ = doc.createElement('div')).className = 'resize-triggers';\n element.__resizeTriggers__.innerHTML = '<div class=\"expand-trigger\"><div></div></div>' + '<div class=\"contract-trigger\"></div>';\n element.appendChild(element.__resizeTriggers__);\n resetTriggers(element);\n element.addEventListener('scroll', scrollListener, true);\n\n /* Listen for a css animation to detect element display/re-attach */\n if (animationstartevent) {\n element.__resizeTriggers__.__animationListener__ = function animationListener(e) {\n if (e.animationName == animationName) {\n resetTriggers(element);\n }\n };\n element.__resizeTriggers__.addEventListener(animationstartevent, element.__resizeTriggers__.__animationListener__);\n }\n }\n element.__resizeListeners__.push(fn);\n }\n };\n\n var removeResizeListener = function removeResizeListener(element, fn) {\n if (attachEvent) {\n element.detachEvent('onresize', fn);\n } else {\n element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);\n if (!element.__resizeListeners__.length) {\n element.removeEventListener('scroll', scrollListener, true);\n if (element.__resizeTriggers__.__animationListener__) {\n element.__resizeTriggers__.removeEventListener(animationstartevent, element.__resizeTriggers__.__animationListener__);\n element.__resizeTriggers__.__animationListener__ = null;\n }\n try {\n element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);\n } catch (e) {\n // Preact compat; see developit/preact-compat/issues/228\n }\n }\n }\n };\n\n return {\n addResizeListener: addResizeListener,\n removeResizeListener: removeResizeListener\n };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar AutoSizer = function (_React$PureComponent) {\n inherits(AutoSizer, _React$PureComponent);\n\n function AutoSizer() {\n var _ref;\n\n var _temp, _this, _ret;\n\n classCallCheck(this, AutoSizer);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = AutoSizer.__proto__ || Object.getPrototypeOf(AutoSizer)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n height: _this.props.defaultHeight || 0,\n width: _this.props.defaultWidth || 0\n }, _this._onResize = function () {\n var _this$props = _this.props,\n disableHeight = _this$props.disableHeight,\n disableWidth = _this$props.disableWidth,\n onResize = _this$props.onResize;\n\n\n if (_this._parentNode) {\n // Guard against AutoSizer component being removed from the DOM immediately after being added.\n // This can result in invalid style values which can result in NaN values if we don't handle them.\n // See issue #150 for more context.\n\n var _height = _this._parentNode.offsetHeight || 0;\n var _width = _this._parentNode.offsetWidth || 0;\n\n var _style = window.getComputedStyle(_this._parentNode) || {};\n var paddingLeft = parseInt(_style.paddingLeft, 10) || 0;\n var paddingRight = parseInt(_style.paddingRight, 10) || 0;\n var paddingTop = parseInt(_style.paddingTop, 10) || 0;\n var paddingBottom = parseInt(_style.paddingBottom, 10) || 0;\n\n var newHeight = _height - paddingTop - paddingBottom;\n var newWidth = _width - paddingLeft - paddingRight;\n\n if (!disableHeight && _this.state.height !== newHeight || !disableWidth && _this.state.width !== newWidth) {\n _this.setState({\n height: _height - paddingTop - paddingBottom,\n width: _width - paddingLeft - paddingRight\n });\n\n onResize({ height: _height, width: _width });\n }\n }\n }, _this._setRef = function (autoSizer) {\n _this._autoSizer = autoSizer;\n }, _temp), possibleConstructorReturn(_this, _ret);\n }\n\n createClass(AutoSizer, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var nonce = this.props.nonce;\n\n if (this._autoSizer && this._autoSizer.parentNode && this._autoSizer.parentNode.ownerDocument && this._autoSizer.parentNode.ownerDocument.defaultView && this._autoSizer.parentNode instanceof this._autoSizer.parentNode.ownerDocument.defaultView.HTMLElement) {\n // Delay access of parentNode until mount.\n // This handles edge-cases where the component has already been unmounted before its ref has been set,\n // As well as libraries like react-lite which have a slightly different lifecycle.\n this._parentNode = this._autoSizer.parentNode;\n\n // Defer requiring resize handler in order to support server-side rendering.\n // See issue #41\n this._detectElementResize = createDetectElementResize(nonce);\n this._detectElementResize.addResizeListener(this._parentNode, this._onResize);\n\n this._onResize();\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (this._detectElementResize && this._parentNode) {\n this._detectElementResize.removeResizeListener(this._parentNode, this._onResize);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n children = _props.children,\n className = _props.className,\n disableHeight = _props.disableHeight,\n disableWidth = _props.disableWidth,\n style = _props.style;\n var _state = this.state,\n height = _state.height,\n width = _state.width;\n\n // Outer div should not force width/height since that may prevent containers from shrinking.\n // Inner component should overflow and use calculated width/height.\n // See issue #68 for more information.\n\n var outerStyle = { overflow: 'visible' };\n var childParams = {};\n\n // Avoid rendering children before the initial measurements have been collected.\n // At best this would just be wasting cycles.\n var bailoutOnChildren = false;\n\n if (!disableHeight) {\n if (height === 0) {\n bailoutOnChildren = true;\n }\n outerStyle.height = 0;\n childParams.height = height;\n }\n\n if (!disableWidth) {\n if (width === 0) {\n bailoutOnChildren = true;\n }\n outerStyle.width = 0;\n childParams.width = width;\n }\n\n return createElement(\n 'div',\n {\n className: className,\n ref: this._setRef,\n style: _extends({}, outerStyle, style) },\n !bailoutOnChildren && children(childParams)\n );\n }\n }]);\n return AutoSizer;\n}(PureComponent);\n\nAutoSizer.defaultProps = {\n onResize: function onResize() {},\n disableHeight: false,\n disableWidth: false,\n style: {}\n};\n\nexport default AutoSizer;\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","\n\nvar simpleIsEqual = function simpleIsEqual(a, b) {\n return a === b;\n};\n\nexport default function (resultFn) {\n var isEqual = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : simpleIsEqual;\n\n var lastThis = void 0;\n var lastArgs = [];\n var lastResult = void 0;\n var calledOnce = false;\n\n var isNewArgEqualToLast = function isNewArgEqualToLast(newArg, index) {\n return isEqual(newArg, lastArgs[index]);\n };\n\n var result = function result() {\n for (var _len = arguments.length, newArgs = Array(_len), _key = 0; _key < _len; _key++) {\n newArgs[_key] = arguments[_key];\n }\n\n if (calledOnce && lastThis === this && newArgs.length === lastArgs.length && newArgs.every(isNewArgEqualToLast)) {\n return lastResult;\n }\n\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n lastResult = resultFn.apply(this, newArgs);\n return lastResult;\n };\n\n return result;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport memoizeOne from 'memoize-one';\nimport { createElement, PureComponent } from 'react';\nimport { flushSync } from 'react-dom';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\n\n// Animation frame based implementation of setTimeout.\n// Inspired by Joe Lambert, https://gist.github.com/joelambert/1002116#file-requesttimeout-js\nvar hasNativePerformanceNow = typeof performance === 'object' && typeof performance.now === 'function';\nvar now = hasNativePerformanceNow ? function () {\n return performance.now();\n} : function () {\n return Date.now();\n};\nfunction cancelTimeout(timeoutID) {\n cancelAnimationFrame(timeoutID.id);\n}\nfunction requestTimeout(callback, delay) {\n var start = now();\n\n function tick() {\n if (now() - start >= delay) {\n callback.call(null);\n } else {\n timeoutID.id = requestAnimationFrame(tick);\n }\n }\n\n var timeoutID = {\n id: requestAnimationFrame(tick)\n };\n return timeoutID;\n}\n\nvar size = -1; // This utility copied from \"dom-helpers\" package.\n\nfunction getScrollbarSize(recalculate) {\n if (recalculate === void 0) {\n recalculate = false;\n }\n\n if (size === -1 || recalculate) {\n var div = document.createElement('div');\n var style = div.style;\n style.width = '50px';\n style.height = '50px';\n style.overflow = 'scroll';\n document.body.appendChild(div);\n size = div.offsetWidth - div.clientWidth;\n document.body.removeChild(div);\n }\n\n return size;\n}\nvar cachedRTLResult = null; // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n// Chrome does not seem to adhere; its scrollLeft values are positive (measured relative to the left).\n// Safari's elastic bounce makes detecting this even more complicated wrt potential false positives.\n// The safest way to check this is to intentionally set a negative offset,\n// and then verify that the subsequent \"scroll\" event matches the negative offset.\n// If it does not match, then we can assume a non-standard RTL scroll implementation.\n\nfunction getRTLOffsetType(recalculate) {\n if (recalculate === void 0) {\n recalculate = false;\n }\n\n if (cachedRTLResult === null || recalculate) {\n var outerDiv = document.createElement('div');\n var outerStyle = outerDiv.style;\n outerStyle.width = '50px';\n outerStyle.height = '50px';\n outerStyle.overflow = 'scroll';\n outerStyle.direction = 'rtl';\n var innerDiv = document.createElement('div');\n var innerStyle = innerDiv.style;\n innerStyle.width = '100px';\n innerStyle.height = '100px';\n outerDiv.appendChild(innerDiv);\n document.body.appendChild(outerDiv);\n\n if (outerDiv.scrollLeft > 0) {\n cachedRTLResult = 'positive-descending';\n } else {\n outerDiv.scrollLeft = 1;\n\n if (outerDiv.scrollLeft === 0) {\n cachedRTLResult = 'negative';\n } else {\n cachedRTLResult = 'positive-ascending';\n }\n }\n\n document.body.removeChild(outerDiv);\n return cachedRTLResult;\n }\n\n return cachedRTLResult;\n}\n\nvar IS_SCROLLING_DEBOUNCE_INTERVAL = 150;\n\nvar defaultItemKey = function defaultItemKey(_ref) {\n var columnIndex = _ref.columnIndex,\n data = _ref.data,\n rowIndex = _ref.rowIndex;\n return rowIndex + \":\" + columnIndex;\n}; // In DEV mode, this Set helps us only log a warning once per component instance.\n// This avoids spamming the console every time a render happens.\n\n\nvar devWarningsOverscanCount = null;\nvar devWarningsOverscanRowsColumnsCount = null;\nvar devWarningsTagName = null;\n\nif (process.env.NODE_ENV !== 'production') {\n if (typeof window !== 'undefined' && typeof window.WeakSet !== 'undefined') {\n devWarningsOverscanCount =\n /*#__PURE__*/\n new WeakSet();\n devWarningsOverscanRowsColumnsCount =\n /*#__PURE__*/\n new WeakSet();\n devWarningsTagName =\n /*#__PURE__*/\n new WeakSet();\n }\n}\n\nfunction createGridComponent(_ref2) {\n var _class, _temp;\n\n var getColumnOffset = _ref2.getColumnOffset,\n getColumnStartIndexForOffset = _ref2.getColumnStartIndexForOffset,\n getColumnStopIndexForStartIndex = _ref2.getColumnStopIndexForStartIndex,\n getColumnWidth = _ref2.getColumnWidth,\n getEstimatedTotalHeight = _ref2.getEstimatedTotalHeight,\n getEstimatedTotalWidth = _ref2.getEstimatedTotalWidth,\n getOffsetForColumnAndAlignment = _ref2.getOffsetForColumnAndAlignment,\n getOffsetForRowAndAlignment = _ref2.getOffsetForRowAndAlignment,\n getRowHeight = _ref2.getRowHeight,\n getRowOffset = _ref2.getRowOffset,\n getRowStartIndexForOffset = _ref2.getRowStartIndexForOffset,\n getRowStopIndexForStartIndex = _ref2.getRowStopIndexForStartIndex,\n initInstanceProps = _ref2.initInstanceProps,\n shouldResetStyleCacheOnItemSizeChange = _ref2.shouldResetStyleCacheOnItemSizeChange,\n validateProps = _ref2.validateProps;\n return _temp = _class =\n /*#__PURE__*/\n function (_PureComponent) {\n _inheritsLoose(Grid, _PureComponent);\n\n // Always use explicit constructor for React components.\n // It produces less code after transpilation. (#26)\n // eslint-disable-next-line no-useless-constructor\n function Grid(props) {\n var _this;\n\n _this = _PureComponent.call(this, props) || this;\n _this._instanceProps = initInstanceProps(_this.props, _assertThisInitialized(_assertThisInitialized(_this)));\n _this._resetIsScrollingTimeoutId = null;\n _this._outerRef = void 0;\n _this.state = {\n instance: _assertThisInitialized(_assertThisInitialized(_this)),\n isScrolling: false,\n horizontalScrollDirection: 'forward',\n scrollLeft: typeof _this.props.initialScrollLeft === 'number' ? _this.props.initialScrollLeft : 0,\n scrollTop: typeof _this.props.initialScrollTop === 'number' ? _this.props.initialScrollTop : 0,\n scrollUpdateWasRequested: false,\n verticalScrollDirection: 'forward'\n };\n _this._callOnItemsRendered = void 0;\n _this._callOnItemsRendered = memoizeOne(function (overscanColumnStartIndex, overscanColumnStopIndex, overscanRowStartIndex, overscanRowStopIndex, visibleColumnStartIndex, visibleColumnStopIndex, visibleRowStartIndex, visibleRowStopIndex) {\n return _this.props.onItemsRendered({\n overscanColumnStartIndex: overscanColumnStartIndex,\n overscanColumnStopIndex: overscanColumnStopIndex,\n overscanRowStartIndex: overscanRowStartIndex,\n overscanRowStopIndex: overscanRowStopIndex,\n visibleColumnStartIndex: visibleColumnStartIndex,\n visibleColumnStopIndex: visibleColumnStopIndex,\n visibleRowStartIndex: visibleRowStartIndex,\n visibleRowStopIndex: visibleRowStopIndex\n });\n });\n _this._callOnScroll = void 0;\n _this._callOnScroll = memoizeOne(function (scrollLeft, scrollTop, horizontalScrollDirection, verticalScrollDirection, scrollUpdateWasRequested) {\n return _this.props.onScroll({\n horizontalScrollDirection: horizontalScrollDirection,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n verticalScrollDirection: verticalScrollDirection,\n scrollUpdateWasRequested: scrollUpdateWasRequested\n });\n });\n _this._getItemStyle = void 0;\n\n _this._getItemStyle = function (rowIndex, columnIndex) {\n var _this$props = _this.props,\n columnWidth = _this$props.columnWidth,\n direction = _this$props.direction,\n rowHeight = _this$props.rowHeight;\n\n var itemStyleCache = _this._getItemStyleCache(shouldResetStyleCacheOnItemSizeChange && columnWidth, shouldResetStyleCacheOnItemSizeChange && direction, shouldResetStyleCacheOnItemSizeChange && rowHeight);\n\n var key = rowIndex + \":\" + columnIndex;\n var style;\n\n if (itemStyleCache.hasOwnProperty(key)) {\n style = itemStyleCache[key];\n } else {\n var _style;\n\n itemStyleCache[key] = style = (_style = {\n position: 'absolute'\n }, _style[direction === 'rtl' ? 'right' : 'left'] = getColumnOffset(_this.props, columnIndex, _this._instanceProps), _style.top = getRowOffset(_this.props, rowIndex, _this._instanceProps), _style.height = getRowHeight(_this.props, rowIndex, _this._instanceProps), _style.width = getColumnWidth(_this.props, columnIndex, _this._instanceProps), _style);\n }\n\n return style;\n };\n\n _this._getItemStyleCache = void 0;\n _this._getItemStyleCache = memoizeOne(function (_, __, ___) {\n return {};\n });\n\n _this._onScroll = function (event) {\n var _event$currentTarget = event.currentTarget,\n clientHeight = _event$currentTarget.clientHeight,\n clientWidth = _event$currentTarget.clientWidth,\n scrollLeft = _event$currentTarget.scrollLeft,\n scrollTop = _event$currentTarget.scrollTop,\n scrollHeight = _event$currentTarget.scrollHeight,\n scrollWidth = _event$currentTarget.scrollWidth;\n\n // Force flush sync for scroll updates to reduce visual checkerboarding.\n flushSync(() => {\n _this.setState(function (prevState) {\n if (prevState.scrollLeft === scrollLeft && prevState.scrollTop === scrollTop) {\n // Scroll position may have been updated by cDM/cDU,\n // In which case we don't need to trigger another render,\n // And we don't want to update state.isScrolling.\n return null;\n }\n\n var direction = _this.props.direction; // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // It's also easier for this component if we convert offsets to the same format as they would be in for ltr.\n // So the simplest solution is to determine which browser behavior we're dealing with, and convert based on it.\n\n var calculatedScrollLeft = scrollLeft;\n\n if (direction === 'rtl') {\n switch (getRTLOffsetType()) {\n case 'negative':\n calculatedScrollLeft = -scrollLeft;\n break;\n\n case 'positive-descending':\n calculatedScrollLeft = scrollWidth - clientWidth - scrollLeft;\n break;\n }\n } // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n\n\n calculatedScrollLeft = Math.max(0, Math.min(calculatedScrollLeft, scrollWidth - clientWidth));\n var calculatedScrollTop = Math.max(0, Math.min(scrollTop, scrollHeight - clientHeight));\n return {\n isScrolling: true,\n horizontalScrollDirection: prevState.scrollLeft < scrollLeft ? 'forward' : 'backward',\n scrollLeft: calculatedScrollLeft,\n scrollTop: calculatedScrollTop,\n verticalScrollDirection: prevState.scrollTop < scrollTop ? 'forward' : 'backward',\n scrollUpdateWasRequested: false\n };\n }, _this._resetIsScrollingDebounced);\n });\n };\n\n _this._outerRefSetter = function (ref) {\n var outerRef = _this.props.outerRef;\n _this._outerRef = ref;\n\n if (typeof outerRef === 'function') {\n outerRef(ref);\n } else if (outerRef != null && typeof outerRef === 'object' && outerRef.hasOwnProperty('current')) {\n outerRef.current = ref;\n }\n };\n\n _this._resetIsScrollingDebounced = function () {\n if (_this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(_this._resetIsScrollingTimeoutId);\n }\n\n _this._resetIsScrollingTimeoutId = requestTimeout(_this._resetIsScrolling, IS_SCROLLING_DEBOUNCE_INTERVAL);\n };\n\n _this._resetIsScrolling = function () {\n _this._resetIsScrollingTimeoutId = null;\n\n _this.setState({\n isScrolling: false\n }, function () {\n // Clear style cache after state update has been committed.\n // This way we don't break pure sCU for items that don't use isScrolling param.\n _this._getItemStyleCache(-1);\n });\n };\n\n return _this;\n }\n\n Grid.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n validateSharedProps(nextProps, prevState);\n validateProps(nextProps);\n return null;\n };\n\n var _proto = Grid.prototype;\n\n _proto.scrollTo = function scrollTo(_ref3) {\n var scrollLeft = _ref3.scrollLeft,\n scrollTop = _ref3.scrollTop;\n\n if (scrollLeft !== undefined) {\n scrollLeft = Math.max(0, scrollLeft);\n }\n\n if (scrollTop !== undefined) {\n scrollTop = Math.max(0, scrollTop);\n }\n\n this.setState(function (prevState) {\n if (scrollLeft === undefined) {\n scrollLeft = prevState.scrollLeft;\n }\n\n if (scrollTop === undefined) {\n scrollTop = prevState.scrollTop;\n }\n\n if (prevState.scrollLeft === scrollLeft && prevState.scrollTop === scrollTop) {\n return null;\n }\n\n return {\n horizontalScrollDirection: prevState.scrollLeft < scrollLeft ? 'forward' : 'backward',\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n scrollUpdateWasRequested: true,\n verticalScrollDirection: prevState.scrollTop < scrollTop ? 'forward' : 'backward'\n };\n }, this._resetIsScrollingDebounced);\n };\n\n _proto.scrollToItem = function scrollToItem(_ref4) {\n var _ref4$align = _ref4.align,\n align = _ref4$align === void 0 ? 'auto' : _ref4$align,\n columnIndex = _ref4.columnIndex,\n rowIndex = _ref4.rowIndex;\n var _this$props2 = this.props,\n columnCount = _this$props2.columnCount,\n height = _this$props2.height,\n rowCount = _this$props2.rowCount,\n width = _this$props2.width;\n var _this$state = this.state,\n scrollLeft = _this$state.scrollLeft,\n scrollTop = _this$state.scrollTop;\n var scrollbarSize = getScrollbarSize();\n\n if (columnIndex !== undefined) {\n columnIndex = Math.max(0, Math.min(columnIndex, columnCount - 1));\n }\n\n if (rowIndex !== undefined) {\n rowIndex = Math.max(0, Math.min(rowIndex, rowCount - 1));\n }\n\n var estimatedTotalHeight = getEstimatedTotalHeight(this.props, this._instanceProps);\n var estimatedTotalWidth = getEstimatedTotalWidth(this.props, this._instanceProps); // The scrollbar size should be considered when scrolling an item into view,\n // to ensure it's fully visible.\n // But we only need to account for its size when it's actually visible.\n\n var horizontalScrollbarSize = estimatedTotalWidth > width ? scrollbarSize : 0;\n var verticalScrollbarSize = estimatedTotalHeight > height ? scrollbarSize : 0;\n this.scrollTo({\n scrollLeft: columnIndex !== undefined ? getOffsetForColumnAndAlignment(this.props, columnIndex, align, scrollLeft, this._instanceProps, verticalScrollbarSize) : scrollLeft,\n scrollTop: rowIndex !== undefined ? getOffsetForRowAndAlignment(this.props, rowIndex, align, scrollTop, this._instanceProps, horizontalScrollbarSize) : scrollTop\n });\n };\n\n _proto.componentDidMount = function componentDidMount() {\n var _this$props3 = this.props,\n initialScrollLeft = _this$props3.initialScrollLeft,\n initialScrollTop = _this$props3.initialScrollTop;\n\n if (this._outerRef != null) {\n var outerRef = this._outerRef;\n\n if (typeof initialScrollLeft === 'number') {\n outerRef.scrollLeft = initialScrollLeft;\n }\n\n if (typeof initialScrollTop === 'number') {\n outerRef.scrollTop = initialScrollTop;\n }\n }\n\n this._callPropsCallbacks();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n var direction = this.props.direction;\n var _this$state2 = this.state,\n scrollLeft = _this$state2.scrollLeft,\n scrollTop = _this$state2.scrollTop,\n scrollUpdateWasRequested = _this$state2.scrollUpdateWasRequested;\n\n if (scrollUpdateWasRequested && this._outerRef != null) {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // So we need to determine which browser behavior we're dealing with, and mimic it.\n var outerRef = this._outerRef;\n\n if (direction === 'rtl') {\n switch (getRTLOffsetType()) {\n case 'negative':\n outerRef.scrollLeft = -scrollLeft;\n break;\n\n case 'positive-ascending':\n outerRef.scrollLeft = scrollLeft;\n break;\n\n default:\n var clientWidth = outerRef.clientWidth,\n scrollWidth = outerRef.scrollWidth;\n outerRef.scrollLeft = scrollWidth - clientWidth - scrollLeft;\n break;\n }\n } else {\n outerRef.scrollLeft = Math.max(0, scrollLeft);\n }\n\n outerRef.scrollTop = Math.max(0, scrollTop);\n }\n\n this._callPropsCallbacks();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this._resetIsScrollingTimeoutId);\n }\n };\n\n _proto.render = function render() {\n var _this$props4 = this.props,\n children = _this$props4.children,\n className = _this$props4.className,\n columnCount = _this$props4.columnCount,\n direction = _this$props4.direction,\n height = _this$props4.height,\n innerRef = _this$props4.innerRef,\n innerElementType = _this$props4.innerElementType,\n innerTagName = _this$props4.innerTagName,\n itemData = _this$props4.itemData,\n _this$props4$itemKey = _this$props4.itemKey,\n itemKey = _this$props4$itemKey === void 0 ? defaultItemKey : _this$props4$itemKey,\n outerElementType = _this$props4.outerElementType,\n outerTagName = _this$props4.outerTagName,\n rowCount = _this$props4.rowCount,\n style = _this$props4.style,\n useIsScrolling = _this$props4.useIsScrolling,\n width = _this$props4.width;\n var isScrolling = this.state.isScrolling;\n\n var _this$_getHorizontalR = this._getHorizontalRangeToRender(),\n columnStartIndex = _this$_getHorizontalR[0],\n columnStopIndex = _this$_getHorizontalR[1];\n\n var _this$_getVerticalRan = this._getVerticalRangeToRender(),\n rowStartIndex = _this$_getVerticalRan[0],\n rowStopIndex = _this$_getVerticalRan[1];\n\n var items = [];\n\n if (columnCount > 0 && rowCount) {\n for (var _rowIndex = rowStartIndex; _rowIndex <= rowStopIndex; _rowIndex++) {\n for (var _columnIndex = columnStartIndex; _columnIndex <= columnStopIndex; _columnIndex++) {\n items.push(createElement(children, {\n columnIndex: _columnIndex,\n data: itemData,\n isScrolling: useIsScrolling ? isScrolling : undefined,\n key: itemKey({\n columnIndex: _columnIndex,\n data: itemData,\n rowIndex: _rowIndex\n }),\n rowIndex: _rowIndex,\n style: this._getItemStyle(_rowIndex, _columnIndex)\n }));\n }\n }\n } // Read this value AFTER items have been created,\n // So their actual sizes (if variable) are taken into consideration.\n\n\n var estimatedTotalHeight = getEstimatedTotalHeight(this.props, this._instanceProps);\n var estimatedTotalWidth = getEstimatedTotalWidth(this.props, this._instanceProps);\n return createElement(outerElementType || outerTagName || 'div', {\n className: className,\n onScroll: this._onScroll,\n ref: this._outerRefSetter,\n style: _extends({\n position: 'relative',\n height: height,\n width: width,\n overflow: 'auto',\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform',\n direction: direction\n }, style)\n }, createElement(innerElementType || innerTagName || 'div', {\n children: items,\n ref: innerRef,\n style: {\n height: estimatedTotalHeight,\n pointerEvents: isScrolling ? 'none' : undefined,\n width: estimatedTotalWidth\n }\n }));\n };\n\n _proto._callPropsCallbacks = function _callPropsCallbacks() {\n var _this$props5 = this.props,\n columnCount = _this$props5.columnCount,\n onItemsRendered = _this$props5.onItemsRendered,\n onScroll = _this$props5.onScroll,\n rowCount = _this$props5.rowCount;\n\n if (typeof onItemsRendered === 'function') {\n if (columnCount > 0 && rowCount > 0) {\n var _this$_getHorizontalR2 = this._getHorizontalRangeToRender(),\n _overscanColumnStartIndex = _this$_getHorizontalR2[0],\n _overscanColumnStopIndex = _this$_getHorizontalR2[1],\n _visibleColumnStartIndex = _this$_getHorizontalR2[2],\n _visibleColumnStopIndex = _this$_getHorizontalR2[3];\n\n var _this$_getVerticalRan2 = this._getVerticalRangeToRender(),\n _overscanRowStartIndex = _this$_getVerticalRan2[0],\n _overscanRowStopIndex = _this$_getVerticalRan2[1],\n _visibleRowStartIndex = _this$_getVerticalRan2[2],\n _visibleRowStopIndex = _this$_getVerticalRan2[3];\n\n this._callOnItemsRendered(_overscanColumnStartIndex, _overscanColumnStopIndex, _overscanRowStartIndex, _overscanRowStopIndex, _visibleColumnStartIndex, _visibleColumnStopIndex, _visibleRowStartIndex, _visibleRowStopIndex);\n }\n }\n\n if (typeof onScroll === 'function') {\n var _this$state3 = this.state,\n _horizontalScrollDirection = _this$state3.horizontalScrollDirection,\n _scrollLeft = _this$state3.scrollLeft,\n _scrollTop = _this$state3.scrollTop,\n _scrollUpdateWasRequested = _this$state3.scrollUpdateWasRequested,\n _verticalScrollDirection = _this$state3.verticalScrollDirection;\n\n this._callOnScroll(_scrollLeft, _scrollTop, _horizontalScrollDirection, _verticalScrollDirection, _scrollUpdateWasRequested);\n }\n }; // Lazily create and cache item styles while scrolling,\n // So that pure component sCU will prevent re-renders.\n // We maintain this cache, and pass a style prop rather than index,\n // So that List can clear cached styles and force item re-render if necessary.\n\n\n _proto._getHorizontalRangeToRender = function _getHorizontalRangeToRender() {\n var _this$props6 = this.props,\n columnCount = _this$props6.columnCount,\n overscanColumnCount = _this$props6.overscanColumnCount,\n overscanColumnsCount = _this$props6.overscanColumnsCount,\n overscanCount = _this$props6.overscanCount,\n rowCount = _this$props6.rowCount;\n var _this$state4 = this.state,\n horizontalScrollDirection = _this$state4.horizontalScrollDirection,\n isScrolling = _this$state4.isScrolling,\n scrollLeft = _this$state4.scrollLeft;\n var overscanCountResolved = overscanColumnCount || overscanColumnsCount || overscanCount || 1;\n\n if (columnCount === 0 || rowCount === 0) {\n return [0, 0, 0, 0];\n }\n\n var startIndex = getColumnStartIndexForOffset(this.props, scrollLeft, this._instanceProps);\n var stopIndex = getColumnStopIndexForStartIndex(this.props, startIndex, scrollLeft, this._instanceProps); // Overscan by one item in each direction so that tab/focus works.\n // If there isn't at least one extra item, tab loops back around.\n\n var overscanBackward = !isScrolling || horizontalScrollDirection === 'backward' ? Math.max(1, overscanCountResolved) : 1;\n var overscanForward = !isScrolling || horizontalScrollDirection === 'forward' ? Math.max(1, overscanCountResolved) : 1;\n return [Math.max(0, startIndex - overscanBackward), Math.max(0, Math.min(columnCount - 1, stopIndex + overscanForward)), startIndex, stopIndex];\n };\n\n _proto._getVerticalRangeToRender = function _getVerticalRangeToRender() {\n var _this$props7 = this.props,\n columnCount = _this$props7.columnCount,\n overscanCount = _this$props7.overscanCount,\n overscanRowCount = _this$props7.overscanRowCount,\n overscanRowsCount = _this$props7.overscanRowsCount,\n rowCount = _this$props7.rowCount;\n var _this$state5 = this.state,\n isScrolling = _this$state5.isScrolling,\n verticalScrollDirection = _this$state5.verticalScrollDirection,\n scrollTop = _this$state5.scrollTop;\n var overscanCountResolved = overscanRowCount || overscanRowsCount || overscanCount || 1;\n\n if (columnCount === 0 || rowCount === 0) {\n return [0, 0, 0, 0];\n }\n\n var startIndex = getRowStartIndexForOffset(this.props, scrollTop, this._instanceProps);\n var stopIndex = getRowStopIndexForStartIndex(this.props, startIndex, scrollTop, this._instanceProps); // Overscan by one item in each direction so that tab/focus works.\n // If there isn't at least one extra item, tab loops back around.\n\n var overscanBackward = !isScrolling || verticalScrollDirection === 'backward' ? Math.max(1, overscanCountResolved) : 1;\n var overscanForward = !isScrolling || verticalScrollDirection === 'forward' ? Math.max(1, overscanCountResolved) : 1;\n return [Math.max(0, startIndex - overscanBackward), Math.max(0, Math.min(rowCount - 1, stopIndex + overscanForward)), startIndex, stopIndex];\n };\n\n return Grid;\n }(PureComponent), _class.defaultProps = {\n direction: 'ltr',\n itemData: undefined,\n useIsScrolling: false\n }, _temp;\n}\n\nvar validateSharedProps = function validateSharedProps(_ref5, _ref6) {\n var children = _ref5.children,\n direction = _ref5.direction,\n height = _ref5.height,\n innerTagName = _ref5.innerTagName,\n outerTagName = _ref5.outerTagName,\n overscanColumnsCount = _ref5.overscanColumnsCount,\n overscanCount = _ref5.overscanCount,\n overscanRowsCount = _ref5.overscanRowsCount,\n width = _ref5.width;\n var instance = _ref6.instance;\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof overscanCount === 'number') {\n if (devWarningsOverscanCount && !devWarningsOverscanCount.has(instance)) {\n devWarningsOverscanCount.add(instance);\n console.warn('The overscanCount prop has been deprecated. ' + 'Please use the overscanColumnCount and overscanRowCount props instead.');\n }\n }\n\n if (typeof overscanColumnsCount === 'number' || typeof overscanRowsCount === 'number') {\n if (devWarningsOverscanRowsColumnsCount && !devWarningsOverscanRowsColumnsCount.has(instance)) {\n devWarningsOverscanRowsColumnsCount.add(instance);\n console.warn('The overscanColumnsCount and overscanRowsCount props have been deprecated. ' + 'Please use the overscanColumnCount and overscanRowCount props instead.');\n }\n }\n\n if (innerTagName != null || outerTagName != null) {\n if (devWarningsTagName && !devWarningsTagName.has(instance)) {\n devWarningsTagName.add(instance);\n console.warn('The innerTagName and outerTagName props have been deprecated. ' + 'Please use the innerElementType and outerElementType props instead.');\n }\n }\n\n if (children == null) {\n throw Error('An invalid \"children\" prop has been specified. ' + 'Value should be a React component. ' + (\"\\\"\" + (children === null ? 'null' : typeof children) + \"\\\" was specified.\"));\n }\n\n switch (direction) {\n case 'ltr':\n case 'rtl':\n // Valid values\n break;\n\n default:\n throw Error('An invalid \"direction\" prop has been specified. ' + 'Value should be either \"ltr\" or \"rtl\". ' + (\"\\\"\" + direction + \"\\\" was specified.\"));\n }\n\n if (typeof width !== 'number') {\n throw Error('An invalid \"width\" prop has been specified. ' + 'Grids must specify a number for width. ' + (\"\\\"\" + (width === null ? 'null' : typeof width) + \"\\\" was specified.\"));\n }\n\n if (typeof height !== 'number') {\n throw Error('An invalid \"height\" prop has been specified. ' + 'Grids must specify a number for height. ' + (\"\\\"\" + (height === null ? 'null' : typeof height) + \"\\\" was specified.\"));\n }\n }\n};\n\nvar DEFAULT_ESTIMATED_ITEM_SIZE = 50;\n\nvar getEstimatedTotalHeight = function getEstimatedTotalHeight(_ref, _ref2) {\n var rowCount = _ref.rowCount;\n var rowMetadataMap = _ref2.rowMetadataMap,\n estimatedRowHeight = _ref2.estimatedRowHeight,\n lastMeasuredRowIndex = _ref2.lastMeasuredRowIndex;\n var totalSizeOfMeasuredRows = 0; // Edge case check for when the number of items decreases while a scroll is in progress.\n // https://github.com/bvaughn/react-window/pull/138\n\n if (lastMeasuredRowIndex >= rowCount) {\n lastMeasuredRowIndex = rowCount - 1;\n }\n\n if (lastMeasuredRowIndex >= 0) {\n var itemMetadata = rowMetadataMap[lastMeasuredRowIndex];\n totalSizeOfMeasuredRows = itemMetadata.offset + itemMetadata.size;\n }\n\n var numUnmeasuredItems = rowCount - lastMeasuredRowIndex - 1;\n var totalSizeOfUnmeasuredItems = numUnmeasuredItems * estimatedRowHeight;\n return totalSizeOfMeasuredRows + totalSizeOfUnmeasuredItems;\n};\n\nvar getEstimatedTotalWidth = function getEstimatedTotalWidth(_ref3, _ref4) {\n var columnCount = _ref3.columnCount;\n var columnMetadataMap = _ref4.columnMetadataMap,\n estimatedColumnWidth = _ref4.estimatedColumnWidth,\n lastMeasuredColumnIndex = _ref4.lastMeasuredColumnIndex;\n var totalSizeOfMeasuredRows = 0; // Edge case check for when the number of items decreases while a scroll is in progress.\n // https://github.com/bvaughn/react-window/pull/138\n\n if (lastMeasuredColumnIndex >= columnCount) {\n lastMeasuredColumnIndex = columnCount - 1;\n }\n\n if (lastMeasuredColumnIndex >= 0) {\n var itemMetadata = columnMetadataMap[lastMeasuredColumnIndex];\n totalSizeOfMeasuredRows = itemMetadata.offset + itemMetadata.size;\n }\n\n var numUnmeasuredItems = columnCount - lastMeasuredColumnIndex - 1;\n var totalSizeOfUnmeasuredItems = numUnmeasuredItems * estimatedColumnWidth;\n return totalSizeOfMeasuredRows + totalSizeOfUnmeasuredItems;\n};\n\nvar getItemMetadata = function getItemMetadata(itemType, props, index, instanceProps) {\n var itemMetadataMap, itemSize, lastMeasuredIndex;\n\n if (itemType === 'column') {\n itemMetadataMap = instanceProps.columnMetadataMap;\n itemSize = props.columnWidth;\n lastMeasuredIndex = instanceProps.lastMeasuredColumnIndex;\n } else {\n itemMetadataMap = instanceProps.rowMetadataMap;\n itemSize = props.rowHeight;\n lastMeasuredIndex = instanceProps.lastMeasuredRowIndex;\n }\n\n if (index > lastMeasuredIndex) {\n var offset = 0;\n\n if (lastMeasuredIndex >= 0) {\n var itemMetadata = itemMetadataMap[lastMeasuredIndex];\n offset = itemMetadata.offset + itemMetadata.size;\n }\n\n for (var i = lastMeasuredIndex + 1; i <= index; i++) {\n var size = itemSize(i);\n itemMetadataMap[i] = {\n offset: offset,\n size: size\n };\n offset += size;\n }\n\n if (itemType === 'column') {\n instanceProps.lastMeasuredColumnIndex = index;\n } else {\n instanceProps.lastMeasuredRowIndex = index;\n }\n }\n\n return itemMetadataMap[index];\n};\n\nvar findNearestItem = function findNearestItem(itemType, props, instanceProps, offset) {\n var itemMetadataMap, lastMeasuredIndex;\n\n if (itemType === 'column') {\n itemMetadataMap = instanceProps.columnMetadataMap;\n lastMeasuredIndex = instanceProps.lastMeasuredColumnIndex;\n } else {\n itemMetadataMap = instanceProps.rowMetadataMap;\n lastMeasuredIndex = instanceProps.lastMeasuredRowIndex;\n }\n\n var lastMeasuredItemOffset = lastMeasuredIndex > 0 ? itemMetadataMap[lastMeasuredIndex].offset : 0;\n\n if (lastMeasuredItemOffset >= offset) {\n // If we've already measured items within this range just use a binary search as it's faster.\n return findNearestItemBinarySearch(itemType, props, instanceProps, lastMeasuredIndex, 0, offset);\n } else {\n // If we haven't yet measured this high, fallback to an exponential search with an inner binary search.\n // The exponential search avoids pre-computing sizes for the full set of items as a binary search would.\n // The overall complexity for this approach is O(log n).\n return findNearestItemExponentialSearch(itemType, props, instanceProps, Math.max(0, lastMeasuredIndex), offset);\n }\n};\n\nvar findNearestItemBinarySearch = function findNearestItemBinarySearch(itemType, props, instanceProps, high, low, offset) {\n while (low <= high) {\n var middle = low + Math.floor((high - low) / 2);\n var currentOffset = getItemMetadata(itemType, props, middle, instanceProps).offset;\n\n if (currentOffset === offset) {\n return middle;\n } else if (currentOffset < offset) {\n low = middle + 1;\n } else if (currentOffset > offset) {\n high = middle - 1;\n }\n }\n\n if (low > 0) {\n return low - 1;\n } else {\n return 0;\n }\n};\n\nvar findNearestItemExponentialSearch = function findNearestItemExponentialSearch(itemType, props, instanceProps, index, offset) {\n var itemCount = itemType === 'column' ? props.columnCount : props.rowCount;\n var interval = 1;\n\n while (index < itemCount && getItemMetadata(itemType, props, index, instanceProps).offset < offset) {\n index += interval;\n interval *= 2;\n }\n\n return findNearestItemBinarySearch(itemType, props, instanceProps, Math.min(index, itemCount - 1), Math.floor(index / 2), offset);\n};\n\nvar getOffsetForIndexAndAlignment = function getOffsetForIndexAndAlignment(itemType, props, index, align, scrollOffset, instanceProps, scrollbarSize) {\n var size = itemType === 'column' ? props.width : props.height;\n var itemMetadata = getItemMetadata(itemType, props, index, instanceProps); // Get estimated total size after ItemMetadata is computed,\n // To ensure it reflects actual measurements instead of just estimates.\n\n var estimatedTotalSize = itemType === 'column' ? getEstimatedTotalWidth(props, instanceProps) : getEstimatedTotalHeight(props, instanceProps);\n var maxOffset = Math.max(0, Math.min(estimatedTotalSize - size, itemMetadata.offset));\n var minOffset = Math.max(0, itemMetadata.offset - size + scrollbarSize + itemMetadata.size);\n\n if (align === 'smart') {\n if (scrollOffset >= minOffset - size && scrollOffset <= maxOffset + size) {\n align = 'auto';\n } else {\n align = 'center';\n }\n }\n\n switch (align) {\n case 'start':\n return maxOffset;\n\n case 'end':\n return minOffset;\n\n case 'center':\n return Math.round(minOffset + (maxOffset - minOffset) / 2);\n\n case 'auto':\n default:\n if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n return scrollOffset;\n } else if (minOffset > maxOffset) {\n // Because we only take into account the scrollbar size when calculating minOffset\n // this value can be larger than maxOffset when at the end of the list\n return minOffset;\n } else if (scrollOffset < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n\n }\n};\n\nvar VariableSizeGrid =\n/*#__PURE__*/\ncreateGridComponent({\n getColumnOffset: function getColumnOffset(props, index, instanceProps) {\n return getItemMetadata('column', props, index, instanceProps).offset;\n },\n getColumnStartIndexForOffset: function getColumnStartIndexForOffset(props, scrollLeft, instanceProps) {\n return findNearestItem('column', props, instanceProps, scrollLeft);\n },\n getColumnStopIndexForStartIndex: function getColumnStopIndexForStartIndex(props, startIndex, scrollLeft, instanceProps) {\n var columnCount = props.columnCount,\n width = props.width;\n var itemMetadata = getItemMetadata('column', props, startIndex, instanceProps);\n var maxOffset = scrollLeft + width;\n var offset = itemMetadata.offset + itemMetadata.size;\n var stopIndex = startIndex;\n\n while (stopIndex < columnCount - 1 && offset < maxOffset) {\n stopIndex++;\n offset += getItemMetadata('column', props, stopIndex, instanceProps).size;\n }\n\n return stopIndex;\n },\n getColumnWidth: function getColumnWidth(props, index, instanceProps) {\n return instanceProps.columnMetadataMap[index].size;\n },\n getEstimatedTotalHeight: getEstimatedTotalHeight,\n getEstimatedTotalWidth: getEstimatedTotalWidth,\n getOffsetForColumnAndAlignment: function getOffsetForColumnAndAlignment(props, index, align, scrollOffset, instanceProps, scrollbarSize) {\n return getOffsetForIndexAndAlignment('column', props, index, align, scrollOffset, instanceProps, scrollbarSize);\n },\n getOffsetForRowAndAlignment: function getOffsetForRowAndAlignment(props, index, align, scrollOffset, instanceProps, scrollbarSize) {\n return getOffsetForIndexAndAlignment('row', props, index, align, scrollOffset, instanceProps, scrollbarSize);\n },\n getRowOffset: function getRowOffset(props, index, instanceProps) {\n return getItemMetadata('row', props, index, instanceProps).offset;\n },\n getRowHeight: function getRowHeight(props, index, instanceProps) {\n return instanceProps.rowMetadataMap[index].size;\n },\n getRowStartIndexForOffset: function getRowStartIndexForOffset(props, scrollTop, instanceProps) {\n return findNearestItem('row', props, instanceProps, scrollTop);\n },\n getRowStopIndexForStartIndex: function getRowStopIndexForStartIndex(props, startIndex, scrollTop, instanceProps) {\n var rowCount = props.rowCount,\n height = props.height;\n var itemMetadata = getItemMetadata('row', props, startIndex, instanceProps);\n var maxOffset = scrollTop + height;\n var offset = itemMetadata.offset + itemMetadata.size;\n var stopIndex = startIndex;\n\n while (stopIndex < rowCount - 1 && offset < maxOffset) {\n stopIndex++;\n offset += getItemMetadata('row', props, stopIndex, instanceProps).size;\n }\n\n return stopIndex;\n },\n initInstanceProps: function initInstanceProps(props, instance) {\n var _ref5 = props,\n estimatedColumnWidth = _ref5.estimatedColumnWidth,\n estimatedRowHeight = _ref5.estimatedRowHeight;\n var instanceProps = {\n columnMetadataMap: {},\n estimatedColumnWidth: estimatedColumnWidth || DEFAULT_ESTIMATED_ITEM_SIZE,\n estimatedRowHeight: estimatedRowHeight || DEFAULT_ESTIMATED_ITEM_SIZE,\n lastMeasuredColumnIndex: -1,\n lastMeasuredRowIndex: -1,\n rowMetadataMap: {}\n };\n\n instance.resetAfterColumnIndex = function (columnIndex, shouldForceUpdate) {\n if (shouldForceUpdate === void 0) {\n shouldForceUpdate = true;\n }\n\n instance.resetAfterIndices({\n columnIndex: columnIndex,\n shouldForceUpdate: shouldForceUpdate\n });\n };\n\n instance.resetAfterRowIndex = function (rowIndex, shouldForceUpdate) {\n if (shouldForceUpdate === void 0) {\n shouldForceUpdate = true;\n }\n\n instance.resetAfterIndices({\n rowIndex: rowIndex,\n shouldForceUpdate: shouldForceUpdate\n });\n };\n\n instance.resetAfterIndices = function (_ref6) {\n var columnIndex = _ref6.columnIndex,\n rowIndex = _ref6.rowIndex,\n _ref6$shouldForceUpda = _ref6.shouldForceUpdate,\n shouldForceUpdate = _ref6$shouldForceUpda === void 0 ? true : _ref6$shouldForceUpda;\n\n if (typeof columnIndex === 'number') {\n instanceProps.lastMeasuredColumnIndex = Math.min(instanceProps.lastMeasuredColumnIndex, columnIndex - 1);\n }\n\n if (typeof rowIndex === 'number') {\n instanceProps.lastMeasuredRowIndex = Math.min(instanceProps.lastMeasuredRowIndex, rowIndex - 1);\n } // We could potentially optimize further by only evicting styles after this index,\n // But since styles are only cached while scrolling is in progress-\n // It seems an unnecessary optimization.\n // It's unlikely that resetAfterIndex() will be called while a user is scrolling.\n\n\n instance._getItemStyleCache(-1);\n\n if (shouldForceUpdate) {\n instance.forceUpdate();\n }\n };\n\n return instanceProps;\n },\n shouldResetStyleCacheOnItemSizeChange: false,\n validateProps: function validateProps(_ref7) {\n var columnWidth = _ref7.columnWidth,\n rowHeight = _ref7.rowHeight;\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof columnWidth !== 'function') {\n throw Error('An invalid \"columnWidth\" prop has been specified. ' + 'Value should be a function. ' + (\"\\\"\" + (columnWidth === null ? 'null' : typeof columnWidth) + \"\\\" was specified.\"));\n } else if (typeof rowHeight !== 'function') {\n throw Error('An invalid \"rowHeight\" prop has been specified. ' + 'Value should be a function. ' + (\"\\\"\" + (rowHeight === null ? 'null' : typeof rowHeight) + \"\\\" was specified.\"));\n }\n }\n }\n});\n\nvar IS_SCROLLING_DEBOUNCE_INTERVAL$1 = 150;\n\nvar defaultItemKey$1 = function defaultItemKey(index, data) {\n return index;\n}; // In DEV mode, this Set helps us only log a warning once per component instance.\n// This avoids spamming the console every time a render happens.\n\n\nvar devWarningsDirection = null;\nvar devWarningsTagName$1 = null;\n\nif (process.env.NODE_ENV !== 'production') {\n if (typeof window !== 'undefined' && typeof window.WeakSet !== 'undefined') {\n devWarningsDirection =\n /*#__PURE__*/\n new WeakSet();\n devWarningsTagName$1 =\n /*#__PURE__*/\n new WeakSet();\n }\n}\n\nfunction createListComponent(_ref) {\n var _class, _temp;\n\n var getItemOffset = _ref.getItemOffset,\n getEstimatedTotalSize = _ref.getEstimatedTotalSize,\n getItemSize = _ref.getItemSize,\n getOffsetForIndexAndAlignment = _ref.getOffsetForIndexAndAlignment,\n getStartIndexForOffset = _ref.getStartIndexForOffset,\n getStopIndexForStartIndex = _ref.getStopIndexForStartIndex,\n initInstanceProps = _ref.initInstanceProps,\n shouldResetStyleCacheOnItemSizeChange = _ref.shouldResetStyleCacheOnItemSizeChange,\n validateProps = _ref.validateProps;\n return _temp = _class =\n /*#__PURE__*/\n function (_PureComponent) {\n _inheritsLoose(List, _PureComponent);\n\n // Always use explicit constructor for React components.\n // It produces less code after transpilation. (#26)\n // eslint-disable-next-line no-useless-constructor\n function List(props) {\n var _this;\n\n _this = _PureComponent.call(this, props) || this;\n _this._instanceProps = initInstanceProps(_this.props, _assertThisInitialized(_assertThisInitialized(_this)));\n _this._outerRef = void 0;\n _this._resetIsScrollingTimeoutId = null;\n _this.state = {\n instance: _assertThisInitialized(_assertThisInitialized(_this)),\n isScrolling: false,\n scrollDirection: 'forward',\n scrollOffset: typeof _this.props.initialScrollOffset === 'number' ? _this.props.initialScrollOffset : 0,\n scrollUpdateWasRequested: false\n };\n _this._callOnItemsRendered = void 0;\n _this._callOnItemsRendered = memoizeOne(function (overscanStartIndex, overscanStopIndex, visibleStartIndex, visibleStopIndex) {\n return _this.props.onItemsRendered({\n overscanStartIndex: overscanStartIndex,\n overscanStopIndex: overscanStopIndex,\n visibleStartIndex: visibleStartIndex,\n visibleStopIndex: visibleStopIndex\n });\n });\n _this._callOnScroll = void 0;\n _this._callOnScroll = memoizeOne(function (scrollDirection, scrollOffset, scrollUpdateWasRequested) {\n return _this.props.onScroll({\n scrollDirection: scrollDirection,\n scrollOffset: scrollOffset,\n scrollUpdateWasRequested: scrollUpdateWasRequested\n });\n });\n _this._getItemStyle = void 0;\n\n _this._getItemStyle = function (index) {\n var _this$props = _this.props,\n direction = _this$props.direction,\n itemSize = _this$props.itemSize,\n layout = _this$props.layout;\n\n var itemStyleCache = _this._getItemStyleCache(shouldResetStyleCacheOnItemSizeChange && itemSize, shouldResetStyleCacheOnItemSizeChange && layout, shouldResetStyleCacheOnItemSizeChange && direction);\n\n var style;\n\n if (itemStyleCache.hasOwnProperty(index)) {\n style = itemStyleCache[index];\n } else {\n var _style;\n\n var _offset = getItemOffset(_this.props, index, _this._instanceProps);\n\n var size = getItemSize(_this.props, index, _this._instanceProps); // TODO Deprecate direction \"horizontal\"\n\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n itemStyleCache[index] = style = (_style = {\n position: 'absolute'\n }, _style[direction === 'rtl' ? 'right' : 'left'] = isHorizontal ? _offset : 0, _style.top = !isHorizontal ? _offset : 0, _style.height = !isHorizontal ? size : '100%', _style.width = isHorizontal ? size : '100%', _style);\n }\n\n return style;\n };\n\n _this._getItemStyleCache = void 0;\n _this._getItemStyleCache = memoizeOne(function (_, __, ___) {\n return {};\n });\n\n _this._onScrollHorizontal = function (event) {\n var _event$currentTarget = event.currentTarget,\n clientWidth = _event$currentTarget.clientWidth,\n scrollLeft = _event$currentTarget.scrollLeft,\n scrollWidth = _event$currentTarget.scrollWidth;\n\n // Force flush sync for scroll updates to reduce visual checkerboarding.\n flushSync(() => {\n _this.setState(function (prevState) {\n if (prevState.scrollOffset === scrollLeft) {\n // Scroll position may have been updated by cDM/cDU,\n // In which case we don't need to trigger another render,\n // And we don't want to update state.isScrolling.\n return null;\n }\n\n var direction = _this.props.direction;\n var scrollOffset = scrollLeft;\n\n if (direction === 'rtl') {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // It's also easier for this component if we convert offsets to the same format as they would be in for ltr.\n // So the simplest solution is to determine which browser behavior we're dealing with, and convert based on it.\n switch (getRTLOffsetType()) {\n case 'negative':\n scrollOffset = -scrollLeft;\n break;\n\n case 'positive-descending':\n scrollOffset = scrollWidth - clientWidth - scrollLeft;\n break;\n }\n } // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n\n\n scrollOffset = Math.max(0, Math.min(scrollOffset, scrollWidth - clientWidth));\n return {\n isScrolling: true,\n scrollDirection: prevState.scrollOffset < scrollLeft ? 'forward' : 'backward',\n scrollOffset: scrollOffset,\n scrollUpdateWasRequested: false\n };\n }, _this._resetIsScrollingDebounced);\n });\n };\n\n _this._onScrollVertical = function (event) {\n var _event$currentTarget2 = event.currentTarget,\n clientHeight = _event$currentTarget2.clientHeight,\n scrollHeight = _event$currentTarget2.scrollHeight,\n scrollTop = _event$currentTarget2.scrollTop;\n\n // Force flush sync for scroll updates to reduce visual checkerboarding.\n flushSync(() => {\n _this.setState(function (prevState) {\n if (prevState.scrollOffset === scrollTop) {\n // Scroll position may have been updated by cDM/cDU,\n // In which case we don't need to trigger another render,\n // And we don't want to update state.isScrolling.\n return null;\n } // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n\n\n var scrollOffset = Math.max(0, Math.min(scrollTop, scrollHeight - clientHeight));\n return {\n isScrolling: true,\n scrollDirection: prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n scrollOffset: scrollOffset,\n scrollUpdateWasRequested: false\n };\n }, _this._resetIsScrollingDebounced);\n });\n };\n\n _this._outerRefSetter = function (ref) {\n var outerRef = _this.props.outerRef;\n _this._outerRef = ref;\n\n if (typeof outerRef === 'function') {\n outerRef(ref);\n } else if (outerRef != null && typeof outerRef === 'object' && outerRef.hasOwnProperty('current')) {\n outerRef.current = ref;\n }\n };\n\n _this._resetIsScrollingDebounced = function () {\n if (_this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(_this._resetIsScrollingTimeoutId);\n }\n\n _this._resetIsScrollingTimeoutId = requestTimeout(_this._resetIsScrolling, IS_SCROLLING_DEBOUNCE_INTERVAL$1);\n };\n\n _this._resetIsScrolling = function () {\n _this._resetIsScrollingTimeoutId = null;\n\n _this.setState({\n isScrolling: false\n }, function () {\n // Clear style cache after state update has been committed.\n // This way we don't break pure sCU for items that don't use isScrolling param.\n _this._getItemStyleCache(-1, null);\n });\n };\n\n return _this;\n }\n\n List.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n validateSharedProps$1(nextProps, prevState);\n validateProps(nextProps);\n return null;\n };\n\n var _proto = List.prototype;\n\n _proto.scrollTo = function scrollTo(scrollOffset) {\n scrollOffset = Math.max(0, scrollOffset);\n this.setState(function (prevState) {\n if (prevState.scrollOffset === scrollOffset) {\n return null;\n }\n\n return {\n scrollDirection: prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n scrollOffset: scrollOffset,\n scrollUpdateWasRequested: true\n };\n }, this._resetIsScrollingDebounced);\n };\n\n _proto.scrollToItem = function scrollToItem(index, align) {\n if (align === void 0) {\n align = 'auto';\n }\n\n var itemCount = this.props.itemCount;\n var scrollOffset = this.state.scrollOffset;\n index = Math.max(0, Math.min(index, itemCount - 1));\n this.scrollTo(getOffsetForIndexAndAlignment(this.props, index, align, scrollOffset, this._instanceProps));\n };\n\n _proto.componentDidMount = function componentDidMount() {\n var _this$props2 = this.props,\n direction = _this$props2.direction,\n initialScrollOffset = _this$props2.initialScrollOffset,\n layout = _this$props2.layout;\n\n if (typeof initialScrollOffset === 'number' && this._outerRef != null) {\n var outerRef = this._outerRef; // TODO Deprecate direction \"horizontal\"\n\n if (direction === 'horizontal' || layout === 'horizontal') {\n outerRef.scrollLeft = initialScrollOffset;\n } else {\n outerRef.scrollTop = initialScrollOffset;\n }\n }\n\n this._callPropsCallbacks();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n var _this$props3 = this.props,\n direction = _this$props3.direction,\n layout = _this$props3.layout;\n var _this$state = this.state,\n scrollOffset = _this$state.scrollOffset,\n scrollUpdateWasRequested = _this$state.scrollUpdateWasRequested;\n\n if (scrollUpdateWasRequested && this._outerRef != null) {\n var outerRef = this._outerRef; // TODO Deprecate direction \"horizontal\"\n\n if (direction === 'horizontal' || layout === 'horizontal') {\n if (direction === 'rtl') {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // So we need to determine which browser behavior we're dealing with, and mimic it.\n switch (getRTLOffsetType()) {\n case 'negative':\n outerRef.scrollLeft = -scrollOffset;\n break;\n\n case 'positive-ascending':\n outerRef.scrollLeft = scrollOffset;\n break;\n\n default:\n var clientWidth = outerRef.clientWidth,\n scrollWidth = outerRef.scrollWidth;\n outerRef.scrollLeft = scrollWidth - clientWidth - scrollOffset;\n break;\n }\n } else {\n outerRef.scrollLeft = scrollOffset;\n }\n } else {\n outerRef.scrollTop = scrollOffset;\n }\n }\n\n this._callPropsCallbacks();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this._resetIsScrollingTimeoutId);\n }\n };\n\n _proto.render = function render() {\n var _this$props4 = this.props,\n children = _this$props4.children,\n className = _this$props4.className,\n direction = _this$props4.direction,\n height = _this$props4.height,\n innerRef = _this$props4.innerRef,\n innerElementType = _this$props4.innerElementType,\n innerTagName = _this$props4.innerTagName,\n itemCount = _this$props4.itemCount,\n itemData = _this$props4.itemData,\n _this$props4$itemKey = _this$props4.itemKey,\n itemKey = _this$props4$itemKey === void 0 ? defaultItemKey$1 : _this$props4$itemKey,\n layout = _this$props4.layout,\n outerElementType = _this$props4.outerElementType,\n outerTagName = _this$props4.outerTagName,\n style = _this$props4.style,\n useIsScrolling = _this$props4.useIsScrolling,\n width = _this$props4.width;\n var isScrolling = this.state.isScrolling; // TODO Deprecate direction \"horizontal\"\n\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n var onScroll = isHorizontal ? this._onScrollHorizontal : this._onScrollVertical;\n\n var _this$_getRangeToRend = this._getRangeToRender(),\n startIndex = _this$_getRangeToRend[0],\n stopIndex = _this$_getRangeToRend[1];\n\n var items = [];\n\n if (itemCount > 0) {\n for (var _index = startIndex; _index <= stopIndex; _index++) {\n items.push(createElement(children, {\n data: itemData,\n key: itemKey(_index, itemData),\n index: _index,\n isScrolling: useIsScrolling ? isScrolling : undefined,\n style: this._getItemStyle(_index)\n }));\n }\n } // Read this value AFTER items have been created,\n // So their actual sizes (if variable) are taken into consideration.\n\n\n var estimatedTotalSize = getEstimatedTotalSize(this.props, this._instanceProps);\n return createElement(outerElementType || outerTagName || 'div', {\n className: className,\n onScroll: onScroll,\n ref: this._outerRefSetter,\n style: _extends({\n position: 'relative',\n height: height,\n width: width,\n overflow: 'auto',\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform',\n direction: direction\n }, style)\n }, createElement(innerElementType || innerTagName || 'div', {\n children: items,\n ref: innerRef,\n style: {\n height: isHorizontal ? '100%' : estimatedTotalSize,\n pointerEvents: isScrolling ? 'none' : undefined,\n width: isHorizontal ? estimatedTotalSize : '100%'\n }\n }));\n };\n\n _proto._callPropsCallbacks = function _callPropsCallbacks() {\n if (typeof this.props.onItemsRendered === 'function') {\n var itemCount = this.props.itemCount;\n\n if (itemCount > 0) {\n var _this$_getRangeToRend2 = this._getRangeToRender(),\n _overscanStartIndex = _this$_getRangeToRend2[0],\n _overscanStopIndex = _this$_getRangeToRend2[1],\n _visibleStartIndex = _this$_getRangeToRend2[2],\n _visibleStopIndex = _this$_getRangeToRend2[3];\n\n this._callOnItemsRendered(_overscanStartIndex, _overscanStopIndex, _visibleStartIndex, _visibleStopIndex);\n }\n }\n\n if (typeof this.props.onScroll === 'function') {\n var _this$state2 = this.state,\n _scrollDirection = _this$state2.scrollDirection,\n _scrollOffset = _this$state2.scrollOffset,\n _scrollUpdateWasRequested = _this$state2.scrollUpdateWasRequested;\n\n this._callOnScroll(_scrollDirection, _scrollOffset, _scrollUpdateWasRequested);\n }\n }; // Lazily create and cache item styles while scrolling,\n // So that pure component sCU will prevent re-renders.\n // We maintain this cache, and pass a style prop rather than index,\n // So that List can clear cached styles and force item re-render if necessary.\n\n\n _proto._getRangeToRender = function _getRangeToRender() {\n var _this$props5 = this.props,\n itemCount = _this$props5.itemCount,\n overscanCount = _this$props5.overscanCount;\n var _this$state3 = this.state,\n isScrolling = _this$state3.isScrolling,\n scrollDirection = _this$state3.scrollDirection,\n scrollOffset = _this$state3.scrollOffset;\n\n if (itemCount === 0) {\n return [0, 0, 0, 0];\n }\n\n var startIndex = getStartIndexForOffset(this.props, scrollOffset, this._instanceProps);\n var stopIndex = getStopIndexForStartIndex(this.props, startIndex, scrollOffset, this._instanceProps); // Overscan by one item in each direction so that tab/focus works.\n // If there isn't at least one extra item, tab loops back around.\n\n var overscanBackward = !isScrolling || scrollDirection === 'backward' ? Math.max(1, overscanCount) : 1;\n var overscanForward = !isScrolling || scrollDirection === 'forward' ? Math.max(1, overscanCount) : 1;\n return [Math.max(0, startIndex - overscanBackward), Math.max(0, Math.min(itemCount - 1, stopIndex + overscanForward)), startIndex, stopIndex];\n };\n\n return List;\n }(PureComponent), _class.defaultProps = {\n direction: 'ltr',\n itemData: undefined,\n layout: 'vertical',\n overscanCount: 2,\n useIsScrolling: false\n }, _temp;\n} // NOTE: I considered further wrapping individual items with a pure ListItem component.\n// This would avoid ever calling the render function for the same index more than once,\n// But it would also add the overhead of a lot of components/fibers.\n// I assume people already do this (render function returning a class component),\n// So my doing it would just unnecessarily double the wrappers.\n\nvar validateSharedProps$1 = function validateSharedProps(_ref2, _ref3) {\n var children = _ref2.children,\n direction = _ref2.direction,\n height = _ref2.height,\n layout = _ref2.layout,\n innerTagName = _ref2.innerTagName,\n outerTagName = _ref2.outerTagName,\n width = _ref2.width;\n var instance = _ref3.instance;\n\n if (process.env.NODE_ENV !== 'production') {\n if (innerTagName != null || outerTagName != null) {\n if (devWarningsTagName$1 && !devWarningsTagName$1.has(instance)) {\n devWarningsTagName$1.add(instance);\n console.warn('The innerTagName and outerTagName props have been deprecated. ' + 'Please use the innerElementType and outerElementType props instead.');\n }\n } // TODO Deprecate direction \"horizontal\"\n\n\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n\n switch (direction) {\n case 'horizontal':\n case 'vertical':\n if (devWarningsDirection && !devWarningsDirection.has(instance)) {\n devWarningsDirection.add(instance);\n console.warn('The direction prop should be either \"ltr\" (default) or \"rtl\". ' + 'Please use the layout prop to specify \"vertical\" (default) or \"horizontal\" orientation.');\n }\n\n break;\n\n case 'ltr':\n case 'rtl':\n // Valid values\n break;\n\n default:\n throw Error('An invalid \"direction\" prop has been specified. ' + 'Value should be either \"ltr\" or \"rtl\". ' + (\"\\\"\" + direction + \"\\\" was specified.\"));\n }\n\n switch (layout) {\n case 'horizontal':\n case 'vertical':\n // Valid values\n break;\n\n default:\n throw Error('An invalid \"layout\" prop has been specified. ' + 'Value should be either \"horizontal\" or \"vertical\". ' + (\"\\\"\" + layout + \"\\\" was specified.\"));\n }\n\n if (children == null) {\n throw Error('An invalid \"children\" prop has been specified. ' + 'Value should be a React component. ' + (\"\\\"\" + (children === null ? 'null' : typeof children) + \"\\\" was specified.\"));\n }\n\n if (isHorizontal && typeof width !== 'number') {\n throw Error('An invalid \"width\" prop has been specified. ' + 'Horizontal lists must specify a number for width. ' + (\"\\\"\" + (width === null ? 'null' : typeof width) + \"\\\" was specified.\"));\n } else if (!isHorizontal && typeof height !== 'number') {\n throw Error('An invalid \"height\" prop has been specified. ' + 'Vertical lists must specify a number for height. ' + (\"\\\"\" + (height === null ? 'null' : typeof height) + \"\\\" was specified.\"));\n }\n }\n};\n\nvar DEFAULT_ESTIMATED_ITEM_SIZE$1 = 50;\n\nvar getItemMetadata$1 = function getItemMetadata(props, index, instanceProps) {\n var _ref = props,\n itemSize = _ref.itemSize;\n var itemMetadataMap = instanceProps.itemMetadataMap,\n lastMeasuredIndex = instanceProps.lastMeasuredIndex;\n\n if (index > lastMeasuredIndex) {\n var offset = 0;\n\n if (lastMeasuredIndex >= 0) {\n var itemMetadata = itemMetadataMap[lastMeasuredIndex];\n offset = itemMetadata.offset + itemMetadata.size;\n }\n\n for (var i = lastMeasuredIndex + 1; i <= index; i++) {\n var size = itemSize(i);\n itemMetadataMap[i] = {\n offset: offset,\n size: size\n };\n offset += size;\n }\n\n instanceProps.lastMeasuredIndex = index;\n }\n\n return itemMetadataMap[index];\n};\n\nvar findNearestItem$1 = function findNearestItem(props, instanceProps, offset) {\n var itemMetadataMap = instanceProps.itemMetadataMap,\n lastMeasuredIndex = instanceProps.lastMeasuredIndex;\n var lastMeasuredItemOffset = lastMeasuredIndex > 0 ? itemMetadataMap[lastMeasuredIndex].offset : 0;\n\n if (lastMeasuredItemOffset >= offset) {\n // If we've already measured items within this range just use a binary search as it's faster.\n return findNearestItemBinarySearch$1(props, instanceProps, lastMeasuredIndex, 0, offset);\n } else {\n // If we haven't yet measured this high, fallback to an exponential search with an inner binary search.\n // The exponential search avoids pre-computing sizes for the full set of items as a binary search would.\n // The overall complexity for this approach is O(log n).\n return findNearestItemExponentialSearch$1(props, instanceProps, Math.max(0, lastMeasuredIndex), offset);\n }\n};\n\nvar findNearestItemBinarySearch$1 = function findNearestItemBinarySearch(props, instanceProps, high, low, offset) {\n while (low <= high) {\n var middle = low + Math.floor((high - low) / 2);\n var currentOffset = getItemMetadata$1(props, middle, instanceProps).offset;\n\n if (currentOffset === offset) {\n return middle;\n } else if (currentOffset < offset) {\n low = middle + 1;\n } else if (currentOffset > offset) {\n high = middle - 1;\n }\n }\n\n if (low > 0) {\n return low - 1;\n } else {\n return 0;\n }\n};\n\nvar findNearestItemExponentialSearch$1 = function findNearestItemExponentialSearch(props, instanceProps, index, offset) {\n var itemCount = props.itemCount;\n var interval = 1;\n\n while (index < itemCount && getItemMetadata$1(props, index, instanceProps).offset < offset) {\n index += interval;\n interval *= 2;\n }\n\n return findNearestItemBinarySearch$1(props, instanceProps, Math.min(index, itemCount - 1), Math.floor(index / 2), offset);\n};\n\nvar getEstimatedTotalSize = function getEstimatedTotalSize(_ref2, _ref3) {\n var itemCount = _ref2.itemCount;\n var itemMetadataMap = _ref3.itemMetadataMap,\n estimatedItemSize = _ref3.estimatedItemSize,\n lastMeasuredIndex = _ref3.lastMeasuredIndex;\n var totalSizeOfMeasuredItems = 0; // Edge case check for when the number of items decreases while a scroll is in progress.\n // https://github.com/bvaughn/react-window/pull/138\n\n if (lastMeasuredIndex >= itemCount) {\n lastMeasuredIndex = itemCount - 1;\n }\n\n if (lastMeasuredIndex >= 0) {\n var itemMetadata = itemMetadataMap[lastMeasuredIndex];\n totalSizeOfMeasuredItems = itemMetadata.offset + itemMetadata.size;\n }\n\n var numUnmeasuredItems = itemCount - lastMeasuredIndex - 1;\n var totalSizeOfUnmeasuredItems = numUnmeasuredItems * estimatedItemSize;\n return totalSizeOfMeasuredItems + totalSizeOfUnmeasuredItems;\n};\n\nvar VariableSizeList =\n/*#__PURE__*/\ncreateListComponent({\n getItemOffset: function getItemOffset(props, index, instanceProps) {\n return getItemMetadata$1(props, index, instanceProps).offset;\n },\n getItemSize: function getItemSize(props, index, instanceProps) {\n return instanceProps.itemMetadataMap[index].size;\n },\n getEstimatedTotalSize: getEstimatedTotalSize,\n getOffsetForIndexAndAlignment: function getOffsetForIndexAndAlignment(props, index, align, scrollOffset, instanceProps) {\n var direction = props.direction,\n height = props.height,\n layout = props.layout,\n width = props.width; // TODO Deprecate direction \"horizontal\"\n\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n var size = isHorizontal ? width : height;\n var itemMetadata = getItemMetadata$1(props, index, instanceProps); // Get estimated total size after ItemMetadata is computed,\n // To ensure it reflects actual measurements instead of just estimates.\n\n var estimatedTotalSize = getEstimatedTotalSize(props, instanceProps);\n var maxOffset = Math.max(0, Math.min(estimatedTotalSize - size, itemMetadata.offset));\n var minOffset = Math.max(0, itemMetadata.offset - size + itemMetadata.size);\n\n if (align === 'smart') {\n if (scrollOffset >= minOffset - size && scrollOffset <= maxOffset + size) {\n align = 'auto';\n } else {\n align = 'center';\n }\n }\n\n switch (align) {\n case 'start':\n return maxOffset;\n\n case 'end':\n return minOffset;\n\n case 'center':\n return Math.round(minOffset + (maxOffset - minOffset) / 2);\n\n case 'auto':\n default:\n if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n return scrollOffset;\n } else if (scrollOffset < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n\n }\n },\n getStartIndexForOffset: function getStartIndexForOffset(props, offset, instanceProps) {\n return findNearestItem$1(props, instanceProps, offset);\n },\n getStopIndexForStartIndex: function getStopIndexForStartIndex(props, startIndex, scrollOffset, instanceProps) {\n var direction = props.direction,\n height = props.height,\n itemCount = props.itemCount,\n layout = props.layout,\n width = props.width; // TODO Deprecate direction \"horizontal\"\n\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n var size = isHorizontal ? width : height;\n var itemMetadata = getItemMetadata$1(props, startIndex, instanceProps);\n var maxOffset = scrollOffset + size;\n var offset = itemMetadata.offset + itemMetadata.size;\n var stopIndex = startIndex;\n\n while (stopIndex < itemCount - 1 && offset < maxOffset) {\n stopIndex++;\n offset += getItemMetadata$1(props, stopIndex, instanceProps).size;\n }\n\n return stopIndex;\n },\n initInstanceProps: function initInstanceProps(props, instance) {\n var _ref4 = props,\n estimatedItemSize = _ref4.estimatedItemSize;\n var instanceProps = {\n itemMetadataMap: {},\n estimatedItemSize: estimatedItemSize || DEFAULT_ESTIMATED_ITEM_SIZE$1,\n lastMeasuredIndex: -1\n };\n\n instance.resetAfterIndex = function (index, shouldForceUpdate) {\n if (shouldForceUpdate === void 0) {\n shouldForceUpdate = true;\n }\n\n instanceProps.lastMeasuredIndex = Math.min(instanceProps.lastMeasuredIndex, index - 1); // We could potentially optimize further by only evicting styles after this index,\n // But since styles are only cached while scrolling is in progress-\n // It seems an unnecessary optimization.\n // It's unlikely that resetAfterIndex() will be called while a user is scrolling.\n\n instance._getItemStyleCache(-1);\n\n if (shouldForceUpdate) {\n instance.forceUpdate();\n }\n };\n\n return instanceProps;\n },\n shouldResetStyleCacheOnItemSizeChange: false,\n validateProps: function validateProps(_ref5) {\n var itemSize = _ref5.itemSize;\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof itemSize !== 'function') {\n throw Error('An invalid \"itemSize\" prop has been specified. ' + 'Value should be a function. ' + (\"\\\"\" + (itemSize === null ? 'null' : typeof itemSize) + \"\\\" was specified.\"));\n }\n }\n }\n});\n\nvar FixedSizeGrid =\n/*#__PURE__*/\ncreateGridComponent({\n getColumnOffset: function getColumnOffset(_ref, index) {\n var columnWidth = _ref.columnWidth;\n return index * columnWidth;\n },\n getColumnWidth: function getColumnWidth(_ref2, index) {\n var columnWidth = _ref2.columnWidth;\n return columnWidth;\n },\n getRowOffset: function getRowOffset(_ref3, index) {\n var rowHeight = _ref3.rowHeight;\n return index * rowHeight;\n },\n getRowHeight: function getRowHeight(_ref4, index) {\n var rowHeight = _ref4.rowHeight;\n return rowHeight;\n },\n getEstimatedTotalHeight: function getEstimatedTotalHeight(_ref5) {\n var rowCount = _ref5.rowCount,\n rowHeight = _ref5.rowHeight;\n return rowHeight * rowCount;\n },\n getEstimatedTotalWidth: function getEstimatedTotalWidth(_ref6) {\n var columnCount = _ref6.columnCount,\n columnWidth = _ref6.columnWidth;\n return columnWidth * columnCount;\n },\n getOffsetForColumnAndAlignment: function getOffsetForColumnAndAlignment(_ref7, columnIndex, align, scrollLeft, instanceProps, scrollbarSize) {\n var columnCount = _ref7.columnCount,\n columnWidth = _ref7.columnWidth,\n width = _ref7.width;\n var lastColumnOffset = Math.max(0, columnCount * columnWidth - width);\n var maxOffset = Math.min(lastColumnOffset, columnIndex * columnWidth);\n var minOffset = Math.max(0, columnIndex * columnWidth - width + scrollbarSize + columnWidth);\n\n if (align === 'smart') {\n if (scrollLeft >= minOffset - width && scrollLeft <= maxOffset + width) {\n align = 'auto';\n } else {\n align = 'center';\n }\n }\n\n switch (align) {\n case 'start':\n return maxOffset;\n\n case 'end':\n return minOffset;\n\n case 'center':\n // \"Centered\" offset is usually the average of the min and max.\n // But near the edges of the list, this doesn't hold true.\n var middleOffset = Math.round(minOffset + (maxOffset - minOffset) / 2);\n\n if (middleOffset < Math.ceil(width / 2)) {\n return 0; // near the beginning\n } else if (middleOffset > lastColumnOffset + Math.floor(width / 2)) {\n return lastColumnOffset; // near the end\n } else {\n return middleOffset;\n }\n\n case 'auto':\n default:\n if (scrollLeft >= minOffset && scrollLeft <= maxOffset) {\n return scrollLeft;\n } else if (minOffset > maxOffset) {\n // Because we only take into account the scrollbar size when calculating minOffset\n // this value can be larger than maxOffset when at the end of the list\n return minOffset;\n } else if (scrollLeft < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n\n }\n },\n getOffsetForRowAndAlignment: function getOffsetForRowAndAlignment(_ref8, rowIndex, align, scrollTop, instanceProps, scrollbarSize) {\n var rowHeight = _ref8.rowHeight,\n height = _ref8.height,\n rowCount = _ref8.rowCount;\n var lastRowOffset = Math.max(0, rowCount * rowHeight - height);\n var maxOffset = Math.min(lastRowOffset, rowIndex * rowHeight);\n var minOffset = Math.max(0, rowIndex * rowHeight - height + scrollbarSize + rowHeight);\n\n if (align === 'smart') {\n if (scrollTop >= minOffset - height && scrollTop <= maxOffset + height) {\n align = 'auto';\n } else {\n align = 'center';\n }\n }\n\n switch (align) {\n case 'start':\n return maxOffset;\n\n case 'end':\n return minOffset;\n\n case 'center':\n // \"Centered\" offset is usually the average of the min and max.\n // But near the edges of the list, this doesn't hold true.\n var middleOffset = Math.round(minOffset + (maxOffset - minOffset) / 2);\n\n if (middleOffset < Math.ceil(height / 2)) {\n return 0; // near the beginning\n } else if (middleOffset > lastRowOffset + Math.floor(height / 2)) {\n return lastRowOffset; // near the end\n } else {\n return middleOffset;\n }\n\n case 'auto':\n default:\n if (scrollTop >= minOffset && scrollTop <= maxOffset) {\n return scrollTop;\n } else if (minOffset > maxOffset) {\n // Because we only take into account the scrollbar size when calculating minOffset\n // this value can be larger than maxOffset when at the end of the list\n return minOffset;\n } else if (scrollTop < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n\n }\n },\n getColumnStartIndexForOffset: function getColumnStartIndexForOffset(_ref9, scrollLeft) {\n var columnWidth = _ref9.columnWidth,\n columnCount = _ref9.columnCount;\n return Math.max(0, Math.min(columnCount - 1, Math.floor(scrollLeft / columnWidth)));\n },\n getColumnStopIndexForStartIndex: function getColumnStopIndexForStartIndex(_ref10, startIndex, scrollLeft) {\n var columnWidth = _ref10.columnWidth,\n columnCount = _ref10.columnCount,\n width = _ref10.width;\n var left = startIndex * columnWidth;\n var numVisibleColumns = Math.ceil((width + scrollLeft - left) / columnWidth);\n return Math.max(0, Math.min(columnCount - 1, startIndex + numVisibleColumns - 1 // -1 is because stop index is inclusive\n ));\n },\n getRowStartIndexForOffset: function getRowStartIndexForOffset(_ref11, scrollTop) {\n var rowHeight = _ref11.rowHeight,\n rowCount = _ref11.rowCount;\n return Math.max(0, Math.min(rowCount - 1, Math.floor(scrollTop / rowHeight)));\n },\n getRowStopIndexForStartIndex: function getRowStopIndexForStartIndex(_ref12, startIndex, scrollTop) {\n var rowHeight = _ref12.rowHeight,\n rowCount = _ref12.rowCount,\n height = _ref12.height;\n var top = startIndex * rowHeight;\n var numVisibleRows = Math.ceil((height + scrollTop - top) / rowHeight);\n return Math.max(0, Math.min(rowCount - 1, startIndex + numVisibleRows - 1 // -1 is because stop index is inclusive\n ));\n },\n initInstanceProps: function initInstanceProps(props) {// Noop\n },\n shouldResetStyleCacheOnItemSizeChange: true,\n validateProps: function validateProps(_ref13) {\n var columnWidth = _ref13.columnWidth,\n rowHeight = _ref13.rowHeight;\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof columnWidth !== 'number') {\n throw Error('An invalid \"columnWidth\" prop has been specified. ' + 'Value should be a number. ' + (\"\\\"\" + (columnWidth === null ? 'null' : typeof columnWidth) + \"\\\" was specified.\"));\n }\n\n if (typeof rowHeight !== 'number') {\n throw Error('An invalid \"rowHeight\" prop has been specified. ' + 'Value should be a number. ' + (\"\\\"\" + (rowHeight === null ? 'null' : typeof rowHeight) + \"\\\" was specified.\"));\n }\n }\n }\n});\n\nvar FixedSizeList =\n/*#__PURE__*/\ncreateListComponent({\n getItemOffset: function getItemOffset(_ref, index) {\n var itemSize = _ref.itemSize;\n return index * itemSize;\n },\n getItemSize: function getItemSize(_ref2, index) {\n var itemSize = _ref2.itemSize;\n return itemSize;\n },\n getEstimatedTotalSize: function getEstimatedTotalSize(_ref3) {\n var itemCount = _ref3.itemCount,\n itemSize = _ref3.itemSize;\n return itemSize * itemCount;\n },\n getOffsetForIndexAndAlignment: function getOffsetForIndexAndAlignment(_ref4, index, align, scrollOffset) {\n var direction = _ref4.direction,\n height = _ref4.height,\n itemCount = _ref4.itemCount,\n itemSize = _ref4.itemSize,\n layout = _ref4.layout,\n width = _ref4.width;\n // TODO Deprecate direction \"horizontal\"\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n var size = isHorizontal ? width : height;\n var lastItemOffset = Math.max(0, itemCount * itemSize - size);\n var maxOffset = Math.min(lastItemOffset, index * itemSize);\n var minOffset = Math.max(0, index * itemSize - size + itemSize);\n\n if (align === 'smart') {\n if (scrollOffset >= minOffset - size && scrollOffset <= maxOffset + size) {\n align = 'auto';\n } else {\n align = 'center';\n }\n }\n\n switch (align) {\n case 'start':\n return maxOffset;\n\n case 'end':\n return minOffset;\n\n case 'center':\n {\n // \"Centered\" offset is usually the average of the min and max.\n // But near the edges of the list, this doesn't hold true.\n var middleOffset = Math.round(minOffset + (maxOffset - minOffset) / 2);\n\n if (middleOffset < Math.ceil(size / 2)) {\n return 0; // near the beginning\n } else if (middleOffset > lastItemOffset + Math.floor(size / 2)) {\n return lastItemOffset; // near the end\n } else {\n return middleOffset;\n }\n }\n\n case 'auto':\n default:\n if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n return scrollOffset;\n } else if (scrollOffset < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n\n }\n },\n getStartIndexForOffset: function getStartIndexForOffset(_ref5, offset) {\n var itemCount = _ref5.itemCount,\n itemSize = _ref5.itemSize;\n return Math.max(0, Math.min(itemCount - 1, Math.floor(offset / itemSize)));\n },\n getStopIndexForStartIndex: function getStopIndexForStartIndex(_ref6, startIndex, scrollOffset) {\n var direction = _ref6.direction,\n height = _ref6.height,\n itemCount = _ref6.itemCount,\n itemSize = _ref6.itemSize,\n layout = _ref6.layout,\n width = _ref6.width;\n // TODO Deprecate direction \"horizontal\"\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n var offset = startIndex * itemSize;\n var size = isHorizontal ? width : height;\n var numVisibleItems = Math.ceil((size + scrollOffset - offset) / itemSize);\n return Math.max(0, Math.min(itemCount - 1, startIndex + numVisibleItems - 1 // -1 is because stop index is inclusive\n ));\n },\n initInstanceProps: function initInstanceProps(props) {// Noop\n },\n shouldResetStyleCacheOnItemSizeChange: true,\n validateProps: function validateProps(_ref7) {\n var itemSize = _ref7.itemSize;\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof itemSize !== 'number') {\n throw Error('An invalid \"itemSize\" prop has been specified. ' + 'Value should be a number. ' + (\"\\\"\" + (itemSize === null ? 'null' : typeof itemSize) + \"\\\" was specified.\"));\n }\n }\n }\n});\n\n// Pulled from react-compat\n// https://github.com/developit/preact-compat/blob/7c5de00e7c85e2ffd011bf3af02899b63f699d3a/src/index.js#L349\nfunction shallowDiffers(prev, next) {\n for (var attribute in prev) {\n if (!(attribute in next)) {\n return true;\n }\n }\n\n for (var _attribute in next) {\n if (prev[_attribute] !== next[_attribute]) {\n return true;\n }\n }\n\n return false;\n}\n\n// It knows to compare individual style props and ignore the wrapper object.\n// See https://reactjs.org/docs/react-api.html#reactmemo\n\nfunction areEqual(prevProps, nextProps) {\n var prevStyle = prevProps.style,\n prevRest = _objectWithoutPropertiesLoose(prevProps, [\"style\"]);\n\n var nextStyle = nextProps.style,\n nextRest = _objectWithoutPropertiesLoose(nextProps, [\"style\"]);\n\n return !shallowDiffers(prevStyle, nextStyle) && !shallowDiffers(prevRest, nextRest);\n}\n\n// It knows to compare individual style props and ignore the wrapper object.\n// See https://reactjs.org/docs/react-component.html#shouldcomponentupdate\n\nfunction shouldComponentUpdate(nextProps, nextState) {\n return !areEqual(this.props, nextProps) || shallowDiffers(this.state, nextState);\n}\n\nexport { VariableSizeGrid, VariableSizeList, FixedSizeGrid, FixedSizeList, areEqual, shouldComponentUpdate };\n//# sourceMappingURL=index.esm.js.map\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport escapeStringRegExp from 'escape-string-regexp';\nimport {meta} from '../../hydration';\nimport {formatDataForPreview} from '../../utils';\n\nimport type {HooksTree} from 'react-debug-tools/src/ReactDebugHooks';\n\nexport function alphaSortEntries(\n entryA: [string, mixed],\n entryB: [string, mixed],\n): number {\n const a = entryA[0];\n const b = entryB[0];\n if ('' + +a === a) {\n if ('' + +b !== b) {\n return -1;\n }\n return +a < +b ? -1 : 1;\n }\n return a < b ? -1 : 1;\n}\n\nexport function createRegExp(string: string): RegExp {\n // Allow /regex/ syntax with optional last /\n if (string[0] === '/') {\n // Cut off first slash\n string = string.substring(1);\n // Cut off last slash, but only if it's there\n if (string[string.length - 1] === '/') {\n string = string.substring(0, string.length - 1);\n }\n try {\n return new RegExp(string, 'i');\n } catch (err) {\n // Bad regex. Make it not match anything.\n // TODO: maybe warn in console?\n return new RegExp('.^');\n }\n }\n\n function isLetter(char: string) {\n return char.toLowerCase() !== char.toUpperCase();\n }\n\n function matchAnyCase(char: string) {\n if (!isLetter(char)) {\n // Don't mess with special characters like [.\n return char;\n }\n return '[' + char.toLowerCase() + char.toUpperCase() + ']';\n }\n\n // 'item' should match 'Item' and 'ListItem', but not 'InviteMom'.\n // To do this, we'll slice off 'tem' and check first letter separately.\n const escaped = escapeStringRegExp(string);\n const firstChar = escaped[0];\n let restRegex = '';\n // For 'item' input, restRegex becomes '[tT][eE][mM]'\n // We can't simply make it case-insensitive because first letter case matters.\n for (let i = 1; i < escaped.length; i++) {\n restRegex += matchAnyCase(escaped[i]);\n }\n\n if (!isLetter(firstChar)) {\n // We can't put a non-character like [ in a group\n // so we fall back to the simple case.\n return new RegExp(firstChar + restRegex);\n }\n\n // Construct a smarter regex.\n return new RegExp(\n // For example:\n // (^[iI]|I)[tT][eE][mM]\n // Matches:\n // 'Item'\n // 'ListItem'\n // but not 'InviteMom'\n '(^' +\n matchAnyCase(firstChar) +\n '|' +\n firstChar.toUpperCase() +\n ')' +\n restRegex,\n );\n}\n\nexport function getMetaValueLabel(data: Object): string | null {\n if (hasOwnProperty.call(data, meta.preview_long)) {\n return data[meta.preview_long];\n } else {\n return formatDataForPreview(data, true);\n }\n}\n\nfunction sanitize(data: Object): void {\n for (const key in data) {\n const value = data[key];\n\n if (value && value[meta.type]) {\n data[key] = getMetaValueLabel(value);\n } else if (value != null) {\n if (Array.isArray(value)) {\n sanitize(value);\n } else if (typeof value === 'object') {\n sanitize(value);\n }\n }\n }\n}\n\nexport function serializeDataForCopy(props: Object): string {\n const cloned = Object.assign({}, props);\n\n sanitize(cloned);\n\n try {\n return JSON.stringify(cloned, null, 2);\n } catch (error) {\n return '';\n }\n}\n\nexport function serializeHooksForCopy(hooks: HooksTree | null): string {\n // $FlowFixMe \"HooksTree is not an object\"\n const cloned = Object.assign([], hooks);\n\n const queue = [...cloned];\n\n while (queue.length > 0) {\n const current = queue.pop();\n\n // These aren't meaningful\n delete current.id;\n delete current.isStateEditable;\n\n if (current.subHooks.length > 0) {\n queue.push(...current.subHooks);\n }\n }\n\n sanitize(cloned);\n\n try {\n return JSON.stringify(cloned, null, 2);\n } catch (error) {\n return '';\n }\n}\n\n// Keeping this in memory seems to be enough to enable the browser to download larger profiles.\n// Without this, we would see a \"Download failed: network error\" failure.\nlet downloadUrl = null;\n\nexport function downloadFile(\n element: HTMLAnchorElement,\n filename: string,\n text: string,\n): void {\n const blob = new Blob([text], {type: 'text/plain;charset=utf-8'});\n\n if (downloadUrl !== null) {\n URL.revokeObjectURL(downloadUrl);\n }\n\n downloadUrl = URL.createObjectURL(blob);\n\n element.setAttribute('href', downloadUrl);\n element.setAttribute('download', filename);\n\n element.click();\n}\n\nexport function truncateText(text: string, maxLength: number): string {\n const {length} = text;\n if (length > maxLength) {\n return (\n text.substr(0, Math.floor(maxLength / 2)) +\n '…' +\n text.substr(length - Math.ceil(maxLength / 2) - 1)\n );\n } else {\n return text;\n }\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\n// This context combines tree/selection state, search, and the owners stack.\n// These values are managed together because changes in one often impact the others.\n// Combining them enables us to avoid cascading renders.\n//\n// Changes to search state may impact tree state.\n// For example, updating the selected search result also updates the tree's selected value.\n// Search does not fundamentally change the tree though.\n// It is also possible to update the selected tree value independently.\n//\n// Changes to owners state mask search and tree values.\n// When owners stack is not empty, search is temporarily disabled,\n// and tree values (e.g. num elements, selected element) are masked.\n// Both tree and search values are restored when the owners stack is cleared.\n//\n// For this reason, changes to the tree context are processed in sequence: tree -> search -> owners\n// This enables each section to potentially override (or mask) previous values.\n\nimport * as React from 'react';\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useLayoutEffect,\n useMemo,\n useReducer,\n useRef,\n} from 'react';\nimport {\n unstable_next as next,\n unstable_runWithPriority as runWithPriority,\n unstable_UserBlockingPriority as UserBlockingPriority,\n} from 'scheduler';\nimport {createRegExp} from '../utils';\nimport {BridgeContext, StoreContext} from '../context';\nimport Store from '../../store';\n\nimport type {Element} from './types';\n\nexport type StateContext = {|\n // Tree\n numElements: number,\n ownerSubtreeLeafElementID: number | null,\n selectedElementID: number | null,\n selectedElementIndex: number | null,\n\n // Search\n searchIndex: number | null,\n searchResults: Array<number>,\n searchText: string,\n\n // Owners\n ownerID: number | null,\n ownerFlatTree: Array<Element> | null,\n\n // Inspection element panel\n inspectedElementID: number | null,\n|};\n\ntype ACTION_GO_TO_NEXT_SEARCH_RESULT = {|\n type: 'GO_TO_NEXT_SEARCH_RESULT',\n|};\ntype ACTION_GO_TO_PREVIOUS_SEARCH_RESULT = {|\n type: 'GO_TO_PREVIOUS_SEARCH_RESULT',\n|};\ntype ACTION_HANDLE_STORE_MUTATION = {|\n type: 'HANDLE_STORE_MUTATION',\n payload: [Array<number>, Map<number, number>],\n|};\ntype ACTION_RESET_OWNER_STACK = {|\n type: 'RESET_OWNER_STACK',\n|};\ntype ACTION_SELECT_CHILD_ELEMENT_IN_TREE = {|\n type: 'SELECT_CHILD_ELEMENT_IN_TREE',\n|};\ntype ACTION_SELECT_ELEMENT_AT_INDEX = {|\n type: 'SELECT_ELEMENT_AT_INDEX',\n payload: number | null,\n|};\ntype ACTION_SELECT_ELEMENT_BY_ID = {|\n type: 'SELECT_ELEMENT_BY_ID',\n payload: number | null,\n|};\ntype ACTION_SELECT_NEXT_ELEMENT_IN_TREE = {|\n type: 'SELECT_NEXT_ELEMENT_IN_TREE',\n|};\ntype ACTION_SELECT_NEXT_SIBLING_IN_TREE = {|\n type: 'SELECT_NEXT_SIBLING_IN_TREE',\n|};\ntype ACTION_SELECT_OWNER = {|\n type: 'SELECT_OWNER',\n payload: number,\n|};\ntype ACTION_SELECT_PARENT_ELEMENT_IN_TREE = {|\n type: 'SELECT_PARENT_ELEMENT_IN_TREE',\n|};\ntype ACTION_SELECT_PREVIOUS_ELEMENT_IN_TREE = {|\n type: 'SELECT_PREVIOUS_ELEMENT_IN_TREE',\n|};\ntype ACTION_SELECT_PREVIOUS_SIBLING_IN_TREE = {|\n type: 'SELECT_PREVIOUS_SIBLING_IN_TREE',\n|};\ntype ACTION_SELECT_OWNER_LIST_NEXT_ELEMENT_IN_TREE = {|\n type: 'SELECT_OWNER_LIST_NEXT_ELEMENT_IN_TREE',\n|};\ntype ACTION_SELECT_OWNER_LIST_PREVIOUS_ELEMENT_IN_TREE = {|\n type: 'SELECT_OWNER_LIST_PREVIOUS_ELEMENT_IN_TREE',\n|};\ntype ACTION_SET_SEARCH_TEXT = {|\n type: 'SET_SEARCH_TEXT',\n payload: string,\n|};\ntype ACTION_UPDATE_INSPECTED_ELEMENT_ID = {|\n type: 'UPDATE_INSPECTED_ELEMENT_ID',\n|};\n\ntype Action =\n | ACTION_GO_TO_NEXT_SEARCH_RESULT\n | ACTION_GO_TO_PREVIOUS_SEARCH_RESULT\n | ACTION_HANDLE_STORE_MUTATION\n | ACTION_RESET_OWNER_STACK\n | ACTION_SELECT_CHILD_ELEMENT_IN_TREE\n | ACTION_SELECT_ELEMENT_AT_INDEX\n | ACTION_SELECT_ELEMENT_BY_ID\n | ACTION_SELECT_NEXT_ELEMENT_IN_TREE\n | ACTION_SELECT_NEXT_SIBLING_IN_TREE\n | ACTION_SELECT_OWNER\n | ACTION_SELECT_PARENT_ELEMENT_IN_TREE\n | ACTION_SELECT_PREVIOUS_ELEMENT_IN_TREE\n | ACTION_SELECT_PREVIOUS_SIBLING_IN_TREE\n | ACTION_SELECT_OWNER_LIST_NEXT_ELEMENT_IN_TREE\n | ACTION_SELECT_OWNER_LIST_PREVIOUS_ELEMENT_IN_TREE\n | ACTION_SET_SEARCH_TEXT\n | ACTION_UPDATE_INSPECTED_ELEMENT_ID;\n\nexport type DispatcherContext = (action: Action) => void;\n\nconst TreeStateContext = createContext<StateContext>(\n ((null: any): StateContext),\n);\nTreeStateContext.displayName = 'TreeStateContext';\n\nconst TreeDispatcherContext = createContext<DispatcherContext>(\n ((null: any): DispatcherContext),\n);\nTreeDispatcherContext.displayName = 'TreeDispatcherContext';\n\ntype State = {|\n // Tree\n numElements: number,\n ownerSubtreeLeafElementID: number | null,\n selectedElementID: number | null,\n selectedElementIndex: number | null,\n\n // Search\n searchIndex: number | null,\n searchResults: Array<number>,\n searchText: string,\n\n // Owners\n ownerID: number | null,\n ownerFlatTree: Array<Element> | null,\n\n // Inspection element panel\n inspectedElementID: number | null,\n|};\n\nfunction reduceTreeState(store: Store, state: State, action: Action): State {\n let {\n numElements,\n ownerSubtreeLeafElementID,\n selectedElementIndex,\n selectedElementID,\n } = state;\n const ownerID = state.ownerID;\n\n let lookupIDForIndex = true;\n\n // Base tree should ignore selected element changes when the owner's tree is active.\n if (ownerID === null) {\n switch (action.type) {\n case 'HANDLE_STORE_MUTATION':\n numElements = store.numElements;\n\n // If the currently-selected Element has been removed from the tree, update selection state.\n const removedIDs = action.payload[1];\n // Find the closest parent that wasn't removed during this batch.\n // We deduce the parent-child mapping from removedIDs (id -> parentID)\n // because by now it's too late to read them from the store.\n while (\n selectedElementID !== null &&\n removedIDs.has(selectedElementID)\n ) {\n selectedElementID = ((removedIDs.get(\n selectedElementID,\n ): any): number);\n }\n if (selectedElementID === 0) {\n // The whole root was removed.\n selectedElementIndex = null;\n }\n break;\n case 'SELECT_CHILD_ELEMENT_IN_TREE':\n ownerSubtreeLeafElementID = null;\n\n if (selectedElementIndex !== null) {\n const selectedElement = store.getElementAtIndex(\n ((selectedElementIndex: any): number),\n );\n if (\n selectedElement !== null &&\n selectedElement.children.length > 0 &&\n !selectedElement.isCollapsed\n ) {\n const firstChildID = selectedElement.children[0];\n const firstChildIndex = store.getIndexOfElementID(firstChildID);\n if (firstChildIndex !== null) {\n selectedElementIndex = firstChildIndex;\n }\n }\n }\n break;\n case 'SELECT_ELEMENT_AT_INDEX':\n ownerSubtreeLeafElementID = null;\n\n selectedElementIndex = (action: ACTION_SELECT_ELEMENT_AT_INDEX).payload;\n break;\n case 'SELECT_ELEMENT_BY_ID':\n ownerSubtreeLeafElementID = null;\n\n // Skip lookup in this case; it would be redundant.\n // It might also cause problems if the specified element was inside of a (not yet expanded) subtree.\n lookupIDForIndex = false;\n\n selectedElementID = (action: ACTION_SELECT_ELEMENT_BY_ID).payload;\n selectedElementIndex =\n selectedElementID === null\n ? null\n : store.getIndexOfElementID(selectedElementID);\n break;\n case 'SELECT_NEXT_ELEMENT_IN_TREE':\n ownerSubtreeLeafElementID = null;\n\n if (\n selectedElementIndex === null ||\n selectedElementIndex + 1 >= numElements\n ) {\n selectedElementIndex = 0;\n } else {\n selectedElementIndex++;\n }\n break;\n case 'SELECT_NEXT_SIBLING_IN_TREE':\n ownerSubtreeLeafElementID = null;\n\n if (selectedElementIndex !== null) {\n const selectedElement = store.getElementAtIndex(\n ((selectedElementIndex: any): number),\n );\n if (selectedElement !== null && selectedElement.parentID !== 0) {\n const parent = store.getElementByID(selectedElement.parentID);\n if (parent !== null) {\n const {children} = parent;\n const selectedChildIndex = children.indexOf(selectedElement.id);\n const nextChildID =\n selectedChildIndex < children.length - 1\n ? children[selectedChildIndex + 1]\n : children[0];\n selectedElementIndex = store.getIndexOfElementID(nextChildID);\n }\n }\n }\n break;\n case 'SELECT_OWNER_LIST_NEXT_ELEMENT_IN_TREE':\n if (selectedElementIndex !== null) {\n if (\n ownerSubtreeLeafElementID !== null &&\n ownerSubtreeLeafElementID !== selectedElementID\n ) {\n const leafElement = store.getElementByID(ownerSubtreeLeafElementID);\n if (leafElement !== null) {\n let currentElement = leafElement;\n while (currentElement !== null) {\n if (currentElement.ownerID === selectedElementID) {\n selectedElementIndex = store.getIndexOfElementID(\n currentElement.id,\n );\n break;\n } else if (currentElement.ownerID !== 0) {\n currentElement = store.getElementByID(currentElement.ownerID);\n }\n }\n }\n }\n }\n break;\n case 'SELECT_OWNER_LIST_PREVIOUS_ELEMENT_IN_TREE':\n if (selectedElementIndex !== null) {\n if (ownerSubtreeLeafElementID === null) {\n // If this is the first time we're stepping through the owners tree,\n // pin the current component as the owners list leaf.\n // This will enable us to step back down to this component.\n ownerSubtreeLeafElementID = selectedElementID;\n }\n\n const selectedElement = store.getElementAtIndex(\n ((selectedElementIndex: any): number),\n );\n if (selectedElement !== null && selectedElement.ownerID !== 0) {\n const ownerIndex = store.getIndexOfElementID(\n selectedElement.ownerID,\n );\n if (ownerIndex !== null) {\n selectedElementIndex = ownerIndex;\n }\n }\n }\n break;\n case 'SELECT_PARENT_ELEMENT_IN_TREE':\n ownerSubtreeLeafElementID = null;\n\n if (selectedElementIndex !== null) {\n const selectedElement = store.getElementAtIndex(\n ((selectedElementIndex: any): number),\n );\n if (selectedElement !== null && selectedElement.parentID !== 0) {\n const parentIndex = store.getIndexOfElementID(\n selectedElement.parentID,\n );\n if (parentIndex !== null) {\n selectedElementIndex = parentIndex;\n }\n }\n }\n break;\n case 'SELECT_PREVIOUS_ELEMENT_IN_TREE':\n ownerSubtreeLeafElementID = null;\n\n if (selectedElementIndex === null || selectedElementIndex === 0) {\n selectedElementIndex = numElements - 1;\n } else {\n selectedElementIndex--;\n }\n break;\n case 'SELECT_PREVIOUS_SIBLING_IN_TREE':\n ownerSubtreeLeafElementID = null;\n\n if (selectedElementIndex !== null) {\n const selectedElement = store.getElementAtIndex(\n ((selectedElementIndex: any): number),\n );\n if (selectedElement !== null && selectedElement.parentID !== 0) {\n const parent = store.getElementByID(selectedElement.parentID);\n if (parent !== null) {\n const {children} = parent;\n const selectedChildIndex = children.indexOf(selectedElement.id);\n const nextChildID =\n selectedChildIndex > 0\n ? children[selectedChildIndex - 1]\n : children[children.length - 1];\n selectedElementIndex = store.getIndexOfElementID(nextChildID);\n }\n }\n }\n break;\n default:\n // React can bailout of no-op updates.\n return state;\n }\n }\n\n // Keep selected item ID and index in sync.\n if (lookupIDForIndex && selectedElementIndex !== state.selectedElementIndex) {\n if (selectedElementIndex === null) {\n selectedElementID = null;\n } else {\n selectedElementID = store.getElementIDAtIndex(\n ((selectedElementIndex: any): number),\n );\n }\n }\n\n return {\n ...state,\n\n numElements,\n ownerSubtreeLeafElementID,\n selectedElementIndex,\n selectedElementID,\n };\n}\n\nfunction reduceSearchState(store: Store, state: State, action: Action): State {\n let {\n searchIndex,\n searchResults,\n searchText,\n selectedElementID,\n selectedElementIndex,\n } = state;\n const ownerID = state.ownerID;\n\n const prevSearchIndex = searchIndex;\n const prevSearchText = searchText;\n const numPrevSearchResults = searchResults.length;\n\n // We track explicitly whether search was requested because\n // we might want to search even if search index didn't change.\n // For example, if you press \"next result\" on a search with a single\n // result but a different current selection, we'll set this to true.\n let didRequestSearch = false;\n\n // Search isn't supported when the owner's tree is active.\n if (ownerID === null) {\n switch (action.type) {\n case 'GO_TO_NEXT_SEARCH_RESULT':\n if (numPrevSearchResults > 0) {\n didRequestSearch = true;\n searchIndex =\n searchIndex + 1 < numPrevSearchResults ? searchIndex + 1 : 0;\n }\n break;\n case 'GO_TO_PREVIOUS_SEARCH_RESULT':\n if (numPrevSearchResults > 0) {\n didRequestSearch = true;\n searchIndex =\n ((searchIndex: any): number) > 0\n ? ((searchIndex: any): number) - 1\n : numPrevSearchResults - 1;\n }\n break;\n case 'HANDLE_STORE_MUTATION':\n if (searchText !== '') {\n const [\n addedElementIDs,\n removedElementIDs,\n ] = (action: ACTION_HANDLE_STORE_MUTATION).payload;\n\n removedElementIDs.forEach((parentID, id) => {\n // Prune this item from the search results.\n const index = searchResults.indexOf(id);\n if (index >= 0) {\n searchResults = searchResults\n .slice(0, index)\n .concat(searchResults.slice(index + 1));\n\n // If the results are now empty, also deselect things.\n if (searchResults.length === 0) {\n searchIndex = null;\n } else if (((searchIndex: any): number) >= searchResults.length) {\n searchIndex = searchResults.length - 1;\n }\n }\n });\n\n addedElementIDs.forEach(id => {\n const element = ((store.getElementByID(id): any): Element);\n\n // It's possible that multiple tree operations will fire before this action has run.\n // So it's important to check for elements that may have been added and then removed.\n if (element !== null) {\n const {displayName} = element;\n\n // Add this item to the search results if it matches.\n const regExp = createRegExp(searchText);\n if (displayName !== null && regExp.test(displayName)) {\n const newElementIndex = ((store.getIndexOfElementID(\n id,\n ): any): number);\n\n let foundMatch = false;\n for (let index = 0; index < searchResults.length; index++) {\n const resultID = searchResults[index];\n if (\n newElementIndex <\n ((store.getIndexOfElementID(resultID): any): number)\n ) {\n foundMatch = true;\n searchResults = searchResults\n .slice(0, index)\n .concat(resultID)\n .concat(searchResults.slice(index));\n break;\n }\n }\n if (!foundMatch) {\n searchResults = searchResults.concat(id);\n }\n\n searchIndex = searchIndex === null ? 0 : searchIndex;\n }\n }\n });\n }\n break;\n case 'SET_SEARCH_TEXT':\n searchIndex = null;\n searchResults = [];\n searchText = (action: ACTION_SET_SEARCH_TEXT).payload;\n\n if (searchText !== '') {\n const regExp = createRegExp(searchText);\n store.roots.forEach(rootID => {\n recursivelySearchTree(store, rootID, regExp, searchResults);\n });\n if (searchResults.length > 0) {\n if (prevSearchIndex === null) {\n if (selectedElementIndex !== null) {\n searchIndex = getNearestResultIndex(\n store,\n searchResults,\n selectedElementIndex,\n );\n } else {\n searchIndex = 0;\n }\n } else {\n searchIndex = Math.min(\n ((prevSearchIndex: any): number),\n searchResults.length - 1,\n );\n }\n }\n }\n break;\n default:\n // React can bailout of no-op updates.\n return state;\n }\n }\n\n if (searchText !== prevSearchText) {\n const newSearchIndex = searchResults.indexOf(selectedElementID);\n if (newSearchIndex === -1) {\n // Only move the selection if the new query\n // doesn't match the current selection anymore.\n didRequestSearch = true;\n } else {\n // Selected item still matches the new search query.\n // Adjust the index to reflect its position in new results.\n searchIndex = newSearchIndex;\n }\n }\n if (didRequestSearch && searchIndex !== null) {\n selectedElementID = ((searchResults[searchIndex]: any): number);\n selectedElementIndex = store.getIndexOfElementID(\n ((selectedElementID: any): number),\n );\n }\n\n return {\n ...state,\n\n selectedElementID,\n selectedElementIndex,\n\n searchIndex,\n searchResults,\n searchText,\n };\n}\n\nfunction reduceOwnersState(store: Store, state: State, action: Action): State {\n let {\n numElements,\n selectedElementID,\n selectedElementIndex,\n ownerID,\n ownerFlatTree,\n } = state;\n const {searchIndex, searchResults, searchText} = state;\n\n let prevSelectedElementIndex = selectedElementIndex;\n\n switch (action.type) {\n case 'HANDLE_STORE_MUTATION':\n if (ownerID !== null) {\n if (!store.containsElement(ownerID)) {\n ownerID = null;\n ownerFlatTree = null;\n selectedElementID = null;\n } else {\n ownerFlatTree = store.getOwnersListForElement(ownerID);\n if (selectedElementID !== null) {\n // Mutation might have caused the index of this ID to shift.\n selectedElementIndex = ownerFlatTree.findIndex(\n element => element.id === selectedElementID,\n );\n }\n }\n } else {\n if (selectedElementID !== null) {\n // Mutation might have caused the index of this ID to shift.\n selectedElementIndex = store.getIndexOfElementID(selectedElementID);\n }\n }\n if (selectedElementIndex === -1) {\n // If we couldn't find this ID after mutation, unselect it.\n selectedElementIndex = null;\n selectedElementID = null;\n }\n break;\n case 'RESET_OWNER_STACK':\n ownerID = null;\n ownerFlatTree = null;\n selectedElementIndex =\n selectedElementID !== null\n ? store.getIndexOfElementID(selectedElementID)\n : null;\n break;\n case 'SELECT_ELEMENT_AT_INDEX':\n if (ownerFlatTree !== null) {\n selectedElementIndex = (action: ACTION_SELECT_ELEMENT_AT_INDEX).payload;\n }\n break;\n case 'SELECT_ELEMENT_BY_ID':\n if (ownerFlatTree !== null) {\n const payload = (action: ACTION_SELECT_ELEMENT_BY_ID).payload;\n if (payload === null) {\n selectedElementIndex = null;\n } else {\n selectedElementIndex = ownerFlatTree.findIndex(\n element => element.id === payload,\n );\n\n // If the selected element is outside of the current owners list,\n // exit the list and select the element in the main tree.\n // This supports features like toggling Suspense.\n if (selectedElementIndex !== null && selectedElementIndex < 0) {\n ownerID = null;\n ownerFlatTree = null;\n selectedElementIndex = store.getIndexOfElementID(payload);\n }\n }\n }\n break;\n case 'SELECT_NEXT_ELEMENT_IN_TREE':\n if (ownerFlatTree !== null && ownerFlatTree.length > 0) {\n if (selectedElementIndex === null) {\n selectedElementIndex = 0;\n } else if (selectedElementIndex + 1 < ownerFlatTree.length) {\n selectedElementIndex++;\n }\n }\n break;\n case 'SELECT_PREVIOUS_ELEMENT_IN_TREE':\n if (ownerFlatTree !== null && ownerFlatTree.length > 0) {\n if (selectedElementIndex !== null && selectedElementIndex > 0) {\n selectedElementIndex--;\n }\n }\n break;\n case 'SELECT_OWNER':\n // If the Store doesn't have any owners metadata, don't drill into an empty stack.\n // This is a confusing user experience.\n if (store.hasOwnerMetadata) {\n ownerID = (action: ACTION_SELECT_OWNER).payload;\n ownerFlatTree = store.getOwnersListForElement(ownerID);\n\n // Always force reset selection to be the top of the new owner tree.\n selectedElementIndex = 0;\n prevSelectedElementIndex = null;\n }\n break;\n default:\n // React can bailout of no-op updates.\n return state;\n }\n\n // Changes in the selected owner require re-calculating the owners tree.\n if (\n ownerFlatTree !== state.ownerFlatTree ||\n action.type === 'HANDLE_STORE_MUTATION'\n ) {\n if (ownerFlatTree === null) {\n numElements = store.numElements;\n } else {\n numElements = ownerFlatTree.length;\n }\n }\n\n // Keep selected item ID and index in sync.\n if (selectedElementIndex !== prevSelectedElementIndex) {\n if (selectedElementIndex === null) {\n selectedElementID = null;\n } else {\n if (ownerFlatTree !== null) {\n selectedElementID = ownerFlatTree[selectedElementIndex].id;\n }\n }\n }\n\n return {\n ...state,\n\n numElements,\n selectedElementID,\n selectedElementIndex,\n\n searchIndex,\n searchResults,\n searchText,\n\n ownerID,\n ownerFlatTree,\n };\n}\n\nfunction reduceSuspenseState(\n store: Store,\n state: State,\n action: Action,\n): State {\n const {type} = action;\n switch (type) {\n case 'UPDATE_INSPECTED_ELEMENT_ID':\n if (state.inspectedElementID !== state.selectedElementID) {\n return {\n ...state,\n inspectedElementID: state.selectedElementID,\n };\n }\n break;\n default:\n break;\n }\n\n // React can bailout of no-op updates.\n return state;\n}\n\ntype Props = {|\n children: React$Node,\n\n // Used for automated testing\n defaultInspectedElementID?: ?number,\n defaultOwnerID?: ?number,\n defaultSelectedElementID?: ?number,\n defaultSelectedElementIndex?: ?number,\n|};\n\n// TODO Remove TreeContextController wrapper element once global ConsearchText.write API exists.\nfunction TreeContextController({\n children,\n defaultInspectedElementID,\n defaultOwnerID,\n defaultSelectedElementID,\n defaultSelectedElementIndex,\n}: Props) {\n const bridge = useContext(BridgeContext);\n const store = useContext(StoreContext);\n\n const initialRevision = useMemo(() => store.revision, [store]);\n\n // This reducer is created inline because it needs access to the Store.\n // The store is mutable, but the Store itself is global and lives for the lifetime of the DevTools,\n // so it's okay for the reducer to have an empty dependencies array.\n const reducer = useMemo(\n () => (state: State, action: Action): State => {\n const {type} = action;\n switch (type) {\n case 'GO_TO_NEXT_SEARCH_RESULT':\n case 'GO_TO_PREVIOUS_SEARCH_RESULT':\n case 'HANDLE_STORE_MUTATION':\n case 'RESET_OWNER_STACK':\n case 'SELECT_ELEMENT_AT_INDEX':\n case 'SELECT_ELEMENT_BY_ID':\n case 'SELECT_CHILD_ELEMENT_IN_TREE':\n case 'SELECT_NEXT_ELEMENT_IN_TREE':\n case 'SELECT_NEXT_SIBLING_IN_TREE':\n case 'SELECT_OWNER_LIST_NEXT_ELEMENT_IN_TREE':\n case 'SELECT_OWNER_LIST_PREVIOUS_ELEMENT_IN_TREE':\n case 'SELECT_PARENT_ELEMENT_IN_TREE':\n case 'SELECT_PREVIOUS_ELEMENT_IN_TREE':\n case 'SELECT_PREVIOUS_SIBLING_IN_TREE':\n case 'SELECT_OWNER':\n case 'UPDATE_INSPECTED_ELEMENT_ID':\n case 'SET_SEARCH_TEXT':\n state = reduceTreeState(store, state, action);\n state = reduceSearchState(store, state, action);\n state = reduceOwnersState(store, state, action);\n state = reduceSuspenseState(store, state, action);\n\n // If the selected ID is in a collapsed subtree, reset the selected index to null.\n // We'll know the correct index after the layout effect will toggle the tree,\n // and the store tree is mutated to account for that.\n if (\n state.selectedElementID !== null &&\n store.isInsideCollapsedSubTree(state.selectedElementID)\n ) {\n return {\n ...state,\n selectedElementIndex: null,\n };\n }\n\n return state;\n default:\n throw new Error(`Unrecognized action \"${type}\"`);\n }\n },\n [store],\n );\n\n const [state, dispatch] = useReducer(reducer, {\n // Tree\n numElements: store.numElements,\n ownerSubtreeLeafElementID: null,\n selectedElementID:\n defaultSelectedElementID == null ? null : defaultSelectedElementID,\n selectedElementIndex:\n defaultSelectedElementIndex == null ? null : defaultSelectedElementIndex,\n\n // Search\n searchIndex: null,\n searchResults: [],\n searchText: '',\n\n // Owners\n ownerID: defaultOwnerID == null ? null : defaultOwnerID,\n ownerFlatTree: null,\n\n // Inspection element panel\n inspectedElementID:\n defaultInspectedElementID == null ? null : defaultInspectedElementID,\n });\n\n const dispatchWrapper = useCallback(\n (action: Action) => {\n // Run the first update at \"user-blocking\" priority in case dispatch is called from a non-React event.\n // In this case, the current (and \"next\") priorities would both be \"normal\",\n // and suspense would potentially block both updates.\n runWithPriority(UserBlockingPriority, () => dispatch(action));\n next(() => dispatch({type: 'UPDATE_INSPECTED_ELEMENT_ID'}));\n },\n [dispatch],\n );\n\n // Listen for host element selections.\n useEffect(() => {\n const handleSelectFiber = (id: number) =>\n dispatchWrapper({type: 'SELECT_ELEMENT_BY_ID', payload: id});\n bridge.addListener('selectFiber', handleSelectFiber);\n return () => bridge.removeListener('selectFiber', handleSelectFiber);\n }, [bridge, dispatchWrapper]);\n\n // If a newly-selected search result or inspection selection is inside of a collapsed subtree, auto expand it.\n // This needs to be a layout effect to avoid temporarily flashing an incorrect selection.\n const prevSelectedElementID = useRef<number | null>(null);\n useLayoutEffect(() => {\n if (state.selectedElementID !== prevSelectedElementID.current) {\n prevSelectedElementID.current = state.selectedElementID;\n\n if (state.selectedElementID !== null) {\n const element = store.getElementByID(state.selectedElementID);\n if (element !== null && element.parentID > 0) {\n store.toggleIsCollapsed(element.parentID, false);\n }\n }\n }\n }, [state.selectedElementID, store]);\n\n // Mutations to the underlying tree may impact this context (e.g. search results, selection state).\n useEffect(() => {\n const handleStoreMutated = ([addedElementIDs, removedElementIDs]: [\n Array<number>,\n Map<number, number>,\n ]) => {\n dispatchWrapper({\n type: 'HANDLE_STORE_MUTATION',\n payload: [addedElementIDs, removedElementIDs],\n });\n };\n\n // Since this is a passive effect, the tree may have been mutated before our initial subscription.\n if (store.revision !== initialRevision) {\n // At the moment, we can treat this as a mutation.\n // We don't know which Elements were newly added/removed, but that should be okay in this case.\n // It would only impact the search state, which is unlikely to exist yet at this point.\n dispatchWrapper({\n type: 'HANDLE_STORE_MUTATION',\n payload: [[], new Map()],\n });\n }\n\n store.addListener('mutated', handleStoreMutated);\n\n return () => store.removeListener('mutated', handleStoreMutated);\n }, [dispatchWrapper, initialRevision, store]);\n\n return (\n <TreeStateContext.Provider value={state}>\n <TreeDispatcherContext.Provider value={dispatchWrapper}>\n {children}\n </TreeDispatcherContext.Provider>\n </TreeStateContext.Provider>\n );\n}\nfunction recursivelySearchTree(\n store: Store,\n elementID: number,\n regExp: RegExp,\n searchResults: Array<number>,\n): void {\n const {children, displayName, hocDisplayNames} = ((store.getElementByID(\n elementID,\n ): any): Element);\n\n if (displayName != null && regExp.test(displayName) === true) {\n searchResults.push(elementID);\n } else if (\n hocDisplayNames != null &&\n hocDisplayNames.length > 0 &&\n hocDisplayNames.some(name => regExp.test(name)) === true\n ) {\n searchResults.push(elementID);\n }\n\n children.forEach(childID =>\n recursivelySearchTree(store, childID, regExp, searchResults),\n );\n}\n\nfunction getNearestResultIndex(\n store: Store,\n searchResults: Array<number>,\n selectedElementIndex: number,\n): number {\n const index = searchResults.findIndex(id => {\n const innerIndex = store.getIndexOfElementID(id);\n return innerIndex !== null && innerIndex >= selectedElementIndex;\n });\n\n return index === -1 ? 0 : index;\n}\n\nexport {TreeDispatcherContext, TreeStateContext, TreeContextController};\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport throttle from 'lodash.throttle';\nimport {\n useCallback,\n useEffect,\n useLayoutEffect,\n useReducer,\n useState,\n useContext,\n} from 'react';\nimport {\n localStorageGetItem,\n localStorageSetItem,\n} from 'react-devtools-shared/src/storage';\nimport {StoreContext, BridgeContext} from './context';\nimport {sanitizeForParse, smartParse, smartStringify} from '../utils';\n\ntype ACTION_RESET = {|\n type: 'RESET',\n externalValue: any,\n|};\ntype ACTION_UPDATE = {|\n type: 'UPDATE',\n editableValue: any,\n externalValue: any,\n|};\n\ntype UseEditableValueAction = ACTION_RESET | ACTION_UPDATE;\ntype UseEditableValueDispatch = (action: UseEditableValueAction) => void;\ntype UseEditableValueState = {|\n editableValue: any,\n externalValue: any,\n hasPendingChanges: boolean,\n isValid: boolean,\n parsedValue: any,\n|};\n\nfunction useEditableValueReducer(state, action) {\n switch (action.type) {\n case 'RESET':\n return {\n ...state,\n editableValue: smartStringify(action.externalValue),\n externalValue: action.externalValue,\n hasPendingChanges: false,\n isValid: true,\n parsedValue: action.externalValue,\n };\n case 'UPDATE':\n let isNewValueValid = false;\n let newParsedValue;\n try {\n newParsedValue = smartParse(action.editableValue);\n isNewValueValid = true;\n } catch (error) {}\n return {\n ...state,\n editableValue: sanitizeForParse(action.editableValue),\n externalValue: action.externalValue,\n hasPendingChanges:\n smartStringify(action.externalValue) !== action.editableValue,\n isValid: isNewValueValid,\n parsedValue: isNewValueValid ? newParsedValue : state.parsedValue,\n };\n default:\n throw new Error(`Invalid action \"${action.type}\"`);\n }\n}\n\n// Convenience hook for working with an editable value that is validated via JSON.parse.\nexport function useEditableValue(\n externalValue: any,\n): [UseEditableValueState, UseEditableValueDispatch] {\n const [state, dispatch] = useReducer<\n UseEditableValueState,\n UseEditableValueState,\n UseEditableValueAction,\n >(useEditableValueReducer, {\n editableValue: smartStringify(externalValue),\n externalValue,\n hasPendingChanges: false,\n isValid: true,\n parsedValue: externalValue,\n });\n if (!Object.is(state.externalValue, externalValue)) {\n if (!state.hasPendingChanges) {\n dispatch({\n type: 'RESET',\n externalValue,\n });\n } else {\n dispatch({\n type: 'UPDATE',\n editableValue: state.editableValue,\n externalValue,\n });\n }\n }\n\n return [state, dispatch];\n}\n\nexport function useIsOverflowing(\n containerRef: {current: HTMLDivElement | null, ...},\n totalChildWidth: number,\n): boolean {\n const [isOverflowing, setIsOverflowing] = useState<boolean>(false);\n\n // It's important to use a layout effect, so that we avoid showing a flash of overflowed content.\n useLayoutEffect(() => {\n if (containerRef.current === null) {\n return () => {};\n }\n\n const container = ((containerRef.current: any): HTMLDivElement);\n\n const handleResize = throttle(\n () => setIsOverflowing(container.clientWidth <= totalChildWidth),\n 100,\n );\n\n handleResize();\n\n // It's important to listen to the ownerDocument.defaultView to support the browser extension.\n // Here we use portals to render individual tabs (e.g. Profiler),\n // and the root document might belong to a different window.\n const ownerWindow = container.ownerDocument.defaultView;\n ownerWindow.addEventListener('resize', handleResize);\n return () => ownerWindow.removeEventListener('resize', handleResize);\n }, [containerRef, totalChildWidth]);\n\n return isOverflowing;\n}\n\n// Forked from https://usehooks.com/useLocalStorage/\nexport function useLocalStorage<T>(\n key: string,\n initialValue: T | (() => T),\n): [T, (value: T | (() => T)) => void] {\n const getValueFromLocalStorage = useCallback(() => {\n try {\n const item = localStorageGetItem(key);\n if (item != null) {\n return JSON.parse(item);\n }\n } catch (error) {\n console.log(error);\n }\n if (typeof initialValue === 'function') {\n return ((initialValue: any): () => T)();\n } else {\n return initialValue;\n }\n }, [initialValue, key]);\n\n const [storedValue, setStoredValue] = useState<any>(getValueFromLocalStorage);\n\n const setValue = useCallback(\n value => {\n try {\n const valueToStore =\n value instanceof Function ? (value: any)(storedValue) : value;\n setStoredValue(valueToStore);\n localStorageSetItem(key, JSON.stringify(valueToStore));\n } catch (error) {\n console.log(error);\n }\n },\n [key, storedValue],\n );\n\n // Listen for changes to this local storage value made from other windows.\n // This enables the e.g. \"⚛️ Elements\" tab to update in response to changes from \"⚛️ Settings\".\n useLayoutEffect(() => {\n const onStorage = event => {\n const newValue = getValueFromLocalStorage();\n if (key === event.key && storedValue !== newValue) {\n setValue(newValue);\n }\n };\n\n window.addEventListener('storage', onStorage);\n\n return () => {\n window.removeEventListener('storage', onStorage);\n };\n }, [getValueFromLocalStorage, key, storedValue, setValue]);\n\n return [storedValue, setValue];\n}\n\nexport function useModalDismissSignal(\n modalRef: {current: HTMLDivElement | null, ...},\n dismissCallback: () => void,\n dismissOnClickOutside?: boolean = true,\n): void {\n useEffect(() => {\n if (modalRef.current === null) {\n return () => {};\n }\n\n const handleDocumentKeyDown = ({key}: any) => {\n if (key === 'Escape') {\n dismissCallback();\n }\n };\n\n const handleDocumentClick = (event: any) => {\n // $FlowFixMe\n if (\n modalRef.current !== null &&\n !modalRef.current.contains(event.target)\n ) {\n event.stopPropagation();\n event.preventDefault();\n\n dismissCallback();\n }\n };\n\n // It's important to listen to the ownerDocument to support the browser extension.\n // Here we use portals to render individual tabs (e.g. Profiler),\n // and the root document might belong to a different window.\n const ownerDocument = modalRef.current.ownerDocument;\n ownerDocument.addEventListener('keydown', handleDocumentKeyDown);\n if (dismissOnClickOutside) {\n ownerDocument.addEventListener('click', handleDocumentClick);\n }\n\n return () => {\n ownerDocument.removeEventListener('keydown', handleDocumentKeyDown);\n ownerDocument.removeEventListener('click', handleDocumentClick);\n };\n }, [modalRef, dismissCallback, dismissOnClickOutside]);\n}\n\n// Copied from https://github.com/facebook/react/pull/15022\nexport function useSubscription<Value>({\n getCurrentValue,\n subscribe,\n}: {|\n getCurrentValue: () => Value,\n subscribe: (callback: Function) => () => void,\n|}): Value {\n const [state, setState] = useState({\n getCurrentValue,\n subscribe,\n value: getCurrentValue(),\n });\n\n if (\n state.getCurrentValue !== getCurrentValue ||\n state.subscribe !== subscribe\n ) {\n setState({\n getCurrentValue,\n subscribe,\n value: getCurrentValue(),\n });\n }\n\n useEffect(() => {\n let didUnsubscribe = false;\n\n const checkForUpdates = () => {\n if (didUnsubscribe) {\n return;\n }\n\n setState(prevState => {\n if (\n prevState.getCurrentValue !== getCurrentValue ||\n prevState.subscribe !== subscribe\n ) {\n return prevState;\n }\n\n const value = getCurrentValue();\n if (prevState.value === value) {\n return prevState;\n }\n\n return {...prevState, value};\n });\n };\n const unsubscribe = subscribe(checkForUpdates);\n\n checkForUpdates();\n\n return () => {\n didUnsubscribe = true;\n unsubscribe();\n };\n }, [getCurrentValue, subscribe]);\n\n return state.value;\n}\n\nexport function useHighlightNativeElement() {\n const bridge = useContext(BridgeContext);\n const store = useContext(StoreContext);\n\n const highlightNativeElement = useCallback(\n (id: number) => {\n const element = store.getElementByID(id);\n const rendererID = store.getRendererIDForElement(id);\n if (element !== null && rendererID !== null) {\n bridge.send('highlightNativeElement', {\n displayName: element.displayName,\n hideAfterTimeout: false,\n id,\n openNativeElementsPanel: false,\n rendererID,\n scrollIntoView: false,\n });\n }\n },\n [store, bridge],\n );\n\n const clearHighlightNativeElement = useCallback(() => {\n bridge.send('clearNativeElementHighlight');\n }, [bridge]);\n\n return {\n highlightNativeElement,\n clearHighlightNativeElement,\n };\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {\n createContext,\n useContext,\n useEffect,\n useLayoutEffect,\n useMemo,\n} from 'react';\nimport {\n COMFORTABLE_LINE_HEIGHT,\n COMPACT_LINE_HEIGHT,\n LOCAL_STORAGE_SHOULD_BREAK_ON_CONSOLE_ERRORS,\n LOCAL_STORAGE_SHOULD_PATCH_CONSOLE_KEY,\n LOCAL_STORAGE_TRACE_UPDATES_ENABLED_KEY,\n} from 'react-devtools-shared/src/constants';\nimport {useLocalStorage} from '../hooks';\nimport {BridgeContext} from '../context';\n\nimport type {BrowserTheme} from '../DevTools';\n\nexport type DisplayDensity = 'comfortable' | 'compact';\nexport type Theme = 'auto' | 'light' | 'dark';\n\ntype Context = {|\n displayDensity: DisplayDensity,\n setDisplayDensity(value: DisplayDensity): void,\n\n // Derived from display density.\n // Specified as a separate prop so it can trigger a re-render of FixedSizeList.\n lineHeight: number,\n\n appendComponentStack: boolean,\n setAppendComponentStack: (value: boolean) => void,\n\n breakOnConsoleErrors: boolean,\n setBreakOnConsoleErrors: (value: boolean) => void,\n\n theme: Theme,\n setTheme(value: Theme): void,\n\n traceUpdatesEnabled: boolean,\n setTraceUpdatesEnabled: (value: boolean) => void,\n|};\n\nconst SettingsContext = createContext<Context>(((null: any): Context));\nSettingsContext.displayName = 'SettingsContext';\n\ntype DocumentElements = Array<HTMLElement>;\n\ntype Props = {|\n browserTheme: BrowserTheme,\n children: React$Node,\n componentsPortalContainer?: Element,\n profilerPortalContainer?: Element,\n|};\n\nfunction SettingsContextController({\n browserTheme,\n children,\n componentsPortalContainer,\n profilerPortalContainer,\n}: Props) {\n const bridge = useContext(BridgeContext);\n\n const [displayDensity, setDisplayDensity] = useLocalStorage<DisplayDensity>(\n 'React::DevTools::displayDensity',\n 'compact',\n );\n const [theme, setTheme] = useLocalStorage<Theme>(\n 'React::DevTools::theme',\n 'auto',\n );\n const [\n appendComponentStack,\n setAppendComponentStack,\n ] = useLocalStorage<boolean>(LOCAL_STORAGE_SHOULD_PATCH_CONSOLE_KEY, true);\n const [\n breakOnConsoleErrors,\n setBreakOnConsoleErrors,\n ] = useLocalStorage<boolean>(\n LOCAL_STORAGE_SHOULD_BREAK_ON_CONSOLE_ERRORS,\n false,\n );\n const [\n traceUpdatesEnabled,\n setTraceUpdatesEnabled,\n ] = useLocalStorage<boolean>(LOCAL_STORAGE_TRACE_UPDATES_ENABLED_KEY, false);\n\n const documentElements = useMemo<DocumentElements>(() => {\n const array: Array<HTMLElement> = [\n ((document.documentElement: any): HTMLElement),\n ];\n if (componentsPortalContainer != null) {\n array.push(\n ((componentsPortalContainer.ownerDocument\n .documentElement: any): HTMLElement),\n );\n }\n if (profilerPortalContainer != null) {\n array.push(\n ((profilerPortalContainer.ownerDocument\n .documentElement: any): HTMLElement),\n );\n }\n return array;\n }, [componentsPortalContainer, profilerPortalContainer]);\n\n useLayoutEffect(() => {\n switch (displayDensity) {\n case 'comfortable':\n updateDisplayDensity('comfortable', documentElements);\n break;\n case 'compact':\n updateDisplayDensity('compact', documentElements);\n break;\n default:\n throw Error(`Unsupported displayDensity value \"${displayDensity}\"`);\n }\n }, [displayDensity, documentElements]);\n\n useLayoutEffect(() => {\n switch (theme) {\n case 'light':\n updateThemeVariables('light', documentElements);\n break;\n case 'dark':\n updateThemeVariables('dark', documentElements);\n break;\n case 'auto':\n updateThemeVariables(browserTheme, documentElements);\n break;\n default:\n throw Error(`Unsupported theme value \"${theme}\"`);\n }\n }, [browserTheme, theme, documentElements]);\n\n useEffect(() => {\n bridge.send('updateConsolePatchSettings', {\n appendComponentStack,\n breakOnConsoleErrors,\n });\n }, [bridge, appendComponentStack, breakOnConsoleErrors]);\n\n useEffect(() => {\n bridge.send('setTraceUpdatesEnabled', traceUpdatesEnabled);\n }, [bridge, traceUpdatesEnabled]);\n\n const value = useMemo(\n () => ({\n appendComponentStack,\n breakOnConsoleErrors,\n displayDensity,\n lineHeight:\n displayDensity === 'compact'\n ? COMPACT_LINE_HEIGHT\n : COMFORTABLE_LINE_HEIGHT,\n setAppendComponentStack,\n setBreakOnConsoleErrors,\n setDisplayDensity,\n setTheme,\n setTraceUpdatesEnabled,\n theme,\n traceUpdatesEnabled,\n }),\n [\n appendComponentStack,\n breakOnConsoleErrors,\n displayDensity,\n setAppendComponentStack,\n setBreakOnConsoleErrors,\n setDisplayDensity,\n setTheme,\n setTraceUpdatesEnabled,\n theme,\n traceUpdatesEnabled,\n ],\n );\n\n return (\n <SettingsContext.Provider value={value}>\n {children}\n </SettingsContext.Provider>\n );\n}\n\nfunction setStyleVariable(\n name: string,\n value: string,\n documentElements: DocumentElements,\n) {\n documentElements.forEach(documentElement =>\n documentElement.style.setProperty(name, value),\n );\n}\n\nfunction updateStyleHelper(\n themeKey: string,\n style: string,\n documentElements: DocumentElements,\n) {\n setStyleVariable(\n `--${style}`,\n `var(--${themeKey}-${style})`,\n documentElements,\n );\n}\n\nexport function updateDisplayDensity(\n displayDensity: DisplayDensity,\n documentElements: DocumentElements,\n): void {\n updateStyleHelper(\n displayDensity,\n 'font-size-monospace-normal',\n documentElements,\n );\n updateStyleHelper(\n displayDensity,\n 'font-size-monospace-large',\n documentElements,\n );\n updateStyleHelper(\n displayDensity,\n 'font-size-monospace-small',\n documentElements,\n );\n updateStyleHelper(displayDensity, 'font-size-sans-normal', documentElements);\n updateStyleHelper(displayDensity, 'font-size-sans-large', documentElements);\n updateStyleHelper(displayDensity, 'font-size-sans-small', documentElements);\n updateStyleHelper(displayDensity, 'line-height-data', documentElements);\n\n // Sizes and paddings/margins are all rem-based,\n // so update the root font-size as well when the display preference changes.\n const computedStyle = getComputedStyle((document.body: any));\n const fontSize = computedStyle.getPropertyValue(\n `--${displayDensity}-root-font-size`,\n );\n const root = ((document.querySelector(':root'): any): HTMLElement);\n root.style.fontSize = fontSize;\n}\n\nexport function updateThemeVariables(\n theme: Theme,\n documentElements: DocumentElements,\n): void {\n updateStyleHelper(theme, 'color-attribute-name', documentElements);\n updateStyleHelper(\n theme,\n 'color-attribute-name-not-editable',\n documentElements,\n );\n updateStyleHelper(theme, 'color-attribute-name-inverted', documentElements);\n updateStyleHelper(theme, 'color-attribute-value', documentElements);\n updateStyleHelper(theme, 'color-attribute-value-inverted', documentElements);\n updateStyleHelper(theme, 'color-attribute-editable-value', documentElements);\n updateStyleHelper(theme, 'color-background', documentElements);\n updateStyleHelper(theme, 'color-background-hover', documentElements);\n updateStyleHelper(theme, 'color-background-inactive', documentElements);\n updateStyleHelper(theme, 'color-background-invalid', documentElements);\n updateStyleHelper(theme, 'color-background-selected', documentElements);\n updateStyleHelper(theme, 'color-border', documentElements);\n updateStyleHelper(theme, 'color-button-background', documentElements);\n updateStyleHelper(theme, 'color-button-background-focus', documentElements);\n updateStyleHelper(theme, 'color-button', documentElements);\n updateStyleHelper(theme, 'color-button-active', documentElements);\n updateStyleHelper(theme, 'color-button-disabled', documentElements);\n updateStyleHelper(theme, 'color-button-focus', documentElements);\n updateStyleHelper(theme, 'color-button-hover', documentElements);\n updateStyleHelper(\n theme,\n 'color-commit-did-not-render-fill',\n documentElements,\n );\n updateStyleHelper(\n theme,\n 'color-commit-did-not-render-fill-text',\n documentElements,\n );\n updateStyleHelper(\n theme,\n 'color-commit-did-not-render-pattern',\n documentElements,\n );\n updateStyleHelper(\n theme,\n 'color-commit-did-not-render-pattern-text',\n documentElements,\n );\n updateStyleHelper(theme, 'color-commit-gradient-0', documentElements);\n updateStyleHelper(theme, 'color-commit-gradient-1', documentElements);\n updateStyleHelper(theme, 'color-commit-gradient-2', documentElements);\n updateStyleHelper(theme, 'color-commit-gradient-3', documentElements);\n updateStyleHelper(theme, 'color-commit-gradient-4', documentElements);\n updateStyleHelper(theme, 'color-commit-gradient-5', documentElements);\n updateStyleHelper(theme, 'color-commit-gradient-6', documentElements);\n updateStyleHelper(theme, 'color-commit-gradient-7', documentElements);\n updateStyleHelper(theme, 'color-commit-gradient-8', documentElements);\n updateStyleHelper(theme, 'color-commit-gradient-9', documentElements);\n updateStyleHelper(theme, 'color-commit-gradient-text', documentElements);\n updateStyleHelper(theme, 'color-component-name', documentElements);\n updateStyleHelper(theme, 'color-component-name-inverted', documentElements);\n updateStyleHelper(\n theme,\n 'color-component-badge-background',\n documentElements,\n );\n updateStyleHelper(\n theme,\n 'color-component-badge-background-inverted',\n documentElements,\n );\n updateStyleHelper(theme, 'color-component-badge-count', documentElements);\n updateStyleHelper(\n theme,\n 'color-component-badge-count-inverted',\n documentElements,\n );\n updateStyleHelper(theme, 'color-context-background', documentElements);\n updateStyleHelper(theme, 'color-context-background-hover', documentElements);\n updateStyleHelper(\n theme,\n 'color-context-background-selected',\n documentElements,\n );\n updateStyleHelper(theme, 'color-context-border', documentElements);\n updateStyleHelper(theme, 'color-context-text', documentElements);\n updateStyleHelper(theme, 'color-context-text-selected', documentElements);\n updateStyleHelper(theme, 'color-dim', documentElements);\n updateStyleHelper(theme, 'color-dimmer', documentElements);\n updateStyleHelper(theme, 'color-dimmest', documentElements);\n updateStyleHelper(theme, 'color-error-background', documentElements);\n updateStyleHelper(theme, 'color-error-border', documentElements);\n updateStyleHelper(theme, 'color-error-text', documentElements);\n updateStyleHelper(theme, 'color-expand-collapse-toggle', documentElements);\n updateStyleHelper(theme, 'color-link', documentElements);\n updateStyleHelper(theme, 'color-modal-background', documentElements);\n updateStyleHelper(theme, 'color-record-active', documentElements);\n updateStyleHelper(theme, 'color-record-hover', documentElements);\n updateStyleHelper(theme, 'color-record-inactive', documentElements);\n updateStyleHelper(theme, 'color-color-scroll-thumb', documentElements);\n updateStyleHelper(theme, 'color-color-scroll-track', documentElements);\n updateStyleHelper(theme, 'color-search-match', documentElements);\n updateStyleHelper(theme, 'color-shadow', documentElements);\n updateStyleHelper(theme, 'color-search-match-current', documentElements);\n updateStyleHelper(\n theme,\n 'color-selected-tree-highlight-active',\n documentElements,\n );\n updateStyleHelper(\n theme,\n 'color-selected-tree-highlight-inactive',\n documentElements,\n );\n updateStyleHelper(theme, 'color-tab-selected-border', documentElements);\n updateStyleHelper(theme, 'color-text', documentElements);\n updateStyleHelper(theme, 'color-text-invalid', documentElements);\n updateStyleHelper(theme, 'color-text-selected', documentElements);\n updateStyleHelper(theme, 'color-toggle-background-invalid', documentElements);\n updateStyleHelper(theme, 'color-toggle-background-on', documentElements);\n updateStyleHelper(theme, 'color-toggle-background-off', documentElements);\n updateStyleHelper(theme, 'color-toggle-text', documentElements);\n updateStyleHelper(theme, 'color-tooltip-background', documentElements);\n updateStyleHelper(theme, 'color-tooltip-text', documentElements);\n\n // Font smoothing varies based on the theme.\n updateStyleHelper(theme, 'font-smoothing', documentElements);\n\n // Update scrollbar color to match theme.\n // this CSS property is currently only supported in Firefox,\n // but it makes a significant UI improvement in dark mode.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/scrollbar-color\n documentElements.forEach(documentElement => {\n // $FlowFixMe scrollbarColor is missing in CSSStyleDeclaration\n documentElement.style.scrollbarColor = `var(${`--${theme}-color-scroll-thumb`}) var(${`--${theme}-color-scroll-track`})`;\n });\n}\n\nexport {SettingsContext, SettingsContextController};\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {Fragment} from 'react';\nimport styles from './Badge.css';\n\nimport type {ElementType} from 'react-devtools-shared/src/types';\n\ntype Props = {|\n className?: string,\n hocDisplayNames: Array<string> | null,\n type: ElementType,\n children: React$Node,\n|};\n\nexport default function Badge({\n className,\n hocDisplayNames,\n type,\n children,\n}: Props) {\n if (hocDisplayNames === null) {\n return null;\n }\n\n const totalBadgeCount = hocDisplayNames.length;\n\n return (\n <Fragment>\n <div className={`${styles.Badge} ${className || ''}`}>{children}</div>\n {totalBadgeCount > 1 && (\n <div className={styles.ExtraLabel}>+{totalBadgeCount - 1}</div>\n )}\n </Fragment>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport styles from './ButtonIcon.css';\n\nexport type IconType =\n | 'add'\n | 'cancel'\n | 'clear'\n | 'close'\n | 'collapsed'\n | 'copy'\n | 'delete'\n | 'down'\n | 'expanded'\n | 'export'\n | 'filter'\n | 'import'\n | 'log-data'\n | 'more'\n | 'next'\n | 'previous'\n | 'record'\n | 'reload'\n | 'save'\n | 'search'\n | 'settings'\n | 'suspend'\n | 'undo'\n | 'up'\n | 'view-dom'\n | 'view-source';\n\ntype Props = {|\n className?: string,\n type: IconType,\n|};\n\nexport default function ButtonIcon({className = '', type}: Props) {\n let pathData = null;\n switch (type) {\n case 'add':\n pathData = PATH_ADD;\n break;\n case 'cancel':\n pathData = PATH_CANCEL;\n break;\n case 'clear':\n pathData = PATH_CLEAR;\n break;\n case 'close':\n pathData = PATH_CLOSE;\n break;\n case 'collapsed':\n pathData = PATH_COLLAPSED;\n break;\n case 'copy':\n pathData = PATH_COPY;\n break;\n case 'delete':\n pathData = PATH_DELETE;\n break;\n case 'down':\n pathData = PATH_DOWN;\n break;\n case 'expanded':\n pathData = PATH_EXPANDED;\n break;\n case 'export':\n pathData = PATH_EXPORT;\n break;\n case 'filter':\n pathData = PATH_FILTER;\n break;\n case 'import':\n pathData = PATH_IMPORT;\n break;\n case 'log-data':\n pathData = PATH_LOG_DATA;\n break;\n case 'more':\n pathData = PATH_MORE;\n break;\n case 'next':\n pathData = PATH_NEXT;\n break;\n case 'previous':\n pathData = PATH_PREVIOUS;\n break;\n case 'record':\n pathData = PATH_RECORD;\n break;\n case 'reload':\n pathData = PATH_RELOAD;\n break;\n case 'save':\n pathData = PATH_SAVE;\n break;\n case 'search':\n pathData = PATH_SEARCH;\n break;\n case 'settings':\n pathData = PATH_SETTINGS;\n break;\n case 'suspend':\n pathData = PATH_SUSPEND;\n break;\n case 'undo':\n pathData = PATH_UNDO;\n break;\n case 'up':\n pathData = PATH_UP;\n break;\n case 'view-dom':\n pathData = PATH_VIEW_DOM;\n break;\n case 'view-source':\n pathData = PATH_VIEW_SOURCE;\n break;\n default:\n console.warn(`Unsupported type \"${type}\" specified for ButtonIcon`);\n break;\n }\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={`${styles.ButtonIcon} ${className}`}\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\">\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path fill=\"currentColor\" d={pathData} />\n </svg>\n );\n}\n\nconst PATH_ADD =\n 'M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm5 11h-4v4h-2v-4H7v-2h4V7h2v4h4v2z';\n\nconst PATH_CANCEL = `\n M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\n`;\n\nconst PATH_CLEAR = `\n M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zM4 12c0-4.42 3.58-8 8-8 1.85 0 3.55.63 4.9 1.69L5.69\n 16.9C4.63 15.55 4 13.85 4 12zm8 8c-1.85 0-3.55-.63-4.9-1.69L18.31 7.1C19.37 8.45 20 10.15 20 12c0 4.42-3.58 8-8 8z\n`;\n\nconst PATH_CLOSE =\n 'M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z';\n\nconst PATH_COLLAPSED = 'M10 17l5-5-5-5v10z';\n\nconst PATH_COPY = `\n M3 13h2v-2H3v2zm0 4h2v-2H3v2zm2 4v-2H3a2 2 0 0 0 2 2zM3 9h2V7H3v2zm12 12h2v-2h-2v2zm4-18H9a2 2 0 0 0-2\n 2v10a2 2 0 0 0 2 2h10c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 12H9V5h10v10zm-8 6h2v-2h-2v2zm-4 0h2v-2H7v2z\n`;\n\nconst PATH_DELETE = `\n M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12\n 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z\n`;\n\nconst PATH_DOWN = 'M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z';\n\nconst PATH_EXPANDED = 'M7 10l5 5 5-5z';\n\nconst PATH_EXPORT = 'M15.82,2.14v7H21l-9,9L3,9.18H8.18v-7ZM3,20.13H21v1.73H3Z';\n\nconst PATH_FILTER = 'M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z';\n\nconst PATH_IMPORT = 'M8.18,18.13v-7H3l9-8.95,9,9H15.82v7ZM3,20.13H21v1.73H3Z';\n\nconst PATH_LOG_DATA = `\n M20 8h-2.81c-.45-.78-1.07-1.45-1.82-1.96L17 4.41 15.59 3l-2.17 2.17C12.96 5.06 12.49 5 12 5c-.49 0-.96.06-1.41.17L8.41\n 3 7 4.41l1.62 1.63C7.88 6.55 7.26 7.22 6.81 8H4v2h2.09c-.05.33-.09.66-.09 1v1H4v2h2v1c0 .34.04.67.09 1H4v2h2.81c1.04\n 1.79 2.97 3 5.19 3s4.15-1.21 5.19-3H20v-2h-2.09c.05-.33.09-.66.09-1v-1h2v-2h-2v-1c0-.34-.04-.67-.09-1H20V8zm-6\n 8h-4v-2h4v2zm0-4h-4v-2h4v2z\n`;\n\nconst PATH_MORE = `\n M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 \n 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\n`;\n\nconst PATH_NEXT = 'M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z';\n\nconst PATH_PREVIOUS =\n 'M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z';\n\nconst PATH_RECORD = 'M4,12a8,8 0 1,0 16,0a8,8 0 1,0 -16,0';\n\nconst PATH_RELOAD = `\n M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0\n 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0\n 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z\n`;\n\nconst PATH_SAVE = `\n M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm-5 16c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3zm3-10H5V5h10v4z\n`;\n\nconst PATH_SEARCH = `\n M8.5,22H3.7l-1.4-1.5V3.8l1.3-1.5h17.2l1,1.5v4.9h-1.3V4.3l-0.4-0.6H4.2L3.6,4.3V20l0.7,0.7h4.2V22z\n M23,13.9l-4.6,3.6l4.6,4.6l-1.1,1.1l-4.7-4.4l-3.3,4.4l-3.2-12.3L23,13.9z\n`;\n\nconst PATH_SETTINGS = `\n M19.43 12.98c.04-.32.07-.64.07-.98s-.03-.66-.07-.98l2.11-1.65c.19-.15.24-.42.12-.64l-2-3.46c-.12-.22-.39-.3-.61-.22l-2.49\n 1c-.52-.4-1.08-.73-1.69-.98l-.38-2.65C14.46 2.18 14.25 2 14 2h-4c-.25 0-.46.18-.49.42l-.38\n 2.65c-.61.25-1.17.59-1.69.98l-2.49-1c-.23-.09-.49 0-.61.22l-2 3.46c-.13.22-.07.49.12.64l2.11\n 1.65c-.04.32-.07.65-.07.98s.03.66.07.98l-2.11 1.65c-.19.15-.24.42-.12.64l2 3.46c.12.22.39.3.61.22l2.49-1c.52.4\n 1.08.73 1.69.98l.38 2.65c.03.24.24.42.49.42h4c.25 0 .46-.18.49-.42l.38-2.65c.61-.25 1.17-.59 1.69-.98l2.49\n 1c.23.09.49 0 .61-.22l2-3.46c.12-.22.07-.49-.12-.64l-2.11-1.65zM12 15.5c-1.93 0-3.5-1.57-3.5-3.5s1.57-3.5\n 3.5-3.5 3.5 1.57 3.5 3.5-1.57 3.5-3.5 3.5z\n`;\n\nconst PATH_SUSPEND = `\n M15 1H9v2h6V1zm-4 13h2V8h-2v6zm8.03-6.61l1.42-1.42c-.43-.51-.9-.99-1.41-1.41l-1.42 1.42C16.07 4.74 14.12 4 12 4c-4.97\n 0-9 4.03-9 9s4.02 9 9 9 9-4.03 9-9c0-2.12-.74-4.07-1.97-5.61zM12 20c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z\n`;\n\nconst PATH_UNDO = `\n M12.5 8c-2.65 0-5.05.99-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88\n 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z\n`;\n\nconst PATH_UP = 'M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z';\n\nconst PATH_VIEW_DOM = `\n M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12\n 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3\n 3-1.34 3-3-1.34-3-3-3z\n`;\n\nconst PATH_VIEW_SOURCE = `\n M9.4 16.6L4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0l4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z\n `;\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {Fragment, useContext, useMemo, useState} from 'react';\nimport Store from 'react-devtools-shared/src/devtools/store';\nimport Badge from './Badge';\nimport ButtonIcon from '../ButtonIcon';\nimport {createRegExp} from '../utils';\nimport {TreeDispatcherContext, TreeStateContext} from './TreeContext';\nimport {StoreContext} from '../context';\n\nimport type {ItemData} from './Tree';\nimport type {Element} from './types';\n\nimport styles from './Element.css';\n\ntype Props = {\n data: ItemData,\n index: number,\n style: Object,\n ...\n};\n\nexport default function ElementView({data, index, style}: Props) {\n const store = useContext(StoreContext);\n const {ownerFlatTree, ownerID, selectedElementID} = useContext(\n TreeStateContext,\n );\n const dispatch = useContext(TreeDispatcherContext);\n\n const element =\n ownerFlatTree !== null\n ? ownerFlatTree[index]\n : store.getElementAtIndex(index);\n\n const [isHovered, setIsHovered] = useState(false);\n\n const {isNavigatingWithKeyboard, onElementMouseEnter, treeFocused} = data;\n const id = element === null ? null : element.id;\n const isSelected = selectedElementID === id;\n\n const handleDoubleClick = () => {\n if (id !== null) {\n dispatch({type: 'SELECT_OWNER', payload: id});\n }\n };\n\n const handleMouseDown = ({metaKey}) => {\n if (id !== null) {\n dispatch({\n type: 'SELECT_ELEMENT_BY_ID',\n payload: metaKey ? null : id,\n });\n }\n };\n\n const handleMouseEnter = () => {\n setIsHovered(true);\n if (id !== null) {\n onElementMouseEnter(id);\n }\n };\n\n const handleMouseLeave = () => {\n setIsHovered(false);\n };\n\n const handleKeyDoubleClick = event => {\n // Double clicks on key value are used for text selection (if the text has been truncated).\n // They should not enter the owners tree view.\n event.stopPropagation();\n event.preventDefault();\n };\n\n // Handle elements that are removed from the tree while an async render is in progress.\n if (element == null) {\n console.warn(`<ElementView> Could not find element at index ${index}`);\n\n // This return needs to happen after hooks, since hooks can't be conditional.\n return null;\n }\n\n const {\n depth,\n displayName,\n hocDisplayNames,\n key,\n type,\n } = ((element: any): Element);\n\n let className = styles.Element;\n if (isSelected) {\n className = treeFocused\n ? styles.SelectedElement\n : styles.InactiveSelectedElement;\n } else if (isHovered && !isNavigatingWithKeyboard) {\n className = styles.HoveredElement;\n }\n\n return (\n <div\n className={className}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onMouseDown={handleMouseDown}\n onDoubleClick={handleDoubleClick}\n style={style}\n data-depth={depth}>\n {/* This wrapper is used by Tree for measurement purposes. */}\n <div\n className={styles.Wrapper}\n style={{\n // Left offset presents the appearance of a nested tree structure.\n // We must use padding rather than margin/left because of the selected background color.\n transform: `translateX(calc(${depth} * var(--indentation-size)))`,\n }}>\n {ownerID === null ? (\n <ExpandCollapseToggle element={element} store={store} />\n ) : null}\n <DisplayName displayName={displayName} id={((id: any): number)} />\n {key && (\n <Fragment>\n <span className={styles.KeyName}>key</span>=\"\n <span\n className={styles.KeyValue}\n title={key}\n onDoubleClick={handleKeyDoubleClick}>\n {key}\n </span>\n \"\n </Fragment>\n )}\n {hocDisplayNames !== null && hocDisplayNames.length > 0 ? (\n <Badge\n className={styles.Badge}\n hocDisplayNames={hocDisplayNames}\n type={type}>\n <DisplayName\n displayName={hocDisplayNames[0]}\n id={((id: any): number)}\n />\n </Badge>\n ) : null}\n </div>\n </div>\n );\n}\n\n// Prevent double clicks on toggle from drilling into the owner list.\nconst swallowDoubleClick = event => {\n event.preventDefault();\n event.stopPropagation();\n};\n\ntype ExpandCollapseToggleProps = {|\n element: Element,\n store: Store,\n|};\n\nfunction ExpandCollapseToggle({element, store}: ExpandCollapseToggleProps) {\n const {children, id, isCollapsed} = element;\n\n const toggleCollapsed = event => {\n event.preventDefault();\n event.stopPropagation();\n\n store.toggleIsCollapsed(id, !isCollapsed);\n };\n\n const stopPropagation = event => {\n // Prevent the row from selecting\n event.stopPropagation();\n };\n\n if (children.length === 0) {\n return <div className={styles.ExpandCollapseToggle} />;\n }\n\n return (\n <div\n className={styles.ExpandCollapseToggle}\n onMouseDown={stopPropagation}\n onClick={toggleCollapsed}\n onDoubleClick={swallowDoubleClick}>\n <ButtonIcon type={isCollapsed ? 'collapsed' : 'expanded'} />\n </div>\n );\n}\n\ntype DisplayNameProps = {|\n displayName: string | null,\n id: number,\n|};\n\nfunction DisplayName({displayName, id}: DisplayNameProps) {\n const {searchIndex, searchResults, searchText} = useContext(TreeStateContext);\n const isSearchResult = useMemo(() => {\n return searchResults.includes(id);\n }, [id, searchResults]);\n const isCurrentResult =\n searchIndex !== null && id === searchResults[searchIndex];\n\n if (!isSearchResult || displayName === null) {\n return displayName;\n }\n\n const match = createRegExp(searchText).exec(displayName);\n\n if (match === null) {\n return displayName;\n }\n\n const startIndex = match.index;\n const stopIndex = startIndex + match[0].length;\n\n const children = [];\n if (startIndex > 0) {\n children.push(<span key=\"begin\">{displayName.slice(0, startIndex)}</span>);\n }\n children.push(\n <mark\n key=\"middle\"\n className={isCurrentResult ? styles.CurrentHighlight : styles.Highlight}>\n {displayName.slice(startIndex, stopIndex)}\n </mark>,\n );\n if (stopIndex < displayName.length) {\n children.push(<span key=\"end\">{displayName.slice(stopIndex)}</span>);\n }\n\n return children;\n}\n","import { useState, useEffect } from \"react\";\n\n// Could use UUID but if we hit 9,007,199,254,740,991 unique components over\n// the lifetime of the app before it gets reloaded, I mean ... come on.\n// I don't even know what xillion that is.\n// /me googles\n// Oh duh, quadrillion. Nine quadrillion components. I think we're okay.\nvar id = 0;\nvar genId = function genId() {\n return ++id;\n};\n\nexport var useId = function useId() {\n var _useState = useState(null),\n id = _useState[0],\n setId = _useState[1];\n\n useEffect(function () {\n return setId(genId());\n }, []);\n return id;\n};","var checkedPkgs = {};\n\nvar checkStyles = function checkStyles() {};\n\nif (process.env.NODE_ENV !== \"production\") {\n checkStyles = function checkStyles(pkg) {\n // only check once per package\n if (checkedPkgs[pkg]) return;\n checkedPkgs[pkg] = true;\n\n if (parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--reach-\" + pkg), 10) !== 1) {\n console.warn(\"@reach/\" + pkg + \" styles not found. If you are using a bundler like webpack or parcel include this in the entry file of your app before any of your own styles:\\n\\n import \\\"@reach/\" + pkg + \"/styles.css\\\";\\n\\n Otherwise you'll need to include them some other way:\\n\\n <link rel=\\\"stylesheet\\\" type=\\\"text/css\\\" href=\\\"node_modules/@reach/\" + pkg + \"/styles.css\\\" />\\n\\n For more information visit https://ui.reach.tech/styling.\\n \");\n }\n };\n}\n\nexport { checkStyles };\n\nexport var wrapEvent = function wrapEvent(theirHandler, ourHandler) {\n return function (event) {\n theirHandler && theirHandler(event);\n if (!event.defaultPrevented) {\n return ourHandler(event);\n }\n };\n};\n\nexport var assignRef = function assignRef(ref, value) {\n if (ref == null) return;\n if (typeof ref === \"function\") {\n ref(value);\n } else {\n try {\n ref.current = value;\n } catch (error) {\n throw new Error(\"Cannot assign value \\\"\" + value + \"\\\" to ref \\\"\" + ref + \"\\\"\");\n }\n }\n};","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nimport React from \"react\";\nimport { object, func, oneOfType, node } from \"prop-types\";\n\nvar cleanProps = function cleanProps(props) {\n var initialState = props.initialState,\n getInitialState = props.getInitialState,\n refs = props.refs,\n getRefs = props.getRefs,\n didMount = props.didMount,\n didUpdate = props.didUpdate,\n willUnmount = props.willUnmount,\n getSnapshotBeforeUpdate = props.getSnapshotBeforeUpdate,\n shouldUpdate = props.shouldUpdate,\n render = props.render,\n rest = _objectWithoutProperties(props, [\"initialState\", \"getInitialState\", \"refs\", \"getRefs\", \"didMount\", \"didUpdate\", \"willUnmount\", \"getSnapshotBeforeUpdate\", \"shouldUpdate\", \"render\"]);\n\n return rest;\n};\n\nvar Component = function (_React$Component) {\n _inherits(Component, _React$Component);\n\n function Component() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Component);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _initialiseProps.call(_this), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Component.prototype.getArgs = function getArgs() {\n var state = this.state,\n props = this.props,\n setState = this._setState,\n forceUpdate = this._forceUpdate,\n refs = this._refs;\n\n return {\n state: state,\n props: cleanProps(props),\n refs: refs,\n setState: setState,\n forceUpdate: forceUpdate\n };\n };\n\n Component.prototype.componentDidMount = function componentDidMount() {\n if (this.props.didMount) this.props.didMount(this.getArgs());\n };\n\n Component.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps, nextState) {\n if (this.props.shouldUpdate) return this.props.shouldUpdate({\n props: this.props,\n state: this.state,\n nextProps: cleanProps(nextProps),\n nextState: nextState\n });else return true;\n };\n\n Component.prototype.componentWillUnmount = function componentWillUnmount() {\n if (this.props.willUnmount) this.props.willUnmount({\n state: this.state,\n props: cleanProps(this.props),\n refs: this._refs\n });\n };\n\n Component.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState, snapshot) {\n if (this.props.didUpdate) this.props.didUpdate(Object.assign(this.getArgs(), {\n prevProps: cleanProps(prevProps),\n prevState: prevState\n }), snapshot);\n };\n\n Component.prototype.getSnapshotBeforeUpdate = function getSnapshotBeforeUpdate(prevProps, prevState) {\n if (this.props.getSnapshotBeforeUpdate) {\n return this.props.getSnapshotBeforeUpdate(Object.assign(this.getArgs(), {\n prevProps: cleanProps(prevProps),\n prevState: prevState\n }));\n } else {\n return null;\n }\n };\n\n Component.prototype.render = function render() {\n var _props = this.props,\n children = _props.children,\n render = _props.render;\n\n return render ? render(this.getArgs()) : typeof children === \"function\" ? children(this.getArgs()) : children || null;\n };\n\n return Component;\n}(React.Component);\n\nComponent.defaultProps = {\n getInitialState: function getInitialState() {},\n getRefs: function getRefs() {\n return {};\n }\n};\n\nvar _initialiseProps = function _initialiseProps() {\n var _this2 = this;\n\n this.state = this.props.initialState || this.props.getInitialState(this.props);\n this._refs = this.props.refs || this.props.getRefs(this.getArgs());\n\n this._setState = function () {\n return _this2.setState.apply(_this2, arguments);\n };\n\n this._forceUpdate = function () {\n return _this2.forceUpdate.apply(_this2, arguments);\n };\n};\n\nprocess.env.NODE_ENV !== \"production\" ? Component.propTypes = {\n initialState: object,\n getInitialState: func,\n refs: object,\n getRefs: func,\n didMount: func,\n didUpdate: func,\n willUnmount: func,\n getSnapshotBeforeUpdate: func,\n shouldUpdate: func,\n render: func,\n children: oneOfType([func, node])\n} : void 0;\n\n\nexport default Component;","import React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport Component from \"@reach/component-component\";\n\nvar Portal = function Portal(_ref) {\n var children = _ref.children,\n _ref$type = _ref.type,\n type = _ref$type === undefined ? \"reach-portal\" : _ref$type;\n return React.createElement(Component, {\n getRefs: function getRefs() {\n return { mountNode: null, portalNode: null };\n },\n didMount: function didMount(_ref2) {\n var refs = _ref2.refs,\n forceUpdate = _ref2.forceUpdate;\n\n // It's possible that the content we are portal has, itself, been portaled.\n // In that case, it's important to append to the correct document element.\n var ownerDocument = refs.mountNode.ownerDocument;\n refs.portalNode = ownerDocument.createElement(type);\n ownerDocument.body.appendChild(refs.portalNode);\n forceUpdate();\n },\n willUnmount: function willUnmount(_ref3) {\n var portalNode = _ref3.refs.portalNode;\n\n portalNode.ownerDocument.body.removeChild(portalNode);\n },\n render: function render(_ref4) {\n var refs = _ref4.refs;\n var portalNode = refs.portalNode;\n\n if (!portalNode) {\n return React.createElement(\"div\", { ref: function ref(div) {\n return refs.mountNode = div;\n } });\n } else {\n return createPortal(children, portalNode);\n }\n }\n });\n};\n\nexport default Portal;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport React from \"react\";\n\nvar style = {\n border: 0,\n clip: \"rect(0 0 0 0)\",\n height: \"1px\",\n width: \"1px\",\n margin: \"-1px\",\n padding: 0,\n overflow: \"hidden\",\n position: \"absolute\"\n};\n\nexport default (function (props) {\n return React.createElement(\"div\", _extends({ style: style }, props));\n});","let props = [\"width\", \"height\", \"top\", \"right\", \"bottom\", \"left\"];\n\nlet rectChanged = (a = {}, b = {}) => props.some(prop => a[prop] !== b[prop]);\n\nexport default (node, cb) => {\n let rect;\n let rafId;\n\n let observe = () => {\n let newRect = node.getBoundingClientRect();\n if (rectChanged(newRect, rect)) {\n rect = newRect;\n cb(rect);\n }\n rafId = requestAnimationFrame(observe);\n };\n\n let unobserve = () => {\n cancelAnimationFrame(rafId);\n };\n\n return { observe, unobserve };\n};\n","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport React, { useRef, useState, useLayoutEffect } from \"react\";\nimport Component from \"@reach/component-component\";\nimport observeRect from \"@reach/observe-rect\";\nimport { func, bool } from \"prop-types\";\n\nvar render = function render(_ref) {\n var refs = _ref.refs,\n children = _ref.props.children,\n rect = _ref.state.rect;\n return children({ ref: function ref(node) {\n return refs.node = node;\n }, rect: rect });\n};\n\nvar didMount = function didMount(_ref2) {\n var setState = _ref2.setState,\n refs = _ref2.refs,\n props = _ref2.props;\n\n if (!refs.node) {\n console.warn(\"You need to place the ref\");\n return;\n }\n refs.observer = observeRect(refs.node, function (rect) {\n props.onChange && props.onChange(rect);\n setState({ rect: rect });\n });\n if (props.observe) {\n refs.observer.observe();\n }\n};\n\nvar didUpdate = function didUpdate(_ref3) {\n var refs = _ref3.refs,\n props = _ref3.props,\n prevProps = _ref3.prevProps;\n\n if (props.observe && !prevProps.observe) {\n refs.observer.observe();\n } else if (!props.observe && prevProps.observe) {\n refs.observer.unobserve();\n }\n};\n\nvar willUnmount = function willUnmount(_ref4) {\n var refs = _ref4.refs;\n\n refs.observer.unobserve();\n};\n\nvar Rect = function Rect(props) {\n return React.createElement(Component, _extends({}, props, {\n refs: {\n node: undefined,\n observer: undefined\n },\n initialState: {\n rect: undefined\n },\n didMount: didMount,\n didUpdate: didUpdate,\n willUnmount: willUnmount,\n render: render\n }));\n};\n\nprocess.env.NODE_ENV !== \"production\" ? Rect.propTypes = {\n children: func,\n observe: bool,\n onChange: func\n} : void 0;\n\nRect.defaultProps = {\n observe: true\n};\n\nexport function useRect(nodeRef) {\n var observe = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n var _useState = useState(null),\n rect = _useState[0],\n setRect = _useState[1];\n\n var observerRef = useRef(null);\n useLayoutEffect(function () {\n if (!observerRef.current) {\n observerRef.current = observeRect(nodeRef.current, setRect);\n }\n if (observe) {\n observerRef.current.observe();\n }\n return function () {\n return observerRef.current.unobserve();\n };\n }, [observe]);\n return rect;\n}\n\nexport default Rect;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _states;\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\n////////////////////////////////////////////////////////////////////////////////\n// Welcome to @reach/tooltip!\n//\n// Quick definitions:\n//\n// - \"on rest\" or \"rested on\": describes when the element receives mouse hover\n// after a short delay (and hopefully soon, touch longpress).\n//\n// - \"activation\": describes a mouse click, keyboard enter, or keyboard space.\n//\n// Only one tooltip can be visible at a time, so we use a global state chart to\n// describe the various states and transitions between states that are\n// possible. With the all the timeouts involved with tooltips it's important to\n// \"make impossible states impossible\" with a state machine.\n//\n// It's also okay to use these module globals because you don't server render\n// tooltips. None of the state is changed outside of user events.\n//\n// There are a few features that are important to understand.\n//\n// 1. Tooltips don't show up until the user has rested on one, we don't\n// want tooltips popupping up as you move your mouse around the page.\n//\n// 2. Once any tooltip becomes visible, other tooltips nearby should skip\n// resting and display immediately.\n//\n// 3. Tooltips stick around for a little bit after blur/mouseleave.\n//\n// TODO: Research longpress tooltips on Android, iOS\n// - Probably want to position it by default above, since your thumb\n// is below and would cover it\n// - I'm thinking after longpress, display the tooltip and cancel any click\n// events. Then on touchend, so they can read it display the tooltip for\n// a little while longer in case their hand was obstructing the tooltip.\n\n/* eslint-disable default-case */\n\nimport React, { Fragment, cloneElement, Children, useState, useRef, forwardRef, useEffect } from \"react\";\nimport { useId } from \"@reach/auto-id\";\nimport { wrapEvent, checkStyles } from \"@reach/utils\";\nimport Portal from \"@reach/portal\";\nimport VisuallyHidden from \"@reach/visually-hidden\";\nimport { useRect } from \"@reach/rect\";\nimport { node, string, func } from \"prop-types\";\n\n////////////////////////////////////////////////////////////////////////////////\n// ~The states~\n\n// nothing goin' on\nvar IDLE = \"idle\";\n\n// we're considering showing the tooltip, but we're gonna wait a sec\nvar FOCUSED = \"focused\";\n\n// IT'S ON\nvar VISIBLE = \"visible\";\n\n// Focus has left, but we want to keep it visible for a sec\nvar LEAVING_VISIBLE = \"leavingVisible\";\n\n// The user clicked the tool, so we want to hide the thing, we can't just use\n// IDLE because we need to ignore mousemove, etc.\nvar DISMISSED = \"dismissed\";\n\nvar chart = {\n initial: IDLE,\n states: (_states = {}, _states[IDLE] = {\n enter: clearContextId,\n on: {\n mouseenter: FOCUSED,\n focus: VISIBLE\n }\n }, _states[FOCUSED] = {\n enter: startRestTimer,\n leave: clearRestTimer,\n on: {\n mousemove: FOCUSED,\n mouseleave: IDLE,\n mousedown: DISMISSED,\n blur: IDLE,\n rest: VISIBLE\n }\n }, _states[VISIBLE] = {\n on: {\n focus: FOCUSED,\n mouseenter: FOCUSED,\n mouseleave: LEAVING_VISIBLE,\n blur: LEAVING_VISIBLE,\n mousedown: DISMISSED,\n selectWithKeyboard: DISMISSED,\n globalMouseMove: LEAVING_VISIBLE\n }\n }, _states[LEAVING_VISIBLE] = {\n enter: startLeavingVisibleTimer,\n leave: function leave() {\n clearLeavingVisibleTimer();\n clearContextId();\n },\n on: {\n mouseenter: VISIBLE,\n focus: VISIBLE,\n timecomplete: IDLE\n }\n }, _states[DISMISSED] = {\n leave: function leave() {\n // allows us to come on back later w/o entering something else first\n context.id = null;\n },\n on: {\n mouseleave: IDLE,\n blur: IDLE\n }\n }, _states)\n};\n\n// chart context allows us to persist some data around, in Tooltip all we use\n// is the id of the current tooltip being interacted with.\nvar context = { id: null };\nvar state = chart.initial;\n\n////////////////////////////////////////////////////////////////////////////////\n// Finds the next state from the current state + action. If the chart doesn't\n// describe that transition, it will throw.\n//\n// It also manages lifecycles of the machine, (enter/leave hooks on the state\n// chart)\nfunction transition(action, newContext) {\n var stateDef = chart.states[state];\n var nextState = stateDef.on[action];\n\n // Really useful for debugging\n // console.log({ action, state, nextState, contextId: context.id });\n\n if (!nextState) {\n throw new Error(\"Unknown state for action \\\"\" + action + \"\\\" from state \\\"\" + state + \"\\\"\");\n }\n\n if (stateDef.leave) {\n stateDef.leave();\n }\n\n if (newContext) {\n context = newContext;\n }\n\n var nextDef = chart.states[nextState];\n if (nextDef.enter) {\n nextDef.enter();\n }\n\n state = nextState;\n notify();\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Subscriptions:\n//\n// We could require apps to render a <TooltipProvider> around the app and use\n// React context to notify Tooltips of changes to our state machine, instead\n// we manage subscriptions ourselves and simplify the Tooltip API.\n//\n// Maybe if default context could take a hook (instead of just a static value)\n// that was rendered at the root for us, that'd be cool! But it doesn't.\nvar subscriptions = [];\n\nfunction subscribe(fn) {\n subscriptions.push(fn);\n return function () {\n subscriptions.splice(subscriptions.indexOf(fn), 1);\n };\n}\n\nfunction notify() {\n subscriptions.forEach(function (fn) {\n return fn(state, context);\n });\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Timeouts:\n\n// Manages when the user \"rests\" on an element. Keeps the interface from being\n// flashing tooltips all the time as the user moves the mouse around the screen.\nvar restTimeout = void 0;\n\nfunction startRestTimer() {\n clearTimeout(restTimeout);\n restTimeout = setTimeout(function () {\n return transition(\"rest\");\n }, 100);\n}\n\nfunction clearRestTimer() {\n clearTimeout(restTimeout);\n}\n\n// Manages the delay to hide the tooltip after rest leaves.\nvar leavingVisibleTimer = void 0;\n\nfunction startLeavingVisibleTimer() {\n clearTimeout(leavingVisibleTimer);\n leavingVisibleTimer = setTimeout(function () {\n return transition(\"timecomplete\");\n }, 500);\n}\n\nfunction clearLeavingVisibleTimer() {\n clearTimeout(leavingVisibleTimer);\n}\n\n// allows us to come on back later w/o entering something else first after the\n// user leaves or dismisses\nfunction clearContextId() {\n context.id = null;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// THE HOOK! It's about time we got to the goods!\nexport function useTooltip() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n onMouseEnter = _ref.onMouseEnter,\n onMouseMove = _ref.onMouseMove,\n onMouseLeave = _ref.onMouseLeave,\n onFocus = _ref.onFocus,\n onBlur = _ref.onBlur,\n onKeyDown = _ref.onKeyDown,\n onMouseDown = _ref.onMouseDown,\n ref = _ref.ref,\n DEBUG_STYLE = _ref.DEBUG_STYLE;\n\n var id = \"tooltip:\" + useId();\n\n var _useState = useState(DEBUG_STYLE ? true : context.id === id && state === VISIBLE),\n isVisible = _useState[0],\n setIsVisible = _useState[1];\n\n // hopefully they always pass a ref if they ever pass one\n\n\n var triggerRef = ref || useRef();\n var triggerRect = useRect(triggerRef, isVisible);\n\n useEffect(function () {\n return subscribe(function () {\n if (context.id === id && (state === VISIBLE || state === LEAVING_VISIBLE)) {\n setIsVisible(true);\n } else {\n setIsVisible(false);\n }\n });\n }, [id]);\n\n useEffect(function () {\n return checkStyles(\"tooltip\");\n });\n\n var handleMouseEnter = function handleMouseEnter() {\n switch (state) {\n case IDLE:\n case VISIBLE:\n case LEAVING_VISIBLE:\n {\n transition(\"mouseenter\", { id: id });\n }\n }\n };\n\n var handleMouseMove = function handleMouseMove() {\n switch (state) {\n case FOCUSED:\n {\n transition(\"mousemove\", { id: id });\n }\n }\n };\n\n var handleFocus = function handleFocus(event) {\n if (window.__REACH_DISABLE_TOOLTIPS) return;\n switch (state) {\n case IDLE:\n case VISIBLE:\n case LEAVING_VISIBLE:\n {\n transition(\"focus\", { id: id });\n }\n }\n };\n\n var handleMouseLeave = function handleMouseLeave() {\n switch (state) {\n case FOCUSED:\n case VISIBLE:\n case DISMISSED:\n {\n transition(\"mouseleave\");\n }\n }\n };\n\n var handleBlur = function handleBlur() {\n // Allow quick click from one tool to another\n if (context.id !== id) return;\n switch (state) {\n case FOCUSED:\n case VISIBLE:\n case DISMISSED:\n {\n transition(\"blur\");\n }\n }\n };\n\n var handleMouseDown = function handleMouseDown() {\n // Allow quick click from one tool to another\n if (context.id !== id) return;\n switch (state) {\n case FOCUSED:\n case VISIBLE:\n {\n transition(\"mousedown\");\n }\n }\n };\n\n var handleKeyDown = function handleKeyDown(event) {\n if (event.key === \"Enter\" || event.key === \" \") {\n switch (state) {\n case VISIBLE:\n {\n transition(\"selectWithKeyboard\");\n }\n }\n }\n };\n\n var trigger = {\n \"aria-describedby\": id,\n \"data-reach-tooltip-trigger\": \"\",\n ref: triggerRef,\n onMouseEnter: wrapEvent(onMouseEnter, handleMouseEnter),\n onMouseMove: wrapEvent(onMouseMove, handleMouseMove),\n onFocus: wrapEvent(onFocus, handleFocus),\n onBlur: wrapEvent(onFocus, handleBlur),\n onMouseLeave: wrapEvent(onMouseLeave, handleMouseLeave),\n onKeyDown: wrapEvent(onKeyDown, handleKeyDown),\n onMouseDown: wrapEvent(onMouseDown, handleMouseDown)\n };\n\n var tooltip = {\n id: id,\n triggerRect: triggerRect,\n isVisible: isVisible\n };\n\n return [trigger, tooltip, isVisible];\n}\n\n////////////////////////////////////////////////////////////////////////////////\nexport default function Tooltip(_ref2) {\n var children = _ref2.children,\n label = _ref2.label,\n ariaLabel = _ref2.ariaLabel,\n DEBUG_STYLE = _ref2.DEBUG_STYLE,\n rest = _objectWithoutProperties(_ref2, [\"children\", \"label\", \"ariaLabel\", \"DEBUG_STYLE\"]);\n\n var _useTooltip = useTooltip({ DEBUG_STYLE: DEBUG_STYLE }),\n trigger = _useTooltip[0],\n tooltip = _useTooltip[1];\n\n return React.createElement(\n Fragment,\n null,\n cloneElement(Children.only(children), trigger),\n React.createElement(TooltipPopup, _extends({\n label: label,\n ariaLabel: ariaLabel\n }, tooltip, rest))\n );\n}\n\nprocess.env.NODE_ENV !== \"production\" ? Tooltip.propTypes = {\n children: node.isRequired,\n label: node.isRequired,\n ariaLabel: string\n} : void 0;\n\n////////////////////////////////////////////////////////////////////////////////\nvar TooltipPopup = forwardRef(function TooltipPopup(_ref3, forwardRef) {\n var label = _ref3.label,\n ariaLabel = _ref3.ariaLabel,\n position = _ref3.position,\n isVisible = _ref3.isVisible,\n id = _ref3.id,\n triggerRect = _ref3.triggerRect,\n rest = _objectWithoutProperties(_ref3, [\"label\", \"ariaLabel\", \"position\", \"isVisible\", \"id\", \"triggerRect\"]);\n\n return isVisible ? React.createElement(\n Portal,\n null,\n React.createElement(TooltipContent, _extends({\n label: label,\n ariaLabel: ariaLabel,\n position: position,\n isVisible: isVisible,\n id: id,\n triggerRect: triggerRect,\n ref: forwardRef\n }, rest))\n ) : null;\n});\n\nexport { TooltipPopup };\nprocess.env.NODE_ENV !== \"production\" ? TooltipPopup.propTypes = {\n label: node.isRequired,\n ariaLabel: string,\n position: func\n} : void 0;\n\n// Need a separate component so that useRect works inside the portal\nvar TooltipContent = forwardRef(function TooltipContent(_ref4, forwardRef) {\n var label = _ref4.label,\n ariaLabel = _ref4.ariaLabel,\n _ref4$position = _ref4.position,\n position = _ref4$position === undefined ? positionDefault : _ref4$position,\n isVisible = _ref4.isVisible,\n id = _ref4.id,\n triggerRect = _ref4.triggerRect,\n style = _ref4.style,\n rest = _objectWithoutProperties(_ref4, [\"label\", \"ariaLabel\", \"position\", \"isVisible\", \"id\", \"triggerRect\", \"style\"]);\n\n var useAriaLabel = ariaLabel != null;\n var tooltipRef = useRef();\n var tooltipRect = useRect(tooltipRef, isVisible);\n return React.createElement(\n Fragment,\n null,\n React.createElement(\"div\", _extends({\n \"data-reach-tooltip\": true,\n role: useAriaLabel ? undefined : \"tooltip\",\n id: useAriaLabel ? undefined : id,\n children: label,\n style: _extends({}, style, getStyles(position, triggerRect, tooltipRect)),\n ref: function ref(node) {\n tooltipRef.current = node;\n if (forwardRef) forwardRef(node);\n }\n }, rest)),\n useAriaLabel && React.createElement(\n VisuallyHidden,\n { role: \"tooltip\", id: id },\n ariaLabel\n )\n );\n});\n\n// feels awkward when it's perfectly aligned w/ the trigger\nvar OFFSET = 8;\n\nvar getStyles = function getStyles(position, triggerRect, tooltipRect) {\n var haventMeasuredTooltipYet = !tooltipRect;\n if (haventMeasuredTooltipYet) {\n return { visibility: \"hidden\" };\n }\n return position(triggerRect, tooltipRect);\n};\n\nvar positionDefault = function positionDefault(triggerRect, tooltipRect) {\n var styles = {\n left: triggerRect.left + window.pageXOffset + \"px\",\n top: triggerRect.top + triggerRect.height + window.pageYOffset + \"px\"\n };\n\n var collisions = {\n top: triggerRect.top - tooltipRect.height < 0,\n right: window.innerWidth < triggerRect.left + tooltipRect.width,\n bottom: window.innerHeight < triggerRect.bottom + tooltipRect.height + OFFSET,\n left: triggerRect.left - tooltipRect.width < 0\n };\n\n var directionRight = collisions.right && !collisions.left;\n var directionUp = collisions.bottom && !collisions.top;\n\n return _extends({}, styles, {\n left: directionRight ? triggerRect.right - tooltipRect.width + window.pageXOffset + \"px\" : triggerRect.left + window.pageXOffset + \"px\",\n top: directionUp ? triggerRect.top - OFFSET - tooltipRect.height + window.pageYOffset + \"px\" : triggerRect.top + OFFSET + triggerRect.height + window.pageYOffset + \"px\"\n });\n};","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useCallback} from 'react';\nimport Tooltip from '@reach/tooltip';\n\nimport styles from './Toggle.css';\nimport tooltipStyles from './Tooltip.css';\n\ntype Props = {\n children: React$Node,\n className?: string,\n isChecked: boolean,\n isDisabled?: boolean,\n onChange: (isChecked: boolean) => void,\n title?: string,\n ...\n};\n\nexport default function Toggle({\n children,\n className = '',\n isDisabled = false,\n isChecked,\n onChange,\n title,\n}: Props) {\n let defaultClassName;\n if (isDisabled) {\n defaultClassName = styles.ToggleDisabled;\n } else if (isChecked) {\n defaultClassName = styles.ToggleOn;\n } else {\n defaultClassName = styles.ToggleOff;\n }\n\n const handleClick = useCallback(() => onChange(!isChecked), [\n isChecked,\n onChange,\n ]);\n\n let toggle = (\n <button\n className={`${defaultClassName} ${className}`}\n disabled={isDisabled}\n onClick={handleClick}>\n <span className={styles.ToggleContent} tabIndex={-1}>\n {children}\n </span>\n </button>\n );\n\n if (title) {\n toggle = (\n <Tooltip className={tooltipStyles.Tooltip} label={title}>\n {toggle}\n </Tooltip>\n );\n }\n\n return toggle;\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useCallback, useContext, useEffect, useState} from 'react';\nimport {BridgeContext} from '../context';\nimport Toggle from '../Toggle';\nimport ButtonIcon from '../ButtonIcon';\n\nexport default function InspectHostNodesToggle() {\n const [isInspecting, setIsInspecting] = useState(false);\n const bridge = useContext(BridgeContext);\n\n const handleChange = useCallback(\n (isChecked: boolean) => {\n setIsInspecting(isChecked);\n\n if (isChecked) {\n bridge.send('startInspectingNative');\n } else {\n bridge.send('stopInspectingNative', false);\n }\n },\n [bridge],\n );\n\n useEffect(() => {\n const onStopInspectingNative = () => setIsInspecting(false);\n bridge.addListener('stopInspectingNative', onStopInspectingNative);\n return () =>\n bridge.removeListener('stopInspectingNative', onStopInspectingNative);\n }, [bridge]);\n\n return (\n <Toggle\n onChange={handleChange}\n isChecked={isInspecting}\n title=\"Select an element in the page to inspect it\">\n <ButtonIcon type=\"search\" />\n </Toggle>\n );\n}\n","import React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport Component from \"@reach/component-component\";\n\nvar Portal = function Portal(_ref) {\n var children = _ref.children,\n _ref$type = _ref.type,\n type = _ref$type === undefined ? \"reach-portal\" : _ref$type;\n return React.createElement(Component, {\n getRefs: function getRefs() {\n return { mountNode: null, portalNode: null };\n },\n didMount: function didMount(_ref2) {\n var refs = _ref2.refs,\n forceUpdate = _ref2.forceUpdate;\n\n // It's possible that the content we are portal has, itself, been portaled.\n // In that case, it's important to append to the correct document element.\n var ownerDocument = refs.mountNode.ownerDocument;\n refs.portalNode = ownerDocument.createElement(type);\n ownerDocument.body.appendChild(refs.portalNode);\n forceUpdate();\n },\n willUnmount: function willUnmount(_ref3) {\n var portalNode = _ref3.refs.portalNode;\n\n portalNode.ownerDocument.body.removeChild(portalNode);\n },\n render: function render(_ref4) {\n var refs = _ref4.refs;\n var portalNode = refs.portalNode;\n\n if (!portalNode) {\n return React.createElement(\"div\", { ref: function ref(div) {\n return refs.mountNode = div;\n } });\n } else {\n return createPortal(children, portalNode);\n }\n }\n });\n};\n\nexport default Portal;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport React, { useRef, useState, useLayoutEffect } from \"react\";\nimport Component from \"@reach/component-component\";\nimport observeRect from \"@reach/observe-rect\";\nimport { func, bool } from \"prop-types\";\n\nvar render = function render(_ref) {\n var refs = _ref.refs,\n children = _ref.props.children,\n rect = _ref.state.rect;\n return children({ ref: function ref(node) {\n return refs.node = node;\n }, rect: rect });\n};\n\nvar didMount = function didMount(_ref2) {\n var setState = _ref2.setState,\n refs = _ref2.refs,\n props = _ref2.props;\n\n if (!refs.node) {\n console.warn(\"You need to place the ref\");\n return;\n }\n refs.observer = observeRect(refs.node, function (rect) {\n props.onChange && props.onChange(rect);\n setState({ rect: rect });\n });\n if (props.observe) {\n refs.observer.observe();\n }\n};\n\nvar didUpdate = function didUpdate(_ref3) {\n var refs = _ref3.refs,\n props = _ref3.props,\n prevProps = _ref3.prevProps;\n\n if (props.observe && !prevProps.observe) {\n refs.observer.observe();\n } else if (!props.observe && prevProps.observe) {\n refs.observer.unobserve();\n }\n};\n\nvar willUnmount = function willUnmount(_ref4) {\n var refs = _ref4.refs;\n\n refs.observer.unobserve();\n};\n\nvar Rect = function Rect(props) {\n return React.createElement(Component, _extends({}, props, {\n refs: {\n node: undefined,\n observer: undefined\n },\n initialState: {\n rect: undefined\n },\n didMount: didMount,\n didUpdate: didUpdate,\n willUnmount: willUnmount,\n render: render\n }));\n};\n\nprocess.env.NODE_ENV !== \"production\" ? Rect.propTypes = {\n children: func,\n observe: bool,\n onChange: func\n} : void 0;\n\nRect.defaultProps = {\n observe: true\n};\n\nexport function useRect(nodeRef) {\n var observe = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n var _useState = useState(null),\n rect = _useState[0],\n setRect = _useState[1];\n\n var observerRef = useRef(null);\n useLayoutEffect(function () {\n if (!observerRef.current) {\n observerRef.current = observeRect(nodeRef.current, setRect);\n }\n if (observe) {\n observerRef.current.observe();\n }\n return function () {\n return observerRef.current.unobserve();\n };\n }, [observe]);\n return rect;\n}\n\nexport default Rect;","import React from \"react\";\nimport Component from \"@reach/component-component\";\nimport { func } from \"prop-types\";\n\nvar hasWindow = typeof window !== \"undefined\";\n\nvar didMount = function didMount(_ref) {\n var refs = _ref.refs,\n setState = _ref.setState;\n\n var resize = function resize() {\n return setState({\n width: window.innerWidth,\n height: window.innerHeight\n });\n };\n window.addEventListener(\"resize\", resize);\n refs.removeEvent = function () {\n window.removeEventListener(\"resize\", resize);\n };\n};\n\nvar willUnmount = function willUnmount(_ref2) {\n var refs = _ref2.refs;\n\n refs.removeEvent();\n};\n\nvar WindowSize = function WindowSize(_ref3) {\n var children = _ref3.children;\n return React.createElement(Component, {\n refs: { removeEvent: null },\n initialState: {\n width: hasWindow && window.innerWidth,\n height: hasWindow && window.innerHeight\n },\n didMount: didMount,\n willUnmount: willUnmount,\n render: function render(_ref4) {\n var state = _ref4.state;\n return children(state);\n }\n });\n};\n\nprocess.env.NODE_ENV !== \"production\" ? WindowSize.propTypes = {\n children: func.isRequired\n} : void 0;\n\nexport default WindowSize;","var checkedPkgs = {};\n\nvar checkStyles = function checkStyles() {};\n\nif (process.env.NODE_ENV !== \"production\") {\n checkStyles = function checkStyles(pkg) {\n // only check once per package\n if (checkedPkgs[pkg]) return;\n checkedPkgs[pkg] = true;\n\n if (parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--reach-\" + pkg), 10) !== 1) {\n console.warn(\"@reach/\" + pkg + \" styles not found. If you are using a bundler like webpack or parcel include this in the entry file of your app before any of your own styles:\\n\\n import \\\"@reach/\" + pkg + \"/styles.css\\\";\\n\\n Otherwise you'll need to include them some other way:\\n\\n <link rel=\\\"stylesheet\\\" type=\\\"text/css\\\" href=\\\"node_modules/@reach/\" + pkg + \"/styles.css\\\" />\\n\\n For more information visit https://ui.reach.tech/styling.\\n \");\n }\n };\n}\n\nexport { checkStyles };\n\nexport var wrapEvent = function wrapEvent(theirHandler, ourHandler) {\n return function (event) {\n theirHandler && theirHandler(event);\n if (!event.defaultPrevented) {\n return ourHandler(event);\n }\n };\n};\n\nexport var assignRef = function assignRef(ref, value) {\n if (ref == null) return;\n if (typeof ref === \"function\") {\n ref(value);\n } else {\n try {\n ref.current = value;\n } catch (error) {\n throw new Error(\"Cannot assign value \\\"\" + value + \"\\\" to ref \\\"\" + ref + \"\\\"\");\n }\n }\n};","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nimport React, { createContext, Children } from \"react\";\nimport Portal from \"@reach/portal\";\nimport Rect from \"@reach/rect\";\nimport WindowSize from \"@reach/window-size\";\nimport Component from \"@reach/component-component\";\nimport { node, func, object, string, number, oneOfType, any } from \"prop-types\";\nimport { wrapEvent, checkStyles, assignRef } from \"@reach/utils\";\n\n// TODO: add the mousedown/drag/mouseup to select of native menus, will\n// also help w/ remove the menu button tooltip hide-flash.\n\n// TODO: add type-to-highlight like native menus\n\nvar _createContext = createContext(),\n Provider = _createContext.Provider,\n Consumer = _createContext.Consumer;\n\nvar checkIfAppManagedFocus = function checkIfAppManagedFocus(_ref) {\n var refs = _ref.refs,\n state = _ref.state,\n prevState = _ref.prevState;\n\n if (!state.isOpen && prevState.isOpen) {\n return !refs.menu.contains(document.activeElement);\n }\n return false;\n};\n\nvar manageFocusOnUpdate = function manageFocusOnUpdate(_ref2, appManagedFocus) {\n var refs = _ref2.refs,\n state = _ref2.state,\n prevState = _ref2.prevState;\n\n if (state.isOpen && !prevState.isOpen) {\n window.__REACH_DISABLE_TOOLTIPS = true;\n if (state.selectionIndex !== -1) {\n // haven't measured the popover yet, give it a frame otherwise\n // we'll scroll to the bottom of the page >.<\n requestAnimationFrame(function () {\n refs.items[state.selectionIndex].focus();\n });\n } else {\n refs.menu.focus();\n }\n } else if (!state.isOpen && prevState.isOpen) {\n if (!appManagedFocus) {\n refs.button.focus();\n }\n // we want to ignore the immediate focus of a tooltip so it doesn't pop\n // up again when the menu closes, only pops up when focus returns again\n // to the tooltip (like native OS tooltips)\n window.__REACH_DISABLE_TOOLTIPS = false;\n } else if (state.selectionIndex !== prevState.selectionIndex) {\n if (state.selectionIndex === -1) {\n // clear highlight when mousing over non-menu items, but focus the menu\n // so the the keyboard will work after a mouseover\n refs.menu.focus();\n } else {\n refs.items[state.selectionIndex].focus();\n }\n }\n};\n\nvar openAtFirstItem = function openAtFirstItem(state) {\n return { isOpen: true, selectionIndex: 0 };\n};\n\nvar close = function close(state) {\n return {\n isOpen: false,\n selectionIndex: -1,\n closingWithClick: false\n };\n};\n\nvar selectItemAtIndex = function selectItemAtIndex(index) {\n return function (state) {\n return {\n selectionIndex: index\n };\n };\n};\n\nvar genId = function genId(prefix) {\n return prefix + \"-\" + Math.random().toString(32).substr(2, 8);\n};\n\n////////////////////////////////////////////////////////////////////////\nvar getMenuRefs = function getMenuRefs() {\n return {\n button: null,\n menu: null,\n items: []\n };\n};\n\nvar getInitialMenuState = function getInitialMenuState() {\n return {\n isOpen: false,\n buttonRect: undefined,\n selectionIndex: -1,\n closingWithClick: false,\n buttonId: genId(\"button\")\n };\n};\n\nvar checkIfStylesIncluded = function checkIfStylesIncluded() {\n return checkStyles(\"menu-button\");\n};\n\nvar Menu = function Menu(_ref3) {\n var children = _ref3.children;\n return React.createElement(\n Component,\n {\n getRefs: getMenuRefs,\n getInitialState: getInitialMenuState,\n didMount: checkIfStylesIncluded,\n didUpdate: manageFocusOnUpdate,\n getSnapshotBeforeUpdate: checkIfAppManagedFocus\n },\n function (context) {\n return React.createElement(\n Provider,\n { value: context },\n typeof children === \"function\" ? children({ isOpen: context.state.isOpen }) : children\n );\n }\n );\n};\n\nprocess.env.NODE_ENV !== \"production\" ? Menu.propTypes = {\n children: oneOfType([func, node])\n} : void 0;\n\n////////////////////////////////////////////////////////////////////////\nvar MenuButton = React.forwardRef(function (_ref4, _ref7) {\n var onClick = _ref4.onClick,\n onKeyDown = _ref4.onKeyDown,\n onMouseDown = _ref4.onMouseDown,\n props = _objectWithoutProperties(_ref4, [\"onClick\", \"onKeyDown\", \"onMouseDown\"]);\n\n return React.createElement(\n Consumer,\n null,\n function (_ref5) {\n var refs = _ref5.refs,\n state = _ref5.state,\n setState = _ref5.setState;\n return React.createElement(\n Rect,\n {\n observe: state.isOpen,\n onChange: function onChange(buttonRect) {\n return setState({ buttonRect: buttonRect });\n }\n },\n function (_ref6) {\n var rectRef = _ref6.ref;\n return React.createElement(\"button\", _extends({\n id: state.buttonId,\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": state.isOpen,\n \"data-reach-menu-button\": true,\n type: \"button\",\n ref: function ref(node) {\n rectRef(node);\n assignRef(_ref7, node);\n refs.button = node;\n },\n onMouseDown: wrapEvent(onMouseDown, function () {\n if (state.isOpen) {\n setState({ closingWithClick: true });\n }\n }),\n onClick: wrapEvent(onClick, function () {\n if (state.isOpen) {\n setState(close);\n } else {\n setState(openAtFirstItem);\n }\n }),\n onKeyDown: wrapEvent(onKeyDown, function (event) {\n if (event.key === \"ArrowDown\") {\n event.preventDefault(); // prevent scroll\n setState(openAtFirstItem);\n } else if (event.key === \"ArrowUp\") {\n event.preventDefault(); // prevent scroll\n setState(openAtFirstItem);\n }\n })\n }, props));\n }\n );\n }\n );\n});\n\nMenuButton.propTypes = {\n onClick: func,\n onKeyDown: func,\n children: node\n};\n\nvar MenuItem = React.forwardRef(function (_ref8, _ref9) {\n var onSelect = _ref8.onSelect,\n onClick = _ref8.onClick,\n _ref8$role = _ref8.role,\n role = _ref8$role === undefined ? \"menuitem\" : _ref8$role,\n state = _ref8.state,\n setState = _ref8.setState,\n index = _ref8.index,\n onKeyDown = _ref8.onKeyDown,\n onMouseMove = _ref8.onMouseMove,\n onMouseLeave = _ref8.onMouseLeave,\n _ref = _ref8._ref,\n rest = _objectWithoutProperties(_ref8, [\"onSelect\", \"onClick\", \"role\", \"state\", \"setState\", \"index\", \"onKeyDown\", \"onMouseMove\", \"onMouseLeave\", \"_ref\"]);\n\n var isSelected = index === state.selectionIndex;\n var select = function select() {\n onSelect();\n setState(close);\n };\n return React.createElement(\"div\", _extends({}, rest, {\n ref: function ref(node) {\n assignRef(_ref9, node);\n assignRef(_ref, node);\n },\n \"data-reach-menu-item\": role === \"menuitem\" ? true : undefined,\n role: role,\n tabIndex: \"-1\",\n \"data-selected\": role === \"menuitem\" && isSelected ? true : undefined,\n onClick: wrapEvent(onClick, function (event) {\n select();\n }),\n onKeyDown: wrapEvent(onKeyDown, function (event) {\n if (event.key === \"Enter\") {\n // prevent the button from being \"clicked\" by\n // this \"Enter\" keydown\n event.preventDefault();\n select();\n }\n }),\n onMouseMove: wrapEvent(onMouseMove, function (event) {\n if (!isSelected) {\n setState(selectItemAtIndex(index));\n }\n }),\n onMouseLeave: wrapEvent(onMouseLeave, function (event) {\n // clear out selection when mouse over a non-menu item child\n setState({ selectionIndex: -1 });\n })\n }));\n});\n\nprocess.env.NODE_ENV !== \"production\" ? MenuItem.propTypes = {\n onSelect: func.isRequired,\n onClick: func,\n role: string,\n state: object,\n setState: func,\n index: number,\n onKeyDown: func,\n onMouseMove: func,\n _ref: func\n} : void 0;\n\nvar k = function k() {};\n\n////////////////////////////////////////////////////////////////////////\nvar MenuLink = React.forwardRef(function (_ref10, _ref11) {\n var onKeyDown = _ref10.onKeyDown,\n onClick = _ref10.onClick,\n Comp = _ref10.component,\n _ref10$as = _ref10.as,\n AsComp = _ref10$as === undefined ? \"a\" : _ref10$as,\n style = _ref10.style,\n setState = _ref10.setState,\n state = _ref10.state,\n index = _ref10.index,\n _ref = _ref10._ref,\n props = _objectWithoutProperties(_ref10, [\"onKeyDown\", \"onClick\", \"component\", \"as\", \"style\", \"setState\", \"state\", \"index\", \"_ref\"]);\n\n var Link = Comp || AsComp;\n if (Comp) {\n console.warn(\"[@reach/menu-button]: Please use the `as` prop instead of `component`.\");\n }\n return React.createElement(\n MenuItem,\n {\n role: \"none\",\n state: state,\n setState: setState,\n index: index,\n onSelect: k,\n _ref: k\n },\n React.createElement(Link, _extends({\n role: \"menuitem\",\n \"data-reach-menu-item\": true,\n tabIndex: \"-1\",\n \"data-selected\": index === state.selectionIndex ? true : undefined,\n onClick: wrapEvent(onClick, function (event) {\n setState(close);\n }),\n onKeyDown: wrapEvent(onKeyDown, function (event) {\n if (event.key === \"Enter\") {\n // prevent MenuItem's preventDefault from firing,\n // allowing this link to work w/ the keyboard\n event.stopPropagation();\n }\n }),\n ref: function ref(node) {\n assignRef(_ref, node);\n assignRef(_ref11, node);\n },\n style: _extends({}, style)\n }, props))\n );\n});\n\nprocess.env.NODE_ENV !== \"production\" ? MenuLink.propTypes = {\n onKeyDown: func,\n onClick: func,\n component: any,\n as: any,\n style: object,\n setState: func,\n state: object,\n index: number,\n _ref: func\n} : void 0;\n///////////////////////////////////////////////////////////////////\n\nvar MenuList = React.forwardRef(function (props, ref) {\n return React.createElement(\n Consumer,\n null,\n function (_ref12) {\n var refs = _ref12.refs,\n state = _ref12.state,\n setState = _ref12.setState;\n return state.isOpen && React.createElement(\n Portal,\n null,\n React.createElement(\n WindowSize,\n null,\n function () {\n return React.createElement(\n Rect,\n null,\n function (_ref13) {\n var menuRect = _ref13.rect,\n menuRef = _ref13.ref;\n return React.createElement(\n \"div\",\n {\n \"data-reach-menu\": true,\n ref: menuRef,\n style: getStyles(state.buttonRect, menuRect)\n },\n React.createElement(MenuListImpl, _extends({}, props, {\n setState: setState,\n state: state,\n refs: refs,\n ref: ref\n }))\n );\n }\n );\n }\n )\n );\n }\n );\n});\n\nMenuList.propTypes = {\n children: node\n};\n\nvar focusableChildrenTypes = [MenuItem, MenuLink];\n\nvar isFocusableChildType = function isFocusableChildType(child) {\n return focusableChildrenTypes.includes(child.type);\n};\nvar getFocusableMenuChildren = function getFocusableMenuChildren(children) {\n var focusable = [];\n Children.forEach(children, function (child) {\n if (isFocusableChildType(child)) focusable.push(child);\n });\n return focusable;\n};\n\nvar MenuListImpl = React.forwardRef(function (_ref14, _ref15) {\n var refs = _ref14.refs,\n state = _ref14.state,\n setState = _ref14.setState,\n children = _ref14.children,\n onKeyDown = _ref14.onKeyDown,\n onBlur = _ref14.onBlur,\n rest = _objectWithoutProperties(_ref14, [\"refs\", \"state\", \"setState\", \"children\", \"onKeyDown\", \"onBlur\"]);\n\n var focusableChildren = getFocusableMenuChildren(children);\n return React.createElement(\n \"div\",\n _extends({\n \"data-reach-menu-list\": true\n }, rest, {\n role: \"menu\",\n \"aria-labelledby\": state.buttonId,\n tabIndex: \"-1\",\n ref: function ref(node) {\n refs.menu = node;\n assignRef(_ref15, node);\n },\n onBlur: function onBlur(event) {\n if (!state.closingWithClick && !refs.menu.contains(event.relatedTarget)) {\n setState(close);\n }\n },\n onKeyDown: wrapEvent(onKeyDown, function (event) {\n if (event.key === \"Escape\") {\n setState(close);\n } else if (event.key === \"ArrowDown\") {\n event.preventDefault(); // prevent window scroll\n var nextIndex = state.selectionIndex + 1;\n if (nextIndex !== focusableChildren.length) {\n setState({ selectionIndex: nextIndex });\n }\n } else if (event.key === \"ArrowUp\") {\n event.preventDefault(); // prevent window scroll\n var _nextIndex = state.selectionIndex - 1;\n if (_nextIndex !== -1) {\n setState({ selectionIndex: _nextIndex });\n }\n } else if (event.key === \"Tab\") {\n event.preventDefault(); // prevent leaving\n }\n })\n }),\n Children.map(children, function (child, index) {\n if (isFocusableChildType(child)) {\n var focusIndex = focusableChildren.indexOf(child);\n\n return React.cloneElement(child, {\n setState: setState,\n state: state,\n index: focusIndex,\n _ref: function _ref(node) {\n return refs.items[focusIndex] = node;\n }\n });\n }\n\n return child;\n })\n );\n});\n\nprocess.env.NODE_ENV !== \"production\" ? MenuListImpl.propTypes = {\n refs: object,\n state: object,\n setState: func,\n children: node,\n onKeyDown: func,\n onBlur: func\n} : void 0;\n\nvar getStyles = function getStyles(buttonRect, menuRect) {\n var haventMeasuredButtonYet = !buttonRect;\n if (haventMeasuredButtonYet) {\n return { opacity: 0 };\n }\n\n var haventMeasuredMenuYet = !menuRect;\n\n var styles = {\n left: buttonRect.left + window.pageXOffset + \"px\",\n top: buttonRect.top + buttonRect.height + window.pageYOffset + \"px\"\n };\n\n if (haventMeasuredMenuYet) {\n return _extends({}, styles, {\n opacity: 0\n });\n }\n\n if (buttonRect.width < 500) {\n styles.minWidth = buttonRect.width;\n }\n\n var collisions = {\n top: buttonRect.top - menuRect.height < 0,\n right: window.innerWidth < buttonRect.left + menuRect.width,\n bottom: window.innerHeight < buttonRect.top + menuRect.height,\n left: buttonRect.left - menuRect.width < 0\n };\n\n var directionRight = collisions.right && !collisions.left;\n var directionUp = collisions.bottom && !collisions.top;\n\n return _extends({}, styles, {\n left: directionRight ? buttonRect.right - menuRect.width + window.pageXOffset + \"px\" : buttonRect.left + window.pageXOffset + \"px\",\n top: directionUp ? buttonRect.top - menuRect.height + window.pageYOffset + \"px\" : buttonRect.top + buttonRect.height + window.pageYOffset + \"px\"\n });\n};\n\nexport { Menu, MenuList, MenuButton, MenuLink, MenuItem };","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport Tooltip from '@reach/tooltip';\n\nimport styles from './Button.css';\nimport tooltipStyles from './Tooltip.css';\n\ntype Props = {\n children: React$Node,\n className?: string,\n title?: string,\n ...\n};\n\nexport default function Button({\n children,\n className = '',\n title = '',\n ...rest\n}: Props) {\n let button = (\n <button className={`${styles.Button} ${className}`} {...rest}>\n <span className={`${styles.ButtonContent} ${className}`} tabIndex={-1}>\n {children}\n </span>\n </button>\n );\n\n if (title) {\n button = (\n <Tooltip className={tooltipStyles.Tooltip} label={title}>\n {button}\n </Tooltip>\n );\n }\n\n return button;\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport type {Thenable} from 'shared/ReactTypes';\n\nimport * as React from 'react';\nimport {createContext} from 'react';\n\n// Cache implementation was forked from the React repo:\n// https://github.com/facebook/react/blob/master/packages/react-cache/src/ReactCache.js\n//\n// This cache is simpler than react-cache in that:\n// 1. Individual items don't need to be invalidated.\n// Profiling data is invalidated as a whole.\n// 2. We didn't need the added overhead of an LRU cache.\n// The size of this cache is bounded by how many renders were profiled,\n// and it will be fully reset between profiling sessions.\n\nexport type {Thenable};\n\ntype Suspender = {then(resolve: () => mixed, reject: () => mixed): mixed, ...};\n\ntype PendingResult = {|\n status: 0,\n value: Suspender,\n|};\n\ntype ResolvedResult<Value> = {|\n status: 1,\n value: Value,\n|};\n\ntype RejectedResult = {|\n status: 2,\n value: mixed,\n|};\n\ntype Result<Value> = PendingResult | ResolvedResult<Value> | RejectedResult;\n\nexport type Resource<Input, Key, Value> = {\n clear(): void,\n invalidate(Key): void,\n read(Input): Value,\n preload(Input): void,\n write(Key, Value): void,\n ...\n};\n\nconst Pending = 0;\nconst Resolved = 1;\nconst Rejected = 2;\n\nconst ReactCurrentDispatcher = (React: any)\n .__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentDispatcher;\n\nfunction readContext(Context, observedBits) {\n const dispatcher = ReactCurrentDispatcher.current;\n if (dispatcher === null) {\n throw new Error(\n 'react-cache: read and preload may only be called from within a ' +\n \"component's render. They are not supported in event handlers or \" +\n 'lifecycle methods.',\n );\n }\n return dispatcher.readContext(Context, observedBits);\n}\n\nconst CacheContext = createContext(null);\n\ntype Config = {useWeakMap?: boolean, ...};\n\nconst entries: Map<\n Resource<any, any, any>,\n Map<any, any> | WeakMap<any, any>,\n> = new Map();\nconst resourceConfigs: Map<Resource<any, any, any>, Config> = new Map();\n\nfunction getEntriesForResource(\n resource: any,\n): Map<any, any> | WeakMap<any, any> {\n let entriesForResource = ((entries.get(resource): any): Map<any, any>);\n if (entriesForResource === undefined) {\n const config = resourceConfigs.get(resource);\n entriesForResource =\n config !== undefined && config.useWeakMap ? new WeakMap() : new Map();\n entries.set(resource, entriesForResource);\n }\n return entriesForResource;\n}\n\nfunction accessResult<Input, Key, Value>(\n resource: any,\n fetch: Input => Thenable<Value>,\n input: Input,\n key: Key,\n): Result<Value> {\n const entriesForResource = getEntriesForResource(resource);\n const entry = entriesForResource.get(key);\n if (entry === undefined) {\n const thenable = fetch(input);\n thenable.then(\n value => {\n if (newResult.status === Pending) {\n const resolvedResult: ResolvedResult<Value> = (newResult: any);\n resolvedResult.status = Resolved;\n resolvedResult.value = value;\n }\n },\n error => {\n if (newResult.status === Pending) {\n const rejectedResult: RejectedResult = (newResult: any);\n rejectedResult.status = Rejected;\n rejectedResult.value = error;\n }\n },\n );\n const newResult: PendingResult = {\n status: Pending,\n value: thenable,\n };\n entriesForResource.set(key, newResult);\n return newResult;\n } else {\n return entry;\n }\n}\n\nexport function createResource<Input, Key, Value>(\n fetch: Input => Thenable<Value>,\n hashInput: Input => Key,\n config?: Config = {},\n): Resource<Input, Key, Value> {\n const resource = {\n clear(): void {\n entries.delete(resource);\n },\n\n invalidate(key: Key): void {\n const entriesForResource = getEntriesForResource(resource);\n entriesForResource.delete(key);\n },\n\n read(input: Input): Value {\n // Prevent access outside of render.\n readContext(CacheContext);\n\n const key = hashInput(input);\n const result: Result<Value> = accessResult(resource, fetch, input, key);\n switch (result.status) {\n case Pending: {\n const suspender = result.value;\n throw suspender;\n }\n case Resolved: {\n const value = result.value;\n return value;\n }\n case Rejected: {\n const error = result.value;\n throw error;\n }\n default:\n // Should be unreachable\n return (undefined: any);\n }\n },\n\n preload(input: Input): void {\n // Prevent access outside of render.\n readContext(CacheContext);\n\n const key = hashInput(input);\n accessResult(resource, fetch, input, key);\n },\n\n write(key: Key, value: Value): void {\n const entriesForResource = getEntriesForResource(resource);\n\n const resolvedResult: ResolvedResult<Value> = {\n status: Resolved,\n value,\n };\n\n entriesForResource.set(key, resolvedResult);\n },\n };\n\n resourceConfigs.set(resource, config);\n\n return resource;\n}\n\nexport function invalidateResources(): void {\n entries.clear();\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {createContext, useCallback, useContext, useEffect} from 'react';\nimport {createResource} from '../../cache';\nimport {BridgeContext, StoreContext} from '../context';\nimport {TreeStateContext} from './TreeContext';\nimport {separateDisplayNameAndHOCs} from 'react-devtools-shared/src/utils';\n\nimport type {OwnersList} from 'react-devtools-shared/src/backend/types';\nimport type {\n Element,\n Owner,\n} from 'react-devtools-shared/src/devtools/views/Components/types';\nimport type {Resource, Thenable} from '../../cache';\n\ntype Context = (id: number) => Array<Owner> | null;\n\nconst OwnersListContext = createContext<Context>(((null: any): Context));\nOwnersListContext.displayName = 'OwnersListContext';\n\ntype ResolveFn = (ownersList: Array<Owner> | null) => void;\ntype InProgressRequest = {|\n promise: Thenable<Array<Owner>>,\n resolveFn: ResolveFn,\n|};\n\nconst inProgressRequests: WeakMap<Element, InProgressRequest> = new WeakMap();\nconst resource: Resource<Element, Element, Array<Owner>> = createResource(\n (element: Element) => {\n const request = inProgressRequests.get(element);\n if (request != null) {\n return request.promise;\n }\n\n let resolveFn = ((null: any): ResolveFn);\n const promise = new Promise(resolve => {\n resolveFn = resolve;\n });\n\n inProgressRequests.set(element, {promise, resolveFn});\n\n return promise;\n },\n (element: Element) => element,\n {useWeakMap: true},\n);\n\ntype Props = {|\n children: React$Node,\n|};\n\nfunction OwnersListContextController({children}: Props) {\n const bridge = useContext(BridgeContext);\n const store = useContext(StoreContext);\n const {ownerID} = useContext(TreeStateContext);\n\n const read = useCallback(\n (id: number) => {\n const element = store.getElementByID(id);\n if (element !== null) {\n return resource.read(element);\n } else {\n return null;\n }\n },\n [store],\n );\n\n useEffect(() => {\n const onOwnersList = (ownersList: OwnersList) => {\n const id = ownersList.id;\n\n const element = store.getElementByID(id);\n if (element !== null) {\n const request = inProgressRequests.get(element);\n if (request != null) {\n inProgressRequests.delete(element);\n\n request.resolveFn(\n ownersList.owners === null\n ? null\n : ownersList.owners.map(owner => {\n const [\n displayNameWithoutHOCs,\n hocDisplayNames,\n ] = separateDisplayNameAndHOCs(owner.displayName, owner.type);\n\n return {\n ...owner,\n displayName: displayNameWithoutHOCs,\n hocDisplayNames,\n };\n }),\n );\n }\n }\n };\n\n bridge.addListener('ownersList', onOwnersList);\n return () => bridge.removeListener('ownersList', onOwnersList);\n }, [bridge, store]);\n\n // This effect requests an updated owners list any time the selected owner changes\n useEffect(() => {\n if (ownerID !== null) {\n const rendererID = store.getRendererIDForElement(ownerID);\n if (rendererID !== null) {\n bridge.send('getOwnersList', {id: ownerID, rendererID});\n }\n }\n\n return () => {};\n }, [bridge, ownerID, store]);\n\n return (\n <OwnersListContext.Provider value={read}>\n {children}\n </OwnersListContext.Provider>\n );\n}\n\nexport {OwnersListContext, OwnersListContextController};\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\nimport * as React from 'react';\nimport {\n Fragment,\n useCallback,\n useContext,\n useLayoutEffect,\n useReducer,\n useRef,\n useState,\n} from 'react';\nimport Tooltip from '@reach/tooltip';\nimport {Menu, MenuList, MenuButton, MenuItem} from '@reach/menu-button';\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\nimport Toggle from '../Toggle';\nimport Badge from './Badge';\nimport {OwnersListContext} from './OwnersListContext';\nimport {TreeDispatcherContext, TreeStateContext} from './TreeContext';\nimport {useIsOverflowing} from '../hooks';\nimport {StoreContext} from '../context';\n\nimport type {Owner} from './types';\n\nimport styles from './OwnersStack.css';\n\ntype SelectOwner = (owner: Owner | null) => void;\n\ntype ACTION_UPDATE_OWNER_ID = {|\n type: 'UPDATE_OWNER_ID',\n ownerID: number | null,\n owners: Array<Owner>,\n|};\ntype ACTION_UPDATE_SELECTED_INDEX = {|\n type: 'UPDATE_SELECTED_INDEX',\n selectedIndex: number,\n|};\n\ntype Action = ACTION_UPDATE_OWNER_ID | ACTION_UPDATE_SELECTED_INDEX;\n\ntype State = {|\n ownerID: number | null,\n owners: Array<Owner>,\n selectedIndex: number,\n|};\n\nfunction dialogReducer(state, action) {\n switch (action.type) {\n case 'UPDATE_OWNER_ID':\n const selectedIndex = action.owners.findIndex(\n owner => owner.id === action.ownerID,\n );\n return {\n ownerID: action.ownerID,\n owners: action.owners,\n selectedIndex,\n };\n case 'UPDATE_SELECTED_INDEX':\n return {\n ...state,\n selectedIndex: action.selectedIndex,\n };\n default:\n throw new Error(`Invalid action \"${action.type}\"`);\n }\n}\n\nexport default function OwnerStack() {\n const read = useContext(OwnersListContext);\n const {ownerID} = useContext(TreeStateContext);\n const treeDispatch = useContext(TreeDispatcherContext);\n\n const [state, dispatch] = useReducer<State, State, Action>(dialogReducer, {\n ownerID: null,\n owners: [],\n selectedIndex: 0,\n });\n\n // When an owner is selected, we either need to update the selected index, or we need to fetch a new list of owners.\n // We use a reducer here so that we can avoid fetching a new list unless the owner ID has actually changed.\n if (ownerID === null) {\n dispatch({\n type: 'UPDATE_OWNER_ID',\n ownerID: null,\n owners: [],\n });\n } else if (ownerID !== state.ownerID) {\n const isInStore =\n state.owners.findIndex(owner => owner.id === ownerID) >= 0;\n dispatch({\n type: 'UPDATE_OWNER_ID',\n ownerID,\n owners: isInStore ? state.owners : read(ownerID) || [],\n });\n }\n\n const {owners, selectedIndex} = state;\n\n const selectOwner = useCallback<SelectOwner>(\n (owner: Owner | null) => {\n if (owner !== null) {\n const index = owners.indexOf(owner);\n dispatch({\n type: 'UPDATE_SELECTED_INDEX',\n selectedIndex: index >= 0 ? index : 0,\n });\n treeDispatch({type: 'SELECT_OWNER', payload: owner.id});\n } else {\n dispatch({\n type: 'UPDATE_SELECTED_INDEX',\n selectedIndex: 0,\n });\n treeDispatch({type: 'RESET_OWNER_STACK'});\n }\n },\n [owners, treeDispatch],\n );\n\n const [elementsTotalWidth, setElementsTotalWidth] = useState(0);\n const elementsBarRef = useRef<HTMLDivElement | null>(null);\n const isOverflowing = useIsOverflowing(elementsBarRef, elementsTotalWidth);\n\n const selectedOwner = owners[selectedIndex];\n\n useLayoutEffect(() => {\n // If we're already overflowing, then we don't need to re-measure items.\n // That's because once the owners stack is open, it can only get larger (by drilling in).\n // A totally new stack can only be reached by exiting this mode and re-entering it.\n if (elementsBarRef.current === null || isOverflowing) {\n return () => {};\n }\n\n let totalWidth = 0;\n for (let i = 0; i < owners.length; i++) {\n const element = elementsBarRef.current.children[i];\n const computedStyle = getComputedStyle(element);\n\n totalWidth +=\n element.offsetWidth +\n parseInt(computedStyle.marginLeft, 10) +\n parseInt(computedStyle.marginRight, 10);\n }\n\n setElementsTotalWidth(totalWidth);\n }, [elementsBarRef, isOverflowing, owners.length]);\n\n return (\n <div className={styles.OwnerStack}>\n <div className={styles.Bar} ref={elementsBarRef}>\n {isOverflowing && (\n <Fragment>\n <ElementsDropdown\n owners={owners}\n selectedIndex={selectedIndex}\n selectOwner={selectOwner}\n />\n <BackToOwnerButton\n owners={owners}\n selectedIndex={selectedIndex}\n selectOwner={selectOwner}\n />\n {selectedOwner != null && (\n <ElementView\n owner={selectedOwner}\n isSelected={true}\n selectOwner={selectOwner}\n />\n )}\n </Fragment>\n )}\n {!isOverflowing &&\n owners.map((owner, index) => (\n <ElementView\n key={index}\n owner={owner}\n isSelected={index === selectedIndex}\n selectOwner={selectOwner}\n />\n ))}\n </div>\n <div className={styles.VRule} />\n <Button\n className={styles.IconButton}\n onClick={() => selectOwner(null)}\n title=\"Back to tree view\">\n <ButtonIcon type=\"close\" />\n </Button>\n </div>\n );\n}\n\ntype ElementsDropdownProps = {\n owners: Array<Owner>,\n selectedIndex: number,\n selectOwner: SelectOwner,\n ...\n};\nfunction ElementsDropdown({\n owners,\n selectedIndex,\n selectOwner,\n}: ElementsDropdownProps) {\n const store = useContext(StoreContext);\n\n const menuItems = [];\n for (let index = owners.length - 1; index >= 0; index--) {\n const owner = owners[index];\n const isInStore = store.containsElement(owner.id);\n menuItems.push(\n <MenuItem\n key={owner.id}\n className={`${styles.Component} ${isInStore ? '' : styles.NotInStore}`}\n onSelect={() => (isInStore ? selectOwner(owner) : null)}>\n {owner.displayName}\n\n <Badge\n className={styles.Badge}\n hocDisplayNames={owner.hocDisplayNames}\n type={owner.type}\n />\n </MenuItem>,\n );\n }\n\n return (\n <Menu>\n <MenuButton className={styles.MenuButton}>\n <Tooltip label=\"Open elements dropdown\">\n <span className={styles.MenuButtonContent} tabIndex={-1}>\n <ButtonIcon type=\"more\" />\n </span>\n </Tooltip>\n </MenuButton>\n <MenuList className={styles.Modal}>{menuItems}</MenuList>\n </Menu>\n );\n}\n\ntype ElementViewProps = {\n isSelected: boolean,\n owner: Owner,\n selectOwner: SelectOwner,\n ...\n};\nfunction ElementView({isSelected, owner, selectOwner}: ElementViewProps) {\n const store = useContext(StoreContext);\n\n const {displayName, hocDisplayNames, type} = owner;\n const isInStore = store.containsElement(owner.id);\n\n const handleChange = useCallback(() => {\n if (isInStore) {\n selectOwner(owner);\n }\n }, [isInStore, selectOwner, owner]);\n\n return (\n <Toggle\n className={`${styles.Component} ${isInStore ? '' : styles.NotInStore}`}\n isChecked={isSelected}\n onChange={handleChange}>\n {displayName}\n\n <Badge\n className={styles.Badge}\n hocDisplayNames={hocDisplayNames}\n type={type}\n />\n </Toggle>\n );\n}\n\ntype BackToOwnerButtonProps = {|\n owners: Array<Owner>,\n selectedIndex: number,\n selectOwner: SelectOwner,\n|};\nfunction BackToOwnerButton({\n owners,\n selectedIndex,\n selectOwner,\n}: BackToOwnerButtonProps) {\n const store = useContext(StoreContext);\n\n if (selectedIndex <= 0) {\n return null;\n }\n\n const owner = owners[selectedIndex - 1];\n const isInStore = store.containsElement(owner.id);\n\n return (\n <Button\n className={isInStore ? undefined : styles.NotInStore}\n onClick={() => (isInStore ? selectOwner(owner) : null)}\n title={`Up to ${owner.displayName || 'owner'}`}>\n <ButtonIcon type=\"previous\" />\n </Button>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport styles from './Icon.css';\n\nexport type IconType =\n | 'arrow'\n | 'bug'\n | 'code'\n | 'components'\n | 'copy'\n | 'flame-chart'\n | 'interactions'\n | 'profiler'\n | 'ranked-chart'\n | 'search'\n | 'settings'\n | 'store-as-global-variable';\n\ntype Props = {|\n className?: string,\n type: IconType,\n|};\n\nexport default function Icon({className = '', type}: Props) {\n let pathData = null;\n switch (type) {\n case 'arrow':\n pathData = PATH_ARROW;\n break;\n case 'bug':\n pathData = PATH_BUG;\n break;\n case 'code':\n pathData = PATH_CODE;\n break;\n case 'components':\n pathData = PATH_COMPONENTS;\n break;\n case 'copy':\n pathData = PATH_COPY;\n break;\n case 'flame-chart':\n pathData = PATH_FLAME_CHART;\n break;\n case 'interactions':\n pathData = PATH_INTERACTIONS;\n break;\n case 'profiler':\n pathData = PATH_PROFILER;\n break;\n case 'ranked-chart':\n pathData = PATH_RANKED_CHART;\n break;\n case 'search':\n pathData = PATH_SEARCH;\n break;\n case 'settings':\n pathData = PATH_SETTINGS;\n break;\n case 'store-as-global-variable':\n pathData = PATH_STORE_AS_GLOBAL_VARIABLE;\n break;\n default:\n console.warn(`Unsupported type \"${type}\" specified for Icon`);\n break;\n }\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={`${styles.Icon} ${className}`}\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\">\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path fill=\"currentColor\" d={pathData} />\n </svg>\n );\n}\n\nconst PATH_ARROW = 'M8 5v14l11-7z';\n\nconst PATH_BUG = `\n M20 8h-2.81c-.45-.78-1.07-1.45-1.82-1.96L17 4.41 15.59 3l-2.17 2.17C12.96 5.06 12.49 5 12 5c-.49\n 0-.96.06-1.41.17L8.41 3 7 4.41l1.62 1.63C7.88 6.55 7.26 7.22 6.81 8H4v2h2.09c-.05.33-.09.66-.09\n 1v1H4v2h2v1c0 .34.04.67.09 1H4v2h2.81c1.04 1.79 2.97 3 5.19 3s4.15-1.21\n 5.19-3H20v-2h-2.09c.05-.33.09-.66.09-1v-1h2v-2h-2v-1c0-.34-.04-.67-.09-1H20V8zm-6 8h-4v-2h4v2zm0-4h-4v-2h4v2z\n`;\n\nconst PATH_CODE = `\n M9.4 16.6L4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0l4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z\n `;\n\nconst PATH_COMPONENTS =\n 'M9.4 16.6L4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0l4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z';\n\nconst PATH_COPY = `\n M3 13h2v-2H3v2zm0 4h2v-2H3v2zm2 4v-2H3a2 2 0 0 0 2 2zM3 9h2V7H3v2zm12 12h2v-2h-2v2zm4-18H9a2 2 0 0 0-2\n 2v10a2 2 0 0 0 2 2h10c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 12H9V5h10v10zm-8 6h2v-2h-2v2zm-4 0h2v-2H7v2z\n`;\n\nconst PATH_FLAME_CHART = `\n M10.0650893,21.5040462 C7.14020814,20.6850349 5,18.0558698 5,14.9390244 C5,14.017627\n 5,9.81707317 7.83333333,7.37804878 C7.83333333,7.37804878 7.58333333,11.199187 10,\n 10.6300813 C11.125,10.326087 13.0062497,7.63043487 8.91666667,2.5 C14.1666667,3.06910569\n 19,9.32926829 19,14.9390244 C19,18.0558698 16.8597919,20.6850349 13.9349107,21.5040462\n C14.454014,21.0118505 14.7765152,20.3233394 14.7765152,19.5613412 C14.7765152,17.2826087\n 12,15.0875871 12,15.0875871 C12,15.0875871 9.22348485,17.2826087 9.22348485,19.5613412\n C9.22348485,20.3233394 9.54598603,21.0118505 10.0650893,21.5040462 Z M12.0833333,20.6514763\n C11.3814715,20.6514763 10.8125,20.1226027 10.8125,19.4702042 C10.8125,18.6069669\n 12.0833333,16.9347829 12.0833333,16.9347829 C12.0833333,16.9347829 13.3541667,18.6069669\n 13.3541667,19.4702042 C13.3541667,20.1226027 12.7851952,20.6514763 12.0833333,20.6514763 Z\n`;\n\nconst PATH_INTERACTIONS = `\n M23 8c0 1.1-.9 2-2 2-.18 0-.35-.02-.51-.07l-3.56 3.55c.05.16.07.34.07.52 0 1.1-.9 2-2\n 2s-2-.9-2-2c0-.18.02-.36.07-.52l-2.55-2.55c-.16.05-.34.07-.52.07s-.36-.02-.52-.07l-4.55\n 4.56c.05.16.07.33.07.51 0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2c.18 0 .35.02.51.07l4.56-4.55C8.02\n 9.36 8 9.18 8 9c0-1.1.9-2 2-2s2 .9 2 2c0 .18-.02.36-.07.52l2.55\n 2.55c.16-.05.34-.07.52-.07s.36.02.52.07l3.55-3.56C19.02 8.35 19 8.18 19 8c0-1.1.9-2 2-2s2 .9 2 2z\n`;\n\nconst PATH_PROFILER = 'M5 9.2h3V19H5zM10.6 5h2.8v14h-2.8zm5.6 8H19v6h-2.8z';\n\nconst PATH_SEARCH = `\n M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91\n 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99\n 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\n`;\n\nconst PATH_RANKED_CHART = 'M3 5h18v3H3zM3 10.5h13v3H3zM3 16h8v3H3z';\n\nconst PATH_SETTINGS = `\n M19.43 12.98c.04-.32.07-.64.07-.98s-.03-.66-.07-.98l2.11-1.65c.19-.15.24-.42.12-.64l-2-3.46c-.12-.22-.39-.3-.61-.22l-2.49\n 1c-.52-.4-1.08-.73-1.69-.98l-.38-2.65C14.46 2.18 14.25 2 14 2h-4c-.25 0-.46.18-.49.42l-.38\n 2.65c-.61.25-1.17.59-1.69.98l-2.49-1c-.23-.09-.49 0-.61.22l-2 3.46c-.13.22-.07.49.12.64l2.11\n 1.65c-.04.32-.07.65-.07.98s.03.66.07.98l-2.11 1.65c-.19.15-.24.42-.12.64l2 3.46c.12.22.39.3.61.22l2.49-1c.52.4\n 1.08.73 1.69.98l.38 2.65c.03.24.24.42.49.42h4c.25 0 .46-.18.49-.42l.38-2.65c.61-.25 1.17-.59 1.69-.98l2.49\n 1c.23.09.49 0 .61-.22l2-3.46c.12-.22.07-.49-.12-.64l-2.11-1.65zM12 15.5c-1.93 0-3.5-1.57-3.5-3.5s1.57-3.5\n 3.5-3.5 3.5 1.57 3.5 3.5-1.57 3.5-3.5 3.5z\n`;\n\nconst PATH_STORE_AS_GLOBAL_VARIABLE = `\n M20 8h-2.81c-.45-.78-1.07-1.45-1.82-1.96L17 4.41 15.59 3l-2.17 2.17C12.96 5.06 12.49 5 12 5c-.49 0-.96.06-1.41.17L8.41\n 3 7 4.41l1.62 1.63C7.88 6.55 7.26 7.22 6.81 8H4v2h2.09c-.05.33-.09.66-.09 1v1H4v2h2v1c0 .34.04.67.09 1H4v2h2.81c1.04\n 1.79 2.97 3 5.19 3s4.15-1.21 5.19-3H20v-2h-2.09c.05-.33.09-.66.09-1v-1h2v-2h-2v-1c0-.34-.04-.67-.09-1H20V8zm-6\n 8h-4v-2h4v2zm0-4h-4v-2h4v2z\n`;\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useCallback, useContext, useEffect, useRef} from 'react';\nimport {TreeDispatcherContext, TreeStateContext} from './TreeContext';\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\nimport Icon from '../Icon';\n\nimport styles from './SearchInput.css';\n\ntype Props = {||};\n\nexport default function SearchInput(props: Props) {\n const {searchIndex, searchResults, searchText} = useContext(TreeStateContext);\n const dispatch = useContext(TreeDispatcherContext);\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n const handleTextChange = useCallback(\n ({currentTarget}) =>\n dispatch({type: 'SET_SEARCH_TEXT', payload: currentTarget.value}),\n [dispatch],\n );\n const resetSearch = useCallback(\n () => dispatch({type: 'SET_SEARCH_TEXT', payload: ''}),\n [dispatch],\n );\n\n const handleKeyDown = useCallback(\n event => {\n // For convenience, let up/down arrow keys change Tree selection.\n switch (event.key) {\n case 'ArrowDown':\n dispatch({type: 'SELECT_NEXT_ELEMENT_IN_TREE'});\n event.preventDefault();\n break;\n case 'ArrowUp':\n dispatch({type: 'SELECT_PREVIOUS_ELEMENT_IN_TREE'});\n event.preventDefault();\n break;\n default:\n break;\n }\n },\n [dispatch],\n );\n\n const handleInputKeyPress = useCallback(\n ({key, shiftKey}) => {\n if (key === 'Enter') {\n if (shiftKey) {\n dispatch({type: 'GO_TO_PREVIOUS_SEARCH_RESULT'});\n } else {\n dispatch({type: 'GO_TO_NEXT_SEARCH_RESULT'});\n }\n }\n },\n [dispatch],\n );\n\n // Auto-focus search input\n useEffect(() => {\n if (inputRef.current === null) {\n return () => {};\n }\n\n const handleWindowKey = (event: KeyboardEvent) => {\n const {key, metaKey} = event;\n if (key === 'f' && metaKey) {\n if (inputRef.current !== null) {\n inputRef.current.focus();\n event.preventDefault();\n event.stopPropagation();\n }\n }\n };\n\n // It's important to listen to the ownerDocument to support the browser extension.\n // Here we use portals to render individual tabs (e.g. Profiler),\n // and the root document might belong to a different window.\n const ownerDocument = inputRef.current.ownerDocument;\n ownerDocument.addEventListener('keydown', handleWindowKey);\n\n return () => ownerDocument.removeEventListener('keydown', handleWindowKey);\n }, [inputRef]);\n\n return (\n <div className={styles.SearchInput}>\n <Icon className={styles.InputIcon} type=\"search\" />\n <input\n className={styles.Input}\n onChange={handleTextChange}\n onKeyDown={handleKeyDown}\n onKeyPress={handleInputKeyPress}\n placeholder=\"Search (text or /regex/)\"\n ref={inputRef}\n value={searchText}\n />\n {!!searchText && (\n <span className={styles.IndexLabel}>\n {Math.min(searchIndex + 1, searchResults.length)} |{' '}\n {searchResults.length}\n </span>\n )}\n <div className={styles.LeftVRule} />\n <Button\n className={styles.IconButton}\n disabled={!searchText}\n onClick={() => dispatch({type: 'GO_TO_PREVIOUS_SEARCH_RESULT'})}\n title=\"Scroll to previous search result\">\n <ButtonIcon type=\"up\" />\n </Button>\n <Button\n className={styles.IconButton}\n disabled={!searchText}\n onClick={() => dispatch({type: 'GO_TO_NEXT_SEARCH_RESULT'})}\n title=\"Scroll to next search result\">\n <ButtonIcon type=\"down\" />\n </Button>\n <Button\n className={styles.IconButton}\n disabled={!searchText}\n onClick={resetSearch}\n title=\"Reset search\">\n <ButtonIcon type=\"close\" />\n </Button>\n </div>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {createContext, useMemo, useState} from 'react';\n\nexport type DisplayDensity = 'comfortable' | 'compact';\nexport type Theme = 'auto' | 'light' | 'dark';\n\ntype Context = {\n isModalShowing: boolean,\n setIsModalShowing: (value: boolean) => void,\n ...\n};\n\nconst SettingsModalContext = createContext<Context>(((null: any): Context));\nSettingsModalContext.displayName = 'SettingsModalContext';\n\nfunction SettingsModalContextController({children}: {|children: React$Node|}) {\n const [isModalShowing, setIsModalShowing] = useState<boolean>(false);\n\n const value = useMemo(() => ({isModalShowing, setIsModalShowing}), [\n isModalShowing,\n setIsModalShowing,\n ]);\n\n return (\n <SettingsModalContext.Provider value={value}>\n {children}\n </SettingsModalContext.Provider>\n );\n}\n\nexport {SettingsModalContext, SettingsModalContextController};\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useCallback, useContext, useMemo} from 'react';\nimport {SettingsModalContext} from './SettingsModalContext';\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\nimport {StoreContext} from '../context';\nimport {useSubscription} from '../hooks';\n\nexport default function SettingsModalContextToggle() {\n const {setIsModalShowing} = useContext(SettingsModalContext);\n const store = useContext(StoreContext);\n const {profilerStore} = store;\n\n const showFilterModal = useCallback(() => setIsModalShowing(true), [\n setIsModalShowing,\n ]);\n\n // Updating preferences while profiling is in progress could break things (e.g. filtering)\n // Explicitly disallow it for now.\n const isProfilingSubscription = useMemo(\n () => ({\n getCurrentValue: () => profilerStore.isProfiling,\n subscribe: (callback: Function) => {\n profilerStore.addListener('isProfiling', callback);\n return () => profilerStore.removeListener('isProfiling', callback);\n },\n }),\n [profilerStore],\n );\n const isProfiling = useSubscription<boolean>(isProfilingSubscription);\n\n return (\n <Button\n disabled={isProfiling}\n onClick={showFilterModal}\n title=\"View settings\">\n <ButtonIcon type=\"settings\" />\n </Button>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport {createContext} from 'react';\n\nconst TreeFocusedContext = createContext<boolean>(false);\n\nexport default TreeFocusedContext;\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useContext, useMemo} from 'react';\nimport {TreeStateContext} from './TreeContext';\nimport {SettingsContext} from '../Settings/SettingsContext';\nimport TreeFocusedContext from './TreeFocusedContext';\nimport {StoreContext} from '../context';\nimport {useSubscription} from '../hooks';\n\nimport styles from './SelectedTreeHighlight.css';\n\ntype Data = {|\n startIndex: number,\n stopIndex: number,\n|};\n\nexport default function SelectedTreeHighlight(_: {||}) {\n const {lineHeight} = useContext(SettingsContext);\n const store = useContext(StoreContext);\n const treeFocused = useContext(TreeFocusedContext);\n const {ownerID, selectedElementID} = useContext(TreeStateContext);\n\n const subscription = useMemo(\n () => ({\n getCurrentValue: () => {\n if (\n selectedElementID === null ||\n store.isInsideCollapsedSubTree(selectedElementID)\n ) {\n return null;\n }\n\n const element = store.getElementByID(selectedElementID);\n if (\n element === null ||\n element.isCollapsed ||\n element.children.length === 0\n ) {\n return null;\n }\n\n const startIndex = store.getIndexOfElementID(element.children[0]);\n if (startIndex === null) {\n return null;\n }\n\n let stopIndex = null;\n let current = element;\n while (current !== null) {\n if (current.isCollapsed || current.children.length === 0) {\n // We've found the last/deepest descendant.\n stopIndex = store.getIndexOfElementID(current.id);\n current = null;\n } else {\n const lastChildID = current.children[current.children.length - 1];\n current = store.getElementByID(lastChildID);\n }\n }\n\n if (stopIndex === null) {\n return null;\n }\n\n return {\n startIndex,\n stopIndex,\n };\n },\n subscribe: (callback: Function) => {\n store.addListener('mutated', callback);\n return () => {\n store.removeListener('mutated', callback);\n };\n },\n }),\n [selectedElementID, store],\n );\n const data = useSubscription<Data | null>(subscription);\n\n if (ownerID !== null) {\n return null;\n }\n\n if (data === null) {\n return null;\n }\n\n const {startIndex, stopIndex} = data;\n\n return (\n <div\n className={treeFocused ? styles.Active : styles.Inactive}\n style={{\n position: 'absolute',\n top: `${startIndex * lineHeight}px`,\n height: `${(stopIndex + 1 - startIndex) * lineHeight}px`,\n }}\n />\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {\n Fragment,\n Suspense,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport AutoSizer from 'react-virtualized-auto-sizer';\nimport {FixedSizeList} from 'react-window';\nimport {TreeDispatcherContext, TreeStateContext} from './TreeContext';\nimport {SettingsContext} from '../Settings/SettingsContext';\nimport {BridgeContext, StoreContext} from '../context';\nimport ElementView from './Element';\nimport InspectHostNodesToggle from './InspectHostNodesToggle';\nimport OwnersStack from './OwnersStack';\nimport SearchInput from './SearchInput';\nimport SettingsModalContextToggle from 'react-devtools-shared/src/devtools/views/Settings/SettingsModalContextToggle';\nimport SelectedTreeHighlight from './SelectedTreeHighlight';\nimport TreeFocusedContext from './TreeFocusedContext';\nimport {useHighlightNativeElement} from '../hooks';\n\nimport styles from './Tree.css';\n\n// Never indent more than this number of pixels (even if we have the room).\nconst DEFAULT_INDENTATION_SIZE = 12;\n\nexport type ItemData = {|\n numElements: number,\n isNavigatingWithKeyboard: boolean,\n lastScrolledIDRef: {current: number | null, ...},\n onElementMouseEnter: (id: number) => void,\n treeFocused: boolean,\n|};\n\ntype Props = {||};\n\nexport default function Tree(props: Props) {\n const dispatch = useContext(TreeDispatcherContext);\n const {\n numElements,\n ownerID,\n searchIndex,\n searchResults,\n selectedElementID,\n selectedElementIndex,\n } = useContext(TreeStateContext);\n const bridge = useContext(BridgeContext);\n const store = useContext(StoreContext);\n const [isNavigatingWithKeyboard, setIsNavigatingWithKeyboard] = useState(\n false,\n );\n const {\n highlightNativeElement,\n clearHighlightNativeElement,\n } = useHighlightNativeElement();\n const treeRef = useRef<HTMLDivElement | null>(null);\n const focusTargetRef = useRef<HTMLDivElement | null>(null);\n\n const [treeFocused, setTreeFocused] = useState<boolean>(false);\n\n const {lineHeight} = useContext(SettingsContext);\n\n // Make sure a newly selected element is visible in the list.\n // This is helpful for things like the owners list and search.\n //\n // TRICKY:\n // It's important to use a callback ref for this, rather than a ref object and an effect.\n // As an optimization, the AutoSizer component does not render children when their size would be 0.\n // This means that in some cases (if the browser panel size is initially really small),\n // the Tree component might render without rendering an inner List.\n // In this case, the list ref would be null on mount (when the scroll effect runs),\n // meaning the scroll action would be skipped (since ref updates don't re-run effects).\n // Using a callback ref accounts for this case...\n const listCallbackRef = useCallback(\n list => {\n if (list != null && selectedElementIndex !== null) {\n list.scrollToItem(selectedElementIndex, 'smart');\n }\n },\n [selectedElementIndex],\n );\n\n // Picking an element in the inspector should put focus into the tree.\n // This ensures that keyboard navigation works right after picking a node.\n useEffect(() => {\n function handleStopInspectingNative(didSelectNode) {\n if (didSelectNode && focusTargetRef.current !== null) {\n focusTargetRef.current.focus();\n }\n }\n bridge.addListener('stopInspectingNative', handleStopInspectingNative);\n return () =>\n bridge.removeListener('stopInspectingNative', handleStopInspectingNative);\n }, [bridge]);\n\n // This ref is passed down the context to elements.\n // It lets them avoid autoscrolling to the same item many times\n // when a selected virtual row goes in and out of the viewport.\n const lastScrolledIDRef = useRef<number | null>(null);\n\n // Navigate the tree with up/down arrow keys.\n useEffect(() => {\n if (treeRef.current === null) {\n return () => {};\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if ((event: any).target.tagName === 'INPUT' || event.defaultPrevented) {\n return;\n }\n\n // TODO We should ignore arrow keys if the focus is outside of DevTools.\n // Otherwise the inline (embedded) DevTools might change selection unexpectedly,\n // e.g. when a text input or a select has focus.\n\n let element;\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n if (event.altKey) {\n dispatch({type: 'SELECT_NEXT_SIBLING_IN_TREE'});\n } else {\n dispatch({type: 'SELECT_NEXT_ELEMENT_IN_TREE'});\n }\n break;\n case 'ArrowLeft':\n event.preventDefault();\n element =\n selectedElementID !== null\n ? store.getElementByID(selectedElementID)\n : null;\n if (element !== null) {\n if (event.altKey) {\n if (element.ownerID !== null) {\n dispatch({type: 'SELECT_OWNER_LIST_PREVIOUS_ELEMENT_IN_TREE'});\n }\n } else {\n if (element.children.length > 0 && !element.isCollapsed) {\n store.toggleIsCollapsed(element.id, true);\n } else {\n dispatch({type: 'SELECT_PARENT_ELEMENT_IN_TREE'});\n }\n }\n }\n break;\n case 'ArrowRight':\n event.preventDefault();\n element =\n selectedElementID !== null\n ? store.getElementByID(selectedElementID)\n : null;\n if (element !== null) {\n if (event.altKey) {\n dispatch({type: 'SELECT_OWNER_LIST_NEXT_ELEMENT_IN_TREE'});\n } else {\n if (element.children.length > 0 && element.isCollapsed) {\n store.toggleIsCollapsed(element.id, false);\n } else {\n dispatch({type: 'SELECT_CHILD_ELEMENT_IN_TREE'});\n }\n }\n }\n break;\n case 'ArrowUp':\n event.preventDefault();\n if (event.altKey) {\n dispatch({type: 'SELECT_PREVIOUS_SIBLING_IN_TREE'});\n } else {\n dispatch({type: 'SELECT_PREVIOUS_ELEMENT_IN_TREE'});\n }\n break;\n default:\n return;\n }\n setIsNavigatingWithKeyboard(true);\n };\n\n // It's important to listen to the ownerDocument to support the browser extension.\n // Here we use portals to render individual tabs (e.g. Profiler),\n // and the root document might belong to a different window.\n const ownerDocument = treeRef.current.ownerDocument;\n ownerDocument.addEventListener('keydown', handleKeyDown);\n\n return () => {\n ownerDocument.removeEventListener('keydown', handleKeyDown);\n };\n }, [dispatch, selectedElementID, store]);\n\n // Focus management.\n const handleBlur = useCallback(() => setTreeFocused(false), []);\n const handleFocus = useCallback(() => {\n setTreeFocused(true);\n\n if (selectedElementIndex === null && numElements > 0) {\n dispatch({\n type: 'SELECT_ELEMENT_AT_INDEX',\n payload: 0,\n });\n }\n }, [dispatch, numElements, selectedElementIndex]);\n\n const handleKeyPress = useCallback(\n event => {\n switch (event.key) {\n case 'Enter':\n case ' ':\n if (selectedElementID !== null) {\n dispatch({type: 'SELECT_OWNER', payload: selectedElementID});\n }\n break;\n default:\n break;\n }\n },\n [dispatch, selectedElementID],\n );\n\n // If we switch the selected element while using the keyboard,\n // start highlighting it in the DOM instead of the last hovered node.\n const searchRef = useRef({searchIndex, searchResults});\n useEffect(() => {\n let didSelectNewSearchResult = false;\n if (\n searchRef.current.searchIndex !== searchIndex ||\n searchRef.current.searchResults !== searchResults\n ) {\n searchRef.current.searchIndex = searchIndex;\n searchRef.current.searchResults = searchResults;\n didSelectNewSearchResult = true;\n }\n if (isNavigatingWithKeyboard || didSelectNewSearchResult) {\n if (selectedElementID !== null) {\n highlightNativeElement(selectedElementID);\n } else {\n clearHighlightNativeElement();\n }\n }\n }, [\n bridge,\n isNavigatingWithKeyboard,\n highlightNativeElement,\n searchIndex,\n searchResults,\n selectedElementID,\n ]);\n\n // Highlight last hovered element.\n const handleElementMouseEnter = useCallback(\n id => {\n // Ignore hover while we're navigating with keyboard.\n // This avoids flicker from the hovered nodes under the mouse.\n if (!isNavigatingWithKeyboard) {\n highlightNativeElement(id);\n }\n },\n [isNavigatingWithKeyboard, highlightNativeElement],\n );\n\n const handleMouseMove = useCallback(() => {\n // We started using the mouse again.\n // This will enable hover styles in individual rows.\n setIsNavigatingWithKeyboard(false);\n }, []);\n\n const handleMouseLeave = clearHighlightNativeElement;\n\n // Let react-window know to re-render any time the underlying tree data changes.\n // This includes the owner context, since it controls a filtered view of the tree.\n const itemData = useMemo<ItemData>(\n () => ({\n numElements,\n isNavigatingWithKeyboard,\n onElementMouseEnter: handleElementMouseEnter,\n lastScrolledIDRef,\n treeFocused,\n }),\n [\n numElements,\n isNavigatingWithKeyboard,\n handleElementMouseEnter,\n lastScrolledIDRef,\n treeFocused,\n ],\n );\n\n const itemKey = useCallback(\n (index: number) => store.getElementIDAtIndex(index),\n [store],\n );\n\n return (\n <TreeFocusedContext.Provider value={treeFocused}>\n <div className={styles.Tree} ref={treeRef}>\n <div className={styles.SearchInput}>\n {store.supportsNativeInspection && (\n <Fragment>\n <InspectHostNodesToggle />\n <div className={styles.VRule} />\n </Fragment>\n )}\n <Suspense fallback={<Loading />}>\n {ownerID !== null ? <OwnersStack /> : <SearchInput />}\n </Suspense>\n <div className={styles.VRule} />\n <SettingsModalContextToggle />\n </div>\n <div\n className={styles.AutoSizerWrapper}\n onBlur={handleBlur}\n onFocus={handleFocus}\n onKeyPress={handleKeyPress}\n onMouseMove={handleMouseMove}\n onMouseLeave={handleMouseLeave}\n ref={focusTargetRef}\n tabIndex={0}>\n <AutoSizer>\n {({height, width}) => (\n // $FlowFixMe https://github.com/facebook/flow/issues/7341\n <FixedSizeList\n className={styles.List}\n height={height}\n innerElementType={InnerElementType}\n itemCount={numElements}\n itemData={itemData}\n itemKey={itemKey}\n itemSize={lineHeight}\n ref={listCallbackRef}\n width={width}>\n {ElementView}\n </FixedSizeList>\n )}\n </AutoSizer>\n </div>\n </div>\n </TreeFocusedContext.Provider>\n );\n}\n\n// Indentation size can be adjusted but child width is fixed.\n// We need to adjust indentations so the widest child can fit without overflowing.\n// Sometimes the widest child is also the deepest in the tree:\n// ┏----------------------┓\n// ┆ <Foo> ┆\n// ┆ ••••<Foobar> ┆\n// ┆ ••••••••<Baz> ┆\n// ┗----------------------┛\n//\n// But this is not always the case.\n// Even with the above example, a change in indentation may change the overall widest child:\n// ┏----------------------┓\n// ┆ <Foo> ┆\n// ┆ ••<Foobar> ┆\n// ┆ ••••<Baz> ┆\n// ┗----------------------┛\n//\n// In extreme cases this difference can be important:\n// ┏----------------------┓\n// ┆ <ReallyLongName> ┆\n// ┆ ••<Foo> ┆\n// ┆ ••••<Bar> ┆\n// ┆ ••••••<Baz> ┆\n// ┆ ••••••••<Qux> ┆\n// ┗----------------------┛\n//\n// In the above example, the current indentation is fine,\n// but if we naively assumed that the widest element is also the deepest element,\n// we would end up compressing the indentation unnecessarily:\n// ┏----------------------┓\n// ┆ <ReallyLongName> ┆\n// ┆ •<Foo> ┆\n// ┆ ••<Bar> ┆\n// ┆ •••<Baz> ┆\n// ┆ ••••<Qux> ┆\n// ┗----------------------┛\n//\n// The way we deal with this is to compute the max indentation size that can fit each child,\n// given the child's fixed width and depth within the tree.\n// Then we take the smallest of these indentation sizes...\nfunction updateIndentationSizeVar(\n innerDiv: HTMLDivElement,\n cachedChildWidths: WeakMap<HTMLElement, number>,\n indentationSizeRef: {|current: number|},\n prevListWidthRef: {|current: number|},\n): void {\n const list = ((innerDiv.parentElement: any): HTMLDivElement);\n const listWidth = list.clientWidth;\n\n // Skip measurements when the Components panel is hidden.\n if (listWidth === 0) {\n return;\n }\n\n // Reset the max indentation size if the width of the tree has increased.\n if (listWidth > prevListWidthRef.current) {\n indentationSizeRef.current = DEFAULT_INDENTATION_SIZE;\n }\n prevListWidthRef.current = listWidth;\n\n let maxIndentationSize: number = indentationSizeRef.current;\n\n // eslint-disable-next-line no-for-of-loops/no-for-of-loops\n for (const child of innerDiv.children) {\n const depth = parseInt(child.getAttribute('data-depth'), 10) || 0;\n\n let childWidth: number = 0;\n\n const cachedChildWidth = cachedChildWidths.get(child);\n if (cachedChildWidth != null) {\n childWidth = cachedChildWidth;\n } else {\n const {firstElementChild} = child;\n\n // Skip over e.g. the guideline element\n if (firstElementChild != null) {\n childWidth = firstElementChild.clientWidth;\n cachedChildWidths.set(child, childWidth);\n }\n }\n\n const remainingWidth = Math.max(0, listWidth - childWidth);\n\n maxIndentationSize = Math.min(maxIndentationSize, remainingWidth / depth);\n }\n\n indentationSizeRef.current = maxIndentationSize;\n\n list.style.setProperty('--indentation-size', `${maxIndentationSize}px`);\n}\n\nfunction InnerElementType({children, style, ...rest}) {\n const {ownerID} = useContext(TreeStateContext);\n\n const cachedChildWidths = useMemo<WeakMap<HTMLElement, number>>(\n () => new WeakMap(),\n [],\n );\n\n // This ref tracks the current indentation size.\n // We decrease indentation to fit wider/deeper trees.\n // We intentionally do not increase it again afterward, to avoid the perception of content \"jumping\"\n // e.g. clicking to toggle/collapse a row might otherwise jump horizontally beneath your cursor,\n // e.g. scrolling a wide row off screen could cause narrower rows to jump to the right some.\n //\n // There are two exceptions for this:\n // 1. The first is when the width of the tree increases.\n // The user may have resized the window specifically to make more room for DevTools.\n // In either case, this should reset our max indentation size logic.\n // 2. The second is when the user enters or exits an owner tree.\n const indentationSizeRef = useRef<number>(DEFAULT_INDENTATION_SIZE);\n const prevListWidthRef = useRef<number>(0);\n const prevOwnerIDRef = useRef<number | null>(ownerID);\n const divRef = useRef<HTMLDivElement | null>(null);\n\n // We shouldn't retain this width across different conceptual trees though,\n // so when the user opens the \"owners tree\" view, we should discard the previous width.\n if (ownerID !== prevOwnerIDRef.current) {\n prevOwnerIDRef.current = ownerID;\n indentationSizeRef.current = DEFAULT_INDENTATION_SIZE;\n }\n\n // When we render new content, measure to see if we need to shrink indentation to fit it.\n useEffect(() => {\n if (divRef.current !== null) {\n updateIndentationSizeVar(\n divRef.current,\n cachedChildWidths,\n indentationSizeRef,\n prevListWidthRef,\n );\n }\n });\n\n // This style override enables the background color to fill the full visible width,\n // when combined with the CSS tweaks in Element.\n // A lot of options were considered; this seemed the one that requires the least code.\n // See https://github.com/bvaughn/react-devtools-experimental/issues/9\n return (\n <div\n className={styles.InnerElementType}\n ref={divRef}\n style={style}\n {...rest}>\n <SelectedTreeHighlight />\n {children}\n </div>\n );\n}\n\nfunction Loading() {\n return <div className={styles.Loading}>Loading...</div>;\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport {unstable_batchedUpdates as batchedUpdates} from 'react-dom';\nimport {createResource} from '../../cache';\nimport {BridgeContext, StoreContext} from '../context';\nimport {hydrate, fillInPath} from 'react-devtools-shared/src/hydration';\nimport {TreeStateContext} from './TreeContext';\nimport {separateDisplayNameAndHOCs} from 'react-devtools-shared/src/utils';\n\nimport type {\n InspectedElement as InspectedElementBackend,\n InspectedElementPayload,\n} from 'react-devtools-shared/src/backend/types';\nimport type {\n DehydratedData,\n Element,\n InspectedElement as InspectedElementFrontend,\n} from 'react-devtools-shared/src/devtools/views/Components/types';\nimport type {Resource, Thenable} from '../../cache';\n\nexport type StoreAsGlobal = (id: number, path: Array<string | number>) => void;\n\nexport type CopyInspectedElementPath = (\n id: number,\n path: Array<string | number>,\n) => void;\n\nexport type GetInspectedElementPath = (\n id: number,\n path: Array<string | number>,\n) => void;\n\nexport type GetInspectedElement = (\n id: number,\n) => InspectedElementFrontend | null;\n\nexport type InspectedElementContextType = {|\n copyInspectedElementPath: CopyInspectedElementPath,\n getInspectedElementPath: GetInspectedElementPath,\n getInspectedElement: GetInspectedElement,\n storeAsGlobal: StoreAsGlobal,\n|};\n\nconst InspectedElementContext = createContext<InspectedElementContextType>(\n ((null: any): InspectedElementContextType),\n);\nInspectedElementContext.displayName = 'InspectedElementContext';\n\ntype ResolveFn = (inspectedElement: InspectedElementFrontend) => void;\ntype InProgressRequest = {|\n promise: Thenable<InspectedElementFrontend>,\n resolveFn: ResolveFn,\n|};\n\nconst inProgressRequests: WeakMap<Element, InProgressRequest> = new WeakMap();\nconst resource: Resource<\n Element,\n Element,\n InspectedElementFrontend,\n> = createResource(\n (element: Element) => {\n const request = inProgressRequests.get(element);\n if (request != null) {\n return request.promise;\n }\n\n let resolveFn = ((null: any): ResolveFn);\n const promise = new Promise(resolve => {\n resolveFn = resolve;\n });\n\n inProgressRequests.set(element, {promise, resolveFn});\n\n return promise;\n },\n (element: Element) => element,\n {useWeakMap: true},\n);\n\ntype Props = {|\n children: React$Node,\n|};\n\nfunction InspectedElementContextController({children}: Props) {\n const bridge = useContext(BridgeContext);\n const store = useContext(StoreContext);\n\n const storeAsGlobalCount = useRef(1);\n\n // Ask the backend to store the value at the specified path as a global variable.\n const storeAsGlobal = useCallback<GetInspectedElementPath>(\n (id: number, path: Array<string | number>) => {\n const rendererID = store.getRendererIDForElement(id);\n if (rendererID !== null) {\n bridge.send('storeAsGlobal', {\n count: storeAsGlobalCount.current++,\n id,\n path,\n rendererID,\n });\n }\n },\n [bridge, store],\n );\n\n // Ask the backend to copy the specified path to the clipboard.\n const copyInspectedElementPath = useCallback<GetInspectedElementPath>(\n (id: number, path: Array<string | number>) => {\n const rendererID = store.getRendererIDForElement(id);\n if (rendererID !== null) {\n bridge.send('copyElementPath', {id, path, rendererID});\n }\n },\n [bridge, store],\n );\n\n // Ask the backend to fill in a \"dehydrated\" path; this will result in a \"inspectedElement\".\n const getInspectedElementPath = useCallback<GetInspectedElementPath>(\n (id: number, path: Array<string | number>) => {\n const rendererID = store.getRendererIDForElement(id);\n if (rendererID !== null) {\n bridge.send('inspectElement', {id, path, rendererID});\n }\n },\n [bridge, store],\n );\n\n const getInspectedElement = useCallback<GetInspectedElement>(\n (id: number) => {\n const element = store.getElementByID(id);\n if (element !== null) {\n return resource.read(element);\n } else {\n return null;\n }\n },\n [store],\n );\n\n // It's very important that this context consumes selectedElementID and not inspectedElementID.\n // Otherwise the effect that sends the \"inspect\" message across the bridge-\n // would itself be blocked by the same render that suspends (waiting for the data).\n const {selectedElementID} = useContext(TreeStateContext);\n\n const [\n currentlyInspectedElement,\n setCurrentlyInspectedElement,\n ] = useState<InspectedElementFrontend | null>(null);\n\n // This effect handler invalidates the suspense cache and schedules rendering updates with React.\n useEffect(() => {\n const onInspectedElement = (data: InspectedElementPayload) => {\n const {id} = data;\n\n let element;\n\n switch (data.type) {\n case 'no-change':\n case 'not-found':\n // No-op\n break;\n case 'hydrated-path':\n // Merge new data into previous object and invalidate cache\n element = store.getElementByID(id);\n if (element !== null) {\n if (currentlyInspectedElement != null) {\n const value = hydrateHelper(data.value, data.path);\n const inspectedElement = {...currentlyInspectedElement};\n\n fillInPath(inspectedElement, data.value, data.path, value);\n\n resource.write(element, inspectedElement);\n\n // Schedule update with React if the currently-selected element has been invalidated.\n if (id === selectedElementID) {\n setCurrentlyInspectedElement(inspectedElement);\n }\n }\n }\n break;\n case 'full-data':\n const {\n canEditFunctionProps,\n canEditFunctionPropsDeletePaths,\n canEditFunctionPropsRenamePaths,\n canEditHooks,\n canEditHooksAndDeletePaths,\n canEditHooksAndRenamePaths,\n canToggleSuspense,\n canViewSource,\n hasLegacyContext,\n source,\n type,\n owners,\n context,\n hooks,\n props,\n rendererPackageName,\n rendererVersion,\n rootType,\n state,\n key,\n } = ((data.value: any): InspectedElementBackend);\n\n const inspectedElement: InspectedElementFrontend = {\n canEditFunctionProps,\n canEditFunctionPropsDeletePaths,\n canEditFunctionPropsRenamePaths,\n canEditHooks,\n canEditHooksAndDeletePaths,\n canEditHooksAndRenamePaths,\n canToggleSuspense,\n canViewSource,\n hasLegacyContext,\n id,\n key,\n rendererPackageName,\n rendererVersion,\n rootType,\n source,\n type,\n owners:\n owners === null\n ? null\n : owners.map(owner => {\n const [\n displayName,\n hocDisplayNames,\n ] = separateDisplayNameAndHOCs(\n owner.displayName,\n owner.type,\n );\n return {\n ...owner,\n displayName,\n hocDisplayNames,\n };\n }),\n context: hydrateHelper(context),\n hooks: hydrateHelper(hooks),\n props: hydrateHelper(props),\n state: hydrateHelper(state),\n };\n\n element = store.getElementByID(id);\n if (element !== null) {\n const request = inProgressRequests.get(element);\n if (request != null) {\n inProgressRequests.delete(element);\n batchedUpdates(() => {\n request.resolveFn(inspectedElement);\n setCurrentlyInspectedElement(inspectedElement);\n });\n } else {\n resource.write(element, inspectedElement);\n\n // Schedule update with React if the currently-selected element has been invalidated.\n if (id === selectedElementID) {\n setCurrentlyInspectedElement(inspectedElement);\n }\n }\n }\n break;\n default:\n break;\n }\n };\n\n bridge.addListener('inspectedElement', onInspectedElement);\n return () => bridge.removeListener('inspectedElement', onInspectedElement);\n }, [bridge, currentlyInspectedElement, selectedElementID, store]);\n\n // This effect handler polls for updates on the currently selected element.\n useEffect(() => {\n if (selectedElementID === null) {\n return () => {};\n }\n\n const rendererID = store.getRendererIDForElement(selectedElementID);\n\n let timeoutID: TimeoutID | null = null;\n\n const sendRequest = () => {\n timeoutID = null;\n\n if (rendererID !== null) {\n bridge.send('inspectElement', {id: selectedElementID, rendererID});\n }\n };\n\n // Send the initial inspection request.\n // We'll poll for an update in the response handler below.\n sendRequest();\n\n const onInspectedElement = (data: InspectedElementPayload) => {\n // If this is the element we requested, wait a little bit and then ask for another update.\n if (data.id === selectedElementID) {\n switch (data.type) {\n case 'no-change':\n case 'full-data':\n case 'hydrated-path':\n if (timeoutID !== null) {\n clearTimeout(timeoutID);\n }\n timeoutID = setTimeout(sendRequest, 1000);\n break;\n default:\n break;\n }\n }\n };\n\n bridge.addListener('inspectedElement', onInspectedElement);\n\n return () => {\n bridge.removeListener('inspectedElement', onInspectedElement);\n\n if (timeoutID !== null) {\n clearTimeout(timeoutID);\n }\n };\n }, [bridge, selectedElementID, store]);\n\n const value = useMemo(\n () => ({\n copyInspectedElementPath,\n getInspectedElement,\n getInspectedElementPath,\n storeAsGlobal,\n }),\n // InspectedElement is used to invalidate the cache and schedule an update with React.\n [\n copyInspectedElementPath,\n currentlyInspectedElement,\n getInspectedElement,\n getInspectedElementPath,\n storeAsGlobal,\n ],\n );\n\n return (\n <InspectedElementContext.Provider value={value}>\n {children}\n </InspectedElementContext.Provider>\n );\n}\n\nfunction hydrateHelper(\n dehydratedData: DehydratedData | null,\n path?: Array<string | number>,\n): Object | null {\n if (dehydratedData !== null) {\n const {cleaned, data, unserializable} = dehydratedData;\n\n if (path) {\n const {length} = path;\n if (length > 0) {\n // Hydration helper requires full paths, but inspection dehydrates with relative paths.\n // In that event it's important that we adjust the \"cleaned\" paths to match.\n return hydrate(\n data,\n cleaned.map(cleanedPath => cleanedPath.slice(length)),\n unserializable.map(unserializablePath =>\n unserializablePath.slice(length),\n ),\n );\n }\n }\n\n return hydrate(data, cleaned, unserializable);\n } else {\n return null;\n }\n}\n\nexport {InspectedElementContext, InspectedElementContextController};\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {Component} from 'react';\nimport Button from './Button';\nimport ButtonIcon from './ButtonIcon';\nimport Icon from './Icon';\nimport styles from './ErrorBoundary.css';\nimport Store from 'react-devtools-shared/src/devtools/store';\n\ntype Props = {|\n children: React$Node,\n onRetry?: (store: Store) => void,\n store: Store,\n|};\n\ntype State = {|\n callStack: string | null,\n componentStack: string | null,\n errorMessage: string | null,\n hasError: boolean,\n|};\n\nconst InitialState: State = {\n callStack: null,\n componentStack: null,\n errorMessage: null,\n hasError: false,\n};\n\nexport default class ErrorBoundary extends Component<Props, State> {\n state: State = InitialState;\n\n componentDidCatch(error: any, {componentStack}: any) {\n const errorMessage =\n typeof error === 'object' && error.hasOwnProperty('message')\n ? error.message\n : error;\n\n const callStack =\n typeof error === 'object' && error.hasOwnProperty('stack')\n ? error.stack\n .split('\\n')\n .slice(1)\n .join('\\n')\n : null;\n\n this.setState({\n callStack,\n componentStack,\n errorMessage,\n hasError: true,\n });\n }\n\n render() {\n const {children} = this.props;\n const {callStack, componentStack, errorMessage, hasError} = this.state;\n\n let bugURL = process.env.GITHUB_URL;\n if (bugURL) {\n const title = `Error: \"${errorMessage || ''}\"`;\n const label = 'Component: Developer Tools';\n\n let body = 'Describe what you were doing when the bug occurred:';\n body += '\\n1. ';\n body += '\\n2. ';\n body += '\\n3. ';\n body += '\\n\\n---------------------------------------------';\n body += '\\nPlease do not remove the text below this line';\n body += '\\n---------------------------------------------';\n body += `\\n\\nDevTools version: ${process.env.DEVTOOLS_VERSION || ''}`;\n if (callStack) {\n body += `\\n\\nCall stack: ${callStack.trim()}`;\n }\n if (componentStack) {\n body += `\\n\\nComponent stack: ${componentStack.trim()}`;\n }\n\n bugURL += `/issues/new?labels=${encodeURI(label)}&title=${encodeURI(\n title,\n )}&body=${encodeURI(body)}`;\n }\n\n if (hasError) {\n return (\n <div className={styles.ErrorBoundary}>\n <div className={styles.Header}>\n Uncaught Error: {errorMessage || ''}\n </div>\n <div className={styles.IconAndLinkRow}>\n <Button\n className={styles.RetryButton}\n title=\"Retry\"\n onClick={this.handleRetry}>\n <ButtonIcon className={styles.RetryIcon} type=\"reload\" />\n Retry\n </Button>\n {bugURL && (\n <>\n <Icon className={styles.ReportIcon} type=\"bug\" />\n <a\n className={styles.ReportLink}\n href={bugURL}\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n title=\"Report bug\">\n Report this issue\n </a>\n </>\n )}\n </div>\n {!!callStack && (\n <div className={styles.Stack}>\n The error was thrown {callStack.trim()}\n </div>\n )}\n {!!componentStack && (\n <div className={styles.Stack}>\n The error occurred {componentStack.trim()}\n </div>\n )}\n </div>\n );\n }\n\n return children;\n }\n\n handleRetry = () => {\n const {onRetry, store} = this.props;\n if (typeof onRetry === 'function') {\n onRetry(store);\n }\n\n this.setState(InitialState);\n };\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useContext} from 'react';\nimport {createPortal} from 'react-dom';\nimport ErrorBoundary from './ErrorBoundary';\nimport {StoreContext} from './context';\nimport Store from '../store';\n\nexport type Props = {portalContainer?: Element, ...};\n\nexport default function portaledContent(\n Component: React$StatelessFunctionalComponent<any>,\n onErrorRetry?: (store: Store) => void,\n): React$StatelessFunctionalComponent<any> {\n return function PortaledContent({portalContainer, ...rest}: Props) {\n const store = useContext(StoreContext);\n\n const children = (\n <ErrorBoundary store={store} onRetry={onErrorRetry}>\n <Component {...rest} />\n </ErrorBoundary>\n );\n\n return portalContainer != null\n ? createPortal(children, portalContainer)\n : children;\n };\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useReducer,\n useRef,\n} from 'react';\nimport Button from './Button';\nimport {useModalDismissSignal} from './hooks';\n\nimport styles from './ModalDialog.css';\n\ntype DIALOG_ACTION_HIDE = {|\n type: 'HIDE',\n|};\ntype DIALOG_ACTION_SHOW = {|\n type: 'SHOW',\n canBeDismissed?: boolean,\n content: React$Node,\n title?: React$Node | null,\n|};\n\ntype Action = DIALOG_ACTION_HIDE | DIALOG_ACTION_SHOW;\n\ntype Dispatch = (action: Action) => void;\n\ntype State = {|\n canBeDismissed: boolean,\n content: React$Node | null,\n isVisible: boolean,\n title: React$Node | null,\n|};\n\ntype ModalDialogContextType = {|\n ...State,\n dispatch: Dispatch,\n|};\n\nconst ModalDialogContext = createContext<ModalDialogContextType>(\n ((null: any): ModalDialogContextType),\n);\nModalDialogContext.displayName = 'ModalDialogContext';\n\nfunction dialogReducer(state, action) {\n switch (action.type) {\n case 'HIDE':\n return {\n canBeDismissed: true,\n content: null,\n isVisible: false,\n title: null,\n };\n case 'SHOW':\n return {\n canBeDismissed: action.canBeDismissed !== false,\n content: action.content,\n isVisible: true,\n title: action.title || null,\n };\n default:\n throw new Error(`Invalid action \"${action.type}\"`);\n }\n}\n\ntype Props = {|\n children: React$Node,\n|};\n\nfunction ModalDialogContextController({children}: Props) {\n const [state, dispatch] = useReducer<State, State, Action>(dialogReducer, {\n canBeDismissed: true,\n content: null,\n isVisible: false,\n title: null,\n });\n\n const value = useMemo<ModalDialogContextType>(\n () => ({\n canBeDismissed: state.canBeDismissed,\n content: state.content,\n isVisible: state.isVisible,\n title: state.title,\n dispatch,\n }),\n [state, dispatch],\n );\n\n return (\n <ModalDialogContext.Provider value={value}>\n {children}\n </ModalDialogContext.Provider>\n );\n}\n\nfunction ModalDialog(_: {||}) {\n const {isVisible} = useContext(ModalDialogContext);\n return isVisible ? <ModalDialogImpl /> : null;\n}\n\nfunction ModalDialogImpl(_: {||}) {\n const {canBeDismissed, content, dispatch, title} = useContext(\n ModalDialogContext,\n );\n const dismissModal = useCallback(() => {\n if (canBeDismissed) {\n dispatch({type: 'HIDE'});\n }\n }, [canBeDismissed, dispatch]);\n const dialogRef = useRef<HTMLDivElement | null>(null);\n\n // It's important to trap click events within the dialog,\n // so the dismiss hook will use it for click hit detection.\n // Because multiple tabs may be showing this ModalDialog,\n // the normal `dialog.contains(target)` check would fail on a background tab.\n useModalDismissSignal(dialogRef, dismissModal, false);\n\n // Clicks on the dialog should not bubble.\n // This way we can dismiss by listening to clicks on the background.\n const handleDialogClick = (event: any) => {\n event.stopPropagation();\n\n // It is important that we don't also prevent default,\n // or clicks within the dialog (e.g. on links) won't work.\n };\n\n return (\n <div className={styles.Background} onClick={dismissModal}>\n <div\n ref={dialogRef}\n className={styles.Dialog}\n onClick={handleDialogClick}>\n {title !== null && <div className={styles.Title}>{title}</div>}\n {content}\n {canBeDismissed && (\n <div className={styles.Buttons}>\n <Button\n autoFocus={true}\n className={styles.Button}\n onClick={dismissModal}>\n Okay\n </Button>\n </div>\n )}\n </div>\n </div>\n );\n}\n\nexport {ModalDialog, ModalDialogContext, ModalDialogContextController};\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport {createContext} from 'react';\n\nimport type {\n CanViewElementSource,\n ViewElementSource,\n} from 'react-devtools-shared/src/devtools/views/DevTools';\n\nexport type Context = {|\n canViewElementSourceFunction: CanViewElementSource | null,\n viewElementSourceFunction: ViewElementSource | null,\n|};\n\nconst ViewElementSourceContext = createContext<Context>(((null: any): Context));\nViewElementSourceContext.displayName = 'ViewElementSourceContext';\n\nexport default ViewElementSourceContext;\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useContext} from 'react';\nimport {StoreContext} from '../context';\nimport {\n ComponentFilterElementType,\n ElementTypeSuspense,\n} from 'react-devtools-shared/src/types';\n\nexport default function CannotSuspendWarningMessage() {\n const store = useContext(StoreContext);\n const areSuspenseElementsHidden = !!store.componentFilters.find(\n filter =>\n filter.type === ComponentFilterElementType &&\n filter.value === ElementTypeSuspense &&\n filter.isEnabled,\n );\n\n // Has the user filtered out Suspense nodes from the tree?\n // If so, the selected element might actually be in a Suspense tree after all.\n if (areSuspenseElementsHidden) {\n return (\n <div>\n Suspended state cannot be toggled while Suspense components are hidden.\n Disable the filter and try again.\n </div>\n );\n } else {\n return (\n <div>\n The selected element is not within a Suspense container. Suspending it\n would cause an error.\n </div>\n );\n }\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport {createContext} from 'react';\n\nexport type ShowFn = ({|data: Object, pageX: number, pageY: number|}) => void;\nexport type HideFn = () => void;\n\nconst idToShowFnMap = new Map<string, ShowFn>();\nconst idToHideFnMap = new Map<string, HideFn>();\n\nlet currentHideFn = null;\n\nfunction hideMenu() {\n if (typeof currentHideFn === 'function') {\n currentHideFn();\n }\n}\n\nfunction showMenu({\n data,\n id,\n pageX,\n pageY,\n}: {|\n data: Object,\n id: string,\n pageX: number,\n pageY: number,\n|}) {\n const showFn = idToShowFnMap.get(id);\n if (typeof showFn === 'function') {\n currentHideFn = idToHideFnMap.get(id);\n showFn({data, pageX, pageY});\n }\n}\n\nfunction registerMenu(id: string, showFn: ShowFn, hideFn: HideFn) {\n if (idToShowFnMap.has(id)) {\n throw Error(`Context menu with id \"${id}\" already registered.`);\n }\n\n idToShowFnMap.set(id, showFn);\n idToHideFnMap.set(id, hideFn);\n\n return function unregisterMenu() {\n idToShowFnMap.delete(id);\n idToHideFnMap.delete(id);\n };\n}\n\nexport type RegistryContextType = {|\n hideMenu: () => void,\n showMenu: ({|\n data: Object,\n id: string,\n pageX: number,\n pageY: number,\n |}) => void,\n registerMenu: (string, ShowFn, HideFn) => Function,\n|};\n\nexport const RegistryContext = createContext<RegistryContextType>({\n hideMenu,\n showMenu,\n registerMenu,\n});\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useContext, useEffect, useLayoutEffect, useRef, useState} from 'react';\nimport {createPortal} from 'react-dom';\nimport {RegistryContext} from './Contexts';\n\nimport styles from './ContextMenu.css';\n\nimport type {RegistryContextType} from './Contexts';\n\nfunction repositionToFit(element: HTMLElement, pageX: number, pageY: number) {\n const ownerWindow = element.ownerDocument.defaultView;\n if (element !== null) {\n if (pageY + element.offsetHeight >= ownerWindow.innerHeight) {\n if (pageY - element.offsetHeight > 0) {\n element.style.top = `${pageY - element.offsetHeight}px`;\n } else {\n element.style.top = '0px';\n }\n } else {\n element.style.top = `${pageY}px`;\n }\n\n if (pageX + element.offsetWidth >= ownerWindow.innerWidth) {\n if (pageX - element.offsetWidth > 0) {\n element.style.left = `${pageX - element.offsetWidth}px`;\n } else {\n element.style.left = '0px';\n }\n } else {\n element.style.left = `${pageX}px`;\n }\n }\n}\n\nconst HIDDEN_STATE = {\n data: null,\n isVisible: false,\n pageX: 0,\n pageY: 0,\n};\n\ntype Props = {|\n children: (data: Object) => React$Node,\n id: string,\n|};\n\nexport default function ContextMenu({children, id}: Props) {\n const {registerMenu} = useContext<RegistryContextType>(RegistryContext);\n\n const [state, setState] = useState(HIDDEN_STATE);\n\n const bodyAccessorRef = useRef(null);\n const containerRef = useRef(null);\n const menuRef = useRef(null);\n\n useEffect(() => {\n const element = bodyAccessorRef.current;\n if (element !== null) {\n const ownerDocument = element.ownerDocument;\n containerRef.current = ownerDocument.createElement('div');\n ownerDocument.body.appendChild(containerRef.current);\n return () => {\n ownerDocument.body.removeChild(containerRef.current);\n };\n }\n }, []);\n\n useEffect(() => {\n const showMenu = ({data, pageX, pageY}) => {\n setState({data, isVisible: true, pageX, pageY});\n };\n const hideMenu = () => setState(HIDDEN_STATE);\n return registerMenu(id, showMenu, hideMenu);\n }, [id]);\n\n useLayoutEffect(() => {\n if (!state.isVisible) {\n return;\n }\n\n const menu = ((menuRef.current: any): HTMLElement);\n const container = containerRef.current;\n if (container !== null) {\n const hideUnlessContains = event => {\n if (!menu.contains(event.target)) {\n setState(HIDDEN_STATE);\n }\n };\n\n const hide = event => {\n setState(HIDDEN_STATE);\n };\n\n const ownerDocument = container.ownerDocument;\n ownerDocument.addEventListener('mousedown', hideUnlessContains);\n ownerDocument.addEventListener('touchstart', hideUnlessContains);\n ownerDocument.addEventListener('keydown', hideUnlessContains);\n\n const ownerWindow = ownerDocument.defaultView;\n ownerWindow.addEventListener('resize', hide);\n\n repositionToFit(menu, state.pageX, state.pageY);\n\n return () => {\n ownerDocument.removeEventListener('mousedown', hideUnlessContains);\n ownerDocument.removeEventListener('touchstart', hideUnlessContains);\n ownerDocument.removeEventListener('keydown', hideUnlessContains);\n\n ownerWindow.removeEventListener('resize', hide);\n };\n }\n }, [state]);\n\n if (!state.isVisible) {\n return <div ref={bodyAccessorRef} />;\n } else {\n const container = containerRef.current;\n if (container !== null) {\n return createPortal(\n <div ref={menuRef} className={styles.ContextMenu}>\n {children(state.data)}\n </div>,\n container,\n );\n } else {\n return null;\n }\n }\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useContext} from 'react';\nimport {RegistryContext} from './Contexts';\n\nimport styles from './ContextMenuItem.css';\n\nimport type {RegistryContextType} from './Contexts';\n\ntype Props = {|\n children: React$Node,\n onClick: () => void,\n title: string,\n|};\n\nexport default function ContextMenuItem({children, onClick, title}: Props) {\n const {hideMenu} = useContext<RegistryContextType>(RegistryContext);\n\n const handleClick = event => {\n onClick();\n hideMenu();\n };\n\n return (\n <div\n className={styles.ContextMenuItem}\n onClick={handleClick}\n onTouchEnd={handleClick}>\n {children}\n </div>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport styles from './HocBadges.css';\n\nimport type {Element} from './types';\n\ntype Props = {|\n element: Element,\n|};\n\nexport default function HocBadges({element}: Props) {\n const {hocDisplayNames} = ((element: any): Element);\n\n if (hocDisplayNames === null) {\n return null;\n }\n\n return (\n <div className={styles.HocBadges}>\n {hocDisplayNames !== null &&\n hocDisplayNames.map(hocDisplayName => (\n <div key={hocDisplayName} className={styles.Badge}>\n {hocDisplayName}\n </div>\n ))}\n </div>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport styles from './AutoSizeInput.css';\n\ntype Props = {\n className?: string,\n onFocus?: (event: FocusEvent) => void,\n placeholder?: string,\n value: any,\n ...\n};\n\nexport default function AutoSizeInput({\n className,\n onFocus,\n placeholder = '',\n value,\n ...rest\n}: Props) {\n const onFocusWrapper = event => {\n const input = event.target;\n if (input !== null) {\n input.selectionStart = 0;\n input.selectionEnd = value.length;\n }\n\n if (typeof onFocus === 'function') {\n onFocus(event);\n }\n };\n\n const isEmpty = value === '' || value === '\"\"';\n\n return (\n <input\n className={[styles.Input, className].join(' ')}\n onFocus={onFocusWrapper}\n placeholder={placeholder}\n style={{\n width: `calc(${isEmpty ? placeholder.length : value.length}ch + 1px)`,\n }}\n value={isEmpty ? '' : value}\n {...rest}\n />\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useCallback, useState} from 'react';\nimport AutoSizeInput from './NativeStyleEditor/AutoSizeInput';\nimport styles from './EditableName.css';\n\ntype Type = 'props' | 'state' | 'context' | 'hooks';\ntype OverrideNameFn = (\n oldName: Array<string | number>,\n newName: Array<string | number>,\n) => void;\n\ntype EditableNameProps = {|\n allowEmpty?: boolean,\n allowWhiteSpace?: boolean,\n autoFocus?: boolean,\n className?: string,\n initialValue?: string,\n overrideName: OverrideNameFn,\n path: Array<string | number>,\n type: Type,\n|};\n\nexport default function EditableName({\n allowEmpty = false,\n allowWhiteSpace = false,\n autoFocus = false,\n className = '',\n initialValue = '',\n overrideName,\n path,\n type,\n}: EditableNameProps) {\n const [editableName, setEditableName] = useState(initialValue);\n const [isValid, setIsValid] = useState(false);\n\n const handleChange = useCallback(\n ({target}) => {\n let value = target.value;\n if (!allowWhiteSpace) {\n value = value.trim();\n }\n\n if (allowEmpty || value !== '') {\n setIsValid(true);\n } else {\n setIsValid(false);\n }\n\n setEditableName(value);\n },\n [overrideName],\n );\n\n const handleKeyDown = useCallback(\n event => {\n // Prevent keydown events from e.g. change selected element in the tree\n event.stopPropagation();\n\n switch (event.key) {\n case 'Enter':\n case 'Tab':\n if (isValid) {\n const basePath = path.slice(0, path.length - 1);\n overrideName(\n [...basePath, initialValue],\n [...basePath, editableName],\n );\n }\n break;\n case 'Escape':\n setEditableName(initialValue);\n break;\n default:\n break;\n }\n },\n [editableName, setEditableName, isValid, initialValue, overrideName],\n );\n\n return (\n <AutoSizeInput\n autoFocus={autoFocus}\n className={[styles.Input, className].join(' ')}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n placeholder=\"new entry\"\n type=\"text\"\n value={editableName}\n />\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {Fragment} from 'react';\nimport styles from './EditableValue.css';\nimport {useEditableValue} from '../hooks';\n\ntype OverrideValueFn = (path: Array<string | number>, value: any) => void;\n\ntype EditableValueProps = {|\n className?: string,\n overrideValue: OverrideValueFn,\n path: Array<string | number>,\n value: any,\n|};\n\nexport default function EditableValue({\n className = '',\n overrideValue,\n path,\n value,\n}: EditableValueProps) {\n const [state, dispatch] = useEditableValue(value);\n const {editableValue, hasPendingChanges, isValid, parsedValue} = state;\n\n const reset = () =>\n dispatch({\n type: 'RESET',\n externalValue: value,\n });\n\n const handleChange = ({target}) =>\n dispatch({\n type: 'UPDATE',\n editableValue: target.value,\n externalValue: value,\n });\n\n const handleCheckBoxToggle = ({target}) => {\n dispatch({\n type: 'UPDATE',\n editableValue: target.checked,\n externalValue: value,\n });\n\n // Unlike <input type=\"text\"> which has both an onChange and an onBlur,\n // <input type=\"checkbox\"> updates state *and* applies changes in a single event.\n // So we read from target.checked rather than parsedValue (which has not yet updated).\n // We also don't check isValid (because that hasn't changed yet either);\n // we don't need to check it anyway, since target.checked is always a boolean.\n overrideValue(path, target.checked);\n };\n\n const handleKeyDown = event => {\n // Prevent keydown events from e.g. change selected element in the tree\n event.stopPropagation();\n\n switch (event.key) {\n case 'Enter':\n applyChanges();\n break;\n case 'Escape':\n reset();\n break;\n default:\n break;\n }\n };\n\n const applyChanges = () => {\n if (isValid && hasPendingChanges) {\n overrideValue(path, parsedValue);\n }\n };\n\n let placeholder = '';\n if (editableValue === undefined) {\n placeholder = '(undefined)';\n } else {\n placeholder = 'Enter valid JSON';\n }\n\n const isBool = parsedValue === true || parsedValue === false;\n\n return (\n <Fragment>\n <input\n autoComplete=\"new-password\"\n className={`${isValid ? styles.Input : styles.Invalid} ${className}`}\n onBlur={applyChanges}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n type=\"text\"\n value={editableValue}\n />\n {isBool && (\n <input\n className={styles.Checkbox}\n checked={parsedValue}\n type=\"checkbox\"\n onChange={handleCheckBoxToggle}\n />\n )}\n </Fragment>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\n/**\n * Converts nested hooks paths to the format expected by the backend.\n * e.g. [''] => ['']\n * e.g. [1, 'value', ...] => [...]\n * e.g. [2, 'subhooks', 1, 'value', ...] => [...]\n * e.g. [1, 'subhooks', 3, 'subhooks', 2, 'value', ...] => [...]\n */\nexport function parseHookPathForEdit(\n path: Array<string | number>,\n): Array<string | number> {\n let index = 0;\n for (let i = 0; i < path.length; i++) {\n if (path[i] === 'value') {\n index = i + 1;\n break;\n }\n }\n return path.slice(index);\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useState} from 'react';\nimport Store from '../../store';\nimport EditableName from './EditableName';\nimport {smartParse} from '../../utils';\nimport {parseHookPathForEdit} from './utils';\nimport styles from './NewArrayValue.css';\n\nimport type {InspectedElement} from './types';\nimport type {FrontendBridge} from 'react-devtools-shared/src/bridge';\n\ntype Props = {|\n bridge: FrontendBridge,\n depth: number,\n hidden: boolean,\n hookID?: ?number,\n index: number,\n inspectedElement: InspectedElement,\n path: Array<string | number>,\n store: Store,\n type: 'props' | 'context' | 'hooks' | 'state',\n|};\n\nexport default function NewArrayValue({\n bridge,\n depth,\n hidden,\n hookID,\n index,\n inspectedElement,\n path,\n store,\n type,\n}: Props) {\n const [key, setKey] = useState<number>(0);\n const [isInvalid, setIsInvalid] = useState(false);\n\n // This is a bit of an unusual usage of the EditableName component,\n // but otherwise it acts the way we want for a new Array entry.\n const overrideName = (oldPath, newPath) => {\n const value = newPath[newPath.length - 1];\n\n let parsedValue;\n let newIsInvalid = true;\n try {\n parsedValue = smartParse(value);\n newIsInvalid = false;\n } catch (error) {}\n\n if (isInvalid !== newIsInvalid) {\n setIsInvalid(newIsInvalid);\n }\n\n if (!newIsInvalid) {\n setKey(key + 1);\n\n const {id} = inspectedElement;\n const rendererID = store.getRendererIDForElement(id);\n if (rendererID !== null) {\n let basePath = path;\n if (hookID != null) {\n basePath = parseHookPathForEdit(basePath);\n }\n\n bridge.send('overrideValueAtPath', {\n type,\n hookID,\n id,\n path: [...basePath, index],\n rendererID,\n value: parsedValue,\n });\n }\n }\n };\n\n return (\n <div\n key={key}\n hidden={hidden}\n style={{\n paddingLeft: `${(depth - 1) * 0.75}rem`,\n }}>\n <div className={styles.NewArrayValue}>\n <EditableName\n allowWhiteSpace={true}\n autoFocus={key > 0}\n className={[styles.EditableName, isInvalid && styles.Invalid].join(\n ' ',\n )}\n initialValue=\"\"\n overrideName={overrideName}\n path={path}\n />\n </div>\n </div>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useState} from 'react';\nimport Store from '../../store';\nimport EditableName from './EditableName';\nimport EditableValue from './EditableValue';\nimport {parseHookPathForEdit} from './utils';\nimport styles from './NewKeyValue.css';\n\nimport type {InspectedElement} from './types';\nimport type {FrontendBridge} from 'react-devtools-shared/src/bridge';\n\ntype Props = {|\n bridge: FrontendBridge,\n depth: number,\n hidden: boolean,\n hookID?: ?number,\n inspectedElement: InspectedElement,\n path: Array<string | number>,\n store: Store,\n type: 'props' | 'state' | 'hooks' | 'context',\n|};\n\nexport default function NewKeyValue({\n bridge,\n depth,\n hidden,\n hookID,\n inspectedElement,\n path,\n store,\n type,\n}: Props) {\n const [newPropKey, setNewPropKey] = useState<number>(0);\n const [newPropName, setNewPropName] = useState<string>('');\n\n const overrideNewEntryName = (oldPath, newPath) => {\n setNewPropName(newPath[newPath.length - 1]);\n };\n\n const overrideNewEntryValue = (newPath, value) => {\n if (!newPropName) {\n return;\n }\n\n setNewPropName('');\n setNewPropKey(newPropKey + 1);\n\n const {id} = inspectedElement;\n const rendererID = store.getRendererIDForElement(id);\n if (rendererID !== null) {\n let basePath = newPath;\n if (hookID != null) {\n basePath = parseHookPathForEdit(basePath);\n }\n\n bridge.send('overrideValueAtPath', {\n type,\n hookID,\n id,\n path: basePath,\n rendererID,\n value,\n });\n }\n };\n\n return (\n <div\n key={newPropKey}\n hidden={hidden}\n style={{\n paddingLeft: `${(depth - 1) * 0.75}rem`,\n }}>\n <div className={styles.NewKeyValue}>\n <EditableName\n autoFocus={newPropKey > 0}\n className={styles.EditableName}\n overrideName={overrideNewEntryName}\n path={[]}\n />\n : \n <EditableValue\n className={styles.EditableValue}\n overrideValue={overrideNewEntryValue}\n path={[...path, newPropName]}\n value={''}\n />\n </div>\n </div>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\n\nimport styles from './ExpandCollapseToggle.css';\n\ntype ExpandCollapseToggleProps = {|\n isOpen: boolean,\n setIsOpen: Function,\n|};\n\nexport default function ExpandCollapseToggle({\n isOpen,\n setIsOpen,\n}: ExpandCollapseToggleProps) {\n return (\n <Button\n className={styles.ExpandCollapseToggle}\n onClick={() => setIsOpen(prevIsOpen => !prevIsOpen)}\n title={`${isOpen ? 'Collapse' : 'Expand'} prop value`}>\n <ButtonIcon type={isOpen ? 'expanded' : 'collapsed'} />\n </Button>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport {useContext, useEffect} from 'react';\nimport {RegistryContext} from './Contexts';\n\nimport type {RegistryContextType} from './Contexts';\nimport type {ElementRef} from 'react';\n\nexport default function useContextMenu({\n data,\n id,\n ref,\n}: {|\n data: Object,\n id: string,\n ref: {current: ElementRef<'div'> | null},\n|}) {\n const {showMenu} = useContext<RegistryContextType>(RegistryContext);\n\n useEffect(() => {\n if (ref.current !== null) {\n const handleContextMenu = (event: MouseEvent | TouchEvent) => {\n event.preventDefault();\n event.stopPropagation();\n\n const pageX =\n (event: any).pageX ||\n (event.touches && (event: any).touches[0].pageX);\n const pageY =\n (event: any).pageY ||\n (event.touches && (event: any).touches[0].pageY);\n\n showMenu({data, id, pageX, pageY});\n };\n\n const trigger = ref.current;\n trigger.addEventListener('contextmenu', handleContextMenu);\n\n return () => {\n trigger.removeEventListener('contextmenu', handleContextMenu);\n };\n }\n }, [data, id, showMenu]);\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useEffect, useRef, useState} from 'react';\nimport EditableName from './EditableName';\nimport EditableValue from './EditableValue';\nimport NewArrayValue from './NewArrayValue';\nimport NewKeyValue from './NewKeyValue';\nimport ExpandCollapseToggle from './ExpandCollapseToggle';\nimport {alphaSortEntries, getMetaValueLabel} from '../utils';\nimport {meta} from '../../../hydration';\nimport useContextMenu from '../../ContextMenu/useContextMenu';\nimport Store from '../../store';\nimport {parseHookPathForEdit} from './utils';\nimport styles from './KeyValue.css';\nimport Button from 'react-devtools-shared/src/devtools/views/Button';\nimport ButtonIcon from 'react-devtools-shared/src/devtools/views/ButtonIcon';\n\nimport type {InspectedElement} from './types';\nimport type {Element} from 'react';\nimport type {FrontendBridge} from 'react-devtools-shared/src/bridge';\nimport type {GetInspectedElementPath} from './InspectedElementContext';\n\ntype Type = 'props' | 'state' | 'context' | 'hooks';\n\ntype KeyValueProps = {|\n alphaSort: boolean,\n bridge: FrontendBridge,\n canDeletePaths: boolean,\n canEditValues: boolean,\n canRenamePaths: boolean,\n canRenamePathsAtDepth?: (depth: number) => boolean,\n depth: number,\n hidden: boolean,\n hookID?: ?number,\n getInspectedElementPath: GetInspectedElementPath,\n inspectedElement: InspectedElement,\n isDirectChildOfAnArray?: boolean,\n name: string,\n path: Array<any>,\n pathRoot: Type,\n store: Store,\n value: any,\n|};\n\nexport default function KeyValue({\n alphaSort,\n bridge,\n canDeletePaths,\n canEditValues,\n canRenamePaths,\n canRenamePathsAtDepth,\n depth,\n getInspectedElementPath,\n inspectedElement,\n isDirectChildOfAnArray,\n hidden,\n hookID,\n name,\n path,\n pathRoot,\n store,\n value,\n}: KeyValueProps) {\n const {id} = inspectedElement;\n\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const prevIsOpenRef = useRef(isOpen);\n const contextMenuTriggerRef = useRef(null);\n\n let isInspectable = false;\n let isReadOnly = false;\n if (value !== null && typeof value === 'object') {\n isInspectable = value[meta.inspectable] && value[meta.size] !== 0;\n isReadOnly = value[meta.readonly];\n }\n\n useEffect(() => {\n if (isInspectable && isOpen && !prevIsOpenRef.current) {\n getInspectedElementPath(id, [pathRoot, ...path]);\n }\n prevIsOpenRef.current = isOpen;\n }, [getInspectedElementPath, isInspectable, isOpen, path, pathRoot]);\n\n const toggleIsOpen = () => setIsOpen(prevIsOpen => !prevIsOpen);\n\n useContextMenu({\n data: {\n path: [pathRoot, ...path],\n type:\n value !== null &&\n typeof value === 'object' &&\n hasOwnProperty.call(value, meta.type)\n ? value[meta.type]\n : typeof value,\n },\n id: 'InspectedElement',\n ref: contextMenuTriggerRef,\n });\n\n const dataType = typeof value;\n const isSimpleType =\n dataType === 'number' ||\n dataType === 'string' ||\n dataType === 'boolean' ||\n value == null;\n\n const style = {\n paddingLeft: `${(depth - 1) * 0.75}rem`,\n };\n\n const overrideValue = (newPath, newValue) => {\n if (hookID != null) {\n newPath = parseHookPathForEdit(newPath);\n }\n\n const rendererID = store.getRendererIDForElement(id);\n if (rendererID !== null) {\n bridge.send('overrideValueAtPath', {\n hookID,\n id,\n path: newPath,\n rendererID,\n type: pathRoot,\n value: newValue,\n });\n }\n };\n\n const deletePath = pathToDelete => {\n if (hookID != null) {\n pathToDelete = parseHookPathForEdit(pathToDelete);\n }\n\n const rendererID = store.getRendererIDForElement(id);\n if (rendererID !== null) {\n bridge.send('deletePath', {\n hookID,\n id,\n path: pathToDelete,\n rendererID,\n type: pathRoot,\n });\n }\n };\n\n const renamePath = (oldPath, newPath) => {\n if (newPath[newPath.length - 1] === '') {\n // Deleting the key suggests an intent to delete the whole path.\n if (canDeletePaths) {\n deletePath(oldPath);\n }\n } else {\n if (hookID != null) {\n oldPath = parseHookPathForEdit(oldPath);\n newPath = parseHookPathForEdit(newPath);\n }\n\n const rendererID = store.getRendererIDForElement(id);\n if (rendererID !== null) {\n bridge.send('renamePath', {\n hookID,\n id,\n newPath,\n oldPath,\n rendererID,\n type: pathRoot,\n });\n }\n }\n };\n\n // TRICKY This is a bit of a hack to account for context and hooks.\n // In these cases, paths can be renamed but only at certain depths.\n // The special \"value\" wrapper for context shouldn't be editable.\n // Only certain types of hooks should be editable.\n let canRenameTheCurrentPath = canRenamePaths;\n if (canRenameTheCurrentPath && typeof canRenamePathsAtDepth === 'function') {\n canRenameTheCurrentPath = canRenamePathsAtDepth(depth);\n }\n\n let renderedName;\n if (isDirectChildOfAnArray) {\n if (canDeletePaths) {\n renderedName = (\n <DeleteToggle name={name} deletePath={deletePath} path={path} />\n );\n } else {\n renderedName = <span className={styles.Name}>{name}</span>;\n }\n } else if (canRenameTheCurrentPath) {\n renderedName = (\n <EditableName\n allowEmpty={canDeletePaths}\n className={styles.EditableName}\n initialValue={name}\n overrideName={renamePath}\n path={path}\n />\n );\n } else {\n renderedName = <span className={styles.Name}>{name}</span>;\n }\n\n let children = null;\n if (isSimpleType) {\n let displayValue = value;\n if (dataType === 'string') {\n displayValue = `\"${value}\"`;\n } else if (dataType === 'boolean') {\n displayValue = value ? 'true' : 'false';\n } else if (value === null) {\n displayValue = 'null';\n } else if (value === undefined) {\n displayValue = 'undefined';\n }\n\n children = (\n <div\n key=\"root\"\n className={styles.Item}\n hidden={hidden}\n ref={contextMenuTriggerRef}\n style={style}>\n <div className={styles.ExpandCollapseToggleSpacer} />\n {renderedName}\n <div className={styles.AfterName}>:</div>\n {canEditValues ? (\n <EditableValue\n overrideValue={overrideValue}\n path={path}\n value={value}\n />\n ) : (\n <span className={styles.Value}>{displayValue}</span>\n )}\n </div>\n );\n } else if (\n hasOwnProperty.call(value, meta.type) &&\n !hasOwnProperty.call(value, meta.unserializable)\n ) {\n children = (\n <div\n key=\"root\"\n className={styles.Item}\n hidden={hidden}\n ref={contextMenuTriggerRef}\n style={style}>\n {isInspectable ? (\n <ExpandCollapseToggle isOpen={isOpen} setIsOpen={setIsOpen} />\n ) : (\n <div className={styles.ExpandCollapseToggleSpacer} />\n )}\n {renderedName}\n <div className={styles.AfterName}>:</div>\n <span\n className={styles.Value}\n onClick={isInspectable ? toggleIsOpen : undefined}>\n {getMetaValueLabel(value)}\n </span>\n </div>\n );\n } else {\n if (Array.isArray(value)) {\n const hasChildren = value.length > 0 || canEditValues;\n const displayName = getMetaValueLabel(value);\n\n children = value.map((innerValue, index) => (\n <KeyValue\n key={index}\n alphaSort={alphaSort}\n bridge={bridge}\n canDeletePaths={canDeletePaths && !isReadOnly}\n canEditValues={canEditValues && !isReadOnly}\n canRenamePaths={canRenamePaths && !isReadOnly}\n canRenamePathsAtDepth={canRenamePathsAtDepth}\n depth={depth + 1}\n getInspectedElementPath={getInspectedElementPath}\n hookID={hookID}\n inspectedElement={inspectedElement}\n isDirectChildOfAnArray={true}\n hidden={hidden || !isOpen}\n name={index}\n path={path.concat(index)}\n pathRoot={pathRoot}\n store={store}\n value={value[index]}\n />\n ));\n\n if (canEditValues && !isReadOnly) {\n children.push(\n <NewArrayValue\n key=\"NewKeyValue\"\n bridge={bridge}\n depth={depth + 1}\n hidden={hidden || !isOpen}\n hookID={hookID}\n index={value.length}\n getInspectedElementPath={getInspectedElementPath}\n inspectedElement={inspectedElement}\n path={path}\n store={store}\n type={pathRoot}\n />,\n );\n }\n\n children.unshift(\n <div\n key={`${depth}-root`}\n className={styles.Item}\n hidden={hidden}\n ref={contextMenuTriggerRef}\n style={style}>\n {hasChildren ? (\n <ExpandCollapseToggle isOpen={isOpen} setIsOpen={setIsOpen} />\n ) : (\n <div className={styles.ExpandCollapseToggleSpacer} />\n )}\n {renderedName}\n <div className={styles.AfterName}>:</div>\n <span\n className={styles.Value}\n onClick={hasChildren ? toggleIsOpen : undefined}>\n {displayName}\n </span>\n </div>,\n );\n } else {\n // TRICKY\n // It's important to use Object.entries() rather than Object.keys()\n // because of the hidden meta Symbols used for hydration and unserializable values.\n const entries = Object.entries(value);\n if (alphaSort) {\n entries.sort(alphaSortEntries);\n }\n\n const hasChildren = entries.length > 0 || canEditValues;\n const displayName = getMetaValueLabel(value);\n\n children = entries.map<Element<any>>(([key, keyValue]) => (\n <KeyValue\n key={key}\n alphaSort={alphaSort}\n bridge={bridge}\n canDeletePaths={canDeletePaths && !isReadOnly}\n canEditValues={canEditValues && !isReadOnly}\n canRenamePaths={canRenamePaths && !isReadOnly}\n canRenamePathsAtDepth={canRenamePathsAtDepth}\n depth={depth + 1}\n getInspectedElementPath={getInspectedElementPath}\n hookID={hookID}\n inspectedElement={inspectedElement}\n hidden={hidden || !isOpen}\n name={key}\n path={path.concat(key)}\n pathRoot={pathRoot}\n store={store}\n value={keyValue}\n />\n ));\n\n if (canEditValues && !isReadOnly) {\n children.push(\n <NewKeyValue\n key=\"NewKeyValue\"\n bridge={bridge}\n depth={depth + 1}\n getInspectedElementPath={getInspectedElementPath}\n hidden={hidden || !isOpen}\n hookID={hookID}\n inspectedElement={inspectedElement}\n path={path}\n store={store}\n type={pathRoot}\n />,\n );\n }\n\n children.unshift(\n <div\n key={`${depth}-root`}\n className={styles.Item}\n hidden={hidden}\n ref={contextMenuTriggerRef}\n style={style}>\n {hasChildren ? (\n <ExpandCollapseToggle isOpen={isOpen} setIsOpen={setIsOpen} />\n ) : (\n <div className={styles.ExpandCollapseToggleSpacer} />\n )}\n {renderedName}\n <div className={styles.AfterName}>:</div>\n <span\n className={styles.Value}\n onClick={hasChildren ? toggleIsOpen : undefined}>\n {displayName}\n </span>\n </div>,\n );\n }\n }\n\n return children;\n}\n\nfunction DeleteToggle({deletePath, name, path}) {\n const handleClick = event => {\n event.stopPropagation();\n deletePath(path);\n };\n\n return (\n <>\n <Button\n className={styles.DeleteArrayItemButton}\n onClick={handleClick}\n title=\"Delete entry\">\n <ButtonIcon type=\"delete\" />\n </Button>\n <span className={styles.Name}>{name}</span>\n </>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport {copy} from 'clipboard-js';\nimport * as React from 'react';\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\nimport KeyValue from './KeyValue';\nimport {alphaSortEntries, serializeDataForCopy} from '../utils';\nimport Store from '../../store';\nimport styles from './InspectedElementSharedStyles.css';\nimport {\n ElementTypeClass,\n ElementTypeFunction,\n} from 'react-devtools-shared/src/types';\n\nimport type {GetInspectedElementPath} from './InspectedElementContext';\nimport type {InspectedElement} from './types';\nimport type {FrontendBridge} from 'react-devtools-shared/src/bridge';\n\ntype Props = {|\n bridge: FrontendBridge,\n getInspectedElementPath: GetInspectedElementPath,\n inspectedElement: InspectedElement,\n store: Store,\n|};\n\nexport default function InspectedElementContextTree({\n bridge,\n getInspectedElementPath,\n inspectedElement,\n store,\n}: Props) {\n const {hasLegacyContext, context, type} = inspectedElement;\n\n const isReadOnly = type !== ElementTypeClass && type !== ElementTypeFunction;\n\n const entries = context != null ? Object.entries(context) : null;\n if (entries !== null) {\n entries.sort(alphaSortEntries);\n }\n\n const isEmpty = entries === null || entries.length === 0;\n\n const handleCopy = () => copy(serializeDataForCopy(((context: any): Object)));\n\n // We add an object with a \"value\" key as a wrapper around Context data\n // so that we can use the shared <KeyValue> component to display it.\n // This wrapper object can't be renamed.\n const canRenamePathsAtDepth = depth => depth > 1;\n\n if (isEmpty) {\n return null;\n } else {\n return (\n <div className={styles.InspectedElementTree}>\n <div className={styles.HeaderRow}>\n <div className={styles.Header}>\n {hasLegacyContext ? 'legacy context' : 'context'}\n </div>\n {!isEmpty && (\n <Button onClick={handleCopy} title=\"Copy to clipboard\">\n <ButtonIcon type=\"copy\" />\n </Button>\n )}\n </div>\n {isEmpty && <div className={styles.Empty}>None</div>}\n {!isEmpty &&\n (entries: any).map(([name, value]) => (\n <KeyValue\n key={name}\n alphaSort={true}\n bridge={bridge}\n canDeletePaths={!isReadOnly}\n canEditValues={!isReadOnly}\n canRenamePaths={!isReadOnly}\n canRenamePathsAtDepth={canRenamePathsAtDepth}\n type=\"context\"\n depth={1}\n getInspectedElementPath={getInspectedElementPath}\n hidden={false}\n inspectedElement={inspectedElement}\n name={name}\n path={[name]}\n pathRoot=\"context\"\n store={store}\n value={value}\n />\n ))}\n </div>\n );\n }\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport {copy} from 'clipboard-js';\nimport * as React from 'react';\nimport {useCallback, useContext, useRef, useState} from 'react';\nimport {BridgeContext, StoreContext} from '../context';\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\nimport ExpandCollapseToggle from './ExpandCollapseToggle';\nimport KeyValue from './KeyValue';\nimport {getMetaValueLabel, serializeHooksForCopy} from '../utils';\nimport Store from '../../store';\nimport styles from './InspectedElementHooksTree.css';\nimport useContextMenu from '../../ContextMenu/useContextMenu';\nimport {meta} from '../../../hydration';\n\nimport type {InspectedElement} from './types';\nimport type {GetInspectedElementPath} from './InspectedElementContext';\nimport type {HooksNode, HooksTree} from 'react-debug-tools/src/ReactDebugHooks';\nimport type {FrontendBridge} from 'react-devtools-shared/src/bridge';\n\ntype HooksTreeViewProps = {|\n bridge: FrontendBridge,\n getInspectedElementPath: GetInspectedElementPath,\n inspectedElement: InspectedElement,\n store: Store,\n|};\n\nexport function InspectedElementHooksTree({\n bridge,\n getInspectedElementPath,\n inspectedElement,\n store,\n}: HooksTreeViewProps) {\n const {hooks, id} = inspectedElement;\n\n const handleCopy = () => copy(serializeHooksForCopy(hooks));\n\n if (hooks === null) {\n return null;\n } else {\n return (\n <div className={styles.HooksTreeView}>\n <div className={styles.HeaderRow}>\n <div className={styles.Header}>hooks</div>\n <Button onClick={handleCopy} title=\"Copy to clipboard\">\n <ButtonIcon type=\"copy\" />\n </Button>\n </div>\n <InnerHooksTreeView\n hooks={hooks}\n id={id}\n getInspectedElementPath={getInspectedElementPath}\n inspectedElement={inspectedElement}\n path={[]}\n />\n </div>\n );\n }\n}\n\ntype InnerHooksTreeViewProps = {|\n getInspectedElementPath: GetInspectedElementPath,\n hooks: HooksTree,\n id: number,\n inspectedElement: InspectedElement,\n path: Array<string | number>,\n|};\n\nexport function InnerHooksTreeView({\n getInspectedElementPath,\n hooks,\n id,\n inspectedElement,\n path,\n}: InnerHooksTreeViewProps) {\n // $FlowFixMe \"Missing type annotation for U\" whatever that means\n return hooks.map((hook, index) => (\n <HookView\n key={index}\n getInspectedElementPath={getInspectedElementPath}\n hook={hooks[index]}\n id={id}\n inspectedElement={inspectedElement}\n path={path.concat([index])}\n />\n ));\n}\n\ntype HookViewProps = {|\n getInspectedElementPath: GetInspectedElementPath,\n hook: HooksNode,\n id: number,\n inspectedElement: InspectedElement,\n path: Array<string | number>,\n|};\n\nfunction HookView({\n getInspectedElementPath,\n hook,\n id,\n inspectedElement,\n path,\n}: HookViewProps) {\n const {\n canEditHooks,\n canEditHooksAndDeletePaths,\n canEditHooksAndRenamePaths,\n } = inspectedElement;\n const {name, id: hookID, isStateEditable, subHooks, value} = hook;\n\n const isReadOnly = hookID == null || !isStateEditable;\n\n const canDeletePaths = !isReadOnly && canEditHooksAndDeletePaths;\n const canEditValues = !isReadOnly && canEditHooks;\n const canRenamePaths = !isReadOnly && canEditHooksAndRenamePaths;\n\n const bridge = useContext(BridgeContext);\n const store = useContext(StoreContext);\n\n const [isOpen, setIsOpen] = useState<boolean>(false);\n\n const toggleIsOpen = useCallback(\n () => setIsOpen(prevIsOpen => !prevIsOpen),\n [],\n );\n\n const contextMenuTriggerRef = useRef(null);\n\n useContextMenu({\n data: {\n path: ['hooks', ...path],\n type:\n hook !== null &&\n typeof hook === 'object' &&\n hook.hasOwnProperty(meta.type)\n ? hook[(meta.type: any)]\n : typeof value,\n },\n id: 'InspectedElement',\n ref: contextMenuTriggerRef,\n });\n\n if (hook.hasOwnProperty(meta.inspected)) {\n // This Hook is too deep and hasn't been hydrated.\n if (__DEV__) {\n console.warn('Unexpected dehydrated hook; this is a DevTools error.');\n }\n return (\n <div className={styles.Hook}>\n <div className={styles.NameValueRow}>\n <span className={styles.TruncationIndicator}>...</span>\n </div>\n </div>\n );\n }\n\n // Certain hooks are not editable at all (as identified by react-debug-tools).\n // Primative hook names (e.g. the \"State\" name for useState) are also never editable.\n const canRenamePathsAtDepth = depth => isStateEditable && depth > 1;\n\n const isCustomHook = subHooks.length > 0;\n\n const type = typeof value;\n\n let displayValue;\n let isComplexDisplayValue = false;\n\n // Format data for display to mimic the props/state/context for now.\n if (type === 'string') {\n displayValue = `\"${((value: any): string)}\"`;\n } else if (type === 'boolean') {\n displayValue = value ? 'true' : 'false';\n } else if (type === 'number') {\n displayValue = value;\n } else if (value === null) {\n displayValue = 'null';\n } else if (value === undefined) {\n displayValue = null;\n } else if (Array.isArray(value)) {\n isComplexDisplayValue = true;\n displayValue = 'Array';\n } else if (type === 'object') {\n isComplexDisplayValue = true;\n displayValue = 'Object';\n }\n\n if (isCustomHook) {\n const subHooksView = Array.isArray(subHooks) ? (\n <InnerHooksTreeView\n getInspectedElementPath={getInspectedElementPath}\n hooks={subHooks}\n id={id}\n inspectedElement={inspectedElement}\n path={path.concat(['subHooks'])}\n />\n ) : (\n <KeyValue\n alphaSort={false}\n bridge={bridge}\n canDeletePaths={canDeletePaths}\n canEditValues={canEditValues}\n canRenamePaths={canRenamePaths}\n canRenamePathsAtDepth={canRenamePathsAtDepth}\n depth={1}\n getInspectedElementPath={getInspectedElementPath}\n hookID={hookID}\n inspectedElement={inspectedElement}\n name=\"subHooks\"\n path={path.concat(['subHooks'])}\n store={store}\n type=\"hooks\"\n value={subHooks}\n />\n );\n\n if (isComplexDisplayValue) {\n return (\n <div className={styles.Hook}>\n <div ref={contextMenuTriggerRef} className={styles.NameValueRow}>\n <ExpandCollapseToggle isOpen={isOpen} setIsOpen={setIsOpen} />\n <span\n onClick={toggleIsOpen}\n className={name !== '' ? styles.Name : styles.NameAnonymous}>\n {name || 'Anonymous'}\n </span>\n <span className={styles.Value} onClick={toggleIsOpen}>\n {isOpen || getMetaValueLabel(value)}\n </span>\n </div>\n <div className={styles.Children} hidden={!isOpen}>\n <KeyValue\n alphaSort={false}\n bridge={bridge}\n canDeletePaths={canDeletePaths}\n canEditValues={canEditValues}\n canRenamePaths={canRenamePaths}\n canRenamePathsAtDepth={canRenamePathsAtDepth}\n depth={1}\n getInspectedElementPath={getInspectedElementPath}\n hookID={hookID}\n inspectedElement={inspectedElement}\n name=\"DebugValue\"\n path={path.concat(['value'])}\n pathRoot=\"hooks\"\n store={store}\n value={value}\n />\n {subHooksView}\n </div>\n </div>\n );\n } else {\n return (\n <div className={styles.Hook}>\n <div ref={contextMenuTriggerRef} className={styles.NameValueRow}>\n <ExpandCollapseToggle isOpen={isOpen} setIsOpen={setIsOpen} />\n <span\n onClick={toggleIsOpen}\n className={name !== '' ? styles.Name : styles.NameAnonymous}>\n {name || 'Anonymous'}\n </span>{' '}\n {/* $FlowFixMe */}\n <span className={styles.Value} onClick={toggleIsOpen}>\n {displayValue}\n </span>\n </div>\n <div className={styles.Children} hidden={!isOpen}>\n {subHooksView}\n </div>\n </div>\n );\n }\n } else {\n if (isComplexDisplayValue) {\n return (\n <div className={styles.Hook}>\n <KeyValue\n alphaSort={false}\n bridge={bridge}\n canDeletePaths={canDeletePaths}\n canEditValues={canEditValues}\n canRenamePaths={canRenamePaths}\n canRenamePathsAtDepth={canRenamePathsAtDepth}\n depth={1}\n getInspectedElementPath={getInspectedElementPath}\n hookID={hookID}\n inspectedElement={inspectedElement}\n name={name}\n path={path.concat(['value'])}\n pathRoot=\"hooks\"\n store={store}\n value={value}\n />\n </div>\n );\n } else {\n return (\n <div className={styles.Hook}>\n <KeyValue\n alphaSort={false}\n bridge={bridge}\n canDeletePaths={false}\n canEditValues={canEditValues}\n canRenamePaths={false}\n depth={1}\n getInspectedElementPath={getInspectedElementPath}\n hookID={hookID}\n inspectedElement={inspectedElement}\n name={name}\n path={[]}\n pathRoot=\"hooks\"\n store={store}\n value={value}\n />\n </div>\n );\n }\n }\n}\n\n// $FlowFixMe\nexport default React.memo(InspectedElementHooksTree);\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport {copy} from 'clipboard-js';\nimport * as React from 'react';\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\nimport KeyValue from './KeyValue';\nimport NewKeyValue from './NewKeyValue';\nimport {alphaSortEntries, serializeDataForCopy} from '../utils';\nimport Store from '../../store';\nimport styles from './InspectedElementSharedStyles.css';\nimport {ElementTypeClass} from 'react-devtools-shared/src/types';\n\nimport type {InspectedElement} from './types';\nimport type {GetInspectedElementPath} from './InspectedElementContext';\nimport type {FrontendBridge} from 'react-devtools-shared/src/bridge';\n\ntype Props = {|\n bridge: FrontendBridge,\n getInspectedElementPath: GetInspectedElementPath,\n inspectedElement: InspectedElement,\n store: Store,\n|};\n\nexport default function InspectedElementPropsTree({\n bridge,\n getInspectedElementPath,\n inspectedElement,\n store,\n}: Props) {\n const {\n canEditFunctionProps,\n canEditFunctionPropsDeletePaths,\n canEditFunctionPropsRenamePaths,\n props,\n type,\n } = inspectedElement;\n\n const canDeletePaths =\n type === ElementTypeClass || canEditFunctionPropsDeletePaths;\n const canEditValues = type === ElementTypeClass || canEditFunctionProps;\n const canRenamePaths =\n type === ElementTypeClass || canEditFunctionPropsRenamePaths;\n\n const entries = props != null ? Object.entries(props) : null;\n if (entries !== null) {\n entries.sort(alphaSortEntries);\n }\n\n const isEmpty = entries === null || entries.length === 0;\n\n const handleCopy = () => copy(serializeDataForCopy(((props: any): Object)));\n\n return (\n <div className={styles.InspectedElementTree}>\n <div className={styles.HeaderRow}>\n <div className={styles.Header}>props</div>\n {!isEmpty && (\n <Button onClick={handleCopy} title=\"Copy to clipboard\">\n <ButtonIcon type=\"copy\" />\n </Button>\n )}\n </div>\n {!isEmpty &&\n (entries: any).map(([name, value]) => (\n <KeyValue\n key={name}\n alphaSort={true}\n bridge={bridge}\n canDeletePaths={canDeletePaths}\n canEditValues={canEditValues}\n canRenamePaths={canRenamePaths}\n depth={1}\n getInspectedElementPath={getInspectedElementPath}\n hidden={false}\n inspectedElement={inspectedElement}\n name={name}\n path={[name]}\n pathRoot=\"props\"\n store={store}\n value={value}\n />\n ))}\n {canEditValues && (\n <NewKeyValue\n bridge={bridge}\n depth={0}\n hidden={false}\n inspectedElement={inspectedElement}\n path={[]}\n store={store}\n type=\"props\"\n />\n )}\n </div>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport {copy} from 'clipboard-js';\nimport * as React from 'react';\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\nimport KeyValue from './KeyValue';\nimport {alphaSortEntries, serializeDataForCopy} from '../utils';\nimport Store from '../../store';\nimport styles from './InspectedElementSharedStyles.css';\n\nimport type {InspectedElement} from './types';\nimport type {GetInspectedElementPath} from './InspectedElementContext';\nimport type {FrontendBridge} from 'react-devtools-shared/src/bridge';\n\ntype Props = {|\n bridge: FrontendBridge,\n getInspectedElementPath: GetInspectedElementPath,\n inspectedElement: InspectedElement,\n store: Store,\n|};\n\nexport default function InspectedElementStateTree({\n bridge,\n getInspectedElementPath,\n inspectedElement,\n store,\n}: Props) {\n const {state} = inspectedElement;\n\n const entries = state != null ? Object.entries(state) : null;\n if (entries !== null) {\n entries.sort(alphaSortEntries);\n }\n\n const isEmpty = entries === null || entries.length === 0;\n\n const handleCopy = () => copy(serializeDataForCopy(((state: any): Object)));\n\n if (isEmpty) {\n return null;\n } else {\n return (\n <div className={styles.InspectedElementTree}>\n <div className={styles.HeaderRow}>\n <div className={styles.Header}>state</div>\n {!isEmpty && (\n <Button onClick={handleCopy} title=\"Copy to clipboard\">\n <ButtonIcon type=\"copy\" />\n </Button>\n )}\n </div>\n {isEmpty && <div className={styles.Empty}>None</div>}\n {!isEmpty &&\n (entries: any).map(([name, value]) => (\n <KeyValue\n key={name}\n alphaSort={true}\n bridge={bridge}\n canDeletePaths={true}\n canEditValues={true}\n canRenamePaths={true}\n depth={1}\n getInspectedElementPath={getInspectedElementPath}\n hidden={false}\n inspectedElement={inspectedElement}\n name={name}\n path={[name]}\n pathRoot=\"state\"\n store={store}\n value={value}\n />\n ))}\n </div>\n );\n }\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport EditableValue from './EditableValue';\nimport Store from '../../store';\nimport {ElementTypeSuspense} from 'react-devtools-shared/src/types';\nimport styles from './InspectedElementSharedStyles.css';\n\nimport type {InspectedElement} from './types';\nimport type {FrontendBridge} from 'react-devtools-shared/src/bridge';\n\ntype Props = {|\n bridge: FrontendBridge,\n inspectedElement: InspectedElement,\n store: Store,\n|};\n\nexport default function InspectedElementSuspenseToggle({\n bridge,\n inspectedElement,\n store,\n}: Props) {\n const {canToggleSuspense, id, state, type} = inspectedElement;\n\n if (type !== ElementTypeSuspense) {\n return null;\n }\n\n const isSuspended = state !== null;\n\n const toggleSuspense = (path, value) => {\n const rendererID = store.getRendererIDForElement(id);\n if (rendererID !== null) {\n bridge.send('overrideSuspense', {\n id,\n rendererID,\n forceFallback: value,\n });\n }\n };\n\n return (\n <div className={styles.InspectedElementTree}>\n <div className={styles.HeaderRow}>\n <div className={styles.Header}>suspense</div>\n </div>\n <div className={styles.ToggleSuspenseRow}>\n <span className={styles.Name}>Suspended</span>\n {canToggleSuspense ? (\n // key is required to keep <EditableValue> and header row toggle button in sync\n <EditableValue\n key={isSuspended}\n overrideValue={toggleSuspense}\n path={['suspense', 'Suspended']}\n value={isSuspended}\n />\n ) : (\n <span className={styles.Value}>{isSuspended ? 'true' : 'false'}</span>\n )}\n </div>\n </div>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport {unstable_batchedUpdates as batchedUpdates} from 'react-dom';\nimport {createResource} from 'react-devtools-shared/src/devtools/cache';\nimport {\n BridgeContext,\n StoreContext,\n} from 'react-devtools-shared/src/devtools/views/context';\nimport {TreeStateContext} from '../TreeContext';\n\nimport type {StateContext} from '../TreeContext';\nimport type {FrontendBridge} from 'react-devtools-shared/src/bridge';\nimport type Store from 'react-devtools-shared/src/devtools/store';\nimport type {StyleAndLayout as StyleAndLayoutBackend} from 'react-devtools-shared/src/backend/NativeStyleEditor/types';\nimport type {StyleAndLayout as StyleAndLayoutFrontend} from './types';\nimport type {Element} from 'react-devtools-shared/src/devtools/views/Components/types';\nimport type {\n Resource,\n Thenable,\n} from 'react-devtools-shared/src/devtools/cache';\n\nexport type GetStyleAndLayout = (id: number) => StyleAndLayoutFrontend | null;\n\ntype Context = {|\n getStyleAndLayout: GetStyleAndLayout,\n|};\n\nconst NativeStyleContext = createContext<Context>(((null: any): Context));\nNativeStyleContext.displayName = 'NativeStyleContext';\n\ntype ResolveFn = (styleAndLayout: StyleAndLayoutFrontend) => void;\ntype InProgressRequest = {|\n promise: Thenable<StyleAndLayoutFrontend>,\n resolveFn: ResolveFn,\n|};\n\nconst inProgressRequests: WeakMap<Element, InProgressRequest> = new WeakMap();\nconst resource: Resource<\n Element,\n Element,\n StyleAndLayoutFrontend,\n> = createResource(\n (element: Element) => {\n const request = inProgressRequests.get(element);\n if (request != null) {\n return request.promise;\n }\n\n let resolveFn = ((null: any): ResolveFn);\n const promise = new Promise(resolve => {\n resolveFn = resolve;\n });\n\n inProgressRequests.set(element, {promise, resolveFn});\n\n return promise;\n },\n (element: Element) => element,\n {useWeakMap: true},\n);\n\ntype Props = {|\n children: React$Node,\n|};\n\nfunction NativeStyleContextController({children}: Props) {\n const bridge = useContext<FrontendBridge>(BridgeContext);\n const store = useContext<Store>(StoreContext);\n\n const getStyleAndLayout = useCallback<GetStyleAndLayout>(\n (id: number) => {\n const element = store.getElementByID(id);\n if (element !== null) {\n return resource.read(element);\n } else {\n return null;\n }\n },\n [store],\n );\n\n // It's very important that this context consumes selectedElementID and not NativeStyleID.\n // Otherwise the effect that sends the \"inspect\" message across the bridge-\n // would itself be blocked by the same render that suspends (waiting for the data).\n const {selectedElementID} = useContext<StateContext>(TreeStateContext);\n\n const [\n currentStyleAndLayout,\n setCurrentStyleAndLayout,\n ] = useState<StyleAndLayoutFrontend | null>(null);\n\n // This effect handler invalidates the suspense cache and schedules rendering updates with React.\n useEffect(() => {\n const onStyleAndLayout = ({id, layout, style}: StyleAndLayoutBackend) => {\n const element = store.getElementByID(id);\n if (element !== null) {\n const styleAndLayout: StyleAndLayoutFrontend = {\n layout,\n style,\n };\n const request = inProgressRequests.get(element);\n if (request != null) {\n inProgressRequests.delete(element);\n batchedUpdates(() => {\n request.resolveFn(styleAndLayout);\n setCurrentStyleAndLayout(styleAndLayout);\n });\n } else {\n resource.write(element, styleAndLayout);\n\n // Schedule update with React if the currently-selected element has been invalidated.\n if (id === selectedElementID) {\n setCurrentStyleAndLayout(styleAndLayout);\n }\n }\n }\n };\n\n bridge.addListener('NativeStyleEditor_styleAndLayout', onStyleAndLayout);\n return () =>\n bridge.removeListener(\n 'NativeStyleEditor_styleAndLayout',\n onStyleAndLayout,\n );\n }, [bridge, currentStyleAndLayout, selectedElementID, store]);\n\n // This effect handler polls for updates on the currently selected element.\n useEffect(() => {\n if (selectedElementID === null) {\n return () => {};\n }\n\n const rendererID = store.getRendererIDForElement(selectedElementID);\n\n let timeoutID: TimeoutID | null = null;\n\n const sendRequest = () => {\n timeoutID = null;\n\n if (rendererID !== null) {\n bridge.send('NativeStyleEditor_measure', {\n id: selectedElementID,\n rendererID,\n });\n }\n };\n\n // Send the initial measurement request.\n // We'll poll for an update in the response handler below.\n sendRequest();\n\n const onStyleAndLayout = ({id}: StyleAndLayoutBackend) => {\n // If this is the element we requested, wait a little bit and then ask for another update.\n if (id === selectedElementID) {\n if (timeoutID !== null) {\n clearTimeout(timeoutID);\n }\n timeoutID = setTimeout(sendRequest, 1000);\n }\n };\n\n bridge.addListener('NativeStyleEditor_styleAndLayout', onStyleAndLayout);\n\n return () => {\n bridge.removeListener(\n 'NativeStyleEditor_styleAndLayout',\n onStyleAndLayout,\n );\n\n if (timeoutID !== null) {\n clearTimeout(timeoutID);\n }\n };\n }, [bridge, selectedElementID, store]);\n\n const value = useMemo(\n () => ({getStyleAndLayout}),\n // NativeStyle is used to invalidate the cache and schedule an update with React.\n [currentStyleAndLayout, getStyleAndLayout],\n );\n\n return (\n <NativeStyleContext.Provider value={value}>\n {children}\n </NativeStyleContext.Provider>\n );\n}\n\nexport {NativeStyleContext, NativeStyleContextController};\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport styles from './LayoutViewer.css';\n\nimport type {Layout} from './types';\n\ntype Props = {|\n id: number,\n layout: Layout,\n|};\n\nexport default function LayoutViewer({id, layout}: Props) {\n const {height, margin, padding, y, width, x} = layout;\n\n return (\n <div className={styles.LayoutViewer}>\n <div className={styles.Header}>layout</div>\n <div className={styles.DashedBox}>\n <div className={styles.LabelRow}>\n <label className={styles.Label}>margin</label>\n\n <label>{margin.top || '-'}</label>\n </div>\n\n <div className={styles.BoxRow}>\n <label>{margin.left || '-'}</label>\n\n <div className={styles.SolidBox}>\n <div className={styles.LabelRow}>\n <label className={styles.Label}>padding</label>\n\n <label>{padding.top || '-'}</label>\n </div>\n\n <div className={styles.BoxRow}>\n <label>{padding.left || '-'}</label>\n\n <div className={styles.DashedBox}>\n <div className={styles.LabelRow}>\n {format(width)} x {format(height)} ({format(x)}, {format(y)})\n </div>\n </div>\n\n <label>{padding.right || '-'}</label>\n </div>\n\n <label>{padding.bottom || '-'}</label>\n </div>\n <label>{margin.right || '-'}</label>\n </div>\n <label>{margin.bottom || '-'}</label>\n </div>\n </div>\n );\n}\n\nfunction format(number: number): string | number {\n if (Math.round(number) === number) {\n return number;\n } else {\n return number.toFixed(1);\n }\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useContext, useMemo, useRef, useState} from 'react';\nimport {unstable_batchedUpdates as batchedUpdates} from 'react-dom';\nimport {copy} from 'clipboard-js';\nimport {\n BridgeContext,\n StoreContext,\n} from 'react-devtools-shared/src/devtools/views/context';\nimport Button from '../../Button';\nimport ButtonIcon from '../../ButtonIcon';\nimport {serializeDataForCopy} from '../../utils';\nimport AutoSizeInput from './AutoSizeInput';\nimport styles from './StyleEditor.css';\nimport {sanitizeForParse} from '../../../utils';\n\nimport type {Style} from './types';\n\ntype Props = {|\n id: number,\n style: Style,\n|};\n\ntype ChangeAttributeFn = (oldName: string, newName: string, value: any) => void;\ntype ChangeValueFn = (name: string, value: any) => void;\n\nexport default function StyleEditor({id, style}: Props) {\n const bridge = useContext(BridgeContext);\n const store = useContext(StoreContext);\n\n const changeAttribute = (oldName: string, newName: string, value: any) => {\n const rendererID = store.getRendererIDForElement(id);\n if (rendererID !== null) {\n bridge.send('NativeStyleEditor_renameAttribute', {\n id,\n rendererID,\n oldName,\n newName,\n value,\n });\n }\n };\n\n const changeValue = (name: string, value: any) => {\n const rendererID = store.getRendererIDForElement(id);\n if (rendererID !== null) {\n bridge.send('NativeStyleEditor_setValue', {\n id,\n rendererID,\n name,\n value,\n });\n }\n };\n\n const keys = useMemo(() => Array.from(Object.keys(style)), [style]);\n\n const handleCopy = () => copy(serializeDataForCopy(style));\n\n return (\n <div className={styles.StyleEditor}>\n <div className={styles.HeaderRow}>\n <div className={styles.Header}>\n <div className={styles.Brackets}>{'style {'}</div>\n </div>\n <Button onClick={handleCopy} title=\"Copy to clipboard\">\n <ButtonIcon type=\"copy\" />\n </Button>\n </div>\n {keys.length > 0 &&\n keys.map(attribute => (\n <Row\n key={attribute}\n attribute={attribute}\n changeAttribute={changeAttribute}\n changeValue={changeValue}\n validAttributes={store.nativeStyleEditorValidAttributes}\n value={style[attribute]}\n />\n ))}\n <NewRow\n changeAttribute={changeAttribute}\n changeValue={changeValue}\n validAttributes={store.nativeStyleEditorValidAttributes}\n />\n <div className={styles.Brackets}>{'}'}</div>\n </div>\n );\n}\n\ntype NewRowProps = {|\n changeAttribute: ChangeAttributeFn,\n changeValue: ChangeValueFn,\n validAttributes: $ReadOnlyArray<string> | null,\n|};\n\nfunction NewRow({changeAttribute, changeValue, validAttributes}: NewRowProps) {\n const [key, setKey] = useState<number>(0);\n const reset = () => setKey(key + 1);\n\n const newAttributeRef = useRef<string>('');\n\n const changeAttributeWrapper = (\n oldAttribute: string,\n newAttribute: string,\n value: any,\n ) => {\n // Ignore attribute changes until a value has been specified\n newAttributeRef.current = newAttribute;\n };\n\n const changeValueWrapper = (attribute: string, value: any) => {\n // Blur events should reset/cancel if there's no value or no attribute\n if (newAttributeRef.current !== '') {\n if (value !== '') {\n changeValue(newAttributeRef.current, value);\n }\n reset();\n }\n };\n\n return (\n <Row\n key={key}\n attribute={''}\n attributePlaceholder=\"attribute\"\n changeAttribute={changeAttributeWrapper}\n changeValue={changeValueWrapper}\n validAttributes={validAttributes}\n value={''}\n valuePlaceholder=\"value\"\n />\n );\n}\n\ntype RowProps = {|\n attribute: string,\n attributePlaceholder?: string,\n changeAttribute: ChangeAttributeFn,\n changeValue: ChangeValueFn,\n validAttributes: $ReadOnlyArray<string> | null,\n value: any,\n valuePlaceholder?: string,\n|};\n\nfunction Row({\n attribute,\n attributePlaceholder,\n changeAttribute,\n changeValue,\n validAttributes,\n value,\n valuePlaceholder,\n}: RowProps) {\n // TODO (RN style editor) Use @reach/combobox to auto-complete attributes.\n // The list of valid attributes would need to be injected by RN backend,\n // which would need to require them from ReactNativeViewViewConfig \"validAttributes.style\" keys.\n // This would need to degrade gracefully for react-native-web,\n // although we could let it also inject a custom set of allowed attributes.\n\n const [localAttribute, setLocalAttribute] = useState(attribute);\n const [localValue, setLocalValue] = useState(JSON.stringify(value));\n const [isAttributeValid, setIsAttributeValid] = useState(true);\n const [isValueValid, setIsValueValid] = useState(true);\n\n const validateAndSetLocalAttribute = newAttribute => {\n const isValid =\n newAttribute === '' ||\n validAttributes === null ||\n validAttributes.indexOf(newAttribute) >= 0;\n\n batchedUpdates(() => {\n setLocalAttribute(newAttribute);\n setIsAttributeValid(isValid);\n });\n };\n\n const validateAndSetLocalValue = newValue => {\n let isValid = false;\n try {\n JSON.parse(sanitizeForParse(newValue));\n isValid = true;\n } catch (error) {}\n\n batchedUpdates(() => {\n setLocalValue(newValue);\n setIsValueValid(isValid);\n });\n };\n\n const resetAttribute = () => {\n setLocalAttribute(attribute);\n };\n\n const resetValue = () => {\n setLocalValue(value);\n };\n\n const submitValueChange = () => {\n if (isAttributeValid && isValueValid) {\n const parsedLocalValue = JSON.parse(sanitizeForParse(localValue));\n if (value !== parsedLocalValue) {\n changeValue(attribute, parsedLocalValue);\n }\n }\n };\n\n const submitAttributeChange = () => {\n if (isAttributeValid && isValueValid) {\n if (attribute !== localAttribute) {\n changeAttribute(attribute, localAttribute, value);\n }\n }\n };\n\n return (\n <div className={styles.Row}>\n <Field\n className={isAttributeValid ? styles.Attribute : styles.Invalid}\n onChange={validateAndSetLocalAttribute}\n onReset={resetAttribute}\n onSubmit={submitAttributeChange}\n placeholder={attributePlaceholder}\n value={localAttribute}\n />\n : \n <Field\n className={isValueValid ? styles.Value : styles.Invalid}\n onChange={validateAndSetLocalValue}\n onReset={resetValue}\n onSubmit={submitValueChange}\n placeholder={valuePlaceholder}\n value={localValue}\n />\n ;\n </div>\n );\n}\n\ntype FieldProps = {|\n className: string,\n onChange: (value: any) => void,\n onReset: () => void,\n onSubmit: () => void,\n placeholder?: string,\n value: any,\n|};\n\nfunction Field({\n className,\n onChange,\n onReset,\n onSubmit,\n placeholder,\n value,\n}: FieldProps) {\n const onKeyDown = event => {\n switch (event.key) {\n case 'Enter':\n onSubmit();\n break;\n case 'Escape':\n onReset();\n break;\n case 'ArrowDown':\n case 'ArrowLeft':\n case 'ArrowRight':\n case 'ArrowUp':\n event.stopPropagation();\n break;\n default:\n break;\n }\n };\n\n return (\n <AutoSizeInput\n className={`${className} ${styles.Input}`}\n onBlur={onSubmit}\n onChange={event => onChange(event.target.value)}\n onKeyDown={onKeyDown}\n placeholder={placeholder}\n value={value}\n />\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {Fragment, useContext, useMemo} from 'react';\nimport {StoreContext} from 'react-devtools-shared/src/devtools/views/context';\nimport {useSubscription} from 'react-devtools-shared/src/devtools/views/hooks';\nimport {NativeStyleContext} from './context';\nimport LayoutViewer from './LayoutViewer';\nimport StyleEditor from './StyleEditor';\nimport {TreeStateContext} from '../TreeContext';\n\ntype Props = {||};\n\nexport default function NativeStyleEditorWrapper(_: Props) {\n const store = useContext(StoreContext);\n\n const subscription = useMemo(\n () => ({\n getCurrentValue: () => store.supportsNativeStyleEditor,\n subscribe: (callback: Function) => {\n store.addListener('supportsNativeStyleEditor', callback);\n return () => {\n store.removeListener('supportsNativeStyleEditor', callback);\n };\n },\n }),\n [store],\n );\n const supportsNativeStyleEditor = useSubscription<boolean>(subscription);\n\n if (!supportsNativeStyleEditor) {\n return null;\n }\n\n return <NativeStyleEditor />;\n}\n\nfunction NativeStyleEditor(_: Props) {\n const {getStyleAndLayout} = useContext(NativeStyleContext);\n\n const {inspectedElementID} = useContext(TreeStateContext);\n if (inspectedElementID === null) {\n return null;\n }\n\n const maybeStyleAndLayout = getStyleAndLayout(inspectedElementID);\n if (maybeStyleAndLayout === null) {\n return null;\n }\n\n const {layout, style} = maybeStyleAndLayout;\n\n return (\n <Fragment>\n {layout !== null && (\n <LayoutViewer id={inspectedElementID} layout={layout} />\n )}\n {style !== null && (\n <StyleEditor\n id={inspectedElementID}\n style={style !== null ? style : {}}\n />\n )}\n </Fragment>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport {copy} from 'clipboard-js';\nimport * as React from 'react';\nimport {Fragment, useCallback, useContext} from 'react';\nimport {TreeDispatcherContext} from './TreeContext';\nimport {BridgeContext, ContextMenuContext, StoreContext} from '../context';\nimport ContextMenu from '../../ContextMenu/ContextMenu';\nimport ContextMenuItem from '../../ContextMenu/ContextMenuItem';\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\nimport Icon from '../Icon';\nimport HocBadges from './HocBadges';\nimport InspectedElementContextTree from './InspectedElementContextTree';\nimport InspectedElementHooksTree from './InspectedElementHooksTree';\nimport InspectedElementPropsTree from './InspectedElementPropsTree';\nimport InspectedElementStateTree from './InspectedElementStateTree';\nimport InspectedElementSuspenseToggle from './InspectedElementSuspenseToggle';\nimport NativeStyleEditor from './NativeStyleEditor';\nimport Badge from './Badge';\nimport {useHighlightNativeElement} from '../hooks';\n\nimport styles from './InspectedElementView.css';\n\nimport type {ContextMenuContextType} from '../context';\nimport type {\n CopyInspectedElementPath,\n GetInspectedElementPath,\n StoreAsGlobal,\n} from './InspectedElementContext';\nimport type {Element, InspectedElement, Owner} from './types';\nimport type {ElementType} from 'react-devtools-shared/src/types';\n\nexport type CopyPath = (path: Array<string | number>) => void;\nexport type InspectPath = (path: Array<string | number>) => void;\n\ntype Props = {|\n copyInspectedElementPath: CopyInspectedElementPath,\n element: Element,\n getInspectedElementPath: GetInspectedElementPath,\n inspectedElement: InspectedElement,\n storeAsGlobal: StoreAsGlobal,\n|};\n\nexport default function InspectedElementView({\n copyInspectedElementPath,\n element,\n getInspectedElementPath,\n inspectedElement,\n storeAsGlobal,\n}: Props) {\n const {id} = element;\n const {\n owners,\n rendererPackageName,\n rendererVersion,\n rootType,\n source,\n } = inspectedElement;\n\n const bridge = useContext(BridgeContext);\n const store = useContext(StoreContext);\n\n const {\n isEnabledForInspectedElement: isContextMenuEnabledForInspectedElement,\n viewAttributeSourceFunction,\n } = useContext<ContextMenuContextType>(ContextMenuContext);\n\n const rendererLabel =\n rendererPackageName !== null && rendererVersion !== null\n ? `${rendererPackageName}@${rendererVersion}`\n : null;\n const showOwnersList = owners !== null && owners.length > 0;\n const showRenderedBy =\n showOwnersList || rendererLabel !== null || rootType !== null;\n\n return (\n <Fragment>\n <div className={styles.InspectedElement}>\n <HocBadges element={element} />\n\n <InspectedElementPropsTree\n bridge={bridge}\n getInspectedElementPath={getInspectedElementPath}\n inspectedElement={inspectedElement}\n store={store}\n />\n\n <InspectedElementSuspenseToggle\n bridge={bridge}\n inspectedElement={inspectedElement}\n store={store}\n />\n\n <InspectedElementStateTree\n bridge={bridge}\n getInspectedElementPath={getInspectedElementPath}\n inspectedElement={inspectedElement}\n store={store}\n />\n\n <InspectedElementHooksTree\n bridge={bridge}\n getInspectedElementPath={getInspectedElementPath}\n inspectedElement={inspectedElement}\n store={store}\n />\n\n <InspectedElementContextTree\n bridge={bridge}\n getInspectedElementPath={getInspectedElementPath}\n inspectedElement={inspectedElement}\n store={store}\n />\n\n <NativeStyleEditor />\n\n {showRenderedBy && (\n <div className={styles.Owners}>\n <div className={styles.OwnersHeader}>rendered by</div>\n {showOwnersList &&\n ((owners: any): Array<Owner>).map(owner => (\n <OwnerView\n key={owner.id}\n displayName={owner.displayName || 'Anonymous'}\n hocDisplayNames={owner.hocDisplayNames}\n id={owner.id}\n isInStore={store.containsElement(owner.id)}\n type={owner.type}\n />\n ))}\n {rootType !== null && (\n <div className={styles.OwnersMetaField}>{rootType}</div>\n )}\n {rendererLabel !== null && (\n <div className={styles.OwnersMetaField}>{rendererLabel}</div>\n )}\n </div>\n )}\n\n {source !== null && (\n <Source fileName={source.fileName} lineNumber={source.lineNumber} />\n )}\n </div>\n\n {isContextMenuEnabledForInspectedElement && (\n <ContextMenu id=\"InspectedElement\">\n {data => (\n <Fragment>\n <ContextMenuItem\n onClick={() => copyInspectedElementPath(id, data.path)}\n title=\"Copy value to clipboard\">\n <Icon className={styles.ContextMenuIcon} type=\"copy\" /> Copy\n value to clipboard\n </ContextMenuItem>\n <ContextMenuItem\n onClick={() => storeAsGlobal(id, data.path)}\n title=\"Store as global variable\">\n <Icon\n className={styles.ContextMenuIcon}\n type=\"store-as-global-variable\"\n />{' '}\n Store as global variable\n </ContextMenuItem>\n {viewAttributeSourceFunction !== null &&\n data.type === 'function' && (\n <ContextMenuItem\n onClick={() => viewAttributeSourceFunction(id, data.path)}\n title=\"Go to definition\">\n <Icon className={styles.ContextMenuIcon} type=\"code\" /> Go\n to definition\n </ContextMenuItem>\n )}\n </Fragment>\n )}\n </ContextMenu>\n )}\n </Fragment>\n );\n}\n\n// This function is based on describeComponentFrame() in packages/shared/ReactComponentStackFrame\nfunction formatSourceForDisplay(fileName: string, lineNumber: string) {\n const BEFORE_SLASH_RE = /^(.*)[\\\\\\/]/;\n\n let nameOnly = fileName.replace(BEFORE_SLASH_RE, '');\n\n // In DEV, include code for a common special case:\n // prefer \"folder/index.js\" instead of just \"index.js\".\n if (/^index\\./.test(nameOnly)) {\n const match = fileName.match(BEFORE_SLASH_RE);\n if (match) {\n const pathBeforeSlash = match[1];\n if (pathBeforeSlash) {\n const folderName = pathBeforeSlash.replace(BEFORE_SLASH_RE, '');\n nameOnly = folderName + '/' + nameOnly;\n }\n }\n }\n\n return `${nameOnly}:${lineNumber}`;\n}\n\ntype SourceProps = {|\n fileName: string,\n lineNumber: string,\n|};\n\nfunction Source({fileName, lineNumber}: SourceProps) {\n const handleCopy = () => copy(`${fileName}:${lineNumber}`);\n return (\n <div className={styles.Source}>\n <div className={styles.SourceHeaderRow}>\n <div className={styles.SourceHeader}>source</div>\n <Button onClick={handleCopy} title=\"Copy to clipboard\">\n <ButtonIcon type=\"copy\" />\n </Button>\n </div>\n <div className={styles.SourceOneLiner}>\n {formatSourceForDisplay(fileName, lineNumber)}\n </div>\n </div>\n );\n}\n\ntype OwnerViewProps = {|\n displayName: string,\n hocDisplayNames: Array<string> | null,\n id: number,\n isInStore: boolean,\n type: ElementType,\n|};\n\nfunction OwnerView({\n displayName,\n hocDisplayNames,\n id,\n isInStore,\n type,\n}: OwnerViewProps) {\n const dispatch = useContext(TreeDispatcherContext);\n const {\n highlightNativeElement,\n clearHighlightNativeElement,\n } = useHighlightNativeElement();\n\n const handleClick = useCallback(\n () =>\n dispatch({\n type: 'SELECT_ELEMENT_BY_ID',\n payload: id,\n }),\n [dispatch, id],\n );\n\n const onMouseEnter = () => highlightNativeElement(id);\n\n const onMouseLeave = clearHighlightNativeElement;\n\n return (\n <Button\n key={id}\n className={styles.OwnerButton}\n disabled={!isInStore}\n onClick={handleClick}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}>\n <span className={styles.OwnerContent}>\n <span\n className={`${styles.Owner} ${isInStore ? '' : styles.NotInStore}`}\n title={displayName}>\n {displayName}\n </span>\n <Badge hocDisplayNames={hocDisplayNames} type={type} />\n </span>\n </Button>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useCallback, useContext} from 'react';\nimport {TreeDispatcherContext, TreeStateContext} from './TreeContext';\nimport {BridgeContext, StoreContext} from '../context';\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\nimport {ModalDialogContext} from '../ModalDialog';\nimport {InspectedElementContext} from './InspectedElementContext';\nimport ViewElementSourceContext from './ViewElementSourceContext';\nimport Toggle from '../Toggle';\nimport {ElementTypeSuspense} from 'react-devtools-shared/src/types';\nimport CannotSuspendWarningMessage from './CannotSuspendWarningMessage';\nimport InspectedElementView from './InspectedElementView';\n\nimport styles from './InspectedElement.css';\n\nimport type {InspectedElementContextType} from './InspectedElementContext';\nimport type {InspectedElement} from './types';\n\nexport type Props = {||};\n\nexport default function InspectedElementWrapper(_: Props) {\n const {inspectedElementID} = useContext(TreeStateContext);\n const dispatch = useContext(TreeDispatcherContext);\n const {canViewElementSourceFunction, viewElementSourceFunction} = useContext(\n ViewElementSourceContext,\n );\n const bridge = useContext(BridgeContext);\n const store = useContext(StoreContext);\n const {dispatch: modalDialogDispatch} = useContext(ModalDialogContext);\n\n const {\n copyInspectedElementPath,\n getInspectedElementPath,\n getInspectedElement,\n storeAsGlobal,\n } = useContext<InspectedElementContextType>(InspectedElementContext);\n\n const element =\n inspectedElementID !== null\n ? store.getElementByID(inspectedElementID)\n : null;\n\n const inspectedElement =\n inspectedElementID != null ? getInspectedElement(inspectedElementID) : null;\n\n const highlightElement = useCallback(() => {\n if (element !== null && inspectedElementID !== null) {\n const rendererID = store.getRendererIDForElement(inspectedElementID);\n if (rendererID !== null) {\n bridge.send('highlightNativeElement', {\n displayName: element.displayName,\n hideAfterTimeout: true,\n id: inspectedElementID,\n openNativeElementsPanel: true,\n rendererID,\n scrollIntoView: true,\n });\n }\n }\n }, [bridge, element, inspectedElementID, store]);\n\n const logElement = useCallback(() => {\n if (inspectedElementID !== null) {\n const rendererID = store.getRendererIDForElement(inspectedElementID);\n if (rendererID !== null) {\n bridge.send('logElementToConsole', {\n id: inspectedElementID,\n rendererID,\n });\n }\n }\n }, [bridge, inspectedElementID, store]);\n\n const viewSource = useCallback(() => {\n if (viewElementSourceFunction != null && inspectedElement !== null) {\n viewElementSourceFunction(\n inspectedElement.id,\n ((inspectedElement: any): InspectedElement),\n );\n }\n }, [inspectedElement, viewElementSourceFunction]);\n\n // In some cases (e.g. FB internal usage) the standalone shell might not be able to view the source.\n // To detect this case, we defer to an injected helper function (if present).\n const canViewSource =\n inspectedElement !== null &&\n inspectedElement.canViewSource &&\n viewElementSourceFunction !== null &&\n (canViewElementSourceFunction === null ||\n canViewElementSourceFunction(inspectedElement));\n\n const isSuspended =\n element !== null &&\n element.type === ElementTypeSuspense &&\n inspectedElement != null &&\n inspectedElement.state != null;\n\n const canToggleSuspense =\n inspectedElement != null && inspectedElement.canToggleSuspense;\n\n // TODO (suspense toggle) Would be nice to eventually use a two setState pattern here as well.\n const toggleSuspended = useCallback(() => {\n let nearestSuspenseElement = null;\n let currentElement = element;\n while (currentElement !== null) {\n if (currentElement.type === ElementTypeSuspense) {\n nearestSuspenseElement = currentElement;\n break;\n } else if (currentElement.parentID > 0) {\n currentElement = store.getElementByID(currentElement.parentID);\n } else {\n currentElement = null;\n }\n }\n\n // If we didn't find a Suspense ancestor, we can't suspend.\n // Instead we can show a warning to the user.\n if (nearestSuspenseElement === null) {\n modalDialogDispatch({\n type: 'SHOW',\n content: <CannotSuspendWarningMessage />,\n });\n } else {\n const nearestSuspenseElementID = nearestSuspenseElement.id;\n\n // If we're suspending from an arbitrary (non-Suspense) component, select the nearest Suspense element in the Tree.\n // This way when the fallback UI is shown and the current element is hidden, something meaningful is selected.\n if (nearestSuspenseElement !== element) {\n dispatch({\n type: 'SELECT_ELEMENT_BY_ID',\n payload: nearestSuspenseElementID,\n });\n }\n\n const rendererID = store.getRendererIDForElement(\n nearestSuspenseElementID,\n );\n\n // Toggle suspended\n if (rendererID !== null) {\n bridge.send('overrideSuspense', {\n id: nearestSuspenseElementID,\n rendererID,\n forceFallback: !isSuspended,\n });\n }\n }\n }, [bridge, dispatch, element, isSuspended, modalDialogDispatch, store]);\n\n if (element === null) {\n return (\n <div className={styles.InspectedElement}>\n <div className={styles.TitleRow} />\n </div>\n );\n }\n\n return (\n <div className={styles.InspectedElement}>\n <div className={styles.TitleRow}>\n {element.key && (\n <>\n <div className={styles.Key} title={`key \"${element.key}\"`}>\n {element.key}\n </div>\n <div className={styles.KeyArrow} />\n </>\n )}\n\n <div className={styles.SelectedComponentName}>\n <div className={styles.Component} title={element.displayName}>\n {element.displayName}\n </div>\n </div>\n\n {canToggleSuspense && (\n <Toggle\n className={styles.IconButton}\n isChecked={isSuspended}\n onChange={toggleSuspended}\n title={\n isSuspended\n ? 'Unsuspend the selected component'\n : 'Suspend the selected component'\n }>\n <ButtonIcon type=\"suspend\" />\n </Toggle>\n )}\n {store.supportsNativeInspection && (\n <Button\n className={styles.IconButton}\n onClick={highlightElement}\n title=\"Inspect the matching DOM element\">\n <ButtonIcon type=\"view-dom\" />\n </Button>\n )}\n <Button\n className={styles.IconButton}\n onClick={logElement}\n title=\"Log this component data to the console\">\n <ButtonIcon type=\"log-data\" />\n </Button>\n <Button\n className={styles.IconButton}\n disabled={!canViewSource}\n onClick={viewSource}\n title=\"View source for this element\">\n <ButtonIcon type=\"view-source\" />\n </Button>\n </div>\n\n {inspectedElement === null && (\n <div className={styles.Loading}>Loading...</div>\n )}\n\n {inspectedElement !== null && (\n <InspectedElementView\n key={\n inspectedElementID /* Force reset when selected Element changes */\n }\n copyInspectedElementPath={copyInspectedElementPath}\n element={element}\n getInspectedElementPath={getInspectedElementPath}\n inspectedElement={inspectedElement}\n storeAsGlobal={storeAsGlobal}\n />\n )}\n </div>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {Fragment, useCallback} from 'react';\nimport Tooltip from '@reach/tooltip';\nimport Icon from './Icon';\n\nimport styles from './TabBar.css';\nimport tooltipStyles from './Tooltip.css';\n\nimport type {IconType} from './Icon';\n\ntype TabInfo = {|\n icon: IconType,\n id: string,\n label: string,\n title?: string,\n|};\n\nexport type Props = {|\n currentTab: any,\n disabled?: boolean,\n id: string,\n selectTab: (tabID: any) => void,\n tabs: Array<TabInfo>,\n type: 'navigation' | 'profiler' | 'settings',\n|};\n\nexport default function TabBar({\n currentTab,\n disabled = false,\n id: groupName,\n selectTab,\n tabs,\n type,\n}: Props) {\n if (!tabs.some(tab => tab.id === currentTab)) {\n selectTab(tabs[0].id);\n }\n\n const onChange = useCallback(\n ({currentTarget}) => selectTab(currentTarget.value),\n [selectTab],\n );\n\n const handleKeyDown = useCallback(event => {\n switch (event.key) {\n case 'ArrowDown':\n case 'ArrowLeft':\n case 'ArrowRight':\n case 'ArrowUp':\n event.stopPropagation();\n break;\n default:\n break;\n }\n }, []);\n\n let iconSizeClassName;\n let tabLabelClassName;\n let tabSizeClassName;\n switch (type) {\n case 'navigation':\n iconSizeClassName = styles.IconSizeNavigation;\n tabLabelClassName = styles.TabLabelNavigation;\n tabSizeClassName = styles.TabSizeNavigation;\n break;\n case 'profiler':\n iconSizeClassName = styles.IconSizeProfiler;\n tabLabelClassName = styles.TabLabelProfiler;\n tabSizeClassName = styles.TabSizeProfiler;\n break;\n case 'settings':\n iconSizeClassName = styles.IconSizeSettings;\n tabLabelClassName = styles.TabLabelSettings;\n tabSizeClassName = styles.TabSizeSettings;\n break;\n default:\n throw Error(`Unsupported type \"${type}\"`);\n }\n\n return (\n <Fragment>\n {tabs.map(({icon, id, label, title}) => {\n let button = (\n <label\n className={[\n tabSizeClassName,\n disabled ? styles.TabDisabled : styles.Tab,\n !disabled && currentTab === id ? styles.TabCurrent : '',\n ].join(' ')}\n key={id}\n onKeyDown={handleKeyDown}\n onMouseDown={() => selectTab(id)}>\n <input\n type=\"radio\"\n className={styles.Input}\n checked={currentTab === id}\n disabled={disabled}\n name={groupName}\n value={id}\n onChange={onChange}\n />\n <Icon\n className={`${\n disabled ? styles.IconDisabled : ''\n } ${iconSizeClassName}`}\n type={icon}\n />\n <span className={tabLabelClassName}>{label}</span>\n </label>\n );\n\n if (title) {\n button = (\n <Tooltip key={id} className={tooltipStyles.Tooltip} label={title}>\n {button}\n </Tooltip>\n );\n }\n\n return button;\n })}\n </Fragment>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport {useSubscription} from '../hooks';\nimport {StoreContext} from '../context';\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\nimport Toggle from '../Toggle';\nimport {\n ComponentFilterDisplayName,\n ComponentFilterElementType,\n ComponentFilterHOC,\n ComponentFilterLocation,\n ElementTypeClass,\n ElementTypeContext,\n ElementTypeFunction,\n ElementTypeForwardRef,\n ElementTypeHostComponent,\n ElementTypeMemo,\n ElementTypeOtherOrUnknown,\n ElementTypeProfiler,\n ElementTypeSuspense,\n} from 'react-devtools-shared/src/types';\n\nimport styles from './SettingsShared.css';\n\nimport type {\n BooleanComponentFilter,\n ComponentFilter,\n ComponentFilterType,\n ElementType,\n ElementTypeComponentFilter,\n RegExpComponentFilter,\n} from 'react-devtools-shared/src/types';\n\nexport default function ComponentsSettings(_: {||}) {\n const store = useContext(StoreContext);\n\n const collapseNodesByDefaultSubscription = useMemo(\n () => ({\n getCurrentValue: () => store.collapseNodesByDefault,\n subscribe: (callback: Function) => {\n store.addListener('collapseNodesByDefault', callback);\n return () => store.removeListener('collapseNodesByDefault', callback);\n },\n }),\n [store],\n );\n const collapseNodesByDefault = useSubscription<boolean>(\n collapseNodesByDefaultSubscription,\n );\n\n const updateCollapseNodesByDefault = useCallback(\n ({currentTarget}) => {\n store.collapseNodesByDefault = !currentTarget.checked;\n },\n [store],\n );\n\n const [componentFilters, setComponentFilters] = useState<\n Array<ComponentFilter>,\n >(() => [...store.componentFilters]);\n\n const addFilter = useCallback(() => {\n setComponentFilters(prevComponentFilters => {\n return [\n ...prevComponentFilters,\n {\n type: ComponentFilterElementType,\n value: ElementTypeHostComponent,\n isEnabled: true,\n },\n ];\n });\n }, []);\n\n const changeFilterType = useCallback(\n (componentFilter: ComponentFilter, type: ComponentFilterType) => {\n setComponentFilters(prevComponentFilters => {\n const cloned: Array<ComponentFilter> = [...prevComponentFilters];\n const index = prevComponentFilters.indexOf(componentFilter);\n if (index >= 0) {\n if (type === ComponentFilterElementType) {\n cloned[index] = {\n type: ComponentFilterElementType,\n isEnabled: componentFilter.isEnabled,\n value: ElementTypeHostComponent,\n };\n } else if (type === ComponentFilterDisplayName) {\n cloned[index] = {\n type: ComponentFilterDisplayName,\n isEnabled: componentFilter.isEnabled,\n isValid: true,\n value: '',\n };\n } else if (type === ComponentFilterLocation) {\n cloned[index] = {\n type: ComponentFilterLocation,\n isEnabled: componentFilter.isEnabled,\n isValid: true,\n value: '',\n };\n } else if (type === ComponentFilterHOC) {\n cloned[index] = {\n type: ComponentFilterHOC,\n isEnabled: componentFilter.isEnabled,\n isValid: true,\n };\n }\n }\n return cloned;\n });\n },\n [],\n );\n\n const updateFilterValueElementType = useCallback(\n (componentFilter: ComponentFilter, value: ElementType) => {\n if (componentFilter.type !== ComponentFilterElementType) {\n throw Error('Invalid value for element type filter');\n }\n\n setComponentFilters(prevComponentFilters => {\n const cloned: Array<ComponentFilter> = [...prevComponentFilters];\n if (componentFilter.type === ComponentFilterElementType) {\n const index = prevComponentFilters.indexOf(componentFilter);\n if (index >= 0) {\n cloned[index] = {\n ...componentFilter,\n value,\n };\n }\n }\n return cloned;\n });\n },\n [],\n );\n\n const updateFilterValueRegExp = useCallback(\n (componentFilter: ComponentFilter, value: string) => {\n if (componentFilter.type === ComponentFilterElementType) {\n throw Error('Invalid value for element type filter');\n }\n\n setComponentFilters(prevComponentFilters => {\n const cloned: Array<ComponentFilter> = [...prevComponentFilters];\n if (\n componentFilter.type === ComponentFilterDisplayName ||\n componentFilter.type === ComponentFilterLocation\n ) {\n const index = prevComponentFilters.indexOf(componentFilter);\n if (index >= 0) {\n let isValid = true;\n try {\n new RegExp(value); // eslint-disable-line no-new\n } catch (error) {\n isValid = false;\n }\n cloned[index] = {\n ...componentFilter,\n isValid,\n value,\n };\n }\n }\n return cloned;\n });\n },\n [],\n );\n\n const removeFilter = useCallback((index: number) => {\n setComponentFilters(prevComponentFilters => {\n const cloned: Array<ComponentFilter> = [...prevComponentFilters];\n cloned.splice(index, 1);\n return cloned;\n });\n }, []);\n\n const toggleFilterIsEnabled = useCallback(\n (componentFilter: ComponentFilter, isEnabled: boolean) => {\n setComponentFilters(prevComponentFilters => {\n const cloned: Array<ComponentFilter> = [...prevComponentFilters];\n const index = prevComponentFilters.indexOf(componentFilter);\n if (index >= 0) {\n if (componentFilter.type === ComponentFilterElementType) {\n cloned[index] = {\n ...((cloned[index]: any): ElementTypeComponentFilter),\n isEnabled,\n };\n } else if (\n componentFilter.type === ComponentFilterDisplayName ||\n componentFilter.type === ComponentFilterLocation\n ) {\n cloned[index] = {\n ...((cloned[index]: any): RegExpComponentFilter),\n isEnabled,\n };\n } else if (componentFilter.type === ComponentFilterHOC) {\n cloned[index] = {\n ...((cloned[index]: any): BooleanComponentFilter),\n isEnabled,\n };\n }\n }\n return cloned;\n });\n },\n [],\n );\n\n // Filter updates are expensive to apply (since they impact the entire tree).\n // Only apply them on unmount.\n // The Store will avoid doing any expensive work unless they've changed.\n // We just want to batch the work in the event that they do change.\n const componentFiltersRef = useRef<Array<ComponentFilter>>(componentFilters);\n useEffect(() => {\n componentFiltersRef.current = componentFilters;\n return () => {};\n }, [componentFilters]);\n useEffect(\n () => () => {\n store.componentFilters = [...componentFiltersRef.current];\n },\n [store],\n );\n\n return (\n <div className={styles.Settings}>\n <label className={styles.Setting}>\n <input\n type=\"checkbox\"\n checked={!collapseNodesByDefault}\n onChange={updateCollapseNodesByDefault}\n />{' '}\n Expand component tree by default\n </label>\n\n <div className={styles.Header}>Hide components where...</div>\n\n <table className={styles.Table}>\n <tbody>\n {componentFilters.length === 0 && (\n <tr className={styles.TableRow}>\n <td className={styles.NoFiltersCell}>\n No filters have been added.\n </td>\n </tr>\n )}\n {componentFilters.map((componentFilter, index) => (\n <tr className={styles.TableRow} key={index}>\n <td className={styles.TableCell}>\n <Toggle\n className={\n componentFilter.isValid !== false\n ? ''\n : styles.InvalidRegExp\n }\n isChecked={componentFilter.isEnabled}\n onChange={isEnabled =>\n toggleFilterIsEnabled(componentFilter, isEnabled)\n }\n title={\n componentFilter.isValid === false\n ? 'Filter invalid'\n : componentFilter.isEnabled\n ? 'Filter enabled'\n : 'Filter disabled'\n }>\n <ToggleIcon\n isEnabled={componentFilter.isEnabled}\n isValid={\n componentFilter.isValid == null ||\n componentFilter.isValid === true\n }\n />\n </Toggle>\n </td>\n <td className={styles.TableCell}>\n <select\n className={styles.Select}\n value={componentFilter.type}\n onChange={({currentTarget}) =>\n changeFilterType(\n componentFilter,\n ((parseInt(\n currentTarget.value,\n 10,\n ): any): ComponentFilterType),\n )\n }>\n <option value={ComponentFilterLocation}>location</option>\n <option value={ComponentFilterDisplayName}>name</option>\n <option value={ComponentFilterElementType}>type</option>\n <option value={ComponentFilterHOC}>hoc</option>\n </select>\n </td>\n <td className={styles.TableCell}>\n {componentFilter.type === ComponentFilterElementType &&\n 'equals'}\n {(componentFilter.type === ComponentFilterLocation ||\n componentFilter.type === ComponentFilterDisplayName) &&\n 'matches'}\n </td>\n <td className={styles.TableCell}>\n {componentFilter.type === ComponentFilterElementType && (\n <select\n className={styles.Select}\n value={componentFilter.value}\n onChange={({currentTarget}) =>\n updateFilterValueElementType(\n componentFilter,\n ((parseInt(currentTarget.value, 10): any): ElementType),\n )\n }>\n <option value={ElementTypeClass}>class</option>\n <option value={ElementTypeContext}>context</option>\n <option value={ElementTypeFunction}>function</option>\n <option value={ElementTypeForwardRef}>forward ref</option>\n <option value={ElementTypeHostComponent}>\n host (e.g. <div>)\n </option>\n <option value={ElementTypeMemo}>memo</option>\n <option value={ElementTypeOtherOrUnknown}>other</option>\n <option value={ElementTypeProfiler}>profiler</option>\n <option value={ElementTypeSuspense}>suspense</option>\n </select>\n )}\n {(componentFilter.type === ComponentFilterLocation ||\n componentFilter.type === ComponentFilterDisplayName) && (\n <input\n className={styles.Input}\n type=\"text\"\n placeholder=\"Regular expression\"\n onChange={({currentTarget}) =>\n updateFilterValueRegExp(\n componentFilter,\n currentTarget.value,\n )\n }\n value={componentFilter.value}\n />\n )}\n </td>\n <td className={styles.TableCell}>\n <Button\n onClick={() => removeFilter(index)}\n title=\"Delete filter\">\n <ButtonIcon type=\"delete\" />\n </Button>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n\n <Button onClick={addFilter}>\n <ButtonIcon className={styles.ButtonIcon} type=\"add\" />\n Add filter\n </Button>\n </div>\n );\n}\n\ntype ToggleIconProps = {|\n isEnabled: boolean,\n isValid: boolean,\n|};\nfunction ToggleIcon({isEnabled, isValid}: ToggleIconProps) {\n let className;\n if (isValid) {\n className = isEnabled ? styles.ToggleOn : styles.ToggleOff;\n } else {\n className = isEnabled ? styles.ToggleOnInvalid : styles.ToggleOffInvalid;\n }\n return (\n <div className={className}>\n <div\n className={isEnabled ? styles.ToggleInsideOn : styles.ToggleInsideOff}\n />\n </div>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useContext} from 'react';\nimport {SettingsContext} from './SettingsContext';\n\nimport styles from './SettingsShared.css';\n\nexport default function DebuggingSettings(_: {||}) {\n const {\n appendComponentStack,\n breakOnConsoleErrors,\n setAppendComponentStack,\n setBreakOnConsoleErrors,\n } = useContext(SettingsContext);\n\n return (\n <div className={styles.Settings}>\n <div className={styles.Setting}>\n <label>\n <input\n type=\"checkbox\"\n checked={appendComponentStack}\n onChange={({currentTarget}) =>\n setAppendComponentStack(currentTarget.checked)\n }\n />{' '}\n Append component stacks to console warnings and errors.\n </label>\n </div>\n\n <div className={styles.Setting}>\n <label>\n <input\n type=\"checkbox\"\n checked={breakOnConsoleErrors}\n onChange={({currentTarget}) =>\n setBreakOnConsoleErrors(currentTarget.checked)\n }\n />{' '}\n Break on warnings\n </label>\n </div>\n </div>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useContext} from 'react';\nimport {SettingsContext} from './SettingsContext';\nimport {StoreContext} from '../context';\nimport {CHANGE_LOG_URL} from 'react-devtools-shared/src/constants';\n\nimport styles from './SettingsShared.css';\n\nexport default function GeneralSettings(_: {||}) {\n const {\n displayDensity,\n setDisplayDensity,\n setTheme,\n setTraceUpdatesEnabled,\n theme,\n traceUpdatesEnabled,\n } = useContext(SettingsContext);\n\n const {supportsTraceUpdates} = useContext(StoreContext);\n\n return (\n <div className={styles.Settings}>\n <div className={styles.Setting}>\n <div className={styles.RadioLabel}>Theme</div>\n <select\n className={styles.Select}\n value={theme}\n onChange={({currentTarget}) => setTheme(currentTarget.value)}>\n <option value=\"auto\">Auto</option>\n <option value=\"light\">Light</option>\n <option value=\"dark\">Dark</option>\n </select>\n </div>\n\n <div className={styles.Setting}>\n <div className={styles.RadioLabel}>Display density</div>\n <select\n className={styles.Select}\n value={displayDensity}\n onChange={({currentTarget}) =>\n setDisplayDensity(currentTarget.value)\n }>\n <option value=\"compact\">Compact</option>\n <option value=\"comfortable\">Comfortable</option>\n </select>\n </div>\n\n {supportsTraceUpdates && (\n <div className={styles.Setting}>\n <label>\n <input\n type=\"checkbox\"\n checked={traceUpdatesEnabled}\n onChange={({currentTarget}) =>\n setTraceUpdatesEnabled(currentTarget.checked)\n }\n />{' '}\n Highlight updates when components render.\n </label>\n </div>\n )}\n\n <div className={styles.ReleaseNotes}>\n <a\n className={styles.ReleaseNotesLink}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={CHANGE_LOG_URL}>\n View release notes\n </a>{' '}\n for DevTools version {process.env.DEVTOOLS_VERSION}\n </div>\n </div>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {createContext, useCallback, useContext, useMemo, useState} from 'react';\nimport {unstable_batchedUpdates as batchedUpdates} from 'react-dom';\nimport {useLocalStorage, useSubscription} from '../hooks';\nimport {\n TreeDispatcherContext,\n TreeStateContext,\n} from '../Components/TreeContext';\nimport {StoreContext} from '../context';\n\nimport type {ProfilingDataFrontend} from './types';\n\nexport type TabID = 'flame-chart' | 'ranked-chart' | 'interactions';\n\nexport type Context = {|\n // Which tab is selected in the Profiler UI?\n selectedTabID: TabID,\n selectTab(id: TabID): void,\n\n // Store subscription based values.\n // The isProfiling value may be modified by the record button in the Profiler toolbar,\n // or from the backend itself (after a reload-and-profile action).\n // It is synced between the backend and frontend via a Store subscription.\n didRecordCommits: boolean,\n isProcessingData: boolean,\n isProfiling: boolean,\n profilingData: ProfilingDataFrontend | null,\n startProfiling(): void,\n stopProfiling(): void,\n supportsProfiling: boolean,\n\n // Which root should profiling data be shown for?\n // This value should be initialized to either:\n // 1. The selected root in the Components tree (if it has any profiling data) or\n // 2. The first root in the list with profiling data.\n rootID: number | null,\n setRootID: (id: number) => void,\n\n // Controls whether commits are filtered by duration.\n // This value is controlled by a filter toggle UI in the Profiler toolbar.\n // It impacts the commit selector UI as well as the fiber commits bar chart.\n isCommitFilterEnabled: boolean,\n setIsCommitFilterEnabled: (value: boolean) => void,\n minCommitDuration: number,\n setMinCommitDuration: (value: number) => void,\n\n // Which commit is currently selected in the commit selector UI.\n // Note that this is the index of the commit in all commits (non-filtered) that were profiled.\n // This value is controlled by the commit selector UI in the Profiler toolbar.\n // It impacts the flame graph and ranked charts.\n selectedCommitIndex: number | null,\n selectCommitIndex: (value: number | null) => void,\n\n // Which fiber is currently selected in the Ranked or Flamegraph charts?\n selectedFiberID: number | null,\n selectedFiberName: string | null,\n selectFiber: (id: number | null, name: string | null) => void,\n\n // Which interaction is currently selected in the Interactions graph?\n selectedInteractionID: number | null,\n selectInteraction: (id: number | null) => void,\n|};\n\nconst ProfilerContext = createContext<Context>(((null: any): Context));\nProfilerContext.displayName = 'ProfilerContext';\n\ntype StoreProfilingState = {|\n didRecordCommits: boolean,\n isProcessingData: boolean,\n isProfiling: boolean,\n profilingData: ProfilingDataFrontend | null,\n supportsProfiling: boolean,\n|};\n\ntype Props = {|\n children: React$Node,\n|};\n\nfunction ProfilerContextController({children}: Props) {\n const store = useContext(StoreContext);\n const {selectedElementID} = useContext(TreeStateContext);\n const dispatch = useContext(TreeDispatcherContext);\n\n const {profilerStore} = store;\n\n const subscription = useMemo(\n () => ({\n getCurrentValue: () => ({\n didRecordCommits: profilerStore.didRecordCommits,\n isProcessingData: profilerStore.isProcessingData,\n isProfiling: profilerStore.isProfiling,\n profilingData: profilerStore.profilingData,\n supportsProfiling: store.supportsProfiling,\n }),\n subscribe: (callback: Function) => {\n profilerStore.addListener('profilingData', callback);\n profilerStore.addListener('isProcessingData', callback);\n profilerStore.addListener('isProfiling', callback);\n store.addListener('supportsProfiling', callback);\n return () => {\n profilerStore.removeListener('profilingData', callback);\n profilerStore.removeListener('isProcessingData', callback);\n profilerStore.removeListener('isProfiling', callback);\n store.removeListener('supportsProfiling', callback);\n };\n },\n }),\n [profilerStore, store],\n );\n const {\n didRecordCommits,\n isProcessingData,\n isProfiling,\n profilingData,\n supportsProfiling,\n } = useSubscription<StoreProfilingState>(subscription);\n\n const [\n prevProfilingData,\n setPrevProfilingData,\n ] = useState<ProfilingDataFrontend | null>(null);\n const [rootID, setRootID] = useState<number | null>(null);\n const [selectedFiberID, selectFiberID] = useState<number | null>(null);\n const [selectedFiberName, selectFiberName] = useState<string | null>(null);\n\n const selectFiber = useCallback(\n (id: number | null, name: string | null) => {\n selectFiberID(id);\n selectFiberName(name);\n\n // Sync selection to the Components tab for convenience.\n // Keep in mind that profiling data may be from a previous session.\n // If data has been imported, we should skip the selection sync.\n if (\n id !== null &&\n profilingData !== null &&\n profilingData.imported === false\n ) {\n // We should still check to see if this element is still in the store.\n // It may have been removed during profiling.\n if (store.containsElement(id)) {\n dispatch({\n type: 'SELECT_ELEMENT_BY_ID',\n payload: id,\n });\n }\n }\n },\n [dispatch, selectFiberID, selectFiberName, store, profilingData],\n );\n\n const setRootIDAndClearFiber = useCallback(\n (id: number | null) => {\n selectFiber(null, null);\n setRootID(id);\n },\n [setRootID, selectFiber],\n );\n\n if (prevProfilingData !== profilingData) {\n batchedUpdates(() => {\n setPrevProfilingData(profilingData);\n\n const dataForRoots =\n profilingData !== null ? profilingData.dataForRoots : null;\n if (dataForRoots != null) {\n const firstRootID = dataForRoots.keys().next().value || null;\n\n if (rootID === null || !dataForRoots.has(rootID)) {\n let selectedElementRootID = null;\n if (selectedElementID !== null) {\n selectedElementRootID = store.getRootIDForElement(\n selectedElementID,\n );\n }\n if (\n selectedElementRootID !== null &&\n dataForRoots.has(selectedElementRootID)\n ) {\n setRootIDAndClearFiber(selectedElementRootID);\n } else {\n setRootIDAndClearFiber(firstRootID);\n }\n }\n }\n });\n }\n\n const startProfiling = useCallback(\n () => store.profilerStore.startProfiling(),\n [store],\n );\n const stopProfiling = useCallback(() => store.profilerStore.stopProfiling(), [\n store,\n ]);\n\n const [\n isCommitFilterEnabled,\n setIsCommitFilterEnabled,\n ] = useLocalStorage<boolean>('React::DevTools::isCommitFilterEnabled', false);\n const [minCommitDuration, setMinCommitDuration] = useLocalStorage<number>(\n 'minCommitDuration',\n 0,\n );\n\n const [selectedCommitIndex, selectCommitIndex] = useState<number | null>(\n null,\n );\n const [selectedTabID, selectTab] = useState<TabID>('flame-chart');\n const [selectedInteractionID, selectInteraction] = useState<number | null>(\n null,\n );\n\n if (isProfiling) {\n batchedUpdates(() => {\n if (selectedCommitIndex !== null) {\n selectCommitIndex(null);\n }\n if (selectedFiberID !== null) {\n selectFiberID(null);\n selectFiberName(null);\n }\n if (selectedInteractionID !== null) {\n selectInteraction(null);\n }\n });\n }\n\n const value = useMemo(\n () => ({\n selectedTabID,\n selectTab,\n\n didRecordCommits,\n isProcessingData,\n isProfiling,\n profilingData,\n startProfiling,\n stopProfiling,\n supportsProfiling,\n\n rootID,\n setRootID: setRootIDAndClearFiber,\n\n isCommitFilterEnabled,\n setIsCommitFilterEnabled,\n minCommitDuration,\n setMinCommitDuration,\n\n selectedCommitIndex,\n selectCommitIndex,\n\n selectedFiberID,\n selectedFiberName,\n selectFiber,\n\n selectedInteractionID,\n selectInteraction,\n }),\n [\n selectedTabID,\n selectTab,\n\n didRecordCommits,\n isProcessingData,\n isProfiling,\n profilingData,\n startProfiling,\n stopProfiling,\n supportsProfiling,\n\n rootID,\n setRootID,\n setRootIDAndClearFiber,\n\n isCommitFilterEnabled,\n setIsCommitFilterEnabled,\n minCommitDuration,\n setMinCommitDuration,\n\n selectedCommitIndex,\n selectCommitIndex,\n\n selectedFiberID,\n selectedFiberName,\n selectFiber,\n\n selectedInteractionID,\n selectInteraction,\n ],\n );\n\n return (\n <ProfilerContext.Provider value={value}>\n {children}\n </ProfilerContext.Provider>\n );\n}\n\nexport {ProfilerContext, ProfilerContextController};\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useCallback, useContext, useMemo, useRef} from 'react';\nimport {useSubscription} from '../hooks';\nimport {StoreContext} from '../context';\nimport {ProfilerContext} from 'react-devtools-shared/src/devtools/views/Profiler/ProfilerContext';\n\nimport styles from './SettingsShared.css';\n\nexport default function ProfilerSettings(_: {||}) {\n const {\n isCommitFilterEnabled,\n minCommitDuration,\n setIsCommitFilterEnabled,\n setMinCommitDuration,\n } = useContext(ProfilerContext);\n const store = useContext(StoreContext);\n\n const recordChangeDescriptionsSubscription = useMemo(\n () => ({\n getCurrentValue: () => store.recordChangeDescriptions,\n subscribe: (callback: Function) => {\n store.addListener('recordChangeDescriptions', callback);\n return () => store.removeListener('recordChangeDescriptions', callback);\n },\n }),\n [store],\n );\n const recordChangeDescriptions = useSubscription<boolean>(\n recordChangeDescriptionsSubscription,\n );\n\n const updateRecordChangeDescriptions = useCallback(\n ({currentTarget}) => {\n store.recordChangeDescriptions = currentTarget.checked;\n },\n [store],\n );\n const updateMinCommitDuration = useCallback(\n (event: SyntheticEvent<HTMLInputElement>) => {\n const newValue = parseFloat(event.currentTarget.value);\n setMinCommitDuration(\n Number.isNaN(newValue) || newValue <= 0 ? 0 : newValue,\n );\n },\n [setMinCommitDuration],\n );\n const updateIsCommitFilterEnabled = useCallback(\n (event: SyntheticEvent<HTMLInputElement>) => {\n const checked = event.currentTarget.checked;\n setIsCommitFilterEnabled(checked);\n if (checked) {\n if (minCommitDurationInputRef.current !== null) {\n minCommitDurationInputRef.current.focus();\n }\n }\n },\n [setIsCommitFilterEnabled],\n );\n\n const minCommitDurationInputRef = useRef<HTMLInputElement | null>(null);\n\n return (\n <div className={styles.Settings}>\n <div className={styles.Setting}>\n <label>\n <input\n type=\"checkbox\"\n checked={recordChangeDescriptions}\n onChange={updateRecordChangeDescriptions}\n />{' '}\n Record why each component rendered while profiling.\n </label>\n </div>\n\n <div className={styles.Setting}>\n <label>\n <input\n checked={isCommitFilterEnabled}\n onChange={updateIsCommitFilterEnabled}\n type=\"checkbox\"\n />{' '}\n Hide commits below\n </label>{' '}\n <input\n className={styles.Input}\n onChange={updateMinCommitDuration}\n ref={minCommitDurationInputRef}\n type=\"number\"\n value={minCommitDuration}\n />{' '}\n (ms)\n </div>\n </div>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useCallback, useContext, useEffect, useMemo, useRef} from 'react';\nimport {SettingsModalContext} from './SettingsModalContext';\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\nimport TabBar from '../TabBar';\nimport {StoreContext} from '../context';\nimport {\n useLocalStorage,\n useModalDismissSignal,\n useSubscription,\n} from '../hooks';\nimport ComponentsSettings from './ComponentsSettings';\nimport DebuggingSettings from './DebuggingSettings';\nimport GeneralSettings from './GeneralSettings';\nimport ProfilerSettings from './ProfilerSettings';\n\nimport styles from './SettingsModal.css';\n\ntype TabID = 'general' | 'components' | 'profiler';\n\nexport default function SettingsModal(_: {||}) {\n const {isModalShowing, setIsModalShowing} = useContext(SettingsModalContext);\n const store = useContext(StoreContext);\n const {profilerStore} = store;\n\n // Updating preferences while profiling is in progress could break things (e.g. filtering)\n // Explicitly disallow it for now.\n const isProfilingSubscription = useMemo(\n () => ({\n getCurrentValue: () => profilerStore.isProfiling,\n subscribe: (callback: Function) => {\n profilerStore.addListener('isProfiling', callback);\n return () => profilerStore.removeListener('isProfiling', callback);\n },\n }),\n [profilerStore],\n );\n const isProfiling = useSubscription<boolean>(isProfilingSubscription);\n if (isProfiling && isModalShowing) {\n setIsModalShowing(false);\n }\n\n if (!isModalShowing) {\n return null;\n }\n\n return <SettingsModalImpl />;\n}\n\nfunction SettingsModalImpl(_: {||}) {\n const {setIsModalShowing} = useContext(SettingsModalContext);\n const dismissModal = useCallback(() => setIsModalShowing(false), [\n setIsModalShowing,\n ]);\n\n const [selectedTabID, selectTab] = useLocalStorage<TabID>(\n 'React::DevTools::selectedSettingsTabID',\n 'general',\n );\n\n const modalRef = useRef<HTMLDivElement | null>(null);\n useModalDismissSignal(modalRef, dismissModal);\n\n useEffect(() => {\n if (modalRef.current !== null) {\n modalRef.current.focus();\n }\n }, [modalRef]);\n\n let view = null;\n switch (selectedTabID) {\n case 'components':\n view = <ComponentsSettings />;\n break;\n case 'debugging':\n view = <DebuggingSettings />;\n break;\n case 'general':\n view = <GeneralSettings />;\n break;\n case 'profiler':\n view = <ProfilerSettings />;\n break;\n default:\n break;\n }\n\n return (\n <div className={styles.Background}>\n <div className={styles.Modal} ref={modalRef}>\n <div className={styles.Tabs}>\n <TabBar\n currentTab={selectedTabID}\n id=\"Settings\"\n selectTab={selectTab}\n tabs={tabs}\n type=\"settings\"\n />\n <div className={styles.Spacer} />\n <Button onClick={dismissModal} title=\"Close settings dialog\">\n <ButtonIcon type=\"close\" />\n </Button>\n </div>\n <div className={styles.Content}>{view}</div>\n </div>\n </div>\n );\n}\n\nconst tabs = [\n {\n id: 'general',\n icon: 'settings',\n label: 'General',\n },\n {\n id: 'debugging',\n icon: 'bug',\n label: 'Debugging',\n },\n {\n id: 'components',\n icon: 'components',\n label: 'Components',\n },\n {\n id: 'profiler',\n icon: 'profiler',\n label: 'Profiler',\n },\n];\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {\n Fragment,\n Suspense,\n useEffect,\n useLayoutEffect,\n useReducer,\n useRef,\n} from 'react';\nimport Tree from './Tree';\nimport {InspectedElementContextController} from './InspectedElementContext';\nimport {OwnersListContextController} from './OwnersListContext';\nimport portaledContent from '../portaledContent';\nimport {SettingsModalContextController} from 'react-devtools-shared/src/devtools/views/Settings/SettingsModalContext';\nimport {\n localStorageGetItem,\n localStorageSetItem,\n} from 'react-devtools-shared/src/storage';\nimport InspectedElement from './InspectedElement';\nimport {ModalDialog} from '../ModalDialog';\nimport SettingsModal from 'react-devtools-shared/src/devtools/views/Settings/SettingsModal';\nimport {NativeStyleContextController} from './NativeStyleEditor/context';\n\nimport styles from './Components.css';\n\ntype Orientation = 'horizontal' | 'vertical';\n\ntype ResizeActionType =\n | 'ACTION_SET_DID_MOUNT'\n | 'ACTION_SET_IS_RESIZING'\n | 'ACTION_SET_HORIZONTAL_PERCENTAGE'\n | 'ACTION_SET_VERTICAL_PERCENTAGE';\n\ntype ResizeAction = {|\n type: ResizeActionType,\n payload: any,\n|};\n\ntype ResizeState = {|\n horizontalPercentage: number,\n isResizing: boolean,\n verticalPercentage: number,\n|};\n\nfunction Components(_: {||}) {\n const wrapperElementRef = useRef<null | HTMLElement>(null);\n const resizeElementRef = useRef<null | HTMLElement>(null);\n\n const [state, dispatch] = useReducer<ResizeState, any, ResizeAction>(\n resizeReducer,\n null,\n initResizeState,\n );\n\n const {horizontalPercentage, verticalPercentage} = state;\n\n useLayoutEffect(() => {\n const resizeElement = resizeElementRef.current;\n\n setResizeCSSVariable(\n resizeElement,\n 'horizontal',\n horizontalPercentage * 100,\n );\n setResizeCSSVariable(resizeElement, 'vertical', verticalPercentage * 100);\n }, []);\n\n useEffect(() => {\n const timeoutID = setTimeout(() => {\n localStorageSetItem(\n LOCAL_STORAGE_KEY,\n JSON.stringify({\n horizontalPercentage,\n verticalPercentage,\n }),\n );\n }, 500);\n\n return () => clearTimeout(timeoutID);\n }, [horizontalPercentage, verticalPercentage]);\n\n const {isResizing} = state;\n\n const onResizeStart = () =>\n dispatch({type: 'ACTION_SET_IS_RESIZING', payload: true});\n\n let onResize;\n let onResizeEnd;\n if (isResizing) {\n onResizeEnd = () =>\n dispatch({type: 'ACTION_SET_IS_RESIZING', payload: false});\n\n onResize = event => {\n const resizeElement = resizeElementRef.current;\n const wrapperElement = wrapperElementRef.current;\n\n if (!isResizing || wrapperElement === null || resizeElement === null) {\n return;\n }\n\n event.preventDefault();\n\n const orientation = getOrientation(wrapperElement);\n\n const {height, width, left, top} = wrapperElement.getBoundingClientRect();\n\n const currentMousePosition =\n orientation === 'horizontal'\n ? event.clientX - left\n : event.clientY - top;\n\n const boundaryMin = MINIMUM_SIZE;\n const boundaryMax =\n orientation === 'horizontal'\n ? width - MINIMUM_SIZE\n : height - MINIMUM_SIZE;\n\n const isMousePositionInBounds =\n currentMousePosition > boundaryMin &&\n currentMousePosition < boundaryMax;\n\n if (isMousePositionInBounds) {\n const resizedElementDimension =\n orientation === 'horizontal' ? width : height;\n const actionType =\n orientation === 'horizontal'\n ? 'ACTION_SET_HORIZONTAL_PERCENTAGE'\n : 'ACTION_SET_VERTICAL_PERCENTAGE';\n const percentage =\n (currentMousePosition / resizedElementDimension) * 100;\n\n setResizeCSSVariable(resizeElement, orientation, percentage);\n\n dispatch({\n type: actionType,\n payload: currentMousePosition / resizedElementDimension,\n });\n }\n };\n }\n\n return (\n <SettingsModalContextController>\n <OwnersListContextController>\n <InspectedElementContextController>\n <div\n ref={wrapperElementRef}\n className={styles.Components}\n onMouseMove={onResize}\n onMouseLeave={onResizeEnd}\n onMouseUp={onResizeEnd}>\n <Fragment>\n <div ref={resizeElementRef} className={styles.TreeWrapper}>\n <Tree />\n </div>\n <div className={styles.ResizeBarWrapper}>\n <div onMouseDown={onResizeStart} className={styles.ResizeBar} />\n </div>\n <div className={styles.InspectedElementWrapper}>\n <NativeStyleContextController>\n <Suspense fallback={<Loading />}>\n <InspectedElement />\n </Suspense>\n </NativeStyleContextController>\n </div>\n <ModalDialog />\n <SettingsModal />\n </Fragment>\n </div>\n </InspectedElementContextController>\n </OwnersListContextController>\n </SettingsModalContextController>\n );\n}\n\nfunction Loading() {\n return <div className={styles.Loading}>Loading...</div>;\n}\n\nconst LOCAL_STORAGE_KEY = 'React::DevTools::createResizeReducer';\nconst VERTICAL_MODE_MAX_WIDTH = 600;\nconst MINIMUM_SIZE = 50;\n\nfunction initResizeState(): ResizeState {\n let horizontalPercentage = 0.65;\n let verticalPercentage = 0.5;\n\n try {\n let data = localStorageGetItem(LOCAL_STORAGE_KEY);\n if (data != null) {\n data = JSON.parse(data);\n horizontalPercentage = data.horizontalPercentage;\n verticalPercentage = data.verticalPercentage;\n }\n } catch (error) {}\n\n return {\n horizontalPercentage,\n isResizing: false,\n verticalPercentage,\n };\n}\n\nfunction resizeReducer(state: ResizeState, action: ResizeAction): ResizeState {\n switch (action.type) {\n case 'ACTION_SET_IS_RESIZING':\n return {\n ...state,\n isResizing: action.payload,\n };\n case 'ACTION_SET_HORIZONTAL_PERCENTAGE':\n return {\n ...state,\n horizontalPercentage: action.payload,\n };\n case 'ACTION_SET_VERTICAL_PERCENTAGE':\n return {\n ...state,\n verticalPercentage: action.payload,\n };\n default:\n return state;\n }\n}\n\nfunction getOrientation(\n wrapperElement: null | HTMLElement,\n): null | Orientation {\n if (wrapperElement != null) {\n const {width} = wrapperElement.getBoundingClientRect();\n return width > VERTICAL_MODE_MAX_WIDTH ? 'horizontal' : 'vertical';\n }\n return null;\n}\n\nfunction setResizeCSSVariable(\n resizeElement: null | HTMLElement,\n orientation: null | Orientation,\n percentage: number,\n): void {\n if (resizeElement !== null && orientation !== null) {\n resizeElement.style.setProperty(\n `--${orientation}-resize-percentage`,\n `${percentage}%`,\n );\n }\n}\n\nexport default portaledContent(Components);\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useCallback, useContext} from 'react';\nimport {ProfilerContext} from './ProfilerContext';\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\nimport {StoreContext} from '../context';\n\nexport default function ClearProfilingDataButton() {\n const store = useContext(StoreContext);\n const {didRecordCommits, isProfiling} = useContext(ProfilerContext);\n const {profilerStore} = store;\n\n const clear = useCallback(() => profilerStore.clear(), [profilerStore]);\n\n return (\n <Button\n disabled={isProfiling || !didRecordCommits}\n onClick={clear}\n title=\"Clear profiling data\">\n <ButtonIcon type=\"clear\" />\n </Button>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\n\nimport styles from './NoCommitData.css';\n\nexport default function NoCommitData(_: {||}) {\n return (\n <div className={styles.NoCommitData}>\n <div className={styles.Header}>\n There is no data matching the current filter criteria.\n </div>\n <div className={styles.FilterMessage}>\n Try adjusting the commit filter in Profiler settings.\n </div>\n </div>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\n\nimport styles from './ChartNode.css';\n\ntype Props = {|\n color: string,\n height: number,\n isDimmed?: boolean,\n label: string,\n onClick: (event: SyntheticMouseEvent<*>) => mixed,\n onDoubleClick?: (event: SyntheticMouseEvent<*>) => mixed,\n onMouseEnter: (event: SyntheticMouseEvent<*>) => mixed,\n onMouseLeave: (event: SyntheticMouseEvent<*>) => mixed,\n placeLabelAboveNode?: boolean,\n textStyle?: Object,\n width: number,\n x: number,\n y: number,\n|};\n\nconst minWidthToDisplay = 35;\n\nexport default function ChartNode({\n color,\n height,\n isDimmed = false,\n label,\n onClick,\n onMouseEnter,\n onMouseLeave,\n onDoubleClick,\n textStyle,\n width,\n x,\n y,\n}: Props) {\n return (\n <g className={styles.Group} transform={`translate(${x},${y})`}>\n <rect\n width={width}\n height={height}\n fill={color}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onDoubleClick={onDoubleClick}\n className={styles.Rect}\n style={{\n opacity: isDimmed ? 0.5 : 1,\n }}\n />\n {width >= minWidthToDisplay && (\n <foreignObject\n width={width}\n height={height}\n className={styles.ForeignObject}\n style={{\n paddingLeft: x < 0 ? -x : 0,\n opacity: isDimmed ? 0.75 : 1,\n display: width < minWidthToDisplay ? 'none' : 'block',\n }}\n y={0}>\n <div className={styles.Div} style={textStyle}>\n {label}\n </div>\n </foreignObject>\n )}\n </g>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {Fragment, memo, useCallback, useContext} from 'react';\nimport {areEqual} from 'react-window';\nimport {barWidthThreshold} from './constants';\nimport {getGradientColor} from './utils';\nimport ChartNode from './ChartNode';\nimport {SettingsContext} from '../Settings/SettingsContext';\n\nimport type {ChartNode as ChartNodeType} from './FlamegraphChartBuilder';\nimport type {ItemData} from './CommitFlamegraph';\n\ntype Props = {\n data: ItemData,\n index: number,\n style: Object,\n ...\n};\n\nfunction CommitFlamegraphListItem({data, index, style}: Props) {\n const {\n chartData,\n onElementMouseEnter,\n onElementMouseLeave,\n scaleX,\n selectedChartNode,\n selectedChartNodeIndex,\n selectFiber,\n width,\n } = data;\n const {renderPathNodes, maxSelfDuration, rows} = chartData;\n\n const {lineHeight} = useContext(SettingsContext);\n\n const handleClick = useCallback(\n (event: SyntheticMouseEvent<*>, id: number, name: string) => {\n event.stopPropagation();\n selectFiber(id, name);\n },\n [selectFiber],\n );\n\n const handleMouseEnter = (nodeData: ChartNodeType) => {\n const {id, name} = nodeData;\n onElementMouseEnter({id, name});\n };\n\n const handleMouseLeave = () => {\n onElementMouseLeave();\n };\n\n // List items are absolutely positioned using the CSS \"top\" attribute.\n // The \"left\" value will always be 0.\n // Since height is fixed, and width is based on the node's duration,\n // We can ignore those values as well.\n const top = parseInt(style.top, 10);\n\n const row = rows[index];\n\n const selectedNodeOffset = scaleX(\n selectedChartNode !== null ? selectedChartNode.offset : 0,\n width,\n );\n\n return (\n <Fragment>\n {row.map(chartNode => {\n const {\n didRender,\n id,\n label,\n name,\n offset,\n selfDuration,\n treeBaseDuration,\n } = chartNode;\n\n const nodeOffset = scaleX(offset, width);\n const nodeWidth = scaleX(treeBaseDuration, width);\n\n // Filter out nodes that are too small to see or click.\n // This also helps render large trees faster.\n if (nodeWidth < barWidthThreshold) {\n return null;\n }\n\n // Filter out nodes that are outside of the horizontal window.\n if (\n nodeOffset + nodeWidth < selectedNodeOffset ||\n nodeOffset > selectedNodeOffset + width\n ) {\n return null;\n }\n\n let color = 'url(#didNotRenderPattern)';\n let textColor = 'var(--color-commit-did-not-render-pattern-text)';\n if (didRender) {\n color = getGradientColor(selfDuration / maxSelfDuration);\n textColor = 'var(--color-commit-gradient-text)';\n } else if (renderPathNodes.has(id)) {\n color = 'var(--color-commit-did-not-render-fill)';\n textColor = 'var(--color-commit-did-not-render-fill-text)';\n }\n\n return (\n <ChartNode\n color={color}\n height={lineHeight}\n isDimmed={index < selectedChartNodeIndex}\n key={id}\n label={label}\n onClick={event => handleClick(event, id, name)}\n onMouseEnter={() => handleMouseEnter(chartNode)}\n onMouseLeave={handleMouseLeave}\n textStyle={{color: textColor}}\n width={nodeWidth}\n x={nodeOffset - selectedNodeOffset}\n y={top}\n />\n );\n })}\n </Fragment>\n );\n}\n\nexport default memo<Props>(CommitFlamegraphListItem, areEqual);\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nexport const barWidthThreshold = 2;\nexport const interactionCommitSize = 10;\nexport const interactionLabelWidth = 200;\nexport const maxBarWidth = 30;\nexport const minBarWidth = 5;\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useContext} from 'react';\nimport {ProfilerContext} from '../Profiler/ProfilerContext';\nimport {StoreContext} from '../context';\n\nimport styles from './WhatChanged.css';\n\ntype Props = {|\n fiberID: number,\n|};\n\nexport default function WhatChanged({fiberID}: Props) {\n const {profilerStore} = useContext(StoreContext);\n const {rootID, selectedCommitIndex} = useContext(ProfilerContext);\n\n // TRICKY\n // Handle edge case where no commit is selected because of a min-duration filter update.\n // If the commit index is null, suspending for data below would throw an error.\n // TODO (ProfilerContext) This check should not be necessary.\n if (selectedCommitIndex === null) {\n return null;\n }\n\n const {changeDescriptions} = profilerStore.getCommitData(\n ((rootID: any): number),\n selectedCommitIndex,\n );\n\n if (changeDescriptions === null) {\n return null;\n }\n\n const changeDescription = changeDescriptions.get(fiberID);\n if (changeDescription == null) {\n return null;\n }\n\n if (changeDescription.isFirstMount) {\n return (\n <div className={styles.Component}>\n <label className={styles.Label}>Why did this render?</label>\n <div className={styles.Item}>\n This is the first time the component rendered.\n </div>\n </div>\n );\n }\n\n const changes = [];\n\n if (changeDescription.context === true) {\n changes.push(\n <div key=\"context\" className={styles.Item}>\n • Context changed\n </div>,\n );\n } else if (\n typeof changeDescription.context === 'object' &&\n changeDescription.context !== null &&\n changeDescription.context.length !== 0\n ) {\n changes.push(\n <div key=\"context\" className={styles.Item}>\n • Context changed:\n {changeDescription.context.map(key => (\n <span key={key} className={styles.Key}>\n {key}\n </span>\n ))}\n </div>,\n );\n }\n\n if (changeDescription.didHooksChange) {\n changes.push(\n <div key=\"hooks\" className={styles.Item}>\n • Hooks changed\n </div>,\n );\n }\n\n if (\n changeDescription.props !== null &&\n changeDescription.props.length !== 0\n ) {\n changes.push(\n <div key=\"props\" className={styles.Item}>\n • Props changed:\n {changeDescription.props.map(key => (\n <span key={key} className={styles.Key}>\n {key}\n </span>\n ))}\n </div>,\n );\n }\n\n if (\n changeDescription.state !== null &&\n changeDescription.state.length !== 0\n ) {\n changes.push(\n <div key=\"state\" className={styles.Item}>\n • State changed:\n {changeDescription.state.map(key => (\n <span key={key} className={styles.Key}>\n {key}\n </span>\n ))}\n </div>,\n );\n }\n\n if (changes.length === 0) {\n changes.push(\n <div key=\"nothing\" className={styles.Item}>\n The parent component rendered.\n </div>,\n );\n }\n\n return (\n <div className={styles.Component}>\n <label className={styles.Label}>Why did this render?</label>\n {changes}\n </div>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {Fragment, useContext} from 'react';\nimport {ProfilerContext} from './ProfilerContext';\nimport {formatDuration} from './utils';\nimport WhatChanged from './WhatChanged';\nimport {StoreContext} from '../context';\n\nimport styles from './HoveredFiberInfo.css';\n\nimport type {ChartNode} from './FlamegraphChartBuilder';\n\nexport type TooltipFiberData = {|\n id: number,\n name: string,\n|};\n\nexport type Props = {\n fiberData: ChartNode,\n};\n\nexport default function HoveredFiberInfo({fiberData}: Props) {\n const {profilerStore} = useContext(StoreContext);\n const {rootID, selectedCommitIndex} = useContext(ProfilerContext);\n\n const {id, name} = fiberData;\n const {profilingCache} = profilerStore;\n\n const commitIndices = profilingCache.getFiberCommits({\n fiberID: ((id: any): number),\n rootID: ((rootID: any): number),\n });\n\n let renderDurationInfo = null;\n let i = 0;\n for (i = 0; i < commitIndices.length; i++) {\n const commitIndex = commitIndices[i];\n if (selectedCommitIndex === commitIndex) {\n const {\n fiberActualDurations,\n fiberSelfDurations,\n } = profilerStore.getCommitData(((rootID: any): number), commitIndex);\n const actualDuration = fiberActualDurations.get(id) || 0;\n const selfDuration = fiberSelfDurations.get(id) || 0;\n\n renderDurationInfo = (\n <div key={commitIndex} className={styles.CurrentCommit}>\n {formatDuration(selfDuration)}ms of {formatDuration(actualDuration)}ms\n </div>\n );\n\n break;\n }\n }\n\n return (\n <Fragment>\n <div className={styles.Toolbar}>\n <div className={styles.Component}>{name}</div>\n </div>\n <div className={styles.Content}>\n {renderDurationInfo || <div>Did not render.</div>}\n <WhatChanged fiberID={((id: any): number)} />\n </div>\n </Fragment>\n );\n}\n","/** @flow */\n\nimport * as React from 'react';\nimport {useRef} from 'react';\n\nimport styles from './Tooltip.css';\n\nconst initialTooltipState = {height: 0, mouseX: 0, mouseY: 0, width: 0};\n\nexport default function Tooltip({children, label}: any) {\n const containerRef = useRef(null);\n const tooltipRef = useRef(null);\n\n // update the position of the tooltip based on current mouse position\n const updateTooltipPosition = (event: SyntheticMouseEvent<*>) => {\n const element = tooltipRef.current;\n if (element != null) {\n // first find the mouse position\n const mousePosition = getMousePosition(containerRef.current, event);\n // use the mouse position to find the position of tooltip\n const {left, top} = getTooltipPosition(element, mousePosition);\n // update tooltip position\n element.style.left = left;\n element.style.top = top;\n }\n };\n\n const onMouseMove = (event: SyntheticMouseEvent<*>) => {\n updateTooltipPosition(event);\n };\n\n const tooltipClassName = label === null ? styles.hidden : '';\n\n return (\n <div\n className={styles.Container}\n onMouseMove={onMouseMove}\n ref={containerRef}>\n <div ref={tooltipRef} className={`${styles.Tooltip} ${tooltipClassName}`}>\n {label}\n </div>\n {children}\n </div>\n );\n}\n\nconst TOOLTIP_OFFSET = 5;\n\n// Method used to find the position of the tooltip based on current mouse position\nfunction getTooltipPosition(element, mousePosition) {\n const {height, mouseX, mouseY, width} = mousePosition;\n let top = 0;\n let left = 0;\n\n if (mouseY + TOOLTIP_OFFSET + element.offsetHeight >= height) {\n if (mouseY - TOOLTIP_OFFSET - element.offsetHeight > 0) {\n top = `${mouseY - element.offsetHeight - TOOLTIP_OFFSET}px`;\n } else {\n top = '0px';\n }\n } else {\n top = `${mouseY + TOOLTIP_OFFSET}px`;\n }\n\n if (mouseX + TOOLTIP_OFFSET + element.offsetWidth >= width) {\n if (mouseX - TOOLTIP_OFFSET - element.offsetWidth > 0) {\n left = `${mouseX - element.offsetWidth - TOOLTIP_OFFSET}px`;\n } else {\n left = '0px';\n }\n } else {\n left = `${mouseX + TOOLTIP_OFFSET * 2}px`;\n }\n\n return {left, top};\n}\n\n// method used to find the current mouse position inside the container\nfunction getMousePosition(\n relativeContainer,\n mouseEvent: SyntheticMouseEvent<*>,\n) {\n if (relativeContainer !== null) {\n // Position within the nearest position:relative container.\n let targetContainer = relativeContainer;\n while (targetContainer.parentElement != null) {\n if (targetContainer.style.position === 'relative') {\n break;\n } else {\n targetContainer = targetContainer.parentElement;\n }\n }\n\n const {height, left, top, width} = targetContainer.getBoundingClientRect();\n\n const mouseX = mouseEvent.clientX - left;\n const mouseY = mouseEvent.clientY - top;\n\n return {height, mouseX, mouseY, width};\n } else {\n return initialTooltipState;\n }\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {forwardRef, useCallback, useContext, useMemo, useState} from 'react';\nimport AutoSizer from 'react-virtualized-auto-sizer';\nimport {FixedSizeList} from 'react-window';\nimport {ProfilerContext} from './ProfilerContext';\nimport NoCommitData from './NoCommitData';\nimport CommitFlamegraphListItem from './CommitFlamegraphListItem';\nimport HoveredFiberInfo from './HoveredFiberInfo';\nimport {scale} from './utils';\nimport {useHighlightNativeElement} from '../hooks';\nimport {StoreContext} from '../context';\nimport {SettingsContext} from '../Settings/SettingsContext';\nimport Tooltip from './Tooltip';\n\nimport styles from './CommitFlamegraph.css';\n\nimport type {TooltipFiberData} from './HoveredFiberInfo';\nimport type {ChartData, ChartNode} from './FlamegraphChartBuilder';\nimport type {CommitTree} from './types';\n\nexport type ItemData = {|\n chartData: ChartData,\n onElementMouseEnter: (fiberData: TooltipFiberData) => void,\n onElementMouseLeave: () => void,\n scaleX: (value: number, fallbackValue: number) => number,\n selectedChartNode: ChartNode | null,\n selectedChartNodeIndex: number,\n selectFiber: (id: number | null, name: string | null) => void,\n width: number,\n|};\n\nexport default function CommitFlamegraphAutoSizer(_: {||}) {\n const {profilerStore} = useContext(StoreContext);\n const {rootID, selectedCommitIndex, selectFiber} = useContext(\n ProfilerContext,\n );\n const {profilingCache} = profilerStore;\n\n const deselectCurrentFiber = useCallback(\n event => {\n event.stopPropagation();\n selectFiber(null, null);\n },\n [selectFiber],\n );\n\n let commitTree: CommitTree | null = null;\n let chartData: ChartData | null = null;\n if (selectedCommitIndex !== null) {\n commitTree = profilingCache.getCommitTree({\n commitIndex: selectedCommitIndex,\n rootID: ((rootID: any): number),\n });\n\n chartData = profilingCache.getFlamegraphChartData({\n commitIndex: selectedCommitIndex,\n commitTree,\n rootID: ((rootID: any): number),\n });\n }\n\n if (commitTree != null && chartData != null && chartData.depth > 0) {\n return (\n <div className={styles.Container} onClick={deselectCurrentFiber}>\n <AutoSizer>\n {({height, width}) => (\n // Force Flow types to avoid checking for `null` here because there's no static proof that\n // by the time this render prop function is called, the values of the `let` variables have not changed.\n <CommitFlamegraph\n chartData={((chartData: any): ChartData)}\n commitTree={((commitTree: any): CommitTree)}\n height={height}\n width={width}\n />\n )}\n </AutoSizer>\n </div>\n );\n } else {\n return <NoCommitData />;\n }\n}\n\ntype Props = {|\n chartData: ChartData,\n commitTree: CommitTree,\n height: number,\n width: number,\n|};\n\nfunction CommitFlamegraph({chartData, commitTree, height, width}: Props) {\n const [\n hoveredFiberData,\n setHoveredFiberData,\n ] = useState<TooltipFiberData | null>(null);\n const {lineHeight} = useContext(SettingsContext);\n const {selectFiber, selectedFiberID} = useContext(ProfilerContext);\n const {\n highlightNativeElement,\n clearHighlightNativeElement,\n } = useHighlightNativeElement();\n\n const selectedChartNodeIndex = useMemo<number>(() => {\n if (selectedFiberID === null) {\n return 0;\n }\n // The selected node might not be in the tree for this commit,\n // so it's important that we have a fallback plan.\n const depth = chartData.idToDepthMap.get(selectedFiberID);\n return depth !== undefined ? depth - 1 : 0;\n }, [chartData, selectedFiberID]);\n\n const selectedChartNode = useMemo(() => {\n if (selectedFiberID !== null) {\n return (\n chartData.rows[selectedChartNodeIndex].find(\n chartNode => chartNode.id === selectedFiberID,\n ) || null\n );\n }\n return null;\n }, [chartData, selectedFiberID, selectedChartNodeIndex]);\n\n const handleElementMouseEnter = useCallback(\n ({id, name}) => {\n highlightNativeElement(id); // Highlight last hovered element.\n setHoveredFiberData({id, name}); // Set hovered fiber data for tooltip\n },\n [highlightNativeElement],\n );\n\n const handleElementMouseLeave = useCallback(() => {\n clearHighlightNativeElement(); // clear highlighting of element on mouse leave\n setHoveredFiberData(null); // clear hovered fiber data for tooltip\n }, [clearHighlightNativeElement]);\n\n const itemData = useMemo<ItemData>(\n () => ({\n chartData,\n onElementMouseEnter: handleElementMouseEnter,\n onElementMouseLeave: handleElementMouseLeave,\n scaleX: scale(\n 0,\n selectedChartNode !== null\n ? selectedChartNode.treeBaseDuration\n : chartData.baseDuration,\n 0,\n width,\n ),\n selectedChartNode,\n selectedChartNodeIndex,\n selectFiber,\n width,\n }),\n [\n chartData,\n handleElementMouseEnter,\n handleElementMouseLeave,\n selectedChartNode,\n selectedChartNodeIndex,\n selectFiber,\n width,\n ],\n );\n\n // Tooltip used to show summary of fiber info on hover\n const tooltipLabel = useMemo(\n () =>\n hoveredFiberData !== null ? (\n <HoveredFiberInfo fiberData={hoveredFiberData} />\n ) : null,\n [hoveredFiberData],\n );\n\n return (\n <Tooltip label={tooltipLabel}>\n <FixedSizeList\n height={height}\n innerElementType={InnerElementType}\n itemCount={chartData.depth}\n itemData={itemData}\n itemSize={lineHeight}\n width={width}>\n {CommitFlamegraphListItem}\n </FixedSizeList>\n </Tooltip>\n );\n}\n\nconst InnerElementType = forwardRef(({children, ...rest}, ref) => (\n <svg ref={ref} {...rest}>\n <defs>\n <pattern\n id=\"didNotRenderPattern\"\n patternUnits=\"userSpaceOnUse\"\n width=\"4\"\n height=\"4\">\n <path\n d=\"M-1,1 l2,-2 M0,4 l4,-4 M3,5 l2,-2\"\n className={styles.PatternPath}\n />\n </pattern>\n </defs>\n {children}\n </svg>\n));\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {memo, useCallback, useContext} from 'react';\nimport {areEqual} from 'react-window';\nimport {minBarWidth} from './constants';\nimport {getGradientColor} from './utils';\nimport ChartNode from './ChartNode';\nimport {SettingsContext} from '../Settings/SettingsContext';\n\nimport type {ItemData} from './CommitRanked';\n\ntype Props = {\n data: ItemData,\n index: number,\n style: Object,\n ...\n};\n\nfunction CommitRankedListItem({data, index, style}: Props) {\n const {\n chartData,\n onElementMouseEnter,\n onElementMouseLeave,\n scaleX,\n selectedFiberIndex,\n selectFiber,\n width,\n } = data;\n\n const node = chartData.nodes[index];\n\n const {lineHeight} = useContext(SettingsContext);\n\n const handleClick = useCallback(\n event => {\n event.stopPropagation();\n const {id, name} = node;\n selectFiber(id, name);\n },\n [node, selectFiber],\n );\n\n const handleMouseEnter = () => {\n const {id, name} = node;\n onElementMouseEnter({id, name});\n };\n\n const handleMouseLeave = () => {\n onElementMouseLeave();\n };\n\n // List items are absolutely positioned using the CSS \"top\" attribute.\n // The \"left\" value will always be 0.\n // Since height is fixed, and width is based on the node's duration,\n // We can ignore those values as well.\n const top = parseInt(style.top, 10);\n\n return (\n <ChartNode\n color={getGradientColor(node.value / chartData.maxValue)}\n height={lineHeight}\n isDimmed={index < selectedFiberIndex}\n key={node.id}\n label={node.label}\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n width={Math.max(minBarWidth, scaleX(node.value, width))}\n x={0}\n y={top}\n />\n );\n}\n\nexport default memo<Props>(CommitRankedListItem, areEqual);\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useCallback, useContext, useMemo, useState} from 'react';\nimport AutoSizer from 'react-virtualized-auto-sizer';\nimport {FixedSizeList} from 'react-window';\nimport {ProfilerContext} from './ProfilerContext';\nimport NoCommitData from './NoCommitData';\nimport CommitRankedListItem from './CommitRankedListItem';\nimport HoveredFiberInfo from './HoveredFiberInfo';\nimport {scale} from './utils';\nimport {StoreContext} from '../context';\nimport {SettingsContext} from '../Settings/SettingsContext';\nimport {useHighlightNativeElement} from '../hooks';\nimport Tooltip from './Tooltip';\n\nimport styles from './CommitRanked.css';\n\nimport type {TooltipFiberData} from './HoveredFiberInfo';\nimport type {ChartData} from './RankedChartBuilder';\nimport type {CommitTree} from './types';\n\nexport type ItemData = {|\n chartData: ChartData,\n onElementMouseEnter: (fiberData: TooltipFiberData) => void,\n onElementMouseLeave: () => void,\n scaleX: (value: number, fallbackValue: number) => number,\n selectedFiberID: number | null,\n selectedFiberIndex: number,\n selectFiber: (id: number | null, name: string | null) => void,\n width: number,\n|};\n\nexport default function CommitRankedAutoSizer(_: {||}) {\n const {profilerStore} = useContext(StoreContext);\n const {rootID, selectedCommitIndex, selectFiber} = useContext(\n ProfilerContext,\n );\n const {profilingCache} = profilerStore;\n\n const deselectCurrentFiber = useCallback(\n event => {\n event.stopPropagation();\n selectFiber(null, null);\n },\n [selectFiber],\n );\n\n let commitTree: CommitTree | null = null;\n let chartData: ChartData | null = null;\n if (selectedCommitIndex !== null) {\n commitTree = profilingCache.getCommitTree({\n commitIndex: selectedCommitIndex,\n rootID: ((rootID: any): number),\n });\n\n chartData = profilingCache.getRankedChartData({\n commitIndex: selectedCommitIndex,\n commitTree,\n rootID: ((rootID: any): number),\n });\n }\n\n if (commitTree != null && chartData != null && chartData.nodes.length > 0) {\n return (\n <div className={styles.Container} onClick={deselectCurrentFiber}>\n <AutoSizer>\n {({height, width}) => (\n <CommitRanked\n chartData={((chartData: any): ChartData)}\n commitTree={((commitTree: any): CommitTree)}\n height={height}\n width={width}\n />\n )}\n </AutoSizer>\n </div>\n );\n } else {\n return <NoCommitData />;\n }\n}\n\ntype Props = {|\n chartData: ChartData,\n commitTree: CommitTree,\n height: number,\n width: number,\n|};\n\nfunction CommitRanked({chartData, commitTree, height, width}: Props) {\n const [\n hoveredFiberData,\n setHoveredFiberData,\n ] = useState<TooltipFiberData | null>(null);\n const {lineHeight} = useContext(SettingsContext);\n const {selectedFiberID, selectFiber} = useContext(ProfilerContext);\n const {\n highlightNativeElement,\n clearHighlightNativeElement,\n } = useHighlightNativeElement();\n\n const selectedFiberIndex = useMemo(\n () => getNodeIndex(chartData, selectedFiberID),\n [chartData, selectedFiberID],\n );\n\n const handleElementMouseEnter = useCallback(\n ({id, name}) => {\n highlightNativeElement(id); // Highlight last hovered element.\n setHoveredFiberData({id, name}); // Set hovered fiber data for tooltip\n },\n [highlightNativeElement],\n );\n\n const handleElementMouseLeave = useCallback(() => {\n clearHighlightNativeElement(); // clear highlighting of element on mouse leave\n setHoveredFiberData(null); // clear hovered fiber data for tooltip\n }, [clearHighlightNativeElement]);\n\n const itemData = useMemo<ItemData>(\n () => ({\n chartData,\n onElementMouseEnter: handleElementMouseEnter,\n onElementMouseLeave: handleElementMouseLeave,\n scaleX: scale(0, chartData.nodes[selectedFiberIndex].value, 0, width),\n selectedFiberID,\n selectedFiberIndex,\n selectFiber,\n width,\n }),\n [\n chartData,\n handleElementMouseEnter,\n handleElementMouseLeave,\n selectedFiberID,\n selectedFiberIndex,\n selectFiber,\n width,\n ],\n );\n\n // Tooltip used to show summary of fiber info on hover\n const tooltipLabel = useMemo(\n () =>\n hoveredFiberData !== null ? (\n <HoveredFiberInfo fiberData={hoveredFiberData} />\n ) : null,\n [hoveredFiberData],\n );\n\n return (\n <Tooltip label={tooltipLabel}>\n <FixedSizeList\n height={height}\n innerElementType=\"svg\"\n itemCount={chartData.nodes.length}\n itemData={itemData}\n itemSize={lineHeight}\n width={width}>\n {CommitRankedListItem}\n </FixedSizeList>\n </Tooltip>\n );\n}\n\nconst getNodeIndex = (chartData: ChartData, id: number | null): number => {\n if (id === null) {\n return 0;\n }\n const {nodes} = chartData;\n for (let index = 0; index < nodes.length; index++) {\n if (nodes[index].id === id) {\n return index;\n }\n }\n return 0;\n};\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {memo, useCallback} from 'react';\nimport {areEqual} from 'react-window';\nimport {getGradientColor} from './utils';\n\nimport styles from './InteractionListItem.css';\n\nimport type {ItemData} from './Interactions';\n\ntype Props = {\n data: ItemData,\n index: number,\n style: Object,\n ...\n};\n\nfunction InteractionListItem({data: itemData, index, style}: Props) {\n const {\n chartData,\n dataForRoot,\n labelWidth,\n scaleX,\n selectedInteractionID,\n selectCommitIndex,\n selectInteraction,\n selectTab,\n } = itemData;\n\n const {commitData, interactionCommits} = dataForRoot;\n const {interactions, lastInteractionTime, maxCommitDuration} = chartData;\n\n const interaction = interactions[index];\n if (interaction == null) {\n throw Error(`Could not find interaction #${index}`);\n }\n\n const handleClick = useCallback(() => {\n selectInteraction(interaction.id);\n }, [interaction, selectInteraction]);\n\n const commits = interactionCommits.get(interaction.id) || [];\n\n const startTime = interaction.timestamp;\n const stopTime = lastInteractionTime;\n\n const viewCommit = (commitIndex: number) => {\n selectTab('flame-chart');\n selectCommitIndex(commitIndex);\n };\n\n return (\n <div\n className={\n selectedInteractionID === interaction.id\n ? styles.SelectedInteraction\n : styles.Interaction\n }\n onClick={handleClick}\n style={style}>\n <div\n className={styles.Name}\n style={{maxWidth: labelWidth}}\n title={interaction.name}>\n {interaction.name}\n </div>\n <div\n className={styles.InteractionLine}\n style={{\n left: labelWidth + scaleX(startTime, 0),\n width: scaleX(stopTime - startTime, 0),\n }}\n />\n {commits.map(commitIndex => (\n <div\n className={styles.CommitBox}\n key={commitIndex}\n onClick={() => viewCommit(commitIndex)}\n style={{\n backgroundColor: getGradientColor(\n Math.min(\n 1,\n Math.max(\n 0,\n commitData[commitIndex].duration / maxCommitDuration,\n ),\n ) || 0,\n ),\n left: labelWidth + scaleX(commitData[commitIndex].timestamp, 0),\n }}\n />\n ))}\n </div>\n );\n}\n\nexport default memo<Props>(InteractionListItem, areEqual);\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\n\nimport styles from './NoInteractions.css';\n\nexport default function NoInteractions({\n height,\n width,\n}: {|\n height: number,\n width: number,\n|}) {\n return (\n <div className={styles.NoInteractions} style={{height, width}}>\n <p className={styles.Header}>No interactions were recorded.</p>\n <p>\n <a\n className={styles.Link}\n href=\"https://reactjs.org/link/interaction-tracing\"\n rel=\"noopener noreferrer\"\n target=\"_blank\">\n Learn more about the interaction tracing API here.\n </a>\n </p>\n </div>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useCallback, useContext, useMemo} from 'react';\nimport AutoSizer from 'react-virtualized-auto-sizer';\nimport {FixedSizeList} from 'react-window';\nimport {ProfilerContext} from './ProfilerContext';\nimport InteractionListItem from './InteractionListItem';\nimport NoInteractions from './NoInteractions';\nimport {StoreContext} from '../context';\nimport {scale} from './utils';\n\nimport styles from './Interactions.css';\n\nimport type {ProfilingDataForRootFrontend} from './types';\nimport type {ChartData} from './InteractionsChartBuilder';\nimport type {TabID} from './ProfilerContext';\n\nexport type ItemData = {|\n chartData: ChartData,\n dataForRoot: ProfilingDataForRootFrontend,\n labelWidth: number,\n scaleX: (value: number, fallbackValue: number) => number,\n selectedInteractionID: number | null,\n selectCommitIndex: (id: number | null) => void,\n selectInteraction: (id: number | null) => void,\n selectTab: (id: TabID) => void,\n|};\n\nexport default function InteractionsAutoSizer(_: {||}) {\n return (\n <div className={styles.Container}>\n <AutoSizer>\n {({height, width}) => <Interactions height={height} width={width} />}\n </AutoSizer>\n </div>\n );\n}\n\nfunction Interactions({height, width}: {|height: number, width: number|}) {\n const {\n rootID,\n selectedInteractionID,\n selectInteraction,\n selectCommitIndex,\n selectTab,\n } = useContext(ProfilerContext);\n const {profilerStore} = useContext(StoreContext);\n const {profilingCache} = profilerStore;\n\n const dataForRoot = profilerStore.getDataForRoot(((rootID: any): number));\n\n const chartData = profilingCache.getInteractionsChartData({\n rootID: ((rootID: any): number),\n });\n\n const {interactions} = chartData;\n\n const handleKeyDown = useCallback(\n event => {\n let index;\n switch (event.key) {\n case 'ArrowDown':\n index = interactions.findIndex(\n interaction => interaction.id === selectedInteractionID,\n );\n selectInteraction(Math.min(interactions.length - 1, index + 1));\n event.stopPropagation();\n break;\n case 'ArrowUp':\n index = interactions.findIndex(\n interaction => interaction.id === selectedInteractionID,\n );\n selectInteraction(Math.max(0, index - 1));\n event.stopPropagation();\n break;\n default:\n break;\n }\n },\n [interactions, selectedInteractionID, selectInteraction],\n );\n\n const itemData = useMemo<ItemData>(() => {\n const interactionCommitSize = parseInt(\n getComputedStyle((document.body: any)).getPropertyValue(\n '--interaction-commit-size',\n ),\n 10,\n );\n const interactionLabelWidth = parseInt(\n getComputedStyle((document.body: any)).getPropertyValue(\n '--interaction-label-width',\n ),\n 10,\n );\n\n const labelWidth = Math.min(interactionLabelWidth, width / 5);\n const timelineWidth = width - labelWidth - interactionCommitSize;\n\n return {\n chartData,\n dataForRoot,\n labelWidth,\n scaleX: scale(0, chartData.lastInteractionTime, 0, timelineWidth),\n selectedInteractionID,\n selectCommitIndex,\n selectInteraction,\n selectTab,\n };\n }, [\n chartData,\n dataForRoot,\n selectedInteractionID,\n selectCommitIndex,\n selectInteraction,\n selectTab,\n width,\n ]);\n\n // If a commit contains no fibers with an actualDuration > 0,\n // Display a fallback message.\n if (interactions.length === 0) {\n return <NoInteractions height={height} width={width} />;\n }\n\n return (\n <div className={styles.FocusTarget} onKeyDown={handleKeyDown} tabIndex={0}>\n <FixedSizeList\n height={height}\n itemCount={interactions.length}\n itemData={itemData}\n itemSize={30}\n width={width}>\n {InteractionListItem}\n </FixedSizeList>\n </div>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {Fragment, useCallback, useContext} from 'react';\nimport {ProfilerContext} from './ProfilerContext';\n\nimport styles from './RootSelector.css';\n\nexport default function RootSelector(_: {||}) {\n const {profilingData, rootID, setRootID} = useContext(ProfilerContext);\n\n const options = [];\n if (profilingData !== null) {\n profilingData.dataForRoots.forEach((dataForRoot, id) => {\n options.push(\n <option key={id} value={id}>\n {dataForRoot.displayName}\n </option>,\n );\n });\n }\n\n const handleChange = useCallback(\n ({currentTarget}) => {\n setRootID(parseInt(currentTarget.value, 10));\n },\n [setRootID],\n );\n\n if (profilingData === null || profilingData.dataForRoots.size <= 1) {\n // Don't take up visual space if there's only one root.\n return null;\n }\n\n return (\n <Fragment>\n <div className={styles.Spacer} />\n <select value={rootID} onChange={handleChange}>\n {options}\n </select>\n </Fragment>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useContext} from 'react';\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\nimport {ProfilerContext} from './ProfilerContext';\n\nimport styles from './RecordToggle.css';\n\nexport type Props = {|\n disabled?: boolean,\n|};\n\nexport default function RecordToggle({disabled}: Props) {\n const {isProfiling, startProfiling, stopProfiling} = useContext(\n ProfilerContext,\n );\n\n let className = styles.InactiveRecordToggle;\n if (disabled) {\n className = styles.DisabledRecordToggle;\n } else if (isProfiling) {\n className = styles.ActiveRecordToggle;\n }\n\n return (\n <Button\n className={className}\n disabled={disabled}\n onClick={isProfiling ? stopProfiling : startProfiling}\n title={isProfiling ? 'Stop profiling' : 'Start profiling'}>\n <ButtonIcon type=\"record\" />\n </Button>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useCallback, useContext, useMemo} from 'react';\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\nimport {BridgeContext, StoreContext} from '../context';\nimport {useSubscription} from '../hooks';\n\ntype SubscriptionData = {|\n recordChangeDescriptions: boolean,\n supportsReloadAndProfile: boolean,\n|};\n\nexport default function ReloadAndProfileButton() {\n const bridge = useContext(BridgeContext);\n const store = useContext(StoreContext);\n\n const subscription = useMemo(\n () => ({\n getCurrentValue: () => ({\n recordChangeDescriptions: store.recordChangeDescriptions,\n supportsReloadAndProfile: store.supportsReloadAndProfile,\n }),\n subscribe: (callback: Function) => {\n store.addListener('recordChangeDescriptions', callback);\n store.addListener('supportsReloadAndProfile', callback);\n return () => {\n store.removeListener('recordChangeDescriptions', callback);\n store.removeListener('supportsReloadAndProfile', callback);\n };\n },\n }),\n [store],\n );\n const {\n recordChangeDescriptions,\n supportsReloadAndProfile,\n } = useSubscription<SubscriptionData>(subscription);\n\n const reloadAndProfile = useCallback(() => {\n // TODO If we want to support reload-and-profile for e.g. React Native,\n // we might need to also start profiling here before reloading the app (since DevTools itself isn't reloaded).\n // We'd probably want to do this before reloading though, to avoid sending a message on a disconnected port in the browser.\n // For now, let's just skip doing it entirely to avoid paying snapshot costs for data we don't need.\n // startProfiling();\n\n bridge.send('reloadAndProfile', recordChangeDescriptions);\n }, [bridge, recordChangeDescriptions]);\n\n if (!supportsReloadAndProfile) {\n return null;\n }\n\n return (\n <Button\n disabled={!store.supportsProfiling}\n onClick={reloadAndProfile}\n title=\"Reload and start profiling\">\n <ButtonIcon type=\"reload\" />\n </Button>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {Fragment, useContext, useCallback, useRef} from 'react';\nimport {ProfilerContext} from './ProfilerContext';\nimport {ModalDialogContext} from '../ModalDialog';\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\nimport {StoreContext} from '../context';\nimport {\n prepareProfilingDataExport,\n prepareProfilingDataFrontendFromExport,\n} from './utils';\nimport {downloadFile} from '../utils';\n\nimport styles from './ProfilingImportExportButtons.css';\n\nimport type {ProfilingDataExport} from './types';\n\nexport default function ProfilingImportExportButtons() {\n const {isProfiling, profilingData, rootID} = useContext(ProfilerContext);\n const store = useContext(StoreContext);\n const {profilerStore} = store;\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n const downloadRef = useRef<HTMLAnchorElement | null>(null);\n\n const {dispatch: modalDialogDispatch} = useContext(ModalDialogContext);\n\n const downloadData = useCallback(() => {\n if (rootID === null) {\n return;\n }\n\n const anchorElement = downloadRef.current;\n\n if (profilingData !== null && anchorElement !== null) {\n const profilingDataExport = prepareProfilingDataExport(profilingData);\n const date = new Date();\n const dateString = date\n .toLocaleDateString(undefined, {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n })\n .replace(/\\//g, '-');\n const timeString = date\n .toLocaleTimeString(undefined, {\n hour12: false,\n })\n .replace(/:/g, '-');\n downloadFile(\n anchorElement,\n `profiling-data.${dateString}.${timeString}.json`,\n JSON.stringify(profilingDataExport, null, 2),\n );\n }\n }, [rootID, profilingData]);\n\n const uploadData = useCallback(() => {\n if (inputRef.current !== null) {\n inputRef.current.click();\n }\n }, []);\n\n const handleFiles = useCallback(() => {\n const input = inputRef.current;\n if (input !== null && input.files.length > 0) {\n const fileReader = new FileReader();\n fileReader.addEventListener('load', () => {\n try {\n const raw = ((fileReader.result: any): string);\n const profilingDataExport = ((JSON.parse(\n raw,\n ): any): ProfilingDataExport);\n profilerStore.profilingData = prepareProfilingDataFrontendFromExport(\n profilingDataExport,\n );\n } catch (error) {\n modalDialogDispatch({\n type: 'SHOW',\n title: 'Import failed',\n content: (\n <Fragment>\n <div>The profiling data you selected cannot be imported.</div>\n {error !== null && (\n <div className={styles.ErrorMessage}>{error.message}</div>\n )}\n </Fragment>\n ),\n });\n }\n });\n // TODO (profiling) Handle fileReader errors.\n fileReader.readAsText(input.files[0]);\n }\n }, [modalDialogDispatch, profilerStore]);\n\n return (\n <Fragment>\n <div className={styles.VRule} />\n <input\n ref={inputRef}\n className={styles.Input}\n type=\"file\"\n onChange={handleFiles}\n tabIndex={-1}\n />\n <a ref={downloadRef} className={styles.Input} />\n <Button\n disabled={isProfiling}\n onClick={uploadData}\n title=\"Load profile...\">\n <ButtonIcon type=\"import\" />\n </Button>\n <Button\n disabled={isProfiling || !profilerStore.didRecordCommits}\n onClick={downloadData}\n title=\"Save profile...\">\n <ButtonIcon type=\"export\" />\n </Button>\n </Fragment>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {memo} from 'react';\nimport {areEqual} from 'react-window';\nimport {getGradientColor, formatDuration, formatTime} from './utils';\n\nimport styles from './SnapshotCommitListItem.css';\n\nimport type {ItemData} from './SnapshotCommitList';\n\ntype Props = {\n data: ItemData,\n index: number,\n style: Object,\n ...\n};\n\nfunction SnapshotCommitListItem({data: itemData, index, style}: Props) {\n const {\n commitDurations,\n commitTimes,\n filteredCommitIndices,\n maxDuration,\n selectedCommitIndex,\n selectCommitIndex,\n startCommitDrag,\n } = itemData;\n\n index = filteredCommitIndices[index];\n\n const commitDuration = commitDurations[index];\n const commitTime = commitTimes[index];\n\n // Guard against commits with duration 0\n const percentage =\n Math.min(1, Math.max(0, commitDuration / maxDuration)) || 0;\n const isSelected = selectedCommitIndex === index;\n\n // Leave a 1px gap between snapshots\n const width = parseFloat(style.width) - 1;\n\n const handleMouseDown = ({buttons, target}: any) => {\n if (buttons === 1) {\n selectCommitIndex(index);\n startCommitDrag({\n commitIndex: index,\n left: target.getBoundingClientRect().left,\n sizeIncrement: parseFloat(style.width),\n });\n }\n };\n\n return (\n <div\n className={styles.Outer}\n onMouseDown={handleMouseDown}\n style={{\n ...style,\n width,\n borderBottom: isSelected\n ? '3px solid var(--color-tab-selected-border)'\n : undefined,\n }}\n title={`Duration ${formatDuration(commitDuration)}ms at ${formatTime(\n commitTime,\n )}s`}>\n <div\n className={styles.Inner}\n style={{\n height: `${Math.round(percentage * 100)}%`,\n backgroundColor:\n percentage > 0 ? getGradientColor(percentage) : undefined,\n }}\n />\n </div>\n );\n}\n\nexport default memo<Props>(SnapshotCommitListItem, areEqual);\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useEffect, useMemo, useRef, useState} from 'react';\nimport AutoSizer from 'react-virtualized-auto-sizer';\nimport {FixedSizeList} from 'react-window';\nimport SnapshotCommitListItem from './SnapshotCommitListItem';\nimport {minBarWidth} from './constants';\n\nimport styles from './SnapshotCommitList.css';\n\nexport type ItemData = {|\n commitDurations: Array<number>,\n commitTimes: Array<number>,\n filteredCommitIndices: Array<number>,\n maxDuration: number,\n selectedCommitIndex: number | null,\n selectedFilteredCommitIndex: number | null,\n selectCommitIndex: (index: number) => void,\n startCommitDrag: (newDragState: DragState) => void,\n|};\n\ntype Props = {|\n commitDurations: Array<number>,\n commitTimes: Array<number>,\n filteredCommitIndices: Array<number>,\n selectedCommitIndex: number | null,\n selectedFilteredCommitIndex: number | null,\n selectCommitIndex: (index: number) => void,\n|};\n\nexport default function SnapshotCommitList({\n commitDurations,\n commitTimes,\n filteredCommitIndices,\n selectedCommitIndex,\n selectedFilteredCommitIndex,\n selectCommitIndex,\n}: Props) {\n return (\n <AutoSizer>\n {({height, width}) => (\n <List\n commitDurations={commitDurations}\n commitTimes={commitTimes}\n height={height}\n filteredCommitIndices={filteredCommitIndices}\n selectedCommitIndex={selectedCommitIndex}\n selectedFilteredCommitIndex={selectedFilteredCommitIndex}\n selectCommitIndex={selectCommitIndex}\n width={width}\n />\n )}\n </AutoSizer>\n );\n}\n\ntype ListProps = {|\n commitDurations: Array<number>,\n commitTimes: Array<number>,\n height: number,\n filteredCommitIndices: Array<number>,\n selectedCommitIndex: number | null,\n selectedFilteredCommitIndex: number | null,\n selectCommitIndex: (index: number) => void,\n width: number,\n|};\n\ntype DragState = {\n commitIndex: number,\n left: number,\n sizeIncrement: number,\n};\n\nfunction List({\n commitDurations,\n selectedCommitIndex,\n commitTimes,\n height,\n filteredCommitIndices,\n selectedFilteredCommitIndex,\n selectCommitIndex,\n width,\n}: ListProps) {\n const listRef = useRef<FixedSizeList<ItemData> | null>(null);\n const divRef = useRef<HTMLDivElement | null>(null);\n const prevCommitIndexRef = useRef<number | null>(null);\n\n // Make sure a newly selected snapshot is fully visible within the list.\n useEffect(() => {\n if (selectedFilteredCommitIndex !== prevCommitIndexRef.current) {\n prevCommitIndexRef.current = selectedFilteredCommitIndex;\n if (selectedFilteredCommitIndex !== null && listRef.current !== null) {\n listRef.current.scrollToItem(selectedFilteredCommitIndex);\n }\n }\n }, [listRef, selectedFilteredCommitIndex]);\n\n const itemSize = useMemo(\n () => Math.max(minBarWidth, width / filteredCommitIndices.length),\n [filteredCommitIndices, width],\n );\n const maxDuration = useMemo(\n () => commitDurations.reduce((max, duration) => Math.max(max, duration), 0),\n [commitDurations],\n );\n\n const maxCommitIndex = filteredCommitIndices.length - 1;\n\n const [dragState, setDragState] = useState<DragState | null>(null);\n\n const handleDragCommit = ({buttons, pageX}: any) => {\n if (buttons === 0) {\n setDragState(null);\n return;\n }\n\n if (dragState !== null) {\n const {commitIndex, left, sizeIncrement} = dragState;\n\n let newCommitIndex = commitIndex;\n let newCommitLeft = left;\n\n if (pageX < newCommitLeft) {\n while (pageX < newCommitLeft) {\n newCommitLeft -= sizeIncrement;\n newCommitIndex -= 1;\n }\n } else {\n let newCommitRectRight = newCommitLeft + sizeIncrement;\n while (pageX > newCommitRectRight) {\n newCommitRectRight += sizeIncrement;\n newCommitIndex += 1;\n }\n }\n\n if (newCommitIndex < 0) {\n newCommitIndex = 0;\n } else if (newCommitIndex > maxCommitIndex) {\n newCommitIndex = maxCommitIndex;\n }\n\n selectCommitIndex(newCommitIndex);\n }\n };\n\n useEffect(() => {\n if (dragState === null) {\n return;\n }\n\n const element = divRef.current;\n if (element !== null) {\n const ownerDocument = element.ownerDocument;\n ownerDocument.addEventListener('mousemove', handleDragCommit);\n return () => {\n ownerDocument.removeEventListener('mousemove', handleDragCommit);\n };\n }\n }, [dragState]);\n\n // Pass required contextual data down to the ListItem renderer.\n const itemData = useMemo<ItemData>(\n () => ({\n commitDurations,\n commitTimes,\n filteredCommitIndices,\n maxDuration,\n selectedCommitIndex,\n selectedFilteredCommitIndex,\n selectCommitIndex,\n startCommitDrag: setDragState,\n }),\n [\n commitDurations,\n commitTimes,\n filteredCommitIndices,\n maxDuration,\n selectedCommitIndex,\n selectedFilteredCommitIndex,\n selectCommitIndex,\n ],\n );\n\n return (\n <div ref={divRef} style={{height, width}}>\n <FixedSizeList\n className={styles.List}\n layout=\"horizontal\"\n height={height}\n itemCount={filteredCommitIndices.length}\n itemData={itemData}\n itemSize={itemSize}\n ref={(listRef: any) /* Flow bug? */}\n width={width}>\n {SnapshotCommitListItem}\n </FixedSizeList>\n </div>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {Fragment, useCallback, useContext, useMemo} from 'react';\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\nimport {ProfilerContext} from './ProfilerContext';\nimport SnapshotCommitList from './SnapshotCommitList';\nimport {maxBarWidth} from './constants';\nimport {StoreContext} from '../context';\n\nimport styles from './SnapshotSelector.css';\n\nexport type Props = {||};\n\nexport default function SnapshotSelector(_: Props) {\n const {\n isCommitFilterEnabled,\n minCommitDuration,\n rootID,\n selectedCommitIndex,\n selectCommitIndex,\n } = useContext(ProfilerContext);\n\n const {profilerStore} = useContext(StoreContext);\n const {commitData} = profilerStore.getDataForRoot(((rootID: any): number));\n\n const commitDurations: Array<number> = [];\n const commitTimes: Array<number> = [];\n commitData.forEach(commitDatum => {\n commitDurations.push(commitDatum.duration);\n commitTimes.push(commitDatum.timestamp);\n });\n\n const filteredCommitIndices = useMemo(\n () =>\n commitData.reduce((reduced, commitDatum, index) => {\n if (\n !isCommitFilterEnabled ||\n commitDatum.duration >= minCommitDuration\n ) {\n reduced.push(index);\n }\n return reduced;\n }, []),\n [commitData, isCommitFilterEnabled, minCommitDuration],\n );\n\n const numFilteredCommits = filteredCommitIndices.length;\n\n // Map the (unfiltered) selected commit index to an index within the filtered data.\n const selectedFilteredCommitIndex = useMemo(() => {\n if (selectedCommitIndex !== null) {\n for (let i = 0; i < filteredCommitIndices.length; i++) {\n if (filteredCommitIndices[i] === selectedCommitIndex) {\n return i;\n }\n }\n }\n return null;\n }, [filteredCommitIndices, selectedCommitIndex]);\n\n // TODO (ProfilerContext) This should be managed by the context controller (reducer).\n // It doesn't currently know about the filtered commits though (since it doesn't suspend).\n // Maybe this component should pass filteredCommitIndices up?\n if (selectedFilteredCommitIndex === null) {\n if (numFilteredCommits > 0) {\n selectCommitIndex(0);\n } else {\n selectCommitIndex(null);\n }\n } else if (selectedFilteredCommitIndex >= numFilteredCommits) {\n selectCommitIndex(numFilteredCommits === 0 ? null : numFilteredCommits - 1);\n }\n\n let label = null;\n if (numFilteredCommits > 0) {\n label =\n `${selectedFilteredCommitIndex + 1}`.padStart(\n `${numFilteredCommits}`.length,\n '0',\n ) +\n ' / ' +\n numFilteredCommits;\n }\n\n const viewNextCommit = useCallback(() => {\n let nextCommitIndex = ((selectedFilteredCommitIndex: any): number) + 1;\n if (nextCommitIndex === filteredCommitIndices.length) {\n nextCommitIndex = 0;\n }\n selectCommitIndex(filteredCommitIndices[nextCommitIndex]);\n }, [selectedFilteredCommitIndex, filteredCommitIndices, selectCommitIndex]);\n const viewPrevCommit = useCallback(() => {\n let nextCommitIndex = ((selectedFilteredCommitIndex: any): number) - 1;\n if (nextCommitIndex < 0) {\n nextCommitIndex = filteredCommitIndices.length - 1;\n }\n selectCommitIndex(filteredCommitIndices[nextCommitIndex]);\n }, [selectedFilteredCommitIndex, filteredCommitIndices, selectCommitIndex]);\n\n const handleKeyDown = useCallback(\n event => {\n switch (event.key) {\n case 'ArrowLeft':\n viewPrevCommit();\n event.stopPropagation();\n break;\n case 'ArrowRight':\n viewNextCommit();\n event.stopPropagation();\n break;\n default:\n break;\n }\n },\n [viewNextCommit, viewPrevCommit],\n );\n\n if (commitData.length === 0) {\n return null;\n }\n\n return (\n <Fragment>\n <span className={styles.IndexLabel}>{label}</span>\n <Button\n className={styles.Button}\n disabled={numFilteredCommits === 0}\n onClick={viewPrevCommit}\n title=\"Select previous commit\">\n <ButtonIcon type=\"previous\" />\n </Button>\n <div\n className={styles.Commits}\n onKeyDown={handleKeyDown}\n style={{\n flex: numFilteredCommits > 0 ? '1 1 auto' : '0 0 auto',\n maxWidth:\n numFilteredCommits > 0\n ? numFilteredCommits * maxBarWidth\n : undefined,\n }}\n tabIndex={0}>\n {numFilteredCommits > 0 && (\n <SnapshotCommitList\n commitDurations={commitDurations}\n commitTimes={commitTimes}\n filteredCommitIndices={filteredCommitIndices}\n selectedCommitIndex={selectedCommitIndex}\n selectedFilteredCommitIndex={selectedFilteredCommitIndex}\n selectCommitIndex={selectCommitIndex}\n />\n )}\n {numFilteredCommits === 0 && (\n <div className={styles.NoCommits}>No commits</div>\n )}\n </div>\n <Button\n className={styles.Button}\n disabled={numFilteredCommits === 0}\n onClick={viewNextCommit}\n title=\"Select next commit\">\n <ButtonIcon type=\"next\" />\n </Button>\n </Fragment>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {Fragment, useContext} from 'react';\nimport {ProfilerContext} from './ProfilerContext';\nimport {formatDuration, formatTime} from './utils';\nimport {StoreContext} from '../context';\n\nimport styles from './SidebarCommitInfo.css';\n\nexport type Props = {||};\n\nexport default function SidebarCommitInfo(_: Props) {\n const {\n selectedCommitIndex,\n rootID,\n selectInteraction,\n selectTab,\n } = useContext(ProfilerContext);\n\n const {profilerStore} = useContext(StoreContext);\n\n if (rootID === null || selectedCommitIndex === null) {\n return <div className={styles.NothingSelected}>Nothing selected</div>;\n }\n\n const {interactions} = profilerStore.getDataForRoot(rootID);\n const {\n duration,\n interactionIDs,\n priorityLevel,\n timestamp,\n } = profilerStore.getCommitData(rootID, selectedCommitIndex);\n\n const viewInteraction = interactionID => {\n selectTab('interactions');\n selectInteraction(interactionID);\n };\n\n return (\n <Fragment>\n <div className={styles.Toolbar}>Commit information</div>\n <div className={styles.Content}>\n <ul className={styles.List}>\n {priorityLevel !== null && (\n <li className={styles.ListItem}>\n <label className={styles.Label}>Priority</label>:{' '}\n <span className={styles.Value}>{priorityLevel}</span>\n </li>\n )}\n <li className={styles.ListItem}>\n <label className={styles.Label}>Committed at</label>:{' '}\n <span className={styles.Value}>{formatTime(timestamp)}s</span>\n </li>\n <li className={styles.ListItem}>\n <label className={styles.Label}>Render duration</label>:{' '}\n <span className={styles.Value}>{formatDuration(duration)}ms</span>\n </li>\n <li className={styles.Interactions}>\n <label className={styles.Label}>Interactions</label>:\n <div className={styles.InteractionList}>\n {interactionIDs.length === 0 ? (\n <div className={styles.NoInteractions}>None</div>\n ) : null}\n {interactionIDs.map(interactionID => {\n const interaction = interactions.get(interactionID);\n if (interaction == null) {\n throw Error(`Invalid interaction \"${interactionID}\"`);\n }\n return (\n <button\n key={interactionID}\n className={styles.Interaction}\n onClick={() => viewInteraction(interactionID)}>\n {interaction.name}\n </button>\n );\n })}\n </div>\n </li>\n </ul>\n </div>\n </Fragment>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {Fragment, useContext} from 'react';\nimport {ProfilerContext} from './ProfilerContext';\nimport {formatDuration, formatTime} from './utils';\nimport {StoreContext} from '../context';\nimport {getGradientColor} from './utils';\n\nimport styles from './SidebarInteractions.css';\n\nexport type Props = {||};\n\nexport default function SidebarInteractions(_: Props) {\n const {\n selectedInteractionID,\n rootID,\n selectCommitIndex,\n selectTab,\n } = useContext(ProfilerContext);\n\n const {profilerStore} = useContext(StoreContext);\n const {profilingCache} = profilerStore;\n\n if (selectedInteractionID === null) {\n return <div className={styles.NothingSelected}>Nothing selected</div>;\n }\n\n const {interactionCommits, interactions} = profilerStore.getDataForRoot(\n ((rootID: any): number),\n );\n const interaction = interactions.get(selectedInteractionID);\n if (interaction == null) {\n throw Error(\n `Could not find interaction by selected interaction id \"${selectedInteractionID}\"`,\n );\n }\n\n const {maxCommitDuration} = profilingCache.getInteractionsChartData({\n rootID: ((rootID: any): number),\n });\n\n const viewCommit = (commitIndex: number) => {\n selectTab('flame-chart');\n selectCommitIndex(commitIndex);\n };\n\n const listItems: Array<React$Node> = [];\n const commitIndices = interactionCommits.get(selectedInteractionID);\n if (commitIndices != null) {\n commitIndices.forEach(commitIndex => {\n const {duration, timestamp} = profilerStore.getCommitData(\n ((rootID: any): number),\n commitIndex,\n );\n\n listItems.push(\n <li\n key={commitIndex}\n className={styles.ListItem}\n onClick={() => viewCommit(commitIndex)}>\n <div\n className={styles.CommitBox}\n style={{\n backgroundColor: getGradientColor(\n Math.min(1, Math.max(0, duration / maxCommitDuration)) || 0,\n ),\n }}\n />\n <div>\n timestamp: {formatTime(timestamp)}s\n <br />\n duration: {formatDuration(duration)}ms\n </div>\n </li>,\n );\n });\n }\n\n return (\n <Fragment>\n <div className={styles.Toolbar}>\n <div className={styles.Name} title={interaction.name}>\n {interaction.name}\n </div>\n </div>\n <div className={styles.Content}>\n <div className={styles.Commits}>Commits:</div>\n <ul className={styles.List}>{listItems}</ul>\n </div>\n </Fragment>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {Fragment, useContext, useEffect, useRef} from 'react';\nimport WhatChanged from './WhatChanged';\nimport {ProfilerContext} from './ProfilerContext';\nimport {formatDuration, formatTime} from './utils';\nimport {StoreContext} from '../context';\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\n\nimport styles from './SidebarSelectedFiberInfo.css';\n\nexport type Props = {||};\n\nexport default function SidebarSelectedFiberInfo(_: Props) {\n const {profilerStore} = useContext(StoreContext);\n const {\n rootID,\n selectCommitIndex,\n selectedCommitIndex,\n selectedFiberID,\n selectedFiberName,\n selectFiber,\n } = useContext(ProfilerContext);\n const {profilingCache} = profilerStore;\n const selectedListItemRef = useRef<HTMLElement | null>(null);\n\n const commitIndices = profilingCache.getFiberCommits({\n fiberID: ((selectedFiberID: any): number),\n rootID: ((rootID: any): number),\n });\n\n const handleKeyDown = event => {\n switch (event.key) {\n case 'ArrowUp':\n if (selectedCommitIndex !== null) {\n const prevIndex = commitIndices.indexOf(selectedCommitIndex);\n const nextIndex =\n prevIndex > 0 ? prevIndex - 1 : commitIndices.length - 1;\n selectCommitIndex(commitIndices[nextIndex]);\n }\n event.preventDefault();\n break;\n case 'ArrowDown':\n if (selectedCommitIndex !== null) {\n const prevIndex = commitIndices.indexOf(selectedCommitIndex);\n const nextIndex =\n prevIndex < commitIndices.length - 1 ? prevIndex + 1 : 0;\n selectCommitIndex(commitIndices[nextIndex]);\n }\n event.preventDefault();\n break;\n default:\n break;\n }\n };\n\n useEffect(() => {\n const selectedElement = selectedListItemRef.current;\n if (\n selectedElement !== null &&\n typeof selectedElement.scrollIntoView === 'function'\n ) {\n selectedElement.scrollIntoView({block: 'nearest', inline: 'nearest'});\n }\n }, [selectedCommitIndex]);\n\n const listItems = [];\n let i = 0;\n for (i = 0; i < commitIndices.length; i++) {\n const commitIndex = commitIndices[i];\n\n const {duration, timestamp} = profilerStore.getCommitData(\n ((rootID: any): number),\n commitIndex,\n );\n\n listItems.push(\n <button\n key={commitIndex}\n ref={selectedCommitIndex === commitIndex ? selectedListItemRef : null}\n className={\n selectedCommitIndex === commitIndex\n ? styles.CurrentCommit\n : styles.Commit\n }\n onClick={() => selectCommitIndex(commitIndex)}>\n {formatTime(timestamp)}s for {formatDuration(duration)}ms\n </button>,\n );\n }\n\n return (\n <Fragment>\n <div className={styles.Toolbar}>\n <div className={styles.Component}>\n {selectedFiberName || 'Selected component'}\n </div>\n\n <Button\n className={styles.IconButton}\n onClick={() => selectFiber(null, null)}\n title=\"Back to commit view\">\n <ButtonIcon type=\"close\" />\n </Button>\n </div>\n <div className={styles.Content} onKeyDown={handleKeyDown} tabIndex={0}>\n <WhatChanged fiberID={((selectedFiberID: any): number)} />\n {listItems.length > 0 && (\n <Fragment>\n <label className={styles.Label}>Rendered at</label>: {listItems}\n </Fragment>\n )}\n {listItems.length === 0 && (\n <div>Did not render during this profiling session.</div>\n )}\n </div>\n </Fragment>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {Fragment, useContext} from 'react';\nimport {ModalDialog} from '../ModalDialog';\nimport {ProfilerContext} from './ProfilerContext';\nimport TabBar from '../TabBar';\nimport ClearProfilingDataButton from './ClearProfilingDataButton';\nimport CommitFlamegraph from './CommitFlamegraph';\nimport CommitRanked from './CommitRanked';\nimport Interactions from './Interactions';\nimport RootSelector from './RootSelector';\nimport RecordToggle from './RecordToggle';\nimport ReloadAndProfileButton from './ReloadAndProfileButton';\nimport ProfilingImportExportButtons from './ProfilingImportExportButtons';\nimport SnapshotSelector from './SnapshotSelector';\nimport SidebarCommitInfo from './SidebarCommitInfo';\nimport SidebarInteractions from './SidebarInteractions';\nimport SidebarSelectedFiberInfo from './SidebarSelectedFiberInfo';\nimport SettingsModal from 'react-devtools-shared/src/devtools/views/Settings/SettingsModal';\nimport SettingsModalContextToggle from 'react-devtools-shared/src/devtools/views/Settings/SettingsModalContextToggle';\nimport {SettingsModalContextController} from 'react-devtools-shared/src/devtools/views/Settings/SettingsModalContext';\nimport portaledContent from '../portaledContent';\nimport Store from '../../store';\n\nimport styles from './Profiler.css';\n\nfunction Profiler(_: {||}) {\n const {\n didRecordCommits,\n isProcessingData,\n isProfiling,\n selectedCommitIndex,\n selectedFiberID,\n selectedTabID,\n selectTab,\n supportsProfiling,\n } = useContext(ProfilerContext);\n\n let view = null;\n if (didRecordCommits) {\n switch (selectedTabID) {\n case 'flame-chart':\n view = <CommitFlamegraph />;\n break;\n case 'ranked-chart':\n view = <CommitRanked />;\n break;\n case 'interactions':\n view = <Interactions />;\n break;\n default:\n break;\n }\n } else if (isProfiling) {\n view = <RecordingInProgress />;\n } else if (isProcessingData) {\n view = <ProcessingData />;\n } else if (supportsProfiling) {\n view = <NoProfilingData />;\n } else {\n view = <ProfilingNotSupported />;\n }\n\n let sidebar = null;\n if (!isProfiling && !isProcessingData && didRecordCommits) {\n switch (selectedTabID) {\n case 'interactions':\n sidebar = <SidebarInteractions />;\n break;\n case 'flame-chart':\n case 'ranked-chart':\n // TRICKY\n // Handle edge case where no commit is selected because of a min-duration filter update.\n // In that case, the selected commit index would be null.\n // We could still show a sidebar for the previously selected fiber,\n // but it would be an odd user experience.\n // TODO (ProfilerContext) This check should not be necessary.\n if (selectedCommitIndex !== null) {\n if (selectedFiberID !== null) {\n sidebar = <SidebarSelectedFiberInfo />;\n } else {\n sidebar = <SidebarCommitInfo />;\n }\n }\n break;\n default:\n break;\n }\n }\n\n return (\n <SettingsModalContextController>\n <div className={styles.Profiler}>\n <div className={styles.LeftColumn}>\n <div className={styles.Toolbar}>\n <RecordToggle disabled={!supportsProfiling} />\n <ReloadAndProfileButton />\n <ClearProfilingDataButton />\n <ProfilingImportExportButtons />\n <div className={styles.VRule} />\n <TabBar\n currentTab={selectedTabID}\n id=\"Profiler\"\n selectTab={selectTab}\n tabs={tabs}\n type=\"profiler\"\n />\n <RootSelector />\n <div className={styles.Spacer} />\n <SettingsModalContextToggle />\n {didRecordCommits && (\n <Fragment>\n <div className={styles.VRule} />\n <SnapshotSelector />\n </Fragment>\n )}\n </div>\n <div className={styles.Content}>\n {view}\n <ModalDialog />\n </div>\n </div>\n <div className={styles.RightColumn}>{sidebar}</div>\n <SettingsModal />\n </div>\n </SettingsModalContextController>\n );\n}\n\nconst tabs = [\n {\n id: 'flame-chart',\n icon: 'flame-chart',\n label: 'Flamegraph',\n title: 'Flamegraph chart',\n },\n {\n id: 'ranked-chart',\n icon: 'ranked-chart',\n label: 'Ranked',\n title: 'Ranked chart',\n },\n {\n id: 'interactions',\n icon: 'interactions',\n label: 'Interactions',\n title: 'Profiled interactions',\n },\n];\n\nconst NoProfilingData = () => (\n <div className={styles.Column}>\n <div className={styles.Header}>No profiling data has been recorded.</div>\n <div className={styles.Row}>\n Click the record button <RecordToggle /> to start recording.\n </div>\n </div>\n);\n\nconst ProfilingNotSupported = () => (\n <div className={styles.Column}>\n <div className={styles.Header}>Profiling not supported.</div>\n <p className={styles.Paragraph}>\n Profiling support requires either a development or production-profiling\n build of React v16.5+.\n </p>\n <p className={styles.Paragraph}>\n Learn more at{' '}\n <a\n className={styles.Link}\n href=\"https://reactjs.org/link/profiling\"\n rel=\"noopener noreferrer\"\n target=\"_blank\">\n reactjs.org/link/profiling\n </a>\n .\n </p>\n </div>\n);\n\nconst ProcessingData = () => (\n <div className={styles.Column}>\n <div className={styles.Header}>Processing data...</div>\n <div className={styles.Row}>This should only take a minute.</div>\n </div>\n);\n\nconst RecordingInProgress = () => (\n <div className={styles.Column}>\n <div className={styles.Header}>Profiling is in progress...</div>\n <div className={styles.Row}>\n Click the record button <RecordToggle /> to stop recording.\n </div>\n </div>\n);\n\nfunction onErrorRetry(store: Store) {\n // If an error happened in the Profiler,\n // we should clear data on retry (or it will just happen again).\n store.profilerStore.profilingData = null;\n}\n\nexport default portaledContent(Profiler, onErrorRetry);\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\n\nimport styles from './ReactLogo.css';\n\ntype Props = {|\n className?: string,\n|};\n\nexport default function ReactLogo({className}: Props) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={`${styles.ReactLogo} ${className || ''}`}\n viewBox=\"-11.5 -10.23174 23 20.46348\">\n <circle cx=\"0\" cy=\"0\" r=\"2.05\" fill=\"currentColor\" />\n <g stroke=\"currentColor\" strokeWidth=\"1\" fill=\"none\">\n <ellipse rx=\"11\" ry=\"4.2\" />\n <ellipse rx=\"11\" ry=\"4.2\" transform=\"rotate(60)\" />\n <ellipse rx=\"11\" ry=\"4.2\" transform=\"rotate(120)\" />\n </g>\n </svg>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {Fragment, useContext, useEffect, useState} from 'react';\nimport {unstable_batchedUpdates as batchedUpdates} from 'react-dom';\nimport {ModalDialogContext} from './ModalDialog';\nimport {StoreContext} from './context';\nimport {UNSUPPORTED_VERSION_URL} from 'react-devtools-shared/src/constants';\n\nimport styles from './UnsupportedVersionDialog.css';\n\ntype DAILOG_STATE = 'dialog-not-shown' | 'show-dialog' | 'dialog-shown';\n\nexport default function UnsupportedVersionDialog(_: {||}) {\n const {dispatch} = useContext(ModalDialogContext);\n const store = useContext(StoreContext);\n const [state, setState] = useState<DAILOG_STATE>('dialog-not-shown');\n\n useEffect(() => {\n if (state === 'dialog-not-shown') {\n const showDialog = () => {\n batchedUpdates(() => {\n setState('show-dialog');\n dispatch({\n canBeDismissed: true,\n type: 'SHOW',\n content: <DialogContent />,\n });\n });\n };\n\n if (store.unsupportedRendererVersionDetected) {\n showDialog();\n } else {\n store.addListener('unsupportedRendererVersionDetected', showDialog);\n return () => {\n store.removeListener(\n 'unsupportedRendererVersionDetected',\n showDialog,\n );\n };\n }\n }\n }, [state, store]);\n\n return null;\n}\n\nfunction DialogContent(_: {||}) {\n return (\n <Fragment>\n <div className={styles.Row}>\n <div>\n <div className={styles.Title}>Unsupported React version detected</div>\n <p>\n This version of React DevTools supports React DOM v15+ and React\n Native v61+.\n </p>\n <p>\n In order to use DevTools with an older version of React, you'll need\n to{' '}\n <a\n className={styles.ReleaseNotesLink}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={UNSUPPORTED_VERSION_URL}>\n install an older version of the extension\n </a>\n .\n </p>\n </div>\n </div>\n </Fragment>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport * as React from 'react';\nimport {Fragment, useContext, useEffect} from 'react';\nimport {BridgeContext} from './context';\nimport {ModalDialogContext} from './ModalDialog';\n\nimport styles from './WarnIfLegacyBackendDetected.css';\n\nexport default function WarnIfLegacyBackendDetected(_: {||}) {\n const bridge = useContext(BridgeContext);\n const {dispatch} = useContext(ModalDialogContext);\n\n // Detect pairing with legacy v3 backend.\n // We do this by listening to a message that it broadcasts but the v4 backend doesn't.\n // In this case the frontend should show upgrade instructions.\n useEffect(() => {\n // Wall.listen returns a cleanup function\n let unlisten = bridge.wall.listen(message => {\n switch (message.type) {\n case 'call':\n case 'event':\n case 'many-events':\n // Any of these types indicate the v3 backend.\n dispatch({\n canBeDismissed: false,\n type: 'SHOW',\n title: 'DevTools v4 is incompatible with this version of React',\n content: <InvalidBackendDetected />,\n });\n\n // Once we've identified the backend version, it's safe to unsubscribe.\n if (typeof unlisten === 'function') {\n unlisten();\n unlisten = null;\n }\n break;\n default:\n break;\n }\n\n switch (message.event) {\n case 'isBackendStorageAPISupported':\n case 'isNativeStyleEditorSupported':\n case 'operations':\n case 'overrideComponentFilters':\n // Any of these is sufficient to indicate a v4 backend.\n // Once we've identified the backend version, it's safe to unsubscribe.\n if (typeof unlisten === 'function') {\n unlisten();\n unlisten = null;\n }\n break;\n default:\n break;\n }\n });\n\n return () => {\n if (typeof unlisten === 'function') {\n unlisten();\n unlisten = null;\n }\n };\n }, [bridge, dispatch]);\n\n return null;\n}\n\nfunction InvalidBackendDetected(_: {||}) {\n return (\n <Fragment>\n <p>Either upgrade React or install React DevTools v3:</p>\n <code className={styles.Command}>npm install -d react-devtools@^3</code>\n </Fragment>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\n// Reach styles need to come before any component styles.\n// This makes overriding the styles simpler.\nimport '@reach/menu-button/styles.css';\nimport '@reach/tooltip/styles.css';\n\nimport * as React from 'react';\nimport {useEffect, useLayoutEffect, useMemo, useRef} from 'react';\nimport Store from '../store';\nimport {BridgeContext, ContextMenuContext, StoreContext} from './context';\nimport Components from './Components/Components';\nimport Profiler from './Profiler/Profiler';\nimport TabBar from './TabBar';\nimport {SettingsContextController} from './Settings/SettingsContext';\nimport {TreeContextController} from './Components/TreeContext';\nimport ViewElementSourceContext from './Components/ViewElementSourceContext';\nimport {ProfilerContextController} from './Profiler/ProfilerContext';\nimport {ModalDialogContextController} from './ModalDialog';\nimport ReactLogo from './ReactLogo';\nimport UnsupportedVersionDialog from './UnsupportedVersionDialog';\nimport WarnIfLegacyBackendDetected from './WarnIfLegacyBackendDetected';\nimport {useLocalStorage} from './hooks';\n\nimport styles from './DevTools.css';\n\nimport './root.css';\n\nimport type {InspectedElement} from 'react-devtools-shared/src/devtools/views/Components/types';\nimport type {FrontendBridge} from 'react-devtools-shared/src/bridge';\n\nexport type BrowserTheme = 'dark' | 'light';\nexport type TabID = 'components' | 'profiler';\nexport type ViewElementSource = (\n id: number,\n inspectedElement: InspectedElement,\n) => void;\nexport type ViewAttributeSource = (\n id: number,\n path: Array<string | number>,\n) => void;\nexport type CanViewElementSource = (\n inspectedElement: InspectedElement,\n) => boolean;\n\nexport type Props = {|\n bridge: FrontendBridge,\n browserTheme?: BrowserTheme,\n canViewElementSourceFunction?: ?CanViewElementSource,\n defaultTab?: TabID,\n enabledInspectedElementContextMenu?: boolean,\n showTabBar?: boolean,\n store: Store,\n warnIfLegacyBackendDetected?: boolean,\n warnIfUnsupportedVersionDetected?: boolean,\n viewAttributeSourceFunction?: ?ViewAttributeSource,\n viewElementSourceFunction?: ?ViewElementSource,\n\n // This property is used only by the web extension target.\n // The built-in tab UI is hidden in that case, in favor of the browser's own panel tabs.\n // This is done to save space within the app.\n // Because of this, the extension needs to be able to change which tab is active/rendered.\n overrideTab?: TabID,\n\n // To avoid potential multi-root trickiness, the web extension uses portals to render tabs.\n // The root <DevTools> app is rendered in the top-level extension window,\n // but individual tabs (e.g. Components, Profiling) can be rendered into portals within their browser panels.\n componentsPortalContainer?: Element,\n profilerPortalContainer?: Element,\n|};\n\nconst componentsTab = {\n id: ('components': TabID),\n icon: 'components',\n label: 'Components',\n title: 'React Components',\n};\nconst profilerTab = {\n id: ('profiler': TabID),\n icon: 'profiler',\n label: 'Profiler',\n title: 'React Profiler',\n};\n\nconst tabs = [componentsTab, profilerTab];\n\nexport default function DevTools({\n bridge,\n browserTheme = 'light',\n canViewElementSourceFunction,\n componentsPortalContainer,\n defaultTab = 'components',\n enabledInspectedElementContextMenu = false,\n overrideTab,\n profilerPortalContainer,\n showTabBar = false,\n store,\n warnIfLegacyBackendDetected = false,\n warnIfUnsupportedVersionDetected = false,\n viewAttributeSourceFunction,\n viewElementSourceFunction,\n}: Props) {\n const [currentTab, setTab] = useLocalStorage<TabID>(\n 'React::DevTools::defaultTab',\n defaultTab,\n );\n\n let tab = currentTab;\n\n if (overrideTab != null) {\n tab = overrideTab;\n }\n\n const viewElementSource = useMemo(\n () => ({\n canViewElementSourceFunction: canViewElementSourceFunction || null,\n viewElementSourceFunction: viewElementSourceFunction || null,\n }),\n [canViewElementSourceFunction, viewElementSourceFunction],\n );\n\n const contextMenu = useMemo(\n () => ({\n isEnabledForInspectedElement: enabledInspectedElementContextMenu,\n viewAttributeSourceFunction: viewAttributeSourceFunction || null,\n }),\n [enabledInspectedElementContextMenu, viewAttributeSourceFunction],\n );\n\n const devToolsRef = useRef<HTMLElement | null>(null);\n\n useEffect(() => {\n if (!showTabBar) {\n return;\n }\n\n const div = devToolsRef.current;\n if (div === null) {\n return;\n }\n\n const ownerWindow = div.ownerDocument.defaultView;\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.ctrlKey || event.metaKey) {\n switch (event.key) {\n case '1':\n setTab(tabs[0].id);\n event.preventDefault();\n event.stopPropagation();\n break;\n case '2':\n setTab(tabs[1].id);\n event.preventDefault();\n event.stopPropagation();\n break;\n }\n }\n };\n ownerWindow.addEventListener('keydown', handleKeyDown);\n return () => {\n ownerWindow.removeEventListener('keydown', handleKeyDown);\n };\n }, [showTabBar]);\n\n useLayoutEffect(() => {\n return () => {\n try {\n // Shut the Bridge down synchronously (during unmount).\n bridge.shutdown();\n } catch (error) {\n // Attempting to use a disconnected port.\n }\n };\n }, [bridge]);\n\n return (\n <BridgeContext.Provider value={bridge}>\n <StoreContext.Provider value={store}>\n <ContextMenuContext.Provider value={contextMenu}>\n <ModalDialogContextController>\n <SettingsContextController\n browserTheme={browserTheme}\n componentsPortalContainer={componentsPortalContainer}\n profilerPortalContainer={profilerPortalContainer}>\n <ViewElementSourceContext.Provider value={viewElementSource}>\n <TreeContextController>\n <ProfilerContextController>\n <div className={styles.DevTools} ref={devToolsRef}>\n {showTabBar && (\n <div className={styles.TabBar}>\n <ReactLogo />\n <span className={styles.DevToolsVersion}>\n {process.env.DEVTOOLS_VERSION}\n </span>\n <div className={styles.Spacer} />\n <TabBar\n currentTab={tab}\n id=\"DevTools\"\n selectTab={setTab}\n tabs={tabs}\n type=\"navigation\"\n />\n </div>\n )}\n <div\n className={styles.TabContent}\n hidden={tab !== 'components'}>\n <Components\n portalContainer={componentsPortalContainer}\n />\n </div>\n <div\n className={styles.TabContent}\n hidden={tab !== 'profiler'}>\n <Profiler portalContainer={profilerPortalContainer} />\n </div>\n </div>\n </ProfilerContextController>\n </TreeContextController>\n </ViewElementSourceContext.Provider>\n </SettingsContextController>\n {warnIfLegacyBackendDetected && <WarnIfLegacyBackendDetected />}\n {warnIfUnsupportedVersionDetected && <UnsupportedVersionDialog />}\n </ModalDialogContextController>\n </ContextMenuContext.Provider>\n </StoreContext.Provider>\n </BridgeContext.Provider>\n );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport {existsSync} from 'fs';\nimport {basename, join, isAbsolute} from 'path';\nimport {execSync, spawn} from 'child_process';\nimport {parse} from 'shell-quote';\n\nfunction isTerminalEditor(editor: string): boolean {\n switch (editor) {\n case 'vim':\n case 'emacs':\n case 'nano':\n return true;\n default:\n return false;\n }\n}\n\n// Map from full process name to binary that starts the process\n// We can't just re-use full process name, because it will spawn a new instance\n// of the app every time\nconst COMMON_EDITORS = {\n '/Applications/Atom.app/Contents/MacOS/Atom': 'atom',\n '/Applications/Atom Beta.app/Contents/MacOS/Atom Beta':\n '/Applications/Atom Beta.app/Contents/MacOS/Atom Beta',\n '/Applications/Sublime Text.app/Contents/MacOS/Sublime Text':\n '/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl',\n '/Applications/Sublime Text 2.app/Contents/MacOS/Sublime Text 2':\n '/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl',\n '/Applications/Visual Studio Code.app/Contents/MacOS/Electron': 'code',\n};\n\nfunction getArgumentsForLineNumber(\n editor: string,\n filePath: string,\n lineNumber: number,\n): Array<string> {\n switch (basename(editor)) {\n case 'vim':\n case 'mvim':\n return [filePath, '+' + lineNumber];\n case 'atom':\n case 'Atom':\n case 'Atom Beta':\n case 'subl':\n case 'sublime':\n case 'wstorm':\n case 'appcode':\n case 'charm':\n case 'idea':\n return [filePath + ':' + lineNumber];\n case 'joe':\n case 'emacs':\n case 'emacsclient':\n return ['+' + lineNumber, filePath];\n case 'rmate':\n case 'mate':\n case 'mine':\n return ['--line', lineNumber + '', filePath];\n case 'code':\n return ['-g', filePath + ':' + lineNumber];\n default:\n // For all others, drop the lineNumber until we have\n // a mapping above, since providing the lineNumber incorrectly\n // can result in errors or confusing behavior.\n return [filePath];\n }\n}\n\nfunction guessEditor(): Array<string> {\n // Explicit config always wins\n if (process.env.REACT_EDITOR) {\n return parse(process.env.REACT_EDITOR);\n }\n\n // Using `ps x` on OSX we can find out which editor is currently running.\n // Potentially we could use similar technique for Windows and Linux\n if (process.platform === 'darwin') {\n try {\n const output = execSync('ps x').toString();\n const processNames = Object.keys(COMMON_EDITORS);\n for (let i = 0; i < processNames.length; i++) {\n const processName = processNames[i];\n if (output.indexOf(processName) !== -1) {\n return [COMMON_EDITORS[processName]];\n }\n }\n } catch (error) {\n // Ignore...\n }\n }\n\n // Last resort, use old skool env vars\n if (process.env.VISUAL) {\n return [process.env.VISUAL];\n } else if (process.env.EDITOR) {\n return [process.env.EDITOR];\n }\n\n return [];\n}\n\nlet childProcess = null;\n\nexport function getValidFilePath(\n maybeRelativePath: string,\n absoluteProjectRoots: Array<string>,\n): string | null {\n // We use relative paths at Facebook with deterministic builds.\n // This is why our internal tooling calls React DevTools with absoluteProjectRoots.\n // If the filename is absolute then we don't need to care about this.\n if (isAbsolute(maybeRelativePath)) {\n if (existsSync(maybeRelativePath)) {\n return maybeRelativePath;\n }\n } else {\n for (let i = 0; i < absoluteProjectRoots.length; i++) {\n const projectRoot = absoluteProjectRoots[i];\n const joinedPath = join(projectRoot, maybeRelativePath);\n if (existsSync(joinedPath)) {\n return joinedPath;\n }\n }\n }\n\n return null;\n}\n\nexport function doesFilePathExist(\n maybeRelativePath: string,\n absoluteProjectRoots: Array<string>,\n): boolean {\n return getValidFilePath(maybeRelativePath, absoluteProjectRoots) !== null;\n}\n\nexport function launchEditor(\n maybeRelativePath: string,\n lineNumber: number,\n absoluteProjectRoots: Array<string>,\n) {\n const filePath = getValidFilePath(maybeRelativePath, absoluteProjectRoots);\n if (filePath === null) {\n return;\n }\n\n // Sanitize lineNumber to prevent malicious use on win32\n // via: https://github.com/nodejs/node/blob/c3bb4b1aa5e907d489619fb43d233c3336bfc03d/lib/child_process.js#L333\n if (lineNumber && isNaN(lineNumber)) {\n return;\n }\n\n const [editor, ...destructuredArgs] = guessEditor();\n if (!editor) {\n return;\n }\n\n let args = destructuredArgs;\n\n if (lineNumber) {\n args = args.concat(getArgumentsForLineNumber(editor, filePath, lineNumber));\n } else {\n args.push(filePath);\n }\n\n if (childProcess && isTerminalEditor(editor)) {\n // There's an existing editor process already and it's attached\n // to the terminal, so go kill it. Otherwise two separate editor\n // instances attach to the stdin/stdout which gets confusing.\n childProcess.kill('SIGKILL');\n }\n\n if (process.platform === 'win32') {\n // On Windows, launch the editor in a shell because spawn can only\n // launch .exe files.\n childProcess = spawn('cmd.exe', ['/C', editor].concat(args), {\n stdio: 'inherit',\n });\n } else {\n childProcess = spawn(editor, args, {stdio: 'inherit'});\n }\n childProcess.on('error', function() {});\n childProcess.on('exit', function(errorCode) {\n childProcess = null;\n });\n}\n","/**\n * Install the hook on window, which is an event emitter.\n * Note because Chrome content scripts cannot directly modify the window object,\n * we are evaling this function by inserting a script tag.\n * That's why we have to inline the whole event emitter implementation here.\n *\n * @flow\n */\n\nimport {\n patch as patchConsole,\n registerRenderer as registerRendererWithConsole,\n} from './backend/console';\n\nimport type {DevToolsHook} from 'react-devtools-shared/src/backend/types';\n\ndeclare var window: any;\n\nexport function installHook(target: any): DevToolsHook | null {\n if (target.hasOwnProperty('__REACT_DEVTOOLS_GLOBAL_HOOK__')) {\n return null;\n }\n\n function detectReactBuildType(renderer) {\n try {\n if (typeof renderer.version === 'string') {\n // React DOM Fiber (16+)\n if (renderer.bundleType > 0) {\n // This is not a production build.\n // We are currently only using 0 (PROD) and 1 (DEV)\n // but might add 2 (PROFILE) in the future.\n return 'development';\n }\n\n // React 16 uses flat bundles. If we report the bundle as production\n // version, it means we also minified and envified it ourselves.\n return 'production';\n // Note: There is still a risk that the CommonJS entry point has not\n // been envified or uglified. In this case the user would have *both*\n // development and production bundle, but only the prod one would run.\n // This would be really bad. We have a separate check for this because\n // it happens *outside* of the renderer injection. See `checkDCE` below.\n }\n\n const toString = Function.prototype.toString;\n if (renderer.Mount && renderer.Mount._renderNewRootComponent) {\n // React DOM Stack\n const renderRootCode = toString.call(\n renderer.Mount._renderNewRootComponent,\n );\n // Filter out bad results (if that is even possible):\n if (renderRootCode.indexOf('function') !== 0) {\n // Hope for the best if we're not sure.\n return 'production';\n }\n // Check for React DOM Stack < 15.1.0 in development.\n // If it contains \"storedMeasure\" call, it's wrapped in ReactPerf (DEV only).\n // This would be true even if it's minified, as method name still matches.\n if (renderRootCode.indexOf('storedMeasure') !== -1) {\n return 'development';\n }\n // For other versions (and configurations) it's not so easy.\n // Let's quickly exclude proper production builds.\n // If it contains a warning message, it's either a DEV build,\n // or an PROD build without proper dead code elimination.\n if (renderRootCode.indexOf('should be a pure function') !== -1) {\n // Now how do we tell a DEV build from a bad PROD build?\n // If we see NODE_ENV, we're going to assume this is a dev build\n // because most likely it is referring to an empty shim.\n if (renderRootCode.indexOf('NODE_ENV') !== -1) {\n return 'development';\n }\n // If we see \"development\", we're dealing with an envified DEV build\n // (such as the official React DEV UMD).\n if (renderRootCode.indexOf('development') !== -1) {\n return 'development';\n }\n // I've seen process.env.NODE_ENV !== 'production' being smartly\n // replaced by `true` in DEV by Webpack. I don't know how that\n // works but we can safely guard against it because `true` was\n // never used in the function source since it was written.\n if (renderRootCode.indexOf('true') !== -1) {\n return 'development';\n }\n // By now either it is a production build that has not been minified,\n // or (worse) this is a minified development build using non-standard\n // environment (e.g. \"staging\"). We're going to look at whether\n // the function argument name is mangled:\n if (\n // 0.13 to 15\n renderRootCode.indexOf('nextElement') !== -1 ||\n // 0.12\n renderRootCode.indexOf('nextComponent') !== -1\n ) {\n // We can't be certain whether this is a development build or not,\n // but it is definitely unminified.\n return 'unminified';\n } else {\n // This is likely a minified development build.\n return 'development';\n }\n }\n // By now we know that it's envified and dead code elimination worked,\n // but what if it's still not minified? (Is this even possible?)\n // Let's check matches for the first argument name.\n if (\n // 0.13 to 15\n renderRootCode.indexOf('nextElement') !== -1 ||\n // 0.12\n renderRootCode.indexOf('nextComponent') !== -1\n ) {\n return 'unminified';\n }\n // Seems like we're using the production version.\n // However, the branch above is Stack-only so this is 15 or earlier.\n return 'outdated';\n }\n } catch (err) {\n // Weird environments may exist.\n // This code needs a higher fault tolerance\n // because it runs even with closed DevTools.\n // TODO: should we catch errors in all injected code, and not just this part?\n }\n return 'production';\n }\n\n function checkDCE(fn: Function) {\n // This runs for production versions of React.\n // Needs to be super safe.\n try {\n const toString = Function.prototype.toString;\n const code = toString.call(fn);\n\n // This is a string embedded in the passed function under DEV-only\n // condition. However the function executes only in PROD. Therefore,\n // if we see it, dead code elimination did not work.\n if (code.indexOf('^_^') > -1) {\n // Remember to report during next injection.\n hasDetectedBadDCE = true;\n\n // Bonus: throw an exception hoping that it gets picked up by a reporting system.\n // Not synchronously so that it doesn't break the calling code.\n setTimeout(function() {\n throw new Error(\n 'React is running in production mode, but dead code ' +\n 'elimination has not been applied. Read how to correctly ' +\n 'configure React for production: ' +\n 'https://reactjs.org/link/perf-use-production-build',\n );\n });\n }\n } catch (err) {}\n }\n\n let uidCounter = 0;\n\n function inject(renderer) {\n const id = ++uidCounter;\n renderers.set(id, renderer);\n\n const reactBuildType = hasDetectedBadDCE\n ? 'deadcode'\n : detectReactBuildType(renderer);\n\n // Patching the console enables DevTools to do a few useful things:\n // * Append component stacks to warnings and error messages\n // * Disable logging during re-renders to inspect hooks (see inspectHooksOfFiber)\n //\n // For React Native, we intentionally patch early (during injection).\n // This provides React Native developers with components stacks even if they don't run DevTools.\n // This won't work for DOM though, since this entire file is eval'ed and inserted as a script tag.\n // In that case, we'll patch later (when the frontend attaches).\n //\n // Don't patch in test environments because we don't want to interfere with Jest's own console overrides.\n //\n // Note that because this function is inlined, this conditional check must only use static booleans.\n // Otherwise the extension will throw with an undefined error.\n // (See comments in the try/catch below for more context on inlining.)\n if (!__EXTENSION__ && !__TEST__) {\n try {\n const appendComponentStack =\n window.__REACT_DEVTOOLS_APPEND_COMPONENT_STACK__ !== false;\n const breakOnConsoleErrors =\n window.__REACT_DEVTOOLS_BREAK_ON_CONSOLE_ERRORS__ === true;\n\n // The installHook() function is injected by being stringified in the browser,\n // so imports outside of this function do not get included.\n //\n // Normally we could check \"typeof patchConsole === 'function'\",\n // but Webpack wraps imports with an object (e.g. _backend_console__WEBPACK_IMPORTED_MODULE_0__)\n // and the object itself will be undefined as well for the reasons mentioned above,\n // so we use try/catch instead.\n if (appendComponentStack || breakOnConsoleErrors) {\n registerRendererWithConsole(renderer);\n patchConsole({\n appendComponentStack,\n breakOnConsoleErrors,\n });\n }\n } catch (error) {}\n }\n\n // If we have just reloaded to profile, we need to inject the renderer interface before the app loads.\n // Otherwise the renderer won't yet exist and we can skip this step.\n const attach = target.__REACT_DEVTOOLS_ATTACH__;\n if (typeof attach === 'function') {\n const rendererInterface = attach(hook, id, renderer, target);\n hook.rendererInterfaces.set(id, rendererInterface);\n }\n\n hook.emit('renderer', {id, renderer, reactBuildType});\n\n return id;\n }\n\n let hasDetectedBadDCE = false;\n\n function sub(event, fn) {\n hook.on(event, fn);\n return () => hook.off(event, fn);\n }\n\n function on(event, fn) {\n if (!listeners[event]) {\n listeners[event] = [];\n }\n listeners[event].push(fn);\n }\n\n function off(event, fn) {\n if (!listeners[event]) {\n return;\n }\n const index = listeners[event].indexOf(fn);\n if (index !== -1) {\n listeners[event].splice(index, 1);\n }\n if (!listeners[event].length) {\n delete listeners[event];\n }\n }\n\n function emit(event, data) {\n if (listeners[event]) {\n listeners[event].map(fn => fn(data));\n }\n }\n\n function getFiberRoots(rendererID) {\n const roots = fiberRoots;\n if (!roots[rendererID]) {\n roots[rendererID] = new Set();\n }\n return roots[rendererID];\n }\n\n function onCommitFiberUnmount(rendererID, fiber) {\n const rendererInterface = rendererInterfaces.get(rendererID);\n if (rendererInterface != null) {\n rendererInterface.handleCommitFiberUnmount(fiber);\n }\n }\n\n function onCommitFiberRoot(rendererID, root, priorityLevel) {\n const mountedRoots = hook.getFiberRoots(rendererID);\n const current = root.current;\n const isKnownRoot = mountedRoots.has(root);\n const isUnmounting =\n current.memoizedState == null || current.memoizedState.element == null;\n\n // Keep track of mounted roots so we can hydrate when DevTools connect.\n if (!isKnownRoot && !isUnmounting) {\n mountedRoots.add(root);\n } else if (isKnownRoot && isUnmounting) {\n mountedRoots.delete(root);\n }\n const rendererInterface = rendererInterfaces.get(rendererID);\n if (rendererInterface != null) {\n rendererInterface.handleCommitFiberRoot(root, priorityLevel);\n }\n }\n\n // TODO: More meaningful names for \"rendererInterfaces\" and \"renderers\".\n const fiberRoots = {};\n const rendererInterfaces = new Map();\n const listeners = {};\n const renderers = new Map();\n\n const hook: DevToolsHook = {\n rendererInterfaces,\n listeners,\n\n // Fast Refresh for web relies on this.\n renderers,\n\n emit,\n getFiberRoots,\n inject,\n on,\n off,\n sub,\n\n // This is a legacy flag.\n // React v16 checks the hook for this to ensure DevTools is new enough.\n supportsFiber: true,\n\n // React calls these methods.\n checkDCE,\n onCommitFiberUnmount,\n onCommitFiberRoot,\n };\n\n Object.defineProperty(\n target,\n '__REACT_DEVTOOLS_GLOBAL_HOOK__',\n ({\n // This property needs to be configurable for the test environment,\n // else we won't be able to delete and recreate it beween tests.\n configurable: __DEV__,\n enumerable: false,\n get() {\n return hook;\n },\n }: Object),\n );\n\n return hook;\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @flow\n */\n\nimport {createElement} from 'react';\nimport {\n // $FlowFixMe Flow does not yet know about flushSync()\n flushSync,\n // $FlowFixMe Flow does not yet know about createRoot()\n unstable_createRoot as createRoot,\n} from 'react-dom';\nimport Bridge from 'react-devtools-shared/src/bridge';\nimport Store from 'react-devtools-shared/src/devtools/store';\nimport {\n getAppendComponentStack,\n getBreakOnConsoleErrors,\n getSavedComponentFilters,\n} from 'react-devtools-shared/src/utils';\nimport {Server} from 'ws';\nimport {join} from 'path';\nimport {readFileSync} from 'fs';\nimport {installHook} from 'react-devtools-shared/src/hook';\nimport DevTools from 'react-devtools-shared/src/devtools/views/DevTools';\nimport {doesFilePathExist, launchEditor} from './editor';\nimport {__DEBUG__} from 'react-devtools-shared/src/constants';\n\nimport type {FrontendBridge} from 'react-devtools-shared/src/bridge';\nimport type {InspectedElement} from 'react-devtools-shared/src/devtools/views/Components/types';\n\ninstallHook(window);\n\nexport type StatusListener = (message: string) => void;\n\nlet node: HTMLElement = ((null: any): HTMLElement);\nlet nodeWaitingToConnectHTML: string = '';\nlet projectRoots: Array<string> = [];\nlet statusListener: StatusListener = (message: string) => {};\n\nfunction setContentDOMNode(value: HTMLElement) {\n node = value;\n\n // Save so we can restore the exact waiting message between sessions.\n nodeWaitingToConnectHTML = node.innerHTML;\n\n return DevtoolsUI;\n}\n\nfunction setProjectRoots(value: Array<string>) {\n projectRoots = value;\n}\n\nfunction setStatusListener(value: StatusListener) {\n statusListener = value;\n return DevtoolsUI;\n}\n\nlet bridge: FrontendBridge | null = null;\nlet store: Store | null = null;\nlet root = null;\n\nconst log = (...args) => console.log('[React DevTools]', ...args);\nlog.warn = (...args) => console.warn('[React DevTools]', ...args);\nlog.error = (...args) => console.error('[React DevTools]', ...args);\n\nfunction debug(methodName: string, ...args) {\n if (__DEBUG__) {\n console.log(\n `%c[core/standalone] %c${methodName}`,\n 'color: teal; font-weight: bold;',\n 'font-weight: bold;',\n ...args,\n );\n }\n}\n\nfunction safeUnmount() {\n flushSync(() => {\n if (root !== null) {\n root.unmount();\n }\n });\n root = null;\n}\n\nfunction reload() {\n safeUnmount();\n\n node.innerHTML = '';\n\n setTimeout(() => {\n root = createRoot(node);\n root.render(\n createElement(DevTools, {\n bridge: ((bridge: any): FrontendBridge),\n canViewElementSourceFunction,\n showTabBar: true,\n store: ((store: any): Store),\n warnIfLegacyBackendDetected: true,\n viewElementSourceFunction,\n }),\n );\n }, 100);\n}\n\nfunction canViewElementSourceFunction(\n inspectedElement: InspectedElement,\n): boolean {\n if (\n inspectedElement.canViewSource === false ||\n inspectedElement.source === null\n ) {\n return false;\n }\n\n const {source} = inspectedElement;\n\n return doesFilePathExist(source.fileName, projectRoots);\n}\n\nfunction viewElementSourceFunction(\n id: number,\n inspectedElement: InspectedElement,\n): void {\n const {source} = inspectedElement;\n if (source !== null) {\n launchEditor(source.fileName, source.lineNumber, projectRoots);\n } else {\n log.error('Cannot inspect element', id);\n }\n}\n\nfunction onDisconnected() {\n safeUnmount();\n\n node.innerHTML = nodeWaitingToConnectHTML;\n}\n\nfunction onError({code, message}) {\n safeUnmount();\n\n if (code === 'EADDRINUSE') {\n node.innerHTML = `\n <div class=\"box\">\n <div class=\"box-header\">\n Another instance of DevTools is running.\n </div>\n <div class=\"box-content\">\n Only one copy of DevTools can be used at a time.\n </div>\n </div>\n `;\n } else {\n node.innerHTML = `\n <div class=\"box\">\n <div class=\"box-header\">\n Unknown error\n </div>\n <div class=\"box-content\">\n ${message}\n </div>\n </div>\n `;\n }\n}\n\nfunction initialize(socket: WebSocket) {\n const listeners = [];\n socket.onmessage = event => {\n let data;\n try {\n if (typeof event.data === 'string') {\n data = JSON.parse(event.data);\n\n if (__DEBUG__) {\n debug('WebSocket.onmessage', data);\n }\n } else {\n throw Error();\n }\n } catch (e) {\n log.error('Failed to parse JSON', event.data);\n return;\n }\n listeners.forEach(fn => {\n try {\n fn(data);\n } catch (error) {\n log.error('Error calling listener', data);\n throw error;\n }\n });\n };\n\n bridge = new Bridge({\n listen(fn) {\n listeners.push(fn);\n return () => {\n const index = listeners.indexOf(fn);\n if (index >= 0) {\n listeners.splice(index, 1);\n }\n };\n },\n send(event: string, payload: any, transferable?: Array<any>) {\n if (socket.readyState === socket.OPEN) {\n socket.send(JSON.stringify({event, payload}));\n }\n },\n });\n ((bridge: any): FrontendBridge).addListener('shutdown', () => {\n socket.close();\n });\n\n store = new Store(bridge, {supportsNativeInspection: false});\n\n log('Connected');\n reload();\n}\n\nlet startServerTimeoutID: TimeoutID | null = null;\n\nfunction connectToSocket(socket: WebSocket) {\n socket.onerror = err => {\n onDisconnected();\n log.error('Error with websocket connection', err);\n };\n socket.onclose = () => {\n onDisconnected();\n log('Connection to RN closed');\n };\n initialize(socket);\n\n return {\n close: function() {\n onDisconnected();\n },\n };\n}\n\ntype ServerOptions = {\n key?: string,\n cert?: string,\n};\n\nfunction startServer(\n port?: number = 8097,\n host?: string = 'localhost',\n httpsOptions?: ServerOptions,\n) {\n const useHttps = !!httpsOptions;\n const httpServer = useHttps\n ? require('https').createServer(httpsOptions)\n : require('http').createServer();\n const server = new Server({server: httpServer});\n let connected: WebSocket | null = null;\n server.on('connection', (socket: WebSocket) => {\n if (connected !== null) {\n connected.close();\n log.warn(\n 'Only one connection allowed at a time.',\n 'Closing the previous connection',\n );\n }\n connected = socket;\n socket.onerror = error => {\n connected = null;\n onDisconnected();\n log.error('Error with websocket connection', error);\n };\n socket.onclose = () => {\n connected = null;\n onDisconnected();\n log('Connection to RN closed');\n };\n initialize(socket);\n });\n\n server.on('error', event => {\n onError(event);\n log.error('Failed to start the DevTools server', event);\n startServerTimeoutID = setTimeout(() => startServer(port), 1000);\n });\n\n httpServer.on('request', (request, response) => {\n // Serve a file that immediately sets up the connection.\n const backendFile = readFileSync(join(__dirname, 'backend.js'));\n\n // The renderer interface doesn't read saved component filters directly,\n // because they are generally stored in localStorage within the context of the extension.\n // Because of this it relies on the extension to pass filters, so include them wth the response here.\n // This will ensure that saved filters are shared across different web pages.\n const savedPreferencesString = `\n window.__REACT_DEVTOOLS_APPEND_COMPONENT_STACK__ = ${JSON.stringify(\n getAppendComponentStack(),\n )};\n window.__REACT_DEVTOOLS_BREAK_ON_CONSOLE_ERRORS__ = ${JSON.stringify(\n getBreakOnConsoleErrors(),\n )};\n window.__REACT_DEVTOOLS_COMPONENT_FILTERS__ = ${JSON.stringify(\n getSavedComponentFilters(),\n )};`;\n\n response.end(\n savedPreferencesString +\n '\\n;' +\n backendFile.toString() +\n '\\n;' +\n `ReactDevToolsBackend.connectToDevTools({port: ${port}, host: '${host}', useHttps: ${\n useHttps ? 'true' : 'false'\n }});`,\n );\n });\n\n httpServer.on('error', event => {\n onError(event);\n statusListener('Failed to start the server.');\n startServerTimeoutID = setTimeout(() => startServer(port), 1000);\n });\n\n httpServer.listen(port, () => {\n statusListener('The server is listening on the port ' + port + '.');\n });\n\n return {\n close: function() {\n connected = null;\n onDisconnected();\n if (startServerTimeoutID !== null) {\n clearTimeout(startServerTimeoutID);\n }\n server.close();\n httpServer.close();\n },\n };\n}\n\nconst DevtoolsUI = {\n connectToSocket,\n setContentDOMNode,\n setProjectRoots,\n setStatusListener,\n startServer,\n};\n\nexport default DevtoolsUI;\n"],"sourceRoot":""} |