From 5c940f60b953360cab63a94919f5717057523055 Mon Sep 17 00:00:00 2001 From: Dave Skender <8432125+DaveSkender@users.noreply.github.com> Date: Wed, 24 Jan 2024 23:47:02 -0500 Subject: [PATCH 01/49] docs: Update code coverage badge (#1149) Signed-off-by: Dave Skender <8432125+DaveSkender@users.noreply.github.com> --- README.md | 1 - docs/contributing.md | 5 ++--- docs/pages/home.md | 10 ++-------- 3 files changed, 4 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 105f2b741..040354b33 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,6 @@ [![GitHub Stars](https://img.shields.io/github/stars/DaveSkender/Stock.Indicators?logo=github&label=Stars)](https://github.com/DaveSkender/Stock.Indicators) [![NuGet package](https://img.shields.io/nuget/v/skender.stock.indicators?color=blue&logo=NuGet&label=NuGet)](https://www.nuget.org/packages/Skender.Stock.Indicators) [![NuGet](https://img.shields.io/nuget/dt/skender.stock.indicators?logo=NuGet&label=Downloads)](https://www.nuget.org/packages/Skender.Stock.Indicators) -[![code coverage](https://img.shields.io/azure-devops/coverage/skender/stock.indicators/21/main?logo=AzureDevOps&label=Test%20Coverage)](https://dev.azure.com/skender/Stock.Indicators/_build/latest?definitionId=21&branchName=main&view=codecoverage-tab) # Stock Indicators for .NET diff --git a/docs/contributing.md b/docs/contributing.md index 020da61e1..4203b89b1 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -10,9 +10,8 @@ layout: page # Contributing guidelines -[![build status](https://img.shields.io/azure-devops/build/skender/5123ca47-74f2-4d67-a5d4-c4d90b8d670a/21/main?logo=AzureDevops&label=Build%20Status)](https://dev.azure.com/skender/Stock.Indicators/_build/latest?definitionId=21&branchName=main) -[![code coverage](https://img.shields.io/azure-devops/coverage/skender/stock.indicators/21/main?logo=AzureDevOps&label=Test%20Coverage&cacheSeconds=259200)](https://dev.azure.com/skender/Stock.Indicators/_build/latest?definitionId=21&branchName=main&view=codecoverage-tab) -[![Codacy Badge](https://app.codacy.com/project/badge/Grade/012497adc00847eca9ee91a58d00cc4f)](https://app.codacy.com/gh/DaveSkender/Stock.Indicators/dashboard) +[![Codacy quality grade](https://app.codacy.com/project/badge/Grade/012497adc00847eca9ee91a58d00cc4f)](https://app.codacy.com/gh/DaveSkender/Stock.Indicators/dashboard) +[![Codacy code coverage](https://app.codacy.com/project/badge/Coverage/012497adc00847eca9ee91a58d00cc4f)](https://app.codacy.com/gh/DaveSkender/Stock.Indicators/dashboard) **Thanks for taking the time to contribute!** diff --git a/docs/pages/home.md b/docs/pages/home.md index 05a07d48a..b326583ee 100644 --- a/docs/pages/home.md +++ b/docs/pages/home.md @@ -9,14 +9,8 @@ lazy-images: true ---
quotes = barSet - .Items - .Select(bar => new Quote - { - Date = bar.TimeUtc, - Open = bar.Open, - High = bar.High, - Low = bar.Low, - Close = bar.Close, - Volume = bar.Volume - }) - .OrderBy(x => x.Date); - - return quotes; - } -} diff --git a/tests/indicators/s-z/WilliamsR/WilliamsR.Tests.cs b/tests/indicators/s-z/WilliamsR/WilliamsR.Tests.cs index b18d96745..99f9455a1 100644 --- a/tests/indicators/s-z/WilliamsR/WilliamsR.Tests.cs +++ b/tests/indicators/s-z/WilliamsR/WilliamsR.Tests.cs @@ -113,18 +113,19 @@ public void Boundary() } [TestMethod] - public async Task Issue1127() + public void Issue1127() { // initialize - IEnumerablequotes = await FeedData - .GetQuotes("A", 365 * 3) - .ConfigureAwait(false); + IOrderedEnumerabletest1127 = File.ReadAllLines("s-z/WilliamsR/issue1127quotes.csv") + .Skip(1) + .Select(Importer.QuoteFromCsv) + .OrderByDescending(x => x.Date); - ListquotesList = quotes.ToList(); + ListquotesList = test1127.ToList(); int length = quotesList.Count; // get indicators - ListresultsList = quotes + List resultsList = test1127 .GetWilliamsR(14) .ToList(); diff --git a/tests/indicators/s-z/WilliamsR/issue1127quotes.csv b/tests/indicators/s-z/WilliamsR/issue1127quotes.csv new file mode 100644 index 000000000..c3c727ad9 --- /dev/null +++ b/tests/indicators/s-z/WilliamsR/issue1127quotes.csv @@ -0,0 +1,754 @@ +Date,Open,High,Low,Close,Volume +2021-01-29,121.21,121.685,119.28,120.17,2103083 +2021-02-01,120.69,122.09,120.18,120.83,1451881 +2021-02-02,122.5,125.85,122.415,123.19,1675502 +2021-02-03,123.5,124.6,121.9,122.15,1700277 +2021-02-04,122.51,124.34,121.6,124.07,1425831 +2021-02-05,124.51,125.96,123.11,123.18,2140283 +2021-02-08,123.92,125.74,122.57,123.41,2232492 +2021-02-09,123.41,123.49,122.36,123.24,2114615 +2021-02-10,124.59,125.74,123.88,125.08,1227115 +2021-02-11,125.7,127.26,125.11,126.96,1223356 +2021-02-12,126.93,128.6,126.32,127.98,1503762 +2021-02-16,129.31,131.08,127.845,127.95,2368676 +2021-02-17,132.8,136.98,129.59,130.12,4484304 +2021-02-18,129,130.39,127.58,127.68,2153590 +2021-02-19,128.41,128.895,126.49,126.87,1498804 +2021-02-22,125.95,126.16,123.09,123.5,1488662 +2021-02-23,123.5,123.51,120.41,122.42,2334395 +2021-02-24,122.26,125.41,122.01,125.02,2159922 +2021-02-25,124.81,125.25,121.93,122.1,1576903 +2021-02-26,122.93,123.5094,120.645,122.07,2345327 +2021-03-01,123.05,125.15,122.88,124.48,1660711 +2021-03-02,124.57,125.89,123.17,123.64,1488289 +2021-03-03,122.78,122.78,119.25,119.3,1780940 +2021-03-04,118.69,118.83,113.34,114.99,2909369 +2021-03-05,115.88,116.19,112.47,116.14,2958380 +2021-03-08,116.39,118.955,115.27,116.08,2983536 +2021-03-09,117.87,121.39,117.54,119.84,2704973 +2021-03-10,120.59,122.21,119.685,119.99,2128162 +2021-03-11,121.42,122.92,120.9,121.83,2065332 +2021-03-12,121,122.03,119.28,121.44,1616068 +2021-03-15,120.92,124.28,120.34,124.04,1370574 +2021-03-16,124.46,125.305,122.45,123,1525371 +2021-03-17,122.34,123.11,121.5,122.52,1623890 +2021-03-18,123.6,123.94,122.13,122.59,2301302 +2021-03-19,122.87,123.5,121.51,122.69,3438750 +2021-03-22,122.17,123.83,121.72,123.61,1955246 +2021-03-23,123.15,124.23,121.47,121.98,1510098 +2021-03-24,122.12,122.9599,120.74,120.84,1610201 +2021-03-25,120.86,122.33,119.88,121.9,1123087 +2021-03-26,122.54,125.71,122.025,125.64,1609338 +2021-03-29,124.88,125.82,123.74,125.42,1725016 +2021-03-30,124.61,125.6999,124.405,124.84,1171421 +2021-03-31,125.95,128.475,125.95,127.14,2311951 +2021-04-01,128,128.3,127.005,127.69,1234101 +2021-04-05,129,130.61,129,130,1233099 +2021-04-06,130.57,131.86,129.87,131.04,1953301 +2021-04-07,130.25,130.57,128.53,129.34,1145954 +2021-04-08,130.26,131.73,129.8735,130.69,1073680 +2021-04-09,131.46,131.92,130.7343,131.91,1836866 +2021-04-12,131.44,132.18,130.84,131.27,1308146 +2021-04-13,131.6,133.267,131.47,132.97,1752089 +2021-04-14,133.1,133.225,130.961,131.97,1783033 +2021-04-15,132,133.94,132,133.28,2319138 +2021-04-16,134.05,134.64,133.16,134.58,5969298 +2021-04-19,134.38,134.38,133.5,133.5,174389 +2021-04-20,133,133.55,131.815,132.46,1386391 +2021-04-21,132.88,133.95,132.02,133.83,1387530 +2021-04-22,134.03,135.455,133.83,134.53,1894967 +2021-04-23,134.57,137.12,134.5,136.68,1710316 +2021-04-26,137.21,137.8271,136.68,137.34,1462295 +2021-04-27,136.93,137.44,136.23,136.48,1910264 +2021-04-28,136,136.51,134.71,134.8,1795198 +2021-04-29,135.41,135.41,133.54,134.15,2336509 +2021-04-30,133.9,134.66,133.15,133.64,1777956 +2021-05-03,134.29,134.3099,132.61,133.19,1238355 +2021-05-04,132.12,132.51,130.35,130.9,2007949 +2021-05-05,132.09,134.09,131.25,133.37,1661266 +2021-05-06,132.31,132.6,130.77,132.4,1364920 +2021-05-07,133.19,134.82,133.19,133.9,1167760 +2021-05-10,133.76,133.93,131.76,131.87,1205657 +2021-05-11,130.27,131.84,129.3,131.42,1631170 +2021-05-12,130.34,131.165,128.47,128.64,1480011 +2021-05-13,129.61,130.76,129.26,130.02,944970 +2021-05-14,130.47,131.69,130.45,131.15,937027 +2021-05-17,130.84,131.05,129.905,130.11,1347559 +2021-05-18,129.95,129.95,128.68,128.75,2996589 +2021-05-19,127.6,130.28,127.13,130.21,1743306 +2021-05-20,130.61,132.79,130.61,132.15,1631697 +2021-05-21,132.67,134.13,132.22,132.3,2386749 +2021-05-24,133.51,134.41,132.53,133.34,2024062 +2021-05-25,133.41,134.8,133.01,133.23,3035984 +2021-05-26,136.3,138,133.2505,133.29,4027865 +2021-05-27,133.32,138.14,133.16,137.54,5904274 +2021-05-28,138.6,139.21,138.0001,138.13,2003980 +2021-06-01,139.17,140.32,135.57,137.2,3075300 +2021-06-02,137.12,138.22,135.88,136.57,2205386 +2021-06-03,136,136.91,135.74,136.37,1962823 +2021-06-04,137.7,138.409,137.385,137.9,1688033 +2021-06-07,138.09,138.58,137.3701,137.65,1465284 +2021-06-08,138.6,138.92,137.57,138.75,1694986 +2021-06-09,139.13,140.37,138.87,140.13,1548093 +2021-06-10,140.32,143.35,140.01,143.06,2306095 +2021-06-11,143.36,143.6,141.9,143.53,1590245 +2021-06-14,143.5,144.43,142.76,144.39,1054154 +2021-06-15,144.85,145.16,144.04,144.62,1218286 +2021-06-16,144.66,145.08,142.92,143.59,1915599 +2021-06-17,143.49,147.68,143.49,146.92,3232034 +2021-06-18,146.31,146.83,144.94,145.01,4321608 +2021-06-21,145.42,146.69,143.7334,146.41,1439701 +2021-06-22,146.37,147.68,145.83,146.63,1565926 +2021-06-23,146.72,148.06,146.4263,147.24,1616441 +2021-06-24,147.92,148.33,146.57,146.67,1629228 +2021-06-25,147.01,147.76,146.21,147.28,11433576 +2021-06-28,147.63,148.04,146.43,147.93,1852098 +2021-06-29,147.57,148.8422,147.525,148.81,918276 +2021-06-30,148.68,148.7799,146.66,147.81,1611707 +2021-07-01,147.77,148.365,147.015,147.79,1633137 +2021-07-02,148.11,148.89,147.25,148.82,1620412 +2021-07-06,149.23,149.23,148.48,148.98,2427159 +2021-07-07,149.59,149.62,148.09,149.49,2548008 +2021-07-08,148.07,148.96,147.28,148.83,2136424 +2021-07-09,149.49,150.23,148.92,150.03,1830960 +2021-07-12,150.65,151,149.17,149.51,1793737 +2021-07-13,149.11,149.54,148.19,149.27,1633419 +2021-07-14,149.86,149.87,148.46,148.63,1400391 +2021-07-15,148.34,149.31,147.84,148.96,1949856 +2021-07-16,149.33,149.815,148.27,148.93,2684022 +2021-07-19,147.66,147.97,146.95,147.58,2052852 +2021-07-20,148.45,151.25,147.83,149.3,2494682 +2021-07-21,149.49,149.91,147.6,148.95,2550722 +2021-07-22,149.71,150.5,148.67,150.3,2132822 +2021-07-23,150.59,152.41,150.43,152.31,2257069 +2021-07-26,151.73,152.17,149.77,150.25,1949635 +2021-07-27,149.29,150,148.86,149.95,2301124 +2021-07-28,150,151.97,149.5,151.46,2391896 +2021-07-29,151.99,153.46,151.42,152.67,1813591 +2021-07-30,152.52,153.6,152.02,153.23,2530148 +2021-08-02,154.05,154.3,152.52,153.07,1574788 +2021-08-03,153.71,153.97,152.7575,153.86,2041392 +2021-08-04,153.96,154.71,153.49,154.27,1944862 +2021-08-05,154.46,155.16,153.34,155.04,1872781 +2021-08-06,154.76,155.89,154.47,155.7,1406742 +2021-08-09,156.08,156.8,155.01,156.54,1160738 +2021-08-10,156.92,157.605,155.9,156.52,1803902 +2021-08-11,156.69,156.99,155.85,156.52,1586629 +2021-08-12,156.51,158.52,156.12,158.15,1612212 +2021-08-13,158.4,159.27,157.39,159.23,1921334 +2021-08-16,159.39,162.52,158.5,162.07,2392125 +2021-08-17,161.73,161.84,159.295,160.91,2778381 +2021-08-18,163.2,165.36,162.085,163.02,3061304 +2021-08-19,161.74,169.08,161.61,167.67,2369792 +2021-08-20,167.83,170.74,167.05,168.13,2297419 +2021-08-23,169.43,170.57,168.13,170,2256402 +2021-08-24,170.23,171.21,169.22,170.57,1403439 +2021-08-25,170.07,173.54,170.07,173.3,1662644 +2021-08-26,173.39,174.47,172.1,173.59,1404580 +2021-08-27,174.03,175.1,172.989,173.81,1320994 +2021-08-30,173.86,177.12,173.86,176.73,1392378 +2021-08-31,177.1,177.19,174.83,175.47,2096570 +2021-09-01,175.04,175.7438,174.3779,175.45,1596571 +2021-09-02,176.45,178.34,175.7,178.02,1396255 +2021-09-03,177.67,179.57,177.03,179.28,1192559 +2021-09-07,179.28,179.365,176.79,177.72,1397978 +2021-09-08,177.42,179.18,176.57,178.73,1328272 +2021-09-09,179.07,179.36,177.02,177.23,1151101 +2021-09-10,177.72,179.31,177.17,177.23,1278175 +2021-09-13,177.66,178,170.22,172.08,2455014 +2021-09-14,172.55,173.98,171.76,172.42,1501512 +2021-09-15,172.07,175.13,171.39,173.79,1989700 +2021-09-16,173.93,173.93,171.1,173.28,1358349 +2021-09-17,173.92,177.36,172.8,173.94,3141576 +2021-09-20,170.5,172.58,169.11,171.34,1758667 +2021-09-21,172.3,173.6,171.19,171.44,1192208 +2021-09-22,172.18,173.32,170.905,172.44,1137579 +2021-09-23,173.5,174.35,172.485,172.77,1792079 +2021-09-24,172.09,173.08,171.2,172.4,1151312 +2021-09-27,171.06,171.15,164.2629,166.38,1574502 +2021-09-28,164.19,164.33,158.79,159.9,2733931 +2021-09-29,161.39,161.805,159.83,160,1420290 +2021-09-30,161.23,162.48,157.46,157.53,2010660 +2021-10-01,157.15,157.5,153.05,155.99,2131797 +2021-10-04,155.24,156.3,151.26,152.36,2040045 +2021-10-05,153.48,155.78,152.34,153.03,1797993 +2021-10-06,152.55,154.26,151.62,153.65,2352179 +2021-10-07,155.06,157.48,154.955,155.32,1125224 +2021-10-08,156.18,156.915,152.1,152.47,1024987 +2021-10-11,151.49,152.36,149.88,150.02,1379482 +2021-10-12,151.18,151.18,146.3,147.95,2036086 +2021-10-13,149.08,150.88,148.74,150.22,1662291 +2021-10-14,151.62,153.48,151.62,152.59,1627553 +2021-10-15,153.14,153.89,152.55,153.27,1893104 +2021-10-18,153.63,155.42,152.39,154.78,1332546 +2021-10-19,155.96,157.46,155.55,155.62,1157074 +2021-10-20,156.93,158.121,156.31,157.59,1326782 +2021-10-21,157.71,158.02,154.53,156.94,1582771 +2021-10-22,156.95,158.71,156.9,157.97,894597 +2021-10-25,157.9,158.52,156.745,158.34,1294505 +2021-10-26,159.63,159.92,157.04,158.19,1141407 +2021-10-27,158.3,158.5,154.83,155.26,1625190 +2021-10-28,155.98,157.79,154.19,155.76,2002964 +2021-10-29,155.13,157.57,154.44,157.49,2464983 +2021-11-01,157.38,158,155.8,157.06,1552030 +2021-11-02,157.55,158,155.44,157.85,1963411 +2021-11-03,158.03,158.29,154.57,158.2,1443577 +2021-11-04,157.86,158.93,156.36,157.65,1201485 +2021-11-05,156.57,156.81,152.43,156.41,2111394 +2021-11-08,157,161.15,156.55,160.94,1836523 +2021-11-09,160.94,162.23,159.52,159.81,1219777 +2021-11-10,159.21,159.98,156.06,159.28,1445829 +2021-11-11,160.28,161.035,157.93,158.79,1048098 +2021-11-12,159.73,161.06,157.71,160.88,1826768 +2021-11-15,161.25,162.33,157.5,157.78,1323680 +2021-11-16,157.05,163,156.96,161.39,1476592 +2021-11-17,161.92,161.92,159.9,161.54,993161 +2021-11-18,162.53,162.825,160.4,162.16,1702345 +2021-11-19,163.01,165.07,162.67,164.3,2002791 +2021-11-22,165,165.68,162.78,162.78,2352948 +2021-11-23,155.89,159.32,151.77,154.78,3448745 +2021-11-24,153.76,154.67,151.09,152.97,2530393 +2021-11-26,153.29,159.09,151.57,152.07,1789293 +2021-11-29,153.06,155.38,151.56,153.42,2016554 +2021-11-30,153.35,155.71,149.7,150.9,5133620 +2021-12-01,151.12,152.85,148.09,148.21,2096067 +2021-12-02,147.91,152.47,147.73,150.99,1737069 +2021-12-03,151.82,153,147.72,149.33,1567749 +2021-12-06,149.34,152.04,147.78,151.47,2184560 +2021-12-07,152.84,156.24,152.61,153.8,1662261 +2021-12-08,154.76,156.39,153.95,156.31,1791834 +2021-12-09,156.5,158,154.51,154.61,1590188 +2021-12-10,154.53,156.34,154.08,156.26,1694927 +2021-12-13,157.34,157.9,155.14,156.29,1849895 +2021-12-14,154.89,155.74,150.105,151.88,2224840 +2021-12-15,152.76,154.59,150.62,154.31,2386837 +2021-12-16,154.3,155.9,150.46,150.8,2456239 +2021-12-17,150.35,152.59,148.04,151.42,3631691 +2021-12-20,150.76,152.18,148.54,150.42,2284235 +2021-12-21,151,154.06,150.61,153.96,1684690 +2021-12-22,154.45,157.16,154.25,156.78,2096279 +2021-12-23,157.29,158.86,156.65,157.8,1699662 +2021-12-27,158.82,159.84,157.185,158.74,1059370 +2021-12-28,159.68,159.79,158.12,159.18,860710 +2021-12-29,159.83,161.39,159.175,160.65,964672 +2021-12-30,161.11,162.62,160.6,160.88,861461 +2021-12-31,160.35,161.45,159.52,159.65,1696564 +2022-01-03,159,159.44,153.93,156.48,1855491 +2022-01-04,155.49,155.63,149.7,151.19,2510184 +2022-01-05,150.83,153.1,148.53,148.6,2966289 +2022-01-06,148.85,149.96,145.58,149.12,2502203 +2022-01-07,149.12,149.73,145.09,145.15,2415233 +2022-01-10,143.29,145.31,140.86,145.16,2968677 +2022-01-11,145,146.94,143.81,146.64,2587217 +2022-01-12,147.8,150.39,147.55,149.51,2729178 +2022-01-13,149.46,149.54,144.85,145.17,1992761 +2022-01-14,144.04,145.15,142.36,144.68,2503387 +2022-01-18,142.42,143.24,140.34,140.47,2262259 +2022-01-19,140.67,143.6,140.26,140.43,1679413 +2022-01-20,141.38,143.14,139.05,139.48,2101812 +2022-01-21,139.54,140.49,137.49,137.51,2304259 +2022-01-24,136.38,138.12,132.68,138.12,891574 +2022-01-25,135.36,136.62,132.65,134.57,1942330 +2022-01-26,135.54,138.0454,132.27,133.51,1937861 +2022-01-27,135.28,136.36,131.68,132.09,1974132 +2022-01-28,133,137.4,131.215,137.06,2388301 +2022-01-31,137.32,139.47,136.9729,139.32,2045492 +2022-02-01,140.53,141.27,138.45,141.03,1947174 +2022-02-02,140.99,144.76,140.78,144.24,1687846 +2022-02-03,142,143.78,141.01,141.79,1070907 +2022-02-04,141.48,142.345,139.67,141.12,1202701 +2022-02-07,141.5,142.485,139.81,140.37,1913169 +2022-02-08,139.11,141.41,138.295,140.81,1809632 +2022-02-09,142.73,145.1,142.15,144.44,1412733 +2022-02-10,141.56,144.04,140.58,141.66,1305756 +2022-02-11,141.12,142.51,136.24,137.2,1503192 +2022-02-14,136.96,137.69,134.1,135.21,2440993 +2022-02-15,137.25,138.06,134.73,135.91,2659263 +2022-02-16,135.55,135.6,132.11,135.15,3484654 +2022-02-17,134.64,134.64,129.71,130.25,2877674 +2022-02-18,130.5,133.43,130,132.05,4715644 +2022-02-22,130.87,132.6899,129.26,130.49,3315449 +2022-02-23,129.88,134.37,125.95,126,4367412 +2022-02-24,123.7,128.63,123.06,128.15,4227519 +2022-02-25,128.84,133.75,127.92,133.73,3489529 +2022-02-28,132.03,132.875,129.155,130.36,3861924 +2022-03-01,130.83,132.915,130.085,131.93,2954940 +2022-03-02,132.68,133.96,131.8,133.16,2039478 +2022-03-03,133.73,138,133.44,137.17,4281446 +2022-03-04,135.85,137.12,132.14,133.89,4079672 +2022-03-07,133.55,133.55,128.43,130.34,2531510 +2022-03-08,128.64,129.32,128.64,129.32,215932 +2022-03-09,132.85,133.94,131.19,133.26,1964287 +2022-03-10,131.4,134.52,131.29,134.33,2140236 +2022-03-11,135.43,136.44,130.16,130.31,2036284 +2022-03-14,131,132.26,126.9,127.58,2067454 +2022-03-15,129.22,131.15,128.865,130.28,1889044 +2022-03-16,131.93,135.61,131.3,135,1936522 +2022-03-17,134,136.85,133.611,136.82,1435399 +2022-03-18,136.21,139.393,136.21,139.12,3731972 +2022-03-21,137.63,139.79,137.01,138.14,1439811 +2022-03-22,138.01,140.1997,137.65,139.29,2244340 +2022-03-23,137.85,137.955,133.4482,134.18,1559843 +2022-03-24,134.89,136.58,133.59,136.41,1473177 +2022-03-25,137.3,137.66,133.7,135.71,1690329 +2022-03-28,136.25,137.25,134.46,135.42,2091883 +2022-03-29,138.22,139.32,137.21,138.42,1869723 +2022-03-30,137.93,138.215,134.52,135.46,1839322 +2022-03-31,135.17,136.79,132.29,132.33,3725815 +2022-04-01,134.18,134.6,131.86,133.97,1716024 +2022-04-04,133.86,135.395,132.89,134.81,1612687 +2022-04-05,134.09,135.42,132.85,133.26,2137539 +2022-04-06,132.01,133.32,129.86,132.71,2973269 +2022-04-07,132.9,137.08,132.225,135.93,2443726 +2022-04-08,135.71,136.9855,134.65,134.87,2274127 +2022-04-11,133.22,133.8788,130.46,131.26,2727492 +2022-04-12,131.69,132.19,125.03,125.39,2977773 +2022-04-13,125.26,128.53,124.91,128.29,3026485 +2022-04-14,128.42,128.96,125.57,126.44,5039224 +2022-04-18,126.44,126.75,123.13,123.84,1891818 +2022-04-19,123.71,126.83,123.7,126.53,1786159 +2022-04-20,127.71,130.32,126.84,129.37,2441073 +2022-04-21,130.36,131.03,124.85,125.29,2457700 +2022-04-22,124.77,125.1,121.15,121.32,2165456 +2022-04-25,119.53,121.61,118.23,121.45,2530186 +2022-04-26,121,121.28,117.24,117.94,3612952 +2022-04-27,118.2,120.85,117.53,117.68,2393055 +2022-04-28,119.52,121.56,117.93,121.06,3355502 +2022-04-29,120.71,123.89,119.05,119.27,2642280 +2022-05-02,118.38,120.34,116.49,119.57,1949682 +2022-05-03,119.72,123.98,119.09,122.4,3419839 +2022-05-04,121.69,126.69,121.44,126.3,2673545 +2022-05-05,124.62,125.21,120.8,122.15,2343681 +2022-05-06,120.88,121.88,118,121.08,1838559 +2022-05-09,119.13,119.13,112.64,113.11,2061682 +2022-05-10,115.44,117.94,113.14,116.64,2401500 +2022-05-11,115.7,118,113.84,113.99,1806261 +2022-05-12,113.61,116.25,112.78,116.13,1555535 +2022-05-13,117.38,120.715,117.27,119.38,1561384 +2022-05-16,119.63,121.03,118.83,120.3,2268441 +2022-05-17,122.7,123.7,121.45,123.08,2460343 +2022-05-18,121.19,121.905,120.31,120.79,1563962 +2022-05-19,120.31,123.58,119.53,122.4,2486748 +2022-05-20,124.03,125.58,122.44,125.13,2919432 +2022-05-23,126.45,126.47,123.76,125.98,2271237 +2022-05-24,125.32,126,123.8,124.41,2474028 +2022-05-25,127.21,127.46,119.18,120.38,3824944 +2022-05-26,120.75,124.22,120.715,123.85,2162840 +2022-05-27,124.92,130.77,124.49,130.55,3079196 +2022-05-31,128.91,130.07,126.72,127.56,4383002 +2022-06-01,127.86,128.98,122.43,123.09,2088234 +2022-06-02,122.96,129.19,122.3,129.1,1656580 +2022-06-03,127.62,128.72,126.415,128.49,2004719 +2022-06-06,129.38,130,126.97,127.63,1484662 +2022-06-07,126.57,131.2,126.57,128.9,1456700 +2022-06-08,127.88,128.64,126.4007,126.84,1245038 +2022-06-09,126.09,126.92,124.13,124.14,945358 +2022-06-10,121.63,121.93,119.9,120.57,1541447 +2022-06-13,116.48,117.7,115.38,116.28,1608918 +2022-06-14,115.99,116.7,113.25,116.01,1488878 +2022-06-15,117.24,117.77,113.77,116.47,2111319 +2022-06-16,113.8,115.08,113.36,114.96,1821860 +2022-06-17,114.77,116.73,112.67,112.71,3571152 +2022-06-21,114.41,115.57,113.76,113.88,1973361 +2022-06-22,112.66,115.08,112.52,113.8,2917933 +2022-06-23,114.6,118.75,114.27,118.6,1982116 +2022-06-24,119.95,121.35,118.446,121.29,4631999 +2022-06-27,121.83,122.295,119.85,120.57,2164262 +2022-06-28,120.45,121.24,116.72,117.06,1641369 +2022-06-29,117.19,118.54,116.24,117.9,1019059 +2022-06-30,116,119.95,116,118.77,2017630 +2022-07-01,118.79,119.76,116.7,119.21,1317283 +2022-07-05,117.75,120.675,116.49,120.56,1683613 +2022-07-06,120.8,122.34,120.555,121.18,1839160 +2022-07-07,120.99,123.22,120.62,123.15,1415115 +2022-07-08,120.96,123.21,120.96,122.51,1450461 +2022-07-11,121.61,123.46,121.01,123.12,1460671 +2022-07-12,122.43,123.41,118.75,119.24,1360625 +2022-07-13,117.41,119.7,116.86,118.65,1634412 +2022-07-14,117.1,117.73,113.02,115.88,1527414 +2022-07-15,117.78,118.88,116,118.83,1177686 +2022-07-18,118.95,119.39,114.46,115.11,1394515 +2022-07-19,116.99,119.34,116.37,119.06,1535657 +2022-07-20,119.93,121.21,119.25,119.86,1496201 +2022-07-21,122.12,127.34,122.12,127.19,1876549 +2022-07-22,127.41,128.5399,124.31,125.04,1243395 +2022-07-25,125.05,125.41,123.19,124.26,1166273 +2022-07-26,124.66,125.63,123.37,125.17,1388409 +2022-07-27,125.04,128.33,124.71,127.71,1800861 +2022-07-28,128.17,131.825,126.78,131.11,2050879 +2022-07-29,131.27,134.5,130.9,134.1,2676727 +2022-08-01,133.51,135.23,133.26,133.43,1200668 +2022-08-02,132.41,134.68,131.09,131.28,1541935 +2022-08-03,133.45,135.26,133.02,134.56,2330761 +2022-08-04,134.69,135,132.74,133.77,1059361 +2022-08-05,132.27,133.84,131.75,133.61,814456 +2022-08-08,134.2,134.42,132.14,132.52,1439120 +2022-08-09,132.5,132.5,128.02,128.88,1045364 +2022-08-10,131.37,132.77,130.15,132.58,1216773 +2022-08-11,132.91,135.13,131.59,131.95,1284458 +2022-08-12,132.26,133.63,131.43,133.55,1057381 +2022-08-15,133.28,134.62,132.67,133.9,1457475 +2022-08-16,132.89,133.42,131.66,132.77,1990489 +2022-08-17,148.84,149,140.03,142.29,4428316 +2022-08-18,141.88,141.9632,138.76,139.97,1975836 +2022-08-19,139.35,139.73,137.26,137.62,1705399 +2022-08-22,135.3,136.03,133.56,133.94,1446576 +2022-08-23,133.11,134.105,132.044,132.64,1312701 +2022-08-24,133.02,134.54,132.65,133.67,1171108 +2022-08-25,135.3,136.08,133.99,136.01,1082407 +2022-08-26,136,136.05,129.78,129.87,1439050 +2022-08-29,128.43,129.35,127.18,128.11,1031819 +2022-08-30,128.51,129.019,127.155,128.28,1936374 +2022-08-31,129.38,130.23,128,128.25,2280877 +2022-09-01,127.63,129.11,126.21,128.93,1428761 +2022-09-02,129.79,130.27,127.12,128.01,1856855 +2022-09-06,129.38,130.57,127.72,129.3,1814399 +2022-09-07,128.97,131.825,128.61,131.43,1529796 +2022-09-08,130.93,135.27,130.705,135.19,1669448 +2022-09-09,135.98,137.92,135.43,137.63,2705495 +2022-09-12,137.53,140,137.23,139.87,2089829 +2022-09-13,136.32,137.41,133.44,133.54,1799789 +2022-09-14,133.8,135.36,132.095,133.25,1795558 +2022-09-15,133.81,135.51,132.655,133.16,1602635 +2022-09-16,132.12,132.13,128.28,129.89,3024831 +2022-09-19,128.79,130.79,128.36,130.72,1227815 +2022-09-20,129.1,129.605,126.82,128.14,1512448 +2022-09-21,128.73,130.575,126.325,126.48,1259512 +2022-09-22,125.55,126.04,123.7628,124.39,1533426 +2022-09-23,123.73,124.43,121.44,123.48,1644024 +2022-09-26,123.18,124.25,121.63,122.31,1914302 +2022-09-27,123.87,124.07,120.6,121.61,1222076 +2022-09-28,122.77,124.43,121.6,123.72,1581085 +2022-09-29,122.81,124.24,122.275,122.74,1564975 +2022-09-30,123.02,125.125,121.38,121.55,1919578 +2022-10-03,122.73,127.3,121.68,126.38,1588168 +2022-10-04,128.79,131.56,128.575,131.41,1901216 +2022-10-05,129.99,133.53,129.5,132.64,1727427 +2022-10-06,132.3,133.82,131.6,132.18,1431069 +2022-10-07,130.45,130.93,126.96,127.44,1296321 +2022-10-10,128.05,128.05,124.31,125.95,1390896 +2022-10-11,125,127.89,124.16,125.64,2176367 +2022-10-12,126.2,127.1,125.27,125.69,1265352 +2022-10-13,123,128.83,122.35,127.9,1680376 +2022-10-14,129,130.22,125.47,125.7,1430159 +2022-10-17,127.38,131.09,127.38,130.56,1392490 +2022-10-18,133.92,134.675,131.2,132.3,1184238 +2022-10-19,130.11,130.27,127.235,128.96,1180131 +2022-10-20,127.83,129.74,125.61,125.94,2160829 +2022-10-21,126.37,130.125,124.82,129.88,1278149 +2022-10-24,131.13,133.13,129.805,132.3,1178329 +2022-10-25,132.3,135.095,132.3,134.5,1387479 +2022-10-26,134.43,139.31,134,137.69,1575290 +2022-10-27,137.26,137.99,135.33,136.49,1132600 +2022-10-28,136.38,139.1218,135.02,138.77,1072717 +2022-10-31,137.69,138.93,137.35,138.35,1589459 +2022-11-01,139.5,141.35,138.06,140.89,1377649 +2022-11-02,140.61,140.94,135.21,135.27,2102087 +2022-11-03,133.77,135.865,130.66,134.46,1386924 +2022-11-04,135.65,137.005,133.11,136.08,1459217 +2022-11-07,136.85,138.08,135.56,138.03,1213652 +2022-11-08,138.5,140.685,136.6,138.75,1028120 +2022-11-09,138.31,139.42,136.66,137,971246 +2022-11-10,142.87,146.72,142.53,146.3,1591960 +2022-11-11,147.12,149.74,146.35,148.31,1227498 +2022-11-14,149.01,149.71,146.3,146.38,1206578 +2022-11-15,148.27,149.46,146.495,148,1299334 +2022-11-16,148.19,148.75,146.35,147.12,1476733 +2022-11-17,145.33,145.56,142.16,144.44,1465186 +2022-11-18,146.68,147.955,144.15,146.19,1283282 +2022-11-21,145.62,147.16,144.43,145.14,1691900 +2022-11-22,151.98,157.44,151.98,156.86,3512716 +2022-11-23,156.67,157.28,154.35,155.35,1444152 +2022-11-25,155.09,156.96,154.71,156.96,642657 +2022-11-28,155.87,156.85,151.73,152.3,1386282 +2022-11-29,151.88,152.9,150.49,150.94,954556 +2022-11-30,151.38,154.98,149.1,154.98,2867702 +2022-12-01,156.73,156.99,154.42,156.12,1372400 +2022-12-02,153.97,156.73,153.59,155.67,1183206 +2022-12-05,153.84,153.89,151.25,152.7,1124725 +2022-12-06,152.15,153,149.91,151.35,1172286 +2022-12-07,151.23,154.355,151.13,153.73,1011085 +2022-12-08,154.42,156.99,153.4832,156.28,1289903 +2022-12-09,155.67,156.7,152.68,152.95,1020203 +2022-12-12,154.01,155.98,153.43,155.33,1071384 +2022-12-13,159.2,160.265,156.76,157.66,1534443 +2022-12-14,157.26,158.44,154.16,154.81,1344449 +2022-12-15,152.81,153.04,150.24,150.86,1483896 +2022-12-16,149.61,149.95,147.905,149.3,2436691 +2022-12-19,148.91,149.13,146.24,146.95,1277354 +2022-12-20,147.27,149.175,145.88,147.93,1548169 +2022-12-21,148.94,150.27,147.89,150.09,1248131 +2022-12-22,148.41,149.19,146.61,149.01,1166795 +2022-12-23,149.01,150.25,148.22,149.23,779426 +2022-12-27,149.23,149.81,147.3,149.55,879543 +2022-12-28,149.78,151.37,147.64,148.09,784312 +2022-12-29,149.61,151.9,149.02,151.09,854392 +2022-12-30,149.76,149.85,147.83,149.65,699759 +2023-01-03,151.96,153.13,148.47,150.04,1414284 +2023-01-04,151.65,153.04,150.24,151.67,1247420 +2023-01-05,150,153.07,148.77,152.11,1714636 +2023-01-06,154.36,154.64,143.01,147.67,2444397 +2023-01-09,149.69,151.28,147.198,147.47,1269574 +2023-01-10,150.18,155.55,148.75,155.23,1565749 +2023-01-11,155.23,158.58,155.23,158.17,1241899 +2023-01-12,158.16,158.6,155.5825,156.49,809123 +2023-01-13,155.54,157.28,154.5,156.92,921744 +2023-01-17,156.68,158.11,155.03,155.4,1602206 +2023-01-18,156.26,158.16,153.64,154.07,1150652 +2023-01-19,153.58,154.92,152.14,152.87,1017395 +2023-01-20,153.5,156.01,152.41,155.92,1343723 +2023-01-23,156,159.59,155.67,159.06,974865 +2023-01-24,156.27,158.51,154.46,155.69,1121503 +2023-01-25,154,156.545,152.83,155.76,736164 +2023-01-26,156.97,157.66,155.19,156.23,776264 +2023-01-27,155.75,156.96,154.81,155.69,646223 +2023-01-30,154.5,155.52,150.88,151.74,1401052 +2023-01-31,151.61,153.46,150.21,152.08,1995389 +2023-02-01,153.31,156.29,151.72,155.45,1499912 +2023-02-02,156.66,157.31,154.77,155.5,1725558 +2023-02-03,153.17,155.42,152.735,154.55,992819 +2023-02-06,152.73,154.4,151.36,152.24,771456 +2023-02-07,151.49,154.96,151.13,154.51,1126669 +2023-02-08,153.64,155.17,153.225,154.42,1073479 +2023-02-09,155.67,156.3204,151.54,152.38,852195 +2023-02-10,151.8,152.99,151.07,152.55,934821 +2023-02-13,153.27,154.66,152.01,154.6,925379 +2023-02-14,154.34,155.7499,151.45,153.04,895375 +2023-02-15,152.22,152.325,150.3,151.75,982411 +2023-02-16,148.81,150.16,147.23,148.28,1101687 +2023-02-17,147.26,148.9418,146.49,148.26,1194761 +2023-02-21,146.6,146.65,142.63,143.42,1693824 +2023-02-22,143.37,143.44,140.95,142.08,1691273 +2023-02-23,142.09,143.58,141.31,143.2,1511552 +2023-02-24,141.46,142.2404,138.72,141.2,1522068 +2023-02-27,142.88,143.765,141.81,142.18,1149572 +2023-02-28,141.75,143.38,141.39,141.97,2342545 +2023-03-01,138.58,139.99,136.25,137.51,3133003 +2023-03-02,136.3,141.72,136.08,141.67,1879178 +2023-03-03,142.54,144.44,141.98,143.93,1147777 +2023-03-06,143.35,145.435,142.68,143.23,1153577 +2023-03-07,143.56,143.66,140.23,140.33,1088388 +2023-03-08,140.15,141.58,139.375,140.9,1136076 +2023-03-09,141.26,142,138.3,138.93,1328860 +2023-03-10,139.19,139.44,134.71,135.72,1895989 +2023-03-13,135.55,138.28,134.76,136.69,1770964 +2023-03-14,138.44,139.6,136.43,138.4,1255370 +2023-03-15,135.93,135.93,132.2,134.03,2016723 +2023-03-16,133.97,137.05,132.37,136.82,1789312 +2023-03-17,136.89,136.92,132.73,133.18,2045953 +2023-03-20,133.14,135.38,132.73,134.54,1704510 +2023-03-21,135.56,137.42,135.215,137.01,1392258 +2023-03-22,136.96,137.535,133.6,133.73,1268528 +2023-03-23,134.66,135.07,129.3721,131.13,3297906 +2023-03-24,130.14,131.98,128.22,131.96,1571589 +2023-03-27,133.58,134.62,132.73,133.07,1216331 +2023-03-28,132.54,133.31,132.0108,132.63,942618 +2023-03-29,133.95,134.24,132.6301,133.85,1002779 +2023-03-30,135.27,135.54,133.32,134.49,1468195 +2023-03-31,135.4,138.73,134.86,138.34,2579848 +2023-04-03,137.42,138.09,136.005,137.86,1551755 +2023-04-04,138.25,139.11,137.53,138.21,1778667 +2023-04-05,137.74,139.27,136.674,138.09,2312060 +2023-04-06,138.01,138.125,136.59,138.03,1206189 +2023-04-10,137.38,138.08,135.86,138.02,1104566 +2023-04-11,138.87,139.93,138.15,138.52,1241084 +2023-04-12,140.19,141.355,137.82,138.36,1058466 +2023-04-13,139.18,141.48,138.99,141.28,1030933 +2023-04-14,140.36,141.19,138.93,139.2,954259 +2023-04-17,139.62,140.21,138.89,140.19,1115522 +2023-04-18,140.73,140.99,138.21,139,1218852 +2023-04-19,138.37,139.615,137.68,138.93,1178444 +2023-04-20,136.86,137.05,134.873,135.53,1325862 +2023-04-21,136.21,138.56,136.21,138.5,1533623 +2023-04-24,138.8,139.52,138.09,138.48,856654 +2023-04-25,136.54,136.78,129.72,130.37,2154945 +2023-04-26,128.15,133.84,128.11,133.12,3003752 +2023-04-27,132.96,133.86,131.33,133.25,1125334 +2023-04-28,133.45,136.93,133.45,135.43,2032773 +2023-05-01,136.02,137.14,135.76,136.08,1012903 +2023-05-02,135.02,137.16,134.255,134.52,1629649 +2023-05-03,135.89,136.54,134.63,134.77,1529073 +2023-05-04,135.38,136.04,133.76,133.88,1103693 +2023-05-05,135.3,135.41,131.905,133.3,1890140 +2023-05-08,134.01,134.21,131.75,132.45,1005342 +2023-05-09,128.5,128.5,125.36,127.35,3437064 +2023-05-10,128.71,128.9,126.16,128.06,1255711 +2023-05-11,127.17,127.7,125.47,127.66,1580572 +2023-05-12,128.68,128.68,126.525,127.49,1422587 +2023-05-15,127.94,128.19,126.75,127.99,1262766 +2023-05-16,126.97,127.4,125.79,126.29,1190020 +2023-05-17,127.04,127.79,125.78,127.77,1968194 +2023-05-18,127.65,129.33,126.49,129.14,1637179 +2023-05-19,129.59,130.47,128.62,128.87,1480380 +2023-05-22,128.66,129.75,128.29,129.09,1764588 +2023-05-23,129.03,130.54,127.91,128.64,2784447 +2023-05-24,115.2,121.09,113.2801,120.99,6850380 +2023-05-25,121.41,121.41,117.635,119.49,3218919 +2023-05-26,120.07,120.72,118.38,120.42,2089124 +2023-05-30,120.01,121.305,117.67,117.73,2094836 +2023-05-31,116.99,117.15,114.795,115.67,3998804 +2023-06-01,116.97,117.635,115,116.26,3966268 +2023-06-02,117.77,118.41,116.02,118.22,3263054 +2023-06-05,118.58,119.76,117.09,118.35,2129460 +2023-06-06,118.78,119.22,116.64,117.44,1758822 +2023-06-07,117.17,117.365,115.14,116.59,3643539 +2023-06-08,115.93,116.9,114.66,114.69,2558841 +2023-06-09,115.58,116,114.16,115.79,1981556 +2023-06-12,115.86,118.65,115.82,118.54,2747813 +2023-06-13,118.68,121.16,118.68,119.5,2502401 +2023-06-14,119.99,120.97,118.9,119.4,2663011 +2023-06-15,118.88,121.74,118.725,121.23,1791120 +2023-06-16,122.1,123.175,120.63,121.13,3941321 +2023-06-20,118.64,118.79,116.88,118.16,2108215 +2023-06-21,117.79,119.11,117.27,118.33,1393400 +2023-06-22,118.84,118.95,117.17,118.68,1736042 +2023-06-23,117.76,119.71,117.58,119.42,2639297 +2023-06-26,118.96,119.8,117.34,118.37,1673392 +2023-06-27,118.47,118.96,116.73,117.04,2326060 +2023-06-28,116.7,117.11,115.71,116.37,2196779 +2023-06-29,116.16,118.25,116.07,118.05,1885800 +2023-06-30,118.73,120.69,118.3,120.25,2442240 +2023-07-03,120.02,120.85,119.22,119.32,992327 +2023-07-05,118.95,120.28,118.605,119.5,1246207 +2023-07-06,116.36,118.89,115.655,118.43,1626626 +2023-07-07,117.67,119.08,116.89,117,1493323 +2023-07-10,116.73,119.52,116.56,118.36,1889165 +2023-07-11,118.3,118.98,117.64,118.48,1096750 +2023-07-12,120,120.49,119.15,120,1596372 +2023-07-13,120.76,120.87,118.99,119.35,1229778 +2023-07-14,119.54,120.39,118.25,119.75,1225455 +2023-07-17,119.95,119.98,117.66,118.25,1123042 +2023-07-18,118.38,119.79,118,119.56,1362721 +2023-07-19,120.01,123.34,119.855,123.08,2425546 +2023-07-20,123.51,124.9025,123.13,124.55,2278820 +2023-07-21,124.55,128.3,123.14,127.62,3918225 +2023-07-24,127.62,129.39,127.19,127.72,2001245 +2023-07-25,125,129.55,124.1452,127.31,2199427 +2023-07-26,125,128.53,123.4,128.47,2507462 +2023-07-27,129.87,130,126.64,126.66,2582546 +2023-07-28,127.25,127.51,123.16,126.05,3138805 +2023-07-31,124.38,124.45,121.215,121.77,2376274 +2023-08-01,121.78,123.58,120.46,122.48,1654983 +2023-08-02,122,128.725,121.51,127.71,2654667 +2023-08-03,127.3,127.355,124.97,125.05,1742622 +2023-08-04,125.44,127.17,125.08,126.3,1819475 +2023-08-07,126.73,127.89,125.695,126.51,1486956 +2023-08-08,126.69,128.63,125.07,128.35,2525182 +2023-08-09,128.16,129.42,127.53,127.63,1786064 +2023-08-10,128,129.99,127.31,127.65,1515854 +2023-08-11,126.77,127.815,126.35,126.86,1256698 +2023-08-14,125.43,128,125.19,126.65,1582435 +2023-08-15,126.31,127.18,125.25,125.65,2274844 +2023-08-16,121.99,123.652,120.37,121.36,3388870 +2023-08-17,122,122.6491,120.66,120.85,2180810 +2023-08-18,120.19,120.73,119.035,119.25,1803876 +2023-08-21,119.5,119.57,117.71,118.86,2249264 +2023-08-22,117.85,118.61,117.33,117.64,1422277 +2023-08-23,118.51,119.15,117.71,119.13,1289259 +2023-08-24,119.36,120.78,118.58,119.49,2045908 +2023-08-25,119.8,120.82,118.52,119.68,1273321 +2023-08-28,119.95,120.944,119.34,119.92,1052443 +2023-08-29,120.13,122.285,119.61,122.02,838333 +2023-08-30,122.34,122.94,121.63,122.68,1157905 +2023-08-31,123.11,123.12,120.65,121.07,2875120 +2023-09-01,122.69,123.68,121.54,121.91,840683 +2023-09-05,121.64,122.5365,118.67,118.73,1270623 +2023-09-06,118.35,118.66,116.53,117.94,1668905 +2023-09-07,117.97,118.01,116.09,116.26,1316995 +2023-09-08,116.01,116.21,113.71,113.99,1789768 +2023-09-11,114.29,114.385,112.62,113.1,2047515 +2023-09-12,113.4,113.97,112.075,112.78,2035029 +2023-09-13,110,115.9,109,113.43,2520471 +2023-09-14,113.79,115.31,111.675,114.88,1815836 +2023-09-15,114.43,121.92,113.43,115.91,6889630 +2023-09-18,115,115,112.66,112.69,1818037 +2023-09-19,112.37,113.23,111.72,112.31,2222433 +2023-09-20,113.08,113.47,112.165,112.47,1744938 +2023-09-21,112.03,112.195,109.5,109.73,1327982 +2023-09-22,109.73,112.16,109.11,111.41,2050535 +2023-09-25,110.76,112.03,110.53,111.94,987394 +2023-09-26,110.88,112.25,110.68,110.73,1399831 +2023-09-27,110.96,111.25,109.615,110.5,2268260 +2023-09-28,110.48,112.68,110.44,112,1959912 +2023-09-29,113.12,113.165,111.445,111.82,1830543 +2023-10-02,110.9,111.8,109.77,110.9,1569105 +2023-10-03,110.23,111.755,110.05,110.26,1543379 +2023-10-04,110.41,111.89,109.3801,111.67,1541741 +2023-10-05,112.09,112.24,108.77,110.35,1295963 +2023-10-06,109.49,111.77,109.36,110.64,1796055 +2023-10-09,109.97,111.31,109.12,111.28,1320327 +2023-10-10,111.31,113.83,111.02,113.29,2183040 +2023-10-11,113.41,113.6,112.05,113.38,1381524 +2023-10-12,113.11,113.4,108.33,108.94,3622519 +2023-10-13,108.02,110.61,106.82,110.51,2807637 +2023-10-16,111.04,112.79,109.64,111.5,1675542 +2023-10-17,110.1,112.91,109.21,112.4,1682751 +2023-10-18,111.33,111.33,108.535,108.61,1803500 +2023-10-19,109.25,111.38,108.86,109.51,2028933 +2023-10-20,109.54,110.59,109.18,109.23,2367337 +2023-10-23,108.1,109.9075,107.4,109.34,2886025 +2023-10-24,107.5,108.06,105.36,105.64,3204185 +2023-10-25,102.9,104.17,100.08,103.4,2699609 +2023-10-26,103.47,104.91,103.24,104.31,1599149 +2023-10-27,104.54,104.78,102.4,102.77,2004019 +2023-10-30,102.71,102.78,96.8,101.17,3684908 +2023-10-31,103,104.2,101.94,103.37,2218807 +2023-11-01,102.5,103.21,100.26,102.86,2284563 +2023-11-02,103.97,104.635,102.7,104.47,1488985 +2023-11-03,106.5,109.59,106.1201,109.02,2511312 +2023-11-06,108.81,109.52,107.17,107.53,1411996 +2023-11-07,106.84,110.81,106.545,110.54,2142464 +2023-11-08,110.89,111.57,108.46,109.39,1494952 +2023-11-09,110.12,110.12,107.54,107.74,1481269 +2023-11-10,107.72,108.48,104.09,108.47,1847852 +2023-11-13,108.13,108.27,106.96,107.46,1200324 +2023-11-14,109.55,112.29,109.46,111.61,2009745 +2023-11-15,111.85,114.52,111.33,113.6,2021381 +2023-11-16,113.94,114.5,113.56,114.19,1728065 +2023-11-17,113.98,114.47,112.06,113.15,2700771 +2023-11-20,113.25,114.5,112.39,113.98,3063839 +2023-11-21,121.46,124.68,121.23,123.92,6085765 +2023-11-22,123.87,125.4,123.805,123.99,2630688 +2023-11-24,123.92,126.77,123.48,126.62,1226729 +2023-11-27,125.98,126.68,124.89,125.01,2255398 +2023-11-28,124.64,126.27,124.1,124.71,1949788 +2023-11-29,125.59,127.73,125.59,127.59,2266253 +2023-11-30,128,128.45,126.965,127.8,2442906 +2023-12-01,127.34,129.01,126.51,128.79,1729631 +2023-12-04,128.405,129.22,127.87,128.88,1543257 +2023-12-05,127.81,128.63,125.7735,127.88,1933846 +2023-12-06,128.5,129.76,127.92,128.91,1816829 +2023-12-07,129.2,130.4807,127.81,128.68,1696641 +2023-12-08,128.09,129,126.97,127.2,1438074 +2023-12-11,127.62,129.63,127.22,128.97,1897134 +2023-12-12,128.05,129.195,127,128.79,1453450 +2023-12-13,129.09,134.04,128.77,133.74,1731449 +2023-12-14,135,138.17,135,137.96,2950536 +2023-12-15,137.24,138.9,136.28,136.78,4875971 +2023-12-18,137.59,138.19,136.86,137.53,1634687 +2023-12-19,138.51,139.89,137.32,139.79,1523339 +2023-12-20,139.79,141.24,138.14,138.18,2121066 +2023-12-21,139.38,139.67,138,138.94,1685889 +2023-12-22,139.61,140.36,138.79,139.57,1204144 +2023-12-26,139.31,140.47,139.0866,139.81,948390 +2023-12-27,139.78,140.155,139.08,139.82,1182351 +2023-12-28,140.54,140.8114,139.65,139.77,892560 +2023-12-29,139.07,139.7,138.36,139.03,1014380 +2024-01-02,138.19,140.59,137.91,138.75,1441581 +2024-01-03,138,138,131.065,131.16,2074480 +2024-01-04,130.55,131.495,130.19,131,2446587 +2024-01-05,130,131.96,128.62,130.56,1393964 +2024-01-08,130.14,133.57,129.81,133.38,1311378 +2024-01-09,132.27,135.645,130.01,130.68,1434952 +2024-01-10,130.58,131.16,128.36,131.09,1326296 +2024-01-11,130.58,130.68,127.9,129.68,2060522 +2024-01-12,130.31,131.61,129.64,130.54,1285221 +2024-01-16,129.14,130.81,128.595,130.53,1382122 +2024-01-17,129.98,130.61,126.74,128.12,1257360 +2024-01-18,128.02,130.73,127.534,130.46,1404839 +2024-01-19,130.17,131.99,129.205,131.22,1523311 +2024-01-22,131.5,132.73,131.25,132.55,1512333 +2024-01-23,133.64,133.94,130.3298,131.64,854928 +2024-01-24,132.41,132.8,129.43,129.78,1141997 +2024-01-25,131.11,131.43,129.43,129.88,1120939 +2024-01-26,133.71,134.23,130.64,130.99,1319766 From a26a1493a53463b5420526349222d3ec2eb13b23 Mon Sep 17 00:00:00 2001 From: Dave Skender <8432125+DaveSkender@users.noreply.github.com> Date: Mon, 29 Jan 2024 01:15:41 -0500 Subject: [PATCH 06/49] ci: Bump dotnet installer to v4 (#1159) --- .github/workflows/build-examples.yml | 2 +- .github/workflows/build-test-indicators.yml | 2 +- .github/workflows/deploy-package.yml | 4 ++-- .github/workflows/test-performance.yml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build-examples.yml b/.github/workflows/build-examples.yml index aa273a92f..8430468d9 100644 --- a/.github/workflows/build-examples.yml +++ b/.github/workflows/build-examples.yml @@ -23,7 +23,7 @@ jobs: uses: actions/checkout@v4 - name: Install .NET SDK - uses: actions/setup-dotnet@v3 + uses: actions/setup-dotnet@v4 with: dotnet-version: "8.x" dotnet-quality: "ga" diff --git a/.github/workflows/build-test-indicators.yml b/.github/workflows/build-test-indicators.yml index 3f0f65931..6a784203f 100644 --- a/.github/workflows/build-test-indicators.yml +++ b/.github/workflows/build-test-indicators.yml @@ -26,7 +26,7 @@ jobs: uses: actions/checkout@v4 - name: Install .NET SDK - uses: actions/setup-dotnet@v3 + uses: actions/setup-dotnet@v4 with: dotnet-version: "8.x" dotnet-quality: "ga" diff --git a/.github/workflows/deploy-package.yml b/.github/workflows/deploy-package.yml index 6d98d58c1..d83b1c824 100644 --- a/.github/workflows/deploy-package.yml +++ b/.github/workflows/deploy-package.yml @@ -58,7 +58,7 @@ jobs: echo $COMPOSED_VERSION - name: Install .NET SDK - uses: actions/setup-dotnet@v3 + uses: actions/setup-dotnet@v4 with: dotnet-version: "8.x" dotnet-quality: "ga" @@ -123,7 +123,7 @@ jobs: } >> $GITHUB_STEP_SUMMARY - name: Install .NET SDK - uses: actions/setup-dotnet@v3 + uses: actions/setup-dotnet@v4 with: dotnet-version: "8.x" dotnet-quality: "ga" diff --git a/.github/workflows/test-performance.yml b/.github/workflows/test-performance.yml index a758423ef..3cc8f713a 100644 --- a/.github/workflows/test-performance.yml +++ b/.github/workflows/test-performance.yml @@ -32,7 +32,7 @@ jobs: configFilePath: gitversion.yml - name: Install .NET SDK - uses: actions/setup-dotnet@v3 + uses: actions/setup-dotnet@v4 with: dotnet-version: "8.x" dotnet-quality: "ga" From 74a8f34a03401b54deb90e8bec98d108677250e1 Mon Sep 17 00:00:00 2001 From: Dave Skender <8432125+DaveSkender@users.noreply.github.com> Date: Fri, 2 Feb 2024 18:31:36 -0500 Subject: [PATCH 07/49] docs: Heikin-Ashi correction (#1161) Signed-off-by: Dave Skender <8432125+DaveSkender@users.noreply.github.com> --- docs/_indicators/HeikinAshi.md | 1 - src/e-k/HeikinAshi/HeikinAshi.Series.cs | 14 ++++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/docs/_indicators/HeikinAshi.md b/docs/_indicators/HeikinAshi.md index 608f7af53..2d7a1e171 100644 --- a/docs/_indicators/HeikinAshi.md +++ b/docs/_indicators/HeikinAshi.md @@ -35,7 +35,6 @@ IEnumerable - This method returns a time series of all available indicator values for the `quotes` provided. - It always returns the same number of elements as there are in the historical quotes. - It does not return a single incremental indicator value. -- The first period will have `null` values since there's not enough data to calculate. - `HeikinAshiResult` is based on `IQuote`, so it can be used as a direct replacement for `quotes`. ### HeikinAshiResult diff --git a/src/e-k/HeikinAshi/HeikinAshi.Series.cs b/src/e-k/HeikinAshi/HeikinAshi.Series.cs index 62eeb19bf..088376caf 100644 --- a/src/e-k/HeikinAshi/HeikinAshi.Series.cs +++ b/src/e-k/HeikinAshi/HeikinAshi.Series.cs @@ -14,6 +14,13 @@ internal static List CalcHeikinAshi ( decimal prevOpen = decimal.MinValue; decimal prevClose = decimal.MinValue; + if (length > 0) + { + TQuote q = quotesList[0]; + prevOpen = q.Open; + prevClose = q.Close; + } + // roll through quotes for (int i = 0; i < length; i++) { @@ -23,15 +30,14 @@ internal static List CalcHeikinAshi ( decimal close = (q.Open + q.High + q.Low + q.Close) / 4; // open - decimal open = (prevOpen == decimal.MinValue) ? (q.Open + q.Close) / 2 - : (prevOpen + prevClose) / 2; + decimal open = (prevOpen + prevClose) / 2; // high - decimal[] arrH = { q.High, open, close }; + decimal[] arrH = [q.High, open, close]; decimal high = arrH.Max(); // low - decimal[] arrL = { q.Low, open, close }; + decimal[] arrL = [q.Low, open, close]; decimal low = arrL.Min(); HeikinAshiResult r = new(q.Date) From 1e8d115b59e840aa1caa5c99d2592f93c7660529 Mon Sep 17 00:00:00 2001 From: Dave Skender <8432125+DaveSkender@users.noreply.github.com> Date: Fri, 9 Feb 2024 03:39:57 -0500 Subject: [PATCH 08/49] docs: Remove bad link (#1163) Signed-off-by: Dave Skender <8432125+DaveSkender@users.noreply.github.com> --- docs/contributing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/contributing.md b/docs/contributing.md index 4203b89b1..fa14cd602 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -119,7 +119,7 @@ If you want to contribute administratively, do code reviews, or provide general ## Versioning -We use the `GitVersion` tool for [semantic versioning](https://semver.org). It is mostly auto generated in the [Azure DevOps build](https://dev.azure.com/skender/Stock.Indicators/_build?definitionId=21). +We use the `GitVersion` tool for [semantic versioning](https://semver.org). It is mostly auto generated in the build. Type | Format | Description ------------ | ------ | ----------- From 705aa36a3569bfa22a97ac2e37d3c638a60ea142 Mon Sep 17 00:00:00 2001 From: Dave Skender <8432125+DaveSkender@users.noreply.github.com> Date: Tue, 27 Feb 2024 13:11:56 -0500 Subject: [PATCH 09/49] docs: Refresh icons (#1167) --- .github/workflows/docs-deploy.yml | 11 +++ docs/.offline/favicons.zip | Bin 0 -> 55714 bytes docs/.offline/icon-monochrome.png | Bin 1763 -> 0 bytes docs/.offline/icon-monochrome.xcf | Bin 12717 -> 0 bytes docs/.offline/icon.png | Bin 6766 -> 0 bytes docs/.offline/icon.xcf | Bin 31431 -> 0 bytes docs/GemFile.lock | 74 +++++++-------- docs/_config.yml | 1 - docs/_includes/head.html | 14 +-- docs/assets/icons/android-chrome-192x192.png | Bin 10664 -> 6223 bytes docs/assets/icons/android-chrome-256x256.png | Bin 14393 -> 0 bytes docs/assets/icons/android-chrome-512x512.png | Bin 0 -> 15305 bytes docs/assets/icons/apple-touch-icon.png | Bin 7469 -> 3862 bytes docs/assets/icons/browserconfig.xml | 2 +- docs/assets/icons/favicon-16x16.png | Bin 1638 -> 973 bytes docs/assets/icons/favicon-32x32.png | Bin 2028 -> 1791 bytes docs/assets/icons/maskable_icon_x192.png | Bin 0 -> 12225 bytes docs/assets/icons/maskable_icon_x512.png | Bin 0 -> 38920 bytes docs/assets/icons/mstile-144x144.png | Bin 0 -> 3711 bytes docs/assets/icons/mstile-150x150.png | Bin 2429 -> 3785 bytes docs/assets/icons/mstile-310x150.png | Bin 0 -> 3924 bytes docs/assets/icons/mstile-310x310.png | Bin 0 -> 6454 bytes docs/assets/icons/mstile-70x70.png | Bin 0 -> 2972 bytes docs/assets/icons/safari-pinned-tab.svg | 92 ++++++++++++++++++- docs/assets/manifest.json | 33 +++++++ docs/favicon.ico | Bin 15086 -> 15086 bytes docs/site.webmanifest | 25 ----- src/icon.png | Bin 14393 -> 6223 bytes 28 files changed, 180 insertions(+), 72 deletions(-) create mode 100644 docs/.offline/favicons.zip delete mode 100644 docs/.offline/icon-monochrome.png delete mode 100644 docs/.offline/icon-monochrome.xcf delete mode 100644 docs/.offline/icon.png delete mode 100644 docs/.offline/icon.xcf delete mode 100644 docs/assets/icons/android-chrome-256x256.png create mode 100644 docs/assets/icons/android-chrome-512x512.png create mode 100644 docs/assets/icons/maskable_icon_x192.png create mode 100644 docs/assets/icons/maskable_icon_x512.png create mode 100644 docs/assets/icons/mstile-144x144.png create mode 100644 docs/assets/icons/mstile-310x150.png create mode 100644 docs/assets/icons/mstile-310x310.png create mode 100644 docs/assets/icons/mstile-70x70.png create mode 100644 docs/assets/manifest.json delete mode 100644 docs/site.webmanifest diff --git a/.github/workflows/docs-deploy.yml b/.github/workflows/docs-deploy.yml index 5fafe12a8..55c9e21f4 100644 --- a/.github/workflows/docs-deploy.yml +++ b/.github/workflows/docs-deploy.yml @@ -27,6 +27,17 @@ jobs: ruby-version: 3.1.3 bundler-cache: false + - name: Define tag + id: tag + run: echo "version=$(date +'%Y.%m.%d')-${{ github.run_number }}" >> $GITHUB_OUTPUT + + - name: Replace cache markers + uses: jacobtomlinson/gha-find-replace@v3 + with: + find: "YYYY.MM.DD" + replace: "${{ steps.tag.outputs.version }}" + regex: false + - name: Install GEMs working-directory: docs env: diff --git a/docs/.offline/favicons.zip b/docs/.offline/favicons.zip new file mode 100644 index 0000000000000000000000000000000000000000..4887dace2b531560f72120651ce78e7e9f03841b GIT binary patch literal 55714 zcmaI618^-*0PcBW`vy05a%0=JZQHhO+qP}nc5=fT+uHo!ZoS>N`)cc)Z@Q;uPM@Bs z>FMg<_sL0ufc^pi0FVHU5KXmj9Ue(!3;;m(N0 VJv)Qj zk7(>{OqG?O03hecJI4RX*$oB&1bPVq0Q`?lvq~r{mfo`rp~!{w^x7}wh!zti#7+^- zW(t<(;0=SwZqdj!&mon~?^r(1S?@g0J+t0d+$aBi3~ DLTe_E!H2Hm;=fB!l+5@IdIA(uS{?}Ml4paAe0GJxTVdnJN&!!hFmo$)$a0Re>k zMma_-IAn63zH5*7_HKO3pjFGusahLb-*=C`$0l9zJv})gJULNOQ9U6%nQNbei KikyC(qaJ @2wZ=xA8g zF*{d#K7kYdL*jEh3#%Xa_130}rb+FD+S3B#KVh6MQbInhlvG>a9pWowmAZ?P%NDw) z)cPQHQ1xM Ce*ypg{quXFkgVORQ6l wSRcolI zfCdj#R#A3aHZS)?Kz#GtBv|MqP$*swjyARpu%s@q)TWx}&df&`u&`dV7=Wp0OfhVd zcYX_J_Hj-ghOrN^typ~c*cmlpHD1-*fKmLb19FZ;*UNG6wY4W}P8-_b#R0Q#nxOO0 z6J8g4CNXUZDQ!7Eu;MH2# YV_k@N*DFds zDL)6vFDgDJC=3`9Tz-51z>i@OGD48pIQI;C*XMRGr#he|)_>wi88C%YBW|~X&!+Wv zcADnvizG`MpQa`W@&sL!thCe`LiH1(Gc{i^X0p@Q)#Y}yR-SYBlA nfeLxJx`oB0dbna zk@?$vV )+)LwU>C#SR6AWha?jzX(=fH()gl?T_1KhxJ2G)XY}eRBRg$oa6ysVnK;< z?#i;9tYOspF0;0&diFv5+^JV;(rlOQiBRl5>Kdm(YGdzQb+wN%@?NW)cZFo`DXdaH z*nKnvq$b#po>Wvj4e!Xn!Iy^PSc?h1!*CfGR7dw+&uH?hbIM+@^YX?a;HOqsc~MR} zSG)Sb37Pw4E$;;3&&Bv>OSVvGh;CAP1BWYh3(1etZ5kgYGd)4VSRxlYyKuBdQ8)9% zZhyD-< qMMQhqkTtFOvX9$#n}Wx1L_E#HNGyRv#sL@#;O@jk zxGG8vQR`2FPbufK51v<0TJ4DoyL{RC2m|AM) Vp ){YIB(5$W(=@()Y$*a-06o@Jq^ZwrTFIG;`2LY69{iZt$X45Gi5p;d= zJGJtIfJS`Ec`sMZv`Gjvj8g7RS~C(eOHH@IFG{UkvyIPe)HC@CeiUMOCaqK7g47PC z9SgF#I6gE6vs1peiwI+Z&qG1XYWbY4QXw=Ug$ R@VB46Nc(2=_t1T+$U=7{#;D(0vpx|Vy6H$RVbIO;|m%Ss8`g+Pe?{` zMojh_+E6MNC2fnNJvVLkf2ZC8!y-)HUGkA*Gy7zP?hSDo0{(e_^obCgM=qb~29c7p zJT5!X3JgV^&iA&WqWnm)_4lsRip?~UsaO%Jh?|ST_fu50-7_9jnZ<8v4ak?1;3V`; z^^@8VJw9GISRnGuyEiJu36c74pz2tnc$1~MkB*zp2GM}=L(fg7_=#L7A@vJ}=MYYi zeXnbRI-1M(TA#-ZutkchqM{tyz}z8wnqH#)G$D{v|5CgZFc25UAs?WCuwWrK-Nkkb ze SsLRYGFs3@kA9rhUis!%3+v(Hm@~UguHlkwlKSeCS zBw?4Ff@v^q?iBN y(ZVV0fM=z>GZsVRs9Kp|`x zbt ^p(O-p*;kKj5)L%Rgtz&b06WAM$h#>rYpK|Hce{M13 z?gqBeg&q^rWdLY|8IjZ6axL`yn=to_&>Fg9sG%gcXn~@jeN|5n!8I9DavYcsVPLHx zPF26VkU!IYk@@N-CvB%Z?*-%%2B!c^FWfNcjWY72#6Kywf!OLUYDymqsIYjkRw^db zYGa749;jmK?h2Z8!KxBMUvMmGRqa4Wm$4Sg!e(g% zOF?(}PY=F`=&GrQ;82;pc2ly%46tZgoo@83rg`0w*s{0ZI7SAsZwjBPzT{`IVAzQl zb%&m&S|-Bd;oNXU7rh6_tx-6FEIO*xYXw#S+YOx_`AWJlQ^8rxT#l2A7vo{4@g;iN z$J(#y+)IhkBa<|-fM^?NO98l^(x^*Ila4GAuo=#r?_UppEdTqvqu-bm0lzPtkka|w za|$@(dSu*B^>4E}aB0Gdnkk+wB#;0hfbT+-QeolluHI3Jsw-S0eodAc=E&}fiu{A( zM?E_7N&H5vBZiRLoIzhSf86Dx%ng~33RNSBF_f|(xp@q7)-#9Z<2tJ*PC6${`0)pt zfJDixrjtfKZB{Og34OYAs2oo|e!w~lB&r1k_$*RtQ~b}aH-1wf)q4_X1( dVUPv6^baVE*Z8%K?EJ-I; LZNJ4)BP@c-2 za5$KcSmNFnt(XDSAyh$WK>?GxC0^-#6und3tGx=AB!iIyoISAxrC}t#FCpwJT38PI3!313#WW z!t5#V6KL#3NY@!7Ba;u5uKBYOFKCYWA+T=ukp#G#)C>$=TEDb$`@RQ< adVqml$x4U+Z8#Jwj3_?Ax+9lWOnC-9JQ0ZOtaaej;^yu zhX|}Gc4`XKBV(?6k>l;}w1I8x2LVINZ^YAt3oz3`YaWI?tf51wg~TaM!xst@-DLe; zqIEe=76>=w{}5MgF-T`e{7+Dfj;O}AFAj (3 bdqhe!7Fq2j9n2d <{tja~7 &|?=QzvvSNMf+ zH=~6lRc5e0t%qe=LIvqM$Iz;X#~S$2JzHuPA3jj7w7_y_lfEXjz)vDCNkkxlvijCJ z#8ci~K@NX*{FDNeS}y!x5V}rePnRtwuNWi^AyrMN)WrhPN#G3D6K;}H3gU4y2oN&f zotXQ>Kz@}lj}fuWBXL-Lv)z7#H-~$jEs0%ne8!oDm1ie;9;S^5ainTqq6bjtYPP;G z?>a 7=}s-v_K;D|bqRWQ zUSm{@jDT5j3jz#yA@c54UV5~I1xA5*_ER3-UU! {B(OZ{0D!G9_d*;dMgf!HF_`-;VI;^?<6CCUy0`qtADfwv)q=PD1J=s zpWY%ie(!-#emq^1wDC}Ib$cXAu4`xQc*= Di*)K4G9Y;W4UY=1ZFs~-rOZ2IDXEhA*K$kB;l1c2h4`L5# zCbxS|BCK`TQUx5;6>@f7L=YH|hN=C9A{ajt*uOMzoAXSnRPzi04r>X6`V7l!vUC3? z&){&WtA02Fz YB28}TvDxMvfQTeemWzF^@Ek5QRJWM?L4lB zrj 6lxwEUz0ZFOXPJ+Sa;P|OUX?hD}_EO z@5pO_@`H3EHPovO3)Y8!Y1PkbKn$QQTZ^@u?LpXiSDVXa0l(Vcz|p~G!*Z&DJGcZk z<=Y RU0s7rOWgZ>QZsf6Nbz-sQ6i|m8c{O319%yNM?A68ASdyn@M zy;xrg@FV(AUgTS!Gon(__w4AFf}&>7e$g^1We*)DHf86V`f57PMs^EXhZ@G1B{lnF zl=of+B{_^ZBf`rZfDq*zQu L49t#A6i-=xu{U;)SbChKsRqBE;k(lp9%5J(%k zNqJyo@Z$Cw*h0B cEMyP2GIOKNEFYALI4@%Up0Mi+IDzFpw$b4$`yFZvCU4# zsO>ZkJky?l;&_XQu$!E>4OfG!HiGR%e*7^iToK>s@-I`FRJ9QBxo{QS)kTCFu0EBo zsM?FM&g==1WfM}+Nq|=8HCV7$JdT^(>@|fp8dS~;4$510PO?ySvPp_F%qbsr?YX{U zKVt;!rQ@O!>rOIXW^Z|BWv0z5b@yfx?UQiiOj_<%UE*YA%g3q8 Bumvg zp6tI9#or4ebw~8ReVyp%IruQ*rL$JL7ht7SCNG?|CR@L2qUz97lbwX^OT_KbB93y` z7}P+aPgSkqH+pKZ7Zs# @Pdlr6$tioyCncEIHGmWC;cIF zCRLQa*>XfJ91l|&m=)~03J1;k?cp%8D<}|gRSteiS}(euw;f)C84`IV+pd$HxU|bM zY=#=y;S`emf$QYK2fQ8vZXk^N$=}1hKHBu4oMgD}ij2nlSl*TBF4<89x{gNO4V=p3 zJOsIny!}aUe(Rv9&_8!DyrBDL@2*Y!m&=nkb%~av*|NGqxxtXIhR76XiipwJKHe-p z_374~Nfo_Wb;BB9_b0%(;M>@K9L$7soo}B^>}@h45~SjNdZK5r(;@!WZ|(yE{TCw* z%QQDgYP)#_?xwOD*`24v1a{?12wbwxa7 9n}W;mE9i@d(qukuRv$ zotmI!Nx!w@O^#;D-2dg=EKxesV6gdEA(+n^CE0zja?D+=d?$L{QIipThYEa&MJNz% zZ0+3f(5_`sU3U#N-(AbUL8J_jFra 60YYW!-Q(r@?n-;xx7We%I&T+#BoLGAf>?)|B_IdqMtafX{9~&h6 z)bhGB=#hqK1p_=r*mOH=6x*P>tbvWlRP$0Sl0vfGmkJ%bZCmy&s|d-zYh;#dV}h0~ zGCYkVE0^MPsd-N=UVW<63c0sB{pvT*TO_YNRZs1WY|9#E0lM;IIA+wRf(7pMrtkAg z<>S&24@AgrLw!0B3#MA9=3O{Y$pX?^d?Cw6#Cd`nTm(*e+KA^lHLomF#jzx=v;A{w zHkuZnGPuLg+Eb`s!*a5;(R!5>39u*$X}v!@mZzZSnM>3l*)osQ?dOb8 E%~y5 zNqtyC|Cn~Y(kWzy6v2Tn%bw>c4Y7IUc}VPj*is3&xql!x<&Xs)k=O7wUzj5$V%L0Q zg=hT!Bt_kIn+(~XwrDZ8^>!I7USMq|lI~lr4jS0vKUS+Xj%Dlvw`ruU=v*f*K8MgY z`3o+GDa+wU5DW@W&}?#D(}8!Z&~e-qvg20IMCRpUg@u=JjaSjIy)7Th??|EkKGfpO z@d}cE@ffSV=Z0eEz5$7)*PjqoR;4IJK&&nP7~?N%$e%e3CSB<>KH$!>w~U<~Q){iG z{K-_yYQm!*TJISGgz9cjQiq1M`i$ePLt}*g*nYWa5D(@AonDwPqKvCd|Md5u(M^gW z001r+Iu`!lgu49PT|ZN>) jvw-;Ci-L-)f|sSH-3AhWzp%|v zu)l9KFMCF82oPLY3}F@ik`bM6xN9N;J_^AOE 94J7wJT?Wk`mjSJ3TR9UR02u!f@{h}4?dW7~_2Vuu)4BcVf4U1-KhDDC|JPjz zP6=oIwevojjFxVOB%Z{>Lu@puq|g9AA~!`WiDWpQU<_+Af@#RwQXgfGF^OS9&|tL6 zloC~JW)&{9LKWXovg`Hbe|^n zZp%pzPq9r$it*n!dYLJ;=rF?2*zFD1-@s7+M`KL>8-JrKg1<)!k*mOmZj&_O6mzPn z`+8SSJIy@E$RE+xy&d7>!9EI~YO%Xo>0P@nIOl46t~5e;7?x`X0qp}EC)WtwVlUHm zHq`uqczzC01=F$;JyEuQ$(3Dzm!WYKQv_?OhVrjX%EJnTJzPxId@7n~5vmqu(W`EK zB`wug1K|$MmK7(eKlq(^Nmg0+V;K~qT<(Sn;Lcg*L&+N=IDyL5yC%%>iLI-xt#>8O zXfcEM{&i-?AG28N@%5!g_e+}*t>9eL4G}3#Bj8S_k{h(Or=+x0RZVG62H0E7(a^Ne zJwn*2fj*!av4Z}$L#EIuqa-<%fte{OLyX*!AO!bAtxK%ARuu{ek%l(W9dA;(t7`i` z#y?vER`nq}?D_;v;tM~c8AE2>eC-~i-((>}Dhj$qi$tRm!4!$a;1zgZW^Cd#1_g5D zMgaPl@V&!Vwx9*f`Phc>Blvuhqot20313FWMtcrDo(B(1qJ4Rx$rI4Yiwmpkmk?MH zCj#nc(ZTT4sIG>W`=CBO0Uvcc2{@KQitv~L)1uDK&P1^y)n5h#(L%5Se{WwnObF2; zt0^TXXh{qP_oBncPKs@^RIg$M=8Bn~$^O t35!CLnl$v*h;YWGk6 z^w% y_C9!u8CxvtE^^=&`0MCn|&*p=0%~=<{<;aCdWcNw>An^bsuWRE_o1TC1bF zcGW5Ch5rz1t_Rv0FPZAGvIeK>+Pmka|M;~jnXAf%FFMj>kAsaPPjq8~0*ej{d~2jj zpoYo8=q}j9bZPgk(ZMcX9{Cwo8cMv-Iav`Npg zHk10Sel^D`vs%a)&D|{&ur#cbewplKyIIn|K}Vd_MqX8nVq8`N~b|Oby4*#_?~|Ti=aL1=cdjzM=iULUkacBZ%^u#Zs-F zS}4DkzJEO-bQyN@H_W+p2J-mSj1k8#I;j!M*Z@E8y;I6Ht+8~leT6)Q_SNB8YkPaY zOp1;q&_40EbXaVMoHbu2DR3<-$-`A5e!eS;xU#l{(?8=T21L8k DVZdn>&*!Gb6Tc(Aove)CCzGm{okN5qFe zSX@AOP|XXeNTxns!L(DDNuI(pv+;(Kz|Yh-;gw~xFfKXSBsOV<%a^_YV==}aK~sCk zg+UQh^eUQNj%hTBMmpb`K z*cE$R#9k@2Lalvw2&oLNVV@FudxL7(F0!)%GFLj k$ty0y^2eY;7rQP^CY?F)vT-sebvswO+rzYr#RGkOo1znV8@Kdd**jn0stql) z84YgfLoB^x--4<`_vcQ{?`1Aq$BRJoYxiR@F4wsg<=5Ziwdm2e8xd56HIplnUglaB zA^+B&K@EQ2&u8f>U8xKbX>lp_;+qk4tng}WwRQ5Isq}k{pyoYkV;#wq2fWLoFFj^t zZ1I58wt=;z3!Voq;{DYz7*^#?`wD*oqL_nUqCsR6sM)ICn5_%cB}Qd0g%)M5sO!80 zi$#(Jff8rO7RVCn-}N8bY3KZsRZeK$D$9Y^b& C=NvY z%72&Hl?+E$`Md;sG(V8>u8X0mag(D0W9sd+J<6wgOILjT*S$Oe!-{yd(+!(!G}0tG z)>nb>XeD-r!L{B1#4EN+rRpk=Z_9}HH%7)i$WE12mq=El=Xw_3C3BXYc)L@4~IiB9#z z!G6BiKy)^X!LD`))S&pQ^f?HwD9`DV3kiWupZQl6WJhX-!%Fj1X{LmYk}XXe9j@2f zGMKOS9|((34Fuv0p9$ArxiG31A$6<>rwf!tLW|#A;Fbj3@-O5A+~sPgMR3dl+{Jt* zAsydf7T*~xfUDp0#Fb*{t>DMXo%l481@AMmIM(Yif#$+PniArwe|nTpnF7JuSy Qf+H$GrI64v5;|o}F{M(r1Ie>XO z+=hfTb0uFBPqCE2A=E}P9tOV3M+zz%!P#+6o0%ZPud3s88kwwfyehSQJ3xnmKLfdp z*Rv_p$@5Md*^$ScrQ$dW{Kn3_tUQhsmVmF$76AidlMHG~_ou59O4QRD@PdzCp=;)2 zumZo>2wV3X?xr hJgP|uw;1UaDqakDUmn!qmTOOAwYah6IlGA`KMB;K zJ^-UJdQ`IP%InikBH3{ul`sDhK^l?d>hUIM`93=dbJ72}2-88y1Xhr0FA3B^vG^Sd z!lMjn9(o|bh1NpzT^`j#3I7XD5=zx?RD>E7DeEtwAcXhLWE&N>q1>~K!6Uz)Xr@e2 z0fPq}9Y>Rt -YEzStFQ!kk^3W64S zBa#G;RjEl~+HiZ7IV1Qsj6X8RV7%3;eZXZ?4TZUK_lwguOZZ!k&X^x`42CY@^X!!y z--W4UjD&!$g)-M<4ypzrI|{ 7QJp@;(YasTwi;Z`pFi0rf&7lhaIfKDQ*jfL`)YmMz%ku5Dh5|+IX`lAxPUCW9 zu)Rs84jff8Sb8oLnJ-MUd3qBgHc;7UqLJLq@b4{5a!~e>x{)l9dc%Q>MQIoPYZ3%% z>HBNXq=g51XbuBb8HZyi$%YgHs9timZl;&S#)x6U0a@dkZwCq&j=k4^)6c>_+g0>| zOCsK LdV~QwCk-)>H4-WX_E2XdiE>XyYxj!Uid~^t zc{fbFYDjrDty`O% ;q>&>cb+vs9@o9$_iuLgJp9?HqWX( z#<*_iDwe49YZCWWgr|p_cE&6JTcqDnx-Y-?p^!4mTKHFuezRzUWIx^-ee(RTE%&DO zTBCxCY?7Ql-Uja35f367^7zZz#}g>QWMtcJM+fyEN6aN;WCS4x54|NKBY37FDAf7h zA-dM#AB7D*9Sb1A;B3&XA1W^JS0dh&%oGj>w6tcjI%pOrhcw2k%TaoN|Y_ln2{g zoB8*VNa)&*Pu|9-a9_Tfm-J3A1sQ5N2*@3E7@iMnMwvg(3kl_s7FTQ+y56^%y?d&d z@GD}~?Vq+nRe!;RFp>ua?FWPO;H%(!9>KcoXDD9~SVz)tBy5(3+O3^MhD%{&t8f oj0MWIU0uA_X S^s158fVkvBd7~3T|~)H)kPmm=*AfHoa3x3UFsAa)GlsR&{g>)8sz_ zHw))nk)6zyR*Jt$OOx+TmL<`5TtRv~ZJsE|7i7MCdF#Hd4K`it?-^{(Rm#kBo)JMB zMKn0T#or0Nw6?poisH?5(al|TiL+u6gfnz_Y4%J>XlL73w+$H#$46;F;pL}hzbB|X0T6x z>QQo1O2Sg+_VJb8@s)njm2Tmcj^Ez^z|R)|n2k4$sB#XhGV`m@bE#1ctTZ)oDjiO7 z8BTGPcWe`K81#y55ONq2aU4+h9y;}A3U-N{OSG)>Fj)&%n~67_@{k#dw_lA^4X<=^ zjBYm$>ijub*kQ;avQ5mPe q$nxX$AY~&(F1Adei?j zc;Uk!>^S6HE$dVz^Ut5dzFOSATI`=6hm`BUYcE_E_VD)4t#@%!kWmD QKPOnRH5TD;oEjJN~3zxuo?9eQyI zKwp}fb0I7Bc)dF6pP1Pk*zA8fo4o#eaocyjeZF`w@IH03-haKn*S9 ~pYp#)ND=7v)WG7WawIOquY|EkJ$u3nY=;PbBWS*+pgx`w zWVN1uA^k+<8SB&AsW8TSb(MIs?47In46x(q*2cM{hU1QluAffi(@m6tm(Cn2S-=zW zZ9K-F!E7fNCvs_xFr42- #d;^($ ziNEB>fYbe4u&RfWnv;UQE54nBt;r95!gq4FGsZW!b20<~+_DbtU?J^Q$jK*UC#S@Z z6aXMZFf@iRC`2fdiN8Ql@P+)C28}?78kO)T*OtbHriQSGASV69@+4>gXXr>ycLL1G zKYsxb7nTvK5zq_xU-1|64thq?&oK7<3E86lycZnxP4peisqM^dY>bVlo%9W899{m; zeC>Y(>_7d#-VK*(n>L#wh~B%kX$`b+h!LJg4ltDbL|DT9CCu2Z!no?@L{P;vd646e ztItytG21M{-hTz-6%fa}r_&itO+e+yYHL;CE)6?1ZB`DXqK!m4YjkGMOd4Yjth&c_ zdXdR=v%c8cy?lK{IzO{!d_C?zT~Q|P3SNe#BK9Bdl6F2nsLlT*!!Do=uOp=AS g~G?||a9|`w|MnpD>!$*D;g5g8+QL<+^H^RcN&*rN8pLno-fs*qPV+|hZ zv!A0KOi8jQoHkxEXbc^B&3`&O_eO=XW>(shiZ5)hbQ9dPSZ@ux;PtLsA2fBAbsm{y zX?JVS>>Ly*N8vbX57*=@Ykx{eZK%20i}ZfUY)Y@LEQ(naT}W~?P1ZzO?y$vbTb*iK zrJS>aQvo^2>16$K 3sIKdowf=FTMJBYsGuEN9ZOQYiBBYuu#97Hfgk7Smu7+@>8ZLy3N~1wFhDw1 zEbAWNU%$W~??2VjG~@s=rW6qD5E4l05+%g`&+h;i^P~lsDWQTnMqH-7+RsRxU@EOf zRHh9W-`qnZZYEF$>cn9_fiZG!(z1SGiXTjAGzlFE7Eh7@o0f%<)$l2{$RNhJ+NNg$ zKqkA4Y$J~hnxj!_V4)yvKj#0KDPYh77A9*SVySUdd}#1%_AkFEE}sN>0s1dHr0zUA z^jo*2qR0ONO&-JGpUv0srd|ugG>oiA4Yat~dYy znE!j~r}>%x|3`5CKdk+~LEGILP)fg4(Wpo0hzr9>)5A#}Wt u)RNy{ (Q&@C1DY`~A(i!^4*&$vErkKB= j*smvv5e_ouBu{*9Q84h=LKkp%y9M4?;^F|2bOXueAV z-`1Y#3)at1`mbkEqoIYx;bivpINeqw2fC%^9!spR^8LClsvy+W)yr~o@!l$@pCCvH zM=hnwi6lm)im9AJ*U+EIC~2{#rzU%@iDLG6ui5LVxUCy?lXmgQ{s>enMApz_MA84C z%wJNo1BcKdmq6NhV?A|4TujPI{_lSYkJ@QmPt0eDZO*qq8VBzXn2Zl4 u6|}CJ?+1o2K|P{C5zL6P5%#<~)#1U~uf?TiMy7 R*#@21wiY#l^bq$lTAu|tYe$dh38b`j=Vj@J8I2Le!Vf-pI4-Gb`B+F zGp9yjdu%D;>C*tV0mhXN?q2pNcj1?Cf-x}znKVQ8se@*14CPoBOig;N8)L23iAij! z;TcZifVIFxKwRvTthh-H?XVMKPdBR` s8GzAv2T4Nk;WWgnHr5d@XJ`g%
fsu zX}NVu#w0#G;Ql^ZYn3Jg-{Znb)$v-Faf2O2Xc;a%1GS3~;n8a!9oUZ %SqfdMfLFj=1uF=6bLMFlpAFEtuQS9eR#w=VZUIq*eJz3lbZ*%hbda) z<|b*DiS1LTl)B9z?VT2ph_-oI9)CdW87V?KeNXleGjG~2#@~L9_(QVGb0k7NWtwq7 zTy2Zups05B+e?im=h?bi9-_D4QE=_MtM+*ol LiFWQH>_dM&XH)SlZg0PUo-DaTb8EQ<_e$;<1V=h5iz-w=bx%7Dnb$5M$l6&=5l_L}x`zCKxUQUup38U8Epbi~%>0O2aTuUK+0}`w+Mx0i z4azFgKp{GrovQ*X#pd7q@R-HX;K6XyZc{(8a#B>pTPZ~wOPU5!MhRp@G&6{pq0I|7 zJr={gLd+@(# eRY(XDW-JDz!(v)DVXcD3n^WJ#gCPlqAKEs z(1Xva5|O?Ip{?96dX*2=fRX|3_VM+2GqlN}ORC^Sbj-7$RWy>f* VNG=6H=>0w=GaMOzWE4um zfn@nV2}lX@^(!`D&5Gg{=Z_QzR6Mk=a-d`sio(^=oAcxZ)l*y!bSvsmrl~9R=`RqT z;;SuQ^^Wa7?xgIH)lmXHQ1#RmS8T)}IOko2n;G`loe$Pmx&bq=L>UgqW(I67RI)Gi zP16E67ebCvJRP`Re$Alv604zzs=m{A#1|i0h~2IjXJ}_Jodxayo!~T;(A1Ji@w{!p zPoM|2G8~J5Y%@gGKFK)4K97PyX jLa<~VDG3GvmG=wm?vF_y8g0MsY > z--B)-Hf6j@oi* ALG!(Yc{;ocEOeUZ;5UAe0ld6Y{mVuxfXbjUbYQb&`(l?QLcpR%z zK2j@0ezbvR1peaz b89Zf-wxOXZ$fpEmguXd@XcBF+8mko=%rOWe9#F zyKLsyiQvkW!*eNC<4^KI;k}YK!58rt=_n9-8kC>G$6+(XhJ3)Ge{cZ5Yfe2Ng-+mI zTHL=XBqAcx=qmBC>JdJ8FenTqx_HN6QyRe#f_(pkKoYrNdn h%c{EG{mN@ag9Nd`aR7K}B-qkO8*zy=U7=3{=*u7Djqfi~yK{Bb;gK zm12wyn``)E;d~%D5uz#{`*? !b|gYUR`cYoSEls30r7mb z__sK#7Yg!bz0Z-8U$9R)9Eyg~l8XjLUyFDfc~yKl-JW+TnUkug?Z9*3wIddpd1UVO z9wNsaB;#OBI!y>QGA%YpRCPg*rOW9TGcR*Z^@J-WyROhK^%WOkXugNjLuNBp>^=s@ z*|N9q@CboS(h8_$UvBfr%5UVU5nhmRYA>>DVy zjDDE*ybCE^G%BWt4uf*=O&<|7>ohqOU-@ I#XZBm*gP+8PIL&a)@7l4u!MI)6z-ou$S9}jN-T81r;eZ z^}QA5$htT>EG_VTYtQkNhcr1gTI2NK!ad^A|8b^O^NnL<7iA^=Q;`@T+;NeQgTl~q zOQ&o*{P?D9DZ7Uu^;=si{6Mcmc$5+JD?}YJPfspxoP(NbPGqdoSt6P$z6apG>tB~L8QJN5C2YSwyh&6 z_chV-GU(JpyIp&fp@Sbi&^GOx-a=|BwkBt;bDh5Dgn*aiiPuE$eUtu_WU%5Pav8Te zwa#_7G*aJE;JE1V#b48?+TR}t6AzEKiD2iiwgdbglIHa(;&PROYu(dJcQHR4+?C^L zx;QiJb6l7uHhie)v@bqcgbb~+g&1FQh#`?*;A_pjB_ZUi=q}PET=5kjPu1V}1W;sP-&k?pt~BB3lJG*TI0(CrRr% z7S@nvO@SV8c9cWv+uy?7dg|%x* k0cz6a&xCR8M=*FEb+xw5a1?pQ7-` zB;ru`H2(1+;;gq#?-Pch=__`}deL%i(%W#{$hfgS(1SC8J%m5Pae$2>M m49mp)?>5$pW(LUWnwXm^mG3-7nqQ+XNqvAS#);vt?IT$vwoT+bM zOu|?VeGy^Xt04wVyhp+%sMPDp&U92kbA2!WIc@J2*xd^$XuPq2!a9loV}~@Kns~+5 z$ (Fc);f)@ z()925?=8a!Y#RApeac(BPvIeLxnEbPe$|TYY=8b%o%cJe@&3iZGki_RX}2d+yqJ@m zPShgqf+XV~lo$5I|C%0L{B(gzx#r@Afsfw>x;G$VyM=tJ^DrHRSaP)!1ktQN$whpH zexw>rxWVnauXxIHE)QmK=;=qaO6B(CDcTjW`?yf@gp_ym&7gfiHvQ8=epsY^C{DmG zI oMvE?{fVz W%{b%O1vqG>fBE1{AvhT+*}q|6z4zQ$7IcGu1R|?g+0Z}9 zrY5Y7)rV^v!FG9HX_c&jmpixmfOy17-?Cn +#rB1R)-pl?QYAV`*sYC(>ZSk7?Xod@ zz)+qgz|hnRY&4{h2zeG8(w@hWE{ddT@9Pcz@r!@XkN+CX8eIwurT=@6r!J=bVD|rs z^Z!e&eKpZCXTbmf{|WK`POY)hxv~DQnYI57vHRc9e7_$)==VQp{=;7U>(9>rAI%2= z{9iPmUx2r`yzqyf{{U!V$HBQclk)PiAN2gy3o!JvsV*(}A>%(t+NSJ3D*e_2W>@te zF8|^90s{QnzTL%TWrgLrR|$*_g=t^CK*A1#!qR*;PPwAO+=`Zh#z`V_jvb;7196qU z{#6DA wUmnP&G8BUvG{y{yg--e3vWi#^dP?~ zefMg$lPK +2L^jV7*(!ro^Qa4n@jY*V=8PDUj+d7V m2%p!w&`QtW28>BTqVp_pBf^kb8F# JJrbdW%^rLS$X?-w&lb)IXblF zCG=zk1>2D8c$HU&W7S7t+61KqB{gQ2MR>%tB<0lh=efjIdjD7>9&yd7xiuTD;+Nf| z9W`O1qN1s(scLF!@h&9MPGnx;;cj8ky56N8;ZXzW-ac`K!}b3Mapx4=TNLE$*gCOo z+cr*Y+qP}n{>RRVZJQ^ylM~yMnYmT>Wv1@qT~+&i@9wo~_3p3x*AC-
bReo5-j}t2@DoQJg{i_YDD#~ig3NQVb^#Zz!N~<;^m2!)!U27D6JlK^J{(~-l zHcWa|RDE%dOO5PEnp-m< +lBiRkTzE*`uO_%
?*mt3AA^10uoN^<(JP^r7^yQ~ zFR5E|11rztw|#?G2gCR44^y+_eZyO`SJG*in+(lm7jg?*<5TbBeJexv2UmlG^TS(b zQ)df(y}c{Xeb1w(D`NqXVJLW|pOIb8(+$0cBV(&!iY8+e0aD@fR+Q7o%WQppa|?U( z4kx)zO78d7`@LgH8!L}jpF@97^<#Q!Y&n039VFa;QWuZ)%PjYwydUbwD7c$igf5j8 zG6@}~aZEr2r9tJ{R{5U-Ch}7ESgC(T@+^N=9=4PH&E1~qqfs@vBVbnR3&~q7&a-nh zS2KMZ@3;Teo*d@9en#%PpL9QOx%X}vVuJpkrK`g?%xks0)RsayHXW_q?qhP-rk5_~ z1MrlBc}aTEy(^(K+OOw~H!{2wO1Hk&Tj|%2<`c-OXKZ3K$q;ijx1G-0I i@AOewIgL;WHAFqV*l#6zvF@syQ>$BuRH<)DX} zONAf{jb*lXR;7iofjV_LJ04k%l19YM)%JD~+FiGmT$$3k<%@VCB3h*|FhYnw8e>SS z^?|PMseR6hAd_4Ft19@fiyGj&<~RU;@F)l7$b4?6S_(Gm3$^K8m5kGK!#Rgr%z_{( z=nuSE(+B;(gAKjQ{W73h9SgW?$m(98=G-(qjnA@ohp!3|G#|8rFXZB0NSb)IfFOn( zplFZ r(%NR? zFHtm`g^J!ZaP!EhFJE2OM{}($Tz8Q7=AN(gvf6J80@=?CS|i}U&T 2qz->yZa1N=ZUozb_mpMQh;{L$(3a)ysz;^8;GCN+(kgJzX z;J?8Ycz{G$A4#t6{ vn8nBu9)O=U(8k@ zR|ts)4xW9=gMIQtDBl<{l>r(jqJkMx4zQgSM}R0>pGgwP-7cXo#9mwc5yXqaLjHWD zeG#0IB>AtYUxZ_X95HEU0_0c)_Rns yGfgv_59M-T}XAd-aK!JV$A zNd6EOJfVi7MSZ}&SVQr^qHZ8V$-fUmmmo4KjDXtt{l|cln_xAdo0}j!H2H(N$<7c@ ziz$KD2(>!{INM>*;BRV+cUrTR@lTV($CI(uID$giB}XdTvc3zmCEZti7Q#V;!hY z65{l=t&U$Gn*0((;~Jz%f>AC}h!^5?)EL&F88+f>9fS`{^iUIDUyya2br*&*xEwR! z1FoqvfI6hpQ(_CqE-s a0i^iOx6%% zmIx<&iq-(hL$KdGOO` sGjemhHVrwTVI|I10cv+#;|I`%FJJI6<$3)R6dY z);+{-M;Q}oOA;rH1kK=~!rm> 0uD_vmi}JM-*qEdu2yxEyz~`-r?=k#s`X^$TEN&QW1NJ z8}g zB#)`7sgLH9xOoJowKx+Yc@Nd&Od0NzC=}+pFs_jwA@#S(4J^h0P37N4PsK0wAwDC0 z|GjqoC;WReXS&PwY4U!q`2T-!p3BD>Q1kN!mB9ZU Fe9ALGflDga%2OaO)s-(M~g+KZSkcb#n(IbB`y?B2C}46`au>`lrNHO zD&a~-g2|aJ=!oh@g-JmT!R9f#u}+ogG~=PUiZf_ZSv6CEXqJA|_Q{_`*Mv8_v2;Nx zWKQi(_$?bDYOQEEa5W!kw{^}FvFrP~*uFJm aLjpPQo>}1Q6h13Z z`DuTpwkBN}NYUzhf&w}VApn&Z=>G+l|0(=6WY|#)^#d!%dHzS?FE%D-kDurNRkYOH z;mw+IjRE=Ab*&TI-?oFLnAjPzX$B!yp%7IZ( Kp^U;j^2_A9=P}Q{AJshBxvyrs(7nFreP8ny@V=fk@3o$$n#HSC0%HRK610lW zo|FSJxalRpC-dW_S+T|tnA>Z*WCc3ECrt-s+IK%)l~bp1c#j=n08;34&VDYng)AEU z`o`b;o@IIXwx;^{=6m&zzpG@v-CsaiYQ|aKUuienY{tp?wvJRh=y=t*SmmRlPW5VR z__%xg$Ua)x{AnNHS&W*5(QWM%RqgO?ui#aoNcW`PJ{h{abc{t@Jljfr!-r(|wkras zK=T&e**d;F$G$KAqUL#M^0sg>{OzSN;2+Ktm8#9jeo4_%q8Cv`M^`=@!>QGBwCm}P z9qV@QVIZXQ@b^@rb)t5=J?FCy7)P^VnW7^quI>AG3rzfv89 q2*;t;sxiOu%bpu)DZq>41i; zA<&bITeT {kdPH!p5}1yVq^9fK-Ev-N{}MlsO@0T(Y={0AQBJr~3U S1s+SZ2m!tCkijqT7Xd zU4WVS&gT4Tu}psP?4jwWzK^u1prBxAXlQeDGs`9a{z&to97G(hFlCLA}@STgS%|i{He-a(G%$H1CGf%}xZ!KVq zqN1dP@zMK@TuoN;Uk%<$m9!q}P&b!5 n{(p>ym7)Oe2cB>)a{tn*wtCO3mP7(RYuX3tc^=R(8vW#K_fu z85tS1okF1SO&sZit0;8wL!r0KZYOcNKy)R-f_p@m!O6?>s!7U(nHHE NpWi;Ua6gXhYlm0kG6d3-89eLR~x>gu%6e&>J_s-Z0!Gre~->*5o zitJ9!vJUSDqrJ}G Qtv9Nz56Bjaz1r$IDqd*D^1 0D{8=-9}Y+1#J zjeU5LF>di`tELZ5&UP_kb1UQjis+Klrmuz~T*y^_+46(8ufcQ3BrSgp3d@z`eIW;t z I*pibQ=Xz794iBHm8BiG8d>YG=y_79xvNST*|Qx{p) zt5C)?H4HY&ra1XEw}>-~@dg%*@+9QwuV$J*O^5@#;y;BPDUDOgS0uOw$u0p7XKN;6 zHTf(%JlEQeyY`IJHC2PD?4Cg 8P+ewd}1kL{SG%f72+#Bw2hgwE6hH1 zI@DCO+jqncpl3*|afn)Ut9`ASZ;UyM>F7E}l3j_$Xqee9taG?e$EF_1^1!B?KxDq7 zP3EEXjO!F4DT>@di=$2{3ybba?B9F5#6P{lSAI$ c;iSp5LW u+yrVD#oa!6ta+RE;Ld)(b7Tq1(lL(RzYZoUrqAeaDhgR zoJVfi7zz-F@!jc p#?$&40$4KHIn#|UEuJIZEXi9> zuIu-ohK9W <%P;e0IN3!TH&-HN6Jz*yp5=OeJ@+tWWM+9I>6-V5s{AQV`;z-mB L3U(6mte3!%xG`}Z(v303f zdndB6CcVbuR0`Momf})VynOr-eh;qCd}1r;y>8rz*VZ|RAA0$ID(2^M)JrO%<_DA7 zV@OtGMr1 d{8fV*5AKtjYCAt?*2FuP?bRVre#rQ?+D2!N7r{ zbwYO}&oGgxNcD$mmK{aZ9$K-gS&6$wF1#vRT5K*@qbzMGda5W@9s&|yN17hN!pAJs zNe!j?xXaRzVZ7F+)7N`~Rr>vDCy1z~E^X*+Ng1+x7Yt?F9>lf7WU=W!VhW*j5a4Yn zG!BC uq>N zT^(ru6XH>uaaYw8Np < ziKWwf#--Zr4x7RMmiX6ai6dC(ljAH{`k?&PGygn|!a1y!)!uha`j@6Z>mPrCNCY|6 zCay3%Gpd^4e7SbNx$V9#tqGscTN(VQ&aZ=GN%%!X_dVD+UN&LV=9`*n*ZfpneUyV8 z2{F)Fa*=JXCD#$ZnHpICirI8X|8$F9o;2q7o@`IRO;2h36tQELY5`(zc9M{6T8#Cb zld_-1zPJSWJ7}HL5gS=d$Nt|dZ@JC;2qT6i&yUWd@vSm9+DB}2J^t2dr7wjMYG$!9 z?KEr}X=nmp3k3Qj=X7-m1N-XzIylSl(c-f$>csFi^SNvS$O5d!2~WUn$68yG?&9~I z-A*b(-o37LVfwY`eT!pn51fTo6nBTC@}#`$LeE=89+YNannf{>t $dgPd5BhI=WeVTIj0kQK z7`g8!Mqs|iIe#p3GOzk++&Kz f_D`?KgA)g7ZykYsqhmj>Aif?-e@8G>E^ d6aZRVkRzYJ_m;G*} zuTaJWxS`;mp=_n;-s3Tbzctkf=P)EKw_DJC;O8*~vKH%7BxSrRER 5@@}!>*>* zkKWP3Y^7S1p{`t^PQNs(H^rfu)Z~WIs1&D#)oYE>qQ14%+LoBNw&p??tGN{f&lyJ$ z-Dg^xoIPf+N{9cP*{@9IZph)E>`@@CKk=0g!PvTD(MKTck(e8pWGGsbU^3a;cx{H! z6Oisor=~0@qq$s36BD~jX_<{rvt^@k^S||#*S@G7>-gMN7P9jivisAE4Upvn|J{l+ z6>f1@%qt@VdaW5;jnbj*R~ljd_YCG^tFW&oDsNWI3E{fAhRLAlVE_1JMvrZ5{HR>3 z{bC9c0qN0F<(uDd{Nh9qSA$@_YW8=t-{FFc@^SQO&!F?$(hA`Gmvj!S_7dK53I+C} zSpo#i$Bv;NEbml^-gmt%Hq}<(v^K&yNvk}e7y!`Q{PkJ2PK5&~&;1w&*jzB7$lpjl zoKf6Y=2^V4-@yidaKdBzjMRRB`oS1o%h}U#U?QVQ(noNkI`6zIIIkGo$fS4{&e9|* zSR+Hm34Pf44};Rw3LqpXPv(2Y9{>&MR!sW}>e-)^Qgcg#(MA8uu8GuU5~cWE?XOu- zwE;U1Uo>YbZ9^y-@oFDYj@Tnb@La8(8(E}Q5ZBZpswkXp{SJ^Rd}R?41#QSJZia=N zAy)|3#;uL1)Z-cCjRSALp!ucjS4+W}MRFaR0sJAd^5GTCa6g(Ea5DJlNjq=QMkg+> z55uL7=$mQ(It-Fmn*fToFzMBSBj)$nT4IT~f*i^l*t|Z|-W3wmM`@_MT6?dY%m8F8 zUIX$xSmKmb-Sk&HD|Sy#O-1(?8Fs+Ds|nWGhfu$g+R=*=!X5i-`xThsI3CAB(Rz6O|=jwX8DX& z&3minTq_fLXjp}KEkOuIsv^`Mw?Ws#D>Hd(q|9%T!`e+men}u$-zwQF95zPm=R%dS z;jApP*YGt~veev=3P)OnkGIcs-$pAN#IGizbXc>J?&>}lFas99^6#yGmSHN w>hN>~xSE$Xg&bPR6WZkfduN^zeubDCYxn+D7W!Qw||oXM4c&n&O~z<7_#LWuE+ zw(Tr<*F=x(c*&_0SL1DND5;*E|CLhaT%NG;@S<`QYfgwQJMr#-GqHmZ$1V~Na1jOE zj28zGWpl9eU}oumEB~&cXYR^k?j3Xs+->5yqcgO(e%Z$K|6G`A!6~hP!JEz3I=`sC z6WXbGGwZG-dcDj-%N03`UTMfJr&6x~MQ(S)af@eD>6UNhUN<-O83MZIWyJI6{paD~ z^KrZO@^UjRlS^mDe9 DYpDiYom|mm-3@QE8HIX}|HhB6gR_o8fS0eB(_7Ix^U8EYjTEPBA z9OQ|+zKsJZo_I$w)`pB~g*WY({0Q7m@2|HZ$f+-3L)L q_>DyS6|v_F0CX z7&%p?jL=i;4s!om4v|^fU<2M2j<+G@gz(!UTs8L*7zi&IMCO~<3Di=)WZ)IBe3=x} z1B$M+2kOEg6_R?+SmHMY2Lsy!@YlGr-9M#CJi=J-$bC3sH?YLfXd!Bk1E9daEglLO z;=Fhw$)m4$0~ovlY(`^QL@0!3JBY^#)4~sGJ%HwJDlAi(x&a>?H0J2f1L)|2aC|EV z0nng+eE}~b4y3lV!voDxX^p+N#`qbD;<%-zT)zUUB)g?pX2H=YX9)^Ek$NPNp=yta z!+p4)NJ#aVJqh;J_V1R&Q#wBI|&!_8#F$1E@Q14-arUa^A}VT-L{(9OST@NHzf9 zjCEgO%YG9{Nskh a=gVyO*lG5%6aRcA89a0nfC~DiVZP z1q_ktQp4VSfFcuIf{*H-EnJJ17hmL&Z3OM#Dt>=RsRV_f_-jV(oUWus)JDd-d*-_> z=NtymV2a)X4EdlPynA1DB1v>=XfDoE;8SDdA95M`>m}Kp2d+NZN?4Ayl~{;_R#BJ! za&vC}qDv_aAf1*v&gTVe);npDss$Gj7kq9Hwz9xGit?obr%c2ecbv@0Y#fEPp3rLE z u_t>*S#sgSa?htm? zME{12VMKVKaw?EyHAgEccKc7R{|N)OxGcQIt93oMbq!iqC%r4%IDjq;p;Gtpx-j zm=NZs5JI Yl}&`q*z6cbam(6_D+W=zL6ZrD%M- z2 3zF3r`5`p37uO57KXwHpTBp^V%Zg(B{$#F _1uU_lBHwO z6KDsNMei=dUSw)fSRL51Qfh&4m#;v1><3W$VonhYj@wAldfq?>Il@te!7aO3BrIEE zc>32{ z>W9`~>e>%TD%9 zlV|4N*GVruxUpz`B?p@c>Wdj~!Uf?A)QCqTPes3!f_jUkTgm0~%R9)p_42j@KUQfR z1C)aSc@!=BH!?d-8E^A! ya|Yc?a~A4rcLRj47u;Gc?jc?{xCqE4`p%URg9irJ4-WB zk~-v6{U8o>j{H~Ux5_#8jPsKjZ@D4rrWmEz^U*EAL#jpj2Hrrtj)azcSUn(GDPzjo zL*sPuAkQHipE&~d5_U#DTW$y2q vfQpmtsm95DlWttKHA;Wfy3mw?T%4H zP5~ (Dccy;ovagnaZr+w&ks6CKck#SCDTh|ORZT_mt&6nSZDAOa^`h=aw!FzNd%*$1(Z z1d9gs^2pbE5Fv&L6G9%LP+bNIMKx~n{eiOVv0jhRTmSq}(<_)Q$?jtpPSvWAZ6Z_; zRj_@6>=0lirB>?ICIqi6ZVdRN51Ua!Qiak?oRYu`SlvW}bxK5e3`YJ3ov3 N#^Oy2J@1La=dz~ zOVWDc+dt(*)Xg1TNtp^h8BRBdnM-=$1s-|b-Kjk-LGN=T1u46__j42hYoa|EonBaI zYO%uU2Dxg0%o>Skvjg(5jh0&O2Jp7f$^ltmFjOI0ddHK#R`NLaWSb;F(0`v{U3jYi znAkq~Uh}H~#be9R!AUco!17F~UVNY@QVfhP!G8^X-`0iuA_q2lSwO?Jp9Om!ao6z} ze-T3(m1urb=T-Px)DDapPtk5>l^8Dpb)yqLZ-GoT)w5%^81jduln1SZxnU0M{s#Hx z5qKx!w9M+JyRV?R!wxWrg~ &AVie`EebBK81r9{EieT zURX#RA&&BjEzlR4GlXi `gHj1@SFWo3}sp&G~7 zENx*c+lP8==X?+ddAbwEG&JcyJQY^g_3pmP4 (lf zK7(P|C0=^kjuQ8ic{d53kV}N3R6tkNN2$y&m5(}8bbaed>9^P&PFI8RfrxEWyi*n~ zqMy Z|O2Gd|mF~#jn2as%nf}$<9 z5O?n{&fc?+XLNMQqcx_2?$%N~sL4#8*kWV9=DGTcDNBd{!6Pg=HBe6t6-=k(Ge-ME z2~lptMl*5+ Qt_KN;#w0BWqdEqVZ)=*elmmL$|Cvk_W^z&hz>r`{RgL%p1FuioRLK#ou zL$};S(qjHO%aIrE)RPW2SJ*F%0J;z#;>-4Yq0b)HZ_(Nyu%^O&d1S$15GFwZuOyCy zbi}R4mA(r`JK!tKnQI~3b`VT(s3j8zISmYD!WZFpjb1geMA*y0jU^iHBB5tQFwE&Q{#%4;u z9wx?3g^dtPgzjA%U}=&i)y4JxC{#gH) Q&%A2 z+&KyMYRYp`VSU-uN+nf=#S245!j3&B!`079*n!VxRZx=XR)a?p#;zuF3f7RZx%h*h zaR)i3e>qhONX|LI9`6rH!w-*2l2URz%PiUrJ{Z(G^DtLJ#n&e+Pgv-~@nv8;SmF9{ zN)4t_1% uF1#75=FM?`>5mSyJ`>SL^x#@ 2L^MrJLQ`u3FIxv`QVk+f-#SySiFQ8rqbI7+N}=O|@mUg_2MK %~l1rIU^ ztbBbQ(~;t%IYg8XQp}yrFq78K0;M!PG9w_3?SV;|P3#=h+;5tFfsov&{qS}V $3VBud5JHPd}!E q(GyPKW(+1$5lCRg*s zNQzhp?b|r>U`5l5aa~fsl@3wO4j=0CyRdI@AO*e8-fs}Nx;=dv#3JttD4(FuOp@c` zurYoOl8~4WO%cSXio5A_@o7J2@sNgs*DF4p`!eZjzPL5`8h)bLpQ${luuJOkMPbqn zLEaE9b6YLPCVN^PbRGJjN<3n8DgrF8tY#vqNy!9~4#M?S9!?dt_>G>1Jcw$U^Psr% zMeB2&-#TOQrtdH Hu2t4hu6 =ieimn*bv4 u7L zXq{N}8#+2&Z?w w)zHa$MD zw=T!(;R+`!H!UOX>xQ(}NK0QXHm`qgh^#r$chrd;?PpWzk% Sv%uvqXY_xEDUNH=G z3b$95*!K>Ndv}oj@fx;Cq+`p;CW*&|B2dLRi4%H}Oj YRk^A#Ur}w%kgw&6tybB0E56A}=_V1n0c{H94-Iz!sSY;jY z<3>e4p;~m(96Jza?%@h^J45kowaBNfQhGA*ACCs`2sjc;q5N9-U0pLtTnx;$K%-BM z5(v@^Yso?lXLahgmv7`0s?^wnyGFjljhzFMG=zo{%_Qs_!Xa&I&=^W+A{*xynIy9k z7J{CLxs}%7j&&C_3cspH9*{c)p ?4!MoKqxw_u3!-L2%>TErk)oHMkdxX~gHj1irqz8z zb?qWc`E*4t6>b zOSt+pmrOOc10M5(R1PQ>xU~E40(qikpH%qDjV1#6gHOMSKDCHm5`(p%Yo(DWz_R@? zoV{PFMR(qF@Mv#!HTv5BOxyV$(zJaYw|}!5_*vjWoCW;iS}?sL{IxomD6z)X2Dxym zQ4I^Nkvk(QuRkLC+rSc{Xh(BobisT`5Q50hVa4Q?swo=1E=8bGE!{Zi)l9#Ys#Pv4 zwGBrj2-_SQr(!ur2nq$f0X3@SX9x`02TpdnXtg(LAoL9zC9Jv|e>g6i#YtlfktB** zPrSn*btJEI28N_=Ad_i%5Xg+bs2~< zJZiL~(efoT_WI~TdHM&~L`%79cmbcGE9Mg=6Ty0>FuR0U!i~KYUuCf%+%_q1FT7em zP4E~@t{d@Ba&1{WCyWn4p&r u$j*tIq@zD@hy}p*2<2}>-A R?KZ4zGP#(#m z&~qOAt+Hfw)mjRF2^Q=`=ZC{o&jH5f1NQ*L80I5h3=jX+xS((*Vn |cECzZ2c+a*N$b54jg+Hwk5$>8$3zfIR6~P=mCE92 zn!h0md^e`3Lnh8HjLWkO1ahzW=O@N=Vu 9`WLi&WL`uwuRH7cMYX z9?WmdjtLceTy1j^?~F+0JSs *D*L$+Hp^Co2eNt*U{r;vk3sLPAv(*2)h2GpgJkT{;Ac*qk z$U!2JVaCYg6on5vdCeJJI$d~u9@ia^gU1XcYu?s=3Pmo$jr8uZ#Jyv#fxq?bz9f>e zsr7FiB@4uHF*wuWEW4tcw-J4k4o~$YY_Bw5s UG zFwZ#*>Kq*%yYX_H(J{hZ_n-^?A6vB$konhuo!9Ymx;ZE2VJAqU-w{OI6{#Z=@SoPL zi+$M?GXGx1z-ak#iAYtjz-4pcBR&<|`uwU3iaFIFTCV&zT3QJRTe0@aIBuolP~^E< zzv~Tq2bMuc=?r3i;5w%ATBF=73|(y <-8K(_&mW9YFKe3j$!x#)kU_^2BqF8C$BfhYGrN9j9v5&lbhfPzk?+D+S zrk!YFgF2ux05W&kdl*QJ2VRsorOvxhlxGwD;NK@v?2KZpw4kMq%T^9w=e;9FGH=Np z(GVe5(+dNM6 O^Bq}CSM#^W9)GV3|>ol&{|nzHoHe;I_)fuwYl7S zgj3wpN2SkSvG>7N`uVcQ{teDqG@P1&^kIi-_x!2uend*_u=wMEP$`lN_hOq)G^|9Y zZmA)8fSCerC_;{h$iTy3601mSyW`8U+OSYki(=hIYaYkn-4`OI4mVK?{DvmolF;HX zFMrVbRwwJ6l93m &)a(+?Yx% z?q`ZBrsF;`s}r^NfAOfXSi2raNL-Wt8&kgReeA)07{ZiZA|Nur;q-AcIa-aLYkv1a z#v9dnvutNp2(yx%C=*m13B7nq>fOW-%j)8T%A6*n7tyT19w(L?q{E2Z5RnO_G`e0@ zY71X7W5rbXN_43v-9=evoNQr_v?}H-v~uReq9Gu{TP4ZvIoY( Md@yiabnR#&orPn nOY_ngb0xug?ZXX<&%s(`GG^6xiMHeC+GI6v#S(O3nlj{L< zt!B74p4pXF>|3XzStfd=N9LWugv;RFmhwJ(4@8x?Nlh8+3hpq1e^&(UG@K1K$Mk85 zMFcYXUpo!EiPAR{p>n;@72P1(+W1J-5*+q!?@(+nFz>PwznkS+8Jcze1chaA-jXP} z-1QgK#$C9#kb&l2kqT(}-+1XPAfil8?v&wa_Fhc6bG_3ZI|{Krf!7HL0w7wKLjrP| z(z;%royXoa 7^6XTXK;<8C zQT6@0ao_0ZJjX`-`DNl2rEx>lR=6hrvW7ohc;VSec@!qStrG)|TSi^wZ_EpL0Qb*Z zgPs5NrJRiRd*k+O3ftareE%Z@RXe=L-mWO89(Fn2YFyW=osDdsTN>+imGSG&<4yD# zaZ#v$!~XYaC?&)!jVSlu?&IFX^;nHoGdfy}hQX|VX0Y;9QM)OP17~OQ>i}45=gha$ zSHbOP{p9M3t-ja%8|@^48=Q7-w)&Fo(_crqPw`zwg-T-$mJrWd_VM-nJ`E2jSZMMN zA^EMX;Ha9PEpkcvpFE~2tMzS5^*)nBZO(dOr=5(eZIGS*Hs}?B+S&lOBy;6;ySc&N zf}wXDj}!wU)+rnOV=iDis5rL@{t?KegPn0c)^E3sfM$in&RW9^?E}P~kZhjWAMK|N z_kyzl9<$wxKsRKb#H&c6S{9rWJMA=?w(O5D@6c0ges@B_(~qiQXRNZp*FmkwNtySF zLc{un+)b$=rOJCLGb!b9mXo-o=ih7TQ|vV%mG4c|=fWZyJk|v|hco(BT?A+j8t1{I z&(S;N{>3AaQz(gFaPn}7I1-Y`_yBdaoo5SA57YFKiBXjJXC2i-UhK9DXU;MO4_^>A zTP#Di)1kHDm7Pu^@>54SKQs<$F*YvK5e0Dv-#_(@_9cR^PfB`po8en_PKzi*Ox3;| z^j`K6-*|bgaZh#sY~#-Fc%nmV;0WwtWZp%j76X(+%NK;|0eVp{MUIPUFaXSNc#2^B zUZ`3rZvy|%8Ixl^0&(Ct2N{ OPw6l<^8djuoj5* zy^d_@UeE6Gar}&2q|#4=1zibKu1#^!9-4WL$i1-lGasHXD?Epe!|y>}S0)OX+e{fl ztwB8~(YN<~OG6E y-0lNjRBD_bfyiP(q!Rrv8PU2Z1q z!$5N!DO`BGUsbSCCGIRP(ZQRyyp3$HNZh2I5ZwQ3DExS%AF%P> vRYoy7Q5!d9NRJ88hph zoBM5#D=qr5->I2dn!UaL2XW^dB+2)#`PQ_J>1i9&oOVy!wr$(CZQHhO+qP|U>-)PK z_ukmOi@$a&>SR?`WMtHPDzi?$dEV#qz#;rbDuY`ns*`blD`4KM+`10X*F{%5W%Q)Q z>O{@gMZam-OA;=B(ypd^J(WH=@T%>d!uoODG}-$%j8V=y1q|zRi5G1?D~*x$fi?b# zWu?RYBY?+g)GpWgmeS#96oTv!m2<4*G-;6kKK?zYyu_T|;DZ^?fi@}918`r&HTD{) z@xGApUY}N;#xaYGii1c4A-geSS%omkf<_c3MP*i%IAqS^yvYd&)0Jt eCpL*Z_E2` zoF;qehabSo9-R{%iLZK>!hwnY{X4aNDOs!8q*#3J6mO7hIAuA5My)f4^CXd3kz l>brIjfdm7AgGU|lxo01SO z1H+92V4xw+L0IWKx&|yDeiOLl#dU;=BEl?TWabY)_JJuZF+M9N3BX-k7ghEqEhRb` zxQVG*> zS`8Wv&*ON;EQMa_E)FZ%C*7Nk6E*3To+_A0uAxl0O29e%s4F&$6@AjvTs28SUs-yS zQ(lrkVmM-b^5zp1mmyp}W)n;v3KcgDeeMQT%Tm*Lz#R#oe&i&OXZw3#cF5(O7|^F| z();)QJlhQc#=}jheL5HKw0=<)YlPnFglEMMEe_FSHf_;&zR6=EREzzK0o!Wn9G8 ydX+pjYBe;iFsrC4R}Zs9$@roej>GnrTT*S<<*FV`_n2$S{eYJu^iWdya B?6UXe>}>1du$0eSA|q5% z!g8YXv@*|Vye8tfF#-8z`_@6!R@PI~6mulA2E^Xbsu_qE<@nH- Ndo&fLvFW@ ?tD-M?NOm_lq^`3l_FwZ#V;%s=C8_c(|zL0E-0>~Co33OVP@-Nyc(vc zWRhH$@JCXZZzo73(bF=cEKVm_a5BzpE?PIZ!b(w^ZL=KS#92$jM<6FZ+dzf!z@M+I ztR%!jRZW~PDK$63R(mAT{=NlFQ-L+k#mKc%$qE3ecHkEj5^xHz$c+gM2v6~hZRF cOJPR~wh%Z|{G7L-&J7PD`y zEl)Z3X3hf?r>R;1kTRJe9;rE%v1t+VTH=!0e8u@WLY55xu#BUr%T+r;N=A~k4xP41 zgrt4_R31j4nMGuLrm%e%fG`uDTIb?v_u2v6nMSJX67Lpl``CrH5hA1Rlp*U_sqWRK z?9rW-mmXSf>sxLpt gVRBM?BjDUD?{u@6=^bWRNuO$b!fvsLkla4~dLA8-(qkdW}JFp7$d zTy)_GN~$j|$nfzoE-1{`*4FYjR@if6HaGF{G^G+ZD~`3$cQ&FgEG|n6a8Pv yG&Bh+uvXr1`&*b3z23k%oaAJt!P{BwR~?3F>*7+75j32I>s_ID(nd3w zi4UOMIQqm|S(+(W^BEc%0zg0^AtCmLn*QE;n=Y)yx$#w@*mV(@9v&Wg=9>AD+|l+V z({&m-k$i)-wo~;wK~BOMan9+HhFMuzMb?TV8OQ)Beowhcd%SB@XrQ<>U;I2cfb$O{ z``?K(neHm6%NRq(*X{UVXbCB`TYLy9 V4Zf}y3cf;y0Fnu(G5gX`nQEpnFC)Rr9D|QHD-MCl2Lu-BvyTi<=uv~()9#h zPDefpg>-c7Z_}w@$MSm!%o`6wEhN_?9^mLKnbr|-Wl2rhkyvBpsyIHw;>Ln0N=m#a zMJ+8QdyDrp*i+%9-~@KgTuIpYBsC@a`b9u40U>9n^jOOjcdO;;83OKVm4(o^VBb|R zgI01(h|NV}ycjmrkxK)1$m#A?P)+ERJPz#Ma48h5FuI5(<@!C5VQP~&k!5j*grI#Y zH#3gF3bL5eNI- &ow{Snrc95uXNo{kl &sUwwF1vHIa9?ZmZQj%vgsK }byr{e=|xH{ zyKypqjApjyAa9`=L)*xzoKj;f1g){<5W$lCaoUWb7fU7_1MYE=D8A9Mdcs6B$H7Hg zG=?LakyJXAzE?`zs%`N6=|({5G<}X%Vc_c}h}aR{-&kf(ALIQPoz(S)Kk^t5bIwC- zf(zDKDA){F0_i>z-Fb}g!~4$cKW@?Po^w*TXXzoVU6bNo&6n9c&-!rbxgd|AM%e4c zbtbB;<>|fejfzFCjfu{dPbcA@9S?bq91|vxqW_Yx1=F~7g#E;1!9Mn#m==`b`yM WExo^`alaTXRLye35_iv!V!~>y|LbPF?=-2j-_;iW3PVFxl=s zRRljHhOukar!}-mM`)&TiS5Jr^vNFHESm7Nn0{n`v9;qostB9eUx|1J<|sUhKi{KX z7?G>8ku%jM e8uQGB8VwHXBpLb_)^IiYdrCfn zImX#+?2K;_bCh#Jgno@?ffM6GKcj $iAscAZuRIH*=Bn0-%DahZcqE2x z?!LA~{yEsOXXF_k?%aG^jyuFr)|jBk2DNM<^4gi1oMOde4IwFR6b1ww!$ yXs^Yr%;nYH|w*3BiOHWAwA^@t5=VSv^3mUC)HXil*#aMBuL> zRHja1 Dkz$u+Nd;&h8vds zzDk7!wqKHa3Vhs=ZmRE)ZT$eN7s0T_B*Dah+@tHr2CG%vuVI+F2^Z3|%>XM?Qu}?G z2}9zc+da6u85l@T6#D23B|yYC>L*WPO8b!Jgkxg!e6i!?zl6Izv1Ob)e)ij8hz{FU z6V^M11)BxC9mkp(yviKV)0X_%zslG0^j0wv$)TJyOo+(eE|FhY zPO{Sn)l}TCd9wpcTqKbOPFrKW^7$1kkxY!Vw(<0vzdCW-9MJ#UwD1##3%QC{T`302 zwr2Y>V}@U7a7^%c4^WXa*{A8_9uj&(lfnh`4h0gfzmmqu%}Sk2Jnb?3Y cAojKE;iW)5E; z=O^q_DIPV13bSc~t~5*{L6gQ+gn&~;+0jRFV>fx(t!e6iHFeIl2%}yPHDh3$l!Z26 z(Oz0}IZPQ|0W<8g=U`Zg^cC3CfHJ|0^eto`V&I%0V_)N+ZYiaG`Cf^@O&lzsZcos{ z3IftKfjvpjFDal#TMuX`hx}qQUGNR49){a)z*jJ_%PC)TC60}zWeT84j+G^Q#Ydqy zi!ktnUjw$oNR0#E5FQZJ#PQ=%wyYLx(;v^Z560p{I-xMZ*x6!jp1#kOk0gL}I1H2~ zK$I>;&3zluGsgCBw66Xr_xITHSC^K@d;1kEgL4qiq=6IY-2<}uE^J~Hl%-2SZ~lbv z!pmOChm!?mC)6}_-^)ZWW_XZBGSbRn)wopJlC4QYwCwC7#iO;IV@W{|?U4Ai>sezw zI;+s|7(|>LOR)^jwK#s5U+OY(!lT@KEv2F}v!OK|ynO;U#aiaa1V7D_-oSw>1BPcd z!^=*wzXO5!B>|Ki`ZHzn4ZC69G$$~3Yl>nfQ*4mKDy+%(s66dr(E;MJp+Rg=4cC86 zSgW&GHrd~)CkvH22<<2JOiN|cB4+0J%cb#Ro!qLSEvG3>9lV1fAc?EwuBb!#Tuc+{ z2hr?S4SCu*f}fl&H!4GiJm*m^Vhv+ruz$6mX=_mp_IL7eKv#8WR%d72&dU;ICZ9>X zP|iCE>o;CnKaJcM6x;6^4_lL^RD>v%B{v_`5HiCi^8bB;8YL$Pcjp>^7e5ah0lE#{ ztk`0j`&tKYW8O$s?7yx>&>2jc>-s~Owj=cKqPXo$)Do-Rt+k#P(!zDO$1fd%wnO@l zPZk4gGnT~Ncw6bZDc`Du)+`vg*K?8u3HY^AEXLo@5Y-V}fR1WUk?oDJZ%)@2^ejpS z9EOE|LsHYJv4 $e8#C*jMVJ+83|)_!vK>*skcGDg+g1cLgE6mr zgP)?D 49l#%TA;I>8eoUE2-g+ f6Z3DvP?Vnt*ncVKK7oGA$;_U2+`Fy}Ied^gO@CQ8*2EeAGqZ^{{5|6; z#!(zUl>R!#HB2>=Iig(O${I8;i9U6A=v*s)HEKGkDMw?C*>nXjC0%%Z46*)Tn0yvL zpQEIodeeRe6KuzJ-q-$-XymzyrjV0 9?GDnm{a2#4Q*0s>`HQP=r4OTs0 !sYaH) zK`(2oX|s;$R2}&&+2ms_od%@iUCBcuYf;JX@qN1{iS(9*d{cG1y(H;SdQt8 i-3vHd5)81 @P>4YqF$_ogI z3n*LDFDH>@uQk#qgbDS8ll=1pV7I7W2#$v&(b{);>s--ZyI#3(-E&RbUjzKq(>Z68 z5kD1Cfq+DQVV @$Ix}wYo0(-a >G?S)@!ohYu_sFZJF^YWbI6+G zkSw{ZclGWJR$Q@9Pcf^1De69X97|~jV{nXGa&*;i32GV=!abBqnaOe2vhDLhunHq0 z$N72Cj6Mn(19na#>X81(nq~!S7g1Y5;6kcmirtR<$4Xkp)(Jl`ul?C;2?7&^qR065 z%~mojdMR|lkxOPsZr4$&F}qqprA~5SUl4WuxITB;p=&5-YNUsv3=vHnIM|=_Nueol zo$MJ0HNT3Igd%!&@AYaF(s|S{cO{*{8&C{SqmBAB6*;uf**caiDdsUKk_vvN2Ju$~ z6whYv6l8+W)*+q@Lx(QYZm$KiNa@3U?5RTa(p{#89A$)n@EIxnk<(c&S5U+0^NobV z7V_QUUG)@r4yZW8O%vy(g9 &;JvrBw9tfETUlN4gxw27O08@6?(Xi2-i$XE zfN^toKRi6NI4=rtOifP0DJvn$?y4pORgVbJ&HlkAWu@aTtK1Qju2TNf_VOJ`P~*uY zffhXs<5mQs&D*2w1F{YSwfcKt<{9Jb&z(N;Xcd^Yiu#T9=6q *l0q-Y z>fK*x1 ! 5wB;G-5)9@qN%@(9Q< zvsBJcPC^6-VPIf>(6^U)swUn>PgiUq!U~~m?1hr(c-lV4Kze@ n1Q&88Q54%tW-z(9KrM$r|nRhV)btA*0gdodfweyeQ#o?j@Ri;I_t*$ku zp=#_hJDjX%X9MT9jC4Y onT;-|u2jR$w^IHy=i`U-QR&Dzp-Z$TPI9~EMh*wL` z28{lNWI`0p@f895mG-qd{8+YE4dNR5O8Aa9JJ?G!@Q2JCHK|78_rl!T8sF>f$Gooo zdwPlP1GuCGkp7*zXYN(-#b;Hb{8fXt28Fper`>1ekD6iyxD?1CZY9wL)k?KgotRXK zf#I#o;H=7^=pmEpsJKewa60PSox$G&(MJcrl`8L3^MgsUI4j14x7JxQ$-d1J?9Djm zILSjuM}4-ct7I{lWfA2(pZ<{0e!cG-PIrH@T_g-7g`I*v4t9!zNjelt)+#J1$C#{g zYe1aZr_wJPz=kV2zc^^xc@f5}gEGRi2E%@7F0f?KkJV`E{R;QK*^3mVEz(ug|N5v@ zupnS>*)2BGDv-`z*+eM*@-WsrSUg3pW+2}NHXmHKoAl8}+a}?3iLzRR-!SsnIFVup z9DbjfZ7kdR8+$z&puC95_A;&m;t0O_p;M!)4E2&MZ=oeHEMvz*{^q_y@vgx+jvDL1 zzk7pp+}Y9L{&Y{J$vdw0OBBkRe4VTeMhexGn?7^rc96S|%@EJs_D!~_lI(B(!OXo= ziL&V4CqLM5>N3I@r~b)WsM_4%G9mTKb%tR}L&)UkPRUYfN)#`o2is42(j@+IBb>d$ z>zQF1kU%>-zi tTZp{4bAU)0WkIA{6$vfMw>ORl_Ymm$b6S}T zosxUxYA`-N= h9}bpJP{c@w%9v}>fBxVbmW#K`usgOR+cqq$FV&o>0x p2~r#SGB^WU zkHXO!%{zI|M5ZnbyO+)Msf)g}%4ceVX3EP!x(8)A4fDW}@JlII@?#$5Y%~OlTlQjQ z-ji~L)Qp(Q_jH)f l&(MZd6sILxxU9R~V6sobG9)sMLkVG!566 zJI;O@qJOZLypSY@mOev ?E*jU(<3~Y?=!!su@Af9UbpKjC5Iu lDP zOvKXcH3~Hh_{Koby0>5q2n>9PGHQc-E{uH3@|#iC!_0D$Q6fTgV)rMU5erCTtiVa# z*gpBjxk-T|yHU5vFv0d0U0aU`4rLVEJTV9Y3}TTw!3GL9sc`b(Tga*fv7`DF10375 zztX?6R(*FoS8Ed=a)YOW2h)3z{=CKR+^5#LjgOn%SQ+cqVAhZg2K8fe>WOk!rE%)* zv&gOC_K2V7j6D3j1viP=rxl!NYzo0OWFXEjwpiIT*>FpZoLv@YsC-N*1|})#gL(dz znm-kOTr{w0Fj7lYt8k+tsV3 S_+7AZ?i2mYNR+k^ZyfG$yjJ^YHt&Krp@HAZc@ zRxp=cOtlGmzRi?6Ngv?G=!27tW65H>I)TK#^je8YV2FR79bX%>V17IWdzF6+JEs#J zO=xakKNB)ajm#1Fm8#lZ uz=zJWB^_w?Lr(;pQh ztU~!v q2Uzsx{T~rkMJU~{eog=U6we+blIq!Dj5I3 zt@N@_{0hFHLx1e?nQKh39&i}8YIRLI9?_AwoOKfH?~UJ|Q`?>J(YpP(Hx-Gx!2weU zYO>WVTrG7|L5ppK^fTTy((IEg(64*z#EUXwkxHK=9lnkI=4lIQesiOg$_ljXeYm=4 zh<*EM=P?VsiEhT_UH!h>o69SIuBM V9} &v5W%wU;c_66DG)iO%3JE}Ik;$G;54cU#A 7brcHA2q#URcH!P1Q#f~i*DSYxg*8~^6%O Kla*ZCA!!|o )6?wg<5H8d`9kvfqtQ(ydE-ab=O$z+^xZc5}7AA zPa0#Di*u#CK@Ac>P{44d9*Tz)5dOnLWz=owHy-;huG5Vj9f`~~Y%)cEaW8nuADolq zWQG=2f8A59-tdnj(DB_Uh!>8jdShVyPz9~+f?Fv`M2g0u%G(A*INNk;Vhx?!&LqNe zey{`;<`4fun+a;s3mp>PD|fh7K%!^-cqX&w>RWA{8RV MxFQdU53FwrV zVzC*soz|Z3xso+FlD#`qm+A~-u3~_|MbUnNaevM`I7CjkG&Z)Uq%nDoQJz3bg&;4) zRDNWkCd$!Nn0S0YobVlQ6X)|jXeslrH%5a?&^XHMn~yXaHLn(8&U6iB`wVX`g{HxR zKQewL7m$Pq*8HT?V|SLI=)$X7-<@OLUA)`jWl*@)8VSZz^d(^2$(ix+>iMWI@_Z{- zUOUPdta^}3sYtN{31;U^K