From cc419273ca853563044338589c4e3baa26aa4f97 Mon Sep 17 00:00:00 2001 From: Jaylyn Barbee <51131738+Jaylyn-Barbee@users.noreply.github.com> Date: Mon, 21 Sep 2026 11:05:00 -0400 Subject: [PATCH 1/2] feat(find-ui): consume WinUI Gallery sample index Replace the Gallery scraper with the published sample index, preserve pasteability normalization, surface Gallery xmlns imports, and re-bake the embedded corpus. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 034ffdc8-3308-4286-96d8-e02406110630 --- .github/workflows/find-ui-corpus-check.yml | 3 + .../WinApp.Cli.Tests/EmbeddedSnapshotTests.cs | 130 ++++ .../WinApp.Cli.Tests/FindUiSearchTests.cs | 58 -- .../GalleryFetcherCleanContentTests.cs | 128 --- .../GalleryFetcherTruncateTests.cs | 81 -- .../Services/Controls/CacheVersion.cs | 14 +- .../Services/Controls/ControlSnippetText.cs | 2 +- .../Controls/Data/snapshot-gallery.json.br | Bin 63333 -> 74080 bytes .../Controls/Data/snapshot-manifest.json | 6 +- .../Services/Controls/GalleryFetcher.cs | 732 ------------------ .../Services/Controls/GalleryProvider.cs | 176 ++++- .../Services/Controls/ReactorFetcher.cs | 23 +- .../Services/Controls/SampleIndexFetcher.cs | 55 ++ .../Services/Controls/SearchEngine.cs | 42 +- 14 files changed, 405 insertions(+), 1045 deletions(-) delete mode 100644 src/winapp-CLI/WinApp.Cli.Tests/GalleryFetcherCleanContentTests.cs delete mode 100644 src/winapp-CLI/WinApp.Cli.Tests/GalleryFetcherTruncateTests.cs delete mode 100644 src/winapp-CLI/WinApp.Cli/Services/Controls/GalleryFetcher.cs create mode 100644 src/winapp-CLI/WinApp.Cli/Services/Controls/SampleIndexFetcher.cs diff --git a/.github/workflows/find-ui-corpus-check.yml b/.github/workflows/find-ui-corpus-check.yml index 5a6595b2d..64872cd25 100644 --- a/.github/workflows/find-ui-corpus-check.yml +++ b/.github/workflows/find-ui-corpus-check.yml @@ -55,6 +55,9 @@ jobs: // reach for the skip label by reflex. const CORPUS_SOURCE_PATTERNS = [ /^src\/winapp-CLI\/WinApp\.Cli\/Services\/Controls\/(Gallery|Toolkit|Reactor)(Fetcher|Provider)\.cs$/, + // Gallery and Reactor both build their corpus from a published sample index, + // so a change to the shared download or mapping re-shapes two sources at once. + /^src\/winapp-CLI\/WinApp\.Cli\/Services\/Controls\/SampleIndex(Fetcher|Parser)\.cs$/, /^src\/winapp-CLI\/WinApp\.Cli\/Services\/Controls\/ScenarioSanitizer\.cs$/, /^src\/winapp-CLI\/WinApp\.Cli\/Services\/Controls\/Models\.cs$/, /^src\/winapp-CLI\/WinApp\.Cli\/Services\/Controls\/CacheVersion\.cs$/, diff --git a/src/winapp-CLI/WinApp.Cli.Tests/EmbeddedSnapshotTests.cs b/src/winapp-CLI/WinApp.Cli.Tests/EmbeddedSnapshotTests.cs index e6f2a8ae3..6aefff4e2 100644 --- a/src/winapp-CLI/WinApp.Cli.Tests/EmbeddedSnapshotTests.cs +++ b/src/winapp-CLI/WinApp.Cli.Tests/EmbeddedSnapshotTests.cs @@ -5,6 +5,7 @@ using System.Net.Http; using System.Reflection; using System.Text.Json; +using System.Text.RegularExpressions; using WinApp.Cli.Services.Controls; namespace WinApp.Cli.Tests; @@ -33,6 +34,17 @@ public class EmbeddedSnapshotTests /// private const double MinCodeRetention = 0.90; + /// + /// Serving floors for the Gallery corpus, measured at 327 scenarios / 115 controls / + /// 290 XAML / 116 C# after sanitizing on the bake that introduced the published index. + /// Set roughly 10% below that so ordinary upstream churn doesn't fail the build, while + /// a partial or broken upstream publish does. + /// + private const int MinGalleryScenarios = 295; + private const int MinGalleryControls = 105; + private const int MinGalleryXaml = 260; + private const int MinGalleryCSharp = 100; + // ------------------------------------------------------------------ // Build gates: the committed snapshot must match the code that reads it // ------------------------------------------------------------------ @@ -193,6 +205,124 @@ public void EmbeddedCorpus_SurvivesTheSanitizer() $"Observed: {string.Join(" | ", report)}"); } + [TestMethod] + public void GalleryCorpus_MeetsItsServingFloors() + { + // The Gallery corpus is no longer reconstructed by a scraper — it is whatever + // microsoft/WinUI-Gallery publishes in catalog/windows-samples.json. That removes a + // whole class of parsing bugs, but it also means a bad upstream publish (a partial + // export, a schema change that silently drops a field) now lands in our corpus with + // nothing in between. These floors are that "nothing in between". + // + // They are floors, not equalities: upstream adds and removes samples continuously + // and a bake that tracks that is working as intended. They sit below the measured + // corpus with room for ordinary churn, so what trips them is a collapse, not a + // release. Re-measure and move a floor only after confirming upstream really did + // shrink; a floor that is edited every bake is not guarding anything. + var scenarios = ReadEmbeddedSnapshot("gallery")!.Scenarios; + ScenarioSanitizer.SanitizeAll(scenarios); + + var controls = scenarios.Select(s => s.ControlId).Distinct(StringComparer.OrdinalIgnoreCase).Count(); + var xaml = scenarios.Count(s => !string.IsNullOrWhiteSpace(s.Xaml)); + var csharp = scenarios.Count(s => !string.IsNullOrWhiteSpace(s.CSharp)); + + var observed = $"observed {scenarios.Length} scenarios / {controls} controls / " + + $"{xaml} XAML / {csharp} C# after sanitizing"; + + Assert.IsTrue(scenarios.Length >= MinGalleryScenarios, + $"the Gallery corpus collapsed to {scenarios.Length} scenarios (floor {MinGalleryScenarios}). {observed}"); + Assert.IsTrue(controls >= MinGalleryControls, + $"the Gallery corpus collapsed to {controls} controls (floor {MinGalleryControls}). {observed}"); + Assert.IsTrue(xaml >= MinGalleryXaml, + $"only {xaml} Gallery scenarios still serve XAML (floor {MinGalleryXaml}). {observed}"); + Assert.IsTrue(csharp >= MinGalleryCSharp, + $"only {csharp} Gallery scenarios still serve C# (floor {MinGalleryCSharp}). {observed}"); + } + + [TestMethod] + public void GalleryCorpus_ServesNoScenarioWithoutCode() + { + // A scenario that survives sanitizing with neither XAML nor C# is worse than an + // absent one: search ranks it, the user asks for it by id, and find-ui answers with + // a header and no sample. The scraper shipped five of these because it created a + // scenario per documented sample whether or not it could recover the source; the + // index only describes samples it actually carries, so the expected count is zero. + var scenarios = ReadEmbeddedSnapshot("gallery")!.Scenarios; + ScenarioSanitizer.SanitizeAll(scenarios); + + var empty = scenarios.Where(s => !HasCode(s)).Select(s => s.Id).ToList(); + + Assert.AreEqual(0, empty.Count, + $"{empty.Count} Gallery scenarios are served with no code at all: {string.Join(", ", empty.Take(10))}. " + + "Each one is a fetchable id that returns nothing useful."); + } + + [TestMethod] + public void GalleryCorpus_ServesNoUnresolvedSubstitutionToken() + { + // Gallery's page XAML carries $(Name) substitution tokens that its own runtime + // resolves. They are not valid XAML or C#, so a sample containing one does not + // compile when pasted. SampleIndexParser suppresses those blocks; this asserts none + // reached the corpus by another route. + var scenarios = ReadEmbeddedSnapshot("gallery")!.Scenarios; + ScenarioSanitizer.SanitizeAll(scenarios); + + var leaked = scenarios + .Where(s => (s.Xaml?.Contains("$(", StringComparison.Ordinal) ?? false) + || (s.CSharp?.Contains("$(", StringComparison.Ordinal) ?? false)) + .Select(s => s.Id) + .ToList(); + + Assert.AreEqual(0, leaked.Count, + $"these Gallery samples are served with an unresolved $(...) token in them: {string.Join(", ", leaked.Take(10))}"); + } + + [TestMethod] + public void GalleryCorpus_ServesNoUnbackedEventHandler() + { + // The index carries Gallery's XAML verbatim, including events wired to handlers + // that live in page code-behind it does not publish. Serving such an attribute + // hands the user markup that fails to compile with "handler not found", so + // GalleryProvider strips the ones the emitted C# doesn't declare. This asserts the + // corpus was baked with that step applied — the count guards above all pass without + // it, because nothing about them notices a sample that no longer builds. + var scenarios = ReadEmbeddedSnapshot("gallery")!.Scenarios; + ScenarioSanitizer.SanitizeAll(scenarios); + + var unbacked = scenarios + .Where(s => !string.IsNullOrEmpty(s.Xaml) + && ControlSnippetText.StripUnbackedEventHandlers(s.Xaml!, s.CSharp) != s.Xaml) + .Select(s => s.Id) + .ToList(); + + Assert.AreEqual(0, unbacked.Count, + $"{unbacked.Count} Gallery samples wire a XAML event to a handler they don't define: " + + $"{string.Join(", ", unbacked.Take(10))}. Pasting one of these does not compile."); + } + + [TestMethod] + public void GalleryCorpus_ServesNoGalleryPrivateSymbol() + { + // Gallery's own page classes, its SamplePage navigation targets and its UIHelper + // accessibility helper exist only inside the Gallery app. A sample that still names + // one compiles only if the user happens to have Gallery's source, so GalleryProvider + // rewrites them to obvious placeholders before baking. These match identifiers, not + // prose: a sample may legitimately mention a Gallery source file by name. + var scenarios = ReadEmbeddedSnapshot("gallery")!.Scenarios; + ScenarioSanitizer.SanitizeAll(scenarios); + + string[] privateSymbols = [@"\bSamplePage\d*", @"\bUIHelper\.", "x:Class=\"WinUIGallery", @"namespace\s+WinUIGallery"]; + + var leaked = scenarios + .Where(s => privateSymbols.Any(sym => + Regex.IsMatch(s.Xaml ?? "", sym) || Regex.IsMatch(s.CSharp ?? "", sym))) + .Select(s => s.Id) + .ToList(); + + Assert.AreEqual(0, leaked.Count, + $"these Gallery samples still name a Gallery-internal symbol: {string.Join(", ", leaked.Take(10))}"); + } + // ------------------------------------------------------------------ // Load order: the snapshot is a floor, never a ceiling // ------------------------------------------------------------------ diff --git a/src/winapp-CLI/WinApp.Cli.Tests/FindUiSearchTests.cs b/src/winapp-CLI/WinApp.Cli.Tests/FindUiSearchTests.cs index e2de81b70..8b0516c6f 100644 --- a/src/winapp-CLI/WinApp.Cli.Tests/FindUiSearchTests.cs +++ b/src/winapp-CLI/WinApp.Cli.Tests/FindUiSearchTests.cs @@ -358,62 +358,4 @@ public void Preprocess_ImageGridPhrase_RoutesToCollectionControls() } } - [TestMethod] - public void CleanGalleryContent_AttributePositionSubstitution_StaysWellFormed() - { - // Upstream writes an optional attribute as a bare $(Name) token inside the start tag - // (Button, ToggleButton, ProgressRing, CommandBar and six others do this). Flattening - // it to "..." like a value-position token produces `Click="Button_Click" .../>`, which - // the sanitizer rejects as malformed — so the control served a fetchable result with - // no code in it at all. - const string upstream = """"; - - var cleaned = GalleryFetcher.CleanGalleryContent(xaml); - - Assert.IsFalse(cleaned.Contains("Width=\"300\""), "own-line demo width must still be dropped"); - Assert.IsFalse(cleaned.Contains("Margin=\"-8\""), "own-line negative margin must still be dropped"); - StringAssert.Contains(cleaned, "Content=\"Go\""); - } - - [TestMethod] - public void CleanGalleryContent_ValuePositionToken_DropsTheAttributeRatherThanFlatteningIt() - { - // "..." is not a double, so StrokeThickness="..." is a compile error on paste. Dropping - // the attribute leaves the property at its own default, which always compiles. - var cleaned = GalleryFetcher.CleanGalleryContent( - ""); - - Assert.IsFalse(cleaned.Contains("..."), $"token must not be flattened: {cleaned}"); - Assert.IsFalse(cleaned.Contains("StrokeThickness"), $"attribute must be dropped: {cleaned}"); - StringAssert.Contains(cleaned, "X1=\"0\""); - StringAssert.Contains(cleaned, "Stroke=\"Red\""); - } - - [TestMethod] - public void CleanGalleryContent_ValuePositionToken_LeavesAWellFormedTag() - { - string[] fragments = - [ - "", - "", - "", - "", - ]; - - foreach (var fragment in fragments) - { - var cleaned = GalleryFetcher.CleanGalleryContent(fragment); - - Assert.IsFalse(cleaned.Contains("$("), $"token survived: {cleaned}"); - Assert.IsFalse(cleaned.Contains("..."), $"token was flattened: {cleaned}"); - Assert.IsTrue(ScenarioSanitizer.XamlIsWellFormed(cleaned), $"tag was corrupted: {cleaned}"); - } - } - - [TestMethod] - public void CleanGalleryContent_KnownValueRewrites_StillWinOverAttributeDropping() - { - // These must be applied before the position-aware pass: an InfoBar that loses IsOpen - // defaults to collapsed, so the sample would render as nothing. - var cleaned = GalleryFetcher.CleanGalleryContent( - ""); - - StringAssert.Contains(cleaned, "IsOpen=\"True\""); - StringAssert.Contains(cleaned, "Severity=\"Informational\""); - } -} diff --git a/src/winapp-CLI/WinApp.Cli.Tests/GalleryFetcherTruncateTests.cs b/src/winapp-CLI/WinApp.Cli.Tests/GalleryFetcherTruncateTests.cs deleted file mode 100644 index 7326ce8b1..000000000 --- a/src/winapp-CLI/WinApp.Cli.Tests/GalleryFetcherTruncateTests.cs +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright (c) Microsoft Corporation and Contributors. All rights reserved. -// Licensed under the MIT License. - -using WinApp.Cli.Services.Controls; - -namespace WinApp.Cli.Tests; - -/// -/// Hermetic tests for — the brace-balanced -/// C# truncation. The key invariant: the emitted snippet must have balanced braces so -/// agents can paste it without a build break, even when the cut lands mid-line after a -/// brace opened between the previous newline and the cap. -/// -[TestClass] -public class GalleryFetcherTruncateTests -{ - private const string Marker = "// ...truncated"; - - private static (int open, int close) BraceCounts(string s) - => (s.Count(c => c == '{'), s.Count(c => c == '}')); - - [TestMethod] - public void TruncateCode_ShortInput_ReturnedUnchanged() - { - var code = "void M()\n{\n Do();\n}"; - Assert.AreEqual(code, ControlSnippetText.TruncateCode(code, 1000, Marker)); - } - - [TestMethod] - public void TruncateCode_CutMidLineAfterOpenBrace_EmitsBalancedBraces() - { - // A brace opens on the line AFTER the last newline before the cap; the cut lands - // mid-line. The synthetic closers must match the depth AT the cut (1, for the - // outer method brace), not the depth at maxChars (2, incl. the lambda brace) — - // otherwise an extra '}' is appended and the snippet won't compile. - var code = - "void Outer()\n" + - "{\n" + - " Inner(() => { A(); B(); C(); D(); E(); F(); G(); H(); I(); J(); K(); L(); M(); N(); O(); });\n" + - "}"; - - var result = ControlSnippetText.TruncateCode(code, 40, Marker); - - var (open, close) = BraceCounts(result); - Assert.AreEqual(open, close, $"truncated snippet must have balanced braces. Got:\n{result}"); - StringAssert.Contains(result, Marker); - } - - [TestMethod] - public void TruncateCode_CleanCloseWithinCap_CutsAtBalancedBoundary() - { - // A complete top-level block ends before the cap; truncation should cut there - // and the result is balanced with no synthetic closers needed. - var code = - "void A()\n{\n Do();\n}\n\n" + - "void B()\n{\n var reallyLongTail = 123456789012345678901234567890;\n More();\n}"; - - var result = ControlSnippetText.TruncateCode(code, 25, Marker); - - var (open, close) = BraceCounts(result); - Assert.AreEqual(open, close, $"truncated snippet must have balanced braces. Got:\n{result}"); - } - - [TestMethod] - public void TruncateCode_BraceInsideStringOrComment_NotCounted() - { - // Braces inside strings/comments must not skew the depth or the closer count. - var code = - "void M()\n" + - "{\n" + - " var s = \"a { b } c\"; // trailing { comment brace\n" + - " var padding = 1234567890123456789012345678901234567890;\n" + - " Do();\n" + - "}"; - - var result = ControlSnippetText.TruncateCode(code, 45, Marker); - - var (open, close) = BraceCounts(result); - Assert.AreEqual(open, close, $"string/comment braces must not unbalance output. Got:\n{result}"); - } -} diff --git a/src/winapp-CLI/WinApp.Cli/Services/Controls/CacheVersion.cs b/src/winapp-CLI/WinApp.Cli/Services/Controls/CacheVersion.cs index 82dec8efe..d6cd8decc 100644 --- a/src/winapp-CLI/WinApp.Cli/Services/Controls/CacheVersion.cs +++ b/src/winapp-CLI/WinApp.Cli/Services/Controls/CacheVersion.cs @@ -85,6 +85,18 @@ namespace WinApp.Cli.Services.Controls; /// different output. Without the bump an existing cache still matches on "21" /// and keeps serving both the placeholder-bearing blocks and the broken /// attributes that this change exists to remove. +/// "23" — Gallery is now read from the sample index WinUI-Gallery publishes +/// (catalog/windows-samples.json) instead of being scraped, and GalleryFetcher +/// is deleted. Upstream decides what a sample is, so the corpus is theirs +/// rather than our reconstruction of it: samples they withhold as unpasteable +/// are absent, and samples our extraction missed appear. Rule 3 — same source +/// repository, different output. Scenario ids are positional over kept samples +/// (as they have been since "16"), so a sample upstream drops renumbers the +/// ones after it on that control's page; an unbumped cache would keep serving +/// the old numbering against the new data. The index publishes Gallery's source +/// verbatim, so GalleryProvider normalizes each sample for pasting the way the +/// scraper used to — Gallery-private symbols rewritten, event handlers with no +/// implementation dropped — which is itself Rule 3. /// /// Note: adding the embedded snapshot floor did NOT bump this. The cached payload's /// schema and extraction logic are unchanged, and a bump would have forced every @@ -92,5 +104,5 @@ namespace WinApp.Cli.Services.Controls; /// internal static class CacheVersion { - public const string Current = "22"; + public const string Current = "23"; } diff --git a/src/winapp-CLI/WinApp.Cli/Services/Controls/ControlSnippetText.cs b/src/winapp-CLI/WinApp.Cli/Services/Controls/ControlSnippetText.cs index 07e4a7e10..be3c6f88a 100644 --- a/src/winapp-CLI/WinApp.Cli/Services/Controls/ControlSnippetText.cs +++ b/src/winapp-CLI/WinApp.Cli/Services/Controls/ControlSnippetText.cs @@ -8,7 +8,7 @@ namespace WinApp.Cli.Services.Controls; /// /// Shared snippet-truncation helpers used by every scenario fetcher -/// (, , …). These used to +/// (, …). These used to /// be copy-pasted per fetcher and had already drifted (only one copy stripped XML /// comments; only one balanced C# braces), so they live here as the single source /// of truth. The final safety net for malformed output is diff --git a/src/winapp-CLI/WinApp.Cli/Services/Controls/Data/snapshot-gallery.json.br b/src/winapp-CLI/WinApp.Cli/Services/Controls/Data/snapshot-gallery.json.br index 48691a45bc414e95a985a4d299f285ab3556a9c4..594b21d14539ca198edb0f43824a5d4f59b21baa 100644 GIT binary patch literal 74080 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˯rjV32u})nSbs_`T>bL z+nnGkjJwH4#f}w#SSn=#!jb}r1srIBv7hPD+adR5PAdiq(hiRlwpa@@pCGT;2tu() z;w+u}!p?%SJ%X$+XORc2*q;B^Y|nXOpw~>%3Bf&Qg4E>K%OQj;$zUXI#}l{~cOZhW z1@hJs!|ASxa5QwYBEh$i2>WJCxz$9cYn9RKqx26X z8`4_%*}VVUJS)yLtid#}EQ+C0rv@Ir3^FAE&<(PvdL_BZIGX-Nwd?SW1uc^4x7%>l z&UQ=!1f^YYk6W8HIYeJ0OkS5`Xv1c?uEDnwv$Q*-Jm-bEu(_1&A7D8uf@_q zxTsyL#pO^6FlhU>V$Qg&e}Ub%zGgzHIUSRamRHek<-h?%!Wc{f(@PpLS$hV{+66!g zhr!5QaL{$Ja2Giep78H4T-rt|xG*Cf1>?T#OBi#3FcY&hdohoZDgTq}G~L#OHI+}$ zq4N>e?%?S8Pkm&Llgx<~@#)QV#?iUo~vZ4m_zta2sKVOQr)?V=Mc17x5e<8a@p?6Wtr;8|>}SHkFovu2Ux z>9ax49}Y7k4%s98zh^Hd642XlhImL#Np3eG{0_qmf>^HEOwM_U%WJMR320|SD zrpEO`la?fCb;Sb%1yB8Lh<}@bV+sLcaMfGQ;5fXjOJieO2IWcxxV88`?%sPvJgFUR zf0V;2{gDj^n%K|~i?M5X4@M(Z6D6B$wu@y7|4?^KE<#nl&fo5_DN$5pc^R`+7n@#K zC(-8VEN`@7c2LAqZY)iimrYzH+;Rk|x+d9WOLDGE!g|Z2s>|2>&9vGYFZv@OaFV2d z**ttfKG9f0|JufQMI5t>1TJ4d2=6Mc$)f~ju7uDg;&7GVvKP%5mP>@+)*RldUbJBd*$F zRY?Lm6pb`1T3FGHm*QnCn#y5<5EwdCzALKiJejO^Q}mq_(YgLYj_P*4#EEHHvZ+1S z|Fg)@0j$cL_~=irXTeTABTOpL&?ZF7of0AB_e(ditR){yD5V;0{?3MUO=o)3nTNsM zD&r>_AbU!i*`x(*&UTfOh4$L8yk$0Z_4#-skc{5A6`kE0IW->@vnPAomTU3C=Q%YA z$Mdub>MwB;P9w#3E?RjT#B`((!WoZ_bostb`2?=_JBEcYm_8g0R450vF3Pq(8H zI%ceZM5uD5DBXw&Y`Hlj$Fi0f^%nc)?>x5h<^^zC`k4^rjDIMNgtQ})CW z3#}+OQ3k)v8@$tQX=9d6ZXLtVNvHA95uq6EuqwTK>F?V<|HG9ff?v;!}5yLNP%}6_QXLUVb-| z8pkm)gy@wM0t`jI4MCXy<`e2}hx1yhnUy!`e>>Ry1uwqP1=CiquXB9C%V%w=XEvQs zki2*=Nt+xgvNG?kktf%jgm)8_?NP?b+8QXwT$WpATgTaRER9kJ@uqOl`vPrZHf8}qI8%yp9 zWRmt^=oDp=YBHH#Dry!XwB5UuqjZHH4le0IL2Kd+8rmShNpxWuw3JWsyyS|Y+kVS2 ztn|&xg72NS4oILSZ>F`BU_M{X)yrtVOQL>HbttIIcry4G!q~`C#}e_LA5!$j5eND{ zn6i&a=UU5d&}e@}fp1I3?IoPK6%Xaj^SO8x79wYT%0T(V!(*eTVne*UVb&HyN@1VU z5krET0v`p+Mr&aOw9SUxxN=FysEmX8y`1V<`_BPqmguHu20i+{)pi#;Dc1ct9O5p<~Gzg z{H1?mf(}lFLo&Bc(1L8xV<*n!;H59tm}TCbPM80=cD1~~!vj=_rFPv2MPCQ>|3G=0 z2i)TT-w-+b13Qd~XTS)4@E5|>hBF9m%umJeuTAYDwq!NSf3{adhwAK*6h5Z5uQDL? zhjozmGdGKMH~5&>>?TI_~Q#78hspa_g!WuZ&{H$?VIlyT7R zF`1b5uvj2=^m3$e=N+obi)-m0WDI`GW~FYUAX>#AB%hF82;Lv&)w9PxM;Xd^ioV|@ z@fI$MljU+6uiR8v%W+R7g;wOJNW=w5L)62QcKMni3~eTO3RKq%rVeg93Q#1I7%q~0 zYwACq(40zJE_EvMvz)z{aVEysgfY~G4E1w=kdL0l5orzaoxZb0T50NG*6XoQ-R>ic zc+r{!TQVey93z|raAY{sQkaC(c`#++pyszQM*2Q~O^Hi;y@6)hz(^pbQ+OMRghZ!l zy&6$jaB>00y25^omcc)YL17trP1qBad@pG3prcw!`YUit4sj)5K#|1R%3`w0Q+m(V zl8!xLONajU8d1mvg-3L?FZ^Jxl{{FDGv}~&xq_6epNu<^px(^tmK((JmM5e^9<}VG zi3Bi4{8`A3#_H&7x*PYAd#2X;j&K7v-js-WopeJ6nj?6bXU&R0KEnZo_9&_btBjI` zBvU{}VOtLVt>*ZoBA7h-aIFqe{1)x5p$pIq8HarIX^;+rd_uqmtslWwygqR$&>KOg z!C!;8yw^nE=iG&|mQ%_g^JroTyDzVosopI>lc4XC{wn)xeK#hm3fSuYTb7U&2R9uA zDh}o^BD&vX!Q7(lpww@~Cw9@9+Q!*L;g4pNWwr4WUYwxKh&Vf`DjC$OCg zw{C>pX?FT+9)c+UkcPle9#pgSUbB+9K6r3qlbZy+ zA6SWSk5ojZdKL|#`VW%;zwd4{A@2iiQ=Wn(B2=Cjk%l^V8$P~~-;sWErMl*aCKVSP zdT=K}SgJkBmoEZG7YZ8^%me%?MTi(0%tXeXWuRgsgl`pyN;oY_t%1!bEANO(+_QLQ zYBUL-U_7|}+WRgoPP{#mw>1DKK-j;0xvcewYliB(TQcweD<>2{2<2e6dK*8%0S=`5 z&_Z*}iXra9oD9%(U}LAX#ltmv@?py$3d+X%N$W=5-=~MmK7+cmL1g2F)AOJ9(x{O- zT$2)|J`j1>3r(Cwwnj3VOB%Z4u1|<4!u6Ha=(JuJmju2Z2}ih=Y8CN+J4emum(m^OdW zcVZxDus$zB6oF-maOdl{@BBmlqkl&r9`+Q3=9b2^`LX20DGEftLd}bb1sp{nrs9dX*3QK^y_p!huywOpxcHvTinjy??27Pr+yb!(J z?7Rn_%K$5L@bMi-6+v=91Of483RlN|F&WC&U*jOz#g8N~iN7d>i2gs=0C8q*ro>-C zj8BRhiPu95dwkY4HW==LRY2H(XN%y=6r3?*a_*L)0a$VCZ85F&>%&Vh(SkL|7e&P4 zwVXRztg_ODWAXSbi-OE zN5`5g73He3sW31Y=ei2T-Sz}_`rI-qW|3g4Fmm%1Fc^7$Wj9FcO$1>7YN5|I*7A#xsWkZ+S7oPEQeF@2vp&1;dgB2$P=5!~Hv%5+0O!uzdK^oO zcjM6{`mv!y2MmL(HSqSxM6E>#I3o$UTO$Gc2(ghwk_d4;-!j@!qjtm+*t!$t!xmY$ z+2(t^r()RV?|ONe229bs`dZK~y-%44xe3=KnmvVHLn$n}R&iPt(_T4TM)t1Wq*zoV znDdZE5)ac9YW_&ozEuXJTAt*yqSjD3>DNi8a{81C#L&ohS#Y<1ANt5&$>Z_V!Ddfj z(;;V4kXBzZS(R}#T=N_Yz$`%i*O^_BLcMPcTe!dZaw_tRp0HVuJc&(%Ag&Hp)4l1W z;XE0zk<6qqV)hA~Y7D0AhF>0q1B_~P8&5NlxNs_Yt5o^|_FM+6WQ9ezH6AfZJnK=- zDD)XcFudHC_YgpFuqj~^m{BxyG2$4WY*4gwPKQxl7-IGqH_Emim?GPmnhWej(<9!! ze9~|co11&320xw#H{y&LRx9x`#U7$-+sIO=?UHTT0}(Q*v2qoV+2nZ>cjk@=u!!G) zJ;$i22x!s)A^Y2CMyd48789nGE6)+WW-w(Zjj3oHMMkTv>Q?M9taD+V%Hzd3>(eVwGXl=8)Z$Iq=P?8^KA_6sex`UQ}yM0oGbd%x57}B4vdT?vJ!tg zkPs@>%lPr$)-jipt-5B$vskKWBCR+!6jExM74wq~pgqkwDjPJqIklfqedDU72$GoX z(XPi_pVBt_w43B;B;>;< zk75;YH;>`SQoLTrD=nP*1XRT({M|2`D*bN5bwR~kY{HuZpAOryAEaUtG3&ji!A#8* z%YQ*&b4=gTk$G1;|0^F$kQnqnH(J`!K1LZZ=|K_$N3DK%qVpqhn_4T3kj5kq`?c^c zyEiD|TWwPY86efNoD6f-QHo@zF-JXAra4~gN0R&@;?Epc@MIM3lgP|Qa$6@{Tm16d zgn~G1K)f-BrNEjD*W`~BS-NUrr3kU7$ea^7pUtQdj1}GyW1;8YW>}|60=v9%3=E^d z!eeH!mz$Vk8;!{NYu$+3-mSLLPSGqV-6|BmpIL4-DOgfHiRS;=xomGvRyLMJ3WbQr ze_X+B<3-eN1SlmcxRg#$w@DdH%>4Jv2+Nnzxdp@#HD%^dD%ug<@;{@SakLf)^q2Ih z(moY?b0oO}@y=Y8LgB{LXwp)c!+b%$k;ddV#@UT3CIxhTx}ccyLgwg~HkCmVi>q-E z)1U18IGL1k+9%h@S4>WVjl_>Si4$dR@jd}QLKAGUVOlC2>PxMW?oySnQgc_J!t_k0 zK_gKC@XTeY<4$hCZivvJX2MTOEoQacf^f>dpKN z!f8n(UCj+rU6;NCp_ZwZCFp&+^RPttXHnuACPnrE>sF@LXxc` zA2GRbS%#q7*^7HE*2}@B=MV_PH(7i=Sxy^NNsrk^gFsS5c!gH1jIsH8EyK4DjWU5a zR5OZ^8?NH=1p-UNVq-JdfLGsv3_&&;6W)mE?wK1=G7CY2qv;pswE*iaK1R3{4$Ngv zzsZ4=A3`XDW;?1#nD@Ql!U-2hfEysHOn#1=X;Bq;So=E1frM4TU_HauO|euiZ01sp zyx!BXOT zL%>&nE4urJ0jdh_@ZdIq6lb{h;o)Y_n|R}BY*Bv5m+T^k{os4%FyQc>V%7EiBv$Tk zJ7k;`%J~mJ6!)x2o?h5NVeTtrR2O!_To-TDCbhFnCF}CHg9@}1_<_OabaDD}V~SU@ z2SbMm{`$yFol_AMT2+;id1pee&zUPV|CikQ=4^ zk}&NKLh+^%U`B z!?|}b@AdF=Vn-Io?LoTkcHk0+H``pCa{P(G884%`14*>2{j%*1AWC)|V1s8+WIS%z zpIkis%BPG?=Aat|hRv?zQ78Xs(tO)^BZA`))Gg19AcONa$mKnx9fjAAxQ0XRTiX28 zQz05D`aU6Ex|zu?{hHtf2&ekiFfSb4kCMDy_3MvarB;^NR<~|ofMOFfD!eX#no{s5 zYS>{{wpS58itC!X#>dj84m152WZ@V!7<4xc``P@^lh}FiS*2>A9YiLwbjh=-Hg;oUPLIGQR6&0xQKAh-5UFAO=QKYNgHHb z#NGo3%fzOd{leGqObU3HV&whb{6pnhkYmR?|^);C3OjZ=q>g;TOOZz^w;` z*Pl`=PV0;yh)mZ@R?L|+UJ#Xy$cdSbIA{9GrmQ`n?b(ZB6B{x}sd;G`hh!*(k<@WV z#U*F#@S_Sd`oy62bc$@U?=?{Yk!!Lsn8&|XK*y0}z$Bo{+%e9gpcf1xB|@c>Bhwe| zyx(568A(>*0jFj}ZX}VW42a0YfzP7CC$+pwt{7pV;1-{$_nfo|Is@Wrn~l1`iVID; zR987Y&Pey;B%+)mrTOZ{%3~%Xep3`Wxi6vVl^b`X=3EIz;ZsOPs!KTWyiZY^#<_({ z)oFrR&6dz!O)+DNGu_O|?#(-kMj`hKV0J&{)UHo^GN1Z5UkcRaRl1WRvko;CE@G(% z&OA3otW>-Enjoj*t3$DJNDl8%EcVd^tGl=GQz@dJq)UZZk(fh+ls4b#joDdnnn-5I zr+u1Yka=ydD%81lN$45Tx>%r~Z&YmPmY>AHTO91yb22HJ*F%in1H)g;5-H_=KWtQ% zm+h?2-L5Mm+h-xkJZ4Xwq>!Ih)fM)*%&V=`>N$MD=ur@%A=RXX1cV6k+;Z;-iwvt= zslYDKFax{D8B=qWgS}9|m5ITt)ZaI$r~zbOyKagTCRdkEizAn3?}3cHYo1WXU#^4q ztQB3eI;SPhz0~GK@}^DMTR>^XE2C<4QUen)LKq9+dX29tJ|iTW#RiC|A}#Q28aZ1Hh>Ca1W% zYYv7^%UM}b5A-5K?Js&Al9BkA4Jr|Vjz1@($3u z)W)6O{fTSil}72!B*%p2=2ALFx&9TJKNq4Jh5lieQW=#;V=9JzV z;vOeXv(MmOMI4!`_$00%?b}usmB#PLN|G06XEzo&^Cc^OUK<#98=lJ=f7PgVm$UVZ`^V@AK{y zqrqKaK|nPiQ|-|tob<*q3c?3yD165Dhul@8z5E7tpanVWhWD1qqGj-gfq?06eDV0c z>BCdN#Y`FIV;*u%kf@UHm|!Y#`!|yU4>QR{J1s{XEcfk9W&DQpwx7h(a|21i{e7+* zgTHcaA+7T(=|fNXo-N*+kjn$D6H2TD$tii~hJg1hsDf!N;ubsN4&H0d`M=zH+{Hmx zZ8zrXh;{W%K1$1Ot2lYP zgJu!cb08@rjVz3=RgeoY{U5i)Feo4Mc$fZ!DUJK^UMm7bz8UK)O@D`9B zLrrYWLE(T9icLD%*@|lHPTn_*!<$`MH9e8k4Y2M(j989>8T2q8*p^Xl&mql9hfIi6 zCLm;?j)xksNXnpoL+AqCk3!veGIqeT+b7(cz*jK}aqfWzY~vUTWAnewAI5Cr5U?8jG!>(9FEwLCV zGt(HD4tSglU$%zI7OtV@2pxq3QdaBIR1gnCH*MxWt^E}n&ajQ<4hZmiNnHMhe`=Wy(Dbhju@@gP>!-H zWhT%>sxrqq2}%=n1s1#%QCh%VuqVW#a8EeI#%eHZW~+>X5<@(uWi6zO>HA|!GX-lC zl~N|MG)!o*n0qB&^}sX9OZ!zQV{~xF&s=@xh9%w!NDaG;kDNnyN!3l9vu9K25Yf3p z`G_%59#<(-xXx1ZQ+}b+3feA`aZJ3+u!jcGVM;nP|-KVq&ceHiT5o@Fd!8F^(a?tqmVneQ+2#!>a~+aS72#^l0c z4)T)0UUZ&cbVf0eUV&rT{bX{v1E@5UJ{6iCcIDrHzu00wfA1n7tJ<|O@6MT|+p|+W z_U*8$qBo>9$O2fvN-r%MFig<0015(Zow==8i?U1m zYmXlaPi>yvUAxK0LJ zZ+Okl?@>`J{N@Fy(~nC#nOX30{}WB!@d_(G7M2LMTRJ4?QqaraLmAapt*lpYQzdTjPE)Obpf(Z@@8$0(>Y_A1{r5pX>l#?MQNXpHm6|#BndQb^Fkx~|Fg!5DQcYHW zS@ZkpgKGKaS^~Ct>%Jf!OYD?RkaHCV@8tL;Fw1iguUcLeiP;Kdif)2j<9S}E21fv~ z+r!8}Qj^-KCXVwrbbb6fdk%A3o-P=HF@9J7}s8Gvq^5Lc#lbR>GtaLq$DPJ07r&)0b2_m`+ z_(c`CzCK{43+tvTrs9%>4Zf0;RBu^6;d^CmUJGOoWsHn!QNsBkgZ%qRd3PaBoB~7} z>o4~+bpXm?i@aL}k_iDLGFR9~l?j%OrMg-_kJLJ$lPuG<%rg~V82;6 zPm$HeeEZ~=CtIVXBnC5|;=E}GHd~H6k(3kW>n-8#9oJYzUT@&9bzlkAHYHU`uG9+i zlv4h$q#w6WN4DMCtuZDo(^4nqhGnPTbbFdmH7W-j4FP^=T-3{G^mX}H_1(1Fw)_=t z74A+>o3LQ76w@f{a*7?pw{#j@OMS>h!eG9-88F+%ZFjUyoY9h4<(m<243W734G5jJ zXDYZ2i0P|C;6l*KF@dtOVw!bkbyZR2EOyN?Y`s>p!R3UnYOP_5;^OQNTE5{y?E%Vu zJCW5l@dWl_Uf8~Ycf1xg`@4O{u@yW!V9OU9Z0p5e77>@OldN-v*}JTz8OE>n0j0S`n=28M!! z(m_V5G8Zz)q(vN~rbsG2odEkZ_Z(eD=Kz30Sn}(ib)wW-9~(U&1U zxO*x^KucWIoK6-g;E{7HRO%NZQD_w1^9y`+ODh|+`C40P3vH8;=!CdRapcI}UkyRB z%08xf7Fw8VNKja1bKfjBv$Y^uywl31V(i#K{CxC~J(J8|w?*Adg*RWn?T8ezLlyH2 zBNh}>Ud*|G$H7x_pl+!U>%p9Dv_FKBSmucKKh z5RV2cBA7w?UV-uDyN1ATWVJ|Nia=g$;Ns(2_800Epk8LbQIw+3NpOkcQ>zQX5Qhp^ z^R9)D?h?l)?C&<{e3FE@YfnL>nx4hE;N;`&8~kr7p~tgkNMSk=6KrU!Z$wxu$|aP9 zv%S{C0bF0z%>x3!K5v%~wATk4<66(RDOr7_z?<6v1X|r*m$(f+!!02TG(2D&9iHUv zE#;0M;DgmvC7p6=|OM`ER4CyRt3o!s!U_TYz?vEb}c8DnwIn8!ij2Gn=tx5 z!)W`AqU)2PuW>yNEq(ZhiUoX__*^m#^Q_JPWu^>7qYo!>KO)@UwF(PhUNm`F_g;W= z*$b=B4Ti~l=3LHa3z_ZIlYVG|!V5>Tt1?Z|+t7(? zcS~t~*&Y$FZi)4Vpy%zej}a^;g9WxN8Fo-fLao*ElF7_u$(NKJrRz^V<|a2t&j!m_ zRUppGc^lNf*v*y593DXSi29 zy}c(eEey7BZ%I^#oNzZaLnfYpKWvoR&3(%5L)@SgF#tTS51sH1t>9;X$!ZEImpi)G z?Fix&aFIe8RH<*rW>_TQ1hBYuv_TP0fD{Q`Fb>aav_|OAYsp1p;_CkR2|&G_Q~n5I zzvl%5#ANh|T!-i~e=~Kz4KGM?4AXU1-Cd5yC!{Wn^VSJCppiG1EycQrQ8MsJAjJ79 z4baqNdGW`%Wd~MCgKM9s&3BV<$`!~|U=&x<#T`Px*F_&2k#(@06rP6P1%Ki+nch zCA(hwFO>sr6XS&^T)z;{VDlMri1^R-qvx(h z`;RM@IyvLl>ColV7W49p%jIS6^818~4Ah6-$AmuIVo}~$i3T?sKFW*xCWfK$sd1e@ z4v(KBAm%lqML7yix7j1-Qj7$(X~Yh1pUt)0!LT#@Tgs!Ao8rN8ilvqc&Q)>%#IprB zg_rYUH^8i~u?3yZ#x+;6ZoN&xmf~V2fB7PyR$<(fV1{>0a4>k@7h{&&aQtc|t5ynV zWI*#n#a;b$;-DgGw78DGgSq5({1Oy0^8QYj=noB<4W@LpDrbNQ;m0f;;^y0M`{nRt zBlQYmSCz{~O%Xpu_>={wCD@AvsRx1Id?a{Z6xx||A>hZZfk?(mUFm3>jugAts>=*$ zrI>4M1VTH|jNTY&;kF5FEBLpcf$21|+{eeXQe~OFf%B}pbE-*ggJ?pITSq$|ev-6d zCZ0t(zrL8-lYd0^hb*EMd_BEXa`KyVA0bwN8|&zAS>5lKl=cRZ)dWfhaU~+?W67ve zlEIsd`;%{jJ?az2b>~kRCp{m(gDq%FawvZ2Xat*q4x4f6VShtNbXCM3$9>lcj3%Lxm>HZOzx!RVZlmV|YZ=*muwa*w4Y z20>g-{eNVVHKA(x$GLv-j2_&;(c2Oj*hsyi@>S(h3deXjE*V{yKtV|k19pEL{KvUk zvJ%*!3*xB75*ddS{_eObfkJGT%tL}PNU&wQW5+2LKSp;*j5oD{!3)f}BvD!@*${8f z8CZ%BhY-)Z_oj|-0QUBqY4BpEv@hZrM-4IWHsWA8W~C z)7?o$V59NK?UrBQcsD0w_%!`7c6`!tef*6LUj6U+_%n5j0i$n4)U3D371K!6<7E?$ zxX`6p*8TcIH^dx7HDB=Gy{InqEW*3MWAJq(!*f6Gg0NtZ)ufNXIP1R;QM2c2czWn) zOTOMb0bN6;zl98?x!iN(>E=^wR!|c$41dd48%CSDFL!Kgrik=nb4}y1fWNfHPd#dZ zvg-xoGDuAs$exG__5-GR5Q9`vfs2zh7nmyC3WrwYaLP8+!MSLRt07&htg))b_Cz<1 z)PRvQ%l|X+G`wqyCmjY%$>MOMCZ{Zuw0+6&$7by*k3AAhcMBAl@}If3Gtzs{ViW~K z*zIDNZ=*Oo3>~v*pNi0n$P;@wbe(5UH=Q}x<+mpbo!bSFIf;gOgjNo5u3d)*ybO6! zgp)iRk8~t%F792c=)4)9qLwL&{k~07Kbv|9k~j-zQ9YH^WU&d?Naf(ty_aB$3;>7T zl+obk@^ciB(jU&uteye>aBqs!k_lNxTK0|;^s<6n45Zz6D232y5Il%w6_1f>8U=Ns*CcBr6}`C*!9fu6e6Dy!2))TwILH5qk!*IyKAbP` zS-(H&O9PBb^RoO?^#$UsIf`Ie^ z!<*Cy6bf&*Kfu(&;$cJz8NfI)*MP9bukg%UB%Y>TxY_r)$6EA%)JRJG6R6bW+bo<= z)uZ*@h%=UBt1@Hjjg~~(QkYG6Z=B<2_j0?bapu#o)i-7K+WCUL?Ms(Q@(dXZK;G_hrrcpV(Oj_6R z0vjagv@9-J88dW)QC5|cgifH|koG+j!cYHGesKyFGNdWf0%RexZdIaVEpo9&tt>b2 z&6o2#zR9Ijs%42XJLH01aW;*U-iSS7KH-hRNVy<(O}EVfB&xO0;3RfHUz(kS$!-#% z>j`y)S4^9&*WBBe5+{3x@DGM&7LC#-`b8gqfFo3bhRA##wW10pJ_535R=AWw71%`K zyW%w^OcToP;M+AmZwW=mlAO$_ooz_0)T4#n*sOUAI+&M!(5R|+Gwvqv4!r5>NDaN(N zF+;|$?`t|fka5QQdMbi$Gvi2=>c!1|J-FJk>ai9Exew)Cc<#-K@BtXThMn?! zc0;P08bOVZ=FI(vFPHYsYNOYm@E>9g6{w&*h6`J-s!pZ;AF7IG3dO@+!0H3_M!NK< zQi&Km_B#Rd)Zn%gMm`94@<-Y>mG6Vau5#pgvJvLW5;Fm5F5$o-GxzXid~A%a)@)9C zZ7s!6c}TYuq}zD+-JCeysu2hC553*&&lv7sOpO)QNxgTRqdTc-V~<^HEmCZB)x4$K zru*cV*kP`=|w%9(*HhpiWh->%5B&hm)0TcL*wp;_wMPt;0&9GVLxY zAwlj67a!3s<+fWthHt7C>!e$hSzWVPq9V!*=$C|BJrSP&Lq_{C%7pOz>`kY*o@fufq_@JGjO72`50ZJId}5T0-Lg3r z_AM#=PKsQ50-=T~rbtU|;9&VkSl(>l4tNA!un?dCpu!-ErKC;-mfGHeQAguZ=DV@a zt?H5_-p6gsN@kTfvtuspoGYw*JJ9lYsUif}>%`a-+V3XMj^ovyh#cC5!POlP^)>v> zm^dm8^{RS@+p+|lRF+wHclC5Lz_!oky}i>aY&t$YHt#@Qv!!5D4m-f9GITkN5^v4C zj$)1c21tCu;oaf5^$W5d`0@C<=0&DCq20cd9>(^_bx_^3l7g3v>$=l1I-0_09fT2U zXEK2j%DOrdQm6O8+;$SK3nx~4WXl?s8?@vhH-6c}$b3%H9p)ojRVs)OH*kM&yFuR!?IY zYY)FRb4(sCd9}ferr?m}6s#=ijV79V zf}dA=`fT{&xc{a1=XyTzQH#~S>e!?dw{l({TSUUbg>y+Y{+ObW2_R3ZKLWR6Am%7n zn`RxTgUW?wqd)FijP}1Sx*8~+YD#WRdOpF=vtD%{I02?#D)ad9T^XauFOjSHF{8l5 z+QnZ##tzn7>>l+5KM!`*%YfDNyv?h%8P0+gBXa8H?cHbzr%Qv#t#^`m+o+?}FVJ#sAF6KYD}c1gs##1UvZt zj#5ei+^c{{yL<$#2Ra12P{*@$_)(g(uJ})E=FrxK(V%N6t1Q!6%1e5gcDP+Sac?8nZ%K;5Zog1X) z2wsD!a=w%~FV1)((XNvT;OS3@Q<=0eyjd;AbTV@OQ!e~km1{}Du{$HyR0VT?tQ%vK zrOD)ixkfu<1V1rc0Cg5(-`>>yoaQ&kQ<+Q7)4#A=5L@KSqM??1o0wT^;s)heAvy&{ z_KY%q5*Zk#Qy-gkL9mz?w3O5W+6@k0()bEih!TLWI3XCKef_zsWw5cZMkSwfY0Ihs zVF405C5VcXJha`IEb-_v!{Jp+cnoi7{WiKC2>eKA>moapfGLbBci0l-0?2BcsGb{3 zkS^57R!x^p-Ie+b3@nG^4M4Y^!D$()t4KC3(BvZ<}{R6FA#_e%FBunW?Ab zx~Ts%I*5_~&0eZ5?R(iz2)6?6;M7#l;S@S<1g7=|7{jM-fG6_v%$M-}KY<`N5-}LfFSMTzOu?5!q{|YE zJG0?)7^8W6qI$lADX+S?m^kq=HFw11X>@)Z)uKTm10% za@x=zewCqKsN7FW?D;Vx{Q5rg0M35A*a;Th===wk4dIWNqv$VXH1VycUZ5mcTL0)I zA+E#zczkkvs{F(gR4+#LzV3WRNmhLcGBvni;a*p+xfc=qzAYp@=xt%+bXO*SwsWRr zW})OYyEXFBZWf;D1_16Z`zl$*t9g_J^K}!X=W;N@ zReI-GiKUj%2e2V^!Fy;DhAuig8REPDwT{`C^KR7pDCB6 zQJd%L65>7&R-IACFUT8pNo zOdT6l8>7Wr#+d6OVq(===M~|N_Ei5apIt-;`XMVTnB!Lu{(GqF0+yBqmht?EDV^SO zsY(+&a7}}`16GEQb=RGImvJn8(!C_IF=ytA#W38LqheG4EkWXGPwlB-Mn!nWNLo`t zC-lNh1>mUu++Ig_FiQQRndvL0M?PjZBKm#Tya=jD zw3ZsP0D+V=9y&w9L&9;pK?g~XeeYbQeYXn~GTY_CrkeGn7*s)8%fq7^Tl3l7ZiiPI z6(kU;v!VpAw&iPlXuHuw%pK%LS6FQ>haEK}o+jPBS2D4>oLFz3v3cn2>;BqJLzjl6 z8$jY#)@IFpxF_=veWPl8es-SfREBwqTF?2qKNE;19dbP0oLsD~PNZ<@j(|Iqw`Y;= zHOfIm4vS(UZK!h$->$7a<58YEZ*ECXl@&<<(RSn!PJnDQ6yyA+i%;MvD_$Vh)_HWn zl8a4o4UahUlhm*01KNvb>Zg~(zj4&wlg75s{%nKOeQLYrfHVl(!(+l-cDcgt93KKP z7fV&<=e_pB;v;|fBem>&i#lI7-k|4{_?kW5oOw6}Ruq{_aY)OG2E?eACxls*)rC~8 zk^!b{2(*~YLe`#cq7-jP(OvgYL5U|;;4f*hEgxH&D^0MEZZsf&=$%AWBfx9ONB zxwr8)O|vL+Rw-&3tz?E>qS@4O-g4GMc}3iz{Na~FfUT<#<(!No86>UaS|sp(r;SF6 z-rZ!AMOXtdtrcajoA=0Sbn7OXGE+j>B51jo|C5a#pQ6qkt1v2il1O7d9C;FvM#-Yxm5SB#bFa*R$CUoNMO=QHM@UO zJvj@nQuwS|LW^vW)mx|4A0HR~U>CJt=bkQ3W5~uIYJPXT#^YK|!qErzeFQ>>U zjg;!QRHI|-yJV5Zxcb;0W&L^`xmM+?TanX{*p#2WOb z+ZLaP?8iH-w*3~E-(vA+sUepSh9Q9mq#88i+nL2#mbW0da=DGxTI$d}R7zCT(ZDe} zRx5RCO`E-ltxO^3JQB zVjx+Uw0*_;h^PD}IHfc-4B{p_NF_vm7E%(c#;u5Im>N9^g^72?Vt(pz zi%ns76H(U+dJzg+3W>#Y)J~P&9Vko7o>=$O+7sPHXSdth@;t2CT_eA~-U zCw!B^xnYAzIw_J6y=pc-d02-@l6jU1@=>R7?8MS1se-|TCU6g4F3%M6<=TLNWk7onU|2|J49nfF3*vv=JgT0g^GsKt$t%(C_gHS zWN`X1Up0nelfOEcRYPi~+Dse7e$HAb#MD9WsA6^nu z#EfKr;OCD(gUiW{)sdth0Ty}^Ua=Hs)PhS_qI|oRx6~p|X>Rh56w_O*CMQ8+*oKoK zngwuG`G42m>fF;y;x z_L8@(nZfzlU6@kMdK6^R4x(;p2y3Yal~_iH7ADZg8!{AyCTLF_lbXnQ;gYjFsSZZ_ zvtiLtw$b>IPV_i)EDmvQXWJG*t8;um5 z#bH!l1aU-9mBnv=Fwg(x_4bwTALNE8C<(Dt@$RJ$?(o8sj|PDmf+BuZyN{H0Lz-oH zT*g>Bt81_VXuSFjTRI9V_k}()ePCj`YeSw~xOTu#rZ78-pqMwaSWpvPp#O zo^VlBfn7@r4O744jyj2atg}2Pg1tB~E?`RK?h%2QC1?ZAG?y%T{(9TO)&X$M)|*_S z(^MFkcdNEx=?zB-`FhQUYw{_i<0~c+9EX2D131k4QWu*73P;+t#G4EV=ZDTP@7_^n zle&GRw$%ivCJ{$$(hiH%Vx;$Q8!I`bw}Kkhbwj1QngA^pG9CK;f_o6((`lG>v8L^9 zYSWwLu)2#&VRU;Seg76$MdA9B2kQwAM-uTu`b)j0w+jScel$g@ZdZ3E6Wu@lgE z0|D?hGF7sg8xFB%5CmzK&lyy$9g7Vh<~GwX2{9JB9db7=@xMxbkFzRsrq%{pVy?D2 z@J?I@z!2IhFw3RsJ0Xn{YI1ye3Mnec`9|%WjBH6p=7yIJhAlp=AzTjSTR~{y=WGoT znB#k6)Sn{6`?R{qg`g+Fe5|~mxL2vHZK4I1@KZCq~=f8N6u% z60`MVh`Skck%hZ)L7M3Eer|EX;%gVB9iHUJdrsee=r#Gbp(+b^UuVn%>%?_~l79oN zKU`dzPU)oi&FaK#(Uqre@9gUgw`h~1hSO7*xM^kS!bY#H0j*($U!Cu9%6;iTEp9={ z3~6iu_tH}?qoY@DcX9}@RcbURRK|ek85>fqjM-TGm1N4z#0+r!q&AY{R6+}VeDSZi=y#*rdW$as|RRuAWr_S z{HtbTF#7Jasj3zHNjI?mz#k5tM6{G2^iq`FclXzfL`}b5-At{lh%4Xwj<*Q3c9(v7 zwd46Y4Xw^%_531Y!0Z$T>C>UtcWH%QW-$2fvOel~s(gHy4f*uzbv{YA@Jr(gMb;a5LINLLQ_V4K)#!l_OH!^rZ(5$ z8@hGhLKTO>Im^Zb?VOaT$WIwUrdaB}l~I|#kN#BRN3#*E-$eCV(GEsnMQuhWThmaI zl~#_)AqP&WxCvMg{5o(*CjDx~ayYiK2(wx>oWw*%8LO;6U{y)wxrqFQX5!iWrpZj_ z;AcP6cu}oXpm#!{STfyyy7$!M0APg3+UL6h@G4~!gunaqPIJ{{yp_P!xCRCTbRyIO zU=alL32f<4Mh$tiV|kM6JgwTTeMktw*Z9|3w-!6b|B&+?A+Y%U)yeqbkuT(NVySXj z7b#3iGXv5bX#+6?bQCFEz9f@|q4__ffiymvj`cz>F?0m>oP@rj^!nBdPu689eaZoYp_!qwUXfa#O%F%$n{P zPfif8C-l$c>v|LPhuM=8Zz`*Z1^iV8YYtJYkP1(QWQE3&#k5}k6mE;_63OJ9D;xp~ zvgz!kW6L156JJ3t&iVw45TuyV?GkMIFG)JjZLO-CH`_Xuqcp4x_ssDOH0wPC-%Mkg zIMs?>q-INJKJT&Vgs^prwnbFa7Sn29XW-#Xp!P!sU+gPa^kZR{+a8vW7fhT}16hKx zxS7E&+-GEH!=0Ws=F%DP%rwEVnlavdSMPl97D(~krEIJ>)|Ar@G&cIBcpobO<#~wG zbPn+ZPB9ny$4tg8_W-~KSgK5LUxnuD@!;A{Ufh%pZ>{Nuu*pzZ4^5-j!Hj{NLl=7z zhl>5&JH_b^DQ`o8c2p?I)pqW7dIH)N^gH$j z=wfAOA5#%BWKL^($4L`h;-(?fxBGn&uf#7JcXI#AKy@zJG&ny)LnD}y`$WK_#lIZO zz$kyg2qGqUfMzZbh+t`p2?-5SOwkn1wm#9EC$E%bdWy<$nHpAajv^^$6{SJ|-bG7> zg%5XcuPE#E=&$I1W#!I%TmO6w)v;(}PFSuUqHIsy^J-aW!IOm(BY)w9A+FnIh!P{&*P6mj`n!D5`v znPte_ko=!Vef5zEtNQRcv_NP2hp}eh-}d%_mOaXHqg9J7=7VlF|A)!3&W6+Ds~d_O z{)6FyYQZg)@;?=H$^9^J_hJN4 zdXoq0o&$-J1^ts)_euacK*ql{AHO3;$74-GTDjQmI*9^X_f}Y{#Kh|x)qjjE6WAK| z(kr?|*oma+GIA}wfx%sPtjQ2g$LknKCyT+ALr&C{6@)4Jt5mPxHYIHcZ7V0*8v70q ztC)&9Ka4X&>dvC16QNaVu&R{w`qhy%C2v_ulOi9C$ZFP&$~<$DMZTOYZ~2+iR1 zbHDI1rV>C?!T=rO${+$A9(`r^!T(0raFx+vUy{3=AbRa*E>7?>2SX%=4NzDeDmH+G z_8A6m5~j)OUbYg-n%`7l0a%gDX~5gkxY%hn+CVx#k$ccvGqV7CpUF+rIUvtri>im& ztAy*KxEk4RZ-^g{>x4FNuDFZm8&uRUfoQ8P9~~T1FAGz3V-KRdhO+;D8J$@VoMSE6 zWlI5&AXIz>X2|5;nF;&+z1#w~6Ssf$u^W%Z*13e?=k=IoGAqOi%laqFHEbv@JVz|m@B{VS>W}77m7rO zToECu2l&{-8tRUI@e^u{&nI7oQc@^Jknr**K9w^SWK4?)eW2;*tS{o(sa`UOP##PR zDm9;sP=U|#(cX8$_AvM~&3t#>;~DN z?V!7;^T*Id!~$GFI$P{Mp%8DQ9MFuOf9d>8262L>x|} z{f?}Ppo=70Dq7(*Cnjtt!SSUu6hQRJ5%(Y=FACUEwx>ETl=#iW@xbWV6>|t=q zn-(0DmK>-hs4zl6sp_Jjwi)6sOLS!RzmiXX&c*pQ;XLZwAgaF9fPSfUfg7rg@#XfHGa&RcY_syQ0-c?6t~8; z+uOewzqU2yt2aJGdy)?4FW;Drs#S54Y~d7>`;p~(C|WZ1t{g?G7e%Z;m{$Q7joFDx zA!e0LcZ?PqjK=#PW{hJ^2U?d00TrqYa+u-R#x;CfIV*{K_)mjTLykb266qK2T3rTah4`|* z=rsh6UWHdxj_5M`IQ)~}ja2NW1n(VF1Ea#s*br8-)>l(TKu9BRClTKV4i zZC8qw$V_s^U!7u5+@X#Mz&6YrmT_Y@a+D1OLO8ykHV+IFDoFv4zv1fwE!V_pKD# zqDPwAIMN_?ezk00j-ox6Yh>btiAaN4!Sn^(!COWy{N9WxGTd6Lvfd|)NjV+N)eg22 zkYTM2m+HJ7BR}?zMIUVI7LP#z+4jp{W!Q@o*;)Q;r#z;;aO$ zR@T-kv+{m#6>U?15OL$m6l^^mlhYI22LfDV@DeRxTtV@nKxXjs4rtJx{H-{Kilw63 z41kvezDx{bL6|YCbO*#dB~>VDHG|bUchqDQ4k;8VT%{lw>)Ro8SCG1u96wMH4{_Xb zLudTCFV9OyeI|UT&R-Lp*E;^pTtW^@4hlz9wLsJ#*m@+|c zXQ0~E2)ptQwlnN1ltdY%LA*(8DqTNP2uZkF>N>TRzGInb{#6!{g@C61=ND6QTs>hM z;&8P~Z57MyB1G^QYV9g#T-0ZB>RwL2oZVDj$`n?wpb zdrjU)n;OeG#`Yw(x*N}g1<(?JZUb=O6Sd=vBVwVsiel^_xysP_M*3Awh_zjMjonYd zK-d#gxs6c(a-RQ8pD`AKV((jlR`dR8xDQZ!j8jqG$b(5KZ?JlPq(c1ZmXvf*n*V)G zQ(DYp*AtDM@aPoJI*=$NSM#&&F+&x}{uKaj)<;Mte_)ovRLZ%(6rSY@U)zWUr(sFcDMOVtTJABiEZD(BSYv~ zQn3rkB{6G4Go8B=rCg?9rV8egJW5M`3OSFzYFY@M+y4B zf-J^oZe%w8_WU5ocM1#NsxkbWg>B9YU||&B!#${?ezi0Df9vx~x)_&18J6zJrU^J2V*Z#Ruowy&Qsy>B<6 z+^3TuQc0{v+gT^e0~yISo|HDm6_Y?MG43x)l0`|0Z3{px3t0NAz>%Wl*^&p6$J)R! z`^(Ro^l$F~gdLLTtaqhAfh9$?EgHZCG=7)B9JzZN*|A04`+sXX{g~o}NdLSDr-H@6;>~!7zFnpB`D$lCRJ(B56<;Jhvsi!wY)ytsfz$o@t;8nL zF(`R?;R`?~nH^&hk}a*|dlPZ;89S3=XVyFFfWJ2jL%Sa)e$MC@TJj#3`IS_wdMmtO zmhhhMk>+HUdS)2vY`E9cjyt*Acg$LFAy~N|v>A5r0j3Mr{9oYRHI~YVX!u367r*dd z=4hHVK+lE{-^x*Jl6l`RZhtLG9Q~Ay;qEd6kMbs zCJTf-H1;tY+5yDOwpG&;!E$kn6RAziwGRso)=CvLCWmm0Q&4IPh-uu@a+@t=mEtfv z?L4m7_UTx+sbT1I`W8E>rOn@*d!4np`nq4>Mif81<1I^tidttSYMcCN8xE2RY#cZy zZ7h5BT2GwTSXQikI1VcD?aix}*c9NAYOpQGchPwy^*_Z5#r-7HI8LN^TVPNEBKL35m=H+)Y}Ps zE6W8_2HwpSvyM_v?4h&VfqKdVu`wWc=2XPetFgW60VrPeY-Fu5U)DJYi52r1*#_Fq=Uz0>Ai37fvq+(tjYxmWCy_w&yw+slP{r?)x6f02NIX3Ej@Ug^ z6f_%`L9|ip z2b94&{ykG#udtI<<)MU{a6t<+8~yvg@uZ|*51JAxJ|8ztUu9m6qfE#Yj5oDYdgJz@ z59#B_ICnJz3A<>gcMy#9`Kmz^dP_2eLI>mhmnEPrKCT7dz(RudXcpWQ;?9l}d3aow zxYmLy*5fmjuti$ohCZ?wUp?zSA5I|X+(3I&f`EC(h0D;RdHvN4kBQ?zTE@3W>|5u; zt!>MW&*b8^(jp;s_I4b67u-ebL4=Ll@ii87SSZ8h(sE%}-NO(mgrU{Xb0U9KS?9;- zDPO2T5Fzx4Q%?y9yxJ0ulh?XV;{f{V|oBHUrVH0=b-p-0oJ?z2b! zObX(GM(Z*5qSpyR5{`mrpnsmDXoN-wb?>~8Ja+o`$4>~-3m_j(j$cc zp)aOL>1ZBK?{I>n!nt{lbS$QLqme~WW(}Q`Oj^00#5dgTBH1t_hD)j>T^kA0FOj1} z&7ek6w9?+yNV_VU$5q@iFIzt{G`*x;x$@!PxMpXFB|Fpa@WicKi>N1WI|^$xtQC#N zDT^4AFW%T?is>qIQ=ACGk$r)juGOOH-UEs0*ORXCtS0Z+eO6*-$zlr}C+)cmsWF)% zXX(?kOp&-YtkI1h;XSHc7tbD5O}@upc=?Pfm&|YdD~k`HJ9vL^_`_CjZ{v5mhDc46 zSEsu7?^a?9|A4=*On>+3l#u>PV1nj)|1!ejUciHj0HbNCf7w|0^?6@;l!Q@ zj3TW_Sn>3rb@0i;{E|T_NRcYW&zaL@SgB**U3S0xXPAE_vJ(=vh9-Z6<8{J&D9?s) zulNv&Pw8Tdw4)NHm=Dn_=+ni1aBOylwh8wqHK8k~Xth$i)|90Liy6~qRDB*&xmw%S zp!Q_tGxU#EB3sA~&|d0#_);6GBu8BR>Vct2KbroVT4JKKU6&-(Q;BOUq&uMXLWrH2 zFXh<4N;BU7$fwQo`k%J{wd6(B!d7Gp*QoF+#@J0F9K|C5KsYozjg#n)_+sgQ3dVtp z0BY@9-s$s-AzEM8nWq1B`%lFUOmRT7>YYGt%2;rbT+dBE(wsJO_)A^VX8Q!PVMFBW z+~bx{;HV)CjR9m5Q2OR=+qw7A!37BH&lLi#0sB>++7{C*n3SM3d}vUFYTB!9(AXSK z_c>3am0iU<#(?(f#9W`v%iT^UF6EAL5ilfSky#KRt6#~_km#8(%dxq_^~6k6W*_OD zb)<8)k-k|*7B9O<|Ewag=2#Yyc=ixGYY3cybDV{<0O7$3WnSQG(aFhq7*2;jI2%jf zre;BId+4@xMGP-gAYEJX)J+ya%65l@9t5#`2)HBPL?$44XG zN34(w71`$pU1G<k{RsXC90cm#LAODIUuk&S(qUFtYP! zgFQRSi>W}&<#uqkx^1Wn>CZg>%PRgT??3~7dP)pIg6WJEXamGo7An+l zPZ%KdxDfvC%Dioko zVhy4B5$>DJkaFD+m>Fz{%)~3l`W*};S_gj94;yH7jt%icnThaybe4uduMG-fP6fG| zSx6`haG~rZ>kMk;A2dMn_hfGaJbbId;fP1Iw`9Z;I8C>Vq%OiXDf_v0z1xWt#4UocZLQ)w6c{RF)xO5xPH1rB10azO2bB`myxBpip9RI?#UTvX!Q<|8#d}rbsKWmS^+Ss-_QbV(RPrEN-WBhsTX+fcU0ktwF~*8+c)DyD;vLLLx{9?@*LgE zix=k1hrW_iiFD$*XaA4!KqA853Xd`H)D@45tE$a zF{({=-ed%HInKoCrz)(7Sj$Mwt0?4wMuWS4W;w!+GT$w`+E;kDtDNV}vz3g4)URc% z|5QTrpry5HtPT=;p2sJsXRhzqknEd&<)4J{_$2Q3U|V9G(4&MJ`aCSG-;MDomFx$g z|3d4PQ%<~k+rg_F28W(j+Wa-EULN^&k(glgmM9tZa~B@fVg!}1^^Gu0Uyqk+ z+7k^>(?N`!idNmBMAm2-GdP0}vs)f9+Y?9+{!Mld%tjrFW6mtILNwDHDEr7?*mv2! zfrrTIlE!nU#FyZb-^=ib-=`S*H-*ud`RXrWh03V1$xxd>g5Xlhh>2D?UE+&nJ0BFG zcsj6e#-4`Dsz{li6a0TsK;~gFJmDZ;6b)mz+w$VbAK*ui0ii0x(Z?}dz}b7RvZp@% zjLRT`^8&p1_3qEh5y-b8VoluxSuXRU)xMCGPdv9{V9^}I7R}i$dRmh{S_8@A&!nyX1q~1`uhot^SWggN- z?hm7@WW7KxJLC5_d(@T7WmxSwm#cB(I;pxA=;a*MXXrhNu!Zp3U9<#?X$p8|dm^Hf zmipoAM|(5^fZ;KP@9P>p@8xHV2>S1;Q~zlz%-{wU+9)KF@6!rfm;LdnWqarm$tP}? z8n^1z15Z#(eaoN`x;K=wK!`sjtP1Y*5i=p-vXERaP0{|l87Spke|^if^SDT7WgvCY+G4I%T#lTl6xSc=HI3^8bFd?cVceY ze*jKjUVrp(kRG<&r!?u0Ud=KXPU-RLVQ_}~7b|}QVQCNItlp=QPxD*=qBE=1=}orF zz7A5hZf}fsu;}t5KHC;7NZIMpgvCy*tC`24pgzy(=-;(x&I)@hx^LeOQ{z5{TQnl` z!15>Cwdw=2dKFZPaL3Ak7L^n}J{}mqAyV?n9|5P)4~TNxNwLFetOqE5#qnsb!u<7z zv#A1FMYOKfwmk&!LvtSI)S&ofvKsVtihRm-wh8=Ye~vBH!c->3Cekf&4OB zCI%$R_85KtbY_&4AszNOakOu5%ps9}aM1!3?*b4i`>B0?2waSJ;8eWpWrO6n|7g*N zbopjq4*!{YnqZhNB}y4z49+V=vHY2hml0288BuN28aj?2UmMNVp+;gXt6m`!eOw*#)p2gytm z@m>*p`l!K@wl4!4K@9n5>l$X#ku-htdbAGstSgB%o7fQkxkAm?_R>}_BDVNv%Z%M&sLM<8b{&Ie6=vEBTH~WLi&p z6yas7Qf&n@qfq|)uQk;|GUSR0=sTH4V2=WO$hT`h6-d z9@3w#9LPPsb61I!UUwpylQIuc%t)4+KxD8LoYV#7&(t^cE|op(ILAy&yW`^CMMUe? zMIJ$e6}f;soLScr3DVX$ z#s}-PQ}-9hyHqf%u4HC?o}4=JO%c!{Y==1#jXGA1-lEiny2$^8K4FB=n3O_%gpo0P z${+{iE$*98duokjEURa@{UH)1g#rFo+-4t1Fj=inS9y;qocs#0ZGhX!XWo35JzhfA zP00^A5u~O0>o#ipzY5-tA|-V#fBsj&J8%>(-714PaQs=MuUj&=v8iEviB~p!%g>ky zHYN$z!(?(*>mKzx>?^YJ`pm_INPadHtSUPa-_O6b?ARgMLf#IalwAy}b%;|j0^SzH zp}B&bh{epWnL_!l;}V72Te#SFkMd+VyzkZdy7>j+Dpm7bksQD+9$UQk0wG5JJA^wI z#s&zOW2W508g^biba{ebH3_?@bLIb-Trc8t8KG6C<(wncQct_2@!0Q%C!dvq%aq`V zJvFy5C@AiyPy21VMSjg!Ask z2c=Z+g2;(B%LJ!KfB*%pJ?JJSt`ZPO)6PxYU%hvPtSqHTM1Tjy9!$P0hrxgm=#qq3 zVVq{3hX^eKQgR2w)192|ff5s$J4m%3Msfo z_(h8H%g51r=SUaeihb&Ns8#MnZ*GO&bwU=2xrFp( zA|XqhSA-yrc6@oJm;z(s(y6bLun0sj_D7y^yqJtdQRq^qJ9TreO*~n z!B4)3`;e84;Iea*6w6x}8WmlVbSDbeHb9z6ru{DiutGDwi>>VC!LB9)u|fLYJcs@p zB<|%l{?*R2<(u!<5C}c*kJRz+ma_7L)N!j2#WK;R)4m>LuxXimpZ0!`VZ&uIo{q)f z55lz%0LKHr%S6vVHXho^zeZ{2w~vqeTJ$$3(&qcAZwDDyTPDwszq@XlCqf#Jj4l&R zKNY9LapXAnDbVnoPVeXy1|$-ITT) zKO9_690GIA33wmyy{+9Y2-dy ztcz;B%gRCFpOXOAwD|#(Rk90&|6zlgl1b%i?#9%6`=8y5SEl^h!mSUszc9Fo?_(Lv zyV4EgO3BSb?OV;dk6|my+r~Im{J8-I_o$m{{edan9$drP`kN=lVjmA1q|O-DKMwP( z{Q#6zQtAuz7U|P~7*?)VN@O~#alV=HN52IavNqjG}X9a29X1RXT?hu~WxH9)zshw8Y!70Z{h+o$q)RRWtiPGG7;Q9Y(nR4>- z*PjP{P`k%7m4w-!{2rh`T{dLc|5idn%PLe48Moa;)aGj8(7NCc3|+L8MLa|C*9wdi zb@~46%ij-0i^tm^Mx55D#&oa_acpRBt}f>01M*lo8gpX{9&^RMx7DYU;bRY{$_H!~ z(k{Ayk~Rh~hJszgMEr=4q4~h&QE-@vWv)-J( z66QwsiBi(hH13ahLgTKm&Xhu}7!;N+fTc1&|#wS4O-F*owS(1CX|0yl0hw1*9Kn)xG=muA=i6ts90w0<;b(b~37vTwasS z?3?lx739mk+W=x?D-r*=YKwuPq9*WOx#hqe%vIp|tUZf&MG%sCJ|beREjb~XJXH%; z>q0CWymn9|=%x8$TuV9V@5C>fv`Qj(k&Xq#luP%9007Ke(|zTZIwe0YEc5FJh;6rBoWzWPsj-gxTz8m z@Q<^I-s+a&oBG;S6LeW1y3^-*H&*ZG$i)=*IoCTyMKUlJE2)2yPmLK&zGXzz{D}q#= z1)r9_q|=36;xn(CWmt{gypvFh)fl~VQifqjDbFKpKJw`Z@B}bu{`{Dc z|EXn|6$L$J+!Pl}*DXErV4f4@_b3e65Q55Eurj`fkwRSv!IG`{wsy8%*xQ4MPu1`Kgk+xAK!|uO8#HC@yl# zQfszKogJ-C02OBiF1|kSEs3*O@HVSaiJaTT*(|ApfsEeH?ec8?l_p5D==bOTORr8| zVQbEBbAGeB8LJsMkn=s;A}Y188H3QoWc88`={3b&(fN#*s{)#*Z(6}33Zgv=CRQ5 z;wdfJ*3e~e^2)Q0>A{D7eYVT7%xqzf>@;Wl#2M@#7uf_L#fRH*b^>NReYxdoMRb+8 zkyVN!nUsP~^te$VeD2~dw?LQl7?%bgjdyP;WRa;iXl?a4&ojqpVsG4Fv0QXFUg~%& z<9B&NqAc$;nt}QH zg_-7mg;y!s=@Ng&yM&A8gS*{>J`N)HSsEcGdj>Yra0tzd1GYVbBJ8#z0&v5L3C@&ntF+OCy9{%Xx$Z6><44j>ODDQYswY@`@ zQe4zMiW~pBbnIY|hLPN1Mvek;3i653Lq9?FAhi6(^T7L6<<|!!z{l#YNRF7VVu2~% z_Q-4v6Tls|G>9Ll+>D!9ZU_in`V-oJeN2Y28~MYC8Dgs_+wt66J}*H({Tu=_|C7#c z(Ent1AAqfdg}8N(*zAnFfd{>-(<5rWUvqR|iy@+Sj$e`0p>?jS)IIl9M(VYeH$L&b z#7-0CK5gpqOiAV0C~6jUbEj9Pf?h+H=!Gt!R8vcwnUF*Qm}`4da+?LJ`Vd=7IFyzhIX@(79x(PBEjY*#Miel)^ zWp7PB2g}qZ^X~k<&RdOoo@iDB+Y*wb&WNQ)jME-|T*le(pV>ext4WGnSNwctr)bnV z{U)}Cy^=-+DKm$8YwF{WA^e~F6Gr+ei!#gDYfUU7FNPrb%&pIV65PQV!6JHLQ@XR* z3VL9L9x}T2bCPkBHgYCCohaQg!&|g7Pk+tw{v6_tNP%&z^0r7GW9;>}>s^f@*2ineV+y->mJW=q+MGk~FD(2ZgL z`}a%8UOe%Sksm?}LNarEX;$i&EWSj$m+H@}!b^60RU)QeuUOM6Od4$Tb!n8_MV;-g zR=E9<*l@SC|3?zE&RLBAxOp5-X*b)Wez$eiHEe78Gu+JalKcJ?O?g=9%Gn&CBlrjY zlw0ZDafN3L9=vt70hcfgDY#(#8FRUYcE*-xZateXOcLu#Ql4zA6(dokR4}JduA+mA zgZYrrCm;wj4ar=L11EthxBn~3I-GeZ9}%x1o#(V}%St?#fUu)<8Nm$UY-YciJKuxX90NfK$+wKcDEPo3cdTfg;lHWgz!)D9CvVxUmXP6mV_X#&~_&yUoyZQpBgn_e!!9FdxPk<$0$gg&{ zxC6{^YI8_B!#X8tJd+y(@@pI_T>WUC%|hyRi+ZCnwP|eD10CsgQQjFQ>%&cxZ=(v_ z`)gAHC?XF`B}3%7%D!jZNSLHBG;o#ye2MMMM#t14w&sBD5OrW!E2WaNvzf~udy z=W5;uMi`}KMb{5&T3R5fK=Uo>=atAAR`oX5s)(7TqRvEAkZ=ix>qi!|*_zLzNs75$ z?CV3*#w^9u2Kg%bz9e3`@3}0W^mH0mouOul$P5_G4ix^e?jH}TWv!btDl=`DS)z0Y z8q}Os&Ldq9`kss?AD?%1Pn`zpIO%hC$Odj|9o8hdov);q)qAw%Ev>Eefin^$IF>K% z!&i_cxP0tawX=DO2ZNtLK}aFA2)PFJ)b;!upF|Ik$iOQzZ-Q8d=w+A1r7)SX746J^ zMh7Li-?%BenFaw>xlXyXtdcH6zc)l5o$z1cvU~?53-m5RCg}JxzvPtZ~UDt31s(;=xr%L)QXe6XCyZAq^2L)Sr=uY=HX>X$`FZQuNnXGFO8tDrmfaSEd+Is?OG!%oam2z%mmv z>9Ag$=i#^_*QfbY65Mn_H+|Gq)*-K3CP*#-u*YOGm72*?;Hh?LZpW}gVM>HEg#sTj zt<6%=iJH%dI{_wO-BE7W5CDuuRw>XlaI+HLb|vEvGBB6~yssG4*ORW~V+dnzFCJ!^ z%L!79RZyFX01;K`9jE1nYC9BdpoRdEz590VTHok0CuJKK$PuiEehGWW0{XA-;}#kX!i*2HE?o=#@syn+8xtdNObtEAt_%p71=yYs)U-kakv@pJ>PAwsm#rvdUKuY(zXrUzk6x?%Q%M9Cyp6m@cRFOd zw(rr`Sr_-6W~TeQJn%Ul=3QW&`!m@GqUJ}pQA}GFo_XSly-ckydaLmiwBS}~>CE)0 zcTg{6bf6pn!uUP$4H2IupSUUrLpa3Xa#ZL}%_iK%sd`muzjWo1FhWoHyGf1iG{W{; z0YS}eMF@IxtmvUdBcQ#*^Rg24We|OUd|G=|fBf901}5H-M|I=}q6!2cXHz#ckuwZx z_j*-9#5Y!mZ>rG*KSxr33bl;gdUw2L`zmM#`+NhlJlVY?6>u$8TPn^cPuA1}p6OfP zbVD*Zk8jYB-oQy#Cc#Qr_XaDNK^WD60m)%X5T zdD4uqZw5mEoI4%1(oegj<4S0cnXfjrZQ^NJezeGSN7z?bDr?Mw4Fh8GCCQ3My00L# zr$+?>ms&nyqW#4vrw7x!l^{!y>0q_Q!jmjcbt8g?a*^FKJYZAcj;n?mCF#-;a5kq` zyw03fD%&*Y#c8H1d~}yAN9wHoGrT#w^+;H**4lFu*RPSa1JI!W;qMi0U1@m(&@T<~ z&|9D^vZxfQdICS2oXyiEq&=dI%ftz zo!=H^J!fLv2KYiq)~M@o$YOyU)r^j6*b#Ni+l*#y62~kV=DMQm32GGz#11xe<$Rm+ zmKJ1T;-T;Uu#9cPeM9@8IPAvoMwa_Xf~?I$!qmfyc&m&{GW3RuY4leemr8^-W!F05 z3mn(nD;x4Yo$ibL`S;S=4-p&`p{$$x^!ngf3#P3gOx1C*ROvm^aIKY)PzeWhM%!p^ zhAW+e-<137ZXMTZ-|Zalc+MDNo6;RNC83VhDX3%F*+$T3kkMSwKj5KiV6KqY+C@{XqLes>kg-WErobK$%^wb_H^x5oMCn1 z&+&4XZ2k*XOJkP)hw$lI2ip<>|C7f{*ck|ajj&k^mo}GB*bPcs;3qo4hli8^+hPRN zhPVDj*oEQ6|Kwu+Z#_SJxN$4ba3kZ746YsQY5JZ+4^m^UvD%P4X6|CXp;@lQj}pQe zB$Q0O&-3WC zL=0XK_7N?sdeHDy1G}SR%~`tq9X0P;_x=I7J%D+mMDMm_!Lxrg3(MnQ^&&t;7&j_R z7>`M@s_HYz^ScEI?jb`{vq#>kC+ZYeZ8bpfXcTT>Eh96Xt>ZO!%sNIf<~BcYO_L+Y zPC2#&x$YT1p(PyKwwS$ZKk zcR9E4J@jxIY|Rtr=d!u zVU(G8z{yDbpz4Dz5-H~z2u%q;8 zI$NTK>H^>V)4F)Z!jw-$7$@lki(^^bmc~m)gWw^!g+=$zV`%cca6hRha-l`SJid(v z0G1n%t}i+5&A|!ua=I>j22zBJ?~FrKDtK-dY$$r|9Ybau@Z^cu(&(ipa(rqyvv;Ta z>od4xPX0d5QO2Ka_Ee+x!M<71zX4RR@p2Ww`?R6~+~F!(5_QHj3e%KB0BQzJl)hHB zMB9kj@>=svyZ_-Y9wYnCi>i;=tNInk@uKD58Z z1<;Z0emkD$q!wr;z|WEM?L~Utv@yKpL|#NWyxW7;sw;GhLN>P+}(Tn z606Pd4(i|~yeLHiQ{z2=7s9yzAXj5l*$V|bOm|Zw@?4wLHh6=P|D%h6mksh^l5Gw( zH-PZ4{zP~ZA^w(c?B~?~ka|j!V8KMV?bf!-6xAQtCAZ> zp*KAY!?}thdPnsG79-JIpLC)$N79edlw}L5Os{6mVU-=Yr?)|KzePw%T{z(Xb*NHx zAq*tq4r5!OIFbAZsERS)N=8^<7wD1sZT-M9y+C9B=^Wz?_A3_ihiq$HYhd7+Cbpm6 zU;X8if&ZtQRqiRN{?AVus3X81EfmA?=7DMKDXCLtaL?rWEcR2f4DW_q=N_-p;Dsel zwaWrZ`#7;Jl%bh?odxmVz~_)F|AuU*PSY^XLC8@9iSESLun9<~G|}O`q%4-f3pTj# zg1`C<_5Q8%b=|?jxdCzxq^nJh!h_xSOTpq!&5INO1Tx9g{gcLL`bPER^x89UmBVDU*du2SsQ;wQ< zedc0yvtrUM8|TkOSu$Ou{7la{S)=PSUoI!;8st=7-O$R9vF4ImT-Xh-+pv4N^jJ_X^#`*1)EW-ELPBntGMrHE!Ekb%CM~x` zAb#q?`-bN2N;4c>s(|o<%%4k^J}m>Peq(u$@+0=lESr#>aLmz|_=IC#JNr()1FflR%%o`>0*U38cZT3as5Vw%P1bT7;XTbw75J*sIUD6u-)@UgN(csz9}|Z6NT=+ zpW9?nUD=*6xr|^)x}qNwMRpmUR<8FDdgG>bFLGTn+>)Gyp$xh}XStlykL66MOTODL zDkrM;rXcWsmAkA>#4W=Q~PFl|g z&CNZ6#TtSND&wm^5XzHSAKW?+z`8=@>8a4TBeO}9HKi07BR}XGRHs~m;1pTEW6u5k zS69gzcgXW0HDn4fx^65K;3H`%v>7Mt^s=JqvJ^sQmSpLM)Q;l+!DGvoEin%&ULF-u z{P>4>9M~5d)euMFye$7wx~i+qP;eh#b4E+>!6amrfP^)$s%mQQI+qUb?zVF)1$sw2 zzk7DBCBeq}P#H`uWjcS}7Kud$jbcduTj~GraBA8` zKtD9hD$8TLeHQWT8<# z>>}f&t5Fcw0C^~0*A>2^hThQRJx};zP<{`9DNn`=LEp0uK)l zhO7S{z_Gko3J)1CAa%e1NB;ScF=CIy1N&kL4DKr)(iQW?Xgfy}YJy|2HB)Kgc`^f; zcVYxSM65h=C!^RK`PfOr{3D)pl18tY59X^!5={JQ!O09R7(l{(g^on(1<65~(x0BZ zv-INzA`FvfjvGRp6T2KPx;3QI;unOws4V)Oa|s@q?~cB;+;nTyf3UD{jTGG*9tr03 z(;DAUgf;pg76Le;4Se)WdJOsFf^09>X97^St|4#rQ?^qCN8yG&galeP=Ao;QFup`? z$J5F};rpA6%bwAvA?p`$elJ34GRIA(pR&Nd5F3hk!WTlpZo4o! zx-pIElt|>Ug)0LHs8lqwR4>`3)r3NCm;Sp3Yt9YRB$)+!sgr_BZL%{ge>0m0CUyIU zDFlz+`S`+r(EC3#t}omAV8b*l6p@Kj*dq~!R}H6MjktU7${RQM&uS zquM2aua#U6dd~GBu?E`iXK(hOV@X}`p`Dm)I*9lTp}4>IC#uO+u6VwoAPi}&W1fPy zdZI%3h@3xHW(om(^9`y4RJvve)WIwIWWDdqD_2#6HT@@(f-WDD8T7%53bhAIJJ@FL zHsuSNmiXRr8_0w%?DUR3keNwkQ^evoSK^$>Ay{L38BF78mJ)uSNiHar5g3}|_xZjc zn9ssmg|$RBxm}wAuq#yf9*$fUy`p;eIXn;^)OM{0Y-Wm8t~CH*}QFiT6Sfe7fBR zkJLiV_z>5vgS|&Z#rU8Wwjw{w;i}DS?-imFa_UxNh<^!fzU|b0M%e@Jqaz#&W_GUv zjGhevzD(&KoU=jZ|C0W}sXGM+B)(Lqw$C3UV3z*p_cGH;2RT3L9qD7zNW{9iyu#Lw zZ1$b&a*pc8!kf6u=pB&567yTf^0yORWosaA08v1$zYVJ|0{_h!407Uxta863$vV8; zNWx$r?d{{E8rpfvrw$|2P~%%pzp6YqmGb6V`cJw@|6lLkYnKVD?Tz52H?q&Q_E)AT zr1yIM?@1Te>%X|_Q?Iq6%_m{y{P>Yw$zc<}A!e;cz_U8XQGqS0WK3!cv&mT!5co~? z`z0h#%#}@ctEkK)IK3ROP%K=3wBO%g`b1K(DVpElAR;oVf%JJ0`F8XnQ?x0Z3K$Kj z0$&E0+J{2A!lCmJ<9@$Y@&CY~nseXo!*Ny$S^tX}7+#Fvf-p3___SDcdU<1JAqR9K zeqN;+Wkl1f&(Jjj!58GfU^JAaiz9(}h$X?I_g;9Nayywq>16mRQ-1T;k0&ifSR}*Z zra>;`!p(7`a1mXso2BPOSC%)(rf&Jz>p_8Ps-vL3FG#-fY(M@a?mt6Oe7s8>!?lBk z&x+6d_<<)vS=&{1Kc4GvMthLIX(eBNf8$Eo{&ncrb8@o{+*%u$Tehf0cSL^#xYDIQ zlKerCeK?Ls$Yj8KwJJ`_S~gNogyV^_iDZp)DYK>vMqb;gtk0MtZ1>`QyLBW0*CDRN4;_!qTstcm86LdO}G?R5%)`4*EXbyxpp zz7Avo8}5O4%huy+kJB%qNJ(9eH3yDd!9oL1UaS>-N-2S(Rd`{mjgiV8I{$(`6+8jz zQ-CXki%ps2b6Fg{LYl2Q6aLFt=S*BSQs&_l*25z~o{&lf8eHuC5o{?l+hVdlT9Qy1 zYXJ*%n55aTWtav3Q;M!^sG2ba?(M;qlvPdHfGskSKvoL+->5<7uj?}$W z!Q8b}B*U4V2ewwNSriZ!h?(UUh9E8+zzebSIG%}1#@s+SDLquM%3w$e{&xEf##S=Kao!2_3$cz%lRIpsX#o;_!xi7%svvGF9))##x9iF%2KDR(c85uOFcPTtLdx$#^nmpd)(tlosoocorAnizf zJvC+C-Q)xQ-R_*jCC>MX%TblZYQ6MRp*`FhhOKZ@fYv&IebrM?K`i~AO<8N=$Ub6;aSFI-O*~R z+jaYmc7noPEr`I(dv+?7GwI!2#`+JsZP`%tBR!Ry=%!&!r6^15Skm4ePo}+*a!>pe zf_(O)jS1(Gvdk<{wuN;WVs8$R-fhM05D3JCOmy1u8je+a-?8>QU-L#=^(`13vWlYa;r` zrW~~8o3;*3D5vXv&zd6EO`)t7^V+CdT{6#abmHiHO8RQQ#{rj&a(7!2XM7$Y` zAOyPO1JwFIGaJhz#JeH@wK!#E_`0JHDd^OnMpf?D1c1i?G7j)Ay2%nbs8+iFIs#}9 zZUew*she!MU4XV^(D?!U(K>sx^;{3ESf8bFt4$^VI~mkX(a2z;d*Bbi!f=jrgNGBs z+VGs*XkxCF@>Z}fQIvC}?Uw&3q%b(wl zd=s6vBFnR(r>L_D&f>|6JkjMWp03E#<}9AA$g}1wo*(jgNXT8USLD#^Tu{bQ4N)@T z3j9Qt9pMaa?L*4d{iE5m6H&IA6SDZrhJjn>;X<{ctZqbyi`;BZMGK`H0N$$xSXh$Y z?{WP~6PnEO>XEIf1yv;l^7eP8#)0E$^LA~s&NgIgR8CXjQ|e)@PQiI|3Kq?3FB{tV z@8aHhD@2(Bg_N6`<+ueVBxeqCaXCiN226%dNizv)DG`u|RPw;P2->nhH8SYBrwd(F`+vL3KncGnYZU z=}5mRqi1J%Hp?3c*LNwLTXb3M+q+z?UhvWX_EX$?`tAj!PTalm#03w2#RS}`4A?lB zFu!QUP2ftsuct#@tJ2W&pWs=sWuvEDMoz_iD^Nx?D-{UrYP6FOPgb(?sQTF|Ew;E3 zcx-FcCM&VFm6ANZ`4m2m8&3n!ojvw{-$G3((s!2trWrgQh>+oX2!V%1eP`DtuE`(U zR4BdmL1$?Mg4XxKPve)7M7H}%FsQWFb!lHknTweNt=0R>PqXvB-y2v`6VB(Xj(uD(uo-CwQKl+sUL4z8Ff zGblbH=Pj7e8~Rr9jG8%wHm$Db9J}a^72yWB_L3O3!)ry5w-j13);L}phxH#~OpSp& z3-N~T+?v5U)f5F^Kn^jSJWQ*q$5@q`WXYUa4pzs?w)Fu5;?|N1e?75pMKw5^qVAum>^xzJY;#EQx-@f?nX%AalEQ8qlDJv%1s7p}gV%rrv)Q28RBA3Ua5tWDKm zzj6|ZVUI)GbE6Jw{a(-OWoJ*|ABJmq>yY07wJnSQ$Br^f! zJSGh2T;lk|cL5~~!?uT+^Ab#w)CCN|n%4^29%t83ufNX-&BmiSCDevR%qq}-n|ykp zo34~|8Y)9y6u&Yg`UA%1)2lj|AL#pkZ^UA*kRHpqnhs%xGm|J1-TX%8CN4CBzkwAF zWh%HFyE@SZ(EkmdGi1m{>f=eRFpYG}%geKxhYNZlU+()-RYvKW7RMibt<_VLdilbB zL19C>Wf#So3)$(M8B~{e(BY`N&hJjoi$L z#F=uDUA(yX*3N=rP*))*X%y#v)KAE&^NCW*WV(zW6p;xsZHE~Uou)MeEsF*D_p6bP z@zMHe zd=_5;tbe);@$@MSJkS@s$Yt{yKTQnYrEb_6a~!WdLyFTx!?_!=P+@j-hMDGQr!04C3p0rJYZ z)HgJ8rpd@YdFGql4s4aF@`+!2>uk)}`3uXMTurqGJS1{RVGEZ?$Wu=6=%9<**4!Fp zb*4}SSJy;LHNcYl!3rPR4X&%(GcQA(LAtuXLE<1`-LPP#UfhIVbvRu)yla$rt0)Ft zts);0IId6VV%1*$Ab?EkJsHYc(@Pz$tgTTpVVX?2!~kKtDT6K~_Y~3y{Tf~$p!5vt zM{47{79nXSrif@*BSAf*<1lIx6ORCc|FOrK%udZ^-f@mc9W%9R-A9gy$?TGT4Y=#3 z1`Wbw^l@ZL`F4JHDAJ1W+Hsb-bOe(n0y{p16k7>#5uo2nE*nsTHRszg8y z4-m!`#AU_;1%u8J3bs$!23tXVYD7QsSNnR}x>QivB0Io=&huFoNf5yd9yV0VM~WYT zj3a`$zzgmy^kRY0S0&zJa(_7Fr!H7|(#9El?eUsp<4bGw<=7lYIWEIe;HZpd;vPqt z>#kcM8!}cg9)?FnHJGS9zHlsh9zZPNc#B#}1WF(w(ZZ1~h0N3+r#P}FyF{^xV?C6I zS!a145^@r#WL(eoG=Vjr(?iyUJN;!nLq}}ynRz@HY{*{MUptP9klLl9s5)ESBY*!= zjeA3vKu5#^T+2||OP+vUS^z*@W?Thw&0^PN*c@5Q+xjcWILTut)Ug}WUBt*5CSH!s zpR&vB?IGgHo%mkT+vC9<4U11T%uE!f>BreQcE}nPIOTGes!fE;>*DNK<;+Fd*B1JW z9UoZ+Z4GQkY)q*cBypwRNK&bIDF1C)LooUEel}|ql0Bl{-}GZ5;R@`ep96BOF5K+n z>JB{*L*F^R4Rl*V+t$bfpas>F-+W*gxAVWIvaH3pVq zL4C}@4kj7IOgZ)162wZG8ml1peq`ynFr^}qoaj_S$W;lIPZ2-%M3MwYkF{A*k*aMX zV^ZI&3ItCv&nyK-$hZIvHT9gfb;ggQbM?gyNY4liev$xzVTPv7pZ5v%Aug-i+|A&m ze&bl_(%SGg8DC*9ujYUiJ{J(PkeOJwZZ}9OZjtv=E%O zbTYh)!Yjd;@k-@Xq#?>K1*~kgefW-&BR5^UBh+seY8-fIvlCrlVIP+|&w=VwsCJ&* zv%;A)!;41=`s3ZymvAnBN)m;W`L?T3l7l%G;Jl&^Jp)YcTv9d6_m2lTXe`K@Z(K!G( zJv5l#LC;m^Rg$!%z>jLe4tJ?(@aGdDcs&(rQemL?6hOSv?M&#=lNd+6=-IF&X+$xW z1Q+Z&YJ`7qovLsxD1KT*AR!2|D!%fuShwG#_+8C;wkK&vDKMN9M=b29V5;cwaAo=X zb$Te0vVVI@X-!=sAtyC_oE~d1t}pr&5c+%Xu6L^Yi%f<}?ap)4-nPkiw5Pmec< zWNYWUx?wCuR-eG2Wrfga9Ku9HnYWhlBYoFD(eUQxvT_}YDd?-u3$ZYY6(jbmtj&^} zz{FxWXH4RFNaSs>7lTruK$4hf`f({F{hW7rReIcE??Yn&@Uxl6_H*~1iMr%Tc^+$; z)uL88XdaH}g4o^VcX@!9yqO1pFAq@6adqMI1Y}kZkM}n6`2G%qA~xXha;~A2T(5ZU z-OAN}cWf}E;mlP|xruU}l$R&7CjX?tuG==JPUM$RA(TlTJ|9(7B4qYWIUz_~2ap{K zN;mf1UM70B6V!yHN0$W4}Ya(eAV;l!c4iS%WD|h>m!5`aZ)dH4EA5rj} zusr+_ZuH8VEgdPk$eL%^VniZp!i%=5b|{lUco>U}29a8@>9Ld0(ETP+a`qqJF<^ro z-j}p64aV8Ov#@c6ub46rqL*wVW1jrhR*>(ifR6rK5E_tM-qH~^`d-b3?Ah6jNlnwf zb}VmL{6>XJgE|>1ezw2*tXgIctmt^%7J=&Z4k1fQ}hE zK-T1%bY(%?U$b>7;-}!NtVDjJSSI>P0f>`0tzvI^bUltZskUE&++SeDzlg2BD^8>~ z=Y!3A_OjsnOLtz=MJ$XoJQVOUX7I~VWO5=N(@jPbk*yGvf~9wV!f+xy>lG!_GCCRR zLZ}pqfy^xws*Cevgp{qwR2OWA&B&6Y{yCK6aiUpx63c#)eQ&Pn$rbxm_{XnA<@k3~ z+70WLYVwNbDTXB8(w{Ar$w3j{Diak}-wvP`bz4^5G5zr5)tP-JoUE6Kj zLznzsR*5lS^bGWm{53O4SR0N{*Sc*yqA~H_>*h*%fHHHs#pU*~gWw+P6o3M?3Zy5i+-6fB3TyD=J3^=XE$-*%^ zPBYH&``NweGLfNNnuf^OZA~sBH{8HG>``IeQt6fXo`K2+9Lh39i8`7L96vMNSh@sH z_VRsZ*-RHM@xajI5A|Ma#fRLob-(E_{kGo8+;3%}+M07BZDm~uDsTgO%eBLq$_nM) zaN=6B4K;Zb+l=fpsj@BKTu*nFE((|2gk-Ly@xEDCkLgoLU6*Td++p@!HA91w$KyIV(rDaicLwe6#F@0Uxk3u=fk3bDJ!A}HEuu6A z2Oojy9~VKaz#a9;18#AnF!AV1j-mx_C%(j7R$C1hsZkdHc7#E_plzXTou%3#K&YI! zdc=qre_)^Y*xaQ*Xj=CXx0F?nr-K2+>V`W1N+NCS_zw@MV8qTYnu+gvaQkAwOUMT3 zFl+2jlyxJ>DYWm2zmPxdUmLL=XB}*mo?UF48)S5`x?icfrN-tIn|Jy$ovR^>O z0`HceFYPB3?8tk-p4E(Y4lz$j@ma0`ZQD)5v@aS^ow|Nn^cgumUD6)Go%FAp_;NyJ z!K-V<$qMsoSKXRY%sh2mVqo)U6S7Q;ef|EE1y=#(o3j_2kJRWbo4JpfV(`9ERh0j9 z5K^=$?%cY#jDFpZhW)FmqTz8#9NmCI^*JmT@tI4Ay-qO3V3-h4`UTkUd?vwgv1))~^hN<=Y^ zn2sk4SyoHLiV7p{zMb|Hh9K3bS#2qw7~KMgl={DtlQJ6~O1~psBiHS@$^5+4%_O)oiUBW}7_8WDl`Fz# z%4e-SSCa#3Uw#AIs|zt=gLEl=O+xr6$e5d0%T9U|8RoaZ>g`%R>J8RiXdpLD7n}jw zHWY4b^j6gBGq3Q$a}b^Am)xFYHf0jE7ATtnH9=Gk3x`|La;H)e*k}MaG_X7IKyew$ zYo(gJ1+rZ2GiJ?0+G3c!@TWaj%z5V7Y`}aX*3_TAx^0O2p&A)<4fJ4vLx5~^0HszZ3rSTAOge0pB$XLh3Dzl5r-s|qr0qaWpE8yX z55?IIv@giB87H&!7!Gor9Ky5a!1uJccOEnw#ZcXzOQYAc;U#*q?_|v>q|qJF5E3re zoY@ZGccSH08~3ka7;OaFpWiyqQsgPbzh+-}2lH1uMf@8^^h+_^Zqhj+T+rhz7+C3U zQTUNbKk*P-(_*G|sl+%~u-S(cY4zHRjJbm9=7_@w6XE&ijy6nAm)x_d8HVXMs#fLOIrMllN9zkB#KKXPC^AgT>yyd|=6NfYtzl zf?9KDO#0$?GIV?D=RUY0d2YC?R9!rxlH?sa@A#mu9l*$a&sMF2LotWTjI z05ig*DTJWOYXui6dW7mDe*V2PgIg7`qPTKB!t_!E<$?#Te5`pI&&nPatfyBnKGLn6(Nn42d@E~eybkbHromfb?PRW}$!ni!)vX4HVTxY6)!(pRL%-6ddvtQ; z6cD_!aqpE)My?O_H95ID?61B7060D99KF)GFcf%uFADvIOhKES8V2Q8;=otU5)0sn zN(xTx21Uu>?GpU*g&H zcr5ovJVk6_LS}TRAPs3Ev+>9XKkCQySEX7ErK0eoU$Ipl-0?9c?ikh+*C{Z)00Cb8 zr68_jUXEPH_qiY4JoM59vt>t&N>z+68B7|wkw}kZVLy6_YvmWKFU60`e`B7D=vvRE zA#oKIUYYe9a3&@4?bpbfV7PF~28YX5j<0Nl( zI0DB-C&}9b(X0$`yNorH=ZA@MMhBhK0!6b>Ou)-5tV>S)WlMP75jl@fxT+>v|Rw2_0C%(W)~Teuepnp z4$jw_v20PhC%Rs7*wa8G0!CR&&w+X1mPdru*m9F3ab!Y>(nT6j*1`d92&J2_GV%R( z#Mu_0x(r*Qr`sMigOr5XZkb~`En%3@#HB$OOZ-LsdGm|TMZ+Q-W4gExzFKtFz3r@y zu-Gk+c{|=4Z(DUWTu)f#h|hQrj^+%-W;7-@o$1LRW%cZ8q8W_ll`3KZ@E0pPlpI?4O_W(%HW_=jF41dCn_m z|LUAqKkqesS$Z(ngqSFMjpFkPxte=>jjDU@Q>wr8)b}&(>7%DG3nDoI1I4^?HTS4$ zO`^W`@$}WHR?{0n(X6qfVgYwu`Ak`Mi#GNtvb+swd=1SFcFv$xly8*~4b5D%qH6pw z&5jZ{zy4miiKCO$ifKdE0c&mAvgFon{Dfz8OIzSC-6|A;$LyDtu3%{(27p12+UQJY z!8P%G=IBTfY!?0#dk-`>gUOpuv$zX_<&ql9i@bsG*u{x?RpE7G@*!#EsUKc@;GJQ_ zG5z&UR;e^HKJFtYMr?|+e z-brKos8To)YBpyq#bQI^ajX-5Z-(j=Rz*o@j)RnTI@Hq&>p;H90`#II&r(_-ImK+C z>#@KbOGeN2vy620s7v9N`00ELNr*eCxL$hHptL6g+&`TMbS-5J%5el@c+clj*vHu) zo$5D9UjOrg$v7rRlzE+&_x&8#3;7_vtPCu)E70cN@%L@B3HOJdsjj{EN`YR#k=ipm zf8|x(26zJbTHX-|dhb4rTrIF~zPck;0kdzYe5WCdUo2J!XgXm&#|gIyL4HFC!5(ZB zDo{b;n(2v8;P6`h`KdJ`OwL$^$RE3SacX1v&QQHJuQgvUwxg>sFmiJYKcJr>Z~#DH zDXgmLDcaZro`Di>m}|@v+TW0)oDT1~6L0~Q5>VkX(;kToVjh7Rz|10RHeIz~A=#a8 z=|bxdp*W%>+eRP_C4n2RV2f4d|MKo}cSOvDBe5yU#hW5C65`eJ$G4rGO&hOX zb~sh%!4vQ^8G;P&A%eLj^(ZDC$7{C$fAwj|PcQ?0_!(#qWmk8IetH(oxm-w+GiJhw zIa!PNtjV~V1@U=?q%c79v3SnG8M(^5%tJKh`A%7a%>IcU(Ul)8fKdG$Ek4m=(VSjQ z!ZUkS!#>19Ow@mY%hR)L&cQMiq;l>FE%5aJ7rwlf(~CWN&tgw57;HyJL8R;`;*QVv z2*~_~`oZp578v2xyWEAl{y8oMdsruhJh@9C!f441!#8f+9%Szgf2PVgT7Ck>vY|p8 za4tV#VcrL~A;210BOqJ8fH>5^b57oHQL}YfzlGK}({!{YpVnM>%Jh@PEaREe7d zy8-F+@Tw6T)8ioUXoJFIH(+|yyjCl2@ARPMDZk_G2>)Feuf6+Ng*5K{*ji%zN)Yx(Mgc zToC{X%&;LnM&NX7H!B7tsCSV(C)awN`U<~h~GU`%P z$tW zo?Zi6(3%G?DZ+zrVR9%CWCX0FWSSjpdphk_%s5zj?N<7t;YFMg#h@6bhYqGT(4fRX zansq_$jVc--*nmP(+CRnYho}VM&I~w8jCr31}%KAVoYJYMpIyYC?tBk;{ONnLgOJb zUdsuKPDPq7QJ$|Sz!{+QXUY(IMH7oFumL@+QT|mqoz&d#L4YevFw>FQFilvzF$OfT z<{aV}D{&4NU&xZ~uD;X-ouC)XJq2nQG0X_Shsqsvn~j~t*$|MTOf#rESyU7#qyJBU z6KG8TdoY~wJ*>jnN&qadBdY)YU69uKq`5hBu_AJgmV;-jqH&HEi?cn~hDyJgx-Xra zbFYj(%^X}OS(uu0aSZTCT&9r~=NOa@OadiHB8inCMh!carFK1mZBsTNKs~0uSahqo z7EI!sZf|whAaZJNUn@EWHD+!zSUX#S#W1u#B>3NHK=h1Zx0ZBFuRWEU{S6 zqWoQs;ZJ#-B5SDl!4mr2UyM&!@GlvJBSq0BaSKPQUT+0jPJ?^ToIYZ2TgP5Ts zL4TGw>CanxW@u<7L@v$BH16(TWS{PSNTY2!c^|J3`Oj*K^=tkApkdWva(W>U!u#Xt zcL*09^PY`xFg>ed5bgka|y45tqjva$Ma+SPAEBJK@ndTZERs`05-1Zqe;V3V5-x_m3g{IzwUWFk` z2ge;K;*XU?PrL)J0x&U%JOo-Ouo>v>Z@CB<_CUR~A5izNzcx|!uT`ZXQN8%>0-GmD zl+bhk5lSj6LrLP9+T-GW--@cK7qOH09t-54K+{J95M1N2dxl02Yj}Kf?7i5(w6EoY zzK#p<{%@I&jLY0~{Pz{LMohqoy9Nq%IW8805r@vx_lALlui7mK5$#Mqw8Ml(Anagq zsRYNx{qOJg$V#3Phg`%0-A`s>;haw?uI5J^m}jqOy{{N$hk{W4#SdYXWv}E69Zl)! z$zk@RNBUbQIjIS$fc$9()vGr2gl9{O-WHX#@ygTSN6$JpMiv8ETJaN~1KH3Z_3`~U z=(f#ZQ5CxhX@NdW#IEl%Tz5aM?y%X3uu-*CeE!OaFtnd-N|plc&DoSyi&3j{UY2B} z5mr^55LVfgy7aRygZ0qCe+ptMIW;-8sYrlRy^>cS0$!@79%n(-Cd*_km9kLG<@}Mtc`J?D~7Ih zBqiL3c5ZaXu}Hm*1YHzxedMGmh_&kOn0Zt z&Jh z_TrDDg}N35h@>Sgr=WoQ^+b&4De?wT!|x3Ui0StwUUz(Lv}t<$z6vxzMHf)tJoRn> z3vK!b1)A!M6b!^nEZ5tJtsa8Ju~g42B1%P{_e+~4wMI3`>AFlDtDwXYvQJOmj{QL2^r3PM~n=VLtv7wlcO z|E}OFb^dVzu2Ox;Y(L88v*||Q9|5Zhp>L>EMb8*O!ZL&8A}|3r=NDfK)Ab*=Hg90_ z^_6Q~R*ZTC{!^^#5@$ClssTE{ZRUAIUj{#ksd0Dh=(nvlO(oFUfF9%CMd7M07BAMp zT2;9@J@HkyiT$!>SJq?w(~F9jm5z&hhO4TE7t5w%T*aeST!C5tGz%AmE#rIf)r;vw zMrZUB7{!c&CI?tnJy_Mq#RGj=PGs@!GW+-W=S$OG_mK~JZtxxZE{W6vWT8xQXNJ! zYX!3;fV2!JSEV#gN-(mE_PaMEN;A6=eFtU^{>5TSuLN~m(oNf%5g1}wHWNKHxOt4^ zX)Br5wFo?rL)Pj#c2M^q4YrcacE`E=)OM_is-RQ1$j-{sTGpId<+3IlEX$z3CJczB0@nt@)KUu+ni83F0nRMQ zAzF6jlOr~y%nEJ|i9RrsI`7k_1dOlqyT-WHQJbg0oK$h))6Cg-eX}ZUkgpI!DP?-e zTC&(2BU4+HDxGX|68pH-v`-#4abC!@j~2<$M%#hNFIjH0sD$lA~MR+Pu}k{7~|_NdRt3ws@R2pS;sx&ak>~&gW4XH zW}9PFqwdHYsuQk>Vx{`wQ6qs}6WM>-|Hk73&`)MR!f;>lcy>Il-6_7^KF-}S-W`v7 z$L$+`uybVJt?;|!<}4C+G60G$D&yZBZU1W;g>$*g09)d5!p)cEh&Na#x&JrXDGXt3zBH^zW)i z7;52wX(SNdS-USPYCW6WD`gQtp)jm~uqZBV->@UPNV00C4y(d`x}*$vEjY!5hmDy} z<6BmE&|Vqkd`Zqx1F<5iGWeR+e~8EOrXN>T%{a+^ffpk^#Pb<7g!hsdFZaIwG{&4G z36)_HhBwsbkduE}k>E+K;w9*3M%!64_avPHe^2_!&y)E5od6*_u-Jhs*7SDP`Zc!& z6wIm9NxBzDgd8TNLFhg=^_@*kbxu!P*CqAUaSR z$UJCxHma@B!>K?rIRlM|J5??vk#U7uM&c>Tz$S>)D*DkaYFTzffHgHkXTBD%FiD=M z3KmLh-Hl|3GM%pqwoR24KVBC}^4Op);;g1G427rvlaI(#E!(`6tV+5`~roHVK ztHG_e;bhMRQw7BRu3A*1rFHS5PzwVSybX8%Zaz#v3K%YwZgcMry@fBc#7d16=ImN% zuTUvmz`Ig--2V+1<0}BsLzh#tqn+#EhpGz>TayV+Z35nk(8F5V5jd)lXIdMzWfwrlHRr6?i4N!Y;6%dHkW3X!<^Fnu;y)KERO zY=~vxpTSst+tsHLLS>32bc(AO-zcs9ku0P+<;K5Hu(1?1ON195c-3&0Mo@mS{=gBv_ENgag2LL|r8zlGyItSq+TC zL?ulS-3OfQIaUQc0)guIdqIyu3E8C0s?b`^9$yQ*B|c_PZWrTEo^bXf1rl+zg)+2w zE9`!NQC5ueOCh!j6Ls_5&MB=DsyK!@946^4(*YM#(icayy*(jT7q8Ya4Mj6|)w87dL4)-Z__pIO23F594 z)vD%a%igb#Wu59?RG6%r*PU(c7_zthUJ8dyPJAzg!}UC?0kM4~(bV44b;9bE!7QzU zeD#>~+0!oF@qPrCR@%6-aySToDV|+M5;J1&|Grl@oP8)(zz2<&=o0%MSDh2KFdwtR zg|lehQvxNy)I_6lEXoxPc7Idnc;{b`se__B3SXCVDzKW*Jqs*V4TH*GQE)0zKucKw zTnzin*swWwvm9e?NB|9$5wp0n5*68+1+V*Yb{XDG0Sc7LaJLUMgEbG*KtQ z+dC7=^IQua!h8FAlLt-t}`*G;y0ZM!ilF&LoZaZ|LQt7*E_xS2qZN_y|6wNp0E(NZMgOinN2JH` zQcqM=I29`LbX*UqXxPSZCx#+$B&j=EFUp?Il^|q=_nj&PQl78-kSixnN3I}iF2;&b ztQpNHI4`<-OhJOPAw&NnQSrCxdofON8-By1;X-&tv=l;a6JRcoS<-ozcs3|2=c|cG zJxT~Y7Xe@C=f@C4>`dEcJ`ZPz=t_)*$k{a!_y)i$Y8ccke5~sKzk6)1hY|Zi8qc+f z1ew=!8IHh2dk_Y?AdO>xR{^=BynYG`zS786KfNPE= z4`<&Aj-M~TICBW!rr>8hxXrH#JWqQAW(FcEvH{(PrEiwjF`Z|rk@TKuBGKAvMS-6I zBD{>VqK!;fJP7v1OUhWKCp6d z5BYcD5QKpwM9vFw_Yo~`zh|8#OrpzBvzFlHGULs#7Eb483xk7)>}@IWGHJrG%&2QH zx6-(%4$ye+|6x4g=N(lO-24-($#c0G2Q-Qb6R z@j=M?b-dHQd!ibW=-Am_E;Z5%Dm^fH5ab<#1)#5}6w$@x`8sh@wg*LmLD}H)`NOkW z`K*j9|G!~?msjPn|20gYaIw(3l)~!I0R?b zJ~}-zk&p22B{jMbYD;m2>oF(`(U)J?a)O{tVoMEErAnRhWgJ!QD);YkDiqL395{^H zupTG&+-*+fLD9c)ePNv~f8zDY=<{=XTj*%|K&_t`exT$WSq^Gwv^DjjB}*`{mulXu z7}cS9DnX%$N`W+oLqI}-CM<>EuqnHOiAjHWz8u(ArnVa$-lrWVEPseGNkhcmQ%_?- z-T)A7J7E1JdEVd-pZcjp_|H3n4n?j~^2m?UNSvT|NG9=+Yi35E_J>^uOV1%5fwS9O zOq}P~K0JP!W#qtJ*qY%$c#(DEILV?vIDGH_6VIO(u>-eW1Yq$76zPb>xs-LLR7LHR z0}1b7$?&ivWVRA@Cz4RdTiIS)5b-G5Ou!JSh~qnf04TJQG!W0!q))xsUH)+g44vV{ z7D)frq49Go_FwZYzF3s=e(i|;A8llhWGvbh3Ku~d6$)8jcQbJseFw^*zd+omL<9tL zZY@MBxa)F*nztQ_ktLy!@{vnp>SbLjy%?9?#q+(ah@kuTV5&4^`a%n<;qY-#9J}km zJ$MWr#-szk^OiW(fmeo@6#Sw!ab(sQ6&sqY@ZQ#q5sdEICvM8HKy;<~qzmW5q4UYY zoX;@7qgNfEYTW$^6I7u!1*mf4WOZZC8N|h{nr#7|)eapna{|B1DpJ9lC&vz}K0b-X zX4L*NPbAT#90}u?sJ=#!0!slCGVd5ex==rPC&(T{8>MJRNI}9RCz$*F5rW$HRYzBGHxoCP2PFg(OEkUkcZtXThpY=xWPm4sFy4QZ; z>#EWSS504;(HCdN1O6kV2{lPsf(25`_H$tc2X~h>0(o~9=9VMO;e0zp_8ZbmSdD{=VqUuzfbatbN{TM84Xn7MsPHp#2{NSd$s0^>=hRD{sR>y zbSCHTmr9v%_!qH91L?p&|5&I080<&u-g5ids`z7t+xRr}sUy#nf6X}!9!Cth0*;4W z(;2R_#jMr62e27CIojoToGGtc?PI)e-!jUVMp5d~tpi|7(-RoiXBKZhMUaVCaxrvE zgufs55OaILk{bLav9QSPBOMjA3yZ_dKZPW{B|0Fb49uO1XBG%Nn}NAMC+9+7*2svy z{QgY-`xFY02N{8$@cUrub6$|FW0if9qbqftvCR8{bJc?|-w`+5r-k{t-4OOlTnH0> zN^-vZo#YtngVn8yynd+WWcL-J=Kpvs+M-tQ{V5@BK1~nl@@Xl(S(R{di!xAun07O^ zpOQ+NPs{0Sb*qvL_ia4KHn!9OA=r{RqWnGt;0#Dl>dK3RRL<8lQ^(BBE3SkpdJQwX ze~-e3>ITsoi&gr2I1X%7j%;Gt^vCZ*if&AcxCncmXUz)r4_qf^r=5|}6M9x~r3l(j zNw6uqVqUBj-vOqweN3`-ir}3CZ}dS{VsFJv7<5kuym<;d-KOrhW7? z9>vtqWgDlxQ9*56Qja-VT{okP9e!>pL1*w_E+WJYtXMxT&4QF4)yutZ3q{oOWJZV`? zzxg!9)YHbUxw3cixJf+T*Ex%HYm$7J=4o=*>9ch|j)rUa=gSs536=c^Tk6F=_M7fr?+3B)% zCz5XvXrPr7UOQl1&$@`zjSgESwxbS5cMAZwaX)<pXZC&94f`g5khMdJyLwoj zM!0aZ|26>!j8pVAL?YoC9}!zLZY-4!tca_&B16F!NS)(ChjvH>p*duF9i>;P@qgg{!xvR z1jpsa!XJ803T5so<3ItZAXnc9nV64MAV5W20O^S?3(M?xK55n{Qj>e5#AYfvlsWQb zNvtSHy`ZX2?%mR|JXOJ&i)c=AcrM?=AHtUUg>7SzKA!ExS-EFrSuytP)|IVep+27N zR-nTJ2;9gFh8RlcbDhx!<-j78SNrCSVg zd_seOQlS0nAbUWq$1@>gsGQ*IbVyV`JMM>m6vATav~>E(a9V!|3TILwm^2d{&g0se6;J1IBltU;`vJVv3QrUWvTHqfW; z#Xj>S@NLhTs0SdMtKC%GI``S#u|bh+?WL8&fPaFsH{`64meaEE&gm|Of?{LTx+X_+ zB=%VLnpvmSr%Dm_<&m$!WGauJCR_c)OkY(b%aH;g?-d2_$u@v;me1)QzCWoP=NI)@ zY`YBgk5}P3PDwgC2*_V_!}BGeBWvf*JrJ?*8P^1;`wSwpGK`Y`?rhMvvmRocPENiq7 z55e*2waNI{pn+|FS*Y_tF(Gd*WG6pjk?#HbGCOjp@0qv8Sg9gXp$mwfZETJ9v!@^# zWH=7xqE>pmHi^CoiAKqys4kP{jw0IkmOl`cd0x+`Scn!W^7n)x&H~{QPD_i!3X`tX zo4d5JG^9xlyS~hPQ9Nvn$YQ2?ix-U*XY*U`Y?X`EmyPNNI&W2z?#8-s)v~lSkQ@m@ zQx2toZK&Q{ir2c6t_#-24hsttbVqZTk`Y7>0%DF()`2aX8}C&E3HWpN(cuVlMs`O2 z*^{VIt7T`X+o|H3>}Lm?RTTF=dFm=);c-hxzs7A_H#EEY`L8_jm_7*ngMkww{Z5x+ z4=VX^uAIxn8Pk)gOz*)S9vv;#RyJN~D|O#a?b%4bgu;i)nHfKSo)8EJE+1EZ|+-CJTIkAzf7S!1HijP>jwi4AM2R*Skviw~DJZL;Ho|=If z4h^qIPaMin9mLcy^OhXX?;p-{*dKOWY1R|NNRM8c;%4+Wvxd*T|2Hc2wIdq#(>LBj zcf@IHW=f(E_@L*KTMRJtm6A#e1&K+DN44|IEjB>&wQ~H%Ye2h^*kE1&X^h9Jsl3Ib z5bujR^DMkM4$H6N6wcVt1-}Qo#-M^;KWPeb=5J~e{*a;C0JjZKpom$~m9j&#A~%--Q2+h20G@sxf6`B6U1!oF*@mePV>2k?Om^G> zArtx+bk`dC;6%>}*UIR&dErvqQ1sd9CWeqZyJ+1LgE_oVdGKY)rD&q_oR8I}(c&HH za@hAz#KNQY=!qj5vx*bm#-7|wvDA`tNd{gHd-3wHCit7_fGaZ-JnsO(X_V#&P6J6! z%>{7|=fhQ(>*B?^(_qIGO$aB}Fb1F05#iQsyNXIxh9Lu-4Nk+8&Uut_U10qJ4A|0J zQ>(gy6e^b8CM}X(#%`-d0-;<^_pH6>>lv3*%tl6H?O?*()CmD#(PSulkfs53x?k3tub#lo7ubN*u z?H4eRP;SW=dGXB)k@Elf!htq_+zAf z20VnO8f!6KrV-;4UcL#fP6J+wQ|_`kgp5nU|-{1M4J0 zoc9H%A7*Aa0ckhPEch%A&+jz(p}39d#~vcxU4R@QQib{0JcD! z;_NUAzp$Z2YL{m=Kc!R`wzrRL%$rmuyl0e(V|Qy4mVU9W0~q4DDh@V< z?->=SaaCZ&osz!;5@M1zdMMp7X0ehqB%KaZq- z`(ZZGhn~K?(ZUQQH^81(F0G>m^}~8YTkL}v249CzkHn2;OKex1Ffx&ZdV2N3=-kwF z#d1y%8O_sLpV##Y4!lwYV6%Wg&7!x<^8`D&xDTya&_TJon{Xwqwk^W0aPwH=CLT^D zRsgE@ZetjO(D&&P_I36$siUvpE%_cx z=L;+euuhK7`RLz6%~t<|Ssx96U^3!Hy}&OSFphu$qoS;MZ;e+a%M?PZ-cuvcPv1JVTJPdy&~e3`2Y|f$m}gV+yzh>VLa}^#kpl9Y3G`3lX@5Bhxkis!EPi6^Ov+J0mGPM97 zV-n_0!|vEvq(40nHV$4ZhBUqBFqdp|@!AIQ50#y7Su}u~V+{$=GpwT<6!TN)IEJMTVH60-jv!u`8oLsJq;?rd>j+RKw9hkfnIH79E?66 zDq1^cS)v*1yopDcaw9*Fg5_{i-u+hfK!Xbsx=dcKOVRe)O93tptdkE~QQbrhuD6kt z9fF!nIBzpF0vR3U16sJJyd_L8%Bdud#NXva{=Cl+U$o{8m+~f`)+SsTbMZx@g$eg`W$vncdO$9Gn4-* z8g0Fiz7z5JTNTzgf00AISuN2jF?;avkPVUMdJKLwi^u?oRKX>PpOG`g&LccXMxdN* zqbX~d$omFzY^)B=;b9#(w^Z_Swrp!un;hol8vuAbaPI#7HoyD4#~Wvm-kZ{4@u14t z!BRdNi@!P3Z_JrHvlA}gF;CEFx^jv0YyR!Z*p-#dJ;qf0?DSIhqI6#4jB!$VI3~r3 z>ARS>9&uSUEzaz)%Re`a>}8q#{zMkPFP4ZjgFD&~%}}Le{x^)+)aj8m-yK>xPQpbW z3HDdu2m7l0Z@iZ#@Qj&Mi}jkWo;W>@DSY$oJ^OL}{}Llq852l`%5ZyJFBw&#(R6u< zxphF(F3X}?xt_oVQ;snVS7WcV+RhB3`N2BQwi;+yc=0hY^f{XFc23+pE>co3H>5JE zp)W4Q*u!0nXK6U91TV7&rbb+7ljE@**S!}IXh~_s_k z>OlRD7u82iAO4_)a#hz;WfIMp7THQ2DcGF>9deCrWkb#I6a7S)9(ZOWBDA_l3C^z? zvj@Bj2?IYe)U1_m`1@v+ma-fBf^4enrVgM{KY)%r;m2-7)b1RJp+Z zv^dyjO_B0m%If1MtyNCe1l?D!eLEllt^YHsbzx)lHG zQm_0Kd)x;37IRBjTX?6Pj8N~gtEqA9cp;|wE^>wQ3>~~%Cw;ZUh_$rtxr1;cw?O*M zbIPN)-jG&*fw|fG?pcqD4H%saSoMaX9v4sFP`SBkblW5@Z?DKhry;JFKE3m%GOn25 zxbh|o91fJUVsXTB9Od%VvZo$NjOrsaI*iF0ET3X)J-nYaoD@x+>I0u1V6kJ4m@oP8 zd1ET%83&s#PvwIQj;F(sxJOf!Y>|w}hbtr1@;OP?y6f#@E*WK8>DB6)%qST0EpOKO zE?Oi4SAHy=Z!S)M#YvMYh^E7{mHpSapQfMM?ohx`bD@gA>WRWt9-q!aur(ue_db20x#L; z)9*e~x0g3)uOf+gFczM?)=lP3k`WA5v}$T`cd}UPImeZDY^9D)AprTcpw zdRzTP|SxuRzT2aP<-kfP03P6df!Elfc>B=Wka8L(o6vMNm_Gt z<0eVhl$EyNJfu#yHs1bNJ8hGbuKsJg>D93{+0nMrD1K6pRI{XUS@hVa*umRU=^QjK za==u1)T1&9I)gqB?!!S?^KX5mg5KSyogGaOXh+GyvrYzvKBeK?aX|WVYT5> z#Olcn7e(n*T|Dm@eLE%!eEu2-OAU%a1%D&fym|s+^#MmMfAXKwy)Uo(&2ZDiMrp~X zI#U8GT_zvcEA2NaZ8~3^SeID2Tb1i={#TQWb`b4(i_Pbd>nsSYSI6>=PRfSbsl2ZF z!c`M{RgU2=^XoH`pEEwyu^LRVkHN>j_}uf392 z!BV&wYQCJ}A4AeXeQfDXhhq{vh0lc<(#MVLRjgK&_!N}taD37k)ylEKJkmFoZ%rTG zb@%fZ6Hd_e7bpx`31t89ipH=8R0>~+rksH6s+?nv`{4PHjARDwyNk{Dhs~BxY}2A? zU7Ql@oT2=XNv>E84CM>%;=ya;A6Q1ydc}iSmorG>stw4i|qh43J z5n56MTqmX7%aI&SJ^C19P4pp4G5PD>T5_*UwOgIHu#=}&_bs5Iadecgc-XoGS~G9Q zW-d$8v_?(J03X9tpVKXB;TieG>!c4@&`~?3*iIZMKl4o2Qq`*BUmW~~s2fDbnR(@? zbz$=pBwOQANujA*k@KZfZAREe-gq5_fs-b7isiSyjIAsNYve0h_@Y2<^3N%aw;<41 zDQ1x8oY1!Op)w0md7=DC~$HE7}>y zD-c>n%$a+X7TF&rbxI7@Sz*azli8l4v6LED#I=oPF4nwdV!5`9|C-h-{%yu^1OIoV z>E3Dz+RIDNr>M1X(L1FtUMk$+PEE8P>dR$xDGVJS>UbW#cMF7-r_w6Rf|aIZ>b8gc z)ym)nD1Csh`0|LYx)6otB}+gk;urPO)s? zlv(YuJl}{YbE5@nz2i)z14`9l$77JFG>mi~`g@kQXNU%eTj}14k(x^nTeltC(1J&T z|B}?G308i3`I6pCxZt?uS>{@*AsQAS5pVo{ye$gCT;!{lunPE$Z^PD5(_L`S{Yx^1 zs#4-((W>BGOLjO*#Jh%zb|im@`Ej>oE~cx?+Mmf1jJEaGeXtEPdUjsb*UI>&n?wRw+y&Z=~DZ0TbdG{2@qlRBpw zpU@fCSnvee6uUV=E|@oVB@O1ptN$uyUve#D3cL%K^M^77uGh3)(XVJp@3cbv;Fa(J zcw>~r??4~KBCSB5O_p++VtiIvs%5A6?6Po5^m36EC7ev8_A)@l^ED{8Mxrim*(d?P zqVNvAxmIl<&%g+Z1cQrjH_bnMkF+@T;aQ? zH%b?v&z7`*8t3NUT;V&-aiUD(xqfHOGdwvpT`0zmHqPDG1k9ZWL2vq@0QQg^Q|ssb09K&Kmg2kO$Lg0xK5T zVk$YylTcG8-LzYT=*BLaGs3ZXT$tpTO`L$@YfKT7e2vLsqAHSY){`Tx=%+yi+t#;L ztWv1jfDYUz|4&u1oUgTbr@kpKr#sD6 z;HI=vcn|(;@gTHHd{dut|9y*0O&2SWjY&6wJMH< zOERb$php8b>#h91%xSam8plg;Dc-OopMp{xzGN%Fk?Tu&khl=Iu6f-!ID!=xQ*}!Y z*xOb5wd}%emM&pGbZS<$Yh^&V_TKc0vnFk9;ekiFJNiv?W$ zcHUC+BZ4sdFzcJIrhK>^l|wpq@0hpO{AeARDe1??;K%>qXF(~{{CF2SoUa;fA#;u$ zMsI~cKRxmUbU%~(AMbbZ$2xk0PjL2$aiOmtX#m6FwYXszUx?FC{0dxu7SP^XX1SRY zh~iX-i2p^+%o_B(<3pTj%Y!=97Vwzudgpvrrgk*np^km-xgVa-!SfkmMR@ZxFH(1jTnxLmD!yJ^VT6n3vBLN#?;R=!z&A6VpIyXP=uQ9ZI)b|qbh>l)4_Eqe?dSCWWA zc}(Pa{9~QKR~ zrN;qAjOXvFfLaCR(}=mgCNE;x5{$0sdFyz!<9HTGBh~%{0UF!j%uuev%w}BS|MA5G zu-0)^H*g)V%u+Gk=iyL$oB?*KFH-+HY$xwS2$^_)bmj7mAd`vnFr9LTqJ|7sdxbUm z#=CEtE5cx6&PK})>*$qBPrVIbN}qnMLrX?)*a9XJkdLIH#CM#>Zj_pM@Wgp&#DJfX z+RC5-eY>xtPZ~HxK|e~5_E9Q(;n(SaM02b?E7*5xia733CK2Xe9)>p5-5u@6D&y2h z6|v;fXSOW=KYM9(n*I;=CMQXka+4Jk zqjqNzTZ3K6=+`y?CX+{9!tKQY+sH$M`5;hZa@E0pHVehaowTkVrpF`iL?@rf*;F>r zcs$eiJ9#~nUVz-bBzz}eaOM$jz79zii`|it^S4&;=rvlJ9j3ADd!W@ot4oi(0{#oH zk0tB%z4LK6%_~dCV7a$Jm=t#Ung}P)Bk(1Kc1jCn>^$xWqkxQ=IlT%P$XKF-*t0{p zdLFLB!*T#lqelekK{fny6DS&!XcS%+_j!R6;c+4KdVg#d>A?dO%tJOz0VS*lfACB5 z!#Co^5*sQ z+!aUAxl9#V9ck4Bt4CHZ+ipl5K=s{$*j@qipUq}|Hw}$0=RO&N&*#Q|^b^2^)c{c2 z)i>;0r)*{ZJYpHud7u6y(paY#(V(;>AyEP}@a!_-3Z*a$+b;d_3cRlJD` zDbNmKxvP+Kv9`?{Om1alt+_q4s&d?ci&@KzH?7pDb#qDck%?%_f;d> zX_5gduJBBimF?$h$vGoChbia59}W4?Dzvf+uA_SdE`Mvl?F{RS!8A$(w8b(r>q0E8 z+%t^g1Jo+ZoO~WHVG;yZt3my%${&P@mq5&;9slG4TsvQJGif_4cIKf5pBbJ#0RAUY z1FBX%C@@b2c=0@9IpP?TJgcII%w1ObQrf8J{vq4IoMiMbF$qa4tLCppe1ww{zDq^A z?VVr=`n=#A-Jrg^+zZ6Ly!#4cFRC*`83TvBA6mD){#Xt1KgNh=I+JcSAxc<^xI0L< z-~Ie^;V$WUq`a3@CDQyT{%ov%J9b>hbsgEaAHo`UT*c5tjEV2k^pflu;q?+=&>%pS zq}0Cg4L{b9PurA^#;r`wel{$9;?FlACyVoup*6J9OM36Jb0fu@Zu~#GS;HrxOz`u2 KH=2Uja=ieq}GU`-Wy%NH|Wz(v?I^p-FJ-Z4}MNqE^WYSF%EdJ~F zs(t;QG(RLj-hm}2Z8ZqwM_%enhOH#sT>}G3b1YqmHmACrG_!yRY)AS$S)#k{0-D7o zNq%3t>~#IMH_*JMyQ(_MoD>Iaq|rk-g-Ke6%y=`%V?+FV0jAX>UmOMf=iR@cLq)2uZ6Nu!jdgqU5SAkRJFl^{pu7dJ`#IcRqBsBos6S z5dRT<(?<-vF6Et8uN}G$X|9G3mxqybZAzrC6&ixx*wRr|o1*!)Kv|VJ0vVRvz5l=O zr+&?NQlzLq#=2~BD+3a3)nlBG8)xr*_F_G^gsK9T;J6x&Yd%3~Ezz{2)MvYM-g{Lj z6bwNCG*13|({_w8aYvm_Zk$Oc$R>#Hy?H=d9HV7gy3@W^-#h8l8){HI?0gXJ! z_PWS2O;$*Ixp!SK{sBL-EQ96wG4>Xv(@D>4%xCv50wPL*h##PM9%E){;^zLhWWPkp zh%^yFVPJB|)c(U+r)=E*y)`NgbwCJdG`Eg@es1r^wJgrXEwDCKjTr`S{`{&}=) zK_u0){j~7*=qA9%^q)_*nBPyg4pg#k|GT7=n~Sdzz8iknJ-!=oymc--2IF8-s&fQk zdXaYXmRf<9(%~p1J)qk0>$}g^Xb0LGbnyeAvyANiD=C(G1@!Nv&-EM1-w&9W4Tcq=U^at`vs z_&;G|neG#4$7e8F_cxgu=U*Kmnf6#9Cez=@6mUYFKAM*pTzR9crJssY#n;SQ2r@t z4spRGnOSoKL0~q`}Ycf2KvQVXril&xnwy zbE>fXGFV;tUDkJ9yq7VG@aas|h;sYW+j^w`tLPXl`f&04mBS{#m{3)y3(WoXT~;V` zqZC-B!;r{7J{vcpoc|GdnyAtgvW_*OCePbV0DW&QQWv-M302alM#l9Pyh7yxYIF2O zpFBQ7ZlQk;Ao;8G_bIAcV}UxAe!Y7x*>0{g5e!toL}jNKv-ad~AHE(YEbcT$XGV3Z zR{aoqa)W4ju8h*ZtEXo*wGP%)2Ma~UH!cYKX|!i9h^{W)ZhKQtd>ge=_u94e`|mu~ zI>f{L*lg(IcbsZtX0x8^C0UQ4CO&|$2L2tQ>s&a49Ult9m7KQl4P70oV6QeOt$0hk zn9b4D9LXDe)o!DFsak+TPF+Bz@m-j2pOKMhj#oQm*(pkI?Jaetf_#UGPiB`~#0;1? zf_X8>Dq&bkN~G#BS|{BRBelVy>}4wd@W(=_)8P+C!|z}AtxyNrCq1MSA~x|6jXz8n zy|^eg(mG+UHw*(Sx%Hr&&q+PRCo;V@*byH3xg1xXo=4D_dkLgI2%D?MGMXQxi%k=n z1Rxf22Zkw$)z&HV#V=QOBeX&kgj)42wuBhVMluqxA^4Hx)%@5FYEuY{^=0&_T_O#FD$_am98$Mo*NS0-;hS7QN}B``i%BE@aK1linZcn^u=bnX#i^MU62 z4pgB0{gDvPeTQ7#SIa2`Z*9^KU7VLwPk(03Lz?@rx?P{BG*lxVYre+U!^XI;(nzYf(XD(i+u5u zGg%a8fSN z04Zn9ih!JVA_06if+0Z~gktyBZiEN4NU2lZoaLR2JuHP}T+dAf1!Y{xnv@mE%%lG( zDC-UQly32A={(TU*1e^^|DSb^5Pr2Gk_kJPJ6w}^RidfF>w_-l`tieEYS;-O zyCDa+=gJ7?dyiJ+k!z#F{#Lt@KDZ`LUUc^m!;6~lZjY_}>*%nT6CvfZBBNG@``v&< zvkMV)GDQ`uPuyP8-|$+cJ?Y;JH>aG?!JR*UU#CY{>iZNrTb}XJaX4~RXn>SZn7*rH zkTMGucf4V4t|_K?NW7Ii=YGJy3xZdC)mBTDH|r<<-Mcb+mjSAq6k~^ zHE8tys2NsIX!o#TvQUEFI7>i1IacAZjhuI;Yr{((L%rGj-^S6J55=0UrF^!-R|?6N zS9<9UgDs_l55|gbBhAqueMwGIr`7J27e?IOe41U;sw%eHoIa%xN{4_e4rY+D;H#F& z?ihB#a{gt7K9|IyO_Jenj_*Z)ntf8@{ZU>7aM0Ua*UMXvAteb1VX6N3S?L{o*jx6O ziw)mc0*3|bxlh5DBZcg$f3=qN-GXa1bt3T+tbzv?I=LvvQ}&(x*IPz zD=-1#!G*esm*fxk0CIE~9+TEXbIg86et z+;&`P)el#5fW~a2<(q@xXUR_Zoy~vEmZof7Z98$bHC@S|ePwZAn;pr=%aw*tb{Pl< z!zK-~U}lrT=WZZYY&&N;(Ckv=jRk?-gqM8^rh% zf3_m)9E{VON#7v9JH76-;8H)}!cw;i3aALT^LXZZkP-?%XkW38A)vq*HOzrRhCbHz zegH=hp3H0m+>@Zl1B8+YpOZmEFMZc>F_bc9XKJl0l6X*jnch8aLzu3wC*k&mkpl5@w5nEtVoFTAfjdZ8x9T#xdMMhOCXt#<8NCy+j>g0 z%@w`5R;=^R$i6+h=#n4ymRslVd;#=5e0sw(_44gnm&ru5Dl%)}ty)R^J;=lkHe^ZS^IMfY^Qu#g7b#PsfZZiy z^I=$_F86bQmnv^S}DfI=l_f1QFdWotT&1P}`O zNY+crC+pI~poJkplBxs~J7(#Q%mFc&g;ot56F``hv`_&ior;otaSlFc;LZjaj3nTz zuFtUSoH6VM+;~dU(w|ToQ1NX;yXkCdpA!#Ot^i2b6$_A92{nx=kTVbN!e$UxCDsaS z*z(0D{Ae+Dsgic*EtrHR>ES5DbzaPai+R2ohAZatm9vr15*AZ0az-dzFh|HV`jgT+ zgW$O!bQ5;RehChk_Z@$Bkb0$>fOpg5lRFD7nGdEX;kf3W3Fu9l@sJ4n?SJkmifScL zsi4TQQOo!YSunQ+_ga&^RyrIdUxQc0WXy6`C!}ah+iS0U*g-if`E%~N@+alrfkp=i z%BkVr*1iK``wxZN)&25W?2Ij$XhLx&4Mby3 z+`18e0&!Pju?(?p#3iVII?CvH7V|f%!Sur1@HXUqn`Jr5cpU|Fn)|^HQc!p45R@3FdWyvj;1 zg?F|=4Odw2D@WSzl1kTME#GpXFkP^an5)kB3)8#wfT zg?AE8+**4+wTHddYw4=x>hBlLZ6Wcdi&mDU&d{XtJa&uKtcWh60^CG<2wB_tJ z3#FvE&Ee$JKFP#g1dkJfz?2~Mh2AZ;*!WroB0GmQlti(htFRL_YK!QnTVT#x9BJuP~TI!OS38Y?RFpR={`DeyXlm$FC7I>s6Y8-gz z(h49>?Fno;#`W4Pv)Pu+`k z{@T5d2sX<}(gnB{n56C#{*}&2$5D>?I5u3qOR8<%A{Ace zaF8r-8V2JIXk+FWJE{r9AI-)rGw6dmZ=~aOJeCO0?q0CO-GS0V8hv|lME2b{M?eS0 zU8EUrLCY*_PbfsWWR<(v{oP{z<5>^oi$2k85}y3&mOif+4IFa=FOiIkXM!19iyA5% zzF~UHqiP_e*h->6gxW#Wqp;E-4%$`1{U6YksjZLkRhJLXoqlTz1x6w4goG1K$K`_0NHth|?Z9$`m?)G&;fuFr`I{emnljqjCW&OmiMRt6XV=9{p|$qm%au}7{jBNw6f4|ohWDr_Mg;_w9SWeuq9Agxl5x_i%f58 zr4H{caj`rl`9x_wWOQ|w!K72EEO{?%;7%Fr+pPXiP5A9aZE+jV-!K*3oSi=$9LVUBMi ztYWh>VrNzbhjxxmc^K#SFb0%pYeGuzs_opQ*tJw?SPy~#eg${^fQh$(#%G<0GqplI zCfN)LZcp1I{W+O2#Sh1(1*q7JO4A!l2jY@Q#Vpy{^v8L{81-Bwg(^PG%^M5jO?^7F zJEco72JlS&=~U35zMg?ok|WBWxdf<_BXyT`i^#LPw0&?M9sRj9;ka&sjZ34RNSM6J zR@RPN%4F7|>{5)m6b0MZKd0Fsa%JwS#C;MX{NX;a8vzA{O$rn08_Oo4D=1%!PP#-9 zQ1Fg$oMlKa;+$tLhDaZR)?#DYn_$^MB-S)(C?*9D zWat8ZWJED-!R9BWjKnQ~+0XD*t>K{s{!o0i#1HvD|EE1Y2NWZ3e1E{3rJn90PJa@} z?4b{Y6x+2g$*AsY+)ytlgz;JQln5SPea(rYbFI_!=S?#h-+AZF?~3&(n+ZSggIaGO zcm3vk=?&!WMTPfB!BT%)9qa%-sy!8+VXA}36{_?SNIa)M_UCIuCP;L^odDLz&MEXb zSY6k}n3%-1j1Wj1E|-_Eg%8pr@e2a`FSuG`*bl@^Z<9$&yh5Q^&U&U=5YL57A*3s= zTQ*e2LJPzs)5&E+CUNQ`sUx(wIM!T@?WLAiw!WN38!gJBL`Y$SDP@Yls&q2tAX8{s zSh^0xqEJdj`PgO-Ap{fteI7_+#|1jk=6zUze!D)95kzwkB3?8Mhj$K7;o|2g*OU*^ zU+6HTktz#UxWQSp8<{RfblUB^h9rf$>Nz8PfIOJky3b`kBslt5~*u&ci8xGZJ#WAf)9+`Ch{FFHGaKJXDY?Z{_D zhapsSoeZDUwy#LJ7BaL>i?;B!rCE@*aedOL@2*sV$PV%TbA5{p?t4%s?$sE?Zm_H; zy!#y%q(^ra8~@}m_~-FL$KV(*T4xI5wETIAPcu$S-_5YBk0IsV+`UXDaXw^NGta&( z8%sLSRIryOJ5VSI6Lt=3X~$PJp2kYnt#bQPydu2aL&f8tUW z7U4QuDw=r_ae}>Fru)Su6>18~B6G4@dy{2Tl~s+88tNz=Z}h*6SFjhY107l;cFD=u zKbFb@$9*ELAq1a%jdBeZ|A}A+lcBwqI+Y6&D}>;R1_PSG$=?~b#Kdoe!_n(ZSc05{ z_UssvFky0o8N_kK z=X|AGpe|Kkl9QqI718#?MUnDZWDJ@r7^Pk6d8-S4XA6s+;$m^ZWhJl|!mu+rA zSz}DRxA;}Ri&Px*VwQHB#*W!$+$1Z>gCcPEm@&r4y&U}-Q4C#&iWExn0@JS&(t%{1 z+)c924mSVy(QDd=wb*WBNycOWf=*(VoEP;Q+}MpR@g4RP@>kW>0Rh}e$NT8np&ngi zb}>_GFy`kqNtwzi`+#@3Xvk+JW=Rv`OTG?P;A(sBq7ciCnkk*Vr}K>vZqJ3b%Nn5S z+@YLbBPoCt*#ihfp3sqB>O7U`>}RHC%B(XBhP*ISvtjGw334@os~QjJ$`WUHQ1gin z)E-gWFD4TFB#eQ&Ik0{G&kk{!^FT`HDG6~y2Bx2J*8Nu#X9ec*IOm8dnXnrNCf2@D zQQh-8O^i#9!&=3cZboibK9#!tH^49ADa@dL(fG+fU+s|7BrpoHHCF!9paekD2zU@X z@ckv_-(YQenU8E+T=`a4D}hM!RY+IWf{q{H{kMxTeJV|GAFO_2C1l<+(hUJhhy;`i+B!D zG=z9}z>pJeP5hYI_H&VetjQ5M7fc`6*rW;Ya*JgDu9ua2G;&bYCxx!w&j5D&fSamcOC+)cbr9p9gZt!<@C9icQHvLfLOo_fngc(%H^aDC^97>gKj{C z_=OqA^}vc~u}c9j71+5JUiWbwk{P{YYG@|ISpJmjf=Y!KS`J>^d{4nA-R?92pbF+p zxLC~brr552?&kIuLrsoN^GVDmFYy5MZ{iF2d~GEt&80kqN7I9t6U~|kBwh9kp{2Kl z6IMIuMdp&SgC5qZKu!G(>Y8(t41e-a}HXuWijNco4I42nN;9?s!8bcD!&El99Jgb&i4E#5pj9 z?f!Lu6}OO-egnJN`M_-Rv~kE4v*5x3Yrx}+0}MYBFiHG#cb?{-?!bN+yHk0h_|t{h zO(9kC&t$MJU9+YM&ANpiv5XtM>@eR9{l)PvX_@NvLRT^E4yxBef9^OG>_NSoKCAOS zX4z;z=<6Fux3LU;Bg0nBy{yK>+dmKYL@YrS6E!L+ZTCc3E7vd%XJ}_AK(k%r3hJBN zk$zjv=$7^+*15tHDR1<(7YDcn0!wrTs%^~fbLZ0&-?$Os&Itc;PrOcsKP3=f&ES zAcyv@10>u-b2mi(~h+qMbb`o(4W_@GSL4s15 zovnv`jiYq{HISY-B$NAEP|rzyvDBiCg)Vf+c`rTlQwZ3i-x3*g^>)-t3f$w(wAJ)e z(`JA;(R~DGJiNh7BUk?%_ku4?xgYIPH=sEitYROOK_l;N_;CeFGv*w%|D1JIB4p%WlI zr#Zvjsq#XrMG4Ap3s>ofsu}j#`XnW){rwqa zirJews|Bg76^_^Ts%gb%#W@~nw#<`;k8y>#7|W+2_9$DP5G!-nekioWCu;^T|Yfl zoR1?GZvMjSWUCG9FxPBU>*fPs5_<8(+3pv?46tQ@jqxQ59fh<?=1>Q``A<{Cm+mzv(`d zn@Aj*UNlsZcu}Rscf<{!wC`e+>EnqQU$~4o1OgLwp+Sha9-d5{u zh-aQ!Y&8NyJKm~o!O>BsQY=Kph*`z;+qAKR#_THFqstQo_5WK71$hT;J?E`#}+# zigbNV&{eE#oyyR>2(+3M@?9Dkj5q2P8oijZX35r0PIeqy#+1+!Svlt+A=LBur+Y7@ z@kfd0#;uq(Jv`i2;9EKg@@}OgS|6431pBb(dTpL+`%0uvx1&;jb4Iet+loD2e}8B;MuwxX0dxsHm%S`4AzwYb z^q43j?T8t|g7tvuvpM4el-2B^YhNq?;F_elRru5{40gy17ZBSdEFk@*T$*TH=1=ox zyvhJeB3|+wx){!o0yH@JmZl3U`=$T38R)c&!2iuE1eEjd)Ky0HRJ@jALOhXMcnP*~ z=K^P7>_^5Aj}@(QVJP%?s#D_!D`%unSEfA}f3-MkP+!?3y`JwPY_|-!E|77C$sVmaO<#jtAF6VX-=D6D4T=Ze+ zCz)4NT>9#c=bl-3W6s`QBw}qYp2?JnGN9QxEYKC%sJtss z1V->PM1_ZXCEBl#51l%0>Tk@_>S`Sb(}M1{=P37RDHfTFE8c`!4cT;N!=uc-rVDS; zPC~cMB$=w+@MbX?%@ltPu(MygUS%j{%L3pKq|-s?O=$Jdw@WooK*{>m9`eW{+Iwnd zK}yYnz5+&Z0<2%i<&3hJ5ncG*z7v;#rbYTz@~2@-?r`>xyz=mBceicdU9+m@$Ac*w zx7SkLRM`Hm+@VTaPcPjfD1$Ge#jyGV(04nh2A3~CB<;0~t*C72sLs)*M-TH#P+G5cD8*}W zx!M=ij?<-+qLY5Q~E45ut@-WoB_U4s3yZOdu!zs1Q zo~udn*)Fj$kcuf}l29jtxN)Ez@H2j6PFh<6;t*!JR#4-41np-t2y5pCVnrb>^taj% z9$OKBqjxk$JK#MTq2qHINKO`1?UJcVZ;0P;wccFA81_D@9dBy7YpNERrTBuq zB}qGQjbha{Z?ZG%a3oHPui&yL=iZ+5m6zfAy~%dp{;~3Iz{q?&9(yQRENs1c14@=@ z8>Ism3gA4#@#{Y`^)FMoLLh$UJm+8X)c?l5)xQpycj?H0=Js zJU*U77q`x_DE3(=7A5lJ*^}Aua^^b}hbXX2vvFa}c`wxj6VWg`gRDdR#dvBb{M8+# zc4x?DXbI%01tQAI#Q=Xitq*%$hy%wp{VY~{272mLr3mTttE<;4VWZMbYzk-H3!RWw zh3LsxzV3Hs=q$-5IZ&9!Oc0hG7v$Xm@=cVE4qXh%Y=Q*$10o!p?9b{Cr4V@%<)*gg zK!_yh9Iwi5lNkEr6?G`t*LwAbec2E)?1duGcl{oaqrfz@(pCI+xl)1pU(@ABbJOd8 zVW9SEUQbpWL#*hQfuU}eqXk{z<)jH>U~BCHuaccu{q^~ZdYaZ` z{iuq4jK>Ll%|GW03Si8YJ}R)Zs_hhegsmP}GdvVNvppAvx(r3Z?39&9RLsGst|%!4 z9w|yn8ebA&>px?Ph5Qnnc@xkAETljS7DH1B{_Dw*v3eRA;ic}>lj|9ncTQzjj7kch z6;qmH#?L-ggcsqWW?AmyLMO50jglL_5xxDH;5dmjDwo7@=JJc{#5Y7wRR@Cw8EZ{W zS}f`aHj<0v<@e7ZQaBWQ)a1x5IZ=^n@=?u2Tm}C|&RJ1|3b}Ww&&lDsDko2l3{a{} zOw_Hu263&E>k-&l-SqfhlWrKxIMhE6!xDPGBS zVqqNvjkc_JbJ=m*K2iOB0Up$=pu;A)tF$|^R*2vlNw2eokQ@9Ot{eyTZOc-vZXgUk zG6(*w!CLHb*gm#%2mynFqpW{5uQpN=zP>K$Mj~LGYLo+&qt?Y~&y5Cw z?UQg@w>grOlS^S0y6ch5jznD7c9Fdn(Yu=n93J`$npiSXY5$BpMaOb5BJ|HG+`t@Cl?itDMlg|_= zWcuOq)DsxK-^zzr@A%CHvVln!vBv=sg8sccY3z&SKyJ-x*8?Kk{Kc;* zT@qCY4^?vlEL}~LAfoWVj%92&|2e&(T(H+? zGkAnO{%0dO`8G*Tm%@~}oes;K67qgY)Mzdf;D+WSfmjL0r%@{vs!8B$ELJri5ni~i zS|mgVzdIc5F#XrvCEw-^a0U?BW+Cz66c(OROB~XR87OQ4)*ccU_@t^K*HtxK3GMi1&VCeE5r| z#SfX)cM~WfQ;b_&D<7WG^&6nIdG4NO*e6g<$XOtqE!OPCTRDpql1o8iHgPAZh<;<5i zS&*iEmQTDxtpoHdFn$}}YC5+REp+7Oko<4rs))|ipa}#p{u>ivH(@8i#@j-z)H zDnF7ik^A}fMgAl|+zWXtHxFf${N0cY3%{gsK`+GmpLR@jH-cpC2 z>`>!!Z|-t(aK}`1sGOy}W`$vy^j{!D7*GWVEOyHDHfR+SnqCF>Ia-AP(gG-1{{A(f zRG_z#1dhSBKbKpPxtRo@A>N^W9G1Ruw447$FVfKNeT%(dPSjO)H`ETO5aKkna!8!> zeriE{LSe31u>URAiN3cu2t*lZ(s&DRP&mg7TdxdG<=9M8O!$o zg)HFgv7a@q8P<5^VC9mlrktNg!j;EDxe0P;$ zv+5HGO(R4d3P}}^49Co~`CN+gQ2}Dj=d}GvvMI8V1xT21+h?7sVT@Pdzue^}Lk_&y zkpZrZ{9sF*$V3{ijq-*C5`v1plSKmT9u!I;8bs@6>^Ivp&(&Jl^nl=c`0%RoVLIV* z(D`<6gRNmn^V&SAfoV-uAg?EJ{8lmF_)Gg(a96u6^i*AC`U1NLn`i#2aQ+N`pfdui zcE}>l~@8R>2VYdtsn$k8R0Li*~yY;Hdi#j!o6U0TTk#?j~3O99Z z$|5vqZMf_wk9FoRBBT_&r#SuVX*n@ZyhpM1dnyE%d@^6~=`Ti?bM^+Tc(3y1tVc|R zA@2?s);)@0)m5L$%lEQeSVTncdxU52h*?;q6}X%&_rCf06gET*v0P&^!ZK{sK*%z2 z$SQvF)a<%_Zm$(D8#gD9qza_*4ReAK6^+7W$46x~;yNM(ON;dF?P-GcdfJVxO=rC7 zoC!dZNhqbLB{RXPa9MlQs$k+wPD%-gC0l9zM)kqe1z|&JvCs`!jP0>4rg0Jv$3`J@ zk^7_eIrmhMTwkBURL)$xG2@w@I#rHSz53_raz|<$^J#~>aJ@O@h_VKqkHg9DO|%Jb z0|;M9=-=Y}Z7(I5!XeTuX17W(Q%c&BDxO!^hP+YT*){$&bg0(>G^mBC&MeRHDl)E* ze>1Aev6i4CRr-!eptJ>*eXdk#(;!+mQp3+oLB0)WR>bY7L`xUTwR{w{x|3XKXlPTy z_wE~3zC;zNf6pJE?Jvih-fG{>+q1X&aqcrcj%4Y;Q00@TxXQ$N3YA_zEfnN^;bQ22 z5j0vzaF;3}*|4&a4eJ!ys_KxfY6#i2ia<82@MEKTJ+`X8W3yU1cBwLsZ7bb)zf-ry ziGt1**n$F&T7+J**ph~v;kQmdtpEF6q49RQVCno8%A?enm zWqxw1J~0|6M2E!8-!+~ulmDVp*Qa-nr$+Q|CQ_&K+Sg3Fn}%d~H+#HJ^E(dX4#Oca z^tITsgO2XsH4r;pyK||Z3{p|T?I8eNC#-8m@4SLv*+X}C?G%3l{JG$d86Q!!#;h)5 zV%&72M?mNh#tuWC*2~eDhRJKZNE_@OKwoq$4Mz12aXDCZ(ea!BRA0{Ny>Lh9ZI>$V zfc~j;d^A!#1a9PMFufmjqi8*)$xr8?4JTqE$ad$=2SCR3&EdPiuBpFIZH)%;Oo-F+ z>btYbfVN(2qFe80WheM@(0B`!KlC%bL*bsq5>zqwrDE*L#o@SP5{(x`P;?acSTI|Z zCLDAVg*VR4q0n-53VN$LVs|cUZ>pf9g6kSs=>aWV`U!cO^%*Bz`kgsrE`j^63@8A+ zRUDS_?3e^YR~UY&j4?1#h`w535iCy^%AFGd>?nDC@nNv<*{fJG`qvd}#)_TtVd=B- zQ?5sSEugEs@9)>m#_rDUj6OeGB~!8r!{$gJ zzRaZ*i(YAc5KSu3UBqy-^jvgVw<$8fw_Gjii1q3n1I^4m-E)=c+(;@+mA)D6<)*q0 zf2Ft9OYEYP?P~S{DQN=YQy~U+66T!wWc8(c#mKeWz{KB^p@~fsQ;=wXMn_%2y z$v=j+^8M?g&Yw=dw|=N`gK4oigp*gRt}mA6O|&FA3$C%1@ryeKM{_!ym>ORzXBb$$ z8u?9e@q6k)U6rot9M%2tkS3~tcuefd31ATo$~@Hrj>gl^Z5{3+t`u1T-};i^PLVsb zIH<+?6&e;dm*=!a=5c<9hq`sqW?ji{NKfm{mvl{>Y>%q7zhr#BP5RxvW>I%d|4mye zv^S=D_`8E{y;^2PJ$)Cjn20?~466SLLe(b$`;jnI{}YGmWCBr#3sbjG+r3t<0DNhz zNs-RyMtXVp)_!u2|Fao{EP2G*ua~sd!JZ)ath}Y|uqzf6<`6sCNrAU~MZbCcvb(Q4 zl{D8zp~vs-i`rKYV0J+N%PGu0?O9l{ceD|gY6i`3OG^ZqG!#0pw%q&d6^)RaUaHz8 z(S)izl6rjjDZ#?Dtj@jApfIr{2ivF|zg!r4s8jW*K5Z#dd9dBh(MeVmG(xYsxNHGC zM|)7*lqEalYY@THh#%VzT)U@d`|8K>Diz<~4!)#e#Z1eCoZ|zUsvaPz^vqz}=XaYZ z*jX_XT>1y;-$TyTFP)M4vafZ%<2L^9S@L*d#`W(hthI{IVja^{#lr$H1POnEqH3y# zmT=s|)SWsO&?lM11Snru#hyM|3m74%b;MYdxkLc}H8cHs;^x*+_j~)oH*xv}2ti{Y zjF8tq6UxKuoN*K!0v1`uknia=HuGl6kN?20#YmL2r!UZ^cat+P!D&1a_JdOEr9TrI{1*j}Wqk9TiV|yj39WuK-dlYY-aMc20+X6?-Ee|%agDqr zi8b-3^F{nM5bJbkpUHGwV(aucMiZm^KGnOZ{Ol-n=US#QI%RZG^~nCyq`Ad+8WR6D zL2jFKeMdrTm}TflIIHdrnJ)3YOjF-45?`iEpzDa1Ir#6vx$4Hg-=x6WqgvKI^VCex zmX2M1GNgUpkin#SGH@dKys_3HQw;B+wx0u9@0d_6@v~&Y<*pc>`(X|cSa})=dcP8i zlApC-{8AJ&|MWtXo8>8Q8`56`+5c2{bNPLo?NJPWj907cc=;;W5E*C9lpa&MxUk_P ziZE8W%;aYq-{?4Po$QE@`$q5UuVob2nmBu(@Qs_w6!tQ&6a`nnrQJ4SPGWykmwl26 zd})2E33i@H+O!a zm1a#O8;pD8$zHMyriB0YwcPl6u;xOV)PnCI3) zP$@1c_72KPu+GG4y8*p}Vp3WT<>$3&TAycxUEE4pb{iiiE!ylRXpV6q;LSP+p;LAI zEL;6q>614yZeEuTy9cDAl>lsY0JnL$jQWZyJ!8ZF<1XSX*w`Bltj5Lm3lyPON#kkh zo1DwZpDxQ&+*9Bitps+mqBd$J7|f zjt}CGc`)*_4B|-S8+h$`#rb_PQyADdKq9tg72t*r--(6m4bA~Vr2 z|0=;q-f4u|MQCYc74koPz*uxjm~vE=Iw(eKTPP?2_*?&(%oL+!=-^Rjc*rpZg*Xyd zBnw%HI{btm{DfI}LaR49vd%Zh*^jRpa=i_v~Z5?>u|YKK=)6s$ukBD3>0Nj>6;q zGN`4qN%B54M0ta#Efr!x^BD>!;P^zM_kCKR>SEH{TQ^UkFZfwfmxQWW(82rFZbja> z{VN^K(ZK+GvXxpzeXGkuRz~PlM`({FsV-XtCeAt%0p23#nmGU}e^L={U#S0)Cz}+- z`B@myWaz8y;e3|1;^fNu=U0eDNf^>+E^J9_(TBEi9}(LRKvz0TD{{JT%q!vphZ@JY zmR0fX^z>Qxhh4`jG;FB|o$pTJ7wra0YyN8UPv!|meA}^Tmg#D)QC#+#T6|$)II3R9 z%iaYJ>hzCmWPql{2;X%h`6(kS zJ5~KXw&BxAPMv3TvYV)qxdkqAa~^hjHm`7g%)2PG5N_p3KJ1^U1_PiC4X`Y-sEkWH zE$0flZnf23a4mawe*oLO+zceLRW#I$vH*gDzI_PRNmA2XF1uGYf>osOk(^Y{O@!t4 zA;Cvp-RR|@L(=`O!W8I&6k|W2I7Ps)069R$zx5)FH9y3`io8`n)-Ut1uoi~c8Z_T} ze^!@WrG8Ic=51_8+f#J~hJgurK6fDT-jBhSzV7M0w>JrB-@Lv+LDuDW%MSuh)(;JA z90K_t7%syULEzu%(0SA~ z$|G1+1Co>X)E@uvJ8VMK>*EoXG0?%D|DSs0axB4HDw8xf0Ne{@Y!#Mbg;b`Jr(Z^lphei)QBZ`~T zM|JX?0AHX{=~ml;Yz?JK1lXV+N|S{L#L){)ry?r!HUlv z1PMY=H~Xy!kiZv!)sxoB2o59SR~s4DBuNbxFW!0epY0uZ0X7a3KUSuqJo&&u?D_`;nh&hh#EaXd%QI!)p z#{2v{%*|vO$;3rH)jvOSpZUnNmLppDu4X=b-x8t-a z>mY;b+(>I;j++nmBwVF8NwWem~$ z*PBeM``gdKQ~12Ns*_;BPQeUitaqCHnsP^&iJ85>1ndv1m)yPdNumvacPR>|n3_*0 z8Y&|2DNRUSVxeI;$_tYwhD;0wF4pk|oasUrD!>bU*u^^Zx0fIm%&alPDUZ1VywgusO zQ$JmXhgF+JCxu10h`t%VucIJu5EGozeOu}dkJa8qFOtg6<%DFvh&~yG^)Ej`(n3SP zzXf|;gZKm)c@z`(ubt6khlg^-56Toz;jyny7}qv=aE}gYONFmK529H5>A)TW(vh7h zllt_yzc6a2=yjRxGk;tvzMIn8ew;<727_K(j+)^1zamhOZYP=Kez&71nMowsnvxvH z%(W9miQt=Vmx{!gbS%Afa1qUIMU;gQ>0Qzef2Oo&Q53TJ7#rkxoIhbvL=t)-6w@1N zLV8XaciP7V>~TZ`ODSK-%vUNi3LbVZJqu7u!3NBnErl54^LY#zeCi?~8f|8hIrPaw z)Q-pK%^Z^dcuIbt0txfPu(`O!JQq}8UFK|PZBdlmurglFx#sy66m%|qoN9X;kgSp$ z@2dpIcoa~vJHMg{V+7l_+sjvue}vgtQai@0S@21(Tv z=Um9BtWv&8mWIl+AKlY-q5;Y*v?lWl5i`b}sKCXM#L`%mB&Ql-I|1Y0{+X0_r(z~+ zq0YGCxPTDJAdXc?2u^-kRF05!|E!)8%HKmoOA5(S+*Y$W*)ft~B=UD$NA#Qa7Rj6- zscQN`EG07@d>Sy6suu?|=``(VpZv2+wt&D=j>a&jeWyOFd*nQ8bNC zh#?P(bf6o=Owq_#YtWQeu$J6c3qM4{AABT8$I#Ujo!j)i5N zMWy{_+DapN5^?&T9Ud>5t9Uv-yKXp7KHj{DZBShkPlhjIdjEX4N9(1J96ywGLF`y`kvzQ!fdT6hl(3c|@UAp`HVbu)Co`xRBL zqjx&U?PF!u@$a$ZO`MA+E)-}i)ljT~hu-+Fis9wUtiC-+l}Ma{)VlyOXG+qm8UIC2 z$Anxdl}=IWDH&`Sp-=nR=q;S$?ySUBaRKY;2}a6?WRK}B2kNa%c;U@#ebu#Ypt&l} z%93#k3{@Lk%2V6G2z&B*vI3%1_`^wSxNYO6+uYfG#F=q5gm6nrqZB#sZ)=a&{xrLW zulF#4pPj-%!p}tH00}xEWhCaGFBi@cH16Q%7`eAB@^B0e(GB-B_JGV9RN`mY;B|h? ztfXe{Z?Y!{Aef7v3|BrB&3+-OBl^1|5+51y$JM`G0b0!cO`FZh9~0c%>WngB{m=!~<3~g? zN#a%73JsVK%#X%xR@V@f0LkuWonE#K8rQ5|UZDZ`bkLt7bWN+yq{X4=YnooS2RgD| zb#o3N1>5T1?W-T!{2BAO8)woWY$N#=fo7&+3xa=qnLor8g%wag&XNNOni9Ggg+ON- zTRq6p79VkU75P2d5y|BH*jh`6cbHcsQCUrrk}Um+YZq|@MD>v%%A1Qkr?hxWlEx~Y z+_`+iF&_HFE<6WH^CyE76)^vmFzT!D$twJ<#FILd<8$@>;oMN$JgtrMt%OUxS7mj` z?9Vw!-F}uj>@4<0_Y!!0o{`z9KccdIKOH%QUMtBNoT~lzp7ByhUlJIf)=Tl7jATbq z-1wemV~-AfHHGM*sp+pDCB(sOT76;3@QYW2t5nx6&Z)ztdR1__9W)|3a>FN5xh%Ts zNML0#*lN$jlUGqlKh~y8pV)l$lZxzJk+ zRng1327W7h%H<%ZDPwmDM@=hd#U_!}QiPc9jASC(7wa?9mGsIwWR`7z=cC) zz^vLN#XXsq7)^Q=Ns}&}CBEjvXbo2|midP5Gr`d8F6D&bKH2!=6B^U6A{MHX#IWx!Z9t#XM;N#wzSjEjM0tl+VXS4~8<5|i{vDH^dxH=Pip zL847|H%F|{{W;^?<|U=wR)76D-}Bc>%^P>2Q|9Ej#Akd@{*g@0{c~}zccD{^*SZOl z$%Wx~)yjC(p!B*Tx0utYNg#+dO6*`NjYBHK_079U>aijbE3R;fN*tC=QDGxv& zS=Y|b2LW4qns_E`bM{vfIX^_0AE?-FvfUX@^-`d_nBv8Pxw#oq3oKYJEXhCj%mY78k>{T^*m&Pf*Unmr*eZs4D8-ZQg2yeb@m*mOy%fp3h+ zVTJ3sKHfaJmUON58JjqY^V!-_uS#g2GB+(hN}qmzE)yJ0yt@2HEsB&kec&fH^qM(0 zvZ#@jy%oaXikwX}gqp#Ld6A+{H=&Pk&wL;E`oULZKA*Dv#NZMluvJ4%!1OlkV5S|*CJw_<+#;sb4xpANZ#YVE(CVQEt?d zb>(=rw@Pp+xYUMW8vXEY=|$7DrtK#2oG@9vyTa-TO%H|%&#ErkgT=(XO~HBLFPWWt zo1AIF$HPRrYXkD(Pi@=Xw;xmcJ>0o*#VHUla<8jl14o(k?*E>)w#d7%-8wbxI@0Kp zbZMz7Rbt>ZU2X8LHLLc;Jy>`}wuA?AX-K7W0^6YW*&x6l>t+Y%rEh#9AIaXS4^(NH zE6A{!LFpM6Q(z`BLt7pfI~pgQs#ei-_Hc^JeQena&m%moiEJT4I;hnZE(%-bAx=>H!X}&V1mRSNOlYTM zGq;5Er1@1AYUfa&uCBAxD9S}2=$Pfuh-NQ9t57Rr4gNBPTpWTyIpJ}x447aj%MQQwGVs+;VlVIzSogh%Dkt6J4z)LCNZZej zQ6udF3aiVFMG>&Z`7_mF51F@$${~lZvSX0(SavoX(f+7!LtnR}N1#Wc2ld+A?3nPN z4GP@@O;8rub@0c@A>g_4TPJftI!0ju&fR|NgYCqPgk~AADW2UG7bswsI~{!gx(Rf1 z9zM*yx2AW0cD^P%hO(92bh&p z(1=n=N_E|a@dXuI0TwBq404D62LoX1K;%(eJnr;6?-T?)>#S?EtJCIqSaQ9g*kRTW zIA+j%-fOlB#DSvRPxNllCkpKxjjJfT>po$FmTG=bKkdo#+hK+%_3S$N?eS2)h?3m< z4_Z|K@dQggB-f=)4h`O|yUSkX_ipeIMS0>#`E&*2=>@o=9`uUGeW(-$sR7K%N2^A%$2&W_S>KK$=XBN&>Nk-MAC%*%hQeco=9toMD zH7V$!Lj6N0aTLV`C}89)0ia9slAdcKUKedMfflHyMK+ce0Mvq!q;s8RjmXM!U5e8v zVaYs2+KXdn0u64v)XE&mM88I$1rl(BwI;TbDM?RDZ`SYw!n6DedLtL~5#)<-=YrCoP3!_jHiD>)+(F2J)|c zX7W`>k*}~-ktZR(FBi}|C^Hpu%p96apF7boOh6cHN9BP{!%Olh`cIQK{_zSB|S@nrq>`kJdASRUQ9Q_0TNNx~kli z*eWMl5&u&AKbVb`O9BY7@Y<+BqN?Fo7lh^}KFuw$T3}6AIfjP#;j2|~$i`_M_toQ- zbnl5V-fm?bG{O|w8Ghk14!>i3*5GkBa;O1y2vs$B0#`4E4he9ts+xU3J~YHmCHZ z(+#}Yck+?|k4PY{f;NoYdz(B?1sN-YYoz!k( z$EBH*q9wKM933us93OalR>atM8T5Nj^FDVA~jK7lj_m08Dy7VvGaaVhk}xafw>?OM$QfR zgT21`1i?zoi7WL_ipc)qU8_(A0ps$B^#)SOh&DmfiAFASezyVH_wsV|XahY!RC3$^ z@cVLN4Ro|xC(dAfTm4mCD*)$c-%fCE1r08rM^fk@`rcfM!OAva{-%QHF)W@1r#H=6 z5I{#6(@Inn8lm&7HMs&R&^Y6Ywm<_>?!*lGMTzP(PSF6Zo5WGg=kMHC$wwc5(pcz{ z-lqcMIT!gRJ=F((LCuEY&u{EDU+Ssh&wyrA{sFfWhL;0x`em1p)Gx{U8tAf=jV#2# zWXTapN(>qdPn4Wk4wDxX9Z;ZTYOr%!dCFYg{ET7CG%%#L=Dgd1%mmDQ!nl-asgYip z_@h;tkR+rE%h1wwanEocE+=4-0<NjYH7OTu+3L?fpQ<3iNbR zXHM3Zr^$eUd1Lk`LDSnlnm$@SI`wG(z=!wYf7lOyQ@voZ2#W`Srs+6xxG3!OdiagO z=iAb-fO6aIQ4F?}5s&F8J@>9-8ayISTjpOopf))yVU`(c9g8M#6B60Tcg|*pt4P^k zG8)K#x)Ii zThBH9i{XwYic(d2(n{Ws)x%t$WxlRM_q6&;5Ej7Cmcl7sB|ZI@3`p-aomPOPatp^H z{no+y92obc)CQ#XuiDWGhangk1d%Lk44^=H2*jgNnUagCTW1G5r=!0KU1=C@&|#(APYRqnV_oM+axz4+IrYG;mHAc`M7u_E z4Ys*3;uJR*i@M9y4W#`x3WV`SL6%UHtz^aVG*`nXW~SUa31)Z>0Bcj9~8++IE@XJ&Wot^GT8U3F8uWZ#vFi@TA3wAL7R$uQ17%;KnUUV%$+m0D%dX{ zNrzKiX}s7RnW6{u0pvYUHE?lUgGQN=P1Hb#R1&hf2uq{$CV&|!ut$?LqLu)fj8Fsz zcoD%v-rzXEdi@ZNMh!A&<w=fRmr`@3aMwih0RQLQzGHhI#;t_1zNI@hm4T#c9>LN~nuV zrf}7QT#e6`>%5r_wL#DeQzPNeRY*#hCK%JvVf?+|ehjuPYS*OS@#0NT_P4`X=*sf+ z;ifbf>2^d)3%iM6BLIKT=*Cay8_!X*Yoa~GhrG%}I_vl{ZCWca8>jrB9m>v8-o(KB zB#P3X5b$kO1Af93mRNFs{YefT%f!t5#V|+mxqB>8AsVJ|Fh;svj6Jq7zAuS(mjuDG zenSX&NdJ|P@6bx_yV1>oy;c4?6N(w!`HAg+!{WU-6GQUy+kmJMnausLlXd(tnUwTa zv7*1^@XWa4g6@)beXgoL%_V4gX^DfxRWKo%HO97gw^eEW^e*h+8d+mx&ZF}gg`La3 z{}ks?hxC&}X)&FwdV9kO87{wO@&kpxM0cwW!XL$Fk{x>;QJ{x@)hl`S$nCY<#d?@# zFBD!xfAk8Bb|ordwu(UIf+Z>})GwQAm$^EF^p#j(sIc+LSUDhy>J;>WjT!@3i3E^SL7+>dru)WxXGFW9eyk zv^B|K6YX(eN}Qcvwka;p5mg?}ArOo0Evh9*pjS@zCXYG&Kbrw*_saKx*JxLhz3rvg z<5V^SYJSCWtFJ?Ne;uo9sP0c=uU~Ie-Kt;v<~@#TK+Sh{>cPo1FjLk2q5|ZcAC8J7 zZY_E@d7-s~DO8~o*N_VUNTgx|S0*o>ELOGF(?0O)C4q9cJhNXUN;&0>wXXM>ExySm z7LjzSlNnJ=zM9XY?z0m9ub^H@a1DzPFV(Edr+uwF?Io&Q#ZUG0zs^+o)4uAT`l)~K zR8$2dcfD@b6x65t(CUEv_H!RyE0Ddz=Oj3~=CtSc0i%{rFc$_7x{OLMfOVUZta01u+`^_nNCpRmm z8LYi0#-5rBB%!2d^x zzF{<5fej5tzm?-6)j-fMgnKN+0n5yc^h-!SxLY-z!X9JqNE#MzZkWRlzSFZ|bLWOo zG2`k%@3d{^73%k;b)-OoPQ55?Z>$5xy#9P3ll~cXi}tAx(;gf4KnXDf&bTfFW+JU2 z9ciec*yM~7A2`~8C8sQ+WIA7LRO)B=TUl#nnh4*;Z1))vOA04=JC&l@Y75*p(BBYe;s8s@)In}U+Rp*fm=ni6Hof)f@~PzC5wEX|G+4Oq;33) z^Snx(AokR8Hm0dVNO2xgfgCS{%6XUdlmw?nXKtPL^-0(SX)LWQ$X|mIk=)}EfQ9Se zT#nS6aT=F>@Zhb+D^}GLo(4+?$n4ObDc^fQkA!|TdPQRk8^P5p=X*&M8;ae=(9=NG zE-%6kAqAjG67Ju5qe~@wvC&`$5E00XCa{Gn@kmwmQuWvKEaulNcMlo7Le)sc@M%&3 z@lNRLRUgJf>SPE4*^_m+6jQ=%-qx$J`ZTx$lZ0121LEP(2R0{@-4RK`m`CYbU~U}c z$U$%OW0}1XVd*C_7?tzdDpnQVGbMXm9|}fu4iDWg$1vpG;{AZ8|4*A)Jj80j#p9nX zR+s1k*yW@;MdL3Kgl2pPCL+myP6ANEWmoQIWCbc^aK8C>bYvMeCd(JNaVRcejhohEBmCa z!bxVbQ#-x*ohD{Zr;6r^fFHz%u+KzIoE<>FHfCir%;%h~_EZ;dS;I>Y9l0(me&#PY zgb4m0^bLvrSe^=`ELZ&XV>t|0Vfa0r;Y3z0Mckxe<}Ur?8UPKTTLNP+wmWHE14k4d z(Zx7~jDR1cytOcjdujWXrz&yfuYZ6CfP!i9DR$mf}2Vi#@|!TR_j_*NB<NB(s#2T218tN#m6cT@)v#I6kxw}nv?DnI5#!C(R3N!M*>Kb2Wl9naO9q1C;LJ)Bmab#?Gr6>ej z%`C(cFU9gL2i%+CGUH(2`hw{aanGf$#N1d69cJWRlnf4qk3w6%O2=sUl zLT6WRrp4>x-P}A!ZGrk6c9^s+oH;`s-)eo0K~4nsg;E6BJ_FAf6f1zHo#Fn zb;kMX+bzSt>`#DtxOI+{g!h63RUKu9#2+N16R)n~;{201e@iY$ye-6|qeo}_4!XFHxqBemq^b7pYSWNF zJJ=2(ZfeSv2YqHxcNMe2x+kANu`6kxI>gYo>2VP1nQ0#Aq5wx<{+v$-$W5HAjXky-o8bpibO#Og>K4GlO8 zlKNV7xyyCg;^bPd#4$~vC}sW`sHN1_=TDM&64J?5k3o9iin4|{12)9mn0O?{;DV80 zPOisQkoSvNlV4?WW(&|3>mV#rZK-SSg0;mV{SmB?Nn4ofjRUg@pdKJgdDr+xgOWgg z;@z}oO-2I@m$0v+j;G95D6_be8>{Cx^w)p6XjU9KVymyb0!vnK0Q_*Mp=)H6W+iDP ziJ@z+XoF`xo>RQp$lIgUtLYnnCS`kN#kdKQ=uw;5O%9GxrBzfjxi45@WWn14uEkJx zh%VKyaPAs0L!qb*@|;+tBRmpGh+Dktc)dRhwL0C1a zwv3YGAo4xpx~@FHzX3?vFxcUCtpgd{IGQ{V`^np;h#2@91-^?>Rq?rQ6qho8o>Y^w z!F@PagIp#*8uE+@88$yB#dS>1ami>}yQM_&&E}5BK=|?(CO_a4*OW|)lRFH{GdVpM z1-Og7u6bIFY0EM%v4_69P=iYnE=7Ww96u9ot#R_RzGK%8=_ikDQ;ka9@BudH!&R>l zQS%ZL1?ARFY}TM1gVF4Pqg-JB*2QC`3Q+vC<~PqWl}-w&_KpJLx%w2WdNNu;ai+UN z>+rY!IWo1Fe^7yF)j;r{UlWdLO;f1f)touI*Vbpq{sV8GxeVo6{s4AetT&e8F+BJ_ z;>n|I5;A1iuPoFG2a^@QOeYmAyB-V1;MPi>blTKs0i^IjbBoSq=ZU6je5vqQM(%#` z8>TI8NGY)7W7v#5l~e%eThbs*N3{@%@(Q@png(EID&L1IY58Z6hRpX>_t?h_hv6Z>c~ z|K{|vRt@XoWI zJbP)E{oV;m%{Z+wX9eTooc%#rya2Q@>G3Sc>@ZU)x^#4~u~YRR`RR!sPI&R{9El2` zutmg-#!G1Z4l?6etgk;j)rN!Uu+Ex))|!Uq_T_f3PkO|he$bGDV1`jgyeuR#^k%mw z9@(8_)Q$2^a!q;xn6j64_BHe`ie7#f$NtU%FJw!E@SJfbu@QgX0r0PJzl@@Dt$iQ; zjGjIdaMr8t7ol0TukYFCC@hNQqT4Ws{#Ib2@i;Fq(`;6So{)^XEy=y#@q18u(eOgp zQv%f*!f~L=9OLz=M4aImc-0eVNcPMc5Iwy7>?;NIm$1<2_P-@tHZ<+{b&BZDgc|fY z3OKYjjv{JP9Z(|hAc3LBM%u<6WmjSl96hM+|LjMx8Lp51ka{LZ_io%isST9Mmy}HP zss~gsPcv|5x#d3YnqY5NxLb(Q=wd-=8pr55s7C9b=zu7rMJuY?V@>w4ck0#U;WTIIfdrPouz#6`;iSE1|A_Ui z!hr?(W}SJWK7`ztTl`Y;w2#m7aN&^|_?4Y&SMcp61#_KVu}Flh$WZP74`YR3Iy$*X(W|;TOC^n9ofkh&6#ua@p62a{}Y6@|hXDypdJ$o5ilH z4}smyT58sq@kh~c75@W#O;hsfTa}_*MNrosAosqx!EnPzP29q{D{}F9lIXL@|vX( z`M}XHNMNW#yn}OhQe0W{bDh*%$QkN|C%N8{TH4M1mJ}ZA|KiotSU4E^>up=YHsn<7 z-?3*)Jq*DIremw)NT$i@4%8q~{x-FNHg^hxl$;wBH$uH*Kq0?dt&Tiq!!wPnmg0ef z&Vsp7S0l@ka)R3QdMTcJhNMxPj(Xi|`K{sKTyw?kkA|N#gG$uW7Hb>vu9fMs9xy~l z;B4yq$R597-n1)~@=W$dpbe#=_l{YE*1;)Qnr89#$Ma*D0RD7A2CIY>yY|BWk4kEL7bP_PbjxBpsf)vV;M8d zG8H+8QPAkYi{nvF;r@Mu9glx3&9AlH2Z7V9KwIN*Z%LF_o8}(bDKs}DPBUEsgV++r z$+29CT5Q`U#8I2}RBq?GKaq4@9ef!j5nvPah964cz>bFr9ijS62!d$*hW*><*FphAzioPK+r~r@T?Y;;ijPfU=c4wZkS0(f$GI z#UErl+PCoIYIoIe^^>p~_n)&{VMKv0mC|3mXZs;T`2e<_BAF*cclWeOiq{n zy`(ON;Dy$!t@T}fnlj!Op#Ep)Y_gPr0VZ>0@F?y*MX=Pb*sirYX_FZ5?qH}5IlU;> z8Qh3JF?&iXK2!&Og}47q#qv2Ci71e#fkN$2yl|)BH9Y{ZNHZ%p#xW}aEIeyQ1s{+| zk2I_G?@6{`0PH$xs7d9?zl-b*D@XbYbcqeFz(L53mu9)wG5)e`4qA6<|72%RdmKC33g{WHgGE zw%9Gbg#LVxqm+k=9Y|k~yFcjluS8olmr`)gVz|cD4wKMD#&)+zZ76&~$Z%37@e`v@ zmg+-n^U=8FF%NJ$6pu;w+wvTp>PFA!VO=>?da{+>}1d+o%^Lp|e(7!j6pCNcBJ&nV?8M$3u8U|cc z7LONvjP_nj9Zt>mp3c3f5(V6|$E*an$95Qx*%PM2GT5&6koWv);nL~;+kxeJebj&+$SJPb)YXiUU1@re(`L*L!{kS?F-2^!p(q{8bkq?>n z$rq9#LdNwJ;&*%I1kT^E_r}%1@_>$NUl(2>uWHfG9*lE@*T909Fm#>p;x>RhaV!zV zYD{h_(bf+HaqbCi1RNX39s*(%T_@nol9lBFMPYM;dQF$+Vu)k?zlPEm6Fy88M=g+; zUv>AWP@cAuwRO7CiK@DZxL3K|y5oDZEZ(3uEP;mL&1dy3ZoZ32-(Qfin=H=rqW$e^ zo8CNE6;28PRj#2*kucJOV8LEjrRx{2N`L(o%4lmZjHgJ#u_g3y&p`QjGKNh)S0nBM zvCxF8su-bwtYD_4qOL6qv7%mR!2izzblme{B$d5{8E}bnfNa?Zlx3b;XnlTb=>TzY zUvMCT>I9GS|7I*mgw-i_?@opxysIfF`OF_P0L(hmgeIU{$pteWDN-~^1HVU03B{Vqr^53sT+{%@ zgr3%4621#4#eq=oNCq}o?=q1T=*{pVYW-Aa87fa)R{e3%xd>FY%0@1axF@u2-h+Px z*;&f{6KR?kMs;2QKzW`(9+w2}17r9v0kv(yrS;36-cIlu0Ie4{v1iuKszw#csIz^u z{8-thLhbup9y)L8tm)@JH(XqZCY-V2O(A$uO7wB92iGi zMiKPB)m4WDi~_n*3v=k;7m->~HDlyQKfSXJrxa^*eAL7zASSh{m&B|GhWm%7S|lH4 zgwywFj705k*+CFDd6!34>}i`E{W3u*37ULKXRSyanA*WD@AkAA;JAk2EQJt;<0TUoo|0&F%EDm`pN>kou z@OSgAI4mrf7fn!pm+}u)>IKxuNUC(2jPJxi7=;MAj(^|;POBTn%N{~X2HRT(hBYbO zkV6$#&3?@_Da>*x01PQ@NG3=|FyxRSFe0)^)4)D?B!pBFYR(Dt1;&`p<)6w7b6V%8o z|N2??FOzGyCFAKD8XqUaZVuCd z_fgf0Nc?JGqfF?y;*Pc0eoN>mogbFu%k;HQw-7xVq$SSk6dhn-*>xi!&c}Gt+7Ei* zn_>mzTr+o3@#0H~?;&k3fN2uRwvI6_W3#doUrT)&zDYdXP#E;yEkT+I z#Pit7)Ph5A!~N2e9Uylx$oGagITdH(k-dr8A>1DIc&g&cVm;Kx4LkE4VjYt9xV^|x z^=O81qoQYQ6k7QQU?ESp64VbmvJK6>2{=<(EexzKml#d@DI~f}2mfZ43!`zSZxVck zUz8!_!9}!B&1`#{7}R>gP>LHt0^W=_MMN=~lU(u%Z!Dfskg;q&o^n~!?3eRQlTXK^ zj)^d@Ze<-3)YrrI?r!rDb4FdGxsLmHWTQwRhz$5lKx&p&91XkJQqdKwc z5N~_Bscz8#(O#mh8xi`Z=VHBVge%(&0A)E|9xJoWMyyT07Dj*V$Zfq3W-TXU|DJ+! z4%9R2bR6%^+>o`PdAkgvJAzB`)Lxa{-Hyci%$lP)lYq>pXcqgDu?T793NLFx$&$3G zjU$E##`6QL#LIDwDMZ&i&^d#3d6pn{f#1djyv;y|;;78tb2n?&LXFdrxO}h{Pg6G* zJs#zJedf*4n)|6VB`&4IODT_jeyMLQ=IAZ5G8u?hkA1ME?BE7LqeDksbje4KgMVa6 zV6_Umub*CBS!y~`um>JfAwucaKox5?WCjyTA2tVl^x7}_9hLce;^xhi7**#XbM9Z# z7VmQ7{S2@poqAjN3|B{qB8TF`-0|pQV$b{=W}90z{|bJ!OkTcF-2)Kz5~0qY+z2tM~s9MTz6seC!=P5wHPX& zyVJ;s^Q~%n=A4~9QFY?8ZyhW#DFp1hkf|V(VX255B8Q6lDX5Y-0nU%}sg5v>$Vm^C za8kboP}r(ObqOkAT%9QqkCg}w2 zS3(IqJ{--NN{MzT$BVm9N!QB;=a$B|>`=`3I|elAFM4U)Gg_o25p;1lIq88kS~~nu zu3FN7PU|5jCYs0aG$#&6&Twa2(L+av9fKiQYnJuY(Cu4&8vjwqO1$OAAkX4jF7mfc zqQ|jPMS{81R1EJufoGH=$&H*YDv69eV5-C(w9^<+*1dsr2`YTL@5QWR9e6$1DnpdT z?ql4(7^%|lP1?i1$bKDm|L@OCL(6kQJ`d%wDLtWTEzB~BcF~Jol-5PH8Gp5DNMMeY z3hrEGRA#Xej?-mhAkYd2SswS84-_0;G*}D^5OGW9wrC$wge_bBvBY&LV1ja(nZW>1 zj2_5IxoxLPyRAdre!q>q295t?2<0YzO#S%uxH`Wa_6{VuTXi+tGk{z>C_HfQ_tC0q zR=S{MJ)}!NrB{{T?A{^mFi78@2bUx+@EoOWMLu?}yM9*RgRXyfyEIJWl!DUkSoDem zVaH*0ZJ$3oSN`|=$`K7J`SvsXew?%~{ev^<`>rpl55EJ_VdUEZ`N{-^EC2K$a5E+qG)V-=EFd>xomFo#Yuo<6hq!kC;0xv zxAGq<0yhvodmyCVx_2WgElA0vhkM{ffBz1MZ(qtV7lOXFf--#Tq zRS)frD)ju9r>K8=yG50lN&38!;a?(9|5B0dKlp#!3DHG5TT!yI!E>57W#|tfa4*1? zS(uMY2#dEgbUXTSg9H)N}2M)PAIGK*H60UDX1;&V?P z+i-yc1kK43JfLp#;&9D>B40T@020;s;aa003S@;Z*%S;x{W;>dZ=+>UYryNxm6+=N zYlVw52#zgjYaH*Dv##=%MH4YaV!VH-_5ENs#x;DczzoWIRprNjiU$Q;7owK^_<(o0UqhJ@)Ky2kXSXszcC}(*) zct$d^CPtsyeZtv`2J(^^WlD>;At4D`MD{%Um1NXu@wKPJs|g2Rou>UbGJnMWF%-Ho zPv7In;t|K)I6D{F59&xI8Vb}chpH|u)13yUC1G4cE|jH#MuG*-C>5P3keYp@S!h)2 zSjA*r-G_{*UHUiTs_3yl5cM7X=O}8w>VYj(7im6!AhGhl#_{NVoj~*A0!_;K!CIG# z0)&*o=Zs|G(E6eP1Cj73%CN+L%gtQ9=hvGzJ_O0|p7am<|J3r&mif3NO{yl6Lzk$~ z(U(4<{M$Y}n9HB1k6V&i1NG1DAhjQapxO*lGpl1&8KC9lKt4a2`OHSHqt=*Jp<@SO z{EYAAo+JGn_HFMc%Sz}=q=xK83i*ueBFW|w8?NU>*Fdk_Y~^eS?M3h>3QW+M_?=-c z5-$vRX>irOI5MOzFC^8p3Cr zdQ0Qqf`?L#`pfa`NvJ@s!1>18_GZ=5x7tXr*;fM&e@83q-vlQD(X4EA+bv?_TEVt8 zZITZEE5X#iPq3xxJ^yznYcHxvzQ8J-r04^)rN8kS#@a3f3IvnwP^b*OmCX#}BX`zY z-l<&E^Klk9mq@q73q-vl>12j85u|WBGNtG`5*oDXEP3JxZy+<4_ID9^{-y*c7sQX+ zgSbwn)_+u9;Z1~m>`atxf3;ISs|@dCIQ;D`A_A>vV80c>VY!DO`S>QGu3@n~2#;++ zeYj%#`^Puae-CsrYdw5?oTGnV@GyRSbN<)I#Ov}`9*MHVbV2Vww((2SPUGRx+5&iu z2F9mhL&cEuTdTz)%VPYB-WW7|0h~uUBv{p6lYC-C+XpAFXN-4{+oDkg6VY$^Q*c9( zxGv+is zA|VP&4w0x~3s9|waa>b*n_-}?i$rV>5yIx8dY1SnWUtGUG2K=v{9oV95om`$7^w@F z)=mFj!h>De51;oFM_!p}8#;bK=RGdU_zG)(4MyM5Hn-+2lEgJhR8 z_SlY(JXQjO>OR~p1xhZfzrjM)UyMhdXrWL|AFvYw7ACb?DEPTJnyCrMk33a_xtcxz zX})y@axPxp-6Gp&lr4l^{NDsf^)?$tR{fwkEt2G2P*i3PXe(>k4sE}nvl5S~Qa3P; z5=ZNqqmx&7PhY}C7@F{`CZ+M{PGXXtbay}FmAk{Noem!{)3f`_vs_MJA$-y#K^#AA zh8q|4J6OloXmQaVkostK;on-lJgU2xcCMM7{6ShNw6ol@fyW+ff+ux~(%Hnw$_vn0p5pgrygF{6mH1!zAz95<) z8GzouZBqjTnhmH?TQ)j&!w76`I4bt6TpVT3*4Om`jboW`9LfDia}9XHwT$0oOS)K^ z)VNP_3sU23Fo??K<=~dM_fPlj)yG2FLD{9sx}c|pjyV)b&;m?Nssw4n>JNVy2(j~j zlRgW56T|p-!Ms3z6plMHztBK|lc6y~|aVunbH@sW&xh&!E0Cr3fCBd3zp zaQaE*<1>Os&JAS@5^27Aimt!+30u5OZZpyb7?Qv~GmCHfTy?)}1i+pY}G zVRQn*_esvvzfaDnJS*L*$oIdl8Y7Ptq2a$j+FDf#{=84f5AUbvW_rJ*IIN0mxuZ|H zK1aGVzE27n-Y?s;(yfXE?u+=4>M+s_axm^+!b!*m9;kPF!jzLmCN z!L~2X8PTi3_0d93X1R3g1 z`lDXeIl@=J;QBX{!(Ij|YS{sK(E$wubN>T|7q*At-ywh`ZdBSM=P&b6V&n}>rm48(CIh2S=K@L|O0+jQ`zkNaK271H z;Wx(Fty{U>ed>RIaRSGRk)7OAJKlK~>^@Mwfz0ZpwW@rA6(@zrRiC`$#f*H$oXXJ%87*!2<9()f7zTP(U1C4~26&hg)NCf>Dy<5HwBC!36Ry0| zX~`>wL^$BFTG&M?1=h6#C!Do~ck(VLXa7Z=%3eC%djdX>2L?2S%z+s!9->*Kj*Mz5%`r2&hKX7mV7n zh|w0GPC;Aj+VadYZV3(TtoZRVr?+Y!ci>`>zyPK6+nUimSGb}*CFZb>)=dzanrI*c?s%F37F(-7% zDHX;|PN+X)hfPV{xgv^kOTm=~yCY8zV&w|Fv>8GBNB^2nzh=KH!|Yz!2)3zdt5SeH7+O5 z%SU*Bsk+*|54EJqOy9Y211^Xc?-!NC8Ma%ox~m3AnZW(?cw;K2cU?W(8kc_|CMyUfpL_WK49>J?n^k-K@P7m= z0Y7e{92DEkSkn@@3<-!6?_X;eUVYWC@J=)sHS#V&D~iA#8$#@AAOA3?Tk4*ErHUx#*B=%eV6!mpjb z<0@WeI;G@X@S-C5QtSpN-HWJNeE4s+VtGz9SdiHIZEm(R8@YwHljjGqo_ku&<#MWd z%|%S%F7lh_guj_>T$TSHY^0a>2)^{xu0wBlj=I;xl!jzScH3ucjWG`HurIJQ?q{|B(dPpW;_(c{SA1u7 zb^HO7@lb>Ah+p3JJ|7AVRXyRQU#0PJ8iTiTD4K5nN56``3(g0MdfbzD+_O~Qnu4gT znD(9fJn8g0q}6kmXGV@xJhntjev|GxUPZ?5L7;>EaFQh=2BXH((3T_eD_GPhTXrc? z{rKkbl=+ribJ=^8TDDK^__$>Lte*~ZY#r6w95|>qeO{lul=7efPT%rL*L9;2J&ZYWwQGM?blC z^i6$9!)@O4F`oH$SmpkB)`6&SZ#If~1DeJcw@B-f27?yoWll8Sa)fTnct08GPvWiu zMZ4=?K^nrE>EQ+VCfSD|l`ev(u2r880r2M=kQw@)StCTAVEJq8Z5Nmy5E}pGI$qJ#kRM~#}y7PMOOM6?(CY>GQmV69 z+N;bU*RjMom2tU@tsOB+ACq8S@Qa0HK6 z2S5`C<=I)uI&fYv_5$A}5_7c&T4{ z;t8@Ul2j!|iy{($RF-`R=5vGaIqKq#bt(^z@v6&yq{95AnGQn}A zIi0@0%s!WiKAPXJ(0XbX#kx#9zp@{cSHA)Q&)TE;8N*?1X=R2h^|sN~biQ5G`1EOe ze=%1ZnCj`Jq@gS=Eso(X){B-^Sz-(;pfKHfVpMU7NiWC8#MnQ^1!CRn5$?dA*W=Yx z)L|Oni=l3MG3q8_g`sjKttUg8lurF8Yi=x;#rZewT9Z-DLO<&<`;EG|UZQk%h|Pmt z`4>(JE+`HowYX6-N1aX8&=V4@YQH{^a~RY+#DQIglR!ROlKPW=r>~;f?&2XJpS*Kh zd8Ll`UD|*{k})mA5g-t+r%u*&;cSD zz?91cVtn`{(Ix9i{_hR?Bj$1m4H7H58jQCB`SlPb*$hZ$Yi_bjO&~eE#owit;}wJn z;EW>eA(nUi0YGX5m7-JQ%$@7FqzsWG(0eu68^TkE`h~Q1vm`NTPl5?uKh{iAO+}$Z z`lzf-InWIh<1#)IYI`e$ZOJ06L>>9Y-z?72ULCb=Nuw#acq>snQV&X+hZqh^N}c}d zoz==cA`vrDjjW#$FCxfrOt;UX;VpJ1?50CB_WD;PkroU0BnwNBeiQ~4TVjtpwro3B2kNnY0?Lv*F!uKD_%~4)1<%hIhZW!@J+l!@J)v!#e&tP>@U5 z(G<)pMVX2@g*&%y=_`O-ypnlr&o+IVJGi+Al)$3x zv=J^jE0}bq`=xZd+uz14K>TqWO++VwkpAUkE^s$8l_My!Nk^$8%^AEn?(E{{@pByWz=#gV){N|#6S^HI7w zl3$L}^&`I~`-`4T!6K7Pwxm95hR+B~2THdlXH`DMdOXQAN`(9p@}pxM0K#h_sz>#d z!bj}CgSnAUR?~;va464}_A87e0;&s%)Sj8Nl9SQ=V@xS86qe`=-cy9HmBhh>laRdSxIscy>eBvId9_ z22LzpJRa2+(24&^CzonPoPRP9vBL%yl86lA3BC)d@5D?@2St zn}@qloN0XM>mzrLS7MTAQ|FH`>Kw1y7nz+Uk(Nj^{=CdNHGPNAghN^4En5KgRli~^ zkJ1=6AsN!+()rrj(}dKbzv6RhVU>9~fx3MwZG@vc@-+uZ$ADSy->H7}?{O;8dKDaz2H(l?#D+-TmWH+We zk3UB(XE~}j=KHiYE5mi--zif?0MTe>BDmaHFzW-CL%+9L5iE;3)ASCe4{lJaAeDY5KZ7FATPUJc^Z&rOq6OoMhmv45*fl(gY0eG~9i&jrWXYE0z-fB;~Um7?%T+$%oDIDy@0M=1gl7BUXrPPPnZpv zQ~`~WysO%yeS5zjT^jtsuz!%7jXlzG7MVQeh%1%cm52;~> zJ|JcBteOUT=gZHf0-LR7$M|tlAZBl1VYH^_0V|Kh>e+B=98iy6 z^z^jd2sj@MikT?6ra3OpdAc{1A}vPRsLtVmBmGZD-R`Wk2OxEymm~dO9v}`_SzasY zTR>-SeonsIPDtASw(mau*4*~55VN}gjH6rpE$97-m*0LG%OQ?V25y>E7)1%kQ3G3! zcA;J2JmoKU7XXMz&E2cx@}s#eRFlXH1#K__n7k$ul$fGCF&W>Xbq31SRw(qqG${lI z7w25vrONeEafGPBz$#yWl{a=0g=Mu_1NiWVPpM4mth}Xl458d1hEuIImP@%2mvGCu z?Irxb)TdPEt~R;<4wCyHZB`?Rypiq{yI`LGi(N-_k-0D3ZV+$j zvC-%aO3#4^5U|pj0MYMv5k!Pm7B|{Fdai~GV9MQU-t<_4v+bqh?8;(D#P^Sft38XP zwW@R~XThVcAT&VYFqo)3NkQw4iBlfk>oA@?wpWkUtCJ{cjhxWtYU3R4m!dB(5^bbx zrCdd`Vn>24pHm&xA=HHz>5OWcWKJ}Ki$3I0{{07lb|JpH4b_@HAa?%es~V|(5#6PI z5>-+!T(_8%vnz|M+3UyhiURt{C*lj_w#12T%lvJ1MLccCQTChfQ{8Q;%Syxd z&}Y5nYv&#b8Vm_?`q=Bd< zeTY7zYB^ZojVu1rW=F@()sUp!5Q(ttrjpcLahT*;Mqb<`E@b8!S!B?beC7^wqo0gp zhBE0ipokbUCuznz5XzsPkBR-67^mpq2nfUmOh2O2OF+GK;=;%#0c!NC_aGIiP^n_E9*1p-fWtntcvUxvtRn7+5ihat8N=YR3R&whAr#*478 zA?bMZ?&J!j{6%*S5Ixon%#QRsZ_GWgGl9A4N>E94lM8Cz8xu>OPEZx}hW6LA66KNs zklL8gRc3g`0oNoXg}uWjbr+Zj3YhNt8Wu*Go5q7JMt1cyB;%4vj62bJT;$emV{87w zs5Qkr>I0$RGI`Uz4lm4#x85V|v8(s|!>=D^>Xl4$eX-Q#oGP%T9>?PeX_dZb#rsA! z_a>#hUCuTaGArl%@{_x-W1z(1Gi%>=d1j>b;vCcCJTn4m1FFh}{JVkIApZ10IB_4d zgXI{0v^FYsQ6*A3JuQ)m)#XSNxJ}U_BtY+^!!oiaQT$e@iXbn>!}?Lz)++-iNag zOsx$6(I(ieWk^7>1DczC6kON<9=b$&4TIdUq6nY^7Os|BelS4HLQB1w8%=3fzcj{Hh*l!z3hl-{*WkJm;=FVw#I?Lxtuia8vtPbSab#w^SEo#P3 zImy!Z5NW-8A4s;F1^XwURBLBsqF>QCh)#+tD88-C$B8+;{K`J%4=aHvv%SVEc@XHB zlu2FqykKL9;}9!!AgZ1_f$Lz+n7}p!*?Mi=rDDAp#^I!OB)56B>&{|r?V`ryCKkTv z+lnf0+IQGs3nMc0KrU}A5;&z=k3V#rDzc$JdjKP~Xux4=sW~#o3MF43k!wZz!3GFz zKAD@Mz!sIdzeX&K6GT?6O2~yfvlIH06qt56^)%;;e)bTU{#F93rPA`TgCx>O#NwW+BbRpPHi8_v8dUJXx^3{Alx{ zsNq86stHVePf{4mcRZ+k{FBbEz85Mg!hl>mW9@6-K3u_@LPYo&yG34SpowJae2lx} z7H)2~S4IDTK)<|f4Z4ajJFwSRqJa9=$)usE>O>-$2t@D~dV*pVhz8VNC#tjlyxAnw za?BA`N=Fi|Osjs3TdzpX5v5<%o#^uNQT}79giV+gesr^MXut0Jf(V~ zLB_xUkH7Yr8WKeh)mg# zUa84}h?!csZ4v&GhauP%zo&E-(Tz8uB#1GmlTkb_TE)Yp=46Mzt6d2>I7Kx$+#G?e?@nj#Z&b=F%JFTd% zS0z*X9nV~rqmTJXa3&GUlTU&!Xy#asC_$tETvh3344{F^ksIke4>9Jyu-e^_{D45O z0w-V;^OB;Xzx3+_-q2Koahg6iu7zDepz~q4$7cKj$BhU5^DRiXr@|2 z`||WZG4Q5K-|kd1==V|4-u^BB;?8fuwW01c2nhZFS&>hi*bftHHkceD2BnIC==a@s zJ?wnTmVh-EIWZ}DX3GHFj9_Egm*fN8*%fuo?pnFb4WWm-BO zf{ps35DwSSQq2raU5=mSyaPJ(5@aARb}$kP@pkACyE?Mrz7L5(%4!EDS+sg^muhJj z0N~X{f<9;0_483MiS+HXq-F#zP2c+pGVKd$UEg{k=m})M6JQrtkA_{z*zTa+_EEUM z2deDm>Zut|XuR)9V!Y2fVZjHgoYYZy*q;yXKd`kux-JP$YwbUvkhJ8scsd>Pplj^s z^`9Ucd@FeHBgCjjTd*`*8Mi2@7&H7pOS$K`GreP#sf{er$H$MvJIqTHFsx_a3iC1- zrYp|pQ`~DUSJ2@$`gC+GW$N|uAX%11YSSZ3xzcodcru$7nS#Au3usT^$^E%7qvUik zwRY!eQkI0f)$*?aON#32g(x3Ws6v9W#}8wnO7t@cb^9weGvS047TD|lSX6Ku*mrLU zq(`P7?UkmUsD%hg3!3~=%aS6NYOA5W^8$bY0N=rFogVBeFmm%w&F0TtABi3~vBLgw z6JkY^J9$F1;j%@tQ}Rj`o=@X?=1%Dz5eC8uao>uwOfU=KEZU*uSrJ6f5Rl+_rg;-dj z9SqyESn*wg@hG24r@caI3*%Lc8 z>!Crko@AzHZm;4PR?K9UZao!!vUwWZm1U%-vKY_B@^EUT4~2!+hsS)e9B95N(3)8m zRI|rmNKMl(A<4EL)iq?&4N$On40g|!n@k4_K>(DD(^6);1sfeKPu~Cdj>|q3gyI%1 zxRcrvu$bODrc&t1VfB8&y@Ok@0CsD8<*Inyej!n8NWMEzk-;Ry%NS6g%6x5D_xwfl zIiD1J%!5lXQAJ|l!;%qsOT6lk{U!*E%N7!>l|&ElteZLCHtistBs}x;#*WkfsB^C* zeb!uO9aEF|#41SAnG^F#6+~Z6ROAY{Q;_fDbkqg}B0(lgIJo$|O=`cT1wts)Uo%zN zhb?D_NBL;-DEla38ZZ8rR3FjK!sk5{d+o*=(8qm=Z7bVmOSx2$L0w`ra{&T9GJD0T z-B4K?L5y`hP#|~CCJnK%V>Tj_ulB+1$ITVcnHLt3d@`JGPah4z9F31>*y&QGQHrYpR%x;#dkP_V_)q2Wqk;+|%wyZY>&H-HAD` za!I>Gw}gBZM?|tWxs^%~v^KnzTI8onBFXg|P{RV%D?flJ00C%(*t=R-i$Lr~L{39N zdD0#*zKa7m=DodLT!?b$MyQ(DV~H;E@im>A!0lRU($svogSl!lfiIq9Dc;?oWuRr4 zm^jv7H1G4=3`Vs3JCK27-Q>~BrT;+P{^CHhG*dUiL*^j740At5UppjCVu`*Qg`niEhs| z!O67qAIxL;005Es%eS&h%ig{s@@P^|xrFh(dil2Prr-t=4*#|vx`Sh_*ljGbbmrX_ z8YGqHp<|#JCpJGi83#NxtUr9G6?#^+67o<=6Tt>3s3h)+=^3Ijj{uCZ02~bA*|D~y zB*cJ3j8m@|6NEw1j58t(T2ArJ*B96&14@mD0>loUhEP;Xx2^i7V5+unuwgMC}XMX@VX3!CcV4Vgb z8o97V15cM`zd(SZdU!JLqzh zgySNakqACs&B55p_Ma^#sR#@ItnvR8zNh$yV2=217k{JAw z3{x9sqXw#kYacuZ<2O z*$~*cqWnQMCg!dCdAI}uXnaGW&>&u z*%lSUn!5Z%;#Sjf#+d-smNA^3i7e13z<_1#^4>nOo>o~Ccil@xGe3OAc@C=y(QyVuyWRYrr7toWqI!^?xmfTYS&a8o=Z?d^NC?pEh%KtR zaK=oNAm54jOg=V23MdHxwI>vNES%xSP_m(5uax?sd&&pOG%QwXuZh-iAC z^-oy4&%_RlOpuxM8V4lbK3bqC&Xm4^q@m|Tr4aNSeM5xT!7>kO9$I7F!C@xof0RRR zY_J6UB?YHdUlMGQF1UQ+amXXS_D2%Gvew);g-uyI`}oM}J`fKWINkC)Ep35SXUZfw zsEUM2bowIU)fBmY*fMOkXk}wG86(z#S`S&EyfGCm42me%C^j_R^^AL$)S69nUsx|P}lK$)m z?}0uU^u$scCss!UvJV$gA+lu8+XLGrUA=t2b~89ibpqf{#_E9{1Vg!Iq73&2twKhZ zso5dw{L2uT!G}6))_8V%PSB(kTiZA|<=y@6E;%2_nnjlh`kx#Q3I}-6LyNfT1Lh=W zCfq?_CaA`BB6Brd3qu@391Ko+Q%I%2s29{`7{Ia3n6I?xTWQqQym;MzTvnSY!&Fht8p-?cHOKJ=EPpqWD$cFM9w&?E%s##m0==R` zc_Uj_vaxQxDH)@;achRL?^NY$(#@>u{d;o;uTK{m@fhRJS zNsk3PxOjq+kYGUq-`lOU{(*@qa(>QR&g8Cvz-(U7dS)*RR2d6WFrRhi%)2r_%c|;1 zVoZ4^^%+m1A^qa*iV96!(o&~JMH0TdB*5mYQ;$7uMQ_vlSK2kp^<8aEJl0eRN3En> zrD>H|jT!bO5^8Y53OCJAw*s{M8$7j>Hg9D{l^H17BRmK8V5(7<3)B*od5*kmg1{Vv zG{rx3MlXIn3TmsS0g{6u4v{(-7-XtnC}QO7faw$*YT)QRh;@5R;jhs?b11cwuXqQx zlnVHV<3tOYYW!kSKwXVfMr|nl_Vs3 zb(A9MN(29RxC;(c<}f^HRYOSM7ktqJ04Rt-zE8$0Z>%wC;t7{oy{WpRjeF{nTEz zT^?IL7xyJ^g9aH19nwB>Tk$aVwbkz#36OyzZIl&!fc)e)_pNvwQqHHSa3KcBXznog z+c6NOD1&qyB!P0-5Lu+K$mrAgEvMOh{}j0(q_`fcSCxqoDA?qMgF9p^H#o4j};& zVmlm&j3ObEa#|3a#<&IbQVA5klcW8?Otzg z<({0tig>Bee6ujKMe)*T`68@xMleP^U#Bef9kU@=AcSK^PZzdc)CHcn36YraY8Yx+KzFx4}RJEGo-(O1iTDd+v|^ zlaM8};D;@JkXKe^(LK0Pg%A_pq4b2}X48kPrHjfDv!iaICtFje zgHCyd=w4zK6VOU=Cx+8kQBzHqN!5eeV72Q}?%(jEc>R)~cQyLdvNyq=_n)5#}B%N&-WRTL{#* z$W+0*DWu6#{9y7`e{f{>Kj=**5#2}+;t)7(4kC*zTzhaS6eMJj5t@vtMoBm@zX4S! zB8DP8=bzgK>$scMpR^@I2@v$lA`?23zO@TbrZ>v`Ma~9DK88dwOR6G zp`Y63^EdWgPYW*yIi4+he<5*){}2wN zp)fpNDUR{8GG~v8Jn;LQ9t&kIS5@S8H1EGxEQlSMuKa#&%F=!s$nP=#h|@D`3Y2NG z!gSf7{N8inhkpV1IOo_8LsHU89BDQ(gPMl4{o@7eq>_A6_eJ}-prQYGyKuYQrTZ)P zi2X7|cY?j#yGq9yB#tTrgO@oDd8WJ7~IJT>g3;v|qM09?pu{U|ZpOR_CC($6a! z=S5sJswClm(5qZ|t418$z2+(BskH&z4(DuUAuCo%wlcRGBzAW=W1&{pdF|A~!srki z^DIPPSb8LKCW&NfScSUtQBx}~V_VT90c)=_o;(7+?f0UJE47}Q*p65i8C>aBupwFx zn%7wFth@GONu?++quFAcu~_I#IJ=&^J;RGd!Y*S1=grlj5SClP|AVMe55}rw!4ULL z!Z}#tavrYq#xddMPJy-d%fcUM#eUJ2y*Pfr((jb-)$n^7wJ)q>P8Y0cPZ5kL)#(z@a3P&47|*=`bF(%omoo z-MD!xAJ%WM_TEaxBNE^Bv5<1XJs=q}UVWR4ul$wfaCp|;oChQ`%CCBp#A88Xp55<} z*bc9)!)N-2fs`17$!%u`Y}!@d7_i8csW#_kvjWffoKfnq{wD8o-nWi+0^Nn?L7yQsK6s6JY9?$o=HP%=&MMl>Y>&Op`P; z?uJ(!)r5I(V2K;u6PW40FmpW5UD&A@tap=7ddj_mtYI|orq6z&NK%rs zSpSs!Kr!)x0KtB_ft=(r`5>OGBG`GI;H9aA-_BSjLfte$g5PehD|KAcrxXD0b@l*X z#C|jlG3s@xm3GLtnw_|Uk_UPI5N~@FtS`h1N{E~~?(^XJlO>#KCTT+Fw=6njmOzhF z_5Q6$W!8m%m6`MuJU9?52Ig2btHhux+K6G*XpC}VU+~Ibjgdf%zmdVMr;cis`O7VdW2{ceD5oqRgH zJN4FX{mnX9`3@{!`j(c;Nsy8Xe=do56EbIBcwKI_u_F6m;?((C^d;V2p4HL=f4-mHmAW6(`mM$CJzmUUX#^mrsD;eJ(Pya^Zc_u!# zMSmGpf5Exa`K`>0MrJX3fm!rcmnb>tXEU#`Poe{+3Mz3F_X0nRfUL=|Of_|71GYxN zOBeCd5(n5sdJxbz=-jg!6N=b5e2FAU`1iU%AHlt&Nj8T#-U}N&-9uqZlzkB2!4WYt zsXYRAp^ha;wq5d_T~D=_mcrL5>({@ODC^g%G7+g3&|Shm#=P@xzrTR2!m?qMr$XW2 zpzX1$nm)I5;x_mR7_dadl&O{>)Lt@a|fM@>hQ251eGREwzK zr=sOoSW3C0!JaxX|Da8?jO9`;F$qhysE|CqucN~@m7;-<$BFd}qi;HTx=sK!zX5zY zY|Jw1Kzt@z(-q@Xg&wfEY36vdz*HB!bUm6x`<_B8_ki;w7ouJnQ$@lkCWxb7Bi7cA z__{C^WtuGLfzv&~aTe$0DteLv!iSm3+Xr#CUFm*660ynhr^nzz%-@heANgTd5{0x+!=kV{08(%_(klvdxZkm-LoMCd%yYKhi$^-mA<-;*Ev412`+N`pWC0@!y)Gl=i&?XxZOcbUo5vG5to>)b62TAYiqKQy8B0eX36o4!2m5j0E zpaX3=9`X1n=^H3fs36>*ZFXe3<|VkXNxTF2UGi|Ud@XFu8(^4?J5R(CZX-w&<)^pj zWk6AR6pE}S4C(i>v%aTr%wGvKT^{Hhg{$i>m0@v{BKsgv`w z%wM{=JCQppsWW*?)o`0<9)$voH;*~0;Dmw%vfEkEp~_D~#mP)2Rk&eNRzRBhg0ytT zmd+g2#O!h}QN}iN>?^B6cRn85*%1VfeqP|tMaCy9Lx(;d+xZcMAN}%xsi$aNY+@^E zOnViAc7=OW#_K~U=MbQ+GY@tN5Ib=0v z?;w86MI-mT_`IP4UtV#<9SaKXqS^TDaL}WD5E6Anc+k!0h;|+&L-pCeZ6f^s5>F9D zTc5^Rb1y}UI>NtS#gO0}I2mU7;5*v<F!Y*6JDYs;3 zG^EH0;aNHte|wIXB*v%z*lc%*a*f&|PdTK@0=V;NLSdS4DKRPBDIl04lwcu*n3kjv zZ&b!oodcg_>`Y-JO!tk^?SK79tbC6k(y{79tQ(HJs65D}?STHHFP#SY3Hf)=qXGF0_$1mlOm#k}7Lnn9hh z7jo^n5!4X`ti>n4r%Y8$eEGT64%h-wR4gj#D)uOuu0o}ATxEf&eWkaZDpBGRz&IgXM?fez8 zd12a}vc-)lUqp``4od;pHYdp}RXl)1uuCTSx44GrGS9{&+T7ZqUR()6=v zZI=_F-VnC#&Ii=KZzJikENnG4ddz2F4xUkiDqJ3ft+|Op`hf}vk#XW6qy-3rNf2{X z1UgSg@OG=zAn!MaX=GdgD$KD)zGW+-;HJ+(>j+=|j_YMZ1!yY>8eSq2f3@;Im+k{y z@NIV*ht(~V4shm_V3bscS+ZBw@sM}Errk@SbM69rGL1*TS^WqonsbkMngGaI!n^Kj z-zae0MnFo=0Bz0SQ&$1&PgHG^J@k^=0z%)}`|0+|w?1^n>lt*tv+F^x|N6(H z^Wd;uK%n=R7aQX1HGn@BO+_TbUk}8OSNCkw1>Z)#A^aqxPC*HJO+Z9eD-<; zaPS*n0ZvvwtW|~f%KgDmAcp`rFJIZm&sXU8CX=QiztDTMA-z?$9A~uCC^e28|=WN{4phJHLWR^#`dF;R2NK(G-!EbS zi?U%G42e=GW_@C=gqNF8R!V_lP zh-xeFO#8+Ap;f>t7%uZBcJU+ObaV+1!%KPb9_CXKK$8$oI}`s>%Y(QZHi%0svRhiV z(N|9=?7%q>Rfb~OWID5d;S*pk zlCqQFeNN;a`X} zay)ByQPm6QH*(^obEkv|#U3;OAP`T5EYv?!khXM71YXE#Ik2nZhlTT<>OVQmblWDf zUvKQl@ZY)*qi6RVpEBb_%LY_#=RLsa4VdXYNz?W1U3sJv()3;L;+5yvO$oze<#wYh z7VjYrpxvkHINH`YTo1m6hgN6Ffl$)u!DFC#h|P9_bVGi#RqB~PdFZv0_6b8Db;XQS zN)qxXzJ!uk2+(t#{zyi;gs^jk(p^-8Q0KQ(2@BcmW8dRF$80VT;iDrPy*6<*}2#Lph_GU3YsC5Y(8R?8^HPEy~yxZu%$AV z9I#rt@T!h1xHs^I9jCe?GMd#P=uFHnuaw(3`K zn=tfRX;efg(AGK5PsxdAO9DF*Rb}Eb2BYn6IWUC1#=f$d1qX=1ZoU(i=5DIX+*&w; z+)lcHF`s9!dVlkXSjA#T~*9b>2E%CpR?0eN+a}?~;u6jfWM>L$*h%J`mRKvO zV((um)bCMprfE!Fe61psbao3aKD3dr;P+k`@g+0Y$CZ6Ma_=*$RV`E9RS?`>f>c8R zk`2v0CubE}*1;C`MW=o;35@4RYOZ=W5)FFjDallaT1ErL#@$;xw?sMZI70rXA9#CD zdtsN}a}t&;(+qR}!h&lx(hTRgqRz@zRFv3pgHuNr=PWw)c5KPJT{*7FHNX(-D1{6| zA6S-@O%cXCi{sH<241&_P5^NuiOLw~WR5@DFzWb5Pz_HASWVDS&?EpniI}E(ij#hq znT8wWI}{(4d6m)ZWQ%=&)7!kuZ*jJZ)pXRIN@(7mmUoDd+jJvhCRhU0JHX>LvjBFR z^~~^S?nXUcVV8w%f$34MSSMa3jf0u2V~IgX3?JPzu!t;cn{XND!tIfMtNGQ z#|~#Ps30@(CR*Sh9uXW{BAw|MKU`7KkS>d{&@zo1+LkxG?t1=8KSJkm01!^6p-JThuco!{Nm|-|0|7G##vnaV@CP z25Xr~>tWEKC>C}2^G_MY^kXa5H%l!<=o94<*^7a9r|hu%mrI`{qgs}mdrWh_B}ZJ& z9_>|uet-s>Oxh$pJIw-mBr0R{5hX>=Y8prZJ=x)b)Fmc>n(xm!K zeCZfAdG8q#q6;_fPPg+QvE{5B9h{L!GlFUh{_N#d7!rA$J6K+-%$ppDr6N_NPt*z( zb6E7aYwm)i-GEQrEDwLp;-}nbrXl+lK_M6gE`I7jq_0;`KoC;zOUl8CdfIyPTqTIf z>rJem@4kG%`*;!z&!*ci3ffnMlI`xB4fnBjxo&vzM{ zIEK8XcbysQ{!8#EcB>n;u$t~;#3iEKR+j-|d zuxVO8i#^0XV^iXbW#H_--B8LWX(M3D{ z9BkicM=eLcI&Kz|A)R!AF$cw4(vY;nGhYRnI?dV39g5;TfOW~rcPY&e@5XK>#yzzc zUN&_U!ZNfI=o%dag7E|1esP$x?}+j}*uA!jZNU#|MgbenFl>eJ7s7$LY>FwN)*)W2 zW(8Yww3rq0qd?(1WxvT0EAqI{y*3lGSjS2!s`*kb8SwJ3`w73tx-p%&_69xG$Df%( zlT)rxN;}Chg_h65mrI8CHO=$gJ#x*T@1;xr3!n6xdLI0uR>>W3w%XT8Q;x>c?ero6 zA4z3kpvty-BV5Rb_oUn%I`)3{DYjh4c+t=%4)0xNY0SK`7ftXhwVi(7N$0&;C zoH$H&Im`8MgvT2Bgk_NS+T?`x>Jhg0xlw4EHn*>M<&=%c16u=1s+e%m-Y(Zz?~*+p z6S3T#UE`ve`-^@qi;iAvE5m3NmX|L&$;qKxjFzvov-IFoN<05iWiiktx z6N^r2_$yt>?)z35A9Bm;h!|2G<}Bi#*xU%()AqlEKnsK4!}hWyEVBOR(W6^at9wnD z_!$1#JayUn#wDPSk80Prty!KF+o0X4A5X_axqUaV=7OU|#~nfDQa>d5Yn6fRUbXI9 zua^R`aVtkN13~fL?e*15;mqCv7A*U{zatpLdFOFb#l>;`03YhY!83;zoo|1u7GYxE zR%Qej-<`qqDpm0U;w9EaXJ)y55a1E-qAqh$jAJO{?A4hwGTk<0+?qoTybP(bTPN=PzT>X1 z1X@;lW8M}-J|OUjA^1 zV@8b14=^h?3qhj$_OntfK(y$%d1fBdA%H|JnJy}=cR`qk;+rLB9Y%bfZ&+O7s791T zB3Q`#&mWlaPJx#qUS@FTAcSuN<}!g#Sy(ZU|F>qW%G9;USS9%>=j4S*lHeJ=NRKOV zFqccX`8+_z;qno`b?Mkyh>J%;rSKICxIckHB)_qArIx*;`xOyGE0m(Goy)PROu|&t z7vQCLj3*O*0ck=#EwXqt%*Y+6&!~lR_!&jA%$uyRizUej`P?fhDyIt81Wp^r`{S1o z!mxp-jW`I2-$`1WKU%rCfd|xl7a|^(Rm1J?KFDSPpP@SZb$Z*GnDfGJdK@n*W0+`x z@6EtM&isY%@D|j3)-sW`kusj>ndY_63$GcCr zszM}>IB*H64?+yp^AdOar0LT-;FFJ76^D5Vp>OcYC!q9_fzu}QCTk>tujhIamnM(= zEkb^pbSgyz#|NO66|hDJGsHA47cnysgUSfq>9BTjtFwAP@nBG>(QbUY@na%pmC6yN zAE?r6?locXOs2kdQf~F&3PqRgB9^#n`(&JBZXY)4-qurlr#^f|9QFW`9Fnxyqj)ZL zS-T1}WDXs1K7WcOrV>{-f+`XklE2*eUF-f~+AYQy_5Q^DaHPvjLI8snQ&nB0thBt@ zCEo#Xoj`|mFVm+uSYr6f63$Z+0 zSVHY02v(ShPx=s(&l^ccUBTSnjDK!&63&09Lrl>G-G^Ek@$B}94gF2|;AK#Un+)*< z@j%Q=4fNaikrg0zf1_}XH6OB4M(X(5VK6{4)!-g8+$Aa#Wl64L`R0p+${#Sbud=|k zfxPE@MQBY@Y$9?|IG4W$E7{L86CenYlX>%8cwCAz3x!%gmVfu3@VQMzy=5=9x-gH0 zF#aIl%8_g_Gb2NZIbAjbAE2uDwLBKhT=K7-7eSzQf~bwLZd^0+{KWpTq*P%3oKdv9 zG=D=nH>0FKFBv;2t@@q5p~u;C*To1&Ui5;(N$r3}s0OLcS6(xregbX6pTi&~=Q^}T zU^@@9z9SDR(4c}jpwwHQ2RBjO$%o^G3|3bYlfrED6xc1VgX!__f7;+}W%`7(bCHG? z@E1RG8X;4vmUQGQ{lmv0lqoQ)Ytwv+o;(rm)R>3%I;>rf>DkxyLcUE*p2;D!0|uYsAiD|<_}0U4 z9g9uU;NN$2!h$-WJ7L{9=o5Nuna0gMI%YC(fKfmR39Xdw*Y3KOB<@Fh`RU6AqgDXG zcJK}+M&d1R$b&ArqWkfTtUA-GyBn#% z5e6+|8u+bhjn*KOaAm%aUtt->t0QVckgAmLzQ`^9v_F)H@eNa+i*qq!Q^AT&jHMml`%NLrUXOP_znBcE^%4u z5?8H*xrM=~5#u8@j<(Uj7n`v}k~LgyW*EW>8F#Y{Sp2?&smsl!IhWBHs)pgeku6Vs zEF_DBFit{*DxA|je^Lx@X*M(&z-MXb-JHm7em=|l3o9P5gdtMDe{}t$Cf1nK5+(5f%9P@zzov5-iFCY|XDu z)D41tM)cAXIaLlARu|sPDan@w?T*$K#EZ{<0qqXHNq!kl{!wg15VG~rn=BEQqIUCJ zDeNKzRbbp#{d7z$DkDFf+1TnDNAr#!et9HbCK&>e(98?| z{L2(x0c=F8QXUA_94j)_O@L(j)k9_ ziUqtcet!Dn;tannHa1vxTqAjV4q5zJn>LWCY(BE@0nOph$)g7!v76v(D!vWVB7`r6 zIpROZ`%|jjg*-2ZDQ>wLmS|sJpkq@0CkGKdPbRbooKVvBCsWa#L!KK3Yurpe??3g- zY@$t<40#_)OdaT?Kp$a!TjlpS6mi-YsoJg~HU|8UwHRYHU!j#YxGu}@BhU3pmH=HX zD#D9HA|$_s{>;8qlf*AcyEw=6_ELdxs^aSMYF{%el=s|a6a*T3p)xbVKs$kMPw8uIkDdt`5^kTIn{^_=}t%(1C-;T z@^p4+yPL9ZsMr!D#=5mz+`iTHf41m&|0`^bjQQ9e+A7tikM8KT3|~)Y9I+5m)xv9gv=wSHeIc)@N#a zRv7Pj)SzlIV?Ui4xAM)FACBHA+YPwtxuPnWOD2oW%3Zr)rLoA%?@(iOjr*i<6Jv!e z_xu0N5>ir!C%1F(CHv9fd}9Rg-9CA+E(aFi0>A3iHEYOPW zr^PFa57)y0JHjwualdJO|7m?cYD0f&+^-r}MMRzH!OqH<=Wc-v3cd}NBq2ELcn#m= z3+M&%AH!N)F2YBHMs&4D)3^4zL`%68RTpqZulf}m>au<`B0;p>%GO5(gQsF*$8yAL z-f7O{Q2$1lAwhSmQK?&2sgbuaSKFY{FunvBj>N}u49l2f@YnN%V04J(kuL8MUEs%jd? z-KOhupa*$ckELR9j{KF1)xJuw*by!SE8NJ2m6jzr(VDld zcZw_`zt|DbXnT8mG50IyZ7qf8-x6APwN;(9lGTf^1)f)9$+ovzK?+(vnOMZ!HDar1 zj7LdNf5Ae6f8!%RMYx9?hZUxM?}WXFbi{!Ady^&UXQj@{T=8%_AVX)Yd^q4)K$0@B z`W8$r$qaO6-V(_Uz>BF>gnL-P*2lb6>XVEqq-%YE6U__+AF`4~p3ZZZ6#b=SWIJw>l3#Fx z2$Lj}ETP2FoD(!yP9-vmgLGJ`=|RdeaSRPmt?z?;(&ecltCW<)PieS=vk2tqGOzH@ za;}stgeSzC&eV4tsVU2wZYcpO7$VhmNzXDip;N?2-}79Hi@-G9*aD)PO+ko+_kf9SC?rvS>$-Z zYGUCcbC2BmUreX+O;-OJv(wVsB|kHa;FF({VLUPNm+qaI9kamz&1?m`Syk@FT+e_kX)pEvz)~Dc z9JOExSLT~wL)5tGL0UI+U2MYmf~rsH7$io&4L(L_zey0gyl++oWT^}MtdE;tKz?&0 zA{6*YP-)TxaF#Y@%8`DiHhEhIdb1OdC)QeS!14qc9Hf+Ry}qfE)#R|v$VwZ|O&dFX z!$=c;mH`tiQrHm*k}YSQ(Z&wmlLQz^M-}Z_Fw@*9Vz;!T3R2U&!kE#H30rEc47ng2H&H)UCqs z$(5v7_YQ{S9m!1TpXhgBl~Ot^v2d4ZCUN6QGaxQ!(uKzfV@=&&p%Xt-0=`D_;x(!4 zcP^7~h4o9-%8t?Wz}SJ>^sl2{BGq)l%&`xznq{4LZy>QhzH&O!J^%xvMq){{H z{~`lZ>CVnp#Z~^ZH<%3SuNo)S?Nb>e-2JU75xH%#637adRQZd3t^_PJ=cb9#f0_K@ zZ)qWzuD;(vEPQWi9j^^j?gE?mSati9vHSj)F2V*k$!YNQ9(4O$3r)#sZtXjc4<=3% zTDvw9i^wE3Sc=o&TnokvmA3oP3f$Pr*0DlH`jRJdusZtICDkZthBM&6#P$!Ak>@&)5@P*6mwYKQ?j@&^@&6Sy5Pw}98j zrx9LSW8;_^=2}|YYHoZq_;LF_YUhuVSjuQPYSi|>K2qD@F$VnuWscv)V8#f`kF6Qw zUm5GzEYvp+Cp%sYM_@K>r)-;!$ZOkys-iK=#y%12}0b0JoV&Rg6=i_^#4dKSpR+3+ORbwNi*#jF5 z&9dbW3uw>on*|Mj3EGYd&Gy*~x$>~3oxo^SEzVlLW=dP5iW?51t*0`BooJXydhKp+ z2MSXJM(GpriQ%*#8TQ|fA#lU{7or!~fWB-+I?xBvt(yD(WL z3U!(bzMyxd8kOBp%ZOop6RjhLnP*YsiX5Tab&}Cp+`nTC5iECkD2taiw6T20#Kwj0 zI>`Znd*_kikIEbEVmiy)O#JCkRp1UABnISmc2dKXJy~q&J&o(UPT^A@R8%U&27qIO z?YqY;0bbx)Z&BcHrGUCe6uZ)KlNEz@vNXNr zDm1tluv+7jom9oZj}AB{Y!ySFTgJ@UnT3i*g^GYuPOb;@;=9N-P{~bjRp>>s|I*H0 z94n_zKhFB zlD;N!r2mXl28*A63*IxXF^mA=;ieqsqtEi;v(|!V%y)L{Cd|3GLuXJKGI`nzKHxB7o7Z4rQ&W>pk_U}}60k;UkdnX?i zvd|Mx^M73>OXR?7!~ijY%WYjD1=e_tB@+P1qeHFCb1KaLQY+Nr#(34|>S41Vlm=hGzTWfIK`1aZ-ybmp%Il@m68PuW?@h zLrGQ-EjyNDvpuX(wQO*~SpB=EjlH>Pi?9A>#k`LW^EeoC8b1rGjnvr2=<{X#E)I1j zepTH)7c57DsZO+t?iVg8xk(nnZ9K`%s9AiK_ZiF7Y3*XI3lmlzw!D?#x(;ykS8A`- zy>-%_u_4_S#bSt2oZrkRB)8|!UebR(^^OB&r1k;3g<(YD!T-++V$5~nE?ur?e`o(} zEkWh#Tk>M2O6>8q6d^jxAHVEiht#2a^~ct1V-0l%Ww1^aQc=mz(u8Vg+h{6D4Z3l)}=8pB308EBzte0wFx|o6pr*Yay>0(04T{9JJ6cNd%K>Tm6XQBpLSM=*_ zJPD(DkJQX;BC0TkyAdtXO*@vKwyWK*fz!Ch2{&GS`>a-zktHdo3;g(>c=!*04_*Px zsQ0`M64Nt$#vR_Lccl1_KhDWU0>FmjMY+vHT2+nK2N%W1G}WHR|<7McdZG zVjE-G>8d9kXVcb+{Ry3~r)Wj>kj-SVtQR#Z7J)7cu0^j*?IjTaHxA%n=_Qe;dND;w{d5dwT~$_{tza zUl4qbRQywZ@SLv+5nq(UI~MdsZ^uHA=f%uOnGnRCCrLaFOn7KT6%KgvP<-MZ-zStX zm}PcZY5qQhiBi*SD=R5dmnxZ-+UU!lS{fRR z2IB6C(A~ZdO7YTA*%dZvRjp;-L9Zao^walt=EwP9#xKFf2j;S>9s_u@JL~|)sBR#4 zF_W3sZ??wHf=dP=VCnb+N?HWpZpjT%U{+FC;7~3Ho_`=n9r$(ghbVI@`~Qb<}aF|r?amg21u)z=RqmDHe-S_c~*rZ zGCw2Lfs;b`nNB9jRLHf{&=SSMSNe}-qk3+#1(Mp(()^w2kGgTqWtl5m=y0dsMx>EW zeW@_@AJu;N9?kSde|AN`MAi66aIfSyJ$lXQ>47TLGgo-WM~kx>{}^jjpEHKV^-imH zCxZLYdOK;8T1K7u+%cqGp#sOfc~Q5q+ri?{iWWsCyc3@@0k5&1gLK&t94qy)oI?8e zTUW#!F3KA$)a;s7Wbrs>F9LmEQB{Gvw2EEUSX+8%+a!lw;zc;hI|63|zN~6_V#DP| zeI;X7Mrhwv-84$)6x9uFn!iPfdR<3(IugOQ2qKKXT=L`R=&g%fROAU>jC$H3oHTQM zs)AhZMsaX6&@IITGh6@dy2NN8-8S0NdFXJsvpkvbYzw4z2_np7{I>jhM(KciXH}xC zzXO%5{S_IZ_VE|4*;BO$hK!L~iRJlz@Mwr%WU7~@0lPBDwk#E(DS@jY_~}V33`63P zjXzBaz-DyNGn)YsXveYp;bAZn_w_%QGMkzkyS$W}mI_|(8s^GnmucP;y#K&`acp-h zd_HwJqmt{V4tUfim1378MO`!Edp{p1Gx<$)0{V_|0-#W7iu2jy95QpNnOm*QDzB!3 zwvvqM(c-z(ZWGha!RsOL;9p^>Sj)@~oBp|GM=$NSMi5c_K1dO11kdmk4Rph}UFep* zwlZtF%%)A=xFf{``wQ~Reh~k48F|(tWYir+(gF_w0x-J5v`#E`DWU4crKPon8$T`$rt{#hB?Wg_+2UKd$J zcmB8#QsSmxhSg9LOTj(di|tujnsR}cSp!py3vIGXrP*okg}B5bK=?o5i9>Q?nQPW%93srDU#>j@6;V1e{&DJGs z*B%ktsnBd0@2gk5w1LBd1E_U%ZGt1%iaH#pFF#d^uHN-vqJ;%c?9sZEZQB`c4=a6X4}uNRgD@$g1C z)Y#h$4}wU494PV{)){&W#MiWkh+&0=er)mQx8 z_P!m`fAsDEE)JGnlSu>uv|38Bb)*D;Z6peDlxf(+)RpuljWU2k7Y^(s4Ju|J#q^G*%UP- z0ll@d|B>qz)sPtUXn@?HrxAXqjEsOL#XlmB?OiQXd>~c05<>@l8$$Mmb;Ke~3pW6` zSht`YspphqvECR)FC}26m+pCw!f9<=2CVYrlYqg)H&oPDS`XUd@?IN}M}NyCc{;VF zO=Vm$!ExoIJOvI^uw-^bJI;^dWjR=lm{ENcJx0Vn4JK!?MQ;doc(@3dy5v_ry}}Lw zN;!N+vG{f_?Y&WWSiTpI#KQ*E<|r*(nxKt(tvOLWb-gvPVO7RRtyWKDB4fxK z-sC4JL?!~{72P5-e*luobVGL9TqfL^VvxH9<=HIk<;jcr&bfoohk!V1t5j8s8dFv~ z71q5Hs;n*s;7+=_i3_;d1n{1bOV+C*#K-9DfjR0rmv(=9k@mT@=Q&=4KU#4E<#l{E z2!;o0C{4;~^GP>65%Bx``}yd~ug&^g@Xc(pm$PZ{#Eu@HZS-yWi;iUhnTQWD%xAg>$WNH3-$$S-?0e?DO$pX*d zbM@yVdAz(uP3FqwD5Qv)SC!4&Yp20d2}@Fo#m>I%9YdL>9ZRUALL~V=#LGZ|q|D3# zwOvYt!O=&kX}7N_9%^neyz%gT_P&`wQ64CjlL_|b(R-l+OM>a1DwY6f7ZkS4=pA8eK`qwf0=PYo=T zF8P#aN{kL-G8@=q@|!GeI-i}GFR^kn3fJ58uLdV^u;v)C`4sXD3u0^o@pz|;z)(At zH;5x{8d$4z48QC^<(9LTor9Q`&hX})>lbKBSgn}kxNsKka&9ZN^J7J{`R>?eNpAYu zEBT1H#Gs*ZXyTMO`-*xEbu;3X{RtoA4m+feo3dBv$}4eUNOnEGLune>wOC;L;py_w zS?fE-pC3#(LAP%ahE@XE|6HQ6(HoAy7of`oWW{_A&wZHVKN>N~wsqMds^kJ+k=p?* zp_?vFIiz}=_>?3UIx5vTjE8t~M`;XXB&=5PyGx?HIiidzu}oHO*_TNj$M4Yd5Oc=U z&YilK-4S@Xej1EV>`7E}nLXSa4a18haIFE6z6d1Mlvp;?{vW!O->mN!d?MMxprNNK zYQd0L;i{3_-6XW}eDu);$MKnvg~?yvC)L$RRJ%jRgPlBeXn716w8u#ChG(`e0Vd{g zEHW=i!wNN72KabP^*L=&7oL$H+?%iiK?ALnVmoo5eBmZbm#S73{~**t^IdjTZNN`M z^M%c?q#G;Jl@zWBnCE;k)n*FY@Esg!H`f_hDK5YDD6UBiOh{L>$Y%v=o4+B{--1A0 zN-HPU@m`z1A3~Uk%KJ1Xyg|X}|JWZ26&HYMmKM2J9eFA5+KDhzj%r?Z32QLPT;4c# zm_nP`Te6s)^$Y9@TeusjzvuCIYwf&tQ@C+P4|q8mdxeH{%)juaq|axGek)L^;B&n+ois-~t~h}lbZJy|Xn+1H9@56}Nr>gIpFzf2yRogN zpeh3p_0=1?dlLyNsXK(2q|3_+1* zwL^xQ4*D1`SD+T?>PQC=?=Xb@Num;rbRYVAmbYh!g2Sz*UJfh4rI%Qj9otZ!sD}Rv zRHzA7e%O&+a$bUr5<-Q2_FhuM@2y;4|Jtx`rCYh(i-b&ey3* zIo|$V)$(8phr2TTt>K~_$-gxQ9uCaebosLOcjX|g&emH;u+4VV9LrP+)p&3?2|k5O z)iN;4L~L>nhf2jBL%hmfdcH1#XRs_cn9MNqZJ5cUA;M<+dQ)kS8^&{$h0snI`G1$_ zg!L`kCK>8gCIh(Er8aTo{s@3ST$etu9*Sc`=Xl?e+PuepNLD&JY#lKS^iPz~$#bg5 z0S)i8Y248vSBr8_#jvl7{8dv#a2IO-)FkoeKna&~59 zD~T_PK9+liKKicNG)>X_ve|6j>FC>LnG#)wWJL*-iPT;OdD{{o;^v$C z0-#XE_>6y}m}&z>=`Nd^9L=n98>o!Gn#u9LvD!^jjYlH=6s`v#Yt^jIGHx#*mF z^8+*{FvXK>{n4`~xb*e7fC~VpDr!L_F-#|7zIC9em+A`_>A`RYkH*&K!xN?=9PaZO&A(N+C>$ zDe#i~pQ>UxUu*G39#URTd&)uZqm`gf6IAb1T0bDinVKrQ$(wY;e3&o|5EQYw-4uy8 z4t!P&3@DYj(voufIXzKRp#oVybXMatNLa;D;e{?#@>vIk_#3794u}rAR&B?^kqoK^ z=neoHpCM#{NLk09}$AUjRw2UofKDk*leEBXKBjo%6ab^c=^}{yTATP`C5n zO7D6(aGQh6WP=Qt}8zKjubRc&a%h=jHiL->*ho$Fk7}Yq^rTl zYn17MBScB|z!vMJWn?@QNVcFnf&bWOG15sMSM%}-7DK}t26Ub+>|Plmij_QRWX~_J WJP2FnGGm!uN7aP5b__2)alQn*g|K4) diff --git a/src/winapp-CLI/WinApp.Cli/Services/Controls/Data/snapshot-manifest.json b/src/winapp-CLI/WinApp.Cli/Services/Controls/Data/snapshot-manifest.json index 0a5a0214e..96489b9b6 100644 --- a/src/winapp-CLI/WinApp.Cli/Services/Controls/Data/snapshot-manifest.json +++ b/src/winapp-CLI/WinApp.Cli/Services/Controls/Data/snapshot-manifest.json @@ -1,8 +1,8 @@ { - "bakedAtUtc": "2026-09-15T18:00:32.5044894Z", - "cacheVersion": "22", + "bakedAtUtc": "2026-09-16T15:10:54.1666758Z", + "cacheVersion": "23", "scenarioCounts": { - "gallery": 330, + "gallery": 327, "reactor": 95, "toolkit": 48 } diff --git a/src/winapp-CLI/WinApp.Cli/Services/Controls/GalleryFetcher.cs b/src/winapp-CLI/WinApp.Cli/Services/Controls/GalleryFetcher.cs deleted file mode 100644 index 977a9ad7a..000000000 --- a/src/winapp-CLI/WinApp.Cli/Services/Controls/GalleryFetcher.cs +++ /dev/null @@ -1,732 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -namespace WinApp.Cli.Services.Controls; - -using System.Net.Http; -using System.Text; -using System.Text.Json; -using System.Text.RegularExpressions; -using System.Xml.Linq; - -internal static partial class GalleryFetcher -{ - private const string ControlInfoUrl = - "https://raw.githubusercontent.com/microsoft/WinUI-Gallery/main/WinUIGallery/SampleSupport/Data/ControlInfoData.json"; - // Per-control sample pages AND their co-located SampleDefinition .txt bundles both live - // under Samples/{UniqueId}/. Upstream retired Samples/ControlPages/ and Samples/SampleCode/. - private const string SamplesBase = - "https://raw.githubusercontent.com/microsoft/WinUI-Gallery/main/WinUIGallery/Samples/"; - - private static readonly HttpClient Http = new() - { - DefaultRequestHeaders = { { "User-Agent", "winui3-gallery-cli/1.0" } }, - Timeout = TimeSpan.FromSeconds(30) - }; - - [GeneratedRegex(@"]*?HeaderText=""([^""]+)""", RegexOptions.IgnoreCase)] - private static partial Regex ControlExampleHeaderRegex(); - - /// First XML comment in a XAML snippet — used as a fallback header when - /// the upstream ControlExample omits HeaderText (common for Accessibility samples). - [GeneratedRegex(@"")] - private static partial Regex FirstXmlCommentRegex(); - - /// New-format SampleDefinition attribute pointing at the co-located .txt bundle - /// (e.g. SampleDefinition="Button\ButtonSimple.txt", relative to Samples/). - [GeneratedRegex(@"SampleDefinition=""([^""]+)""", RegexOptions.IgnoreCase)] - private static partial Regex SampleDefinitionRegex(); - - /// A section-marker line inside a SampleDefinition .txt bundle: - /// --- header, --- xaml, or --- c# (case-insensitive, CRLF-tolerant). - [GeneratedRegex(@"^\s*---\s*(header|xaml|c#)\s*$", RegexOptions.IgnoreCase)] - private static partial Regex SampleSectionRegex(); - - [GeneratedRegex(@"ms-appx:///Assets/SampleMedia/[^""'\s]+")] - private static partial Regex SampleMediaRegex(); - - [GeneratedRegex(@"x:Class=""WinUIGallery\.[^""]+""")] - private static partial Regex GalleryClassRegex(); - - [GeneratedRegex(@"typeof\(SamplePage\d+\)")] - private static partial Regex SamplePageTypeRegex(); - - [GeneratedRegex(@"SamplePage\d+")] - private static partial Regex SamplePageNameRegex(); - - /// Fetch fresh scenarios + tags from GitHub. - /// - /// Which samples exist, and what each one demonstrates, is upstream's to decide. winapp - /// adds no scenarios of its own to this corpus and applies no per-sample rewrites of - /// upstream's implementation, because everything here is presented to users as Gallery's - /// (Scenario.Source becomes the [gallery] tag and the gallery- id - /// prefix in find-ui output). Content winapp considers missing or misleading - /// belongs upstream in WinUI-Gallery, or in as attributed guidance — - /// not silently merged into their data under their name. See #703. - /// - /// This is not a claim that snippets are byte-identical to upstream's files. Extraction - /// is uniform and mechanical, and deliberately lossy: content is cleaned - /// (), C# is compressed, both languages are truncated, - /// and event handlers with no emitted code-behind are stripped so the snippet compiles - /// on paste. Those transforms apply to every sample by the same rule; what is gone is - /// the bespoke, sample-specific editorializing. - /// - internal static async Task<(Scenario[] scenarios, Dictionary tags)> FetchAsync(CancellationToken cancellationToken = default) - => await FetchFromGitHub(cancellationToken); - - private static async Task<(Scenario[], Dictionary)> FetchFromGitHub(CancellationToken cancellationToken) - { - // Step 1: Fetch ControlInfoData.json — list of controls + Subtitle/Description/RelatedControls/Docs - var infoJson = await ControlsHttpHelper.GetStringCappedAsync(Http, ControlInfoUrl, cancellationToken); - using var doc = JsonDocument.Parse(infoJson); - var groups = doc.RootElement.GetProperty("Groups"); - - var controlPages = new List<(string uniqueId, string title)>(); - var subtitles = new Dictionary(); // controlId → "Title Subtitle Description" (tag-source text) - var controlSubtitles = new Dictionary(); // controlId → Subtitle alone (display-friendly one-liner) - var apiNamespaces = new Dictionary(); // controlId → "Microsoft.Windows.Notifications" etc. - var relatedControls = new Dictionary(); // controlId → ["Pivot","NavigationView",...] - var docs = new Dictionary(); // controlId → [{Title,Uri},...] - - foreach (var group in groups.EnumerateArray()) - { - // Upstream retired the per-group `Folder` subpath (IsSpecialSection items used to - // live under Samples/{Folder}/). Every control page is now uniformly at - // Samples/{UniqueId}/{UniqueId}Page.xaml, so we no longer read Folder. - if (!group.TryGetProperty("Items", out var items)) continue; - foreach (var item in items.EnumerateArray()) - { - var uniqueId = item.GetProperty("UniqueId").GetString() ?? ""; - var title = item.GetProperty("Title").GetString() ?? ""; - controlPages.Add((uniqueId, title)); - - var cid = uniqueId.ToLowerInvariant(); - string subtitle = ""; - if (item.TryGetProperty("Subtitle", out var sub)) subtitle = sub.GetString() ?? ""; - string description = ""; - if (item.TryGetProperty("Description", out var desc)) description = desc.GetString() ?? ""; - subtitles[cid] = $"{title} {subtitle} {description}".Trim(); - if (!string.IsNullOrWhiteSpace(subtitle)) controlSubtitles[cid] = subtitle; - - if (item.TryGetProperty("ApiNamespace", out var apiNs)) - { - var ns = apiNs.GetString(); - if (!string.IsNullOrWhiteSpace(ns)) apiNamespaces[cid] = ns!; - } - - if (item.TryGetProperty("RelatedControls", out var rel) && rel.ValueKind == JsonValueKind.Array) - { - var list = new List(); - foreach (var r in rel.EnumerateArray()) - { - var v = r.GetString(); - if (!string.IsNullOrEmpty(v)) list.Add(v!); - } - if (list.Count > 0) relatedControls[cid] = list.ToArray(); - } - - if (item.TryGetProperty("Docs", out var dList) && dList.ValueKind == JsonValueKind.Array) - { - var list = new List(); - foreach (var d in dList.EnumerateArray()) - { - var t = d.TryGetProperty("Title", out var tProp) ? (tProp.GetString() ?? "") : ""; - var u = d.TryGetProperty("Uri", out var uProp) ? (uProp.GetString() ?? "") : ""; - if (!string.IsNullOrEmpty(u)) list.Add(new DocLink { Title = t, Uri = u }); - } - if (list.Count > 0) docs[cid] = list.ToArray(); - } - } - } - - // Step 2: Fetch each control page and parse ControlExample blocks - var allScenarios = new List(); - var fetchTasks = new List>>(); - using var semaphore = new SemaphoreSlim(10); - foreach (var (uniqueId, title) in controlPages) - { - fetchTasks.Add(FetchControlPageAsync( - uniqueId, title, controlSubtitles.GetValueOrDefault(uniqueId.ToLowerInvariant()), semaphore, cancellationToken)); - } - var results = await Task.WhenAll(fetchTasks); - foreach (var batch in results) - allScenarios.AddRange(batch); - - // Stamp ControlInfoData metadata onto every scenario of that control. - // ControlDescription comes from Subtitle (median 68 chars / max 129) — the longer - // Description (median 144 / max 448) was retired during search-output compression. - // Subtitle is small enough to surface in search list without bloating tokens. - foreach (var s in allScenarios) - { - if (controlSubtitles.TryGetValue(s.ControlId, out var sub)) s.ControlDescription = sub; - if (apiNamespaces.TryGetValue(s.ControlId, out var ns)) s.ApiNamespace = ns; - if (relatedControls.TryGetValue(s.ControlId, out var r)) s.RelatedControls = r; - if (docs.TryGetValue(s.ControlId, out var dl)) s.Docs = dl; - } - - // Step 3: Build tags. For each control, prefer hand-curated embedded tags; - // otherwise auto-derive from Title + Subtitle. Always strip stop words. - var embeddedTags = DataLoader.LoadGalleryTags(); - var allTags = new Dictionary(); - foreach (var (controlId, text) in subtitles) - { - if (embeddedTags.TryGetValue(controlId, out var manual)) - { - allTags[controlId] = FilterStopWords(manual); - } - else - { - allTags[controlId] = ExtractTagsFromText(controlId, text); - } - } - // Also include any embedded tags for controls not in ControlInfoData (jumplist-* etc.) - foreach (var (k, v) in embeddedTags) - { - if (!allTags.ContainsKey(k)) allTags[k] = FilterStopWords(v); - } - - return (allScenarios.ToArray(), allTags); - } - - private static string[] FilterStopWords(string[] tags) - { - return StopWords.FilterTagList(tags); - } - - private static string[] ExtractTagsFromText(string controlId, string text) - { - var tags = new List { controlId }; - var seen = new HashSet { controlId }; - // Split CamelCase/PascalCase into separate words too - text = Regex.Replace(text, @"(?<=[a-z])(?=[A-Z])", " "); - foreach (Match m in Regex.Matches(text.ToLowerInvariant(), @"[a-z]{3,}")) - { - var w = m.Value; - if (StopWords.IsTagNoise(w)) continue; - if (seen.Add(w)) tags.Add(w); - if (tags.Count >= 12) break; - } - return tags.ToArray(); - } - - private static Dictionary CleanTags(Dictionary tags) - { - var result = new Dictionary(tags.Count); - foreach (var (k, v) in tags) result[k] = FilterStopWords(v); - return result; - } - - private static async Task> FetchControlPageAsync( - string uniqueId, string title, string? controlSubtitle, SemaphoreSlim semaphore, CancellationToken cancellationToken) - { - var scenarios = new List(); - await semaphore.WaitAsync(cancellationToken); - try - { - // Pages are uniform: Samples/{UniqueId}/{UniqueId}Page.xaml. - var url = $"{SamplesBase}{uniqueId}/{uniqueId}Page.xaml"; - - var xamlContent = await ControlsHttpHelper.TryGetStringCappedAsync(Http, url, cancellationToken); - if (xamlContent is null) return scenarios; - - var controlId = uniqueId.ToLowerInvariant(); - int scenarioIndex = 0; - - foreach (var (rawHeader, sampleDef, block) in ExtractControlExampleBlocks(xamlContent)) - { - string headerText; - string? xaml; - string? csharp; - - if (!string.IsNullOrEmpty(sampleDef)) - { - // New format: header + xaml + c# all live in the co-located .txt bundle. - (headerText, xaml, csharp) = await FetchSampleDefinition(sampleDef, cancellationToken); - } - else - { - // Legacy inline format — still used by a handful of Accessibility pages - // (AccessibilityKeyboard/ScreenReader): blocks - // with no SampleDefinition/HeaderText. Header falls back to the sample's own - // first XML comment — never the page-level copyright banner, which lives - // outside every ControlExample block and so is never inside `block`/`xaml`. - xaml = ExtractInlineCode(block, "Xaml"); - csharp = ExtractInlineCode(block, "CSharp"); - headerText = rawHeader; - if (string.IsNullOrEmpty(headerText) && xaml != null) - headerText = DeriveHeaderFromComment(xaml); - // A few legacy inline a11y samples have no leading comment either, which - // would leave HeaderText empty and render as "{ControlName}: " (trailing - // colon). Fall back to the control's ControlInfoData Subtitle one-liner. - // New-format samples never reach here — they always carry a --- header. - if (string.IsNullOrEmpty(headerText) && !string.IsNullOrWhiteSpace(controlSubtitle)) - headerText = controlSubtitle!.Trim(); - } - - if (xaml != null) xaml = ControlSnippetText.TruncateXaml(xaml, MaxXamlChars); - if (csharp != null) csharp = ControlSnippetText.TruncateCode(csharp, MaxCSharpChars, "// NOTE: snippet truncated — refer to full sample for additional code"); - - // Gallery keeps each sample's XAML in its .txt bundle but its event - // handlers in the shared page code-behind we don't fetch (see #703/#704). - // Strip any handler the emitted C# doesn't define so the snippet compiles - // as pasted; handlers that ARE backed (e.g. TabView's) are kept. - if (xaml != null) xaml = ControlSnippetText.StripUnbackedEventHandlers(xaml, csharp); - - if (string.IsNullOrWhiteSpace(xaml)) xaml = null; - if (string.IsNullOrWhiteSpace(csharp)) csharp = null; - if (csharp == null && xaml == null) continue; - - scenarioIndex++; - // Scenario IDs use a simple {controlId}-{N} format (1-indexed). Stable - // within a single fetched cache; rebuilt fresh on each cache refresh. - var scenarioId = $"{controlId}-{scenarioIndex}"; - - scenarios.Add(new Scenario - { - Id = scenarioId, - ControlId = controlId, - ControlName = title, - HeaderText = headerText, - Xaml = xaml, - CSharp = csharp, - Source = "gallery", - }); - } - } - catch (OperationCanceledException) { throw; } - catch { /* skip this control */ } - finally { semaphore.Release(); } - - return scenarios; - } - - /// - /// Fetch and parse a new-format SampleDefinition .txt bundle. Splits it into the - /// "--- header" / "--- xaml" / "--- c#" sections and returns cleaned xaml/c# ready for - /// truncation. A XAML $(...) token is resolved by position in - /// (value-position attribute dropped so the property falls back to its own default, - /// content-position commented), never flattened to "...". A c# section containing $(...) - /// live-substitution tokens is dropped, because flattening them yields non-compileable code - /// (e.g. `new Vector3(..., ..., ...)`) — the same "no misleading C#" rule the inline - /// extractor already applied. - /// - private static async Task<(string header, string? xaml, string? csharp)> FetchSampleDefinition(string sampleDef, CancellationToken cancellationToken) - { - var url = SamplesBase + sampleDef.Replace('\\', '/'); - var content = await ControlsHttpHelper.TryGetStringCappedAsync(Http, url, cancellationToken); - if (content is null) return ("", null, null); - - var (header, rawXaml, rawCsharp) = SplitSampleSections(content); - - string? xaml = null; - if (!string.IsNullOrWhiteSpace(rawXaml)) - { - xaml = CleanGalleryContent(rawXaml.Trim()); - if (string.IsNullOrWhiteSpace(xaml)) xaml = null; - } - - string? csharp = null; - if (!string.IsNullOrWhiteSpace(rawCsharp) && !SampleSubstitutionPlaceholder.Contains(rawCsharp)) - { - csharp = CompressCSharp(CleanGalleryContent(rawCsharp.Trim())); - if (string.IsNullOrWhiteSpace(csharp)) csharp = null; - } - - return (header, xaml, csharp); - } - - /// Split a SampleDefinition .txt bundle into its header/xaml/c# sections on the - /// "--- name" marker lines. Any content before the first marker is ignored. - private static (string header, string? xaml, string? csharp) SplitSampleSections(string content) - { - string header = ""; - string? xaml = null, csharp = null; - string? current = null; - var sb = new System.Text.StringBuilder(); - - void Flush() - { - if (current == null) return; - var text = sb.ToString().Trim('\r', '\n'); - switch (current) - { - case "header": header = text.Trim(); break; - case "xaml": xaml = text; break; - case "c#": csharp = text; break; - } - sb.Clear(); - } - - foreach (var rawLine in content.Split('\n')) - { - var line = rawLine.TrimEnd('\r'); - var m = SampleSectionRegex().Match(line); - if (m.Success) - { - Flush(); - current = m.Groups[1].Value.ToLowerInvariant(); - continue; - } - if (current != null) sb.Append(rawLine).Append('\n'); - } - Flush(); - return (header, xaml, csharp); - } - - private const int MaxXamlChars = 2000; - private const int MaxCSharpChars = 2500; - - /// - /// Find all top-level <controls:ControlExample> blocks via stack-aware tag matching, - /// handling nested ScrollViewer/StackPanel inside ControlExample.Example. - /// - private static IEnumerable<(string headerText, string sampleDefinition, string block)> ExtractControlExampleBlocks(string xaml) - { - const string OpenTag = "' - int openTagEnd = xaml.IndexOf('>', afterPrefix); - if (openTagEnd < 0) yield break; - - // Self-closing? Skip. - if (xaml[openTagEnd - 1] == '/') - { - searchStart = openTagEnd + 1; - continue; - } - - // Extract header text (legacy) + SampleDefinition (new format) from opening-tag attributes - string openingTag = xaml.Substring(openIdx, openTagEnd - openIdx + 1); - var headerMatch = ControlExampleHeaderRegex().Match(openingTag); - string headerText = headerMatch.Success ? headerMatch.Groups[1].Value : ""; - var defMatch = SampleDefinitionRegex().Match(openingTag); - string sampleDefinition = defMatch.Success ? defMatch.Groups[1].Value : ""; - - // Walk forward, balancing tags - int depth = 1; - int pos = openTagEnd + 1; - int blockEnd = -1; - while (pos < xaml.Length) - { - int nextOpen = xaml.IndexOf(OpenTag, pos, StringComparison.OrdinalIgnoreCase); - int nextClose = xaml.IndexOf(CloseTag, pos, StringComparison.OrdinalIgnoreCase); - if (nextClose < 0) break; - if (nextOpen >= 0 && nextOpen < nextClose) - { - int after = nextOpen + OpenTag.Length; - // Skip ControlExample.Xaml/.CSharp/.Example sub-properties (they don't open a new block) - if (after < xaml.Length && xaml[after] != '.' && !char.IsLetterOrDigit(xaml[after])) - { - int gt = xaml.IndexOf('>', after); - if (gt > 0 && xaml[gt - 1] != '/') depth++; - pos = gt > 0 ? gt + 1 : nextOpen + OpenTag.Length; - continue; - } - pos = after; - } - else - { - depth--; - if (depth == 0) - { - blockEnd = nextClose + CloseTag.Length; - break; - } - pos = nextClose + CloseTag.Length; - } - } - - if (blockEnd < 0) yield break; - yield return (headerText, sampleDefinition, xaml.Substring(openIdx, blockEnd - openIdx)); - searchStart = blockEnd; - } - } - - /// Pull a usable header from the first XML comment in a sample's XAML. - /// Collapses whitespace, strips trailing punctuation, truncates at sentence boundary. - /// Returns "" when no comment is found or the comment is too short to be a real header. - private static string DeriveHeaderFromComment(string xaml) - { - var m = FirstXmlCommentRegex().Match(xaml); - if (!m.Success) return ""; - - var raw = m.Groups[1].Value; - // Collapse all whitespace runs (newlines, tabs, multi-space) to single space. - var collapsed = Regex.Replace(raw, @"\s+", " ").Trim(); - if (collapsed.Length < 4) return ""; - - // Strip stray decoration sometimes used as section dividers (****, ====, ----) - collapsed = collapsed.Trim('*', '=', '-', ' '); - if (collapsed.Length < 4) return ""; - - // Prefer the first sentence so very long explanatory comments stay short. - const int MaxHeaderLen = 120; - int firstStop = collapsed.IndexOfAny(new[] { '.', '!', '?', '\n' }); - if (firstStop > 0 && firstStop < MaxHeaderLen) collapsed = collapsed.Substring(0, firstStop); - if (collapsed.Length > MaxHeaderLen) collapsed = collapsed.Substring(0, MaxHeaderLen).TrimEnd() + "…"; - - return collapsed.Trim(); - } - - private static string? ExtractInlineCode(string block, string tagName) - { - var pattern = $@"\s*]*>([\s\S]*?)\s*"; - var match = Regex.Match(block, pattern, RegexOptions.IgnoreCase); - if (!match.Success) return null; - - var code = UnescapeXml(match.Groups[1].Value).Trim(); - if (tagName == "CSharp" && SampleSubstitutionPlaceholder.Contains(code)) - { - // C# inline templates with $(VarName) substitutions are bound to live UI - // controls. Replacing with "..." produces literals like `Title = "..."` - // and `Resize(new SizeInt32(..., ...))` that mislead agents into compiling - // them. The code-behind extractor is the right path for C#; if it failed - // (no .xaml.cs or no event/x:Bind/x:Name seeds), surface no csharp at all. - return null; - } - // A XAML token is deliberately NOT flattened here: CleanGalleryContent resolves each - // one by the position it occupies (value-position attribute dropped, content-position - // commented), which keeps the markup pasteable. Flattening to "..." first would - // pre-empt that and bake in a non-compiling `Prop="..."`. - code = CleanGalleryContent(code); - return string.IsNullOrWhiteSpace(code) ? null : code; - } - - /// Strip Gallery-internal namespaces/types and demo-only layout attributes so the - /// snippet pastes into a user's app. Internal for direct testing, mirroring - /// . - internal static string CleanGalleryContent(string code) - { - code = SampleMediaRegex().Replace(code, "ms-appx:///Assets/YourImage.png"); - code = GalleryClassRegex().Replace(code, @"x:Class=""YourApp.YourPage"""); - code = SamplePageTypeRegex().Replace(code, "typeof(YourPage)"); - code = SamplePageNameRegex().Replace(code, "YourPage"); - code = Regex.Replace(code, @"using WinUIGallery[^;\n]*;?", "// adapt namespace to your app"); - code = Regex.Replace(code, @"using AppUIBasics[^;\n]*;?", "// adapt namespace to your app"); - code = Regex.Replace(code, @"namespace WinUIGallery[^{;\n]*;?", "namespace YourApp;"); - code = Regex.Replace(code, @"namespace AppUIBasics[^{;\n]*;?", "namespace YourApp;"); - code = Regex.Replace(code, @".*NavigationHelper.*\n?", ""); - - // Demo `Loaded="X_Loaded"` handlers must go before the line filter below: unlike - // the fixed sizes and negative margins, this one usually sits INLINE inside a tag - // (""), where the filter's - // markup guard would keep it. The Gallery's code-behind extractor never surfaces - // the *_Loaded method, so leaving the attribute emits XAML referencing a handler - // the snippet doesn't define — which fails to compile when pasted. Consuming the - // leading whitespace also removes the line break when it does sit on its own line. - code = Regex.Replace(code, @"\s+Loaded=""[^""]*_Loaded""", ""); - - // Clean demo-specific layout attributes (fixed sizes, negative margins). - // Only drop an attribute that sits on its OWN continuation line (no '<' or '>'), so we - // never delete a line that also carries the tag's closing '>' or other markup — which - // would corrupt multi-line open tags in the new SampleDefinition format - // (e.g. `Width="300" Margin="12" Height="68">`). - var lines = code.Split('\n').Where(line => - { - var trimmed = line.Trim(); - if (trimmed.IndexOf('<') >= 0 || trimmed.IndexOf('>') >= 0) return true; - if (Regex.IsMatch(trimmed, @"^(Min|Max)?(Height|Width)=""\d")) return false; - if (Regex.IsMatch(trimmed, @"^Margin=""-")) return false; - if (Regex.IsMatch(trimmed, @"^SelectedIndex=""\d+""")) return false; - return true; - }); - code = string.Join('\n', lines); - - // Clean substitution placeholders. The two known-value rewrites run first: they give an - // attribute its intended value, and the position-aware pass below would otherwise drop the - // attribute outright — an InfoBar that loses IsOpen defaults to collapsed and the sample - // renders as nothing. NormalizeMarkupSubstitutions then handles every remaining token by - // position; see its summary. The final flattening is a safety net for a token in some - // position the pass does not model, and should normally find nothing left to do. - code = Regex.Replace(code, @"IsOpen=""(\$\(IsOpen\)|\.\.\.?)""", @"IsOpen=""True"""); - code = Regex.Replace(code, @"Severity=""(\$\(Severity\)|\.\.\.?)""", @"Severity=""Informational"""); - code = NormalizeMarkupSubstitutions(code); - code = SampleSubstitutionPlaceholder.ReplaceAll(code, "..."); - - code = Regex.Replace(code, @"\n\s*\n\s*\n", "\n\n"); - return code.Trim(); - } - - /// - /// Normalizes the $(Name) substitution tokens the Gallery expands at runtime, by the - /// position they occupy. Both cases below break if they are flattened to "..." the way - /// a value-position token is: - /// - /// Attribute position — a bare token in an element's attribute list, - /// e.g. <Button Content="Go" Click="Button_Click" $(IsEnabled)/>. It stands in for - /// a whole attribute, so it is removed. Flattening yields Click="Button_Click" .../>, - /// which is not well-formed, so discards the - /// snippet and the control serves a fetchable result with no code in it at all. That hit - /// Button, ToggleButton, RepeatButton, HyperlinkButton, ProgressRing, CommandBar, AnimatedIcon, - /// PersonPicture and EasingFunction. - /// Element content — a token between elements, e.g. - /// </AppBarButton>$(MultipleButtonsSecondaryCommands). Every one upstream ships - /// injects markup (extra items, a Layout, a DataTemplate) into a property element, never text, - /// so it becomes a comment. Flattening stays well-formed but assigns the literal string "..." - /// as a collection's content, which does not compile when pasted. - /// - /// A token inside an attribute value (Value="$(DeterminateProgressValue)") removes the - /// whole attribute, so the property falls back to its own default. Flattening that one to - /// Value="..." keeps the markup well-formed but does not compile: most of the - /// properties these tokens sit on are typed, and "..." is not a double, an enum member - /// or a bool. A bake of the Gallery corpus carried 156 such attributes — StrokeThickness, - /// Height, Width, Orientation, SelectionMode, PaneDisplayMode and friends — every one of them - /// a compile error on paste. - /// - internal static string NormalizeMarkupSubstitutions(string code) - { - if (!SampleSubstitutionPlaceholder.Contains(code)) return code; - - var sb = new StringBuilder(code.Length); - var inTag = false; - var quote = '\0'; - - for (var i = 0; i < code.Length; i++) - { - var c = code[i]; - - if (quote != '\0') - { - if (c == quote) quote = '\0'; - sb.Append(c); - continue; - } - - // Copy comments verbatim: a '>' inside one would otherwise desynchronize the - // in-tag state and misclassify every token that follows. - if (c == '<' && string.CompareOrdinal(code, i, "", i + 4, StringComparison.Ordinal); - if (end < 0) end = code.Length - 3; - sb.Append(code, i, end + 3 - i); - i = end + 2; - continue; - } - - if (inTag && (c == '"' || c == '\'')) - { - // Value position. Look at the whole value before committing to it: a token - // anywhere inside means the attribute cannot be salvaged, so the attribute goes - // rather than the token, exactly as in attribute position below. - var valueEnd = code.IndexOf(c, i + 1); - if (valueEnd > 0 && SampleSubstitutionPlaceholder.Contains(code[(i + 1)..valueEnd])) - { - RemoveTrailingAttributeName(sb); - i = valueEnd; - continue; - } - - quote = c; - sb.Append(c); - continue; - } - if (c == '<') { inTag = true; sb.Append(c); continue; } - if (c == '>') { inTag = false; sb.Append(c); continue; } - - if (SampleSubstitutionPlaceholder.TryMatchAt(code, i, out var tokenLength)) - { - i += tokenLength - 1; - if (inTag) - { - // Drop the whitespace that separated the token from the previous - // attribute too, so the tag doesn't keep a dangling gap before "/>". - while (sb.Length > 0 && char.IsWhiteSpace(sb[^1])) sb.Length--; - } - else - { - sb.Append(""); - } - - continue; - } - - sb.Append(c); - } - - return sb.ToString(); - } - - /// - /// Rewinds over the Name= just written, and the whitespace in - /// front of it, so the caller can drop an attribute whose value it has decided not to keep. - /// Taking the whitespace from the front is what keeps the tag tidy: an attribute written on - /// its own line takes that line with it, and the last attribute in a tag does not strand the - /// closing />. - /// - private static void RemoveTrailingAttributeName(StringBuilder sb) - { - var cut = sb.Length; - - while (cut > 0 && char.IsWhiteSpace(sb[cut - 1])) cut--; - if (cut > 0 && sb[cut - 1] == '=') cut--; - while (cut > 0 && char.IsWhiteSpace(sb[cut - 1])) cut--; - while (cut > 0 && IsAttributeNameChar(sb[cut - 1])) cut--; - while (cut > 0 && char.IsWhiteSpace(sb[cut - 1])) cut--; - - sb.Length = cut; - } - - private static bool IsAttributeNameChar(char c) - => char.IsLetterOrDigit(c) || c == '.' || c == ':' || c == '_' || c == '-'; - - private static string UnescapeXml(string s) - { - return s.Replace("<", "<") - .Replace(">", ">") - .Replace("&", "&") - .Replace(""", "\"") - .Replace("'", "'") - .Replace(" ", "\n") - .Replace(" ", "\r"); - } - - /// Tighten whitespace, drop license header + Gallery-internal helper lines. - private static string CompressCSharp(string code) - { - // Strip Gallery's UIHelper.* accessibility helper calls (not portable, agent doesn't have it). - code = Regex.Replace(code, @"^\s*UIHelper\.[^;]+;.*\n?", "", RegexOptions.Multiline); - - // Drop a leading "// C# code-behind" / "// C# Code" label line that some upstream - // SampleDefinition bundles put at the top of their --- c# section (pure noise; the - // real class/method code follows). Only the leading marker is removed, not inline - // explanatory comments that document the sample. - code = Regex.Replace(code, @"^\s*//\s*C#\s*(code-behind|code)\s*\r?\n", "", RegexOptions.IgnoreCase); - - // Strip #region / #endregion preprocessor directives — they're noise and - // can produce CS1038 errors when truncation cuts off the matching half. - code = Regex.Replace(code, @"^\s*#(?:region|endregion)\b.*\n?", "", RegexOptions.Multiline); - - // Drop "// Copyright (c) Microsoft..." + "// Licensed under..." header pair. - if (code.StartsWith("// Copyright")) - { - int nl1 = code.IndexOf('\n'); - if (nl1 > 0) - { - int nl2 = code.IndexOf('\n', nl1 + 1); - if (nl2 > 0 && code.Substring(nl1 + 1, nl2 - nl1 - 1).TrimStart().StartsWith("// Licensed")) - code = code.Substring(nl2 + 1).TrimStart(); - } - } - - // De-indent: turn 4-space indents into 2-space (saves ~12% per line). - code = Regex.Replace(code, @"(?m)^( {4})+", m => new string(' ', m.Length / 2)); - - // Collapse 3+ consecutive newlines into 2. - code = Regex.Replace(code, @"\n[\t ]*\n[\t ]*\n+", "\n\n"); - return code.Trim(); - } -} diff --git a/src/winapp-CLI/WinApp.Cli/Services/Controls/GalleryProvider.cs b/src/winapp-CLI/WinApp.Cli/Services/Controls/GalleryProvider.cs index 1167d873c..e310803e7 100644 --- a/src/winapp-CLI/WinApp.Cli/Services/Controls/GalleryProvider.cs +++ b/src/winapp-CLI/WinApp.Cli/Services/Controls/GalleryProvider.cs @@ -3,23 +3,187 @@ namespace WinApp.Cli.Services.Controls; +using System.Text.RegularExpressions; + /// -/// WinUI 3 Gallery scenarios (microsoft/WinUI-Gallery). Parse logic lives -/// in ; this type just wires it into the provider -/// model. Gallery contributes no author keywords. +/// WinUI 3 Gallery scenarios (microsoft/WinUI-Gallery), read from the sample index +/// that repository publishes and validates on every PR. Downloading and mapping it is +/// 's job; what remains here is the one thing the index +/// does not supply — Gallery's search enrichment tags. +/// +/// Those tags are not cosmetic. builds a control's BM25 +/// document from its name, id, curated keywords (weight 5.0), enrichment tags (3.0) and +/// scenario headers (0.8) — a control's prose description is never indexed. So for a query +/// expressing intent rather than a control name ("reusable style definitions"), the +/// enrichment tags are the only field that can match, and a control without them is +/// reachable only by naming it. +/// +/// The index's own keywords can't fill that role: Gallery populates them from +/// a control's base classes (Object, DependencyObject, UIElement), +/// which describe the type hierarchy rather than what the control is for, and which every +/// control shares — indexing them would make "control" or "element" match the whole +/// catalog. The intent-bearing tags are therefore derived here, from the control name and +/// description, exactly as they were when this data came from ControlInfoData.json +/// via a scraper. The index's separate curatedKeywords are hand-written intent +/// phrases ("tab control", "notification dot") and are carried through as the weight-5.0 +/// curated keyword field, which the scraper had no way to populate. /// -internal sealed class GalleryProvider : CachedProviderBase +internal sealed partial class GalleryProvider : CachedProviderBase { public GalleryProvider(string cacheRoot) : base(cacheRoot) { } public override string Id => "gallery"; public override string DisplayName => "Gallery (WinUI 3)"; + /// Cap on derived tags per control. Beyond roughly a dozen terms the marginal + /// term is noise that dilutes BM25 scoring rather than adding recall. + private const int MaxDerivedTags = 12; + protected override async Task FetchAsync(CancellationToken cancellationToken) { - var (scenarios, tags) = await GalleryFetcher.FetchAsync(cancellationToken); + var (scenarios, _, curatedKeywords) = await SampleIndexFetcher + .FetchAsync(SampleIndexFetcher.GalleryIndexUrl, Id, cancellationToken) + .ConfigureAwait(false); + + foreach (var scenario in scenarios) + { + NormalizeForPaste(scenario); + } + return scenarios.Length > 0 - ? new ProviderData(scenarios, tags, new()) + ? new ProviderData(scenarios, BuildEnrichmentTags(scenarios), curatedKeywords) : ProviderData.Empty; } + + /// Gallery's own page class declaration, e.g. + /// x:Class="WinUIGallery.ControlPages.ButtonPage". + [GeneratedRegex(@"x:Class=""(?:WinUIGallery|AppUIBasics)\.[^""]+""")] + private static partial Regex GalleryClassRegex(); + + /// Gallery's per-scenario navigation targets (SamplePage, SamplePage1, …), + /// which exist only inside the Gallery app. Anchored at the start of an identifier but not the + /// end: SamplePage2Item is Gallery-only too, while prose naming a Gallery source file + /// (TabViewWindowingSamplePage.xaml) is left alone. + [GeneratedRegex(@"\bSamplePage\d*")] + private static partial Regex SamplePageNameRegex(); + + /// A namespace declaration putting the sample in Gallery's own namespace. + [GeneratedRegex(@"namespace\s+(?:WinUIGallery|AppUIBasics)[^{;\n]*;?")] + private static partial Regex GalleryNamespaceRegex(); + + /// A using of Gallery's own namespace. + [GeneratedRegex(@"using\s+(?:WinUIGallery|AppUIBasics)[^;\n]*;?")] + private static partial Regex GalleryUsingRegex(); + + /// A statement calling UIHelper, Gallery's internal accessibility helper. + [GeneratedRegex(@"^[^\S\n]*UIHelper\.[^;]+;.*\n?", RegexOptions.Multiline)] + private static partial Regex UiHelperCallRegex(); + + /// + /// Make one index scenario pasteable. + /// + /// The index publishes Gallery's sample source verbatim, so a scenario still + /// refers to types that exist only inside the Gallery app — its page classes, its + /// SamplePageN navigation targets, its UIHelper accessibility helper — + /// and still wires XAML events to handlers whose implementations live in page + /// code-behind the index does not carry. Pasted into a user's app as-is, those + /// snippets do not compile, which defeats the point of serving them. + /// + /// runs the same normalization over its own source; + /// this is Gallery's half of it. + /// + private static void NormalizeForPaste(Scenario scenario) + { + if (!string.IsNullOrEmpty(scenario.CSharp)) + { + var csharp = UiHelperCallRegex().Replace(scenario.CSharp, ""); + csharp = GalleryUsingRegex().Replace(csharp, "// adapt namespace to your app"); + csharp = GalleryNamespaceRegex().Replace(csharp, "namespace YourApp;"); + csharp = SamplePageNameRegex().Replace(csharp, "YourPage"); + csharp = GalleryClassRegex().Replace(csharp, @"x:Class=""YourApp.YourPage"""); + scenario.CSharp = string.IsNullOrWhiteSpace(csharp) ? null : csharp.Trim(); + } + + if (!string.IsNullOrEmpty(scenario.Xaml)) + { + var xaml = GalleryClassRegex().Replace(scenario.Xaml, @"x:Class=""YourApp.YourPage"""); + xaml = SamplePageNameRegex().Replace(xaml, "YourPage"); + + // Strip handlers against the C# settled above, so an attribute survives only + // when the code we actually serve declares its method. This is deliberately + // narrower than a blanket rule: TabView really does supply TabView_Loaded, and + // that handler is kept. + scenario.Xaml = ControlSnippetText.StripUnbackedEventHandlers(xaml, scenario.CSharp); + } + } + + /// Word characters that make up a derived tag: three or more letters, so + /// articles and fragments don't become search terms. + [GeneratedRegex(@"[a-z]{3,}")] + private static partial Regex TagWordRegex(); + + /// Boundary between a lowercase and an uppercase letter, so "AutoSuggestBox" + /// also contributes "auto" and "suggest". + [GeneratedRegex(@"(?<=[a-z])(?=[A-Z])")] + private static partial Regex CamelCaseBoundaryRegex(); + + /// + /// Build the per-control enrichment tag dictionary: hand-curated terms where we have + /// them, otherwise terms derived from the control's own name and description. + /// + /// + /// Curated tags win outright rather than merging with derived ones. They exist because + /// the derived terms were judged insufficient for that control, so appending the + /// rejected terms back would reinstate what the curation set out to replace. + /// + private static Dictionary BuildEnrichmentTags(Scenario[] scenarios) + { + var curated = DataLoader.LoadGalleryTags(); + var tags = new Dictionary(StringComparer.OrdinalIgnoreCase); + + foreach (var scenario in scenarios) + { + var controlId = scenario.ControlId; + if (string.IsNullOrEmpty(controlId) || tags.ContainsKey(controlId)) continue; + + tags[controlId] = curated.TryGetValue(controlId, out var manual) + ? StopWords.FilterTagList(manual) + : DeriveTags(controlId, scenario); + } + + // Curated entries for controls the index doesn't carry still belong in the + // dictionary: they cost nothing when the control is absent, and they keep a + // control searchable through a release where upstream temporarily drops it. + foreach (var (controlId, manual) in curated) + { + if (!tags.ContainsKey(controlId)) tags[controlId] = StopWords.FilterTagList(manual); + } + + return tags; + } + + /// + /// Derive intent tags for one control from the text the index already carries: its + /// display name, its one-line summary, and its longer description. This is the same + /// source text ("Title Subtitle Description") the scraper read straight out of + /// ControlInfoData.json, so the derived vocabulary is unchanged by the move to + /// the index. + /// + private static string[] DeriveTags(string controlId, Scenario scenario) + { + var text = $"{scenario.ControlName} {scenario.ControlDescription} {scenario.Description}"; + text = CamelCaseBoundaryRegex().Replace(text, " "); + + var tags = new List { controlId }; + var seen = new HashSet(StringComparer.OrdinalIgnoreCase) { controlId }; + + foreach (Match m in TagWordRegex().Matches(text.ToLowerInvariant())) + { + if (StopWords.IsTagNoise(m.Value)) continue; + if (seen.Add(m.Value)) tags.Add(m.Value); + if (tags.Count >= MaxDerivedTags) break; + } + + return [.. tags]; + } } diff --git a/src/winapp-CLI/WinApp.Cli/Services/Controls/ReactorFetcher.cs b/src/winapp-CLI/WinApp.Cli/Services/Controls/ReactorFetcher.cs index 501af1202..8288277bb 100644 --- a/src/winapp-CLI/WinApp.Cli/Services/Controls/ReactorFetcher.cs +++ b/src/winapp-CLI/WinApp.Cli/Services/Controls/ReactorFetcher.cs @@ -3,8 +3,6 @@ namespace WinApp.Cli.Services.Controls; -using System.Net.Http; - /// /// microsoft-ui-reactor ReactorGallery scenarios. Reads the purpose-built /// reactor-search-index.json (a schema the Reactor team owns) and maps it @@ -32,24 +30,15 @@ internal static class ReactorFetcher /// a source can't label its samples as another's. private const string SourceId = "reactor"; - private const string IndexUrl = - "https://raw.githubusercontent.com/microsoft/microsoft-ui-reactor/main/samples/ReactorGallery/reactor-search-index.json"; - - private static readonly HttpClient Http = new() - { - DefaultRequestHeaders = { { "User-Agent", "winapp-find-ui/1.0" } }, - Timeout = TimeSpan.FromSeconds(30) - }; - /// Fetch fresh scenarios + tags from GitHub. Reactor C# and curated - /// keywords are kept verbatim. The body is streamed through the shared - /// byte-capped helper so an accidentally-huge upstream file can't exhaust - /// memory. + /// keywords are kept verbatim. internal static async Task<(Scenario[] scenarios, Dictionary tags)> FetchAsync( CancellationToken cancellationToken = default) { - var json = await ControlsHttpHelper.GetStringCappedAsync(Http, IndexUrl, cancellationToken).ConfigureAwait(false); - return Parse(json); + var (scenarios, tags, _) = await SampleIndexFetcher + .FetchAsync(SampleIndexFetcher.ReactorIndexUrl, SourceId, cancellationToken) + .ConfigureAwait(false); + return (scenarios, tags); } /// Map the reactor-search-index.json document to @@ -60,7 +49,7 @@ internal static class ReactorFetcher /// generalized FROM this file, so Reactor's published index is what proves the shared /// reader works against real upstream data — and every source that publishes an index /// under #703 gets a - /// fetcher this size instead of a scraper. + /// fetcher this size instead of a scraper. WinUI-Gallery is the second such source. /// /// Reactor publishes no curatedKeywords, so that slot is empty here and the /// tuple stays two-wide, exactly as ReactorProvider already expects. Its diff --git a/src/winapp-CLI/WinApp.Cli/Services/Controls/SampleIndexFetcher.cs b/src/winapp-CLI/WinApp.Cli/Services/Controls/SampleIndexFetcher.cs new file mode 100644 index 000000000..989195556 --- /dev/null +++ b/src/winapp-CLI/WinApp.Cli/Services/Controls/SampleIndexFetcher.cs @@ -0,0 +1,55 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +namespace WinApp.Cli.Services.Controls; + +using System.Net.Http; + +/// +/// Downloads a published sample index and maps it onto the internal +/// model. One HTTP request per source, whatever the size of the +/// corpus behind it — contrast a scraper, which reconstructs the same data from +/// repository layout and pays a request per control page and per snippet file. +/// +/// This is the whole client for a source that publishes an index under +/// #703. The document +/// shape is docs/winui-sample-index.schema.json and the mapping lives in +/// , so a new source needs a URL and a source id and +/// nothing else. +/// +internal static class SampleIndexFetcher +{ + /// WinUI 3 Gallery, generated by its tools/CatalogExporter and validated + /// against our published contract on every one of their PRs. + public const string GalleryIndexUrl = + "https://raw.githubusercontent.com/microsoft/WinUI-Gallery/main/catalog/windows-samples.json"; + + /// microsoft-ui-reactor ReactorGallery. The first source to publish an index, + /// and the file the shared contract was generalized from. + public const string ReactorIndexUrl = + "https://raw.githubusercontent.com/microsoft/microsoft-ui-reactor/main/samples/ReactorGallery/reactor-search-index.json"; + + private static readonly HttpClient Http = new() + { + DefaultRequestHeaders = { { "User-Agent", "winapp-find-ui/1.0" } }, + Timeout = TimeSpan.FromSeconds(30) + }; + + /// + /// Fetch and parse it, stamping + /// onto every scenario. The body is streamed through the shared byte-capped helper so an + /// accidentally-huge upstream file can't exhaust memory. + /// + /// + /// tags feeds ProviderData.Tags (search weight 3.0) and + /// curatedKeywords feeds ProviderData.Keywords (weight 5.0). + /// + internal static async Task<(Scenario[] scenarios, Dictionary tags, Dictionary curatedKeywords)> FetchAsync( + string indexUrl, + string sourceId, + CancellationToken cancellationToken = default) + { + var json = await ControlsHttpHelper.GetStringCappedAsync(Http, indexUrl, cancellationToken).ConfigureAwait(false); + return SampleIndexParser.Parse(json, sourceId); + } +} diff --git a/src/winapp-CLI/WinApp.Cli/Services/Controls/SearchEngine.cs b/src/winapp-CLI/WinApp.Cli/Services/Controls/SearchEngine.cs index 25614a09c..ed6bb4946 100644 --- a/src/winapp-CLI/WinApp.Cli/Services/Controls/SearchEngine.cs +++ b/src/winapp-CLI/WinApp.Cli/Services/Controls/SearchEngine.cs @@ -783,33 +783,39 @@ private static string FormatScenario(Scenario s) }; sb.AppendLine($"## {ControlHeader(s.ControlName, s.HeaderText)}{sourceTag}"); - // Toolkit-specific prerequisites — single compact line - if (s.Source == "toolkit" && (!string.IsNullOrEmpty(s.NuGetPackage) || s.XmlnsImports.Length > 0)) - { - var parts = new List(1 + s.XmlnsImports.Length); - if (!string.IsNullOrEmpty(s.NuGetPackage)) - parts.Add($"NuGet `{s.NuGetPackage}`"); - foreach (var ns in s.XmlnsImports) - parts.Add($"`{ns}`"); - sb.AppendLine($"**Setup:** {string.Join(" · ", parts)}"); - } // Reactor: surface the (uniform) NuGet package. Any control-level `using` // directives are already folded into the C# snippet, and the shared // Microsoft.UI.Reactor api namespace is deliberately NOT emitted as a // **Namespace:** line — all reactor controls share it, so it'd be pure noise. - else if (s.Source == "reactor") + if (s.Source == "reactor") { if (!string.IsNullOrEmpty(s.NuGetPackage)) sb.AppendLine($"**Setup:** NuGet `{s.NuGetPackage}`"); } - // Gallery non-default namespace hint — agents miss `using Microsoft.Windows.Notifications` - // and similar long-tail imports. Skip the dominant Microsoft.UI.Xaml.Controls (auto-imported - // in default templates) so 79/107 controls stay quiet. - else if (s.Source == "gallery" - && !string.IsNullOrEmpty(s.ApiNamespace) - && s.ApiNamespace != "Microsoft.UI.Xaml.Controls") + else { - sb.AppendLine($"**Namespace:** `{s.ApiNamespace}`"); + // Prerequisites — single compact line. Gallery samples carry xmlns imports + // too, and withholding them leaves markup using an undeclared prefix. + if (!string.IsNullOrEmpty(s.NuGetPackage) || s.XmlnsImports.Length > 0) + { + var parts = new List(1 + s.XmlnsImports.Length); + if (!string.IsNullOrEmpty(s.NuGetPackage)) + parts.Add($"NuGet `{s.NuGetPackage}`"); + foreach (var ns in s.XmlnsImports) + parts.Add($"`{ns}`"); + sb.AppendLine($"**Setup:** {string.Join(" · ", parts)}"); + } + + // Gallery non-default namespace hint — agents miss `using Microsoft.Windows.Notifications` + // and similar long-tail imports. Skip the dominant Microsoft.UI.Xaml.Controls (auto-imported + // in default templates) so 79/107 controls stay quiet. This is independent of the Setup + // line above: a sample can need both an xmlns declaration and a C# using. + if (s.Source == "gallery" + && !string.IsNullOrEmpty(s.ApiNamespace) + && s.ApiNamespace != "Microsoft.UI.Xaml.Controls") + { + sb.AppendLine($"**Namespace:** `{s.ApiNamespace}`"); + } } if (s.Xaml != null) From 2cbcfa865c84307b157c995eb36e6b5f30740bc8 Mon Sep 17 00:00:00 2001 From: Jaylyn Barbee <51131738+Jaylyn-Barbee@users.noreply.github.com> Date: Tue, 22 Sep 2026 10:53:16 -0400 Subject: [PATCH 2/2] fix(find-ui): strip Gallery-private namespaces and package assets Address two review findings on the sample-index port. The index publishes Gallery's source verbatim, and NormalizeForPaste only covered part of what that carries: - 20 scenarios still named a Gallery CLR namespace. 16 of them in the index's xmlnsImports field, which SearchEngine renders as the "Setup:" line -- so we printed `xmlns:local="using:WinUIGallery.ControlPages"` as an instruction to declare a prefix that cannot resolve. tabview-2 was inconsistent with itself: the type was already rewritten to , but the prefix it used still mapped to WinUIGallery.SamplePages. - 41 scenarios pointed at assets that exist only in Gallery's package -- 32 under Assets/SampleMedia, 9 under Assets/Tiles. Those compile and then render nothing: a silently blank Image, an AppWindow.SetIcon that quietly does not take. The scraper rewrote SampleMedia (one URI form of three, so 17 of the 32); dropping it was a regression, and Tiles was never covered at all. Rewrites are environment only -- identifiers and paths that resolve against Gallery's own assembly and package. The sample still teaches what upstream wrote. Asset rewrites preserve the URI form, because AppWindow.SetIcon takes a package-relative path rather than a ms-appx URI, and preserve the extension, because a MediaPlayerElement pointed at a .png is a different kind of broken. Guards: the corpus check now covers xmlnsImports and Gallery-only asset paths, and GalleryProviderNormalizeTests pins the transform hermetically -- a corpus guard alone passes vacuously the day upstream stops shipping the thing being rewritten. Cache version 24 is unreleased, so its history entry is amended rather than superseded. Corpus re-baked. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 883032eb-8c56-4340-b3d7-4c38bb1916b8 --- .../WinApp.Cli.Tests/EmbeddedSnapshotTests.cs | 52 +++++- .../GalleryProviderNormalizeTests.cs | 148 ++++++++++++++++++ .../Services/Controls/CacheVersion.cs | 7 +- .../Controls/Data/snapshot-gallery.json.br | Bin 74080 -> 73854 bytes .../Controls/Data/snapshot-manifest.json | 2 +- .../Services/Controls/GalleryProvider.cs | 75 ++++++++- 6 files changed, 269 insertions(+), 15 deletions(-) create mode 100644 src/winapp-CLI/WinApp.Cli.Tests/GalleryProviderNormalizeTests.cs diff --git a/src/winapp-CLI/WinApp.Cli.Tests/EmbeddedSnapshotTests.cs b/src/winapp-CLI/WinApp.Cli.Tests/EmbeddedSnapshotTests.cs index 3a431e558..d6da7424e 100644 --- a/src/winapp-CLI/WinApp.Cli.Tests/EmbeddedSnapshotTests.cs +++ b/src/winapp-CLI/WinApp.Cli.Tests/EmbeddedSnapshotTests.cs @@ -327,19 +327,34 @@ public void GalleryCorpus_ServesNoUnbackedEventHandler() [TestMethod] public void GalleryCorpus_ServesNoGalleryPrivateSymbol() { - // Gallery's own page classes, its SamplePage navigation targets and its UIHelper - // accessibility helper exist only inside the Gallery app. A sample that still names - // one compiles only if the user happens to have Gallery's source, so GalleryProvider - // rewrites them to obvious placeholders before baking. These match identifiers, not - // prose: a sample may legitimately mention a Gallery source file by name. + // Gallery's own page classes, its SamplePage navigation targets, its UIHelper + // accessibility helper and its CLR namespaces exist only inside the Gallery app. A + // sample that still names one compiles only if the user happens to have Gallery's + // source, so GalleryProvider rewrites them to obvious placeholders before baking. + // These match identifiers, not prose: a sample may legitimately mention a Gallery + // source file by name, and a "using:" or trailing-dot anchor keeps a source URL + // (".../main/WinUIGallery/ButtonPage.xaml.cs") out of the match. var scenarios = ReadEmbeddedSnapshot("gallery")!.Scenarios; ScenarioSanitizer.SanitizeAll(scenarios); - string[] privateSymbols = [@"\bSamplePage\d*", @"\bUIHelper\.", "x:Class=\"WinUIGallery", @"namespace\s+WinUIGallery"]; + string[] privateSymbols = + [ + @"\bSamplePage\d*", + @"\bUIHelper\.", + "x:Class=\"WinUIGallery", + @"namespace\s+WinUIGallery", + @"using:(?:WinUIGallery|AppUIBasics)", + @"\b(?:WinUIGallery|AppUIBasics)\.", + ]; + // XmlnsImports is checked alongside the snippets because SearchEngine renders it as + // the "Setup:" line: a Gallery namespace there is an instruction to declare a prefix + // that cannot resolve, which the two snippet fields would never reveal. var leaked = scenarios .Where(s => privateSymbols.Any(sym => - Regex.IsMatch(s.Xaml ?? "", sym) || Regex.IsMatch(s.CSharp ?? "", sym))) + Regex.IsMatch(s.Xaml ?? "", sym) + || Regex.IsMatch(s.CSharp ?? "", sym) + || s.XmlnsImports.Any(import => Regex.IsMatch(import, sym)))) .Select(s => s.Id) .ToList(); @@ -347,6 +362,29 @@ public void GalleryCorpus_ServesNoGalleryPrivateSymbol() $"these Gallery samples still name a Gallery-internal symbol: {string.Join(", ", leaked.Take(10))}"); } + [TestMethod] + public void GalleryCorpus_ServesNoGalleryOnlyAsset() + { + // Gallery ships its sample photos and videos under Assets/SampleMedia and its own app + // icon and tile logos under Assets/Tiles, inside its package. A pasted sample naming + // one of those paths compiles and then renders nothing — an that is silently + // blank, an AppWindow.SetIcon that quietly does not take — so GalleryProvider rewrites + // them to a placeholder that fails visibly instead. Nothing else in this file notices: + // the counts pass and the XAML is well-formed either way. + var scenarios = ReadEmbeddedSnapshot("gallery")!.Scenarios; + ScenarioSanitizer.SanitizeAll(scenarios); + + var leaked = scenarios + .Where(s => Regex.IsMatch(s.Xaml ?? "", @"Assets/(?:SampleMedia|Tiles)/") + || Regex.IsMatch(s.CSharp ?? "", @"Assets/(?:SampleMedia|Tiles)/")) + .Select(s => s.Id) + .ToList(); + + Assert.AreEqual(0, leaked.Count, + $"these Gallery samples point at an asset that only exists in Gallery's own package: " + + $"{string.Join(", ", leaked.Take(10))}"); + } + // ------------------------------------------------------------------ // Load order: the snapshot is a floor, never a ceiling // ------------------------------------------------------------------ diff --git a/src/winapp-CLI/WinApp.Cli.Tests/GalleryProviderNormalizeTests.cs b/src/winapp-CLI/WinApp.Cli.Tests/GalleryProviderNormalizeTests.cs new file mode 100644 index 000000000..e6603bf19 --- /dev/null +++ b/src/winapp-CLI/WinApp.Cli.Tests/GalleryProviderNormalizeTests.cs @@ -0,0 +1,148 @@ +// Copyright (c) Microsoft Corporation and Contributors. All rights reserved. +// Licensed under the MIT License. + +using WinApp.Cli.Services.Controls; + +namespace WinApp.Cli.Tests; + +/// +/// Hermetic tests for — the pass that makes an +/// index sample pasteable by rewriting the things that resolve only inside the Gallery app. +/// +/// These exist alongside the corpus guards in EmbeddedSnapshotTests rather than instead +/// of them. A corpus guard proves the committed data is clean, but it reads whatever upstream +/// currently publishes: the day Gallery stops shipping a SampleMedia path, the guard +/// passes whether or not the rewrite still works. These pin the rule itself. +/// +[TestClass] +public class GalleryProviderNormalizeTests +{ + private static Scenario NewScenario(string? xaml = null, string? csharp = null, string[]? xmlns = null) => new() + { + Id = "gallery-test-1", + ControlId = "test", + ControlName = "Test", + HeaderText = "Test", + Source = "gallery", + Xaml = xaml, + CSharp = csharp, + XmlnsImports = xmlns ?? [], + }; + + // --- Gallery CLR namespaces --------------------------------------------------- + + [TestMethod] + public void XmlnsImport_PointingAtGalleryNamespace_BecomesYourApp() + { + // SearchEngine renders XmlnsImports as the "Setup:" line, so this is printed to the + // user as an instruction. "using:WinUIGallery.ControlPages" instructs them to declare + // a prefix for a namespace that does not exist in their app. + var s = NewScenario(xmlns: ["xmlns:local=\"using:WinUIGallery.ControlPages\""]); + + GalleryProvider.NormalizeForPaste(s); + + Assert.AreEqual("xmlns:local=\"using:YourApp\"", s.XmlnsImports[0]); + } + + [TestMethod] + public void XmlnsImport_KeepsPrefixName() + { + // Only the mapped namespace is a Gallery detail. The prefix is referenced by the + // markup we serve, so renaming it would break the snippet it belongs to. + var s = NewScenario( + xaml: "", + xmlns: ["xmlns:samplepages=\"using:WinUIGallery.SamplePages\""]); + + GalleryProvider.NormalizeForPaste(s); + + Assert.AreEqual("xmlns:samplepages=\"using:YourApp\"", s.XmlnsImports[0]); + StringAssert.Contains(s.Xaml!, ""); + } + + [TestMethod] + public void InlineXmlnsInXaml_PointingAtGalleryNamespace_BecomesYourApp() + { + var s = NewScenario(xaml: ""); + + GalleryProvider.NormalizeForPaste(s); + + StringAssert.Contains(s.Xaml!, "xmlns:cond=\"using:YourApp\""); + } + + [TestMethod] + public void QualifiedGalleryType_InCSharp_LosesTheGalleryRoot() + { + var s = NewScenario(csharp: "var x = WinUIGallery.ControlPages.CustomDataObject.GetDataObjects();"); + + GalleryProvider.NormalizeForPaste(s); + + StringAssert.Contains(s.CSharp!, "YourApp.ControlPages.CustomDataObject.GetDataObjects()"); + } + + [TestMethod] + public void SourceLinkNamingGalleryFolder_IsLeftAlone() + { + // The rewrite is anchored on the dot that starts a CLR qualifier, so a comment + // pointing at the sample's real source keeps working as a link. + const string link = "// https://github.com/microsoft/WinUI-Gallery/blob/main/WinUIGallery/ButtonPage.xaml.cs"; + var s = NewScenario(csharp: link); + + GalleryProvider.NormalizeForPaste(s); + + Assert.AreEqual(link, s.CSharp); + } + + // --- Gallery package assets --------------------------------------------------- + + [TestMethod] + [DataRow("", "ms-appx:///Assets/YourImage.jpg")] + [DataRow("", "/Assets/YourImage.jpg")] + [DataRow("", "/Assets/YourImage.ico")] + public void GalleryAssetPath_InXaml_BecomesPlaceholder_PreservingUriForm(string xaml, string expected) + { + // The three forms are not interchangeable, so the prefix is preserved rather than + // normalized to one of them. + var s = NewScenario(xaml: xaml); + + GalleryProvider.NormalizeForPaste(s); + + StringAssert.Contains(s.Xaml!, expected); + } + + [TestMethod] + public void PackageRelativeAssetPath_InCSharp_StaysPackageRelative() + { + // AppWindow.SetIcon takes a package-relative path, not a ms-appx URI: rewriting the + // form rather than just the file would turn a missing icon into a wrong API call. + var s = NewScenario(csharp: "AppWindow.SetIcon(\"Assets/Tiles/GalleryIcon.ico\");"); + + GalleryProvider.NormalizeForPaste(s); + + Assert.AreEqual("AppWindow.SetIcon(\"Assets/YourImage.ico\");", s.CSharp); + } + + [TestMethod] + public void NonImageAsset_KeepsItsExtension_AndReadsAsAnAsset() + { + // A MediaPlayerElement pointed at a .png is a different kind of broken than one + // pointed at a video the user has yet to add. + var s = NewScenario(xaml: ""); + + GalleryProvider.NormalizeForPaste(s); + + StringAssert.Contains(s.Xaml!, "/Assets/YourAsset.wmv"); + } + + [TestMethod] + public void UnrelatedAssetPath_IsLeftAlone() + { + // Only Gallery's own two package folders are rewritten. A sample naming an asset the + // user is expected to supply is describing their app, not Gallery's. + const string xaml = ""; + var s = NewScenario(xaml: xaml); + + GalleryProvider.NormalizeForPaste(s); + + Assert.AreEqual(xaml, s.Xaml); + } +} diff --git a/src/winapp-CLI/WinApp.Cli/Services/Controls/CacheVersion.cs b/src/winapp-CLI/WinApp.Cli/Services/Controls/CacheVersion.cs index b2e6303f4..6bede502d 100644 --- a/src/winapp-CLI/WinApp.Cli/Services/Controls/CacheVersion.cs +++ b/src/winapp-CLI/WinApp.Cli/Services/Controls/CacheVersion.cs @@ -103,7 +103,12 @@ namespace WinApp.Cli.Services.Controls; /// the old numbering against the new data. The index publishes Gallery's source /// verbatim, so GalleryProvider normalizes each sample for pasting the way the /// scraper used to — Gallery-private symbols rewritten, event handlers with no -/// implementation dropped — which is itself Rule 3. +/// implementation dropped — which is itself Rule 3. That pass also reaches two +/// places the scraper never did: the index's xmlnsImports field (rendered as the +/// "Setup:" line, so a "using:WinUIGallery.ControlPages" mapping was an +/// instruction to declare a prefix that cannot resolve) and Gallery's own package +/// assets under Assets/SampleMedia and Assets/Tiles, which rendered as a silently +/// blank Image or an AppWindow.SetIcon that quietly did nothing. /// /// Note: adding the embedded snapshot floor did NOT bump this. The cached payload's /// schema and extraction logic are unchanged, and a bump would have forced every diff --git a/src/winapp-CLI/WinApp.Cli/Services/Controls/Data/snapshot-gallery.json.br b/src/winapp-CLI/WinApp.Cli/Services/Controls/Data/snapshot-gallery.json.br index 594b21d14539ca198edb0f43824a5d4f59b21baa..a4804db9b615c720f52adaf77297a74b90056aae 100644 GIT binary patch literal 73854 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 literal 74080 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˯rjV32u})nSbs_`T>bL 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 KH FetchAsync(CancellationToken cancell [GeneratedRegex(@"^[^\S\n]*UIHelper\.[^;]+;.*\n?", RegexOptions.Multiline)] private static partial Regex UiHelperCallRegex(); + ///

A XAML namespace mapping pointed at one of Gallery's own CLR namespaces, e.g. + /// using:WinUIGallery.ControlPages. The sub-namespace is dropped rather than kept + /// under the placeholder root: the prefix exists so the markup can name types the user + /// must supply, and using:YourApp is the namespace the emitted C# declares. + [GeneratedRegex(@"using:(?:WinUIGallery|AppUIBasics)(?:\.[\w.]+)?")] + private static partial Regex GalleryXmlnsRegex(); + + /// A type named through its full Gallery namespace, e.g. + /// WinUIGallery.ControlPages.CustomDataObject. Only the root is rewritten: a regex + /// cannot tell which trailing segments are namespaces and which is the type, and replacing + /// the root is enough to stop the snippet claiming a name that resolves. Requires the dot, + /// so a source link like …/main/WinUIGallery/ButtonPage.xaml.cs is left alone. + [GeneratedRegex(@"\b(?:WinUIGallery|AppUIBasics)\.")] + private static partial Regex GalleryNamespaceRootRegex(); + + /// A package-relative path into one of Gallery's own asset folders. Gallery ships + /// Assets/SampleMedia (the sample photos and videos) and Assets/Tiles (its own + /// app icon and tile logos) inside its package, so a pasted sample naming one resolves to + /// nothing in the user's app. Captures the prefix so the form is preserved: the three that + /// occur upstream (ms-appx:///Assets/, /Assets/, Assets/) are not + /// interchangeable — AppWindow.SetIcon takes a package-relative path, not a URI. + [GeneratedRegex(@"((?:ms-appx:///)?/?Assets/)(?:SampleMedia|Tiles)/([^""'\s<>)]+)")] + private static partial Regex GalleryAssetRegex(); + + /// Extensions that make the placeholder an image rather than a generic asset. The + /// extension itself is always preserved: a MediaPlayerElement pointed at a .png is a + /// different kind of broken than one pointed at a file the user has yet to add. + private static readonly string[] ImageExtensions = + [".png", ".jpg", ".jpeg", ".gif", ".bmp", ".webp", ".ico"]; + + /// Rewrite every Gallery-only asset path to an obvious placeholder. The result is + /// equally absent from the user's app — that is the point: it fails visibly, where the + /// upstream path fails as a blank control with nothing to explain it. + private static string ReplaceGalleryAssets(string content) => + GalleryAssetRegex().Replace(content, static m => + { + var extension = Path.GetExtension(m.Groups[2].Value); + var name = ImageExtensions.Contains(extension, StringComparer.OrdinalIgnoreCase) + ? "YourImage" + : "YourAsset"; + return m.Groups[1].Value + name + extension; + }); + /// /// Make one index scenario pasteable. /// /// The index publishes Gallery's sample source verbatim, so a scenario still - /// refers to types that exist only inside the Gallery app — its page classes, its - /// SamplePageN navigation targets, its UIHelper accessibility helper — - /// and still wires XAML events to handlers whose implementations live in page - /// code-behind the index does not carry. Pasted into a user's app as-is, those - /// snippets do not compile, which defeats the point of serving them. + /// refers to things that exist only inside the Gallery app — its page classes, its + /// SamplePageN navigation targets, its UIHelper accessibility helper, its + /// CLR namespaces, the photos and icons in its package — and still wires XAML events to + /// handlers whose implementations live in page code-behind the index does not carry. + /// Pasted into a user's app as-is, those snippets do not compile, or compile and render + /// nothing, which defeats the point of serving them. + /// + /// What is rewritten here is environment, never substance: identifiers and paths + /// that resolve only against Gallery's own assembly and package. The sample still teaches + /// exactly what upstream wrote it to teach. /// /// runs the same normalization over its own source; /// this is Gallery's half of it. + /// + /// Internal for direct testing: the corpus guards in EmbeddedSnapshotTests + /// only prove the baked data is clean, which passes vacuously if upstream stops shipping + /// the thing being rewritten. /// - private static void NormalizeForPaste(Scenario scenario) + internal static void NormalizeForPaste(Scenario scenario) { if (!string.IsNullOrEmpty(scenario.CSharp)) { @@ -101,6 +153,8 @@ private static void NormalizeForPaste(Scenario scenario) csharp = GalleryNamespaceRegex().Replace(csharp, "namespace YourApp;"); csharp = SamplePageNameRegex().Replace(csharp, "YourPage"); csharp = GalleryClassRegex().Replace(csharp, @"x:Class=""YourApp.YourPage"""); + csharp = GalleryNamespaceRootRegex().Replace(csharp, "YourApp."); + csharp = ReplaceGalleryAssets(csharp); scenario.CSharp = string.IsNullOrWhiteSpace(csharp) ? null : csharp.Trim(); } @@ -108,6 +162,8 @@ private static void NormalizeForPaste(Scenario scenario) { var xaml = GalleryClassRegex().Replace(scenario.Xaml, @"x:Class=""YourApp.YourPage"""); xaml = SamplePageNameRegex().Replace(xaml, "YourPage"); + xaml = GalleryXmlnsRegex().Replace(xaml, "using:YourApp"); + xaml = ReplaceGalleryAssets(xaml); // Strip handlers against the C# settled above, so an attribute survives only // when the code we actually serve declares its method. This is deliberately @@ -115,6 +171,13 @@ private static void NormalizeForPaste(Scenario scenario) // that handler is kept. scenario.Xaml = ControlSnippetText.StripUnbackedEventHandlers(xaml, scenario.CSharp); } + + // Rendered as the "Setup:" line, so a Gallery namespace here is worse than one buried + // in the markup: it reads as an instruction to add a mapping that cannot resolve. + for (var i = 0; i < scenario.XmlnsImports.Length; i++) + { + scenario.XmlnsImports[i] = GalleryXmlnsRegex().Replace(scenario.XmlnsImports[i], "using:YourApp"); + } } /// Word characters that make up a derived tag: three or more letters, so