From 6d49af8b925128131084cd9787bced64f064532f Mon Sep 17 00:00:00 2001 From: Jerome Laban Date: Mon, 3 Jan 2022 14:29:27 -0500 Subject: [PATCH] perf: Merge all system resource dictionaries to improve lookup performance --- .../XamlGenerator/XamlCodeGeneration.cs | 12 +- .../XamlGenerator/XamlFileGenerator.cs | 4 +- .../XamlGlobalStaticResourcesMap.cs | 16 +- src/Uno.UI/Generated/mergedpages.xaml | 22251 ++++++++++++++++ src/Uno.UI/Uno.UI.Skia.csproj | 1 + src/Uno.UI/Uno.UI.Wasm.csproj | 1 + src/Uno.UI/Uno.UI.csproj | 1 + src/Uno.UI/Uno.UI.net6.csproj | 1 + src/Uno.UI/XamlMerge.targets | 24 + 9 files changed, 22284 insertions(+), 27 deletions(-) create mode 100644 src/Uno.UI/Generated/mergedpages.xaml create mode 100644 src/Uno.UI/XamlMerge.targets diff --git a/src/SourceGenerators/Uno.UI.SourceGenerators/XamlGenerator/XamlCodeGeneration.cs b/src/SourceGenerators/Uno.UI.SourceGenerators/XamlGenerator/XamlCodeGeneration.cs index dfa15d0cb039..5c59bf96963f 100644 --- a/src/SourceGenerators/Uno.UI.SourceGenerators/XamlGenerator/XamlCodeGeneration.cs +++ b/src/SourceGenerators/Uno.UI.SourceGenerators/XamlGenerator/XamlCodeGeneration.cs @@ -80,16 +80,6 @@ private bool IsUnoAssembly private bool IsUnoFluentAssembly => _defaultNamespace == "Uno.UI.FluentTheme" || _defaultNamespace.StartsWith("Uno.UI.FluentTheme.v"); - /// - /// Resource files that should be initialized first, in given order, because other resource declarations depend on them. - /// - private static readonly string[] _baseResourceDependencies = new[] - { - "SystemResources.xaml", - "Generic.xaml", - "Generic.Native.xaml", - }; - private const string WinUIThemeResourcePathSuffixFormatString = "themeresources_v{0}.xaml"; private static string WinUICompactPathSuffix = Path.Combine("DensityStyles", "Compact.xaml"); @@ -696,7 +686,7 @@ private string GenerateGlobalResources(IEnumerable files, Xa if (IsUnoAssembly && _xamlSourceFiles.Any()) { // Build master dictionary - foreach (var dictProperty in map.GetAllDictionaryProperties(_baseResourceDependencies)) + foreach (var dictProperty in map.GetAllDictionaryProperties()) { writer.AppendLineInvariant("MasterDictionary.MergedDictionaries.Add({0});", dictProperty); } diff --git a/src/SourceGenerators/Uno.UI.SourceGenerators/XamlGenerator/XamlFileGenerator.cs b/src/SourceGenerators/Uno.UI.SourceGenerators/XamlGenerator/XamlFileGenerator.cs index 72dc598785d0..8eacf84d19c1 100644 --- a/src/SourceGenerators/Uno.UI.SourceGenerators/XamlGenerator/XamlFileGenerator.cs +++ b/src/SourceGenerators/Uno.UI.SourceGenerators/XamlGenerator/XamlFileGenerator.cs @@ -1253,7 +1253,7 @@ private void BuildTopLevelResourceDictionaryInitializers(IIndentedStringBuilder { var key = GetDictionaryResourceKey(resource); - if (key == null) + if (key == null || resource.Members.Any(m => m.Member.Name == "IsNativeStyle")) { continue; } @@ -1277,7 +1277,7 @@ private void BuildTopLevelResourceDictionaryInitializers(IIndentedStringBuilder { var key = GetDictionaryResourceKey(resource); - if (key == null) + if (key == null || resource.Members.Any(m => m.Member.Name == "IsNativeStyle")) { continue; } diff --git a/src/SourceGenerators/Uno.UI.SourceGenerators/XamlGenerator/XamlGlobalStaticResourcesMap.cs b/src/SourceGenerators/Uno.UI.SourceGenerators/XamlGenerator/XamlGlobalStaticResourcesMap.cs index 2bb036b50bc9..1943e9e1f072 100644 --- a/src/SourceGenerators/Uno.UI.SourceGenerators/XamlGenerator/XamlGlobalStaticResourcesMap.cs +++ b/src/SourceGenerators/Uno.UI.SourceGenerators/XamlGenerator/XamlGlobalStaticResourcesMap.cs @@ -40,20 +40,8 @@ internal void Add(string staticResourceKey, string ns, ResourcePrecedence preced /// File names of the ResourceDictionaries whose properties should be returned first. /// Files which shouldn't be included in the default system resources /// This is used when building Uno.UI itself to create a master dictionary of system resources. - internal IEnumerable GetAllDictionaryProperties(string[] initialFiles) - { - var initialProperties = initialFiles.Select(f => - _rdMap.First(kvp => - kvp.Key.EndsWith(f, StringComparison.InvariantCultureIgnoreCase) - ) - ) - .ToArray(); - - return initialProperties.Concat( - _rdMap.Except(initialProperties) - ) - .Select(kvp => ConvertIdToResourceDictionaryProperty(kvp.Value.UniqueID)); - } + internal IEnumerable GetAllDictionaryProperties() + => _rdMap.Select(kvp => ConvertIdToResourceDictionaryProperty(kvp.Value.UniqueID)); /// /// Gets the name of a GlobalStaticResources property associated with a ResourceDictionary.Source designation. Throws an exception if none is found. diff --git a/src/Uno.UI/Generated/mergedpages.xaml b/src/Uno.UI/Generated/mergedpages.xaml new file mode 100644 index 000000000000..2624a60a7274 --- /dev/null +++ b/src/Uno.UI/Generated/mergedpages.xaml @@ -0,0 +1,22251 @@ + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + 0 + + + + + 4 + 4 + 16 + 11 + 8 + 12 + 0,0,0,0 + 4,0,4,2 + 4,0,4,2 + 4,4,4,4 + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2,2,2,2 + 4,4,4,4 + #33FFFFFF + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 32 + #FFFFFF + #C5FFFFFF + #87FFFFFF + #5DFFFFFF + #E4000000 + #5DFFFFFF + #FFFFFF + #000000 + #80000000 + #87FFFFFF + #0FFFFFFF + #15FFFFFF + #08FFFFFF + #0BFFFFFF + #00FFFFFF + #B31E1E1E + #8BFFFFFF + #3FFFFFFF + #454545 + #00FFFFFF + #0FFFFFFF + #0AFFFFFF + #00FFFFFF + #00FFFFFF + #19000000 + #0BFFFFFF + #12FFFFFF + #00FFFFFF + #B31C1C1C + #1A1A1A + #131313 + #1E1E1E + #28FFFFFF + #12FFFFFF + #18FFFFFF + #14FFFFFF + #23000000 + #37000000 + #33000000 + #6B000000 + #19000000 + #1C1C1C + #8BFFFFFF + #28FFFFFF + #66757575 + #33000000 + #0F000000 + #15FFFFFF + #FFFFFF + #B3000000 + #0DFFFFFF + #08FFFFFF + #4D000000 + #4C3A3A3A + #0DFFFFFF + #09FFFFFF + #09FFFFFF + #202020 + #1C1C1C + #282828 + #2C2C2C + #00202020 + #6CCB5F + #FCE100 + #FF99A4 + #8BFFFFFF + #9D9D9D + #08FFFFFF + #393D1B + #433519 + #442726 + #08FFFFFF + #2E2E2E + #2E2E2E + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 24 + 48 + 56 + 24 + 40 + 3 + 0,0,0,0 + 0,0,0,0 + 0,0,0,0 + 0,0,0,0 + 3,0,3,0 + 48 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 160 + 240 + 480 + 198 + + + + + + + 1 + 0,0,0,1 + 0,1,0,0 + 0 + 0 + 0 + + 1 + 1,1,1,0 + 1,0,1,1 + 80 + 1 + 20 + 20 + 0,0,0,4 + Normal + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 0 + + + + + 44,0,0,0 + 12,11,0,13 + 24,0,0,0 + 28,0,0,0 + 12,4,12,4 + + + + + + + + + + + + + + + + + + + + + + + 56,0,0,0 + + + + + + 1 + 11,9,11,10 + 11,4,11,7 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0.8 + 1.0 + 0 + 2 + + + + + + + + #FF3399FF + #FF0078D7 + + #FF429CE3 + #FF76B9ED + #FFA6D8FF + #FF005A9E + #FF004275 + #FF002642 + #FFF0F0F0 + #FF000000 + #FF6D6D6D + #FFFFFFFF + #FF0066CC + #FFFFFFFF + #FF000000 + XamlAutoFontFamily + XamlAutoFontFamily + Segoe WP + Segoe WP SemiLight + XamlAutoFontFamily + XamlAutoFontFamily + XamlAutoFontFamily + true + ms-appx:///Assets/Fonts/uno-fluentui-assets.ttf#Symbols + 2 + 0 + 21 + 64 + 80 + 240 + 15 + 15 + 320 + 548 + 184 + 756 + 130 + 202 + 32 + 56 + 4 + 34 + 20 + 15 + 80 + -40.5 + 0.55 + 0.80 + 0.80 + 0.50 + 0.95 + 10.0 + 16.0 + 4 + 1 + 32 + 42 + 180 + 12 + 48 + 48 + 96 + 16 + 21 + 62 + -112 + 42 + 289 + 96 + 8 + 16 + 24 + 40 + 15 + 0.6 + 4 + 2 + 0 + 15 + 32 + 32 + 270 + 300 + 28 + 4 + 26.667 + 4 + 2 + 320 + 48 + 0.8 + 0.45 + 0.5625 + 0.87 + 0.73 + 0.839 + 0.4 + 0.6 + 1 + 32 + 64 + 18.14 + 25.5 + 80 + 12 + 44 + 44 + 20 + 20 + 0 + 88 + 44 + 44 + 44 + -25 + 1 + 0,2,0,2 + -1,0,-1,0 + 12,11,0,13 + 2 + 2 + 1 + 0,7,0,7 + 0,0,0,8 + 2 + 11,5,11,7 + 11,11,11,13 + 11,11,11,13 + 1 + 24,0,0,24 + 4,0,24,24 + 24,0,24,0 + 0,0,0,24 + 24,18,24,0 + 1 + 0 + 0,37,0,0 + 0,19,0,0 + 19,0,19,17.5 + 0 + 4 + 2.5 + 0,0,0,9 + 24,0,0,11 + 0 + 0 + 0,9.5,0,0 + 0,0,0,19 + 4 + 19,19,19,0 + 19,37,19,0 + 0,0,0,32.5 + 12,0,12,0 + 12,0,12,0 + 12,14,0,13 + 0 + 0,6,0,0 + 12,14,0,13 + 0 + 2 + 1 + 12,11,8,13 + 12,11,8,13 + 12,11,8,13 + 0,0,12,0 + 12,4,8,4 + 0,2,0,0 + 2 + 0 + 0 + 0,0,1,0 + 1,0,0,0 + 2 + 0,9.5,0,9.5 + 10,3,6,5 + 0,0,-2,0 + 12,5,10,5 + 0,0,0,8 + 0,0,20,0 + 20,0,0,0 + 2 + 1 + Normal + SemiLight + SemiLight + Bold + Normal + Normal + Normal + Normal + Light + Normal + False + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 00:00:00.1 + 00:00:00.40 + 00:00:02.00 + 00:00:02 + 00:00:00.1 + 00:00:02.1 + 16 + 0.125 + -2 + 8 + 00:00:00.40 + 00:00:00.1 + 00:00:02.00 + 00:00:02 + 00:00:00.1 + 00:00:02.1 + #FF000000 + #33000000 + #99000000 + #CC000000 + #66000000 + #FFFFFFFF + #33FFFFFF + #99FFFFFF + #CCFFFFFF + #66FFFFFF + #FFF2F2F2 + #FF000000 + #33000000 + #66000000 + #CC000000 + #FF333333 + #FF858585 + #FF767676 + #FF171717 + #FF1F1F1F + #FF2B2B2B + #FFFFFFFF + #FF767676 + #19FFFFFF + #33FFFFFF + #FFF000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 12 + 374 + 0 + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #F2000000 + #30000000 + #91000000 + #C2000000 + #61000000 + #F2FFFFFF + #30FFFFFF + #91FFFFFF + #C2FFFFFF + #61FFFFFF + #F2F9F9F9 + #F2000000 + #30000000 + #61000000 + #C2000000 + #F2767676 + #F21F1F1F + #F2393939 + #F22B2B2B + #F2FFFFFF + #F2767676 + #18FFFFFF + #30FFFFFF + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #FF323232 + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + 0 + + + + + 4 + 4 + 16 + 11 + 9 + 12 + 0,0,0,0 + 4,0,4,2 + 4,0,4,2 + 4,4,4,4 + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2,2,2,2 + 4,4,4,4 + #29C50500 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 32 + #E4000000 + #9E000000 + #72000000 + #5C000000 + #FFFFFF + #5C000000 + #FFFFFF + #FFFFFF + #B3FFFFFF + #FFFFFF + #B3FFFFFF + #80F9F9F9 + #4DF9F9F9 + #4DF9F9F9 + #00FFFFFF + #FFFFFF + #72000000 + #51000000 + #FFFFFF + #00FFFFFF + #09000000 + #06000000 + #00FFFFFF + #00FFFFFF + #06000000 + #0F000000 + #18000000 + #00FFFFFF + #C9FFFFFF + #F3F3F3 + #EBEBEB + #00FFFFFF + #37000000 + #0F000000 + #29000000 + #14FFFFFF + #66000000 + #37000000 + #0F000000 + #59FFFFFF + #0F000000 + #EBEBEB + #72000000 + #37000000 + #66757575 + #0F000000 + #15FFFFFF + #0F000000 + #E4000000 + #B3FFFFFF + #B3FFFFFF + #80F6F6F6 + #4D000000 + #80FFFFFF + #FFFFFF + #40FFFFFF + #40FFFFFF + #F3F3F3 + #EEEEEE + #F9F9F9 + #FFFFFF + #00F3F3F3 + #0F7B0F + #9D5D00 + #C42B1C + #72000000 + #8A8A8A + #80F6F6F6 + #DFF6DD + #FFF4CE + #FDE7E9 + #06000000 + #F7F7F7 + #F3F3F3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 24 + 48 + 56 + 24 + 40 + 3 + 0,0,0,0 + 0,0,0,0 + 0,0,0,0 + 0,0,0,0 + 3,0,3,0 + 48 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 160 + 240 + 480 + 198 + + + + + + + 1 + 0,0,0,1 + 0,1,0,0 + 0 + 0 + 0 + + 1 + 1,1,1,0 + 1,0,1,1 + 80 + 1 + 20 + 20 + 0,0,0,4 + Normal + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 0 + + + + + 44,0,0,0 + 12,11,0,13 + 24,0,0,0 + 28,0,0,0 + 12,4,12,4 + + + + + + + + + + + + + + + + + + + + + + + 56,0,0,0 + + + + + + 1 + 11,9,11,10 + 11,4,11,7 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0.8 + 1.0 + 0 + 2 + + + + + + + + #FF1AEBFF + #FF0078D7 + + #FF429CE3 + #FF76B9ED + #FFA6D8FF + #FF005A9E + #FF004275 + #FF002642 + #FF000000 + #FFFFFFFF + #FF3FF23F + #FF000000 + #FFFFFF00 + #FF000000 + #FF000000 + XamlAutoFontFamily + XamlAutoFontFamily + Segoe WP + Segoe WP SemiLight + XamlAutoFontFamily + XamlAutoFontFamily + XamlAutoFontFamily + true + ms-appx:///Assets/Fonts/uno-fluentui-assets.ttf#Symbols + 2 + 0 + 21 + 64 + 80 + 240 + 15 + 15 + 320 + 548 + 184 + 756 + 130 + 202 + 32 + 56 + 4 + 34 + 20 + 15 + 80 + -40.5 + 0.55 + 0.80 + 0.80 + 0.50 + 0.95 + 10.0 + 16.0 + 4 + 1 + 32 + 42 + 180 + 12 + 48 + 48 + 96 + 16 + 21 + 62 + -112 + 42 + 289 + 96 + 8 + 16 + 24 + 40 + 15 + 0.6 + 4 + 2 + 0 + 15 + 32 + 32 + 270 + 300 + 28 + 4 + 26.667 + 4 + 2 + 320 + 48 + 0.8 + 0.45 + 0.5625 + 0.87 + 0.73 + 0.839 + 0.4 + 0.6 + 1 + 32 + 64 + 18.14 + 25.5 + 80 + 12 + 44 + 44 + 20 + 20 + 0 + 88 + 44 + 44 + 44 + -25 + 1 + 0,2,0,2 + -1,0,-1,0 + 12,11,0,13 + 2 + 2 + 1 + 0,7,0,7 + 0,0,0,8 + 2 + 11,5,11,7 + 11,11,11,13 + 11,11,11,13 + 1 + 24,0,0,24 + 4,0,24,24 + 24,0,24,0 + 0,0,0,24 + 24,18,24,0 + 1 + 0 + 0,37,0,0 + 0,19,0,0 + 19,0,19,17.5 + 0 + 4 + 2.5 + 0,0,0,9 + 24,0,0,11 + 0 + 0 + 0,9.5,0,0 + 0,0,0,19 + 4 + 19,19,19,0 + 19,37,19,0 + 0,0,0,32.5 + 12,0,12,0 + 12,0,12,0 + 12,14,0,13 + 0 + 0,6,0,0 + 12,14,0,13 + 0 + 0 + 1 + 12,11,8,13 + 12,11,8,13 + 12,11,8,13 + 0,0,12,0 + 12,4,8,4 + 0,2,0,0 + 2 + 0 + 0 + 0,0,1,0 + 1,0,0,0 + 2 + 0,9.5,0,9.5 + 10,3,6,5 + 0,0,-2,0 + 12,5,10,5 + 0,0,0,8 + 0,0,20,0 + 20,0,0,0 + 2 + 1 + Normal + SemiLight + SemiLight + Bold + Normal + Normal + Normal + Normal + Light + Normal + False + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 00:00:00.1 + 00:00:00.40 + 00:00:02.00 + 00:00:02 + 00:00:00.1 + 00:00:02.1 + 16 + 0.125 + -2 + 8 + 00:00:00.40 + 00:00:00.1 + 00:00:02.00 + 00:00:02 + 00:00:00.1 + 00:00:02.1 + #FFFFFFFF + #33FFFFFF + #99FFFFFF + #CCFFFFFF + #66FFFFFF + #FF000000 + #33000000 + #99000000 + #CC000000 + #66000000 + #FF171717 + #FF000000 + #33000000 + #66000000 + #CC000000 + #FFCCCCCC + #FF7A7A7A + #FFCCCCCC + #FFF2F2F2 + #FFE6E6E6 + #FFF2F2F2 + #FFFFFFFF + #19000000 + #33000000 + #C50500 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 12 + 374 + 0 + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #E6FFFFFF + #2EFFFFFF + #8AFFFFFF + #B8FFFFFF + #61FFFFFF + #E6000000 + #2E000000 + #8A000000 + #B8000000 + #61000000 + #E6171717 + #E6000000 + #2E000000 + #66000000 + #B8000000 + #E6CCCCCC + #E6F2F2F2 + #E6E6E6E6 + #E6F2F2F2 + #E6FFFFFF + #E6767676 + #17000000 + #2E000000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #FFE6E6E6 + + + + + + + + + + + + + + + + + + + + + 2 + + + + + + + + + + 2 + + + + + 4 + 4 + 16 + 11 + 9 + 12 + 0,0,0,0 + 4,0,4,2 + 4,0,4,2 + 4,4,4,4 + + + + + + + + + + + + + 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2,2,2,2 + 4,4,4,4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 32 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + #FF0000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 24 + 48 + 56 + 24 + 40 + 3 + 0,2,0,0 + 0,0,0,0 + 0,0,0,2 + 0,0,0,0 + 3,0,3,0 + 48 + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + 160 + 240 + 480 + 198 + + + + + + + 1 + 0,0,0,1 + 0,1,0,0 + 0 + 0 + 0 + + 1 + 1,1,1,0 + 1,0,1,1 + + + + + + + + + + + + + + + + + + + + + + + + 80 + 1 + 20 + 20 + 0,0,0,4 + Normal + + + 1 + + + + + + + + + + + + + + + 2 + + + + + 44,0,0,0 + + + + + + + + + + + + + + + + + + + + + + + 12,11,0,13 + 24,0,0,0 + 28,0,0,0 + 12,4,12,4 + 56,0,0,0 + + + + + + + 1 + 1 + 11,9,11,10 + 11,4,11,7 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1.0 + 1.0 + 1 + 2 + + + + + + + + #FF1AEBFF + #FF0078D7 + + #FF429CE3 + #FF76B9ED + #FFA6D8FF + #FF005A9E + #FF004275 + #FF002642 + #FF000000 + #FFFFFFFF + #FF3FF23F + #FF000000 + #FFFFFF00 + #FF000000 + #FF000000 + XamlAutoFontFamily + XamlAutoFontFamily + Segoe WP + Segoe WP SemiLight + XamlAutoFontFamily + XamlAutoFontFamily + XamlAutoFontFamily + true + ms-appx:///Assets/Fonts/uno-fluentui-assets.ttf#Symbols + 2 + 0 + 21 + 64 + 80 + 240 + 15 + 15 + 320 + 548 + 184 + 756 + 130 + 202 + 32 + 56 + 4 + 34 + 20 + 15 + 80 + -40.5 + 0.55 + 0.80 + 0.80 + 0.50 + 0.95 + 10.0 + 16.0 + 4 + 1 + 32 + 42 + 180 + 12 + 48 + 48 + 96 + 16 + 21 + 62 + -112 + 42 + 289 + 96 + 8 + 16 + 24 + 40 + 15 + 0.6 + 4 + 2 + 0 + 15 + 32 + 32 + 270 + 300 + 28 + 4 + 26.667 + 4 + 2 + 320 + 48 + 0.8 + 0.45 + 0.5625 + 0.87 + 0.73 + 0.839 + 0.4 + 0.6 + 1 + 32 + 64 + 18.14 + 25.5 + 80 + 12 + 44 + 44 + 20 + 20 + 0 + 88 + 44 + 44 + 44 + -25 + 1 + 0,2,0,2 + -1,0,-1,0 + 12,11,0,13 + 2 + 2 + 1 + 0,7,0,7 + 0,0,0,8 + 2 + 11,5,11,7 + 11,11,11,13 + 11,11,11,13 + 1 + 24,0,0,24 + 4,0,24,24 + 24,0,24,0 + 0,0,0,24 + 24,18,24,0 + 1 + 0 + 0,37,0,0 + 0,19,0,0 + 19,0,19,17.5 + 0 + 4 + 2.5 + 0,0,0,9 + 24,0,0,11 + 0 + 0 + 0,9.5,0,0 + 0,0,0,19 + 4 + 19,19,19,0 + 19,37,19,0 + 0,0,0,32.5 + 12,0,12,0 + 12,0,12,0 + 12,14,0,13 + 0 + 0,6,0,0 + 12,14,0,13 + 0 + 2 + 1 + 12,11,8,13 + 12,11,8,13 + 12,11,8,13 + 0,0,12,0 + 12,4,8,4 + 0,2,0,0 + 2 + 0 + 0 + 0,0,1,0 + 1,0,0,0 + 2 + 0,9.5,0,9.5 + 10,3,6,5 + 0,0,-2,0 + 12,5,10,5 + 0,0,0,8 + 0,0,20,0 + 20,0,0,0 + 2 + 1 + Normal + SemiLight + SemiLight + Bold + Normal + Normal + Normal + Normal + Light + Normal + False + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 00:00:00.1 + 00:00:00.40 + 00:00:02.00 + 00:00:02 + 00:00:00.1 + 00:00:02.1 + 16 + 0.125 + -2 + 8 + 00:00:00.40 + 00:00:00.1 + 00:00:02.00 + 00:00:02 + 00:00:00.1 + 00:00:02.1 + #FF000000 + #33000000 + #99000000 + #CC000000 + #66000000 + #FFFFFFFF + #33FFFFFF + #99FFFFFF + #CCFFFFFF + #66FFFFFF + #FFF9F9F9 + #FF000000 + #33000000 + #66000000 + #CC000000 + #FF333333 + #FF7A7A7A + #FF767676 + #FF1F1F1F + #FF393939 + #FF2B2B2B + #FFFFFFFF + #FF767676 + #19FFFFFF + #33FFFFFF + #FFF000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 12 + 374 + 0 + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #FF000000 + #33000000 + #99000000 + #CC000000 + #66000000 + #FFFFFFFF + #33FFFFFF + #99FFFFFF + #CCFFFFFF + #66FFFFFF + #FFF9F9F9 + #FF000000 + #33000000 + #66000000 + #CC000000 + #FF767676 + #FF1F1F1F + #FF393939 + #FF2B2B2B + #FFFFFFFF + #FF767676 + #19FFFFFF + #33FFFFFF + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #FF323232 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 48 + Stretch + Center + 16,0,0,0 + 20,0,8,0 + + + 32 + 12 + 16 + 1,0,1,1 + 1,1,1,0 + + + + + + + + + + + + + + + + + + + + + + + + + + + 14 + SemiBold + 14 + Normal + 40 + 32 + 16 + + + + + 12,0,0,0 + 0,10,10,10 + 20 + 0,0,12,0 + 0,0,0,0 + 0,10,0,10 + 0,10,0,0 + 0,10,0,0 + 8,10,0,0 + 0,4,0,0 + 12,8,0,0 + 0,12,0,0 + 96 + 24 + 8,0,8,1 + 2 + 14 + 24 + 0,0,0,1 + Cancel + + 40 + 40 + + + 10,0,16,0 + 12,0,12,0 + 40 + 40 + 40 + 40 + 40 + 48 + 48 + 40 + 40 + 4 + 1 + 1 + 1 + 1 + 12,0,12,0 + 10,0,0,0 + 8,5,0,0 + 12,5,0,11 + 8,4,0,0 + 0 + 0 + 16,10 + 16,10 + 10,0 + 0 + 0,0,20,0 + 0,0,0,0 + 8,0,16,0 + 12,0 + -20,0,6,0 + -16,0,0,0 + 0,0,0,0 + -12,0,0,0 + 12,0,20,0 + 16,0,20,0 + -4,0,6,0 + 12,0,12,0 + 0,8 + 0,8 + 12.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Visible + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 40 + + + + + + 1 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Visible + + + + + + + + + + + Visible + + + + + + + + + + + + + Visible + + + + + + + + + + + + + + + + + + Visible + + + + + + + + + + + + + + + + Visible + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Collapsed + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +