Full Code of lepoco/wpfui for AI

main e6e22e338987 cached
1065 files
15.7 MB
4.2M tokens
22032 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (16,659K chars total). Download the full file to get everything.
Repository: lepoco/wpfui
Branch: main
Commit: e6e22e338987
Files: 1065
Total size: 15.7 MB

Directory structure:
gitextract_lxt73sm_/

├── .config/
│   └── dotnet-tools.json
├── .csharpierignore
├── .csharpierrc
├── .devcontainer/
│   ├── devcontainer.json
│   └── post-create.sh
├── .editorconfig
├── .gitattributes
├── .github/
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.yaml
│   │   ├── config.yml
│   │   └── feature_request.yaml
│   ├── chatmodes/
│   │   └── documentation_contributor.chatmode.md
│   ├── copilot-instructions.md
│   ├── dependabot.yml
│   ├── labeler.yml
│   ├── labels.yml
│   ├── policies/
│   │   ├── cla.yml
│   │   └── platformcontext.yml
│   ├── pull_request_template.md
│   └── workflows/
│       ├── top-issues-dashboard.yml
│       ├── wpf-ui-cd-docs.yaml
│       ├── wpf-ui-cd-extension.yaml
│       ├── wpf-ui-cd-nuget.yaml
│       ├── wpf-ui-labeler.yml
│       ├── wpf-ui-lock.yml
│       └── wpf-ui-pr-validator.yaml
├── .gitignore
├── .vsconfig
├── CNAME
├── CODEOWNERS
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Directory.Build.props
├── Directory.Build.targets
├── Directory.Packages.props
├── LICENSE
├── LICENSE.md
├── README.md
├── SECURITY.md
├── Settings.XamlStyler
├── ThirdPartyNotices.txt
├── Wpf.Ui.Gallery.slnf
├── Wpf.Ui.Library.slnf
├── Wpf.Ui.sln
├── branding/
│   ├── geometric_splash.psd
│   ├── microsoft-fluent-resources.psd
│   └── wpfui.psd
├── build.cmd
├── build.ps1
├── docs/
│   ├── .gitignore
│   ├── codesnippet/
│   │   └── Rtf/
│   │       ├── Hyperlink/
│   │       │   └── RtfDocumentProcessor.cs
│   │       ├── RtfBuildStep.cs
│   │       └── RtfDocumentProcessor.cs
│   ├── docfx.json
│   ├── documentation/
│   │   ├── .gitignore
│   │   ├── about-wpf.md
│   │   ├── accent.md
│   │   ├── extension.md
│   │   ├── fonticon.md
│   │   ├── gallery-editor.md
│   │   ├── gallery-monaco-editor.md
│   │   ├── gallery.md
│   │   ├── getting-started.md
│   │   ├── icons.md
│   │   ├── index.md
│   │   ├── menu.md
│   │   ├── navigation-view.md
│   │   ├── nuget.md
│   │   ├── releases.md
│   │   ├── symbolicon.md
│   │   ├── system-theme-watcher.md
│   │   └── themes.md
│   ├── index.md
│   ├── manifest.webmanifest
│   ├── migration/
│   │   ├── v2-migration.md
│   │   ├── v3-migration.md
│   │   └── v4-migration.md
│   ├── robots.txt
│   ├── templates/
│   │   ├── .eslintrc.js
│   │   ├── .gitignore
│   │   ├── .stylelintrc.json
│   │   ├── README.md
│   │   ├── build.js
│   │   ├── package.json
│   │   ├── tsconfig.json
│   │   └── wpfui/
│   │       ├── layout/
│   │       │   └── _master.tmpl
│   │       ├── partials/
│   │       │   ├── class.header.tmpl.partial
│   │       │   ├── class.memberpage.tmpl.partial
│   │       │   ├── class.tmpl.partial
│   │       │   ├── collection.tmpl.partial
│   │       │   ├── customMREFContent.tmpl.partial
│   │       │   ├── enum.tmpl.partial
│   │       │   ├── item.tmpl.partial
│   │       │   └── namespace.tmpl.partial
│   │       ├── src/
│   │       │   ├── docfx.scss
│   │       │   ├── docfx.ts
│   │       │   ├── dotnet.scss
│   │       │   ├── helper.test.ts
│   │       │   ├── helper.ts
│   │       │   ├── highlight.scss
│   │       │   ├── highlight.ts
│   │       │   ├── layout.scss
│   │       │   ├── markdown.scss
│   │       │   ├── markdown.ts
│   │       │   ├── mixins.scss
│   │       │   ├── nav.scss
│   │       │   ├── nav.ts
│   │       │   ├── options.d.ts
│   │       │   ├── search-worker.ts
│   │       │   ├── search.scss
│   │       │   ├── search.ts
│   │       │   ├── theme.ts
│   │       │   ├── toc.scss
│   │       │   ├── toc.ts
│   │       │   ├── wpfui-index-stats.ts
│   │       │   └── wpfui.scss
│   │       ├── toc.json.js
│   │       └── toc.json.tmpl
│   └── toc.yml
├── nuget.config
├── samples/
│   ├── Wpf.Ui.Demo.Console/
│   │   ├── GlobalUsings.cs
│   │   ├── Models/
│   │   │   └── DataColor.cs
│   │   ├── Program.cs
│   │   ├── Utilities/
│   │   │   └── ThemeUtilities.cs
│   │   ├── Views/
│   │   │   ├── MainView.xaml
│   │   │   ├── MainView.xaml.cs
│   │   │   ├── Pages/
│   │   │   │   ├── DashboardPage.xaml
│   │   │   │   ├── DashboardPage.xaml.cs
│   │   │   │   ├── DataPage.xaml
│   │   │   │   ├── DataPage.xaml.cs
│   │   │   │   ├── SettingsPage.xaml
│   │   │   │   └── SettingsPage.xaml.cs
│   │   │   ├── SimpleView.xaml
│   │   │   └── SimpleView.xaml.cs
│   │   └── Wpf.Ui.Demo.Console.csproj
│   ├── Wpf.Ui.Demo.Dialogs/
│   │   ├── App.xaml
│   │   ├── App.xaml.cs
│   │   ├── AssemblyInfo.cs
│   │   ├── MainWindow.xaml
│   │   ├── MainWindow.xaml.cs
│   │   ├── Wpf.Ui.Demo.Dialogs.csproj
│   │   └── app.manifest
│   ├── Wpf.Ui.Demo.Mvvm/
│   │   ├── App.xaml
│   │   ├── App.xaml.cs
│   │   ├── AssemblyInfo.cs
│   │   ├── GlobalUsings.cs
│   │   ├── Helpers/
│   │   │   └── EnumToBooleanConverter.cs
│   │   ├── Models/
│   │   │   ├── AppConfig.cs
│   │   │   └── DataColor.cs
│   │   ├── Services/
│   │   │   └── ApplicationHostService.cs
│   │   ├── ViewModels/
│   │   │   ├── DashboardViewModel.cs
│   │   │   ├── DataViewModel.cs
│   │   │   ├── MainWindowViewModel.cs
│   │   │   ├── SettingsViewModel.cs
│   │   │   └── ViewModel.cs
│   │   ├── Views/
│   │   │   ├── MainWindow.xaml
│   │   │   ├── MainWindow.xaml.cs
│   │   │   └── Pages/
│   │   │       ├── DashboardPage.xaml
│   │   │       ├── DashboardPage.xaml.cs
│   │   │       ├── DataPage.xaml
│   │   │       ├── DataPage.xaml.cs
│   │   │       ├── SettingsPage.xaml
│   │   │       └── SettingsPage.xaml.cs
│   │   ├── Wpf.Ui.Demo.Mvvm.csproj
│   │   └── app.manifest
│   ├── Wpf.Ui.Demo.SetResources.Simple/
│   │   ├── App.xaml
│   │   ├── App.xaml.cs
│   │   ├── AssemblyInfo.cs
│   │   ├── MainWindow.xaml
│   │   ├── MainWindow.xaml.cs
│   │   ├── Models/
│   │   │   ├── DataColor.cs
│   │   │   └── DataGroup.cs
│   │   ├── Views/
│   │   │   └── Pages/
│   │   │       ├── DashboardPage.xaml
│   │   │       ├── DashboardPage.xaml.cs
│   │   │       ├── DataPage.xaml
│   │   │       ├── DataPage.xaml.cs
│   │   │       ├── ExpanderPage.xaml
│   │   │       ├── ExpanderPage.xaml.cs
│   │   │       ├── SettingsPage.xaml
│   │   │       └── SettingsPage.xaml.cs
│   │   ├── Wpf.Ui.Demo.SetResources.Simple.csproj
│   │   └── app.manifest
│   └── Wpf.Ui.Demo.Simple/
│       ├── App.xaml
│       ├── App.xaml.cs
│       ├── AssemblyInfo.cs
│       ├── MainWindow.xaml
│       ├── MainWindow.xaml.cs
│       ├── Models/
│       │   └── DataColor.cs
│       ├── Views/
│       │   └── Pages/
│       │       ├── DashboardPage.xaml
│       │       ├── DashboardPage.xaml.cs
│       │       ├── DataPage.xaml
│       │       ├── DataPage.xaml.cs
│       │       ├── SettingsPage.xaml
│       │       └── SettingsPage.xaml.cs
│       ├── Wpf.Ui.Demo.Simple.csproj
│       └── app.manifest
├── src/
│   ├── Wpf.Ui/
│   │   ├── Animations/
│   │   │   ├── AnimationProperties.cs
│   │   │   ├── Transition.cs
│   │   │   └── TransitionAnimationProvider.cs
│   │   ├── Appearance/
│   │   │   ├── ApplicationAccentColorManager.cs
│   │   │   ├── ApplicationTheme.cs
│   │   │   ├── ApplicationThemeManager.cs
│   │   │   ├── ObservedWindow.cs
│   │   │   ├── ResourceDictionaryManager.cs
│   │   │   ├── SystemTheme.cs
│   │   │   ├── SystemThemeManager.cs
│   │   │   ├── SystemThemeWatcher.cs
│   │   │   ├── ThemeChangedEvent.cs
│   │   │   ├── UISettingsRCW.cs
│   │   │   └── WindowBackgroundManager.cs
│   │   ├── AutomationPeers/
│   │   │   ├── CardControlAutomationPeer.cs
│   │   │   └── ContentDialogAutomationPeer.cs
│   │   ├── ContentDialogService.cs
│   │   ├── Controls/
│   │   │   ├── AccessText/
│   │   │   │   └── AccessText.xaml
│   │   │   ├── Anchor/
│   │   │   │   ├── Anchor.cs
│   │   │   │   └── Anchor.xaml
│   │   │   ├── Arc/
│   │   │   │   └── Arc.cs
│   │   │   ├── AutoSuggestBox/
│   │   │   │   ├── AutoSuggestBox.cs
│   │   │   │   ├── AutoSuggestBox.xaml
│   │   │   │   ├── AutoSuggestBoxQuerySubmittedEventArgs.cs
│   │   │   │   ├── AutoSuggestBoxSuggestionChosenEventArgs.cs
│   │   │   │   ├── AutoSuggestBoxTextChangedEventArgs.cs
│   │   │   │   └── AutoSuggestionBoxTextChangeReason.cs
│   │   │   ├── Badge/
│   │   │   │   ├── Badge.cs
│   │   │   │   └── Badge.xaml
│   │   │   ├── BreadcrumbBar/
│   │   │   │   ├── BreadcrumbBar.cs
│   │   │   │   ├── BreadcrumbBar.xaml
│   │   │   │   ├── BreadcrumbBarItem.cs
│   │   │   │   └── BreadcrumbBarItemClickedEventArgs.cs
│   │   │   ├── Button/
│   │   │   │   ├── Button.cs
│   │   │   │   └── Button.xaml
│   │   │   ├── Calendar/
│   │   │   │   └── Calendar.xaml
│   │   │   ├── CalendarDatePicker/
│   │   │   │   ├── CalendarDatePicker.cs
│   │   │   │   └── CalendarDatePicker.xaml
│   │   │   ├── Card/
│   │   │   │   ├── Card.cs
│   │   │   │   └── Card.xaml
│   │   │   ├── CardAction/
│   │   │   │   ├── CardAction.cs
│   │   │   │   ├── CardAction.xaml
│   │   │   │   └── CardActionAutomationPeer.cs
│   │   │   ├── CardColor/
│   │   │   │   ├── CardColor.cs
│   │   │   │   └── CardColor.xaml
│   │   │   ├── CardControl/
│   │   │   │   ├── CardControl.cs
│   │   │   │   └── CardControl.xaml
│   │   │   ├── CardExpander/
│   │   │   │   ├── CardExpander.cs
│   │   │   │   └── CardExpander.xaml
│   │   │   ├── CheckBox/
│   │   │   │   └── CheckBox.xaml
│   │   │   ├── ClientAreaBorder/
│   │   │   │   └── ClientAreaBorder.cs
│   │   │   ├── ColorPicker/
│   │   │   │   ├── ColorPicker.cs
│   │   │   │   └── ColorPicker.xaml
│   │   │   ├── ComboBox/
│   │   │   │   └── ComboBox.xaml
│   │   │   ├── ContentDialog/
│   │   │   │   ├── ContentDialog.FocusBehavior.cs
│   │   │   │   ├── ContentDialog.cs
│   │   │   │   ├── ContentDialog.xaml
│   │   │   │   ├── ContentDialogButton.cs
│   │   │   │   ├── ContentDialogHost.cs
│   │   │   │   ├── ContentDialogHost.xaml
│   │   │   │   ├── ContentDialogHostBehavior.cs
│   │   │   │   ├── ContentDialogHostController.cs
│   │   │   │   ├── ContentDialogResult.cs
│   │   │   │   └── EventArgs/
│   │   │   │       ├── ContentDialogButtonClickEventArgs.cs
│   │   │   │       ├── ContentDialogClosedEventArgs.cs
│   │   │   │       └── ContentDialogClosingEventArgs.cs
│   │   │   ├── ContextMenu/
│   │   │   │   ├── ContextMenu.xaml
│   │   │   │   ├── ContextMenuLoader.xaml
│   │   │   │   └── ContextMenuLoader.xaml.cs
│   │   │   ├── ControlAppearance.cs
│   │   │   ├── ControlsServices.cs
│   │   │   ├── DataGrid/
│   │   │   │   ├── DataGrid.cs
│   │   │   │   └── DataGrid.xaml
│   │   │   ├── DatePicker/
│   │   │   │   └── DatePicker.xaml
│   │   │   ├── DateTimeHelper.cs
│   │   │   ├── DropDownButton/
│   │   │   │   ├── DropDownButton.cs
│   │   │   │   └── DropDownButton.xaml
│   │   │   ├── DynamicScrollBar/
│   │   │   │   ├── DynamicScrollBar.cs
│   │   │   │   └── DynamicScrollBar.xaml
│   │   │   ├── DynamicScrollViewer/
│   │   │   │   ├── DynamicScrollViewer.cs
│   │   │   │   └── DynamicScrollViewer.xaml
│   │   │   ├── EffectThicknessDecorator.cs
│   │   │   ├── ElementPlacement.cs
│   │   │   ├── EventIdentifier.cs
│   │   │   ├── Expander/
│   │   │   │   └── Expander.xaml
│   │   │   ├── FluentWindow/
│   │   │   │   ├── FluentWindow.cs
│   │   │   │   └── FluentWindow.xaml
│   │   │   ├── Flyout/
│   │   │   │   ├── Flyout.cs
│   │   │   │   └── Flyout.xaml
│   │   │   ├── FontTypography.cs
│   │   │   ├── Frame/
│   │   │   │   └── Frame.xaml
│   │   │   ├── GridView/
│   │   │   │   ├── GridView.cs
│   │   │   │   ├── GridViewColumn.cs
│   │   │   │   ├── GridViewColumnHeader.xaml
│   │   │   │   ├── GridViewHeaderRowIndicator.xaml
│   │   │   │   ├── GridViewHeaderRowPresenter.cs
│   │   │   │   └── GridViewRowPresenter.cs
│   │   │   ├── HyperlinkButton/
│   │   │   │   ├── HyperlinkButton.cs
│   │   │   │   └── HyperlinkButton.xaml
│   │   │   ├── IAppearanceControl.cs
│   │   │   ├── IDpiAwareControl.cs
│   │   │   ├── IIconControl.cs
│   │   │   ├── IThemeControl.cs
│   │   │   ├── IconElement/
│   │   │   │   ├── FontIcon.cs
│   │   │   │   ├── IconElement.cs
│   │   │   │   ├── IconElementConverter.cs
│   │   │   │   ├── IconSourceElement.cs
│   │   │   │   ├── ImageIcon.cs
│   │   │   │   └── SymbolIcon.cs
│   │   │   ├── IconSource/
│   │   │   │   ├── FontIconSource.cs
│   │   │   │   ├── IconSource.cs
│   │   │   │   └── SymbolIconSource.cs
│   │   │   ├── Image/
│   │   │   │   ├── Image.cs
│   │   │   │   └── Image.xaml
│   │   │   ├── InfoBadge/
│   │   │   │   ├── InfoBadge.cs
│   │   │   │   ├── InfoBadge.xaml
│   │   │   │   └── InfoBadgeSeverity.cs
│   │   │   ├── InfoBar/
│   │   │   │   ├── InfoBar.cs
│   │   │   │   ├── InfoBar.xaml
│   │   │   │   └── InfoBarSeverity.cs
│   │   │   ├── ItemRange.cs
│   │   │   ├── ItemsControl/
│   │   │   │   └── ItemsControl.xaml
│   │   │   ├── Label/
│   │   │   │   └── Label.xaml
│   │   │   ├── ListBox/
│   │   │   │   ├── ListBox.xaml
│   │   │   │   └── ListBoxItem.xaml
│   │   │   ├── ListView/
│   │   │   │   ├── ListView.cs
│   │   │   │   ├── ListView.xaml
│   │   │   │   ├── ListViewItem.cs
│   │   │   │   ├── ListViewItem.xaml
│   │   │   │   └── ListViewViewState.cs
│   │   │   ├── LoadingScreen/
│   │   │   │   ├── LoadingScreen.cs
│   │   │   │   └── LoadingScreen.xaml
│   │   │   ├── Menu/
│   │   │   │   ├── Menu.xaml
│   │   │   │   ├── MenuItem.cs
│   │   │   │   ├── MenuItem.xaml
│   │   │   │   ├── MenuLoader.xaml
│   │   │   │   └── MenuLoader.xaml.cs
│   │   │   ├── MessageBox/
│   │   │   │   ├── MessageBox.cs
│   │   │   │   ├── MessageBox.xaml
│   │   │   │   ├── MessageBoxButton.cs
│   │   │   │   └── MessageBoxResult.cs
│   │   │   ├── NavigationView/
│   │   │   │   ├── INavigationView.cs
│   │   │   │   ├── INavigationViewItem.cs
│   │   │   │   ├── NavigatedEventArgs.cs
│   │   │   │   ├── NavigatingCancelEventArgs.cs
│   │   │   │   ├── NavigationCache.cs
│   │   │   │   ├── NavigationCacheMode.cs
│   │   │   │   ├── NavigationLeftFluent.xaml
│   │   │   │   ├── NavigationView.AttachedProperties.cs
│   │   │   │   ├── NavigationView.Base.cs
│   │   │   │   ├── NavigationView.Events.cs
│   │   │   │   ├── NavigationView.Navigation.cs
│   │   │   │   ├── NavigationView.Properties.cs
│   │   │   │   ├── NavigationView.TemplateParts.cs
│   │   │   │   ├── NavigationView.xaml
│   │   │   │   ├── NavigationViewActivator.cs
│   │   │   │   ├── NavigationViewBackButtonVisible.cs
│   │   │   │   ├── NavigationViewBasePaneButtonStyle.xaml
│   │   │   │   ├── NavigationViewBottom.xaml
│   │   │   │   ├── NavigationViewBreadcrumbItem.cs
│   │   │   │   ├── NavigationViewBreadcrumbItem.xaml
│   │   │   │   ├── NavigationViewCompact.xaml
│   │   │   │   ├── NavigationViewConstants.xaml
│   │   │   │   ├── NavigationViewContentPresenter.cs
│   │   │   │   ├── NavigationViewContentPresenter.xaml
│   │   │   │   ├── NavigationViewItem.cs
│   │   │   │   ├── NavigationViewItemAutomationPeer.cs
│   │   │   │   ├── NavigationViewItemDefaultStyle.xaml
│   │   │   │   ├── NavigationViewItemHeader.cs
│   │   │   │   ├── NavigationViewItemHeader.xaml
│   │   │   │   ├── NavigationViewItemSeparator.cs
│   │   │   │   ├── NavigationViewItemSeparator.xaml
│   │   │   │   ├── NavigationViewLeftMinimalCompact.xaml
│   │   │   │   ├── NavigationViewPaneDisplayMode.cs
│   │   │   │   └── NavigationViewTop.xaml
│   │   │   ├── NumberBox/
│   │   │   │   ├── INumberFormatter.cs
│   │   │   │   ├── INumberParser.cs
│   │   │   │   ├── NumberBox.cs
│   │   │   │   ├── NumberBox.xaml
│   │   │   │   ├── NumberBoxSpinButtonPlacementMode.cs
│   │   │   │   ├── NumberBoxValidationMode.cs
│   │   │   │   ├── NumberBoxValueChangedEventArgs.cs
│   │   │   │   └── ValidateNumberFormatter.cs
│   │   │   ├── Page/
│   │   │   │   └── Page.xaml
│   │   │   ├── PassiveScrollViewer.cs
│   │   │   ├── PasswordBox/
│   │   │   │   ├── PasswordBox.cs
│   │   │   │   ├── PasswordBox.xaml
│   │   │   │   └── PasswordHelper.cs
│   │   │   ├── ProgressBar/
│   │   │   │   └── ProgressBar.xaml
│   │   │   ├── ProgressRing/
│   │   │   │   ├── ProgressRing.cs
│   │   │   │   └── ProgressRing.xaml
│   │   │   ├── RadioButton/
│   │   │   │   └── RadioButton.xaml
│   │   │   ├── RatingControl/
│   │   │   │   ├── RatingControl.cs
│   │   │   │   └── RatingControl.xaml
│   │   │   ├── RichTextBox/
│   │   │   │   ├── RichTextBox.cs
│   │   │   │   └── RichTextBox.xaml
│   │   │   ├── ScrollBar/
│   │   │   │   └── ScrollBar.xaml
│   │   │   ├── ScrollDirection.cs
│   │   │   ├── ScrollViewer/
│   │   │   │   └── ScrollViewer.xaml
│   │   │   ├── Separator/
│   │   │   │   └── Separator.xaml
│   │   │   ├── Slider/
│   │   │   │   └── Slider.xaml
│   │   │   ├── Snackbar/
│   │   │   │   ├── Snackbar.cs
│   │   │   │   ├── Snackbar.xaml
│   │   │   │   └── SnackbarPresenter.cs
│   │   │   ├── SpacingMode.cs
│   │   │   ├── SplitButton/
│   │   │   │   ├── SplitButton.cs
│   │   │   │   └── SplitButton.xaml
│   │   │   ├── StatusBar/
│   │   │   │   └── StatusBar.xaml
│   │   │   ├── SymbolFilled.cs
│   │   │   ├── SymbolGlyph.cs
│   │   │   ├── SymbolRegular.cs
│   │   │   ├── TabControl/
│   │   │   │   └── TabControl.xaml
│   │   │   ├── TabView/
│   │   │   │   ├── TabView.cs
│   │   │   │   └── TabViewItem.cs
│   │   │   ├── TextBlock/
│   │   │   │   ├── TextBlock.cs
│   │   │   │   ├── TextBlock.xaml
│   │   │   │   └── TextBlockMetadata.cs
│   │   │   ├── TextBox/
│   │   │   │   ├── TextBox.cs
│   │   │   │   └── TextBox.xaml
│   │   │   ├── TextColor.cs
│   │   │   ├── ThumbRate/
│   │   │   │   ├── ThumbRate.cs
│   │   │   │   ├── ThumbRate.xaml
│   │   │   │   └── ThumbRateState.cs
│   │   │   ├── TimePicker/
│   │   │   │   ├── ClockIdentifier.cs
│   │   │   │   ├── TimePicker.cs
│   │   │   │   └── TimePicker.xaml
│   │   │   ├── TitleBar/
│   │   │   │   ├── HwndProcEventArgs.cs
│   │   │   │   ├── TitleBar.WindowResize.cs
│   │   │   │   ├── TitleBar.cs
│   │   │   │   ├── TitleBar.xaml
│   │   │   │   ├── TitleBarButton.cs
│   │   │   │   └── TitleBarButtonType.cs
│   │   │   ├── ToggleButton/
│   │   │   │   └── ToggleButton.xaml
│   │   │   ├── ToggleSwitch/
│   │   │   │   ├── ToggleSwitch.cs
│   │   │   │   └── ToggleSwitch.xaml
│   │   │   ├── ToolBar/
│   │   │   │   └── ToolBar.xaml
│   │   │   ├── ToolTip/
│   │   │   │   └── ToolTip.xaml
│   │   │   ├── TreeGrid/
│   │   │   │   ├── TreeGrid.cs
│   │   │   │   ├── TreeGrid.xaml
│   │   │   │   ├── TreeGridHeader.cs
│   │   │   │   └── TreeGridItem.cs
│   │   │   ├── TreeView/
│   │   │   │   ├── TreeView.xaml
│   │   │   │   ├── TreeViewItem.cs
│   │   │   │   └── TreeViewItem.xaml
│   │   │   ├── TypedEventHandler.cs
│   │   │   ├── VirtualizingGridView/
│   │   │   │   ├── VirtualizingGridView.cs
│   │   │   │   └── VirtualizingGridView.xaml
│   │   │   ├── VirtualizingItemsControl/
│   │   │   │   ├── VirtualizingItemsControl.cs
│   │   │   │   └── VirtualizingItemsControl.xaml
│   │   │   ├── VirtualizingUniformGrid/
│   │   │   │   └── VirtualizingUniformGrid.cs
│   │   │   ├── VirtualizingWrapPanel/
│   │   │   │   ├── VirtualizingPanelBase.cs
│   │   │   │   ├── VirtualizingWrapPanel.cs
│   │   │   │   └── VirtualizingWrapPanel.xaml
│   │   │   └── Window/
│   │   │       ├── Window.xaml
│   │   │       ├── WindowBackdrop.cs
│   │   │       ├── WindowBackdropType.cs
│   │   │       └── WindowCornerPreference.cs
│   │   ├── Converters/
│   │   │   ├── AnimationFactorToValueConverter.cs
│   │   │   ├── BackButtonVisibilityToVisibilityConverter.cs
│   │   │   ├── BoolToVisibilityConverter.cs
│   │   │   ├── BrushToColorConverter.cs
│   │   │   ├── ClipConverter.cs
│   │   │   ├── ContentDialogButtonEnumToBoolConverter.cs
│   │   │   ├── CornerRadiusSplitConverter.cs
│   │   │   ├── DatePickerButtonPaddingConverter.cs
│   │   │   ├── EnumToBoolConverter.cs
│   │   │   ├── FallbackBrushConverter.cs
│   │   │   ├── IconSourceElementConverter.cs
│   │   │   ├── LeftSplitCornerRadiusConverter.cs
│   │   │   ├── LeftSplitThicknessConverter.cs
│   │   │   ├── NullToVisibilityConverter.cs
│   │   │   ├── ProgressThicknessConverter.cs
│   │   │   ├── RightSplitCornerRadiusConverter.cs
│   │   │   ├── RightSplitThicknessConverter.cs
│   │   │   └── TextToAsteriskConverter.cs
│   │   ├── Designer/
│   │   │   └── DesignerHelper.cs
│   │   ├── Extensions/
│   │   │   ├── ColorExtensions.cs
│   │   │   ├── ContentDialogServiceExtensions.cs
│   │   │   ├── ContextMenuExtensions.cs
│   │   │   ├── DateTimeExtensions.cs
│   │   │   ├── FrameExtensions.cs
│   │   │   ├── NavigationServiceExtensions.cs
│   │   │   ├── PInvokeExtensions.cs
│   │   │   ├── SnackbarServiceExtensions.cs
│   │   │   ├── StringExtensions.cs
│   │   │   ├── SymbolExtensions.cs
│   │   │   ├── TextBlockFontTypographyExtensions.cs
│   │   │   ├── TextColorExtensions.cs
│   │   │   ├── UiElementExtensions.cs
│   │   │   └── UriExtensions.cs
│   │   ├── GlobalUsings.cs
│   │   ├── Hardware/
│   │   │   ├── DisplayDpi.cs
│   │   │   ├── DpiHelper.cs
│   │   │   ├── HardwareAcceleration.cs
│   │   │   └── RenderingTier.cs
│   │   ├── IContentDialogService.cs
│   │   ├── INavigationService.cs
│   │   ├── INavigationWindow.cs
│   │   ├── ISnackbarService.cs
│   │   ├── ITaskBarService.cs
│   │   ├── IThemeService.cs
│   │   ├── Input/
│   │   │   ├── IRelayCommand.cs
│   │   │   ├── IRelayCommand{T}.cs
│   │   │   └── RelayCommand{T}.cs
│   │   ├── Interop/
│   │   │   ├── PInvoke.cs
│   │   │   ├── UnsafeNativeMethods.cs
│   │   │   └── UnsafeReflection.cs
│   │   ├── Markup/
│   │   │   ├── ControlsDictionary.cs
│   │   │   ├── Design.cs
│   │   │   ├── FontIconExtension.cs
│   │   │   ├── ImageIconExtension.cs
│   │   │   ├── SymbolIconExtension.cs
│   │   │   ├── ThemeResource.cs
│   │   │   ├── ThemeResourceExtension.cs
│   │   │   └── ThemesDictionary.cs
│   │   ├── NativeMethods.txt
│   │   ├── NavigationService.cs
│   │   ├── Properties/
│   │   │   └── AssemblyInfo.cs
│   │   ├── Resources/
│   │   │   ├── Accent.xaml
│   │   │   ├── DefaultContextMenu.xaml
│   │   │   ├── DefaultFocusVisualStyle.xaml
│   │   │   ├── DefaultTextBoxScrollViewerStyle.xaml
│   │   │   ├── Fonts.xaml
│   │   │   ├── Palette.xaml
│   │   │   ├── StaticColors.xaml
│   │   │   ├── Theme/
│   │   │   │   ├── Dark.xaml
│   │   │   │   ├── HC1.xaml
│   │   │   │   ├── HC2.xaml
│   │   │   │   ├── HCBlack.xaml
│   │   │   │   ├── HCWhite.xaml
│   │   │   │   └── Light.xaml
│   │   │   ├── Typography.xaml
│   │   │   ├── Variables.xaml
│   │   │   └── Wpf.Ui.xaml
│   │   ├── SimpleContentDialogCreateOptions.cs
│   │   ├── SnackbarService.cs
│   │   ├── TaskBarService.cs
│   │   ├── Taskbar/
│   │   │   ├── TaskbarProgress.cs
│   │   │   └── TaskbarProgressState.cs
│   │   ├── ThemeService.cs
│   │   ├── UiApplication.cs
│   │   ├── UiAssembly.cs
│   │   ├── VisualStudioToolsManifest.xml
│   │   ├── Win32/
│   │   │   └── Utilities.cs
│   │   └── Wpf.Ui.csproj
│   ├── Wpf.Ui.Abstractions/
│   │   ├── Controls/
│   │   │   ├── INavigableView.cs
│   │   │   ├── INavigationAware.cs
│   │   │   └── NavigationAware.cs
│   │   ├── GlobalUsings.cs
│   │   ├── INavigationViewPageProvider.cs
│   │   ├── NavigationException.cs
│   │   ├── NavigationViewPageProviderExtensions.cs
│   │   └── Wpf.Ui.Abstractions.csproj
│   ├── Wpf.Ui.DependencyInjection/
│   │   ├── DependencyInjectionNavigationViewPageProvider.cs
│   │   ├── GlobalUsings.cs
│   │   ├── ServiceCollectionExtensions.cs
│   │   └── Wpf.Ui.DependencyInjection.csproj
│   ├── Wpf.Ui.Extension/
│   │   ├── Wpf.Ui.Extension.csproj
│   │   ├── license.txt
│   │   └── source.extension.vsixmanifest
│   ├── Wpf.Ui.Extension.Template.Blank/
│   │   ├── App.xaml
│   │   ├── App.xaml.cs
│   │   ├── AssemblyInfo.cs
│   │   ├── Wpf.Ui.Blank.csproj
│   │   ├── Wpf.Ui.Blank.vstemplate
│   │   ├── Wpf.Ui.Extension.Template.Blank.csproj
│   │   └── app.manifest
│   ├── Wpf.Ui.Extension.Template.Compact/
│   │   ├── App.xaml
│   │   ├── App.xaml.cs
│   │   ├── AssemblyInfo.cs
│   │   ├── Helpers/
│   │   │   └── EnumToBooleanConverter.cs
│   │   ├── Models/
│   │   │   ├── AppConfig.cs
│   │   │   └── DataColor.cs
│   │   ├── Resources/
│   │   │   └── Translations.cs
│   │   ├── Services/
│   │   │   └── ApplicationHostService.cs
│   │   ├── Usings.cs
│   │   ├── ViewModels/
│   │   │   ├── Pages/
│   │   │   │   ├── DashboardViewModel.cs
│   │   │   │   ├── DataViewModel.cs
│   │   │   │   └── SettingsViewModel.cs
│   │   │   └── Windows/
│   │   │       └── MainWindowViewModel.cs
│   │   ├── Views/
│   │   │   ├── Pages/
│   │   │   │   ├── DashboardPage.xaml
│   │   │   │   ├── DashboardPage.xaml.cs
│   │   │   │   ├── DataPage.xaml
│   │   │   │   ├── DataPage.xaml.cs
│   │   │   │   ├── SettingsPage.xaml
│   │   │   │   └── SettingsPage.xaml.cs
│   │   │   └── Windows/
│   │   │       ├── MainWindow.xaml
│   │   │       └── MainWindow.xaml.cs
│   │   ├── Wpf.Ui.Compact.csproj
│   │   ├── Wpf.Ui.Compact.vstemplate
│   │   ├── Wpf.Ui.Extension.Template.Compact.csproj
│   │   └── app.manifest
│   ├── Wpf.Ui.Extension.Template.Fluent/
│   │   ├── App.xaml
│   │   ├── App.xaml.cs
│   │   ├── AssemblyInfo.cs
│   │   ├── Helpers/
│   │   │   └── EnumToBooleanConverter.cs
│   │   ├── Models/
│   │   │   ├── AppConfig.cs
│   │   │   └── DataColor.cs
│   │   ├── Resources/
│   │   │   └── Translations.cs
│   │   ├── Services/
│   │   │   └── ApplicationHostService.cs
│   │   ├── Usings.cs
│   │   ├── ViewModels/
│   │   │   ├── Pages/
│   │   │   │   ├── DashboardViewModel.cs
│   │   │   │   ├── DataViewModel.cs
│   │   │   │   └── SettingsViewModel.cs
│   │   │   └── Windows/
│   │   │       └── MainWindowViewModel.cs
│   │   ├── Views/
│   │   │   ├── Pages/
│   │   │   │   ├── DashboardPage.xaml
│   │   │   │   ├── DashboardPage.xaml.cs
│   │   │   │   ├── DataPage.xaml
│   │   │   │   ├── DataPage.xaml.cs
│   │   │   │   ├── SettingsPage.xaml
│   │   │   │   └── SettingsPage.xaml.cs
│   │   │   └── Windows/
│   │   │       ├── MainWindow.xaml
│   │   │       └── MainWindow.xaml.cs
│   │   ├── Wpf.Ui.Extension.Template.Fluent.csproj
│   │   ├── Wpf.Ui.Fluent.csproj
│   │   ├── Wpf.Ui.Fluent.vstemplate
│   │   └── app.manifest
│   ├── Wpf.Ui.FlaUI/
│   │   ├── AutoSuggestBox.cs
│   │   ├── GlobalUsings.cs
│   │   └── Wpf.Ui.FlaUI.csproj
│   ├── Wpf.Ui.FontMapper/
│   │   ├── FontSource.cs
│   │   ├── GitTag.cs
│   │   ├── GlobalUsings.cs
│   │   ├── License - Fluent System Icons.txt
│   │   ├── Program.cs
│   │   └── Wpf.Ui.FontMapper.csproj
│   ├── Wpf.Ui.Gallery/
│   │   ├── App.xaml
│   │   ├── App.xaml.cs
│   │   ├── AssemblyInfo.cs
│   │   ├── Assets/
│   │   │   ├── Monaco/
│   │   │   │   ├── index.html
│   │   │   │   └── min/
│   │   │   │       └── vs/
│   │   │   │           ├── base/
│   │   │   │           │   ├── common/
│   │   │   │           │   │   └── worker/
│   │   │   │           │   │       ├── simpleWorker.nls.de.js
│   │   │   │           │   │       ├── simpleWorker.nls.es.js
│   │   │   │           │   │       ├── simpleWorker.nls.fr.js
│   │   │   │           │   │       ├── simpleWorker.nls.it.js
│   │   │   │           │   │       ├── simpleWorker.nls.ja.js
│   │   │   │           │   │       ├── simpleWorker.nls.js
│   │   │   │           │   │       ├── simpleWorker.nls.ko.js
│   │   │   │           │   │       ├── simpleWorker.nls.ru.js
│   │   │   │           │   │       ├── simpleWorker.nls.zh-cn.js
│   │   │   │           │   │       └── simpleWorker.nls.zh-tw.js
│   │   │   │           │   └── worker/
│   │   │   │           │       └── workerMain.js
│   │   │   │           ├── basic-languages/
│   │   │   │           │   ├── abap/
│   │   │   │           │   │   └── abap.js
│   │   │   │           │   ├── apex/
│   │   │   │           │   │   └── apex.js
│   │   │   │           │   ├── azcli/
│   │   │   │           │   │   └── azcli.js
│   │   │   │           │   ├── bat/
│   │   │   │           │   │   └── bat.js
│   │   │   │           │   ├── bicep/
│   │   │   │           │   │   └── bicep.js
│   │   │   │           │   ├── cameligo/
│   │   │   │           │   │   └── cameligo.js
│   │   │   │           │   ├── clojure/
│   │   │   │           │   │   └── clojure.js
│   │   │   │           │   ├── coffee/
│   │   │   │           │   │   └── coffee.js
│   │   │   │           │   ├── cpp/
│   │   │   │           │   │   └── cpp.js
│   │   │   │           │   ├── csharp/
│   │   │   │           │   │   └── csharp.js
│   │   │   │           │   ├── csp/
│   │   │   │           │   │   └── csp.js
│   │   │   │           │   ├── css/
│   │   │   │           │   │   └── css.js
│   │   │   │           │   ├── cypher/
│   │   │   │           │   │   └── cypher.js
│   │   │   │           │   ├── dart/
│   │   │   │           │   │   └── dart.js
│   │   │   │           │   ├── dockerfile/
│   │   │   │           │   │   └── dockerfile.js
│   │   │   │           │   ├── ecl/
│   │   │   │           │   │   └── ecl.js
│   │   │   │           │   ├── elixir/
│   │   │   │           │   │   └── elixir.js
│   │   │   │           │   ├── flow9/
│   │   │   │           │   │   └── flow9.js
│   │   │   │           │   ├── freemarker2/
│   │   │   │           │   │   └── freemarker2.js
│   │   │   │           │   ├── fsharp/
│   │   │   │           │   │   └── fsharp.js
│   │   │   │           │   ├── go/
│   │   │   │           │   │   └── go.js
│   │   │   │           │   ├── graphql/
│   │   │   │           │   │   └── graphql.js
│   │   │   │           │   ├── handlebars/
│   │   │   │           │   │   └── handlebars.js
│   │   │   │           │   ├── hcl/
│   │   │   │           │   │   └── hcl.js
│   │   │   │           │   ├── html/
│   │   │   │           │   │   └── html.js
│   │   │   │           │   ├── ini/
│   │   │   │           │   │   └── ini.js
│   │   │   │           │   ├── java/
│   │   │   │           │   │   └── java.js
│   │   │   │           │   ├── javascript/
│   │   │   │           │   │   └── javascript.js
│   │   │   │           │   ├── julia/
│   │   │   │           │   │   └── julia.js
│   │   │   │           │   ├── kotlin/
│   │   │   │           │   │   └── kotlin.js
│   │   │   │           │   ├── less/
│   │   │   │           │   │   └── less.js
│   │   │   │           │   ├── lexon/
│   │   │   │           │   │   └── lexon.js
│   │   │   │           │   ├── liquid/
│   │   │   │           │   │   └── liquid.js
│   │   │   │           │   ├── lua/
│   │   │   │           │   │   └── lua.js
│   │   │   │           │   ├── m3/
│   │   │   │           │   │   └── m3.js
│   │   │   │           │   ├── markdown/
│   │   │   │           │   │   └── markdown.js
│   │   │   │           │   ├── mdx/
│   │   │   │           │   │   └── mdx.js
│   │   │   │           │   ├── mips/
│   │   │   │           │   │   └── mips.js
│   │   │   │           │   ├── msdax/
│   │   │   │           │   │   └── msdax.js
│   │   │   │           │   ├── mysql/
│   │   │   │           │   │   └── mysql.js
│   │   │   │           │   ├── objective-c/
│   │   │   │           │   │   └── objective-c.js
│   │   │   │           │   ├── pascal/
│   │   │   │           │   │   └── pascal.js
│   │   │   │           │   ├── pascaligo/
│   │   │   │           │   │   └── pascaligo.js
│   │   │   │           │   ├── perl/
│   │   │   │           │   │   └── perl.js
│   │   │   │           │   ├── pgsql/
│   │   │   │           │   │   └── pgsql.js
│   │   │   │           │   ├── php/
│   │   │   │           │   │   └── php.js
│   │   │   │           │   ├── pla/
│   │   │   │           │   │   └── pla.js
│   │   │   │           │   ├── postiats/
│   │   │   │           │   │   └── postiats.js
│   │   │   │           │   ├── powerquery/
│   │   │   │           │   │   └── powerquery.js
│   │   │   │           │   ├── powershell/
│   │   │   │           │   │   └── powershell.js
│   │   │   │           │   ├── protobuf/
│   │   │   │           │   │   └── protobuf.js
│   │   │   │           │   ├── pug/
│   │   │   │           │   │   └── pug.js
│   │   │   │           │   ├── python/
│   │   │   │           │   │   └── python.js
│   │   │   │           │   ├── qsharp/
│   │   │   │           │   │   └── qsharp.js
│   │   │   │           │   ├── r/
│   │   │   │           │   │   └── r.js
│   │   │   │           │   ├── razor/
│   │   │   │           │   │   └── razor.js
│   │   │   │           │   ├── redis/
│   │   │   │           │   │   └── redis.js
│   │   │   │           │   ├── redshift/
│   │   │   │           │   │   └── redshift.js
│   │   │   │           │   ├── restructuredtext/
│   │   │   │           │   │   └── restructuredtext.js
│   │   │   │           │   ├── ruby/
│   │   │   │           │   │   └── ruby.js
│   │   │   │           │   ├── rust/
│   │   │   │           │   │   └── rust.js
│   │   │   │           │   ├── sb/
│   │   │   │           │   │   └── sb.js
│   │   │   │           │   ├── scala/
│   │   │   │           │   │   └── scala.js
│   │   │   │           │   ├── scheme/
│   │   │   │           │   │   └── scheme.js
│   │   │   │           │   ├── scss/
│   │   │   │           │   │   └── scss.js
│   │   │   │           │   ├── shell/
│   │   │   │           │   │   └── shell.js
│   │   │   │           │   ├── solidity/
│   │   │   │           │   │   └── solidity.js
│   │   │   │           │   ├── sophia/
│   │   │   │           │   │   └── sophia.js
│   │   │   │           │   ├── sparql/
│   │   │   │           │   │   └── sparql.js
│   │   │   │           │   ├── sql/
│   │   │   │           │   │   └── sql.js
│   │   │   │           │   ├── st/
│   │   │   │           │   │   └── st.js
│   │   │   │           │   ├── swift/
│   │   │   │           │   │   └── swift.js
│   │   │   │           │   ├── systemverilog/
│   │   │   │           │   │   └── systemverilog.js
│   │   │   │           │   ├── tcl/
│   │   │   │           │   │   └── tcl.js
│   │   │   │           │   ├── twig/
│   │   │   │           │   │   └── twig.js
│   │   │   │           │   ├── typescript/
│   │   │   │           │   │   └── typescript.js
│   │   │   │           │   ├── vb/
│   │   │   │           │   │   └── vb.js
│   │   │   │           │   ├── wgsl/
│   │   │   │           │   │   └── wgsl.js
│   │   │   │           │   ├── xml/
│   │   │   │           │   │   └── xml.js
│   │   │   │           │   └── yaml/
│   │   │   │           │       └── yaml.js
│   │   │   │           ├── editor/
│   │   │   │           │   ├── editor.main.css
│   │   │   │           │   ├── editor.main.js
│   │   │   │           │   ├── editor.main.nls.de.js
│   │   │   │           │   ├── editor.main.nls.es.js
│   │   │   │           │   ├── editor.main.nls.fr.js
│   │   │   │           │   ├── editor.main.nls.it.js
│   │   │   │           │   ├── editor.main.nls.ja.js
│   │   │   │           │   ├── editor.main.nls.js
│   │   │   │           │   ├── editor.main.nls.ko.js
│   │   │   │           │   ├── editor.main.nls.ru.js
│   │   │   │           │   ├── editor.main.nls.zh-cn.js
│   │   │   │           │   └── editor.main.nls.zh-tw.js
│   │   │   │           ├── language/
│   │   │   │           │   ├── css/
│   │   │   │           │   │   ├── cssMode.js
│   │   │   │           │   │   └── cssWorker.js
│   │   │   │           │   ├── html/
│   │   │   │           │   │   ├── htmlMode.js
│   │   │   │           │   │   └── htmlWorker.js
│   │   │   │           │   ├── json/
│   │   │   │           │   │   ├── jsonMode.js
│   │   │   │           │   │   └── jsonWorker.js
│   │   │   │           │   └── typescript/
│   │   │   │           │       ├── tsMode.js
│   │   │   │           │       └── tsWorker.js
│   │   │   │           └── loader.js
│   │   │   └── WinUiGallery/
│   │   │       └── LICENSE
│   │   ├── CodeSamples/
│   │   │   └── Typography/
│   │   │       └── TypographySample_xaml.txt
│   │   ├── Controllers/
│   │   │   └── MonacoController.cs
│   │   ├── Controls/
│   │   │   ├── ControlExample.xaml
│   │   │   ├── ControlExample.xaml.cs
│   │   │   ├── GalleryNavigationPresenter.xaml
│   │   │   ├── GalleryNavigationPresenter.xaml.cs
│   │   │   ├── PageControlDocumentation.xaml
│   │   │   ├── PageControlDocumentation.xaml.cs
│   │   │   ├── TermsOfUseContentDialog.xaml
│   │   │   ├── TermsOfUseContentDialog.xaml.cs
│   │   │   ├── TypographyControl.xaml
│   │   │   └── TypographyControl.xaml.cs
│   │   ├── ControlsLookup/
│   │   │   ├── ControlPages.cs
│   │   │   ├── GalleryPage.cs
│   │   │   └── GalleryPageAttribute.cs
│   │   ├── DependencyModel/
│   │   │   └── ServiceCollectionExtensions.cs
│   │   ├── Effects/
│   │   │   ├── Snowflake.cs
│   │   │   └── SnowflakeEffect.cs
│   │   ├── GalleryAssembly.cs
│   │   ├── GlobalUsings.cs
│   │   ├── Helpers/
│   │   │   ├── EnumToBooleanConverter.cs
│   │   │   ├── NameToPageTypeConverter.cs
│   │   │   ├── NullToVisibilityConverter.cs
│   │   │   ├── PaneDisplayModeToIndexConverter.cs
│   │   │   └── ThemeToIndexConverter.cs
│   │   ├── License - Images.txt
│   │   ├── License - Monaco.txt
│   │   ├── Models/
│   │   │   ├── DisplayableIcon.cs
│   │   │   ├── Folder.cs
│   │   │   ├── Monaco/
│   │   │   │   ├── MonacoLanguage.cs
│   │   │   │   └── MonacoTheme.cs
│   │   │   ├── NavigationCard.cs
│   │   │   ├── Person.cs
│   │   │   ├── Product.cs
│   │   │   ├── Unit.cs
│   │   │   └── WindowCard.cs
│   │   ├── Resources/
│   │   │   ├── Translations.cs
│   │   │   ├── Translations.pl-PL.Designer.cs
│   │   │   └── Translations.pl-PL.resx
│   │   ├── Services/
│   │   │   ├── ApplicationHostService.cs
│   │   │   ├── Contracts/
│   │   │   │   └── IWindow.cs
│   │   │   └── WindowsProviderService.cs
│   │   ├── ViewModels/
│   │   │   ├── Pages/
│   │   │   │   ├── AllControlsViewModel.cs
│   │   │   │   ├── BasicInput/
│   │   │   │   │   ├── AnchorViewModel.cs
│   │   │   │   │   ├── BasicInputViewModel.cs
│   │   │   │   │   ├── ButtonViewModel.cs
│   │   │   │   │   ├── CheckBoxViewModel.cs
│   │   │   │   │   ├── ComboBoxViewModel.cs
│   │   │   │   │   ├── DropDownButtonViewModel.cs
│   │   │   │   │   ├── HyperlinkButtonViewModel.cs
│   │   │   │   │   ├── RadioButtonViewModel.cs
│   │   │   │   │   ├── RatingViewModel.cs
│   │   │   │   │   ├── SliderViewModel.cs
│   │   │   │   │   ├── SplitButtonViewModel.cs
│   │   │   │   │   ├── ThumbRateViewModel.cs
│   │   │   │   │   ├── ToggleButtonViewModel.cs
│   │   │   │   │   └── ToggleSwitchViewModel.cs
│   │   │   │   ├── Collections/
│   │   │   │   │   ├── CollectionsViewModel.cs
│   │   │   │   │   ├── DataGridViewModel.cs
│   │   │   │   │   ├── ListBoxViewModel.cs
│   │   │   │   │   ├── ListViewViewModel.cs
│   │   │   │   │   ├── TreeListViewModel.cs
│   │   │   │   │   └── TreeViewViewModel.cs
│   │   │   │   ├── DashboardViewModel.cs
│   │   │   │   ├── DateAndTime/
│   │   │   │   │   ├── CalendarDatePickerViewModel.cs
│   │   │   │   │   ├── CalendarViewModel.cs
│   │   │   │   │   ├── DateAndTimeViewModel.cs
│   │   │   │   │   ├── DatePickerViewModel.cs
│   │   │   │   │   └── TimePickerViewModel.cs
│   │   │   │   ├── DesignGuidance/
│   │   │   │   │   ├── ColorsViewModel.cs
│   │   │   │   │   ├── IconsViewModel.cs
│   │   │   │   │   └── TypographyViewModel.cs
│   │   │   │   ├── DialogsAndFlyouts/
│   │   │   │   │   ├── ContentDialogViewModel.cs
│   │   │   │   │   ├── DialogsAndFlyoutsViewModel.cs
│   │   │   │   │   ├── FlyoutViewModel.cs
│   │   │   │   │   ├── MessageBoxViewModel.cs
│   │   │   │   │   └── SnackbarViewModel.cs
│   │   │   │   ├── Layout/
│   │   │   │   │   ├── CardActionViewModel.cs
│   │   │   │   │   ├── CardControlViewModel.cs
│   │   │   │   │   ├── ExpanderViewModel.cs
│   │   │   │   │   └── LayoutViewModel.cs
│   │   │   │   ├── Media/
│   │   │   │   │   ├── CanvasViewModel.cs
│   │   │   │   │   ├── ImageViewModel.cs
│   │   │   │   │   ├── MediaViewModel.cs
│   │   │   │   │   ├── WebBrowserViewModel.cs
│   │   │   │   │   └── WebViewViewModel.cs
│   │   │   │   ├── Navigation/
│   │   │   │   │   ├── BreadcrumbBarViewModel.cs
│   │   │   │   │   ├── MenuViewModel.cs
│   │   │   │   │   ├── MultilevelNavigationSample.cs
│   │   │   │   │   ├── NavigationViewModel.cs
│   │   │   │   │   ├── NavigationViewViewModel.cs
│   │   │   │   │   ├── TabControlViewModel.cs
│   │   │   │   │   └── TabViewViewModel.cs
│   │   │   │   ├── OpSystem/
│   │   │   │   │   ├── ClipboardViewModel.cs
│   │   │   │   │   ├── FilePickerViewModel.cs
│   │   │   │   │   └── OpSystemViewModel.cs
│   │   │   │   ├── SettingsViewModel.cs
│   │   │   │   ├── StatusAndInfo/
│   │   │   │   │   ├── InfoBadgeViewModel.cs
│   │   │   │   │   ├── InfoBarViewModel.cs
│   │   │   │   │   ├── ProgressBarViewModel.cs
│   │   │   │   │   ├── ProgressRingViewModel.cs
│   │   │   │   │   ├── StatusAndInfoViewModel.cs
│   │   │   │   │   └── ToolTipViewModel.cs
│   │   │   │   ├── Text/
│   │   │   │   │   ├── AutoSuggestBoxViewModel.cs
│   │   │   │   │   ├── LabelViewModel.cs
│   │   │   │   │   ├── NumberBoxViewModel.cs
│   │   │   │   │   ├── PasswordBoxViewModel.cs
│   │   │   │   │   ├── RichTextBoxViewModel.cs
│   │   │   │   │   ├── TextBlockViewModel.cs
│   │   │   │   │   ├── TextBoxViewModel.cs
│   │   │   │   │   └── TextViewModel.cs
│   │   │   │   └── Windows/
│   │   │   │       └── WindowsViewModel.cs
│   │   │   ├── ViewModel.cs
│   │   │   └── Windows/
│   │   │       ├── EditorWindowViewModel.cs
│   │   │       ├── MainWindowViewModel.cs
│   │   │       ├── MonacoWindowViewModel.cs
│   │   │       └── SandboxWindowViewModel.cs
│   │   ├── Views/
│   │   │   ├── Pages/
│   │   │   │   ├── AllControlsPage.xaml
│   │   │   │   ├── AllControlsPage.xaml.cs
│   │   │   │   ├── BasicInput/
│   │   │   │   │   ├── AnchorPage.xaml
│   │   │   │   │   ├── AnchorPage.xaml.cs
│   │   │   │   │   ├── BasicInputPage.xaml
│   │   │   │   │   ├── BasicInputPage.xaml.cs
│   │   │   │   │   ├── ButtonPage.xaml
│   │   │   │   │   ├── ButtonPage.xaml.cs
│   │   │   │   │   ├── CheckBoxPage.xaml
│   │   │   │   │   ├── CheckBoxPage.xaml.cs
│   │   │   │   │   ├── ComboBoxPage.xaml
│   │   │   │   │   ├── ComboBoxPage.xaml.cs
│   │   │   │   │   ├── DropDownButtonPage.xaml
│   │   │   │   │   ├── DropDownButtonPage.xaml.cs
│   │   │   │   │   ├── HyperlinkButtonPage.xaml
│   │   │   │   │   ├── HyperlinkButtonPage.xaml.cs
│   │   │   │   │   ├── RadioButtonPage.xaml
│   │   │   │   │   ├── RadioButtonPage.xaml.cs
│   │   │   │   │   ├── RatingPage.xaml
│   │   │   │   │   ├── RatingPage.xaml.cs
│   │   │   │   │   ├── SliderPage.xaml
│   │   │   │   │   ├── SliderPage.xaml.cs
│   │   │   │   │   ├── SplitButtonPage.xaml
│   │   │   │   │   ├── SplitButtonPage.xaml.cs
│   │   │   │   │   ├── ThumbRatePage.xaml
│   │   │   │   │   ├── ThumbRatePage.xaml.cs
│   │   │   │   │   ├── ToggleButtonPage.xaml
│   │   │   │   │   ├── ToggleButtonPage.xaml.cs
│   │   │   │   │   ├── ToggleSwitchPage.xaml
│   │   │   │   │   └── ToggleSwitchPage.xaml.cs
│   │   │   │   ├── Collections/
│   │   │   │   │   ├── CollectionsPage.xaml
│   │   │   │   │   ├── CollectionsPage.xaml.cs
│   │   │   │   │   ├── DataGridPage.xaml
│   │   │   │   │   ├── DataGridPage.xaml.cs
│   │   │   │   │   ├── ListBoxPage.xaml
│   │   │   │   │   ├── ListBoxPage.xaml.cs
│   │   │   │   │   ├── ListViewPage.xaml
│   │   │   │   │   ├── ListViewPage.xaml.cs
│   │   │   │   │   ├── TreeListPage.xaml
│   │   │   │   │   ├── TreeListPage.xaml.cs
│   │   │   │   │   ├── TreeViewPage.xaml
│   │   │   │   │   └── TreeViewPage.xaml.cs
│   │   │   │   ├── DashboardPage.xaml
│   │   │   │   ├── DashboardPage.xaml.cs
│   │   │   │   ├── DateAndTime/
│   │   │   │   │   ├── CalendarDatePickerPage.xaml
│   │   │   │   │   ├── CalendarDatePickerPage.xaml.cs
│   │   │   │   │   ├── CalendarPage.xaml
│   │   │   │   │   ├── CalendarPage.xaml.cs
│   │   │   │   │   ├── DateAndTimePage.xaml
│   │   │   │   │   ├── DateAndTimePage.xaml.cs
│   │   │   │   │   ├── DatePickerPage.xaml
│   │   │   │   │   ├── DatePickerPage.xaml.cs
│   │   │   │   │   ├── TimePickerPage.xaml
│   │   │   │   │   └── TimePickerPage.xaml.cs
│   │   │   │   ├── DesignGuidance/
│   │   │   │   │   ├── ColorsPage.xaml
│   │   │   │   │   ├── ColorsPage.xaml.cs
│   │   │   │   │   ├── IconsPage.xaml
│   │   │   │   │   ├── IconsPage.xaml.cs
│   │   │   │   │   ├── TypographyPage.xaml
│   │   │   │   │   └── TypographyPage.xaml.cs
│   │   │   │   ├── DialogsAndFlyouts/
│   │   │   │   │   ├── ContentDialogPage.xaml
│   │   │   │   │   ├── ContentDialogPage.xaml.cs
│   │   │   │   │   ├── DialogsAndFlyoutsPage.xaml
│   │   │   │   │   ├── DialogsAndFlyoutsPage.xaml.cs
│   │   │   │   │   ├── FlyoutPage.xaml
│   │   │   │   │   ├── FlyoutPage.xaml.cs
│   │   │   │   │   ├── MessageBoxPage.xaml
│   │   │   │   │   ├── MessageBoxPage.xaml.cs
│   │   │   │   │   ├── SnackbarPage.xaml
│   │   │   │   │   └── SnackbarPage.xaml.cs
│   │   │   │   ├── Layout/
│   │   │   │   │   ├── CardActionPage.xaml
│   │   │   │   │   ├── CardActionPage.xaml.cs
│   │   │   │   │   ├── CardControlPage.xaml
│   │   │   │   │   ├── CardControlPage.xaml.cs
│   │   │   │   │   ├── ExpanderPage.xaml
│   │   │   │   │   ├── ExpanderPage.xaml.cs
│   │   │   │   │   ├── LayoutPage.xaml
│   │   │   │   │   └── LayoutPage.xaml.cs
│   │   │   │   ├── Media/
│   │   │   │   │   ├── CanvasPage.xaml
│   │   │   │   │   ├── CanvasPage.xaml.cs
│   │   │   │   │   ├── ImagePage.xaml
│   │   │   │   │   ├── ImagePage.xaml.cs
│   │   │   │   │   ├── MediaPage.xaml
│   │   │   │   │   ├── MediaPage.xaml.cs
│   │   │   │   │   ├── WebBrowserPage.xaml
│   │   │   │   │   ├── WebBrowserPage.xaml.cs
│   │   │   │   │   ├── WebViewPage.xaml
│   │   │   │   │   └── WebViewPage.xaml.cs
│   │   │   │   ├── Navigation/
│   │   │   │   │   ├── BreadcrumbBarPage.xaml
│   │   │   │   │   ├── BreadcrumbBarPage.xaml.cs
│   │   │   │   │   ├── MenuPage.xaml
│   │   │   │   │   ├── MenuPage.xaml.cs
│   │   │   │   │   ├── MultilevelNavigationPage.xaml
│   │   │   │   │   ├── MultilevelNavigationPage.xaml.cs
│   │   │   │   │   ├── NavigationPage.xaml
│   │   │   │   │   ├── NavigationPage.xaml.cs
│   │   │   │   │   ├── NavigationViewPage.xaml
│   │   │   │   │   ├── NavigationViewPage.xaml.cs
│   │   │   │   │   ├── TabControlPage.xaml
│   │   │   │   │   ├── TabControlPage.xaml.cs
│   │   │   │   │   ├── TabViewPage.xaml
│   │   │   │   │   └── TabViewPage.xaml.cs
│   │   │   │   ├── OpSystem/
│   │   │   │   │   ├── ClipboardPage.xaml
│   │   │   │   │   ├── ClipboardPage.xaml.cs
│   │   │   │   │   ├── FilePickerPage.xaml
│   │   │   │   │   ├── FilePickerPage.xaml.cs
│   │   │   │   │   ├── OpSystemPage.xaml
│   │   │   │   │   └── OpSystemPage.xaml.cs
│   │   │   │   ├── Samples/
│   │   │   │   │   ├── MultilevelNavigationSamplePage1.xaml
│   │   │   │   │   ├── MultilevelNavigationSamplePage1.xaml.cs
│   │   │   │   │   ├── MultilevelNavigationSamplePage2.xaml
│   │   │   │   │   ├── MultilevelNavigationSamplePage2.xaml.cs
│   │   │   │   │   ├── MultilevelNavigationSamplePage3.xaml
│   │   │   │   │   ├── MultilevelNavigationSamplePage3.xaml.cs
│   │   │   │   │   ├── SamplePage1.xaml
│   │   │   │   │   ├── SamplePage1.xaml.cs
│   │   │   │   │   ├── SamplePage2.xaml
│   │   │   │   │   ├── SamplePage2.xaml.cs
│   │   │   │   │   ├── SamplePage3.xaml
│   │   │   │   │   └── SamplePage3.xaml.cs
│   │   │   │   ├── SettingsPage.xaml
│   │   │   │   ├── SettingsPage.xaml.cs
│   │   │   │   ├── StatusAndInfo/
│   │   │   │   │   ├── InfoBadgePage.xaml
│   │   │   │   │   ├── InfoBadgePage.xaml.cs
│   │   │   │   │   ├── InfoBarPage.xaml
│   │   │   │   │   ├── InfoBarPage.xaml.cs
│   │   │   │   │   ├── ProgressBarPage.xaml
│   │   │   │   │   ├── ProgressBarPage.xaml.cs
│   │   │   │   │   ├── ProgressRingPage.xaml
│   │   │   │   │   ├── ProgressRingPage.xaml.cs
│   │   │   │   │   ├── StatusAndInfoPage.xaml
│   │   │   │   │   ├── StatusAndInfoPage.xaml.cs
│   │   │   │   │   ├── ToolTipPage.xaml
│   │   │   │   │   └── ToolTipPage.xaml.cs
│   │   │   │   ├── Text/
│   │   │   │   │   ├── AutoSuggestBoxPage.xaml
│   │   │   │   │   ├── AutoSuggestBoxPage.xaml.cs
│   │   │   │   │   ├── LabelPage.xaml
│   │   │   │   │   ├── LabelPage.xaml.cs
│   │   │   │   │   ├── NumberBoxPage.xaml
│   │   │   │   │   ├── NumberBoxPage.xaml.cs
│   │   │   │   │   ├── PasswordBoxPage.xaml
│   │   │   │   │   ├── PasswordBoxPage.xaml.cs
│   │   │   │   │   ├── RichTextBoxPage.xaml
│   │   │   │   │   ├── RichTextBoxPage.xaml.cs
│   │   │   │   │   ├── TextBlockPage.xaml
│   │   │   │   │   ├── TextBlockPage.xaml.cs
│   │   │   │   │   ├── TextBoxPage.xaml
│   │   │   │   │   ├── TextBoxPage.xaml.cs
│   │   │   │   │   ├── TextPage.xaml
│   │   │   │   │   └── TextPage.xaml.cs
│   │   │   │   └── Windows/
│   │   │   │       ├── WindowsPage.xaml
│   │   │   │       └── WindowsPage.xaml.cs
│   │   │   └── Windows/
│   │   │       ├── EditorWindow.xaml
│   │   │       ├── EditorWindow.xaml.cs
│   │   │       ├── MainWindow.xaml
│   │   │       ├── MainWindow.xaml.cs
│   │   │       ├── MonacoWindow.xaml
│   │   │       ├── MonacoWindow.xaml.cs
│   │   │       ├── SandboxWindow.xaml
│   │   │       └── SandboxWindow.xaml.cs
│   │   ├── Wpf.Ui.Gallery.csproj
│   │   └── app.manifest
│   ├── Wpf.Ui.Gallery.Package/
│   │   ├── Package.appxmanifest
│   │   └── Wpf.Ui.Gallery.Package.wapproj
│   ├── Wpf.Ui.SyntaxHighlight/
│   │   ├── Controls/
│   │   │   ├── CodeBlock.cs
│   │   │   └── CodeBlock.xaml
│   │   ├── Highlighter.cs
│   │   ├── License - Fira Code.txt
│   │   ├── Markup/
│   │   │   └── SyntaxHighlightDictionary.cs
│   │   ├── Properties/
│   │   │   └── AssemblyInfo.cs
│   │   ├── SyntaxHighlight.xaml
│   │   ├── SyntaxLanguage.cs
│   │   └── Wpf.Ui.SyntaxHighlight.csproj
│   ├── Wpf.Ui.ToastNotifications/
│   │   ├── GlobalUsings.cs
│   │   ├── Properties/
│   │   │   └── AssemblyInfo.cs
│   │   ├── Toast.cs
│   │   ├── VisualStudioToolsManifest.xml
│   │   └── Wpf.Ui.ToastNotifications.csproj
│   └── Wpf.Ui.Tray/
│       ├── Controls/
│       │   └── NotifyIcon.cs
│       ├── GlobalUsings.cs
│       ├── Hicon.cs
│       ├── INotifyIcon.cs
│       ├── INotifyIconService.cs
│       ├── Internal/
│       │   └── InternalNotifyIconManager.cs
│       ├── Interop/
│       │   ├── Libraries.cs
│       │   ├── Shell32.cs
│       │   └── User32.cs
│       ├── NotifyIconEventHandler.cs
│       ├── NotifyIconService.cs
│       ├── Properties/
│       │   └── AssemblyInfo.cs
│       ├── RoutedNotifyIconEvent.cs
│       ├── TrayData.cs
│       ├── TrayHandler.cs
│       ├── TrayManager.cs
│       ├── VisualStudioToolsManifest.xml
│       └── Wpf.Ui.Tray.csproj
└── tests/
    ├── Wpf.Ui.Gallery.IntegrationTests/
    │   ├── ContentDialogAutomationTests.cs
    │   ├── Fixtures/
    │   │   ├── TestedApplication.cs
    │   │   └── UiTest.cs
    │   ├── GlobalUsings.cs
    │   ├── NavigationTests.cs
    │   ├── TitleBarTests.cs
    │   ├── WindowTests.cs
    │   ├── Wpf.Ui.Gallery.IntegrationTests.csproj
    │   └── xunit.runner.json
    └── Wpf.Ui.UnitTests/
        ├── Animations/
        │   └── TransitionAnimationProviderTests.cs
        ├── Extensions/
        │   └── SymbolExtensionsTests.cs
        ├── Usings.cs
        └── Wpf.Ui.UnitTests.csproj

================================================
FILE CONTENTS
================================================

================================================
FILE: .config/dotnet-tools.json
================================================
{
  "version": 1,
  "isRoot": true,
  "tools": {
    "csharpier": {
      "version": "1.0.1",
      "commands": [
        "csharpier"
      ],
      "rollForward": false
    }
  }
}

================================================
FILE: .csharpierignore
================================================
*.csproj
*.xaml


================================================
FILE: .csharpierrc
================================================
{
    "printWidth": 110,
    "useTabs": false,
    "tabWidth": 4,
    "preprocessorSymbolSets": [
        "",
        "DEBUG",
        "DEBUG,CODE_STYLE"
    ]
}


================================================
FILE: .devcontainer/devcontainer.json
================================================
{
  "name": "WPF UI Docs Dev Container",
  "image": "mcr.microsoft.com/dotnet/sdk:9.0",
  "features": {
    "ghcr.io/devcontainers/features/node:1": {
      "version": "20"
    }
  },
  "postCreateCommand": "./.devcontainer/post-create.sh",
  "forwardPorts": [
    8080
  ],
  "remoteEnv": {
    "NODE_ENV": "development"
  }
}


================================================
FILE: .devcontainer/post-create.sh
================================================
#!/bin/sh

apt-get update
apt-get install -y openssh-client

cd docs/templates
npm ci
npm run build
dotnet tool install -g docfx

export PATH="$PATH:/root/.dotnet/tools"

cd ../
docfx docfx.json --serve


================================================
FILE: .editorconfig
================================================
# Remove the line below if you want to inherit .editorconfig settings from higher directories
root = true

# All files
[*]

#### Core EditorConfig Options ####

# Encoding
charset = utf-8

# Indentation and spacing
tab_width = 4
indent_size = 4
indent_style = space

# New line preferences
end_of_line = unset
insert_final_newline = false

#### Build files ####

# Solution files
[*.{sln,slnx}]
tab_width = 4
indent_size = 4
indent_style = tab

# Configuration files
[*.{json,xml,yml,config,runsettings}]
indent_size = 2

# MSBuild files
[*.{slnf,props,targets,projitems,csproj,shproj}]
indent_size = 2

#### Source files ####

# Markdown files
[*.md]
indent_size = 2
insert_final_newline = true

# C# files
[*.cs]

#### File Header Template ####
file_header_template = This Source Code Form is subject to the terms of the MIT License.\nIf a copy of the MIT was not distributed with this file, You can obtain one at https://opensource.org/licenses/MIT.\nCopyright (C) Leszek Pomianowski and WPF UI Contributors.\nAll Rights Reserved.

#### .NET Coding Conventions ####

# this. and Me. preferences
dotnet_style_qualification_for_event = false:silent
dotnet_style_qualification_for_field = false:silent
dotnet_style_qualification_for_method = false:silent
dotnet_style_qualification_for_property = false:silent

# Language keywords vs BCL types preferences
dotnet_style_predefined_type_for_locals_parameters_members = true:warning
dotnet_style_predefined_type_for_member_access = true:warning

# Parentheses preferences
dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:silent
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:silent
dotnet_style_parentheses_in_other_operators = never_if_unnecessary:silent
dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:silent

# Modifier preferences (set to silent until https://github.com/dotnet/roslyn/issues/52904 is resolved)
dotnet_style_require_accessibility_modifiers = for_non_interface_members:silent

# Code block preferences
dotnet_style_allow_multiple_blank_lines_experimental = false:warning
dotnet_style_allow_statement_immediately_after_block_experimental = false:warning

# Expression-level preferences
csharp_style_deconstructed_variable_declaration = true:suggestion
csharp_style_inlined_variable_declaration = true:silent
csharp_style_throw_expression = true:suggestion
dotnet_style_coalesce_expression = true:suggestion
dotnet_style_collection_initializer = true:suggestion
dotnet_style_explicit_tuple_names = true:suggestion
dotnet_style_null_propagation = true:suggestion
dotnet_style_object_initializer = true:suggestion
dotnet_style_prefer_auto_properties = true:silent
dotnet_style_prefer_conditional_expression_over_assignment = true:silent
dotnet_style_prefer_conditional_expression_over_return = true:silent
dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
dotnet_style_prefer_inferred_tuple_names = true:suggestion
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:warning

# Field preferences
dotnet_style_readonly_field = true:warning

#### C# Coding Conventions ####

# var preferences
csharp_style_var_elsewhere = false:warning
csharp_style_var_for_built_in_types = false:none
csharp_style_var_when_type_is_apparent = false:none

# Expression-bodied members
csharp_style_expression_bodied_accessors = false:silent
csharp_style_expression_bodied_constructors = false:silent
csharp_style_expression_bodied_indexers = false:silent
csharp_style_expression_bodied_lambdas = true:silent
csharp_style_expression_bodied_methods = false:silent
csharp_style_expression_bodied_operators = false:silent
csharp_style_expression_bodied_properties = false:silent

# Pattern matching preferences
csharp_style_prefer_pattern_matching = true:suggestion
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion

# Null-checking preferences
csharp_style_conditional_delegate_call = true:suggestion

# Modifier preferences
csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async

# Code-block preferences
csharp_prefer_braces = true:suggestion
csharp_using_directive_placement = outside_namespace:warning
csharp_style_namespace_declarations = file_scoped:warning
csharp_style_unused_value_assignment_preference = discard_variable:warning
csharp_style_unused_value_expression_statement_preference = discard_variable:warning
csharp_style_allow_blank_lines_between_consecutive_braces_experimental = false:warning

# Expression-level preferences
csharp_prefer_simple_default_expression = true:suggestion
csharp_prefer_static_local_function = true:warning
csharp_style_pattern_local_over_anonymous_function = true:warning

#### C# Formatting Rules ####

# New line preferences
csharp_new_line_before_catch = true
csharp_new_line_before_else = true
csharp_new_line_before_finally = true
csharp_new_line_before_members_in_anonymous_types = true
csharp_new_line_before_members_in_object_initializers = true
csharp_new_line_before_open_brace = all
csharp_new_line_between_query_expression_clauses = true

# Indentation preferences
csharp_indent_block_contents = true
csharp_indent_braces = false
csharp_indent_case_contents = true
csharp_indent_case_contents_when_block = false
csharp_indent_labels = no_change
csharp_indent_switch_labels = true

# Space preferences
csharp_space_after_cast = false
csharp_space_after_colon_in_inheritance_clause = true
csharp_space_after_comma = true
csharp_space_after_dot = false
csharp_space_after_keywords_in_control_flow_statements = true
csharp_space_after_semicolon_in_for_statement = true
csharp_space_around_binary_operators = before_and_after
csharp_space_around_declaration_statements = false
csharp_space_before_colon_in_inheritance_clause = true
csharp_space_before_comma = false
csharp_space_before_dot = false
csharp_space_before_open_square_brackets = false
csharp_space_before_semicolon_in_for_statement = false
csharp_space_between_empty_square_brackets = false
csharp_space_between_method_call_empty_parameter_list_parentheses = false
csharp_space_between_method_call_name_and_opening_parenthesis = false
csharp_space_between_method_call_parameter_list_parentheses = false
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
csharp_space_between_method_declaration_name_and_open_parenthesis = false
csharp_space_between_method_declaration_parameter_list_parentheses = false
csharp_space_between_parentheses = false
csharp_space_between_square_brackets = false

# Wrapping preferences
csharp_preserve_single_line_blocks = true
csharp_preserve_single_line_statements = true

# Naming Symbols

# constant_fields - Define constant fields
dotnet_naming_symbols.constant_fields.applicable_kinds                            = field
dotnet_naming_symbols.constant_fields.required_modifiers                          = const
# non_private_readonly_fields - Define public, internal and protected readonly fields
dotnet_naming_symbols.non_private_readonly_fields.applicable_accessibilities      = public, internal, protected
dotnet_naming_symbols.non_private_readonly_fields.applicable_kinds                = field
dotnet_naming_symbols.non_private_readonly_fields.required_modifiers              = readonly
# static_readonly_fields - Define static and readonly fields
dotnet_naming_symbols.static_readonly_fields.applicable_kinds                     = field
dotnet_naming_symbols.static_readonly_fields.required_modifiers                   = static, readonly
# private_readonly_fields - Define private readonly fields
dotnet_naming_symbols.private_readonly_fields.applicable_accessibilities          = private
dotnet_naming_symbols.private_readonly_fields.applicable_kinds                    = field
dotnet_naming_symbols.private_readonly_fields.required_modifiers                  = readonly
# public_internal_fields - Define public and internal fields
dotnet_naming_symbols.public_internal_protected_fields.applicable_accessibilities = public, internal, protected
dotnet_naming_symbols.public_internal_protected_fields.applicable_kinds           = field
# private_protected_fields - Define private and protected fields
dotnet_naming_symbols.private_protected_fields.applicable_accessibilities         = private, protected
dotnet_naming_symbols.private_protected_fields.applicable_kinds                   = field
# public_symbols - Define any public symbol
dotnet_naming_symbols.public_symbols.applicable_accessibilities                   = public, internal, protected, protected_internal
dotnet_naming_symbols.public_symbols.applicable_kinds                             = method, property, event, delegate
# parameters - Defines any parameter
dotnet_naming_symbols.parameters.applicable_kinds                                 = parameter
# non_interface_types - Defines class, struct, enum and delegate types
dotnet_naming_symbols.non_interface_types.applicable_kinds                        = class, struct, enum, delegate
# interface_types - Defines interfaces
dotnet_naming_symbols.interface_types.applicable_kinds                            = interface

# Naming Styles

# camel_case - Define the camelCase style
dotnet_naming_style.camel_case.capitalization                                     = camel_case
# pascal_case - Define the Pascal_case style
dotnet_naming_style.pascal_case.capitalization                                    = pascal_case
# first_upper - The first character must start with an upper-case character
dotnet_naming_style.first_upper.capitalization                                    = first_word_upper
# prefix_interface_interface_with_i - Interfaces must be PascalCase and the first character of an interface must be an 'I'
dotnet_naming_style.prefix_interface_interface_with_i.capitalization              = pascal_case
dotnet_naming_style.prefix_interface_interface_with_i.required_prefix             = I

# Naming Rules

# Async
dotnet_naming_rule.async_methods_end_in_async.severity                            = silent
dotnet_naming_rule.async_methods_end_in_async.symbols                             = any_async_methods
dotnet_naming_rule.async_methods_end_in_async.style                               = end_in_async

dotnet_naming_symbols.any_async_methods.applicable_kinds                          = method
dotnet_naming_symbols.any_async_methods.applicable_accessibilities                = *
dotnet_naming_symbols.any_async_methods.required_modifiers                        = async

dotnet_naming_style.end_in_async.required_suffix                                  = Async
dotnet_naming_style.end_in_async.capitalization                                   = pascal_case

# Constant fields must be PascalCase
dotnet_naming_rule.constant_fields_must_be_pascal_case.severity                   = silent
dotnet_naming_rule.constant_fields_must_be_pascal_case.symbols                    = constant_fields
dotnet_naming_rule.constant_fields_must_be_pascal_case.style                      = pascal_case
# Public, internal and protected readonly fields must be PascalCase
dotnet_naming_rule.non_private_readonly_fields_must_be_pascal_case.severity       = silent
dotnet_naming_rule.non_private_readonly_fields_must_be_pascal_case.symbols        = non_private_readonly_fields
dotnet_naming_rule.non_private_readonly_fields_must_be_pascal_case.style          = pascal_case
# Static readonly fields must be PascalCase
dotnet_naming_rule.static_readonly_fields_must_be_pascal_case.severity            = silent
dotnet_naming_rule.static_readonly_fields_must_be_pascal_case.symbols             = static_readonly_fields
dotnet_naming_rule.static_readonly_fields_must_be_pascal_case.style               = pascal_case
# Private readonly fields must be camelCase
dotnet_naming_rule.private_readonly_fields_must_be_camel_case.severity            = silent
dotnet_naming_rule.private_readonly_fields_must_be_camel_case.symbols             = private_readonly_fields
dotnet_naming_rule.private_readonly_fields_must_be_camel_case.style               = camel_case
# Public and internal fields must be PascalCase
dotnet_naming_rule.public_internal_protected_fields_must_be_pascal_case.severity  = silent
dotnet_naming_rule.public_internal_protected_fields_must_be_pascal_case.symbols   = public_internal_protected_fields
dotnet_naming_rule.public_internal_protected_fields_must_be_pascal_case.style     = pascal_case
# Private and protected fields must be camelCase
dotnet_naming_rule.private_fields_must_be_camel_case.severity                     = silent
dotnet_naming_rule.private_fields_must_be_camel_case.symbols                      = private_protected_fields
dotnet_naming_rule.private_fields_must_be_camel_case.style                        = prefix_private_field_with_underscore
# Public members must be capitalized
dotnet_naming_rule.public_members_must_be_capitalized.severity                    = silent
dotnet_naming_rule.public_members_must_be_capitalized.symbols                     = public_symbols
dotnet_naming_rule.public_members_must_be_capitalized.style                       = first_upper
# Parameters must be camelCase
dotnet_naming_rule.parameters_must_be_camel_case.severity                         = silent
dotnet_naming_rule.parameters_must_be_camel_case.symbols                          = parameters
dotnet_naming_rule.parameters_must_be_camel_case.style                            = camel_case
# Class, struct, enum and delegates must be PascalCase
dotnet_naming_rule.non_interface_types_must_be_pascal_case.severity               = silent
dotnet_naming_rule.non_interface_types_must_be_pascal_case.symbols                = non_interface_types
dotnet_naming_rule.non_interface_types_must_be_pascal_case.style                  = pascal_case
# Interfaces must be PascalCase and start with an 'I'
dotnet_naming_rule.interface_types_must_be_prefixed_with_i.severity               = silent
dotnet_naming_rule.interface_types_must_be_prefixed_with_i.symbols                = interface_types
dotnet_naming_rule.interface_types_must_be_prefixed_with_i.style                  = prefix_interface_interface_with_i
# prefix_private_field_with_underscore - Private fields must be prefixed with _
dotnet_naming_style.prefix_private_field_with_underscore.capitalization           = camel_case
dotnet_naming_style.prefix_private_field_with_underscore.required_prefix          = _

# .NET Code Analysis

dotnet_diagnostic.CA1001.severity = warning
dotnet_diagnostic.CA1009.severity = warning
dotnet_diagnostic.CA1016.severity = warning
dotnet_diagnostic.CA1033.severity = warning
dotnet_diagnostic.CA1049.severity = warning
dotnet_diagnostic.CA1060.severity = warning
dotnet_diagnostic.CA1061.severity = warning
dotnet_diagnostic.CA1063.severity = warning
dotnet_diagnostic.CA1065.severity = warning
dotnet_diagnostic.CA1301.severity = warning
dotnet_diagnostic.CA1400.severity = warning
dotnet_diagnostic.CA1401.severity = warning
dotnet_diagnostic.CA1403.severity = warning
dotnet_diagnostic.CA1404.severity = warning
dotnet_diagnostic.CA1405.severity = warning
dotnet_diagnostic.CA1410.severity = warning
dotnet_diagnostic.CA1415.severity = warning
dotnet_diagnostic.CA1821.severity = warning
dotnet_diagnostic.CA1900.severity = warning
dotnet_diagnostic.CA1901.severity = warning
dotnet_diagnostic.CA2002.severity = warning
dotnet_diagnostic.CA2100.severity = warning
dotnet_diagnostic.CA2101.severity = warning
dotnet_diagnostic.CA2108.severity = warning
dotnet_diagnostic.CA2111.severity = warning
dotnet_diagnostic.CA2112.severity = warning
dotnet_diagnostic.CA2114.severity = warning
dotnet_diagnostic.CA2116.severity = warning
dotnet_diagnostic.CA2117.severity = warning
dotnet_diagnostic.CA2122.severity = warning
dotnet_diagnostic.CA2123.severity = warning
dotnet_diagnostic.CA2124.severity = warning
dotnet_diagnostic.CA2126.severity = warning
dotnet_diagnostic.CA2131.severity = warning
dotnet_diagnostic.CA2132.severity = warning
dotnet_diagnostic.CA2133.severity = warning
dotnet_diagnostic.CA2134.severity = warning
dotnet_diagnostic.CA2137.severity = warning
dotnet_diagnostic.CA2138.severity = warning
dotnet_diagnostic.CA2140.severity = warning
dotnet_diagnostic.CA2141.severity = warning
dotnet_diagnostic.CA2146.severity = warning
dotnet_diagnostic.CA2147.severity = warning
dotnet_diagnostic.CA2149.severity = warning
dotnet_diagnostic.CA2200.severity = warning
dotnet_diagnostic.CA2202.severity = warning
dotnet_diagnostic.CA2207.severity = warning
dotnet_diagnostic.CA2212.severity = warning
dotnet_diagnostic.CA2213.severity = warning
dotnet_diagnostic.CA2214.severity = warning
dotnet_diagnostic.CA2216.severity = warning
dotnet_diagnostic.CA2220.severity = warning
dotnet_diagnostic.CA2229.severity = warning
dotnet_diagnostic.CA2231.severity = warning
dotnet_diagnostic.CA2232.severity = warning
dotnet_diagnostic.CA2235.severity = warning
dotnet_diagnostic.CA2236.severity = warning
dotnet_diagnostic.CA2237.severity = warning
dotnet_diagnostic.CA2238.severity = warning
dotnet_diagnostic.CA2240.severity = warning
dotnet_diagnostic.CA2241.severity = warning
dotnet_diagnostic.CA2242.severity = warning

# Require file header OR A source file contains a header that does not match the required text
dotnet_diagnostic.IDE0073.severity = error

dotnet_diagnostic.IDE0058.severity = silent

dotnet_diagnostic.MC3080.severity = none

# StyleCop Code Analysis

# Closing parenthesis should be spaced correctly: "foo()!"
dotnet_diagnostic.SA1009.severity = none

# Hide warnings when using the new() expression from C# 9.
dotnet_diagnostic.SA1000.severity = none
dotnet_diagnostic.SA1011.severity = none
dotnet_diagnostic.SA1101.severity = none

# Hide warnings when accessing properties without "this".
dotnet_diagnostic.SA1101.severity = none
dotnet_diagnostic.SA1118.severity = none
dotnet_diagnostic.SA1200.severity = none
dotnet_diagnostic.SA1201.severity = none
dotnet_diagnostic.SA1202.severity = none
dotnet_diagnostic.SA1309.severity = none
dotnet_diagnostic.SA1310.severity = none

# Hide warnings for record parameters.
dotnet_diagnostic.SA1313.severity = none

# TypeParameterNamesMustBeginWithT: We do have a few templates that don't start with T. We need to double check that changing this is not a breaking change. If not, we can re-enable this.
dotnet_diagnostic.SA1314.severity = none

# UseTrailingCommasInMultiLineInitializers: This would also mean a lot of changes at the end of all multiline initializers. It's also debatable if we want this or not.
dotnet_diagnostic.SA1413.severity = none

dotnet_diagnostic.SA1600.severity = none
dotnet_diagnostic.SA1602.severity = none
dotnet_diagnostic.SA1611.severity = none

# DocumentationTextMustEndWithAPeriod: Let's enable this rule back when we shift to WinUI3 (v8.x). If we do it now, it would mean more than 400 file changes.
dotnet_diagnostic.SA1629.severity = none

dotnet_diagnostic.SA1633.severity = none
dotnet_diagnostic.SA1634.severity = none
dotnet_diagnostic.SA1652.severity = none


# Additional Stylecop Analyzers
dotnet_diagnostic.SA1111.severity = none
dotnet_diagnostic.SA1121.severity = none
dotnet_diagnostic.SA1204.severity = none
dotnet_diagnostic.SA1208.severity = none
dotnet_diagnostic.CS1591.severity = none # Missing XML comment for publicly visible type or member
                                         # 15000+ warnings in the solution
dotnet_diagnostic.CA1510.severity = none # Use ArgumentNullException throw helper
                                         # doesn't work with older versions of .NET
                                         
dotnet_diagnostic.SA1518.severity = none
dotnet_diagnostic.SA1615.severity = none
dotnet_diagnostic.SA1502.severity = none
dotnet_diagnostic.SA1010.severity = none # Opening square brackets should not be preceded by a space
                                         # conflicts with collection expressions and IDE0028

# Suppress some ValueConverter warnings
dotnet_diagnostic.WPF0073.severity = none # Add ValueConversion attribute (unknown types)
dotnet_diagnostic.WPF0071.severity = none # Add ValueConversion attribute
dotnet_diagnostic.WPF0070.severity = none # Add default field to converter

# Suppress some IDE warnings
dotnet_diagnostic.IDE0130.severity = none # Hide warnings about namespaces not matching folder structure
dotnet_diagnostic.IDE0290.severity = none # Use primary constructor


================================================
FILE: .gitattributes
================================================
# Set default behavior to automatically normalize line endings.
*   text=auto

*.doc   binary
*.DOC   binary
*.docx  binary
*.DOCX  binary
*.dot   binary
*.DOT   binary
*.pdf   binary
*.PDF   binary
*.rtf   binary
*.RTF   binary

*.jpg   binary
*.png   binary
*.gif   binary

# Force bash scripts to always use lf line endings so that if a repo is accessed
# in Unix via a file share from Windows, the scripts will work.
*.in    text eol=lf
*.sh    text eol=lf

# Likewise, force cmd and batch scripts to always use crlf
*.cmd   text eol=crlf
*.bat   text eol=crlf

*.cs    text=auto diff=csharp
*.vb    text=auto
*.resx  text=auto
*.c     text=auto
*.cpp   text=auto
*.cxx   text=auto
*.h     text=auto
*.hxx   text=auto
*.py    text=auto
*.rb    text=auto
*.java  text=auto
*.html  text=auto
*.htm   text=auto
*.css   text=auto
*.scss  text=auto
*.sass  text=auto
*.less  text=auto
*.js    text=auto
*.lisp  text=auto
*.clj   text=auto
*.sql   text=auto
*.php   text=auto
*.lua   text=auto
*.m     text=auto
*.asm   text=auto
*.erl   text=auto
*.fs    text=auto
*.fsx   text=auto
*.hs    text=auto

*.csproj    text=auto
*.vbproj    text=auto
*.fsproj    text=auto
*.dbproj    text=auto
*.sln       text=auto eol=crlf

# Set linguist language for .h files explicitly based on
# https://github.com/github/linguist/issues/1626#issuecomment-401442069
# this only affects the repo's language statistics
*.h linguist-language=C


================================================
FILE: .github/FUNDING.yml
================================================
github: [pomianowski]


================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.yaml
================================================
name: Bug report
description: Create a report to help us improve
title: "Bug title"
labels: [bug]
body:
  - type: textarea
    validations:
      required: true
    attributes:
      label: Describe the bug
      description: A clear and concise description of what the bug is
  - type: textarea
    validations:
      required: true
    attributes:
      label: To Reproduce
      description: Steps to reproduce the behavior
  - type: textarea
    validations:
      required: true
    attributes:
      label: Expected behavior
      description: A clear and concise description of what you expected to happen
  - type: textarea
    attributes:
      label: Screenshots
      description: If applicable, add screenshots to help explain your problem
  - type: textarea
    validations:
      required: true
    attributes:
      label: OS version
      description: Which OS versions did you see the issue on? 
  - type: textarea
    validations:
      required: true
    attributes:
      label: .NET version
      description: Which .NET versions did you see the issue on?
  - type: textarea
    validations:
      required: true
    attributes:
      label: WPF-UI NuGet version
      description: Which WPF-UI NuGet versions did you see the issue on?
  - type: textarea
    attributes:
      label: Additional context
      description: Add any other context about the problem here

================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
  - name: Documentation
    url: https://wpfui.lepo.co/documentation/
    about: Find out how WPF UI works.
  - name: Tutorial
    url: https://wpfui.lepo.co/documentation/tutorial
    about: Having trouble with the basics? Check out the tutorial!
  - name: lepo.co contact
    url: https://lepo.co/contact
    about: Do you want to establish business contact? Let us know.

================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.yaml
================================================
name: Feature request
description: Suggest an idea for the wpfui
title: "Feature request title"
labels: [enhancement]
body:
  - type: textarea
    validations:
      required: true
    attributes:
      label: Is your feature request related to a problem? Please describe
      description: A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
  - type: textarea
    validations:
      required: true
    attributes:
      label: Describe the solution you'd like
      description: A clear and concise description of what you want to happen
  - type: textarea
    attributes:
      label: Describe alternatives you've considered
      description: A clear and concise description of any alternative solutions or features you've considered
  - type: textarea
    attributes:
      label: Additional context
      description: Add any other context or screenshots about the feature request here

================================================
FILE: .github/chatmodes/documentation_contributor.chatmode.md
================================================
---
description: 'WPF-UI Documentation Contributor for writing technical documentation in /docs/documentation/ following DocFX conventions and WPF UI patterns.'
tools: ['edit', 'runNotebooks', 'search', 'new', 'runCommands', 'runTasks', 'microsoft.docs.mcp/*', 'youtube_transcript/*', 'GitKraken/*', 'context7/*', 'usages', 'vscodeAPI', 'problems', 'changes', 'testFailure', 'openSimpleBrowser', 'fetch', 'githubRepo', 'extensions', 'todos', 'runTests']
---

You are a technical documentation specialist for WPF-UI library. Write clear, actionable documentation for developers integrating WPF UI controls into their applications.

<documentation_requirements>
Target audience: .NET/WPF developers implementing Fluent UI controls
Location: /docs/documentation/*.md
Build tool: DocFX (https://dotnet.github.io/docfx/)
Format: Markdown with YAML frontmatter when needed

Quality standards:
- Concise and direct - no redundant text, humor, or pleasantries
- Code examples must be complete and functional
- XAML snippets must include proper namespaces
- No assumptions about developer knowledge - verify with code search
</documentation_requirements>

<structure_patterns>
Standard article structure (analyze existing docs in /docs/documentation/):

1. Brief description (1-2 sentences)
2. Working code example (XAML + C# when applicable)
3. Additional examples for common scenarios
4. Notes/warnings for edge cases or platform-specific behavior

Do NOT include:
- "Introduction" or "Overview" headers
- Redundant explanations of what code does
- Generic WPF concepts already in Microsoft docs
- Navigation instructions ("see below", "as shown above")
</structure_patterns>

<code_conventions>
XAML namespace declaration:
xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml"

Code examples must:
- Show complete, runnable snippets (not fragments with "...")
- Use realistic property values
- Include necessary using statements for C#
- Follow WPF UI naming patterns (check src/Wpf.Ui/ for actual class names)

Example format:
```xml
<ui:FluentWindow
    xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml">
    <ui:TitleBar Title="Application" />
    <ui:Card>
        <ui:Button Content="Click me" Icon="{ui:SymbolIcon Fluent24}" />
    </ui:Card>
</ui:FluentWindow>
```

```csharp
using Wpf.Ui.Appearance;

ApplicationThemeManager.Apply(
    ApplicationTheme.Dark,
    WindowBackdropType.Mica,
    true
);
```
</code_conventions>

<verification_workflow>
Before writing documentation:
1. Search codebase (src/Wpf.Ui/) to verify class/property names exist
2. Check Directory.Packages.props for dependency requirements
3. Review existing docs in /docs/documentation/ for style consistency
4. Use microsoft_docs_search for WPF/.NET concepts when needed
5. Use Context7 for WPF-specific APIs if unsure

When documenting controls:
1. Find the control in src/Wpf.Ui/Controls/
2. Check XML docs for parameters/properties
3. Search Gallery app (src/Wpf.Ui.Gallery/) for usage examples
4. Verify namespace and assembly location
</verification_workflow>

<tone_and_style>
Direct and technical. Never use emoticons, exclamation marks, or conversational fillers.

Examples:

Wrong: "Now, let's explore how to use the NavigationView control! It's really powerful and will help you create amazing navigation experiences."
Right: "NavigationView manages page navigation with menu items and footer items."

Wrong: "You might want to consider using the Apply method if you need to change themes."
Right: "Change themes with ApplicationThemeManager.Apply():"

Wrong: "As you can see in the example above..."
Right: [Just show the next example]

Prohibited phrases:
- "Let's", "Now", "Here's how", "Simply", "Just"
- "You might want to", "Consider", "Feel free to"
- Questions in headings ("How do I...?")
- Personal pronouns in descriptions
- Any emoji or emoticons
</tone_and_style>

<platform_specific>
When documenting features using Win32/Interop:
- Note Windows version requirements
- Reference specific APIs from src/Wpf.Ui/Win32/ or src/Wpf.Ui/Interop/
- Include fallback behavior for unsupported platforms

Example:
> **Note:** TitleBar snap layouts require Windows 11. On Windows 10, standard window controls are displayed.
</platform_specific>

<tools_usage>
Use microsoft_docs_search and microsoft_docs_fetch:
- Verify current .NET/WPF API documentation
- Reference official Microsoft patterns
- ONLY share verified Microsoft Learn URLs

Use Context7 (resolve-library-id, get-library-docs):
- Check WPF framework APIs when uncertain
- Verify dependency package documentation
- Understand CommunityToolkit.Mvvm patterns

Use codebase search:
- Find actual implementation before documenting
- Locate usage examples in Gallery app
- Verify property/method signatures
</tools_usage>

<docfx_markdown_extensions>
DocFX supports enhanced markdown syntax beyond standard CommonMark. Use these features when they add value to documentation clarity.

YAML Header (optional):
---
title: Page Title
description: Brief description for metadata
uid: unique.identifier.for.xref
---

Alerts (use for important information):
> [!NOTE]
> Information users should notice even when skimming.

> [!TIP]
> Optional information to help users be more successful.

> [!IMPORTANT]
> Essential information required for user success.

> [!CAUTION]
> Negative potential consequences of an action.

> [!WARNING]
> Dangerous certain consequences of an action.

Code Snippet (link to external code files):
[!code-csharp[](~/samples/Program.cs)]

Code Snippet with Region:
[!code-csharp[](~/samples/Program.cs#MyRegion)]

Code Snippet with Line Range:
[!code-csharp[](~/samples/Program.cs#L12-L16)]

Code Snippet with Highlighted Lines:
[!code-csharp[](~/samples/Program.cs?highlight=2,5-7,9-)]

Include Markdown Files (for reusable content blocks):
Inline: Text before [!INCLUDE [title](path/to/file.md)] and after.
Block: [!INCLUDE [title](path/to/file.md)]

Tabs (for platform/language-specific content):
# [Windows](#tab/windows)
Content for Windows...

# [Linux](#tab/linux)
Content for Linux...

---

Dependent Tabs (sync across multiple tab groups):
# [.NET](#tab/dotnet/windows)
.NET content for Windows...

# [.NET](#tab/dotnet/linux)
.NET content for Linux...

---

Mermaid Diagrams (flowcharts, sequence diagrams):
```mermaid
flowchart LR
A[Start] --> B{Decision}
B -->|Yes| C[Result 1]
B -->|No| D[Result 2]
```

Cross-references (link to API documentation):
Use xref syntax in YAML uid field, then reference with standard markdown links.

Code Snippet Best Practices:
1. Place code samples in /samples/ directory (excluded from build)
2. Use #region tags in source files for partial includes
3. Highlight only relevant lines to focus attention
4. Prefer external files over inline code for examples >20 lines
</docfx_markdown_extensions>

<knowledge_crunching_approach>
Documentation development is iterative. Gather context first, then refine through questions.

Initial Assessment:
1. What is being documented? (control, feature, workflow, concept)
2. Who is the target user? (beginner, intermediate, advanced)
3. What problem does this solve?
4. What existing documentation exists on related topics?

Ask Clarifying Questions When:
- Control usage is ambiguous or has multiple scenarios
- Platform requirements unclear (Windows version, .NET framework)
- Dependencies or prerequisites not obvious from codebase
- Breaking changes or migration concerns
- Performance implications or best practices needed

Example questions to ask:
- "Should this cover MVVM integration or just basic XAML usage?"
- "Are there Windows 11-specific features to document separately?"
- "Is this replacing deprecated functionality? Should I note migration steps?"
- "Should I document thread safety or async considerations?"

Iterative Refinement:
1. Present initial draft with core examples
2. Ask: "Does this cover the primary use case, or should I expand on [specific scenario]?"
3. Incorporate feedback and refine
4. Verify technical accuracy by cross-referencing implementation
5. Request final review of code examples

Breadth vs Depth Strategy:
- Start broad: Cover the most common 80% use case first
- Add depth: Expand with edge cases, advanced scenarios, and troubleshooting
- Link out: Reference related docs rather than duplicating content
- Iterate: Ask if additional sections are needed before writing them

Documentation Review Questions:
- "I've covered basic usage and theming. Should I add sections on custom styling or performance optimization?"
- "The current draft focuses on XAML. Do you need C# code-behind examples?"
- "Should this include migration steps from WinUI 3 or other UI frameworks?"
</knowledge_crunching_approach>

<content_creation_workflow>
When creating documentation:
1. Search codebase to understand implementation and API surface
2. Identify primary use case and target audience
3. Draft core content with minimal but complete examples
4. Ask clarifying questions about scope and depth
5. Iterate based on feedback
6. Verify all code examples execute correctly
7. Cross-reference with existing documentation for consistency

When updating documentation:
1. Identify what changed in the codebase
2. Preserve existing structure and style
3. Update only affected sections
4. Ask if scope should expand to cover related changes
5. Verify changes against current codebase

Delivery Format:
- No preamble - deliver documentation directly
- Ask questions AFTER presenting initial draft when scope is unclear
- Present options: "I can expand this with [A, B, C]. Which would be most valuable?"
- Iterate quickly based on feedback
</content_creation_workflow>



================================================
FILE: .github/copilot-instructions.md
================================================
You are an AI coding agent helping build WPF-UI, a modern WPF library implementing Microsoft Fluent UI design. This is an open-source library used by thousands of developers. Focus on the Wpf.Ui library itself, not the Gallery demo application.

<project_structure>
Core library location: src/Wpf.Ui/
- Controls/ - NavigationView, TitleBar, FluentWindow, Button, Card, etc.
- Appearance/ - ApplicationThemeManager, ApplicationAccentColorManager
- Win32/ and Interop/ - Native Windows API wrappers
- Services - NavigationService, SnackbarService, ContentDialogService, TaskBarService

Multi-targeting: netstandard2.0/2.1, net462/472, net6.0/8.0/9.0 (see Directory.Build.props)
Central Package Management: Directory.Packages.props - NEVER add package versions to .csproj files
</project_structure>

<build_and_test>
Build library:
dotnet build src/Wpf.Ui/Wpf.Ui.csproj

Solution filters:
- Wpf.Ui.Library.slnf - Library projects only
- Wpf.Ui.Gallery.slnf - Gallery demo app

Testing:
- XUnit v3 for unit tests (tests/Wpf.Ui.UnitTests/)
- AwesomeAssertions for assertions (FluentAssertions successor)
- FlaUI for UI automation (tests/Wpf.Ui.Gallery.IntegrationTests/)
- NSubstitute for mocking
</build_and_test>

<code_conventions>
NEVER assume library availability - always check Directory.Packages.props or .csproj first before using any external types.

Modern C# (C# 13, LangVersion in Directory.Build.props):
- Nullable reference types enabled
- File-scoped namespaces
- Target-typed new expressions
- Pattern matching over type checks

Comments:
- Public APIs: REQUIRED XML docs with <summary> and <example> showing XAML usage
- Internal code: Avoid comments unless explaining Win32 interop/marshalling
- Never add comments that restate what code does

Example:
/// <summary>
/// Creates a hyperlink to web pages, files, email addresses, locations in the same page, or anything else a URL can address.
/// </summary>
/// <example>
/// <code lang="xml">
/// &lt;ui:Anchor NavigateUri="https://lepo.co/" /&gt;
/// </code>
/// </example>
public class Anchor : HyperlinkButton { }
</code_conventions>

<windows_platform>
This codebase heavily uses P/Invoke, marshalling, and Windows APIs. When working with TitleBar, window management (HWND, WndProc), system theme detection, or native controls - always search the codebase first or use Context7/Microsoft Docs. Do not assume standard WPF approaches work.

Key interop areas:
- src/Wpf.Ui/Win32/ - Native methods, structs, enums
- src/Wpf.Ui/Interop/ - Managed wrappers
- src/Wpf.Ui/Controls/TitleBar/ - Snap layouts, DWM integration
- src/Wpf.Ui/Appearance/ - System theme detection
</windows_platform>

<tone_and_style>
IMPORTANT: Never use emoticons or write excessive comments explaining what you are doing.
IMPORTANT: You should minimize output tokens as much as possible while maintaining helpfulness, quality, and accuracy. Only address the specific query or task at hand, avoiding tangential information unless absolutely critical for completing the request. If you can answer in 1-3 sentences or a short paragraph, please do.
IMPORTANT: You should NOT answer with unnecessary preamble or postamble (such as explaining your code or summarizing your action), unless the user asks you to.
Answer the user's question directly, without elaboration, explanation, or details. One word answers are best. Avoid introductions, conclusions, and explanations.
</tone_and_style>

The section below describes things you can do
<capabilities>
Provide resources: Share relevant documentation, tutorials, or tools that can help the user deepen their understanding. If the `microsoft_docs_search` and `microsoft_docs_fetch` tools are available, use them to verify and find the most current Microsoft documentation and ONLY share links that have been verified through these tools. If these tools are not available, provide general guidance about concepts and topics but DO NOT share specific links or URLs to avoid potential hallucination - instead, suggest that the user might want to install the Microsoft Learn MCP server from https://github.com/microsoftdocs/mcp for enhanced documentation search capabilities with verified links.
</capabilities>

When writing code, follow the best practices described below.
<code_style>
Use modern C# syntax for .NET 10. When in doubt, use Context7 (`resolve-library-id` and `get-library-docs`) and Microsoft Docs (`microsoft_docs_search` and `microsoft_docs_fetch`). You can also use other MCP tools to find answers, e.g., search code with `search` or repository with `githubRepo`.

Working with Windows and WPF is complicated and requires knowledge of how the Windows operating system works, as well as details about Win32, marshalling, and other complexities. Always assume that you have incomplete information and that it is worth using Context7, Microsoft Docs, or searching the repository.

Remember to add summary docs with examples to each public class. Thousands of people use the framework and need proper instructions.

```csharp
/// <summary>
/// Creates a hyperlink to web pages, files, email addresses, locations in the same page, or anything else a URL can address.
/// </summary>
/// <example>
/// <code lang="xml">
/// &lt;ui:Anchor
///     NavigateUri="https://lepo.co/" /&gt;
/// </code>
/// </example>
public class Anchor : Wpf.Ui.Controls.HyperlinkButton;
```

When creating a sample page in WPF, use MVVM from the Community Toolkit. Divide classes into models, view models, and views, as shown below:

```csharp
public partial class AnchorViewModel : ViewModel
{
    [ObservableProperty]
    private bool _isAnchorEnabled = true;
    [RelayCommand]
    private void OnAnchorCheckboxChecked(object sender)
    {
        if (sender is not CheckBox checkbox)
        {
            return;
        }
        IsAnchorEnabled = !(checkbox?.IsChecked ?? false);
    }
}
[GalleryPage("Button which opens a link.", SymbolRegular.CubeLink20)]
public partial class AnchorPage : INavigableView<AnchorViewModel>
{
    public AnchorViewModel ViewModel { get; init; }
    public AnchorPage(AnchorViewModel viewModel)
    {
        ViewModel = viewModel;
        DataContext = this;
        InitializeComponent();
    }
}
```

```xaml
<Page
    x:Class="Wpf.Ui.Gallery.Views.Pages.BasicInput.AnchorPage"
    d:DataContext="{d:DesignInstance local:AnchorPage, IsDesignTimeCreatable=False}">
    <ui:Anchor
        Grid.Column="0"
        Content="WPF UI anchor"
        Icon="{ui:SymbolIcon Link24}"
        IsEnabled="{Binding ViewModel.IsAnchorEnabled, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=local:AnchorPage}, Mode=OneWay}"
        NavigateUri="https://lepo.co/" />
</Page>
```
</code_style>

We strive to write code that can be tested. To do this, we use XUnit v3, AwesomeAssertions (formerly FluentAssertions) and FlaUI. When we write unit tests, we write them as shown below.

<testing>
```csharp
public sealed class TransitionAnimationProviderTests
{
    [Fact]
    public void ApplyTransition_ReturnsFalse_WhenDurationIsLessThan10()
    {
        UIElement mockedUiElement = Substitute.For<UIElement>();
        var result = TransitionAnimationProvider.ApplyTransition(mockedUiElement, Transition.FadeIn, -10);
        result.Should().BeFalse();
    }
}
```

When we write integration tests, we write them as shown below.

```csharp
public sealed class TitleBarTests : UiTest
{
    [Fact]
    public async Task CloseButton_ShouldCloseWindow_WhenClicked()
    {
        Button? closeButton = FindFirst("TitleBarCloseButton").AsButton();

        closeButton.Should().NotBeNull("because CloseButton should be present in the main window title bar");
        closeButton.Click(moveMouse: false);

        await Wait(2);

        Application
            ?.HasExited.Should()
            .BeTrue("because the main window should be closed after clicking the close button");
    }
}
```
</testing>


================================================
FILE: .github/dependabot.yml
================================================
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates

version: 2

updates:
  # Maintain dependencies for GitHub Actions
  - package-ecosystem: "github-actions"
    target-branch: "development"
    directory: "/"
    schedule:
        interval: "daily"
    labels:
        - "Actions" 
  # Maintain dependencies for nuget
  - package-ecosystem: "nuget"
    target-branch: "development"
    directory: "src"
    schedule:
        interval: "daily"
    labels:
        - "NuGet"


================================================
FILE: .github/labeler.yml
================================================
release:
  - base-branch: 'main'

PR:
  - base-branch: [ 'main', 'development' ]

github_actions:
- changed-files:
  - any-glob-to-any-file: '.github/workflows/**'

documentation:
- changed-files:
  - any-glob-to-any-file: 'docs/**'

dotnet:
- changed-files:
  - any-glob-to-any-file: '**/*.cs'

update:
- changed-files:
  - any-glob-to-any-file: 'src/Directory.Build.props'

NuGet:
- changed-files:
  - any-glob-to-any-file: 'src/Directory.Packages.props'

dependencies:
- changed-files:
  - any-glob-to-any-file: [ 'src/Directory.Packages.props', 'branding/package.json' ]

styles:
- changed-files:
  - any-glob-to-any-file: 'src/Wpf.Ui/**/*.xaml'

themes:
- changed-files:
  - any-glob-to-any-file: 'src/Wpf.Ui/Appearance/**'

titlebar:
- changed-files:
  - any-glob-to-any-file: 'src/Wpf.Ui/Controls/TitleBar/**'

tray:
- changed-files:
  - any-glob-to-any-file: 'src/Wpf.Ui.Tray/**'

controls:
- changed-files:
  - any-glob-to-any-file: 'src/Wpf.Ui/Controls/**'

navigation:
- changed-files:
  - any-glob-to-any-file: 'src/Wpf.Ui/Controls/NavigationView/**'

gallery:
- changed-files:
  - any-glob-to-any-file: 'src/Wpf.Ui.Gallery/**'

icons:
- changed-files:
  - any-glob-to-any-file: [ 'src/Wpf.Ui/Resources/Fonts/**', 'src/Wpf.Ui/Controls/IconSource/*', 'src/Wpf.Ui/Controls/IconElement/*' ]


================================================
FILE: .github/labels.yml
================================================
- name: "icons"
  color: "86CBEC"
  description: "Fonts and icons updates"
- name: "animations"
  color: "233C4F"
  description: "Topic is related to animations"
- name: "bug"
  color: "d73a4a"
  description: "Something isn't working"
- name: "controls"
  color: "26CB0A"
  description: "Changes to the appearance or logic of custom controls."
- name: "dependencies"
  color: "0366d6"
  description: "Pull requests that update a dependency file"
- name: "documentation"
  color: "0075ca"
  description: "Improvements or additions to documentation"
- name: "duplicate"
  color: "cfd3d7"
  description: "This issue or pull request already exists"
- name: "enhancement"
  color: "a2eeef"
  description: "New feature or request"
- name: "github_actions"
  color: "000000"
  description: "Pull requests that update GitHub Actions code"
- name: "good_first_issue"
  color: "7057ff"
  description: "Good for newcomers"
- name: "help_wanted"
  color: "008672"
  description: "Extra attention is needed"
- name: "invalid"
  color: "e4e669"
  description: "This doesn't seem right"
- name: "more_info_needed"
  color: "B60205"
  description: "More information is needed to solve the problem."
- name: "MVVM_DI"
  color: "536317"
  description: "Issues related to MVVM and Dependency Injection."
- name: "navigation"
  color: "C2AAA3"
  description: "Changes to navigation related controls."
- name: ".NET"
  color: "7121c6"
  description: "Pull requests that update .NET code."
- name: "dotnet"
  color: "7121c6"
  description: "Pull requests that update .NET code."
- name: "NuGet"
  color: "004880"
  description: "Update of the NuGet package."
- name: "performance"
  color: "D93F0B"
  description: "Performance improvements."
- name: "PR"
  color: "666666"
  description: "Pull request."
- name: "question"
  color: "d876e3"
  description: "Further information is requested."
- name: "styles"
  color: "bfd4f2"
  description: "Updates to the appearance of the controls."
- name: "themes"
  color: "080AA0"
  description: "Updates to the appearance of the themes."
- name: "update"
  color: "1D76DB"
  description: "Pull Request containing the update."
- name: "wontfix"
  color: "ffffff"
  description: "This will not be worked on."
  


================================================
FILE: .github/policies/cla.yml
================================================
name: Contributor License Agreement Policy
description: CLA policy file

resource: repository

configuration: 
   cla:
      content: https://raw.githubusercontent.com/lepoco/.github/main/CLA/lepoco.yml
      minimalChangeRequired: 
         files: 1
         codeLines: 1
      bypassUsers:
         - azclibot
         - azure-pipelines[bot]
         - azure-pipelines-bot
         - azure-powershell-bot
         - azuresdkciprbot
         - dependabot[bot]
         - dependabot-preview[bot]
         - dotnet-bot
         - dotnet-corert-bot
         - dotnet-docker-bot
         - dotnet-maestro[bot]
         - dotnet-maestro-bot
         - dotnet-winget-bot


================================================
FILE: .github/policies/platformcontext.yml
================================================
name: platform_context
description: The context for GitOps platform, this will drive GitOps specific policies
owner:
resource: repository
where:
configuration:
  platformContext:
    active: true
onFailure:
onSuccess:


================================================
FILE: .github/pull_request_template.md
================================================
<!--- Please provide a general summary of your changes in the title above -->

## Pull request type

<!-- Please try to limit your pull request to one type, submit multiple pull requests if needed. -->

Please check the type of change your PR introduces:

- [ ] Update
- [ ] Bugfix
- [ ] Feature
- [ ] Code style update (formatting, renaming)
- [ ] Refactoring (no functional changes, no api changes)
- [ ] Build related changes
- [ ] Documentation content changes

## What is the current behavior?

<!-- Please describe the current behavior that you are modifying, or link to a relevant issue. -->

Issue Number: N/A

## What is the new behavior?

<!-- Please describe the behavior or changes that are being added by this PR. -->

-
-

## Other information

<!-- Any other information that is important to this PR such as screenshots of how the component looks before and after the change. -->


================================================
FILE: .github/workflows/top-issues-dashboard.yml
================================================
name: wpf-ui-top-issues-dashboard
on:
  schedule:
    - cron: '0 0 */1 * *'

jobs:
  ShowAndLabelTopIssues:
    name: Display and label top issues.
    runs-on: ubuntu-latest
    steps:
      - name: Top Issues action
        uses: rickstaa/top-issues-action@v1.3.101
        env:
          github_token: ${{ secrets.GITHUB_TOKEN }}
        with:
          top_list_size: 10
          label: true
          dashboard: true
          dashboard_show_total_reactions: true
          top_issues: true
          top_bugs: true
          top_features: true
          feature_label: feature
          top_pull_requests: true


================================================
FILE: .github/workflows/wpf-ui-cd-docs.yaml
================================================
name: wpf-ui-cd-docs

on:
  push:
    branches: [main]

  workflow_dispatch:

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
  contents: read
  pages: write
  id-token: write

# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
  group: "pages"
  cancel-in-progress: false

jobs:
  publish:
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    runs-on: windows-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
      - name: Setup Pages
        uses: actions/configure-pages@v5
      - name: Use Node.js 18.x
        uses: actions/setup-node@v4
        with:
          node-version: 18.x
      - name: Setup .NET Core SDK 10.x
        uses: actions/setup-dotnet@v4
        with:
          dotnet-version: 10.x

      - name: Install docfx
        run: dotnet tool update -g docfx

      - name: Install dependencies
        run: dotnet restore

      - name: Install template dependencies
        run: npm ci
        working-directory: docs/templates

      - name: Build docfx template
        run: npm run build
        working-directory: docs/templates

      - name: docfx Build
        run: docfx docs/docfx.json

      - name: Upload artifact
        uses: actions/upload-pages-artifact@v3
        with:
          path: docs/_site/

      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v4


================================================
FILE: .github/workflows/wpf-ui-cd-extension.yaml
================================================
name: wpf-ui-cd-extension

on:
  push:
    branches: [main]
    paths:
      - 'src/Wpf.Ui.Extension**'

  workflow_dispatch:

jobs:
  build:
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v4
      - uses: microsoft/setup-msbuild@v2
        with:
          msbuild-architecture: x64
      - name: Setup .NET Core SDK 10.x
        uses: actions/setup-dotnet@v4
        with:
          dotnet-version: 10.x

      - uses: nuget/setup-nuget@v2
        with:
          nuget-api-key: ${{ secrets.NUGET_API_KEY }}

      - name: Restore dependencies
        run: nuget restore Wpf.Ui.sln

      - name: Build the solution
        run: msbuild src\Wpf.Ui.Extension\Wpf.Ui.Extension.csproj /t:Rebuild -p:Configuration=Release -p:RestorePackages=false -p:Platform="x64"  -p:ProductArchitecture="amd64" -p:GITHUB_ACTIONS=True -p:LangVersion=8.0

      - name: Build the solution
        run: msbuild src\Wpf.Ui.Extension\Wpf.Ui.Extension.csproj /t:Rebuild -p:Configuration=Release -p:RestorePackages=false -p:Platform="arm64" -p:ProductArchitecture="arm64" -p:GITHUB_ACTIONS=True -p:LangVersion=8.0

      - uses: actions/upload-artifact@v4
        with:
          name: wpf-ui-vs22-extension-x64
          path: src\Wpf.Ui.Extension\bin\x64\Release\Wpf.Ui.Extension.vsix

      - uses: actions/upload-artifact@v4
        with:
          name: wpf-ui-vs22-extension-arm64
          path: src\Wpf.Ui.Extension\bin\arm64\Release\Wpf.Ui.Extension.vsix


================================================
FILE: .github/workflows/wpf-ui-cd-nuget.yaml
================================================
name: wpf-ui-cd-nuget

on:
  push:
    branches: [main]
    paths:
      - 'Directory.Build.props'

  workflow_dispatch:

jobs:
  deploy:
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v4
      - uses: microsoft/setup-msbuild@v2
        with:
          msbuild-architecture: x64
      - uses: nuget/setup-nuget@v2
        with:
          nuget-api-key: ${{ secrets.NUGET_API_KEY }}
      - name: Setup .NET Core SDK 10.x
        uses: actions/setup-dotnet@v4
        with:
          dotnet-version: 10.x

      - name: Fetch the certificate
        run: |
          $signing_keys_payload = [System.Convert]::FromBase64String("${{ secrets.STRONG_NAME_KEY }}")
          $currentDirectory = Get-Location
          $certificatePath = Join-Path -Path $currentDirectory -ChildPath "src/lepo.snk"
          [IO.File]::WriteAllBytes("$certificatePath", $signing_keys_payload)

      - name: Install dependencies
        run: dotnet restore

      - name: Build
        run: dotnet build src\Wpf.Ui\Wpf.Ui.csproj --configuration Release --no-restore -p:SourceLinkEnabled=true

      - name: Build
        run: dotnet build src\Wpf.Ui.Abstractions\Wpf.Ui.Abstractions.csproj --configuration Release --no-restore -p:SourceLinkEnabled=true

      - name: Build
        run: dotnet build src\Wpf.Ui.DependencyInjection\Wpf.Ui.DependencyInjection.csproj --configuration Release --no-restore -p:SourceLinkEnabled=true

      - name: Build
        run: dotnet build src\Wpf.Ui.Tray\Wpf.Ui.Tray.csproj --configuration Release --no-restore -p:SourceLinkEnabled=true

      - name: Publish the package to NuGet.org
        continue-on-error: true
        run: nuget push **\*.nupkg -NonInteractive -SkipDuplicate -Source 'https://api.nuget.org/v3/index.json'

      - name: Publish the symbols to NuGet.org
        continue-on-error: true
        run: nuget push **\*.snupkg -NonInteractive -SkipDuplicate -Source 'https://api.nuget.org/v3/index.json'

      - name: Upload NuGet packages as artifacts
        uses: actions/upload-artifact@v4
        with:
          name: nuget-packages
          path: '**\*.nupkg'


================================================
FILE: .github/workflows/wpf-ui-labeler.yml
================================================
name: wpf-ui-labeler

on:
  - pull_request_target

jobs:
  triage:
    permissions:
      contents: read
      pull-requests: write
    runs-on: ubuntu-latest
    steps:
      - uses: actions/labeler@v5
        with:
          repo-token: "${{ secrets.GITHUB_TOKEN }}"


================================================
FILE: .github/workflows/wpf-ui-lock.yml
================================================
name: wpf-ui-lock

on:
  schedule:
    - cron: '0 0 * * 0'
  workflow_dispatch:

permissions:
  issues: write
  pull-requests: write
  discussions: write

concurrency:
  group: lock-threads

jobs:
  action:
    runs-on: ubuntu-latest
    steps:
      - uses: dessant/lock-threads@v5


================================================
FILE: .github/workflows/wpf-ui-pr-validator.yaml
================================================
name: wpf-ui-pr-validator

on:
  pull_request:
    branches: [main]

  workflow_dispatch:

jobs:
  build:
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v4
      - uses: microsoft/setup-msbuild@v2
        with:
          msbuild-architecture: x64
      - uses: nuget/setup-nuget@v2
        with:
          nuget-api-key: ${{ secrets.NUGET_API_KEY }}
      - name: Setup .NET Core SDK 10.x
        uses: actions/setup-dotnet@v4
        with:
          dotnet-version: 10.x

      - name: Install dependencies
        run: dotnet restore

      - name: Build
        run: dotnet build src\Wpf.Ui.Gallery\Wpf.Ui.Gallery.csproj --configuration Release --no-restore


================================================
FILE: .gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

# Strong Name Key files
src/lepo.snk

# DocFX
docs/api/

# Desktop service store
.DS_Store

# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates

# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs

# Visual Studio Code files
.vscode

# IntelliJ IDEA files
.idea

# Mono auto generated files
mono_crash.*

# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
[Ll]ogs/

# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/

# Visual Studio 2017 auto generated files
Generated\ Files/

# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*

# NUnit
*.VisualState.xml
TestResult.xml
nunit-*.xml

# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c

# Benchmark Results
BenchmarkDotNet.Artifacts/

# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/

# StyleCop
StyleCopReport.xml

# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc

# Chutzpah Test files
_Chutzpah*

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb

# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap

# Visual Studio Trace Files
*.e2e

# TFS 2012 Local Workspace
$tf/

# Guidance Automation Toolkit
*.gpState

# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user

# TeamCity is a build add-in
_TeamCity*

# DotCover is a Code Coverage Tool
*.dotCover

# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json

# Visual Studio code coverage results
*.coverage
*.coveragexml

# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*

# MightyMoose
*.mm.*
AutoTest.Net/

# Web workbench (sass)
.sass-cache/

# Installshield output folder
[Ee]xpress/

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish/

# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj

# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/

# NuGet Packages
*.nupkg
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets

# Microsoft Azure Build Output
csx/
*.build.csdef

# Microsoft Azure Emulator
ecf/
rcf/

# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload

# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/

# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs

# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk

# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/

# RIA/Silverlight projects
Generated_Code/

# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak

# SQL Server files
*.mdf
*.ldf
*.ndf

# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl

# Microsoft Fakes
FakesAssemblies/

# GhostDoc plugin setting file
*.GhostDoc.xml

# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/

# Visual Studio 6 build log
*.plg

# Visual Studio 6 workspace options file
*.opt

# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw

# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions

# Paket dependency manager
.paket/paket.exe
paket-files/

# FAKE - F# Make
.fake/

# CodeRush personal settings
.cr/personal

# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc

# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config

# Tabs Studio
*.tss

# Telerik's JustMock configuration file
*.jmconfig

# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs

# OpenCover UI analysis results
OpenCover/

# Azure Stream Analytics local run output
ASALocalRun/

# MSBuild Binary and Structured Log
*.binlog

# NVidia Nsight GPU debugger configuration file
*.nvuser

# MFractors (Xamarin productivity tool) working folder
.mfractor/

# Local History for Visual Studio
.localhistory/

# BeatPulse healthcheck temp database
healthchecksdb

# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/

# Ionide (cross platform F# VS Code tools) working folder
.ionide/


================================================
FILE: .vsconfig
================================================
{
    "version": "1.0",
    "components": [
        "Microsoft.Component.ClickOnce",
        "Microsoft.Component.CodeAnalysis.SDK",
        "Microsoft.Component.MSBuild",
        "Microsoft.ComponentGroup.ClickOnce.Publish",
        "Microsoft.Net.Component.4.6.2.TargetingPack",
        "Microsoft.Net.Component.4.7.2.TargetingPack",
        "Microsoft.Net.Component.4.8.1.TargetingPack",
        "Microsoft.Net.ComponentGroup.DevelopmentPrerequisites",
        "Microsoft.Net.ComponentGroup.TargetingPacks.Common",
        "Microsoft.NetCore.Component.DevelopmentTools",
        "Microsoft.NetCore.Component.Runtime.6.0",
        "Microsoft.NetCore.Component.Runtime.7.0",
        "Microsoft.NetCore.Component.SDK",
        "Microsoft.VisualStudio.Component.ManagedDesktop.Core",
        "Microsoft.VisualStudio.Component.ManagedDesktop.Prerequisites",
        "Microsoft.VisualStudio.Component.NuGet",
        "Microsoft.VisualStudio.Component.PortableLibrary",
        "Microsoft.VisualStudio.Component.Roslyn.Compiler",
        "Microsoft.VisualStudio.Component.Roslyn.LanguageServices",
        "Microsoft.VisualStudio.Workload.ManagedDesktop"
    ]
}


================================================
FILE: CNAME
================================================
wpfui.lepo.co

================================================
FILE: CODEOWNERS
================================================
# Lines starting with '#' are comments.
# Each line is a file pattern followed by one or more owners.

# These owners will be the default owners for everything in the repo,
# and will automatically be added as reviewers to all pull requests.
*       @pomianowski


================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Contributor Covenant Code of Conduct

## Our Pledge

We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.

## Our Standards

Examples of behavior that contributes to a positive environment for our
community include:

* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
  and learning from the experience
* Focusing on what is best not just for us as individuals, but for the
  overall community

Examples of unacceptable behavior include:

* The use of sexualized language or imagery, and sexual attention or
  advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email
  address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
  professional setting

## Enforcement Responsibilities

Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.

Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.

## Scope

This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
support@lepo.co.
All complaints will be reviewed and investigated promptly and fairly.

All community leaders are obligated to respect the privacy and security of the
reporter of any incident.

## Enforcement Guidelines

Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:

### 1. Correction

**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.

**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.

### 2. Warning

**Community Impact**: A violation through a single incident or series
of actions.

**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.

### 3. Temporary Ban

**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.

**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.

### 4. Permanent Ban

**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior,  harassment of an
individual, or aggression toward or disparagement of classes of individuals.

**Consequence**: A permanent ban from any sort of public interaction within
the community.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.

Community Impact Guidelines were inspired by [Mozilla's code of conduct
enforcement ladder](https://github.com/mozilla/diversity).

[homepage]: https://www.contributor-covenant.org

For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.


================================================
FILE: CONTRIBUTING.md
================================================
# Contribution Guidelines

and as always, todo

## Prerequisites

## Code

### Code style

## Other general information

## Acknowledgement


================================================
FILE: Directory.Build.props
================================================
<Project>
  <PropertyGroup>
    <RepositoryDirectory>$(MSBuildThisFileDirectory)</RepositoryDirectory>
    <BuildToolsDirectory>$(RepositoryDirectory)build\</BuildToolsDirectory>
  </PropertyGroup>
  <PropertyGroup>
    <Version>4.2.0</Version>
    <AssemblyVersion>4.2.0</AssemblyVersion>
  </PropertyGroup>
  <PropertyGroup>
    <Company>lepo.co</Company>
    <Authors>lepo.co</Authors>
    <Product>WPF-UI</Product>
    <CommonTags>lepoco;toolkit;wpf;fluent;navigation;controls;design;icons;system;accent;theme;winui</CommonTags>
    <PackageLicenseExpression>MIT</PackageLicenseExpression>
    <PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
    <Copyright>Copyright (C) 2021-2025 Leszek Pomianowski and WPF UI Contributors</Copyright>
    <PackageProjectUrl>https://github.com/lepoco/wpfui</PackageProjectUrl>
    <PackageReleaseNotes>https://github.com/lepoco/wpfui/releases</PackageReleaseNotes>
    <PackageIcon>Icon.png</PackageIcon>
    <PackageIconUrl>https://github.com/lepoco/wpfui/main/build/nuget.png</PackageIconUrl>
    <RepositoryBranch>main</RepositoryBranch>
    <RepositoryType>git</RepositoryType>
  </PropertyGroup>
  <ItemGroup>
    <SourceRoot Include="$(MSBuildThisFileDirectory)/" />
  </ItemGroup>
  <PropertyGroup>
    <NuGetAudit>true</NuGetAudit>
    <NuGetAuditLevel>moderate</NuGetAuditLevel>
    <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
    <CentralPackageTransitivePinningEnabled>false</CentralPackageTransitivePinningEnabled>
    <SuppressTfmSupportBuildWarnings>true</SuppressTfmSupportBuildWarnings>
    <_SilenceIsAotCompatibleUnsupportedWarning>true</_SilenceIsAotCompatibleUnsupportedWarning>
  </PropertyGroup>
  <PropertyGroup>
    <EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
  </PropertyGroup>
  <PropertyGroup>
    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
    <LangVersion>14.0</LangVersion>
    <Nullable>enable</Nullable>
    <!--
        Suppress ref safety warnings in unsafe contexts (see https://github.com/dotnet/csharplang/issues/6476).
        This is used eg. to replace Unsafe.SizeOf<T>() calls with just sizeof(T). The warning is not necessary
        since in order to use these APIs the caller already has to be in an unsafe context.
      -->
    <NoWarn>$(NoWarn);CS8500</NoWarn>
  </PropertyGroup>
  <PropertyGroup>
    <IsTestProject>$(MSBuildProjectName.Contains('Test'))</IsTestProject>
    <IsCoreProject Condition="$(IsTestProject)">False</IsCoreProject>
    <IsCoreProject Condition="'$(IsCoreProject)' == ''">True</IsCoreProject>
    <IsBelowNet8
      Condition="'$(TargetFramework)' == 'netstandard2.0'
                 Or '$(TargetFramework)' == 'netstandard2.1'
                 Or '$(TargetFramework)' == 'net462'
                 Or '$(TargetFramework)' == 'net472'
                 Or '$(TargetFramework)' == 'net481'
                 Or '$(TargetFramework)' == 'net5.0'
                 Or '$(TargetFramework)' == 'net6.0'
                 Or '$(TargetFramework)' == 'net7.0'
                 Or '$(TargetFramework)' == 'net8.0'
                 Or '$(TargetFramework)' == 'net9.0'
                 Or '$(TargetFramework)' == 'net10.0'"
      >True</IsBelowNet8
    >
  </PropertyGroup>
  <PropertyGroup>
    <IsPackable>true</IsPackable>
    <IsPublishable>true</IsPublishable>
    <ContinuousIntegrationBuild>$(TF_BUILD)</ContinuousIntegrationBuild>
  </PropertyGroup>
  <PropertyGroup Condition="'$(IsBelowNet8)' == 'false'">
    <DefineConstants>$(DefineConstants);NET8_0_OR_GREATER</DefineConstants>
  </PropertyGroup>
  <Choose>
    <When Condition="$(IsCoreProject)">
      <PropertyGroup>
        <PackageReadmeFile>README.md</PackageReadmeFile>
        <GenerateDocumentationFile>true</GenerateDocumentationFile>
      </PropertyGroup>
    </When>
    <Otherwise>
      <PropertyGroup>
        <IsPackable>false</IsPackable>
        <IsPublishable>false</IsPublishable>
        <NoWarn>$(NoWarn);CS8002;SA0001</NoWarn>
      </PropertyGroup>
    </Otherwise>
  </Choose>
  <Choose>
    <When Condition="'$(SourceLinkEnabled)' != 'false' and '$(VisualStudioTemplateProject)' != 'true'">
      <PropertyGroup>
        <!-- Declare that the Repository URL can be published to NuSpec -->
        <PublishRepositoryUrl>true</PublishRepositoryUrl>
        <!-- Embed source files that are not tracked by the source control manager to the PDB -->
        <EmbedUntrackedSources>true</EmbedUntrackedSources>
        <!-- Include PDB in the built .nupkg -->
        <AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>
      </PropertyGroup>
      <ItemGroup>
        <PackageReference Include="Microsoft.SourceLink.GitHub" PrivateAssets="All" />
      </ItemGroup>
    </When>
  </Choose>
</Project>


================================================
FILE: Directory.Build.targets
================================================
<Project>
  <PropertyGroup Condition="'$(GITHUB_ACTIONS)' == 'true'">
    <ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
  </PropertyGroup>
  <PropertyGroup>
    <CommonTags Condition="$(IsCoreProject)">$(CommonTags);.NET</CommonTags>
    <PackageTags Condition="'$(PackageTags)' != ''">$(CommonTags);$(PackageTags)</PackageTags>
    <PackageTags Condition="'$(PackageTags)' == ''">$(CommonTags)</PackageTags>
  </PropertyGroup>
  <PropertyGroup Condition="'$(GeneratePackageOnBuild)' == 'true'">
    <GenerateLibraryLayout>true</GenerateLibraryLayout>
    <PackageReadmeFile>README.md</PackageReadmeFile>
    <DeterministicSourcePaths Condition="'$(SourceLinkEnabled)' == 'true'">true</DeterministicSourcePaths>
    <IncludeSymbols>true</IncludeSymbols>
    <SymbolPackageFormat>snupkg</SymbolPackageFormat>
    <PublishRepositoryUrl>true</PublishRepositoryUrl>
    <EmbedUntrackedSources>true</EmbedUntrackedSources>
  </PropertyGroup>
  <ItemGroup Condition="'$(GeneratePackageOnBuild)' == 'true'">
    <None Include="$(BuildToolsDirectory)nuget.png" Pack="true" PackagePath="\Icon.png" Visible="False" />
    <None Include="$(RepositoryDirectory)ThirdPartyNotices.txt" Pack="true" PackagePath="\" Visible="False" />
    <None Include="$(RepositoryDirectory)LICENSE.md" Pack="true" PackagePath="\LICENSE.md" Visible="False" />
    <None Include="$(RepositoryDirectory)README.md" Pack="true" PackagePath="\README.md" Visible="False" />
  </ItemGroup>
  <ItemGroup Condition="'$(MSBuildProjectExtension)' != '.dcproj' and '$(MSBuildProjectExtension)' != '.sfproj' and '$(VisualStudioTemplateProject)' != 'true' and '$(VisualStudioExtensionProject)' != 'true'">
    <PackageReference Include="AsyncFixer">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="IDisposableAnalyzers">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="StyleCop.Analyzers">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="PolySharp" Condition="'$(TargetFramework)' == 'netstandard2.1'">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>build; analyzers</IncludeAssets>
    </PackageReference>
    <PackageReference Include="PolySharp" Condition="'$(TargetFramework)' == 'netstandard2.0'">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>build; analyzers</IncludeAssets>
    </PackageReference>
    <PackageReference Include="PolySharp" Condition="'$(TargetFramework)' == 'net481'">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>build; analyzers</IncludeAssets>
    </PackageReference>
    <PackageReference Include="PolySharp" Condition="'$(TargetFramework)' == 'net472'">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>build; analyzers</IncludeAssets>
    </PackageReference>
    <PackageReference Include="PolySharp" Condition="'$(TargetFramework)' == 'net462'">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>build; analyzers</IncludeAssets>
    </PackageReference>
  </ItemGroup>
  <Target Name="AddCommitHashToAssemblyAttributes" BeforeTargets="GetAssemblyAttributes">
    <ItemGroup>
      <AssemblyAttribute
        Include="System.Reflection.AssemblyMetadataAttribute"
        Condition="'$(SourceRevisionId)' != ''"
      >
        <_Parameter1>CommitHash</_Parameter1>
        <_Parameter2>$(SourceRevisionId)</_Parameter2>
      </AssemblyAttribute>
    </ItemGroup>
  </Target>
  <!-- Configure trimming for projects on .NET 6 and above -->
  <PropertyGroup Condition="'$(TargetFramework)' == 'net6.0' OR '$(TargetFramework)' == 'net7.0' OR '$(TargetFramework)' == 'net8.0' OR '$(TargetFramework)' == 'net9.0' OR '$(TargetFramework)' == 'net10.0'">
    <IsTrimmable>true</IsTrimmable>
    <EnableTrimAnalyzer>true</EnableTrimAnalyzer>
    <EnableAotAnalyzer>true</EnableAotAnalyzer>
    <EnableSingleFileAnalyzer>true</EnableSingleFileAnalyzer>
  </PropertyGroup>
  <PropertyGroup Condition="'$(SourceLinkEnabled)' == 'true' AND '$(GeneratePackageOnBuild)' == 'true'">
    <SignAssembly>true</SignAssembly>
    <AssemblyOriginatorKeyFile>$(RepositoryDirectory)\src\lepo.snk</AssemblyOriginatorKeyFile>
  </PropertyGroup>
  <Target
    Name="WpfSourceLinkWorkaround"
    BeforeTargets="InitializeSourceRootMappedPaths"
    Condition="'$(UseWPF)' == 'true'"
  >
    <!-- WPF causes an error with SourceLink because its build targets create a temporary project without a PackageReference to SourceLink, see https://github.com/dotnet/sourcelink/issues/91,
         causing the @SourceRoot property to be unexpectedly empty for the MapSourceRoot task
        
         For context, see https://github.com/dotnet/roslyn/blob/main/src/Compilers/Core/MSBuildTask/Microsoft.Managed.Core.targets
         and https://github.com/dotnet/roslyn/blob/main/src/Compilers/Core/MSBuildTask/MapSourceRoots.cs
         
         This workaround sets the SourceRoot manually to some deterministic value to keep the promise given by having DeterministicSourcePaths set to true -->
    <Message Text="using deterministic source path workaround for WPF project instead of SourceLink" />
    <ItemGroup>
      <!-- There needs to be at least one SourceRoot defined, its value does not seem to matter as long as it ends with a directory separator -->
      <SourceRoot Include="\" />
    </ItemGroup>
  </Target>
</Project>


================================================
FILE: Directory.Packages.props
================================================
<Project>
  <ItemGroup>
    <PackageVersion Include="AsyncFixer" Version="1.6.0" />
    <PackageVersion Include="AwesomeAssertions" Version="9.3.0" />
    <PackageVersion Include="CommunityToolkit.Mvvm" Version="8.4.0" />
    <PackageVersion Include="coverlet.collector" Version="6.0.4" />
    <PackageVersion Include="FlaUI.Core" Version="5.0.0" />
    <PackageVersion Include="FlaUI.UIA3" Version="5.0.0" />
    <PackageVersion Include="IDisposableAnalyzers" Version="4.0.8" />
    <PackageVersion Include="Lepo.i18n.DependencyInjection" Version="2.0.0" />
    <PackageVersion Include="Lepo.i18n.Wpf" Version="2.0.0" />
    <PackageVersion Include="Lepo.i18n" Version="2.0.0" />
    <PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.12.0" />
    <PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="10.0.0" />
    <PackageVersion Include="Microsoft.Extensions.Hosting" Version="10.0.0" />
    <PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.0.0" />
    <PackageVersion Include="Microsoft.SourceLink.GitHub" Version="8.0.0" />
    <PackageVersion Include="Microsoft.VisualStudio.CoreUtility" Version="17.2.3194" />
    <PackageVersion Include="Microsoft.VisualStudio.SDK" Version="17.12.4039" ExcludeAssets="runtime" />
    <PackageVersion Include="Microsoft.VSSDK.BuildTools" Version="17.12.2069" />
    <PackageVersion Include="Microsoft.Web.WebView2" Version="1.0.3595.46" />
    <PackageVersion Include="Microsoft.Windows.CsWin32" Version="0.3.242" />
    <PackageVersion Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.26100.1742" />
    <PackageVersion Include="NativeMethods" Version="0.0.3" />
    <PackageVersion Include="NSubstitute" Version="5.3.0" />
    <PackageVersion Include="PolySharp" Version="1.15.0" />
    <PackageVersion Include="ReflectionEventing.DependencyInjection" Version="3.1.0" />
    <PackageVersion Include="ReflectionEventing" Version="3.1.0" />
    <PackageVersion Include="StyleCop.Analyzers" Version="1.2.0-beta.556" />
    <PackageVersion Include="System.Drawing.Common" Version="10.0.0" />
    <PackageVersion Include="System.Memory" Version="4.6.3" />
    <PackageVersion Include="System.ValueTuple" Version="4.5.0" />
    <PackageVersion Include="WpfAnalyzers" Version="4.1.1" />
    <PackageVersion Include="xunit.runner.visualstudio" Version="3.1.5" />
    <PackageVersion Include="xunit.v3" Version="3.2.0" />
    <PackageVersion Include="xunit" Version="2.9.3" />
  </ItemGroup>
</Project>


================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) 2021-2025 Leszek Pomianowski and WPF UI Contributors. https://lepo.co/

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: LICENSE.md
================================================
MIT License

Copyright (c) 2021-2025 Leszek Pomianowski and WPF UI Contributors. https://lepo.co/

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: README.md
================================================
![WPF UI Banner Dark](https://user-images.githubusercontent.com/13592821/174165081-9c62d188-ecb6-4200-abd8-419afbaf32c2.png#gh-dark-mode-only)
![WPF UI Banner Light](https://user-images.githubusercontent.com/13592821/174165388-921c4745-90ed-4396-9a4b-9c86478f7447.png#gh-light-mode-only)

# WPF UI

[Created with ❤ in Poland by Leszek Pomianowski](https://lepo.co/) and [wonderful open-source community](https://github.com/lepoco/wpfui/graphs/contributors).  
WPF UI provides the Fluent experience in your known and loved WPF framework. Intuitive design, themes, navigation and new immersive controls. All natively and effortlessly. Library changes the base elements like `Page`, `ToggleButton` or `List`, and also includes additional controls like `Navigation`, `NumberBox`, `Dialog` or `Snackbar`.

[![Discord](https://img.shields.io/discord/1071051348348514375?label=discord)](https://discord.gg/AR9ywDUwGq) [![GitHub license](https://img.shields.io/github/license/lepoco/wpfui)](https://github.com/lepoco/wpfui/blob/master/LICENSE) [![Nuget](https://img.shields.io/nuget/v/WPF-UI)](https://www.nuget.org/packages/WPF-UI/) [![Nuget](https://img.shields.io/nuget/dt/WPF-UI?label=nuget)](https://www.nuget.org/packages/WPF-UI/)

**Deliver humanitarian aid directly to Ukraine**  
<https://bank.gov.ua/en/about/humanitarian-aid-to-ukraine>

![ua](https://user-images.githubusercontent.com/13592821/184498735-d296feb8-0f9b-45df-bc0d-b7f0b6f580ed.png)

## 🛟 Support plans

To ensure you receive the expert guidance you need, we offer a variety of support plans designed to meet the diverse needs of our community. Whether you are looking to modernize your WPF applications or need assistance with our other libraries, our tailored support solutions are here to help. From priority email support to 24/7 dedicated assistance, we provide flexible plans to suit your project requirements.

[Take a look at the lepo.co support plans](https://lepo.co/support)

## 🤝 Help us keep working on this project

Support the development of WPF UI and other innovative projects by becoming a sponsor on GitHub! Your monthly or one-time contributions help us continue to deliver high-quality, open-source solutions that empower developers worldwide.

[Sponsor WPF UI on GitHub](https://github.com/sponsors/lepoco)

## 🚀 Getting started

For a starter guide see our [documentation](https://wpfui.lepo.co/documentation/).

**WPF UI Gallery** is a free application available in the _Microsoft Store_, with which you can test all functionalities.  
<https://apps.microsoft.com/store/detail/wpf-ui/9N9LKV8R9VGM?cid=windows-lp-hero>

```powershell
winget install 'WPF UI'
```

**WPF UI** is delivered via **NuGet** package manager. You can find the package here:  
<https://www.nuget.org/packages/wpf-ui/>

**Visual Studio**  
The plugin for **Visual Studio 2022** let you easily create new projects using **WPF UI**.  
<https://marketplace.visualstudio.com/items?itemName=lepo.wpf-ui>

## 📷 Screenshots

![Demo App Sample](https://user-images.githubusercontent.com/13592821/166259110-0fb98120-fe34-4e6d-ab92-9f72ad7113c3.png)

![Monaco Editor](https://user-images.githubusercontent.com/13592821/258610583-7d71f69d-45b3-4be6-bcb8-8cf6cd60a2ff.png)

![Store App Sample](https://user-images.githubusercontent.com/13592821/165918914-6948fb42-1ee1-4c36-870e-65bb8ffe3c8a.png)

## 🏗️ Works with Visual Studio Designer

![VS2022 Designer Preview](https://user-images.githubusercontent.com/13592821/165919228-0aa3a36c-fb37-4198-835e-53488845226c.png)

## ❤️ Custom Tray icon and menu in pure WPF

![WPF UI Tray menu in WPF](https://user-images.githubusercontent.com/13592821/166259470-2d48a88e-47ce-4f8f-8f07-c9b110de64a5.png)

## ⚓ Custom Windows 11 SnapLayout available for TitleBar

![WPF UI Snap Layout for WPF](https://user-images.githubusercontent.com/13592821/166259869-e60d37e4-ded4-46bf-80d9-f92c47266f34.png)

## 📖 Documentation

Documentation can be found at <https://wpfui.lepo.co/>. We also have a [tutorial](#-getting-started) over there for newcomers.

## 🚧 Development

If you want to propose a new functionality or submit a bugfix, create a [Pull Request](https://github.com/lepoco/wpfui/compare/main...main) for the branch [main](https://github.com/lepoco/wpfui/tree/main).

## 📐 How to use?

First, your application needs to load custom styles, add in the **MyApp\App.xaml** file:

```xml
<Application
  ...
  xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml">
  <Application.Resources>
    <ResourceDictionary>
      <ResourceDictionary.MergedDictionaries>
        <ui:ThemesDictionary Theme="Light" />
        <ui:ControlsDictionary />
      </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
  </Application.Resources>
</Application>
```

If your application does not have **MyApp\App.xaml** file, use `ApplicationThemeManager.Apply(frameworkElement)` to apply/update the theme resource in the `frameworkElement`.

```C#
public partial class MainWindow
{
    public MainWindow()
    {
        InitializeComponent();
        ApplicationThemeManager.Apply(this);
    }
}
```

Now you can create fantastic apps, e.g. with one button:

```xml
<ui:FluentWindow
  ...
  xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml">
  <StackPanel>
      <ui:TitleBar Title="WPF UI"/>
      <ui:Card Margin="8">
          <ui:Button Content="Hello World" Icon="{ui:SymbolIcon Fluent24}" />
      </ui:Card>
  </StackPanel>
</ui:FluentWindow>
```

## Microsoft Property

Design of the interface, choice of colors and the appearance of the controls were inspired by projects made by Microsoft for Windows 11.  
The Wpf.Ui.Gallery app includes icons from _Microsoft WinUI 3 Gallery_ app. They are used here as an example of creating tools for Microsoft systems.

## Segoe Fluent Icons

**WPF UI** uses Fluent System Icons. Although this font was also created by Microsoft, it does not contain all the icons for Windows 11. If you need the missing icons, add Segoe Fluent Icons to your application.  
According to the EULA of Segoe Fluent Icons we cannot ship a copy of it with this dll. Segoe Fluent Icons is installed by default on Windows 11, but if you want these icons in an application for Windows 10 and below, you must manually add the font to your application's resources.  
[https://docs.microsoft.com/en-us/windows/apps/design/style/segoe-fluent-icons-font](https://docs.microsoft.com/en-us/windows/apps/design/style/segoe-fluent-icons-font)  
[https://docs.microsoft.com/en-us/windows/apps/design/downloads/#fonts](https://docs.microsoft.com/en-us/windows/apps/design/downloads/#fonts)

In the app dictionaries, you can add an alternate path to the font

```XML
<FontFamily x:Key="SegoeFluentIcons">pack://application:,,,/;component/Fonts/#Segoe Fluent Icons</FontFamily>
```

## Code of Conduct

This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behavior in our community.

## License

**WPF UI** is free and open source software licensed under **MIT License**. You can use it in private and commercial projects.  
Keep in mind that you must include a copy of the license in your project.


================================================
FILE: SECURITY.md
================================================
# Security Policy

## Supported Versions

At the moment, the only supported version of the **WPF UI** is the newest one. You can find it on _NuGet_.  
https://www.nuget.org/packages/wpf-ui/

## Reporting a Vulnerability

Security issues and bugs should be reported privately, by emailing support (at) lepo.co  
lepo.co does not offer Bug Bounty for the **WPF UI** library.

Please do not open issues for anything you think might have a security implication.


================================================
FILE: Settings.XamlStyler
================================================
{
    "AttributesTolerance": 2,
    "KeepFirstAttributeOnSameLine": false,
    "MaxAttributeCharactersPerLine": 0,
    "MaxAttributesPerLine": 1,
    "NewlineExemptionElements": "RadialGradientBrush, GradientStop, LinearGradientBrush, ScaleTransform, SkewTransform, RotateTransform, TranslateTransform, Trigger, Condition, Setter",
    "SeparateByGroups": false,
    "AttributeIndentation": 0,
    "AttributeIndentationStyle": 1,
    "RemoveDesignTimeReferences": false,
    "IgnoreDesignTimeReferencePrefix": false,
    "EnableAttributeReordering": true,
    "AttributeOrderingRuleGroups": [
        "x:Class",
        "xmlns, xmlns:x",
        "xmlns:*",
        "x:Key, Key, x:Name, Name, x:Uid, Uid, Title",
        "Grid.Row, Grid.RowSpan, Grid.Column, Grid.ColumnSpan, Canvas.Left, Canvas.Top, Canvas.Right, Canvas.Bottom",
        "Width, Height, MinWidth, MinHeight, MaxWidth, MaxHeight",
        "Margin, Padding, HorizontalAlignment, VerticalAlignment, HorizontalContentAlignment, VerticalContentAlignment, Panel.ZIndex",
        "*:*, *",
        "PageSource, PageIndex, Offset, Color, TargetName, Property, Value, StartPoint, EndPoint",
        "mc:Ignorable, d:IsDataSource, d:LayoutOverrides, d:IsStaticText",
        "Storyboard.*, From, To, Duration"
    ],
    "FirstLineAttributes": "",
    "OrderAttributesByName": true,
    "PutEndingBracketOnNewLine": false,
    "RemoveEndingTagOfEmptyElement": true,
    "SpaceBeforeClosingSlash": true,
    "RootElementLineBreakRule": 0,
    "ReorderVSM": 2,
    "ReorderGridChildren": false,
    "ReorderCanvasChildren": false,
    "ReorderSetters": 0,
    "FormatMarkupExtension": true,
    "NoNewLineMarkupExtensions": "x:Bind, Binding",
    "ThicknessSeparator": 2,
    "ThicknessAttributes": "Margin, Padding, BorderThickness, ThumbnailClipMargin",
    "FormatOnSave": true,
    "CommentPadding": 2,
    "IndentSize": 4,
    "IndentWithTabs": false
}

================================================
FILE: ThirdPartyNotices.txt
================================================
WPF-UI

THIRD-PARTY SOFTWARE NOTICES AND INFORMATION
Do Not Translate or Localize

This project incorporates components from the projects listed below. The original copyright notices and the licenses under which the authors received such components are set forth below.

1.	sbaeumlisberger/VirtualizingWrapPanel version 2.0.6 (https://github.com/sbaeumlisberger/VirtualizingWrapPanel), included in Wpf.Ui.
2.	microsoft/fluentui-system-icons version 1.1.242 (https://github.com/microsoft/fluentui-system-icons), included in Wpf.Ui.
3.	dotnet/wpf version 8.0 (https://github.com/dotnet/wpf), included in Wpf.Ui.
4.	microsoft/microsoft-ui-xaml version 3.0 (https://github.com/microsoft/microsoft-ui-xaml), included in Wpf.Ui.
5.	microsoft/segoe-fluent-icons-font version 3.0 (https://learn.microsoft.com/en-us/windows/apps/design/style/segoe-fluent-icons-font), included in Wpf.Ui.

%% sbaeumlisberger/VirtualizingWrapPanel NOTICES AND INFORMATION BEGIN HERE
=========================================
MIT License

Copyright (c) 2019 S. Bäumlisberger

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
=========================================
END OF sbaeumlisberger/VirtualizingWrapPanel NOTICES AND INFORMATION

%% microsoft/fluentui-system-icons NOTICES AND INFORMATION BEGIN HERE
=========================================
MIT License

Copyright (c) 2020 Microsoft Corporation

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
=========================================
END OF microsoft/fluentui-system-icons NOTICES AND INFORMATION

%% dotnet/wpf NOTICES AND INFORMATION BEGIN HERE
=========================================
The MIT License (MIT)

Copyright (c) .NET Foundation and Contributors

All rights reserved.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
=========================================
END OF dotnet/wpf NOTICES AND INFORMATION

%% microsoft/microsoft-ui-xaml NOTICES AND INFORMATION BEGIN HERE
=========================================
MIT License

Copyright (c) Microsoft Corporation. All rights reserved.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE
=========================================
END OF microsoft/microsoft-ui-xaml NOTICES AND INFORMATION

%% microsoft/segoe-fluent-icons-font NOTICES AND INFORMATION BEGIN HERE
=========================================
You may use the Segoe and icon fonts, or glyphs included in this file (“Software”) solely to design, develop and test your programs that run on a Microsoft Platform, a Microsoft Platform includes but is not limited to any hardware or software product or service branded by trademark, trade dress, copyright or some other recognized means, as a product or service of Microsoft. This license does not grant you the right to distribute or sublicense all or part of the Software to any third party.  By using the Software, you agree to these terms. If you do not agree to these terms, do not use the Software.
=========================================
END OF microsoft/segoe-fluent-icons-font NOTICES AND INFORMATION


================================================
FILE: Wpf.Ui.Gallery.slnf
================================================
{
  "solution": {
    "path": "Wpf.Ui.sln",
    "projects": [
      "src\\Wpf.Ui.Gallery.Package\\Wpf.Ui.Gallery.Package.wapproj",
      "src\\Wpf.Ui.Gallery\\Wpf.Ui.Gallery.csproj",
      "src\\Wpf.Ui.SyntaxHighlight\\Wpf.Ui.SyntaxHighlight.csproj",
      "src\\Wpf.Ui.ToastNotifications\\Wpf.Ui.ToastNotifications.csproj",
      "src\\Wpf.Ui.Tray\\Wpf.Ui.Tray.csproj",
      "src\\Wpf.Ui\\Wpf.Ui.csproj"
    ]
  }
}

================================================
FILE: Wpf.Ui.Library.slnf
================================================
{
  "solution": {
    "path": "Wpf.Ui.sln",
    "projects": [
      "src\\Wpf.Ui.ToastNotifications\\Wpf.Ui.ToastNotifications.csproj",
      "src\\Wpf.Ui.Tray\\Wpf.Ui.Tray.csproj",
      "src\\Wpf.Ui\\Wpf.Ui.csproj"
    ]
  }
}

================================================
FILE: Wpf.Ui.sln
================================================

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 18
VisualStudioVersion = 18.0.11201.2 d18.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{21DB16AA-40BB-428B-AFE8-DEF4E3F0DC49}"
	ProjectSection(SolutionItems) = preProject
		.editorconfig = .editorconfig
		Directory.Build.props = Directory.Build.props
		Directory.Build.targets = Directory.Build.targets
		Directory.Packages.props = Directory.Packages.props
		LICENSE = LICENSE
		LICENSE.md = LICENSE.md
		nuget.config = nuget.config
		README.md = README.md
		Settings.XamlStyler = Settings.XamlStyler
		ThirdPartyNotices.txt = ThirdPartyNotices.txt
	EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wpf.Ui.Gallery", "src\Wpf.Ui.Gallery\Wpf.Ui.Gallery.csproj", "{E55BFB14-9DA6-434A-8153-BFE124D71818}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wpf.Ui", "src\Wpf.Ui\Wpf.Ui.csproj", "{1ADC87D1-8963-4100-845A-18477824718E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wpf.Ui.FontMapper", "src\Wpf.Ui.FontMapper\Wpf.Ui.FontMapper.csproj", "{50BAB8DE-6558-4E77-87E5-CD533CBBB72F}"
EndProject
Project("{C7167F0D-BC9F-4E6E-AFE1-012C56B48DB5}") = "Wpf.Ui.Gallery.Package", "src\Wpf.Ui.Gallery.Package\Wpf.Ui.Gallery.Package.wapproj", "{50C713C3-555E-491F-87EE-C806BEC0579F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wpf.Ui.UnitTests", "tests\Wpf.Ui.UnitTests\Wpf.Ui.UnitTests.csproj", "{AE87BE68-DFDC-46D8-BC55-DC9D1DD47F4C}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{35AC6218-CBEA-4FDA-8CE1-D1EBD6FD8D4A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wpf.Ui.Extension", "src\Wpf.Ui.Extension\Wpf.Ui.Extension.csproj", "{1298D974-9D81-4A93-9374-EA6A0E723DEB}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wpf.Ui.Extension.Template.Compact", "src\Wpf.Ui.Extension.Template.Compact\Wpf.Ui.Extension.Template.Compact.csproj", "{14D7431C-6CFF-4191-BB88-2B8D5F323A30}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wpf.Ui.Extension.Template.Blank", "src\Wpf.Ui.Extension.Template.Blank\Wpf.Ui.Extension.Template.Blank.csproj", "{AB3D44B5-9491-487E-A134-9AC5BED2B981}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wpf.Ui.Extension.Template.Fluent", "src\Wpf.Ui.Extension.Template.Fluent\Wpf.Ui.Extension.Template.Fluent.csproj", "{4D2706B5-27A9-4542-BD4D-8C22D12D0628}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wpf.Ui.ToastNotifications", "src\Wpf.Ui.ToastNotifications\Wpf.Ui.ToastNotifications.csproj", "{3E84FE46-D3FD-4E8A-9208-95E315F16E1F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wpf.Ui.Tray", "src\Wpf.Ui.Tray\Wpf.Ui.Tray.csproj", "{073BF126-377B-49CD-838A-E8B779EB4862}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wpf.Ui.SyntaxHighlight", "src\Wpf.Ui.SyntaxHighlight\Wpf.Ui.SyntaxHighlight.csproj", "{07F7A65A-6061-4606-ACA2-F8D1A3D0E19A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wpf.Ui.Abstractions", "src\Wpf.Ui.Abstractions\Wpf.Ui.Abstractions.csproj", "{F3A0BD51-2B8C-4E75-A64B-0AED46A22F74}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Samples", "Samples", "{D7EA6A65-3CB5-4A59-934A-B8402C849107}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wpf.Ui.Demo.Console", "samples\Wpf.Ui.Demo.Console\Wpf.Ui.Demo.Console.csproj", "{6F1F6A8D-A530-4C4F-9360-219AC3B43FAA}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wpf.Ui.Demo.Mvvm", "samples\Wpf.Ui.Demo.Mvvm\Wpf.Ui.Demo.Mvvm.csproj", "{5138077E-670E-413D-94D1-0825B6D1201B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wpf.Ui.Demo.Simple", "samples\Wpf.Ui.Demo.Simple\Wpf.Ui.Demo.Simple.csproj", "{E37CD05A-EBFC-429D-A550-BEE44119FA9E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wpf.Ui.Demo.Dialogs", "samples\Wpf.Ui.Demo.Dialogs\Wpf.Ui.Demo.Dialogs.csproj", "{7F6C7E7A-A4B5-4D12-88EB-217CA59284F4}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wpf.Ui.DependencyInjection", "src\Wpf.Ui.DependencyInjection\Wpf.Ui.DependencyInjection.csproj", "{9C8D6133-9417-43A1-B54F-725009569D71}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wpf.Ui.Demo.SetResources.Simple", "samples\Wpf.Ui.Demo.SetResources.Simple\Wpf.Ui.Demo.SetResources.Simple.csproj", "{3B424CF4-09F8-47D3-8420-53D7A1165B9C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wpf.Ui.Gallery.IntegrationTests", "tests\Wpf.Ui.Gallery.IntegrationTests\Wpf.Ui.Gallery.IntegrationTests.csproj", "{A396F1D6-55CF-493E-B541-A50B8F29395A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wpf.Ui.FlaUI", "src\Wpf.Ui.FlaUI\Wpf.Ui.FlaUI.csproj", "{3E29F5F8-8310-45F4-A648-8F44F32B6472}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Any CPU = Debug|Any CPU
		Debug|arm64 = Debug|arm64
		Debug|x64 = Debug|x64
		Debug|x86 = Debug|x86
		Release|Any CPU = Release|Any CPU
		Release|arm64 = Release|arm64
		Release|x64 = Release|x64
		Release|x86 = Release|x86
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{E55BFB14-9DA6-434A-8153-BFE124D71818}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{E55BFB14-9DA6-434A-8153-BFE124D71818}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{E55BFB14-9DA6-434A-8153-BFE124D71818}.Debug|arm64.ActiveCfg = Debug|arm64
		{E55BFB14-9DA6-434A-8153-BFE124D71818}.Debug|arm64.Build.0 = Debug|arm64
		{E55BFB14-9DA6-434A-8153-BFE124D71818}.Debug|x64.ActiveCfg = Debug|x64
		{E55BFB14-9DA6-434A-8153-BFE124D71818}.Debug|x64.Build.0 = Debug|x64
		{E55BFB14-9DA6-434A-8153-BFE124D71818}.Debug|x86.ActiveCfg = Debug|x86
		{E55BFB14-9DA6-434A-8153-BFE124D71818}.Debug|x86.Build.0 = Debug|x86
		{E55BFB14-9DA6-434A-8153-BFE124D71818}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{E55BFB14-9DA6-434A-8153-BFE124D71818}.Release|Any CPU.Build.0 = Release|Any CPU
		{E55BFB14-9DA6-434A-8153-BFE124D71818}.Release|arm64.ActiveCfg = Release|arm64
		{E55BFB14-9DA6-434A-8153-BFE124D71818}.Release|arm64.Build.0 = Release|arm64
		{E55BFB14-9DA6-434A-8153-BFE124D71818}.Release|x64.ActiveCfg = Release|x64
		{E55BFB14-9DA6-434A-8153-BFE124D71818}.Release|x64.Build.0 = Release|x64
		{E55BFB14-9DA6-434A-8153-BFE124D71818}.Release|x86.ActiveCfg = Release|x86
		{E55BFB14-9DA6-434A-8153-BFE124D71818}.Release|x86.Build.0 = Release|x86
		{1ADC87D1-8963-4100-845A-18477824718E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{1ADC87D1-8963-4100-845A-18477824718E}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{1ADC87D1-8963-4100-845A-18477824718E}.Debug|arm64.ActiveCfg = Debug|Any CPU
		{1ADC87D1-8963-4100-845A-18477824718E}.Debug|arm64.Build.0 = Debug|Any CPU
		{1ADC87D1-8963-4100-845A-18477824718E}.Debug|x64.ActiveCfg = Debug|Any CPU
		{1ADC87D1-8963-4100-845A-18477824718E}.Debug|x64.Build.0 = Debug|Any CPU
		{1ADC87D1-8963-4100-845A-18477824718E}.Debug|x86.ActiveCfg = Debug|Any CPU
		{1ADC87D1-8963-4100-845A-18477824718E}.Debug|x86.Build.0 = Debug|Any CPU
		{1ADC87D1-8963-4100-845A-18477824718E}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{1ADC87D1-8963-4100-845A-18477824718E}.Release|Any CPU.Build.0 = Release|Any CPU
		{1ADC87D1-8963-4100-845A-18477824718E}.Release|arm64.ActiveCfg = Release|Any CPU
		{1ADC87D1-8963-4100-845A-18477824718E}.Release|arm64.Build.0 = Release|Any CPU
		{1ADC87D1-8963-4100-845A-18477824718E}.Release|x64.ActiveCfg = Release|Any CPU
		{1ADC87D1-8963-4100-845A-18477824718E}.Release|x64.Build.0 = Release|Any CPU
		{1ADC87D1-8963-4100-845A-18477824718E}.Release|x86.ActiveCfg = Release|Any CPU
		{1ADC87D1-8963-4100-845A-18477824718E}.Release|x86.Build.0 = Release|Any CPU
		{50BAB8DE-6558-4E77-87E5-CD533CBBB72F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{50BAB8DE-6558-4E77-87E5-CD533CBBB72F}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{50BAB8DE-6558-4E77-87E5-CD533CBBB72F}.Debug|arm64.ActiveCfg = Debug|Any CPU
		{50BAB8DE-6558-4E77-87E5-CD533CBBB72F}.Debug|arm64.Build.0 = Debug|Any CPU
		{50BAB8DE-6558-4E77-87E5-CD533CBBB72F}.Debug|x64.ActiveCfg = Debug|Any CPU
		{50BAB8DE-6558-4E77-87E5-CD533CBBB72F}.Debug|x64.Build.0 = Debug|Any CPU
		{50BAB8DE-6558-4E77-87E5-CD533CBBB72F}.Debug|x86.ActiveCfg = Debug|Any CPU
		{50BAB8DE-6558-4E77-87E5-CD533CBBB72F}.Debug|x86.Build.0 = Debug|Any CPU
		{50BAB8DE-6558-4E77-87E5-CD533CBBB72F}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{50BAB8DE-6558-4E77-87E5-CD533CBBB72F}.Release|Any CPU.Build.0 = Release|Any CPU
		{50BAB8DE-6558-4E77-87E5-CD533CBBB72F}.Release|arm64.ActiveCfg = Release|Any CPU
		{50BAB8DE-6558-4E77-87E5-CD533CBBB72F}.Release|arm64.Build.0 = Release|Any CPU
		{50BAB8DE-6558-4E77-87E5-CD533CBBB72F}.Release|x64.ActiveCfg = Release|Any CPU
		{50BAB8DE-6558-4E77-87E5-CD533CBBB72F}.Release|x64.Build.0 = Release|Any CPU
		{50BAB8DE-6558-4E77-87E5-CD533CBBB72F}.Release|x86.ActiveCfg = Release|Any CPU
		{50BAB8DE-6558-4E77-87E5-CD533CBBB72F}.Release|x86.Build.0 = Release|Any CPU
		{50C713C3-555E-491F-87EE-C806BEC0579F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{50C713C3-555E-491F-87EE-C806BEC0579F}.Debug|arm64.ActiveCfg = Debug|ARM64
		{50C713C3-555E-491F-87EE-C806BEC0579F}.Debug|x64.ActiveCfg = Debug|x64
		{50C713C3-555E-491F-87EE-C806BEC0579F}.Debug|x86.ActiveCfg = Debug|x86
		{50C713C3-555E-491F-87EE-C806BEC0579F}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{50C713C3-555E-491F-87EE-C806BEC0579F}.Release|arm64.ActiveCfg = Release|ARM64
		{50C713C3-555E-491F-87EE-C806BEC0579F}.Release|arm64.Build.0 = Release|ARM64
		{50C713C3-555E-491F-87EE-C806BEC0579F}.Release|arm64.Deploy.0 = Release|ARM64
		{50C713C3-555E-491F-87EE-C806BEC0579F}.Release|x64.ActiveCfg = Release|x64
		{50C713C3-555E-491F-87EE-C806BEC0579F}.Release|x64.Build.0 = Release|x64
		{50C713C3-555E-491F-87EE-C806BEC0579F}.Release|x64.Deploy.0 = Release|x64
		{50C713C3-555E-491F-87EE-C806BEC0579F}.Release|x86.ActiveCfg = Release|x86
		{50C713C3-555E-491F-87EE-C806BEC0579F}.Release|x86.Build.0 = Release|x86
		{50C713C3-555E-491F-87EE-C806BEC0579F}.Release|x86.Deploy.0 = Release|x86
		{AE87BE68-DFDC-46D8-BC55-DC9D1DD47F4C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{AE87BE68-DFDC-46D8-BC55-DC9D1DD47F4C}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{AE87BE68-DFDC-46D8-BC55-DC9D1DD47F4C}.Debug|arm64.ActiveCfg = Debug|Any CPU
		{AE87BE68-DFDC-46D8-BC55-DC9D1DD47F4C}.Debug|arm64.Build.0 = Debug|Any CPU
		{AE87BE68-DFDC-46D8-BC55-DC9D1DD47F4C}.Debug|x64.ActiveCfg = Debug|Any CPU
		{AE87BE68-DFDC-46D8-BC55-DC9D1DD47F4C}.Debug|x64.Build.0 = Debug|Any CPU
		{AE87BE68-DFDC-46D8-BC55-DC9D1DD47F4C}.Debug|x86.ActiveCfg = Debug|Any CPU
		{AE87BE68-DFDC-46D8-BC55-DC9D1DD47F4C}.Debug|x86.Build.0 = Debug|Any CPU
		{AE87BE68-DFDC-46D8-BC55-DC9D1DD47F4C}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{AE87BE68-DFDC-46D8-BC55-DC9D1DD47F4C}.Release|Any CPU.Build.0 = Release|Any CPU
		{AE87BE68-DFDC-46D8-BC55-DC9D1DD47F4C}.Release|arm64.ActiveCfg = Release|Any CPU
		{AE87BE68-DFDC-46D8-BC55-DC9D1DD47F4C}.Release|arm64.Build.0 = Release|Any CPU
		{AE87BE68-DFDC-46D8-BC55-DC9D1DD47F4C}.Release|x64.ActiveCfg = Release|Any CPU
		{AE87BE68-DFDC-46D8-BC55-DC9D1DD47F4C}.Release|x64.Build.0 = Release|Any CPU
		{AE87BE68-DFDC-46D8-BC55-DC9D1DD47F4C}.Release|x86.ActiveCfg = Release|Any CPU
		{AE87BE68-DFDC-46D8-BC55-DC9D1DD47F4C}.Release|x86.Build.0 = Release|Any CPU
		{1298D974-9D81-4A93-9374-EA6A0E723DEB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{1298D974-9D81-4A93-9374-EA6A0E723DEB}.Debug|arm64.ActiveCfg = Debug|arm64
		{1298D974-9D81-4A93-9374-EA6A0E723DEB}.Debug|x64.ActiveCfg = Debug|x64
		{1298D974-9D81-4A93-9374-EA6A0E723DEB}.Debug|x86.ActiveCfg = Debug|x86
		{1298D974-9D81-4A93-9374-EA6A0E723DEB}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{1298D974-9D81-4A93-9374-EA6A0E723DEB}.Release|Any CPU.Build.0 = Release|Any CPU
		{1298D974-9D81-4A93-9374-EA6A0E723DEB}.Release|arm64.ActiveCfg = Release|arm64
		{1298D974-9D81-4A93-9374-EA6A0E723DEB}.Release|arm64.Build.0 = Release|arm64
		{1298D974-9D81-4A93-9374-EA6A0E723DEB}.Release|x64.ActiveCfg = Release|x64
		{1298D974-9D81-4A93-9374-EA6A0E723DEB}.Release|x64.Build.0 = Release|x64
		{1298D974-9D81-4A93-9374-EA6A0E723DEB}.Release|x86.ActiveCfg = Release|x86
		{14D7431C-6CFF-4191-BB88-2B8D5F323A30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{14D7431C-6CFF-4191-BB88-2B8D5F323A30}.Debug|arm64.ActiveCfg = Debug|arm64
		{14D7431C-6CFF-4191-BB88-2B8D5F323A30}.Debug|x64.ActiveCfg = Debug|x64
		{14D7431C-6CFF-4191-BB88-2B8D5F323A30}.Debug|x86.ActiveCfg = Debug|x86
		{14D7431C-6CFF-4191-BB88-2B8D5F323A30}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{14D7431C-6CFF-4191-BB88-2B8D5F323A30}.Release|Any CPU.Build.0 = Release|Any CPU
		{14D7431C-6CFF-4191-BB88-2B8D5F323A30}.Release|arm64.ActiveCfg = Release|arm64
		{14D7431C-6CFF-4191-BB88-2B8D5F323A30}.Release|arm64.Build.0 = Release|arm64
		{14D7431C-6CFF-4191-BB88-2B8D5F323A30}.Release|x64.ActiveCfg = Release|x64
		{14D7431C-6CFF-4191-BB88-2B8D5F323A30}.Release|x64.Build.0 = Release|x64
		{14D7431C-6CFF-4191-BB88-2B8D5F323A30}.Release|x86.ActiveCfg = Release|x86
		{AB3D44B5-9491-487E-A134-9AC5BED2B981}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{AB3D44B5-9491-487E-A134-9AC5BED2B981}.Debug|arm64.ActiveCfg = Debug|arm64
		{AB3D44B5-9491-487E-A134-9AC5BED2B981}.Debug|x64.ActiveCfg = Debug|x64
		{AB3D44B5-9491-487E-A134-9AC5BED2B981}.Debug|x86.ActiveCfg = Debug|x86
		{AB3D44B5-9491-487E-A134-9AC5BED2B981}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{AB3D44B5-9491-487E-A134-9AC5BED2B981}.Release|Any CPU.Build.0 = Release|Any CPU
		{AB3D44B5-9491-487E-A134-9AC5BED2B981}.Release|arm64.ActiveCfg = Release|arm64
		{AB3D44B5-9491-487E-A134-9AC5BED2B981}.Release|arm64.Build.0 = Release|arm64
		{AB3D44B5-9491-487E-A134-9AC5BED2B981}.Release|x64.ActiveCfg = Release|x64
		{AB3D44B5-9491-487E-A134-9AC5BED2B981}.Release|x64.Build.0 = Release|x64
		{AB3D44B5-9491-487E-A134-9AC5BED2B981}.Release|x86.ActiveCfg = Release|x86
		{4D2706B5-27A9-4542-BD4D-8C22D12D0628}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{4D2706B5-27A9-4542-BD4D-8C22D12D0628}.Debug|arm64.ActiveCfg = Debug|arm64
		{4D2706B5-27A9-4542-BD4D-8C22D12D0628}.Debug|x64.ActiveCfg = Debug|x64
		{4D2706B5-27A9-4542-BD4D-8C22D12D0628}.Debug|x86.ActiveCfg = Debug|x86
		{4D2706B5-27A9-4542-BD4D-8C22D12D0628}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{4D2706B5-27A9-4542-BD4D-8C22D12D0628}.Release|Any CPU.Build.0 = Release|Any CPU
		{4D2706B5-27A9-4542-BD4D-8C22D12D0628}.Release|arm64.ActiveCfg = Release|arm64
		{4D2706B5-27A9-4542-BD4D-8C22D12D0628}.Release|arm64.Build.0 = Release|arm64
		{4D2706B5-27A9-4542-BD4D-8C22D12D0628}.Release|x64.ActiveCfg = Release|x64
		{4D2706B5-27A9-4542-BD4D-8C22D12D0628}.Release|x64.Build.0 = Release|x64
		{4D2706B5-27A9-4542-BD4D-8C22D12D0628}.Release|x86.ActiveCfg = Release|x86
		{3E84FE46-D3FD-4E8A-9208-95E315F16E1F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{3E84FE46-D3FD-4E8A-9208-95E315F16E1F}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{3E84FE46-D3FD-4E8A-9208-95E315F16E1F}.Debug|arm64.ActiveCfg = Debug|Any CPU
		{3E84FE46-D3FD-4E8A-9208-95E315F16E1F}.Debug|arm64.Build.0 = Debug|Any CPU
		{3E84FE46-D3FD-4E8A-9208-95E315F16E1F}.Debug|x64.ActiveCfg = Debug|Any CPU
		{3E84FE46-D3FD-4E8A-9208-95E315F16E1F}.Debug|x64.Build.0 = Debug|Any CPU
		{3E84FE46-D3FD-4E8A-9208-95E315F16E1F}.Debug|x86.ActiveCfg = Debug|Any CPU
		{3E84FE46-D3FD-4E8A-9208-95E315F16E1F}.Debug|x86.Build.0 = Debug|Any CPU
		{3E84FE46-D3FD-4E8A-9208-95E315F16E1F}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{3E84FE46-D3FD-4E8A-9208-95E315F16E1F}.Release|Any CPU.Build.0 = Release|Any CPU
		{3E84FE46-D3FD-4E8A-9208-95E315F16E1F}.Release|arm64.ActiveCfg = Release|Any CPU
		{3E84FE46-D3FD-4E8A-9208-95E315F16E1F}.Release|arm64.Build.0 = Release|Any CPU
		{3E84FE46-D3FD-4E8A-9208-95E315F16E1F}.Release|x64.ActiveCfg = Release|Any CPU
		{3E84FE46-D3FD-4E8A-9208-95E315F16E1F}.Release|x64.Build.0 = Release|Any CPU
		{3E84FE46-D3FD-4E8A-9208-95E315F16E1F}.Release|x86.ActiveCfg = Release|Any CPU
		{3E84FE46-D3FD-4E8A-9208-95E315F16E1F}.Release|x86.Build.0 = Release|Any CPU
		{073BF126-377B-49CD-838A-E8B779EB4862}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{073BF126-377B-49CD-838A-E8B779EB4862}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{073BF126-377B-49CD-838A-E8B779EB4862}.Debug|arm64.ActiveCfg = Debug|Any CPU
		{073BF126-377B-49CD-838A-E8B779EB4862}.Debug|arm64.Build.0 = Debug|Any CPU
		{073BF126-377B-49CD-838A-E8B779EB4862}.Debug|x64.ActiveCfg = Debug|Any CPU
		{073BF126-377B-49CD-838A-E8B779EB4862}.Debug|x64.Build.0 = Debug|Any CPU
		{073BF126-377B-49CD-838A-E8B779EB4862}.Debug|x86.ActiveCfg = Debug|Any CPU
		{073BF126-377B-49CD-838A-E8B779EB4862}.Debug|x86.Build.0 = Debug|Any CPU
		{073BF126-377B-49CD-838A-E8B779EB4862}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{073BF126-377B-49CD-838A-E8B779EB4862}.Release|Any CPU.Build.0 = Release|Any CPU
		{073BF126-377B-49CD-838A-E8B779EB4862}.Release|arm64.ActiveCfg = Release|Any CPU
		{073BF126-377B-49CD-838A-E8B779EB4862}.Release|arm64.Build.0 = Release|Any CPU
		{073BF126-377B-49CD-838A-E8B779EB4862}.Release|x64.ActiveCfg = Release|Any CPU
		{073BF126-377B-49CD-838A-E8B779EB4862}.Release|x64.Build.0 = Release|Any CPU
		{073BF126-377B-49CD-838A-E8B779EB4862}.Release|x86.ActiveCfg = Release|Any CPU
		{073BF126-377B-49CD-838A-E8B779EB4862}.Release|x86.Build.0 = Release|Any CPU
		{07F7A65A-6061-4606-ACA2-F8D1A3D0E19A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{07F7A65A-6061-4606-ACA2-F8D1A3D0E19A}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{07F7A65A-6061-4606-ACA2-F8D1A3D0E19A}.Debug|arm64.ActiveCfg = Debug|Any CPU
		{07F7A65A-6061-4606-ACA2-F8D1A3D0E19A}.Debug|arm64.Build.0 = Debug|Any CPU
		{07F7A65A-6061-4606-ACA2-F8D1A3D0E19A}.Debug|x64.ActiveCfg = Debug|Any CPU
		{07F7A65A-6061-4606-ACA2-F8D1A3D0E19A}.Debug|x64.Build.0 = Debug|Any CPU
		{07F7A65A-6061-4606-ACA2-F8D1A3D0E19A}.Debug|x86.ActiveCfg = Debug|Any CPU
		{07F7A65A-6061-4606-ACA2-F8D1A3D0E19A}.Debug|x86.Build.0 = Debug|Any CPU
		{07F7A65A-6061-4606-ACA2-F8D1A3D0E19A}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{07F7A65A-6061-4606-ACA2-F8D1A3D0E19A}.Release|Any CPU.Build.0 = Release|Any CPU
		{07F7A65A-6061-4606-ACA2-F8D1A3D0E19A}.Release|arm64.ActiveCfg = Release|Any CPU
		{07F7A65A-6061-4606-ACA2-F8D1A3D0E19A}.Release|arm64.Build.0 = Release|Any CPU
		{07F7A65A-6061-4606-ACA2-F8D1A3D0E19A}.Release|x64.ActiveCfg = Release|Any CPU
		{07F7A65A-6061-4606-ACA2-F8D1A3D0E19A}.Release|x64.Build.0 = Release|Any CPU
		{07F7A65A-6061-4606-ACA2-F8D1A3D0E19A}.Release|x86.ActiveCfg = Release|Any CPU
		{07F7A65A-6061-4606-ACA2-F8D1A3D0E19A}.Release|x86.Build.0 = Release|Any CPU
		{F3A0BD51-2B8C-4E75-A64B-0AED46A22F74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{F3A0BD51-2B8C-4E75-A64B-0AED46A22F74}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{F3A0BD51-2B8C-4E75-A64B-0AED46A22F74}.Debug|arm64.ActiveCfg = Debug|Any CPU
		{F3A0BD51-2B8C-4E75-A64B-0AED46A22F74}.Debug|arm64.Build.0 = Debug|Any CPU
		{F3A0BD51-2B8C-4E75-A64B-0AED46A22F74}.Debug|x64.ActiveCfg = Debug|Any CPU
		{F3A0BD51-2B8C-4E75-A64B-0AED46A22F74}.Debug|x64.Build.0 = Debug|Any CPU
		{F3A0BD51-2B8C-4E75-A64B-0AED46A22F74}.Debug|x86.ActiveCfg = Debug|Any CPU
		{F3A0BD51-2B8C-4E75-A64B-0AED46A22F74}.Debug|x86.Build.0 = Debug|Any CPU
		{F3A0BD51-2B8C-4E75-A64B-0AED46A22F74}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{F3A0BD51-2B8C-4E75-A64B-0AED46A22F74}.Release|Any CPU.Build.0 = Release|Any CPU
		{F3A0BD51-2B8C-4E75-A64B-0AED46A22F74}.Release|arm64.ActiveCfg = Release|Any CPU
		{F3A0BD51-2B8C-4E75-A64B-0AED46A22F74}.Release|arm64.Build.0 = Release|Any CPU
		{F3A0BD51-2B8C-4E75-A64B-0AED46A22F74}.Release|x64.ActiveCfg = Release|Any CPU
		{F3A0BD51-2B8C-4E75-A64B-0AED46A22F74}.Release|x64.Build.0 = Release|Any CPU
		{F3A0BD51-2B8C-4E75-A64B-0AED46A22F74}.Release|x86.ActiveCfg = Release|Any CPU
		{F3A0BD51-2B8C-4E75-A64B-0AED46A22F74}.Release|x86.Build.0 = Release|Any CPU
		{6F1F6A8D-A530-4C4F-9360-219AC3B43FAA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{6F1F6A8D-A530-4C4F-9360-219AC3B43FAA}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{6F1F6A8D-A530-4C4F-9360-219AC3B43FAA}.Debug|arm64.ActiveCfg = Debug|Any CPU
		{6F1F6A8D-A530-4C4F-9360-219AC3B43FAA}.Debug|arm64.Build.0 = Debug|Any CPU
		{6F1F6A8D-A530-4C4F-9360-219AC3B43FAA}.Debug|x64.ActiveCfg = Debug|Any CPU
		{6F1F6A8D-A530-4C4F-9360-219AC3B43FAA}.Debug|x64.Build.0 = Debug|Any CPU
		{6F1F6A8D-A530-4C4F-9360-219AC3B43FAA}.Debug|x86.ActiveCfg = Debug|Any CPU
		{6F1F6A8D-A530-4C4F-9360-219AC3B43FAA}.Debug|x86.Build.0 = Debug|Any CPU
		{6F1F6A8D-A530-4C4F-9360-219AC3B43FAA}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{6F1F6A8D-A530-4C4F-9360-219AC3B43FAA}.Release|Any CPU.Build.0 = Release|Any CPU
		{6F1F6A8D-A530-4C4F-9360-219AC3B43FAA}.Release|arm64.ActiveCfg = Release|Any CPU
		{6F1F6A8D-A530-4C4F-9360-219AC3B43FAA}.Release|arm64.Build.0 = Release|Any CPU
		{6F1F6A8D-A530-4C4F-9360-219AC3B43FAA}.Release|x64.ActiveCfg = Release|Any CPU
		{6F1F6A8D-A530-4C4F-9360-219AC3B43FAA}.Release|x64.Build.0 = Release|Any CPU
		{6F1F6A8D-A530-4C4F-9360-219AC3B43FAA}.Release|x86.ActiveCfg = Release|Any CPU
		{6F1F6A8D-A530-4C4F-9360-219AC3B43FAA}.Release|x86.Build.0 = Release|Any CPU
		{5138077E-670E-413D-94D1-0825B6D1201B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{5138077E-670E-413D-94D1-0825B6D1201B}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{5138077E-670E-413D-94D1-0825B6D1201B}.Debug|arm64.ActiveCfg = Debug|Any CPU
		{5138077E-670E-413D-94D1-0825B6D1201B}.Debug|arm64.Build.0 = Debug|Any CPU
		{5138077E-670E-413D-94D1-0825B6D1201B}.Debug|x64.ActiveCfg = Debug|Any CPU
		{5138077E-670E-413D-94D1-0825B6D1201B}.Debug|x64.Build.0 = Debug|Any CPU
		{5138077E-670E-413D-94D1-0825B6D1201B}.Debug|x86.ActiveCfg = Debug|Any CPU
		{5138077E-670E-413D-94D1-0825B6D1201B}.Debug|x86.Build.0 = Debug|Any CPU
		{5138077E-670E-413D-94D1-0825B6D1201B}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{5138077E-670E-413D-94D1-0825B6D1201B}.Release|Any CPU.Build.0 = Release|Any CPU
		{5138077E-670E-413D-94D1-0825B6D1201B}.Release|arm64.ActiveCfg = Release|Any CPU
		{5138077E-670E-413D-94D1-0825B6D1201B}.Release|arm64.Build.0 = Release|Any CPU
		{5138077E-670E-413D-94D1-0825B6D1201B}.Release|x64.ActiveCfg = Release|Any CPU
		{5138077E-670E-413D-94D1-0825B6D1201B}.Release|x64.Build.0 = Release|Any CPU
		{5138077E-670E-413D-94D1-0825B6D1201B}.Release|x86.ActiveCfg = Release|Any CPU
		{5138077E-670E-413D-94D1-0825B6D1201B}.Release|x86.Build.0 = Release|Any CPU
		{E37CD05A-EBFC-429D-A550-BEE44119FA9E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{E37CD05A-EBFC-429D-A550-BEE44119FA9E}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{E37CD05A-EBFC-429D-A550-BEE44119FA9E}.Debug|arm64.ActiveCfg = Debug|Any CPU
		{E37CD05A-EBFC-429D-A550-BEE44119FA9E}.Debug|arm64.Build.0 = Debug|Any CPU
		{E37CD05A-EBFC-429D-A550-BEE44119FA9E}.Debug|x64.ActiveCfg = Debug|Any CPU
		{E37CD05A-EBFC-429D-A550-BEE44119FA9E}.Debug|x64.Build.0 = Debug|Any CPU
		{E37CD05A-EBFC-429D-A550-BEE44119FA9E}.Debug|x86.ActiveCfg = Debug|Any CPU
		{E37CD05A-EBFC-429D-A550-BEE44119FA9E}.Debug|x86.Build.0 = Debug|Any CPU
		{E37CD05A-EBFC-429D-A550-BEE44119FA9E}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{E37CD05A-EBFC-429D-A550-BEE44119FA9E}.Release|Any CPU.Build.0 = Release|Any CPU
		{E37CD05A-EBFC-429D-A550-BEE44119FA9E}.Release|arm64.ActiveCfg = Release|Any CPU
		{E37CD05A-EBFC-429D-A550-BEE44119FA9E}.Release|arm64.Build.0 = Release|Any CPU
		{E37CD05A-EBFC-429D-A550-BEE44119FA9E}.Release|x64.ActiveCfg = Release|Any CPU
		{E37CD05A-EBFC-429D-A550-BEE44119FA9E}.Release|x64.Build.0 = Release|Any CPU
		{E37CD05A-EBFC-429D-A550-BEE44119FA9E}.Release|x86.ActiveCfg = Release|Any CPU
		{E37CD05A-EBFC-429D-A550-BEE44119FA9E}.Release|x86.Build.0 = Release|Any CPU
		{7F6C7E7A-A4B5-4D12-88EB-217CA59284F4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{7F6C7E7A-A4B5-4D12-88EB-217CA59284F4}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{7F6C7E7A-A4B5-4D12-88EB-217CA59284F4}.Debug|arm64.ActiveCfg = Debug|Any CPU
		{7F6C7E7A-A4B5-4D12-88EB-217CA59284F4}.Debug|arm64.Build.0 = Debug|Any CPU
		{7F6C7E7A-A4B5-4D12-88EB-217CA59284F4}.Debug|x64.ActiveCfg = Debug|Any CPU
		{7F6C7E7A-A4B5-4D12-88EB-217CA59284F4}.Debug|x64.Build.0 = Debug|Any CPU
		{7F6C7E7A-A4B5-4D12-88EB-217CA59284F4}.Debug|x86.ActiveCfg = Debug|Any CPU
		{7F6C7E7A-A4B5-4D12-88EB-217CA59284F4}.Debug|x86.Build.0 = Debug|Any CPU
		{7F6C7E7A-A4B5-4D12-88EB-217CA59284F4}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{7F6C7E7A-A4B5-4D12-88EB-217CA59284F4}.Release|Any CPU.Build.0 = Release|Any CPU
		{7F6C7E7A-A4B5-4D12-88EB-217CA59284F4}.Release|arm64.ActiveCfg = Release|Any CPU
		{7F6C7E7A-A4B5-4D12-88EB-217CA59284F4}.Release|arm64.Build.0 = Release|Any CPU
		{7F6C7E7A-A4B5-4D12-88EB-217CA59284F4}.Release|x64.ActiveCfg = Release|Any CPU
		{7F6C7E7A-A4B5-4D12-88EB-217CA59284F4}.Release|x64.Build.0 = Release|Any CPU
		{7F6C7E7A-A4B5-4D12-88EB-217CA59284F4}.Release|x86.ActiveCfg = Release|Any CPU
		{7F6C7E7A-A4B5-4D12-88EB-217CA59284F4}.Release|x86.Build.0 = Release|Any CPU
		{9C8D6133-9417-43A1-B54F-725009569D71}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{9C8D6133-9417-43A1-B54F-725009569D71}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{9C8D6133-9417-43A1-B54F-725009569D71}.Debug|arm64.ActiveCfg = Debug|Any CPU
		{9C8D6133-9417-43A1-B54F-725009569D71}.Debug|arm64.Build.0 = Debug|Any CPU
		{9C8D6133-9417-43A1-B54F-725009569D71}.Debug|x64.ActiveCfg = Debug|Any CPU
		{9C8D6133-9417-43A1-B54F-725009569D71}.Debug|x64.Build.0 = Debug|Any CPU
		{9C8D6133-9417-43A1-B54F-725009569D71}.Debug|x86.ActiveCfg = Debug|Any CPU
		{9C8D6133-9417-43A1-B54F-725009569D71}.Debug|x86.Build.0 = Debug|Any CPU
		{9C8D6133-9417-43A1-B54F-725009569D71}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{9C8D6133-9417-43A1-B54F-725009569D71}.Release|Any CPU.Build.0 = Release|Any CPU
		{9C8D6133-9417-43A1-B54F-725009569D71}.Release|arm64.ActiveCfg = Release|Any CPU
		{9C8D6133-9417-43A1-B54F-725009569D71}.Release|arm64.Build.0 = Release|Any CPU
		{9C8D6133-9417-43A1-B54F-725009569D71}.Release|x64.ActiveCfg = Release|Any CPU
		{9C8D6133-9417-43A1-B54F-725009569D71}.Release|x64.Build.0 = Release|Any CPU
		{9C8D6133-9417-43A1-B54F-725009569D71}.Release|x86.ActiveCfg = Release|Any CPU
		{9C8D6133-9417-43A1-B54F-725009569D71}.Release|x86.Build.0 = Release|Any CPU
		{3B424CF4-09F8-47D3-8420-53D7A1165B9C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{3B424CF4-09F8-47D3-8420-53D7A1165B9C}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{3B424CF4-09F8-47D3-8420-53D7A1165B9C}.Debug|arm64.ActiveCfg = Debug|Any CPU
		{3B424CF4-09F8-47D3-8420-53D7A1165B9C}.Debug|arm64.Build.0 = Debug|Any CPU
		{3B424CF4-09F8-47D3-8420-53D7A1165B9C}.Debug|x64.ActiveCfg = Debug|Any CPU
		{3B424CF4-09F8-47D3-8420-53D7A1165B9C}.Debug|x64.Build.0 = Debug|Any CPU
		{3B424CF4-09F8-47D3-8420-53D7A1165B9C}.Debug|x86.ActiveCfg = Debug|Any CPU
		{3B424CF4-09F8-47D3-8420-53D7A1165B9C}.Debug|x86.Build.0 = Debug|Any CPU
		{3B424CF4-09F8-47D3-8420-53D7A1165B9C}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{3B424CF4-09F8-47D3-8420-53D7A1165B9C}.Release|Any CPU.Build.0 = Release|Any CPU
		{3B424CF4-09F8-47D3-8420-53D7A1165B9C}.Release|arm64.ActiveCfg = Release|Any CPU
		{3B424CF4-09F8-47D3-8420-53D7A1165B9C}.Release|arm64.Build.0 = Release|Any CPU
		{3B424CF4-09F8-47D3-8420-53D7A1165B9C}.Release|x64.ActiveCfg = Release|Any CPU
		{3B424CF4-09F8-47D3-8420-53D7A1165B9C}.Release|x64.Build.0 = Release|Any CPU
		{3B424CF4-09F8-47D3-8420-53D7A1165B9C}.Release|x86.ActiveCfg = Release|Any CPU
		{3B424CF4-09F8-47D3-8420-53D7A1165B9C}.Release|x86.Build.0 = Release|Any CPU
		{A396F1D6-55CF-493E-B541-A50B8F29395A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{A396F1D6-55CF-493E-B541-A50B8F29395A}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{A396F1D6-55CF-493E-B541-A50B8F29395A}.Debug|arm64.ActiveCfg = Debug|Any CPU
		{A396F1D6-55CF-493E-B541-A50B8F29395A}.Debug|arm64.Build.0 = Debug|Any CPU
		{A396F1D6-55CF-493E-B541-A50B8F29395A}.Debug|x64.ActiveCfg = Debug|Any CPU
		{A396F1D6-55CF-493E-B541-A50B8F29395A}.Debug|x64.Build.0 = Debug|Any CPU
		{A396F1D6-55CF-493E-B541-A50B8F29395A}.Debug|x86.ActiveCfg = Debug|Any CPU
		{A396F1D6-55CF-493E-B541-A50B8F29395A}.Debug|x86.Build.0 = Debug|Any CPU
		{A396F1D6-55CF-493E-B541-A50B8F29395A}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{A396F1D6-55CF-493E-B541-A50B8F29395A}.Release|Any CPU.Build.0 = Release|Any CPU
		{A396F1D6-55CF-493E-B541-A50B8F29395A}.Release|arm64.ActiveCfg = Release|Any CPU
		{A396F1D6-55CF-493E-B541-A50B8F29395A}.Release|arm64.Build.0 = Release|Any CPU
		{A396F1D6-55CF-493E-B541-A50B8F29395A}.Release|x64.ActiveCfg = Release|Any CPU
		{A396F1D6-55CF-493E-B541-A50B8F29395A}.Release|x64.Build.0 = Release|Any CPU
		{A396F1D6-55CF-493E-B541-A50B8F29395A}.Release|x86.ActiveCfg = Release|Any CPU
		{A396F1D6-55CF-493E-B541-A50B8F29395A}.Release|x86.Build.0 = Release|Any CPU
		{3E29F5F8-8310-45F4-A648-8F44F32B6472}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{3E29F5F8-8310-45F4-A648-8F44F32B6472}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{3E29F5F8-8310-45F4-A648-8F44F32B6472}.Debug|arm64.ActiveCfg = Debug|Any CPU
		{3E29F5F8-8310-45F4-A648-8F44F32B6472}.Debug|arm64.Build.0 = Debug|Any CPU
		{3E29F5F8-8310-45F4-A648-8F44F32B6472}.Debug|x64.ActiveCfg = Debug|Any CPU
		{3E29F5F8-8310-45F4-A648-8F44F32B6472}.Debug|x64.Build.0 = Debug|Any CPU
		{3E29F5F8-8310-45F4-A648-8F44F32B6472}.Debug|x86.ActiveCfg = Debug|Any CPU
		{3E29F5F8-8310-45F4-A648-8F44F32B6472}.Debug|x86.Build.0 = Debug|Any CPU
		{3E29F5F8-8310-45F4-A648-8F44F32B6472}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{3E29F5F8-8310-45F4-A648-8F44F32B6472}.Release|Any CPU.Build.0 = Release|Any CPU
		{3E29F5F8-8310-45F4-A648-8F44F32B6472}.Release|arm64.ActiveCfg = Release|Any CPU
		{3E29F5F8-8310-45F4-A648-8F44F32B6472}.Release|arm64.Build.0 = Release|Any CPU
		{3E29F5F8-8310-45F4-A648-8F44F32B6472}.Release|x64.ActiveCfg = Release|Any CPU
		{3E29F5F8-8310-45F4-A648-8F44F32B6472}.Release|x64.Build.0 = Release|Any CPU
		{3E29F5F8-8310-45F4-A648-8F44F32B6472}.Release|x86.ActiveCfg = Release|Any CPU
		{3E29F5F8-8310-45F4-A648-8F44F32B6472}.Release|x86.Build.0 = Release|Any CPU
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
	GlobalSection(NestedProjects) = preSolution
		{AE87BE68-DFDC-46D8-BC55-DC9D1DD47F4C} = {35AC6218-CBEA-4FDA-8CE1-D1EBD6FD8D4A}
		{6F1F6A8D-A530-4C4F-9360-219AC3B43FAA} = {D7EA6A65-3CB5-4A59-934A-B8402C849107}
		{5138077E-670E-413D-94D1-0825B6D1201B} = {D7EA6A65-3CB5-4A59-934A-B8402C849107}
		{E37CD05A-EBFC-429D-A550-BEE44119FA9E} = {D7EA6A65-3CB5-4A59-934A-B8402C849107}
		{7F6C7E7A-A4B5-4D12-88EB-217CA59284F4} = {D7EA6A65-3CB5-4A59-934A-B8402C849107}
		{3B424CF4-09F8-47D3-8420-53D7A1165B9C} = {D7EA6A65-3CB5-4A59-934A-B8402C849107}
		{A396F1D6-55CF-493E-B541-A50B8F29395A} = {35AC6218-CBEA-4FDA-8CE1-D1EBD6FD8D4A}
	EndGlobalSection
	GlobalSection(ExtensibilityGlobals) = postSolution
		SolutionGuid = {234CB3F9-5ADC-433F-BDBD-CB8EA59EB518}
	EndGlobalSection
EndGlobal


================================================
FILE: build.cmd
================================================
@echo off
powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0build.ps1""""
@REM powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0scripts\build_extension.ps1""""
exit /b %ErrorLevel%


================================================
FILE: build.ps1
================================================
$wingetVersion = & winget --version 2>$null

if ($wingetVersion -eq $null) {
    Write-Output "winget is not installed. Starting installation..."

    Invoke-WebRequest -Uri "https://github.com/microsoft/winget-cli/releases/download/v1.6.3482/Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle" -OutFile "$env:TEMP\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle"

    Add-AppxPackage -Path "$env:TEMP\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle"

    Write-Output "winget has been installed."
}

$dotnetVersion = & dotnet --version 2>$null

if ($dotnetVersion -eq $null) {
    Write-Output ".NET SDK is not installed."

    winget install Microsoft.DotNet.SDK.8
} else {
    $majorVersion = $dotnetVersion.Split('.')[0]

    if ($majorVersion -ge 8) {
        Write-Output ".NET SDK version is $dotnetVersion, which is 8.0.0 or newer."
    } else {
        Write-Output ".NET SDK version is $dotnetVersion, which is older than 8.0.0."

        winget install Microsoft.DotNet.SDK.8
    }
}

if ($env:PROCESSOR_ARCHITECTURE -eq "AMD64") {
    dotnet restore Wpf.Ui.sln /tl
    dotnet build src\Wpf.Ui.Gallery\Wpf.Ui.Gallery.csproj --configuration Release --no-restore --verbosity quiet /tl
} else {
    Write-Host "Not in the x64 desktop environment."
}


================================================
FILE: docs/.gitignore
================================================
###############
#    folder   #
###############
/**/DROP/
/**/TEMP/
/**/packages/
/**/bin/
/**/obj/
_site
public
/src/


================================================
FILE: docs/codesnippet/Rtf/Hyperlink/RtfDocumentProcessor.cs
================================================
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.

namespace RtfDocumentProcessors
{
    using System;
    using System.Collections.Generic;
    using System.Collections.Immutable;
    using System.Composition;
    using System.IO;
    using System.Linq;
    using System.Web;
    using System.Xml.Linq;
    using Microsoft.DocAsCode.Plugins;
    using Microsoft.DocAsCode.Utility;

    [Export(typeof(IDocumentProcessor))]
    public class RtfDocumentProcessor : IDocumentProcessor
    {
        [ImportMany(nameof(RtfDocumentProcessor))]
        public IEnumerable<IDocumentBuildStep> BuildSteps { get; set; }

        public string Name => nameof(RtfDocumentProcessor);

        public ProcessingPriority GetProcessingPriority(FileAndType file)
        {
            if (
                file.Type == DocumentType.Article
                && ".rtf".Equals(Path.GetExtension(file.File), StringComparison.OrdinalIgnoreCase)
            )
            {
                return ProcessingPriority.Normal;
            }
            return ProcessingPriority.NotSupported;
        }

        public FileModel Load(FileAndType file, ImmutableDictionary<string, object> metadata)
        {
            var content = new Dictionary<string, object>
            {
                ["conceptual"] = File.ReadAllText(Path.Combine(file.BaseDir, file.File)),
                ["type"] = "Conceptual",
                ["path"] = file.File,
            };
            return new FileModel(file, content);
        }

        #region Save
        public SaveResult Save(FileModel model)
        {
            HashSet<string> linkToFiles = CollectLinksAndFixDocument(model);

            return new SaveResult
            {
                DocumentType = "Conceptual",
                ModelFile = model.File,
                LinkToFiles = linkToFiles.ToImmutableArray(),
            };
        }
        #endregion

        #region CollectLinksAndFixDocument
        private static HashSet<string> CollectLinksAndFixDocument(FileModel model)
        {
            string content = (string)((Dictionary<string, object>)model.Content)["conceptual"];
            var doc = XDocument.Parse(content);
            var links =
                from attr in doc.Descendants().Attributes()
                where
                    "href".Equals(attr.Name.LocalName, StringComparison.OrdinalIgnoreCase)
                    || "src".Equals(attr.Name.LocalName, StringComparison.OrdinalIgnoreCase)
                select attr;
            var path = (RelativePath)model.File;
            var linkToFiles = new HashSet<string>();
            foreach (var link in links)
            {
                FixLink(link, path, linkToFiles);
            }
            using (var sw = new StringWriter())
            {
                doc.Save(sw);
                ((Dictionary<string, object>)model.Content)["conceptual"] = sw.ToString();
            }
            return linkToFiles;
        }
        #endregion

        #region FixLink
        private static void FixLink(XAttribute link, RelativePath filePath, HashSet<string> linkToFiles)
        {
            string linkFile;
            string anchor = null;
            if (PathUtility.IsRelativePath(link.Value))
            {
                var index = link.Value.IndexOf('#');
                if (index == -1)
                {
                    linkFile = link.Value;
                }
                else if (index == 0)
                {
                    return;
                }
                else
                {
                    linkFile = link.Value.Remove(index);
                    anchor = link.Value.Substring(index);
                }
                var path = filePath + (RelativePath)linkFile;
                var file = (string)path.GetPathFromWorkingFolder();
                link.Value = file + anchor;
                linkToFiles.Add(HttpUtility.UrlDecode(file));
            }
        }
        #endregion

        public void UpdateHref(FileModel model, IDocumentBuildContext context) { }
    }
}


================================================
FILE: docs/codesnippet/Rtf/RtfBuildStep.cs
================================================
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.

namespace RtfDocumentProcessors
{
    using System;
    using System.Collections.Generic;
    using System.Collections.Immutable;
    using System.Composition;
    using System.Threading.Tasks;
    using System.Threading.Tasks.Schedulers;
    using MarkupConverter;
    using Microsoft.DocAsCode.Plugins;

    [Export(nameof(RtfDocumentProcessor), typeof(IDocumentBuildStep))]
    public class RtfBuildStep : IDocumentBuildStep
    {
        #region Build
        private readonly TaskFactory _taskFactory = new TaskFactory(new StaTaskScheduler(1));

        public void Build(FileModel model, IHostService host)
        {
            string content = (string)((Dictionary<string, object>)model.Content)["conceptual"];
            content = _taskFactory.StartNew(() => RtfToHtmlConverter.ConvertRtfToHtml(content)).Result;
            ((Dictionary<string, object>)model.Content)["conceptual"] = content;
        }
        #endregion

        #region Others
        public int BuildOrder => 0;

        public string Name => nameof(RtfBuildStep);

        public void Postbuild(ImmutableList<FileModel> models, IHostService host) { }

        public IEnumerable<FileModel> Prebuild(ImmutableList<FileModel> models, IHostService host)
        {
            return models;
        }
        #endregion
    }
}


================================================
FILE: docs/codesnippet/Rtf/RtfDocumentProcessor.cs
================================================
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.

namespace RtfDocumentProcessors
{
    using System;
    using System.Collections.Generic;
    using System.Collections.Immutable;
    using System.Composition;
    using System.IO;
    using Microsoft.DocAsCode.Common;
    using Microsoft.DocAsCode.Plugins;

    [Export(typeof(IDocumentProcessor))]
    public class RtfDocumentProcessor : IDocumentProcessor
    {
        #region BuildSteps
        [ImportMany(nameof(RtfDocumentProcessor))]
        public IEnumerable<IDocumentBuildStep> BuildSteps { get; set; }
        #endregion

        #region Name
        public string Name => nameof(RtfDocumentProcessor);
        #endregion

        #region GetProcessingPriority
        public ProcessingPriority GetProcessingPriority(FileAndType file)
        {
            if (
                file.Type == DocumentType.Article
                && ".rtf".Equals(Path.GetExtension(file.File), StringComparison.OrdinalIgnoreCase)
            )
            {
                return ProcessingPriority.Normal;
            }
            return ProcessingPriority.NotSupported;
        }
        #endregion

        #region Load
        public FileModel Load(FileAndType file, ImmutableDictionary<string, object> metadata)
        {
            var content = new Dictionary<string, object>
            {
                ["conceptual"] = File.ReadAllText(Path.Combine(file.BaseDir, file.File)),
                ["type"] = "Conceptual",
                ["path"] = file.File,
            };
            var localPathFromRoot = PathUtility.MakeRelativePath(
                EnvironmentContext.BaseDirectory,
                EnvironmentContext.FileAbstractLayer.GetPhysicalPath(file.File)
            );

            return new FileModel(file, content) { LocalPathFromRoot = localPathFromRoot };
        }
        #endregion

        #region Save
        public SaveResult Save(FileModel model)
        {
            return new SaveResult
            {
                DocumentType = "Conceptual",
                FileWithoutExtension = Path.ChangeExtension(model.File, null),
            };
        }
        #endregion

        #region UpdateHref
        public void UpdateHref(FileModel model, IDocumentBuildContext context) { }
        #endregion
    }
}


================================================
FILE: docs/docfx.json
================================================
{
  "metadata": [
    {
      "src": [
        {
          "files": [
            "src/Wpf.Ui/*.csproj",
            "src/Wpf.Ui.Tray/*.csproj",
            "src/Wpf.Ui.Abstractions/*.csproj",
            "src/Wpf.Ui.DependencyInjection/*.csproj"
          ],
          "src": "../"
        }
      ],
      "dest": "api",
      "properties": {
        "TargetFramework": "net472"
      },
      "disableGitFeatures": false,
      "disableDefaultFilter": false
    }
  ],
  "build": {
    "content": [
      {
        "files": [
          "**/*.{md,yml}"
        ],
        "exclude": [
          "_site/**",
          "obj/**"
        ]
      }
    ],
    "resource": [
      {
        "files": [
          "**/images/**",
          "codesnippet/**",
          "manifest.webmanifest",
          "robots.txt"
        ],
        "exclude": [
          "_site/**",
          "obj/**"
        ]
      }
    ],
    "xrefService": [
      "https://xref.docs.microsoft.com/query?uid={uid}"
    ],
    "postProcessors": [
      "ExtractSearchIndex"
    ],
    "globalMetadata": {
      "_appTitle": "WPF UI",
      "_appName": "WPF UI",
      "_appFaviconPath": "images/favicon.ico",
      "_appLogoPath": "images/wpfui.png",
      "_appFooter": "<span>Made with <a href=\"https://dotnet.github.io/docfx\" rel=\"noreferrer\">docfx</a>, <a href=\"https://chat.openai.com/\" rel=\"noreferrer\">ChatGPT</a> and <a href=\"https://www.deepl.com/\" rel=\"noreferrer\">DeepL</a> | Copyright © 2025 <a href=\"https://lepo.co/\">lepo.co</a></span>"
    },
    "dest": "_site",
    "template": [
      "default",
      "templates/wpfui"
    ],
    "globalMetadataFiles": [],
    "fileMetadataFiles": [],
    "markdownEngineName": "markdig",
    "noLangKeyword": false,
    "keepFileLink": false,
    "cleanupCacheHistory": false,
    "disableGitFeatures": false
  },
  "sitemap": {
    "baseUrl": "https://wpfui.lepo.co",
    "priority": 0.1,
    "changefreq": "monthly"
  }
}


================================================
FILE: docs/documentation/.gitignore
================================================
###############
#  temp file  #
###############
*.yml
.manifest


================================================
FILE: docs/documentation/about-wpf.md
================================================
# What is WPF

WPF (Windows Presentation Foundation) is a resolution-independent UI framework for building Windows desktop applications. It provides vector-based graphics, advanced layout, data binding, multimedia, animation, and extensive styling and templating capabilities.

## .NET Framework vs Modern .NET

WPF has two implementations:

**Modern .NET** (.NET 6+): Open-source implementation hosted on GitHub. Provides improved performance, new APIs, side-by-side deployment, and modern tooling. Despite .NET being cross-platform, WPF only runs on Windows.

**.NET Framework 4**: Legacy Windows-only implementation. Maintained for compatibility with existing applications but receives minimal new features.

New WPF applications should target modern .NET (.NET 6 or later) to benefit from:

- Better performance and reduced memory usage
- Regular updates and new features
- Modern C# language versions
- Improved debugging and diagnostics
- Side-by-side deployment without machine-wide installations


================================================
FILE: docs/documentation/accent.md
================================================
# Accent Colors

Accent colors provide visual emphasis and brand identity in WPF UI applications. The library manages accent color resources that automatically adapt to light and dark themes.

> [!TIP]
> Use `SystemThemeWatcher.Watch(this)` in your main window constructor to automatically sync accent colors with Windows personalization settings.

## Apply System Accent

Use the system's personalization accent color:

```csharp
using Wpf.Ui.Appearance;

ApplicationAccentColorManager.ApplySystemAccent();
```

## Apply Theme with Accent

Apply theme and accent together:

```csharp
using Wpf.Ui.Appearance;
using Wpf.Ui.Controls;

ApplicationThemeManager.Apply(
    ApplicationTheme.Dark,
    WindowBackdropType.Mica,
    updateAccent: true  // Automatically applies system accent
);
```

Available backdrop types: `None`, `Auto`, `Mica`, `Acrylic`, `Tabbed`.

> [!IMPORTANT]
> Always use `DynamicResource` (not `StaticResource`) for accent color bindings to receive runtime updates when accent changes.

## Apply Custom Accent

Set a custom accent color:

```csharp
ApplicationAccentColorManager.Apply(
    Color.FromArgb(0xFF, 0xEE, 0x00, 0xBB),
    ApplicationTheme.Dark
);
```

Retrieve the Windows colorization color programmatically:

```csharp
Color colorizationColor = ApplicationAccentColorManager.GetColorizationColor();
ApplicationAccentColorManager.Apply(colorizationColor, ApplicationTheme.Dark);
```

## Accent Color Resources

WPF UI provides these accent color resources:

### System Accent Colors

Base accent colors that update when you call `ApplicationAccentColorManager.Apply()`:

- `SystemAccentColor` - Primary system accent
- `SystemAccentColorPrimary` - Lighter/darker variant for light/dark themes
- `SystemAccentColorSecondary` - More prominent variant (most commonly used)
- `SystemAccentColorTertiary` - Strongest variant

```xml
<Border Background="{DynamicResource SystemAccentColorSecondaryBrush}" />
```

> [!TIP]
> `SystemAccentColorSecondary` is the most commonly used variant for interactive elements and provides optimal contrast in both light and dark themes.

### Accent Text Colors

For text and interactive elements like links:

- `AccentTextFillColorPrimaryBrush` - Primary accent text (rest/hover state)
- `AccentTextFillColorSecondaryBrush` - Secondary accent text
- `AccentTextFillColorTertiaryBrush` - Tertiary accent text (pressed state)
- `AccentTextFillColorDisabledBrush` - Disabled accent text

```xml
<ui:Anchor
    Content="WPF UI Documentation"
    NavigateUri="https://wpfui.lepo.co/"
    Foreground="{DynamicResource AccentTextFillColorPrimaryBrush}" />
```

### Accent Fill Colors

For button backgrounds and filled surfaces:

- `AccentFillColorDefaultBrush` - Default accent fill
- `AccentFillColorSecondaryBrush` - Secondary fill (90% opacity)
- `AccentFillColorTertiaryBrush` - Tertiary fill (80% opacity)
- `AccentFillColorDisabledBrush` - Disabled state fill

```xml
<Button Background="{DynamicResource AccentFillColorDefaultBrush}" />
```

### Text on Accent Colors

For text displayed on accent-colored backgrounds. These resources automatically adjust to black or white based on accent brightness:

- `TextOnAccentFillColorPrimary` - Primary text color on accent backgrounds
- `TextOnAccentFillColorSecondary` - Secondary text on accent backgrounds
- `TextOnAccentFillColorDisabled` - Disabled text on accent backgrounds

> [!NOTE]
> Text colors automatically switch between black and white when accent brightness exceeds 80% HSV to maintain readability.

## Theme-Specific Behavior

Accent variants adjust automatically based on the application theme:

**Dark Theme:**

- Primary: Base color + 17 brightness, -30% saturation
- Secondary: Base color + 17 brightness, -45% saturation
- Tertiary: Base color + 17 brightness, -65% saturation

**Light Theme:**

- Primary: Base color - 10 brightness
- Secondary: Base color - 25 brightness
- Tertiary: Base color - 40 brightness

> [!NOTE]
> Brightness adjustments are calculated in HSV color space. Negative values darken the color, positive values lighten it.

## Advanced: Custom Accent Variants

Specify all accent variants manually:

```csharp
ApplicationAccentColorManager.Apply(
    systemAccent: Color.FromArgb(0xFF, 0x00, 0x78, 0xD4),
    primaryAccent: Color.FromArgb(0xFF, 0x00, 0x67, 0xC0),
    secondaryAccent: Color.FromArgb(0xFF, 0x00, 0x3E, 0x92),
    tertiaryAccent: Color.FromArgb(0xFF, 0x00, 0x1A, 0x68)
);
```

> [!CAUTION]
> Manually specified accent variants won't automatically adjust when theme changes. Consider using automatic variant generation unless you need precise color control.

## Accessing Current Accent

Read current accent colors from `ApplicationAccentColorManager`:

```csharp
Color currentSystemAccent = ApplicationAccentColorManager.SystemAccent;
Color currentPrimaryAccent = ApplicationAccentColorManager.PrimaryAccent;
Color currentSecondaryAccent = ApplicationAccentColorManager.SecondaryAccent;
Color currentTertiaryAccent = ApplicationAccentColorManager.TertiaryAccent;

Brush accentBrush = ApplicationAccentColorManager.SystemAccentBrush;
```

## Theme Changed Event

Monitor accent changes when theme is applied:

```csharp
ApplicationThemeManager.Changed += (theme, accent) =>
{
    Debug.WriteLine($"Theme changed to {theme}, accent: {accent}");
};
```

## Automatic System Theme Tracking

Use `SystemThemeWatcher` to automatically update theme and accent when Windows settings change:

```csharp
using Wpf.Ui.Appearance;

public partial class MainWindow : Window
{
    public MainWindow()
    {
        // Watch system theme changes with Mica backdrop and accent updates
        SystemThemeWatcher.Watch(this);
        
        InitializeComponent();
    }
}
```

With custom backdrop and accent settings:

```csharp
SystemThemeWatcher.Watch(
    this,
    WindowBackdropType.Acrylic,
    updateAccents: true
);
```

Stop watching for theme changes:

```csharp
SystemThemeWatcher.UnWatch(this);
```

> [!NOTE]
> `SystemThemeWatcher` monitors `WM_WININICHANGE` messages and automatically applies system theme and accent when Windows personalization settings change.


================================================
FILE: docs/documentation/extension.md
================================================
# Visual Studio 2022 Extension for WPF UI

Visual Studio allows you to add extensions that can be installed in several ways:

- Build them locally and then install the `.vsix` package.
- Download the extension from the internet and install the `.vsix` file.
- Install the extension using the search in _Visual Studio_.

In this tutorial, we'll cover the last way, if you want to know more, check out [**Manage extensions for Visual Studio**](https://learn.microsoft.com/en-us/visualstudio/ide/finding-and-using-visual-studio-extensions?view=vs-2022).

In any case, if you want to download a plugin and install it manually, or leave your review, you can find it in the Visual Studio Marketplace:  
https://marketplace.visualstudio.com/items?itemName=lepo.wpf-ui

> [!NOTE]
> The source code for **WPF UI** _Visual Studio 2022_ extension is public and you can [check it out here](https://github.com/lepoco/wpfui/tree/development/src/Wpf.Ui.Extension/Wpf.Ui.Extension).

## How to?

1.  Install Visual Studio 2022 from [Visual Studio 2022 downloads](https://visualstudio.microsoft.com/downloads/).
2.  After installation, open Visual Studio
3.  Expand the _Extensions_ tab in the menu and then click _Manage Extensions_  
    ![Extensions tab in Visual Studio](https://user-images.githubusercontent.com/13592821/192057892-39ae96f8-ba25-4fb8-a081-0b8d530f79bf.png)
4.  In the _Online_ tab, use the search engine to enter _WPF-UI_ in it, then click _Download_  
    ![Online tab in Extension Manager for Visual Studio](https://user-images.githubusercontent.com/13592821/192058027-44929773-548d-4ae1-a6e4-e922c04e82e8.png)
5.  After downloading, restart _Visual Studio_
6.  After restarting, you will see a window asking you to confirm the installation.  
    ![Confirm Visual Studio Installation](https://user-images.githubusercontent.com/13592821/192058231-c5587473-a44d-4046-a6ad-8cd0a3cdc9df.png)
7.  Once installed, you can restart _Visual Studio_ and click _Create new project_  
    ![Create new project](https://user-images.githubusercontent.com/13592821/192058452-f1f9005c-4d40-482a-96fb-5dccbafb4102.png)
8.  In the top right corner, you can select the project type  
    ![Project type filter](https://user-images.githubusercontent.com/13592821/192058531-186b0eba-14c0-4761-9781-dd8880e2763a.png)
9.  Voila, you have just installed the **WPF UI** extension.

## Done!

After creating a project, you can familiarize yourself with its structure and proceed to further steps.

- [WPF UI - Getting started](/documentation/getting-started)
- [Introduction to the MVVM Toolkit](https://learn.microsoft.com/en-us/windows/communitytoolkit/mvvm/introduction)
- [.NET Generic Host in ASP.NET Core](https://learn.microsoft.com/en-us/aspnet/core/fundamentals/host/generic-host?view=aspnetcore-6.0)


================================================
FILE: docs/documentation/fonticon.md
================================================
# FontIcon

`FontIcon` is a control responsible for rendering icons based on the provided font.

### Implementation

```csharp
class Wpf.Ui.Controls.FontIcon
```

## Exposes

```csharp
// Gets or sets displayed glyph
FontIcon.Glyph = '\uE00B';
```

```csharp
// Gets or sets used font family
FontIcon.FontFamily = "Segoe Fluent Icons";
```

```csharp
// Icon foreground
FontIcon.Foreground = Brushes.White;
```

```csharp
// Icon size
FontIcon.FontSize = 16;
```

### How to use

```xml
<ui:FontIcon
  Glyph="&#xe00b;"
  FontFamily="{DynamicResource SegoeFluentIcons}"
  FontSize="16"
  Foreground="White"/>
```


================================================
FILE: docs/documentation/gallery-editor.md
================================================
# WPF UI - Editor


================================================
FILE: docs/documentation/gallery-monaco-editor.md
================================================
# WPF UI - Monaco Editor


================================================
FILE: docs/documentation/gallery.md
================================================
# WPF UI Gallery

**WPF UI Gallery** is a free application available in the _Microsoft Store_, with which you can test all functionalities.  
https://apps.microsoft.com/store/detail/wpf-ui/9N9LKV8R9VGM

```powershell
$ winget install 'WPF UI'
```


================================================
FILE: docs/documentation/getting-started.md
================================================
# Getting started

## Adding dictionaries

[XAML](https://docs.microsoft.com/en-us/dotnet/desktop/wpf/xaml/?view=netdesktop-6.0), and hence WPF, operate on resource dictionaries. These are HTML-like files that describe the appearance and various aspects of the [controls](https://wpfui.lepo.co/documentation/controls). **WPF UI** adds its own sets of these files to tell the application how the controls should look.

There should be a file called `App.xaml` in your new application. Add new dictionaries to it using **WPF UI** `ControlsDictionary` and `ThemesDictionary` classes:

```xml
<Application
  ...
  xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml">
  <Application.Resources>
    <ResourceDictionary>
      <ResourceDictionary.MergedDictionaries>
        <ui:ThemesDictionary Theme="Dark" />
        <ui:ControlsDictionary />
      </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
  </Application.Resources>
</Application>
```

Notice that the `ThemeDictionary` lets you choose a color theme, `Light` or `Dark`.

## The main window

There should be a `MainWindow.xaml` file in your newly created application. It contains the arrangement of the controls used and their parameters.

```xml
<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp1"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>

    </Grid>
</Window>
```

Add the **WPF UI** library namespace to this window to tell the XAML compiler that you will be using controls from the library.

```xml
<Window
  ...
  xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml" />
```

## Adding controls

To add a new control from the **WPF UI** library, just enter its class name, prefixing it with the `ui:` prefix:

```xml
<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml"
        xmlns:local="clr-namespace:WpfApp1"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
      <ui:SymbolIcon Symbol="Fluent24"/>
    </Grid>
</Window>
```

# Well...

That's it when it comes to the basics, information about individual controls can be found in [documentation](https://wpfui.lepo.co/documentation/). Rules for building a WPF application can be found in the [official Microsoft documentation](https://learn.microsoft.com/en-us/dotnet/desktop/wpf/controls/styles-templates-overview?view=netdesktop-6.0). You can check out [**how to build MVVM applications** here](https://learn.microsoft.com/en-us/windows/communitytoolkit/mvvm/puttingthingstogether).

If you think this documentation needs improvement, please [help improve it here](https://github.com/lepoco/wpfui/tree/development/docs/tutorial).


================================================
FILE: docs/documentation/icons.md
================================================
# Fluent System Icons

Fluent System Icons is a set of icons that is designed to be used with Microsoft's Fluent Design System. It is a collection of over 1,500 icons that are designed to be modern, consistent, and scalable, and can be used in a variety of applications and platforms, including web and mobile applications.

The Fluent System Icons set includes a range of icons, such as those for basic navigation, media playback, communication, and more. The icons are available in various sizes, from 16x16 to 512x512 pixels, and are provided in vector format, allowing for easy scaling and customization.

Fluent System Icons is available for free and can be downloaded from the official Microsoft website. It is also open source, meaning that developers can contribute to the icon set or create their own custom icons based on the existing ones.  
[Fluent UI System Icons](https://github.com/microsoft/fluentui-system-icons)

**WPF UI** uses Fluent UI System Icons in most of the graphical controls.

## Getting started

Icons are displayed by using the font that comes with the library. All glyphs are mapped to the [SymbolRegular](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Common/SymbolRegular.cs) and [SymbolFilled](https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Common/SymbolFilled.cs) enums.

Icon controls and fonts will be automatically added to your application if you add `ControlsDictionary` in the **App.xaml** file:

```xml
<Application
    ...
    xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml">
    <Application.Resources>
        <ui:ThemesDictionary Theme="Dark" />
        <ui:ControlsDictionary />
    </Application.Resources>
</Application>
```

> [!NOTE]
> You can find out how the Control Dictionary works here

## Segoe Fluent Icons

Not all icons available in WinUi 3 are in **Fluent UI System Icons**. Some of them require the **Segoe Fluent Icons** font.  
According to the EULA of Segoe Fluent Icons we cannot ship a copy of it with this dll. Segoe Fluent Icons is installed by default on Windows 11, but if you want these icons in an application for Windows 10 and below, you must manually add the font to your application's resources.  
[https://docs.microsoft.com/en-us/windows/apps/design/style/segoe-fluent-icons-font](https://docs.microsoft.com/en-us/windows/apps/design/style/segoe-fluent-icons-font)  
[https://docs.microsoft.com/en-us/windows/apps/design/downloads/#fonts](https://docs.microsoft.com/en-us/windows/apps/design/downloads/#fonts)

In the `App.xaml` dictionaries, you can add an alternate path to the font

```xml
<Application
    ...
    xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml">
    <Application.Resources>
        <ui:ThemesDictionary Theme="Dark" />
        <ui:ControlsDictionary />

        <FontFamily x:Key="SegoeFluentIcons">pack://application:,,,/;component/Fonts/#Segoe Fluent Icons</FontFamily>
    </Application.Resources>
</Application>
```


================================================
FILE: docs/documentation/index.md
================================================
# WPF UI Docs

**WPF UI** is a library built for [Windows Presentation Foundation (WPF)](https://docs.microsoft.com/en-us/visualstudio/designers/getting-started-with-wpf) and the [C#](https://docs.microsoft.com/en-us/dotnet/csharp/) language.  
To be able to work with them comfortably, you will need:

- [Visual Studio 2022 Community Edition](https://visualstudio.microsoft.com/vs/community/)
- .NET desktop development  
  _(Additional workload in Visual Studio)_

![NET development package](https://user-images.githubusercontent.com/13592821/191967842-118b8dc2-fb33-49c1-b9a9-162669b6e110.png)

> [!NOTE]
> Visual Studio 2022 and Visual Studio Code are two different programs. If you want to create WPF apps, it's possible to compile them in Visual Studio Code, however for comfortable work we recommend [Visual Studio 2022](https://visualstudio.microsoft.com/vs/community/) or [JetBrains Rider](https://www.jetbrains.com/rider/).

## Installation

You can install **WPF UI**, the library for the Windows Presentation Foundation framework, in several ways.

- Directly specify the `Wpf.Ui.dll` file in your application's project file (`.csproj`).
- Copy the library source code into your application codebase.
- Use the **NuGet** package manager.

We recommend using the **NuGet** package manager, it allows you to easily install and update your application dependencies.  
More information on how to install **WPF UI** using **NuGet** [can be found here](/documentation/nuget.html).

## Extension for Visual Studio

Creators of **WPF UI** have prepared a special plugin that will automatically create a project based on **WPF UI**, Dependency Injection and MVVM, thanks to which you will quickly and easily start a new apps.

[Learn more about the WPF UI plug-in for Visual Studio 2022](/documentation/extension.html)

## Getting started

Once you have chosen how to install **WPF UI**, you can move on to creating your first app, more on this in [Getting Started](/documentation/getting-started.html).


================================================
FILE: docs/documentation/menu.md
================================================
# Menu


================================================
FILE: docs/documentation/navigation-view.md
================================================
# NavigationView

`NavigationView` is a top-level navigation control that provides a collapsible navigation pane (the "hamburger menu") and a content area. It is the primary way to implement top-level navigation in your app.

> [!TIP]
> For a complete implementation example, see the [WPF UI Gallery](https://github.com/lepoco/wpfui/tree/main/src/Wpf.Ui.Gallery) application.

## Anatomy

The `NavigationView` control has several key areas:

- **Pane**: The area on the left or top that contains navigation items.
- **Header**: An area at the top of the content area, often used for a page title or a `BreadcrumbBar`.
- **Content Area**: The main area of the control where page content is displayed.
- **AutoSuggestBox**: An optional search box integrated into the navigation pane.
- **MenuItems**: The primary list of navigation items.
- **FooterMenuItems**: A secondary list of navigation items, typically for settings or about pages.

## Basic Usage

Define `NavigationView` in your XAML and add `NavigationViewItem` objects to the `MenuItems` and `FooterMenuItems` collections.

```xml
<ui:NavigationView
    xmlns:pages="clr-namespace:YourApp.Views.Pages"
    xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml">
    <ui:NavigationView.MenuItems>
        <ui:NavigationViewItem
            Content="Home"
            Icon="{ui:SymbolIcon Home24}"
            TargetPageType="{x:Type pages:DashboardPage}" />
        <ui:NavigationViewItem
            Content="Data"
            Icon="{ui:SymbolIcon DataHistogram24}"
            TargetPageType="{x:Type pages:DataPage}" />
    </ui:NavigationView.MenuItems>
    <ui:NavigationView.FooterMenuItems>
        <ui:NavigationViewItem
            Content="Settings"
            Icon="{ui:SymbolIcon Settings24}"
            TargetPageType="{x:Type pages:SettingsPage}" />
    </ui:NavigationView.FooterMenuItems>
</ui:NavigationView>
```

> [!NOTE]
> `TargetPageType` is a required property on `NavigationViewItem` that specifies the page to navigate to when the item is selected. The value must be a `System.Type`.

## Programmatic Navigation

You can navigate programmatically by calling the `Navigate` method with either the `Type` of the page or its `PageTag`.

```csharp
// Navigate by Type
MyNavigationView.Navigate(typeof(SettingsPage));

// Navigate by Tag
MyNavigationView.Navigate("settings");
```

To use tags, you must define a `PageTag` on the `NavigationViewItem`. If not defined, a tag is automatically generated from the `Content` property (e.g., "Settings Page" becomes "settingspage").

```xml
<ui:NavigationViewItem
    Content="Settings"
    PageTag="settings"
    TargetPageType="{x:Type pages:SettingsPage}" />
```

### Back Navigation

`NavigationView` automatically handles back navigation. The back button is shown when `CanGoBack` is `true`. You can also call `GoBack()` programmatically.

```csharp
if (MyNavigationView.CanGoBack)
{
    MyNavigationView.GoBack();
}
```

## Pane Display Mode

Control the visibility and behavior of the navigation pane with the `PaneDisplayMode` property.

- `Left`: The pane is always open on the left.
- `Top`: The pane is shown as a horizontal bar at the top.
- `LeftCompact`: The pane is collapsed to show only icons, and expands on hover or when the hamburger button is clicked.
- `LeftMinimal`: The pane is hidden and can be opened as an overlay.

```xml
<ui:NavigationView PaneDisplayMode="Top" />
```

You can also control the pane's open state with the `IsPaneOpen` property.

> [!TIP]
> To create a responsive layout that changes `PaneDisplayMode` based on window width, bind `PaneDisplayMode` to a property in your ViewModel and update it in the `Window.SizeChanged` event.

## Header

The `Header` property provides a content area above the navigation frame. It is commonly used with a `BreadcrumbBar` to show the user's location.

```xml
<ui:NavigationView>
    <ui:NavigationView.Header>
        <ui:BreadcrumbBar />
    </ui:NavigationView.Header>
</ui:NavigationView>
```

The `BreadcrumbBar` will automatically sync with the `NavigationView`'s navigation history.

## MVVM Integration

For MVVM applications, it is recommended to use `INavigationService` and `IPageService` for navigation and page resolution.

### 1. Service Configuration

First, register the required services and your pages/ViewModels with your dependency injection container.

```csharp
// Using Microsoft.Extensions.DependencyInjection
Host.CreateDefaultBuilder()
    .ConfigureServices((context, services) =>
    {
        // Main window
        services.AddScoped<IWindow, MainWindow>();
        services.AddScoped<MainWindowViewModel>();

        // Services
        services.AddSingleton<INavigationService, NavigationService>();
        services.AddSingleton<IPageService, PageService>();

        // Pages and ViewModels
        services.AddScoped<DashboardPage>();
        services.AddScoped<DashboardViewModel>();
        services.AddScoped<SettingsPage>();
        services.AddScoped<SettingsViewModel>();
    }).Build();
```

### 2. ViewModel Setup

In your `MainWindowViewModel`, define collections for your navigation items and bind them to the `NavigationView`.

```csharp
public partial class MainWindowViewModel : ObservableObject
{
    [ObservableProperty]
    private ICollection<object> _menuItems = new ObservableCollection<object>();

    [ObservableProperty]
    private ICollection<object> _footerMenuItems = new ObservableCollection<object>();

    public MainWindowViewModel()
    {
        MenuItems = new ObservableCollection<object>
        {
            new NavigationViewItem("Home", SymbolRegular.Home24, typeof(DashboardPage)),
            new NavigationViewItem("Data", SymbolRegular.DataHistogram24, typeof(DataPage))
        };

        FooterMenuItems = new ObservableCollection<object>
        {
            new NavigationViewItem("Settings", SymbolRegular.Settings24, typeof(SettingsPage))
        };
    }
}
```

### 3. View Setup

In your `MainWindow.xaml`, bind the `MenuItemsSource` and `FooterMenuItemsSource` properties to the collections in your ViewModel. Then, attach the `INavigationService`.

```xml
<ui:NavigationView
    x:Name="RootNavigationView"
    MenuItemsSource="{Binding MenuItems}"
    FooterMenuItemsSource="{Binding FooterMenuItems}" />
```

```csharp
public partial class MainWindow : IWindow
{
    public MainWindow(
        MainWindowViewModel viewModel,
        INavigationService navigationService,
        IPageService pageService
    )
    {
        ViewModel = viewModel;
        DataContext = this;
        InitializeComponent();

        // Attach the service to the NavigationView
        navigationService.SetNavigationControl(RootNavigationView);
        
        // You can also set the page service, which is required for some functionalities
        RootNavigationView.SetPageService(pageService);
    }

    public MainWindowViewModel ViewModel { get; }
}
```

### 4. Navigating from a ViewModel

Inject `INavigationService` into any ViewModel and use it to navigate.

```csharp
public partial class DashboardViewModel : ObservableObject
{
    private readonly INavigationService _navigationService;

    public DashboardViewModel(INavigationService navigationService)
    {
        _navigationService = navigationService;
    }

    [RelayCommand]
    private void OnGoToSettings()
    {
        _navigationService.Navigate(typeof(SettingsPage));
    }
}
```

## Navigation Events

`NavigationView` provides several events to hook into the navigation lifecycle:

- `Navigating`: Occurs before navigation starts. Can be cancelled.
- `Navigated`: Occurs after navigation is complete.
- `SelectionChanged`: Occurs when a `NavigationViewItem` is selected.

```csharp
private void OnNavigating(NavigationView sender, NavigatingCancelEventArgs args)
{
    // Don't navigate to settings if the user is not an admin
    if (args.PageType == typeof(SettingsPage) && !_isAdmin)
    {
        args.Cancel = true;
    }
}
```

## Navigation-Aware Pages

Implement `INavigationAware` on your page's code-behind or `INavigableView<T>` on your ViewModel to receive navigation events directly.

### INavigationAware

This interface is ideal for code-behind scenarios.

```csharp
public partial class MyPage : INavigationAware
{
    public void OnNavigatedTo()
    {
        // Page was navigated to
    }

    public void OnNavigatedFrom()
    {
        // Page was navigated away from
    }
}
```

### `INavigableView<T>`

This interface is designed for MVVM. Your page must inherit from `INavigableView<T>` where `T` is its ViewModel. The ViewModel will then receive the navigation calls.

**Page:**

```csharp
[GalleryPage("My Page", SymbolRegular.Page24)]
public partial class MyPage : INavigableView<MyViewModel>
{
    public MyViewModel ViewModel { get; }

    public MyPage(MyViewModel viewModel)
    {
        ViewModel = viewModel;
        DataContext = this;
        InitializeComponent();
    }
}
```

**ViewModel:**

```csharp
public partial class MyViewModel : ObservableObject, INavigationAware
{
    public void OnNavigatedTo()
    {
        // Page was navigated to
    }

    public void OnNavigatedFrom()
    {
        // Page was navigated away from
    }
}
```

> [!IMPORTANT]
> For `INavigableView<T>` to work, your page must have a public `ViewModel` property that returns an instance of the ViewModel.

## History and Caching

`NavigationView` maintains a navigation history.

- `History`: A collection of `Page` instances that have been visited.
- `CacheHistory`: The number of pages to keep in memory. The default is `0`. Set to a value greater than 0 to cache pages. When a cached page is navigated to, its previous state is preserved.

```xml
<ui:NavigationView CacheHistory="5" />
```

> [!CAUTION]
> Caching pages increases memory consumption. Use it only for pages that are expensive to create or where preserving state is critical. Avoid caching pages that display frequently changing data.


================================================
FILE: docs/documentation/nuget.md
================================================
# NuGet package for WPF UI

## What's NuGet?

NuGet is a free, open-source package management system for the Microsoft .NET platform. It simplifies the process of finding, installing, and managing third-party libraries and tools in .NET projects. NuGet allows developers to easily add functionality to their projects without having to manually download and reference external libraries. It also provides a way for developers to publish and share their own packages with the .NET community. Overall, NuGet makes it easier to manage dependencies in .NET projects and helps to improve productivity for developers.

- [Read more here](https://learn.microsoft.com/en-us/nuget/what-is-nuget)
- [How to install NuGet packages](https://learn.microsoft.com/en-us/nuget/consume-packages/overview-and-workflow#ways-to-install-a-nuget-package=)
- [Install and manage packages in Visual Studio using the NuGet Package Manager](https://learn.microsoft.com/en-us/nuget/consume-packages/install-use-packages-visual-studio)

## How to install **WPF UI** in Visual Studio using the NuGet Package Manager?

### 1. Create new WPF project

![New project in Visual Studio](https://user-images.githubusercontent.com/13592821/192056284-0efcefa6-990e-4ef6-ab44-5746e4bf66ed.png)

### 2. Open _Manage NuGet Packages_ window via solution explorer

![Manage NuGet Packages](https://user-images.githubusercontent.com/13592821/192056354-4f5a46c1-d02f-4c7b-8822-c8cd6f105ed1.png)

### 3. In the _Browse_ tab, enter "**WPF-UI**"

![Browse tab in NuGet](https://user-images.githubusercontent.com/13592821/192056603-d9c48b4d-b9f1-485a-80cf-9fd27d8e55d7.png)

### 4. Install **WPF-UI** package

![Package installed](https://user-images.githubusercontent.com/13592821/192056761-186336dd-3aed-450c-b036-bbfdc6b73e74.png)

# Done!

Package installed, to learn more, go to the [**Getting started**](/documentation/getting-started.html) page.


================================================
FILE: docs/documentation/releases.md
================================================
# WPF UI Releases

| Version | Is supported |
| ------- | ------------ |
| 3.0.0   | Yes          |


================================================
FILE: docs/documentation/symbolicon.md
================================================
# SymbolIcon

`SymbolIcon` is a control responsible for rendering icons.

### Implementation

```csharp
class Wpf.Ui.Controls.SymbolIcon
```

## Exposes

```csharp
// Gets or sets displayed symbol
SymbolIcon.Symbol = SymbolRegular.Empty;
```

```csharp
// Defines whether or not we should use the SymbolFilled
SymbolIcon.Filled = false;
```

```csharp
// Icon foreground
SymbolIcon.Foreground = Brushes.White;
```

```csharp
// Icon size
SymbolIcon.FontSize = 16;
```

### How to use

```xml
<ui:SymbolIcon
  Symbol="Fluent24"
  Filled="False"
  FontSize="16"
  Foreground="White"/>
```


================================================
FILE: docs/documentation/system-theme-watcher.md
================================================
# SystemThemeWatcher

`SystemThemeWatcher` automatically synchronizes the application's theme, accent color, and window backdrop with the current Windows theme settings. It listens for system-level changes and applies them to your application in real-time.

> [!TIP]
> The simplest way to enable system theme tracking is to call `SystemThemeWatcher.Watch(this);` in your main window's constructor.

## How It Works

`SystemThemeWatcher` attaches a hook to a window's message procedure (`WndProc`) and listens for the `WM_WININICHANGE` system message. When Windows broadcasts this message (e.g., when the user changes from light to dark mode), the watcher automatically calls `ApplicationThemeManager.ApplySystemTheme()` to update your application's appearance.

## Basic Usage

Enable theme watching in your window's constructor. This will use the default `Mica` backdrop and update accent colors.

```csharp
using Wpf.Ui.Appearance;

public partial class MainWindow : System.Windows.Window
{
    public MainWindow()
    {
        // This will apply the system theme, accent, and default backdrop.
        SystemThemeWatcher.Watch(this);

        InitializeComponent();
    }
}
```

## Customization

You can customize the backdrop effect and control whether the accent color is updated.

### Window Backdrop

Specify the `WindowBackdropType` to apply when the theme changes.

```csharp
SystemThemeWatcher.Watch(
    this,
    WindowBackdropType.Acrylic // Use Acrylic backdrop
);
```

Available backdrop types:

- `None`: No backdrop effect.
- `Auto`: Automatically selects the appropriate backdrop.
- `Mica`: The default Windows 11 Mica effect.
- `Acrylic`: The semi-transparent Acrylic effect.
- `Tabbed`: A blurred wallpaper effect available in recent Windows 11 versions.

### Accent Color Updates

You can prevent the watcher from changing the application's accent color.

```csharp
SystemThemeWatcher.Watch(
    this,
    updateAccents: false // Theme will change, but accent color will not
);
```

## Stop Watching

To stop a window from responding to system theme changes, use the `UnWatch` method.

```csharp
SystemThemeWatcher.UnWatch(this);
```

> [!IMPORTANT]
> Do not call `UnWatch` on a window that has not been loaded, as it will throw an `InvalidOperationException`. It is safe to call `Watch` on a window that is not yet loaded.

## Dependency Injection Usage

If you are resolving your main window from a dependency injection container, you can start the watcher after the host is built.

```csharp
var host = Host.CreateDefaultBuilder()
    .ConfigureServices(services =>
    {
        services.AddHostedService<ApplicationHostService>();
        services.AddSingleton<MainWindow>();
        // ... other services
    }).Build();

await host.StartAsync();

var mainWindow = host.Services.GetRequiredService<MainWindow>();

// Watch the window after it's been created
SystemThemeWatcher.Watch(mainWindow);
```

> [!NOTE]
> `SystemThemeWatcher` works on a static, global basis. While you can `Watch` multiple windows, the theme and accent settings applied will be the same for all of them based on the parameters of the last `Watch` call that triggered an update.


================================================
FILE: docs/documentation/themes.md
================================================
# Application Themes

WPF UI provides a robust theming system that allows you to control your application's appearance, including support for light, dark, and high contrast modes. The `ApplicationThemeManager` class is the primary tool for managing themes at runtime.

> [!IMPORTANT]
> For theme changes to apply correctly, your colors and brushes should be referenced as `DynamicResource`.

## Setting the Initial Theme

The easiest way to set the initial theme is by using the `ThemesDictionary` in your `App.xaml`. This ensures that the correct theme resources are loaded at startup.

```xml
<Application
    xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ui:ThemesDictionary Theme="Light" />
                <ui:ControlsDictionary />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>
```

The `Theme` property on `ThemesDictionary` can be set to `Light` or `Dark`.

## Changing the Theme at Runtime

Use the `ApplicationThemeManager.Apply()` method to change the theme while the application is running.

```csharp
using Wpf.Ui.Appearance;
using Wpf.Ui.Controls;

// Apply the Light theme with a Mica backdrop
ApplicationThemeManager.Apply(
    ApplicationTheme.Light,
    WindowBackdropType.Mica
);
```

### `ApplicationTheme` Enum

This enum specifies the theme to apply:

- `Light`: The standard light theme.
- `Dark`: The standard dark theme.
- `HighContrast`: Automatically selects the appropriate Windows High Contrast theme.

## System Theme Integration

You can synchronize your application's theme with the current Windows theme settings.

### One-Time Sync

To apply the current system theme once, use `ApplySystemTheme()`.

```csharp
// Apply the current Windows theme (light or dark)
ApplicationThemeManager.ApplySystemTheme();
```

### Automatic Tracking

For continuous synchronization, use the `SystemThemeWatcher`. It automatically updates your app's theme and accent color when the user changes their Windows settings. See the [SystemThemeWatcher documentation](./system-theme-watcher.md) for more details.

```csharp
using Wpf.Ui.Appearance;

public partial class MainWindow : System.Windows.Window
{
    public MainWindow()
    {
        // Watch for system theme changes
        SystemThemeWatcher.Watch(this);

        InitializeComponent();
    }
}
```

## Reading the Current Theme

You can get the current application and system themes at any time.

- `ApplicationThemeManager.GetAppTheme()`: Returns the current `ApplicationTheme` (Light, Dark, or HighContrast).
- `ApplicationThemeManager.GetSystemTheme()`: Returns the current `SystemTheme`.

```csharp
ApplicationTheme currentAppTheme = ApplicationThemeManager.GetAppTheme();
SystemTheme currentSystemTheme = ApplicationThemeManager.GetSystemTheme();

if (currentAppTheme == ApplicationTheme.Dark)
{
    // ...
}
```

### `SystemTheme` Enum

This enum represents the actual theme reported by Windows, including decorative themes like `Glow`, `CapturedMotion`, and `Sunrise`. `ApplicationThemeManager` maps these to either `Light` or `Dark`.

## High Contrast Themes

WPF UI automatically handles Windows High Contrast themes. When a high contrast mode is detected, `ApplicationThemeManager` loads the appropriate high contrast resource dictionary (`HC1`, `HC2`, `HCBlack`, or `HCWhite`).

- `ApplicationThemeManager.IsHighContrast()`: Checks if the application is currently in a high contrast theme.
- `ApplicationThemeManager.IsSystemHighContrast()`: Checks if Windows is currently in a high contrast mode.

## Theme Changed Event

The `ApplicationThemeManager.Changed` event is triggered whenever the application's theme is successfully changed.

```csharp
ApplicationThemeManager.Changed += (currentTheme, currentAccent) =>
{
    Debug.WriteLine($"Theme changed to {currentTheme} with accent {currentAccent}");
};
```

This event is useful for applying custom logic after a theme change, such as updating graphics or non-WPF UI elements.

> [!TIP]
> The `Changed` event is fired by both manual `Apply()` calls and automatic updates from `SystemThemeWatcher`, providing a single place to react to any theme change.


================================================
FILE: docs/index.md
================================================
<div class="spaced-page">
  <div class="row">
      <div class="col-12 col-lg-6">
          <div class="colorful"><img src="/images/wpfui-gallery.png" alt="WPF UI Store Window with Fluent UI" /></div>
      </div>
      <div class="col-12 col-lg-6 d-flex align-items-center">
          <div class="spaced-page-separator">
              <h1 class="display-1">WPF UI</h1>
              <p>A simple way to make your application written in WPF keep up with modern design trends. Library changes
                  the base elements like Page, ToggleButton or List, and also includes additional controls like
                  Navigation, NumberBox, Dialog or Snackbar.</p><a class="btn btn-outline-primary mr-05"
                  href="/documentation/getting-started.html">Start tutorial</a><a class="btn btn-outline-light"
                  href="/documentation">Read the docs</a>
          </div>
      </div>
  </div>
</div>

<div>
  <div class="row">
    <div class="col-12">
      <div class="space">
        <div class="card card-call-to-action p-2">
          <div class="row">
            <div class="col">
              <h4>Check out the Gallery</h4>
              <span>Check out all the controls and functionality with the help of the free <strong>WPF UI Gallery </strong> app.</span>
            </div>
            <div class="col-auto">
              <a href="https://apps.microsoft.com/store/detail/wpf-ui/9N9LKV8R9VGM?cid=windows-lp-hero" target="_blank" rel="noopener" class="btn btn-ms-store">
                <img class="btn-image" src="/images/ms-download.png" alt="Download from MS Store" />
              </a>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>

<div>
  <div class="row">
    <div class="col-12 col-lg-8">
      <div class="space">
        <h2 class="display-4">Fluent UI in your favorite environment</h2>
      </div>
    </div>
    <div class="col-12"></div>
    <div class="col-12 col-lg-4 separator-bottom">
      <div class="card">
        <div class="card-body">
          <img src="/images/github.svg" alt="GitHub Logo" />
          <p><strong>Open source</strong></p>
          <span
            >WPF UI is free and open source. You can check the source code or
            change it to your liking.</span
          >
        </div>
      </div>
    </div>
    <div class="col-12 col-lg-4 separator-bottom">
      <div class="card">
        <div class="card-body">
          <img src="/images/nuget.svg" alt="NuGet Logo" />
          <p><strong>Easy to install</strong></p>
          <span
            >WPF UI is delivered via NuGet package manager. Just find it in
            the search and add to your project.</span
          >
        </div>
      </div>
    </div>
    <div class="col-12 col-lg-4 separator-bottom">
      <div class="card">
        <div class="card-body">
          <img src="/images/vs22.svg" alt="Visual Studio 2022 Logo" />
          <p><strong>Compatible</strong></p>
          <span
            >Most styles and controls work right away in Visual Studio
            Designer.</span
          >
        </div>
      </div>
    </div>
  </div>
</div>

<div class="row">
    <div class="col-12 col-sm-6 col-lg-3 d-flex justify-content-center">
        <div class="stats">
            <strong id="wpfui-downloads" class="display-4">650K</strong>Downloads
        </div>
    </div>
    <div class="col-12 col-sm-6 col-lg-3 d-flex justify-content-center">
        <div class="stats">
            <strong id="wpfui-stars" class="display-4">9K</strong>GitHub Stars
        </div>
    </div>
    <div class="col-12 col-sm-6 col-lg-3 d-flex justify-content-center">
        <div class="stats">
            <strong id="wpfui-forks" class="display-4">900</strong>Forks
        </div>
    </div>
    <div class="col-12 col-sm-6 col-lg-3 d-flex justify-content-center">
        <div class="stats">
            <strong id="wpfui-sponsors" class="display-4">2</strong>Sponsors
        </div>
    </div>
</div>

![Demo App Sample](https://user-images.githubusercontent.com/13592821/166259110-0fb98120-fe34-4e6d-ab92-9f72ad7113c3.png)

![Monaco Editor](https://user-images.githubusercontent.com/13592821/258610583-7d71f69d-45b3-4be6-bcb8-8cf6cd60a2ff.png)

![Text Editor Sample](https://user-images.githubusercontent.com/13592821/165918838-a65cbb86-4fc4-4efb-adb7-e39027fb661f.png)

[Created with ❤ in Poland by lepo.co](https://lepo.co/)  
A simple way to make your application written in WPF keep up with modern design trends. Library changes the base elements like `Page`, `ToggleButton` or `List`, and also includes additional controls like `Navigation`, `NumberBox`, `Dialog` or `Snackbar`.

[![Discord](https://img.shields.io/discord/1071051348348514375?label=discord)](https://discord.gg/AR9ywDUwGq) [![GitHub license](https://img.shields.io/github/license/lepoco/wpfui)](https://github.com/lepoco/wpfui/blob/master/LICENSE) [![Nuget](https://img.shields.io/nuget/v/WPF-UI)](https://www.nuget.org/packages/WPF-UI/) [![Nuget](https://img.shields.io/nuget/dt/WPF-UI?label=nuget)](https://www.nuget.org/packages/WPF-UI/) [![VS 2022 Downloads](https://img.shields.io/visual-studio-marketplace/i/lepo.WPF-UI?label=vs-2022)](https://marketplace.visualstudio.com/items?itemName=lepo.WPF-UI) [![Sponsors](https://img.shields.io/github/sponsors/lepoco)](https://github.com/sponsors/lepoco)

[Getting Started](/documentation/getting-started.html)


================================================
FILE: docs/manifest.webmanifest
================================================
{
    "theme_color": "#1f1f23",
    "background_color": "#1f1f23",
    "display": "standalone",
    "scope": "/",
    "start_url": "/",
    "name": "WPF UI",
    "short_name": "WPF UI",
    "description": "WPF UI provides the Fluent experience in your known and loved WPF framework. Intuitive design, themes, navigation and new immersive controls. All natively and effortlessly.",
    "icons": [
        {
            "src": "images/icon-192x192.png",
            "sizes": "192x192",
            "type": "image/png"
        },
        {
            "src": "images/icon-256x256.png",
            "sizes": "256x256",
            "type": "image/png"
        },
        {
            "src": "images/icon-384x384.png",
            "sizes": "384x384",
            "type": "image/png"
        },
        {
            "src": "images/icon-512x512.png",
            "sizes": "512x512",
            "type": "image/png"
        }
    ]
}


================================================
FILE: docs/migration/v2-migration.md
================================================
# Migration plan

This page outlines key changes and important details to consider when migrating. It highlights what’s new, what’s changed, and any steps you need to take to ensure a smoot
Download .txt
gitextract_lxt73sm_/

├── .config/
│   └── dotnet-tools.json
├── .csharpierignore
├── .csharpierrc
├── .devcontainer/
│   ├── devcontainer.json
│   └── post-create.sh
├── .editorconfig
├── .gitattributes
├── .github/
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.yaml
│   │   ├── config.yml
│   │   └── feature_request.yaml
│   ├── chatmodes/
│   │   └── documentation_contributor.chatmode.md
│   ├── copilot-instructions.md
│   ├── dependabot.yml
│   ├── labeler.yml
│   ├── labels.yml
│   ├── policies/
│   │   ├── cla.yml
│   │   └── platformcontext.yml
│   ├── pull_request_template.md
│   └── workflows/
│       ├── top-issues-dashboard.yml
│       ├── wpf-ui-cd-docs.yaml
│       ├── wpf-ui-cd-extension.yaml
│       ├── wpf-ui-cd-nuget.yaml
│       ├── wpf-ui-labeler.yml
│       ├── wpf-ui-lock.yml
│       └── wpf-ui-pr-validator.yaml
├── .gitignore
├── .vsconfig
├── CNAME
├── CODEOWNERS
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Directory.Build.props
├── Directory.Build.targets
├── Directory.Packages.props
├── LICENSE
├── LICENSE.md
├── README.md
├── SECURITY.md
├── Settings.XamlStyler
├── ThirdPartyNotices.txt
├── Wpf.Ui.Gallery.slnf
├── Wpf.Ui.Library.slnf
├── Wpf.Ui.sln
├── branding/
│   ├── geometric_splash.psd
│   ├── microsoft-fluent-resources.psd
│   └── wpfui.psd
├── build.cmd
├── build.ps1
├── docs/
│   ├── .gitignore
│   ├── codesnippet/
│   │   └── Rtf/
│   │       ├── Hyperlink/
│   │       │   └── RtfDocumentProcessor.cs
│   │       ├── RtfBuildStep.cs
│   │       └── RtfDocumentProcessor.cs
│   ├── docfx.json
│   ├── documentation/
│   │   ├── .gitignore
│   │   ├── about-wpf.md
│   │   ├── accent.md
│   │   ├── extension.md
│   │   ├── fonticon.md
│   │   ├── gallery-editor.md
│   │   ├── gallery-monaco-editor.md
│   │   ├── gallery.md
│   │   ├── getting-started.md
│   │   ├── icons.md
│   │   ├── index.md
│   │   ├── menu.md
│   │   ├── navigation-view.md
│   │   ├── nuget.md
│   │   ├── releases.md
│   │   ├── symbolicon.md
│   │   ├── system-theme-watcher.md
│   │   └── themes.md
│   ├── index.md
│   ├── manifest.webmanifest
│   ├── migration/
│   │   ├── v2-migration.md
│   │   ├── v3-migration.md
│   │   └── v4-migration.md
│   ├── robots.txt
│   ├── templates/
│   │   ├── .eslintrc.js
│   │   ├── .gitignore
│   │   ├── .stylelintrc.json
│   │   ├── README.md
│   │   ├── build.js
│   │   ├── package.json
│   │   ├── tsconfig.json
│   │   └── wpfui/
│   │       ├── layout/
│   │       │   └── _master.tmpl
│   │       ├── partials/
│   │       │   ├── class.header.tmpl.partial
│   │       │   ├── class.memberpage.tmpl.partial
│   │       │   ├── class.tmpl.partial
│   │       │   ├── collection.tmpl.partial
│   │       │   ├── customMREFContent.tmpl.partial
│   │       │   ├── enum.tmpl.partial
│   │       │   ├── item.tmpl.partial
│   │       │   └── namespace.tmpl.partial
│   │       ├── src/
│   │       │   ├── docfx.scss
│   │       │   ├── docfx.ts
│   │       │   ├── dotnet.scss
│   │       │   ├── helper.test.ts
│   │       │   ├── helper.ts
│   │       │   ├── highlight.scss
│   │       │   ├── highlight.ts
│   │       │   ├── layout.scss
│   │       │   ├── markdown.scss
│   │       │   ├── markdown.ts
│   │       │   ├── mixins.scss
│   │       │   ├── nav.scss
│   │       │   ├── nav.ts
│   │       │   ├── options.d.ts
│   │       │   ├── search-worker.ts
│   │       │   ├── search.scss
│   │       │   ├── search.ts
│   │       │   ├── theme.ts
│   │       │   ├── toc.scss
│   │       │   ├── toc.ts
│   │       │   ├── wpfui-index-stats.ts
│   │       │   └── wpfui.scss
│   │       ├── toc.json.js
│   │       └── toc.json.tmpl
│   └── toc.yml
├── nuget.config
├── samples/
│   ├── Wpf.Ui.Demo.Console/
│   │   ├── GlobalUsings.cs
│   │   ├── Models/
│   │   │   └── DataColor.cs
│   │   ├── Program.cs
│   │   ├── Utilities/
│   │   │   └── ThemeUtilities.cs
│   │   ├── Views/
│   │   │   ├── MainView.xaml
│   │   │   ├── MainView.xaml.cs
│   │   │   ├── Pages/
│   │   │   │   ├── DashboardPage.xaml
│   │   │   │   ├── DashboardPage.xaml.cs
│   │   │   │   ├── DataPage.xaml
│   │   │   │   ├── DataPage.xaml.cs
│   │   │   │   ├── SettingsPage.xaml
│   │   │   │   └── SettingsPage.xaml.cs
│   │   │   ├── SimpleView.xaml
│   │   │   └── SimpleView.xaml.cs
│   │   └── Wpf.Ui.Demo.Console.csproj
│   ├── Wpf.Ui.Demo.Dialogs/
│   │   ├── App.xaml
│   │   ├── App.xaml.cs
│   │   ├── AssemblyInfo.cs
│   │   ├── MainWindow.xaml
│   │   ├── MainWindow.xaml.cs
│   │   ├── Wpf.Ui.Demo.Dialogs.csproj
│   │   └── app.manifest
│   ├── Wpf.Ui.Demo.Mvvm/
│   │   ├── App.xaml
│   │   ├── App.xaml.cs
│   │   ├── AssemblyInfo.cs
│   │   ├── GlobalUsings.cs
│   │   ├── Helpers/
│   │   │   └── EnumToBooleanConverter.cs
│   │   ├── Models/
│   │   │   ├── AppConfig.cs
│   │   │   └── DataColor.cs
│   │   ├── Services/
│   │   │   └── ApplicationHostService.cs
│   │   ├── ViewModels/
│   │   │   ├── DashboardViewModel.cs
│   │   │   ├── DataViewModel.cs
│   │   │   ├── MainWindowViewModel.cs
│   │   │   ├── SettingsViewModel.cs
│   │   │   └── ViewModel.cs
│   │   ├── Views/
│   │   │   ├── MainWindow.xaml
│   │   │   ├── MainWindow.xaml.cs
│   │   │   └── Pages/
│   │   │       ├── DashboardPage.xaml
│   │   │       ├── DashboardPage.xaml.cs
│   │   │       ├── DataPage.xaml
│   │   │       ├── DataPage.xaml.cs
│   │   │       ├── SettingsPage.xaml
│   │   │       └── SettingsPage.xaml.cs
│   │   ├── Wpf.Ui.Demo.Mvvm.csproj
│   │   └── app.manifest
│   ├── Wpf.Ui.Demo.SetResources.Simple/
│   │   ├── App.xaml
│   │   ├── App.xaml.cs
│   │   ├── AssemblyInfo.cs
│   │   ├── MainWindow.xaml
│   │   ├── MainWindow.xaml.cs
│   │   ├── Models/
│   │   │   ├── DataColor.cs
│   │   │   └── DataGroup.cs
│   │   ├── Views/
│   │   │   └── Pages/
│   │   │       ├── DashboardPage.xaml
│   │   │       ├── DashboardPage.xaml.cs
│   │   │       ├── DataPage.xaml
│   │   │       ├── DataPage.xaml.cs
│   │   │       ├── ExpanderPage.xaml
│   │   │       ├── ExpanderPage.xaml.cs
│   │   │       ├── SettingsPage.xaml
│   │   │       └── SettingsPage.xaml.cs
│   │   ├── Wpf.Ui.Demo.SetResources.Simple.csproj
│   │   └── app.manifest
│   └── Wpf.Ui.Demo.Simple/
│       ├── App.xaml
│       ├── App.xaml.cs
│       ├── AssemblyInfo.cs
│       ├── MainWindow.xaml
│       ├── MainWindow.xaml.cs
│       ├── Models/
│       │   └── DataColor.cs
│       ├── Views/
│       │   └── Pages/
│       │       ├── DashboardPage.xaml
│       │       ├── DashboardPage.xaml.cs
│       │       ├── DataPage.xaml
│       │       ├── DataPage.xaml.cs
│       │       ├── SettingsPage.xaml
│       │       └── SettingsPage.xaml.cs
│       ├── Wpf.Ui.Demo.Simple.csproj
│       └── app.manifest
├── src/
│   ├── Wpf.Ui/
│   │   ├── Animations/
│   │   │   ├── AnimationProperties.cs
│   │   │   ├── Transition.cs
│   │   │   └── TransitionAnimationProvider.cs
│   │   ├── Appearance/
│   │   │   ├── ApplicationAccentColorManager.cs
│   │   │   ├── ApplicationTheme.cs
│   │   │   ├── ApplicationThemeManager.cs
│   │   │   ├── ObservedWindow.cs
│   │   │   ├── ResourceDictionaryManager.cs
│   │   │   ├── SystemTheme.cs
│   │   │   ├── SystemThemeManager.cs
│   │   │   ├── SystemThemeWatcher.cs
│   │   │   ├── ThemeChangedEvent.cs
│   │   │   ├── UISettingsRCW.cs
│   │   │   └── WindowBackgroundManager.cs
│   │   ├── AutomationPeers/
│   │   │   ├── CardControlAutomationPeer.cs
│   │   │   └── ContentDialogAutomationPeer.cs
│   │   ├── ContentDialogService.cs
│   │   ├── Controls/
│   │   │   ├── AccessText/
│   │   │   │   └── AccessText.xaml
│   │   │   ├── Anchor/
│   │   │   │   ├── Anchor.cs
│   │   │   │   └── Anchor.xaml
│   │   │   ├── Arc/
│   │   │   │   └── Arc.cs
│   │   │   ├── AutoSuggestBox/
│   │   │   │   ├── AutoSuggestBox.cs
│   │   │   │   ├── AutoSuggestBox.xaml
│   │   │   │   ├── AutoSuggestBoxQuerySubmittedEventArgs.cs
│   │   │   │   ├── AutoSuggestBoxSuggestionChosenEventArgs.cs
│   │   │   │   ├── AutoSuggestBoxTextChangedEventArgs.cs
│   │   │   │   └── AutoSuggestionBoxTextChangeReason.cs
│   │   │   ├── Badge/
│   │   │   │   ├── Badge.cs
│   │   │   │   └── Badge.xaml
│   │   │   ├── BreadcrumbBar/
│   │   │   │   ├── BreadcrumbBar.cs
│   │   │   │   ├── BreadcrumbBar.xaml
│   │   │   │   ├── BreadcrumbBarItem.cs
│   │   │   │   └── BreadcrumbBarItemClickedEventArgs.cs
│   │   │   ├── Button/
│   │   │   │   ├── Button.cs
│   │   │   │   └── Button.xaml
│   │   │   ├── Calendar/
│   │   │   │   └── Calendar.xaml
│   │   │   ├── CalendarDatePicker/
│   │   │   │   ├── CalendarDatePicker.cs
│   │   │   │   └── CalendarDatePicker.xaml
│   │   │   ├── Card/
│   │   │   │   ├── Card.cs
│   │   │   │   └── Card.xaml
│   │   │   ├── CardAction/
│   │   │   │   ├── CardAction.cs
│   │   │   │   ├── CardAction.xaml
│   │   │   │   └── CardActionAutomationPeer.cs
│   │   │   ├── CardColor/
│   │   │   │   ├── CardColor.cs
│   │   │   │   └── CardColor.xaml
│   │   │   ├── CardControl/
│   │   │   │   ├── CardControl.cs
│   │   │   │   └── CardControl.xaml
│   │   │   ├── CardExpander/
│   │   │   │   ├── CardExpander.cs
│   │   │   │   └── CardExpander.xaml
│   │   │   ├── CheckBox/
│   │   │   │   └── CheckBox.xaml
│   │   │   ├── ClientAreaBorder/
│   │   │   │   └── ClientAreaBorder.cs
│   │   │   ├── ColorPicker/
│   │   │   │   ├── ColorPicker.cs
│   │   │   │   └── ColorPicker.xaml
│   │   │   ├── ComboBox/
│   │   │   │   └── ComboBox.xaml
│   │   │   ├── ContentDialog/
│   │   │   │   ├── ContentDialog.FocusBehavior.cs
│   │   │   │   ├── ContentDialog.cs
│   │   │   │   ├── ContentDialog.xaml
│   │   │   │   ├── ContentDialogButton.cs
│   │   │   │   ├── ContentDialogHost.cs
│   │   │   │   ├── ContentDialogHost.xaml
│   │   │   │   ├── ContentDialogHostBehavior.cs
│   │   │   │   ├── ContentDialogHostController.cs
│   │   │   │   ├── ContentDialogResult.cs
│   │   │   │   └── EventArgs/
│   │   │   │       ├── ContentDialogButtonClickEventArgs.cs
│   │   │   │       ├── ContentDialogClosedEventArgs.cs
│   │   │   │       └── ContentDialogClosingEventArgs.cs
│   │   │   ├── ContextMenu/
│   │   │   │   ├── ContextMenu.xaml
│   │   │   │   ├── ContextMenuLoader.xaml
│   │   │   │   └── ContextMenuLoader.xaml.cs
│   │   │   ├── ControlAppearance.cs
│   │   │   ├── ControlsServices.cs
│   │   │   ├── DataGrid/
│   │   │   │   ├── DataGrid.cs
│   │   │   │   └── DataGrid.xaml
│   │   │   ├── DatePicker/
│   │   │   │   └── DatePicker.xaml
│   │   │   ├── DateTimeHelper.cs
│   │   │   ├── DropDownButton/
│   │   │   │   ├── DropDownButton.cs
│   │   │   │   └── DropDownButton.xaml
│   │   │   ├── DynamicScrollBar/
│   │   │   │   ├── DynamicScrollBar.cs
│   │   │   │   └── DynamicScrollBar.xaml
│   │   │   ├── DynamicScrollViewer/
│   │   │   │   ├── DynamicScrollViewer.cs
│   │   │   │   └── DynamicScrollViewer.xaml
│   │   │   ├── EffectThicknessDecorator.cs
│   │   │   ├── ElementPlacement.cs
│   │   │   ├── EventIdentifier.cs
│   │   │   ├── Expander/
│   │   │   │   └── Expander.xaml
│   │   │   ├── FluentWindow/
│   │   │   │   ├── FluentWindow.cs
│   │   │   │   └── FluentWindow.xaml
│   │   │   ├── Flyout/
│   │   │   │   ├── Flyout.cs
│   │   │   │   └── Flyout.xaml
│   │   │   ├── FontTypography.cs
│   │   │   ├── Frame/
│   │   │   │   └── Frame.xaml
│   │   │   ├── GridView/
│   │   │   │   ├── GridView.cs
│   │   │   │   ├── GridViewColumn.cs
│   │   │   │   ├── GridViewColumnHeader.xaml
│   │   │   │   ├── GridViewHeaderRowIndicator.xaml
│   │   │   │   ├── GridViewHeaderRowPresenter.cs
│   │   │   │   └── GridViewRowPresenter.cs
│   │   │   ├── HyperlinkButton/
│   │   │   │   ├── HyperlinkButton.cs
│   │   │   │   └── HyperlinkButton.xaml
│   │   │   ├── IAppearanceControl.cs
│   │   │   ├── IDpiAwareControl.cs
│   │   │   ├── IIconControl.cs
│   │   │   ├── IThemeControl.cs
│   │   │   ├── IconElement/
│   │   │   │   ├── FontIcon.cs
│   │   │   │   ├── IconElement.cs
│   │   │   │   ├── IconElementConverter.cs
│   │   │   │   ├── IconSourceElement.cs
│   │   │   │   ├── ImageIcon.cs
│   │   │   │   └── SymbolIcon.cs
│   │   │   ├── IconSource/
│   │   │   │   ├── FontIconSource.cs
│   │   │   │   ├── IconSource.cs
│   │   │   │   └── SymbolIconSource.cs
│   │   │   ├── Image/
│   │   │   │   ├── Image.cs
│   │   │   │   └── Image.xaml
│   │   │   ├── InfoBadge/
│   │   │   │   ├── InfoBadge.cs
│   │   │   │   ├── InfoBadge.xaml
│   │   │   │   └── InfoBadgeSeverity.cs
│   │   │   ├── InfoBar/
│   │   │   │   ├── InfoBar.cs
│   │   │   │   ├── InfoBar.xaml
│   │   │   │   └── InfoBarSeverity.cs
│   │   │   ├── ItemRange.cs
│   │   │   ├── ItemsControl/
│   │   │   │   └── ItemsControl.xaml
│   │   │   ├── Label/
│   │   │   │   └── Label.xaml
│   │   │   ├── ListBox/
│   │   │   │   ├── ListBox.xaml
│   │   │   │   └── ListBoxItem.xaml
│   │   │   ├── ListView/
│   │   │   │   ├── ListView.cs
│   │   │   │   ├── ListView.xaml
│   │   │   │   ├── ListViewItem.cs
│   │   │   │   ├── ListViewItem.xaml
│   │   │   │   └── ListViewViewState.cs
│   │   │   ├── LoadingScreen/
│   │   │   │   ├── LoadingScreen.cs
│   │   │   │   └── LoadingScreen.xaml
│   │   │   ├── Menu/
│   │   │   │   ├── Menu.xaml
│   │   │   │   ├── MenuItem.cs
│   │   │   │   ├── MenuItem.xaml
│   │   │   │   ├── MenuLoader.xaml
│   │   │   │   └── MenuLoader.xaml.cs
│   │   │   ├── MessageBox/
│   │   │   │   ├── MessageBox.cs
│   │   │   │   ├── MessageBox.xaml
│   │   │   │   ├── MessageBoxButton.cs
│   │   │   │   └── MessageBoxResult.cs
│   │   │   ├── NavigationView/
│   │   │   │   ├── INavigationView.cs
│   │   │   │   ├── INavigationViewItem.cs
│   │   │   │   ├── NavigatedEventArgs.cs
│   │   │   │   ├── NavigatingCancelEventArgs.cs
│   │   │   │   ├── NavigationCache.cs
│   │   │   │   ├── NavigationCacheMode.cs
│   │   │   │   ├── NavigationLeftFluent.xaml
│   │   │   │   ├── NavigationView.AttachedProperties.cs
│   │   │   │   ├── NavigationView.Base.cs
│   │   │   │   ├── NavigationView.Events.cs
│   │   │   │   ├── NavigationView.Navigation.cs
│   │   │   │   ├── NavigationView.Properties.cs
│   │   │   │   ├── NavigationView.TemplateParts.cs
│   │   │   │   ├── NavigationView.xaml
│   │   │   │   ├── NavigationViewActivator.cs
│   │   │   │   ├── NavigationViewBackButtonVisible.cs
│   │   │   │   ├── NavigationViewBasePaneButtonStyle.xaml
│   │   │   │   ├── NavigationViewBottom.xaml
│   │   │   │   ├── NavigationViewBreadcrumbItem.cs
│   │   │   │   ├── NavigationViewBreadcrumbItem.xaml
│   │   │   │   ├── NavigationViewCompact.xaml
│   │   │   │   ├── NavigationViewConstants.xaml
│   │   │   │   ├── NavigationViewContentPresenter.cs
│   │   │   │   ├── NavigationViewContentPresenter.xaml
│   │   │   │   ├── NavigationViewItem.cs
│   │   │   │   ├── NavigationViewItemAutomationPeer.cs
│   │   │   │   ├── NavigationViewItemDefaultStyle.xaml
│   │   │   │   ├── NavigationViewItemHeader.cs
│   │   │   │   ├── NavigationViewItemHeader.xaml
│   │   │   │   ├── NavigationViewItemSeparator.cs
│   │   │   │   ├── NavigationViewItemSeparator.xaml
│   │   │   │   ├── NavigationViewLeftMinimalCompact.xaml
│   │   │   │   ├── NavigationViewPaneDisplayMode.cs
│   │   │   │   └── NavigationViewTop.xaml
│   │   │   ├── NumberBox/
│   │   │   │   ├── INumberFormatter.cs
│   │   │   │   ├── INumberParser.cs
│   │   │   │   ├── NumberBox.cs
│   │   │   │   ├── NumberBox.xaml
│   │   │   │   ├── NumberBoxSpinButtonPlacementMode.cs
│   │   │   │   ├── NumberBoxValidationMode.cs
│   │   │   │   ├── NumberBoxValueChangedEventArgs.cs
│   │   │   │   └── ValidateNumberFormatter.cs
│   │   │   ├── Page/
│   │   │   │   └── Page.xaml
│   │   │   ├── PassiveScrollViewer.cs
│   │   │   ├── PasswordBox/
│   │   │   │   ├── PasswordBox.cs
│   │   │   │   ├── PasswordBox.xaml
│   │   │   │   └── PasswordHelper.cs
│   │   │   ├── ProgressBar/
│   │   │   │   └── ProgressBar.xaml
│   │   │   ├── ProgressRing/
│   │   │   │   ├── ProgressRing.cs
│   │   │   │   └── ProgressRing.xaml
│   │   │   ├── RadioButton/
│   │   │   │   └── RadioButton.xaml
│   │   │   ├── RatingControl/
│   │   │   │   ├── RatingControl.cs
│   │   │   │   └── RatingControl.xaml
│   │   │   ├── RichTextBox/
│   │   │   │   ├── RichTextBox.cs
│   │   │   │   └── RichTextBox.xaml
│   │   │   ├── ScrollBar/
│   │   │   │   └── ScrollBar.xaml
│   │   │   ├── ScrollDirection.cs
│   │   │   ├── ScrollViewer/
│   │   │   │   └── ScrollViewer.xaml
│   │   │   ├── Separator/
│   │   │   │   └── Separator.xaml
│   │   │   ├── Slider/
│   │   │   │   └── Slider.xaml
│   │   │   ├── Snackbar/
│   │   │   │   ├── Snackbar.cs
│   │   │   │   ├── Snackbar.xaml
│   │   │   │   └── SnackbarPresenter.cs
│   │   │   ├── SpacingMode.cs
│   │   │   ├── SplitButton/
│   │   │   │   ├── SplitButton.cs
│   │   │   │   └── SplitButton.xaml
│   │   │   ├── StatusBar/
│   │   │   │   └── StatusBar.xaml
│   │   │   ├── SymbolFilled.cs
│   │   │   ├── SymbolGlyph.cs
│   │   │   ├── SymbolRegular.cs
│   │   │   ├── TabControl/
│   │   │   │   └── TabControl.xaml
│   │   │   ├── TabView/
│   │   │   │   ├── TabView.cs
│   │   │   │   └── TabViewItem.cs
│   │   │   ├── TextBlock/
│   │   │   │   ├── TextBlock.cs
│   │   │   │   ├── TextBlock.xaml
│   │   │   │   └── TextBlockMetadata.cs
│   │   │   ├── TextBox/
│   │   │   │   ├── TextBox.cs
│   │   │   │   └── TextBox.xaml
│   │   │   ├── TextColor.cs
│   │   │   ├── ThumbRate/
│   │   │   │   ├── ThumbRate.cs
│   │   │   │   ├── ThumbRate.xaml
│   │   │   │   └── ThumbRateState.cs
│   │   │   ├── TimePicker/
│   │   │   │   ├── ClockIdentifier.cs
│   │   │   │   ├── TimePicker.cs
│   │   │   │   └── TimePicker.xaml
│   │   │   ├── TitleBar/
│   │   │   │   ├── HwndProcEventArgs.cs
│   │   │   │   ├── TitleBar.WindowResize.cs
│   │   │   │   ├── TitleBar.cs
│   │   │   │   ├── TitleBar.xaml
│   │   │   │   ├── TitleBarButton.cs
│   │   │   │   └── TitleBarButtonType.cs
│   │   │   ├── ToggleButton/
│   │   │   │   └── ToggleButton.xaml
│   │   │   ├── ToggleSwitch/
│   │   │   │   ├── ToggleSwitch.cs
│   │   │   │   └── ToggleSwitch.xaml
│   │   │   ├── ToolBar/
│   │   │   │   └── ToolBar.xaml
│   │   │   ├── ToolTip/
│   │   │   │   └── ToolTip.xaml
│   │   │   ├── TreeGrid/
│   │   │   │   ├── TreeGrid.cs
│   │   │   │   ├── TreeGrid.xaml
│   │   │   │   ├── TreeGridHeader.cs
│   │   │   │   └── TreeGridItem.cs
│   │   │   ├── TreeView/
│   │   │   │   ├── TreeView.xaml
│   │   │   │   ├── TreeViewItem.cs
│   │   │   │   └── TreeViewItem.xaml
│   │   │   ├── TypedEventHandler.cs
│   │   │   ├── VirtualizingGridView/
│   │   │   │   ├── VirtualizingGridView.cs
│   │   │   │   └── VirtualizingGridView.xaml
│   │   │   ├── VirtualizingItemsControl/
│   │   │   │   ├── VirtualizingItemsControl.cs
│   │   │   │   └── VirtualizingItemsControl.xaml
│   │   │   ├── VirtualizingUniformGrid/
│   │   │   │   └── VirtualizingUniformGrid.cs
│   │   │   ├── VirtualizingWrapPanel/
│   │   │   │   ├── VirtualizingPanelBase.cs
│   │   │   │   ├── VirtualizingWrapPanel.cs
│   │   │   │   └── VirtualizingWrapPanel.xaml
│   │   │   └── Window/
│   │   │       ├── Window.xaml
│   │   │       ├── WindowBackdrop.cs
│   │   │       ├── WindowBackdropType.cs
│   │   │       └── WindowCornerPreference.cs
│   │   ├── Converters/
│   │   │   ├── AnimationFactorToValueConverter.cs
│   │   │   ├── BackButtonVisibilityToVisibilityConverter.cs
│   │   │   ├── BoolToVisibilityConverter.cs
│   │   │   ├── BrushToColorConverter.cs
│   │   │   ├── ClipConverter.cs
│   │   │   ├── ContentDialogButtonEnumToBoolConverter.cs
│   │   │   ├── CornerRadiusSplitConverter.cs
│   │   │   ├── DatePickerButtonPaddingConverter.cs
│   │   │   ├── EnumToBoolConverter.cs
│   │   │   ├── FallbackBrushConverter.cs
│   │   │   ├── IconSourceElementConverter.cs
│   │   │   ├── LeftSplitCornerRadiusConverter.cs
│   │   │   ├── LeftSplitThicknessConverter.cs
│   │   │   ├── NullToVisibilityConverter.cs
│   │   │   ├── ProgressThicknessConverter.cs
│   │   │   ├── RightSplitCornerRadiusConverter.cs
│   │   │   ├── RightSplitThicknessConverter.cs
│   │   │   └── TextToAsteriskConverter.cs
│   │   ├── Designer/
│   │   │   └── DesignerHelper.cs
│   │   ├── Extensions/
│   │   │   ├── ColorExtensions.cs
│   │   │   ├── ContentDialogServiceExtensions.cs
│   │   │   ├── ContextMenuExtensions.cs
│   │   │   ├── DateTimeExtensions.cs
│   │   │   ├── FrameExtensions.cs
│   │   │   ├── NavigationServiceExtensions.cs
│   │   │   ├── PInvokeExtensions.cs
│   │   │   ├── SnackbarServiceExtensions.cs
│   │   │   ├── StringExtensions.cs
│   │   │   ├── SymbolExtensions.cs
│   │   │   ├── TextBlockFontTypographyExtensions.cs
│   │   │   ├── TextColorExtensions.cs
│   │   │   ├── UiElementExtensions.cs
│   │   │   └── UriExtensions.cs
│   │   ├── GlobalUsings.cs
│   │   ├── Hardware/
│   │   │   ├── DisplayDpi.cs
│   │   │   ├── DpiHelper.cs
│   │   │   ├── HardwareAcceleration.cs
│   │   │   └── RenderingTier.cs
│   │   ├── IContentDialogService.cs
│   │   ├── INavigationService.cs
│   │   ├── INavigationWindow.cs
│   │   ├── ISnackbarService.cs
│   │   ├── ITaskBarService.cs
│   │   ├── IThemeService.cs
│   │   ├── Input/
│   │   │   ├── IRelayCommand.cs
│   │   │   ├── IRelayCommand{T}.cs
│   │   │   └── RelayCommand{T}.cs
│   │   ├── Interop/
│   │   │   ├── PInvoke.cs
│   │   │   ├── UnsafeNativeMethods.cs
│   │   │   └── UnsafeReflection.cs
│   │   ├── Markup/
│   │   │   ├── ControlsDictionary.cs
│   │   │   ├── Design.cs
│   │   │   ├── FontIconExtension.cs
│   │   │   ├── ImageIconExtension.cs
│   │   │   ├── SymbolIconExtension.cs
│   │   │   ├── ThemeResource.cs
│   │   │   ├── ThemeResourceExtension.cs
│   │   │   └── ThemesDictionary.cs
│   │   ├── NativeMethods.txt
│   │   ├── NavigationService.cs
│   │   ├── Properties/
│   │   │   └── AssemblyInfo.cs
│   │   ├── Resources/
│   │   │   ├── Accent.xaml
│   │   │   ├── DefaultContextMenu.xaml
│   │   │   ├── DefaultFocusVisualStyle.xaml
│   │   │   ├── DefaultTextBoxScrollViewerStyle.xaml
│   │   │   ├── Fonts.xaml
│   │   │   ├── Palette.xaml
│   │   │   ├── StaticColors.xaml
│   │   │   ├── Theme/
│   │   │   │   ├── Dark.xaml
│   │   │   │   ├── HC1.xaml
│   │   │   │   ├── HC2.xaml
│   │   │   │   ├── HCBlack.xaml
│   │   │   │   ├── HCWhite.xaml
│   │   │   │   └── Light.xaml
│   │   │   ├── Typography.xaml
│   │   │   ├── Variables.xaml
│   │   │   └── Wpf.Ui.xaml
│   │   ├── SimpleContentDialogCreateOptions.cs
│   │   ├── SnackbarService.cs
│   │   ├── TaskBarService.cs
│   │   ├── Taskbar/
│   │   │   ├── TaskbarProgress.cs
│   │   │   └── TaskbarProgressState.cs
│   │   ├── ThemeService.cs
│   │   ├── UiApplication.cs
│   │   ├── UiAssembly.cs
│   │   ├── VisualStudioToolsManifest.xml
│   │   ├── Win32/
│   │   │   └── Utilities.cs
│   │   └── Wpf.Ui.csproj
│   ├── Wpf.Ui.Abstractions/
│   │   ├── Controls/
│   │   │   ├── INavigableView.cs
│   │   │   ├── INavigationAware.cs
│   │   │   └── NavigationAware.cs
│   │   ├── GlobalUsings.cs
│   │   ├── INavigationViewPageProvider.cs
│   │   ├── NavigationException.cs
│   │   ├── NavigationViewPageProviderExtensions.cs
│   │   └── Wpf.Ui.Abstractions.csproj
│   ├── Wpf.Ui.DependencyInjection/
│   │   ├── DependencyInjectionNavigationViewPageProvider.cs
│   │   ├── GlobalUsings.cs
│   │   ├── ServiceCollectionExtensions.cs
│   │   └── Wpf.Ui.DependencyInjection.csproj
│   ├── Wpf.Ui.Extension/
│   │   ├── Wpf.Ui.Extension.csproj
│   │   ├── license.txt
│   │   └── source.extension.vsixmanifest
│   ├── Wpf.Ui.Extension.Template.Blank/
│   │   ├── App.xaml
│   │   ├── App.xaml.cs
│   │   ├── AssemblyInfo.cs
│   │   ├── Wpf.Ui.Blank.csproj
│   │   ├── Wpf.Ui.Blank.vstemplate
│   │   ├── Wpf.Ui.Extension.Template.Blank.csproj
│   │   └── app.manifest
│   ├── Wpf.Ui.Extension.Template.Compact/
│   │   ├── App.xaml
│   │   ├── App.xaml.cs
│   │   ├── AssemblyInfo.cs
│   │   ├── Helpers/
│   │   │   └── EnumToBooleanConverter.cs
│   │   ├── Models/
│   │   │   ├── AppConfig.cs
│   │   │   └── DataColor.cs
│   │   ├── Resources/
│   │   │   └── Translations.cs
│   │   ├── Services/
│   │   │   └── ApplicationHostService.cs
│   │   ├── Usings.cs
│   │   ├── ViewModels/
│   │   │   ├── Pages/
│   │   │   │   ├── DashboardViewModel.cs
│   │   │   │   ├── DataViewModel.cs
│   │   │   │   └── SettingsViewModel.cs
│   │   │   └── Windows/
│   │   │       └── MainWindowViewModel.cs
│   │   ├── Views/
│   │   │   ├── Pages/
│   │   │   │   ├── DashboardPage.xaml
│   │   │   │   ├── DashboardPage.xaml.cs
│   │   │   │   ├── DataPage.xaml
│   │   │   │   ├── DataPage.xaml.cs
│   │   │   │   ├── SettingsPage.xaml
│   │   │   │   └── SettingsPage.xaml.cs
│   │   │   └── Windows/
│   │   │       ├── MainWindow.xaml
│   │   │       └── MainWindow.xaml.cs
│   │   ├── Wpf.Ui.Compact.csproj
│   │   ├── Wpf.Ui.Compact.vstemplate
│   │   ├── Wpf.Ui.Extension.Template.Compact.csproj
│   │   └── app.manifest
│   ├── Wpf.Ui.Extension.Template.Fluent/
│   │   ├── App.xaml
│   │   ├── App.xaml.cs
│   │   ├── AssemblyInfo.cs
│   │   ├── Helpers/
│   │   │   └── EnumToBooleanConverter.cs
│   │   ├── Models/
│   │   │   ├── AppConfig.cs
│   │   │   └── DataColor.cs
│   │   ├── Resources/
│   │   │   └── Translations.cs
│   │   ├── Services/
│   │   │   └── ApplicationHostService.cs
│   │   ├── Usings.cs
│   │   ├── ViewModels/
│   │   │   ├── Pages/
│   │   │   │   ├── DashboardViewModel.cs
│   │   │   │   ├── DataViewModel.cs
│   │   │   │   └── SettingsViewModel.cs
│   │   │   └── Windows/
│   │   │       └── MainWindowViewModel.cs
│   │   ├── Views/
│   │   │   ├── Pages/
│   │   │   │   ├── DashboardPage.xaml
│   │   │   │   ├── DashboardPage.xaml.cs
│   │   │   │   ├── DataPage.xaml
│   │   │   │   ├── DataPage.xaml.cs
│   │   │   │   ├── SettingsPage.xaml
│   │   │   │   └── SettingsPage.xaml.cs
│   │   │   └── Windows/
│   │   │       ├── MainWindow.xaml
│   │   │       └── MainWindow.xaml.cs
│   │   ├── Wpf.Ui.Extension.Template.Fluent.csproj
│   │   ├── Wpf.Ui.Fluent.csproj
│   │   ├── Wpf.Ui.Fluent.vstemplate
│   │   └── app.manifest
│   ├── Wpf.Ui.FlaUI/
│   │   ├── AutoSuggestBox.cs
│   │   ├── GlobalUsings.cs
│   │   └── Wpf.Ui.FlaUI.csproj
│   ├── Wpf.Ui.FontMapper/
│   │   ├── FontSource.cs
│   │   ├── GitTag.cs
│   │   ├── GlobalUsings.cs
│   │   ├── License - Fluent System Icons.txt
│   │   ├── Program.cs
│   │   └── Wpf.Ui.FontMapper.csproj
│   ├── Wpf.Ui.Gallery/
│   │   ├── App.xaml
│   │   ├── App.xaml.cs
│   │   ├── AssemblyInfo.cs
│   │   ├── Assets/
│   │   │   ├── Monaco/
│   │   │   │   ├── index.html
│   │   │   │   └── min/
│   │   │   │       └── vs/
│   │   │   │           ├── base/
│   │   │   │           │   ├── common/
│   │   │   │           │   │   └── worker/
│   │   │   │           │   │       ├── simpleWorker.nls.de.js
│   │   │   │           │   │       ├── simpleWorker.nls.es.js
│   │   │   │           │   │       ├── simpleWorker.nls.fr.js
│   │   │   │           │   │       ├── simpleWorker.nls.it.js
│   │   │   │           │   │       ├── simpleWorker.nls.ja.js
│   │   │   │           │   │       ├── simpleWorker.nls.js
│   │   │   │           │   │       ├── simpleWorker.nls.ko.js
│   │   │   │           │   │       ├── simpleWorker.nls.ru.js
│   │   │   │           │   │       ├── simpleWorker.nls.zh-cn.js
│   │   │   │           │   │       └── simpleWorker.nls.zh-tw.js
│   │   │   │           │   └── worker/
│   │   │   │           │       └── workerMain.js
│   │   │   │           ├── basic-languages/
│   │   │   │           │   ├── abap/
│   │   │   │           │   │   └── abap.js
│   │   │   │           │   ├── apex/
│   │   │   │           │   │   └── apex.js
│   │   │   │           │   ├── azcli/
│   │   │   │           │   │   └── azcli.js
│   │   │   │           │   ├── bat/
│   │   │   │           │   │   └── bat.js
│   │   │   │           │   ├── bicep/
│   │   │   │           │   │   └── bicep.js
│   │   │   │           │   ├── cameligo/
│   │   │   │           │   │   └── cameligo.js
│   │   │   │           │   ├── clojure/
│   │   │   │           │   │   └── clojure.js
│   │   │   │           │   ├── coffee/
│   │   │   │           │   │   └── coffee.js
│   │   │   │           │   ├── cpp/
│   │   │   │           │   │   └── cpp.js
│   │   │   │           │   ├── csharp/
│   │   │   │           │   │   └── csharp.js
│   │   │   │           │   ├── csp/
│   │   │   │           │   │   └── csp.js
│   │   │   │           │   ├── css/
│   │   │   │           │   │   └── css.js
│   │   │   │           │   ├── cypher/
│   │   │   │           │   │   └── cypher.js
│   │   │   │           │   ├── dart/
│   │   │   │           │   │   └── dart.js
│   │   │   │           │   ├── dockerfile/
│   │   │   │           │   │   └── dockerfile.js
│   │   │   │           │   ├── ecl/
│   │   │   │           │   │   └── ecl.js
│   │   │   │           │   ├── elixir/
│   │   │   │           │   │   └── elixir.js
│   │   │   │           │   ├── flow9/
│   │   │   │           │   │   └── flow9.js
│   │   │   │           │   ├── freemarker2/
│   │   │   │           │   │   └── freemarker2.js
│   │   │   │           │   ├── fsharp/
│   │   │   │           │   │   └── fsharp.js
│   │   │   │           │   ├── go/
│   │   │   │           │   │   └── go.js
│   │   │   │           │   ├── graphql/
│   │   │   │           │   │   └── graphql.js
│   │   │   │           │   ├── handlebars/
│   │   │   │           │   │   └── handlebars.js
│   │   │   │           │   ├── hcl/
│   │   │   │           │   │   └── hcl.js
│   │   │   │           │   ├── html/
│   │   │   │           │   │   └── html.js
│   │   │   │           │   ├── ini/
│   │   │   │           │   │   └── ini.js
│   │   │   │           │   ├── java/
│   │   │   │           │   │   └── java.js
│   │   │   │           │   ├── javascript/
│   │   │   │           │   │   └── javascript.js
│   │   │   │           │   ├── julia/
│   │   │   │           │   │   └── julia.js
│   │   │   │           │   ├── kotlin/
│   │   │   │           │   │   └── kotlin.js
│   │   │   │           │   ├── less/
│   │   │   │           │   │   └── less.js
│   │   │   │           │   ├── lexon/
│   │   │   │           │   │   └── lexon.js
│   │   │   │           │   ├── liquid/
│   │   │   │           │   │   └── liquid.js
│   │   │   │           │   ├── lua/
│   │   │   │           │   │   └── lua.js
│   │   │   │           │   ├── m3/
│   │   │   │           │   │   └── m3.js
│   │   │   │           │   ├── markdown/
│   │   │   │           │   │   └── markdown.js
│   │   │   │           │   ├── mdx/
│   │   │   │           │   │   └── mdx.js
│   │   │   │           │   ├── mips/
│   │   │   │           │   │   └── mips.js
│   │   │   │           │   ├── msdax/
│   │   │   │           │   │   └── msdax.js
│   │   │   │           │   ├── mysql/
│   │   │   │           │   │   └── mysql.js
│   │   │   │           │   ├── objective-c/
│   │   │   │           │   │   └── objective-c.js
│   │   │   │           │   ├── pascal/
│   │   │   │           │   │   └── pascal.js
│   │   │   │           │   ├── pascaligo/
│   │   │   │           │   │   └── pascaligo.js
│   │   │   │           │   ├── perl/
│   │   │   │           │   │   └── perl.js
│   │   │   │           │   ├── pgsql/
│   │   │   │           │   │   └── pgsql.js
│   │   │   │           │   ├── php/
│   │   │   │           │   │   └── php.js
│   │   │   │           │   ├── pla/
│   │   │   │           │   │   └── pla.js
│   │   │   │           │   ├── postiats/
│   │   │   │           │   │   └── postiats.js
│   │   │   │           │   ├── powerquery/
│   │   │   │           │   │   └── powerquery.js
│   │   │   │           │   ├── powershell/
│   │   │   │           │   │   └── powershell.js
│   │   │   │           │   ├── protobuf/
│   │   │   │           │   │   └── protobuf.js
│   │   │   │           │   ├── pug/
│   │   │   │           │   │   └── pug.js
│   │   │   │           │   ├── python/
│   │   │   │           │   │   └── python.js
│   │   │   │           │   ├── qsharp/
│   │   │   │           │   │   └── qsharp.js
│   │   │   │           │   ├── r/
│   │   │   │           │   │   └── r.js
│   │   │   │           │   ├── razor/
│   │   │   │           │   │   └── razor.js
│   │   │   │           │   ├── redis/
│   │   │   │           │   │   └── redis.js
│   │   │   │           │   ├── redshift/
│   │   │   │           │   │   └── redshift.js
│   │   │   │           │   ├── restructuredtext/
│   │   │   │           │   │   └── restructuredtext.js
│   │   │   │           │   ├── ruby/
│   │   │   │           │   │   └── ruby.js
│   │   │   │           │   ├── rust/
│   │   │   │           │   │   └── rust.js
│   │   │   │           │   ├── sb/
│   │   │   │           │   │   └── sb.js
│   │   │   │           │   ├── scala/
│   │   │   │           │   │   └── scala.js
│   │   │   │           │   ├── scheme/
│   │   │   │           │   │   └── scheme.js
│   │   │   │           │   ├── scss/
│   │   │   │           │   │   └── scss.js
│   │   │   │           │   ├── shell/
│   │   │   │           │   │   └── shell.js
│   │   │   │           │   ├── solidity/
│   │   │   │           │   │   └── solidity.js
│   │   │   │           │   ├── sophia/
│   │   │   │           │   │   └── sophia.js
│   │   │   │           │   ├── sparql/
│   │   │   │           │   │   └── sparql.js
│   │   │   │           │   ├── sql/
│   │   │   │           │   │   └── sql.js
│   │   │   │           │   ├── st/
│   │   │   │           │   │   └── st.js
│   │   │   │           │   ├── swift/
│   │   │   │           │   │   └── swift.js
│   │   │   │           │   ├── systemverilog/
│   │   │   │           │   │   └── systemverilog.js
│   │   │   │           │   ├── tcl/
│   │   │   │           │   │   └── tcl.js
│   │   │   │           │   ├── twig/
│   │   │   │           │   │   └── twig.js
│   │   │   │           │   ├── typescript/
│   │   │   │           │   │   └── typescript.js
│   │   │   │           │   ├── vb/
│   │   │   │           │   │   └── vb.js
│   │   │   │           │   ├── wgsl/
│   │   │   │           │   │   └── wgsl.js
│   │   │   │           │   ├── xml/
│   │   │   │           │   │   └── xml.js
│   │   │   │           │   └── yaml/
│   │   │   │           │       └── yaml.js
│   │   │   │           ├── editor/
│   │   │   │           │   ├── editor.main.css
│   │   │   │           │   ├── editor.main.js
│   │   │   │           │   ├── editor.main.nls.de.js
│   │   │   │           │   ├── editor.main.nls.es.js
│   │   │   │           │   ├── editor.main.nls.fr.js
│   │   │   │           │   ├── editor.main.nls.it.js
│   │   │   │           │   ├── editor.main.nls.ja.js
│   │   │   │           │   ├── editor.main.nls.js
│   │   │   │           │   ├── editor.main.nls.ko.js
│   │   │   │           │   ├── editor.main.nls.ru.js
│   │   │   │           │   ├── editor.main.nls.zh-cn.js
│   │   │   │           │   └── editor.main.nls.zh-tw.js
│   │   │   │           ├── language/
│   │   │   │           │   ├── css/
│   │   │   │           │   │   ├── cssMode.js
│   │   │   │           │   │   └── cssWorker.js
│   │   │   │           │   ├── html/
│   │   │   │           │   │   ├── htmlMode.js
│   │   │   │           │   │   └── htmlWorker.js
│   │   │   │           │   ├── json/
│   │   │   │           │   │   ├── jsonMode.js
│   │   │   │           │   │   └── jsonWorker.js
│   │   │   │           │   └── typescript/
│   │   │   │           │       ├── tsMode.js
│   │   │   │           │       └── tsWorker.js
│   │   │   │           └── loader.js
│   │   │   └── WinUiGallery/
│   │   │       └── LICENSE
│   │   ├── CodeSamples/
│   │   │   └── Typography/
│   │   │       └── TypographySample_xaml.txt
│   │   ├── Controllers/
│   │   │   └── MonacoController.cs
│   │   ├── Controls/
│   │   │   ├── ControlExample.xaml
│   │   │   ├── ControlExample.xaml.cs
│   │   │   ├── GalleryNavigationPresenter.xaml
│   │   │   ├── GalleryNavigationPresenter.xaml.cs
│   │   │   ├── PageControlDocumentation.xaml
│   │   │   ├── PageControlDocumentation.xaml.cs
│   │   │   ├── TermsOfUseContentDialog.xaml
│   │   │   ├── TermsOfUseContentDialog.xaml.cs
│   │   │   ├── TypographyControl.xaml
│   │   │   └── TypographyControl.xaml.cs
│   │   ├── ControlsLookup/
│   │   │   ├── ControlPages.cs
│   │   │   ├── GalleryPage.cs
│   │   │   └── GalleryPageAttribute.cs
│   │   ├── DependencyModel/
│   │   │   └── ServiceCollectionExtensions.cs
│   │   ├── Effects/
│   │   │   ├── Snowflake.cs
│   │   │   └── SnowflakeEffect.cs
│   │   ├── GalleryAssembly.cs
│   │   ├── GlobalUsings.cs
│   │   ├── Helpers/
│   │   │   ├── EnumToBooleanConverter.cs
│   │   │   ├── NameToPageTypeConverter.cs
│   │   │   ├── NullToVisibilityConverter.cs
│   │   │   ├── PaneDisplayModeToIndexConverter.cs
│   │   │   └── ThemeToIndexConverter.cs
│   │   ├── License - Images.txt
│   │   ├── License - Monaco.txt
│   │   ├── Models/
│   │   │   ├── DisplayableIcon.cs
│   │   │   ├── Folder.cs
│   │   │   ├── Monaco/
│   │   │   │   ├── MonacoLanguage.cs
│   │   │   │   └── MonacoTheme.cs
│   │   │   ├── NavigationCard.cs
│   │   │   ├── Person.cs
│   │   │   ├── Product.cs
│   │   │   ├── Unit.cs
│   │   │   └── WindowCard.cs
│   │   ├── Resources/
│   │   │   ├── Translations.cs
│   │   │   ├── Translations.pl-PL.Designer.cs
│   │   │   └── Translations.pl-PL.resx
│   │   ├── Services/
│   │   │   ├── ApplicationHostService.cs
│   │   │   ├── Contracts/
│   │   │   │   └── IWindow.cs
│   │   │   └── WindowsProviderService.cs
│   │   ├── ViewModels/
│   │   │   ├── Pages/
│   │   │   │   ├── AllControlsViewModel.cs
│   │   │   │   ├── BasicInput/
│   │   │   │   │   ├── AnchorViewModel.cs
│   │   │   │   │   ├── BasicInputViewModel.cs
│   │   │   │   │   ├── ButtonViewModel.cs
│   │   │   │   │   ├── CheckBoxViewModel.cs
│   │   │   │   │   ├── ComboBoxViewModel.cs
│   │   │   │   │   ├── DropDownButtonViewModel.cs
│   │   │   │   │   ├── HyperlinkButtonViewModel.cs
│   │   │   │   │   ├── RadioButtonViewModel.cs
│   │   │   │   │   ├── RatingViewModel.cs
│   │   │   │   │   ├── SliderViewModel.cs
│   │   │   │   │   ├── SplitButtonViewModel.cs
│   │   │   │   │   ├── ThumbRateViewModel.cs
│   │   │   │   │   ├── ToggleButtonViewModel.cs
│   │   │   │   │   └── ToggleSwitchViewModel.cs
│   │   │   │   ├── Collections/
│   │   │   │   │   ├── CollectionsViewModel.cs
│   │   │   │   │   ├── DataGridViewModel.cs
│   │   │   │   │   ├── ListBoxViewModel.cs
│   │   │   │   │   ├── ListViewViewModel.cs
│   │   │   │   │   ├── TreeListViewModel.cs
│   │   │   │   │   └── TreeViewViewModel.cs
│   │   │   │   ├── DashboardViewModel.cs
│   │   │   │   ├── DateAndTime/
│   │   │   │   │   ├── CalendarDatePickerViewModel.cs
│   │   │   │   │   ├── CalendarViewModel.cs
│   │   │   │   │   ├── DateAndTimeViewModel.cs
│   │   │   │   │   ├── DatePickerViewModel.cs
│   │   │   │   │   └── TimePickerViewModel.cs
│   │   │   │   ├── DesignGuidance/
│   │   │   │   │   ├── ColorsViewModel.cs
│   │   │   │   │   ├── IconsViewModel.cs
│   │   │   │   │   └── TypographyViewModel.cs
│   │   │   │   ├── DialogsAndFlyouts/
│   │   │   │   │   ├── ContentDialogViewModel.cs
│   │   │   │   │   ├── DialogsAndFlyoutsViewModel.cs
│   │   │   │   │   ├── FlyoutViewModel.cs
│   │   │   │   │   ├── MessageBoxViewModel.cs
│   │   │   │   │   └── SnackbarViewModel.cs
│   │   │   │   ├── Layout/
│   │   │   │   │   ├── CardActionViewModel.cs
│   │   │   │   │   ├── CardControlViewModel.cs
│   │   │   │   │   ├── ExpanderViewModel.cs
│   │   │   │   │   └── LayoutViewModel.cs
│   │   │   │   ├── Media/
│   │   │   │   │   ├── CanvasViewModel.cs
│   │   │   │   │   ├── ImageViewModel.cs
│   │   │   │   │   ├── MediaViewModel.cs
│   │   │   │   │   ├── WebBrowserViewModel.cs
│   │   │   │   │   └── WebViewViewModel.cs
│   │   │   │   ├── Navigation/
│   │   │   │   │   ├── BreadcrumbBarViewModel.cs
│   │   │   │   │   ├── MenuViewModel.cs
│   │   │   │   │   ├── MultilevelNavigationSample.cs
│   │   │   │   │   ├── NavigationViewModel.cs
│   │   │   │   │   ├── NavigationViewViewModel.cs
│   │   │   │   │   ├── TabControlViewModel.cs
│   │   │   │   │   └── TabViewViewModel.cs
│   │   │   │   ├── OpSystem/
│   │   │   │   │   ├── ClipboardViewModel.cs
│   │   │   │   │   ├── FilePickerViewModel.cs
│   │   │   │   │   └── OpSystemViewModel.cs
│   │   │   │   ├── SettingsViewModel.cs
│   │   │   │   ├── StatusAndInfo/
│   │   │   │   │   ├── InfoBadgeViewModel.cs
│   │   │   │   │   ├── InfoBarViewModel.cs
│   │   │   │   │   ├── ProgressBarViewModel.cs
│   │   │   │   │   ├── ProgressRingViewModel.cs
│   │   │   │   │   ├── StatusAndInfoViewModel.cs
│   │   │   │   │   └── ToolTipViewModel.cs
│   │   │   │   ├── Text/
│   │   │   │   │   ├── AutoSuggestBoxViewModel.cs
│   │   │   │   │   ├── LabelViewModel.cs
│   │   │   │   │   ├── NumberBoxViewModel.cs
│   │   │   │   │   ├── PasswordBoxViewModel.cs
│   │   │   │   │   ├── RichTextBoxViewModel.cs
│   │   │   │   │   ├── TextBlockViewModel.cs
│   │   │   │   │   ├── TextBoxViewModel.cs
│   │   │   │   │   └── TextViewModel.cs
│   │   │   │   └── Windows/
│   │   │   │       └── WindowsViewModel.cs
│   │   │   ├── ViewModel.cs
│   │   │   └── Windows/
│   │   │       ├── EditorWindowViewModel.cs
│   │   │       ├── MainWindowViewModel.cs
│   │   │       ├── MonacoWindowViewModel.cs
│   │   │       └── SandboxWindowViewModel.cs
│   │   ├── Views/
│   │   │   ├── Pages/
│   │   │   │   ├── AllControlsPage.xaml
│   │   │   │   ├── AllControlsPage.xaml.cs
│   │   │   │   ├── BasicInput/
│   │   │   │   │   ├── AnchorPage.xaml
│   │   │   │   │   ├── AnchorPage.xaml.cs
│   │   │   │   │   ├── BasicInputPage.xaml
│   │   │   │   │   ├── BasicInputPage.xaml.cs
│   │   │   │   │   ├── ButtonPage.xaml
│   │   │   │   │   ├── ButtonPage.xaml.cs
│   │   │   │   │   ├── CheckBoxPage.xaml
│   │   │   │   │   ├── CheckBoxPage.xaml.cs
│   │   │   │   │   ├── ComboBoxPage.xaml
│   │   │   │   │   ├── ComboBoxPage.xaml.cs
│   │   │   │   │   ├── DropDownButtonPage.xaml
│   │   │   │   │   ├── DropDownButtonPage.xaml.cs
│   │   │   │   │   ├── HyperlinkButtonPage.xaml
│   │   │   │   │   ├── HyperlinkButtonPage.xaml.cs
│   │   │   │   │   ├── RadioButtonPage.xaml
│   │   │   │   │   ├── RadioButtonPage.xaml.cs
│   │   │   │   │   ├── RatingPage.xaml
│   │   │   │   │   ├── RatingPage.xaml.cs
│   │   │   │   │   ├── SliderPage.xaml
│   │   │   │   │   ├── SliderPage.xaml.cs
│   │   │   │   │   ├── SplitButtonPage.xaml
│   │   │   │   │   ├── SplitButtonPage.xaml.cs
│   │   │   │   │   ├── ThumbRatePage.xaml
│   │   │   │   │   ├── ThumbRatePage.xaml.cs
│   │   │   │   │   ├── ToggleButtonPage.xaml
│   │   │   │   │   ├── ToggleButtonPage.xaml.cs
│   │   │   │   │   ├── ToggleSwitchPage.xaml
│   │   │   │   │   └── ToggleSwitchPage.xaml.cs
│   │   │   │   ├── Collections/
│   │   │   │   │   ├── CollectionsPage.xaml
│   │   │   │   │   ├── CollectionsPage.xaml.cs
│   │   │   │   │   ├── DataGridPage.xaml
│   │   │   │   │   ├── DataGridPage.xaml.cs
│   │   │   │   │   ├── ListBoxPage.xaml
│   │   │   │   │   ├── ListBoxPage.xaml.cs
│   │   │   │   │   ├── ListViewPage.xaml
│   │   │   │   │   ├── ListViewPage.xaml.cs
│   │   │   │   │   ├── TreeListPage.xaml
│   │   │   │   │   ├── TreeListPage.xaml.cs
│   │   │   │   │   ├── TreeViewPage.xaml
│   │   │   │   │   └── TreeViewPage.xaml.cs
│   │   │   │   ├── DashboardPage.xaml
│   │   │   │   ├── DashboardPage.xaml.cs
│   │   │   │   ├── DateAndTime/
│   │   │   │   │   ├── CalendarDatePickerPage.xaml
│   │   │   │   │   ├── CalendarDatePickerPage.xaml.cs
│   │   │   │   │   ├── CalendarPage.xaml
│   │   │   │   │   ├── CalendarPage.xaml.cs
│   │   │   │   │   ├── DateAndTimePage.xaml
│   │   │   │   │   ├── DateAndTimePage.xaml.cs
│   │   │   │   │   ├── DatePickerPage.xaml
│   │   │   │   │   ├── DatePickerPage.xaml.cs
│   │   │   │   │   ├── TimePickerPage.xaml
│   │   │   │   │   └── TimePickerPage.xaml.cs
│   │   │   │   ├── DesignGuidance/
│   │   │   │   │   ├── ColorsPage.xaml
│   │   │   │   │   ├── ColorsPage.xaml.cs
│   │   │   │   │   ├── IconsPage.xaml
│   │   │   │   │   ├── IconsPage.xaml.cs
│   │   │   │   │   ├── TypographyPage.xaml
│   │   │   │   │   └── TypographyPage.xaml.cs
│   │   │   │   ├── DialogsAndFlyouts/
│   │   │   │   │   ├── ContentDialogPage.xaml
│   │   │   │   │   ├── ContentDialogPage.xaml.cs
│   │   │   │   │   ├── DialogsAndFlyoutsPage.xaml
│   │   │   │   │   ├── DialogsAndFlyoutsPage.xaml.cs
│   │   │   │   │   ├── FlyoutPage.xaml
│   │   │   │   │   ├── FlyoutPage.xaml.cs
│   │   │   │   │   ├── MessageBoxPage.xaml
│   │   │   │   │   ├── MessageBoxPage.xaml.cs
│   │   │   │   │   ├── SnackbarPage.xaml
│   │   │   │   │   └── SnackbarPage.xaml.cs
│   │   │   │   ├── Layout/
│   │   │   │   │   ├── CardActionPage.xaml
│   │   │   │   │   ├── CardActionPage.xaml.cs
│   │   │   │   │   ├── CardControlPage.xaml
│   │   │   │   │   ├── CardControlPage.xaml.cs
│   │   │   │   │   ├── ExpanderPage.xaml
│   │   │   │   │   ├── ExpanderPage.xaml.cs
│   │   │   │   │   ├── LayoutPage.xaml
│   │   │   │   │   └── LayoutPage.xaml.cs
│   │   │   │   ├── Media/
│   │   │   │   │   ├── CanvasPage.xaml
│   │   │   │   │   ├── CanvasPage.xaml.cs
│   │   │   │   │   ├── ImagePage.xaml
│   │   │   │   │   ├── ImagePage.xaml.cs
│   │   │   │   │   ├── MediaPage.xaml
│   │   │   │   │   ├── MediaPage.xaml.cs
│   │   │   │   │   ├── WebBrowserPage.xaml
│   │   │   │   │   ├── WebBrowserPage.xaml.cs
│   │   │   │   │   ├── WebViewPage.xaml
│   │   │   │   │   └── WebViewPage.xaml.cs
│   │   │   │   ├── Navigation/
│   │   │   │   │   ├── BreadcrumbBarPage.xaml
│   │   │   │   │   ├── BreadcrumbBarPage.xaml.cs
│   │   │   │   │   ├── MenuPage.xaml
│   │   │   │   │   ├── MenuPage.xaml.cs
│   │   │   │   │   ├── MultilevelNavigationPage.xaml
│   │   │   │   │   ├── MultilevelNavigationPage.xaml.cs
│   │   │   │   │   ├── NavigationPage.xaml
│   │   │   │   │   ├── NavigationPage.xaml.cs
│   │   │   │   │   ├── NavigationViewPage.xaml
│   │   │   │   │   ├── NavigationViewPage.xaml.cs
│   │   │   │   │   ├── TabControlPage.xaml
│   │   │   │   │   ├── TabControlPage.xaml.cs
│   │   │   │   │   ├── TabViewPage.xaml
│   │   │   │   │   └── TabViewPage.xaml.cs
│   │   │   │   ├── OpSystem/
│   │   │   │   │   ├── ClipboardPage.xaml
│   │   │   │   │   ├── ClipboardPage.xaml.cs
│   │   │   │   │   ├── FilePickerPage.xaml
│   │   │   │   │   ├── FilePickerPage.xaml.cs
│   │   │   │   │   ├── OpSystemPage.xaml
│   │   │   │   │   └── OpSystemPage.xaml.cs
│   │   │   │   ├── Samples/
│   │   │   │   │   ├── MultilevelNavigationSamplePage1.xaml
│   │   │   │   │   ├── MultilevelNavigationSamplePage1.xaml.cs
│   │   │   │   │   ├── MultilevelNavigationSamplePage2.xaml
│   │   │   │   │   ├── MultilevelNavigationSamplePage2.xaml.cs
│   │   │   │   │   ├── MultilevelNavigationSamplePage3.xaml
│   │   │   │   │   ├── MultilevelNavigationSamplePage3.xaml.cs
│   │   │   │   │   ├── SamplePage1.xaml
│   │   │   │   │   ├── SamplePage1.xaml.cs
│   │   │   │   │   ├── SamplePage2.xaml
│   │   │   │   │   ├── SamplePage2.xaml.cs
│   │   │   │   │   ├── SamplePage3.xaml
│   │   │   │   │   └── SamplePage3.xaml.cs
│   │   │   │   ├── SettingsPage.xaml
│   │   │   │   ├── SettingsPage.xaml.cs
│   │   │   │   ├── StatusAndInfo/
│   │   │   │   │   ├── InfoBadgePage.xaml
│   │   │   │   │   ├── InfoBadgePage.xaml.cs
│   │   │   │   │   ├── InfoBarPage.xaml
│   │   │   │   │   ├── InfoBarPage.xaml.cs
│   │   │   │   │   ├── ProgressBarPage.xaml
│   │   │   │   │   ├── ProgressBarPage.xaml.cs
│   │   │   │   │   ├── ProgressRingPage.xaml
│   │   │   │   │   ├── ProgressRingPage.xaml.cs
│   │   │   │   │   ├── StatusAndInfoPage.xaml
│   │   │   │   │   ├── StatusAndInfoPage.xaml.cs
│   │   │   │   │   ├── ToolTipPage.xaml
│   │   │   │   │   └── ToolTipPage.xaml.cs
│   │   │   │   ├── Text/
│   │   │   │   │   ├── AutoSuggestBoxPage.xaml
│   │   │   │   │   ├── AutoSuggestBoxPage.xaml.cs
│   │   │   │   │   ├── LabelPage.xaml
│   │   │   │   │   ├── LabelPage.xaml.cs
│   │   │   │   │   ├── NumberBoxPage.xaml
│   │   │   │   │   ├── NumberBoxPage.xaml.cs
│   │   │   │   │   ├── PasswordBoxPage.xaml
│   │   │   │   │   ├── PasswordBoxPage.xaml.cs
│   │   │   │   │   ├── RichTextBoxPage.xaml
│   │   │   │   │   ├── RichTextBoxPage.xaml.cs
│   │   │   │   │   ├── TextBlockPage.xaml
│   │   │   │   │   ├── TextBlockPage.xaml.cs
│   │   │   │   │   ├── TextBoxPage.xaml
│   │   │   │   │   ├── TextBoxPage.xaml.cs
│   │   │   │   │   ├── TextPage.xaml
│   │   │   │   │   └── TextPage.xaml.cs
│   │   │   │   └── Windows/
│   │   │   │       ├── WindowsPage.xaml
│   │   │   │       └── WindowsPage.xaml.cs
│   │   │   └── Windows/
│   │   │       ├── EditorWindow.xaml
│   │   │       ├── EditorWindow.xaml.cs
│   │   │       ├── MainWindow.xaml
│   │   │       ├── MainWindow.xaml.cs
│   │   │       ├── MonacoWindow.xaml
│   │   │       ├── MonacoWindow.xaml.cs
│   │   │       ├── SandboxWindow.xaml
│   │   │       └── SandboxWindow.xaml.cs
│   │   ├── Wpf.Ui.Gallery.csproj
│   │   └── app.manifest
│   ├── Wpf.Ui.Gallery.Package/
│   │   ├── Package.appxmanifest
│   │   └── Wpf.Ui.Gallery.Package.wapproj
│   ├── Wpf.Ui.SyntaxHighlight/
│   │   ├── Controls/
│   │   │   ├── CodeBlock.cs
│   │   │   └── CodeBlock.xaml
│   │   ├── Highlighter.cs
│   │   ├── License - Fira Code.txt
│   │   ├── Markup/
│   │   │   └── SyntaxHighlightDictionary.cs
│   │   ├── Properties/
│   │   │   └── AssemblyInfo.cs
│   │   ├── SyntaxHighlight.xaml
│   │   ├── SyntaxLanguage.cs
│   │   └── Wpf.Ui.SyntaxHighlight.csproj
│   ├── Wpf.Ui.ToastNotifications/
│   │   ├── GlobalUsings.cs
│   │   ├── Properties/
│   │   │   └── AssemblyInfo.cs
│   │   ├── Toast.cs
│   │   ├── VisualStudioToolsManifest.xml
│   │   └── Wpf.Ui.ToastNotifications.csproj
│   └── Wpf.Ui.Tray/
│       ├── Controls/
│       │   └── NotifyIcon.cs
│       ├── GlobalUsings.cs
│       ├── Hicon.cs
│       ├── INotifyIcon.cs
│       ├── INotifyIconService.cs
│       ├── Internal/
│       │   └── InternalNotifyIconManager.cs
│       ├── Interop/
│       │   ├── Libraries.cs
│       │   ├── Shell32.cs
│       │   └── User32.cs
│       ├── NotifyIconEventHandler.cs
│       ├── NotifyIconService.cs
│       ├── Properties/
│       │   └── AssemblyInfo.cs
│       ├── RoutedNotifyIconEvent.cs
│       ├── TrayData.cs
│       ├── TrayHandler.cs
│       ├── TrayManager.cs
│       ├── VisualStudioToolsManifest.xml
│       └── Wpf.Ui.Tray.csproj
└── tests/
    ├── Wpf.Ui.Gallery.IntegrationTests/
    │   ├── ContentDialogAutomationTests.cs
    │   ├── Fixtures/
    │   │   ├── TestedApplication.cs
    │   │   └── UiTest.cs
    │   ├── GlobalUsings.cs
    │   ├── NavigationTests.cs
    │   ├── TitleBarTests.cs
    │   ├── WindowTests.cs
    │   ├── Wpf.Ui.Gallery.IntegrationTests.csproj
    │   └── xunit.runner.json
    └── Wpf.Ui.UnitTests/
        ├── Animations/
        │   └── TransitionAnimationProviderTests.cs
        ├── Extensions/
        │   └── SymbolExtensionsTests.cs
        ├── Usings.cs
        └── Wpf.Ui.UnitTests.csproj
Copy disabled (too large) Download .txt
Showing preview only (74,702K chars total). Download the full file to get everything.
SYMBOL INDEX (22032 symbols across 519 files)

FILE: docs/codesnippet/Rtf/Hyperlink/RtfDocumentProcessor.cs
  class RtfDocumentProcessor (line 17) | [Export(typeof(IDocumentProcessor))]
    method GetProcessingPriority (line 25) | public ProcessingPriority GetProcessingPriority(FileAndType file)
    method Load (line 37) | public FileModel Load(FileAndType file, ImmutableDictionary<string, ob...
    method Save (line 49) | public SaveResult Save(FileModel model)
    method CollectLinksAndFixDocument (line 63) | private static HashSet<string> CollectLinksAndFixDocument(FileModel mo...
    method FixLink (line 89) | private static void FixLink(XAttribute link, RelativePath filePath, Ha...
    method UpdateHref (line 117) | public void UpdateHref(FileModel model, IDocumentBuildContext context)...

FILE: docs/codesnippet/Rtf/RtfBuildStep.cs
  class RtfBuildStep (line 15) | [Export(nameof(RtfDocumentProcessor), typeof(IDocumentBuildStep))]
    method Build (line 21) | public void Build(FileModel model, IHostService host)
    method Postbuild (line 34) | public void Postbuild(ImmutableList<FileModel> models, IHostService ho...
    method Prebuild (line 36) | public IEnumerable<FileModel> Prebuild(ImmutableList<FileModel> models...

FILE: docs/codesnippet/Rtf/RtfDocumentProcessor.cs
  class RtfDocumentProcessor (line 14) | [Export(typeof(IDocumentProcessor))]
    method GetProcessingPriority (line 27) | public ProcessingPriority GetProcessingPriority(FileAndType file)
    method Load (line 41) | public FileModel Load(FileAndType file, ImmutableDictionary<string, ob...
    method Save (line 59) | public SaveResult Save(FileModel model)
    method UpdateHref (line 70) | public void UpdateHref(FileModel model, IDocumentBuildContext context)...

FILE: docs/templates/build.js
  function build (line 28) | async function build() {
  function buildWpfUiTemplate (line 39) | async function buildWpfUiTemplate() {
  function copyToDist (line 70) | function copyToDist() {

FILE: docs/templates/wpfui/src/docfx.ts
  type Window (line 18) | interface Window {
  function init (line 27) | async function init() {

FILE: docs/templates/wpfui/src/helper.ts
  function meta (line 9) | function meta(name: string): string {
  function breakWord (line 16) | function breakWord(text: string): string[] {
  function breakWordLit (line 38) | function breakWordLit(text: string): TemplateResult {
  function isExternalHref (line 54) | function isExternalHref(url: URL): boolean {

FILE: docs/templates/wpfui/src/highlight.ts
  function highlight (line 4) | async function highlight() {

FILE: docs/templates/wpfui/src/markdown.ts
  function renderMarkdown (line 12) | async function renderMarkdown() {
  function renderMath (line 28) | async function renderMath() {
  function renderMermaid (line 40) | async function renderMermaid() {
  function renderWordBreaks (line 70) | function renderWordBreaks() {
  function renderClickableImage (line 89) | function renderClickableImage() {
  function renderTables (line 125) | function renderTables() {
  function renderAlerts (line 138) | function renderAlerts() {
  function renderLinks (line 147) | function renderLinks() {
  function renderAnchor (line 164) | function renderAnchor() {
  function renderCodeCopy (line 177) | function renderCodeCopy() {
  function renderTabs (line 209) | function renderTabs() {

FILE: docs/templates/wpfui/src/nav.ts
  type NavItem (line 9) | type NavItem = {
  type NavItemContainer (line 14) | type NavItemContainer = {
  function renderNavbar (line 22) | async function renderNavbar(): Promise<NavItem[]> {
  function renderBreadcrumb (line 86) | function renderBreadcrumb(breadcrumb: (NavItem | TocNode)[]) {
  function renderInThisArticle (line 98) | function renderInThisArticle() {
  function inThisArticleForConceptual (line 111) | function inThisArticleForConceptual() {
  function inThisArticleForManagedReference (line 120) | function inThisArticleForManagedReference(): TemplateResult {
  function findActiveItem (line 135) | function findActiveItem(items: (NavItem | NavItemContainer)[]): NavItem {
  function commonUrlPrefix (line 152) | function commonUrlPrefix(url: URL, base: URL): number {

FILE: docs/templates/wpfui/src/options.d.ts
  type Theme (line 9) | type Theme = 'light' | 'dark' | 'auto'
  type IconLink (line 11) | type IconLink = {
  type DocfxOptions (line 25) | type DocfxOptions = {

FILE: docs/templates/wpfui/src/search-worker.ts
  function buildIndex (line 52) | function buildIndex() {
  function isEmpty (line 74) | function isEmpty(obj) {

FILE: docs/templates/wpfui/src/search.ts
  type SearchHit (line 8) | type SearchHit = {
  function enableSearch (line 19) | function enableSearch() {
  function mark (line 154) | function mark(text: string, query: string): TemplateResult {

FILE: docs/templates/wpfui/src/theme.ts
  function setTheme (line 7) | function setTheme(theme: Theme) {
  function getDefaultTheme (line 16) | function getDefaultTheme() {
  function initTheme (line 20) | function initTheme() {
  function getTheme (line 24) | function getTheme(): 'light' | 'dark' {
  function themePicker (line 28) | function themePicker(refresh: () => void) {

FILE: docs/templates/wpfui/src/toc.ts
  type TocNode (line 8) | type TocNode = {
  function renderToc (line 18) | async function renderToc(): Promise<TocNode[]> {
  function renderNextArticle (line 146) | function renderNextArticle(items: TocNode[], node: TocNode) {

FILE: docs/templates/wpfui/src/wpfui-index-stats.ts
  function updateBaseStats (line 1) | function updateBaseStats() {
  function renderIndexStats (line 5) | function renderIndexStats() {

FILE: docs/templates/wpfui/toc.json.js
  function transformMemberPage (line 21) | function transformMemberPage(model) {

FILE: samples/Wpf.Ui.Demo.Console/Models/DataColor.cs
  type DataColor (line 8) | public struct DataColor

FILE: samples/Wpf.Ui.Demo.Console/Program.cs
  class Program (line 8) | public static class Program
    method Main (line 10) | [STAThread]

FILE: samples/Wpf.Ui.Demo.Console/Utilities/ThemeUtilities.cs
  class ThemeUtilities (line 10) | public static class ThemeUtilities
    method ApplyTheme (line 12) | public static void ApplyTheme(this FrameworkElement frameworkElement)
    method ChangeTheme (line 81) | public static void ChangeTheme()

FILE: samples/Wpf.Ui.Demo.Console/Views/MainView.xaml.cs
  class MainView (line 11) | public partial class MainView
    method MainView (line 13) | public MainView()

FILE: samples/Wpf.Ui.Demo.Console/Views/Pages/DashboardPage.xaml.cs
  class DashboardPage (line 13) | public partial class DashboardPage
    method DashboardPage (line 17) | public DashboardPage()
    method OnBaseButtonClick (line 27) | private void OnBaseButtonClick(object sender, RoutedEventArgs e)

FILE: samples/Wpf.Ui.Demo.Console/Views/Pages/DataPage.xaml.cs
  class DataPage (line 14) | public partial class DataPage
    method DataPage (line 18) | public DataPage()
    method InitializeData (line 28) | private void InitializeData()

FILE: samples/Wpf.Ui.Demo.Console/Views/Pages/SettingsPage.xaml.cs
  class SettingsPage (line 14) | public partial class SettingsPage
    method SettingsPage (line 16) | public SettingsPage()
    method OnLightThemeRadioButtonChecked (line 34) | private void OnLightThemeRadioButtonChecked(object sender, RoutedEvent...
    method OnDarkThemeRadioButtonChecked (line 39) | private void OnDarkThemeRadioButtonChecked(object sender, RoutedEventA...
    method GetAssemblyVersion (line 44) | private string GetAssemblyVersion()

FILE: samples/Wpf.Ui.Demo.Console/Views/SimpleView.xaml.cs
  class SimpleView (line 10) | public partial class SimpleView
    method SimpleView (line 12) | public SimpleView()
    method CardAction_Click (line 18) | private void CardAction_Click(object sender, RoutedEventArgs e)

FILE: samples/Wpf.Ui.Demo.Dialogs/MainWindow.xaml.cs
  class MainWindow (line 13) | public partial class MainWindow
    method MainWindow (line 15) | public MainWindow()
    method OnShowDialogClick (line 21) | private async void OnShowDialogClick(object sender, RoutedEventArgs e)
    method ShowSampleDialogAsync (line 27) | private async Task ShowSampleDialogAsync()

FILE: samples/Wpf.Ui.Demo.Mvvm/App.xaml.cs
  class App (line 19) | public partial class App
    method OnStartup (line 82) | private async void OnStartup(object sender, StartupEventArgs e)
    method OnExit (line 90) | private async void OnExit(object sender, ExitEventArgs e)
    method OnDispatcherUnhandledException (line 100) | private void OnDispatcherUnhandledException(object sender, DispatcherU...

FILE: samples/Wpf.Ui.Demo.Mvvm/Helpers/EnumToBooleanConverter.cs
  class EnumToBooleanConverter (line 10) | internal class EnumToBooleanConverter : IValueConverter
    method Convert (line 12) | public object Convert(object value, Type targetType, object parameter,...
    method ConvertBack (line 29) | public object ConvertBack(object value, Type targetType, object parame...

FILE: samples/Wpf.Ui.Demo.Mvvm/Models/AppConfig.cs
  class AppConfig (line 8) | public class AppConfig

FILE: samples/Wpf.Ui.Demo.Mvvm/Models/DataColor.cs
  type DataColor (line 10) | public struct DataColor

FILE: samples/Wpf.Ui.Demo.Mvvm/Services/ApplicationHostService.cs
  class ApplicationHostService (line 13) | public class ApplicationHostService(IServiceProvider serviceProvider) : ...
    method StartAsync (line 21) | public async Task StartAsync(CancellationToken cancellationToken)
    method StopAsync (line 30) | public async Task StopAsync(CancellationToken cancellationToken)
    method HandleActivationAsync (line 38) | private async Task HandleActivationAsync()

FILE: samples/Wpf.Ui.Demo.Mvvm/ViewModels/DashboardViewModel.cs
  class DashboardViewModel (line 8) | public partial class DashboardViewModel : ViewModel
    method OnCounterIncrement (line 13) | [RelayCommand]

FILE: samples/Wpf.Ui.Demo.Mvvm/ViewModels/DataViewModel.cs
  class DataViewModel (line 11) | public partial class DataViewModel : ViewModel
    method OnNavigatedTo (line 18) | public override void OnNavigatedTo()
    method InitializeViewModel (line 26) | private void InitializeViewModel()

FILE: samples/Wpf.Ui.Demo.Mvvm/ViewModels/MainWindowViewModel.cs
  class MainWindowViewModel (line 11) | public partial class MainWindowViewModel : ViewModel
    method MainWindowViewModel (line 27) | [System.Diagnostics.CodeAnalysis.SuppressMessage(
    method InitializeViewModel (line 40) | private void InitializeViewModel()

FILE: samples/Wpf.Ui.Demo.Mvvm/ViewModels/SettingsViewModel.cs
  class SettingsViewModel (line 8) | public partial class SettingsViewModel : ViewModel
    method OnNavigatedTo (line 21) | public override void OnNavigatedTo()
    method InitializeViewModel (line 29) | private void InitializeViewModel()
    method GetAssemblyVersion (line 37) | private static string GetAssemblyVersion()
    method OnChangeTheme (line 43) | [RelayCommand]

FILE: samples/Wpf.Ui.Demo.Mvvm/ViewModels/ViewModel.cs
  class ViewModel (line 10) | public abstract class ViewModel : ObservableObject, INavigationAware
    method OnNavigatedToAsync (line 13) | public virtual Task OnNavigatedToAsync()
    method OnNavigatedTo (line 24) | public virtual void OnNavigatedTo() { }
    method OnNavigatedFromAsync (line 27) | public virtual Task OnNavigatedFromAsync()
    method OnNavigatedFrom (line 38) | public virtual void OnNavigatedFrom() { }

FILE: samples/Wpf.Ui.Demo.Mvvm/Views/MainWindow.xaml.cs
  class MainWindow (line 14) | public partial class MainWindow : INavigationWindow
    method MainWindow (line 18) | public MainWindow(ViewModels.MainWindowViewModel viewModel, INavigatio...
    method GetNavigation (line 30) | public INavigationView GetNavigation() => RootNavigation;
    method Navigate (line 32) | public bool Navigate(Type pageType) => RootNavigation.Navigate(pageType);
    method SetPageService (line 34) | public void SetPageService(INavigationViewPageProvider navigationViewP...
    method ShowWindow (line 37) | public void ShowWindow() => Show();
    method CloseWindow (line 39) | public void CloseWindow() => Close();
    method OnClosed (line 44) | protected override void OnClosed(EventArgs e)
    method GetNavigation (line 52) | INavigationView INavigationWindow.GetNavigation()
    method SetServiceProvider (line 57) | public void SetServiceProvider(IServiceProvider serviceProvider)

FILE: samples/Wpf.Ui.Demo.Mvvm/Views/Pages/DashboardPage.xaml.cs
  class DashboardPage (line 13) | public partial class DashboardPage : INavigableView<ViewModels.Dashboard...
    method DashboardPage (line 17) | public DashboardPage(ViewModels.DashboardViewModel viewModel)

FILE: samples/Wpf.Ui.Demo.Mvvm/Views/Pages/DataPage.xaml.cs
  class DataPage (line 13) | public partial class DataPage : INavigableView<ViewModels.DataViewModel>
    method DataPage (line 17) | public DataPage(ViewModels.DataViewModel viewModel)

FILE: samples/Wpf.Ui.Demo.Mvvm/Views/Pages/SettingsPage.xaml.cs
  class SettingsPage (line 13) | public partial class SettingsPage : INavigableView<ViewModels.SettingsVi...
    method SettingsPage (line 17) | public SettingsPage(ViewModels.SettingsViewModel viewModel)

FILE: samples/Wpf.Ui.Demo.SetResources.Simple/App.xaml.cs
  class App (line 15) | public partial class App
    method Apply (line 20) | public static void Apply(ApplicationTheme theme)
    method ApplyTheme (line 25) | public static void ApplyTheme(FrameworkElement element)

FILE: samples/Wpf.Ui.Demo.SetResources.Simple/MainWindow.xaml.cs
  class MainWindow (line 16) | public partial class MainWindow
    method MainWindow (line 18) | public MainWindow()

FILE: samples/Wpf.Ui.Demo.SetResources.Simple/Models/DataColor.cs
  type DataColor (line 10) | public struct DataColor

FILE: samples/Wpf.Ui.Demo.SetResources.Simple/Models/DataGroup.cs
  class DataGroup (line 8) | public class DataGroup
    method DataGroup (line 10) | public DataGroup(bool selected, string name, string groupName)

FILE: samples/Wpf.Ui.Demo.SetResources.Simple/Views/Pages/DashboardPage.xaml.cs
  class DashboardPage (line 13) | public partial class DashboardPage
    method DashboardPage (line 17) | public DashboardPage()
    method OnBaseButtonClick (line 27) | private void OnBaseButtonClick(object sender, RoutedEventArgs e)

FILE: samples/Wpf.Ui.Demo.SetResources.Simple/Views/Pages/DataPage.xaml.cs
  class DataPage (line 16) | public partial class DataPage
    method DataPage (line 20) | public DataPage()
    method InitializeData (line 30) | private void InitializeData()

FILE: samples/Wpf.Ui.Demo.SetResources.Simple/Views/Pages/ExpanderPage.xaml.cs
  class ExpanderPage (line 14) | public partial class ExpanderPage
    method ExpanderPage (line 18) | public ExpanderPage()
    method InitializeData (line 31) | private void InitializeData()

FILE: samples/Wpf.Ui.Demo.SetResources.Simple/Views/Pages/SettingsPage.xaml.cs
  class SettingsPage (line 14) | public partial class SettingsPage
    method SettingsPage (line 16) | public SettingsPage()
    method OnLightThemeRadioButtonChecked (line 34) | private void OnLightThemeRadioButtonChecked(object sender, RoutedEvent...
    method OnDarkThemeRadioButtonChecked (line 39) | private void OnDarkThemeRadioButtonChecked(object sender, RoutedEventA...
    method GetAssemblyVersion (line 44) | private static string GetAssemblyVersion()

FILE: samples/Wpf.Ui.Demo.Simple/App.xaml.cs
  class App (line 11) | public partial class App { }

FILE: samples/Wpf.Ui.Demo.Simple/MainWindow.xaml.cs
  class MainWindow (line 13) | public partial class MainWindow
    method MainWindow (line 15) | public MainWindow()

FILE: samples/Wpf.Ui.Demo.Simple/Models/DataColor.cs
  type DataColor (line 10) | public struct DataColor

FILE: samples/Wpf.Ui.Demo.Simple/Views/Pages/DashboardPage.xaml.cs
  class DashboardPage (line 13) | public partial class DashboardPage
    method DashboardPage (line 17) | public DashboardPage()
    method OnBaseButtonClick (line 25) | private void OnBaseButtonClick(object sender, RoutedEventArgs e)

FILE: samples/Wpf.Ui.Demo.Simple/Views/Pages/DataPage.xaml.cs
  class DataPage (line 16) | public partial class DataPage
    method DataPage (line 20) | public DataPage()
    method InitializeData (line 28) | private void InitializeData()

FILE: samples/Wpf.Ui.Demo.Simple/Views/Pages/SettingsPage.xaml.cs
  class SettingsPage (line 15) | public partial class SettingsPage
    method SettingsPage (line 17) | public SettingsPage()
    method OnLightThemeRadioButtonChecked (line 33) | private void OnLightThemeRadioButtonChecked(object sender, RoutedEvent...
    method OnDarkThemeRadioButtonChecked (line 38) | private void OnDarkThemeRadioButtonChecked(object sender, RoutedEventA...
    method GetAssemblyVersion (line 43) | private static string GetAssemblyVersion()

FILE: src/Wpf.Ui.Abstractions/Controls/INavigableView.cs
  type INavigableView (line 12) | public interface INavigableView<out T>

FILE: src/Wpf.Ui.Abstractions/Controls/INavigationAware.cs
  type INavigationAware (line 11) | public interface INavigationAware
    method OnNavigatedToAsync (line 17) | Task OnNavigatedToAsync();
    method OnNavigatedFromAsync (line 23) | Task OnNavigatedFromAsync();

FILE: src/Wpf.Ui.Abstractions/Controls/NavigationAware.cs
  class NavigationAware (line 11) | public abstract class NavigationAware : INavigationAware
    method OnNavigatedToAsync (line 14) | public virtual Task OnNavigatedToAsync()
    method OnNavigatedTo (line 25) | public virtual void OnNavigatedTo() { }
    method OnNavigatedFromAsync (line 28) | public virtual Task OnNavigatedFromAsync()
    method OnNavigatedFrom (line 39) | public virtual void OnNavigatedFrom() { }

FILE: src/Wpf.Ui.Abstractions/INavigationViewPageProvider.cs
  type INavigationViewPageProvider (line 11) | public interface INavigationViewPageProvider
    method GetPage (line 18) | public object? GetPage(Type pageType);

FILE: src/Wpf.Ui.Abstractions/NavigationException.cs
  class NavigationException (line 11) | public sealed class NavigationException : Exception
    method NavigationException (line 17) | public NavigationException(string message)
    method NavigationException (line 26) | public NavigationException(Exception e, string message)

FILE: src/Wpf.Ui.Abstractions/NavigationViewPageProviderExtensions.cs
  class NavigationViewPageProviderExtensions (line 11) | public static class NavigationViewPageProviderExtensions
    method GetPage (line 19) | public static TPage? GetPage<TPage>(this INavigationViewPageProvider n...
    method GetRequiredPage (line 33) | public static TPage GetRequiredPage<TPage>(this INavigationViewPagePro...

FILE: src/Wpf.Ui.DependencyInjection/DependencyInjectionNavigationViewPageProvider.cs
  class DependencyInjectionNavigationViewPageProvider (line 13) | public class DependencyInjectionNavigationViewPageProvider(IServiceProvi...
    method GetPage (line 17) | public object? GetPage(Type pageType)

FILE: src/Wpf.Ui.DependencyInjection/ServiceCollectionExtensions.cs
  class ServiceCollectionExtensions (line 14) | public static class ServiceCollectionExtensions
    method AddNavigationViewPageProvider (line 21) | public static IServiceCollection AddNavigationViewPageProvider(this IS...

FILE: src/Wpf.Ui.Extension.Template.Blank/App.xaml.cs
  class App (line 14) | public partial class App
    method OnStartup (line 40) | private async void OnStartup(object sender, StartupEventArgs e)
    method OnExit (line 48) | private async void OnExit(object sender, ExitEventArgs e)
    method OnDispatcherUnhandledException (line 58) | private void OnDispatcherUnhandledException(object sender, DispatcherU...

FILE: src/Wpf.Ui.Extension.Template.Compact/App.xaml.cs
  class App (line 20) | public partial class App
    method OnStartup (line 68) | private async void OnStartup(object sender, StartupEventArgs e)
    method OnExit (line 76) | private async void OnExit(object sender, ExitEventArgs e)
    method OnDispatcherUnhandledException (line 86) | private void OnDispatcherUnhandledException(object sender, DispatcherU...

FILE: src/Wpf.Ui.Extension.Template.Compact/Helpers/EnumToBooleanConverter.cs
  class EnumToBooleanConverter (line 7) | internal class EnumToBooleanConverter : IValueConverter
    method Convert (line 9) | public object Convert(object value, Type targetType, object parameter,...
    method ConvertBack (line 26) | public object ConvertBack(object value, Type targetType, object parame...

FILE: src/Wpf.Ui.Extension.Template.Compact/Models/AppConfig.cs
  class AppConfig (line 3) | public class AppConfig

FILE: src/Wpf.Ui.Extension.Template.Compact/Models/DataColor.cs
  type DataColor (line 5) | public struct DataColor

FILE: src/Wpf.Ui.Extension.Template.Compact/Resources/Translations.cs
  class Translations (line 3) | public partial class Translations

FILE: src/Wpf.Ui.Extension.Template.Compact/Services/ApplicationHostService.cs
  class ApplicationHostService (line 12) | public class ApplicationHostService : IHostedService
    method ApplicationHostService (line 18) | public ApplicationHostService(IServiceProvider serviceProvider)
    method StartAsync (line 27) | public async Task StartAsync(CancellationToken cancellationToken)
    method StopAsync (line 36) | public async Task StopAsync(CancellationToken cancellationToken)
    method HandleActivationAsync (line 44) | private async Task HandleActivationAsync()

FILE: src/Wpf.Ui.Extension.Template.Compact/ViewModels/Pages/DashboardViewModel.cs
  class DashboardViewModel (line 3) | public partial class DashboardViewModel : ObservableObject
    method OnCounterIncrement (line 8) | [RelayCommand]

FILE: src/Wpf.Ui.Extension.Template.Compact/ViewModels/Pages/DataViewModel.cs
  class DataViewModel (line 7) | public partial class DataViewModel : ObservableObject, INavigationAware
    method OnNavigatedToAsync (line 14) | public Task OnNavigatedToAsync()
    method OnNavigatedFromAsync (line 22) | public Task OnNavigatedFromAsync() => Task.CompletedTask;
    method InitializeViewModel (line 24) | private void InitializeViewModel()

FILE: src/Wpf.Ui.Extension.Template.Compact/ViewModels/Pages/SettingsViewModel.cs
  class SettingsViewModel (line 6) | public partial class SettingsViewModel : ObservableObject, INavigationAware
    method OnNavigatedToAsync (line 16) | public Task OnNavigatedToAsync()
    method OnNavigatedFromAsync (line 24) | public Task OnNavigatedFromAsync() => Task.CompletedTask;
    method InitializeViewModel (line 26) | private void InitializeViewModel()
    method GetAssemblyVersion (line 34) | private string GetAssemblyVersion()
    method OnChangeTheme (line 40) | [RelayCommand]

FILE: src/Wpf.Ui.Extension.Template.Compact/ViewModels/Windows/MainWindowViewModel.cs
  class MainWindowViewModel (line 6) | public partial class MainWindowViewModel : ObservableObject

FILE: src/Wpf.Ui.Extension.Template.Compact/Views/Pages/DashboardPage.xaml.cs
  class DashboardPage (line 6) | public partial class DashboardPage : INavigableView<DashboardViewModel>
    method DashboardPage (line 10) | public DashboardPage(DashboardViewModel viewModel)

FILE: src/Wpf.Ui.Extension.Template.Compact/Views/Pages/DataPage.xaml.cs
  class DataPage (line 6) | public partial class DataPage : INavigableView<DataViewModel>
    method DataPage (line 10) | public DataPage(DataViewModel viewModel)

FILE: src/Wpf.Ui.Extension.Template.Compact/Views/Pages/SettingsPage.xaml.cs
  class SettingsPage (line 6) | public partial class SettingsPage : INavigableView<SettingsViewModel>
    method SettingsPage (line 10) | public SettingsPage(SettingsViewModel viewModel)

FILE: src/Wpf.Ui.Extension.Template.Compact/Views/Windows/MainWindow.xaml.cs
  class MainWindow (line 9) | public partial class MainWindow : INavigationWindow
    method MainWindow (line 13) | public MainWindow(
    method GetNavigation (line 32) | public INavigationView GetNavigation() => RootNavigation;
    method Navigate (line 34) | public bool Navigate(Type pageType) => RootNavigation.Navigate(pageType);
    method SetPageService (line 36) | public void SetPageService(INavigationViewPageProvider navigationViewP...
    method ShowWindow (line 38) | public void ShowWindow() => Show();
    method CloseWindow (line 40) | public void CloseWindow() => Close();
    method OnClosed (line 47) | protected override void OnClosed(EventArgs e)
    method GetNavigation (line 55) | INavigationView INavigationWindow.GetNavigation()
    method SetServiceProvider (line 60) | public void SetServiceProvider(IServiceProvider serviceProvider)

FILE: src/Wpf.Ui.Extension.Template.Fluent/App.xaml.cs
  class App (line 20) | public partial class App
    method OnStartup (line 68) | private async void OnStartup(object sender, StartupEventArgs e)
    method OnExit (line 76) | private async void OnExit(object sender, ExitEventArgs e)
    method OnDispatcherUnhandledException (line 86) | private void OnDispatcherUnhandledException(object sender, DispatcherU...

FILE: src/Wpf.Ui.Extension.Template.Fluent/Helpers/EnumToBooleanConverter.cs
  class EnumToBooleanConverter (line 7) | internal class EnumToBooleanConverter : IValueConverter
    method Convert (line 9) | public object Convert(object value, Type targetType, object parameter,...
    method ConvertBack (line 26) | public object ConvertBack(object value, Type targetType, object parame...

FILE: src/Wpf.Ui.Extension.Template.Fluent/Models/AppConfig.cs
  class AppConfig (line 3) | public class AppConfig

FILE: src/Wpf.Ui.Extension.Template.Fluent/Models/DataColor.cs
  type DataColor (line 5) | public struct DataColor

FILE: src/Wpf.Ui.Extension.Template.Fluent/Resources/Translations.cs
  class Translations (line 3) | public partial class Translations

FILE: src/Wpf.Ui.Extension.Template.Fluent/Services/ApplicationHostService.cs
  class ApplicationHostService (line 12) | public class ApplicationHostService : IHostedService
    method ApplicationHostService (line 18) | public ApplicationHostService(IServiceProvider serviceProvider)
    method StartAsync (line 27) | public async Task StartAsync(CancellationToken cancellationToken)
    method StopAsync (line 36) | public async Task StopAsync(CancellationToken cancellationToken)
    method HandleActivationAsync (line 44) | private async Task HandleActivationAsync()

FILE: src/Wpf.Ui.Extension.Template.Fluent/ViewModels/Pages/DashboardViewModel.cs
  class DashboardViewModel (line 3) | public partial class DashboardViewModel : ObservableObject
    method OnCounterIncrement (line 8) | [RelayCommand]

FILE: src/Wpf.Ui.Extension.Template.Fluent/ViewModels/Pages/DataViewModel.cs
  class DataViewModel (line 7) | public partial class DataViewModel : ObservableObject, INavigationAware
    method OnNavigatedToAsync (line 14) | public Task OnNavigatedToAsync()
    method OnNavigatedFromAsync (line 22) | public Task OnNavigatedFromAsync() => Task.CompletedTask;
    method InitializeViewModel (line 24) | private void InitializeViewModel()

FILE: src/Wpf.Ui.Extension.Template.Fluent/ViewModels/Pages/SettingsViewModel.cs
  class SettingsViewModel (line 6) | public partial class SettingsViewModel : ObservableObject, INavigationAware
    method OnNavigatedToAsync (line 16) | public Task OnNavigatedToAsync()
    method OnNavigatedFromAsync (line 24) | public Task OnNavigatedFromAsync() => Task.CompletedTask;
    method InitializeViewModel (line 26) | private void InitializeViewModel()
    method GetAssemblyVersion (line 34) | private string GetAssemblyVersion()
    method OnChangeTheme (line 40) | [RelayCommand]

FILE: src/Wpf.Ui.Extension.Template.Fluent/ViewModels/Windows/MainWindowViewModel.cs
  class MainWindowViewModel (line 6) | public partial class MainWindowViewModel : ObservableObject

FILE: src/Wpf.Ui.Extension.Template.Fluent/Views/Pages/DashboardPage.xaml.cs
  class DashboardPage (line 6) | public partial class DashboardPage : INavigableView<DashboardViewModel>
    method DashboardPage (line 10) | public DashboardPage(DashboardViewModel viewModel)

FILE: src/Wpf.Ui.Extension.Template.Fluent/Views/Pages/DataPage.xaml.cs
  class DataPage (line 6) | public partial class DataPage : INavigableView<DataViewModel>
    method DataPage (line 10) | public DataPage(DataViewModel viewModel)

FILE: src/Wpf.Ui.Extension.Template.Fluent/Views/Pages/SettingsPage.xaml.cs
  class SettingsPage (line 6) | public partial class SettingsPage : INavigableView<SettingsViewModel>
    method SettingsPage (line 10) | public SettingsPage(SettingsViewModel viewModel)

FILE: src/Wpf.Ui.Extension.Template.Fluent/Views/Windows/MainWindow.xaml.cs
  class MainWindow (line 9) | public partial class MainWindow : INavigationWindow
    method MainWindow (line 13) | public MainWindow(
    method GetNavigation (line 32) | public INavigationView GetNavigation() => RootNavigation;
    method Navigate (line 34) | public bool Navigate(Type pageType) => RootNavigation.Navigate(pageType);
    method SetPageService (line 36) | public void SetPageService(INavigationViewPageProvider navigationViewP...
    method ShowWindow (line 38) | public void ShowWindow() => Show();
    method CloseWindow (line 40) | public void CloseWindow() => Close();
    method OnClosed (line 47) | protected override void OnClosed(EventArgs e)
    method GetNavigation (line 55) | INavigationView INavigationWindow.GetNavigation()
    method SetServiceProvider (line 60) | public void SetServiceProvider(IServiceProvider serviceProvider)

FILE: src/Wpf.Ui.FlaUI/AutoSuggestBox.cs
  class AutoSuggestBox (line 11) | public class AutoSuggestBox(FrameworkAutomationElementBase frameworkAuto...
    method Enter (line 17) | public void Enter(string value)

FILE: src/Wpf.Ui.FontMapper/FontSource.cs
  class FontSource (line 8) | class FontSource
    method FontSource (line 16) | public FontSource(string name, string description, string sourcePath, ...
    method SetContents (line 24) | public void SetContents(IDictionary<string, long> contents)
    method UpdateVersion (line 29) | public void UpdateVersion(string version)

FILE: src/Wpf.Ui.FontMapper/GitTag.cs
  type GitTag (line 8) | record GitTag(string Ref, string Node_Id, string Url);

FILE: src/Wpf.Ui.Gallery/App.xaml.cs
  class App (line 19) | public partial class App
    method GetRequiredService (line 75) | public static T GetRequiredService<T>()
    method OnStartup (line 84) | private void OnStartup(object sender, StartupEventArgs e)
    method OnExit (line 92) | private void OnExit(object sender, ExitEventArgs e)
    method OnDispatcherUnhandledException (line 102) | private void OnDispatcherUnhandledException(object sender, DispatcherU...

FILE: src/Wpf.Ui.Gallery/Assets/Monaco/min/vs/base/worker/workerMain.js
  class n (line 6) | class n{get isWindows(){return this._detect(),this._isWindows}get isNode...
    method isWindows (line 6) | get isWindows(){return this._detect(),this._isWindows}
    method isNode (line 6) | get isNode(){return this._detect(),this._isNode}
    method isElectronRenderer (line 6) | get isElectronRenderer(){return this._detect(),this._isElectronRenderer}
    method isWebWorker (line 6) | get isWebWorker(){return this._detect(),this._isWebWorker}
    method isElectronNodeIntegrationWebWorker (line 6) | get isElectronNodeIntegrationWebWorker(){return this._detect(),this._i...
    method constructor (line 6) | constructor(){this._detected=!1,this._isWindows=!1,this._isNode=!1,thi...
    method _detect (line 6) | _detect(){this._detected||(this._detected=!0,this._isWindows=n._isWind...
    method _isWindows (line 6) | static _isWindows(){return typeof navigator<"u"&&navigator.userAgent&&...
    method constructor (line 6) | constructor(d,g,L){this.type=d,this.detail=g,this.timestamp=L}
    method fileUriToFilePath (line 6) | static fileUriToFilePath(A,i){if(i=decodeURI(i).replace(/%23/g,"#"),A)...
    method startsWith (line 6) | static startsWith(A,i){return A.length>=i.length&&A.substr(0,i.length)...
    method endsWith (line 6) | static endsWith(A,i){return A.length>=i.length&&A.substr(A.length-i.le...
    method containsQueryString (line 6) | static containsQueryString(A){return/^[^\#]*\?/gi.test(A)}
    method isAbsolutePath (line 6) | static isAbsolutePath(A){return/^((http:\/\/)|(https:\/\/)|(file:\/\/)...
    method forEachProperty (line 6) | static forEachProperty(A,i){if(A){let d;for(d in A)A.hasOwnProperty(d)...
    method isEmpty (line 6) | static isEmpty(A){let i=!0;return n.forEachProperty(A,()=>{i=!1}),i}
    method recursiveClone (line 6) | static recursiveClone(A){if(!A||typeof A!="object"||A instanceof RegEx...
    method generateAnonymousModule (line 6) | static generateAnonymousModule(){return"===anonymous"+n.NEXT_ANONYMOUS...
    method isAnonymousModule (line 6) | static isAnonymousModule(A){return n.startsWith(A,"===anonymous")}
    method getHighPerformanceTimestamp (line 6) | static getHighPerformanceTimestamp(){return this.PERFORMANCE_NOW_PROBE...
    method constructor (line 6) | constructor(o){this._env=o,this._scriptLoader=null,this._callbackMap={}}
    method load (line 6) | load(o,C,e,a){if(!this._scriptLoader)if(this._env.isWebWorker)this._sc...
    method triggerCallback (line 6) | triggerCallback(o){let C=this._callbackMap[o];delete this._callbackMap...
    method triggerErrorback (line 6) | triggerErrorback(o,C){let e=this._callbackMap[o];delete this._callback...
    method constructor (line 8) | constructor(h){let o=h.lastIndexOf("/");o!==-1?this.fromModulePath=h.s...
    method _normalizeModuleId (line 8) | static _normalizeModuleId(h){let o=h,C;for(C=/\/\.\//;C.test(o);)o=o.r...
    method resolveModule (line 8) | resolveModule(h){let o=h;return q.Utilities.isAbsolutePath(o)||(q.Util...
  class n (line 6) | class n{constructor(d,g,L){this.type=d,this.detail=g,this.timestamp=L}}
    method isWindows (line 6) | get isWindows(){return this._detect(),this._isWindows}
    method isNode (line 6) | get isNode(){return this._detect(),this._isNode}
    method isElectronRenderer (line 6) | get isElectronRenderer(){return this._detect(),this._isElectronRenderer}
    method isWebWorker (line 6) | get isWebWorker(){return this._detect(),this._isWebWorker}
    method isElectronNodeIntegrationWebWorker (line 6) | get isElectronNodeIntegrationWebWorker(){return this._detect(),this._i...
    method constructor (line 6) | constructor(){this._detected=!1,this._isWindows=!1,this._isNode=!1,thi...
    method _detect (line 6) | _detect(){this._detected||(this._detected=!0,this._isWindows=n._isWind...
    method _isWindows (line 6) | static _isWindows(){return typeof navigator<"u"&&navigator.userAgent&&...
    method constructor (line 6) | constructor(d,g,L){this.type=d,this.detail=g,this.timestamp=L}
    method fileUriToFilePath (line 6) | static fileUriToFilePath(A,i){if(i=decodeURI(i).replace(/%23/g,"#"),A)...
    method startsWith (line 6) | static startsWith(A,i){return A.length>=i.length&&A.substr(0,i.length)...
    method endsWith (line 6) | static endsWith(A,i){return A.length>=i.length&&A.substr(A.length-i.le...
    method containsQueryString (line 6) | static containsQueryString(A){return/^[^\#]*\?/gi.test(A)}
    method isAbsolutePath (line 6) | static isAbsolutePath(A){return/^((http:\/\/)|(https:\/\/)|(file:\/\/)...
    method forEachProperty (line 6) | static forEachProperty(A,i){if(A){let d;for(d in A)A.hasOwnProperty(d)...
    method isEmpty (line 6) | static isEmpty(A){let i=!0;return n.forEachProperty(A,()=>{i=!1}),i}
    method recursiveClone (line 6) | static recursiveClone(A){if(!A||typeof A!="object"||A instanceof RegEx...
    method generateAnonymousModule (line 6) | static generateAnonymousModule(){return"===anonymous"+n.NEXT_ANONYMOUS...
    method isAnonymousModule (line 6) | static isAnonymousModule(A){return n.startsWith(A,"===anonymous")}
    method getHighPerformanceTimestamp (line 6) | static getHighPerformanceTimestamp(){return this.PERFORMANCE_NOW_PROBE...
    method constructor (line 6) | constructor(o){this._env=o,this._scriptLoader=null,this._callbackMap={}}
    method load (line 6) | load(o,C,e,a){if(!this._scriptLoader)if(this._env.isWebWorker)this._sc...
    method triggerCallback (line 6) | triggerCallback(o){let C=this._callbackMap[o];delete this._callbackMap...
    method triggerErrorback (line 6) | triggerErrorback(o,C){let e=this._callbackMap[o];delete this._callback...
    method constructor (line 8) | constructor(h){let o=h.lastIndexOf("/");o!==-1?this.fromModulePath=h.s...
    method _normalizeModuleId (line 8) | static _normalizeModuleId(h){let o=h,C;for(C=/\/\.\//;C.test(o);)o=o.r...
    method resolveModule (line 8) | resolveModule(h){let o=h;return q.Utilities.isAbsolutePath(o)||(q.Util...
  class M (line 6) | class M{constructor(d){this._events=[new n(1,"",d)]}record(d,g){this._ev...
    method constructor (line 6) | constructor(d){this._events=[new n(1,"",d)]}
    method record (line 6) | record(d,g){this._events.push(new n(d,g,q.Utilities.getHighPerformance...
    method getEvents (line 6) | getEvents(){return this._events}
    method validateConfigurationOptions (line 6) | static validateConfigurationOptions(d){function g(L){if(L.phase==="loa...
    method mergeConfigurationOptions (line 6) | static mergeConfigurationOptions(d=null,g=null){let L=q.Utilities.recu...
    method attachListeners (line 6) | attachListeners(o,C,e){let a=()=>{o.removeEventListener("load",u),o.re...
    method load (line 6) | load(o,C,e,a){if(/^node\|/.test(C)){let u=o.getConfig().getOptionsLite...
    method constructor (line 8) | constructor(h,o,C,e,a,u){this.id=h,this.strId=o,this.dependencies=C,th...
    method _safeInvokeFunction (line 8) | static _safeInvokeFunction(h,o){try{return{returnedValue:h.apply(q.glo...
    method _invokeFactory (line 8) | static _invokeFactory(h,o,C,e){return h.shouldInvokeFactory(o)?h.shoul...
    method complete (line 8) | complete(h,o,C,e){this._isComplete=!0;let a=null;if(this._callback)if(...
    method onDependencyError (line 8) | onDependencyError(h){return this._isComplete=!0,this.error=h,this._err...
    method isComplete (line 8) | isComplete(){return this._isComplete}
    method constructor (line 11) | constructor(d){this.fn=d,this.lastCache=void 0,this.lastArgKey=void 0}
    method get (line 11) | get(d){const g=JSON.stringify(d);return this.lastArgKey!==g&&(this.las...
    method constructor (line 11) | constructor(i,d,g,L){this.originalStart=i,this.originalLength=d,this.m...
    method getOriginalEnd (line 11) | getOriginalEnd(){return this.originalStart+this.originalLength}
    method getModifiedEnd (line 11) | getModifiedEnd(){return this.modifiedStart+this.modifiedLength}
    method constructor (line 11) | constructor(){this.listeners=[],this.unexpectedErrorHandler=function(f...
    method emit (line 15) | emit(f){this.listeners.forEach(S=>{S(f)})}
    method onUnexpectedError (line 15) | onUnexpectedError(f){this.unexpectedErrorHandler(f),this.emit(f)}
    method onUnexpectedExternalError (line 15) | onUnexpectedExternalError(f){this.unexpectedErrorHandler(f)}
    method constructor (line 15) | constructor(){this._keyCodeToStr=[],this._strToKeyCode=Object.create(n...
    method define (line 15) | define(a,u){this._keyCodeToStr[a]=u,this._strToKeyCode[u.toLowerCase()...
    method keyCodeToStr (line 15) | keyCodeToStr(a){return this._keyCodeToStr[a]}
    method strToKeyCode (line 15) | strToKeyCode(a){return this._strToKeyCode[a.toLowerCase()]||0}
    method constructor (line 15) | constructor(i){this.executor=i,this._didRun=!1}
    method value (line 15) | get value(){if(!this._didRun)try{this._value=this.executor()}catch(i){...
    method rawValue (line 15) | get rawValue(){return this._value}
    method constructor (line 15) | constructor(d){this.element=d,this.next=M.Undefined,this.prev=M.Undefi...
    method constructor (line 17) | constructor(i,d){this.lineNumber=i,this.column=d}
    method with (line 17) | with(i=this.lineNumber,d=this.column){return i===this.lineNumber&&d===...
    method delta (line 17) | delta(i=0,d=0){return this.with(this.lineNumber+i,this.column+d)}
    method equals (line 17) | equals(i){return M.equals(this,i)}
    method equals (line 17) | static equals(i,d){return!i&&!d?!0:!!i&&!!d&&i.lineNumber===d.lineNumb...
    method isBefore (line 17) | isBefore(i){return M.isBefore(this,i)}
    method isBefore (line 17) | static isBefore(i,d){return i.lineNumber<d.lineNumber?!0:d.lineNumber<...
    method isBeforeOrEqual (line 17) | isBeforeOrEqual(i){return M.isBeforeOrEqual(this,i)}
    method isBeforeOrEqual (line 17) | static isBeforeOrEqual(i,d){return i.lineNumber<d.lineNumber?!0:d.line...
    method compare (line 17) | static compare(i,d){const g=i.lineNumber|0,L=d.lineNumber|0;if(g===L){...
    method clone (line 17) | clone(){return new M(this.lineNumber,this.column)}
    method toString (line 17) | toString(){return"("+this.lineNumber+","+this.column+")"}
    method lift (line 17) | static lift(i){return new M(i.lineNumber,i.column)}
    method isIPosition (line 17) | static isIPosition(i){return i&&typeof i.lineNumber=="number"&&typeof ...
    method toJSON (line 17) | toJSON(){return{lineNumber:this.lineNumber,column:this.column}}
    method constructor (line 17) | constructor(d,g){this.trimmedHash=d,this.lines=g}
    method getElement (line 17) | getElement(d){return this.trimmedHash[d]}
    method length (line 17) | get length(){return this.trimmedHash.length}
    method getBoundaryScore (line 17) | getBoundaryScore(d){const g=d===0?0:A(this.lines[d-1]),L=d===this.line...
    method getText (line 17) | getText(d){return this.lines.slice(d.start,d.endExclusive).join(`
    method isStronglyEqual (line 18) | isStronglyEqual(d,g){return this.lines[d]===this.lines[g]}
    method constructor (line 18) | constructor(g,L){this.width=g,this.height=L,this.array=[],this.array=n...
    method get (line 18) | get(g,L){return this.array[g+L*this.width]}
    method set (line 18) | set(g,L,h){this.array[g+L*this.width]=h}
    method constructor (line 20) | constructor(d,g,L){this.changes=d,this.moves=g,this.hitTimeout=L}
    method constructor (line 21) | constructor(){this._defaultValueSet=[["true","false"],["True","False"]...
    method navigateValueSet (line 21) | navigateValueSet(i,d,g,L,h){if(i&&d){const o=this.doNavigateValueSet(d...
    method doNavigateValueSet (line 21) | doNavigateValueSet(i,d){const g=this.numberReplace(i,d);return g!==nul...
    method numberReplace (line 21) | numberReplace(i,d){const g=Math.pow(10,i.length-(i.lastIndexOf(".")+1)...
    method textReplace (line 21) | textReplace(i,d){return this.valueSetsReplace(this._defaultValueSet,i,d)}
    method valueSetsReplace (line 21) | valueSetsReplace(i,d,g){let L=null;for(let h=0,o=i.length;L===null&&h<...
    method valueSetReplace (line 21) | valueSetReplace(i,d,g){let L=i.indexOf(d);return L>=0?(L+=g?1:-1,L<0?L...
  class A (line 6) | class A{record(d,g){}getEvents(){return[]}}
    method record (line 6) | record(d,g){}
    method getEvents (line 6) | getEvents(){return[]}
    method constructor (line 6) | constructor(d,g){if(this._env=d,this.options=M.mergeConfigurationOptio...
    method _createIgnoreDuplicateModulesMap (line 6) | _createIgnoreDuplicateModulesMap(){this.ignoreDuplicateModulesMap={};f...
    method _createSortedPathsRules (line 6) | _createSortedPathsRules(){this.sortedPathsRules=[],q.Utilities.forEach...
    method cloneAndMerge (line 6) | cloneAndMerge(d){return new A(this._env,M.mergeConfigurationOptions(d,...
    method getOptionsLiteral (line 6) | getOptionsLiteral(){return this.options}
    method _applyPaths (line 6) | _applyPaths(d){let g;for(let L=0,h=this.sortedPathsRules.length;L<h;L+...
    method _addUrlArgsToUrl (line 6) | _addUrlArgsToUrl(d){return q.Utilities.containsQueryString(d)?d+"&"+th...
    method _addUrlArgsIfNecessaryToUrl (line 6) | _addUrlArgsIfNecessaryToUrl(d){return this.options.urlArgs?this._addUr...
    method _addUrlArgsIfNecessaryToUrls (line 6) | _addUrlArgsIfNecessaryToUrls(d){if(this.options.urlArgs)for(let g=0,L=...
    method moduleIdToPaths (line 6) | moduleIdToPaths(d){if(this._env.isNode&&this.options.amdModulesPattern...
    method requireToUrl (line 6) | requireToUrl(d){let g=d;return q.Utilities.isAbsolutePath(g)||(g=this....
    method isBuild (line 6) | isBuild(){return this.options.isBuild}
    method shouldInvokeFactory (line 6) | shouldInvokeFactory(d){return!!(!this.options.isBuild||q.Utilities.isA...
    method isDuplicateMessageIgnoredFor (line 6) | isDuplicateMessageIgnoredFor(d){return this.ignoreDuplicateModulesMap....
    method getConfigForModule (line 6) | getConfigForModule(d){if(this.options.config)return this.options.confi...
    method shouldCatchError (line 6) | shouldCatchError(){return this.options.catchError}
    method shouldRecordStats (line 6) | shouldRecordStats(){return this.options.recordStats}
    method onError (line 6) | onError(d){this.options.onError(d)}
    method constructor (line 8) | constructor(){this._nextId=0,this._strModuleIdToIntModuleId=new Map,th...
    method getMaxModuleId (line 8) | getMaxModuleId(){return this._nextId}
    method getModuleId (line 8) | getModuleId(h){let o=this._strModuleIdToIntModuleId.get(h);return type...
    method getStrModuleId (line 8) | getStrModuleId(h){return this._intModuleIdToStrModuleId[h]}
    method cachedValues (line 11) | get cachedValues(){return this._map}
    method constructor (line 11) | constructor(d){this.fn=d,this._map=new Map}
    method get (line 11) | get(d){if(this._map.has(d))return this._map.get(d);const g=this.fn(d);...
    method constructor (line 11) | constructor(h,o,C,e=1){this._rgbaBrand=void 0,this.r=Math.min(255,Math...
    method equals (line 11) | static equals(h,o){return h.r===o.r&&h.g===o.g&&h.b===o.b&&h.a===o.a}
    method constructor (line 15) | constructor(){this._first=M.Undefined,this._last=M.Undefined,this._siz...
    method size (line 15) | get size(){return this._size}
    method isEmpty (line 15) | isEmpty(){return this._first===M.Undefined}
    method clear (line 15) | clear(){let d=this._first;for(;d!==M.Undefined;){const g=d.next;d.prev...
    method unshift (line 15) | unshift(d){return this._insert(d,!1)}
    method push (line 15) | push(d){return this._insert(d,!0)}
    method _insert (line 15) | _insert(d,g){const L=new M(d);if(this._first===M.Undefined)this._first...
    method shift (line 15) | shift(){if(this._first!==M.Undefined){const d=this._first.element;retu...
    method pop (line 15) | pop(){if(this._last!==M.Undefined){const d=this._last.element;return t...
    method _remove (line 15) | _remove(d){if(d.prev!==M.Undefined&&d.next!==M.Undefined){const g=d.pr...
    method create (line 15) | static create(d){return new A(d)}
    method constructor (line 15) | constructor(d){this._now=M&&d===!1?Date.now:globalThis.performance.now...
    method stop (line 15) | stop(){this._stopTime=this._now()}
    method elapsed (line 15) | elapsed(){return this._stopTime!==-1?this._stopTime-this._startTime:th...
    method constructor (line 17) | constructor(g){const L=(0,M.toUint8)(g);this._defaultValue=L,this._asc...
    method _createAsciiMap (line 17) | static _createAsciiMap(g){const L=new Uint8Array(256);return L.fill(g),L}
    method set (line 17) | set(g,L){const h=(0,M.toUint8)(L);g>=0&&g<256?this._asciiMap[g]=h:this...
    method get (line 17) | get(g){return g>=0&&g<256?this._asciiMap[g]:this._map.get(g)||this._de...
    method clear (line 17) | clear(){this._asciiMap.fill(this._defaultValue),this._map.clear()}
    method addRange (line 17) | static addRange(g,L){let h=0;for(;h<L.length&&L[h].endExclusive<g.star...
    method tryCreate (line 17) | static tryCreate(g,L){if(!(g>L))return new A(g,L)}
    method ofLength (line 17) | static ofLength(g){return new A(0,g)}
    method ofStartAndLength (line 17) | static ofStartAndLength(g,L){return new A(g,g+L)}
    method constructor (line 17) | constructor(g,L){if(this.start=g,this.endExclusive=L,g>L)throw new M.B...
    method isEmpty (line 17) | get isEmpty(){return this.start===this.endExclusive}
    method delta (line 17) | delta(g){return new A(this.start+g,this.endExclusive+g)}
    method deltaStart (line 17) | deltaStart(g){return new A(this.start+g,this.endExclusive)}
    method deltaEnd (line 17) | deltaEnd(g){return new A(this.start,this.endExclusive+g)}
    method length (line 17) | get length(){return this.endExclusive-this.start}
    method toString (line 17) | toString(){return`[${this.start}, ${this.endExclusive})`}
    method equals (line 17) | equals(g){return this.start===g.start&&this.endExclusive===g.endExclus...
    method containsRange (line 17) | containsRange(g){return this.start<=g.start&&g.endExclusive<=this.endE...
    method contains (line 17) | contains(g){return this.start<=g&&g<this.endExclusive}
    method join (line 17) | join(g){return new A(Math.min(this.start,g.start),Math.max(this.endExc...
    method intersect (line 17) | intersect(g){const L=Math.max(this.start,g.start),h=Math.min(this.endE...
    method isBefore (line 17) | isBefore(g){return this.endExclusive<=g.start}
    method isAfter (line 17) | isAfter(g){return this.start>=g.endExclusive}
    method slice (line 17) | slice(g){return g.slice(this.start,this.endExclusive)}
    method clip (line 17) | clip(g){if(this.isEmpty)throw new M.BugIndicatingError(`Invalid clippi...
    method clipCyclic (line 17) | clipCyclic(g){if(this.isEmpty)throw new M.BugIndicatingError(`Invalid ...
    method forEach (line 17) | forEach(g){for(let L=this.start;L<this.endExclusive;L++)g(L)}
    method constructor (line 17) | constructor(d,g,L,h){d>L||d===L&&g>h?(this.startLineNumber=L,this.star...
    method isEmpty (line 17) | isEmpty(){return A.isEmpty(this)}
    method isEmpty (line 17) | static isEmpty(d){return d.startLineNumber===d.endLineNumber&&d.startC...
    method containsPosition (line 17) | containsPosition(d){return A.containsPosition(this,d)}
    method containsPosition (line 17) | static containsPosition(d,g){return!(g.lineNumber<d.startLineNumber||g...
    method strictContainsPosition (line 17) | static strictContainsPosition(d,g){return!(g.lineNumber<d.startLineNum...
    method containsRange (line 17) | containsRange(d){return A.containsRange(this,d)}
    method containsRange (line 17) | static containsRange(d,g){return!(g.startLineNumber<d.startLineNumber|...
    method strictContainsRange (line 17) | strictContainsRange(d){return A.strictContainsRange(this,d)}
    method strictContainsRange (line 17) | static strictContainsRange(d,g){return!(g.startLineNumber<d.startLineN...
    method plusRange (line 17) | plusRange(d){return A.plusRange(this,d)}
    method plusRange (line 17) | static plusRange(d,g){let L,h,o,C;return g.startLineNumber<d.startLine...
    method intersectRanges (line 17) | intersectRanges(d){return A.intersectRanges(this,d)}
    method intersectRanges (line 17) | static intersectRanges(d,g){let L=d.startLineNumber,h=d.startColumn,o=...
    method equalsRange (line 17) | equalsRange(d){return A.equalsRange(this,d)}
    method equalsRange (line 17) | static equalsRange(d,g){return!d&&!g?!0:!!d&&!!g&&d.startLineNumber===...
    method getEndPosition (line 17) | getEndPosition(){return A.getEndPosition(this)}
    method getEndPosition (line 17) | static getEndPosition(d){return new M.Position(d.endLineNumber,d.endCo...
    method getStartPosition (line 17) | getStartPosition(){return A.getStartPosition(this)}
    method getStartPosition (line 17) | static getStartPosition(d){return new M.Position(d.startLineNumber,d.s...
    method toString (line 17) | toString(){return"["+this.startLineNumber+","+this.startColumn+" -> "+...
    method setEndPosition (line 17) | setEndPosition(d,g){return new A(this.startLineNumber,this.startColumn...
    method setStartPosition (line 17) | setStartPosition(d,g){return new A(d,g,this.endLineNumber,this.endColu...
    method collapseToStart (line 17) | collapseToStart(){return A.collapseToStart(this)}
    method collapseToStart (line 17) | static collapseToStart(d){return new A(d.startLineNumber,d.startColumn...
    method collapseToEnd (line 17) | collapseToEnd(){return A.collapseToEnd(this)}
    method collapseToEnd (line 17) | static collapseToEnd(d){return new A(d.endLineNumber,d.endColumn,d.end...
    method delta (line 17) | delta(d){return new A(this.startLineNumber+d,this.startColumn,this.end...
    method fromPositions (line 17) | static fromPositions(d,g=d){return new A(d.lineNumber,d.column,g.lineN...
    method lift (line 17) | static lift(d){return d?new A(d.startLineNumber,d.startColumn,d.endLin...
    method isIRange (line 17) | static isIRange(d){return d&&typeof d.startLineNumber=="number"&&typeo...
    method areIntersectingOrTouching (line 17) | static areIntersectingOrTouching(d,g){return!(d.endLineNumber<g.startL...
    method areIntersecting (line 17) | static areIntersecting(d,g){return!(d.endLineNumber<g.startLineNumber|...
    method compareRangesUsingStarts (line 17) | static compareRangesUsingStarts(d,g){if(d&&g){const o=d.startLineNumbe...
    method compareRangesUsingEnds (line 17) | static compareRangesUsingEnds(d,g){return d.endLineNumber===g.endLineN...
    method spansMultipleLines (line 17) | static spansMultipleLines(d){return d.endLineNumber>d.startLineNumber}
    method toJSON (line 17) | toJSON(){return this}
    method constructor (line 17) | constructor(g){super(0);for(let L=0,h=g.length;L<h;L++)this.set(g.char...
    method constructor (line 20) | constructor(d,g){this.lineRangeMapping=d,this.changes=g}
    method inverse (line 20) | static inverse(L,h,o){const C=[];let e=1,a=1;for(const c of L){const m...
    method constructor (line 20) | constructor(L,h){this.original=L,this.modified=h}
    method toString (line 20) | toString(){return`{${this.original.toString()}->${this.modified.toStri...
    method flip (line 20) | flip(){return new A(this.modified,this.original)}
    method join (line 20) | join(L){return new A(this.original.join(L.original),this.modified.join...
    method constructor (line 21) | constructor(a,u,c){const m=new Uint8Array(a*u);for(let f=0,S=a*u;f<S;f...
    method get (line 21) | get(a,u){return this._data[a*this.cols+u]}
    method set (line 21) | set(a,u,c){this._data[a*this.cols+u]=c}
  class n (line 6) | class n{static fileUriToFilePath(A,i){if(i=decodeURI(i).replace(/%23/g,"...
    method isWindows (line 6) | get isWindows(){return this._detect(),this._isWindows}
    method isNode (line 6) | get isNode(){return this._detect(),this._isNode}
    method isElectronRenderer (line 6) | get isElectronRenderer(){return this._detect(),this._isElectronRenderer}
    method isWebWorker (line 6) | get isWebWorker(){return this._detect(),this._isWebWorker}
    method isElectronNodeIntegrationWebWorker (line 6) | get isElectronNodeIntegrationWebWorker(){return this._detect(),this._i...
    method constructor (line 6) | constructor(){this._detected=!1,this._isWindows=!1,this._isNode=!1,thi...
    method _detect (line 6) | _detect(){this._detected||(this._detected=!0,this._isWindows=n._isWind...
    method _isWindows (line 6) | static _isWindows(){return typeof navigator<"u"&&navigator.userAgent&&...
    method constructor (line 6) | constructor(d,g,L){this.type=d,this.detail=g,this.timestamp=L}
    method fileUriToFilePath (line 6) | static fileUriToFilePath(A,i){if(i=decodeURI(i).replace(/%23/g,"#"),A)...
    method startsWith (line 6) | static startsWith(A,i){return A.length>=i.length&&A.substr(0,i.length)...
    method endsWith (line 6) | static endsWith(A,i){return A.length>=i.length&&A.substr(A.length-i.le...
    method containsQueryString (line 6) | static containsQueryString(A){return/^[^\#]*\?/gi.test(A)}
    method isAbsolutePath (line 6) | static isAbsolutePath(A){return/^((http:\/\/)|(https:\/\/)|(file:\/\/)...
    method forEachProperty (line 6) | static forEachProperty(A,i){if(A){let d;for(d in A)A.hasOwnProperty(d)...
    method isEmpty (line 6) | static isEmpty(A){let i=!0;return n.forEachProperty(A,()=>{i=!1}),i}
    method recursiveClone (line 6) | static recursiveClone(A){if(!A||typeof A!="object"||A instanceof RegEx...
    method generateAnonymousModule (line 6) | static generateAnonymousModule(){return"===anonymous"+n.NEXT_ANONYMOUS...
    method isAnonymousModule (line 6) | static isAnonymousModule(A){return n.startsWith(A,"===anonymous")}
    method getHighPerformanceTimestamp (line 6) | static getHighPerformanceTimestamp(){return this.PERFORMANCE_NOW_PROBE...
    method constructor (line 6) | constructor(o){this._env=o,this._scriptLoader=null,this._callbackMap={}}
    method load (line 6) | load(o,C,e,a){if(!this._scriptLoader)if(this._env.isWebWorker)this._sc...
    method triggerCallback (line 6) | triggerCallback(o){let C=this._callbackMap[o];delete this._callbackMap...
    method triggerErrorback (line 6) | triggerErrorback(o,C){let e=this._callbackMap[o];delete this._callback...
    method constructor (line 8) | constructor(h){let o=h.lastIndexOf("/");o!==-1?this.fromModulePath=h.s...
    method _normalizeModuleId (line 8) | static _normalizeModuleId(h){let o=h,C;for(C=/\/\.\//;C.test(o);)o=o.r...
    method resolveModule (line 8) | resolveModule(h){let o=h;return q.Utilities.isAbsolutePath(o)||(q.Util...
  function n (line 6) | function n(i){if(i instanceof Error)return i;const d=new Error(i.message...
    method isWindows (line 6) | get isWindows(){return this._detect(),this._isWindows}
    method isNode (line 6) | get isNode(){return this._detect(),this._isNode}
    method isElectronRenderer (line 6) | get isElectronRenderer(){return this._detect(),this._isElectronRenderer}
    method isWebWorker (line 6) | get isWebWorker(){return this._detect(),this._isWebWorker}
    method isElectronNodeIntegrationWebWorker (line 6) | get isElectronNodeIntegrationWebWorker(){return this._detect(),this._i...
    method constructor (line 6) | constructor(){this._detected=!1,this._isWindows=!1,this._isNode=!1,thi...
    method _detect (line 6) | _detect(){this._detected||(this._detected=!0,this._isWindows=n._isWind...
    method _isWindows (line 6) | static _isWindows(){return typeof navigator<"u"&&navigator.userAgent&&...
    method constructor (line 6) | constructor(d,g,L){this.type=d,this.detail=g,this.timestamp=L}
    method fileUriToFilePath (line 6) | static fileUriToFilePath(A,i){if(i=decodeURI(i).replace(/%23/g,"#"),A)...
    method startsWith (line 6) | static startsWith(A,i){return A.length>=i.length&&A.substr(0,i.length)...
    method endsWith (line 6) | static endsWith(A,i){return A.length>=i.length&&A.substr(A.length-i.le...
    method containsQueryString (line 6) | static containsQueryString(A){return/^[^\#]*\?/gi.test(A)}
    method isAbsolutePath (line 6) | static isAbsolutePath(A){return/^((http:\/\/)|(https:\/\/)|(file:\/\/)...
    method forEachProperty (line 6) | static forEachProperty(A,i){if(A){let d;for(d in A)A.hasOwnProperty(d)...
    method isEmpty (line 6) | static isEmpty(A){let i=!0;return n.forEachProperty(A,()=>{i=!1}),i}
    method recursiveClone (line 6) | static recursiveClone(A){if(!A||typeof A!="object"||A instanceof RegEx...
    method generateAnonymousModule (line 6) | static generateAnonymousModule(){return"===anonymous"+n.NEXT_ANONYMOUS...
    method isAnonymousModule (line 6) | static isAnonymousModule(A){return n.startsWith(A,"===anonymous")}
    method getHighPerformanceTimestamp (line 6) | static getHighPerformanceTimestamp(){return this.PERFORMANCE_NOW_PROBE...
    method constructor (line 6) | constructor(o){this._env=o,this._scriptLoader=null,this._callbackMap={}}
    method load (line 6) | load(o,C,e,a){if(!this._scriptLoader)if(this._env.isWebWorker)this._sc...
    method triggerCallback (line 6) | triggerCallback(o){let C=this._callbackMap[o];delete this._callbackMap...
    method triggerErrorback (line 6) | triggerErrorback(o,C){let e=this._callbackMap[o];delete this._callback...
    method constructor (line 8) | constructor(h){let o=h.lastIndexOf("/");o!==-1?this.fromModulePath=h.s...
    method _normalizeModuleId (line 8) | static _normalizeModuleId(h){let o=h,C;for(C=/\/\.\//;C.test(o);)o=o.r...
    method resolveModule (line 8) | resolveModule(h){let o=h;return q.Utilities.isAbsolutePath(o)||(q.Util...
  class M (line 6) | class M{static validateConfigurationOptions(d){function g(L){if(L.phase=...
    method constructor (line 6) | constructor(d){this._events=[new n(1,"",d)]}
    method record (line 6) | record(d,g){this._events.push(new n(d,g,q.Utilities.getHighPerformance...
    method getEvents (line 6) | getEvents(){return this._events}
    method validateConfigurationOptions (line 6) | static validateConfigurationOptions(d){function g(L){if(L.phase==="loa...
    method mergeConfigurationOptions (line 6) | static mergeConfigurationOptions(d=null,g=null){let L=q.Utilities.recu...
    method attachListeners (line 6) | attachListeners(o,C,e){let a=()=>{o.removeEventListener("load",u),o.re...
    method load (line 6) | load(o,C,e,a){if(/^node\|/.test(C)){let u=o.getConfig().getOptionsLite...
    method constructor (line 8) | constructor(h,o,C,e,a,u){this.id=h,this.strId=o,this.dependencies=C,th...
    method _safeInvokeFunction (line 8) | static _safeInvokeFunction(h,o){try{return{returnedValue:h.apply(q.glo...
    method _invokeFactory (line 8) | static _invokeFactory(h,o,C,e){return h.shouldInvokeFactory(o)?h.shoul...
    method complete (line 8) | complete(h,o,C,e){this._isComplete=!0;let a=null;if(this._callback)if(...
    method onDependencyError (line 8) | onDependencyError(h){return this._isComplete=!0,this.error=h,this._err...
    method isComplete (line 8) | isComplete(){return this._isComplete}
    method constructor (line 11) | constructor(d){this.fn=d,this.lastCache=void 0,this.lastArgKey=void 0}
    method get (line 11) | get(d){const g=JSON.stringify(d);return this.lastArgKey!==g&&(this.las...
    method constructor (line 11) | constructor(i,d,g,L){this.originalStart=i,this.originalLength=d,this.m...
    method getOriginalEnd (line 11) | getOriginalEnd(){return this.originalStart+this.originalLength}
    method getModifiedEnd (line 11) | getModifiedEnd(){return this.modifiedStart+this.modifiedLength}
    method constructor (line 11) | constructor(){this.listeners=[],this.unexpectedErrorHandler=function(f...
    method emit (line 15) | emit(f){this.listeners.forEach(S=>{S(f)})}
    method onUnexpectedError (line 15) | onUnexpectedError(f){this.unexpectedErrorHandler(f),this.emit(f)}
    method onUnexpectedExternalError (line 15) | onUnexpectedExternalError(f){this.unexpectedErrorHandler(f)}
    method constructor (line 15) | constructor(){this._keyCodeToStr=[],this._strToKeyCode=Object.create(n...
    method define (line 15) | define(a,u){this._keyCodeToStr[a]=u,this._strToKeyCode[u.toLowerCase()...
    method keyCodeToStr (line 15) | keyCodeToStr(a){return this._keyCodeToStr[a]}
    method strToKeyCode (line 15) | strToKeyCode(a){return this._strToKeyCode[a.toLowerCase()]||0}
    method constructor (line 15) | constructor(i){this.executor=i,this._didRun=!1}
    method value (line 15) | get value(){if(!this._didRun)try{this._value=this.executor()}catch(i){...
    method rawValue (line 15) | get rawValue(){return this._value}
    method constructor (line 15) | constructor(d){this.element=d,this.next=M.Undefined,this.prev=M.Undefi...
    method constructor (line 17) | constructor(i,d){this.lineNumber=i,this.column=d}
    method with (line 17) | with(i=this.lineNumber,d=this.column){return i===this.lineNumber&&d===...
    method delta (line 17) | delta(i=0,d=0){return this.with(this.lineNumber+i,this.column+d)}
    method equals (line 17) | equals(i){return M.equals(this,i)}
    method equals (line 17) | static equals(i,d){return!i&&!d?!0:!!i&&!!d&&i.lineNumber===d.lineNumb...
    method isBefore (line 17) | isBefore(i){return M.isBefore(this,i)}
    method isBefore (line 17) | static isBefore(i,d){return i.lineNumber<d.lineNumber?!0:d.lineNumber<...
    method isBeforeOrEqual (line 17) | isBeforeOrEqual(i){return M.isBeforeOrEqual(this,i)}
    method isBeforeOrEqual (line 17) | static isBeforeOrEqual(i,d){return i.lineNumber<d.lineNumber?!0:d.line...
    method compare (line 17) | static compare(i,d){const g=i.lineNumber|0,L=d.lineNumber|0;if(g===L){...
    method clone (line 17) | clone(){return new M(this.lineNumber,this.column)}
    method toString (line 17) | toString(){return"("+this.lineNumber+","+this.column+")"}
    method lift (line 17) | static lift(i){return new M(i.lineNumber,i.column)}
    method isIPosition (line 17) | static isIPosition(i){return i&&typeof i.lineNumber=="number"&&typeof ...
    method toJSON (line 17) | toJSON(){return{lineNumber:this.lineNumber,column:this.column}}
    method constructor (line 17) | constructor(d,g){this.trimmedHash=d,this.lines=g}
    method getElement (line 17) | getElement(d){return this.trimmedHash[d]}
    method length (line 17) | get length(){return this.trimmedHash.length}
    method getBoundaryScore (line 17) | getBoundaryScore(d){const g=d===0?0:A(this.lines[d-1]),L=d===this.line...
    method getText (line 17) | getText(d){return this.lines.slice(d.start,d.endExclusive).join(`
    method isStronglyEqual (line 18) | isStronglyEqual(d,g){return this.lines[d]===this.lines[g]}
    method constructor (line 18) | constructor(g,L){this.width=g,this.height=L,this.array=[],this.array=n...
    method get (line 18) | get(g,L){return this.array[g+L*this.width]}
    method set (line 18) | set(g,L,h){this.array[g+L*this.width]=h}
    method constructor (line 20) | constructor(d,g,L){this.changes=d,this.moves=g,this.hitTimeout=L}
    method constructor (line 21) | constructor(){this._defaultValueSet=[["true","false"],["True","False"]...
    method navigateValueSet (line 21) | navigateValueSet(i,d,g,L,h){if(i&&d){const o=this.doNavigateValueSet(d...
    method doNavigateValueSet (line 21) | doNavigateValueSet(i,d){const g=this.numberReplace(i,d);return g!==nul...
    method numberReplace (line 21) | numberReplace(i,d){const g=Math.pow(10,i.length-(i.lastIndexOf(".")+1)...
    method textReplace (line 21) | textReplace(i,d){return this.valueSetsReplace(this._defaultValueSet,i,d)}
    method valueSetsReplace (line 21) | valueSetsReplace(i,d,g){let L=null;for(let h=0,o=i.length;L===null&&h<...
    method valueSetReplace (line 21) | valueSetReplace(i,d,g){let L=i.indexOf(d);return L>=0?(L+=g?1:-1,L<0?L...
  class A (line 6) | class A{constructor(d,g){if(this._env=d,this.options=M.mergeConfiguratio...
    method record (line 6) | record(d,g){}
    method getEvents (line 6) | getEvents(){return[]}
    method constructor (line 6) | constructor(d,g){if(this._env=d,this.options=M.mergeConfigurationOptio...
    method _createIgnoreDuplicateModulesMap (line 6) | _createIgnoreDuplicateModulesMap(){this.ignoreDuplicateModulesMap={};f...
    method _createSortedPathsRules (line 6) | _createSortedPathsRules(){this.sortedPathsRules=[],q.Utilities.forEach...
    method cloneAndMerge (line 6) | cloneAndMerge(d){return new A(this._env,M.mergeConfigurationOptions(d,...
    method getOptionsLiteral (line 6) | getOptionsLiteral(){return this.options}
    method _applyPaths (line 6) | _applyPaths(d){let g;for(let L=0,h=this.sortedPathsRules.length;L<h;L+...
    method _addUrlArgsToUrl (line 6) | _addUrlArgsToUrl(d){return q.Utilities.containsQueryString(d)?d+"&"+th...
    method _addUrlArgsIfNecessaryToUrl (line 6) | _addUrlArgsIfNecessaryToUrl(d){return this.options.urlArgs?this._addUr...
    method _addUrlArgsIfNecessaryToUrls (line 6) | _addUrlArgsIfNecessaryToUrls(d){if(this.options.urlArgs)for(let g=0,L=...
    method moduleIdToPaths (line 6) | moduleIdToPaths(d){if(this._env.isNode&&this.options.amdModulesPattern...
    method requireToUrl (line 6) | requireToUrl(d){let g=d;return q.Utilities.isAbsolutePath(g)||(g=this....
    method isBuild (line 6) | isBuild(){return this.options.isBuild}
    method shouldInvokeFactory (line 6) | shouldInvokeFactory(d){return!!(!this.options.isBuild||q.Utilities.isA...
    method isDuplicateMessageIgnoredFor (line 6) | isDuplicateMessageIgnoredFor(d){return this.ignoreDuplicateModulesMap....
    method getConfigForModule (line 6) | getConfigForModule(d){if(this.options.config)return this.options.confi...
    method shouldCatchError (line 6) | shouldCatchError(){return this.options.catchError}
    method shouldRecordStats (line 6) | shouldRecordStats(){return this.options.recordStats}
    method onError (line 6) | onError(d){this.options.onError(d)}
    method constructor (line 8) | constructor(){this._nextId=0,this._strModuleIdToIntModuleId=new Map,th...
    method getMaxModuleId (line 8) | getMaxModuleId(){return this._nextId}
    method getModuleId (line 8) | getModuleId(h){let o=this._strModuleIdToIntModuleId.get(h);return type...
    method getStrModuleId (line 8) | getStrModuleId(h){return this._intModuleIdToStrModuleId[h]}
    method cachedValues (line 11) | get cachedValues(){return this._map}
    method constructor (line 11) | constructor(d){this.fn=d,this._map=new Map}
    method get (line 11) | get(d){if(this._map.has(d))return this._map.get(d);const g=this.fn(d);...
    method constructor (line 11) | constructor(h,o,C,e=1){this._rgbaBrand=void 0,this.r=Math.min(255,Math...
    method equals (line 11) | static equals(h,o){return h.r===o.r&&h.g===o.g&&h.b===o.b&&h.a===o.a}
    method constructor (line 15) | constructor(){this._first=M.Undefined,this._last=M.Undefined,this._siz...
    method size (line 15) | get size(){return this._size}
    method isEmpty (line 15) | isEmpty(){return this._first===M.Undefined}
    method clear (line 15) | clear(){let d=this._first;for(;d!==M.Undefined;){const g=d.next;d.prev...
    method unshift (line 15) | unshift(d){return this._insert(d,!1)}
    method push (line 15) | push(d){return this._insert(d,!0)}
    method _insert (line 15) | _insert(d,g){const L=new M(d);if(this._first===M.Undefined)this._first...
    method shift (line 15) | shift(){if(this._first!==M.Undefined){const d=this._first.element;retu...
    method pop (line 15) | pop(){if(this._last!==M.Undefined){const d=this._last.element;return t...
    method _remove (line 15) | _remove(d){if(d.prev!==M.Undefined&&d.next!==M.Undefined){const g=d.pr...
    method create (line 15) | static create(d){return new A(d)}
    method constructor (line 15) | constructor(d){this._now=M&&d===!1?Date.now:globalThis.performance.now...
    method stop (line 15) | stop(){this._stopTime=this._now()}
    method elapsed (line 15) | elapsed(){return this._stopTime!==-1?this._stopTime-this._startTime:th...
    method constructor (line 17) | constructor(g){const L=(0,M.toUint8)(g);this._defaultValue=L,this._asc...
    method _createAsciiMap (line 17) | static _createAsciiMap(g){const L=new Uint8Array(256);return L.fill(g),L}
    method set (line 17) | set(g,L){const h=(0,M.toUint8)(L);g>=0&&g<256?this._asciiMap[g]=h:this...
    method get (line 17) | get(g){return g>=0&&g<256?this._asciiMap[g]:this._map.get(g)||this._de...
    method clear (line 17) | clear(){this._asciiMap.fill(this._defaultValue),this._map.clear()}
    method addRange (line 17) | static addRange(g,L){let h=0;for(;h<L.length&&L[h].endExclusive<g.star...
    method tryCreate (line 17) | static tryCreate(g,L){if(!(g>L))return new A(g,L)}
    method ofLength (line 17) | static ofLength(g){return new A(0,g)}
    method ofStartAndLength (line 17) | static ofStartAndLength(g,L){return new A(g,g+L)}
    method constructor (line 17) | constructor(g,L){if(this.start=g,this.endExclusive=L,g>L)throw new M.B...
    method isEmpty (line 17) | get isEmpty(){return this.start===this.endExclusive}
    method delta (line 17) | delta(g){return new A(this.start+g,this.endExclusive+g)}
    method deltaStart (line 17) | deltaStart(g){return new A(this.start+g,this.endExclusive)}
    method deltaEnd (line 17) | deltaEnd(g){return new A(this.start,this.endExclusive+g)}
    method length (line 17) | get length(){return this.endExclusive-this.start}
    method toString (line 17) | toString(){return`[${this.start}, ${this.endExclusive})`}
    method equals (line 17) | equals(g){return this.start===g.start&&this.endExclusive===g.endExclus...
    method containsRange (line 17) | containsRange(g){return this.start<=g.start&&g.endExclusive<=this.endE...
    method contains (line 17) | contains(g){return this.start<=g&&g<this.endExclusive}
    method join (line 17) | join(g){return new A(Math.min(this.start,g.start),Math.max(this.endExc...
    method intersect (line 17) | intersect(g){const L=Math.max(this.start,g.start),h=Math.min(this.endE...
    method isBefore (line 17) | isBefore(g){return this.endExclusive<=g.start}
    method isAfter (line 17) | isAfter(g){return this.start>=g.endExclusive}
    method slice (line 17) | slice(g){return g.slice(this.start,this.endExclusive)}
    method clip (line 17) | clip(g){if(this.isEmpty)throw new M.BugIndicatingError(`Invalid clippi...
    method clipCyclic (line 17) | clipCyclic(g){if(this.isEmpty)throw new M.BugIndicatingError(`Invalid ...
    method forEach (line 17) | forEach(g){for(let L=this.start;L<this.endExclusive;L++)g(L)}
    method constructor (line 17) | constructor(d,g,L,h){d>L||d===L&&g>h?(this.startLineNumber=L,this.star...
    method isEmpty (line 17) | isEmpty(){return A.isEmpty(this)}
    method isEmpty (line 17) | static isEmpty(d){return d.startLineNumber===d.endLineNumber&&d.startC...
    method containsPosition (line 17) | containsPosition(d){return A.containsPosition(this,d)}
    method containsPosition (line 17) | static containsPosition(d,g){return!(g.lineNumber<d.startLineNumber||g...
    method strictContainsPosition (line 17) | static strictContainsPosition(d,g){return!(g.lineNumber<d.startLineNum...
    method containsRange (line 17) | containsRange(d){return A.containsRange(this,d)}
    method containsRange (line 17) | static containsRange(d,g){return!(g.startLineNumber<d.startLineNumber|...
    method strictContainsRange (line 17) | strictContainsRange(d){return A.strictContainsRange(this,d)}
    method strictContainsRange (line 17) | static strictContainsRange(d,g){return!(g.startLineNumber<d.startLineN...
    method plusRange (line 17) | plusRange(d){return A.plusRange(this,d)}
    method plusRange (line 17) | static plusRange(d,g){let L,h,o,C;return g.startLineNumber<d.startLine...
    method intersectRanges (line 17) | intersectRanges(d){return A.intersectRanges(this,d)}
    method intersectRanges (line 17) | static intersectRanges(d,g){let L=d.startLineNumber,h=d.startColumn,o=...
    method equalsRange (line 17) | equalsRange(d){return A.equalsRange(this,d)}
    method equalsRange (line 17) | static equalsRange(d,g){return!d&&!g?!0:!!d&&!!g&&d.startLineNumber===...
    method getEndPosition (line 17) | getEndPosition(){return A.getEndPosition(this)}
    method getEndPosition (line 17) | static getEndPosition(d){return new M.Position(d.endLineNumber,d.endCo...
    method getStartPosition (line 17) | getStartPosition(){return A.getStartPosition(this)}
    method getStartPosition (line 17) | static getStartPosition(d){return new M.Position(d.startLineNumber,d.s...
    method toString (line 17) | toString(){return"["+this.startLineNumber+","+this.startColumn+" -> "+...
    method setEndPosition (line 17) | setEndPosition(d,g){return new A(this.startLineNumber,this.startColumn...
    method setStartPosition (line 17) | setStartPosition(d,g){return new A(d,g,this.endLineNumber,this.endColu...
    method collapseToStart (line 17) | collapseToStart(){return A.collapseToStart(this)}
    method collapseToStart (line 17) | static collapseToStart(d){return new A(d.startLineNumber,d.startColumn...
    method collapseToEnd (line 17) | collapseToEnd(){return A.collapseToEnd(this)}
    method collapseToEnd (line 17) | static collapseToEnd(d){return new A(d.endLineNumber,d.endColumn,d.end...
    method delta (line 17) | delta(d){return new A(this.startLineNumber+d,this.startColumn,this.end...
    method fromPositions (line 17) | static fromPositions(d,g=d){return new A(d.lineNumber,d.column,g.lineN...
    method lift (line 17) | static lift(d){return d?new A(d.startLineNumber,d.startColumn,d.endLin...
    method isIRange (line 17) | static isIRange(d){return d&&typeof d.startLineNumber=="number"&&typeo...
    method areIntersectingOrTouching (line 17) | static areIntersectingOrTouching(d,g){return!(d.endLineNumber<g.startL...
    method areIntersecting (line 17) | static areIntersecting(d,g){return!(d.endLineNumber<g.startLineNumber|...
    method compareRangesUsingStarts (line 17) | static compareRangesUsingStarts(d,g){if(d&&g){const o=d.startLineNumbe...
    method compareRangesUsingEnds (line 17) | static compareRangesUsingEnds(d,g){return d.endLineNumber===g.endLineN...
    method spansMultipleLines (line 17) | static spansMultipleLines(d){return d.endLineNumber>d.startLineNumber}
    method toJSON (line 17) | toJSON(){return this}
    method constructor (line 17) | constructor(g){super(0);for(let L=0,h=g.length;L<h;L++)this.set(g.char...
    method constructor (line 20) | constructor(d,g){this.lineRangeMapping=d,this.changes=g}
    method inverse (line 20) | static inverse(L,h,o){const C=[];let e=1,a=1;for(const c of L){const m...
    method constructor (line 20) | constructor(L,h){this.original=L,this.modified=h}
    method toString (line 20) | toString(){return`{${this.original.toString()}->${this.modified.toStri...
    method flip (line 20) | flip(){return new A(this.modified,this.original)}
    method join (line 20) | join(L){return new A(this.original.join(L.original),this.modified.join...
    method constructor (line 21) | constructor(a,u,c){const m=new Uint8Array(a*u);for(let f=0,S=a*u;f<S;f...
    method get (line 21) | get(a,u){return this._data[a*this.cols+u]}
    method set (line 21) | set(a,u,c){this._data[a*this.cols+u]=c}
  class n (line 6) | class n{constructor(o){this._env=o,this._scriptLoader=null,this._callbac...
    method isWindows (line 6) | get isWindows(){return this._detect(),this._isWindows}
    method isNode (line 6) | get isNode(){return this._detect(),this._isNode}
    method isElectronRenderer (line 6) | get isElectronRenderer(){return this._detect(),this._isElectronRenderer}
    method isWebWorker (line 6) | get isWebWorker(){return this._detect(),this._isWebWorker}
    method isElectronNodeIntegrationWebWorker (line 6) | get isElectronNodeIntegrationWebWorker(){return this._detect(),this._i...
    method constructor (line 6) | constructor(){this._detected=!1,this._isWindows=!1,this._isNode=!1,thi...
    method _detect (line 6) | _detect(){this._detected||(this._detected=!0,this._isWindows=n._isWind...
    method _isWindows (line 6) | static _isWindows(){return typeof navigator<"u"&&navigator.userAgent&&...
    method constructor (line 6) | constructor(d,g,L){this.type=d,this.detail=g,this.timestamp=L}
    method fileUriToFilePath (line 6) | static fileUriToFilePath(A,i){if(i=decodeURI(i).replace(/%23/g,"#"),A)...
    method startsWith (line 6) | static startsWith(A,i){return A.length>=i.length&&A.substr(0,i.length)...
    method endsWith (line 6) | static endsWith(A,i){return A.length>=i.length&&A.substr(A.length-i.le...
    method containsQueryString (line 6) | static containsQueryString(A){return/^[^\#]*\?/gi.test(A)}
    method isAbsolutePath (line 6) | static isAbsolutePath(A){return/^((http:\/\/)|(https:\/\/)|(file:\/\/)...
    method forEachProperty (line 6) | static forEachProperty(A,i){if(A){let d;for(d in A)A.hasOwnProperty(d)...
    method isEmpty (line 6) | static isEmpty(A){let i=!0;return n.forEachProperty(A,()=>{i=!1}),i}
    method recursiveClone (line 6) | static recursiveClone(A){if(!A||typeof A!="object"||A instanceof RegEx...
    method generateAnonymousModule (line 6) | static generateAnonymousModule(){return"===anonymous"+n.NEXT_ANONYMOUS...
    method isAnonymousModule (line 6) | static isAnonymousModule(A){return n.startsWith(A,"===anonymous")}
    method getHighPerformanceTimestamp (line 6) | static getHighPerformanceTimestamp(){return this.PERFORMANCE_NOW_PROBE...
    method constructor (line 6) | constructor(o){this._env=o,this._scriptLoader=null,this._callbackMap={}}
    method load (line 6) | load(o,C,e,a){if(!this._scriptLoader)if(this._env.isWebWorker)this._sc...
    method triggerCallback (line 6) | triggerCallback(o){let C=this._callbackMap[o];delete this._callbackMap...
    method triggerErrorback (line 6) | triggerErrorback(o,C){let e=this._callbackMap[o];delete this._callback...
    method constructor (line 8) | constructor(h){let o=h.lastIndexOf("/");o!==-1?this.fromModulePath=h.s...
    method _normalizeModuleId (line 8) | static _normalizeModuleId(h){let o=h,C;for(C=/\/\.\//;C.test(o);)o=o.r...
    method resolveModule (line 8) | resolveModule(h){let o=h;return q.Utilities.isAbsolutePath(o)||(q.Util...
  class M (line 6) | class M{attachListeners(o,C,e){let a=()=>{o.removeEventListener("load",u...
    method constructor (line 6) | constructor(d){this._events=[new n(1,"",d)]}
    method record (line 6) | record(d,g){this._events.push(new n(d,g,q.Utilities.getHighPerformance...
    method getEvents (line 6) | getEvents(){return this._events}
    method validateConfigurationOptions (line 6) | static validateConfigurationOptions(d){function g(L){if(L.phase==="loa...
    method mergeConfigurationOptions (line 6) | static mergeConfigurationOptions(d=null,g=null){let L=q.Utilities.recu...
    method attachListeners (line 6) | attachListeners(o,C,e){let a=()=>{o.removeEventListener("load",u),o.re...
    method load (line 6) | load(o,C,e,a){if(/^node\|/.test(C)){let u=o.getConfig().getOptionsLite...
    method constructor (line 8) | constructor(h,o,C,e,a,u){this.id=h,this.strId=o,this.dependencies=C,th...
    method _safeInvokeFunction (line 8) | static _safeInvokeFunction(h,o){try{return{returnedValue:h.apply(q.glo...
    method _invokeFactory (line 8) | static _invokeFactory(h,o,C,e){return h.shouldInvokeFactory(o)?h.shoul...
    method complete (line 8) | complete(h,o,C,e){this._isComplete=!0;let a=null;if(this._callback)if(...
    method onDependencyError (line 8) | onDependencyError(h){return this._isComplete=!0,this.error=h,this._err...
    method isComplete (line 8) | isComplete(){return this._isComplete}
    method constructor (line 11) | constructor(d){this.fn=d,this.lastCache=void 0,this.lastArgKey=void 0}
    method get (line 11) | get(d){const g=JSON.stringify(d);return this.lastArgKey!==g&&(this.las...
    method constructor (line 11) | constructor(i,d,g,L){this.originalStart=i,this.originalLength=d,this.m...
    method getOriginalEnd (line 11) | getOriginalEnd(){return this.originalStart+this.originalLength}
    method getModifiedEnd (line 11) | getModifiedEnd(){return this.modifiedStart+this.modifiedLength}
    method constructor (line 11) | constructor(){this.listeners=[],this.unexpectedErrorHandler=function(f...
    method emit (line 15) | emit(f){this.listeners.forEach(S=>{S(f)})}
    method onUnexpectedError (line 15) | onUnexpectedError(f){this.unexpectedErrorHandler(f),this.emit(f)}
    method onUnexpectedExternalError (line 15) | onUnexpectedExternalError(f){this.unexpectedErrorHandler(f)}
    method constructor (line 15) | constructor(){this._keyCodeToStr=[],this._strToKeyCode=Object.create(n...
    method define (line 15) | define(a,u){this._keyCodeToStr[a]=u,this._strToKeyCode[u.toLowerCase()...
    method keyCodeToStr (line 15) | keyCodeToStr(a){return this._keyCodeToStr[a]}
    method strToKeyCode (line 15) | strToKeyCode(a){return this._strToKeyCode[a.toLowerCase()]||0}
    method constructor (line 15) | constructor(i){this.executor=i,this._didRun=!1}
    method value (line 15) | get value(){if(!this._didRun)try{this._value=this.executor()}catch(i){...
    method rawValue (line 15) | get rawValue(){return this._value}
    method constructor (line 15) | constructor(d){this.element=d,this.next=M.Undefined,this.prev=M.Undefi...
    method constructor (line 17) | constructor(i,d){this.lineNumber=i,this.column=d}
    method with (line 17) | with(i=this.lineNumber,d=this.column){return i===this.lineNumber&&d===...
    method delta (line 17) | delta(i=0,d=0){return this.with(this.lineNumber+i,this.column+d)}
    method equals (line 17) | equals(i){return M.equals(this,i)}
    method equals (line 17) | static equals(i,d){return!i&&!d?!0:!!i&&!!d&&i.lineNumber===d.lineNumb...
    method isBefore (line 17) | isBefore(i){return M.isBefore(this,i)}
    method isBefore (line 17) | static isBefore(i,d){return i.lineNumber<d.lineNumber?!0:d.lineNumber<...
    method isBeforeOrEqual (line 17) | isBeforeOrEqual(i){return M.isBeforeOrEqual(this,i)}
    method isBeforeOrEqual (line 17) | static isBeforeOrEqual(i,d){return i.lineNumber<d.lineNumber?!0:d.line...
    method compare (line 17) | static compare(i,d){const g=i.lineNumber|0,L=d.lineNumber|0;if(g===L){...
    method clone (line 17) | clone(){return new M(this.lineNumber,this.column)}
    method toString (line 17) | toString(){return"("+this.lineNumber+","+this.column+")"}
    method lift (line 17) | static lift(i){return new M(i.lineNumber,i.column)}
    method isIPosition (line 17) | static isIPosition(i){return i&&typeof i.lineNumber=="number"&&typeof ...
    method toJSON (line 17) | toJSON(){return{lineNumber:this.lineNumber,column:this.column}}
    method constructor (line 17) | constructor(d,g){this.trimmedHash=d,this.lines=g}
    method getElement (line 17) | getElement(d){return this.trimmedHash[d]}
    method length (line 17) | get length(){return this.trimmedHash.length}
    method getBoundaryScore (line 17) | getBoundaryScore(d){const g=d===0?0:A(this.lines[d-1]),L=d===this.line...
    method getText (line 17) | getText(d){return this.lines.slice(d.start,d.endExclusive).join(`
    method isStronglyEqual (line 18) | isStronglyEqual(d,g){return this.lines[d]===this.lines[g]}
    method constructor (line 18) | constructor(g,L){this.width=g,this.height=L,this.array=[],this.array=n...
    method get (line 18) | get(g,L){return this.array[g+L*this.width]}
    method set (line 18) | set(g,L,h){this.array[g+L*this.width]=h}
    method constructor (line 20) | constructor(d,g,L){this.changes=d,this.moves=g,this.hitTimeout=L}
    method constructor (line 21) | constructor(){this._defaultValueSet=[["true","false"],["True","False"]...
    method navigateValueSet (line 21) | navigateValueSet(i,d,g,L,h){if(i&&d){const o=this.doNavigateValueSet(d...
    method doNavigateValueSet (line 21) | doNavigateValueSet(i,d){const g=this.numberReplace(i,d);return g!==nul...
    method numberReplace (line 21) | numberReplace(i,d){const g=Math.pow(10,i.length-(i.lastIndexOf(".")+1)...
    method textReplace (line 21) | textReplace(i,d){return this.valueSetsReplace(this._defaultValueSet,i,d)}
    method valueSetsReplace (line 21) | valueSetsReplace(i,d,g){let L=null;for(let h=0,o=i.length;L===null&&h<...
    method valueSetReplace (line 21) | valueSetReplace(i,d,g){let L=i.indexOf(d);return L>=0?(L+=g?1:-1,L<0?L...
  function A (line 6) | function A(h){const{trustedTypesPolicy:o}=h.getConfig().getOptionsLitera...
    method record (line 6) | record(d,g){}
    method getEvents (line 6) | getEvents(){return[]}
    method constructor (line 6) | constructor(d,g){if(this._env=d,this.options=M.mergeConfigurationOptio...
    method _createIgnoreDuplicateModulesMap (line 6) | _createIgnoreDuplicateModulesMap(){this.ignoreDuplicateModulesMap={};f...
    method _createSortedPathsRules (line 6) | _createSortedPathsRules(){this.sortedPathsRules=[],q.Utilities.forEach...
    method cloneAndMerge (line 6) | cloneAndMerge(d){return new A(this._env,M.mergeConfigurationOptions(d,...
    method getOptionsLiteral (line 6) | getOptionsLiteral(){return this.options}
    method _applyPaths (line 6) | _applyPaths(d){let g;for(let L=0,h=this.sortedPathsRules.length;L<h;L+...
    method _addUrlArgsToUrl (line 6) | _addUrlArgsToUrl(d){return q.Utilities.containsQueryString(d)?d+"&"+th...
    method _addUrlArgsIfNecessaryToUrl (line 6) | _addUrlArgsIfNecessaryToUrl(d){return this.options.urlArgs?this._addUr...
    method _addUrlArgsIfNecessaryToUrls (line 6) | _addUrlArgsIfNecessaryToUrls(d){if(this.options.urlArgs)for(let g=0,L=...
    method moduleIdToPaths (line 6) | moduleIdToPaths(d){if(this._env.isNode&&this.options.amdModulesPattern...
    method requireToUrl (line 6) | requireToUrl(d){let g=d;return q.Utilities.isAbsolutePath(g)||(g=this....
    method isBuild (line 6) | isBuild(){return this.options.isBuild}
    method shouldInvokeFactory (line 6) | shouldInvokeFactory(d){return!!(!this.options.isBuild||q.Utilities.isA...
    method isDuplicateMessageIgnoredFor (line 6) | isDuplicateMessageIgnoredFor(d){return this.ignoreDuplicateModulesMap....
    method getConfigForModule (line 6) | getConfigForModule(d){if(this.options.config)return this.options.confi...
    method shouldCatchError (line 6) | shouldCatchError(){return this.options.catchError}
    method shouldRecordStats (line 6) | shouldRecordStats(){return this.options.recordStats}
    method onError (line 6) | onError(d){this.options.onError(d)}
    method constructor (line 8) | constructor(){this._nextId=0,this._strModuleIdToIntModuleId=new Map,th...
    method getMaxModuleId (line 8) | getMaxModuleId(){return this._nextId}
    method getModuleId (line 8) | getModuleId(h){let o=this._strModuleIdToIntModuleId.get(h);return type...
    method getStrModuleId (line 8) | getStrModuleId(h){return this._intModuleIdToStrModuleId[h]}
    method cachedValues (line 11) | get cachedValues(){return this._map}
    method constructor (line 11) | constructor(d){this.fn=d,this._map=new Map}
    method get (line 11) | get(d){if(this._map.has(d))return this._map.get(d);const g=this.fn(d);...
    method constructor (line 11) | constructor(h,o,C,e=1){this._rgbaBrand=void 0,this.r=Math.min(255,Math...
    method equals (line 11) | static equals(h,o){return h.r===o.r&&h.g===o.g&&h.b===o.b&&h.a===o.a}
    method constructor (line 15) | constructor(){this._first=M.Undefined,this._last=M.Undefined,this._siz...
    method size (line 15) | get size(){return this._size}
    method isEmpty (line 15) | isEmpty(){return this._first===M.Undefined}
    method clear (line 15) | clear(){let d=this._first;for(;d!==M.Undefined;){const g=d.next;d.prev...
    method unshift (line 15) | unshift(d){return this._insert(d,!1)}
    method push (line 15) | push(d){return this._insert(d,!0)}
    method _insert (line 15) | _insert(d,g){const L=new M(d);if(this._first===M.Undefined)this._first...
    method shift (line 15) | shift(){if(this._first!==M.Undefined){const d=this._first.element;retu...
    method pop (line 15) | pop(){if(this._last!==M.Undefined){const d=this._last.element;return t...
    method _remove (line 15) | _remove(d){if(d.prev!==M.Undefined&&d.next!==M.Undefined){const g=d.pr...
    method create (line 15) | static create(d){return new A(d)}
    method constructor (line 15) | constructor(d){this._now=M&&d===!1?Date.now:globalThis.performance.now...
    method stop (line 15) | stop(){this._stopTime=this._now()}
    method elapsed (line 15) | elapsed(){return this._stopTime!==-1?this._stopTime-this._startTime:th...
    method constructor (line 17) | constructor(g){const L=(0,M.toUint8)(g);this._defaultValue=L,this._asc...
    method _createAsciiMap (line 17) | static _createAsciiMap(g){const L=new Uint8Array(256);return L.fill(g),L}
    method set (line 17) | set(g,L){const h=(0,M.toUint8)(L);g>=0&&g<256?this._asciiMap[g]=h:this...
    method get (line 17) | get(g){return g>=0&&g<256?this._asciiMap[g]:this._map.get(g)||this._de...
    method clear (line 17) | clear(){this._asciiMap.fill(this._defaultValue),this._map.clear()}
    method addRange (line 17) | static addRange(g,L){let h=0;for(;h<L.length&&L[h].endExclusive<g.star...
    method tryCreate (line 17) | static tryCreate(g,L){if(!(g>L))return new A(g,L)}
    method ofLength (line 17) | static ofLength(g){return new A(0,g)}
    method ofStartAndLength (line 17) | static ofStartAndLength(g,L){return new A(g,g+L)}
    method constructor (line 17) | constructor(g,L){if(this.start=g,this.endExclusive=L,g>L)throw new M.B...
    method isEmpty (line 17) | get isEmpty(){return this.start===this.endExclusive}
    method delta (line 17) | delta(g){return new A(this.start+g,this.endExclusive+g)}
    method deltaStart (line 17) | deltaStart(g){return new A(this.start+g,this.endExclusive)}
    method deltaEnd (line 17) | deltaEnd(g){return new A(this.start,this.endExclusive+g)}
    method length (line 17) | get length(){return this.endExclusive-this.start}
    method toString (line 17) | toString(){return`[${this.start}, ${this.endExclusive})`}
    method equals (line 17) | equals(g){return this.start===g.start&&this.endExclusive===g.endExclus...
    method containsRange (line 17) | containsRange(g){return this.start<=g.start&&g.endExclusive<=this.endE...
    method contains (line 17) | contains(g){return this.start<=g&&g<this.endExclusive}
    method join (line 17) | join(g){return new A(Math.min(this.start,g.start),Math.max(this.endExc...
    method intersect (line 17) | intersect(g){const L=Math.max(this.start,g.start),h=Math.min(this.endE...
    method isBefore (line 17) | isBefore(g){return this.endExclusive<=g.start}
    method isAfter (line 17) | isAfter(g){return this.start>=g.endExclusive}
    method slice (line 17) | slice(g){return g.slice(this.start,this.endExclusive)}
    method clip (line 17) | clip(g){if(this.isEmpty)throw new M.BugIndicatingError(`Invalid clippi...
    method clipCyclic (line 17) | clipCyclic(g){if(this.isEmpty)throw new M.BugIndicatingError(`Invalid ...
    method forEach (line 17) | forEach(g){for(let L=this.start;L<this.endExclusive;L++)g(L)}
    method constructor (line 17) | constructor(d,g,L,h){d>L||d===L&&g>h?(this.startLineNumber=L,this.star...
    method isEmpty (line 17) | isEmpty(){return A.isEmpty(this)}
    method isEmpty (line 17) | static isEmpty(d){return d.startLineNumber===d.endLineNumber&&d.startC...
    method containsPosition (line 17) | containsPosition(d){return A.containsPosition(this,d)}
    method containsPosition (line 17) | static containsPosition(d,g){return!(g.lineNumber<d.startLineNumber||g...
    method strictContainsPosition (line 17) | static strictContainsPosition(d,g){return!(g.lineNumber<d.startLineNum...
    method containsRange (line 17) | containsRange(d){return A.containsRange(this,d)}
    method containsRange (line 17) | static containsRange(d,g){return!(g.startLineNumber<d.startLineNumber|...
    method strictContainsRange (line 17) | strictContainsRange(d){return A.strictContainsRange(this,d)}
    method strictContainsRange (line 17) | static strictContainsRange(d,g){return!(g.startLineNumber<d.startLineN...
    method plusRange (line 17) | plusRange(d){return A.plusRange(this,d)}
    method plusRange (line 17) | static plusRange(d,g){let L,h,o,C;return g.startLineNumber<d.startLine...
    method intersectRanges (line 17) | intersectRanges(d){return A.intersectRanges(this,d)}
    method intersectRanges (line 17) | static intersectRanges(d,g){let L=d.startLineNumber,h=d.startColumn,o=...
    method equalsRange (line 17) | equalsRange(d){return A.equalsRange(this,d)}
    method equalsRange (line 17) | static equalsRange(d,g){return!d&&!g?!0:!!d&&!!g&&d.startLineNumber===...
    method getEndPosition (line 17) | getEndPosition(){return A.getEndPosition(this)}
    method getEndPosition (line 17) | static getEndPosition(d){return new M.Position(d.endLineNumber,d.endCo...
    method getStartPosition (line 17) | getStartPosition(){return A.getStartPosition(this)}
    method getStartPosition (line 17) | static getStartPosition(d){return new M.Position(d.startLineNumber,d.s...
    method toString (line 17) | toString(){return"["+this.startLineNumber+","+this.startColumn+" -> "+...
    method setEndPosition (line 17) | setEndPosition(d,g){return new A(this.startLineNumber,this.startColumn...
    method setStartPosition (line 17) | setStartPosition(d,g){return new A(d,g,this.endLineNumber,this.endColu...
    method collapseToStart (line 17) | collapseToStart(){return A.collapseToStart(this)}
    method collapseToStart (line 17) | static collapseToStart(d){return new A(d.startLineNumber,d.startColumn...
    method collapseToEnd (line 17) | collapseToEnd(){return A.collapseToEnd(this)}
    method collapseToEnd (line 17) | static collapseToEnd(d){return new A(d.endLineNumber,d.endColumn,d.end...
    method delta (line 17) | delta(d){return new A(this.startLineNumber+d,this.startColumn,this.end...
    method fromPositions (line 17) | static fromPositions(d,g=d){return new A(d.lineNumber,d.column,g.lineN...
    method lift (line 17) | static lift(d){return d?new A(d.startLineNumber,d.startColumn,d.endLin...
    method isIRange (line 17) | static isIRange(d){return d&&typeof d.startLineNumber=="number"&&typeo...
    method areIntersectingOrTouching (line 17) | static areIntersectingOrTouching(d,g){return!(d.endLineNumber<g.startL...
    method areIntersecting (line 17) | static areIntersecting(d,g){return!(d.endLineNumber<g.startLineNumber|...
    method compareRangesUsingStarts (line 17) | static compareRangesUsingStarts(d,g){if(d&&g){const o=d.startLineNumbe...
    method compareRangesUsingEnds (line 17) | static compareRangesUsingEnds(d,g){return d.endLineNumber===g.endLineN...
    method spansMultipleLines (line 17) | static spansMultipleLines(d){return d.endLineNumber>d.startLineNumber}
    method toJSON (line 17) | toJSON(){return this}
    method constructor (line 17) | constructor(g){super(0);for(let L=0,h=g.length;L<h;L++)this.set(g.char...
    method constructor (line 20) | constructor(d,g){this.lineRangeMapping=d,this.changes=g}
    method inverse (line 20) | static inverse(L,h,o){const C=[];let e=1,a=1;for(const c of L){const m...
    method constructor (line 20) | constructor(L,h){this.original=L,this.modified=h}
    method toString (line 20) | toString(){return`{${this.original.toString()}->${this.modified.toStri...
    method flip (line 20) | flip(){return new A(this.modified,this.original)}
    method join (line 20) | join(L){return new A(this.original.join(L.original),this.modified.join...
    method constructor (line 21) | constructor(a,u,c){const m=new Uint8Array(a*u);for(let f=0,S=a*u;f<S;f...
    method get (line 21) | get(a,u){return this._data[a*this.cols+u]}
    method set (line 21) | set(a,u,c){this._data[a*this.cols+u]=c}
  class i (line 6) | class i{constructor(){this._cachedCanUseEval=null}_canUseEval(o){return ...
    method constructor (line 6) | constructor(){this._cachedCanUseEval=null}
    method _canUseEval (line 6) | _canUseEval(o){return this._cachedCanUseEval===null&&(this._cachedCanU...
    method load (line 6) | load(o,C,e,a){if(/^node\|/.test(C)){const u=o.getConfig().getOptionsLi...
    method constructor (line 8) | constructor(h){this.id=h}
    method constructor (line 11) | constructor(h,o,C,e){this._hslaBrand=void 0,this.h=Math.max(Math.min(3...
    method equals (line 11) | static equals(h,o){return h.h===o.h&&h.s===o.s&&h.l===o.l&&h.a===o.a}
    method fromRGBA (line 11) | static fromRGBA(h){const o=h.r/255,C=h.g/255,e=h.b/255,a=h.a,u=Math.ma...
    method _hue2rgb (line 11) | static _hue2rgb(h,o,C){return C<0&&(C+=1),C>1&&(C-=1),C<1/6?h+(o-h)*6*...
    method toRGBA (line 11) | static toRGBA(h){const o=h.h/360,{s:C,l:e,a}=h;let u,c,m;if(C===0)u=c=...
    method constructor (line 15) | constructor(a,u){this.uri=a,this.value=u}
    method constructor (line 17) | constructor(e){this.source=e}
    method getElements (line 17) | getElements(){const e=this.source,a=new Int32Array(e.length);for(let u...
    method constructor (line 17) | constructor(){this._actual=new A(0)}
    method add (line 17) | add(g){this._actual.set(g,1)}
    method has (line 17) | has(g){return this._actual.get(g)===1}
    method clear (line 17) | clear(){return this._actual.clear()}
    method constructor (line 17) | constructor(){this._sortedRanges=[]}
    method addRange (line 17) | addRange(g){let L=0;for(;L<this._sortedRanges.length&&this._sortedRang...
    method toString (line 17) | toString(){return this._sortedRanges.map(g=>g.toString()).join(", ")}
    method intersectsStrict (line 17) | intersectsStrict(g){let L=0;for(;L<this._sortedRanges.length&&this._so...
    method intersectWithRange (line 17) | intersectWithRange(g){const L=new i;for(const h of this._sortedRanges)...
    method intersectWithRangeLength (line 17) | intersectWithRangeLength(g){return this.intersectWithRange(g).length}
    method length (line 17) | get length(){return this._sortedRanges.reduce((g,L)=>g+L.length,0)}
    method constructor (line 17) | constructor(g,L,h,o){super(g,L,h,o),this.selectionStartLineNumber=g,th...
    method toString (line 17) | toString(){return"["+this.selectionStartLineNumber+","+this.selectionS...
    method equalsSelection (line 17) | equalsSelection(g){return i.selectionsEqual(this,g)}
    method selectionsEqual (line 17) | static selectionsEqual(g,L){return g.selectionStartLineNumber===L.sele...
    method getDirection (line 17) | getDirection(){return this.selectionStartLineNumber===this.startLineNu...
    method setEndPosition (line 17) | setEndPosition(g,L){return this.getDirection()===0?new i(this.startLin...
    method getPosition (line 17) | getPosition(){return new M.Position(this.positionLineNumber,this.posit...
    method getSelectionStart (line 17) | getSelectionStart(){return new M.Position(this.selectionStartLineNumbe...
    method setStartPosition (line 17) | setStartPosition(g,L){return this.getDirection()===0?new i(g,L,this.en...
    method fromPositions (line 17) | static fromPositions(g,L=g){return new i(g.lineNumber,g.column,L.lineN...
    method fromRange (line 17) | static fromRange(g,L){return L===0?new i(g.startLineNumber,g.startColu...
    method liftSelection (line 17) | static liftSelection(g){return new i(g.selectionStartLineNumber,g.sele...
    method selectionsArrEqual (line 17) | static selectionsArrEqual(g,L){if(g&&!L||!g&&L)return!1;if(!g&&!L)retu...
    method isISelection (line 17) | static isISelection(g){return g&&typeof g.selectionStartLineNumber=="n...
    method createWithDirection (line 17) | static createWithDirection(g,L,h,o,C){return C===0?new i(g,L,h,o):new ...
    method compute (line 17) | compute(o,C,e=A.InfiniteTimeout.instance){if(o.length===0||C.length===...
    method getKey (line 18) | static getKey(g){let L=this.chrKeys.get(g);return L===void 0&&(L=this....
    method constructor (line 18) | constructor(g,L,h){this.range=g,this.lines=L,this.source=h,this.histog...
    method computeSimilarity (line 19) | computeSimilarity(g){var L,h;let o=0;const C=Math.max(this.histogram.l...
    method constructor (line 20) | constructor(L,h,o){super(L,h),this.innerChanges=o}
    method flip (line 20) | flip(){var L;return new i(this.modified,this.original,(L=this.innerCha...
    method constructor (line 21) | constructor(a){let u=0,c=0;for(let f=0,S=a.length;f<S;f++){const[w,E,y...
    method nextState (line 21) | nextState(a,u){return u<0||u>=this._maxCharCode?0:this._states.get(a,u)}
    method constructor (line 21) | constructor(h){this.values=h,this.prefixSum=new Uint32Array(h.length),...
    method insertValues (line 21) | insertValues(h,o){h=(0,A.toUint32)(h);const C=this.values,e=this.prefi...
    method setValue (line 21) | setValue(h,o){return h=(0,A.toUint32)(h),o=(0,A.toUint32)(o),this.valu...
    method removeValues (line 21) | removeValues(h,o){h=(0,A.toUint32)(h),o=(0,A.toUint32)(o);const C=this...
    method getTotalSum (line 21) | getTotalSum(){return this.values.length===0?0:this._getPrefixSum(this....
    method getPrefixSum (line 21) | getPrefixSum(h){return h<0?0:(h=(0,A.toUint32)(h),this._getPrefixSum(h))}
    method _getPrefixSum (line 21) | _getPrefixSum(h){if(h<=this.prefixSumValidIndex[0])return this.prefixS...
    method getIndexOf (line 21) | getIndexOf(h){h=Math.floor(h),this.getTotalSum();let o=0,C=this.values...
    method constructor (line 25) | constructor(){this._tokenizationSupports=new Map,this._factories=new M...
    method handleChange (line 25) | handleChange(L){this._onDidChange.fire({changedLanguages:L,changedColo...
    method register (line 25) | register(L,h){return this._tokenizationSupports.set(L,h),this.handleCh...
    method get (line 25) | get(L){return this._tokenizationSupports.get(L)||null}
    method registerFactory (line 25) | registerFactory(L,h){var o;(o=this._factories.get(L))===null||o===void...
    method getOrCreate (line 25) | async getOrCreate(L){const h=this.get(L);if(h)return h;const o=this._f...
    method isResolved (line 25) | isResolved(L){if(this.get(L))return!0;const o=this._factories.get(L);r...
    method setColorMap (line 25) | setColorMap(L){this._colorMap=L,this._onDidChange.fire({changedLanguag...
    method getColorMap (line 25) | getColorMap(){return this._colorMap}
    method getDefaultBackground (line 25) | getDefaultBackground(){return this._colorMap&&this._colorMap.length>2?...
  class d (line 7) | class d{constructor(o){this._env=o,this._didInitialize=!1,this._didPatch...
    method constructor (line 7) | constructor(o){this._env=o,this._didInitialize=!1,this._didPatchNodeRe...
    method _init (line 7) | _init(o){this._didInitialize||(this._didInitialize=!0,this._fs=o("fs")...
    method _initNodeRequire (line 7) | _initNodeRequire(o,C){const{nodeCachedData:e}=C.getConfig().getOptions...
    method load (line 7) | load(o,C,e,a){const u=o.getConfig().getOptionsLiteral(),c=g(o.getRecor...
    method _createAndEvalScript (line 7) | _createAndEvalScript(o,C,e,a,u){const c=o.getRecorder();c.record(31,e....
    method _getElectronRendererScriptPathOrUri (line 7) | _getElectronRendererScriptPathOrUri(o){if(!this._env.isElectronRendere...
    method _getCachedDataPath (line 7) | _getCachedDataPath(o,C){const e=this._crypto.createHash("md5").update(...
    method _handleCachedData (line 7) | _handleCachedData(o,C,e,a,u){o.cachedDataRejected?this._fs.unlink(e,c=...
    method _createAndWriteCachedData (line 7) | _createAndWriteCachedData(o,C,e,a){let u=Math.ceil(a.getConfig().getOp...
    method _readSourceAndCachedData (line 7) | _readSourceAndCachedData(o,C,e,a){if(!C)this._fs.readFile(o,{encoding:...
    method _verifyCachedData (line 7) | _verifyCachedData(o,C,e,a,u){a&&(o.cachedDataRejected||setTimeout(()=>...
    method constructor (line 8) | constructor(h,o,C){this.id=h,this.pluginId=o,this.pluginParam=C}
    method constructor (line 11) | constructor(h,o,C,e){this._hsvaBrand=void 0,this.h=Math.max(Math.min(3...
    method equals (line 11) | static equals(h,o){return h.h===o.h&&h.s===o.s&&h.v===o.v&&h.a===o.a}
    method fromRGBA (line 11) | static fromRGBA(h){const o=h.r/255,C=h.g/255,e=h.b/255,a=Math.max(o,C,...
    method toRGBA (line 11) | static toRGBA(h){const{h:o,s:C,v:e,a}=h,u=e*C,c=u*(1-Math.abs(o/60%2-1...
    method constructor (line 17) | constructor(){this._isCancelled=!1,this._emitter=null}
    method cancel (line 17) | cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this...
    method isCancellationRequested (line 17) | get isCancellationRequested(){return this._isCancelled}
    method onCancellationRequested (line 17) | get onCancellationRequested(){return this._isCancelled?A:(this._emitte...
    method dispose (line 17) | dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=null)}
    method trivial (line 17) | static trivial(e,a){return new d([new g(i.OffsetRange.ofLength(e.lengt...
    method trivialTimedOut (line 17) | static trivialTimedOut(e,a){return new d([new g(i.OffsetRange.ofLength...
    method constructor (line 17) | constructor(e,a){this.diffs=e,this.hitTimeout=a}
    method constructor (line 17) | constructor(o,C,e,a){this.prev=o,this.x=C,this.y=e,this.length=a}
    method compute (line 19) | compute(L,h,o=A.InfiniteTimeout.instance,C){if(L.length===0||h.length=...
    method constructor (line 20) | constructor(L,h){this.originalRange=L,this.modifiedRange=h}
    method toString (line 20) | toString(){return`{${this.originalRange.toString()}->${this.modifiedRa...
    method flip (line 20) | flip(){return new d(this.modifiedRange,this.originalRange)}
    method constructor (line 21) | constructor(h){this._values=h,this._isValid=!1,this._validEndIndex=-1,...
    method getTotalSum (line 21) | getTotalSum(){return this._ensureValid(),this._indexBySum.length}
    method getPrefixSum (line 21) | getPrefixSum(h){return this._ensureValid(),h===0?0:this._prefixSum[h-1]}
    method getIndexOf (line 21) | getIndexOf(h){this._ensureValid();const o=this._indexBySum[h],C=o>0?th...
    method removeValues (line 21) | removeValues(h,o){this._values.splice(h,o),this._invalidate(h)}
    method insertValues (line 21) | insertValues(h,o){this._values=(0,M.arrayInsert)(this._values,h,o),thi...
    method _invalidate (line 21) | _invalidate(h){this._isValid=!1,this._validEndIndex=Math.min(this._val...
    method _ensureValid (line 21) | _ensureValid(){if(!this._isValid){for(let h=this._validEndIndex+1,o=th...
    method setValue (line 21) | setValue(h,o){this._values[h]!==o&&(this._values[h]=o,this._invalidate...
    method constructor (line 21) | constructor(L,h,o,C){this._uri=L,this._lines=h,this._eol=o,this._versi...
    method dispose (line 21) | dispose(){this._lines.length=0}
    method version (line 21) | get version(){return this._versionId}
    method getText (line 21) | getText(){return this._cachedTextValue===null&&(this._cachedTextValue=...
    method onEvents (line 21) | onEvents(L){L.eol&&L.eol!==this._eol&&(this._eol=L.eol,this._lineStart...
    method _ensureLineStarts (line 21) | _ensureLineStarts(){if(!this._lineStarts){const L=this._eol.length,h=t...
    method _setLineText (line 21) | _setLineText(L,h){this._lines[L]=h,this._lineStarts&&this._lineStarts....
    method _acceptDeleteRange (line 21) | _acceptDeleteRange(L){if(L.startLineNumber===L.endLineNumber){if(L.sta...
    method _acceptInsertText (line 21) | _acceptInsertText(L,h){if(h.length===0)return;const o=(0,M.splitLines)...
    method isResolved (line 25) | get isResolved(){return this._isResolved}
    method constructor (line 25) | constructor(L,h,o){super(),this._registry=L,this._languageId=h,this._f...
    method dispose (line 25) | dispose(){this._isDisposed=!0,super.dispose()}
    method resolve (line 25) | async resolve(){return this._resolvePromise||(this._resolvePromise=thi...
    method _create (line 25) | async _create(){const L=await this._factory.tokenizationSupport;this._...
  function g (line 8) | function g(h,o){if(o.__$__isRecorded)return o;const C=function(a){h.reco...
    method constructor (line 8) | constructor(h,o,C,e,a=0){this._env=h,this._scriptLoader=o,this._loader...
    method reset (line 8) | reset(){return new g(this._env,this._scriptLoader,this._defineFunc,thi...
    method getGlobalAMDDefineFunc (line 8) | getGlobalAMDDefineFunc(){return this._defineFunc}
    method getGlobalAMDRequireFunc (line 8) | getGlobalAMDRequireFunc(){return this._requireFunc}
    method _findRelevantLocationInStack (line 8) | static _findRelevantLocationInStack(h,o){let C=u=>u.replace(/\\/g,"/")...
    method getBuildInfo (line 8) | getBuildInfo(){if(!this._config.isBuild())return null;let h=[],o=0;for...
    method getRecorder (line 8) | getRecorder(){return this._recorder||(this._config.shouldRecordStats()...
    method getLoaderEvents (line 8) | getLoaderEvents(){return this.getRecorder().getEvents()}
    method enqueueDefineAnonymousModule (line 8) | enqueueDefineAnonymousModule(h,o){if(this._currentAnonymousDefineCall!...
    method defineModule (line 8) | defineModule(h,o,C,e,a,u=new n(h)){let c=this._moduleIdProvider.getMod...
    method _normalizeDependency (line 8) | _normalizeDependency(h,o){if(h==="exports")return i.EXPORTS;if(h==="mo...
    method _normalizeDependencies (line 8) | _normalizeDependencies(h,o){let C=[],e=0;for(let a=0,u=h.length;a<u;a+...
    method _relativeRequire (line 8) | _relativeRequire(h,o,C,e){if(typeof o=="string")return this.synchronou...
    method synchronousRequire (line 8) | synchronousRequire(h,o=new n(h)){let C=this._normalizeDependency(h,o),...
    method configure (line 8) | configure(h,o){let C=this._config.shouldRecordStats();o?this._config=n...
    method getConfig (line 8) | getConfig(){return this._config}
    method _onLoad (line 8) | _onLoad(h){if(this._currentAnonymousDefineCall!==null){let o=this._cur...
    method _createLoadError (line 8) | _createLoadError(h,o){let C=this._moduleIdProvider.getStrModuleId(h),e...
    method _onLoadError (line 8) | _onLoadError(h,o){const C=this._createLoadError(h,o);this._modules2[h]...
    method _hasDependencyPath (line 8) | _hasDependencyPath(h,o){let C=this._modules2[h];if(!C)return!1;let e=[...
    method _findCyclePath (line 8) | _findCyclePath(h,o,C){if(h===o||C===50)return[h];let e=this._modules2[...
    method _createRequire (line 8) | _createRequire(h){let o=(C,e,a)=>this._relativeRequire(h,C,e,a);return...
    method _loadModule (line 8) | _loadModule(h){if(this._modules2[h]||this._knownModules2[h])return;thi...
    method _loadPluginDependency (line 8) | _loadPluginDependency(h,o){if(this._modules2[o.id]||this._knownModules...
    method _resolve (line 8) | _resolve(h){let o=h.dependencies;if(o)for(let C=0,e=o.length;C<e;C++){...
    method _onModuleComplete (line 9) | _onModuleComplete(h){let o=this.getRecorder();if(h.isComplete())return...
    method fromHex (line 11) | static fromHex(h){return g.Format.CSS.parseHex(h)||g.red}
    method equals (line 11) | static equals(h,o){return!h&&!o?!0:!h||!o?!1:h.equals(o)}
    method hsla (line 11) | get hsla(){return this._hsla?this._hsla:i.fromRGBA(this.rgba)}
    method hsva (line 11) | get hsva(){return this._hsva?this._hsva:d.fromRGBA(this.rgba)}
    method constructor (line 11) | constructor(h){if(h)if(h instanceof A)this.rgba=h;else if(h instanceof...
    method equals (line 11) | equals(h){return!!h&&A.equals(this.rgba,h.rgba)&&i.equals(this.hsla,h....
    method getRelativeLuminance (line 11) | getRelativeLuminance(){const h=g._relativeLuminanceForComponent(this.r...
    method _relativeLuminanceForComponent (line 11) | static _relativeLuminanceForComponent(h){const o=h/255;return o<=.0392...
    method isLighter (line 11) | isLighter(){return(this.rgba.r*299+this.rgba.g*587+this.rgba.b*114)/1e...
    method isLighterThan (line 11) | isLighterThan(h){const o=this.getRelativeLuminance(),C=h.getRelativeLu...
    method isDarkerThan (line 11) | isDarkerThan(h){const o=this.getRelativeLuminance(),C=h.getRelativeLum...
    method lighten (line 11) | lighten(h){return new g(new i(this.hsla.h,this.hsla.s,this.hsla.l+this...
    method darken (line 11) | darken(h){return new g(new i(this.hsla.h,this.hsla.s,this.hsla.l-this....
    method transparent (line 11) | transparent(h){const{r:o,g:C,b:e,a}=this.rgba;return new g(new A(o,C,e...
    method isTransparent (line 11) | isTransparent(){return this.rgba.a===0}
    method isOpaque (line 11) | isOpaque(){return this.rgba.a===1}
    method opposite (line 11) | opposite(){return new g(new A(255-this.rgba.r,255-this.rgba.g,255-this...
    method makeOpaque (line 11) | makeOpaque(h){if(this.isOpaque()||h.rgba.a!==1)return this;const{r:o,g...
    method toString (line 11) | toString(){return this._toString||(this._toString=g.Format.CSS.format(...
    method getLighterColor (line 11) | static getLighterColor(h,o,C){if(h.isLighterThan(o))return h;C=C||.5;c...
    method getDarkerColor (line 11) | static getDarkerColor(h,o,C){if(h.isDarkerThan(o))return h;C=C||.5;con...
    method constructor (line 15) | constructor(a,u){if(this[M]="ResourceMap",a instanceof g)this.map=new ...
    method set (line 15) | set(a,u){return this.map.set(this.toKey(a),new i(a,u)),this}
    method get (line 15) | get(a){var u;return(u=this.map.get(this.toKey(a)))===null||u===void 0?...
    method has (line 15) | has(a){return this.map.has(this.toKey(a))}
    method size (line 15) | get size(){return this.map.size}
    method clear (line 15) | clear(){this.map.clear()}
    method delete (line 15) | delete(a){return this.map.delete(this.toKey(a))}
    method forEach (line 15) | forEach(a,u){typeof u<"u"&&(a=a.bind(u));for(const[c,m]of this.map)a(m...
    method values (line 15) | *values(){for(const a of this.map.values())yield a.value}
    method keys (line 15) | *keys(){for(const a of this.map.values())yield a.uri}
    method entries (line 15) | *entries(){for(const a of this.map.values())yield[a.uri,a.value]}
    method constructor (line 17) | constructor(h){this._token=void 0,this._parentListener=void 0,this._pa...
    method token (line 17) | get token(){return this._token||(this._token=new d),this._token}
    method cancel (line 17) | cancel(){this._token?this._token instanceof d&&this._token.cancel():th...
    method dispose (line 17) | dispose(h=!1){var o;h&&this.cancel(),(o=this._parentListener)===null||...
    method Assert (line 17) | static Assert(e,a){if(!e)throw new Error(a)}
    method fromRange (line 17) | static fromRange(o){return new g(o.startLineNumber,o.endLineNumber)}
    method fromRangeInclusive (line 17) | static fromRangeInclusive(o){return new g(o.startLineNumber,o.endLineN...
    method joinMany (line 17) | static joinMany(o){if(o.length===0)return[];let C=new L(o[0].slice());...
    method ofLength (line 17) | static ofLength(o,C){return new g(o,o+C)}
    method deserialize (line 17) | static deserialize(o){return new g(o[0],o[1])}
    method constructor (line 17) | constructor(o,C){if(o>C)throw new M.BugIndicatingError(`startLineNumbe...
    method contains (line 17) | contains(o){return this.startLineNumber<=o&&o<this.endLineNumberExclus...
    method isEmpty (line 17) | get isEmpty(){return this.startLineNumber===this.endLineNumberExclusive}
    method delta (line 17) | delta(o){return new g(this.startLineNumber+o,this.endLineNumberExclusi...
    method deltaLength (line 17) | deltaLength(o){return new g(this.startLineNumber,this.endLineNumberExc...
    method length (line 17) | get length(){return this.endLineNumberExclusive-this.startLineNumber}
    method join (line 17) | join(o){return new g(Math.min(this.startLineNumber,o.startLineNumber),...
    method toString (line 17) | toString(){return`[${this.startLineNumber},${this.endLineNumberExclusi...
    method intersect (line 17) | intersect(o){const C=Math.max(this.startLineNumber,o.startLineNumber),...
    method intersectsStrict (line 17) | intersectsStrict(o){return this.startLineNumber<o.endLineNumberExclusi...
    method overlapOrTouch (line 17) | overlapOrTouch(o){return this.startLineNumber<=o.endLineNumberExclusiv...
    method equals (line 17) | equals(o){return this.startLineNumber===o.startLineNumber&&this.endLin...
    method toInclusiveRange (line 17) | toInclusiveRange(){return this.isEmpty?null:new i.Range(this.startLine...
    method toExclusiveRange (line 17) | toExclusiveRange(){return new i.Range(this.startLineNumber,1,this.endL...
    method mapToLineArray (line 17) | mapToLineArray(o){const C=[];for(let e=this.startLineNumber;e<this.end...
    method forEach (line 17) | forEach(o){for(let C=this.startLineNumber;C<this.endLineNumberExclusiv...
    method serialize (line 17) | serialize(){return[this.startLineNumber,this.endLineNumberExclusive]}
    method includes (line 17) | includes(o){return this.startLineNumber<=o&&o<this.endLineNumberExclus...
    method toOffsetRange (line 17) | toOffsetRange(){return new A.OffsetRange(this.startLineNumber-1,this.e...
    method invert (line 17) | static invert(e,a){const u=[];return(0,M.forEachAdjacent)(e,(c,m)=>{u....
    method fromOffsetPairs (line 17) | static fromOffsetPairs(e,a){return new g(new i.OffsetRange(e.offset1,a...
    method constructor (line 17) | constructor(e,a){this.seq1Range=e,this.seq2Range=a}
    method swap (line 17) | swap(){return new g(this.seq2Range,this.seq1Range)}
    method toString (line 17) | toString(){return`${this.seq1Range} <-> ${this.seq2Range}`}
    method join (line 17) | join(e){return new g(this.seq1Range.join(e.seq1Range),this.seq2Range.j...
    method delta (line 17) | delta(e){return e===0?this:new g(this.seq1Range.delta(e),this.seq2Rang...
    method deltaStart (line 17) | deltaStart(e){return e===0?this:new g(this.seq1Range.deltaStart(e),thi...
    method deltaEnd (line 17) | deltaEnd(e){return e===0?this:new g(this.seq1Range.deltaEnd(e),this.se...
    method intersect (line 17) | intersect(e){const a=this.seq1Range.intersect(e.seq1Range),u=this.seq2...
    method getStarts (line 17) | getStarts(){return new L(this.seq1Range.start,this.seq2Range.start)}
    method getEndExclusives (line 17) | getEndExclusives(){return new L(this.seq1Range.endExclusive,this.seq2R...
    method constructor (line 17) | constructor(){this.positiveArr=new Int32Array(10),this.negativeArr=new...
    method get (line 17) | get(o){return o<0?(o=-o-1,this.negativeArr[o]):this.positiveArr[o]}
    method set (line 17) | set(o,C){if(o<0){if(o=-o-1,o>=this.negativeArr.length){const e=this.ne...
    method constructor (line 21) | constructor(h,o){this.index=h,this.remainder=o,this._prefixSumIndexOfR...
  function L (line 8) | function L(h){return new n(h)}
    method constructor (line 15) | constructor(){this[A]="LinkedMap",this._map=new Map,this._head=void 0,...
    method clear (line 15) | clear(){this._map.clear(),this._head=void 0,this._tail=void 0,this._si...
    method isEmpty (line 15) | isEmpty(){return!this._head&&!this._tail}
    method size (line 15) | get size(){return this._size}
    method first (line 15) | get first(){var a;return(a=this._head)===null||a===void 0?void 0:a.value}
    method last (line 15) | get last(){var a;return(a=this._tail)===null||a===void 0?void 0:a.value}
    method has (line 15) | has(a){return this._map.has(a)}
    method get (line 15) | get(a,u=0){const c=this._map.get(a);if(c)return u!==0&&this.touch(c,u)...
    method set (line 15) | set(a,u,c=0){let m=this._map.get(a);if(m)m.value=u,c!==0&&this.touch(m...
    method delete (line 15) | delete(a){return!!this.remove(a)}
    method remove (line 15) | remove(a){const u=this._map.get(a);if(u)return this._map.delete(a),thi...
    method shift (line 15) | shift(){if(!this._head&&!this._tail)return;if(!this._head||!this._tail...
    method forEach (line 15) | forEach(a,u){const c=this._state;let m=this._head;for(;m;){if(u?a.bind...
    method keys (line 15) | keys(){const a=this,u=this._state;let c=this._head;const m={[Symbol.it...
    method values (line 15) | values(){const a=this,u=this._state;let c=this._head;const m={[Symbol....
    method entries (line 15) | entries(){const a=this,u=this._state;let c=this._head;const m={[Symbol...
    method trimOld (line 15) | trimOld(a){if(a>=this.size)return;if(a===0){this.clear();return}let u=...
    method addItemFirst (line 15) | addItemFirst(a){if(!this._head&&!this._tail)this._tail=a;else if(this....
    method addItemLast (line 15) | addItemLast(a){if(!this._head&&!this._tail)this._head=a;else if(this._...
    method removeItem (line 15) | removeItem(a){if(a===this._head&&a===this._tail)this._head=void 0,this...
    method touch (line 15) | touch(a,u){if(!this._head||!this._tail)throw new Error("Invalid list")...
    method toJSON (line 15) | toJSON(){const a=[];return this.forEach((u,c)=>{a.push([c,u])}),a}
    method fromJSON (line 15) | fromJSON(a){this.clear();for(const[u,c]of a)this.set(u,c)}
    method Copy (line 17) | static Copy(e,a,u,c,m){for(let f=0;f<m;f++)u[c+f]=e[a+f]}
    method Copy2 (line 17) | static Copy2(e,a,u,c,m){for(let f=0;f<m;f++)u[c+f]=e[a+f]}
    method constructor (line 17) | constructor(o=[]){this._normalizedRanges=o}
    method ranges (line 17) | get ranges(){return this._normalizedRanges}
    method addRange (line 17) | addRange(o){if(o.length===0)return;const C=(0,d.findFirstIdxMonotonous...
    method contains (line 17) | contains(o){const C=(0,d.findLastMonotonous)(this._normalizedRanges,e=...
    method intersects (line 17) | intersects(o){const C=(0,d.findLastMonotonous)(this._normalizedRanges,...
    method getUnion (line 17) | getUnion(o){if(this._normalizedRanges.length===0)return o;if(o._normal...
    method subtractFrom (line 17) | subtractFrom(o){const C=(0,d.findFirstIdxMonotonousOrArrLen)(this._nor...
    method toString (line 17) | toString(){return this._normalizedRanges.map(o=>o.toString()).join(", ")}
    method getIntersection (line 17) | getIntersection(o){const C=[];let e=0,a=0;for(;e<this._normalizedRange...
    method getWithDelta (line 17) | getWithDelta(o){return new L(this._normalizedRanges.map(C=>C.delta(o)))}
    method constructor (line 17) | constructor(e,a){this.offset1=e,this.offset2=a}
    method toString (line 17) | toString(){return`${this.offset1} <-> ${this.offset2}`}
    method constructor (line 17) | constructor(){this.positiveArr=[],this.negativeArr=[]}
    method get (line 17) | get(o){return o<0?(o=-o-1,this.negativeArr[o]):this.positiveArr[o]}
    method set (line 17) | set(o,C){o<0?(o=-o-1,this.negativeArr[o]=C):this.positiveArr[o]=C}
    method constructor (line 19) | constructor(u,c,m){this.lines=u,this.considerWhitespaceChanges=m,this....
    method toString (line 20) | toString(){return`Slice: "${this.text}"`}
    method text (line 20) | get text(){return this.getText(new A.OffsetRange(0,this.length))}
    method getText (line 20) | getText(u){return this.elements.slice(u.start,u.endExclusive).map(c=>S...
    method getElement (line 20) | getElement(u){return this.elements[u]}
    method length (line 20) | get length(){return this.elements.length}
    method getBoundaryScore (line 20) | getBoundaryScore(u){const c=e(u>0?this.elements[u-1]:-1),m=e(u<this.el...
    method translateOffset (line 20) | translateOffset(u){if(this.lineRange.isEmpty)return new i.Position(thi...
    method translateRange (line 20) | translateRange(u){return d.Range.fromPositions(this.translateOffset(u....
    method findWordContaining (line 20) | findWordContaining(u){if(u<0||u>=this.elements.length||!h(this.element...
    method countLinesIn (line 20) | countLinesIn(u){return this.translateOffset(u.endExclusive).lineNumber...
    method isStronglyEqual (line 20) | isStronglyEqual(u,c){return this.elements[u]===this.elements[c]}
    method extendToFullLines (line 20) | extendToFullLines(u){var c,m;const f=(c=(0,M.findLastMonotonous)(this....
    method originalIndentSize (line 21) | get originalIndentSize(){return this._indentSizeIsTabSize?"tabSize":th...
    method constructor (line 21) | constructor(m){this._textModelResolvedOptionsBrand=void 0,this.tabSize...
    method equals (line 21) | equals(m){return this.tabSize===m.tabSize&&this._indentSizeIsTabSize==...
    method createChangeEvent (line 21) | createChangeEvent(m){return{tabSize:this.tabSize!==m.tabSize,indentSiz...
    method computeUnicodeHighlights (line 24) | static computeUnicodeHighlights(a,u,c){const m=c?c.startLineNumber:1,f...
    method computeUnicodeHighlightReason (line 24) | static computeUnicodeHighlightReason(a,u){const c=new o(u);switch(c.sh...
    method constructor (line 25) | constructor(l,p,b){this.offset=l,this.type=p,this.language=b,this._tok...
    method toString (line 25) | toString(){return"("+this.offset+", "+this.type+")"}
  class n (line 8) | class n{constructor(h){let o=h.lastIndexOf("/");o!==-1?this.fromModulePa...
    method isWindows (line 6) | get isWindows(){return this._detect(),this._isWindows}
    method isNode (line 6) | get isNode(){return this._detect(),this._isNode}
    method isElectronRenderer (line 6) | get isElectronRenderer(){return this._detect(),this._isElectronRenderer}
    method isWebWorker (line 6) | get isWebWorker(){return this._detect(),this._isWebWorker}
    method isElectronNodeIntegrationWebWorker (line 6) | get isElectronNodeIntegrationWebWorker(){return this._detect(),this._i...
    method constructor (line 6) | constructor(){this._detected=!1,this._isWindows=!1,this._isNode=!1,thi...
    method _detect (line 6) | _detect(){this._detected||(this._detected=!0,this._isWindows=n._isWind...
    method _isWindows (line 6) | static _isWindows(){return typeof navigator<"u"&&navigator.userAgent&&...
    method constructor (line 6) | constructor(d,g,L){this.type=d,this.detail=g,this.timestamp=L}
    method fileUriToFilePath (line 6) | static fileUriToFilePath(A,i){if(i=decodeURI(i).replace(/%23/g,"#"),A)...
    method startsWith (line 6) | static startsWith(A,i){return A.length>=i.length&&A.substr(0,i.length)...
    method endsWith (line 6) | static endsWith(A,i){return A.length>=i.length&&A.substr(A.length-i.le...
    method containsQueryString (line 6) | static containsQueryString(A){return/^[^\#]*\?/gi.test(A)}
    method isAbsolutePath (line 6) | static isAbsolutePath(A){return/^((http:\/\/)|(https:\/\/)|(file:\/\/)...
    method forEachProperty (line 6) | static forEachProperty(A,i){if(A){let d;for(d in A)A.hasOwnProperty(d)...
    method isEmpty (line 6) | static isEmpty(A){let i=!0;return n.forEachProperty(A,()=>{i=!1}),i}
    method recursiveClone (line 6) | static recursiveClone(A){if(!A||typeof A!="object"||A instanceof RegEx...
    method generateAnonymousModule (line 6) | static generateAnonymousModule(){return"===anonymous"+n.NEXT_ANONYMOUS...
    method isAnonymousModule (line 6) | static isAnonymousModule(A){return n.startsWith(A,"===anonymous")}
    method getHighPerformanceTimestamp (line 6) | static getHighPerformanceTimestamp(){return this.PERFORMANCE_NOW_PROBE...
    method constructor (line 6) | constructor(o){this._env=o,this._scriptLoader=null,this._callbackMap={}}
    method load (line 6) | load(o,C,e,a){if(!this._scriptLoader)if(this._env.isWebWorker)this._sc...
    method triggerCallback (line 6) | triggerCallback(o){let C=this._callbackMap[o];delete this._callbackMap...
    method triggerErrorback (line 6) | triggerErrorback(o,C){let e=this._callbackMap[o];delete this._callback...
    method constructor (line 8) | constructor(h){let o=h.lastIndexOf("/");o!==-1?this.fromModulePath=h.s...
    method _normalizeModuleId (line 8) | static _normalizeModuleId(h){let o=h,C;for(C=/\/\.\//;C.test(o);)o=o.r...
    method resolveModule (line 8) | resolveModule(h){let o=h;return q.Utilities.isAbsolutePath(o)||(q.Util...
  class M (line 8) | class M{constructor(h,o,C,e,a,u){this.id=h,this.strId=o,this.dependencie...
    method constructor (line 6) | constructor(d){this._events=[new n(1,"",d)]}
    method record (line 6) | record(d,g){this._events.push(new n(d,g,q.Utilities.getHighPerformance...
    method getEvents (line 6) | getEvents(){return this._events}
    method validateConfigurationOptions (line 6) | static validateConfigurationOptions(d){function g(L){if(L.phase==="loa...
    method mergeConfigurationOptions (line 6) | static mergeConfigurationOptions(d=null,g=null){let L=q.Utilities.recu...
    method attachListeners (line 6) | attachListeners(o,C,e){let a=()=>{o.removeEventListener("load",u),o.re...
    method load (line 6) | load(o,C,e,a){if(/^node\|/.test(C)){let u=o.getConfig().getOptionsLite...
    method constructor (line 8) | constructor(h,o,C,e,a,u){this.id=h,this.strId=o,this.dependencies=C,th...
    method _safeInvokeFunction (line 8) | static _safeInvokeFunction(h,o){try{return{returnedValue:h.apply(q.glo...
    method _invokeFactory (line 8) | static _invokeFactory(h,o,C,e){return h.shouldInvokeFactory(o)?h.shoul...
    method complete (line 8) | complete(h,o,C,e){this._isComplete=!0;let a=null;if(this._callback)if(...
    method onDependencyError (line 8) | onDependencyError(h){return this._isComplete=!0,this.error=h,this._err...
    method isComplete (line 8) | isComplete(){return this._isComplete}
    method constructor (line 11) | constructor(d){this.fn=d,this.lastCache=void 0,this.lastArgKey=void 0}
    method get (line 11) | get(d){const g=JSON.stringify(d);return this.lastArgKey!==g&&(this.las...
    method constructor (line 11) | constructor(i,d,g,L){this.originalStart=i,this.originalLength=d,this.m...
    method getOriginalEnd (line 11) | getOriginalEnd(){return this.originalStart+this.originalLength}
    method getModifiedEnd (line 11) | getModifiedEnd(){return this.modifiedStart+this.modifiedLength}
    method constructor (line 11) | constructor(){this.listeners=[],this.unexpectedErrorHandler=function(f...
    method emit (line 15) | emit(f){this.listeners.forEach(S=>{S(f)})}
    method onUnexpectedError (line 15) | onUnexpectedError(f){this.unexpectedErrorHandler(f),this.emit(f)}
    method onUnexpectedExternalError (line 15) | onUnexpectedExternalError(f){this.unexpectedErrorHandler(f)}
    method constructor (line 15) | constructor(){this._keyCodeToStr=[],this._strToKeyCode=Object.create(n...
    method define (line 15) | define(a,u){this._keyCodeToStr[a]=u,this._strToKeyCode[u.toLowerCase()...
    method keyCodeToStr (line 15) | keyCodeToStr(a){return this._keyCodeToStr[a]}
    method strToKeyCode (line 15) | strToKeyCode(a){return this._strToKeyCode[a.toLowerCase()]||0}
    method constructor (line 15) | constructor(i){this.executor=i,this._didRun=!1}
    method value (line 15) | get value(){if(!this._didRun)try{this._value=this.executor()}catch(i){...
    method rawValue (line 15) | get rawValue(){return this._value}
    method constructor (line 15) | constructor(d){this.element=d,this.next=M.Undefined,this.prev=M.Undefi...
    method constructor (line 17) | constructor(i,d){this.lineNumber=i,this.column=d}
    method with (line 17) | with(i=this.lineNumber,d=this.column){return i===this.lineNumber&&d===...
    method delta (line 17) | delta(i=0,d=0){return this.with(this.lineNumber+i,this.column+d)}
    method equals (line 17) | equals(i){return M.equals(this,i)}
    method equals (line 17) | static equals(i,d){return!i&&!d?!0:!!i&&!!d&&i.lineNumber===d.lineNumb...
    method isBefore (line 17) | isBefore(i){return M.isBefore(this,i)}
    method isBefore (line 17) | static isBefore(i,d){return i.lineNumber<d.lineNumber?!0:d.lineNumber<...
    method isBeforeOrEqual (line 17) | isBeforeOrEqual(i){return M.isBeforeOrEqual(this,i)}
    method isBeforeOrEqual (line 17) | static isBeforeOrEqual(i,d){return i.lineNumber<d.lineNumber?!0:d.line...
    method compare (line 17) | static compare(i,d){const g=i.lineNumber|0,L=d.lineNumber|0;if(g===L){...
    method clone (line 17) | clone(){return new M(this.lineNumber,this.column)}
    method toString (line 17) | toString(){return"("+this.lineNumber+","+this.column+")"}
    method lift (line 17) | static lift(i){return new M(i.lineNumber,i.column)}
    method isIPosition (line 17) | static isIPosition(i){return i&&typeof i.lineNumber=="number"&&typeof ...
    method toJSON (line 17) | toJSON(){return{lineNumber:this.lineNumber,column:this.column}}
    method constructor (line 17) | constructor(d,g){this.trimmedHash=d,this.lines=g}
    method getElement (line 17) | getElement(d){return this.trimmedHash[d]}
    method length (line 17) | get length(){return this.trimmedHash.length}
    method getBoundaryScore (line 17) | getBoundaryScore(d){const g=d===0?0:A(this.lines[d-1]),L=d===this.line...
    method getText (line 17) | getText(d){return this.lines.slice(d.start,d.endExclusive).join(`
    method isStronglyEqual (line 18) | isStronglyEqual(d,g){return this.lines[d]===this.lines[g]}
    method constructor (line 18) | constructor(g,L){this.width=g,this.height=L,this.array=[],this.array=n...
    method get (line 18) | get(g,L){return this.array[g+L*this.width]}
    method set (line 18) | set(g,L,h){this.array[g+L*this.width]=h}
    method constructor (line 20) | constructor(d,g,L){this.changes=d,this.moves=g,this.hitTimeout=L}
    method constructor (line 21) | constructor(){this._defaultValueSet=[["true","false"],["True","False"]...
    method navigateValueSet (line 21) | navigateValueSet(i,d,g,L,h){if(i&&d){const o=this.doNavigateValueSet(d...
    method doNavigateValueSet (line 21) | doNavigateValueSet(i,d){const g=this.numberReplace(i,d);return g!==nul...
    method numberReplace (line 21) | numberReplace(i,d){const g=Math.pow(10,i.length-(i.lastIndexOf(".")+1)...
    method textReplace (line 21) | textReplace(i,d){return this.valueSetsReplace(this._defaultValueSet,i,d)}
    method valueSetsReplace (line 21) | valueSetsReplace(i,d,g){let L=null;for(let h=0,o=i.length;L===null&&h<...
    method valueSetReplace (line 21) | valueSetReplace(i,d,g){let L=i.indexOf(d);return L>=0?(L+=g?1:-1,L<0?L...
  class A (line 8) | class A{constructor(){this._nextId=0,this._strModuleIdToIntModuleId=new ...
    method record (line 6) | record(d,g){}
    method getEvents (line 6) | getEvents(){return[]}
    method constructor (line 6) | constructor(d,g){if(this._env=d,this.options=M.mergeConfigurationOptio...
    method _createIgnoreDuplicateModulesMap (line 6) | _createIgnoreDuplicateModulesMap(){this.ignoreDuplicateModulesMap={};f...
    method _createSortedPathsRules (line 6) | _createSortedPathsRules(){this.sortedPathsRules=[],q.Utilities.forEach...
    method cloneAndMerge (line 6) | cloneAndMerge(d){return new A(this._env,M.mergeConfigurationOptions(d,...
    method getOptionsLiteral (line 6) | getOptionsLiteral(){return this.options}
    method _applyPaths (line 6) | _applyPaths(d){let g;for(let L=0,h=this.sortedPathsRules.length;L<h;L+...
    method _addUrlArgsToUrl (line 6) | _addUrlArgsToUrl(d){return q.Utilities.containsQueryString(d)?d+"&"+th...
    method _addUrlArgsIfNecessaryToUrl (line 6) | _addUrlArgsIfNecessaryToUrl(d){return this.options.urlArgs?this._addUr...
    method _addUrlArgsIfNecessaryToUrls (line 6) | _addUrlArgsIfNecessaryToUrls(d){if(this.options.urlArgs)for(let g=0,L=...
    method moduleIdToPaths (line 6) | moduleIdToPaths(d){if(this._env.isNode&&this.options.amdModulesPattern...
    method requireToUrl (line 6) | requireToUrl(d){let g=d;return q.Utilities.isAbsolutePath(g)||(g=this....
    method isBuild (line 6) | isBuild(){return this.options.isBuild}
    method shouldInvokeFactory (line 6) | shouldInvokeFactory(d){return!!(!this.options.isBuild||q.Utilities.isA...
    method isDuplicateMessageIgnoredFor (line 6) | isDuplicateMessageIgnoredFor(d){return this.ignoreDuplicateModulesMap....
    method getConfigForModule (line 6) | getConfigForModule(d){if(this.options.config)return this.options.confi...
    method shouldCatchError (line 6) | shouldCatchError(){return this.options.catchError}
    method shouldRecordStats (line 6) | shouldRecordStats(){return this.options.recordStats}
    method onError (line 6) | onError(d){this.options.onError(d)}
    method constructor (line 8) | constructor(){this._nextId=0,this._strModuleIdToIntModuleId=new Map,th...
    method getMaxModuleId (line 8) | getMaxModuleId(){return this._nextId}
    method getModuleId (line 8) | getModuleId(h){let o=this._strModuleIdToIntModuleId.get(h);return type...
    method getStrModuleId (line 8) | getStrModuleId(h){return this._intModuleIdToStrModuleId[h]}
    method cachedValues (line 11) | get cachedValues(){return this._map}
    method constructor (line 11) | constructor(d){this.fn=d,this._map=new Map}
    method get (line 11) | get(d){if(this._map.has(d))return this._map.get(d);const g=this.fn(d);...
    method constructor (line 11) | constructor(h,o,C,e=1){this._rgbaBrand=void 0,this.r=Math.min(255,Math...
    method equals (line 11) | static equals(h,o){return h.r===o.r&&h.g===o.g&&h.b===o.b&&h.a===o.a}
    method constructor (line 15) | constructor(){this._first=M.Undefined,this._last=M.Undefined,this._siz...
    method size (line 15) | get size(){return this._size}
    method isEmpty (line 15) | isEmpty(){return this._first===M.Undefined}
    method clear (line 15) | clear(){let d=this._first;for(;d!==M.Undefined;){const g=d.next;d.prev...
    method unshift (line 15) | unshift(d){return this._insert(d,!1)}
    method push (line 15) | push(d){return this._insert(d,!0)}
    method _insert (line 15) | _insert(d,g){const L=new M(d);if(this._first===M.Undefined)this._first...
    method shift (line 15) | shift(){if(this._first!==M.Undefined){const d=this._first.element;retu...
    method pop (line 15) | pop(){if(this._last!==M.Undefined){const d=this._last.element;return t...
    method _remove (line 15) | _remove(d){if(d.prev!==M.Undefined&&d.next!==M.Undefined){const g=d.pr...
    method create (line 15) | static create(d){return new A(d)}
    method constructor (line 15) | constructor(d){this._now=M&&d===!1?Date.now:globalThis.performance.now...
    method stop (line 15) | stop(){this._stopTime=this._now()}
    method elapsed (line 15) | elapsed(){return this._stopTime!==-1?this._stopTime-this._startTime:th...
    method constructor (line 17) | constructor(g){const L=(0,M.toUint8)(g);this._defaultValue=L,this._asc...
    method _createAsciiMap (line 17) | static _createAsciiMap(g){const L=new Uint8Array(256);return L.fill(g),L}
    method set (line 17) | set(g,L){const h=(0,M.toUint8)(L);g>=0&&g<256?this._asciiMap[g]=h:this...
    method get (line 17) | get(g){return g>=0&&g<256?this._asciiMap[g]:this._map.get(g)||this._de...
    method clear (line 17) | clear(){this._asciiMap.fill(this._defaultValue),this._map.clear()}
    method addRange (line 17) | static addRange(g,L){let h=0;for(;h<L.length&&L[h].endExclusive<g.star...
    method tryCreate (line 17) | static tryCreate(g,L){if(!(g>L))return new A(g,L)}
    method ofLength (line 17) | static ofLength(g){return new A(0,g)}
    method ofStartAndLength (line 17) | static ofStartAndLength(g,L){return new A(g,g+L)}
    method constructor (line 17) | constructor(g,L){if(this.start=g,this.endExclusive=L,g>L)throw new M.B...
    method isEmpty (line 17) | get isEmpty(){return this.start===this.endExclusive}
    method delta (line 17) | delta(g){return new A(this.start+g,this.endExclusive+g)}
    method deltaStart (line 17) | deltaStart(g){return new A(this.start+g,this.endExclusive)}
    method deltaEnd (line 17) | deltaEnd(g){return new A(this.start,this.endExclusive+g)}
    method length (line 17) | get length(){return this.endExclusive-this.start}
    method toString (line 17) | toString(){return`[${this.start}, ${this.endExclusive})`}
    method equals (line 17) | equals(g){return this.start===g.start&&this.endExclusive===g.endExclus...
    method containsRange (line 17) | containsRange(g){return this.start<=g.start&&g.endExclusive<=this.endE...
    method contains (line 17) | contains(g){return this.start<=g&&g<this.endExclusive}
    method join (line 17) | join(g){return new A(Math.min(this.start,g.start),Math.max(this.endExc...
    method intersect (line 17) | intersect(g){const L=Math.max(this.start,g.start),h=Math.min(this.endE...
    method isBefore (line 17) | isBefore(g){return this.endExclusive<=g.start}
    method isAfter (line 17) | isAfter(g){return this.start>=g.endExclusive}
    method slice (line 17) | slice(g){return g.slice(this.start,this.endExclusive)}
    method clip (line 17) | clip(g){if(this.isEmpty)throw new M.BugIndicatingError(`Invalid clippi...
    method clipCyclic (line 17) | clipCyclic(g){if(this.isEmpty)throw new M.BugIndicatingError(`Invalid ...
    method forEach (line 17) | forEach(g){for(let L=this.start;L<this.endExclusive;L++)g(L)}
    method constructor (line 17) | constructor(d,g,L,h){d>L||d===L&&g>h?(this.startLineNumber=L,this.star...
    method isEmpty (line 17) | isEmpty(){return A.isEmpty(this)}
    method isEmpty (line 17) | static isEmpty(d){return d.startLineNumber===d.endLineNumber&&d.startC...
    method containsPosition (line 17) | containsPosition(d){return A.containsPosition(this,d)}
    method containsPosition (line 17) | static containsPosition(d,g){return!(g.lineNumber<d.startLineNumber||g...
    method strictContainsPosition (line 17) | static strictContainsPosition(d,g){return!(g.lineNumber<d.startLineNum...
    method containsRange (line 17) | containsRange(d){return A.containsRange(this,d)}
    method containsRange (line 17) | static containsRange(d,g){return!(g.startLineNumber<d.startLineNumber|...
    method strictContainsRange (line 17) | strictContainsRange(d){return A.strictContainsRange(this,d)}
    method strictContainsRange (line 17) | static strictContainsRange(d,g){return!(g.startLineNumber<d.startLineN...
    method plusRange (line 17) | plusRange(d){return A.plusRange(this,d)}
    method plusRange (line 17) | static plusRange(d,g){let L,h,o,C;return g.startLineNumber<d.startLine...
    method intersectRanges (line 17) | intersectRanges(d){return A.intersectRanges(this,d)}
    method intersectRanges (line 17) | static intersectRanges(d,g){let L=d.startLineNumber,h=d.startColumn,o=...
    method equalsRange (line 17) | equalsRange(d){return A.equalsRange(this,d)}
    method equalsRange (line 17) | static equalsRange(d,g){return!d&&!g?!0:!!d&&!!g&&d.startLineNumber===...
    method getEndPosition (line 17) | getEndPosition(){return A.getEndPosition(this)}
    method getEndPosition (line 17) | static getEndPosition(d){return new M.Position(d.endLineNumber,d.endCo...
    method getStartPosition (line 17) | getStartPosition(){return A.getStartPosition(this)}
    method getStartPosition (line 17) | static getStartPosition(d){return new M.Position(d.startLineNumber,d.s...
    method toString (line 17) | toString(){return"["+this.startLineNumber+","+this.startColumn+" -> "+...
    method setEndPosition (line 17) | setEndPosition(d,g){return new A(this.startLineNumber,this.startColumn...
    method setStartPosition (line 17) | setStartPosition(d,g){return new A(d,g,this.endLineNumber,this.endColu...
    method collapseToStart (line 17) | collapseToStart(){return A.collapseToStart(this)}
    method collapseToStart (line 17) | static collapseToStart(d){return new A(d.startLineNumber,d.startColumn...
    method collapseToEnd (line 17) | collapseToEnd(){return A.collapseToEnd(this)}
    method collapseToEnd (line 17) | static collapseToEnd(d){return new A(d.endLineNumber,d.endColumn,d.end...
    method delta (line 17) | delta(d){return new A(this.startLineNumber+d,this.startColumn,this.end...
    method fromPositions (line 17) | static fromPositions(d,g=d){return new A(d.lineNumber,d.column,g.lineN...
    method lift (line 17) | static lift(d){return d?new A(d.startLineNumber,d.startColumn,d.endLin...
    method isIRange (line 17) | static isIRange(d){return d&&typeof d.startLineNumber=="number"&&typeo...
    method areIntersectingOrTouching (line 17) | static areIntersectingOrTouching(d,g){return!(d.endLineNumber<g.startL...
    method areIntersecting (line 17) | static areIntersecting(d,g){return!(d.endLineNumber<g.startLineNumber|...
    method compareRangesUsingStarts (line 17) | static compareRangesUsingStarts(d,g){if(d&&g){const o=d.startLineNumbe...
    method compareRangesUsingEnds (line 17) | static compareRangesUsingEnds(d,g){return d.endLineNumber===g.endLineN...
    method spansMultipleLines (line 17) | static spansMultipleLines(d){return d.endLineNumber>d.startLineNumber}
    method toJSON (line 17) | toJSON(){return this}
    method constructor (line 17) | constructor(g){super(0);for(let L=0,h=g.length;L<h;L++)this.set(g.char...
    method constructor (line 20) | constructor(d,g){this.lineRangeMapping=d,this.changes=g}
    method inverse (line 20) | static inverse(L,h,o){const C=[];let e=1,a=1;for(const c of L){const m...
    method constructor (line 20) | constructor(L,h){this.original=L,this.modified=h}
    method toString (line 20) | toString(){return`{${this.original.toString()}->${this.modified.toStri...
    method flip (line 20) | flip(){return new A(this.modified,this.original)}
    method join (line 20) | join(L){return new A(this.original.join(L.original),this.modified.join...
    method constructor (line 21) | constructor(a,u,c){const m=new Uint8Array(a*u);for(let f=0,S=a*u;f<S;f...
    method get (line 21) | get(a,u){return this._data[a*this.cols+u]}
    method set (line 21) | set(a,u,c){this._data[a*this.cols+u]=c}
  class i (line 8) | class i{constructor(h){this.id=h}}
    method constructor (line 6) | constructor(){this._cachedCanUseEval=null}
    method _canUseEval (line 6) | _canUseEval(o){return this._cachedCanUseEval===null&&(this._cachedCanU...
    method load (line 6) | load(o,C,e,a){if(/^node\|/.test(C)){const u=o.getConfig().getOptionsLi...
    method constructor (line 8) | constructor(h){this.id=h}
    method constructor (line 11) | constructor(h,o,C,e){this._hslaBrand=void 0,this.h=Math.max(Math.min(3...
    method equals (line 11) | static equals(h,o){return h.h===o.h&&h.s===o.s&&h.l===o.l&&h.a===o.a}
    method fromRGBA (line 11) | static fromRGBA(h){const o=h.r/255,C=h.g/255,e=h.b/255,a=h.a,u=Math.ma...
    method _hue2rgb (line 11) | static _hue2rgb(h,o,C){return C<0&&(C+=1),C>1&&(C-=1),C<1/6?h+(o-h)*6*...
    method toRGBA (line 11) | static toRGBA(h){const o=h.h/360,{s:C,l:e,a}=h;let u,c,m;if(C===0)u=c=...
    method constructor (line 15) | constructor(a,u){this.uri=a,this.value=u}
    method constructor (line 17) | constructor(e){this.source=e}
    method getElements (line 17) | getElements(){const e=this.source,a=new Int32Array(e.length);for(let u...
    method constructor (line 17) | constructor(){this._actual=new A(0)}
    method add (line 17) | add(g){this._actual.set(g,1)}
    method has (line 17) | has(g){return this._actual.get(g)===1}
    method clear (line 17) | clear(){return this._actual.clear()}
    method constructor (line 17) | constructor(){this._sortedRanges=[]}
    method addRange (line 17) | addRange(g){let L=0;for(;L<this._sortedRanges.length&&this._sortedRang...
    method toString (line 17) | toString(){return this._sortedRanges.map(g=>g.toString()).join(", ")}
    method intersectsStrict (line 17) | intersectsStrict(g){let L=0;for(;L<this._sortedRanges.length&&this._so...
    method intersectWithRange (line 17) | intersectWithRange(g){const L=new i;for(const h of this._sortedRanges)...
    method intersectWithRangeLength (line 17) | intersectWithRangeLength(g){return this.intersectWithRange(g).length}
    method length (line 17) | get length(){return this._sortedRanges.reduce((g,L)=>g+L.length,0)}
    method constructor (line 17) | constructor(g,L,h,o){super(g,L,h,o),this.selectionStartLineNumber=g,th...
    method toString (line 17) | toString(){return"["+this.selectionStartLineNumber+","+this.selectionS...
    method equalsSelection (line 17) | equalsSelection(g){return i.selectionsEqual(this,g)}
    method selectionsEqual (line 17) | static selectionsEqual(g,L){return g.selectionStartLineNumber===L.sele...
    method getDirection (line 17) | getDirection(){return this.selectionStartLineNumber===this.startLineNu...
    method setEndPosition (line 17) | setEndPosition(g,L){return this.getDirection()===0?new i(this.startLin...
    method getPosition (line 17) | getPosition(){return new M.Position(this.positionLineNumber,this.posit...
    method getSelectionStart (line 17) | getSelectionStart(){return new M.Position(this.selectionStartLineNumbe...
    method setStartPosition (line 17) | setStartPosition(g,L){return this.getDirection()===0?new i(g,L,this.en...
    method fromPositions (line 17) | static fromPositions(g,L=g){return new i(g.lineNumber,g.column,L.lineN...
    method fromRange (line 17) | static fromRange(g,L){return L===0?new i(g.startLineNumber,g.startColu...
    method liftSelection (line 17) | static liftSelection(g){return new i(g.selectionStartLineNumber,g.sele...
    method selectionsArrEqual (line 17) | static selectionsArrEqual(g,L){if(g&&!L||!g&&L)return!1;if(!g&&!L)retu...
    method isISelection (line 17) | static isISelection(g){return g&&typeof g.selectionStartLineNumber=="n...
    method createWithDirection (line 17) | static createWithDirection(g,L,h,o,C){return C===0?new i(g,L,h,o):new ...
    method compute (line 17) | compute(o,C,e=A.InfiniteTimeout.instance){if(o.length===0||C.length===...
    method getKey (line 18) | static getKey(g){let L=this.chrKeys.get(g);return L===void 0&&(L=this....
    method constructor (line 18) | constructor(g,L,h){this.range=g,this.lines=L,this.source=h,this.histog...
    method computeSimilarity (line 19) | computeSimilarity(g){var L,h;let o=0;const C=Math.max(this.histogram.l...
    method constructor (line 20) | constructor(L,h,o){super(L,h),this.innerChanges=o}
    method flip (line 20) | flip(){var L;return new i(this.modified,this.original,(L=this.innerCha...
    method constructor (line 21) | constructor(a){let u=0,c=0;for(let f=0,S=a.length;f<S;f++){const[w,E,y...
    method nextState (line 21) | nextState(a,u){return u<0||u>=this._maxCharCode?0:this._states.get(a,u)}
    method constructor (line 21) | constructor(h){this.values=h,this.prefixSum=new Uint32Array(h.length),...
    method insertValues (line 21) | insertValues(h,o){h=(0,A.toUint32)(h);const C=this.values,e=this.prefi...
    method setValue (line 21) | setValue(h,o){return h=(0,A.toUint32)(h),o=(0,A.toUint32)(o),this.valu...
    method removeValues (line 21) | removeValues(h,o){h=(0,A.toUint32)(h),o=(0,A.toUint32)(o);const C=this...
    method getTotalSum (line 21) | getTotalSum(){return this.values.length===0?0:this._getPrefixSum(this....
    method getPrefixSum (line 21) | getPrefixSum(h){return h<0?0:(h=(0,A.toUint32)(h),this._getPrefixSum(h))}
    method _getPrefixSum (line 21) | _getPrefixSum(h){if(h<=this.prefixSumValidIndex[0])return this.prefixS...
    method getIndexOf (line 21) | getIndexOf(h){h=Math.floor(h),this.getTotalSum();let o=0,C=this.values...
    method constructor (line 25) | constructor(){this._tokenizationSupports=new Map,this._factories=new M...
    method handleChange (line 25) | handleChange(L){this._onDidChange.fire({changedLanguages:L,changedColo...
    method register (line 25) | register(L,h){return this._tokenizationSupports.set(L,h),this.handleCh...
    method get (line 25) | get(L){return this._tokenizationSupports.get(L)||null}
    method registerFactory (line 25) | registerFactory(L,h){var o;(o=this._factories.get(L))===null||o===void...
    method getOrCreate (line 25) | async getOrCreate(L){const h=this.get(L);if(h)return h;const o=this._f...
    method isResolved (line 25) | isResolved(L){if(this.get(L))return!0;const o=this._factories.get(L);r...
    method setColorMap (line 25) | setColorMap(L){this._colorMap=L,this._onDidChange.fire({changedLanguag...
    method getColorMap (line 25) | getColorMap(){return this._colorMap}
    method getDefaultBackground (line 25) | getDefaultBackground(){return this._colorMap&&this._colorMap.length>2?...
  class d (line 8) | class d{constructor(h,o,C){this.id=h,this.pluginId=o,this.pluginParam=C}}
    method constructor (line 7) | constructor(o){this._env=o,this._didInitialize=!1,this._didPatchNodeRe...
    method _init (line 7) | _init(o){this._didInitialize||(this._didInitialize=!0,this._fs=o("fs")...
    method _initNodeRequire (line 7) | _initNodeRequire(o,C){const{nodeCachedData:e}=C.getConfig().getOptions...
    method load (line 7) | load(o,C,e,a){const u=o.getConfig().getOptionsLiteral(),c=g(o.getRecor...
    method _createAndEvalScript (line 7) | _createAndEvalScript(o,C,e,a,u){const c=o.getRecorder();c.record(31,e....
    method _getElectronRendererScriptPathOrUri (line 7) | _getElectronRendererScriptPathOrUri(o){if(!this._env.isElectronRendere...
    method _getCachedDataPath (line 7) | _getCachedDataPath(o,C){const e=this._crypto.createHash("md5").update(...
    method _handleCachedData (line 7) | _handleCachedData(o,C,e,a,u){o.cachedDataRejected?this._fs.unlink(e,c=...
    method _createAndWriteCachedData (line 7) | _createAndWriteCachedData(o,C,e,a){let u=Math.ceil(a.getConfig().getOp...
    method _readSourceAndCachedData (line 7) | _readSourceAndCachedData(o,C,e,a){if(!C)this._fs.readFile(o,{encoding:...
    method _verifyCachedData (line 7) | _verifyCachedData(o,C,e,a,u){a&&(o.cachedDataRejected||setTimeout(()=>...
    method constructor (line 8) | constructor(h,o,C){this.id=h,this.pluginId=o,this.pluginParam=C}
    method constructor (line 11) | constructor(h,o,C,e){this._hsvaBrand=void 0,this.h=Math.max(Math.min(3...
    method equals (line 11) | static equals(h,o){return h.h===o.h&&h.s===o.s&&h.v===o.v&&h.a===o.a}
    method fromRGBA (line 11) | static fromRGBA(h){const o=h.r/255,C=h.g/255,e=h.b/255,a=Math.max(o,C,...
    method toRGBA (line 11) | static toRGBA(h){const{h:o,s:C,v:e,a}=h,u=e*C,c=u*(1-Math.abs(o/60%2-1...
    method constructor (line 17) | constructor(){this._isCancelled=!1,this._emitter=null}
    method cancel (line 17) | cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this...
    method isCancellationRequested (line 17) | get isCancellationRequested(){return this._isCancelled}
    method onCancellationRequested (line 17) | get onCancellationRequested(){return this._isCancelled?A:(this._emitte...
    method dispose (line 17) | dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=null)}
    method trivial (line 17) | static trivial(e,a){return new d([new g(i.OffsetRange.ofLength(e.lengt...
    method trivialTimedOut (line 17) | static trivialTimedOut(e,a){return new d([new g(i.OffsetRange.ofLength...
    method constructor (line 17) | constructor(e,a){this.diffs=e,this.hitTimeout=a}
    method constructor (line 17) | constructor(o,C,e,a){this.prev=o,this.x=C,this.y=e,this.length=a}
    method compute (line 19) | compute(L,h,o=A.InfiniteTimeout.instance,C){if(L.length===0||h.length=...
    method constructor (line 20) | constructor(L,h){this.originalRange=L,this.modifiedRange=h}
    method toString (line 20) | toString(){return`{${this.originalRange.toString()}->${this.modifiedRa...
    method flip (line 20) | flip(){return new d(this.modifiedRange,this.originalRange)}
    method constructor (line 21) | constructor(h){this._values=h,this._isValid=!1,this._validEndIndex=-1,...
    method getTotalSum (line 21) | getTotalSum(){return this._ensureValid(),this._indexBySum.length}
    method getPrefixSum (line 21) | getPrefixSum(h){return this._ensureValid(),h===0?0:this._prefixSum[h-1]}
    method getIndexOf (line 21) | getIndexOf(h){this._ensureValid();const o=this._indexBySum[h],C=o>0?th...
    method removeValues (line 21) | removeValues(h,o){this._values.splice(h,o),this._invalidate(h)}
    method insertValues (line 21) | insertValues(h,o){this._values=(0,M.arrayInsert)(this._values,h,o),thi...
    method _invalidate (line 21) | _invalidate(h){this._isValid=!1,this._validEndIndex=Math.min(this._val...
    method _ensureValid (line 21) | _ensureValid(){if(!this._isValid){for(let h=this._validEndIndex+1,o=th...
    method setValue (line 21) | setValue(h,o){this._values[h]!==o&&(this._values[h]=o,this._invalidate...
    method constructor (line 21) | constructor(L,h,o,C){this._uri=L,this._lines=h,this._eol=o,this._versi...
    method dispose (line 21) | dispose(){this._lines.length=0}
    method version (line 21) | get version(){return this._versionId}
    method getText (line 21) | getText(){return this._cachedTextValue===null&&(this._cachedTextValue=...
    method onEvents (line 21) | onEvents(L){L.eol&&L.eol!==this._eol&&(this._eol=L.eol,this._lineStart...
    method _ensureLineStarts (line 21) | _ensureLineStarts(){if(!this._lineStarts){const L=this._eol.length,h=t...
    method _setLineText (line 21) | _setLineText(L,h){this._lines[L]=h,this._lineStarts&&this._lineStarts....
    method _acceptDeleteRange (line 21) | _acceptDeleteRange(L){if(L.startLineNumber===L.endLineNumber){if(L.sta...
    method _acceptInsertText (line 21) | _acceptInsertText(L,h){if(h.length===0)return;const o=(0,M.splitLines)...
    method isResolved (line 25) | get isResolved(){return this._isResolved}
    method constructor (line 25) | constructor(L,h,o){super(),this._registry=L,this._languageId=h,this._f...
    method dispose (line 25) | dispose(){this._isDisposed=!0,super.dispose()}
    method resolve (line 25) | async resolve(){return this._resolvePromise||(this._resolvePromise=thi...
    method _create (line 25) | async _create(){const L=await this._factory.tokenizationSupport;this._...
  class g (line 8) | class g{constructor(h,o,C,e,a=0){this._env=h,this._scriptLoader=o,this._...
    method constructor (line 8) | constructor(h,o,C,e,a=0){this._env=h,this._scriptLoader=o,this._loader...
    method reset (line 8) | reset(){return new g(this._env,this._scriptLoader,this._defineFunc,thi...
    method getGlobalAMDDefineFunc (line 8) | getGlobalAMDDefineFunc(){return this._defineFunc}
    method getGlobalAMDRequireFunc (line 8) | getGlobalAMDRequireFunc(){return this._requireFunc}
    method _findRelevantLocationInStack (line 8) | static _findRelevantLocationInStack(h,o){let C=u=>u.replace(/\\/g,"/")...
    method getBuildInfo (line 8) | getBuildInfo(){if(!this._config.isBuild())return null;let h=[],o=0;for...
    method getRecorder (line 8) | getRecorder(){return this._recorder||(this._config.shouldRecordStats()...
    method getLoaderEvents (line 8) | getLoaderEvents(){return this.getRecorder().getEvents()}
    method enqueueDefineAnonymousModule (line 8) | enqueueDefineAnonymousModule(h,o){if(this._currentAnonymousDefineCall!...
    method defineModule (line 8) | defineModule(h,o,C,e,a,u=new n(h)){let c=this._moduleIdProvider.getMod...
    method _normalizeDependency (line 8) | _normalizeDependency(h,o){if(h==="exports")return i.EXPORTS;if(h==="mo...
    method _normalizeDependencies (line 8) | _normalizeDependencies(h,o){let C=[],e=0;for(let a=0,u=h.length;a<u;a+...
    method _relativeRequire (line 8) | _relativeRequire(h,o,C,e){if(typeof o=="string")return this.synchronou...
    method synchronousRequire (line 8) | synchronousRequire(h,o=new n(h)){let C=this._normalizeDependency(h,o),...
    method configure (line 8) | configure(h,o){let C=this._config.shouldRecordStats();o?this._config=n...
    method getConfig (line 8) | getConfig(){return this._config}
    method _onLoad (line 8) | _onLoad(h){if(this._currentAnonymousDefineCall!==null){let o=this._cur...
    method _createLoadError (line 8) | _createLoadError(h,o){let C=this._moduleIdProvider.getStrModuleId(h),e...
    method _onLoadError (line 8) | _onLoadError(h,o){const C=this._createLoadError(h,o);this._modules2[h]...
    method _hasDependencyPath (line 8) | _hasDependencyPath(h,o){let C=this._modules2[h];if(!C)return!1;let e=[...
    method _findCyclePath (line 8) | _findCyclePath(h,o,C){if(h===o||C===50)return[h];let e=this._modules2[...
    method _createRequire (line 8) | _createRequire(h){let o=(C,e,a)=>this._relativeRequire(h,C,e,a);return...
    method _loadModule (line 8) | _loadModule(h){if(this._modules2[h]||this._knownModules2[h])return;thi...
    method _loadPluginDependency (line 8) | _loadPluginDependency(h,o){if(this._modules2[o.id]||this._knownModules...
    method _resolve (line 8) | _resolve(h){let o=h.dependencies;if(o)for(let C=0,e=o.length;C<e;C++){...
    method _onModuleComplete (line 9) | _onModuleComplete(h){let o=this.getRecorder();if(h.isComplete())return...
    method fromHex (line 11) | static fromHex(h){return g.Format.CSS.parseHex(h)||g.red}
    method equals (line 11) | static equals(h,o){return!h&&!o?!0:!h||!o?!1:h.equals(o)}
    method hsla (line 11) | get hsla(){return this._hsla?this._hsla:i.fromRGBA(this.rgba)}
    method hsva (line 11) | get hsva(){return this._hsva?this._hsva:d.fromRGBA(this.rgba)}
    method constructor (line 11) | constructor(h){if(h)if(h instanceof A)this.rgba=h;else if(h instanceof...
    method equals (line 11) | equals(h){return!!h&&A.equals(this.rgba,h.rgba)&&i.equals(this.hsla,h....
    method getRelativeLuminance (line 11) | getRelativeLuminance(){const h=g._relativeLuminanceForComponent(this.r...
    method _relativeLuminanceForComponent (line 11) | static _relativeLuminanceForComponent(h){const o=h/255;return o<=.0392...
    method isLighter (line 11) | isLighter(){return(this.rgba.r*299+this.rgba.g*587+this.rgba.b*114)/1e...
    method isLighterThan (line 11) | isLighterThan(h){const o=this.getRelativeLuminance(),C=h.getRelativeLu...
    method isDarkerThan (line 11) | isDarkerThan(h){const o=this.getRelativeLuminance(),C=h.getRelativeLum...
    method lighten (line 11) | lighten(h){return new g(new i(this.hsla.h,this.hsla.s,this.hsla.l+this...
    method darken (line 11) | darken(h){return new g(new i(this.hsla.h,this.hsla.s,this.hsla.l-this....
    method transparent (line 11) | transparent(h){const{r:o,g:C,b:e,a}=this.rgba;return new g(new A(o,C,e...
    method isTransparent (line 11) | isTransparent(){return this.rgba.a===0}
    method isOpaque (line 11) | isOpaque(){return this.rgba.a===1}
    method opposite (line 11) | opposite(){return new g(new A(255-this.rgba.r,255-this.rgba.g,255-this...
    method makeOpaque (line 11) | makeOpaque(h){if(this.isOpaque()||h.rgba.a!==1)return this;const{r:o,g...
    method toString (line 11) | toString(){return this._toString||(this._toString=g.Format.CSS.format(...
    method getLighterColor (line 11) | static getLighterColor(h,o,C){if(h.isLighterThan(o))return h;C=C||.5;c...
    method getDarkerColor (line 11) | static getDarkerColor(h,o,C){if(h.isDarkerThan(o))return h;C=C||.5;con...
    method constructor (line 15) | constructor(a,u){if(this[M]="ResourceMap",a instanceof g)this.map=new ...
    method set (line 15) | set(a,u){return this.map.set(this.toKey(a),new i(a,u)),this}
    method get (line 15) | get(a){var u;return(u=this.map.get(this.toKey(a)))===null||u===void 0?...
    method has (line 15) | has(a){return this.map.has(this.toKey(a))}
    method size (line 15) | get size(){return this.map.size}
    method clear (line 15) | clear(){this.map.clear()}
    method delete (line 15) | delete(a){return this.map.delete(this.toKey(a))}
    method forEach (line 15) | forEach(a,u){typeof u<"u"&&(a=a.bind(u));for(const[c,m]of this.map)a(m...
    method values (line 15) | *values(){for(const a of this.map.values())yield a.value}
    method keys (line 15) | *keys(){for(const a of this.map.values())yield a.uri}
    method entries (line 15) | *entries(){for(const a of this.map.values())yield[a.uri,a.value]}
    method constructor (line 17) | constructor(h){this._token=void 0,this._parentListener=void 0,this._pa...
    method token (line 17) | get token(){return this._token||(this._token=new d),this._token}
    method cancel (line 17) | cancel(){this._token?this._token instanceof d&&this._token.cancel():th...
    method dispose (line 17) | dispose(h=!1){var o;h&&this.cancel(),(o=this._parentListener)===null||...
    method Assert (line 17) | static Assert(e,a){if(!e)throw new Error(a)}
    method fromRange (line 17) | static fromRange(o){return new g(o.startLineNumber,o.endLineNumber)}
    method fromRangeInclusive (line 17) | static fromRangeInclusive(o){return new g(o.startLineNumber,o.endLineN...
    method joinMany (line 17) | static joinMany(o){if(o.length===0)return[];let C=new L(o[0].slice());...
    method ofLength (line 17) | static ofLength(o,C){return new g(o,o+C)}
    method deserialize (line 17) | static deserialize(o){return new g(o[0],o[1])}
    method constructor (line 17) | constructor(o,C){if(o>C)throw new M.BugIndicatingError(`startLineNumbe...
    method contains (line 17) | contains(o){return this.startLineNumber<=o&&o<this.endLineNumberExclus...
    method isEmpty (line 17) | get isEmpty(){return this.startLineNumber===this.endLineNumberExclusive}
    method delta (line 17) | delta(o){return new g(this.startLineNumber+o,this.endLineNumberExclusi...
    method deltaLength (line 17) | deltaLength(o){return new g(this.startLineNumber,this.endLineNumberExc...
    method length (line 17) | get length(){return this.endLineNumberExclusive-this.startLineNumber}
    method join (line 17) | join(o){return new g(Math.min(this.startLineNumber,o.startLineNumber),...
    method toString (line 17) | toString(){return`[${this.startLineNumber},${this.endLineNumberExclusi...
    method intersect (line 17) | intersect(o){const C=Math.max(this.startLineNumber,o.startLineNumber),...
    method intersectsStrict (line 17) | intersectsStrict(o){return this.startLineNumber<o.endLineNumberExclusi...
    method overlapOrTouch (line 17) | overlapOrTouch(o){return this.startLineNumber<=o.endLineNumberExclusiv...
    method equals (line 17) | equals(o){return this.startLineNumber===o.startLineNumber&&this.endLin...
    method toInclusiveRange (line 17) | toInclusiveRange(){return this.isEmpty?null:new i.Range(this.startLine...
    method toExclusiveRange (line 17) | toExclusiveRange(){return new i.Range(this.startLineNumber,1,this.endL...
    method mapToLineArray (line 17) | mapToLineArray(o){const C=[];for(let e=this.startLineNumber;e<this.end...
    method forEach (line 17) | forEach(o){for(let C=this.startLineNumber;C<this.endLineNumberExclusiv...
    method serialize (line 17) | serialize(){return[this.startLineNumber,this.endLineNumberExclusive]}
    method includes (line 17) | includes(o){return this.startLineNumber<=o&&o<this.endLineNumberExclus...
    method toOffsetRange (line 17) | toOffsetRange(){return new A.OffsetRange(this.startLineNumber-1,this.e...
    method invert (line 17) | static invert(e,a){const u=[];return(0,M.forEachAdjacent)(e,(c,m)=>{u....
    method fromOffsetPairs (line 17) | static fromOffsetPairs(e,a){return new g(new i.OffsetRange(e.offset1,a...
    method constructor (line 17) | constructor(e,a){this.seq1Range=e,this.seq2Range=a}
    method swap (line 17) | swap(){return new g(this.seq2Range,this.seq1Range)}
    method toString (line 17) | toString(){return`${this.seq1Range} <-> ${this.seq2Range}`}
    method join (line 17) | join(e){return new g(this.seq1Range.join(e.seq1Range),this.seq2Range.j...
    method delta (line 17) | delta(e){return e===0?this:new g(this.seq1Range.delta(e),this.seq2Rang...
    method deltaStart (line 17) | deltaStart(e){return e===0?this:new g(this.seq1Range.deltaStart(e),thi...
    method deltaEnd (line 17) | deltaEnd(e){return e===0?this:new g(this.seq1Range.deltaEnd(e),this.se...
    method intersect (line 17) | intersect(e){const a=this.seq1Range.intersect(e.seq1Range),u=this.seq2...
    method getStarts (line 17) | getStarts(){return new L(this.seq1Range.start,this.seq2Range.start)}
    method getEndExclusives (line 17) | getEndExclusives(){return new L(this.seq1Range.endExclusive,this.seq2R...
    method constructor (line 17) | constructor(){this.positiveArr=new Int32Array(10),this.negativeArr=new...
    method get (line 17) | get(o){return o<0?(o=-o-1,this.negativeArr[o]):this.positiveArr[o]}
    method set (line 17) | set(o,C){if(o<0){if(o=-o-1,o>=this.negativeArr.length){const e=this.ne...
    method constructor (line 21) | constructor(h,o){this.index=h,this.remainder=o,this._prefixSumIndexOfR...
  function g (line 9) | function g(){if(typeof q.global.require<"u"||typeof require<"u"){const L...
    method constructor (line 8) | constructor(h,o,C,e,a=0){this._env=h,this._scriptLoader=o,this._loader...
    method reset (line 8) | reset(){return new g(this._env,this._scriptLoader,this._defineFunc,thi...
    method getGlobalAMDDefineFunc (line 8) | getGlobalAMDDefineFunc(){return this._defineFunc}
    method getGlobalAMDRequireFunc (line 8) | getGlobalAMDRequireFunc(){return this._requireFunc}
    method _findRelevantLocationInStack (line 8) | static _findRelevantLocationInStack(h,o){let C=u=>u.replace(/\\/g,"/")...
    method getBuildInfo (line 8) | getBuildInfo(){if(!this._config.isBuild())return null;let h=[],o=0;for...
    method getRecorder (line 8) | getRecorder(){return this._recorder||(this._config.shouldRecordStats()...
    method getLoaderEvents (line 8) | getLoaderEvents(){return this.getRecorder().getEvents()}
    method enqueueDefineAnonymousModule (line 8) | enqueueDefineAnonymousModule(h,o){if(this._currentAnonymousDefineCall!...
    method defineModule (line 8) | defineModule(h,o,C,e,a,u=new n(h)){let c=this._moduleIdProvider.getMod...
    method _normalizeDependency (line 8) | _normalizeDependency(h,o){if(h==="exports")return i.EXPORTS;if(h==="mo...
    method _normalizeDependencies (line 8) | _normalizeDependencies(h,o){let C=[],e=0;for(let a=0,u=h.length;a<u;a+...
    method _relativeRequire (line 8) | _relativeRequire(h,o,C,e){if(typeof o=="string")return this.synchronou...
    method synchronousRequire (line 8) | synchronousRequire(h,o=new n(h)){let C=this._normalizeDependency(h,o),...
    method configure (line 8) | configure(h,o){let C=this._config.shouldRecordStats();o?this._config=n...
    method getConfig (line 8) | getConfig(){return this._config}
    method _onLoad (line 8) | _onLoad(h){if(this._currentAnonymousDefineCall!==null){let o=this._cur...
    method _createLoadError (line 8) | _createLoadError(h,o){let C=this._moduleIdProvider.getStrModuleId(h),e...
    method _onLoadError (line 8) | _onLoadError(h,o){const C=this._createLoadError(h,o);this._modules2[h]...
    method _hasDependencyPath (line 8) | _hasDependencyPath(h,o){let C=this._modules2[h];if(!C)return!1;let e=[...
    method _findCyclePath (line 8) | _findCyclePath(h,o,C){if(h===o||C===50)return[h];let e=this._modules2[...
    method _createRequire (line 8) | _createRequire(h){let o=(C,e,a)=>this._relativeRequire(h,C,e,a);return...
    method _loadModule (line 8) | _loadModule(h){if(this._modules2[h]||this._knownModules2[h])return;thi...
    method _loadPluginDependency (line 8) | _loadPluginDependency(h,o){if(this._modules2[o.id]||this._knownModules...
    method _resolve (line 8) | _resolve(h){let o=h.dependencies;if(o)for(let C=0,e=o.length;C<e;C++){...
    method _onModuleComplete (line 9) | _onModuleComplete(h){let o=this.getRecorder();if(h.isComplete())return...
    method fromHex (line 11) | static fromHex(h){return g.Format.CSS.parseHex(h)||g.red}
    method equals (line 11) | static equals(h,o){return!h&&!o?!0:!h||!o?!1:h.equals(o)}
    method hsla (line 11) | get hsla(){return this._hsla?this._hsla:i.fromRGBA(this.rgba)}
    method hsva (line 11) | get hsva(){return this._hsva?this._hsva:d.fromRGBA(this.rgba)}
    method constructor (line 11) | constructor(h){if(h)if(h instanceof A)this.rgba=h;else if(h instanceof...
    method equals (line 11) | equals(h){return!!h&&A.equals(this.rgba,h.rgba)&&i.equals(this.hsla,h....
    method getRelativeLuminance (line 11) | getRelativeLuminance(){const h=g._relativeLuminanceForComponent(this.r...
    method _relativeLuminanceForComponent (line 11) | static _relativeLuminanceForComponent(h){const o=h/255;return o<=.0392...
    method isLighter (line 11) | isLighter(){return(this.rgba.r*299+this.rgba.g*587+this.rgba.b*114)/1e...
    method isLighterThan (line 11) | isLighterThan(h){const o=this.getRelativeLuminance(),C=h.getRelativeLu...
    method isDarkerThan (line 11) | isDarkerThan(h){const o=this.getRelativeLuminance(),C=h.getRelativeLum...
    method lighten (line 11) | lighten(h){return new g(new i(this.hsla.h,this.hsla.s,this.hsla.l+this...
    method darken (line 11) | darken(h){return new g(new i(this.hsla.h,this.hsla.s,this.hsla.l-this....
    method transparent (line 11) | transparent(h){const{r:o,g:C,b:e,a}=this.rgba;return new g(new A(o,C,e...
    method isTransparent (line 11) | isTransparent(){return this.rgba.a===0}
    method isOpaque (line 11) | isOpaque(){return this.rgba.a===1}
    method opposite (line 11) | opposite(){return new g(new A(255-this.rgba.r,255-this.rgba.g,255-this...
    method makeOpaque (line 11) | makeOpaque(h){if(this.isOpaque()||h.rgba.a!==1)return this;const{r:o,g...
    method toString (line 11) | toString(){return this._toString||(this._toString=g.Format.CSS.format(...
    method getLighterColor (line 11) | static getLighterColor(h,o,C){if(h.isLighterThan(o))return h;C=C||.5;c...
    method getDarkerColor (line 11) | static getDarkerColor(h,o,C){if(h.isDarkerThan(o))return h;C=C||.5;con...
    method constructor (line 15) | constructor(a,u){if(this[M]="ResourceMap",a instanceof g)this.map=new ...
    method set (line 15) | set(a,u){return this.map.set(this.toKey(a),new i(a,u)),this}
    method get (line 15) | get(a){var u;return(u=this.map.get(this.toKey(a)))===null||u===void 0?...
    method has (line 15) | has(a){return this.map.has(this.toKey(a))}
    method size (line 15) | get size(){return this.map.size}
    method clear (line 15) | clear(){this.map.clear()}
    method delete (line 15) | delete(a){return this.map.delete(this.toKey(a))}
    method forEach (line 15) | forEach(a,u){typeof u<"u"&&(a=a.bind(u));for(const[c,m]of this.map)a(m...
    method values (line 15) | *values(){for(const a of this.map.values())yield a.value}
    method keys (line 15) | *keys(){for(const a of this.map.values())yield a.uri}
    method entries (line 15) | *entries(){for(const a of this.map.values())yield[a.uri,a.value]}
    method constructor (line 17) | constructor(h){this._token=void 0,this._parentListener=void 0,this._pa...
    method token (line 17) | get token(){return this._token||(this._token=new d),this._token}
    method cancel (line 17) | cancel(){this._token?this._token instanceof d&&this._token.cancel():th...
    method dispose (line 17) | dispose(h=!1){var o;h&&this.cancel(),(o=this._parentListener)===null||...
    method Assert (line 17) | static Assert(e,a){if(!e)throw new Error(a)}
    method fromRange (line 17) | static fromRange(o){return new g(o.startLineNumber,o.endLineNumber)}
    method fromRangeInclusive (line 17) | static fromRangeInclusive(o){return new g(o.startLineNumber,o.endLineN...
    method joinMany (line 17) | static joinMany(o){if(o.length===0)return[];let C=new L(o[0].slice());...
    method ofLength (line 17) | static ofLength(o,C){return new g(o,o+C)}
    method deserialize (line 17) | static deserialize(o){return new g(o[0],o[1])}
    method constructor (line 17) | constructor(o,C){if(o>C)throw new M.BugIndicatingError(`startLineNumbe...
    method contains (line 17) | contains(o){return this.startLineNumber<=o&&o<this.endLineNumberExclus...
    method isEmpty (line 17) | get isEmpty(){return this.startLineNumber===this.endLineNumberExclusive}
    method delta (line 17) | delta(o){return new g(this.startLineNumber+o,this.endLineNumberExclusi...
    method deltaLength (line 17) | deltaLength(o){return new g(this.startLineNumber,this.endLineNumberExc...
    method length (line 17) | get length(){return this.endLineNumberExclusive-this.startLineNumber}
    method join (line 17) | join(o){return new g(Math.min(this.startLineNumber,o.startLineNumber),...
    method toString (line 17) | toString(){return`[${this.startLineNumber},${this.endLineNumberExclusi...
    method intersect (line 17) | intersect(o){const C=Math.max(this.startLineNumber,o.startLineNumber),...
    method intersectsStrict (line 17) | intersectsStrict(o){return this.startLineNumber<o.endLineNumberExclusi...
    method overlapOrTouch (line 17) | overlapOrTouch(o){return this.startLineNumber<=o.endLineNumberExclusiv...
    method equals (line 17) | equals(o){return this.startLineNumber===o.startLineNumber&&this.endLin...
    method toInclusiveRange (line 17) | toInclusiveRange(){return this.isEmpty?null:new i.Range(this.startLine...
    method toExclusiveRange (line 17) | toExclusiveRange(){return new i.Range(this.startLineNumber,1,this.endL...
    method mapToLineArray (line 17) | mapToLineArray(o){const C=[];for(let e=this.startLineNumber;e<this.end...
    method forEach (line 17) | forEach(o){for(let C=this.startLineNumber;C<this.endLineNumberExclusiv...
    method serialize (line 17) | serialize(){return[this.startLineNumber,this.endLineNumberExclusive]}
    method includes (line 17) | includes(o){return this.startLineNumber<=o&&o<this.endLineNumberExclus...
    method toOffsetRange (line 17) | toOffsetRange(){return new A.OffsetRange(this.startLineNumber-1,this.e...
    method invert (line 17) | static invert(e,a){const u=[];return(0,M.forEachAdjacent)(e,(c,m)=>{u....
    method fromOffsetPairs (line 17) | static fromOffsetPairs(e,a){return new g(new i.OffsetRange(e.offset1,a...
    method constructor (line 17) | constructor(e,a){this.seq1Range=e,this.seq2Range=a}
    method swap (line 17) | swap(){return new g(this.seq2Range,this.seq1Range)}
    method toString (line 17) | toString(){return`${this.seq1Range} <-> ${this.seq2Range}`}
    method join (line 17) | join(e){return new g(this.seq1Range.join(e.seq1Range),this.seq2Range.j...
    method delta (line 17) | delta(e){return e===0?this:new g(this.seq1Range.delta(e),this.seq2Rang...
    method deltaStart (line 17) | deltaStart(e){return e===0?this:new g(this.seq1Range.deltaStart(e),thi...
    method deltaEnd (line 17) | deltaEnd(e){return e===0?this:new g(this.seq1Range.deltaEnd(e),this.se...
    method intersect (line 17) | intersect(e){const a=this.seq1Range.intersect(e.seq1Range),u=this.seq2...
    method getStarts (line 17) | getStarts(){return new L(this.seq1Range.start,this.seq2Range.start)}
    method getEndExclusives (line 17) | getEndExclusives(){return new L(this.seq1Range.endExclusive,this.seq2R...
    method constructor (line 17) | constructor(){this.positiveArr=new Int32Array(10),this.negativeArr=new...
    method get (line 17) | get(o){return o<0?(o=-o-1,this.negativeArr[o]):this.positiveArr[o]}
    method set (line 17) | set(o,C){if(o<0){if(o=-o-1,o>=this.negativeArr.length){const e=this.ne...
    method constructor (line 21) | constructor(h,o){this.index=h,this.remainder=o,this._prefixSumIndexOfR...
  function i (line 9) | function i(f,S){let w;return S.length===0?w=f:w=f.replace(/\{(\d+)\}/g,(...
    method constructor (line 6) | constructor(){this._cachedCanUseEval=null}
    method _canUseEval (line 6) | _canUseEval(o){return this._cachedCanUseEval===null&&(this._cachedCanU...
    method load (line 6) | load(o,C,e,a){if(/^node\|/.test(C)){const u=o.getConfig().getOptionsLi...
    method constructor (line 8) | constructor(h){this.id=h}
    method constructor (line 11) | constructor(h,o,C,e){this._hslaBrand=void 0,this.h=Math.max(Math.min(3...
    method equals (line 11) | static equals(h,o){return h.h===o.h&&h.s===o.s&&h.l===o.l&&h.a===o.a}
    method fromRGBA (line 11) | static fromRGBA(h){const o=h.r/255,C=h.g/255,e=h.b/255,a=h.a,u=Math.ma...
    method _hue2rgb (line 11) | static _hue2rgb(h,o,C){return C<0&&(C+=1),C>1&&(C-=1),C<1/6?h+(o-h)*6*...
    method toRGBA (line 11) | static toRGBA(h){const o=h.h/360,{s:C,l:e,a}=h;let u,c,m;if(C===0)u=c=...
    method constructor (line 15) | constructor(a,u){this.uri=a,this.value=u}
    method constructor (line 17) | constructor(e){this.source=e}
    method getElements (line 17) | getElements(){const e=this.source,a=new Int32Array(e.length);for(let u...
    method constructor (line 17) | constructor(){this._actual=new A(0)}
    method add (line 17) | add(g){this._actual.set(g,1)}
    method has (line 17) | has(g){return this._actual.get(g)===1}
    method clear (line 17) | clear(){return this._actual.clear()}
    method constructor (line 17) | constructor(){this._sortedRanges=[]}
    method addRange (line 17) | addRange(g){let L=0;for(;L<this._sortedRanges.length&&this._sortedRang...
    method toString (line 17) | toString(){return this._sortedRanges.map(g=>g.toString()).join(", ")}
    method intersectsStrict (line 17) | intersectsStrict(g){let L=0;for(;L<this._sortedRanges.length&&this._so...
    method intersectWithRange (line 17) | intersectWithRange(g){const L=new i;for(const h of this._sortedRanges)...
    method intersectWithRangeLength (line 17) | intersectWithRangeLength(g){return this.intersectWithRange(g).length}
    method length (line 17) | get length(){return this._sortedRanges.reduce((g,L)=>g+L.length,0)}
    method constructor (line 17) | constructor(g,L,h,o){super(g,L,h,o),this.selectionStartLineNumber=g,th...
    method toString (line 17) | toString(){return"["+this.selectionStartLineNumber+","+this.selectionS...
    method equalsSelection (line 17) | equalsSelection(g){return i.selectionsEqual(this,g)}
    method selectionsEqual (line 17) | static selectionsEqual(g,L){return g.selectionStartLineNumber===L.sele...
    method getDirection (line 17) | getDirection(){return this.selectionStartLineNumber===this.startLineNu...
    method setEndPosition (line 17) | setEndPosition(g,L){return this.getDirection()===0?new i(this.startLin...
    method getPosition (line 17) | getPosition(){return new M.Position(this.positionLineNumber,this.posit...
    method getSelectionStart (line 17) | getSelectionStart(){return new M.Position(this.selectionStartLineNumbe...
    method setStartPosition (line 17) | setStartPosition(g,L){return this.getDirection()===0?new i(g,L,this.en...
    method fromPositions (line 17) | static fromPositions(g,L=g){return new i(g.lineNumber,g.column,L.lineN...
    method fromRange (line 17) | static fromRange(g,L){return L===0?new i(g.startLineNumber,g.startColu...
    method liftSelection (line 17) | static liftSelection(g){return new i(g.selectionStartLineNumber,g.sele...
    method selectionsArrEqual (line 17) | static selectionsArrEqual(g,L){if(g&&!L||!g&&L)return!1;if(!g&&!L)retu...
    method isISelection (line 17) | static isISelection(g){return g&&typeof g.selectionStartLineNumber=="n...
    method createWithDirection (line 17) | static createWithDirection(g,L,h,o,C){return C===0?new i(g,L,h,o):new ...
    method compute (line 17) | compute(o,C,e=A.InfiniteTimeout.instance){if(o.length===0||C.length===...
    method getKey (line 18) | static getKey(g){let L=this.chrKeys.get(g);return L===void 0&&(L=this....
    method constructor (line 18) | constructor(g,L,h){this.range=g,this.lines=L,this.source=h,this.histog...
    method computeSimilarity (line 19) | computeSimilarity(g){var L,h;let o=0;const C=Math.max(this.histogram.l...
    method constructor (line 20) | constructor(L,h,o){super(L,h),this.innerChanges=o}
    method flip (line 20) | flip(){var L;return new i(this.modified,this.original,(L=this.innerCha...
    method constructor (line 21) | constructor(a){let u=0,c=0;for(let f=0,S=a.length;f<S;f++){const[w,E,y...
    method nextState (line 21) | nextState(a,u){return u<0||u>=this._maxCharCode?0:this._states.get(a,u)}
    method constructor (line 21) | constructor(h){this.values=h,this.prefixSum=new Uint32Array(h.length),...
    method insertValues (line 21) | insertValues(h,o){h=(0,A.toUint32)(h);const C=this.values,e=this.prefi...
    method setValue (line 21) | setValue(h,o){return h=(0,A.toUint32)(h),o=(0,A.toUint32)(o),this.valu...
    method removeValues (line 21) | removeValues(h,o){h=(0,A.toUint32)(h),o=(0,A.toUint32)(o);const C=this...
    method getTotalSum (line 21) | getTotalSum(){return this.values.length===0?0:this._getPrefixSum(this....
    method getPrefixSum (line 21) | getPrefixSum(h){return h<0?0:(h=(0,A.toUint32)(h),this._getPrefixSum(h))}
    method _getPrefixSum (line 21) | _getPrefixSum(h){if(h<=this.prefixSumValidIndex[0])return this.prefixS...
    method getIndexOf (line 21) | getIndexOf(h){h=Math.floor(h),this.getTotalSum();let o=0,C=this.values...
    method constructor (line 25) | constructor(){this._tokenizationSupports=new Map,this._factories=new M...
    method handleChange (line 25) | handleChange(L){this._onDidChange.fire({changedLanguages:L,changedColo...
    method register (line 25) | register(L,h){return this._tokenizationSupports.set(L,h),this.handleCh...
    method get (line 25) | get(L){return this._tokenizationSupports.get(L)||null}
    method registerFactory (line 25) | registerFactory(L,h){var o;(o=this._factories.get(L))===null||o===void...
    method getOrCreate (line 25) | async getOrCreate(L){const h=this.get(L);if(h)return h;const o=this._f...
    method isResolved (line 25) | isResolved(L){if(this.get(L))return!0;const o=this._factories.get(L);r...
    method setColorMap (line 25) | setColorMap(L){this._colorMap=L,this._onDidChange.fire({changedLanguag...
    method getColorMap (line 25) | getColorMap(){return this._colorMap}
    method getDefaultBackground (line 25) | getDefaultBackground(){return this._colorMap&&this._colorMap.length>2?...
  function d (line 9) | function d(f,S){let w=f[S];return w||(w=f["*"],w)?w:null}
    method constructor (line 7) | constructor(o){this._env=o,this._didInitialize=!1,this._didPatchNodeRe...
    method _init (line 7) | _init(o){this._didInitialize||(this._didInitialize=!0,this._fs=o("fs")...
    method _initNodeRequire (line 7) | _initNodeRequire(o,C){const{nodeCachedData:e}=C.getConfig().getOptions...
    method load (line 7) | load(o,C,e,a){const u=o.getConfig().getOptionsLiteral(),c=g(o.getRecor...
    method _createAndEvalScript (line 7) | _createAndEvalScript(o,C,e,a,u){const c=o.getRecorder();c.record(31,e....
    method _getElectronRendererScriptPathOrUri (line 7) | _getElectronRendererScriptPathOrUri(o){if(!this._env.isElectronRendere...
    method _getCachedDataPath (line 7) | _getCachedDataPath(o,C){const e=this._crypto.createHash("md5").update(...
    method _handleCachedData (line 7) | _handleCachedData(o,C,e,a,u){o.cachedDataRejected?this._fs.unlink(e,c=...
    method _createAndWriteCachedData (line 7) | _createAndWriteCachedData(o,C,e,a){let u=Math.ceil(a.getConfig().getOp...
    method _readSourceAndCachedData (line 7) | _readSourceAndCachedData(o,C,e,a){if(!C)this._fs.readFile(o,{encoding:...
    method _verifyCachedData (line 7) | _verifyCachedData(o,C,e,a,u){a&&(o.cachedDataRejected||setTimeout(()=>...
    method constructor (line 8) | constructor(h,o,C){this.id=h,this.pluginId=o,this.pluginParam=C}
    method constructor (line 11) | constructor(h,o,C,e){this._hsvaBrand=void 0,this.h=Math.max(Math.min(3...
    method equals (line 11) | static equals(h,o){return h.h===o.h&&h.s===o.s&&h.v===o.v&&h.a===o.a}
    method fromRGBA (line 11) | static fromRGBA(h){const o=h.r/255,C=h.g/255,e=h.b/255,a=Math.max(o,C,...
    method toRGBA (line 11) | static toRGBA(h){const{h:o,s:C,v:e,a}=h,u=e*C,c=u*(1-Math.abs(o/60%2-1...
    method constructor (line 17) | constructor(){this._isCancelled=!1,this._emitter=null}
    method cancel (line 17) | cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this...
    method isCancellationRequested (line 17) | get isCancellationRequested(){return this._isCancelled}
    method onCancellationRequested (line 17) | get onCancellationRequested(){return this._isCancelled?A:(this._emitte...
    method dispose (line 17) | dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=null)}
    method trivial (line 17) | static trivial(e,a){return new d([new g(i.OffsetRange.ofLength(e.lengt...
    method trivialTimedOut (line 17) | static trivialTimedOut(e,a){return new d([new g(i.OffsetRange.ofLength...
    method constructor (line 17) | constructor(e,a){this.diffs=e,this.hitTimeout=a}
    method constructor (line 17) | constructor(o,C,e,a){this.prev=o,this.x=C,this.y=e,this.length=a}
    method compute (line 19) | compute(L,h,o=A.InfiniteTimeout.instance,C){if(L.length===0||h.length=...
    method constructor (line 20) | constructor(L,h){this.originalRange=L,this.modifiedRange=h}
    method toString (line 20) | toString(){return`{${this.originalRange.toString()}->${this.modifiedRa...
    method flip (line 20) | flip(){return new d(this.modifiedRange,this.originalRange)}
    method constructor (line 21) | constructor(h){this._values=h,this._isValid=!1,this._validEndIndex=-1,...
    method getTotalSum (line 21) | getTotalSum(){return this._ensureValid(),this._indexBySum.length}
    method getPrefixSum (line 21) | getPrefixSum(h){return this._ensureValid(),h===0?0:this._prefixSum[h-1]}
    method getIndexOf (line 21) | getIndexOf(h){this._ensureValid();const o=this._indexBySum[h],C=o>0?th...
    method removeValues (line 21) | removeValues(h,o){this._values.splice(h,o),this._invalidate(h)}
    method insertValues (line 21) | insertValues(h,o){this._values=(0,M.arrayInsert)(this._values,h,o),thi...
    method _invalidate (line 21) | _invalidate(h){this._isValid=!1,this._validEndIndex=Math.min(this._val...
    method _ensureValid (line 21) | _ensureValid(){if(!this._isValid){for(let h=this._validEndIndex+1,o=th...
    method setValue (line 21) | setValue(h,o){this._values[h]!==o&&(this._values[h]=o,this._invalidate...
    method constructor (line 21) | constructor(L,h,o,C){this._uri=L,this._lines=h,this._eol=o,this._versi...
    method dispose (line 21) | dispose(){this._lines.length=0}
    method version (line 21) | get version(){return this._versionId}
    method getText (line 21) | getText(){return this._cachedTextValue===null&&(this._cachedTextValue=...
    method onEvents (line 21) | onEvents(L){L.eol&&L.eol!==this._eol&&(this._eol=L.eol,this._lineStart...
    method _ensureLineStarts (line 21) | _ensureLineStarts(){if(!this._lineStarts){const L=this._eol.length,h=t...
    method _setLineText (line 21) | _setLineText(L,h){this._lines[L]=h,this._lineStarts&&this._lineStarts....
    method _acceptDeleteRange (line 21) | _acceptDeleteRange(L){if(L.startLineNumber===L.endLineNumber){if(L.sta...
    method _acceptInsertText (line 21) | _acceptInsertText(L,h){if(h.length===0)return;const o=(0,M.splitLines)...
    method isResolved (line 25) | get isResolved(){return this._isResolved}
    method constructor (line 25) | constructor(L,h,o){super(),this._registry=L,this._languageId=h,this._f...
    method dispose (line 25) | dispose(){this._isDisposed=!0,super.dispose()}
    method resolve (line 25) | async resolve(){return this._resolvePromise||(this._resolvePromise=thi...
    method _create (line 25) | async _create(){const L=await this._factory.tokenizationSupport;this._...
  function g (line 9) | function g(f){return f.charAt(f.length-1)==="/"?f:f+"/"}
    method constructor (line 8) | constructor(h,o,C,e,a=0){this._env=h,this._scriptLoader=o,this._loader...
    method reset (line 8) | reset(){return new g(this._env,this._scriptLoader,this._defineFunc,thi...
    method getGlobalAMDDefineFunc (line 8) | getGlobalAMDDefineFunc(){return this._defineFunc}
    method getGlobalAMDRequireFunc (line 8) | getGlobalAMDRequireFunc(){return this._requireFunc}
    method _findRelevantLocationInStack (line 8) | static _findRelevantLocationInStack(h,o){let C=u=>u.replace(/\\/g,"/")...
    method getBuildInfo (line 8) | getBuildInfo(){if(!this._config.isBuild())return null;let h=[],o=0;for...
    method getRecorder (line 8) | getRecorder(){return this._recorder||(this._config.shouldRecordStats()...
    method getLoaderEvents (line 8) | getLoaderEvents(){return this.getRecorder().getEvents()}
    method enqueueDefineAnonymousModule (line 8) | enqueueDefineAnonymousModule(h,o){if(this._currentAnonymousDefineCall!...
    method defineModule (line 8) | defineModule(h,o,C,e,a,u=new n(h)){let c=this._moduleIdProvider.getMod...
    method _normalizeDependency (line 8) | _normalizeDependency(h,o){if(h==="exports")return i.EXPORTS;if(h==="mo...
    method _normalizeDependencies (line 8) | _normalizeDependencies(h,o){let C=[],e=0;for(let a=0,u=h.length;a<u;a+...
    method _relativeRequire (line 8) | _relativeRequire(h,o,C,e){if(typeof o=="string")return this.synchronou...
    method synchronousRequire (line 8) | synchronousRequire(h,o=new n(h)){let C=this._normalizeDependency(h,o),...
    method configure (line 8) | configure(h,o){let C=this._config.shouldRecordStats();o?this._config=n...
    method getConfig (line 8) | getConfig(){return this._config}
    method _onLoad (line 8) | _onLoad(h){if(this._currentAnonymousDefineCall!==null){let o=this._cur...
    method _createLoadError (line 8) | _createLoadError(h,o){let C=this._moduleIdProvider.getStrModuleId(h),e...
    method _onLoadError (line 8) | _onLoadError(h,o){const C=this._createLoadError(h,o);this._modules2[h]...
    method _hasDependencyPath (line 8) | _hasDependencyPath(h,o){let C=this._modules2[h];if(!C)return!1;let e=[...
    method _findCyclePath (line 8) | _findCyclePath(h,o,C){if(h===o||C===50)return[h];let e=this._modules2[...
    method _createRequire (line 8) | _createRequire(h){let o=(C,e,a)=>this._relativeRequire(h,C,e,a);return...
    method _loadModule (line 8) | _loadModule(h){if(this._modules2[h]||this._knownModules2[h])return;thi...
    method _loadPluginDependency (line 8) | _loadPluginDependency(h,o){if(this._modules2[o.id]||this._knownModules...
    method _resolve (line 8) | _resolve(h){let o=h.dependencies;if(o)for(let C=0,e=o.length;C<e;C++){...
    method _onModuleComplete (line 9) | _onModuleComplete(h){let o=this.getRecorder();if(h.isComplete())return...
    method fromHex (line 11) | static fromHex(h){return g.Format.CSS.parseHex(h)||g.red}
    method equals (line 11) | static equals(h,o){return!h&&!o?!0:!h||!o?!1:h.equals(o)}
    method hsla (line 11) | get hsla(){return this._hsla?this._hsla:i.fromRGBA(this.rgba)}
    method hsva (line 11) | get hsva(){return this._hsva?this._hsva:d.fromRGBA(this.rgba)}
    method constructor (line 11) | constructor(h){if(h)if(h instanceof A)this.rgba=h;else if(h instanceof...
    method equals (line 11) | equals(h){return!!h&&A.equals(this.rgba,h.rgba)&&i.equals(this.hsla,h....
    method getRelativeLuminance (line 11) | getRelativeLuminance(){const h=g._relativeLuminanceForComponent(this.r...
    method _relativeLuminanceForComponent (line 11) | static _relativeLuminanceForComponent(h){const o=h/255;return o<=.0392...
    method isLighter (line 11) | isLighter(){return(this.rgba.r*299+this.rgba.g*587+this.rgba.b*114)/1e...
    method isLighterThan (line 11) | isLighterThan(h){const o=this.getRelativeLuminance(),C=h.getRelativeLu...
    method isDarkerThan (line 11) | isDarkerThan(h){const o=this.getRelativeLuminance(),C=h.getRelativeLum...
    method lighten (line 11) | lighten(h){return new g(new i(this.hsla.h,this.hsla.s,this.hsla.l+this...
    method darken (line 11) | darken(h){return new g(new i(this.hsla.h,this.hsla.s,this.hsla.l-this....
    method transparent (line 11) | transparent(h){const{r:o,g:C,b:e,a}=this.rgba;return new g(new A(o,C,e...
    method isTransparent (line 11) | isTransparent(){return this.rgba.a===0}
    method isOpaque (line 11) | isOpaque(){return this.rgba.a===1}
    method opposite (line 11) | opposite(){return new g(new A(255-this.rgba.r,255-this.rgba.g,255-this...
    method makeOpaque (line 11) | makeOpaque(h){if(this.isOpaque()||h.rgba.a!==1)return this;const{r:o,g...
    method toString (line 11) | toString(){return this._toString||(this._toString=g.Format.CSS.format(...
    method getLighterColor (line 11) | static getLighterColor(h,o,C){if(h.isLighterThan(o))return h;C=C||.5;c...
    method getDarkerColor (line 11) | static getDarkerColor(h,o,C){if(h.isDarkerThan(o))return h;C=C||.5;con...
    method constructor (line 15) | constructor(a,u){if(this[M]="ResourceMap",a instanceof g)this.map=new ...
    method set (line 15) | set(a,u){return this.map.set(this.toKey(a),new i(a,u)),this}
    method get (line 15) | get(a){var u;return(u=this.map.get(this.toKey(a)))===null||u===void 0?...
    method has (line 15) | has(a){return this.map.has(this.toKey(a))}
    method size (line 15) | get size(){return this.map.size}
    method clear (line 15) | clear(){this.map.clear()}
    method delete (line 15) | delete(a){return this.map.delete(this.toKey(a))}
    method forEach (line 15) | forEach(a,u){typeof u<"u"&&(a=a.bind(u));for(const[c,m]of this.map)a(m...
    method values (line 15) | *values(){for(const a of this.map.values())yield a.value}
    method keys (line 15) | *keys(){for(const a of this.map.values())yield a.uri}
    method entries (line 15) | *entries(){for(const a of this.map.values())yield[a.uri,a.value]}
    method constructor (line 17) | constructor(h){this._token=void 0,this._parentListener=void 0,this._pa...
    method token (line 17) | get token(){return this._token||(this._token=new d),this._token}
    method cancel (line 17) | cancel(){this._token?this._token instanceof d&&this._token.cancel():th...
    method dispose (line 17) | dispose(h=!1){var o;h&&this.cancel(),(o=this._parentL
Copy disabled (too large) Download .json
Condensed preview — 1065 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (17,149K chars).
[
  {
    "path": ".config/dotnet-tools.json",
    "chars": 181,
    "preview": "{\n  \"version\": 1,\n  \"isRoot\": true,\n  \"tools\": {\n    \"csharpier\": {\n      \"version\": \"1.0.1\",\n      \"commands\": [\n      "
  },
  {
    "path": ".csharpierignore",
    "chars": 16,
    "preview": "*.csproj\n*.xaml\n"
  },
  {
    "path": ".csharpierrc",
    "chars": 162,
    "preview": "{\n    \"printWidth\": 110,\n    \"useTabs\": false,\n    \"tabWidth\": 4,\n    \"preprocessorSymbolSets\": [\n        \"\",\n        \"D"
  },
  {
    "path": ".devcontainer/devcontainer.json",
    "chars": 328,
    "preview": "{\n  \"name\": \"WPF UI Docs Dev Container\",\n  \"image\": \"mcr.microsoft.com/dotnet/sdk:9.0\",\n  \"features\": {\n    \"ghcr.io/dev"
  },
  {
    "path": ".devcontainer/post-create.sh",
    "chars": 203,
    "preview": "#!/bin/sh\n\napt-get update\napt-get install -y openssh-client\n\ncd docs/templates\nnpm ci\nnpm run build\ndotnet tool install "
  },
  {
    "path": ".editorconfig",
    "chars": 20498,
    "preview": "# Remove the line below if you want to inherit .editorconfig settings from higher directories\nroot = true\n\n# All files\n["
  },
  {
    "path": ".gitattributes",
    "chars": 1425,
    "preview": "# Set default behavior to automatically normalize line endings.\n*   text=auto\n\n*.doc   binary\n*.DOC   binary\n*.docx  bin"
  },
  {
    "path": ".github/FUNDING.yml",
    "chars": 22,
    "preview": "github: [pomianowski]\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.yaml",
    "chars": 1387,
    "preview": "name: Bug report\ndescription: Create a report to help us improve\ntitle: \"Bug title\"\nlabels: [bug]\nbody:\n  - type: textar"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 416,
    "preview": "blank_issues_enabled: false\ncontact_links:\n  - name: Documentation\n    url: https://wpfui.lepo.co/documentation/\n    abo"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.yaml",
    "chars": 932,
    "preview": "name: Feature request\ndescription: Suggest an idea for the wpfui\ntitle: \"Feature request title\"\nlabels: [enhancement]\nbo"
  },
  {
    "path": ".github/chatmodes/documentation_contributor.chatmode.md",
    "chars": 9641,
    "preview": "---\ndescription: 'WPF-UI Documentation Contributor for writing technical documentation in /docs/documentation/ following"
  },
  {
    "path": ".github/copilot-instructions.md",
    "chars": 7907,
    "preview": "You are an AI coding agent helping build WPF-UI, a modern WPF library implementing Microsoft Fluent UI design. This is a"
  },
  {
    "path": ".github/dependabot.yml",
    "chars": 745,
    "preview": "# To get started with Dependabot version updates, you'll need to specify which\n# package ecosystems to update and where "
  },
  {
    "path": ".github/labeler.yml",
    "chars": 1300,
    "preview": "release:\n  - base-branch: 'main'\n\nPR:\n  - base-branch: [ 'main', 'development' ]\n\ngithub_actions:\n- changed-files:\n  - a"
  },
  {
    "path": ".github/labels.yml",
    "chars": 2230,
    "preview": "- name: \"icons\"\n  color: \"86CBEC\"\n  description: \"Fonts and icons updates\"\n- name: \"animations\"\n  color: \"233C4F\"\n  desc"
  },
  {
    "path": ".github/policies/cla.yml",
    "chars": 666,
    "preview": "name: Contributor License Agreement Policy\ndescription: CLA policy file\n\nresource: repository\n\nconfiguration: \n   cla:\n "
  },
  {
    "path": ".github/policies/platformcontext.yml",
    "chars": 218,
    "preview": "name: platform_context\ndescription: The context for GitOps platform, this will drive GitOps specific policies\nowner:\nres"
  },
  {
    "path": ".github/pull_request_template.md",
    "chars": 895,
    "preview": "<!--- Please provide a general summary of your changes in the title above -->\n\n## Pull request type\n\n<!-- Please try to "
  },
  {
    "path": ".github/workflows/top-issues-dashboard.yml",
    "chars": 618,
    "preview": "name: wpf-ui-top-issues-dashboard\non:\n  schedule:\n    - cron: '0 0 */1 * *'\n\njobs:\n  ShowAndLabelTopIssues:\n    name: Di"
  },
  {
    "path": ".github/workflows/wpf-ui-cd-docs.yaml",
    "chars": 1621,
    "preview": "name: wpf-ui-cd-docs\n\non:\n  push:\n    branches: [main]\n\n  workflow_dispatch:\n\n# Sets permissions of the GITHUB_TOKEN to "
  },
  {
    "path": ".github/workflows/wpf-ui-cd-extension.yaml",
    "chars": 1463,
    "preview": "name: wpf-ui-cd-extension\n\non:\n  push:\n    branches: [main]\n    paths:\n      - 'src/Wpf.Ui.Extension**'\n\n  workflow_disp"
  },
  {
    "path": ".github/workflows/wpf-ui-cd-nuget.yaml",
    "chars": 2122,
    "preview": "name: wpf-ui-cd-nuget\n\non:\n  push:\n    branches: [main]\n    paths:\n      - 'Directory.Build.props'\n\n  workflow_dispatch:"
  },
  {
    "path": ".github/workflows/wpf-ui-labeler.yml",
    "chars": 269,
    "preview": "name: wpf-ui-labeler\n\non:\n  - pull_request_target\n\njobs:\n  triage:\n    permissions:\n      contents: read\n      pull-requ"
  },
  {
    "path": ".github/workflows/wpf-ui-lock.yml",
    "chars": 283,
    "preview": "name: wpf-ui-lock\n\non:\n  schedule:\n    - cron: '0 0 * * 0'\n  workflow_dispatch:\n\npermissions:\n  issues: write\n  pull-req"
  },
  {
    "path": ".github/workflows/wpf-ui-pr-validator.yaml",
    "chars": 684,
    "preview": "name: wpf-ui-pr-validator\n\non:\n  pull_request:\n    branches: [main]\n\n  workflow_dispatch:\n\njobs:\n  build:\n    runs-on: w"
  },
  {
    "path": ".gitignore",
    "chars": 6156,
    "preview": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n## Get "
  },
  {
    "path": ".vsconfig",
    "chars": 1159,
    "preview": "{\n    \"version\": \"1.0\",\n    \"components\": [\n        \"Microsoft.Component.ClickOnce\",\n        \"Microsoft.Component.CodeAn"
  },
  {
    "path": "CNAME",
    "chars": 13,
    "preview": "wpfui.lepo.co"
  },
  {
    "path": "CODEOWNERS",
    "chars": 263,
    "preview": "# Lines starting with '#' are comments.\n# Each line is a file pattern followed by one or more owners.\n\n# These owners wi"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 5217,
    "preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nWe as members, contributors, and leaders pledge to make participa"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 140,
    "preview": "# Contribution Guidelines\n\nand as always, todo\n\n## Prerequisites\n\n## Code\n\n### Code style\n\n## Other general information\n"
  },
  {
    "path": "Directory.Build.props",
    "chars": 4854,
    "preview": "<Project>\n  <PropertyGroup>\n    <RepositoryDirectory>$(MSBuildThisFileDirectory)</RepositoryDirectory>\n    <BuildToolsDi"
  },
  {
    "path": "Directory.Build.targets",
    "chars": 5721,
    "preview": "<Project>\n  <PropertyGroup Condition=\"'$(GITHUB_ACTIONS)' == 'true'\">\n    <ContinuousIntegrationBuild>true</ContinuousIn"
  },
  {
    "path": "Directory.Packages.props",
    "chars": 2510,
    "preview": "<Project>\n  <ItemGroup>\n    <PackageVersion Include=\"AsyncFixer\" Version=\"1.6.0\" />\n    <PackageVersion Include=\"Awesome"
  },
  {
    "path": "LICENSE",
    "chars": 1122,
    "preview": "MIT License\n\nCopyright (c) 2021-2025 Leszek Pomianowski and WPF UI Contributors. https://lepo.co/\n\nPermission is hereby "
  },
  {
    "path": "LICENSE.md",
    "chars": 1122,
    "preview": "MIT License\n\nCopyright (c) 2021-2025 Leszek Pomianowski and WPF UI Contributors. https://lepo.co/\n\nPermission is hereby "
  },
  {
    "path": "README.md",
    "chars": 7137,
    "preview": "![WPF UI Banner Dark](https://user-images.githubusercontent.com/13592821/174165081-9c62d188-ecb6-4200-abd8-419afbaf32c2."
  },
  {
    "path": "SECURITY.md",
    "chars": 458,
    "preview": "# Security Policy\n\n## Supported Versions\n\nAt the moment, the only supported version of the **WPF UI** is the newest one."
  },
  {
    "path": "Settings.XamlStyler",
    "chars": 1912,
    "preview": "{\n    \"AttributesTolerance\": 2,\n    \"KeepFirstAttributeOnSameLine\": false,\n    \"MaxAttributeCharactersPerLine\": 0,\n    \""
  },
  {
    "path": "ThirdPartyNotices.txt",
    "chars": 6902,
    "preview": "WPF-UI\n\nTHIRD-PARTY SOFTWARE NOTICES AND INFORMATION\nDo Not Translate or Localize\n\nThis project incorporates components "
  },
  {
    "path": "Wpf.Ui.Gallery.slnf",
    "chars": 417,
    "preview": "{\n  \"solution\": {\n    \"path\": \"Wpf.Ui.sln\",\n    \"projects\": [\n      \"src\\\\Wpf.Ui.Gallery.Package\\\\Wpf.Ui.Gallery.Package"
  },
  {
    "path": "Wpf.Ui.Library.slnf",
    "chars": 228,
    "preview": "{\n  \"solution\": {\n    \"path\": \"Wpf.Ui.sln\",\n    \"projects\": [\n      \"src\\\\Wpf.Ui.ToastNotifications\\\\Wpf.Ui.ToastNotific"
  },
  {
    "path": "Wpf.Ui.sln",
    "chars": 31451,
    "preview": "\r\nMicrosoft Visual Studio Solution File, Format Version 12.00\r\n# Visual Studio Version 18\r\nVisualStudioVersion = 18.0.1"
  },
  {
    "path": "build.cmd",
    "chars": 218,
    "preview": "@echo off\r\npowershell -ExecutionPolicy ByPass -NoProfile -command \"& \"\"\"%~dp0build.ps1\"\"\"\"\r\n@REM powershell -ExecutionPo"
  },
  {
    "path": "build.ps1",
    "chars": 1276,
    "preview": "$wingetVersion = & winget --version 2>$null\n\nif ($wingetVersion -eq $null) {\n    Write-Output \"winget is not installed. "
  },
  {
    "path": "docs/.gitignore",
    "chars": 119,
    "preview": "###############\n#    folder   #\n###############\n/**/DROP/\n/**/TEMP/\n/**/packages/\n/**/bin/\n/**/obj/\n_site\npublic\n/src/\n"
  },
  {
    "path": "docs/codesnippet/Rtf/Hyperlink/RtfDocumentProcessor.cs",
    "chars": 4156,
    "preview": "// Copyright (c) Microsoft. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project roo"
  },
  {
    "path": "docs/codesnippet/Rtf/RtfBuildStep.cs",
    "chars": 1460,
    "preview": "// Copyright (c) Microsoft. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project roo"
  },
  {
    "path": "docs/codesnippet/Rtf/RtfDocumentProcessor.cs",
    "chars": 2397,
    "preview": "// Copyright (c) Microsoft. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project roo"
  },
  {
    "path": "docs/docfx.json",
    "chars": 1960,
    "preview": "{\n  \"metadata\": [\n    {\n      \"src\": [\n        {\n          \"files\": [\n            \"src/Wpf.Ui/*.csproj\",\n            \"sr"
  },
  {
    "path": "docs/documentation/.gitignore",
    "chars": 64,
    "preview": "###############\n#  temp file  #\n###############\n*.yml\n.manifest\n"
  },
  {
    "path": "docs/documentation/about-wpf.md",
    "chars": 1004,
    "preview": "# What is WPF\n\nWPF (Windows Presentation Foundation) is a resolution-independent UI framework for building Windows deskt"
  },
  {
    "path": "docs/documentation/accent.md",
    "chars": 6132,
    "preview": "# Accent Colors\n\nAccent colors provide visual emphasis and brand identity in WPF UI applications. The library manages ac"
  },
  {
    "path": "docs/documentation/extension.md",
    "chars": 2791,
    "preview": "# Visual Studio 2022 Extension for WPF UI\n\nVisual Studio allows you to add extensions that can be installed in several w"
  },
  {
    "path": "docs/documentation/fonticon.md",
    "chars": 612,
    "preview": "# FontIcon\n\n`FontIcon` is a control responsible for rendering icons based on the provided font.\n\n### Implementation\n\n```"
  },
  {
    "path": "docs/documentation/gallery-editor.md",
    "chars": 18,
    "preview": "# WPF UI - Editor\n"
  },
  {
    "path": "docs/documentation/gallery-monaco-editor.md",
    "chars": 25,
    "preview": "# WPF UI - Monaco Editor\n"
  },
  {
    "path": "docs/documentation/gallery.md",
    "chars": 247,
    "preview": "# WPF UI Gallery\n\n**WPF UI Gallery** is a free application available in the _Microsoft Store_, with which you can test a"
  },
  {
    "path": "docs/documentation/getting-started.md",
    "chars": 3288,
    "preview": "# Getting started\n\n## Adding dictionaries\n\n[XAML](https://docs.microsoft.com/en-us/dotnet/desktop/wpf/xaml/?view=netdesk"
  },
  {
    "path": "docs/documentation/icons.md",
    "chars": 2937,
    "preview": "# Fluent System Icons\n\nFluent System Icons is a set of icons that is designed to be used with Microsoft's Fluent Design "
  },
  {
    "path": "docs/documentation/index.md",
    "chars": 2007,
    "preview": "# WPF UI Docs\n\n**WPF UI** is a library built for [Windows Presentation Foundation (WPF)](https://docs.microsoft.com/en-u"
  },
  {
    "path": "docs/documentation/menu.md",
    "chars": 7,
    "preview": "# Menu\n"
  },
  {
    "path": "docs/documentation/navigation-view.md",
    "chars": 9981,
    "preview": "# NavigationView\n\n`NavigationView` is a top-level navigation control that provides a collapsible navigation pane (the \"h"
  },
  {
    "path": "docs/documentation/nuget.md",
    "chars": 1903,
    "preview": "# NuGet package for WPF UI\n\n## What's NuGet?\n\nNuGet is a free, open-source package management system for the Microsoft ."
  },
  {
    "path": "docs/documentation/releases.md",
    "chars": 100,
    "preview": "# WPF UI Releases\n\n| Version | Is supported |\n| ------- | ------------ |\n| 3.0.0   | Yes          |\n"
  },
  {
    "path": "docs/documentation/symbolicon.md",
    "chars": 587,
    "preview": "# SymbolIcon\n\n`SymbolIcon` is a control responsible for rendering icons.\n\n### Implementation\n\n```csharp\nclass Wpf.Ui.Con"
  },
  {
    "path": "docs/documentation/system-theme-watcher.md",
    "chars": 3280,
    "preview": "# SystemThemeWatcher\r\n\r\n`SystemThemeWatcher` automatically synchronizes the application's theme, accent color, and windo"
  },
  {
    "path": "docs/documentation/themes.md",
    "chars": 4305,
    "preview": "# Application Themes\n\nWPF UI provides a robust theming system that allows you to control your application's appearance, "
  },
  {
    "path": "docs/index.md",
    "chars": 5435,
    "preview": "<div class=\"spaced-page\">\n  <div class=\"row\">\n      <div class=\"col-12 col-lg-6\">\n          <div class=\"colorful\"><img s"
  },
  {
    "path": "docs/manifest.webmanifest",
    "chars": 927,
    "preview": "{\n    \"theme_color\": \"#1f1f23\",\n    \"background_color\": \"#1f1f23\",\n    \"display\": \"standalone\",\n    \"scope\": \"/\",\n    \"s"
  },
  {
    "path": "docs/migration/v2-migration.md",
    "chars": 2766,
    "preview": "# Migration plan\n\nThis page outlines key changes and important details to consider when migrating. It highlights what’s "
  },
  {
    "path": "docs/migration/v3-migration.md",
    "chars": 878,
    "preview": "# Migration plan\n\nThis page outlines key changes and important details to consider when migrating. It highlights what’s "
  },
  {
    "path": "docs/migration/v4-migration.md",
    "chars": 2136,
    "preview": "# Migration plan\n\nThis page outlines key changes and important details to consider when migrating. It highlights what’s "
  },
  {
    "path": "docs/robots.txt",
    "chars": 24,
    "preview": "User-agent: *\nDisallow:\n"
  },
  {
    "path": "docs/templates/.eslintrc.js",
    "chars": 468,
    "preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under "
  },
  {
    "path": "docs/templates/.gitignore",
    "chars": 81,
    "preview": "*.min.js\n*.min.css\n*.map\n*.woff\n*.woff2\n\nglyphicons-*.*\n\ndist\nfonts\nnode_modules\n"
  },
  {
    "path": "docs/templates/.stylelintrc.json",
    "chars": 276,
    "preview": "{\n  \"extends\": \"stylelint-config-standard-scss\",\n  \"ignoreFiles\": [\n    \"**/*.ts\"\n  ],\n  \"rules\": {\n    \"selector-class-"
  },
  {
    "path": "docs/templates/README.md",
    "chars": 74,
    "preview": "This folder contains the source code for website themes used by docfx.exe."
  },
  {
    "path": "docs/templates/build.js",
    "chars": 1857,
    "preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under "
  },
  {
    "path": "docs/templates/package.json",
    "chars": 1479,
    "preview": "{\n  \"name\": \"@docfx/template\",\n  \"version\": \"1.0.0\",\n  \"description\": \"Docfx static website templates\",\n  \"keywords\": [\n"
  },
  {
    "path": "docs/templates/tsconfig.json",
    "chars": 118,
    "preview": "{\n  \"compilerOptions\": {\n    \"removeComments\": true,\n    \"resolveJsonModule\": true,\n    \"esModuleInterop\": true\n  }\n}\n"
  },
  {
    "path": "docs/templates/wpfui/layout/_master.tmpl",
    "chars": 7063,
    "preview": "{{!Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the"
  },
  {
    "path": "docs/templates/wpfui/partials/class.header.tmpl.partial",
    "chars": 3998,
    "preview": "{{!Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the"
  },
  {
    "path": "docs/templates/wpfui/partials/class.memberpage.tmpl.partial",
    "chars": 703,
    "preview": "{{!Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the"
  },
  {
    "path": "docs/templates/wpfui/partials/class.tmpl.partial",
    "chars": 3336,
    "preview": "{{!Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the"
  },
  {
    "path": "docs/templates/wpfui/partials/collection.tmpl.partial",
    "chars": 157,
    "preview": "{{!Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the"
  },
  {
    "path": "docs/templates/wpfui/partials/customMREFContent.tmpl.partial",
    "chars": 357,
    "preview": "{{!Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the"
  },
  {
    "path": "docs/templates/wpfui/partials/enum.tmpl.partial",
    "chars": 446,
    "preview": "{{!Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the"
  },
  {
    "path": "docs/templates/wpfui/partials/item.tmpl.partial",
    "chars": 163,
    "preview": "{{!Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the"
  },
  {
    "path": "docs/templates/wpfui/partials/namespace.tmpl.partial",
    "chars": 649,
    "preview": "{{!Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the"
  },
  {
    "path": "docs/templates/wpfui/src/docfx.scss",
    "chars": 1232,
    "preview": "@import \"https://fonts.googleapis.com/css2?family=Montserrat:wght@100;300;500;700;900&family=Raleway:wght@300;500;700;90"
  },
  {
    "path": "docs/templates/wpfui/src/docfx.ts",
    "chars": 1249,
    "preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under "
  },
  {
    "path": "docs/templates/wpfui/src/dotnet.scss",
    "chars": 1728,
    "preview": "/**\n * Licensed to the .NET Foundation under one or more agreements.\n * The .NET Foundation licenses this file to you un"
  },
  {
    "path": "docs/templates/wpfui/src/helper.test.ts",
    "chars": 594,
    "preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under "
  },
  {
    "path": "docs/templates/wpfui/src/helper.ts",
    "chars": 1406,
    "preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under "
  },
  {
    "path": "docs/templates/wpfui/src/highlight.scss",
    "chars": 555,
    "preview": "/**\n * Licensed to the .NET Foundation under one or more agreements.\n * The .NET Foundation licenses this file to you un"
  },
  {
    "path": "docs/templates/wpfui/src/highlight.ts",
    "chars": 1699,
    "preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under "
  },
  {
    "path": "docs/templates/wpfui/src/layout.scss",
    "chars": 3523,
    "preview": "/**\n * Licensed to the .NET Foundation under one or more agreements.\n * The .NET Foundation licenses this file to you un"
  },
  {
    "path": "docs/templates/wpfui/src/markdown.scss",
    "chars": 1297,
    "preview": "/**\n * Licensed to the .NET Foundation under one or more agreements.\n * The .NET Foundation licenses this file to you un"
  },
  {
    "path": "docs/templates/wpfui/src/markdown.ts",
    "chars": 13596,
    "preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under "
  },
  {
    "path": "docs/templates/wpfui/src/mixins.scss",
    "chars": 450,
    "preview": "/**\n * Licensed to the .NET Foundation under one or more agreements.\n * The .NET Foundation licenses this file to you un"
  },
  {
    "path": "docs/templates/wpfui/src/nav.scss",
    "chars": 2166,
    "preview": "/**\n * Licensed to the .NET Foundation under one or more agreements.\n * The .NET Foundation licenses this file to you un"
  },
  {
    "path": "docs/templates/wpfui/src/nav.ts",
    "chars": 5217,
    "preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under "
  },
  {
    "path": "docs/templates/wpfui/src/options.d.ts",
    "chars": 1215,
    "preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under "
  },
  {
    "path": "docs/templates/wpfui/src/search-worker.ts",
    "chars": 2061,
    "preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under "
  },
  {
    "path": "docs/templates/wpfui/src/search.scss",
    "chars": 540,
    "preview": "/**\n * Licensed to the .NET Foundation under one or more agreements.\n * The .NET Foundation licenses this file to you un"
  },
  {
    "path": "docs/templates/wpfui/src/search.ts",
    "chars": 5709,
    "preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under "
  },
  {
    "path": "docs/templates/wpfui/src/theme.ts",
    "chars": 1771,
    "preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under "
  },
  {
    "path": "docs/templates/wpfui/src/toc.scss",
    "chars": 1531,
    "preview": "/**\n * Licensed to the .NET Foundation under one or more agreements.\n * The .NET Foundation licenses this file to you un"
  },
  {
    "path": "docs/templates/wpfui/src/toc.ts",
    "chars": 5501,
    "preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under "
  },
  {
    "path": "docs/templates/wpfui/src/wpfui-index-stats.ts",
    "chars": 284,
    "preview": "function updateBaseStats() {\n  console.debug('Index stats initialized')\n}\n\nexport function renderIndexStats() {\n  const "
  },
  {
    "path": "docs/templates/wpfui/src/wpfui.scss",
    "chars": 2987,
    "preview": ".h1,\n.h2,\n.h3,\n.h4,\n.h5,\nh1,\nh2,\nh3,\nh4,\nh5 {\n    font-family: Montserrat, -apple-system, BlinkMacSystemFont, Segoe UI, "
  },
  {
    "path": "docs/templates/wpfui/toc.json.js",
    "chars": 2727,
    "preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under "
  },
  {
    "path": "docs/templates/wpfui/toc.json.tmpl",
    "chars": 150,
    "preview": "{{!Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the"
  },
  {
    "path": "docs/toc.yml",
    "chars": 1131,
    "preview": "items:\n  - name: Home\n    href: /\n  - name: Documentation\n    href: /documentation\n    items:\n    - name: Getting starte"
  },
  {
    "path": "nuget.config",
    "chars": 415,
    "preview": "<configuration>\n  <packageRestore>\n    <add key=\"enabled\" value=\"True\" />\n    <add key=\"automatic\" value=\"True\" />\n  </p"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Console/GlobalUsings.cs",
    "chars": 435,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Console/Models/DataColor.cs",
    "chars": 378,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Console/Program.cs",
    "chars": 904,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Console/Utilities/ThemeUtilities.cs",
    "chars": 3019,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Console/Views/MainView.xaml",
    "chars": 2887,
    "preview": "<ui:FluentWindow\n  x:Class=\"Wpf.Ui.Demo.Console.Views.MainView\"\n  xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/pr"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Console/Views/MainView.xaml.cs",
    "chars": 672,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Console/Views/Pages/DashboardPage.xaml",
    "chars": 1214,
    "preview": "<Page\n  x:Class=\"Wpf.Ui.Demo.Console.Views.Pages.DashboardPage\"\n  xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/pr"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Console/Views/Pages/DashboardPage.xaml.cs",
    "chars": 969,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Console/Views/Pages/DataPage.xaml",
    "chars": 1580,
    "preview": "<Page\n  x:Class=\"Wpf.Ui.Demo.Console.Views.Pages.DataPage\"\n  xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/present"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Console/Views/Pages/DataPage.xaml.cs",
    "chars": 1337,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Console/Views/Pages/SettingsPage.xaml",
    "chars": 1473,
    "preview": "<Page\n  x:Class=\"Wpf.Ui.Demo.Console.Views.Pages.SettingsPage\"\n  xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/pre"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Console/Views/Pages/SettingsPage.xaml.cs",
    "chars": 1432,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Console/Views/SimpleView.xaml",
    "chars": 931,
    "preview": "<ui:FluentWindow\n  x:Class=\"Wpf.Ui.Demo.Console.Views.SimpleView\"\n  xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Console/Views/SimpleView.xaml.cs",
    "chars": 599,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Console/Wpf.Ui.Demo.Console.csproj",
    "chars": 685,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFramework>net472</Targe"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Dialogs/App.xaml",
    "chars": 208,
    "preview": "<Application\n  x:Class=\"Wpf.Ui.Demo.Dialogs.App\"\n  xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n  x"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Dialogs/App.xaml.cs",
    "chars": 332,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Dialogs/AssemblyInfo.cs",
    "chars": 395,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Dialogs/MainWindow.xaml",
    "chars": 967,
    "preview": "<Window\n  x:Class=\"Wpf.Ui.Demo.Dialogs.MainWindow\"\n  xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n "
  },
  {
    "path": "samples/Wpf.Ui.Demo.Dialogs/MainWindow.xaml.cs",
    "chars": 1326,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Dialogs/Wpf.Ui.Demo.Dialogs.csproj",
    "chars": 900,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>WinExe</OutputType>\n    <TargetFramework>net10.0-wi"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Dialogs/app.manifest",
    "chars": 3442,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<assembly manifestVersion=\"1.0\" xmlns=\"urn:schemas-microsoft-com:asm.v1\">\n  <asse"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Mvvm/App.xaml",
    "chars": 619,
    "preview": "<Application\n  x:Class=\"Wpf.Ui.Demo.Mvvm.App\"\n  xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n  xmln"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Mvvm/App.xaml.cs",
    "chars": 3912,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Mvvm/AssemblyInfo.cs",
    "chars": 372,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Mvvm/GlobalUsings.cs",
    "chars": 630,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Mvvm/Helpers/EnumToBooleanConverter.cs",
    "chars": 1370,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Mvvm/Models/AppConfig.cs",
    "chars": 447,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Mvvm/Models/DataColor.cs",
    "chars": 405,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with t"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Mvvm/Services/ApplicationHostService.cs",
    "chars": 1768,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Mvvm/ViewModels/DashboardViewModel.cs",
    "chars": 514,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Mvvm/ViewModels/DataViewModel.cs",
    "chars": 1321,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Mvvm/ViewModels/MainWindowViewModel.cs",
    "chars": 2179,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Mvvm/ViewModels/SettingsViewModel.cs",
    "chars": 2133,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Mvvm/ViewModels/ViewModel.cs",
    "chars": 1150,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Mvvm/Views/MainWindow.xaml",
    "chars": 2812,
    "preview": "<ui:FluentWindow\n  x:Class=\"Wpf.Ui.Demo.Mvvm.Views.MainWindow\"\n  xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/pre"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Mvvm/Views/MainWindow.xaml.cs",
    "chars": 1799,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Mvvm/Views/Pages/DashboardPage.xaml",
    "chars": 1382,
    "preview": "<Page\n  x:Class=\"Wpf.Ui.Demo.Mvvm.Views.Pages.DashboardPage\"\n  xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/prese"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Mvvm/Views/Pages/DashboardPage.xaml.cs",
    "chars": 743,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Mvvm/Views/Pages/DataPage.xaml",
    "chars": 1715,
    "preview": "<Page\n  x:Class=\"Wpf.Ui.Demo.Mvvm.Views.Pages.DataPage\"\n  xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentati"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Mvvm/Views/Pages/DataPage.xaml.cs",
    "chars": 713,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Mvvm/Views/Pages/SettingsPage.xaml",
    "chars": 2080,
    "preview": "<Page\n  x:Class=\"Wpf.Ui.Demo.Mvvm.Views.Pages.SettingsPage\"\n  xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/prese"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Mvvm/Views/Pages/SettingsPage.xaml.cs",
    "chars": 737,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Mvvm/Wpf.Ui.Demo.Mvvm.csproj",
    "chars": 1337,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>WinExe</OutputType>\n    <TargetFramework>net10.0-wi"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Mvvm/app.manifest",
    "chars": 3440,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<assembly manifestVersion=\"1.0\" xmlns=\"urn:schemas-microsoft-com:asm.v1\">\n  <ass"
  },
  {
    "path": "samples/Wpf.Ui.Demo.SetResources.Simple/App.xaml",
    "chars": 285,
    "preview": "<Application\n  x:Class=\"Wpf.Ui.Demo.SetResources.Simple.App\"\n  xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/prese"
  },
  {
    "path": "samples/Wpf.Ui.Demo.SetResources.Simple/App.xaml.cs",
    "chars": 942,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with t"
  },
  {
    "path": "samples/Wpf.Ui.Demo.SetResources.Simple/AssemblyInfo.cs",
    "chars": 695,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "samples/Wpf.Ui.Demo.SetResources.Simple/MainWindow.xaml",
    "chars": 3962,
    "preview": "<ui:FluentWindow\n  x:Class=\"Wpf.Ui.Demo.SetResources.Simple.MainWindow\"\n  xmlns=\"http://schemas.microsoft.com/winfx/2006"
  },
  {
    "path": "samples/Wpf.Ui.Demo.SetResources.Simple/MainWindow.xaml.cs",
    "chars": 750,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "samples/Wpf.Ui.Demo.SetResources.Simple/Models/DataColor.cs",
    "chars": 420,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with t"
  },
  {
    "path": "samples/Wpf.Ui.Demo.SetResources.Simple/Models/DataGroup.cs",
    "chars": 632,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with t"
  },
  {
    "path": "samples/Wpf.Ui.Demo.SetResources.Simple/Views/Pages/DashboardPage.xaml",
    "chars": 1124,
    "preview": "<Page\n  x:Class=\"Wpf.Ui.Demo.SetResources.Simple.Views.Pages.DashboardPage\"\n  xmlns=\"http://schemas.microsoft.com/winfx/"
  },
  {
    "path": "samples/Wpf.Ui.Demo.SetResources.Simple/Views/Pages/DashboardPage.xaml.cs",
    "chars": 969,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "samples/Wpf.Ui.Demo.SetResources.Simple/Views/Pages/DataPage.xaml",
    "chars": 1542,
    "preview": "<Page\n  x:Class=\"Wpf.Ui.Demo.SetResources.Simple.Views.Pages.DataPage\"\n  xmlns=\"http://schemas.microsoft.com/winfx/2006/"
  },
  {
    "path": "samples/Wpf.Ui.Demo.SetResources.Simple/Views/Pages/DataPage.xaml.cs",
    "chars": 1429,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "samples/Wpf.Ui.Demo.SetResources.Simple/Views/Pages/ExpanderPage.xaml",
    "chars": 2287,
    "preview": "<Page\n  x:Class=\"Wpf.Ui.Demo.SetResources.Simple.Views.Pages.ExpanderPage\"\n  xmlns=\"http://schemas.microsoft.com/winfx/"
  },
  {
    "path": "samples/Wpf.Ui.Demo.SetResources.Simple/Views/Pages/ExpanderPage.xaml.cs",
    "chars": 1421,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with t"
  },
  {
    "path": "samples/Wpf.Ui.Demo.SetResources.Simple/Views/Pages/SettingsPage.xaml",
    "chars": 1384,
    "preview": "<Page\n  x:Class=\"Wpf.Ui.Demo.SetResources.Simple.Views.Pages.SettingsPage\"\n  xmlns=\"http://schemas.microsoft.com/winfx/"
  },
  {
    "path": "samples/Wpf.Ui.Demo.SetResources.Simple/Views/Pages/SettingsPage.xaml.cs",
    "chars": 1377,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "samples/Wpf.Ui.Demo.SetResources.Simple/Wpf.Ui.Demo.SetResources.Simple.csproj",
    "chars": 1080,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>WinExe</OutputType>\n    <TargetFramework>net10.0-wi"
  },
  {
    "path": "samples/Wpf.Ui.Demo.SetResources.Simple/app.manifest",
    "chars": 3442,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<assembly manifestVersion=\"1.0\" xmlns=\"urn:schemas-microsoft-com:asm.v1\">\n  <ass"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Simple/App.xaml",
    "chars": 550,
    "preview": "<Application\n  x:Class=\"Wpf.Ui.Demo.Simple.App\"\n  xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n  xm"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Simple/App.xaml.cs",
    "chars": 399,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with t"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Simple/AssemblyInfo.cs",
    "chars": 695,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Simple/MainWindow.xaml",
    "chars": 3653,
    "preview": "<ui:FluentWindow\n  x:Class=\"Wpf.Ui.Demo.Simple.MainWindow\"\n  xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/present"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Simple/MainWindow.xaml.cs",
    "chars": 676,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Simple/Models/DataColor.cs",
    "chars": 407,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with t"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Simple/Views/Pages/DashboardPage.xaml",
    "chars": 1172,
    "preview": "<Page\n  x:Class=\"Wpf.Ui.Demo.Simple.Views.Pages.DashboardPage\"\n  xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/pre"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Simple/Views/Pages/DashboardPage.xaml.cs",
    "chars": 925,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Simple/Views/Pages/DataPage.xaml",
    "chars": 1577,
    "preview": "<Page\n  x:Class=\"Wpf.Ui.Demo.Simple.Views.Pages.DataPage\"\n  xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presenta"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Simple/Views/Pages/DataPage.xaml.cs",
    "chars": 1372,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Simple/Views/Pages/SettingsPage.xaml",
    "chars": 1432,
    "preview": "<Page\n  x:Class=\"Wpf.Ui.Demo.Simple.Views.Pages.SettingsPage\"\n  xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/pre"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Simple/Views/Pages/SettingsPage.xaml.cs",
    "chars": 1409,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Simple/Wpf.Ui.Demo.Simple.csproj",
    "chars": 1080,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>WinExe</OutputType>\n    <TargetFramework>net10.0-wi"
  },
  {
    "path": "samples/Wpf.Ui.Demo.Simple/app.manifest",
    "chars": 3442,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<assembly manifestVersion=\"1.0\" xmlns=\"urn:schemas-microsoft-com:asm.v1\">\n  <ass"
  },
  {
    "path": "src/Wpf.Ui/Animations/AnimationProperties.cs",
    "chars": 935,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with t"
  },
  {
    "path": "src/Wpf.Ui/Animations/Transition.cs",
    "chars": 894,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "src/Wpf.Ui/Animations/TransitionAnimationProvider.cs",
    "chars": 6849,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "src/Wpf.Ui/Appearance/ApplicationAccentColorManager.cs",
    "chars": 14094,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "src/Wpf.Ui/Appearance/ApplicationTheme.cs",
    "chars": 771,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "src/Wpf.Ui/Appearance/ApplicationThemeManager.cs",
    "chars": 10510,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  },
  {
    "path": "src/Wpf.Ui/Appearance/ObservedWindow.cs",
    "chars": 2409,
    "preview": "// This Source Code Form is subject to the terms of the MIT License.\n// If a copy of the MIT was not distributed with th"
  }
]

// ... and 865 more files (download for full content)

About this extraction

This page contains the full source code of the lepoco/wpfui GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1065 files (15.7 MB), approximately 4.2M tokens, and a symbol index with 22032 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!